From 581881d0cae139bb634288590ae949270c39d715 Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Tue, 29 Nov 2016 00:24:15 +0530
Subject: [PATCH 01/83] Merging gitignore.

---
 config/app.php      | 4 ++--
 config/database.php | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/config/app.php b/config/app.php
index 786f005ac..d94196cc1 100644
--- a/config/app.php
+++ b/config/app.php
@@ -3,7 +3,7 @@
 return [
 
 
-    'env' => env('APP_ENV', 'production'),
+    'env' => env('APP_ENV', 'development'),
 
     'editor' => env('APP_EDITOR', 'html'),
 
@@ -18,7 +18,7 @@ return [
     |
     */
 
-    'debug' => env('APP_DEBUG', false),
+    'debug' => env('APP_DEBUG', true),
 
     /*
     |--------------------------------------------------------------------------
diff --git a/config/database.php b/config/database.php
index 832852dc2..cfeeaa75a 100644
--- a/config/database.php
+++ b/config/database.php
@@ -71,9 +71,9 @@ return [
         'mysql' => [
             'driver'    => 'mysql',
             'host'      => env('DB_HOST', 'localhost'),
-            'database'  => env('DB_DATABASE', 'forge'),
-            'username'  => env('DB_USERNAME', 'forge'),
-            'password'  => env('DB_PASSWORD', ''),
+            'database'  => env('DB_DATABASE', 'bookstack'),
+            'username'  => env('DB_USERNAME', 'root'),
+            'password'  => env('DB_PASSWORD', 'Change123'),
             'charset'   => 'utf8',
             'collation' => 'utf8_unicode_ci',
             'prefix'    => '',

From 397db0442853bcca281687fd2f97614e925d0dfd Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Fri, 13 Jan 2017 21:45:48 +0530
Subject: [PATCH 02/83] Added comments controller, model, repo, and the
 database schema. Modified existing Page model to associate with comments.

---
 .gitignore                                    |  4 +-
 app/Comment.php                               | 35 +++++++++++++++++
 app/Http/Controllers/CommentController.php    | 33 ++++++++++++++++
 app/Page.php                                  |  9 +++++
 app/Repos/CommentRepo.php                     | 17 +++++++++
 ...017_01_01_130541_create_comments_table.php | 38 +++++++++++++++++++
 resources/views/home.blade.php                |  2 +-
 routes/web.php                                |  7 ++++
 8 files changed, 143 insertions(+), 2 deletions(-)
 create mode 100644 app/Comment.php
 create mode 100644 app/Http/Controllers/CommentController.php
 create mode 100644 app/Repos/CommentRepo.php
 create mode 100644 database/migrations/2017_01_01_130541_create_comments_table.php

diff --git a/.gitignore b/.gitignore
index 83b754c04..0a6215ba9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,9 +8,11 @@ Homestead.yaml
 /public/css
 /public/js
 /public/bower
+/public/build/
 /storage/images
 _ide_helper.php
 /storage/debugbar
 .phpstorm.meta.php
 yarn.lock
-/bin
\ No newline at end of file
+/bin
+nbproject
\ No newline at end of file
diff --git a/app/Comment.php b/app/Comment.php
new file mode 100644
index 000000000..9ef892bdc
--- /dev/null
+++ b/app/Comment.php
@@ -0,0 +1,35 @@
+<?php
+
+namespace BookStack;
+
+class Comment extends Ownable
+{
+    protected $fillable = ['text', 'html'];
+    
+    /**
+     * Get the entity that this comment belongs to
+     * @return \Illuminate\Database\Eloquent\Relations\MorphTo
+     */
+    public function entity()
+    {
+        return $this->morphTo('entity');
+    }
+    
+    /**
+     * Get the page that this comment is in.
+     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
+     */
+    public function page()
+    {
+        return $this->belongsTo(Page::class);
+    }
+    
+    /**
+     * Get the owner of this comment.
+     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
+     */
+    public function user() 
+    {
+        return $this->belongsTo(User::class);
+    }
+}
diff --git a/app/Http/Controllers/CommentController.php b/app/Http/Controllers/CommentController.php
new file mode 100644
index 000000000..de97169a8
--- /dev/null
+++ b/app/Http/Controllers/CommentController.php
@@ -0,0 +1,33 @@
+<?php
+
+namespace BookStack\Http\Controllers;
+
+use Illuminate\Http\Request;
+
+use BookStack\Http\Requests;
+
+class CommentController extends Controller
+{
+    
+    public function add(Request $request, $pageId) {
+        // $this->checkOwnablePermission('page-view', $page);
+    }
+    
+    public function update(Request $request, $id) {
+        // Check whether its an admin or the comment owner.
+        // $this->checkOwnablePermission('page-view', $page);
+    }
+    
+    public function destroy($id) {
+        // Check whether its an admin or the comment owner.
+        // $this->checkOwnablePermission('page-view', $page);
+    }
+    
+    public function getLastXComments($pageId) {
+        // $this->checkOwnablePermission('page-view', $page);
+    }
+    
+    public function getChildComments($pageId, $id) {
+        // $this->checkOwnablePermission('page-view', $page);
+    }
+}
diff --git a/app/Page.php b/app/Page.php
index b24e7778a..83ef6f350 100644
--- a/app/Page.php
+++ b/app/Page.php
@@ -39,6 +39,15 @@ class Page extends Entity
     {
         return $this->belongsTo(Chapter::class);
     }
+    
+    /**
+     * Get the comments in the page.
+     * @return \Illuminate\Database\Eloquent\Relations\HasMany
+     */
+    public function comment()
+    {
+        return $this->hasMany(Comment::class);
+    }
 
     /**
      * Check if this page has a chapter.
diff --git a/app/Repos/CommentRepo.php b/app/Repos/CommentRepo.php
new file mode 100644
index 000000000..e8db3f83e
--- /dev/null
+++ b/app/Repos/CommentRepo.php
@@ -0,0 +1,17 @@
+<?php namespace BookStack\Repos;
+
+use BookStack\Comment;
+use BookStack\Entity;
+
+/**
+ * Class TagRepo
+ * @package BookStack\Repos
+ */
+class CommentRepo {
+    /**
+     *
+     * @var Comment $comment 
+     */
+    protected $comment;
+    
+}
\ No newline at end of file
diff --git a/database/migrations/2017_01_01_130541_create_comments_table.php b/database/migrations/2017_01_01_130541_create_comments_table.php
new file mode 100644
index 000000000..3565192a4
--- /dev/null
+++ b/database/migrations/2017_01_01_130541_create_comments_table.php
@@ -0,0 +1,38 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class CreateCommentsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('comments', function (Blueprint $table) {
+            $table->increments('id')->unsigned();                       
+            $table->integer('page_id')->unsigned();
+            $table->longText('text')->nullable();
+            $table->longText('html')->nullable();
+            $table->integer('parent_id')->unsigned()->nullable();
+            $table->integer('created_by')->unsigned();
+            $table->integer('updated_by')->unsigned()->nullable();
+            $table->index(['page_id', 'parent_id']);
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('comments');
+    }
+}
diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php
index 0d97a6a4b..6f4009f72 100644
--- a/resources/views/home.blade.php
+++ b/resources/views/home.blade.php
@@ -51,7 +51,7 @@
                     @include('partials/entity-list', [
                     'entities' => $recentlyUpdatedPages,
                     'style' => 'compact',
-                    'emptyText' => trans('entites.no_pages_recently_updated')
+                    'emptyText' => trans('entities.no_pages_recently_updated')
                     ])
                 </div>
             </div>
diff --git a/routes/web.php b/routes/web.php
index 076ffb94f..42b88f3d6 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -113,6 +113,13 @@ Route::group(['middleware' => 'auth'], function () {
 
     Route::get('/ajax/search/entities', 'SearchController@searchEntitiesAjax');
 
+    // Comments
+    Route::post('/ajax/page/{pageId}/comment/', 'CommentController@add');
+    Route::put('/ajax/page/comment/{id}', 'CommentController@update');
+    Route::delete('/ajax/comment/{id}', 'CommentController@destroy');
+    Route::get('/ajax/page/{pageId}/comment/', 'CommentController@getLastXComments');
+    Route::get('/ajax/page/{pageId}/comment/{id}/sub-comments', 'CommentController@getChildComments');    
+    
     // Links
     Route::get('/link/{id}', 'PageController@redirectFromLink');
 

From 148350009c89eadbc1b14ff5630e06da26f71b2c Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Sun, 29 Jan 2017 14:25:20 +0530
Subject: [PATCH 03/83] #47 Adds comment permission to each role.

---
 app/Services/PermissionService.php            |  2 +-
 ...017_01_01_130541_create_comments_table.php | 29 +++++++++++++++++++
 resources/lang/en/entities.php                |  6 ++++
 resources/views/settings/roles/form.blade.php | 13 +++++++++
 4 files changed, 49 insertions(+), 1 deletion(-)

diff --git a/app/Services/PermissionService.php b/app/Services/PermissionService.php
index 72a810b6b..ab0c5867c 100644
--- a/app/Services/PermissionService.php
+++ b/app/Services/PermissionService.php
@@ -406,7 +406,7 @@ class PermissionService
         $action = end($explodedPermission);
         $this->currentAction = $action;
 
-        $nonJointPermissions = ['restrictions', 'image', 'attachment'];
+        $nonJointPermissions = ['restrictions', 'image', 'attachment', 'comment'];
 
         // Handle non entity specific jointPermissions
         if (in_array($explodedPermission[0], $nonJointPermissions)) {
diff --git a/database/migrations/2017_01_01_130541_create_comments_table.php b/database/migrations/2017_01_01_130541_create_comments_table.php
index 3565192a4..8aa99eea4 100644
--- a/database/migrations/2017_01_01_130541_create_comments_table.php
+++ b/database/migrations/2017_01_01_130541_create_comments_table.php
@@ -13,6 +13,9 @@ class CreateCommentsTable extends Migration
      */
     public function up()
     {
+        if (Schema::hasTable('comments')) {
+            return;
+        }
         Schema::create('comments', function (Blueprint $table) {
             $table->increments('id')->unsigned();                       
             $table->integer('page_id')->unsigned();
@@ -23,6 +26,25 @@ class CreateCommentsTable extends Migration
             $table->integer('updated_by')->unsigned()->nullable();
             $table->index(['page_id', 'parent_id']);
             $table->timestamps();
+
+            // Get roles with permissions we need to change
+            $adminRoleId = DB::table('roles')->where('system_name', '=', 'admin')->first()->id;
+
+            // Create & attach new entity permissions
+            $ops = ['Create All', 'Create Own', 'Update All', 'Update Own', 'Delete All', 'Delete Own'];
+            $entity = 'Comment';
+            foreach ($ops as $op) {
+                $permissionId = DB::table('role_permissions')->insertGetId([
+                    'name' => strtolower($entity) . '-' . strtolower(str_replace(' ', '-', $op)),
+                    'display_name' => $op . ' ' . $entity . 's',
+                    'created_at' => \Carbon\Carbon::now()->toDateTimeString(),
+                    'updated_at' => \Carbon\Carbon::now()->toDateTimeString()
+                ]);
+                DB::table('permission_role')->insert([
+                    'role_id' => $adminRoleId,
+                    'permission_id' => $permissionId
+                ]);
+            }
         });
     }
 
@@ -34,5 +56,12 @@ class CreateCommentsTable extends Migration
     public function down()
     {
         Schema::dropIfExists('comments');
+        // Create & attach new entity permissions
+        $ops = ['Create All', 'Create Own', 'Update All', 'Update Own', 'Delete All', 'Delete Own'];
+        $entity = 'Comment';
+        foreach ($ops as $op) {
+            $permName = strtolower($entity) . '-' . strtolower(str_replace(' ', '-', $op));
+            DB::table('role_permissions')->where('name', '=', $permName)->delete();
+        }
     }
 }
diff --git a/resources/lang/en/entities.php b/resources/lang/en/entities.php
index 109b6ee2a..80bb96669 100644
--- a/resources/lang/en/entities.php
+++ b/resources/lang/en/entities.php
@@ -223,4 +223,10 @@ return [
     'profile_not_created_pages' => ':userName has not created any pages',
     'profile_not_created_chapters' => ':userName has not created any chapters',
     'profile_not_created_books' => ':userName has not created any books',
+
+    /**
+     * Comments
+     */
+    'comment' => 'Comment',
+    'comments' => 'Comments'
 ];
\ No newline at end of file
diff --git a/resources/views/settings/roles/form.blade.php b/resources/views/settings/roles/form.blade.php
index 71b8f551f..02ef525ea 100644
--- a/resources/views/settings/roles/form.blade.php
+++ b/resources/views/settings/roles/form.blade.php
@@ -117,6 +117,19 @@
                             <label>@include('settings/roles/checkbox', ['permission' => 'attachment-delete-all']) {{ trans('settings.role_all') }}</label>
                         </td>
                     </tr>
+                    <tr>
+                        <td>{{ trans('entities.comments') }}</td>
+                        <td>@include('settings/roles/checkbox', ['permission' => 'comment-create-all'])</td>
+                        <td style="line-height:1.2;"><small class="faded">{{ trans('settings.role_controlled_by_asset') }}</small></td>
+                        <td>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'comment-update-own']) {{ trans('settings.role_own') }}</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'comment-update-all']) {{ trans('settings.role_all') }}</label>
+                        </td>
+                        <td>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'comment-delete-own']) {{ trans('settings.role_own') }}</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'comment-delete-all']) {{ trans('settings.role_all') }}</label>
+                        </td>
+                    </tr>
                 </table>
             </div>
         </div>

From d447355a61a0b55a9c04e244be1ab3c815e89374 Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Wed, 19 Apr 2017 01:24:33 +0530
Subject: [PATCH 04/83] Adding the view templates and styles.

---
 resources/assets/sass/_comments.scss         | 60 ++++++++++++++++++++
 resources/assets/sass/_simplemde.scss        |  7 +++
 resources/views/comments/add.blade.php       | 19 +++++++
 resources/views/comments/list-item.blade.php | 19 +++++++
 resources/views/pages/comments.blade.php     |  8 +++
 5 files changed, 113 insertions(+)
 create mode 100644 resources/assets/sass/_comments.scss
 create mode 100644 resources/assets/sass/_simplemde.scss
 create mode 100644 resources/views/comments/add.blade.php
 create mode 100644 resources/views/comments/list-item.blade.php
 create mode 100644 resources/views/pages/comments.blade.php

diff --git a/resources/assets/sass/_comments.scss b/resources/assets/sass/_comments.scss
new file mode 100644
index 000000000..785f9948d
--- /dev/null
+++ b/resources/assets/sass/_comments.scss
@@ -0,0 +1,60 @@
+.comments-list {
+    .comment-box {
+        border-bottom: 1px solid $comment-border;
+    }
+    
+    .comment-box:last-child {
+        border-bottom: none;
+    }
+}
+.page-comment {        
+    .comment-container {
+        margin-left: 42px;
+    }
+    
+    .comment-actions {
+        font-size: 0.8em;        
+        padding-bottom: 4px;
+        ul {
+            padding-left: 0px;
+            margin-bottom: 5px;
+        }
+        li {
+            float: left;
+            list-style-type: none;
+        }
+        
+        li:after {
+            content: '•';
+            color: #707070;
+            padding: 0 5px;
+            font-size: 1em;
+        }
+        
+        li:last-child:after {
+            content: none;
+        }
+    }
+    
+    .comment-header {
+        font-size: 1.25em;
+        margin-top: 0.6em;
+    }
+    
+    .comment-body {
+        
+    }
+    
+    .user-image {
+        float: left;
+        margin-right: 10px;
+        width: 32px;
+        img {
+            width: 100%;
+        }
+    }    
+}
+
+.comment-editor {
+    margin-top: 2em;
+}
diff --git a/resources/assets/sass/_simplemde.scss b/resources/assets/sass/_simplemde.scss
new file mode 100644
index 000000000..41d944ee3
--- /dev/null
+++ b/resources/assets/sass/_simplemde.scss
@@ -0,0 +1,7 @@
+/**
+ * simplemde v1.11.2
+ * Copyright Next Step Webs, Inc.
+ * @link https://github.com/NextStepWebs/simplemde-markdown-editor
+ * @license MIT
+ */
+.CodeMirror{color:#000}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px; border: none; box-shadow: none;}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-ruler{border-left:1px solid #ccc;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0f0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#f22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:0;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-30px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:0 0!important;border:none!important;-webkit-user-select:none;-moz-user-select:none;user-select:none}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:0 0;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:none;font-variant-ligatures:none}.CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;overflow:auto}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected,.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background:#ffa;background:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:0 0}.CodeMirror{height:auto;min-height:300px;border:1px solid #ddd;border-bottom-left-radius:4px;border-bottom-right-radius:4px;padding:10px;font:inherit;z-index:1}.CodeMirror-scroll{min-height:300px}.CodeMirror-fullscreen{background:#fff;position:fixed!important;top:50px;left:0;right:0;bottom:0;height:auto;z-index:9}.CodeMirror-sided{width:50%!important}.editor-toolbar{position:relative;opacity:.6;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;padding:0 10px;border-top:1px solid #bbb;border-left:1px solid #bbb;border-right:1px solid #bbb;border-top-left-radius:4px;border-top-right-radius:4px}.editor-toolbar:after,.editor-toolbar:before{display:block;content:' ';height:1px}.editor-toolbar:before{margin-bottom:8px}.editor-toolbar:after{margin-top:8px}.editor-toolbar:hover,.editor-wrapper input.title:focus,.editor-wrapper input.title:hover{opacity:.8}.editor-toolbar.fullscreen{width:100%;height:50px;overflow-x:auto;overflow-y:hidden;white-space:nowrap;padding-top:10px;padding-bottom:10px;box-sizing:border-box;background:#fff;border:0;position:fixed;top:0;left:0;opacity:1;z-index:9}.editor-toolbar.fullscreen::before{width:20px;height:50px;background:-moz-linear-gradient(left,rgba(255,255,255,1) 0,rgba(255,255,255,0) 100%);background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,1)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,1) 0,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,1) 0,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,1) 0,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,1) 0,rgba(255,255,255,0) 100%);position:fixed;top:0;left:0;margin:0;padding:0}.editor-toolbar.fullscreen::after{width:20px;height:50px;background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,1) 100%);background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(100%,rgba(255,255,255,1)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,1) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,1) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,1) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,1) 100%);position:fixed;top:0;right:0;margin:0;padding:0}.editor-toolbar a{display:inline-block;text-align:center;text-decoration:none!important;color:#2c3e50!important;width:30px;height:30px;margin:0;border:1px solid transparent;border-radius:3px;cursor:pointer}.editor-toolbar a.active,.editor-toolbar a:hover{background:#fcfcfc;border-color:#95a5a6}.editor-toolbar a:before{line-height:30px}.editor-toolbar i.separator{display:inline-block;width:0;border-left:1px solid #d9d9d9;border-right:1px solid #fff;color:transparent;text-indent:-10px;margin:0 6px}.editor-toolbar a.fa-header-x:after{font-family:Arial,"Helvetica Neue",Helvetica,sans-serif;font-size:65%;vertical-align:text-bottom;position:relative;top:2px}.editor-toolbar a.fa-header-1:after{content:"1"}.editor-toolbar a.fa-header-2:after{content:"2"}.editor-toolbar a.fa-header-3:after{content:"3"}.editor-toolbar a.fa-header-bigger:after{content:"▲"}.editor-toolbar a.fa-header-smaller:after{content:"▼"}.editor-toolbar.disabled-for-preview a:not(.no-disable){pointer-events:none;background:#fff;border-color:transparent;text-shadow:inherit}@media only screen and (max-width:700px){.editor-toolbar a.no-mobile{display:none}}.editor-statusbar{padding:8px 10px;font-size:12px;color:#959694;text-align:right}.editor-statusbar span{display:inline-block;min-width:4em;margin-left:1em}.editor-preview,.editor-preview-side{padding:10px;background:#fafafa;overflow:auto;display:none;box-sizing:border-box}.editor-statusbar .lines:before{content:'lines: '}.editor-statusbar .words:before{content:'words: '}.editor-statusbar .characters:before{content:'characters: '}.editor-preview{position:absolute;width:100%;height:100%;top:0;left:0;z-index:7}.editor-preview-side{position:fixed;bottom:0;width:50%;top:50px;right:0;z-index:9;border:1px solid #ddd}.editor-preview-active,.editor-preview-active-side{display:block}.editor-preview-side>p,.editor-preview>p{margin-top:0}.editor-preview pre,.editor-preview-side pre{background:#eee;margin-bottom:10px}.editor-preview table td,.editor-preview table th,.editor-preview-side table td,.editor-preview-side table th{border:1px solid #ddd;padding:5px}.CodeMirror .CodeMirror-code .cm-tag{color:#63a35c}.CodeMirror .CodeMirror-code .cm-attribute{color:#795da3}.CodeMirror .CodeMirror-code .cm-string{color:#183691}.CodeMirror .CodeMirror-selected{background:#d9d9d9}.CodeMirror .CodeMirror-code .cm-header-1{font-size:200%;line-height:200%}.CodeMirror .CodeMirror-code .cm-header-2{font-size:160%;line-height:160%}.CodeMirror .CodeMirror-code .cm-header-3{font-size:125%;line-height:125%}.CodeMirror .CodeMirror-code .cm-header-4{font-size:110%;line-height:110%}.CodeMirror .CodeMirror-code .cm-comment{background:rgba(0,0,0,.05);border-radius:2px}.CodeMirror .CodeMirror-code .cm-link{color:#7f8c8d}.CodeMirror .CodeMirror-code .cm-url{color:#aab2b3}.CodeMirror .CodeMirror-code .cm-strikethrough{text-decoration:line-through}.CodeMirror .CodeMirror-placeholder{opacity:.5}.CodeMirror .cm-spell-error:not(.cm-url):not(.cm-comment):not(.cm-tag):not(.cm-word){background:rgba(255,0,0,.15)}
\ No newline at end of file
diff --git a/resources/views/comments/add.blade.php b/resources/views/comments/add.blade.php
new file mode 100644
index 000000000..f7d9c41fc
--- /dev/null
+++ b/resources/views/comments/add.blade.php
@@ -0,0 +1,19 @@
+@section('head')
+    <script src="{{ baseUrl("/libs/simplemde/simplemde.min.js") }}"></script>
+@stop
+
+<div class="comment-editor" ng-controller="CommentAddController as vm">
+<form novalidate>
+        <div simple-markdown-input smd-model="comment.newComment" smd-get-content="getCommentHTML" smd-clear="clearInput">
+            <textarea name="markdown" rows="3"
+                      @if($errors->has('markdown')) class="neg" @endif>@if(isset($model) ||
+                      old('markdown')){{htmlspecialchars( old('markdown') ? old('markdown') : ($model->markdown === '' ? $model->html : $model->markdown))}}@endif</textarea>
+        </div>
+        <input type="hidden" ng-model="pageId" name="comment.pageId" value="{{$pageId}}" ng-init="comment.pageId = {{$pageId }}">
+        <button type="submit" class="button pos" ng-click="vm.saveComment()">Save</button>
+</form>
+</div>
+
+@if($errors->has('markdown'))
+    <div class="text-neg text-small">{{ $errors->first('markdown') }}</div>
+@endif
\ No newline at end of file
diff --git a/resources/views/comments/list-item.blade.php b/resources/views/comments/list-item.blade.php
new file mode 100644
index 000000000..1a72d7e84
--- /dev/null
+++ b/resources/views/comments/list-item.blade.php
@@ -0,0 +1,19 @@
+<div class='page-comment'>
+    <div class="user-image">
+        <img ng-src="@{{defaultAvatar}}" alt="user avatar">
+    </div>
+    <div class="comment-container">
+        <div class="comment-header">
+            @{{ ::comment.created_by_name }}
+        </div>
+        <div ng-bind-html="comment.html" class="comment-body">
+
+        </div>
+        <div class="comment-actions">
+            <ul>
+                <li><a href="#">Reply</a></li>
+                <li><a href="#">@{{::comment.created_at}}</a></li>            
+            </ul>                
+        </div>
+    </div>
+</div>
\ No newline at end of file
diff --git a/resources/views/pages/comments.blade.php b/resources/views/pages/comments.blade.php
new file mode 100644
index 000000000..ea9dd57d6
--- /dev/null
+++ b/resources/views/pages/comments.blade.php
@@ -0,0 +1,8 @@
+<div ng-controller="CommentListController as vm" ng-init="pageId = <?= $page->id ?>" class="comments-list" ng-cloak>   
+<h3>@{{vm.totalCommentsStr}}</h3>
+<hr> 
+    <div class="comment-box" ng-repeat="comment in vm.comments track by comment.id">
+        @include('comments/list-item')
+    </div>
+</div>
+@include('comments/add', ['pageId' => $pageId])

From c3ea0d333e869975e49bf6da4165c9e0f6b0d2fa Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Thu, 27 Apr 2017 02:35:29 +0530
Subject: [PATCH 05/83] #47 - Adds functionality to display child comments.
 Also has some code towards the reply functionality.

---
 app/Comment.php                               | 11 +++--
 app/Http/Controllers/CommentController.php    |  6 ++-
 app/Repos/CommentRepo.php                     | 17 ++++---
 gulpfile.js                                   |  2 +
 resources/assets/js/controllers.js            | 18 +++++--
 resources/assets/js/directives.js             | 47 +++++++++++++++++++
 resources/views/comments/add.blade.php        |  6 +--
 .../views/comments/comment-reply.blade.php    | 10 ++++
 resources/views/comments/comments.blade.php   | 19 ++++++++
 resources/views/comments/list-item.blade.php  | 15 ++++--
 resources/views/pages/comments.blade.php      |  8 ----
 resources/views/pages/show.blade.php          |  2 +-
 12 files changed, 127 insertions(+), 34 deletions(-)
 create mode 100644 resources/views/comments/comment-reply.blade.php
 create mode 100644 resources/views/comments/comments.blade.php
 delete mode 100644 resources/views/pages/comments.blade.php

diff --git a/app/Comment.php b/app/Comment.php
index 4a9c48c74..74fcc3fdc 100644
--- a/app/Comment.php
+++ b/app/Comment.php
@@ -34,8 +34,8 @@ class Comment extends Ownable
         return $this->belongsTo(User::class);
     }
     
-    public function getParentCommentsByPage($pageId, $pageNum = 0, $limit = 0) {        
-        $data = ['pageId' => $pageId];        
+    public function getCommentsByPage($pageId, $commentId, $pageNum = 0, $limit = 0) {        
+  
         $query = static::newQuery();
         $query->join('users AS u', 'comments.created_by', '=', 'u.id');
         $query->leftJoin('users AS u1', 'comments.updated_by', '=', 'u1.id');
@@ -44,7 +44,12 @@ class Comment extends Ownable
                 . 'u.name AS created_by_name, u1.name AS updated_by_name, '
                 . '(SELECT count(c.id) FROM bookstack.comments c WHERE c.parent_id = comments.id AND page_id = ?) AS cnt_sub_comments, i.url AS avatar ', 
                 [$pageId]);
-        $query->whereRaw('page_id = ? AND parent_id IS NULL', [$pageId]);
+        
+        if (empty($commentId)) {
+            $query->whereRaw('page_id = ? AND parent_id IS NULL', [$pageId]);
+        } else {
+            $query->whereRaw('page_id = ? AND parent_id = ?', [$pageId, $commentId]);
+        }        
         $query->orderBy('created_at');
         return $query;
     }
diff --git a/app/Http/Controllers/CommentController.php b/app/Http/Controllers/CommentController.php
index 3df441766..b8cf77621 100644
--- a/app/Http/Controllers/CommentController.php
+++ b/app/Http/Controllers/CommentController.php
@@ -85,7 +85,11 @@ class CommentController extends Controller
         $this->checkOwnablePermission('page-view', $page);
         
         $comments = $this->commentRepo->getCommentsForPage($pageId, $commentId);
-        
+        if (empty($commentId)) {
+            // requesting for parent level comments, send the total count as well.
+            $totalComments = $this->commentRepo->getCommentCount($pageId);
+            return response()->json(array('success' => true, 'comments'=> $comments, 'total' => $totalComments));
+        }
         return response()->json(array('success' => true, 'comments'=> $comments));
     }
 }
diff --git a/app/Repos/CommentRepo.php b/app/Repos/CommentRepo.php
index c2a19ec0b..ba34617ed 100644
--- a/app/Repos/CommentRepo.php
+++ b/app/Repos/CommentRepo.php
@@ -38,14 +38,13 @@ class CommentRepo {
         return $comment;
     }
     
-    public function getCommentsForPage($pageId, $commentId, $count = 20) {
-        if (empty($commentId)) {
-            // requesting parent comments
-            $query = $this->comment->getParentCommentsByPage($pageId);
-            return $query->paginate($count);
-        } else {
-            // requesting the child comments.
-            return Comment::whereRaw("page_id = $pageId AND parent_id = $commentId")->get();
-        }        
+    public function getCommentsForPage($pageId, $commentId, $count = 20) {        
+        // requesting parent comments
+        $query = $this->comment->getCommentsByPage($pageId, $commentId);
+        return $query->paginate($count);        
+    }
+    
+    public function getCommentCount($pageId) {
+        return $this->comment->where('page_id', '=', $pageId)->count();
     }
 }
\ No newline at end of file
diff --git a/gulpfile.js b/gulpfile.js
index b72bb366d..580db00cc 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -1,3 +1,5 @@
+'use strict';
+
 const argv = require('yargs').argv;
 const gulp = require('gulp'),
     plumber = require('gulp-plumber');
diff --git a/resources/assets/js/controllers.js b/resources/assets/js/controllers.js
index 65dc50e99..d92c5538b 100644
--- a/resources/assets/js/controllers.js
+++ b/resources/assets/js/controllers.js
@@ -731,14 +731,14 @@ module.exports = function (ngApp, events) {
         }
         
         $timeout(function() {
-            console.log($scope.pageId);
             $http.get(window.baseUrl(`/ajax/page/${$scope.pageId}/comments/`)).then(resp => {
                 if (!resp.data || resp.data.success !== true) {
                     // TODO : Handle error
                     return;
-                } 
+                }
                 vm.comments = resp.data.comments.data;  
-                vm.totalComments = resp.data.comments.total;
+                vm.totalComments = resp.data.total;
+                // TODO : Fetch message from translate.
                 if (vm.totalComments === 0) {
                     vm.totalCommentsStr = 'No comments found.';
                 } else if (vm.totalComments === 1) {
@@ -749,6 +749,18 @@ module.exports = function (ngApp, events) {
             }, checkError('app'));
         });        
         
+        vm.loadSubComments = function(event, comment) {
+            event.preventDefault();
+            $http.get(window.baseUrl(`/ajax/page/${$scope.pageId}/comments/${comment.id}/sub-comments`)).then(resp => {
+                console.log(resp);
+                if (!resp.data || resp.data.success !== true) {
+                    return;
+                }
+                comment.is_loaded = true;                
+                comment.comments = resp.data.comments.data;                
+            }, checkError('app'));
+        };
+        
         function checkError(errorGroupName) {
             $scope.errors[errorGroupName] = {};
             return function(response) {
diff --git a/resources/assets/js/directives.js b/resources/assets/js/directives.js
index f30a09778..d119d2e92 100644
--- a/resources/assets/js/directives.js
+++ b/resources/assets/js/directives.js
@@ -865,5 +865,52 @@ module.exports = function (ngApp, events) {
             }
         }
     }]);
+    
+    ngApp.directive('commentReply', ['$timeout', function ($timeout) {        
+        return {
+            restrict: 'E',
+            templateUrl: 'comment-reply.html',
+            scope: {
+                
+            },
+            link: function (scope, element, attr) {
+               
+            }
+        }
+                
+    }]);
 
+    ngApp.directive('commentReplyLink', ['$document', '$compile', function ($document, $compile) {
+        return { 
+            link: function (scope, element, attr) {
+                element.on('$destroy', function () {
+                    element.off('click');
+                    scope.$destroy(); 
+                });
+                
+                element.on('click', function () {
+                    var $container = element.parents('.comment-box').first();
+                    if (!$container.length) {
+                        console.error('commentReplyLink directive should be placed inside a container with class comment-box!');
+                        return;
+                    }
+                    if (attr.noCommentReplyDupe) {
+                        removeDupe();                    
+                    }
+                    var compiledHTML = $compile('<comment-reply></comment-reply>')(scope);
+                    $container.append(compiledHTML);
+                });
+            }
+        };
+        
+        
+        function removeDupe() {
+            let $existingElement = $document.find('comment-reply');
+            if (!$existingElement.length) {
+                return;
+            }
+            
+            $existingElement.remove();
+        }
+    }]);
 };
diff --git a/resources/views/comments/add.blade.php b/resources/views/comments/add.blade.php
index f7d9c41fc..c221cdbd4 100644
--- a/resources/views/comments/add.blade.php
+++ b/resources/views/comments/add.blade.php
@@ -1,8 +1,4 @@
-@section('head')
-    <script src="{{ baseUrl("/libs/simplemde/simplemde.min.js") }}"></script>
-@stop
-
-<div class="comment-editor" ng-controller="CommentAddController as vm">
+<div class="comment-editor" ng-controller="CommentAddController as vm" ng-cloak>
 <form novalidate>
         <div simple-markdown-input smd-model="comment.newComment" smd-get-content="getCommentHTML" smd-clear="clearInput">
             <textarea name="markdown" rows="3"
diff --git a/resources/views/comments/comment-reply.blade.php b/resources/views/comments/comment-reply.blade.php
new file mode 100644
index 000000000..d5ceb55c6
--- /dev/null
+++ b/resources/views/comments/comment-reply.blade.php
@@ -0,0 +1,10 @@
+<!-- TODO :: needs to be merged with add.blade.php -->
+<form novalidate>
+        <div simple-markdown-input smd-model="comment.newComment" smd-get-content="getCommentHTML" smd-clear="clearInput">
+            <textarea name="markdown" rows="3"
+                      @if($errors->has('markdown')) class="neg" @endif>@if(isset($model) ||
+                      old('markdown')){{htmlspecialchars( old('markdown') ? old('markdown') : ($model->markdown === '' ? $model->html : $model->markdown))}}@endif</textarea>
+        </div>
+        <input type="hidden" ng-model="pageId" name="comment.pageId" value="{{$pageId}}" ng-init="comment.pageId = {{$pageId }}">
+        <button type="submit" class="button pos" ng-click="vm.saveComment()">Save</button>
+</form>
\ No newline at end of file
diff --git a/resources/views/comments/comments.blade.php b/resources/views/comments/comments.blade.php
new file mode 100644
index 000000000..107052e87
--- /dev/null
+++ b/resources/views/comments/comments.blade.php
@@ -0,0 +1,19 @@
+@section('head')
+    <script src="{{ baseUrl("/libs/simplemde/simplemde.min.js") }}"></script>
+@stop
+<script type="text/ng-template" id="comment-list-item.html">
+    @include('comments/list-item')
+</script>
+<script type="text/ng-template" id="comment-reply.html">
+    @include('comments/comment-reply')
+</script>
+<div ng-controller="CommentListController as vm" ng-init="pageId = <?= $page->id ?>" class="comments-list" ng-cloak>   
+<h3>@{{vm.totalCommentsStr}}</h3>
+<hr> 
+    <div class="comment-box" ng-repeat="comment in vm.comments track by comment.id">        
+        <div ng-include src="'comment-list-item.html'">
+            
+        </div>
+    </div>
+</div>
+@include('comments/add', ['pageId' => $pageId])
\ No newline at end of file
diff --git a/resources/views/comments/list-item.blade.php b/resources/views/comments/list-item.blade.php
index 1a72d7e84..aecc0c26b 100644
--- a/resources/views/comments/list-item.blade.php
+++ b/resources/views/comments/list-item.blade.php
@@ -1,19 +1,26 @@
 <div class='page-comment'>
     <div class="user-image">
-        <img ng-src="@{{defaultAvatar}}" alt="user avatar">
+        <img ng-src="@{{::defaultAvatar}}" alt="user avatar">
     </div>
     <div class="comment-container">
         <div class="comment-header">
             @{{ ::comment.created_by_name }}
         </div>
-        <div ng-bind-html="comment.html" class="comment-body">
+        <div ng-bind-html="::comment.html" class="comment-body">
 
         </div>
         <div class="comment-actions">
             <ul>
-                <li><a href="#">Reply</a></li>
+                <li><a href="#" comment-reply-link no-comment-reply-dupe="true">Reply</a></li>
                 <li><a href="#">@{{::comment.created_at}}</a></li>            
             </ul>                
         </div>
-    </div>
+        <a href="#" ng-click="vm.loadSubComments($event, comment, $index)" class="load-more-comments" ng-if="comment.cnt_sub_comments > 0 && !comment.is_loaded">
+            Load @{{::comment.cnt_sub_comments}} more comment(s)
+        </a>        
+        <div class="comment-box" ng-repeat="comment in comments = comment.comments track by comment.id">        
+            <div ng-include src="'comment-list-item.html'">
+            </div>
+        </div>        
+    </div>    
 </div>
\ No newline at end of file
diff --git a/resources/views/pages/comments.blade.php b/resources/views/pages/comments.blade.php
deleted file mode 100644
index ea9dd57d6..000000000
--- a/resources/views/pages/comments.blade.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<div ng-controller="CommentListController as vm" ng-init="pageId = <?= $page->id ?>" class="comments-list" ng-cloak>   
-<h3>@{{vm.totalCommentsStr}}</h3>
-<hr> 
-    <div class="comment-box" ng-repeat="comment in vm.comments track by comment.id">
-        @include('comments/list-item')
-    </div>
-</div>
-@include('comments/add', ['pageId' => $pageId])
diff --git a/resources/views/pages/show.blade.php b/resources/views/pages/show.blade.php
index 244a47c02..db1d1e5cd 100644
--- a/resources/views/pages/show.blade.php
+++ b/resources/views/pages/show.blade.php
@@ -113,7 +113,7 @@
     <div class="container">
         <div class="row">
             <div class="col-md-9">
-                @include('pages/comments', ['pageId' => $page->id])
+                @include('comments/comments', ['pageId' => $page->id])
             </div>
         </div>
     </div>

From 8b827532183eec08a9c96dfbdc2af71895df0b44 Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Wed, 3 May 2017 02:42:04 +0530
Subject: [PATCH 06/83] #47 - Gets rid of simplemde

---
 app/Http/Controllers/CommentController.php  |  2 +-
 public/libs/simplemde/simplemde.min.js      | 15 -------
 resources/assets/js/controllers.js          |  7 +--
 resources/assets/js/directives.js           | 47 ---------------------
 resources/assets/sass/_comments.scss        |  7 +++
 resources/assets/sass/_simplemde.scss       |  7 ---
 resources/assets/sass/styles.scss           |  1 -
 resources/lang/en/entities.php              |  3 +-
 resources/views/comments/add.blade.php      | 12 +++---
 resources/views/comments/comments.blade.php |  3 --
 10 files changed, 19 insertions(+), 85 deletions(-)
 delete mode 100644 public/libs/simplemde/simplemde.min.js
 delete mode 100644 resources/assets/sass/_simplemde.scss

diff --git a/app/Http/Controllers/CommentController.php b/app/Http/Controllers/CommentController.php
index b8cf77621..8e7b1512a 100644
--- a/app/Http/Controllers/CommentController.php
+++ b/app/Http/Controllers/CommentController.php
@@ -17,7 +17,7 @@ class CommentController extends Controller
         parent::__construct();
     }
 
-    public function save(Request $request, $pageId, $commentId)
+    public function save(Request $request, $pageId, $commentId = null)
     {
         $this->validate($request, [
             'text' => 'required|string',
diff --git a/public/libs/simplemde/simplemde.min.js b/public/libs/simplemde/simplemde.min.js
deleted file mode 100644
index 50c624f20..000000000
--- a/public/libs/simplemde/simplemde.min.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * simplemde v1.11.2
- * Copyright Next Step Webs, Inc.
- * @link https://github.com/NextStepWebs/simplemde-markdown-editor
- * @license MIT
- */
-!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.SimpleMDE=e()}}(function(){var e;return function t(e,n,r){function i(a,l){if(!n[a]){if(!e[a]){var s="function"==typeof require&&require;if(!l&&s)return s(a,!0);if(o)return o(a,!0);var c=new Error("Cannot find module '"+a+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[a]={exports:{}};e[a][0].call(u.exports,function(t){var n=e[a][1][t];return i(n?n:t)},u,u.exports,t,e,n,r)}return n[a].exports}for(var o="function"==typeof require&&require,a=0;a<r.length;a++)i(r[a]);return i}({1:[function(e,t,n){"use strict";function r(){for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,n=e.length;n>t;++t)s[t]=e[t],c[e.charCodeAt(t)]=t;c["-".charCodeAt(0)]=62,c["_".charCodeAt(0)]=63}function i(e){var t,n,r,i,o,a,l=e.length;if(l%4>0)throw new Error("Invalid string. Length must be a multiple of 4");o="="===e[l-2]?2:"="===e[l-1]?1:0,a=new u(3*l/4-o),r=o>0?l-4:l;var s=0;for(t=0,n=0;r>t;t+=4,n+=3)i=c[e.charCodeAt(t)]<<18|c[e.charCodeAt(t+1)]<<12|c[e.charCodeAt(t+2)]<<6|c[e.charCodeAt(t+3)],a[s++]=i>>16&255,a[s++]=i>>8&255,a[s++]=255&i;return 2===o?(i=c[e.charCodeAt(t)]<<2|c[e.charCodeAt(t+1)]>>4,a[s++]=255&i):1===o&&(i=c[e.charCodeAt(t)]<<10|c[e.charCodeAt(t+1)]<<4|c[e.charCodeAt(t+2)]>>2,a[s++]=i>>8&255,a[s++]=255&i),a}function o(e){return s[e>>18&63]+s[e>>12&63]+s[e>>6&63]+s[63&e]}function a(e,t,n){for(var r,i=[],a=t;n>a;a+=3)r=(e[a]<<16)+(e[a+1]<<8)+e[a+2],i.push(o(r));return i.join("")}function l(e){for(var t,n=e.length,r=n%3,i="",o=[],l=16383,c=0,u=n-r;u>c;c+=l)o.push(a(e,c,c+l>u?u:c+l));return 1===r?(t=e[n-1],i+=s[t>>2],i+=s[t<<4&63],i+="=="):2===r&&(t=(e[n-2]<<8)+e[n-1],i+=s[t>>10],i+=s[t>>4&63],i+=s[t<<2&63],i+="="),o.push(i),o.join("")}n.toByteArray=i,n.fromByteArray=l;var s=[],c=[],u="undefined"!=typeof Uint8Array?Uint8Array:Array;r()},{}],2:[function(e,t,n){},{}],3:[function(e,t,n){(function(t){"use strict";function r(){try{var e=new Uint8Array(1);return e.foo=function(){return 42},42===e.foo()&&"function"==typeof e.subarray&&0===e.subarray(1,1).byteLength}catch(t){return!1}}function i(){return a.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function o(e,t){if(i()<t)throw new RangeError("Invalid typed array length");return a.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t),e.__proto__=a.prototype):(null===e&&(e=new a(t)),e.length=t),e}function a(e,t,n){if(!(a.TYPED_ARRAY_SUPPORT||this instanceof a))return new a(e,t,n);if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return u(this,e)}return l(this,e,t,n)}function l(e,t,n,r){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?d(e,t,n,r):"string"==typeof t?f(e,t,n):p(e,t)}function s(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number')}function c(e,t,n,r){return s(t),0>=t?o(e,t):void 0!==n?"string"==typeof r?o(e,t).fill(n,r):o(e,t).fill(n):o(e,t)}function u(e,t){if(s(t),e=o(e,0>t?0:0|m(t)),!a.TYPED_ARRAY_SUPPORT)for(var n=0;t>n;n++)e[n]=0;return e}function f(e,t,n){if("string"==typeof n&&""!==n||(n="utf8"),!a.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|v(t,n);return e=o(e,r),e.write(t,n),e}function h(e,t){var n=0|m(t.length);e=o(e,n);for(var r=0;n>r;r+=1)e[r]=255&t[r];return e}function d(e,t,n,r){if(t.byteLength,0>n||t.byteLength<n)throw new RangeError("'offset' is out of bounds");if(t.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");return t=void 0===r?new Uint8Array(t,n):new Uint8Array(t,n,r),a.TYPED_ARRAY_SUPPORT?(e=t,e.__proto__=a.prototype):e=h(e,t),e}function p(e,t){if(a.isBuffer(t)){var n=0|m(t.length);return e=o(e,n),0===e.length?e:(t.copy(e,0,0,n),e)}if(t){if("undefined"!=typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||"length"in t)return"number"!=typeof t.length||K(t.length)?o(e,0):h(e,t);if("Buffer"===t.type&&J(t.data))return h(e,t.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}function m(e){if(e>=i())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i().toString(16)+" bytes");return 0|e}function g(e){return+e!=e&&(e=0),a.alloc(+e)}function v(e,t){if(a.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"binary":case"raw":case"raws":return n;case"utf8":case"utf-8":case void 0:return q(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return $(e).length;default:if(r)return q(e).length;t=(""+t).toLowerCase(),r=!0}}function y(e,t,n){var r=!1;if((void 0===t||0>t)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),0>=n)return"";if(n>>>=0,t>>>=0,t>=n)return"";for(e||(e="utf8");;)switch(e){case"hex":return I(this,t,n);case"utf8":case"utf-8":return N(this,t,n);case"ascii":return E(this,t,n);case"binary":return O(this,t,n);case"base64":return M(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function x(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function b(e,t,n,r){function i(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}var o=1,a=e.length,l=t.length;if(void 0!==r&&(r=String(r).toLowerCase(),"ucs2"===r||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;o=2,a/=2,l/=2,n/=2}for(var s=-1,c=0;a>n+c;c++)if(i(e,n+c)===i(t,-1===s?0:c-s)){if(-1===s&&(s=c),c-s+1===l)return(n+s)*o}else-1!==s&&(c-=c-s),s=-1;return-1}function w(e,t,n,r){n=Number(n)||0;var i=e.length-n;r?(r=Number(r),r>i&&(r=i)):r=i;var o=t.length;if(o%2!==0)throw new Error("Invalid hex string");r>o/2&&(r=o/2);for(var a=0;r>a;a++){var l=parseInt(t.substr(2*a,2),16);if(isNaN(l))return a;e[n+a]=l}return a}function k(e,t,n,r){return V(q(t,e.length-n),e,n,r)}function S(e,t,n,r){return V(G(t),e,n,r)}function C(e,t,n,r){return S(e,t,n,r)}function L(e,t,n,r){return V($(t),e,n,r)}function T(e,t,n,r){return V(Y(t,e.length-n),e,n,r)}function M(e,t,n){return 0===t&&n===e.length?X.fromByteArray(e):X.fromByteArray(e.slice(t,n))}function N(e,t,n){n=Math.min(e.length,n);for(var r=[],i=t;n>i;){var o=e[i],a=null,l=o>239?4:o>223?3:o>191?2:1;if(n>=i+l){var s,c,u,f;switch(l){case 1:128>o&&(a=o);break;case 2:s=e[i+1],128===(192&s)&&(f=(31&o)<<6|63&s,f>127&&(a=f));break;case 3:s=e[i+1],c=e[i+2],128===(192&s)&&128===(192&c)&&(f=(15&o)<<12|(63&s)<<6|63&c,f>2047&&(55296>f||f>57343)&&(a=f));break;case 4:s=e[i+1],c=e[i+2],u=e[i+3],128===(192&s)&&128===(192&c)&&128===(192&u)&&(f=(15&o)<<18|(63&s)<<12|(63&c)<<6|63&u,f>65535&&1114112>f&&(a=f))}}null===a?(a=65533,l=1):a>65535&&(a-=65536,r.push(a>>>10&1023|55296),a=56320|1023&a),r.push(a),i+=l}return A(r)}function A(e){var t=e.length;if(Q>=t)return String.fromCharCode.apply(String,e);for(var n="",r=0;t>r;)n+=String.fromCharCode.apply(String,e.slice(r,r+=Q));return n}function E(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;n>i;i++)r+=String.fromCharCode(127&e[i]);return r}function O(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;n>i;i++)r+=String.fromCharCode(e[i]);return r}function I(e,t,n){var r=e.length;(!t||0>t)&&(t=0),(!n||0>n||n>r)&&(n=r);for(var i="",o=t;n>o;o++)i+=U(e[o]);return i}function P(e,t,n){for(var r=e.slice(t,n),i="",o=0;o<r.length;o+=2)i+=String.fromCharCode(r[o]+256*r[o+1]);return i}function R(e,t,n){if(e%1!==0||0>e)throw new RangeError("offset is not uint");if(e+t>n)throw new RangeError("Trying to access beyond buffer length")}function D(e,t,n,r,i,o){if(!a.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||o>t)throw new RangeError('"value" argument is out of bounds');if(n+r>e.length)throw new RangeError("Index out of range")}function H(e,t,n,r){0>t&&(t=65535+t+1);for(var i=0,o=Math.min(e.length-n,2);o>i;i++)e[n+i]=(t&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function W(e,t,n,r){0>t&&(t=4294967295+t+1);for(var i=0,o=Math.min(e.length-n,4);o>i;i++)e[n+i]=t>>>8*(r?i:3-i)&255}function B(e,t,n,r,i,o){if(n+r>e.length)throw new RangeError("Index out of range");if(0>n)throw new RangeError("Index out of range")}function _(e,t,n,r,i){return i||B(e,t,n,4,3.4028234663852886e38,-3.4028234663852886e38),Z.write(e,t,n,r,23,4),n+4}function F(e,t,n,r,i){return i||B(e,t,n,8,1.7976931348623157e308,-1.7976931348623157e308),Z.write(e,t,n,r,52,8),n+8}function z(e){if(e=j(e).replace(ee,""),e.length<2)return"";for(;e.length%4!==0;)e+="=";return e}function j(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function U(e){return 16>e?"0"+e.toString(16):e.toString(16)}function q(e,t){t=t||1/0;for(var n,r=e.length,i=null,o=[],a=0;r>a;a++){if(n=e.charCodeAt(a),n>55295&&57344>n){if(!i){if(n>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&o.push(239,191,189);continue}i=n;continue}if(56320>n){(t-=3)>-1&&o.push(239,191,189),i=n;continue}n=(i-55296<<10|n-56320)+65536}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,128>n){if((t-=1)<0)break;o.push(n)}else if(2048>n){if((t-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(65536>n){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(1114112>n))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function G(e){for(var t=[],n=0;n<e.length;n++)t.push(255&e.charCodeAt(n));return t}function Y(e,t){for(var n,r,i,o=[],a=0;a<e.length&&!((t-=2)<0);a++)n=e.charCodeAt(a),r=n>>8,i=n%256,o.push(i),o.push(r);return o}function $(e){return X.toByteArray(z(e))}function V(e,t,n,r){for(var i=0;r>i&&!(i+n>=t.length||i>=e.length);i++)t[i+n]=e[i];return i}function K(e){return e!==e}var X=e("base64-js"),Z=e("ieee754"),J=e("isarray");n.Buffer=a,n.SlowBuffer=g,n.INSPECT_MAX_BYTES=50,a.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:r(),n.kMaxLength=i(),a.poolSize=8192,a._augment=function(e){return e.__proto__=a.prototype,e},a.from=function(e,t,n){return l(null,e,t,n)},a.TYPED_ARRAY_SUPPORT&&(a.prototype.__proto__=Uint8Array.prototype,a.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&a[Symbol.species]===a&&Object.defineProperty(a,Symbol.species,{value:null,configurable:!0})),a.alloc=function(e,t,n){return c(null,e,t,n)},a.allocUnsafe=function(e){return u(null,e)},a.allocUnsafeSlow=function(e){return u(null,e)},a.isBuffer=function(e){return!(null==e||!e._isBuffer)},a.compare=function(e,t){if(!a.isBuffer(e)||!a.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,i=0,o=Math.min(n,r);o>i;++i)if(e[i]!==t[i]){n=e[i],r=t[i];break}return r>n?-1:n>r?1:0},a.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"raw":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},a.concat=function(e,t){if(!J(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return a.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;n++)t+=e[n].length;var r=a.allocUnsafe(t),i=0;for(n=0;n<e.length;n++){var o=e[n];if(!a.isBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(r,i),i+=o.length}return r},a.byteLength=v,a.prototype._isBuffer=!0,a.prototype.swap16=function(){var e=this.length;if(e%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;e>t;t+=2)x(this,t,t+1);return this},a.prototype.swap32=function(){var e=this.length;if(e%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;e>t;t+=4)x(this,t,t+3),x(this,t+1,t+2);return this},a.prototype.toString=function(){var e=0|this.length;return 0===e?"":0===arguments.length?N(this,0,e):y.apply(this,arguments)},a.prototype.equals=function(e){if(!a.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e?!0:0===a.compare(this,e)},a.prototype.inspect=function(){var e="",t=n.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(e+=" ... ")),"<Buffer "+e+">"},a.prototype.compare=function(e,t,n,r,i){if(!a.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),0>t||n>e.length||0>r||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=n)return 0;if(r>=i)return-1;if(t>=n)return 1;if(t>>>=0,n>>>=0,r>>>=0,i>>>=0,this===e)return 0;for(var o=i-r,l=n-t,s=Math.min(o,l),c=this.slice(r,i),u=e.slice(t,n),f=0;s>f;++f)if(c[f]!==u[f]){o=c[f],l=u[f];break}return l>o?-1:o>l?1:0},a.prototype.indexOf=function(e,t,n){if("string"==typeof t?(n=t,t=0):t>2147483647?t=2147483647:-2147483648>t&&(t=-2147483648),t>>=0,0===this.length)return-1;if(t>=this.length)return-1;if(0>t&&(t=Math.max(this.length+t,0)),"string"==typeof e&&(e=a.from(e,n)),a.isBuffer(e))return 0===e.length?-1:b(this,e,t,n);if("number"==typeof e)return a.TYPED_ARRAY_SUPPORT&&"function"===Uint8Array.prototype.indexOf?Uint8Array.prototype.indexOf.call(this,e,t):b(this,[e],t,n);throw new TypeError("val must be string, number or Buffer")},a.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},a.prototype.write=function(e,t,n,r){if(void 0===t)r="utf8",n=this.length,t=0;else if(void 0===n&&"string"==typeof t)r=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t=0|t,isFinite(n)?(n=0|n,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-t;if((void 0===n||n>i)&&(n=i),e.length>0&&(0>n||0>t)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var o=!1;;)switch(r){case"hex":return w(this,e,t,n);case"utf8":case"utf-8":return k(this,e,t,n);case"ascii":return S(this,e,t,n);case"binary":return C(this,e,t,n);case"base64":return L(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,e,t,n);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var Q=4096;a.prototype.slice=function(e,t){var n=this.length;e=~~e,t=void 0===t?n:~~t,0>e?(e+=n,0>e&&(e=0)):e>n&&(e=n),0>t?(t+=n,0>t&&(t=0)):t>n&&(t=n),e>t&&(t=e);var r;if(a.TYPED_ARRAY_SUPPORT)r=this.subarray(e,t),r.__proto__=a.prototype;else{var i=t-e;r=new a(i,void 0);for(var o=0;i>o;o++)r[o]=this[o+e]}return r},a.prototype.readUIntLE=function(e,t,n){e=0|e,t=0|t,n||R(e,t,this.length);for(var r=this[e],i=1,o=0;++o<t&&(i*=256);)r+=this[e+o]*i;return r},a.prototype.readUIntBE=function(e,t,n){e=0|e,t=0|t,n||R(e,t,this.length);for(var r=this[e+--t],i=1;t>0&&(i*=256);)r+=this[e+--t]*i;return r},a.prototype.readUInt8=function(e,t){return t||R(e,1,this.length),this[e]},a.prototype.readUInt16LE=function(e,t){return t||R(e,2,this.length),this[e]|this[e+1]<<8},a.prototype.readUInt16BE=function(e,t){return t||R(e,2,this.length),this[e]<<8|this[e+1]},a.prototype.readUInt32LE=function(e,t){return t||R(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},a.prototype.readUInt32BE=function(e,t){return t||R(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},a.prototype.readIntLE=function(e,t,n){e=0|e,t=0|t,n||R(e,t,this.length);for(var r=this[e],i=1,o=0;++o<t&&(i*=256);)r+=this[e+o]*i;return i*=128,r>=i&&(r-=Math.pow(2,8*t)),r},a.prototype.readIntBE=function(e,t,n){e=0|e,t=0|t,n||R(e,t,this.length);for(var r=t,i=1,o=this[e+--r];r>0&&(i*=256);)o+=this[e+--r]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*t)),o},a.prototype.readInt8=function(e,t){return t||R(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},a.prototype.readInt16LE=function(e,t){t||R(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},a.prototype.readInt16BE=function(e,t){t||R(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},a.prototype.readInt32LE=function(e,t){return t||R(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},a.prototype.readInt32BE=function(e,t){return t||R(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},a.prototype.readFloatLE=function(e,t){return t||R(e,4,this.length),Z.read(this,e,!0,23,4)},a.prototype.readFloatBE=function(e,t){return t||R(e,4,this.length),Z.read(this,e,!1,23,4)},a.prototype.readDoubleLE=function(e,t){return t||R(e,8,this.length),Z.read(this,e,!0,52,8)},a.prototype.readDoubleBE=function(e,t){return t||R(e,8,this.length),Z.read(this,e,!1,52,8)},a.prototype.writeUIntLE=function(e,t,n,r){if(e=+e,t=0|t,n=0|n,!r){var i=Math.pow(2,8*n)-1;D(this,e,t,n,i,0)}var o=1,a=0;for(this[t]=255&e;++a<n&&(o*=256);)this[t+a]=e/o&255;return t+n},a.prototype.writeUIntBE=function(e,t,n,r){if(e=+e,t=0|t,n=0|n,!r){var i=Math.pow(2,8*n)-1;D(this,e,t,n,i,0)}var o=n-1,a=1;for(this[t+o]=255&e;--o>=0&&(a*=256);)this[t+o]=e/a&255;return t+n},a.prototype.writeUInt8=function(e,t,n){return e=+e,t=0|t,n||D(this,e,t,1,255,0),a.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},a.prototype.writeUInt16LE=function(e,t,n){return e=+e,t=0|t,n||D(this,e,t,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):H(this,e,t,!0),t+2},a.prototype.writeUInt16BE=function(e,t,n){return e=+e,t=0|t,n||D(this,e,t,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):H(this,e,t,!1),t+2},a.prototype.writeUInt32LE=function(e,t,n){return e=+e,t=0|t,n||D(this,e,t,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):W(this,e,t,!0),t+4},a.prototype.writeUInt32BE=function(e,t,n){return e=+e,t=0|t,n||D(this,e,t,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):W(this,e,t,!1),t+4},a.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t=0|t,!r){var i=Math.pow(2,8*n-1);D(this,e,t,n,i-1,-i)}var o=0,a=1,l=0;for(this[t]=255&e;++o<n&&(a*=256);)0>e&&0===l&&0!==this[t+o-1]&&(l=1),this[t+o]=(e/a>>0)-l&255;return t+n},a.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t=0|t,!r){var i=Math.pow(2,8*n-1);D(this,e,t,n,i-1,-i)}var o=n-1,a=1,l=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)0>e&&0===l&&0!==this[t+o+1]&&(l=1),this[t+o]=(e/a>>0)-l&255;return t+n},a.prototype.writeInt8=function(e,t,n){return e=+e,t=0|t,n||D(this,e,t,1,127,-128),a.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),0>e&&(e=255+e+1),this[t]=255&e,t+1},a.prototype.writeInt16LE=function(e,t,n){return e=+e,t=0|t,n||D(this,e,t,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):H(this,e,t,!0),t+2},a.prototype.writeInt16BE=function(e,t,n){return e=+e,t=0|t,n||D(this,e,t,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):H(this,e,t,!1),t+2},a.prototype.writeInt32LE=function(e,t,n){return e=+e,t=0|t,n||D(this,e,t,4,2147483647,-2147483648),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):W(this,e,t,!0),t+4},a.prototype.writeInt32BE=function(e,t,n){return e=+e,t=0|t,n||D(this,e,t,4,2147483647,-2147483648),0>e&&(e=4294967295+e+1),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):W(this,e,t,!1),t+4},a.prototype.writeFloatLE=function(e,t,n){return _(this,e,t,!0,n)},a.prototype.writeFloatBE=function(e,t,n){return _(this,e,t,!1,n)},a.prototype.writeDoubleLE=function(e,t,n){return F(this,e,t,!0,n)},a.prototype.writeDoubleBE=function(e,t,n){return F(this,e,t,!1,n)},a.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&n>r&&(r=n),r===n)return 0;if(0===e.length||0===this.length)return 0;if(0>t)throw new RangeError("targetStart out of bounds");if(0>n||n>=this.length)throw new RangeError("sourceStart out of bounds");if(0>r)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t<r-n&&(r=e.length-t+n);var i,o=r-n;if(this===e&&t>n&&r>t)for(i=o-1;i>=0;i--)e[i+t]=this[i+n];else if(1e3>o||!a.TYPED_ARRAY_SUPPORT)for(i=0;o>i;i++)e[i+t]=this[i+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+o),t);return o},a.prototype.fill=function(e,t,n,r){if("string"==typeof e){if("string"==typeof t?(r=t,t=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===e.length){var i=e.charCodeAt(0);256>i&&(e=i)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!a.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof e&&(e=255&e);if(0>t||this.length<t||this.length<n)throw new RangeError("Out of range index");if(t>=n)return this;t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0);var o;if("number"==typeof e)for(o=t;n>o;o++)this[o]=e;else{var l=a.isBuffer(e)?e:q(new a(e,r).toString()),s=l.length;for(o=0;n-t>o;o++)this[o+t]=l[o%s]}return this};var ee=/[^+\/0-9A-Za-z-_]/g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"base64-js":1,ieee754:15,isarray:16}],4:[function(e,t,n){"use strict";function r(e){return e=e||{},"function"!=typeof e.codeMirrorInstance||"function"!=typeof e.codeMirrorInstance.defineMode?void console.log("CodeMirror Spell Checker: You must provide an instance of CodeMirror via the option `codeMirrorInstance`"):(String.prototype.includes||(String.prototype.includes=function(){return-1!==String.prototype.indexOf.apply(this,arguments)}),void e.codeMirrorInstance.defineMode("spell-checker",function(t){if(!r.aff_loading){r.aff_loading=!0;var n=new XMLHttpRequest;n.open("GET","https://cdn.jsdelivr.net/codemirror.spell-checker/latest/en_US.aff",!0),n.onload=function(){4===n.readyState&&200===n.status&&(r.aff_data=n.responseText,r.num_loaded++,2==r.num_loaded&&(r.typo=new i("en_US",r.aff_data,r.dic_data,{platform:"any"})))},n.send(null)}if(!r.dic_loading){r.dic_loading=!0;var o=new XMLHttpRequest;o.open("GET","https://cdn.jsdelivr.net/codemirror.spell-checker/latest/en_US.dic",!0),o.onload=function(){4===o.readyState&&200===o.status&&(r.dic_data=o.responseText,r.num_loaded++,2==r.num_loaded&&(r.typo=new i("en_US",r.aff_data,r.dic_data,{platform:"any"})))},o.send(null)}var a='!"#$%&()*+,-./:;<=>?@[\\]^_`{|}~ ',l={token:function(e){var t=e.peek(),n="";if(a.includes(t))return e.next(),null;for(;null!=(t=e.peek())&&!a.includes(t);)n+=t,e.next();return r.typo&&!r.typo.check(n)?"spell-error":null}},s=e.codeMirrorInstance.getMode(t,t.backdrop||"text/plain");return e.codeMirrorInstance.overlayMode(s,l,!0)}))}var i=e("typo-js");r.num_loaded=0,r.aff_loading=!1,r.dic_loading=!1,r.aff_data="",r.dic_data="",r.typo,t.exports=r},{"typo-js":18}],5:[function(t,n,r){!function(i){"object"==typeof r&&"object"==typeof n?i(t("../../lib/codemirror")):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],i):i(CodeMirror)}(function(e){"use strict";function t(e){var t=e.getWrapperElement();e.state.fullScreenRestore={scrollTop:window.pageYOffset,scrollLeft:window.pageXOffset,width:t.style.width,height:t.style.height},t.style.width="",t.style.height="auto",t.className+=" CodeMirror-fullscreen",document.documentElement.style.overflow="hidden",e.refresh()}function n(e){var t=e.getWrapperElement();t.className=t.className.replace(/\s*CodeMirror-fullscreen\b/,""),document.documentElement.style.overflow="";var n=e.state.fullScreenRestore;t.style.width=n.width,t.style.height=n.height,window.scrollTo(n.scrollLeft,n.scrollTop),e.refresh()}e.defineOption("fullScreen",!1,function(r,i,o){o==e.Init&&(o=!1),!o!=!i&&(i?t(r):n(r))})})},{"../../lib/codemirror":10}],6:[function(t,n,r){!function(i){"object"==typeof r&&"object"==typeof n?i(t("../../lib/codemirror")):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],i):i(CodeMirror)}(function(e){function t(e){e.state.placeholder&&(e.state.placeholder.parentNode.removeChild(e.state.placeholder),e.state.placeholder=null)}function n(e){t(e);var n=e.state.placeholder=document.createElement("pre");n.style.cssText="height: 0; overflow: visible",n.className="CodeMirror-placeholder";var r=e.getOption("placeholder");"string"==typeof r&&(r=document.createTextNode(r)),n.appendChild(r),e.display.lineSpace.insertBefore(n,e.display.lineSpace.firstChild)}function r(e){o(e)&&n(e)}function i(e){var r=e.getWrapperElement(),i=o(e);r.className=r.className.replace(" CodeMirror-empty","")+(i?" CodeMirror-empty":""),i?n(e):t(e)}function o(e){return 1===e.lineCount()&&""===e.getLine(0)}e.defineOption("placeholder","",function(n,o,a){var l=a&&a!=e.Init;if(o&&!l)n.on("blur",r),n.on("change",i),n.on("swapDoc",i),i(n);else if(!o&&l){n.off("blur",r),n.off("change",i),n.off("swapDoc",i),t(n);var s=n.getWrapperElement();s.className=s.className.replace(" CodeMirror-empty","")}o&&!n.hasFocus()&&r(n)})})},{"../../lib/codemirror":10}],7:[function(t,n,r){!function(i){"object"==typeof r&&"object"==typeof n?i(t("../../lib/codemirror")):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],i):i(CodeMirror)}(function(e){"use strict";var t=/^(\s*)(>[> ]*|[*+-]\s|(\d+)([.)]))(\s*)/,n=/^(\s*)(>[> ]*|[*+-]|(\d+)[.)])(\s*)$/,r=/[*+-]\s/;e.commands.newlineAndIndentContinueMarkdownList=function(i){if(i.getOption("disableInput"))return e.Pass;for(var o=i.listSelections(),a=[],l=0;l<o.length;l++){var s=o[l].head,c=i.getStateAfter(s.line),u=c.list!==!1,f=0!==c.quote,h=i.getLine(s.line),d=t.exec(h);if(!o[l].empty()||!u&&!f||!d)return void i.execCommand("newlineAndIndent");if(n.test(h))i.replaceRange("",{line:s.line,ch:0},{line:s.line,ch:s.ch+1}),a[l]="\n";else{var p=d[1],m=d[5],g=r.test(d[2])||d[2].indexOf(">")>=0?d[2]:parseInt(d[3],10)+1+d[4];a[l]="\n"+p+g+m}}i.replaceSelections(a)}})},{"../../lib/codemirror":10}],8:[function(t,n,r){!function(i){"object"==typeof r&&"object"==typeof n?i(t("../../lib/codemirror")):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],i):i(CodeMirror)}(function(e){"use strict";e.overlayMode=function(t,n,r){return{startState:function(){return{base:e.startState(t),overlay:e.startState(n),basePos:0,baseCur:null,overlayPos:0,overlayCur:null,streamSeen:null}},copyState:function(r){return{base:e.copyState(t,r.base),overlay:e.copyState(n,r.overlay),basePos:r.basePos,baseCur:null,overlayPos:r.overlayPos,overlayCur:null}},token:function(e,i){return(e!=i.streamSeen||Math.min(i.basePos,i.overlayPos)<e.start)&&(i.streamSeen=e,i.basePos=i.overlayPos=e.start),e.start==i.basePos&&(i.baseCur=t.token(e,i.base),i.basePos=e.pos),e.start==i.overlayPos&&(e.pos=e.start,i.overlayCur=n.token(e,i.overlay),i.overlayPos=e.pos),e.pos=Math.min(i.basePos,i.overlayPos),null==i.overlayCur?i.baseCur:null!=i.baseCur&&i.overlay.combineTokens||r&&null==i.overlay.combineTokens?i.baseCur+" "+i.overlayCur:i.overlayCur},indent:t.indent&&function(e,n){return t.indent(e.base,n)},electricChars:t.electricChars,innerMode:function(e){return{state:e.base,mode:t}},blankLine:function(e){t.blankLine&&t.blankLine(e.base),n.blankLine&&n.blankLine(e.overlay)}}}})},{"../../lib/codemirror":10}],9:[function(t,n,r){!function(i){"object"==typeof r&&"object"==typeof n?i(t("../../lib/codemirror")):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],i):i(CodeMirror)}(function(e){"use strict";function t(e){e.operation(function(){a(e)})}function n(e){e.state.markedSelection.length&&e.operation(function(){i(e)})}function r(e,t,n,r){if(0!=c(t,n))for(var i=e.state.markedSelection,o=e.state.markedSelectionStyle,a=t.line;;){var u=a==t.line?t:s(a,0),f=a+l,h=f>=n.line,d=h?n:s(f,0),p=e.markText(u,d,{className:o});if(null==r?i.push(p):i.splice(r++,0,p),h)break;a=f}}function i(e){for(var t=e.state.markedSelection,n=0;n<t.length;++n)t[n].clear();t.length=0}function o(e){i(e);for(var t=e.listSelections(),n=0;n<t.length;n++)r(e,t[n].from(),t[n].to())}function a(e){if(!e.somethingSelected())return i(e);if(e.listSelections().length>1)return o(e);var t=e.getCursor("start"),n=e.getCursor("end"),a=e.state.markedSelection;if(!a.length)return r(e,t,n);var s=a[0].find(),u=a[a.length-1].find();if(!s||!u||n.line-t.line<l||c(t,u.to)>=0||c(n,s.from)<=0)return o(e);for(;c(t,s.from)>0;)a.shift().clear(),s=a[0].find();for(c(t,s.from)<0&&(s.to.line-t.line<l?(a.shift().clear(),r(e,t,s.to,0)):r(e,t,s.from,0));c(n,u.to)<0;)a.pop().clear(),u=a[a.length-1].find();c(n,u.to)>0&&(n.line-u.from.line<l?(a.pop().clear(),r(e,u.from,n)):r(e,u.to,n))}e.defineOption("styleSelectedText",!1,function(r,a,l){var s=l&&l!=e.Init;a&&!s?(r.state.markedSelection=[],r.state.markedSelectionStyle="string"==typeof a?a:"CodeMirror-selectedtext",o(r),r.on("cursorActivity",t),r.on("change",n)):!a&&s&&(r.off("cursorActivity",t),r.off("change",n),i(r),r.state.markedSelection=r.state.markedSelectionStyle=null)});var l=8,s=e.Pos,c=e.cmpPos})},{"../../lib/codemirror":10}],10:[function(t,n,r){!function(t){if("object"==typeof r&&"object"==typeof n)n.exports=t();else{if("function"==typeof e&&e.amd)return e([],t);(this||window).CodeMirror=t()}}(function(){"use strict";function e(n,r){if(!(this instanceof e))return new e(n,r);this.options=r=r?Wi(r):{},Wi(ea,r,!1),d(r);var i=r.value;"string"==typeof i&&(i=new Ca(i,r.mode,null,r.lineSeparator)),this.doc=i;var o=new e.inputStyles[r.inputStyle](this),a=this.display=new t(n,i,o);a.wrapper.CodeMirror=this,c(this),l(this),r.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),r.autofocus&&!Ao&&a.input.focus(),v(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:!1,cutIncoming:!1,selectingText:!1,draggingText:!1,highlight:new Ei,keySeq:null,specialChars:null};var s=this;xo&&11>bo&&setTimeout(function(){s.display.input.reset(!0)},20),jt(this),Ki(),bt(this),this.curOp.forceUpdate=!0,Xr(this,i),r.autofocus&&!Ao||s.hasFocus()?setTimeout(Bi(vn,this),20):yn(this);for(var u in ta)ta.hasOwnProperty(u)&&ta[u](this,r[u],na);k(this),r.finishInit&&r.finishInit(this);for(var f=0;f<aa.length;++f)aa[f](this);kt(this),wo&&r.lineWrapping&&"optimizelegibility"==getComputedStyle(a.lineDiv).textRendering&&(a.lineDiv.style.textRendering="auto")}function t(e,t,n){var r=this;this.input=n,r.scrollbarFiller=ji("div",null,"CodeMirror-scrollbar-filler"),r.scrollbarFiller.setAttribute("cm-not-content","true"),r.gutterFiller=ji("div",null,"CodeMirror-gutter-filler"),r.gutterFiller.setAttribute("cm-not-content","true"),r.lineDiv=ji("div",null,"CodeMirror-code"),r.selectionDiv=ji("div",null,null,"position: relative; z-index: 1"),r.cursorDiv=ji("div",null,"CodeMirror-cursors"),r.measure=ji("div",null,"CodeMirror-measure"),r.lineMeasure=ji("div",null,"CodeMirror-measure"),r.lineSpace=ji("div",[r.measure,r.lineMeasure,r.selectionDiv,r.cursorDiv,r.lineDiv],null,"position: relative; outline: none"),r.mover=ji("div",[ji("div",[r.lineSpace],"CodeMirror-lines")],null,"position: relative"),r.sizer=ji("div",[r.mover],"CodeMirror-sizer"),r.sizerWidth=null,r.heightForcer=ji("div",null,null,"position: absolute; height: "+Da+"px; width: 1px;"),r.gutters=ji("div",null,"CodeMirror-gutters"),r.lineGutter=null,r.scroller=ji("div",[r.sizer,r.heightForcer,r.gutters],"CodeMirror-scroll"),r.scroller.setAttribute("tabIndex","-1"),r.wrapper=ji("div",[r.scrollbarFiller,r.gutterFiller,r.scroller],"CodeMirror"),xo&&8>bo&&(r.gutters.style.zIndex=-1,r.scroller.style.paddingRight=0),wo||go&&Ao||(r.scroller.draggable=!0),e&&(e.appendChild?e.appendChild(r.wrapper):e(r.wrapper)),r.viewFrom=r.viewTo=t.first,r.reportedViewFrom=r.reportedViewTo=t.first,r.view=[],r.renderedView=null,r.externalMeasured=null,r.viewOffset=0,r.lastWrapHeight=r.lastWrapWidth=0,r.updateLineNumbers=null,r.nativeBarWidth=r.barHeight=r.barWidth=0,r.scrollbarsClipped=!1,r.lineNumWidth=r.lineNumInnerWidth=r.lineNumChars=null,r.alignWidgets=!1,r.cachedCharWidth=r.cachedTextHeight=r.cachedPaddingH=null,
-r.maxLine=null,r.maxLineLength=0,r.maxLineChanged=!1,r.wheelDX=r.wheelDY=r.wheelStartX=r.wheelStartY=null,r.shift=!1,r.selForContextMenu=null,r.activeTouch=null,n.init(r)}function n(t){t.doc.mode=e.getMode(t.options,t.doc.modeOption),r(t)}function r(e){e.doc.iter(function(e){e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null)}),e.doc.frontier=e.doc.first,_e(e,100),e.state.modeGen++,e.curOp&&Dt(e)}function i(e){e.options.lineWrapping?(Ja(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(Za(e.display.wrapper,"CodeMirror-wrap"),h(e)),a(e),Dt(e),lt(e),setTimeout(function(){y(e)},100)}function o(e){var t=yt(e.display),n=e.options.lineWrapping,r=n&&Math.max(5,e.display.scroller.clientWidth/xt(e.display)-3);return function(i){if(kr(e.doc,i))return 0;var o=0;if(i.widgets)for(var a=0;a<i.widgets.length;a++)i.widgets[a].height&&(o+=i.widgets[a].height);return n?o+(Math.ceil(i.text.length/r)||1)*t:o+t}}function a(e){var t=e.doc,n=o(e);t.iter(function(e){var t=n(e);t!=e.height&&ei(e,t)})}function l(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),lt(e)}function s(e){c(e),Dt(e),setTimeout(function(){w(e)},20)}function c(e){var t=e.display.gutters,n=e.options.gutters;Ui(t);for(var r=0;r<n.length;++r){var i=n[r],o=t.appendChild(ji("div",null,"CodeMirror-gutter "+i));"CodeMirror-linenumbers"==i&&(e.display.lineGutter=o,o.style.width=(e.display.lineNumWidth||1)+"px")}t.style.display=r?"":"none",u(e)}function u(e){var t=e.display.gutters.offsetWidth;e.display.sizer.style.marginLeft=t+"px"}function f(e){if(0==e.height)return 0;for(var t,n=e.text.length,r=e;t=mr(r);){var i=t.find(0,!0);r=i.from.line,n+=i.from.ch-i.to.ch}for(r=e;t=gr(r);){var i=t.find(0,!0);n-=r.text.length-i.from.ch,r=i.to.line,n+=r.text.length-i.to.ch}return n}function h(e){var t=e.display,n=e.doc;t.maxLine=Zr(n,n.first),t.maxLineLength=f(t.maxLine),t.maxLineChanged=!0,n.iter(function(e){var n=f(e);n>t.maxLineLength&&(t.maxLineLength=n,t.maxLine=e)})}function d(e){var t=Pi(e.gutters,"CodeMirror-linenumbers");-1==t&&e.lineNumbers?e.gutters=e.gutters.concat(["CodeMirror-linenumbers"]):t>-1&&!e.lineNumbers&&(e.gutters=e.gutters.slice(0),e.gutters.splice(t,1))}function p(e){var t=e.display,n=t.gutters.offsetWidth,r=Math.round(e.doc.height+qe(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?n:0,docHeight:r,scrollHeight:r+Ye(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:n}}function m(e,t,n){this.cm=n;var r=this.vert=ji("div",[ji("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),i=this.horiz=ji("div",[ji("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");e(r),e(i),Ea(r,"scroll",function(){r.clientHeight&&t(r.scrollTop,"vertical")}),Ea(i,"scroll",function(){i.clientWidth&&t(i.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,xo&&8>bo&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")}function g(){}function v(t){t.display.scrollbars&&(t.display.scrollbars.clear(),t.display.scrollbars.addClass&&Za(t.display.wrapper,t.display.scrollbars.addClass)),t.display.scrollbars=new e.scrollbarModel[t.options.scrollbarStyle](function(e){t.display.wrapper.insertBefore(e,t.display.scrollbarFiller),Ea(e,"mousedown",function(){t.state.focused&&setTimeout(function(){t.display.input.focus()},0)}),e.setAttribute("cm-not-content","true")},function(e,n){"horizontal"==n?on(t,e):rn(t,e)},t),t.display.scrollbars.addClass&&Ja(t.display.wrapper,t.display.scrollbars.addClass)}function y(e,t){t||(t=p(e));var n=e.display.barWidth,r=e.display.barHeight;x(e,t);for(var i=0;4>i&&n!=e.display.barWidth||r!=e.display.barHeight;i++)n!=e.display.barWidth&&e.options.lineWrapping&&O(e),x(e,p(e)),n=e.display.barWidth,r=e.display.barHeight}function x(e,t){var n=e.display,r=n.scrollbars.update(t);n.sizer.style.paddingRight=(n.barWidth=r.right)+"px",n.sizer.style.paddingBottom=(n.barHeight=r.bottom)+"px",n.heightForcer.style.borderBottom=r.bottom+"px solid transparent",r.right&&r.bottom?(n.scrollbarFiller.style.display="block",n.scrollbarFiller.style.height=r.bottom+"px",n.scrollbarFiller.style.width=r.right+"px"):n.scrollbarFiller.style.display="",r.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(n.gutterFiller.style.display="block",n.gutterFiller.style.height=r.bottom+"px",n.gutterFiller.style.width=t.gutterWidth+"px"):n.gutterFiller.style.display=""}function b(e,t,n){var r=n&&null!=n.top?Math.max(0,n.top):e.scroller.scrollTop;r=Math.floor(r-Ue(e));var i=n&&null!=n.bottom?n.bottom:r+e.wrapper.clientHeight,o=ni(t,r),a=ni(t,i);if(n&&n.ensure){var l=n.ensure.from.line,s=n.ensure.to.line;o>l?(o=l,a=ni(t,ri(Zr(t,l))+e.wrapper.clientHeight)):Math.min(s,t.lastLine())>=a&&(o=ni(t,ri(Zr(t,s))-e.wrapper.clientHeight),a=s)}return{from:o,to:Math.max(a,o+1)}}function w(e){var t=e.display,n=t.view;if(t.alignWidgets||t.gutters.firstChild&&e.options.fixedGutter){for(var r=C(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,o=r+"px",a=0;a<n.length;a++)if(!n[a].hidden){e.options.fixedGutter&&n[a].gutter&&(n[a].gutter.style.left=o);var l=n[a].alignable;if(l)for(var s=0;s<l.length;s++)l[s].style.left=o}e.options.fixedGutter&&(t.gutters.style.left=r+i+"px")}}function k(e){if(!e.options.lineNumbers)return!1;var t=e.doc,n=S(e.options,t.first+t.size-1),r=e.display;if(n.length!=r.lineNumChars){var i=r.measure.appendChild(ji("div",[ji("div",n)],"CodeMirror-linenumber CodeMirror-gutter-elt")),o=i.firstChild.offsetWidth,a=i.offsetWidth-o;return r.lineGutter.style.width="",r.lineNumInnerWidth=Math.max(o,r.lineGutter.offsetWidth-a)+1,r.lineNumWidth=r.lineNumInnerWidth+a,r.lineNumChars=r.lineNumInnerWidth?n.length:-1,r.lineGutter.style.width=r.lineNumWidth+"px",u(e),!0}return!1}function S(e,t){return String(e.lineNumberFormatter(t+e.firstLineNumber))}function C(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function L(e,t,n){var r=e.display;this.viewport=t,this.visible=b(r,e.doc,t),this.editorIsHidden=!r.wrapper.offsetWidth,this.wrapperHeight=r.wrapper.clientHeight,this.wrapperWidth=r.wrapper.clientWidth,this.oldDisplayWidth=$e(e),this.force=n,this.dims=P(e),this.events=[]}function T(e){var t=e.display;!t.scrollbarsClipped&&t.scroller.offsetWidth&&(t.nativeBarWidth=t.scroller.offsetWidth-t.scroller.clientWidth,t.heightForcer.style.height=Ye(e)+"px",t.sizer.style.marginBottom=-t.nativeBarWidth+"px",t.sizer.style.borderRightWidth=Ye(e)+"px",t.scrollbarsClipped=!0)}function M(e,t){var n=e.display,r=e.doc;if(t.editorIsHidden)return Wt(e),!1;if(!t.force&&t.visible.from>=n.viewFrom&&t.visible.to<=n.viewTo&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo)&&n.renderedView==n.view&&0==zt(e))return!1;k(e)&&(Wt(e),t.dims=P(e));var i=r.first+r.size,o=Math.max(t.visible.from-e.options.viewportMargin,r.first),a=Math.min(i,t.visible.to+e.options.viewportMargin);n.viewFrom<o&&o-n.viewFrom<20&&(o=Math.max(r.first,n.viewFrom)),n.viewTo>a&&n.viewTo-a<20&&(a=Math.min(i,n.viewTo)),Wo&&(o=br(e.doc,o),a=wr(e.doc,a));var l=o!=n.viewFrom||a!=n.viewTo||n.lastWrapHeight!=t.wrapperHeight||n.lastWrapWidth!=t.wrapperWidth;Ft(e,o,a),n.viewOffset=ri(Zr(e.doc,n.viewFrom)),e.display.mover.style.top=n.viewOffset+"px";var s=zt(e);if(!l&&0==s&&!t.force&&n.renderedView==n.view&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo))return!1;var c=Gi();return s>4&&(n.lineDiv.style.display="none"),R(e,n.updateLineNumbers,t.dims),s>4&&(n.lineDiv.style.display=""),n.renderedView=n.view,c&&Gi()!=c&&c.offsetHeight&&c.focus(),Ui(n.cursorDiv),Ui(n.selectionDiv),n.gutters.style.height=n.sizer.style.minHeight=0,l&&(n.lastWrapHeight=t.wrapperHeight,n.lastWrapWidth=t.wrapperWidth,_e(e,400)),n.updateLineNumbers=null,!0}function N(e,t){for(var n=t.viewport,r=!0;(r&&e.options.lineWrapping&&t.oldDisplayWidth!=$e(e)||(n&&null!=n.top&&(n={top:Math.min(e.doc.height+qe(e.display)-Ve(e),n.top)}),t.visible=b(e.display,e.doc,n),!(t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)))&&M(e,t);r=!1){O(e);var i=p(e);Re(e),y(e,i),E(e,i)}t.signal(e,"update",e),e.display.viewFrom==e.display.reportedViewFrom&&e.display.viewTo==e.display.reportedViewTo||(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function A(e,t){var n=new L(e,t);if(M(e,n)){O(e),N(e,n);var r=p(e);Re(e),y(e,r),E(e,r),n.finish()}}function E(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=t.docHeight+e.display.barHeight+Ye(e)+"px"}function O(e){for(var t=e.display,n=t.lineDiv.offsetTop,r=0;r<t.view.length;r++){var i,o=t.view[r];if(!o.hidden){if(xo&&8>bo){var a=o.node.offsetTop+o.node.offsetHeight;i=a-n,n=a}else{var l=o.node.getBoundingClientRect();i=l.bottom-l.top}var s=o.line.height-i;if(2>i&&(i=yt(t)),(s>.001||-.001>s)&&(ei(o.line,i),I(o.line),o.rest))for(var c=0;c<o.rest.length;c++)I(o.rest[c])}}}function I(e){if(e.widgets)for(var t=0;t<e.widgets.length;++t)e.widgets[t].height=e.widgets[t].node.parentNode.offsetHeight}function P(e){for(var t=e.display,n={},r={},i=t.gutters.clientLeft,o=t.gutters.firstChild,a=0;o;o=o.nextSibling,++a)n[e.options.gutters[a]]=o.offsetLeft+o.clientLeft+i,r[e.options.gutters[a]]=o.clientWidth;return{fixedPos:C(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:n,gutterWidth:r,wrapperWidth:t.wrapper.clientWidth}}function R(e,t,n){function r(t){var n=t.nextSibling;return wo&&Eo&&e.display.currentWheelTarget==t?t.style.display="none":t.parentNode.removeChild(t),n}for(var i=e.display,o=e.options.lineNumbers,a=i.lineDiv,l=a.firstChild,s=i.view,c=i.viewFrom,u=0;u<s.length;u++){var f=s[u];if(f.hidden);else if(f.node&&f.node.parentNode==a){for(;l!=f.node;)l=r(l);var h=o&&null!=t&&c>=t&&f.lineNumber;f.changes&&(Pi(f.changes,"gutter")>-1&&(h=!1),D(e,f,c,n)),h&&(Ui(f.lineNumber),f.lineNumber.appendChild(document.createTextNode(S(e.options,c)))),l=f.node.nextSibling}else{var d=U(e,f,c,n);a.insertBefore(d,l)}c+=f.size}for(;l;)l=r(l)}function D(e,t,n,r){for(var i=0;i<t.changes.length;i++){var o=t.changes[i];"text"==o?_(e,t):"gutter"==o?z(e,t,n,r):"class"==o?F(t):"widget"==o&&j(e,t,r)}t.changes=null}function H(e){return e.node==e.text&&(e.node=ji("div",null,null,"position: relative"),e.text.parentNode&&e.text.parentNode.replaceChild(e.node,e.text),e.node.appendChild(e.text),xo&&8>bo&&(e.node.style.zIndex=2)),e.node}function W(e){var t=e.bgClass?e.bgClass+" "+(e.line.bgClass||""):e.line.bgClass;if(t&&(t+=" CodeMirror-linebackground"),e.background)t?e.background.className=t:(e.background.parentNode.removeChild(e.background),e.background=null);else if(t){var n=H(e);e.background=n.insertBefore(ji("div",null,t),n.firstChild)}}function B(e,t){var n=e.display.externalMeasured;return n&&n.line==t.line?(e.display.externalMeasured=null,t.measure=n.measure,n.built):Br(e,t)}function _(e,t){var n=t.text.className,r=B(e,t);t.text==t.node&&(t.node=r.pre),t.text.parentNode.replaceChild(r.pre,t.text),t.text=r.pre,r.bgClass!=t.bgClass||r.textClass!=t.textClass?(t.bgClass=r.bgClass,t.textClass=r.textClass,F(t)):n&&(t.text.className=n)}function F(e){W(e),e.line.wrapClass?H(e).className=e.line.wrapClass:e.node!=e.text&&(e.node.className="");var t=e.textClass?e.textClass+" "+(e.line.textClass||""):e.line.textClass;e.text.className=t||""}function z(e,t,n,r){if(t.gutter&&(t.node.removeChild(t.gutter),t.gutter=null),t.gutterBackground&&(t.node.removeChild(t.gutterBackground),t.gutterBackground=null),t.line.gutterClass){var i=H(t);t.gutterBackground=ji("div",null,"CodeMirror-gutter-background "+t.line.gutterClass,"left: "+(e.options.fixedGutter?r.fixedPos:-r.gutterTotalWidth)+"px; width: "+r.gutterTotalWidth+"px"),i.insertBefore(t.gutterBackground,t.text)}var o=t.line.gutterMarkers;if(e.options.lineNumbers||o){var i=H(t),a=t.gutter=ji("div",null,"CodeMirror-gutter-wrapper","left: "+(e.options.fixedGutter?r.fixedPos:-r.gutterTotalWidth)+"px");if(e.display.input.setUneditable(a),i.insertBefore(a,t.text),t.line.gutterClass&&(a.className+=" "+t.line.gutterClass),!e.options.lineNumbers||o&&o["CodeMirror-linenumbers"]||(t.lineNumber=a.appendChild(ji("div",S(e.options,n),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+r.gutterLeft["CodeMirror-linenumbers"]+"px; width: "+e.display.lineNumInnerWidth+"px"))),o)for(var l=0;l<e.options.gutters.length;++l){var s=e.options.gutters[l],c=o.hasOwnProperty(s)&&o[s];c&&a.appendChild(ji("div",[c],"CodeMirror-gutter-elt","left: "+r.gutterLeft[s]+"px; width: "+r.gutterWidth[s]+"px"))}}}function j(e,t,n){t.alignable&&(t.alignable=null);for(var r,i=t.node.firstChild;i;i=r){var r=i.nextSibling;"CodeMirror-linewidget"==i.className&&t.node.removeChild(i)}q(e,t,n)}function U(e,t,n,r){var i=B(e,t);return t.text=t.node=i.pre,i.bgClass&&(t.bgClass=i.bgClass),i.textClass&&(t.textClass=i.textClass),F(t),z(e,t,n,r),q(e,t,r),t.node}function q(e,t,n){if(G(e,t.line,t,n,!0),t.rest)for(var r=0;r<t.rest.length;r++)G(e,t.rest[r],t,n,!1)}function G(e,t,n,r,i){if(t.widgets)for(var o=H(n),a=0,l=t.widgets;a<l.length;++a){var s=l[a],c=ji("div",[s.node],"CodeMirror-linewidget");s.handleMouseEvents||c.setAttribute("cm-ignore-events","true"),Y(s,c,n,r),e.display.input.setUneditable(c),i&&s.above?o.insertBefore(c,n.gutter||n.text):o.appendChild(c),Ci(s,"redraw")}}function Y(e,t,n,r){if(e.noHScroll){(n.alignable||(n.alignable=[])).push(t);var i=r.wrapperWidth;t.style.left=r.fixedPos+"px",e.coverGutter||(i-=r.gutterTotalWidth,t.style.paddingLeft=r.gutterTotalWidth+"px"),t.style.width=i+"px"}e.coverGutter&&(t.style.zIndex=5,t.style.position="relative",e.noHScroll||(t.style.marginLeft=-r.gutterTotalWidth+"px"))}function $(e){return Bo(e.line,e.ch)}function V(e,t){return _o(e,t)<0?t:e}function K(e,t){return _o(e,t)<0?e:t}function X(e){e.state.focused||(e.display.input.focus(),vn(e))}function Z(e,t,n,r,i){var o=e.doc;e.display.shift=!1,r||(r=o.sel);var a=e.state.pasteIncoming||"paste"==i,l=o.splitLines(t),s=null;if(a&&r.ranges.length>1)if(Fo&&Fo.text.join("\n")==t){if(r.ranges.length%Fo.text.length==0){s=[];for(var c=0;c<Fo.text.length;c++)s.push(o.splitLines(Fo.text[c]))}}else l.length==r.ranges.length&&(s=Ri(l,function(e){return[e]}));for(var c=r.ranges.length-1;c>=0;c--){var u=r.ranges[c],f=u.from(),h=u.to();u.empty()&&(n&&n>0?f=Bo(f.line,f.ch-n):e.state.overwrite&&!a?h=Bo(h.line,Math.min(Zr(o,h.line).text.length,h.ch+Ii(l).length)):Fo&&Fo.lineWise&&Fo.text.join("\n")==t&&(f=h=Bo(f.line,0)));var d=e.curOp.updateInput,p={from:f,to:h,text:s?s[c%s.length]:l,origin:i||(a?"paste":e.state.cutIncoming?"cut":"+input")};Tn(e.doc,p),Ci(e,"inputRead",e,p)}t&&!a&&Q(e,t),Bn(e),e.curOp.updateInput=d,e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=!1}function J(e,t){var n=e.clipboardData&&e.clipboardData.getData("text/plain");return n?(e.preventDefault(),t.isReadOnly()||t.options.disableInput||At(t,function(){Z(t,n,0,null,"paste")}),!0):void 0}function Q(e,t){if(e.options.electricChars&&e.options.smartIndent)for(var n=e.doc.sel,r=n.ranges.length-1;r>=0;r--){var i=n.ranges[r];if(!(i.head.ch>100||r&&n.ranges[r-1].head.line==i.head.line)){var o=e.getModeAt(i.head),a=!1;if(o.electricChars){for(var l=0;l<o.electricChars.length;l++)if(t.indexOf(o.electricChars.charAt(l))>-1){a=Fn(e,i.head.line,"smart");break}}else o.electricInput&&o.electricInput.test(Zr(e.doc,i.head.line).text.slice(0,i.head.ch))&&(a=Fn(e,i.head.line,"smart"));a&&Ci(e,"electricInput",e,i.head.line)}}}function ee(e){for(var t=[],n=[],r=0;r<e.doc.sel.ranges.length;r++){var i=e.doc.sel.ranges[r].head.line,o={anchor:Bo(i,0),head:Bo(i+1,0)};n.push(o),t.push(e.getRange(o.anchor,o.head))}return{text:t,ranges:n}}function te(e){e.setAttribute("autocorrect","off"),e.setAttribute("autocapitalize","off"),e.setAttribute("spellcheck","false")}function ne(e){this.cm=e,this.prevInput="",this.pollingFast=!1,this.polling=new Ei,this.inaccurateSelection=!1,this.hasSelection=!1,this.composing=null}function re(){var e=ji("textarea",null,null,"position: absolute; padding: 0; width: 1px; height: 1em; outline: none"),t=ji("div",[e],null,"overflow: hidden; position: relative; width: 3px; height: 0px;");return wo?e.style.width="1000px":e.setAttribute("wrap","off"),No&&(e.style.border="1px solid black"),te(e),t}function ie(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new Ei,this.gracePeriod=!1}function oe(e,t){var n=Qe(e,t.line);if(!n||n.hidden)return null;var r=Zr(e.doc,t.line),i=Xe(n,r,t.line),o=ii(r),a="left";if(o){var l=co(o,t.ch);a=l%2?"right":"left"}var s=nt(i.map,t.ch,a);return s.offset="right"==s.collapse?s.end:s.start,s}function ae(e,t){return t&&(e.bad=!0),e}function le(e,t,n){var r;if(t==e.display.lineDiv){if(r=e.display.lineDiv.childNodes[n],!r)return ae(e.clipPos(Bo(e.display.viewTo-1)),!0);t=null,n=0}else for(r=t;;r=r.parentNode){if(!r||r==e.display.lineDiv)return null;if(r.parentNode&&r.parentNode==e.display.lineDiv)break}for(var i=0;i<e.display.view.length;i++){var o=e.display.view[i];if(o.node==r)return se(o,t,n)}}function se(e,t,n){function r(t,n,r){for(var i=-1;i<(u?u.length:0);i++)for(var o=0>i?c.map:u[i],a=0;a<o.length;a+=3){var l=o[a+2];if(l==t||l==n){var s=ti(0>i?e.line:e.rest[i]),f=o[a]+r;return(0>r||l!=t)&&(f=o[a+(r?1:0)]),Bo(s,f)}}}var i=e.text.firstChild,o=!1;if(!t||!Va(i,t))return ae(Bo(ti(e.line),0),!0);if(t==i&&(o=!0,t=i.childNodes[n],n=0,!t)){var a=e.rest?Ii(e.rest):e.line;return ae(Bo(ti(a),a.text.length),o)}var l=3==t.nodeType?t:null,s=t;for(l||1!=t.childNodes.length||3!=t.firstChild.nodeType||(l=t.firstChild,n&&(n=l.nodeValue.length));s.parentNode!=i;)s=s.parentNode;var c=e.measure,u=c.maps,f=r(l,s,n);if(f)return ae(f,o);for(var h=s.nextSibling,d=l?l.nodeValue.length-n:0;h;h=h.nextSibling){if(f=r(h,h.firstChild,0))return ae(Bo(f.line,f.ch-d),o);d+=h.textContent.length}for(var p=s.previousSibling,d=n;p;p=p.previousSibling){if(f=r(p,p.firstChild,-1))return ae(Bo(f.line,f.ch+d),o);d+=h.textContent.length}}function ce(e,t,n,r,i){function o(e){return function(t){return t.id==e}}function a(t){if(1==t.nodeType){var n=t.getAttribute("cm-text");if(null!=n)return""==n&&(n=t.textContent.replace(/\u200b/g,"")),void(l+=n);var u,f=t.getAttribute("cm-marker");if(f){var h=e.findMarks(Bo(r,0),Bo(i+1,0),o(+f));return void(h.length&&(u=h[0].find())&&(l+=Jr(e.doc,u.from,u.to).join(c)))}if("false"==t.getAttribute("contenteditable"))return;for(var d=0;d<t.childNodes.length;d++)a(t.childNodes[d]);/^(pre|div|p)$/i.test(t.nodeName)&&(s=!0)}else if(3==t.nodeType){var p=t.nodeValue;if(!p)return;s&&(l+=c,s=!1),l+=p}}for(var l="",s=!1,c=e.doc.lineSeparator();a(t),t!=n;)t=t.nextSibling;return l}function ue(e,t){this.ranges=e,this.primIndex=t}function fe(e,t){this.anchor=e,this.head=t}function he(e,t){var n=e[t];e.sort(function(e,t){return _o(e.from(),t.from())}),t=Pi(e,n);for(var r=1;r<e.length;r++){var i=e[r],o=e[r-1];if(_o(o.to(),i.from())>=0){var a=K(o.from(),i.from()),l=V(o.to(),i.to()),s=o.empty()?i.from()==i.head:o.from()==o.head;t>=r&&--t,e.splice(--r,2,new fe(s?l:a,s?a:l))}}return new ue(e,t)}function de(e,t){return new ue([new fe(e,t||e)],0)}function pe(e,t){return Math.max(e.first,Math.min(t,e.first+e.size-1))}function me(e,t){if(t.line<e.first)return Bo(e.first,0);var n=e.first+e.size-1;return t.line>n?Bo(n,Zr(e,n).text.length):ge(t,Zr(e,t.line).text.length)}function ge(e,t){var n=e.ch;return null==n||n>t?Bo(e.line,t):0>n?Bo(e.line,0):e}function ve(e,t){return t>=e.first&&t<e.first+e.size}function ye(e,t){for(var n=[],r=0;r<t.length;r++)n[r]=me(e,t[r]);return n}function xe(e,t,n,r){if(e.cm&&e.cm.display.shift||e.extend){var i=t.anchor;if(r){var o=_o(n,i)<0;o!=_o(r,i)<0?(i=n,n=r):o!=_o(n,r)<0&&(n=r)}return new fe(i,n)}return new fe(r||n,n)}function be(e,t,n,r){Te(e,new ue([xe(e,e.sel.primary(),t,n)],0),r)}function we(e,t,n){for(var r=[],i=0;i<e.sel.ranges.length;i++)r[i]=xe(e,e.sel.ranges[i],t[i],null);var o=he(r,e.sel.primIndex);Te(e,o,n)}function ke(e,t,n,r){var i=e.sel.ranges.slice(0);i[t]=n,Te(e,he(i,e.sel.primIndex),r)}function Se(e,t,n,r){Te(e,de(t,n),r)}function Ce(e,t,n){var r={ranges:t.ranges,update:function(t){this.ranges=[];for(var n=0;n<t.length;n++)this.ranges[n]=new fe(me(e,t[n].anchor),me(e,t[n].head))},origin:n&&n.origin};return Pa(e,"beforeSelectionChange",e,r),e.cm&&Pa(e.cm,"beforeSelectionChange",e.cm,r),r.ranges!=t.ranges?he(r.ranges,r.ranges.length-1):t}function Le(e,t,n){var r=e.history.done,i=Ii(r);i&&i.ranges?(r[r.length-1]=t,Me(e,t,n)):Te(e,t,n)}function Te(e,t,n){Me(e,t,n),fi(e,e.sel,e.cm?e.cm.curOp.id:NaN,n)}function Me(e,t,n){(Ni(e,"beforeSelectionChange")||e.cm&&Ni(e.cm,"beforeSelectionChange"))&&(t=Ce(e,t,n));var r=n&&n.bias||(_o(t.primary().head,e.sel.primary().head)<0?-1:1);Ne(e,Ee(e,t,r,!0)),n&&n.scroll===!1||!e.cm||Bn(e.cm)}function Ne(e,t){t.equals(e.sel)||(e.sel=t,e.cm&&(e.cm.curOp.updateInput=e.cm.curOp.selectionChanged=!0,Mi(e.cm)),Ci(e,"cursorActivity",e))}function Ae(e){Ne(e,Ee(e,e.sel,null,!1),Wa)}function Ee(e,t,n,r){for(var i,o=0;o<t.ranges.length;o++){var a=t.ranges[o],l=t.ranges.length==e.sel.ranges.length&&e.sel.ranges[o],s=Ie(e,a.anchor,l&&l.anchor,n,r),c=Ie(e,a.head,l&&l.head,n,r);(i||s!=a.anchor||c!=a.head)&&(i||(i=t.ranges.slice(0,o)),i[o]=new fe(s,c))}return i?he(i,t.primIndex):t}function Oe(e,t,n,r,i){var o=Zr(e,t.line);if(o.markedSpans)for(var a=0;a<o.markedSpans.length;++a){var l=o.markedSpans[a],s=l.marker;if((null==l.from||(s.inclusiveLeft?l.from<=t.ch:l.from<t.ch))&&(null==l.to||(s.inclusiveRight?l.to>=t.ch:l.to>t.ch))){if(i&&(Pa(s,"beforeCursorEnter"),s.explicitlyCleared)){if(o.markedSpans){--a;continue}break}if(!s.atomic)continue;if(n){var c,u=s.find(0>r?1:-1);if((0>r?s.inclusiveRight:s.inclusiveLeft)&&(u=Pe(e,u,-r,u&&u.line==t.line?o:null)),u&&u.line==t.line&&(c=_o(u,n))&&(0>r?0>c:c>0))return Oe(e,u,t,r,i)}var f=s.find(0>r?-1:1);return(0>r?s.inclusiveLeft:s.inclusiveRight)&&(f=Pe(e,f,r,f.line==t.line?o:null)),f?Oe(e,f,t,r,i):null}}return t}function Ie(e,t,n,r,i){var o=r||1,a=Oe(e,t,n,o,i)||!i&&Oe(e,t,n,o,!0)||Oe(e,t,n,-o,i)||!i&&Oe(e,t,n,-o,!0);return a?a:(e.cantEdit=!0,Bo(e.first,0))}function Pe(e,t,n,r){return 0>n&&0==t.ch?t.line>e.first?me(e,Bo(t.line-1)):null:n>0&&t.ch==(r||Zr(e,t.line)).text.length?t.line<e.first+e.size-1?Bo(t.line+1,0):null:new Bo(t.line,t.ch+n)}function Re(e){e.display.input.showSelection(e.display.input.prepareSelection())}function De(e,t){for(var n=e.doc,r={},i=r.cursors=document.createDocumentFragment(),o=r.selection=document.createDocumentFragment(),a=0;a<n.sel.ranges.length;a++)if(t!==!1||a!=n.sel.primIndex){var l=n.sel.ranges[a];if(!(l.from().line>=e.display.viewTo||l.to().line<e.display.viewFrom)){var s=l.empty();(s||e.options.showCursorWhenSelecting)&&He(e,l.head,i),s||We(e,l,o)}}return r}function He(e,t,n){var r=dt(e,t,"div",null,null,!e.options.singleCursorHeightPerLine),i=n.appendChild(ji("div"," ","CodeMirror-cursor"));if(i.style.left=r.left+"px",i.style.top=r.top+"px",i.style.height=Math.max(0,r.bottom-r.top)*e.options.cursorHeight+"px",r.other){var o=n.appendChild(ji("div"," ","CodeMirror-cursor CodeMirror-secondarycursor"));o.style.display="",o.style.left=r.other.left+"px",o.style.top=r.other.top+"px",o.style.height=.85*(r.other.bottom-r.other.top)+"px"}}function We(e,t,n){function r(e,t,n,r){0>t&&(t=0),t=Math.round(t),r=Math.round(r),l.appendChild(ji("div",null,"CodeMirror-selected","position: absolute; left: "+e+"px; top: "+t+"px; width: "+(null==n?u-e:n)+"px; height: "+(r-t)+"px"))}function i(t,n,i){function o(n,r){return ht(e,Bo(t,n),"div",f,r)}var l,s,f=Zr(a,t),h=f.text.length;return eo(ii(f),n||0,null==i?h:i,function(e,t,a){var f,d,p,m=o(e,"left");if(e==t)f=m,d=p=m.left;else{if(f=o(t-1,"right"),"rtl"==a){var g=m;m=f,f=g}d=m.left,p=f.right}null==n&&0==e&&(d=c),f.top-m.top>3&&(r(d,m.top,null,m.bottom),d=c,m.bottom<f.top&&r(d,m.bottom,null,f.top)),null==i&&t==h&&(p=u),(!l||m.top<l.top||m.top==l.top&&m.left<l.left)&&(l=m),(!s||f.bottom>s.bottom||f.bottom==s.bottom&&f.right>s.right)&&(s=f),c+1>d&&(d=c),r(d,f.top,p-d,f.bottom)}),{start:l,end:s}}var o=e.display,a=e.doc,l=document.createDocumentFragment(),s=Ge(e.display),c=s.left,u=Math.max(o.sizerWidth,$e(e)-o.sizer.offsetLeft)-s.right,f=t.from(),h=t.to();if(f.line==h.line)i(f.line,f.ch,h.ch);else{var d=Zr(a,f.line),p=Zr(a,h.line),m=yr(d)==yr(p),g=i(f.line,f.ch,m?d.text.length+1:null).end,v=i(h.line,m?0:null,h.ch).start;m&&(g.top<v.top-2?(r(g.right,g.top,null,g.bottom),r(c,v.top,v.left,v.bottom)):r(g.right,g.top,v.left-g.right,g.bottom)),g.bottom<v.top&&r(c,g.bottom,null,v.top)}n.appendChild(l)}function Be(e){if(e.state.focused){var t=e.display;clearInterval(t.blinker);var n=!0;t.cursorDiv.style.visibility="",e.options.cursorBlinkRate>0?t.blinker=setInterval(function(){t.cursorDiv.style.visibility=(n=!n)?"":"hidden"},e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}}function _e(e,t){e.doc.mode.startState&&e.doc.frontier<e.display.viewTo&&e.state.highlight.set(t,Bi(Fe,e))}function Fe(e){var t=e.doc;if(t.frontier<t.first&&(t.frontier=t.first),!(t.frontier>=e.display.viewTo)){var n=+new Date+e.options.workTime,r=sa(t.mode,je(e,t.frontier)),i=[];t.iter(t.frontier,Math.min(t.first+t.size,e.display.viewTo+500),function(o){if(t.frontier>=e.display.viewFrom){var a=o.styles,l=o.text.length>e.options.maxHighlightLength,s=Rr(e,o,l?sa(t.mode,r):r,!0);o.styles=s.styles;var c=o.styleClasses,u=s.classes;u?o.styleClasses=u:c&&(o.styleClasses=null);for(var f=!a||a.length!=o.styles.length||c!=u&&(!c||!u||c.bgClass!=u.bgClass||c.textClass!=u.textClass),h=0;!f&&h<a.length;++h)f=a[h]!=o.styles[h];f&&i.push(t.frontier),o.stateAfter=l?r:sa(t.mode,r)}else o.text.length<=e.options.maxHighlightLength&&Hr(e,o.text,r),o.stateAfter=t.frontier%5==0?sa(t.mode,r):null;return++t.frontier,+new Date>n?(_e(e,e.options.workDelay),!0):void 0}),i.length&&At(e,function(){for(var t=0;t<i.length;t++)Ht(e,i[t],"text")})}}function ze(e,t,n){for(var r,i,o=e.doc,a=n?-1:t-(e.doc.mode.innerMode?1e3:100),l=t;l>a;--l){if(l<=o.first)return o.first;var s=Zr(o,l-1);if(s.stateAfter&&(!n||l<=o.frontier))return l;var c=Fa(s.text,null,e.options.tabSize);(null==i||r>c)&&(i=l-1,r=c)}return i}function je(e,t,n){var r=e.doc,i=e.display;if(!r.mode.startState)return!0;var o=ze(e,t,n),a=o>r.first&&Zr(r,o-1).stateAfter;return a=a?sa(r.mode,a):ca(r.mode),r.iter(o,t,function(n){Hr(e,n.text,a);var l=o==t-1||o%5==0||o>=i.viewFrom&&o<i.viewTo;n.stateAfter=l?sa(r.mode,a):null,++o}),n&&(r.frontier=o),a}function Ue(e){return e.lineSpace.offsetTop}function qe(e){return e.mover.offsetHeight-e.lineSpace.offsetHeight}function Ge(e){if(e.cachedPaddingH)return e.cachedPaddingH;var t=qi(e.measure,ji("pre","x")),n=window.getComputedStyle?window.getComputedStyle(t):t.currentStyle,r={left:parseInt(n.paddingLeft),right:parseInt(n.paddingRight)};return isNaN(r.left)||isNaN(r.right)||(e.cachedPaddingH=r),r}function Ye(e){return Da-e.display.nativeBarWidth}function $e(e){return e.display.scroller.clientWidth-Ye(e)-e.display.barWidth}function Ve(e){return e.display.scroller.clientHeight-Ye(e)-e.display.barHeight}function Ke(e,t,n){var r=e.options.lineWrapping,i=r&&$e(e);if(!t.measure.heights||r&&t.measure.width!=i){var o=t.measure.heights=[];if(r){t.measure.width=i;for(var a=t.text.firstChild.getClientRects(),l=0;l<a.length-1;l++){var s=a[l],c=a[l+1];Math.abs(s.bottom-c.bottom)>2&&o.push((s.bottom+c.top)/2-n.top)}}o.push(n.bottom-n.top)}}function Xe(e,t,n){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};for(var r=0;r<e.rest.length;r++)if(e.rest[r]==t)return{map:e.measure.maps[r],cache:e.measure.caches[r]};for(var r=0;r<e.rest.length;r++)if(ti(e.rest[r])>n)return{map:e.measure.maps[r],cache:e.measure.caches[r],before:!0}}function Ze(e,t){t=yr(t);var n=ti(t),r=e.display.externalMeasured=new Pt(e.doc,t,n);r.lineN=n;var i=r.built=Br(e,r);return r.text=i.pre,qi(e.display.lineMeasure,i.pre),r}function Je(e,t,n,r){return tt(e,et(e,t),n,r)}function Qe(e,t){if(t>=e.display.viewFrom&&t<e.display.viewTo)return e.display.view[Bt(e,t)];var n=e.display.externalMeasured;return n&&t>=n.lineN&&t<n.lineN+n.size?n:void 0}function et(e,t){var n=ti(t),r=Qe(e,n);r&&!r.text?r=null:r&&r.changes&&(D(e,r,n,P(e)),e.curOp.forceUpdate=!0),r||(r=Ze(e,t));var i=Xe(r,t,n);return{line:t,view:r,rect:null,map:i.map,cache:i.cache,before:i.before,hasHeights:!1}}function tt(e,t,n,r,i){t.before&&(n=-1);var o,a=n+(r||"");return t.cache.hasOwnProperty(a)?o=t.cache[a]:(t.rect||(t.rect=t.view.text.getBoundingClientRect()),t.hasHeights||(Ke(e,t.view,t.rect),t.hasHeights=!0),o=rt(e,t,n,r),o.bogus||(t.cache[a]=o)),{left:o.left,right:o.right,top:i?o.rtop:o.top,bottom:i?o.rbottom:o.bottom}}function nt(e,t,n){for(var r,i,o,a,l=0;l<e.length;l+=3){var s=e[l],c=e[l+1];if(s>t?(i=0,o=1,a="left"):c>t?(i=t-s,o=i+1):(l==e.length-3||t==c&&e[l+3]>t)&&(o=c-s,i=o-1,t>=c&&(a="right")),null!=i){if(r=e[l+2],s==c&&n==(r.insertLeft?"left":"right")&&(a=n),"left"==n&&0==i)for(;l&&e[l-2]==e[l-3]&&e[l-1].insertLeft;)r=e[(l-=3)+2],a="left";if("right"==n&&i==c-s)for(;l<e.length-3&&e[l+3]==e[l+4]&&!e[l+5].insertLeft;)r=e[(l+=3)+2],a="right";break}}return{node:r,start:i,end:o,collapse:a,coverStart:s,coverEnd:c}}function rt(e,t,n,r){var i,o=nt(t.map,n,r),a=o.node,l=o.start,s=o.end,c=o.collapse;if(3==a.nodeType){for(var u=0;4>u;u++){for(;l&&zi(t.line.text.charAt(o.coverStart+l));)--l;for(;o.coverStart+s<o.coverEnd&&zi(t.line.text.charAt(o.coverStart+s));)++s;if(xo&&9>bo&&0==l&&s==o.coverEnd-o.coverStart)i=a.parentNode.getBoundingClientRect();else if(xo&&e.options.lineWrapping){var f=qa(a,l,s).getClientRects();i=f.length?f["right"==r?f.length-1:0]:qo}else i=qa(a,l,s).getBoundingClientRect()||qo;if(i.left||i.right||0==l)break;s=l,l-=1,c="right"}xo&&11>bo&&(i=it(e.display.measure,i))}else{l>0&&(c=r="right");var f;i=e.options.lineWrapping&&(f=a.getClientRects()).length>1?f["right"==r?f.length-1:0]:a.getBoundingClientRect()}if(xo&&9>bo&&!l&&(!i||!i.left&&!i.right)){var h=a.parentNode.getClientRects()[0];i=h?{left:h.left,right:h.left+xt(e.display),top:h.top,bottom:h.bottom}:qo}for(var d=i.top-t.rect.top,p=i.bottom-t.rect.top,m=(d+p)/2,g=t.view.measure.heights,u=0;u<g.length-1&&!(m<g[u]);u++);var v=u?g[u-1]:0,y=g[u],x={left:("right"==c?i.right:i.left)-t.rect.left,right:("left"==c?i.left:i.right)-t.rect.left,top:v,bottom:y};return i.left||i.right||(x.bogus=!0),e.options.singleCursorHeightPerLine||(x.rtop=d,x.rbottom=p),x}function it(e,t){if(!window.screen||null==screen.logicalXDPI||screen.logicalXDPI==screen.deviceXDPI||!Qi(e))return t;var n=screen.logicalXDPI/screen.deviceXDPI,r=screen.logicalYDPI/screen.deviceYDPI;return{left:t.left*n,right:t.right*n,top:t.top*r,bottom:t.bottom*r}}function ot(e){if(e.measure&&(e.measure.cache={},e.measure.heights=null,e.rest))for(var t=0;t<e.rest.length;t++)e.measure.caches[t]={}}function at(e){e.display.externalMeasure=null,Ui(e.display.lineMeasure);for(var t=0;t<e.display.view.length;t++)ot(e.display.view[t])}function lt(e){at(e),e.display.cachedCharWidth=e.display.cachedTextHeight=e.display.cachedPaddingH=null,e.options.lineWrapping||(e.display.maxLineChanged=!0),e.display.lineNumChars=null}function st(){return window.pageXOffset||(document.documentElement||document.body).scrollLeft}function ct(){return window.pageYOffset||(document.documentElement||document.body).scrollTop}function ut(e,t,n,r){if(t.widgets)for(var i=0;i<t.widgets.length;++i)if(t.widgets[i].above){var o=Lr(t.widgets[i]);n.top+=o,n.bottom+=o}if("line"==r)return n;r||(r="local");var a=ri(t);if("local"==r?a+=Ue(e.display):a-=e.display.viewOffset,"page"==r||"window"==r){var l=e.display.lineSpace.getBoundingClientRect();a+=l.top+("window"==r?0:ct());var s=l.left+("window"==r?0:st());n.left+=s,n.right+=s}return n.top+=a,n.bottom+=a,n}function ft(e,t,n){if("div"==n)return t;var r=t.left,i=t.top;if("page"==n)r-=st(),
-i-=ct();else if("local"==n||!n){var o=e.display.sizer.getBoundingClientRect();r+=o.left,i+=o.top}var a=e.display.lineSpace.getBoundingClientRect();return{left:r-a.left,top:i-a.top}}function ht(e,t,n,r,i){return r||(r=Zr(e.doc,t.line)),ut(e,r,Je(e,r,t.ch,i),n)}function dt(e,t,n,r,i,o){function a(t,a){var l=tt(e,i,t,a?"right":"left",o);return a?l.left=l.right:l.right=l.left,ut(e,r,l,n)}function l(e,t){var n=s[t],r=n.level%2;return e==to(n)&&t&&n.level<s[t-1].level?(n=s[--t],e=no(n)-(n.level%2?0:1),r=!0):e==no(n)&&t<s.length-1&&n.level<s[t+1].level&&(n=s[++t],e=to(n)-n.level%2,r=!1),r&&e==n.to&&e>n.from?a(e-1):a(e,r)}r=r||Zr(e.doc,t.line),i||(i=et(e,r));var s=ii(r),c=t.ch;if(!s)return a(c);var u=co(s,c),f=l(c,u);return null!=al&&(f.other=l(c,al)),f}function pt(e,t){var n=0,t=me(e.doc,t);e.options.lineWrapping||(n=xt(e.display)*t.ch);var r=Zr(e.doc,t.line),i=ri(r)+Ue(e.display);return{left:n,right:n,top:i,bottom:i+r.height}}function mt(e,t,n,r){var i=Bo(e,t);return i.xRel=r,n&&(i.outside=!0),i}function gt(e,t,n){var r=e.doc;if(n+=e.display.viewOffset,0>n)return mt(r.first,0,!0,-1);var i=ni(r,n),o=r.first+r.size-1;if(i>o)return mt(r.first+r.size-1,Zr(r,o).text.length,!0,1);0>t&&(t=0);for(var a=Zr(r,i);;){var l=vt(e,a,i,t,n),s=gr(a),c=s&&s.find(0,!0);if(!s||!(l.ch>c.from.ch||l.ch==c.from.ch&&l.xRel>0))return l;i=ti(a=c.to.line)}}function vt(e,t,n,r,i){function o(r){var i=dt(e,Bo(n,r),"line",t,c);return l=!0,a>i.bottom?i.left-s:a<i.top?i.left+s:(l=!1,i.left)}var a=i-ri(t),l=!1,s=2*e.display.wrapper.clientWidth,c=et(e,t),u=ii(t),f=t.text.length,h=ro(t),d=io(t),p=o(h),m=l,g=o(d),v=l;if(r>g)return mt(n,d,v,1);for(;;){if(u?d==h||d==fo(t,h,1):1>=d-h){for(var y=p>r||g-r>=r-p?h:d,x=r-(y==h?p:g);zi(t.text.charAt(y));)++y;var b=mt(n,y,y==h?m:v,-1>x?-1:x>1?1:0);return b}var w=Math.ceil(f/2),k=h+w;if(u){k=h;for(var S=0;w>S;++S)k=fo(t,k,1)}var C=o(k);C>r?(d=k,g=C,(v=l)&&(g+=1e3),f=w):(h=k,p=C,m=l,f-=w)}}function yt(e){if(null!=e.cachedTextHeight)return e.cachedTextHeight;if(null==zo){zo=ji("pre");for(var t=0;49>t;++t)zo.appendChild(document.createTextNode("x")),zo.appendChild(ji("br"));zo.appendChild(document.createTextNode("x"))}qi(e.measure,zo);var n=zo.offsetHeight/50;return n>3&&(e.cachedTextHeight=n),Ui(e.measure),n||1}function xt(e){if(null!=e.cachedCharWidth)return e.cachedCharWidth;var t=ji("span","xxxxxxxxxx"),n=ji("pre",[t]);qi(e.measure,n);var r=t.getBoundingClientRect(),i=(r.right-r.left)/10;return i>2&&(e.cachedCharWidth=i),i||10}function bt(e){e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:null,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++Yo},Go?Go.ops.push(e.curOp):e.curOp.ownsGroup=Go={ops:[e.curOp],delayedCallbacks:[]}}function wt(e){var t=e.delayedCallbacks,n=0;do{for(;n<t.length;n++)t[n].call(null);for(var r=0;r<e.ops.length;r++){var i=e.ops[r];if(i.cursorActivityHandlers)for(;i.cursorActivityCalled<i.cursorActivityHandlers.length;)i.cursorActivityHandlers[i.cursorActivityCalled++].call(null,i.cm)}}while(n<t.length)}function kt(e){var t=e.curOp,n=t.ownsGroup;if(n)try{wt(n)}finally{Go=null;for(var r=0;r<n.ops.length;r++)n.ops[r].cm.curOp=null;St(n)}}function St(e){for(var t=e.ops,n=0;n<t.length;n++)Ct(t[n]);for(var n=0;n<t.length;n++)Lt(t[n]);for(var n=0;n<t.length;n++)Tt(t[n]);for(var n=0;n<t.length;n++)Mt(t[n]);for(var n=0;n<t.length;n++)Nt(t[n])}function Ct(e){var t=e.cm,n=t.display;T(t),e.updateMaxLine&&h(t),e.mustUpdate=e.viewChanged||e.forceUpdate||null!=e.scrollTop||e.scrollToPos&&(e.scrollToPos.from.line<n.viewFrom||e.scrollToPos.to.line>=n.viewTo)||n.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new L(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function Lt(e){e.updatedDisplay=e.mustUpdate&&M(e.cm,e.update)}function Tt(e){var t=e.cm,n=t.display;e.updatedDisplay&&O(t),e.barMeasure=p(t),n.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=Je(t,n.maxLine,n.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(n.scroller.clientWidth,n.sizer.offsetLeft+e.adjustWidthTo+Ye(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,n.sizer.offsetLeft+e.adjustWidthTo-$e(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=n.input.prepareSelection(e.focus))}function Mt(e){var t=e.cm;null!=e.adjustWidthTo&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeft<t.doc.scrollLeft&&on(t,Math.min(t.display.scroller.scrollLeft,e.maxScrollLeft),!0),t.display.maxLineChanged=!1);var n=e.focus&&e.focus==Gi()&&(!document.hasFocus||document.hasFocus());e.preparedSelection&&t.display.input.showSelection(e.preparedSelection,n),(e.updatedDisplay||e.startHeight!=t.doc.height)&&y(t,e.barMeasure),e.updatedDisplay&&E(t,e.barMeasure),e.selectionChanged&&Be(t),t.state.focused&&e.updateInput&&t.display.input.reset(e.typing),n&&X(e.cm)}function Nt(e){var t=e.cm,n=t.display,r=t.doc;if(e.updatedDisplay&&N(t,e.update),null==n.wheelStartX||null==e.scrollTop&&null==e.scrollLeft&&!e.scrollToPos||(n.wheelStartX=n.wheelStartY=null),null==e.scrollTop||n.scroller.scrollTop==e.scrollTop&&!e.forceScroll||(r.scrollTop=Math.max(0,Math.min(n.scroller.scrollHeight-n.scroller.clientHeight,e.scrollTop)),n.scrollbars.setScrollTop(r.scrollTop),n.scroller.scrollTop=r.scrollTop),null==e.scrollLeft||n.scroller.scrollLeft==e.scrollLeft&&!e.forceScroll||(r.scrollLeft=Math.max(0,Math.min(n.scroller.scrollWidth-n.scroller.clientWidth,e.scrollLeft)),n.scrollbars.setScrollLeft(r.scrollLeft),n.scroller.scrollLeft=r.scrollLeft,w(t)),e.scrollToPos){var i=Rn(t,me(r,e.scrollToPos.from),me(r,e.scrollToPos.to),e.scrollToPos.margin);e.scrollToPos.isCursor&&t.state.focused&&Pn(t,i)}var o=e.maybeHiddenMarkers,a=e.maybeUnhiddenMarkers;if(o)for(var l=0;l<o.length;++l)o[l].lines.length||Pa(o[l],"hide");if(a)for(var l=0;l<a.length;++l)a[l].lines.length&&Pa(a[l],"unhide");n.wrapper.offsetHeight&&(r.scrollTop=t.display.scroller.scrollTop),e.changeObjs&&Pa(t,"changes",t,e.changeObjs),e.update&&e.update.finish()}function At(e,t){if(e.curOp)return t();bt(e);try{return t()}finally{kt(e)}}function Et(e,t){return function(){if(e.curOp)return t.apply(e,arguments);bt(e);try{return t.apply(e,arguments)}finally{kt(e)}}}function Ot(e){return function(){if(this.curOp)return e.apply(this,arguments);bt(this);try{return e.apply(this,arguments)}finally{kt(this)}}}function It(e){return function(){var t=this.cm;if(!t||t.curOp)return e.apply(this,arguments);bt(t);try{return e.apply(this,arguments)}finally{kt(t)}}}function Pt(e,t,n){this.line=t,this.rest=xr(t),this.size=this.rest?ti(Ii(this.rest))-n+1:1,this.node=this.text=null,this.hidden=kr(e,t)}function Rt(e,t,n){for(var r,i=[],o=t;n>o;o=r){var a=new Pt(e.doc,Zr(e.doc,o),o);r=o+a.size,i.push(a)}return i}function Dt(e,t,n,r){null==t&&(t=e.doc.first),null==n&&(n=e.doc.first+e.doc.size),r||(r=0);var i=e.display;if(r&&n<i.viewTo&&(null==i.updateLineNumbers||i.updateLineNumbers>t)&&(i.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=i.viewTo)Wo&&br(e.doc,t)<i.viewTo&&Wt(e);else if(n<=i.viewFrom)Wo&&wr(e.doc,n+r)>i.viewFrom?Wt(e):(i.viewFrom+=r,i.viewTo+=r);else if(t<=i.viewFrom&&n>=i.viewTo)Wt(e);else if(t<=i.viewFrom){var o=_t(e,n,n+r,1);o?(i.view=i.view.slice(o.index),i.viewFrom=o.lineN,i.viewTo+=r):Wt(e)}else if(n>=i.viewTo){var o=_t(e,t,t,-1);o?(i.view=i.view.slice(0,o.index),i.viewTo=o.lineN):Wt(e)}else{var a=_t(e,t,t,-1),l=_t(e,n,n+r,1);a&&l?(i.view=i.view.slice(0,a.index).concat(Rt(e,a.lineN,l.lineN)).concat(i.view.slice(l.index)),i.viewTo+=r):Wt(e)}var s=i.externalMeasured;s&&(n<s.lineN?s.lineN+=r:t<s.lineN+s.size&&(i.externalMeasured=null))}function Ht(e,t,n){e.curOp.viewChanged=!0;var r=e.display,i=e.display.externalMeasured;if(i&&t>=i.lineN&&t<i.lineN+i.size&&(r.externalMeasured=null),!(t<r.viewFrom||t>=r.viewTo)){var o=r.view[Bt(e,t)];if(null!=o.node){var a=o.changes||(o.changes=[]);-1==Pi(a,n)&&a.push(n)}}}function Wt(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function Bt(e,t){if(t>=e.display.viewTo)return null;if(t-=e.display.viewFrom,0>t)return null;for(var n=e.display.view,r=0;r<n.length;r++)if(t-=n[r].size,0>t)return r}function _t(e,t,n,r){var i,o=Bt(e,t),a=e.display.view;if(!Wo||n==e.doc.first+e.doc.size)return{index:o,lineN:n};for(var l=0,s=e.display.viewFrom;o>l;l++)s+=a[l].size;if(s!=t){if(r>0){if(o==a.length-1)return null;i=s+a[o].size-t,o++}else i=s-t;t+=i,n+=i}for(;br(e.doc,n)!=n;){if(o==(0>r?0:a.length-1))return null;n+=r*a[o-(0>r?1:0)].size,o+=r}return{index:o,lineN:n}}function Ft(e,t,n){var r=e.display,i=r.view;0==i.length||t>=r.viewTo||n<=r.viewFrom?(r.view=Rt(e,t,n),r.viewFrom=t):(r.viewFrom>t?r.view=Rt(e,t,r.viewFrom).concat(r.view):r.viewFrom<t&&(r.view=r.view.slice(Bt(e,t))),r.viewFrom=t,r.viewTo<n?r.view=r.view.concat(Rt(e,r.viewTo,n)):r.viewTo>n&&(r.view=r.view.slice(0,Bt(e,n)))),r.viewTo=n}function zt(e){for(var t=e.display.view,n=0,r=0;r<t.length;r++){var i=t[r];i.hidden||i.node&&!i.changes||++n}return n}function jt(e){function t(){i.activeTouch&&(o=setTimeout(function(){i.activeTouch=null},1e3),a=i.activeTouch,a.end=+new Date)}function n(e){if(1!=e.touches.length)return!1;var t=e.touches[0];return t.radiusX<=1&&t.radiusY<=1}function r(e,t){if(null==t.left)return!0;var n=t.left-e.left,r=t.top-e.top;return n*n+r*r>400}var i=e.display;Ea(i.scroller,"mousedown",Et(e,$t)),xo&&11>bo?Ea(i.scroller,"dblclick",Et(e,function(t){if(!Ti(e,t)){var n=Yt(e,t);if(n&&!Jt(e,t)&&!Gt(e.display,t)){Ma(t);var r=e.findWordAt(n);be(e.doc,r.anchor,r.head)}}})):Ea(i.scroller,"dblclick",function(t){Ti(e,t)||Ma(t)}),Do||Ea(i.scroller,"contextmenu",function(t){xn(e,t)});var o,a={end:0};Ea(i.scroller,"touchstart",function(t){if(!Ti(e,t)&&!n(t)){clearTimeout(o);var r=+new Date;i.activeTouch={start:r,moved:!1,prev:r-a.end<=300?a:null},1==t.touches.length&&(i.activeTouch.left=t.touches[0].pageX,i.activeTouch.top=t.touches[0].pageY)}}),Ea(i.scroller,"touchmove",function(){i.activeTouch&&(i.activeTouch.moved=!0)}),Ea(i.scroller,"touchend",function(n){var o=i.activeTouch;if(o&&!Gt(i,n)&&null!=o.left&&!o.moved&&new Date-o.start<300){var a,l=e.coordsChar(i.activeTouch,"page");a=!o.prev||r(o,o.prev)?new fe(l,l):!o.prev.prev||r(o,o.prev.prev)?e.findWordAt(l):new fe(Bo(l.line,0),me(e.doc,Bo(l.line+1,0))),e.setSelection(a.anchor,a.head),e.focus(),Ma(n)}t()}),Ea(i.scroller,"touchcancel",t),Ea(i.scroller,"scroll",function(){i.scroller.clientHeight&&(rn(e,i.scroller.scrollTop),on(e,i.scroller.scrollLeft,!0),Pa(e,"scroll",e))}),Ea(i.scroller,"mousewheel",function(t){an(e,t)}),Ea(i.scroller,"DOMMouseScroll",function(t){an(e,t)}),Ea(i.wrapper,"scroll",function(){i.wrapper.scrollTop=i.wrapper.scrollLeft=0}),i.dragFunctions={enter:function(t){Ti(e,t)||Aa(t)},over:function(t){Ti(e,t)||(tn(e,t),Aa(t))},start:function(t){en(e,t)},drop:Et(e,Qt),leave:function(t){Ti(e,t)||nn(e)}};var l=i.input.getField();Ea(l,"keyup",function(t){pn.call(e,t)}),Ea(l,"keydown",Et(e,hn)),Ea(l,"keypress",Et(e,mn)),Ea(l,"focus",Bi(vn,e)),Ea(l,"blur",Bi(yn,e))}function Ut(t,n,r){var i=r&&r!=e.Init;if(!n!=!i){var o=t.display.dragFunctions,a=n?Ea:Ia;a(t.display.scroller,"dragstart",o.start),a(t.display.scroller,"dragenter",o.enter),a(t.display.scroller,"dragover",o.over),a(t.display.scroller,"dragleave",o.leave),a(t.display.scroller,"drop",o.drop)}}function qt(e){var t=e.display;t.lastWrapHeight==t.wrapper.clientHeight&&t.lastWrapWidth==t.wrapper.clientWidth||(t.cachedCharWidth=t.cachedTextHeight=t.cachedPaddingH=null,t.scrollbarsClipped=!1,e.setSize())}function Gt(e,t){for(var n=wi(t);n!=e.wrapper;n=n.parentNode)if(!n||1==n.nodeType&&"true"==n.getAttribute("cm-ignore-events")||n.parentNode==e.sizer&&n!=e.mover)return!0}function Yt(e,t,n,r){var i=e.display;if(!n&&"true"==wi(t).getAttribute("cm-not-content"))return null;var o,a,l=i.lineSpace.getBoundingClientRect();try{o=t.clientX-l.left,a=t.clientY-l.top}catch(t){return null}var s,c=gt(e,o,a);if(r&&1==c.xRel&&(s=Zr(e.doc,c.line).text).length==c.ch){var u=Fa(s,s.length,e.options.tabSize)-s.length;c=Bo(c.line,Math.max(0,Math.round((o-Ge(e.display).left)/xt(e.display))-u))}return c}function $t(e){var t=this,n=t.display;if(!(Ti(t,e)||n.activeTouch&&n.input.supportsTouch())){if(n.shift=e.shiftKey,Gt(n,e))return void(wo||(n.scroller.draggable=!1,setTimeout(function(){n.scroller.draggable=!0},100)));if(!Jt(t,e)){var r=Yt(t,e);switch(window.focus(),ki(e)){case 1:t.state.selectingText?t.state.selectingText(e):r?Vt(t,e,r):wi(e)==n.scroller&&Ma(e);break;case 2:wo&&(t.state.lastMiddleDown=+new Date),r&&be(t.doc,r),setTimeout(function(){n.input.focus()},20),Ma(e);break;case 3:Do?xn(t,e):gn(t)}}}}function Vt(e,t,n){xo?setTimeout(Bi(X,e),0):e.curOp.focus=Gi();var r,i=+new Date;Uo&&Uo.time>i-400&&0==_o(Uo.pos,n)?r="triple":jo&&jo.time>i-400&&0==_o(jo.pos,n)?(r="double",Uo={time:i,pos:n}):(r="single",jo={time:i,pos:n});var o,a=e.doc.sel,l=Eo?t.metaKey:t.ctrlKey;e.options.dragDrop&&el&&!e.isReadOnly()&&"single"==r&&(o=a.contains(n))>-1&&(_o((o=a.ranges[o]).from(),n)<0||n.xRel>0)&&(_o(o.to(),n)>0||n.xRel<0)?Kt(e,t,n,l):Xt(e,t,n,r,l)}function Kt(e,t,n,r){var i=e.display,o=+new Date,a=Et(e,function(l){wo&&(i.scroller.draggable=!1),e.state.draggingText=!1,Ia(document,"mouseup",a),Ia(i.scroller,"drop",a),Math.abs(t.clientX-l.clientX)+Math.abs(t.clientY-l.clientY)<10&&(Ma(l),!r&&+new Date-200<o&&be(e.doc,n),wo||xo&&9==bo?setTimeout(function(){document.body.focus(),i.input.focus()},20):i.input.focus())});wo&&(i.scroller.draggable=!0),e.state.draggingText=a,i.scroller.dragDrop&&i.scroller.dragDrop(),Ea(document,"mouseup",a),Ea(i.scroller,"drop",a)}function Xt(e,t,n,r,i){function o(t){if(0!=_o(g,t))if(g=t,"rect"==r){for(var i=[],o=e.options.tabSize,a=Fa(Zr(c,n.line).text,n.ch,o),l=Fa(Zr(c,t.line).text,t.ch,o),s=Math.min(a,l),d=Math.max(a,l),p=Math.min(n.line,t.line),m=Math.min(e.lastLine(),Math.max(n.line,t.line));m>=p;p++){var v=Zr(c,p).text,y=za(v,s,o);s==d?i.push(new fe(Bo(p,y),Bo(p,y))):v.length>y&&i.push(new fe(Bo(p,y),Bo(p,za(v,d,o))))}i.length||i.push(new fe(n,n)),Te(c,he(h.ranges.slice(0,f).concat(i),f),{origin:"*mouse",scroll:!1}),e.scrollIntoView(t)}else{var x=u,b=x.anchor,w=t;if("single"!=r){if("double"==r)var k=e.findWordAt(t);else var k=new fe(Bo(t.line,0),me(c,Bo(t.line+1,0)));_o(k.anchor,b)>0?(w=k.head,b=K(x.from(),k.anchor)):(w=k.anchor,b=V(x.to(),k.head))}var i=h.ranges.slice(0);i[f]=new fe(me(c,b),w),Te(c,he(i,f),Ba)}}function a(t){var n=++y,i=Yt(e,t,!0,"rect"==r);if(i)if(0!=_o(i,g)){e.curOp.focus=Gi(),o(i);var l=b(s,c);(i.line>=l.to||i.line<l.from)&&setTimeout(Et(e,function(){y==n&&a(t)}),150)}else{var u=t.clientY<v.top?-20:t.clientY>v.bottom?20:0;u&&setTimeout(Et(e,function(){y==n&&(s.scroller.scrollTop+=u,a(t))}),50)}}function l(t){e.state.selectingText=!1,y=1/0,Ma(t),s.input.focus(),Ia(document,"mousemove",x),Ia(document,"mouseup",w),c.history.lastSelOrigin=null}var s=e.display,c=e.doc;Ma(t);var u,f,h=c.sel,d=h.ranges;if(i&&!t.shiftKey?(f=c.sel.contains(n),u=f>-1?d[f]:new fe(n,n)):(u=c.sel.primary(),f=c.sel.primIndex),Oo?t.shiftKey&&t.metaKey:t.altKey)r="rect",i||(u=new fe(n,n)),n=Yt(e,t,!0,!0),f=-1;else if("double"==r){var p=e.findWordAt(n);u=e.display.shift||c.extend?xe(c,u,p.anchor,p.head):p}else if("triple"==r){var m=new fe(Bo(n.line,0),me(c,Bo(n.line+1,0)));u=e.display.shift||c.extend?xe(c,u,m.anchor,m.head):m}else u=xe(c,u,n);i?-1==f?(f=d.length,Te(c,he(d.concat([u]),f),{scroll:!1,origin:"*mouse"})):d.length>1&&d[f].empty()&&"single"==r&&!t.shiftKey?(Te(c,he(d.slice(0,f).concat(d.slice(f+1)),0),{scroll:!1,origin:"*mouse"}),h=c.sel):ke(c,f,u,Ba):(f=0,Te(c,new ue([u],0),Ba),h=c.sel);var g=n,v=s.wrapper.getBoundingClientRect(),y=0,x=Et(e,function(e){ki(e)?a(e):l(e)}),w=Et(e,l);e.state.selectingText=w,Ea(document,"mousemove",x),Ea(document,"mouseup",w)}function Zt(e,t,n,r){try{var i=t.clientX,o=t.clientY}catch(t){return!1}if(i>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;r&&Ma(t);var a=e.display,l=a.lineDiv.getBoundingClientRect();if(o>l.bottom||!Ni(e,n))return bi(t);o-=l.top-a.viewOffset;for(var s=0;s<e.options.gutters.length;++s){var c=a.gutters.childNodes[s];if(c&&c.getBoundingClientRect().right>=i){var u=ni(e.doc,o),f=e.options.gutters[s];return Pa(e,n,e,u,f,t),bi(t)}}}function Jt(e,t){return Zt(e,t,"gutterClick",!0)}function Qt(e){var t=this;if(nn(t),!Ti(t,e)&&!Gt(t.display,e)){Ma(e),xo&&($o=+new Date);var n=Yt(t,e,!0),r=e.dataTransfer.files;if(n&&!t.isReadOnly())if(r&&r.length&&window.FileReader&&window.File)for(var i=r.length,o=Array(i),a=0,l=function(e,r){if(!t.options.allowDropFileTypes||-1!=Pi(t.options.allowDropFileTypes,e.type)){var l=new FileReader;l.onload=Et(t,function(){var e=l.result;if(/[\x00-\x08\x0e-\x1f]{2}/.test(e)&&(e=""),o[r]=e,++a==i){n=me(t.doc,n);var s={from:n,to:n,text:t.doc.splitLines(o.join(t.doc.lineSeparator())),origin:"paste"};Tn(t.doc,s),Le(t.doc,de(n,Qo(s)))}}),l.readAsText(e)}},s=0;i>s;++s)l(r[s],s);else{if(t.state.draggingText&&t.doc.sel.contains(n)>-1)return t.state.draggingText(e),void setTimeout(function(){t.display.input.focus()},20);try{var o=e.dataTransfer.getData("Text");if(o){if(t.state.draggingText&&!(Eo?e.altKey:e.ctrlKey))var c=t.listSelections();if(Me(t.doc,de(n,n)),c)for(var s=0;s<c.length;++s)In(t.doc,"",c[s].anchor,c[s].head,"drag");t.replaceSelection(o,"around","paste"),t.display.input.focus()}}catch(e){}}}}function en(e,t){if(xo&&(!e.state.draggingText||+new Date-$o<100))return void Aa(t);if(!Ti(e,t)&&!Gt(e.display,t)&&(t.dataTransfer.setData("Text",e.getSelection()),t.dataTransfer.effectAllowed="copyMove",t.dataTransfer.setDragImage&&!Lo)){var n=ji("img",null,null,"position: fixed; left: 0; top: 0;");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",Co&&(n.width=n.height=1,e.display.wrapper.appendChild(n),n._top=n.offsetTop),t.dataTransfer.setDragImage(n,0,0),Co&&n.parentNode.removeChild(n)}}function tn(e,t){var n=Yt(e,t);if(n){var r=document.createDocumentFragment();He(e,n,r),e.display.dragCursor||(e.display.dragCursor=ji("div",null,"CodeMirror-cursors CodeMirror-dragcursors"),e.display.lineSpace.insertBefore(e.display.dragCursor,e.display.cursorDiv)),qi(e.display.dragCursor,r)}}function nn(e){e.display.dragCursor&&(e.display.lineSpace.removeChild(e.display.dragCursor),e.display.dragCursor=null)}function rn(e,t){Math.abs(e.doc.scrollTop-t)<2||(e.doc.scrollTop=t,go||A(e,{top:t}),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t),e.display.scrollbars.setScrollTop(t),go&&A(e),_e(e,100))}function on(e,t,n){(n?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)||(t=Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth),e.doc.scrollLeft=t,w(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function an(e,t){var n=Xo(t),r=n.x,i=n.y,o=e.display,a=o.scroller,l=a.scrollWidth>a.clientWidth,s=a.scrollHeight>a.clientHeight;if(r&&l||i&&s){if(i&&Eo&&wo)e:for(var c=t.target,u=o.view;c!=a;c=c.parentNode)for(var f=0;f<u.length;f++)if(u[f].node==c){e.display.currentWheelTarget=c;break e}if(r&&!go&&!Co&&null!=Ko)return i&&s&&rn(e,Math.max(0,Math.min(a.scrollTop+i*Ko,a.scrollHeight-a.clientHeight))),on(e,Math.max(0,Math.min(a.scrollLeft+r*Ko,a.scrollWidth-a.clientWidth))),(!i||i&&s)&&Ma(t),void(o.wheelStartX=null);if(i&&null!=Ko){var h=i*Ko,d=e.doc.scrollTop,p=d+o.wrapper.clientHeight;0>h?d=Math.max(0,d+h-50):p=Math.min(e.doc.height,p+h+50),A(e,{top:d,bottom:p})}20>Vo&&(null==o.wheelStartX?(o.wheelStartX=a.scrollLeft,o.wheelStartY=a.scrollTop,o.wheelDX=r,o.wheelDY=i,setTimeout(function(){if(null!=o.wheelStartX){var e=a.scrollLeft-o.wheelStartX,t=a.scrollTop-o.wheelStartY,n=t&&o.wheelDY&&t/o.wheelDY||e&&o.wheelDX&&e/o.wheelDX;o.wheelStartX=o.wheelStartY=null,n&&(Ko=(Ko*Vo+n)/(Vo+1),++Vo)}},200)):(o.wheelDX+=r,o.wheelDY+=i))}}function ln(e,t,n){if("string"==typeof t&&(t=ua[t],!t))return!1;e.display.input.ensurePolled();var r=e.display.shift,i=!1;try{e.isReadOnly()&&(e.state.suppressEdits=!0),n&&(e.display.shift=!1),i=t(e)!=Ha}finally{e.display.shift=r,e.state.suppressEdits=!1}return i}function sn(e,t,n){for(var r=0;r<e.state.keyMaps.length;r++){var i=ha(t,e.state.keyMaps[r],n,e);if(i)return i}return e.options.extraKeys&&ha(t,e.options.extraKeys,n,e)||ha(t,e.options.keyMap,n,e)}function cn(e,t,n,r){var i=e.state.keySeq;if(i){if(da(t))return"handled";Zo.set(50,function(){e.state.keySeq==i&&(e.state.keySeq=null,e.display.input.reset())}),t=i+" "+t}var o=sn(e,t,r);return"multi"==o&&(e.state.keySeq=t),"handled"==o&&Ci(e,"keyHandled",e,t,n),"handled"!=o&&"multi"!=o||(Ma(n),Be(e)),i&&!o&&/\'$/.test(t)?(Ma(n),!0):!!o}function un(e,t){var n=pa(t,!0);return n?t.shiftKey&&!e.state.keySeq?cn(e,"Shift-"+n,t,function(t){return ln(e,t,!0)})||cn(e,n,t,function(t){return("string"==typeof t?/^go[A-Z]/.test(t):t.motion)?ln(e,t):void 0}):cn(e,n,t,function(t){return ln(e,t)}):!1}function fn(e,t,n){return cn(e,"'"+n+"'",t,function(t){return ln(e,t,!0)})}function hn(e){var t=this;if(t.curOp.focus=Gi(),!Ti(t,e)){xo&&11>bo&&27==e.keyCode&&(e.returnValue=!1);var n=e.keyCode;t.display.shift=16==n||e.shiftKey;var r=un(t,e);Co&&(Jo=r?n:null,!r&&88==n&&!rl&&(Eo?e.metaKey:e.ctrlKey)&&t.replaceSelection("",null,"cut")),18!=n||/\bCodeMirror-crosshair\b/.test(t.display.lineDiv.className)||dn(t)}}function dn(e){function t(e){18!=e.keyCode&&e.altKey||(Za(n,"CodeMirror-crosshair"),Ia(document,"keyup",t),Ia(document,"mouseover",t))}var n=e.display.lineDiv;Ja(n,"CodeMirror-crosshair"),Ea(document,"keyup",t),Ea(document,"mouseover",t)}function pn(e){16==e.keyCode&&(this.doc.sel.shift=!1),Ti(this,e)}function mn(e){var t=this;if(!(Gt(t.display,e)||Ti(t,e)||e.ctrlKey&&!e.altKey||Eo&&e.metaKey)){var n=e.keyCode,r=e.charCode;if(Co&&n==Jo)return Jo=null,void Ma(e);if(!Co||e.which&&!(e.which<10)||!un(t,e)){var i=String.fromCharCode(null==r?n:r);fn(t,e,i)||t.display.input.onKeyPress(e)}}}function gn(e){e.state.delayingBlurEvent=!0,setTimeout(function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,yn(e))},100)}function vn(e){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1),"nocursor"!=e.options.readOnly&&(e.state.focused||(Pa(e,"focus",e),e.state.focused=!0,Ja(e.display.wrapper,"CodeMirror-focused"),e.curOp||e.display.selForContextMenu==e.doc.sel||(e.display.input.reset(),wo&&setTimeout(function(){e.display.input.reset(!0)},20)),e.display.input.receivedFocus()),Be(e))}function yn(e){e.state.delayingBlurEvent||(e.state.focused&&(Pa(e,"blur",e),e.state.focused=!1,Za(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150))}function xn(e,t){Gt(e.display,t)||bn(e,t)||Ti(e,t,"contextmenu")||e.display.input.onContextMenu(t)}function bn(e,t){return Ni(e,"gutterContextMenu")?Zt(e,t,"gutterContextMenu",!1):!1}function wn(e,t){if(_o(e,t.from)<0)return e;if(_o(e,t.to)<=0)return Qo(t);var n=e.line+t.text.length-(t.to.line-t.from.line)-1,r=e.ch;return e.line==t.to.line&&(r+=Qo(t).ch-t.to.ch),Bo(n,r)}function kn(e,t){for(var n=[],r=0;r<e.sel.ranges.length;r++){var i=e.sel.ranges[r];n.push(new fe(wn(i.anchor,t),wn(i.head,t)))}return he(n,e.sel.primIndex)}function Sn(e,t,n){return e.line==t.line?Bo(n.line,e.ch-t.ch+n.ch):Bo(n.line+(e.line-t.line),e.ch)}function Cn(e,t,n){for(var r=[],i=Bo(e.first,0),o=i,a=0;a<t.length;a++){var l=t[a],s=Sn(l.from,i,o),c=Sn(Qo(l),i,o);if(i=l.to,o=c,"around"==n){var u=e.sel.ranges[a],f=_o(u.head,u.anchor)<0;r[a]=new fe(f?c:s,f?s:c)}else r[a]=new fe(s,s)}return new ue(r,e.sel.primIndex)}function Ln(e,t,n){var r={canceled:!1,from:t.from,to:t.to,text:t.text,origin:t.origin,cancel:function(){this.canceled=!0}};return n&&(r.update=function(t,n,r,i){t&&(this.from=me(e,t)),n&&(this.to=me(e,n)),r&&(this.text=r),void 0!==i&&(this.origin=i)}),Pa(e,"beforeChange",e,r),e.cm&&Pa(e.cm,"beforeChange",e.cm,r),r.canceled?null:{from:r.from,to:r.to,text:r.text,origin:r.origin}}function Tn(e,t,n){if(e.cm){if(!e.cm.curOp)return Et(e.cm,Tn)(e,t,n);if(e.cm.state.suppressEdits)return}if(!(Ni(e,"beforeChange")||e.cm&&Ni(e.cm,"beforeChange"))||(t=Ln(e,t,!0))){var r=Ho&&!n&&sr(e,t.from,t.to);if(r)for(var i=r.length-1;i>=0;--i)Mn(e,{from:r[i].from,to:r[i].to,text:i?[""]:t.text});else Mn(e,t)}}function Mn(e,t){if(1!=t.text.length||""!=t.text[0]||0!=_o(t.from,t.to)){var n=kn(e,t);ci(e,t,n,e.cm?e.cm.curOp.id:NaN),En(e,t,n,or(e,t));var r=[];Kr(e,function(e,n){n||-1!=Pi(r,e.history)||(xi(e.history,t),r.push(e.history)),En(e,t,null,or(e,t))})}}function Nn(e,t,n){if(!e.cm||!e.cm.state.suppressEdits){for(var r,i=e.history,o=e.sel,a="undo"==t?i.done:i.undone,l="undo"==t?i.undone:i.done,s=0;s<a.length&&(r=a[s],n?!r.ranges||r.equals(e.sel):r.ranges);s++);if(s!=a.length){for(i.lastOrigin=i.lastSelOrigin=null;r=a.pop(),r.ranges;){if(hi(r,l),n&&!r.equals(e.sel))return void Te(e,r,{clearRedo:!1});o=r}var c=[];hi(o,l),l.push({changes:c,generation:i.generation}),i.generation=r.generation||++i.maxGeneration;for(var u=Ni(e,"beforeChange")||e.cm&&Ni(e.cm,"beforeChange"),s=r.changes.length-1;s>=0;--s){var f=r.changes[s];if(f.origin=t,u&&!Ln(e,f,!1))return void(a.length=0);c.push(ai(e,f));var h=s?kn(e,f):Ii(a);En(e,f,h,lr(e,f)),!s&&e.cm&&e.cm.scrollIntoView({from:f.from,to:Qo(f)});var d=[];Kr(e,function(e,t){t||-1!=Pi(d,e.history)||(xi(e.history,f),d.push(e.history)),En(e,f,null,lr(e,f))})}}}}function An(e,t){if(0!=t&&(e.first+=t,e.sel=new ue(Ri(e.sel.ranges,function(e){return new fe(Bo(e.anchor.line+t,e.anchor.ch),Bo(e.head.line+t,e.head.ch))}),e.sel.primIndex),e.cm)){Dt(e.cm,e.first,e.first-t,t);for(var n=e.cm.display,r=n.viewFrom;r<n.viewTo;r++)Ht(e.cm,r,"gutter")}}function En(e,t,n,r){if(e.cm&&!e.cm.curOp)return Et(e.cm,En)(e,t,n,r);if(t.to.line<e.first)return void An(e,t.text.length-1-(t.to.line-t.from.line));if(!(t.from.line>e.lastLine())){if(t.from.line<e.first){var i=t.text.length-1-(e.first-t.from.line);An(e,i),t={from:Bo(e.first,0),to:Bo(t.to.line+i,t.to.ch),text:[Ii(t.text)],origin:t.origin}}var o=e.lastLine();t.to.line>o&&(t={from:t.from,to:Bo(o,Zr(e,o).text.length),text:[t.text[0]],origin:t.origin}),t.removed=Jr(e,t.from,t.to),n||(n=kn(e,t)),e.cm?On(e.cm,t,r):Yr(e,t,r),Me(e,n,Wa)}}function On(e,t,n){var r=e.doc,i=e.display,a=t.from,l=t.to,s=!1,c=a.line;e.options.lineWrapping||(c=ti(yr(Zr(r,a.line))),r.iter(c,l.line+1,function(e){return e==i.maxLine?(s=!0,!0):void 0})),r.sel.contains(t.from,t.to)>-1&&Mi(e),Yr(r,t,n,o(e)),e.options.lineWrapping||(r.iter(c,a.line+t.text.length,function(e){var t=f(e);t>i.maxLineLength&&(i.maxLine=e,i.maxLineLength=t,i.maxLineChanged=!0,s=!1)}),s&&(e.curOp.updateMaxLine=!0)),r.frontier=Math.min(r.frontier,a.line),_e(e,400);var u=t.text.length-(l.line-a.line)-1;t.full?Dt(e):a.line!=l.line||1!=t.text.length||Gr(e.doc,t)?Dt(e,a.line,l.line+1,u):Ht(e,a.line,"text");var h=Ni(e,"changes"),d=Ni(e,"change");if(d||h){var p={from:a,to:l,text:t.text,removed:t.removed,origin:t.origin};d&&Ci(e,"change",e,p),h&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(p)}e.display.selForContextMenu=null}function In(e,t,n,r,i){if(r||(r=n),_o(r,n)<0){var o=r;r=n,n=o}"string"==typeof t&&(t=e.splitLines(t)),Tn(e,{from:n,to:r,text:t,origin:i})}function Pn(e,t){if(!Ti(e,"scrollCursorIntoView")){var n=e.display,r=n.sizer.getBoundingClientRect(),i=null;if(t.top+r.top<0?i=!0:t.bottom+r.top>(window.innerHeight||document.documentElement.clientHeight)&&(i=!1),null!=i&&!Mo){var o=ji("div","​",null,"position: absolute; top: "+(t.top-n.viewOffset-Ue(e.display))+"px; height: "+(t.bottom-t.top+Ye(e)+n.barHeight)+"px; left: "+t.left+"px; width: 2px;");e.display.lineSpace.appendChild(o),o.scrollIntoView(i),e.display.lineSpace.removeChild(o)}}}function Rn(e,t,n,r){null==r&&(r=0);for(var i=0;5>i;i++){var o=!1,a=dt(e,t),l=n&&n!=t?dt(e,n):a,s=Hn(e,Math.min(a.left,l.left),Math.min(a.top,l.top)-r,Math.max(a.left,l.left),Math.max(a.bottom,l.bottom)+r),c=e.doc.scrollTop,u=e.doc.scrollLeft;if(null!=s.scrollTop&&(rn(e,s.scrollTop),Math.abs(e.doc.scrollTop-c)>1&&(o=!0)),null!=s.scrollLeft&&(on(e,s.scrollLeft),Math.abs(e.doc.scrollLeft-u)>1&&(o=!0)),!o)break}return a}function Dn(e,t,n,r,i){var o=Hn(e,t,n,r,i);null!=o.scrollTop&&rn(e,o.scrollTop),null!=o.scrollLeft&&on(e,o.scrollLeft)}function Hn(e,t,n,r,i){var o=e.display,a=yt(e.display);0>n&&(n=0);var l=e.curOp&&null!=e.curOp.scrollTop?e.curOp.scrollTop:o.scroller.scrollTop,s=Ve(e),c={};i-n>s&&(i=n+s);var u=e.doc.height+qe(o),f=a>n,h=i>u-a;if(l>n)c.scrollTop=f?0:n;else if(i>l+s){var d=Math.min(n,(h?u:i)-s);d!=l&&(c.scrollTop=d)}var p=e.curOp&&null!=e.curOp.scrollLeft?e.curOp.scrollLeft:o.scroller.scrollLeft,m=$e(e)-(e.options.fixedGutter?o.gutters.offsetWidth:0),g=r-t>m;return g&&(r=t+m),10>t?c.scrollLeft=0:p>t?c.scrollLeft=Math.max(0,t-(g?0:10)):r>m+p-3&&(c.scrollLeft=r+(g?0:10)-m),c}function Wn(e,t,n){null==t&&null==n||_n(e),null!=t&&(e.curOp.scrollLeft=(null==e.curOp.scrollLeft?e.doc.scrollLeft:e.curOp.scrollLeft)+t),null!=n&&(e.curOp.scrollTop=(null==e.curOp.scrollTop?e.doc.scrollTop:e.curOp.scrollTop)+n)}function Bn(e){_n(e);var t=e.getCursor(),n=t,r=t;e.options.lineWrapping||(n=t.ch?Bo(t.line,t.ch-1):t,r=Bo(t.line,t.ch+1)),e.curOp.scrollToPos={from:n,to:r,margin:e.options.cursorScrollMargin,isCursor:!0}}function _n(e){var t=e.curOp.scrollToPos;if(t){e.curOp.scrollToPos=null;var n=pt(e,t.from),r=pt(e,t.to),i=Hn(e,Math.min(n.left,r.left),Math.min(n.top,r.top)-t.margin,Math.max(n.right,r.right),Math.max(n.bottom,r.bottom)+t.margin);e.scrollTo(i.scrollLeft,i.scrollTop)}}function Fn(e,t,n,r){var i,o=e.doc;null==n&&(n="add"),"smart"==n&&(o.mode.indent?i=je(e,t):n="prev");var a=e.options.tabSize,l=Zr(o,t),s=Fa(l.text,null,a);l.stateAfter&&(l.stateAfter=null);var c,u=l.text.match(/^\s*/)[0];if(r||/\S/.test(l.text)){if("smart"==n&&(c=o.mode.indent(i,l.text.slice(u.length),l.text),c==Ha||c>150)){if(!r)return;n="prev"}}else c=0,n="not";"prev"==n?c=t>o.first?Fa(Zr(o,t-1).text,null,a):0:"add"==n?c=s+e.options.indentUnit:"subtract"==n?c=s-e.options.indentUnit:"number"==typeof n&&(c=s+n),c=Math.max(0,c);var f="",h=0;if(e.options.indentWithTabs)for(var d=Math.floor(c/a);d;--d)h+=a,f+="	";if(c>h&&(f+=Oi(c-h)),f!=u)return In(o,f,Bo(t,0),Bo(t,u.length),"+input"),l.stateAfter=null,!0;for(var d=0;d<o.sel.ranges.length;d++){var p=o.sel.ranges[d];if(p.head.line==t&&p.head.ch<u.length){var h=Bo(t,u.length);ke(o,d,new fe(h,h));break}}}function zn(e,t,n,r){var i=t,o=t;return"number"==typeof t?o=Zr(e,pe(e,t)):i=ti(t),null==i?null:(r(o,i)&&e.cm&&Ht(e.cm,i,n),o)}function jn(e,t){for(var n=e.doc.sel.ranges,r=[],i=0;i<n.length;i++){for(var o=t(n[i]);r.length&&_o(o.from,Ii(r).to)<=0;){var a=r.pop();if(_o(a.from,o.from)<0){o.from=a.from;break}}r.push(o)}At(e,function(){for(var t=r.length-1;t>=0;t--)In(e.doc,"",r[t].from,r[t].to,"+delete");Bn(e)})}function Un(e,t,n,r,i){function o(){var t=l+n;return t<e.first||t>=e.first+e.size?!1:(l=t,u=Zr(e,t))}function a(e){var t=(i?fo:ho)(u,s,n,!0);if(null==t){if(e||!o())return!1;s=i?(0>n?io:ro)(u):0>n?u.text.length:0}else s=t;return!0}var l=t.line,s=t.ch,c=n,u=Zr(e,l);if("char"==r)a();else if("column"==r)a(!0);else if("word"==r||"group"==r)for(var f=null,h="group"==r,d=e.cm&&e.cm.getHelper(t,"wordChars"),p=!0;!(0>n)||a(!p);p=!1){var m=u.text.charAt(s)||"\n",g=_i(m,d)?"w":h&&"\n"==m?"n":!h||/\s/.test(m)?null:"p";if(!h||p||g||(g="s"),f&&f!=g){0>n&&(n=1,a());break}if(g&&(f=g),n>0&&!a(!p))break}var v=Ie(e,Bo(l,s),t,c,!0);return _o(t,v)||(v.hitSide=!0),v}function qn(e,t,n,r){var i,o=e.doc,a=t.left;if("page"==r){var l=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight);i=t.top+n*(l-(0>n?1.5:.5)*yt(e.display))}else"line"==r&&(i=n>0?t.bottom+3:t.top-3);for(;;){var s=gt(e,a,i);if(!s.outside)break;if(0>n?0>=i:i>=o.height){s.hitSide=!0;break}i+=5*n}return s}function Gn(t,n,r,i){e.defaults[t]=n,r&&(ta[t]=i?function(e,t,n){n!=na&&r(e,t,n)}:r)}function Yn(e){for(var t,n,r,i,o=e.split(/-(?!$)/),e=o[o.length-1],a=0;a<o.length-1;a++){var l=o[a];if(/^(cmd|meta|m)$/i.test(l))i=!0;else if(/^a(lt)?$/i.test(l))t=!0;else if(/^(c|ctrl|control)$/i.test(l))n=!0;else{
-if(!/^s(hift)$/i.test(l))throw new Error("Unrecognized modifier name: "+l);r=!0}}return t&&(e="Alt-"+e),n&&(e="Ctrl-"+e),i&&(e="Cmd-"+e),r&&(e="Shift-"+e),e}function $n(e){return"string"==typeof e?fa[e]:e}function Vn(e,t,n,r,i){if(r&&r.shared)return Kn(e,t,n,r,i);if(e.cm&&!e.cm.curOp)return Et(e.cm,Vn)(e,t,n,r,i);var o=new va(e,i),a=_o(t,n);if(r&&Wi(r,o,!1),a>0||0==a&&o.clearWhenEmpty!==!1)return o;if(o.replacedWith&&(o.collapsed=!0,o.widgetNode=ji("span",[o.replacedWith],"CodeMirror-widget"),r.handleMouseEvents||o.widgetNode.setAttribute("cm-ignore-events","true"),r.insertLeft&&(o.widgetNode.insertLeft=!0)),o.collapsed){if(vr(e,t.line,t,n,o)||t.line!=n.line&&vr(e,n.line,t,n,o))throw new Error("Inserting collapsed marker partially overlapping an existing one");Wo=!0}o.addToHistory&&ci(e,{from:t,to:n,origin:"markText"},e.sel,NaN);var l,s=t.line,c=e.cm;if(e.iter(s,n.line+1,function(e){c&&o.collapsed&&!c.options.lineWrapping&&yr(e)==c.display.maxLine&&(l=!0),o.collapsed&&s!=t.line&&ei(e,0),nr(e,new Qn(o,s==t.line?t.ch:null,s==n.line?n.ch:null)),++s}),o.collapsed&&e.iter(t.line,n.line+1,function(t){kr(e,t)&&ei(t,0)}),o.clearOnEnter&&Ea(o,"beforeCursorEnter",function(){o.clear()}),o.readOnly&&(Ho=!0,(e.history.done.length||e.history.undone.length)&&e.clearHistory()),o.collapsed&&(o.id=++ga,o.atomic=!0),c){if(l&&(c.curOp.updateMaxLine=!0),o.collapsed)Dt(c,t.line,n.line+1);else if(o.className||o.title||o.startStyle||o.endStyle||o.css)for(var u=t.line;u<=n.line;u++)Ht(c,u,"text");o.atomic&&Ae(c.doc),Ci(c,"markerAdded",c,o)}return o}function Kn(e,t,n,r,i){r=Wi(r),r.shared=!1;var o=[Vn(e,t,n,r,i)],a=o[0],l=r.widgetNode;return Kr(e,function(e){l&&(r.widgetNode=l.cloneNode(!0)),o.push(Vn(e,me(e,t),me(e,n),r,i));for(var s=0;s<e.linked.length;++s)if(e.linked[s].isParent)return;a=Ii(o)}),new ya(o,a)}function Xn(e){return e.findMarks(Bo(e.first,0),e.clipPos(Bo(e.lastLine())),function(e){return e.parent})}function Zn(e,t){for(var n=0;n<t.length;n++){var r=t[n],i=r.find(),o=e.clipPos(i.from),a=e.clipPos(i.to);if(_o(o,a)){var l=Vn(e,o,a,r.primary,r.primary.type);r.markers.push(l),l.parent=r}}}function Jn(e){for(var t=0;t<e.length;t++){var n=e[t],r=[n.primary.doc];Kr(n.primary.doc,function(e){r.push(e)});for(var i=0;i<n.markers.length;i++){var o=n.markers[i];-1==Pi(r,o.doc)&&(o.parent=null,n.markers.splice(i--,1))}}}function Qn(e,t,n){this.marker=e,this.from=t,this.to=n}function er(e,t){if(e)for(var n=0;n<e.length;++n){var r=e[n];if(r.marker==t)return r}}function tr(e,t){for(var n,r=0;r<e.length;++r)e[r]!=t&&(n||(n=[])).push(e[r]);return n}function nr(e,t){e.markedSpans=e.markedSpans?e.markedSpans.concat([t]):[t],t.marker.attachLine(e)}function rr(e,t,n){if(e)for(var r,i=0;i<e.length;++i){var o=e[i],a=o.marker,l=null==o.from||(a.inclusiveLeft?o.from<=t:o.from<t);if(l||o.from==t&&"bookmark"==a.type&&(!n||!o.marker.insertLeft)){var s=null==o.to||(a.inclusiveRight?o.to>=t:o.to>t);(r||(r=[])).push(new Qn(a,o.from,s?null:o.to))}}return r}function ir(e,t,n){if(e)for(var r,i=0;i<e.length;++i){var o=e[i],a=o.marker,l=null==o.to||(a.inclusiveRight?o.to>=t:o.to>t);if(l||o.from==t&&"bookmark"==a.type&&(!n||o.marker.insertLeft)){var s=null==o.from||(a.inclusiveLeft?o.from<=t:o.from<t);(r||(r=[])).push(new Qn(a,s?null:o.from-t,null==o.to?null:o.to-t))}}return r}function or(e,t){if(t.full)return null;var n=ve(e,t.from.line)&&Zr(e,t.from.line).markedSpans,r=ve(e,t.to.line)&&Zr(e,t.to.line).markedSpans;if(!n&&!r)return null;var i=t.from.ch,o=t.to.ch,a=0==_o(t.from,t.to),l=rr(n,i,a),s=ir(r,o,a),c=1==t.text.length,u=Ii(t.text).length+(c?i:0);if(l)for(var f=0;f<l.length;++f){var h=l[f];if(null==h.to){var d=er(s,h.marker);d?c&&(h.to=null==d.to?null:d.to+u):h.to=i}}if(s)for(var f=0;f<s.length;++f){var h=s[f];if(null!=h.to&&(h.to+=u),null==h.from){var d=er(l,h.marker);d||(h.from=u,c&&(l||(l=[])).push(h))}else h.from+=u,c&&(l||(l=[])).push(h)}l&&(l=ar(l)),s&&s!=l&&(s=ar(s));var p=[l];if(!c){var m,g=t.text.length-2;if(g>0&&l)for(var f=0;f<l.length;++f)null==l[f].to&&(m||(m=[])).push(new Qn(l[f].marker,null,null));for(var f=0;g>f;++f)p.push(m);p.push(s)}return p}function ar(e){for(var t=0;t<e.length;++t){var n=e[t];null!=n.from&&n.from==n.to&&n.marker.clearWhenEmpty!==!1&&e.splice(t--,1)}return e.length?e:null}function lr(e,t){var n=mi(e,t),r=or(e,t);if(!n)return r;if(!r)return n;for(var i=0;i<n.length;++i){var o=n[i],a=r[i];if(o&&a)e:for(var l=0;l<a.length;++l){for(var s=a[l],c=0;c<o.length;++c)if(o[c].marker==s.marker)continue e;o.push(s)}else a&&(n[i]=a)}return n}function sr(e,t,n){var r=null;if(e.iter(t.line,n.line+1,function(e){if(e.markedSpans)for(var t=0;t<e.markedSpans.length;++t){var n=e.markedSpans[t].marker;!n.readOnly||r&&-1!=Pi(r,n)||(r||(r=[])).push(n)}}),!r)return null;for(var i=[{from:t,to:n}],o=0;o<r.length;++o)for(var a=r[o],l=a.find(0),s=0;s<i.length;++s){var c=i[s];if(!(_o(c.to,l.from)<0||_o(c.from,l.to)>0)){var u=[s,1],f=_o(c.from,l.from),h=_o(c.to,l.to);(0>f||!a.inclusiveLeft&&!f)&&u.push({from:c.from,to:l.from}),(h>0||!a.inclusiveRight&&!h)&&u.push({from:l.to,to:c.to}),i.splice.apply(i,u),s+=u.length-1}}return i}function cr(e){var t=e.markedSpans;if(t){for(var n=0;n<t.length;++n)t[n].marker.detachLine(e);e.markedSpans=null}}function ur(e,t){if(t){for(var n=0;n<t.length;++n)t[n].marker.attachLine(e);e.markedSpans=t}}function fr(e){return e.inclusiveLeft?-1:0}function hr(e){return e.inclusiveRight?1:0}function dr(e,t){var n=e.lines.length-t.lines.length;if(0!=n)return n;var r=e.find(),i=t.find(),o=_o(r.from,i.from)||fr(e)-fr(t);if(o)return-o;var a=_o(r.to,i.to)||hr(e)-hr(t);return a?a:t.id-e.id}function pr(e,t){var n,r=Wo&&e.markedSpans;if(r)for(var i,o=0;o<r.length;++o)i=r[o],i.marker.collapsed&&null==(t?i.from:i.to)&&(!n||dr(n,i.marker)<0)&&(n=i.marker);return n}function mr(e){return pr(e,!0)}function gr(e){return pr(e,!1)}function vr(e,t,n,r,i){var o=Zr(e,t),a=Wo&&o.markedSpans;if(a)for(var l=0;l<a.length;++l){var s=a[l];if(s.marker.collapsed){var c=s.marker.find(0),u=_o(c.from,n)||fr(s.marker)-fr(i),f=_o(c.to,r)||hr(s.marker)-hr(i);if(!(u>=0&&0>=f||0>=u&&f>=0)&&(0>=u&&(s.marker.inclusiveRight&&i.inclusiveLeft?_o(c.to,n)>=0:_o(c.to,n)>0)||u>=0&&(s.marker.inclusiveRight&&i.inclusiveLeft?_o(c.from,r)<=0:_o(c.from,r)<0)))return!0}}}function yr(e){for(var t;t=mr(e);)e=t.find(-1,!0).line;return e}function xr(e){for(var t,n;t=gr(e);)e=t.find(1,!0).line,(n||(n=[])).push(e);return n}function br(e,t){var n=Zr(e,t),r=yr(n);return n==r?t:ti(r)}function wr(e,t){if(t>e.lastLine())return t;var n,r=Zr(e,t);if(!kr(e,r))return t;for(;n=gr(r);)r=n.find(1,!0).line;return ti(r)+1}function kr(e,t){var n=Wo&&t.markedSpans;if(n)for(var r,i=0;i<n.length;++i)if(r=n[i],r.marker.collapsed){if(null==r.from)return!0;if(!r.marker.widgetNode&&0==r.from&&r.marker.inclusiveLeft&&Sr(e,t,r))return!0}}function Sr(e,t,n){if(null==n.to){var r=n.marker.find(1,!0);return Sr(e,r.line,er(r.line.markedSpans,n.marker))}if(n.marker.inclusiveRight&&n.to==t.text.length)return!0;for(var i,o=0;o<t.markedSpans.length;++o)if(i=t.markedSpans[o],i.marker.collapsed&&!i.marker.widgetNode&&i.from==n.to&&(null==i.to||i.to!=n.from)&&(i.marker.inclusiveLeft||n.marker.inclusiveRight)&&Sr(e,t,i))return!0}function Cr(e,t,n){ri(t)<(e.curOp&&e.curOp.scrollTop||e.doc.scrollTop)&&Wn(e,null,n)}function Lr(e){if(null!=e.height)return e.height;var t=e.doc.cm;if(!t)return 0;if(!Va(document.body,e.node)){var n="position: relative;";e.coverGutter&&(n+="margin-left: -"+t.display.gutters.offsetWidth+"px;"),e.noHScroll&&(n+="width: "+t.display.wrapper.clientWidth+"px;"),qi(t.display.measure,ji("div",[e.node],null,n))}return e.height=e.node.parentNode.offsetHeight}function Tr(e,t,n,r){var i=new xa(e,n,r),o=e.cm;return o&&i.noHScroll&&(o.display.alignWidgets=!0),zn(e,t,"widget",function(t){var n=t.widgets||(t.widgets=[]);if(null==i.insertAt?n.push(i):n.splice(Math.min(n.length-1,Math.max(0,i.insertAt)),0,i),i.line=t,o&&!kr(e,t)){var r=ri(t)<e.scrollTop;ei(t,t.height+Lr(i)),r&&Wn(o,null,i.height),o.curOp.forceUpdate=!0}return!0}),i}function Mr(e,t,n,r){e.text=t,e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null),null!=e.order&&(e.order=null),cr(e),ur(e,n);var i=r?r(e):1;i!=e.height&&ei(e,i)}function Nr(e){e.parent=null,cr(e)}function Ar(e,t){if(e)for(;;){var n=e.match(/(?:^|\s+)line-(background-)?(\S+)/);if(!n)break;e=e.slice(0,n.index)+e.slice(n.index+n[0].length);var r=n[1]?"bgClass":"textClass";null==t[r]?t[r]=n[2]:new RegExp("(?:^|s)"+n[2]+"(?:$|s)").test(t[r])||(t[r]+=" "+n[2])}return e}function Er(t,n){if(t.blankLine)return t.blankLine(n);if(t.innerMode){var r=e.innerMode(t,n);return r.mode.blankLine?r.mode.blankLine(r.state):void 0}}function Or(t,n,r,i){for(var o=0;10>o;o++){i&&(i[0]=e.innerMode(t,r).mode);var a=t.token(n,r);if(n.pos>n.start)return a}throw new Error("Mode "+t.name+" failed to advance stream.")}function Ir(e,t,n,r){function i(e){return{start:f.start,end:f.pos,string:f.current(),type:o||null,state:e?sa(a.mode,u):u}}var o,a=e.doc,l=a.mode;t=me(a,t);var s,c=Zr(a,t.line),u=je(e,t.line,n),f=new ma(c.text,e.options.tabSize);for(r&&(s=[]);(r||f.pos<t.ch)&&!f.eol();)f.start=f.pos,o=Or(l,f,u),r&&s.push(i(!0));return r?s:i()}function Pr(e,t,n,r,i,o,a){var l=n.flattenSpans;null==l&&(l=e.options.flattenSpans);var s,c=0,u=null,f=new ma(t,e.options.tabSize),h=e.options.addModeClass&&[null];for(""==t&&Ar(Er(n,r),o);!f.eol();){if(f.pos>e.options.maxHighlightLength?(l=!1,a&&Hr(e,t,r,f.pos),f.pos=t.length,s=null):s=Ar(Or(n,f,r,h),o),h){var d=h[0].name;d&&(s="m-"+(s?d+" "+s:d))}if(!l||u!=s){for(;c<f.start;)c=Math.min(f.start,c+5e4),i(c,u);u=s}f.start=f.pos}for(;c<f.pos;){var p=Math.min(f.pos,c+5e4);i(p,u),c=p}}function Rr(e,t,n,r){var i=[e.state.modeGen],o={};Pr(e,t.text,e.doc.mode,n,function(e,t){i.push(e,t)},o,r);for(var a=0;a<e.state.overlays.length;++a){var l=e.state.overlays[a],s=1,c=0;Pr(e,t.text,l.mode,!0,function(e,t){for(var n=s;e>c;){var r=i[s];r>e&&i.splice(s,1,e,i[s+1],r),s+=2,c=Math.min(e,r)}if(t)if(l.opaque)i.splice(n,s-n,e,"cm-overlay "+t),s=n+2;else for(;s>n;n+=2){var o=i[n+1];i[n+1]=(o?o+" ":"")+"cm-overlay "+t}},o)}return{styles:i,classes:o.bgClass||o.textClass?o:null}}function Dr(e,t,n){if(!t.styles||t.styles[0]!=e.state.modeGen){var r=je(e,ti(t)),i=Rr(e,t,t.text.length>e.options.maxHighlightLength?sa(e.doc.mode,r):r);t.stateAfter=r,t.styles=i.styles,i.classes?t.styleClasses=i.classes:t.styleClasses&&(t.styleClasses=null),n===e.doc.frontier&&e.doc.frontier++}return t.styles}function Hr(e,t,n,r){var i=e.doc.mode,o=new ma(t,e.options.tabSize);for(o.start=o.pos=r||0,""==t&&Er(i,n);!o.eol();)Or(i,o,n),o.start=o.pos}function Wr(e,t){if(!e||/^\s*$/.test(e))return null;var n=t.addModeClass?ka:wa;return n[e]||(n[e]=e.replace(/\S+/g,"cm-$&"))}function Br(e,t){var n=ji("span",null,null,wo?"padding-right: .1px":null),r={pre:ji("pre",[n],"CodeMirror-line"),content:n,col:0,pos:0,cm:e,splitSpaces:(xo||wo)&&e.getOption("lineWrapping")};t.measure={};for(var i=0;i<=(t.rest?t.rest.length:0);i++){var o,a=i?t.rest[i-1]:t.line;r.pos=0,r.addToken=Fr,Ji(e.display.measure)&&(o=ii(a))&&(r.addToken=jr(r.addToken,o)),r.map=[];var l=t!=e.display.externalMeasured&&ti(a);qr(a,r,Dr(e,a,l)),a.styleClasses&&(a.styleClasses.bgClass&&(r.bgClass=$i(a.styleClasses.bgClass,r.bgClass||"")),a.styleClasses.textClass&&(r.textClass=$i(a.styleClasses.textClass,r.textClass||""))),0==r.map.length&&r.map.push(0,0,r.content.appendChild(Zi(e.display.measure))),0==i?(t.measure.map=r.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(r.map),(t.measure.caches||(t.measure.caches=[])).push({}))}if(wo){var s=r.content.lastChild;(/\bcm-tab\b/.test(s.className)||s.querySelector&&s.querySelector(".cm-tab"))&&(r.content.className="cm-tab-wrap-hack")}return Pa(e,"renderLine",e,t.line,r.pre),r.pre.className&&(r.textClass=$i(r.pre.className,r.textClass||"")),r}function _r(e){var t=ji("span","•","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t.setAttribute("aria-label",t.title),t}function Fr(e,t,n,r,i,o,a){if(t){var l=e.splitSpaces?t.replace(/ {3,}/g,zr):t,s=e.cm.state.specialChars,c=!1;if(s.test(t))for(var u=document.createDocumentFragment(),f=0;;){s.lastIndex=f;var h=s.exec(t),d=h?h.index-f:t.length-f;if(d){var p=document.createTextNode(l.slice(f,f+d));xo&&9>bo?u.appendChild(ji("span",[p])):u.appendChild(p),e.map.push(e.pos,e.pos+d,p),e.col+=d,e.pos+=d}if(!h)break;if(f+=d+1,"	"==h[0]){var m=e.cm.options.tabSize,g=m-e.col%m,p=u.appendChild(ji("span",Oi(g),"cm-tab"));p.setAttribute("role","presentation"),p.setAttribute("cm-text","	"),e.col+=g}else if("\r"==h[0]||"\n"==h[0]){var p=u.appendChild(ji("span","\r"==h[0]?"␍":"␤","cm-invalidchar"));p.setAttribute("cm-text",h[0]),e.col+=1}else{var p=e.cm.options.specialCharPlaceholder(h[0]);p.setAttribute("cm-text",h[0]),xo&&9>bo?u.appendChild(ji("span",[p])):u.appendChild(p),e.col+=1}e.map.push(e.pos,e.pos+1,p),e.pos++}else{e.col+=t.length;var u=document.createTextNode(l);e.map.push(e.pos,e.pos+t.length,u),xo&&9>bo&&(c=!0),e.pos+=t.length}if(n||r||i||c||a){var v=n||"";r&&(v+=r),i&&(v+=i);var y=ji("span",[u],v,a);return o&&(y.title=o),e.content.appendChild(y)}e.content.appendChild(u)}}function zr(e){for(var t=" ",n=0;n<e.length-2;++n)t+=n%2?" ":" ";return t+=" "}function jr(e,t){return function(n,r,i,o,a,l,s){i=i?i+" cm-force-border":"cm-force-border";for(var c=n.pos,u=c+r.length;;){for(var f=0;f<t.length;f++){var h=t[f];if(h.to>c&&h.from<=c)break}if(h.to>=u)return e(n,r,i,o,a,l,s);e(n,r.slice(0,h.to-c),i,o,null,l,s),o=null,r=r.slice(h.to-c),c=h.to}}}function Ur(e,t,n,r){var i=!r&&n.widgetNode;i&&e.map.push(e.pos,e.pos+t,i),!r&&e.cm.display.input.needsContentAttribute&&(i||(i=e.content.appendChild(document.createElement("span"))),i.setAttribute("cm-marker",n.id)),i&&(e.cm.display.input.setUneditable(i),e.content.appendChild(i)),e.pos+=t}function qr(e,t,n){var r=e.markedSpans,i=e.text,o=0;if(r)for(var a,l,s,c,u,f,h,d=i.length,p=0,m=1,g="",v=0;;){if(v==p){s=c=u=f=l="",h=null,v=1/0;for(var y,x=[],b=0;b<r.length;++b){var w=r[b],k=w.marker;"bookmark"==k.type&&w.from==p&&k.widgetNode?x.push(k):w.from<=p&&(null==w.to||w.to>p||k.collapsed&&w.to==p&&w.from==p)?(null!=w.to&&w.to!=p&&v>w.to&&(v=w.to,c=""),k.className&&(s+=" "+k.className),k.css&&(l=(l?l+";":"")+k.css),k.startStyle&&w.from==p&&(u+=" "+k.startStyle),k.endStyle&&w.to==v&&(y||(y=[])).push(k.endStyle,w.to),k.title&&!f&&(f=k.title),k.collapsed&&(!h||dr(h.marker,k)<0)&&(h=w)):w.from>p&&v>w.from&&(v=w.from)}if(y)for(var b=0;b<y.length;b+=2)y[b+1]==v&&(c+=" "+y[b]);if(!h||h.from==p)for(var b=0;b<x.length;++b)Ur(t,0,x[b]);if(h&&(h.from||0)==p){if(Ur(t,(null==h.to?d+1:h.to)-p,h.marker,null==h.from),null==h.to)return;h.to==p&&(h=!1)}}if(p>=d)break;for(var S=Math.min(d,v);;){if(g){var C=p+g.length;if(!h){var L=C>S?g.slice(0,S-p):g;t.addToken(t,L,a?a+s:s,u,p+L.length==v?c:"",f,l)}if(C>=S){g=g.slice(S-p),p=S;break}p=C,u=""}g=i.slice(o,o=n[m++]),a=Wr(n[m++],t.cm.options)}}else for(var m=1;m<n.length;m+=2)t.addToken(t,i.slice(o,o=n[m]),Wr(n[m+1],t.cm.options))}function Gr(e,t){return 0==t.from.ch&&0==t.to.ch&&""==Ii(t.text)&&(!e.cm||e.cm.options.wholeLineUpdateBefore)}function Yr(e,t,n,r){function i(e){return n?n[e]:null}function o(e,n,i){Mr(e,n,i,r),Ci(e,"change",e,t)}function a(e,t){for(var n=e,o=[];t>n;++n)o.push(new ba(c[n],i(n),r));return o}var l=t.from,s=t.to,c=t.text,u=Zr(e,l.line),f=Zr(e,s.line),h=Ii(c),d=i(c.length-1),p=s.line-l.line;if(t.full)e.insert(0,a(0,c.length)),e.remove(c.length,e.size-c.length);else if(Gr(e,t)){var m=a(0,c.length-1);o(f,f.text,d),p&&e.remove(l.line,p),m.length&&e.insert(l.line,m)}else if(u==f)if(1==c.length)o(u,u.text.slice(0,l.ch)+h+u.text.slice(s.ch),d);else{var m=a(1,c.length-1);m.push(new ba(h+u.text.slice(s.ch),d,r)),o(u,u.text.slice(0,l.ch)+c[0],i(0)),e.insert(l.line+1,m)}else if(1==c.length)o(u,u.text.slice(0,l.ch)+c[0]+f.text.slice(s.ch),i(0)),e.remove(l.line+1,p);else{o(u,u.text.slice(0,l.ch)+c[0],i(0)),o(f,h+f.text.slice(s.ch),d);var m=a(1,c.length-1);p>1&&e.remove(l.line+1,p-1),e.insert(l.line+1,m)}Ci(e,"change",e,t)}function $r(e){this.lines=e,this.parent=null;for(var t=0,n=0;t<e.length;++t)e[t].parent=this,n+=e[t].height;this.height=n}function Vr(e){this.children=e;for(var t=0,n=0,r=0;r<e.length;++r){var i=e[r];t+=i.chunkSize(),n+=i.height,i.parent=this}this.size=t,this.height=n,this.parent=null}function Kr(e,t,n){function r(e,i,o){if(e.linked)for(var a=0;a<e.linked.length;++a){var l=e.linked[a];if(l.doc!=i){var s=o&&l.sharedHist;n&&!s||(t(l.doc,s),r(l.doc,e,s))}}}r(e,null,!0)}function Xr(e,t){if(t.cm)throw new Error("This document is already in use.");e.doc=t,t.cm=e,a(e),n(e),e.options.lineWrapping||h(e),e.options.mode=t.modeOption,Dt(e)}function Zr(e,t){if(t-=e.first,0>t||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var n=e;!n.lines;)for(var r=0;;++r){var i=n.children[r],o=i.chunkSize();if(o>t){n=i;break}t-=o}return n.lines[t]}function Jr(e,t,n){var r=[],i=t.line;return e.iter(t.line,n.line+1,function(e){var o=e.text;i==n.line&&(o=o.slice(0,n.ch)),i==t.line&&(o=o.slice(t.ch)),r.push(o),++i}),r}function Qr(e,t,n){var r=[];return e.iter(t,n,function(e){r.push(e.text)}),r}function ei(e,t){var n=t-e.height;if(n)for(var r=e;r;r=r.parent)r.height+=n}function ti(e){if(null==e.parent)return null;for(var t=e.parent,n=Pi(t.lines,e),r=t.parent;r;t=r,r=r.parent)for(var i=0;r.children[i]!=t;++i)n+=r.children[i].chunkSize();return n+t.first}function ni(e,t){var n=e.first;e:do{for(var r=0;r<e.children.length;++r){var i=e.children[r],o=i.height;if(o>t){e=i;continue e}t-=o,n+=i.chunkSize()}return n}while(!e.lines);for(var r=0;r<e.lines.length;++r){var a=e.lines[r],l=a.height;if(l>t)break;t-=l}return n+r}function ri(e){e=yr(e);for(var t=0,n=e.parent,r=0;r<n.lines.length;++r){var i=n.lines[r];if(i==e)break;t+=i.height}for(var o=n.parent;o;n=o,o=n.parent)for(var r=0;r<o.children.length;++r){var a=o.children[r];if(a==n)break;t+=a.height}return t}function ii(e){var t=e.order;return null==t&&(t=e.order=ll(e.text)),t}function oi(e){this.done=[],this.undone=[],this.undoDepth=1/0,this.lastModTime=this.lastSelTime=0,this.lastOp=this.lastSelOp=null,this.lastOrigin=this.lastSelOrigin=null,this.generation=this.maxGeneration=e||1}function ai(e,t){var n={from:$(t.from),to:Qo(t),text:Jr(e,t.from,t.to)};return di(e,n,t.from.line,t.to.line+1),Kr(e,function(e){di(e,n,t.from.line,t.to.line+1)},!0),n}function li(e){for(;e.length;){var t=Ii(e);if(!t.ranges)break;e.pop()}}function si(e,t){return t?(li(e.done),Ii(e.done)):e.done.length&&!Ii(e.done).ranges?Ii(e.done):e.done.length>1&&!e.done[e.done.length-2].ranges?(e.done.pop(),Ii(e.done)):void 0}function ci(e,t,n,r){var i=e.history;i.undone.length=0;var o,a=+new Date;if((i.lastOp==r||i.lastOrigin==t.origin&&t.origin&&("+"==t.origin.charAt(0)&&e.cm&&i.lastModTime>a-e.cm.options.historyEventDelay||"*"==t.origin.charAt(0)))&&(o=si(i,i.lastOp==r))){var l=Ii(o.changes);0==_o(t.from,t.to)&&0==_o(t.from,l.to)?l.to=Qo(t):o.changes.push(ai(e,t))}else{var s=Ii(i.done);for(s&&s.ranges||hi(e.sel,i.done),o={changes:[ai(e,t)],generation:i.generation},i.done.push(o);i.done.length>i.undoDepth;)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(n),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=a,i.lastOp=i.lastSelOp=r,i.lastOrigin=i.lastSelOrigin=t.origin,l||Pa(e,"historyAdded")}function ui(e,t,n,r){var i=t.charAt(0);return"*"==i||"+"==i&&n.ranges.length==r.ranges.length&&n.somethingSelected()==r.somethingSelected()&&new Date-e.history.lastSelTime<=(e.cm?e.cm.options.historyEventDelay:500)}function fi(e,t,n,r){var i=e.history,o=r&&r.origin;n==i.lastSelOp||o&&i.lastSelOrigin==o&&(i.lastModTime==i.lastSelTime&&i.lastOrigin==o||ui(e,o,Ii(i.done),t))?i.done[i.done.length-1]=t:hi(t,i.done),i.lastSelTime=+new Date,i.lastSelOrigin=o,i.lastSelOp=n,r&&r.clearRedo!==!1&&li(i.undone)}function hi(e,t){var n=Ii(t);n&&n.ranges&&n.equals(e)||t.push(e)}function di(e,t,n,r){var i=t["spans_"+e.id],o=0;e.iter(Math.max(e.first,n),Math.min(e.first+e.size,r),function(n){n.markedSpans&&((i||(i=t["spans_"+e.id]={}))[o]=n.markedSpans),++o})}function pi(e){if(!e)return null;for(var t,n=0;n<e.length;++n)e[n].marker.explicitlyCleared?t||(t=e.slice(0,n)):t&&t.push(e[n]);return t?t.length?t:null:e}function mi(e,t){var n=t["spans_"+e.id];if(!n)return null;for(var r=0,i=[];r<t.text.length;++r)i.push(pi(n[r]));return i}function gi(e,t,n){for(var r=0,i=[];r<e.length;++r){var o=e[r];if(o.ranges)i.push(n?ue.prototype.deepCopy.call(o):o);else{var a=o.changes,l=[];i.push({changes:l});for(var s=0;s<a.length;++s){var c,u=a[s];if(l.push({from:u.from,to:u.to,text:u.text}),t)for(var f in u)(c=f.match(/^spans_(\d+)$/))&&Pi(t,Number(c[1]))>-1&&(Ii(l)[f]=u[f],delete u[f])}}}return i}function vi(e,t,n,r){n<e.line?e.line+=r:t<e.line&&(e.line=t,e.ch=0)}function yi(e,t,n,r){for(var i=0;i<e.length;++i){var o=e[i],a=!0;if(o.ranges){o.copied||(o=e[i]=o.deepCopy(),o.copied=!0);for(var l=0;l<o.ranges.length;l++)vi(o.ranges[l].anchor,t,n,r),vi(o.ranges[l].head,t,n,r)}else{for(var l=0;l<o.changes.length;++l){var s=o.changes[l];if(n<s.from.line)s.from=Bo(s.from.line+r,s.from.ch),s.to=Bo(s.to.line+r,s.to.ch);else if(t<=s.to.line){a=!1;break}}a||(e.splice(0,i+1),i=0)}}}function xi(e,t){var n=t.from.line,r=t.to.line,i=t.text.length-(r-n)-1;yi(e.done,n,r,i),yi(e.undone,n,r,i)}function bi(e){return null!=e.defaultPrevented?e.defaultPrevented:0==e.returnValue}function wi(e){return e.target||e.srcElement}function ki(e){var t=e.which;return null==t&&(1&e.button?t=1:2&e.button?t=3:4&e.button&&(t=2)),Eo&&e.ctrlKey&&1==t&&(t=3),t}function Si(e,t,n){var r=e._handlers&&e._handlers[t];return n?r&&r.length>0?r.slice():Oa:r||Oa}function Ci(e,t){function n(e){return function(){e.apply(null,o)}}var r=Si(e,t,!1);if(r.length){var i,o=Array.prototype.slice.call(arguments,2);Go?i=Go.delayedCallbacks:Ra?i=Ra:(i=Ra=[],setTimeout(Li,0));for(var a=0;a<r.length;++a)i.push(n(r[a]))}}function Li(){var e=Ra;Ra=null;for(var t=0;t<e.length;++t)e[t]()}function Ti(e,t,n){return"string"==typeof t&&(t={type:t,preventDefault:function(){this.defaultPrevented=!0}}),Pa(e,n||t.type,e,t),bi(t)||t.codemirrorIgnore}function Mi(e){var t=e._handlers&&e._handlers.cursorActivity;if(t)for(var n=e.curOp.cursorActivityHandlers||(e.curOp.cursorActivityHandlers=[]),r=0;r<t.length;++r)-1==Pi(n,t[r])&&n.push(t[r])}function Ni(e,t){return Si(e,t).length>0}function Ai(e){e.prototype.on=function(e,t){Ea(this,e,t)},e.prototype.off=function(e,t){Ia(this,e,t)}}function Ei(){this.id=null}function Oi(e){for(;ja.length<=e;)ja.push(Ii(ja)+" ");return ja[e]}function Ii(e){return e[e.length-1]}function Pi(e,t){for(var n=0;n<e.length;++n)if(e[n]==t)return n;return-1}function Ri(e,t){for(var n=[],r=0;r<e.length;r++)n[r]=t(e[r],r);return n}function Di(){}function Hi(e,t){var n;return Object.create?n=Object.create(e):(Di.prototype=e,n=new Di),t&&Wi(t,n),n}function Wi(e,t,n){t||(t={});for(var r in e)!e.hasOwnProperty(r)||n===!1&&t.hasOwnProperty(r)||(t[r]=e[r]);return t}function Bi(e){var t=Array.prototype.slice.call(arguments,1);return function(){return e.apply(null,t)}}function _i(e,t){return t?t.source.indexOf("\\w")>-1&&Ya(e)?!0:t.test(e):Ya(e)}function Fi(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}function zi(e){return e.charCodeAt(0)>=768&&$a.test(e)}function ji(e,t,n,r){var i=document.createElement(e);if(n&&(i.className=n),r&&(i.style.cssText=r),"string"==typeof t)i.appendChild(document.createTextNode(t));else if(t)for(var o=0;o<t.length;++o)i.appendChild(t[o]);return i}function Ui(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firstChild);return e}function qi(e,t){return Ui(e).appendChild(t)}function Gi(){for(var e=document.activeElement;e&&e.root&&e.root.activeElement;)e=e.root.activeElement;return e}function Yi(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}function $i(e,t){for(var n=e.split(" "),r=0;r<n.length;r++)n[r]&&!Yi(n[r]).test(t)&&(t+=" "+n[r]);return t}function Vi(e){if(document.body.getElementsByClassName)for(var t=document.body.getElementsByClassName("CodeMirror"),n=0;n<t.length;n++){var r=t[n].CodeMirror;r&&e(r)}}function Ki(){Qa||(Xi(),Qa=!0)}function Xi(){var e;Ea(window,"resize",function(){null==e&&(e=setTimeout(function(){e=null,Vi(qt)},100))}),Ea(window,"blur",function(){Vi(yn)})}function Zi(e){if(null==Ka){var t=ji("span","​");qi(e,ji("span",[t,document.createTextNode("x")])),0!=e.firstChild.offsetHeight&&(Ka=t.offsetWidth<=1&&t.offsetHeight>2&&!(xo&&8>bo))}var n=Ka?ji("span","​"):ji("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return n.setAttribute("cm-text",""),n}function Ji(e){if(null!=Xa)return Xa;var t=qi(e,document.createTextNode("AخA")),n=qa(t,0,1).getBoundingClientRect();if(!n||n.left==n.right)return!1;var r=qa(t,1,2).getBoundingClientRect();return Xa=r.right-n.right<3}function Qi(e){if(null!=il)return il;var t=qi(e,ji("span","x")),n=t.getBoundingClientRect(),r=qa(t,0,1).getBoundingClientRect();return il=Math.abs(n.left-r.left)>1}function eo(e,t,n,r){if(!e)return r(t,n,"ltr");for(var i=!1,o=0;o<e.length;++o){var a=e[o];(a.from<n&&a.to>t||t==n&&a.to==t)&&(r(Math.max(a.from,t),Math.min(a.to,n),1==a.level?"rtl":"ltr"),i=!0)}i||r(t,n,"ltr")}function to(e){return e.level%2?e.to:e.from}function no(e){return e.level%2?e.from:e.to}function ro(e){var t=ii(e);return t?to(t[0]):0}function io(e){var t=ii(e);return t?no(Ii(t)):e.text.length}function oo(e,t){var n=Zr(e.doc,t),r=yr(n);r!=n&&(t=ti(r));var i=ii(r),o=i?i[0].level%2?io(r):ro(r):0;return Bo(t,o)}function ao(e,t){for(var n,r=Zr(e.doc,t);n=gr(r);)r=n.find(1,!0).line,t=null;var i=ii(r),o=i?i[0].level%2?ro(r):io(r):r.text.length;return Bo(null==t?ti(r):t,o)}function lo(e,t){var n=oo(e,t.line),r=Zr(e.doc,n.line),i=ii(r);if(!i||0==i[0].level){var o=Math.max(0,r.text.search(/\S/)),a=t.line==n.line&&t.ch<=o&&t.ch;return Bo(n.line,a?0:o)}return n}function so(e,t,n){var r=e[0].level;return t==r?!0:n==r?!1:n>t}function co(e,t){al=null;for(var n,r=0;r<e.length;++r){var i=e[r];if(i.from<t&&i.to>t)return r;if(i.from==t||i.to==t){if(null!=n)return so(e,i.level,e[n].level)?(i.from!=i.to&&(al=n),r):(i.from!=i.to&&(al=r),n);n=r}}return n}function uo(e,t,n,r){if(!r)return t+n;do t+=n;while(t>0&&zi(e.text.charAt(t)));return t}function fo(e,t,n,r){var i=ii(e);if(!i)return ho(e,t,n,r);for(var o=co(i,t),a=i[o],l=uo(e,t,a.level%2?-n:n,r);;){if(l>a.from&&l<a.to)return l;if(l==a.from||l==a.to)return co(i,l)==o?l:(a=i[o+=n],n>0==a.level%2?a.to:a.from);if(a=i[o+=n],!a)return null;l=n>0==a.level%2?uo(e,a.to,-1,r):uo(e,a.from,1,r)}}function ho(e,t,n,r){var i=t+n;if(r)for(;i>0&&zi(e.text.charAt(i));)i+=n;return 0>i||i>e.text.length?null:i}var po=navigator.userAgent,mo=navigator.platform,go=/gecko\/\d/i.test(po),vo=/MSIE \d/.test(po),yo=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(po),xo=vo||yo,bo=xo&&(vo?document.documentMode||6:yo[1]),wo=/WebKit\//.test(po),ko=wo&&/Qt\/\d+\.\d+/.test(po),So=/Chrome\//.test(po),Co=/Opera\//.test(po),Lo=/Apple Computer/.test(navigator.vendor),To=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(po),Mo=/PhantomJS/.test(po),No=/AppleWebKit/.test(po)&&/Mobile\/\w+/.test(po),Ao=No||/Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(po),Eo=No||/Mac/.test(mo),Oo=/\bCrOS\b/.test(po),Io=/win/i.test(mo),Po=Co&&po.match(/Version\/(\d*\.\d*)/);Po&&(Po=Number(Po[1])),Po&&Po>=15&&(Co=!1,wo=!0);var Ro=Eo&&(ko||Co&&(null==Po||12.11>Po)),Do=go||xo&&bo>=9,Ho=!1,Wo=!1;m.prototype=Wi({update:function(e){var t=e.scrollWidth>e.clientWidth+1,n=e.scrollHeight>e.clientHeight+1,r=e.nativeBarWidth;if(n){this.vert.style.display="block",this.vert.style.bottom=t?r+"px":"0";var i=e.viewHeight-(t?r:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+i)+"px"}else this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=n?r+"px":"0",this.horiz.style.left=e.barLeft+"px";var o=e.viewWidth-e.barLeft-(n?r:0);this.horiz.firstChild.style.width=e.scrollWidth-e.clientWidth+o+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&e.clientHeight>0&&(0==r&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:n?r:0,bottom:t?r:0}},setScrollLeft:function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz)},setScrollTop:function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert)},zeroWidthHack:function(){var e=Eo&&!To?"12px":"18px";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new Ei,this.disableVert=new Ei},enableZeroWidthBar:function(e,t){function n(){var r=e.getBoundingClientRect(),i=document.elementFromPoint(r.left+1,r.bottom-1);i!=e?e.style.pointerEvents="none":t.set(1e3,n)}e.style.pointerEvents="auto",t.set(1e3,n)},clear:function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)}},m.prototype),g.prototype=Wi({update:function(){return{bottom:0,right:0}},setScrollLeft:function(){},setScrollTop:function(){},clear:function(){}},g.prototype),e.scrollbarModel={"native":m,"null":g},L.prototype.signal=function(e,t){Ni(e,t)&&this.events.push(arguments)},L.prototype.finish=function(){for(var e=0;e<this.events.length;e++)Pa.apply(null,this.events[e])};var Bo=e.Pos=function(e,t){return this instanceof Bo?(this.line=e,void(this.ch=t)):new Bo(e,t)},_o=e.cmpPos=function(e,t){return e.line-t.line||e.ch-t.ch},Fo=null;ne.prototype=Wi({init:function(e){function t(e){if(!Ti(r,e)){if(r.somethingSelected())Fo={lineWise:!1,text:r.getSelections()},n.inaccurateSelection&&(n.prevInput="",n.inaccurateSelection=!1,o.value=Fo.text.join("\n"),Ua(o));else{if(!r.options.lineWiseCopyCut)return;var t=ee(r);Fo={lineWise:!0,text:t.text},"cut"==e.type?r.setSelections(t.ranges,null,Wa):(n.prevInput="",o.value=t.text.join("\n"),Ua(o))}"cut"==e.type&&(r.state.cutIncoming=!0)}}var n=this,r=this.cm,i=this.wrapper=re(),o=this.textarea=i.firstChild;e.wrapper.insertBefore(i,e.wrapper.firstChild),No&&(o.style.width="0px"),Ea(o,"input",function(){xo&&bo>=9&&n.hasSelection&&(n.hasSelection=null),n.poll()}),Ea(o,"paste",function(e){Ti(r,e)||J(e,r)||(r.state.pasteIncoming=!0,n.fastPoll())}),Ea(o,"cut",t),Ea(o,"copy",t),Ea(e.scroller,"paste",function(t){Gt(e,t)||Ti(r,t)||(r.state.pasteIncoming=!0,n.focus())}),Ea(e.lineSpace,"selectstart",function(t){Gt(e,t)||Ma(t)}),Ea(o,"compositionstart",function(){var e=r.getCursor("from");n.composing&&n.composing.range.clear(),n.composing={start:e,range:r.markText(e,r.getCursor("to"),{className:"CodeMirror-composing"})}}),Ea(o,"compositionend",function(){n.composing&&(n.poll(),n.composing.range.clear(),n.composing=null)})},prepareSelection:function(){var e=this.cm,t=e.display,n=e.doc,r=De(e);if(e.options.moveInputWithCursor){var i=dt(e,n.sel.primary().head,"div"),o=t.wrapper.getBoundingClientRect(),a=t.lineDiv.getBoundingClientRect();r.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,i.top+a.top-o.top)),r.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,i.left+a.left-o.left))}return r},showSelection:function(e){var t=this.cm,n=t.display;qi(n.cursorDiv,e.cursors),qi(n.selectionDiv,e.selection),null!=e.teTop&&(this.wrapper.style.top=e.teTop+"px",this.wrapper.style.left=e.teLeft+"px")},reset:function(e){if(!this.contextMenuPending){var t,n,r=this.cm,i=r.doc;if(r.somethingSelected()){this.prevInput="";var o=i.sel.primary();t=rl&&(o.to().line-o.from().line>100||(n=r.getSelection()).length>1e3);var a=t?"-":n||r.getSelection();this.textarea.value=a,r.state.focused&&Ua(this.textarea),xo&&bo>=9&&(this.hasSelection=a)}else e||(this.prevInput=this.textarea.value="",xo&&bo>=9&&(this.hasSelection=null));this.inaccurateSelection=t}},getField:function(){return this.textarea},supportsTouch:function(){return!1},focus:function(){if("nocursor"!=this.cm.options.readOnly&&(!Ao||Gi()!=this.textarea))try{this.textarea.focus()}catch(e){}},blur:function(){this.textarea.blur()},resetPosition:function(){this.wrapper.style.top=this.wrapper.style.left=0;
-},receivedFocus:function(){this.slowPoll()},slowPoll:function(){var e=this;e.pollingFast||e.polling.set(this.cm.options.pollInterval,function(){e.poll(),e.cm.state.focused&&e.slowPoll()})},fastPoll:function(){function e(){var r=n.poll();r||t?(n.pollingFast=!1,n.slowPoll()):(t=!0,n.polling.set(60,e))}var t=!1,n=this;n.pollingFast=!0,n.polling.set(20,e)},poll:function(){var e=this.cm,t=this.textarea,n=this.prevInput;if(this.contextMenuPending||!e.state.focused||nl(t)&&!n&&!this.composing||e.isReadOnly()||e.options.disableInput||e.state.keySeq)return!1;var r=t.value;if(r==n&&!e.somethingSelected())return!1;if(xo&&bo>=9&&this.hasSelection===r||Eo&&/[\uf700-\uf7ff]/.test(r))return e.display.input.reset(),!1;if(e.doc.sel==e.display.selForContextMenu){var i=r.charCodeAt(0);if(8203!=i||n||(n="​"),8666==i)return this.reset(),this.cm.execCommand("undo")}for(var o=0,a=Math.min(n.length,r.length);a>o&&n.charCodeAt(o)==r.charCodeAt(o);)++o;var l=this;return At(e,function(){Z(e,r.slice(o),n.length-o,null,l.composing?"*compose":null),r.length>1e3||r.indexOf("\n")>-1?t.value=l.prevInput="":l.prevInput=r,l.composing&&(l.composing.range.clear(),l.composing.range=e.markText(l.composing.start,e.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},ensurePolled:function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},onKeyPress:function(){xo&&bo>=9&&(this.hasSelection=null),this.fastPoll()},onContextMenu:function(e){function t(){if(null!=a.selectionStart){var e=i.somethingSelected(),t="​"+(e?a.value:"");a.value="⇚",a.value=t,r.prevInput=e?"":"​",a.selectionStart=1,a.selectionEnd=t.length,o.selForContextMenu=i.doc.sel}}function n(){if(r.contextMenuPending=!1,r.wrapper.style.cssText=f,a.style.cssText=u,xo&&9>bo&&o.scrollbars.setScrollTop(o.scroller.scrollTop=s),null!=a.selectionStart){(!xo||xo&&9>bo)&&t();var e=0,n=function(){o.selForContextMenu==i.doc.sel&&0==a.selectionStart&&a.selectionEnd>0&&"​"==r.prevInput?Et(i,ua.selectAll)(i):e++<10?o.detectingSelectAll=setTimeout(n,500):o.input.reset()};o.detectingSelectAll=setTimeout(n,200)}}var r=this,i=r.cm,o=i.display,a=r.textarea,l=Yt(i,e),s=o.scroller.scrollTop;if(l&&!Co){var c=i.options.resetSelectionOnContextMenu;c&&-1==i.doc.sel.contains(l)&&Et(i,Te)(i.doc,de(l),Wa);var u=a.style.cssText,f=r.wrapper.style.cssText;r.wrapper.style.cssText="position: absolute";var h=r.wrapper.getBoundingClientRect();if(a.style.cssText="position: absolute; width: 30px; height: 30px; top: "+(e.clientY-h.top-5)+"px; left: "+(e.clientX-h.left-5)+"px; z-index: 1000; background: "+(xo?"rgba(255, 255, 255, .05)":"transparent")+"; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",wo)var d=window.scrollY;if(o.input.focus(),wo&&window.scrollTo(null,d),o.input.reset(),i.somethingSelected()||(a.value=r.prevInput=" "),r.contextMenuPending=!0,o.selForContextMenu=i.doc.sel,clearTimeout(o.detectingSelectAll),xo&&bo>=9&&t(),Do){Aa(e);var p=function(){Ia(window,"mouseup",p),setTimeout(n,20)};Ea(window,"mouseup",p)}else setTimeout(n,50)}},readOnlyChanged:function(e){e||this.reset()},setUneditable:Di,needsContentAttribute:!1},ne.prototype),ie.prototype=Wi({init:function(e){function t(e){if(!Ti(r,e)){if(r.somethingSelected())Fo={lineWise:!1,text:r.getSelections()},"cut"==e.type&&r.replaceSelection("",null,"cut");else{if(!r.options.lineWiseCopyCut)return;var t=ee(r);Fo={lineWise:!0,text:t.text},"cut"==e.type&&r.operation(function(){r.setSelections(t.ranges,0,Wa),r.replaceSelection("",null,"cut")})}if(e.clipboardData&&!No)e.preventDefault(),e.clipboardData.clearData(),e.clipboardData.setData("text/plain",Fo.text.join("\n"));else{var n=re(),i=n.firstChild;r.display.lineSpace.insertBefore(n,r.display.lineSpace.firstChild),i.value=Fo.text.join("\n");var o=document.activeElement;Ua(i),setTimeout(function(){r.display.lineSpace.removeChild(n),o.focus()},50)}}}var n=this,r=n.cm,i=n.div=e.lineDiv;te(i),Ea(i,"paste",function(e){Ti(r,e)||J(e,r)}),Ea(i,"compositionstart",function(e){var t=e.data;if(n.composing={sel:r.doc.sel,data:t,startData:t},t){var i=r.doc.sel.primary(),o=r.getLine(i.head.line),a=o.indexOf(t,Math.max(0,i.head.ch-t.length));a>-1&&a<=i.head.ch&&(n.composing.sel=de(Bo(i.head.line,a),Bo(i.head.line,a+t.length)))}}),Ea(i,"compositionupdate",function(e){n.composing.data=e.data}),Ea(i,"compositionend",function(e){var t=n.composing;t&&(e.data==t.startData||/\u200b/.test(e.data)||(t.data=e.data),setTimeout(function(){t.handled||n.applyComposition(t),n.composing==t&&(n.composing=null)},50))}),Ea(i,"touchstart",function(){n.forceCompositionEnd()}),Ea(i,"input",function(){n.composing||!r.isReadOnly()&&n.pollContent()||At(n.cm,function(){Dt(r)})}),Ea(i,"copy",t),Ea(i,"cut",t)},prepareSelection:function(){var e=De(this.cm,!1);return e.focus=this.cm.state.focused,e},showSelection:function(e,t){e&&this.cm.display.view.length&&((e.focus||t)&&this.showPrimarySelection(),this.showMultipleSelections(e))},showPrimarySelection:function(){var e=window.getSelection(),t=this.cm.doc.sel.primary(),n=le(this.cm,e.anchorNode,e.anchorOffset),r=le(this.cm,e.focusNode,e.focusOffset);if(!n||n.bad||!r||r.bad||0!=_o(K(n,r),t.from())||0!=_o(V(n,r),t.to())){var i=oe(this.cm,t.from()),o=oe(this.cm,t.to());if(i||o){var a=this.cm.display.view,l=e.rangeCount&&e.getRangeAt(0);if(i){if(!o){var s=a[a.length-1].measure,c=s.maps?s.maps[s.maps.length-1]:s.map;o={node:c[c.length-1],offset:c[c.length-2]-c[c.length-3]}}}else i={node:a[0].measure.map[2],offset:0};try{var u=qa(i.node,i.offset,o.offset,o.node)}catch(f){}u&&(!go&&this.cm.state.focused?(e.collapse(i.node,i.offset),u.collapsed||e.addRange(u)):(e.removeAllRanges(),e.addRange(u)),l&&null==e.anchorNode?e.addRange(l):go&&this.startGracePeriod()),this.rememberSelection()}}},startGracePeriod:function(){var e=this;clearTimeout(this.gracePeriod),this.gracePeriod=setTimeout(function(){e.gracePeriod=!1,e.selectionChanged()&&e.cm.operation(function(){e.cm.curOp.selectionChanged=!0})},20)},showMultipleSelections:function(e){qi(this.cm.display.cursorDiv,e.cursors),qi(this.cm.display.selectionDiv,e.selection)},rememberSelection:function(){var e=window.getSelection();this.lastAnchorNode=e.anchorNode,this.lastAnchorOffset=e.anchorOffset,this.lastFocusNode=e.focusNode,this.lastFocusOffset=e.focusOffset},selectionInEditor:function(){var e=window.getSelection();if(!e.rangeCount)return!1;var t=e.getRangeAt(0).commonAncestorContainer;return Va(this.div,t)},focus:function(){"nocursor"!=this.cm.options.readOnly&&this.div.focus()},blur:function(){this.div.blur()},getField:function(){return this.div},supportsTouch:function(){return!0},receivedFocus:function(){function e(){t.cm.state.focused&&(t.pollSelection(),t.polling.set(t.cm.options.pollInterval,e))}var t=this;this.selectionInEditor()?this.pollSelection():At(this.cm,function(){t.cm.curOp.selectionChanged=!0}),this.polling.set(this.cm.options.pollInterval,e)},selectionChanged:function(){var e=window.getSelection();return e.anchorNode!=this.lastAnchorNode||e.anchorOffset!=this.lastAnchorOffset||e.focusNode!=this.lastFocusNode||e.focusOffset!=this.lastFocusOffset},pollSelection:function(){if(!this.composing&&!this.gracePeriod&&this.selectionChanged()){var e=window.getSelection(),t=this.cm;this.rememberSelection();var n=le(t,e.anchorNode,e.anchorOffset),r=le(t,e.focusNode,e.focusOffset);n&&r&&At(t,function(){Te(t.doc,de(n,r),Wa),(n.bad||r.bad)&&(t.curOp.selectionChanged=!0)})}},pollContent:function(){var e=this.cm,t=e.display,n=e.doc.sel.primary(),r=n.from(),i=n.to();if(r.line<t.viewFrom||i.line>t.viewTo-1)return!1;var o;if(r.line==t.viewFrom||0==(o=Bt(e,r.line)))var a=ti(t.view[0].line),l=t.view[0].node;else var a=ti(t.view[o].line),l=t.view[o-1].node.nextSibling;var s=Bt(e,i.line);if(s==t.view.length-1)var c=t.viewTo-1,u=t.lineDiv.lastChild;else var c=ti(t.view[s+1].line)-1,u=t.view[s+1].node.previousSibling;for(var f=e.doc.splitLines(ce(e,l,u,a,c)),h=Jr(e.doc,Bo(a,0),Bo(c,Zr(e.doc,c).text.length));f.length>1&&h.length>1;)if(Ii(f)==Ii(h))f.pop(),h.pop(),c--;else{if(f[0]!=h[0])break;f.shift(),h.shift(),a++}for(var d=0,p=0,m=f[0],g=h[0],v=Math.min(m.length,g.length);v>d&&m.charCodeAt(d)==g.charCodeAt(d);)++d;for(var y=Ii(f),x=Ii(h),b=Math.min(y.length-(1==f.length?d:0),x.length-(1==h.length?d:0));b>p&&y.charCodeAt(y.length-p-1)==x.charCodeAt(x.length-p-1);)++p;f[f.length-1]=y.slice(0,y.length-p),f[0]=f[0].slice(d);var w=Bo(a,d),k=Bo(c,h.length?Ii(h).length-p:0);return f.length>1||f[0]||_o(w,k)?(In(e.doc,f,w,k,"+input"),!0):void 0},ensurePolled:function(){this.forceCompositionEnd()},reset:function(){this.forceCompositionEnd()},forceCompositionEnd:function(){this.composing&&!this.composing.handled&&(this.applyComposition(this.composing),this.composing.handled=!0,this.div.blur(),this.div.focus())},applyComposition:function(e){this.cm.isReadOnly()?Et(this.cm,Dt)(this.cm):e.data&&e.data!=e.startData&&Et(this.cm,Z)(this.cm,e.data,0,e.sel)},setUneditable:function(e){e.contentEditable="false"},onKeyPress:function(e){e.preventDefault(),this.cm.isReadOnly()||Et(this.cm,Z)(this.cm,String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),0)},readOnlyChanged:function(e){this.div.contentEditable=String("nocursor"!=e)},onContextMenu:Di,resetPosition:Di,needsContentAttribute:!0},ie.prototype),e.inputStyles={textarea:ne,contenteditable:ie},ue.prototype={primary:function(){return this.ranges[this.primIndex]},equals:function(e){if(e==this)return!0;if(e.primIndex!=this.primIndex||e.ranges.length!=this.ranges.length)return!1;for(var t=0;t<this.ranges.length;t++){var n=this.ranges[t],r=e.ranges[t];if(0!=_o(n.anchor,r.anchor)||0!=_o(n.head,r.head))return!1}return!0},deepCopy:function(){for(var e=[],t=0;t<this.ranges.length;t++)e[t]=new fe($(this.ranges[t].anchor),$(this.ranges[t].head));return new ue(e,this.primIndex)},somethingSelected:function(){for(var e=0;e<this.ranges.length;e++)if(!this.ranges[e].empty())return!0;return!1},contains:function(e,t){t||(t=e);for(var n=0;n<this.ranges.length;n++){var r=this.ranges[n];if(_o(t,r.from())>=0&&_o(e,r.to())<=0)return n}return-1}},fe.prototype={from:function(){return K(this.anchor,this.head)},to:function(){return V(this.anchor,this.head)},empty:function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch}};var zo,jo,Uo,qo={left:0,right:0,top:0,bottom:0},Go=null,Yo=0,$o=0,Vo=0,Ko=null;xo?Ko=-.53:go?Ko=15:So?Ko=-.7:Lo&&(Ko=-1/3);var Xo=function(e){var t=e.wheelDeltaX,n=e.wheelDeltaY;return null==t&&e.detail&&e.axis==e.HORIZONTAL_AXIS&&(t=e.detail),null==n&&e.detail&&e.axis==e.VERTICAL_AXIS?n=e.detail:null==n&&(n=e.wheelDelta),{x:t,y:n}};e.wheelEventPixels=function(e){var t=Xo(e);return t.x*=Ko,t.y*=Ko,t};var Zo=new Ei,Jo=null,Qo=e.changeEnd=function(e){return e.text?Bo(e.from.line+e.text.length-1,Ii(e.text).length+(1==e.text.length?e.from.ch:0)):e.to};e.prototype={constructor:e,focus:function(){window.focus(),this.display.input.focus()},setOption:function(e,t){var n=this.options,r=n[e];n[e]==t&&"mode"!=e||(n[e]=t,ta.hasOwnProperty(e)&&Et(this,ta[e])(this,t,r))},getOption:function(e){return this.options[e]},getDoc:function(){return this.doc},addKeyMap:function(e,t){this.state.keyMaps[t?"push":"unshift"]($n(e))},removeKeyMap:function(e){for(var t=this.state.keyMaps,n=0;n<t.length;++n)if(t[n]==e||t[n].name==e)return t.splice(n,1),!0},addOverlay:Ot(function(t,n){var r=t.token?t:e.getMode(this.options,t);if(r.startState)throw new Error("Overlays may not be stateful.");this.state.overlays.push({mode:r,modeSpec:t,opaque:n&&n.opaque}),this.state.modeGen++,Dt(this)}),removeOverlay:Ot(function(e){for(var t=this.state.overlays,n=0;n<t.length;++n){var r=t[n].modeSpec;if(r==e||"string"==typeof e&&r.name==e)return t.splice(n,1),this.state.modeGen++,void Dt(this)}}),indentLine:Ot(function(e,t,n){"string"!=typeof t&&"number"!=typeof t&&(t=null==t?this.options.smartIndent?"smart":"prev":t?"add":"subtract"),ve(this.doc,e)&&Fn(this,e,t,n)}),indentSelection:Ot(function(e){for(var t=this.doc.sel.ranges,n=-1,r=0;r<t.length;r++){var i=t[r];if(i.empty())i.head.line>n&&(Fn(this,i.head.line,e,!0),n=i.head.line,r==this.doc.sel.primIndex&&Bn(this));else{var o=i.from(),a=i.to(),l=Math.max(n,o.line);n=Math.min(this.lastLine(),a.line-(a.ch?0:1))+1;for(var s=l;n>s;++s)Fn(this,s,e);var c=this.doc.sel.ranges;0==o.ch&&t.length==c.length&&c[r].from().ch>0&&ke(this.doc,r,new fe(o,c[r].to()),Wa)}}}),getTokenAt:function(e,t){return Ir(this,e,t)},getLineTokens:function(e,t){return Ir(this,Bo(e),t,!0)},getTokenTypeAt:function(e){e=me(this.doc,e);var t,n=Dr(this,Zr(this.doc,e.line)),r=0,i=(n.length-1)/2,o=e.ch;if(0==o)t=n[2];else for(;;){var a=r+i>>1;if((a?n[2*a-1]:0)>=o)i=a;else{if(!(n[2*a+1]<o)){t=n[2*a+2];break}r=a+1}}var l=t?t.indexOf("cm-overlay "):-1;return 0>l?t:0==l?null:t.slice(0,l-1)},getModeAt:function(t){var n=this.doc.mode;return n.innerMode?e.innerMode(n,this.getTokenAt(t).state).mode:n},getHelper:function(e,t){return this.getHelpers(e,t)[0]},getHelpers:function(e,t){var n=[];if(!la.hasOwnProperty(t))return n;var r=la[t],i=this.getModeAt(e);if("string"==typeof i[t])r[i[t]]&&n.push(r[i[t]]);else if(i[t])for(var o=0;o<i[t].length;o++){var a=r[i[t][o]];a&&n.push(a)}else i.helperType&&r[i.helperType]?n.push(r[i.helperType]):r[i.name]&&n.push(r[i.name]);for(var o=0;o<r._global.length;o++){var l=r._global[o];l.pred(i,this)&&-1==Pi(n,l.val)&&n.push(l.val)}return n},getStateAfter:function(e,t){var n=this.doc;return e=pe(n,null==e?n.first+n.size-1:e),je(this,e+1,t)},cursorCoords:function(e,t){var n,r=this.doc.sel.primary();return n=null==e?r.head:"object"==typeof e?me(this.doc,e):e?r.from():r.to(),dt(this,n,t||"page")},charCoords:function(e,t){return ht(this,me(this.doc,e),t||"page")},coordsChar:function(e,t){return e=ft(this,e,t||"page"),gt(this,e.left,e.top)},lineAtHeight:function(e,t){return e=ft(this,{top:e,left:0},t||"page").top,ni(this.doc,e+this.display.viewOffset)},heightAtLine:function(e,t){var n,r=!1;if("number"==typeof e){var i=this.doc.first+this.doc.size-1;e<this.doc.first?e=this.doc.first:e>i&&(e=i,r=!0),n=Zr(this.doc,e)}else n=e;return ut(this,n,{top:0,left:0},t||"page").top+(r?this.doc.height-ri(n):0)},defaultTextHeight:function(){return yt(this.display)},defaultCharWidth:function(){return xt(this.display)},setGutterMarker:Ot(function(e,t,n){return zn(this.doc,e,"gutter",function(e){var r=e.gutterMarkers||(e.gutterMarkers={});return r[t]=n,!n&&Fi(r)&&(e.gutterMarkers=null),!0})}),clearGutter:Ot(function(e){var t=this,n=t.doc,r=n.first;n.iter(function(n){n.gutterMarkers&&n.gutterMarkers[e]&&(n.gutterMarkers[e]=null,Ht(t,r,"gutter"),Fi(n.gutterMarkers)&&(n.gutterMarkers=null)),++r})}),lineInfo:function(e){if("number"==typeof e){if(!ve(this.doc,e))return null;var t=e;if(e=Zr(this.doc,e),!e)return null}else{var t=ti(e);if(null==t)return null}return{line:t,handle:e,text:e.text,gutterMarkers:e.gutterMarkers,textClass:e.textClass,bgClass:e.bgClass,wrapClass:e.wrapClass,widgets:e.widgets}},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,n,r,i){var o=this.display;e=dt(this,me(this.doc,e));var a=e.bottom,l=e.left;if(t.style.position="absolute",t.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(t),o.sizer.appendChild(t),"over"==r)a=e.top;else if("above"==r||"near"==r){var s=Math.max(o.wrapper.clientHeight,this.doc.height),c=Math.max(o.sizer.clientWidth,o.lineSpace.clientWidth);("above"==r||e.bottom+t.offsetHeight>s)&&e.top>t.offsetHeight?a=e.top-t.offsetHeight:e.bottom+t.offsetHeight<=s&&(a=e.bottom),l+t.offsetWidth>c&&(l=c-t.offsetWidth)}t.style.top=a+"px",t.style.left=t.style.right="","right"==i?(l=o.sizer.clientWidth-t.offsetWidth,t.style.right="0px"):("left"==i?l=0:"middle"==i&&(l=(o.sizer.clientWidth-t.offsetWidth)/2),t.style.left=l+"px"),n&&Dn(this,l,a,l+t.offsetWidth,a+t.offsetHeight)},triggerOnKeyDown:Ot(hn),triggerOnKeyPress:Ot(mn),triggerOnKeyUp:pn,execCommand:function(e){return ua.hasOwnProperty(e)?ua[e].call(null,this):void 0},triggerElectric:Ot(function(e){Q(this,e)}),findPosH:function(e,t,n,r){var i=1;0>t&&(i=-1,t=-t);for(var o=0,a=me(this.doc,e);t>o&&(a=Un(this.doc,a,i,n,r),!a.hitSide);++o);return a},moveH:Ot(function(e,t){var n=this;n.extendSelectionsBy(function(r){return n.display.shift||n.doc.extend||r.empty()?Un(n.doc,r.head,e,t,n.options.rtlMoveVisually):0>e?r.from():r.to()},_a)}),deleteH:Ot(function(e,t){var n=this.doc.sel,r=this.doc;n.somethingSelected()?r.replaceSelection("",null,"+delete"):jn(this,function(n){var i=Un(r,n.head,e,t,!1);return 0>e?{from:i,to:n.head}:{from:n.head,to:i}})}),findPosV:function(e,t,n,r){var i=1,o=r;0>t&&(i=-1,t=-t);for(var a=0,l=me(this.doc,e);t>a;++a){var s=dt(this,l,"div");if(null==o?o=s.left:s.left=o,l=qn(this,s,i,n),l.hitSide)break}return l},moveV:Ot(function(e,t){var n=this,r=this.doc,i=[],o=!n.display.shift&&!r.extend&&r.sel.somethingSelected();if(r.extendSelectionsBy(function(a){if(o)return 0>e?a.from():a.to();var l=dt(n,a.head,"div");null!=a.goalColumn&&(l.left=a.goalColumn),i.push(l.left);var s=qn(n,l,e,t);return"page"==t&&a==r.sel.primary()&&Wn(n,null,ht(n,s,"div").top-l.top),s},_a),i.length)for(var a=0;a<r.sel.ranges.length;a++)r.sel.ranges[a].goalColumn=i[a]}),findWordAt:function(e){var t=this.doc,n=Zr(t,e.line).text,r=e.ch,i=e.ch;if(n){var o=this.getHelper(e,"wordChars");(e.xRel<0||i==n.length)&&r?--r:++i;for(var a=n.charAt(r),l=_i(a,o)?function(e){return _i(e,o)}:/\s/.test(a)?function(e){return/\s/.test(e)}:function(e){return!/\s/.test(e)&&!_i(e)};r>0&&l(n.charAt(r-1));)--r;for(;i<n.length&&l(n.charAt(i));)++i}return new fe(Bo(e.line,r),Bo(e.line,i))},toggleOverwrite:function(e){null!=e&&e==this.state.overwrite||((this.state.overwrite=!this.state.overwrite)?Ja(this.display.cursorDiv,"CodeMirror-overwrite"):Za(this.display.cursorDiv,"CodeMirror-overwrite"),Pa(this,"overwriteToggle",this,this.state.overwrite))},hasFocus:function(){return this.display.input.getField()==Gi()},isReadOnly:function(){return!(!this.options.readOnly&&!this.doc.cantEdit)},scrollTo:Ot(function(e,t){null==e&&null==t||_n(this),null!=e&&(this.curOp.scrollLeft=e),null!=t&&(this.curOp.scrollTop=t)}),getScrollInfo:function(){var e=this.display.scroller;return{left:e.scrollLeft,top:e.scrollTop,height:e.scrollHeight-Ye(this)-this.display.barHeight,width:e.scrollWidth-Ye(this)-this.display.barWidth,clientHeight:Ve(this),clientWidth:$e(this)}},scrollIntoView:Ot(function(e,t){if(null==e?(e={from:this.doc.sel.primary().head,to:null},null==t&&(t=this.options.cursorScrollMargin)):"number"==typeof e?e={from:Bo(e,0),to:null}:null==e.from&&(e={from:e,to:null}),e.to||(e.to=e.from),e.margin=t||0,null!=e.from.line)_n(this),this.curOp.scrollToPos=e;else{var n=Hn(this,Math.min(e.from.left,e.to.left),Math.min(e.from.top,e.to.top)-e.margin,Math.max(e.from.right,e.to.right),Math.max(e.from.bottom,e.to.bottom)+e.margin);this.scrollTo(n.scrollLeft,n.scrollTop)}}),setSize:Ot(function(e,t){function n(e){return"number"==typeof e||/^\d+$/.test(String(e))?e+"px":e}var r=this;null!=e&&(r.display.wrapper.style.width=n(e)),null!=t&&(r.display.wrapper.style.height=n(t)),r.options.lineWrapping&&at(this);var i=r.display.viewFrom;r.doc.iter(i,r.display.viewTo,function(e){if(e.widgets)for(var t=0;t<e.widgets.length;t++)if(e.widgets[t].noHScroll){Ht(r,i,"widget");break}++i}),r.curOp.forceUpdate=!0,Pa(r,"refresh",this)}),operation:function(e){return At(this,e)},refresh:Ot(function(){var e=this.display.cachedTextHeight;Dt(this),this.curOp.forceUpdate=!0,lt(this),this.scrollTo(this.doc.scrollLeft,this.doc.scrollTop),u(this),(null==e||Math.abs(e-yt(this.display))>.5)&&a(this),Pa(this,"refresh",this)}),swapDoc:Ot(function(e){var t=this.doc;return t.cm=null,Xr(this,e),lt(this),this.display.input.reset(),this.scrollTo(e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,Ci(this,"swapDoc",this,t),t}),getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},Ai(e);var ea=e.defaults={},ta=e.optionHandlers={},na=e.Init={toString:function(){return"CodeMirror.Init"}};Gn("value","",function(e,t){e.setValue(t)},!0),Gn("mode",null,function(e,t){e.doc.modeOption=t,n(e)},!0),Gn("indentUnit",2,n,!0),Gn("indentWithTabs",!1),Gn("smartIndent",!0),Gn("tabSize",4,function(e){r(e),lt(e),Dt(e)},!0),Gn("lineSeparator",null,function(e,t){if(e.doc.lineSep=t,t){var n=[],r=e.doc.first;e.doc.iter(function(e){for(var i=0;;){var o=e.text.indexOf(t,i);if(-1==o)break;i=o+t.length,n.push(Bo(r,o))}r++});for(var i=n.length-1;i>=0;i--)In(e.doc,t,n[i],Bo(n[i].line,n[i].ch+t.length))}}),Gn("specialChars",/[\u0000-\u001f\u007f\u00ad\u200b-\u200f\u2028\u2029\ufeff]/g,function(t,n,r){t.state.specialChars=new RegExp(n.source+(n.test("	")?"":"|	"),"g"),r!=e.Init&&t.refresh()}),Gn("specialCharPlaceholder",_r,function(e){e.refresh()},!0),Gn("electricChars",!0),Gn("inputStyle",Ao?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),Gn("rtlMoveVisually",!Io),Gn("wholeLineUpdateBefore",!0),Gn("theme","default",function(e){l(e),s(e)},!0),Gn("keyMap","default",function(t,n,r){var i=$n(n),o=r!=e.Init&&$n(r);o&&o.detach&&o.detach(t,i),i.attach&&i.attach(t,o||null)}),Gn("extraKeys",null),Gn("lineWrapping",!1,i,!0),Gn("gutters",[],function(e){d(e.options),s(e)},!0),Gn("fixedGutter",!0,function(e,t){e.display.gutters.style.left=t?C(e.display)+"px":"0",e.refresh()},!0),Gn("coverGutterNextToScrollbar",!1,function(e){y(e)},!0),Gn("scrollbarStyle","native",function(e){v(e),y(e),e.display.scrollbars.setScrollTop(e.doc.scrollTop),e.display.scrollbars.setScrollLeft(e.doc.scrollLeft)},!0),Gn("lineNumbers",!1,function(e){d(e.options),s(e)},!0),Gn("firstLineNumber",1,s,!0),Gn("lineNumberFormatter",function(e){return e},s,!0),Gn("showCursorWhenSelecting",!1,Re,!0),Gn("resetSelectionOnContextMenu",!0),Gn("lineWiseCopyCut",!0),Gn("readOnly",!1,function(e,t){"nocursor"==t?(yn(e),e.display.input.blur(),e.display.disabled=!0):e.display.disabled=!1,e.display.input.readOnlyChanged(t)}),Gn("disableInput",!1,function(e,t){t||e.display.input.reset()},!0),Gn("dragDrop",!0,Ut),Gn("allowDropFileTypes",null),Gn("cursorBlinkRate",530),Gn("cursorScrollMargin",0),Gn("cursorHeight",1,Re,!0),Gn("singleCursorHeightPerLine",!0,Re,!0),Gn("workTime",100),Gn("workDelay",100),Gn("flattenSpans",!0,r,!0),Gn("addModeClass",!1,r,!0),Gn("pollInterval",100),Gn("undoDepth",200,function(e,t){e.doc.history.undoDepth=t}),Gn("historyEventDelay",1250),Gn("viewportMargin",10,function(e){e.refresh()},!0),Gn("maxHighlightLength",1e4,r,!0),Gn("moveInputWithCursor",!0,function(e,t){t||e.display.input.resetPosition()}),Gn("tabindex",null,function(e,t){e.display.input.getField().tabIndex=t||""}),Gn("autofocus",null);var ra=e.modes={},ia=e.mimeModes={};e.defineMode=function(t,n){e.defaults.mode||"null"==t||(e.defaults.mode=t),arguments.length>2&&(n.dependencies=Array.prototype.slice.call(arguments,2)),ra[t]=n},e.defineMIME=function(e,t){ia[e]=t},e.resolveMode=function(t){if("string"==typeof t&&ia.hasOwnProperty(t))t=ia[t];else if(t&&"string"==typeof t.name&&ia.hasOwnProperty(t.name)){var n=ia[t.name];"string"==typeof n&&(n={name:n}),t=Hi(n,t),t.name=n.name}else if("string"==typeof t&&/^[\w\-]+\/[\w\-]+\+xml$/.test(t))return e.resolveMode("application/xml");return"string"==typeof t?{name:t}:t||{name:"null"}},e.getMode=function(t,n){var n=e.resolveMode(n),r=ra[n.name];if(!r)return e.getMode(t,"text/plain");var i=r(t,n);if(oa.hasOwnProperty(n.name)){var o=oa[n.name];for(var a in o)o.hasOwnProperty(a)&&(i.hasOwnProperty(a)&&(i["_"+a]=i[a]),i[a]=o[a])}if(i.name=n.name,n.helperType&&(i.helperType=n.helperType),n.modeProps)for(var a in n.modeProps)i[a]=n.modeProps[a];return i},e.defineMode("null",function(){return{token:function(e){e.skipToEnd()}}}),e.defineMIME("text/plain","null");var oa=e.modeExtensions={};e.extendMode=function(e,t){var n=oa.hasOwnProperty(e)?oa[e]:oa[e]={};Wi(t,n)},e.defineExtension=function(t,n){e.prototype[t]=n},e.defineDocExtension=function(e,t){Ca.prototype[e]=t},e.defineOption=Gn;var aa=[];e.defineInitHook=function(e){aa.push(e)};var la=e.helpers={};e.registerHelper=function(t,n,r){la.hasOwnProperty(t)||(la[t]=e[t]={_global:[]}),la[t][n]=r},e.registerGlobalHelper=function(t,n,r,i){e.registerHelper(t,n,i),la[t]._global.push({pred:r,val:i})};var sa=e.copyState=function(e,t){if(t===!0)return t;if(e.copyState)return e.copyState(t);var n={};for(var r in t){var i=t[r];i instanceof Array&&(i=i.concat([])),n[r]=i}return n},ca=e.startState=function(e,t,n){return e.startState?e.startState(t,n):!0};e.innerMode=function(e,t){for(;e.innerMode;){var n=e.innerMode(t);if(!n||n.mode==e)break;t=n.state,e=n.mode}return n||{mode:e,state:t}};var ua=e.commands={selectAll:function(e){e.setSelection(Bo(e.firstLine(),0),Bo(e.lastLine()),Wa)},singleSelection:function(e){e.setSelection(e.getCursor("anchor"),e.getCursor("head"),Wa)},killLine:function(e){jn(e,function(t){if(t.empty()){var n=Zr(e.doc,t.head.line).text.length;return t.head.ch==n&&t.head.line<e.lastLine()?{from:t.head,to:Bo(t.head.line+1,0)}:{from:t.head,to:Bo(t.head.line,n)}}return{from:t.from(),to:t.to()}})},deleteLine:function(e){jn(e,function(t){return{from:Bo(t.from().line,0),to:me(e.doc,Bo(t.to().line+1,0))}})},delLineLeft:function(e){jn(e,function(e){return{from:Bo(e.from().line,0),to:e.from()}})},delWrappedLineLeft:function(e){jn(e,function(t){var n=e.charCoords(t.head,"div").top+5,r=e.coordsChar({left:0,top:n},"div");return{from:r,to:t.from()}})},delWrappedLineRight:function(e){jn(e,function(t){var n=e.charCoords(t.head,"div").top+5,r=e.coordsChar({left:e.display.lineDiv.offsetWidth+100,top:n},"div");return{from:t.from(),to:r}})},undo:function(e){e.undo()},redo:function(e){e.redo()},undoSelection:function(e){e.undoSelection()},redoSelection:function(e){e.redoSelection()},goDocStart:function(e){e.extendSelection(Bo(e.firstLine(),0))},goDocEnd:function(e){e.extendSelection(Bo(e.lastLine()))},goLineStart:function(e){e.extendSelectionsBy(function(t){return oo(e,t.head.line)},{origin:"+move",bias:1})},goLineStartSmart:function(e){e.extendSelectionsBy(function(t){return lo(e,t.head)},{origin:"+move",bias:1})},goLineEnd:function(e){e.extendSelectionsBy(function(t){return ao(e,t.head.line)},{origin:"+move",bias:-1})},goLineRight:function(e){e.extendSelectionsBy(function(t){var n=e.charCoords(t.head,"div").top+5;return e.coordsChar({left:e.display.lineDiv.offsetWidth+100,top:n},"div")},_a)},goLineLeft:function(e){e.extendSelectionsBy(function(t){var n=e.charCoords(t.head,"div").top+5;return e.coordsChar({left:0,top:n},"div")},_a)},goLineLeftSmart:function(e){e.extendSelectionsBy(function(t){var n=e.charCoords(t.head,"div").top+5,r=e.coordsChar({left:0,top:n},"div");return r.ch<e.getLine(r.line).search(/\S/)?lo(e,t.head):r},_a)},goLineUp:function(e){e.moveV(-1,"line")},goLineDown:function(e){e.moveV(1,"line")},goPageUp:function(e){e.moveV(-1,"page")},goPageDown:function(e){e.moveV(1,"page")},goCharLeft:function(e){e.moveH(-1,"char")},goCharRight:function(e){e.moveH(1,"char")},goColumnLeft:function(e){e.moveH(-1,"column")},goColumnRight:function(e){e.moveH(1,"column")},goWordLeft:function(e){e.moveH(-1,"word")},goGroupRight:function(e){e.moveH(1,"group")},goGroupLeft:function(e){e.moveH(-1,"group")},goWordRight:function(e){e.moveH(1,"word")},delCharBefore:function(e){e.deleteH(-1,"char")},delCharAfter:function(e){e.deleteH(1,"char")},delWordBefore:function(e){e.deleteH(-1,"word")},delWordAfter:function(e){e.deleteH(1,"word")},delGroupBefore:function(e){e.deleteH(-1,"group")},delGroupAfter:function(e){e.deleteH(1,"group")},indentAuto:function(e){e.indentSelection("smart")},indentMore:function(e){e.indentSelection("add")},indentLess:function(e){e.indentSelection("subtract")},insertTab:function(e){e.replaceSelection("	")},insertSoftTab:function(e){for(var t=[],n=e.listSelections(),r=e.options.tabSize,i=0;i<n.length;i++){var o=n[i].from(),a=Fa(e.getLine(o.line),o.ch,r);t.push(Oi(r-a%r))}e.replaceSelections(t)},defaultTab:function(e){e.somethingSelected()?e.indentSelection("add"):e.execCommand("insertTab")},transposeChars:function(e){At(e,function(){for(var t=e.listSelections(),n=[],r=0;r<t.length;r++){var i=t[r].head,o=Zr(e.doc,i.line).text;if(o)if(i.ch==o.length&&(i=new Bo(i.line,i.ch-1)),i.ch>0)i=new Bo(i.line,i.ch+1),e.replaceRange(o.charAt(i.ch-1)+o.charAt(i.ch-2),Bo(i.line,i.ch-2),i,"+transpose");else if(i.line>e.doc.first){var a=Zr(e.doc,i.line-1).text;a&&e.replaceRange(o.charAt(0)+e.doc.lineSeparator()+a.charAt(a.length-1),Bo(i.line-1,a.length-1),Bo(i.line,1),"+transpose")}n.push(new fe(i,i))}e.setSelections(n)})},newlineAndIndent:function(e){At(e,function(){for(var t=e.listSelections().length,n=0;t>n;n++){var r=e.listSelections()[n];e.replaceRange(e.doc.lineSeparator(),r.anchor,r.head,"+input"),e.indentLine(r.from().line+1,null,!0)}Bn(e)})},openLine:function(e){e.replaceSelection("\n","start")},toggleOverwrite:function(e){e.toggleOverwrite()}},fa=e.keyMap={};fa.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},fa.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},fa.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-D":"delWordAfter","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars","Ctrl-O":"openLine"},fa.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},fa["default"]=Eo?fa.macDefault:fa.pcDefault,e.normalizeKeyMap=function(e){var t={};for(var n in e)if(e.hasOwnProperty(n)){var r=e[n];if(/^(name|fallthrough|(de|at)tach)$/.test(n))continue;if("..."==r){delete e[n];continue}for(var i=Ri(n.split(" "),Yn),o=0;o<i.length;o++){var a,l;o==i.length-1?(l=i.join(" "),a=r):(l=i.slice(0,o+1).join(" "),a="...");var s=t[l];if(s){if(s!=a)throw new Error("Inconsistent bindings for "+l)}else t[l]=a}delete e[n]}for(var c in t)e[c]=t[c];return e};var ha=e.lookupKey=function(e,t,n,r){t=$n(t);var i=t.call?t.call(e,r):t[e];if(i===!1)return"nothing";if("..."===i)return"multi";if(null!=i&&n(i))return"handled";if(t.fallthrough){if("[object Array]"!=Object.prototype.toString.call(t.fallthrough))return ha(e,t.fallthrough,n,r);for(var o=0;o<t.fallthrough.length;o++){var a=ha(e,t.fallthrough[o],n,r);
-if(a)return a}}},da=e.isModifierKey=function(e){var t="string"==typeof e?e:ol[e.keyCode];return"Ctrl"==t||"Alt"==t||"Shift"==t||"Mod"==t},pa=e.keyName=function(e,t){if(Co&&34==e.keyCode&&e["char"])return!1;var n=ol[e.keyCode],r=n;return null==r||e.altGraphKey?!1:(e.altKey&&"Alt"!=n&&(r="Alt-"+r),(Ro?e.metaKey:e.ctrlKey)&&"Ctrl"!=n&&(r="Ctrl-"+r),(Ro?e.ctrlKey:e.metaKey)&&"Cmd"!=n&&(r="Cmd-"+r),!t&&e.shiftKey&&"Shift"!=n&&(r="Shift-"+r),r)};e.fromTextArea=function(t,n){function r(){t.value=c.getValue()}if(n=n?Wi(n):{},n.value=t.value,!n.tabindex&&t.tabIndex&&(n.tabindex=t.tabIndex),!n.placeholder&&t.placeholder&&(n.placeholder=t.placeholder),null==n.autofocus){var i=Gi();n.autofocus=i==t||null!=t.getAttribute("autofocus")&&i==document.body}if(t.form&&(Ea(t.form,"submit",r),!n.leaveSubmitMethodAlone)){var o=t.form,a=o.submit;try{var l=o.submit=function(){r(),o.submit=a,o.submit(),o.submit=l}}catch(s){}}n.finishInit=function(e){e.save=r,e.getTextArea=function(){return t},e.toTextArea=function(){e.toTextArea=isNaN,r(),t.parentNode.removeChild(e.getWrapperElement()),t.style.display="",t.form&&(Ia(t.form,"submit",r),"function"==typeof t.form.submit&&(t.form.submit=a))}},t.style.display="none";var c=e(function(e){t.parentNode.insertBefore(e,t.nextSibling)},n);return c};var ma=e.StringStream=function(e,t){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0};ma.prototype={eol:function(){return this.pos>=this.string.length},sol:function(){return this.pos==this.lineStart},peek:function(){return this.string.charAt(this.pos)||void 0},next:function(){return this.pos<this.string.length?this.string.charAt(this.pos++):void 0},eat:function(e){var t=this.string.charAt(this.pos);if("string"==typeof e)var n=t==e;else var n=t&&(e.test?e.test(t):e(t));return n?(++this.pos,t):void 0},eatWhile:function(e){for(var t=this.pos;this.eat(e););return this.pos>t},eatSpace:function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},skipToEnd:function(){this.pos=this.string.length},skipTo:function(e){var t=this.string.indexOf(e,this.pos);return t>-1?(this.pos=t,!0):void 0},backUp:function(e){this.pos-=e},column:function(){return this.lastColumnPos<this.start&&(this.lastColumnValue=Fa(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue-(this.lineStart?Fa(this.string,this.lineStart,this.tabSize):0)},indentation:function(){return Fa(this.string,null,this.tabSize)-(this.lineStart?Fa(this.string,this.lineStart,this.tabSize):0)},match:function(e,t,n){if("string"!=typeof e){var r=this.string.slice(this.pos).match(e);return r&&r.index>0?null:(r&&t!==!1&&(this.pos+=r[0].length),r)}var i=function(e){return n?e.toLowerCase():e},o=this.string.substr(this.pos,e.length);return i(o)==i(e)?(t!==!1&&(this.pos+=e.length),!0):void 0},current:function(){return this.string.slice(this.start,this.pos)},hideFirstChars:function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}}};var ga=0,va=e.TextMarker=function(e,t){this.lines=[],this.type=t,this.doc=e,this.id=++ga};Ai(va),va.prototype.clear=function(){if(!this.explicitlyCleared){var e=this.doc.cm,t=e&&!e.curOp;if(t&&bt(e),Ni(this,"clear")){var n=this.find();n&&Ci(this,"clear",n.from,n.to)}for(var r=null,i=null,o=0;o<this.lines.length;++o){var a=this.lines[o],l=er(a.markedSpans,this);e&&!this.collapsed?Ht(e,ti(a),"text"):e&&(null!=l.to&&(i=ti(a)),null!=l.from&&(r=ti(a))),a.markedSpans=tr(a.markedSpans,l),null==l.from&&this.collapsed&&!kr(this.doc,a)&&e&&ei(a,yt(e.display))}if(e&&this.collapsed&&!e.options.lineWrapping)for(var o=0;o<this.lines.length;++o){var s=yr(this.lines[o]),c=f(s);c>e.display.maxLineLength&&(e.display.maxLine=s,e.display.maxLineLength=c,e.display.maxLineChanged=!0)}null!=r&&e&&this.collapsed&&Dt(e,r,i+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&Ae(e.doc)),e&&Ci(e,"markerCleared",e,this),t&&kt(e),this.parent&&this.parent.clear()}},va.prototype.find=function(e,t){null==e&&"bookmark"==this.type&&(e=1);for(var n,r,i=0;i<this.lines.length;++i){var o=this.lines[i],a=er(o.markedSpans,this);if(null!=a.from&&(n=Bo(t?o:ti(o),a.from),-1==e))return n;if(null!=a.to&&(r=Bo(t?o:ti(o),a.to),1==e))return r}return n&&{from:n,to:r}},va.prototype.changed=function(){var e=this.find(-1,!0),t=this,n=this.doc.cm;e&&n&&At(n,function(){var r=e.line,i=ti(e.line),o=Qe(n,i);if(o&&(ot(o),n.curOp.selectionChanged=n.curOp.forceUpdate=!0),n.curOp.updateMaxLine=!0,!kr(t.doc,r)&&null!=t.height){var a=t.height;t.height=null;var l=Lr(t)-a;l&&ei(r,r.height+l)}})},va.prototype.attachLine=function(e){if(!this.lines.length&&this.doc.cm){var t=this.doc.cm.curOp;t.maybeHiddenMarkers&&-1!=Pi(t.maybeHiddenMarkers,this)||(t.maybeUnhiddenMarkers||(t.maybeUnhiddenMarkers=[])).push(this)}this.lines.push(e)},va.prototype.detachLine=function(e){if(this.lines.splice(Pi(this.lines,e),1),!this.lines.length&&this.doc.cm){var t=this.doc.cm.curOp;(t.maybeHiddenMarkers||(t.maybeHiddenMarkers=[])).push(this)}};var ga=0,ya=e.SharedTextMarker=function(e,t){this.markers=e,this.primary=t;for(var n=0;n<e.length;++n)e[n].parent=this};Ai(ya),ya.prototype.clear=function(){if(!this.explicitlyCleared){this.explicitlyCleared=!0;for(var e=0;e<this.markers.length;++e)this.markers[e].clear();Ci(this,"clear")}},ya.prototype.find=function(e,t){return this.primary.find(e,t)};var xa=e.LineWidget=function(e,t,n){if(n)for(var r in n)n.hasOwnProperty(r)&&(this[r]=n[r]);this.doc=e,this.node=t};Ai(xa),xa.prototype.clear=function(){var e=this.doc.cm,t=this.line.widgets,n=this.line,r=ti(n);if(null!=r&&t){for(var i=0;i<t.length;++i)t[i]==this&&t.splice(i--,1);t.length||(n.widgets=null);var o=Lr(this);ei(n,Math.max(0,n.height-o)),e&&At(e,function(){Cr(e,n,-o),Ht(e,r,"widget")})}},xa.prototype.changed=function(){var e=this.height,t=this.doc.cm,n=this.line;this.height=null;var r=Lr(this)-e;r&&(ei(n,n.height+r),t&&At(t,function(){t.curOp.forceUpdate=!0,Cr(t,n,r)}))};var ba=e.Line=function(e,t,n){this.text=e,ur(this,t),this.height=n?n(this):1};Ai(ba),ba.prototype.lineNo=function(){return ti(this)};var wa={},ka={};$r.prototype={chunkSize:function(){return this.lines.length},removeInner:function(e,t){for(var n=e,r=e+t;r>n;++n){var i=this.lines[n];this.height-=i.height,Nr(i),Ci(i,"delete")}this.lines.splice(e,t)},collapse:function(e){e.push.apply(e,this.lines)},insertInner:function(e,t,n){this.height+=n,this.lines=this.lines.slice(0,e).concat(t).concat(this.lines.slice(e));for(var r=0;r<t.length;++r)t[r].parent=this},iterN:function(e,t,n){for(var r=e+t;r>e;++e)if(n(this.lines[e]))return!0}},Vr.prototype={chunkSize:function(){return this.size},removeInner:function(e,t){this.size-=t;for(var n=0;n<this.children.length;++n){var r=this.children[n],i=r.chunkSize();if(i>e){var o=Math.min(t,i-e),a=r.height;if(r.removeInner(e,o),this.height-=a-r.height,i==o&&(this.children.splice(n--,1),r.parent=null),0==(t-=o))break;e=0}else e-=i}if(this.size-t<25&&(this.children.length>1||!(this.children[0]instanceof $r))){var l=[];this.collapse(l),this.children=[new $r(l)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t<this.children.length;++t)this.children[t].collapse(e)},insertInner:function(e,t,n){this.size+=t.length,this.height+=n;for(var r=0;r<this.children.length;++r){var i=this.children[r],o=i.chunkSize();if(o>=e){if(i.insertInner(e,t,n),i.lines&&i.lines.length>50){for(var a=i.lines.length%25+25,l=a;l<i.lines.length;){var s=new $r(i.lines.slice(l,l+=25));i.height-=s.height,this.children.splice(++r,0,s),s.parent=this}i.lines=i.lines.slice(0,a),this.maybeSpill()}break}e-=o}},maybeSpill:function(){if(!(this.children.length<=10)){var e=this;do{var t=e.children.splice(e.children.length-5,5),n=new Vr(t);if(e.parent){e.size-=n.size,e.height-=n.height;var r=Pi(e.parent.children,e);e.parent.children.splice(r+1,0,n)}else{var i=new Vr(e.children);i.parent=e,e.children=[i,n],e=i}n.parent=e.parent}while(e.children.length>10);e.parent.maybeSpill()}},iterN:function(e,t,n){for(var r=0;r<this.children.length;++r){var i=this.children[r],o=i.chunkSize();if(o>e){var a=Math.min(t,o-e);if(i.iterN(e,a,n))return!0;if(0==(t-=a))break;e=0}else e-=o}}};var Sa=0,Ca=e.Doc=function(e,t,n,r){if(!(this instanceof Ca))return new Ca(e,t,n,r);null==n&&(n=0),Vr.call(this,[new $r([new ba("",null)])]),this.first=n,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1,this.frontier=n;var i=Bo(n,0);this.sel=de(i),this.history=new oi(null),this.id=++Sa,this.modeOption=t,this.lineSep=r,this.extend=!1,"string"==typeof e&&(e=this.splitLines(e)),Yr(this,{from:i,to:i,text:e}),Te(this,de(i),Wa)};Ca.prototype=Hi(Vr.prototype,{constructor:Ca,iter:function(e,t,n){n?this.iterN(e-this.first,t-e,n):this.iterN(this.first,this.first+this.size,e)},insert:function(e,t){for(var n=0,r=0;r<t.length;++r)n+=t[r].height;this.insertInner(e-this.first,t,n)},remove:function(e,t){this.removeInner(e-this.first,t)},getValue:function(e){var t=Qr(this,this.first,this.first+this.size);return e===!1?t:t.join(e||this.lineSeparator())},setValue:It(function(e){var t=Bo(this.first,0),n=this.first+this.size-1;Tn(this,{from:t,to:Bo(n,Zr(this,n).text.length),text:this.splitLines(e),origin:"setValue",full:!0},!0),Te(this,de(t))}),replaceRange:function(e,t,n,r){t=me(this,t),n=n?me(this,n):t,In(this,e,t,n,r)},getRange:function(e,t,n){var r=Jr(this,me(this,e),me(this,t));return n===!1?r:r.join(n||this.lineSeparator())},getLine:function(e){var t=this.getLineHandle(e);return t&&t.text},getLineHandle:function(e){return ve(this,e)?Zr(this,e):void 0},getLineNumber:function(e){return ti(e)},getLineHandleVisualStart:function(e){return"number"==typeof e&&(e=Zr(this,e)),yr(e)},lineCount:function(){return this.size},firstLine:function(){return this.first},lastLine:function(){return this.first+this.size-1},clipPos:function(e){return me(this,e)},getCursor:function(e){var t,n=this.sel.primary();return t=null==e||"head"==e?n.head:"anchor"==e?n.anchor:"end"==e||"to"==e||e===!1?n.to():n.from()},listSelections:function(){return this.sel.ranges},somethingSelected:function(){return this.sel.somethingSelected()},setCursor:It(function(e,t,n){Se(this,me(this,"number"==typeof e?Bo(e,t||0):e),null,n)}),setSelection:It(function(e,t,n){Se(this,me(this,e),me(this,t||e),n)}),extendSelection:It(function(e,t,n){be(this,me(this,e),t&&me(this,t),n)}),extendSelections:It(function(e,t){we(this,ye(this,e),t)}),extendSelectionsBy:It(function(e,t){var n=Ri(this.sel.ranges,e);we(this,ye(this,n),t)}),setSelections:It(function(e,t,n){if(e.length){for(var r=0,i=[];r<e.length;r++)i[r]=new fe(me(this,e[r].anchor),me(this,e[r].head));null==t&&(t=Math.min(e.length-1,this.sel.primIndex)),Te(this,he(i,t),n)}}),addSelection:It(function(e,t,n){var r=this.sel.ranges.slice(0);r.push(new fe(me(this,e),me(this,t||e))),Te(this,he(r,r.length-1),n)}),getSelection:function(e){for(var t,n=this.sel.ranges,r=0;r<n.length;r++){var i=Jr(this,n[r].from(),n[r].to());t=t?t.concat(i):i}return e===!1?t:t.join(e||this.lineSeparator())},getSelections:function(e){for(var t=[],n=this.sel.ranges,r=0;r<n.length;r++){var i=Jr(this,n[r].from(),n[r].to());e!==!1&&(i=i.join(e||this.lineSeparator())),t[r]=i}return t},replaceSelection:function(e,t,n){for(var r=[],i=0;i<this.sel.ranges.length;i++)r[i]=e;this.replaceSelections(r,t,n||"+input")},replaceSelections:It(function(e,t,n){for(var r=[],i=this.sel,o=0;o<i.ranges.length;o++){var a=i.ranges[o];r[o]={from:a.from(),to:a.to(),text:this.splitLines(e[o]),origin:n}}for(var l=t&&"end"!=t&&Cn(this,r,t),o=r.length-1;o>=0;o--)Tn(this,r[o]);l?Le(this,l):this.cm&&Bn(this.cm)}),undo:It(function(){Nn(this,"undo")}),redo:It(function(){Nn(this,"redo")}),undoSelection:It(function(){Nn(this,"undo",!0)}),redoSelection:It(function(){Nn(this,"redo",!0)}),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,n=0,r=0;r<e.done.length;r++)e.done[r].ranges||++t;for(var r=0;r<e.undone.length;r++)e.undone[r].ranges||++n;return{undo:t,redo:n}},clearHistory:function(){this.history=new oi(this.history.maxGeneration)},markClean:function(){this.cleanGeneration=this.changeGeneration(!0)},changeGeneration:function(e){return e&&(this.history.lastOp=this.history.lastSelOp=this.history.lastOrigin=null),this.history.generation},isClean:function(e){return this.history.generation==(e||this.cleanGeneration)},getHistory:function(){return{done:gi(this.history.done),undone:gi(this.history.undone)}},setHistory:function(e){var t=this.history=new oi(this.history.maxGeneration);t.done=gi(e.done.slice(0),null,!0),t.undone=gi(e.undone.slice(0),null,!0)},addLineClass:It(function(e,t,n){return zn(this,e,"gutter"==t?"gutter":"class",function(e){var r="text"==t?"textClass":"background"==t?"bgClass":"gutter"==t?"gutterClass":"wrapClass";if(e[r]){if(Yi(n).test(e[r]))return!1;e[r]+=" "+n}else e[r]=n;return!0})}),removeLineClass:It(function(e,t,n){return zn(this,e,"gutter"==t?"gutter":"class",function(e){var r="text"==t?"textClass":"background"==t?"bgClass":"gutter"==t?"gutterClass":"wrapClass",i=e[r];if(!i)return!1;if(null==n)e[r]=null;else{var o=i.match(Yi(n));if(!o)return!1;var a=o.index+o[0].length;e[r]=i.slice(0,o.index)+(o.index&&a!=i.length?" ":"")+i.slice(a)||null}return!0})}),addLineWidget:It(function(e,t,n){return Tr(this,e,t,n)}),removeLineWidget:function(e){e.clear()},markText:function(e,t,n){return Vn(this,me(this,e),me(this,t),n,n&&n.type||"range")},setBookmark:function(e,t){var n={replacedWith:t&&(null==t.nodeType?t.widget:t),insertLeft:t&&t.insertLeft,clearWhenEmpty:!1,shared:t&&t.shared,handleMouseEvents:t&&t.handleMouseEvents};return e=me(this,e),Vn(this,e,e,n,"bookmark")},findMarksAt:function(e){e=me(this,e);var t=[],n=Zr(this,e.line).markedSpans;if(n)for(var r=0;r<n.length;++r){var i=n[r];(null==i.from||i.from<=e.ch)&&(null==i.to||i.to>=e.ch)&&t.push(i.marker.parent||i.marker)}return t},findMarks:function(e,t,n){e=me(this,e),t=me(this,t);var r=[],i=e.line;return this.iter(e.line,t.line+1,function(o){var a=o.markedSpans;if(a)for(var l=0;l<a.length;l++){var s=a[l];null!=s.to&&i==e.line&&e.ch>=s.to||null==s.from&&i!=e.line||null!=s.from&&i==t.line&&s.from>=t.ch||n&&!n(s.marker)||r.push(s.marker.parent||s.marker)}++i}),r},getAllMarks:function(){var e=[];return this.iter(function(t){var n=t.markedSpans;if(n)for(var r=0;r<n.length;++r)null!=n[r].from&&e.push(n[r].marker)}),e},posFromIndex:function(e){var t,n=this.first,r=this.lineSeparator().length;return this.iter(function(i){var o=i.text.length+r;return o>e?(t=e,!0):(e-=o,void++n)}),me(this,Bo(n,t))},indexFromPos:function(e){e=me(this,e);var t=e.ch;if(e.line<this.first||e.ch<0)return 0;var n=this.lineSeparator().length;return this.iter(this.first,e.line,function(e){t+=e.text.length+n}),t},copy:function(e){var t=new Ca(Qr(this,this.first,this.first+this.size),this.modeOption,this.first,this.lineSep);return t.scrollTop=this.scrollTop,t.scrollLeft=this.scrollLeft,t.sel=this.sel,t.extend=!1,e&&(t.history.undoDepth=this.history.undoDepth,t.setHistory(this.getHistory())),t},linkedDoc:function(e){e||(e={});var t=this.first,n=this.first+this.size;null!=e.from&&e.from>t&&(t=e.from),null!=e.to&&e.to<n&&(n=e.to);var r=new Ca(Qr(this,t,n),e.mode||this.modeOption,t,this.lineSep);return e.sharedHist&&(r.history=this.history),(this.linked||(this.linked=[])).push({doc:r,sharedHist:e.sharedHist}),r.linked=[{doc:this,isParent:!0,sharedHist:e.sharedHist}],Zn(r,Xn(this)),r},unlinkDoc:function(t){if(t instanceof e&&(t=t.doc),this.linked)for(var n=0;n<this.linked.length;++n){var r=this.linked[n];if(r.doc==t){this.linked.splice(n,1),t.unlinkDoc(this),Jn(Xn(this));break}}if(t.history==this.history){var i=[t.id];Kr(t,function(e){i.push(e.id)},!0),t.history=new oi(null),t.history.done=gi(this.history.done,i),t.history.undone=gi(this.history.undone,i)}},iterLinkedDocs:function(e){Kr(this,e)},getMode:function(){return this.mode},getEditor:function(){return this.cm},splitLines:function(e){return this.lineSep?e.split(this.lineSep):tl(e)},lineSeparator:function(){return this.lineSep||"\n"}}),Ca.prototype.eachLine=Ca.prototype.iter;var La="iter insert remove copy getEditor constructor".split(" ");for(var Ta in Ca.prototype)Ca.prototype.hasOwnProperty(Ta)&&Pi(La,Ta)<0&&(e.prototype[Ta]=function(e){return function(){return e.apply(this.doc,arguments)}}(Ca.prototype[Ta]));Ai(Ca);var Ma=e.e_preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},Na=e.e_stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},Aa=e.e_stop=function(e){Ma(e),Na(e)},Ea=e.on=function(e,t,n){if(e.addEventListener)e.addEventListener(t,n,!1);else if(e.attachEvent)e.attachEvent("on"+t,n);else{var r=e._handlers||(e._handlers={}),i=r[t]||(r[t]=[]);i.push(n)}},Oa=[],Ia=e.off=function(e,t,n){if(e.removeEventListener)e.removeEventListener(t,n,!1);else if(e.detachEvent)e.detachEvent("on"+t,n);else for(var r=Si(e,t,!1),i=0;i<r.length;++i)if(r[i]==n){r.splice(i,1);break}},Pa=e.signal=function(e,t){var n=Si(e,t,!0);if(n.length)for(var r=Array.prototype.slice.call(arguments,2),i=0;i<n.length;++i)n[i].apply(null,r)},Ra=null,Da=30,Ha=e.Pass={toString:function(){return"CodeMirror.Pass"}},Wa={scroll:!1},Ba={origin:"*mouse"},_a={origin:"+move"};Ei.prototype.set=function(e,t){clearTimeout(this.id),this.id=setTimeout(t,e)};var Fa=e.countColumn=function(e,t,n,r,i){null==t&&(t=e.search(/[^\s\u00a0]/),-1==t&&(t=e.length));for(var o=r||0,a=i||0;;){var l=e.indexOf("	",o);if(0>l||l>=t)return a+(t-o);a+=l-o,a+=n-a%n,o=l+1}},za=e.findColumn=function(e,t,n){for(var r=0,i=0;;){var o=e.indexOf("	",r);-1==o&&(o=e.length);var a=o-r;if(o==e.length||i+a>=t)return r+Math.min(a,t-i);if(i+=o-r,i+=n-i%n,r=o+1,i>=t)return r}},ja=[""],Ua=function(e){e.select()};No?Ua=function(e){e.selectionStart=0,e.selectionEnd=e.value.length}:xo&&(Ua=function(e){try{e.select()}catch(t){}});var qa,Ga=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,Ya=e.isWordChar=function(e){return/\w/.test(e)||e>"€"&&(e.toUpperCase()!=e.toLowerCase()||Ga.test(e))},$a=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;qa=document.createRange?function(e,t,n,r){var i=document.createRange();return i.setEnd(r||e,n),i.setStart(e,t),i}:function(e,t,n){var r=document.body.createTextRange();try{r.moveToElementText(e.parentNode)}catch(i){return r}return r.collapse(!0),r.moveEnd("character",n),r.moveStart("character",t),r};var Va=e.contains=function(e,t){if(3==t.nodeType&&(t=t.parentNode),e.contains)return e.contains(t);do if(11==t.nodeType&&(t=t.host),t==e)return!0;while(t=t.parentNode)};xo&&11>bo&&(Gi=function(){try{return document.activeElement}catch(e){return document.body}});var Ka,Xa,Za=e.rmClass=function(e,t){var n=e.className,r=Yi(t).exec(n);if(r){var i=n.slice(r.index+r[0].length);e.className=n.slice(0,r.index)+(i?r[1]+i:"")}},Ja=e.addClass=function(e,t){var n=e.className;Yi(t).test(n)||(e.className+=(n?" ":"")+t)},Qa=!1,el=function(){if(xo&&9>bo)return!1;var e=ji("div");return"draggable"in e||"dragDrop"in e}(),tl=e.splitLines=3!="\n\nb".split(/\n/).length?function(e){for(var t=0,n=[],r=e.length;r>=t;){var i=e.indexOf("\n",t);-1==i&&(i=e.length);var o=e.slice(t,"\r"==e.charAt(i-1)?i-1:i),a=o.indexOf("\r");-1!=a?(n.push(o.slice(0,a)),t+=a+1):(n.push(o),t=i+1)}return n}:function(e){return e.split(/\r\n?|\n/)},nl=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch(t){return!1}}:function(e){try{var t=e.ownerDocument.selection.createRange()}catch(n){}return t&&t.parentElement()==e?0!=t.compareEndPoints("StartToEnd",t):!1},rl=function(){var e=ji("div");return"oncopy"in e?!0:(e.setAttribute("oncopy","return;"),"function"==typeof e.oncopy)}(),il=null,ol=e.keyNames={3:"Enter",8:"Backspace",9:"Tab",13:"Enter",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"CapsLock",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"PrintScrn",45:"Insert",46:"Delete",59:";",61:"=",91:"Mod",92:"Mod",93:"Mod",106:"*",107:"=",109:"-",110:".",111:"/",127:"Delete",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63232:"Up",63233:"Down",63234:"Left",63235:"Right",63272:"Delete",63273:"Home",63275:"End",63276:"PageUp",63277:"PageDown",63302:"Insert"};!function(){for(var e=0;10>e;e++)ol[e+48]=ol[e+96]=String(e);for(var e=65;90>=e;e++)ol[e]=String.fromCharCode(e);for(var e=1;12>=e;e++)ol[e+111]=ol[e+63235]="F"+e}();var al,ll=function(){function e(e){return 247>=e?n.charAt(e):e>=1424&&1524>=e?"R":e>=1536&&1773>=e?r.charAt(e-1536):e>=1774&&2220>=e?"r":e>=8192&&8203>=e?"w":8204==e?"b":"L"}function t(e,t,n){this.level=e,this.from=t,this.to=n}var n="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",r="rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm",i=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,o=/[stwN]/,a=/[LRr]/,l=/[Lb1n]/,s=/[1n]/,c="L";return function(n){if(!i.test(n))return!1;for(var r,u=n.length,f=[],h=0;u>h;++h)f.push(r=e(n.charCodeAt(h)));for(var h=0,d=c;u>h;++h){var r=f[h];"m"==r?f[h]=d:d=r}for(var h=0,p=c;u>h;++h){var r=f[h];"1"==r&&"r"==p?f[h]="n":a.test(r)&&(p=r,"r"==r&&(f[h]="R"))}for(var h=1,d=f[0];u-1>h;++h){var r=f[h];"+"==r&&"1"==d&&"1"==f[h+1]?f[h]="1":","!=r||d!=f[h+1]||"1"!=d&&"n"!=d||(f[h]=d),d=r}for(var h=0;u>h;++h){var r=f[h];if(","==r)f[h]="N";else if("%"==r){for(var m=h+1;u>m&&"%"==f[m];++m);for(var g=h&&"!"==f[h-1]||u>m&&"1"==f[m]?"1":"N",v=h;m>v;++v)f[v]=g;h=m-1}}for(var h=0,p=c;u>h;++h){var r=f[h];"L"==p&&"1"==r?f[h]="L":a.test(r)&&(p=r)}for(var h=0;u>h;++h)if(o.test(f[h])){for(var m=h+1;u>m&&o.test(f[m]);++m);for(var y="L"==(h?f[h-1]:c),x="L"==(u>m?f[m]:c),g=y||x?"L":"R",v=h;m>v;++v)f[v]=g;h=m-1}for(var b,w=[],h=0;u>h;)if(l.test(f[h])){var k=h;for(++h;u>h&&l.test(f[h]);++h);w.push(new t(0,k,h))}else{var S=h,C=w.length;for(++h;u>h&&"L"!=f[h];++h);for(var v=S;h>v;)if(s.test(f[v])){v>S&&w.splice(C,0,new t(1,S,v));var L=v;for(++v;h>v&&s.test(f[v]);++v);w.splice(C,0,new t(2,L,v)),S=v}else++v;h>S&&w.splice(C,0,new t(1,S,h))}return 1==w[0].level&&(b=n.match(/^\s+/))&&(w[0].from=b[0].length,w.unshift(new t(0,0,b[0].length))),1==Ii(w).level&&(b=n.match(/\s+$/))&&(Ii(w).to-=b[0].length,w.push(new t(0,u-b[0].length,u))),2==w[0].level&&w.unshift(new t(1,w[0].to,w[0].to)),w[0].level!=Ii(w).level&&w.push(new t(w[0].level,u,u)),w}}();return e.version="5.15.2",e})},{}],11:[function(t,n,r){!function(i){"object"==typeof r&&"object"==typeof n?i(t("../../lib/codemirror"),t("../markdown/markdown"),t("../../addon/mode/overlay")):"function"==typeof e&&e.amd?e(["../../lib/codemirror","../markdown/markdown","../../addon/mode/overlay"],i):i(CodeMirror)}(function(e){"use strict";var t=/^((?:(?:aaas?|about|acap|adiumxtra|af[ps]|aim|apt|attachment|aw|beshare|bitcoin|bolo|callto|cap|chrome(?:-extension)?|cid|coap|com-eventbrite-attendee|content|crid|cvs|data|dav|dict|dlna-(?:playcontainer|playsingle)|dns|doi|dtn|dvb|ed2k|facetime|feed|file|finger|fish|ftp|geo|gg|git|gizmoproject|go|gopher|gtalk|h323|hcp|https?|iax|icap|icon|im|imap|info|ipn|ipp|irc[6s]?|iris(?:\.beep|\.lwz|\.xpc|\.xpcs)?|itms|jar|javascript|jms|keyparc|lastfm|ldaps?|magnet|mailto|maps|market|message|mid|mms|ms-help|msnim|msrps?|mtqp|mumble|mupdate|mvn|news|nfs|nih?|nntp|notes|oid|opaquelocktoken|palm|paparazzi|platform|pop|pres|proxy|psyc|query|res(?:ource)?|rmi|rsync|rtmp|rtsp|secondlife|service|session|sftp|sgn|shttp|sieve|sips?|skype|sm[bs]|snmp|soap\.beeps?|soldat|spotify|ssh|steam|svn|tag|teamspeak|tel(?:net)?|tftp|things|thismessage|tip|tn3270|tv|udp|unreal|urn|ut2004|vemmi|ventrilo|view-source|webcal|wss?|wtai|wyciwyg|xcon(?:-userid)?|xfire|xmlrpc\.beeps?|xmpp|xri|ymsgr|z39\.50[rs]?):(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]|\([^\s()<>]*\))+(?:\([^\s()<>]*\)|[^\s`*!()\[\]{};:'".,<>?«»“”‘’]))/i;e.defineMode("gfm",function(n,r){function i(e){return e.code=!1,null}var o=0,a={startState:function(){return{code:!1,codeBlock:!1,ateSpace:!1}},copyState:function(e){return{code:e.code,codeBlock:e.codeBlock,ateSpace:e.ateSpace}},token:function(e,n){if(n.combineTokens=null,n.codeBlock)return e.match(/^```+/)?(n.codeBlock=!1,null):(e.skipToEnd(),null);if(e.sol()&&(n.code=!1),e.sol()&&e.match(/^```+/))return e.skipToEnd(),n.codeBlock=!0,null;if("`"===e.peek()){e.next();var i=e.pos;e.eatWhile("`");var a=1+e.pos-i;return n.code?a===o&&(n.code=!1):(o=a,n.code=!0),null}if(n.code)return e.next(),null;if(e.eatSpace())return n.ateSpace=!0,null;if((e.sol()||n.ateSpace)&&(n.ateSpace=!1,r.gitHubSpice!==!1)){if(e.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+@)?(?:[a-f0-9]{7,40}\b)/))return n.combineTokens=!0,"link";if(e.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+)?#[0-9]+\b/))return n.combineTokens=!0,"link"}return e.match(t)&&"]("!=e.string.slice(e.start-2,e.start)&&(0==e.start||/\W/.test(e.string.charAt(e.start-1)))?(n.combineTokens=!0,"link"):(e.next(),null)},blankLine:i},l={underscoresBreakWords:!1,taskLists:!0,fencedCodeBlocks:"```",strikethrough:!0};for(var s in r)l[s]=r[s];return l.name="markdown",e.overlayMode(e.getMode(n,l),a)},"markdown"),e.defineMIME("text/x-gfm","gfm")})},{"../../addon/mode/overlay":8,"../../lib/codemirror":10,"../markdown/markdown":12}],12:[function(t,n,r){!function(i){"object"==typeof r&&"object"==typeof n?i(t("../../lib/codemirror"),t("../xml/xml"),t("../meta")):"function"==typeof e&&e.amd?e(["../../lib/codemirror","../xml/xml","../meta"],i):i(CodeMirror)}(function(e){"use strict";e.defineMode("markdown",function(t,n){function r(n){if(e.findModeByName){var r=e.findModeByName(n);r&&(n=r.mime||r.mimes[0])}var i=e.getMode(t,n);return"null"==i.name?null:i}function i(e,t,n){return t.f=t.inline=n,n(e,t)}function o(e,t,n){return t.f=t.block=n,n(e,t)}function a(e){return!e||!/\S/.test(e.string)}function l(e){return e.linkTitle=!1,e.em=!1,e.strong=!1,e.strikethrough=!1,e.quote=0,e.indentedCode=!1,k&&e.f==c&&(e.f=p,e.block=s),e.trailingSpace=0,e.trailingSpaceNewLine=!1,e.prevLine=e.thisLine,e.thisLine=null,null}function s(t,o){var l=t.sol(),s=o.list!==!1,c=o.indentedCode;o.indentedCode=!1,s&&(o.indentationDiff>=0?(o.indentationDiff<4&&(o.indentation-=o.indentationDiff),o.list=null):o.indentation>0?o.list=null:o.list=!1);var f=null;if(o.indentationDiff>=4)return t.skipToEnd(),c||a(o.prevLine)?(o.indentation-=4,o.indentedCode=!0,S.code):null;if(t.eatSpace())return null;if((f=t.match(A))&&f[1].length<=6)return o.header=f[1].length,n.highlightFormatting&&(o.formatting="header"),o.f=o.inline,h(o);if(!(a(o.prevLine)||o.quote||s||c)&&(f=t.match(E)))return o.header="="==f[0].charAt(0)?1:2,n.highlightFormatting&&(o.formatting="header"),o.f=o.inline,h(o);if(t.eat(">"))return o.quote=l?1:o.quote+1,n.highlightFormatting&&(o.formatting="quote"),t.eatSpace(),h(o);if("["===t.peek())return i(t,o,y);if(t.match(L,!0))return o.hr=!0,S.hr;if((a(o.prevLine)||s)&&(t.match(T,!1)||t.match(M,!1))){var d=null;for(t.match(T,!0)?d="ul":(t.match(M,!0),d="ol"),o.indentation=t.column()+t.current().length,o.list=!0;o.listStack&&t.column()<o.listStack[o.listStack.length-1];)o.listStack.pop();return o.listStack.push(o.indentation),n.taskLists&&t.match(N,!1)&&(o.taskList=!0),o.f=o.inline,n.highlightFormatting&&(o.formatting=["list","list-"+d]),h(o)}return n.fencedCodeBlocks&&(f=t.match(I,!0))?(o.fencedChars=f[1],o.localMode=r(f[2]),o.localMode&&(o.localState=e.startState(o.localMode)),o.f=o.block=u,n.highlightFormatting&&(o.formatting="code-block"),o.code=-1,h(o)):i(t,o,o.inline)}function c(t,n){var r=w.token(t,n.htmlState);if(!k){var i=e.innerMode(w,n.htmlState);("xml"==i.mode.name&&null===i.state.tagStart&&!i.state.context&&i.state.tokenize.isInText||n.md_inside&&t.current().indexOf(">")>-1)&&(n.f=p,n.block=s,n.htmlState=null)}return r}function u(e,t){return t.fencedChars&&e.match(t.fencedChars,!1)?(t.localMode=t.localState=null,t.f=t.block=f,null):t.localMode?t.localMode.token(e,t.localState):(e.skipToEnd(),S.code)}function f(e,t){e.match(t.fencedChars),t.block=s,t.f=p,t.fencedChars=null,n.highlightFormatting&&(t.formatting="code-block"),t.code=1;var r=h(t);return t.code=0,r}function h(e){var t=[];if(e.formatting){t.push(S.formatting),"string"==typeof e.formatting&&(e.formatting=[e.formatting]);for(var r=0;r<e.formatting.length;r++)t.push(S.formatting+"-"+e.formatting[r]),"header"===e.formatting[r]&&t.push(S.formatting+"-"+e.formatting[r]+"-"+e.header),"quote"===e.formatting[r]&&(!n.maxBlockquoteDepth||n.maxBlockquoteDepth>=e.quote?t.push(S.formatting+"-"+e.formatting[r]+"-"+e.quote):t.push("error"))}if(e.taskOpen)return t.push("meta"),t.length?t.join(" "):null;if(e.taskClosed)return t.push("property"),t.length?t.join(" "):null;if(e.linkHref?t.push(S.linkHref,"url"):(e.strong&&t.push(S.strong),e.em&&t.push(S.em),e.strikethrough&&t.push(S.strikethrough),e.linkText&&t.push(S.linkText),e.code&&t.push(S.code)),e.header&&t.push(S.header,S.header+"-"+e.header),e.quote&&(t.push(S.quote),!n.maxBlockquoteDepth||n.maxBlockquoteDepth>=e.quote?t.push(S.quote+"-"+e.quote):t.push(S.quote+"-"+n.maxBlockquoteDepth)),e.list!==!1){var i=(e.listStack.length-1)%3;i?1===i?t.push(S.list2):t.push(S.list3):t.push(S.list1)}return e.trailingSpaceNewLine?t.push("trailing-space-new-line"):e.trailingSpace&&t.push("trailing-space-"+(e.trailingSpace%2?"a":"b")),t.length?t.join(" "):null}function d(e,t){return e.match(O,!0)?h(t):void 0}function p(t,r){var i=r.text(t,r);if("undefined"!=typeof i)return i;if(r.list)return r.list=null,h(r);if(r.taskList){var a="x"!==t.match(N,!0)[1];return a?r.taskOpen=!0:r.taskClosed=!0,n.highlightFormatting&&(r.formatting="task"),r.taskList=!1,h(r)}if(r.taskOpen=!1,r.taskClosed=!1,r.header&&t.match(/^#+$/,!0))return n.highlightFormatting&&(r.formatting="header"),
-h(r);var l=t.sol(),s=t.next();if(r.linkTitle){r.linkTitle=!1;var u=s;"("===s&&(u=")"),u=(u+"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1");var f="^\\s*(?:[^"+u+"\\\\]+|\\\\\\\\|\\\\.)"+u;if(t.match(new RegExp(f),!0))return S.linkHref}if("`"===s){var d=r.formatting;n.highlightFormatting&&(r.formatting="code"),t.eatWhile("`");var p=t.current().length;if(0==r.code)return r.code=p,h(r);if(p==r.code){var v=h(r);return r.code=0,v}return r.formatting=d,h(r)}if(r.code)return h(r);if("\\"===s&&(t.next(),n.highlightFormatting)){var y=h(r),x=S.formatting+"-escape";return y?y+" "+x:x}if("!"===s&&t.match(/\[[^\]]*\] ?(?:\(|\[)/,!1))return t.match(/\[[^\]]*\]/),r.inline=r.f=g,S.image;if("["===s&&t.match(/[^\]]*\](\(.*\)| ?\[.*?\])/,!1))return r.linkText=!0,n.highlightFormatting&&(r.formatting="link"),h(r);if("]"===s&&r.linkText&&t.match(/\(.*?\)| ?\[.*?\]/,!1)){n.highlightFormatting&&(r.formatting="link");var y=h(r);return r.linkText=!1,r.inline=r.f=g,y}if("<"===s&&t.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/,!1)){r.f=r.inline=m,n.highlightFormatting&&(r.formatting="link");var y=h(r);return y?y+=" ":y="",y+S.linkInline}if("<"===s&&t.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/,!1)){r.f=r.inline=m,n.highlightFormatting&&(r.formatting="link");var y=h(r);return y?y+=" ":y="",y+S.linkEmail}if("<"===s&&t.match(/^(!--|\w)/,!1)){var b=t.string.indexOf(">",t.pos);if(-1!=b){var k=t.string.substring(t.start,b);/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(k)&&(r.md_inside=!0)}return t.backUp(1),r.htmlState=e.startState(w),o(t,r,c)}if("<"===s&&t.match(/^\/\w*?>/))return r.md_inside=!1,"tag";var C=!1;if(!n.underscoresBreakWords&&"_"===s&&"_"!==t.peek()&&t.match(/(\w)/,!1)){var L=t.pos-2;if(L>=0){var T=t.string.charAt(L);"_"!==T&&T.match(/(\w)/,!1)&&(C=!0)}}if("*"===s||"_"===s&&!C)if(l&&" "===t.peek());else{if(r.strong===s&&t.eat(s)){n.highlightFormatting&&(r.formatting="strong");var v=h(r);return r.strong=!1,v}if(!r.strong&&t.eat(s))return r.strong=s,n.highlightFormatting&&(r.formatting="strong"),h(r);if(r.em===s){n.highlightFormatting&&(r.formatting="em");var v=h(r);return r.em=!1,v}if(!r.em)return r.em=s,n.highlightFormatting&&(r.formatting="em"),h(r)}else if(" "===s&&(t.eat("*")||t.eat("_"))){if(" "===t.peek())return h(r);t.backUp(1)}if(n.strikethrough)if("~"===s&&t.eatWhile(s)){if(r.strikethrough){n.highlightFormatting&&(r.formatting="strikethrough");var v=h(r);return r.strikethrough=!1,v}if(t.match(/^[^\s]/,!1))return r.strikethrough=!0,n.highlightFormatting&&(r.formatting="strikethrough"),h(r)}else if(" "===s&&t.match(/^~~/,!0)){if(" "===t.peek())return h(r);t.backUp(2)}return" "===s&&(t.match(/ +$/,!1)?r.trailingSpace++:r.trailingSpace&&(r.trailingSpaceNewLine=!0)),h(r)}function m(e,t){var r=e.next();if(">"===r){t.f=t.inline=p,n.highlightFormatting&&(t.formatting="link");var i=h(t);return i?i+=" ":i="",i+S.linkInline}return e.match(/^[^>]+/,!0),S.linkInline}function g(e,t){if(e.eatSpace())return null;var r=e.next();return"("===r||"["===r?(t.f=t.inline=v("("===r?")":"]",0),n.highlightFormatting&&(t.formatting="link-string"),t.linkHref=!0,h(t)):"error"}function v(e){return function(t,r){var i=t.next();if(i===e){r.f=r.inline=p,n.highlightFormatting&&(r.formatting="link-string");var o=h(r);return r.linkHref=!1,o}return t.match(P[e]),r.linkHref=!0,h(r)}}function y(e,t){return e.match(/^([^\]\\]|\\.)*\]:/,!1)?(t.f=x,e.next(),n.highlightFormatting&&(t.formatting="link"),t.linkText=!0,h(t)):i(e,t,p)}function x(e,t){if(e.match(/^\]:/,!0)){t.f=t.inline=b,n.highlightFormatting&&(t.formatting="link");var r=h(t);return t.linkText=!1,r}return e.match(/^([^\]\\]|\\.)+/,!0),S.linkText}function b(e,t){return e.eatSpace()?null:(e.match(/^[^\s]+/,!0),void 0===e.peek()?t.linkTitle=!0:e.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/,!0),t.f=t.inline=p,S.linkHref+" url")}var w=e.getMode(t,"text/html"),k="null"==w.name;void 0===n.highlightFormatting&&(n.highlightFormatting=!1),void 0===n.maxBlockquoteDepth&&(n.maxBlockquoteDepth=0),void 0===n.underscoresBreakWords&&(n.underscoresBreakWords=!0),void 0===n.taskLists&&(n.taskLists=!1),void 0===n.strikethrough&&(n.strikethrough=!1),void 0===n.tokenTypeOverrides&&(n.tokenTypeOverrides={});var S={header:"header",code:"comment",quote:"quote",list1:"variable-2",list2:"variable-3",list3:"keyword",hr:"hr",image:"tag",formatting:"formatting",linkInline:"link",linkEmail:"link",linkText:"link",linkHref:"string",em:"em",strong:"strong",strikethrough:"strikethrough"};for(var C in S)S.hasOwnProperty(C)&&n.tokenTypeOverrides[C]&&(S[C]=n.tokenTypeOverrides[C]);var L=/^([*\-_])(?:\s*\1){2,}\s*$/,T=/^[*\-+]\s+/,M=/^[0-9]+([.)])\s+/,N=/^\[(x| )\](?=\s)/,A=n.allowAtxHeaderWithoutSpace?/^(#+)/:/^(#+)(?: |$)/,E=/^ *(?:\={1,}|-{1,})\s*$/,O=/^[^#!\[\]*_\\<>` "'(~]+/,I=new RegExp("^("+(n.fencedCodeBlocks===!0?"~~~+|```+":n.fencedCodeBlocks)+")[ \\t]*([\\w+#-]*)"),P={")":/^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/,"]":/^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\\]]|\\.)*\])*?(?=\])/},R={startState:function(){return{f:s,prevLine:null,thisLine:null,block:s,htmlState:null,indentation:0,inline:p,text:d,formatting:!1,linkText:!1,linkHref:!1,linkTitle:!1,code:0,em:!1,strong:!1,header:0,hr:!1,taskList:!1,list:!1,listStack:[],quote:0,trailingSpace:0,trailingSpaceNewLine:!1,strikethrough:!1,fencedChars:null}},copyState:function(t){return{f:t.f,prevLine:t.prevLine,thisLine:t.thisLine,block:t.block,htmlState:t.htmlState&&e.copyState(w,t.htmlState),indentation:t.indentation,localMode:t.localMode,localState:t.localMode?e.copyState(t.localMode,t.localState):null,inline:t.inline,text:t.text,formatting:!1,linkTitle:t.linkTitle,code:t.code,em:t.em,strong:t.strong,strikethrough:t.strikethrough,header:t.header,hr:t.hr,taskList:t.taskList,list:t.list,listStack:t.listStack.slice(0),quote:t.quote,indentedCode:t.indentedCode,trailingSpace:t.trailingSpace,trailingSpaceNewLine:t.trailingSpaceNewLine,md_inside:t.md_inside,fencedChars:t.fencedChars}},token:function(e,t){if(t.formatting=!1,e!=t.thisLine){var n=t.header||t.hr;if(t.header=0,t.hr=!1,e.match(/^\s*$/,!0)||n){if(l(t),!n)return null;t.prevLine=null}t.prevLine=t.thisLine,t.thisLine=e,t.taskList=!1,t.trailingSpace=0,t.trailingSpaceNewLine=!1,t.f=t.block;var r=e.match(/^\s*/,!0)[0].replace(/\t/g,"    ").length;if(t.indentationDiff=Math.min(r-t.indentation,4),t.indentation=t.indentation+t.indentationDiff,r>0)return null}return t.f(e,t)},innerMode:function(e){return e.block==c?{state:e.htmlState,mode:w}:e.localState?{state:e.localState,mode:e.localMode}:{state:e,mode:R}},blankLine:l,getType:h,fold:"markdown"};return R},"xml"),e.defineMIME("text/x-markdown","markdown")})},{"../../lib/codemirror":10,"../meta":13,"../xml/xml":14}],13:[function(t,n,r){!function(i){"object"==typeof r&&"object"==typeof n?i(t("../lib/codemirror")):"function"==typeof e&&e.amd?e(["../lib/codemirror"],i):i(CodeMirror)}(function(e){"use strict";e.modeInfo=[{name:"APL",mime:"text/apl",mode:"apl",ext:["dyalog","apl"]},{name:"PGP",mimes:["application/pgp","application/pgp-keys","application/pgp-signature"],mode:"asciiarmor",ext:["pgp"]},{name:"ASN.1",mime:"text/x-ttcn-asn",mode:"asn.1",ext:["asn","asn1"]},{name:"Asterisk",mime:"text/x-asterisk",mode:"asterisk",file:/^extensions\.conf$/i},{name:"Brainfuck",mime:"text/x-brainfuck",mode:"brainfuck",ext:["b","bf"]},{name:"C",mime:"text/x-csrc",mode:"clike",ext:["c","h"]},{name:"C++",mime:"text/x-c++src",mode:"clike",ext:["cpp","c++","cc","cxx","hpp","h++","hh","hxx"],alias:["cpp"]},{name:"Cobol",mime:"text/x-cobol",mode:"cobol",ext:["cob","cpy"]},{name:"C#",mime:"text/x-csharp",mode:"clike",ext:["cs"],alias:["csharp"]},{name:"Clojure",mime:"text/x-clojure",mode:"clojure",ext:["clj","cljc","cljx"]},{name:"ClojureScript",mime:"text/x-clojurescript",mode:"clojure",ext:["cljs"]},{name:"Closure Stylesheets (GSS)",mime:"text/x-gss",mode:"css",ext:["gss"]},{name:"CMake",mime:"text/x-cmake",mode:"cmake",ext:["cmake","cmake.in"],file:/^CMakeLists.txt$/},{name:"CoffeeScript",mime:"text/x-coffeescript",mode:"coffeescript",ext:["coffee"],alias:["coffee","coffee-script"]},{name:"Common Lisp",mime:"text/x-common-lisp",mode:"commonlisp",ext:["cl","lisp","el"],alias:["lisp"]},{name:"Cypher",mime:"application/x-cypher-query",mode:"cypher",ext:["cyp","cypher"]},{name:"Cython",mime:"text/x-cython",mode:"python",ext:["pyx","pxd","pxi"]},{name:"Crystal",mime:"text/x-crystal",mode:"crystal",ext:["cr"]},{name:"CSS",mime:"text/css",mode:"css",ext:["css"]},{name:"CQL",mime:"text/x-cassandra",mode:"sql",ext:["cql"]},{name:"D",mime:"text/x-d",mode:"d",ext:["d"]},{name:"Dart",mimes:["application/dart","text/x-dart"],mode:"dart",ext:["dart"]},{name:"diff",mime:"text/x-diff",mode:"diff",ext:["diff","patch"]},{name:"Django",mime:"text/x-django",mode:"django"},{name:"Dockerfile",mime:"text/x-dockerfile",mode:"dockerfile",file:/^Dockerfile$/},{name:"DTD",mime:"application/xml-dtd",mode:"dtd",ext:["dtd"]},{name:"Dylan",mime:"text/x-dylan",mode:"dylan",ext:["dylan","dyl","intr"]},{name:"EBNF",mime:"text/x-ebnf",mode:"ebnf"},{name:"ECL",mime:"text/x-ecl",mode:"ecl",ext:["ecl"]},{name:"edn",mime:"application/edn",mode:"clojure",ext:["edn"]},{name:"Eiffel",mime:"text/x-eiffel",mode:"eiffel",ext:["e"]},{name:"Elm",mime:"text/x-elm",mode:"elm",ext:["elm"]},{name:"Embedded Javascript",mime:"application/x-ejs",mode:"htmlembedded",ext:["ejs"]},{name:"Embedded Ruby",mime:"application/x-erb",mode:"htmlembedded",ext:["erb"]},{name:"Erlang",mime:"text/x-erlang",mode:"erlang",ext:["erl"]},{name:"Factor",mime:"text/x-factor",mode:"factor",ext:["factor"]},{name:"FCL",mime:"text/x-fcl",mode:"fcl"},{name:"Forth",mime:"text/x-forth",mode:"forth",ext:["forth","fth","4th"]},{name:"Fortran",mime:"text/x-fortran",mode:"fortran",ext:["f","for","f77","f90"]},{name:"F#",mime:"text/x-fsharp",mode:"mllike",ext:["fs"],alias:["fsharp"]},{name:"Gas",mime:"text/x-gas",mode:"gas",ext:["s"]},{name:"Gherkin",mime:"text/x-feature",mode:"gherkin",ext:["feature"]},{name:"GitHub Flavored Markdown",mime:"text/x-gfm",mode:"gfm",file:/^(readme|contributing|history).md$/i},{name:"Go",mime:"text/x-go",mode:"go",ext:["go"]},{name:"Groovy",mime:"text/x-groovy",mode:"groovy",ext:["groovy","gradle"]},{name:"HAML",mime:"text/x-haml",mode:"haml",ext:["haml"]},{name:"Haskell",mime:"text/x-haskell",mode:"haskell",ext:["hs"]},{name:"Haskell (Literate)",mime:"text/x-literate-haskell",mode:"haskell-literate",ext:["lhs"]},{name:"Haxe",mime:"text/x-haxe",mode:"haxe",ext:["hx"]},{name:"HXML",mime:"text/x-hxml",mode:"haxe",ext:["hxml"]},{name:"ASP.NET",mime:"application/x-aspx",mode:"htmlembedded",ext:["aspx"],alias:["asp","aspx"]},{name:"HTML",mime:"text/html",mode:"htmlmixed",ext:["html","htm"],alias:["xhtml"]},{name:"HTTP",mime:"message/http",mode:"http"},{name:"IDL",mime:"text/x-idl",mode:"idl",ext:["pro"]},{name:"Jade",mime:"text/x-jade",mode:"jade",ext:["jade"]},{name:"Java",mime:"text/x-java",mode:"clike",ext:["java"]},{name:"Java Server Pages",mime:"application/x-jsp",mode:"htmlembedded",ext:["jsp"],alias:["jsp"]},{name:"JavaScript",mimes:["text/javascript","text/ecmascript","application/javascript","application/x-javascript","application/ecmascript"],mode:"javascript",ext:["js"],alias:["ecmascript","js","node"]},{name:"JSON",mimes:["application/json","application/x-json"],mode:"javascript",ext:["json","map"],alias:["json5"]},{name:"JSON-LD",mime:"application/ld+json",mode:"javascript",ext:["jsonld"],alias:["jsonld"]},{name:"JSX",mime:"text/jsx",mode:"jsx",ext:["jsx"]},{name:"Jinja2",mime:"null",mode:"jinja2"},{name:"Julia",mime:"text/x-julia",mode:"julia",ext:["jl"]},{name:"Kotlin",mime:"text/x-kotlin",mode:"clike",ext:["kt"]},{name:"LESS",mime:"text/x-less",mode:"css",ext:["less"]},{name:"LiveScript",mime:"text/x-livescript",mode:"livescript",ext:["ls"],alias:["ls"]},{name:"Lua",mime:"text/x-lua",mode:"lua",ext:["lua"]},{name:"Markdown",mime:"text/x-markdown",mode:"markdown",ext:["markdown","md","mkd"]},{name:"mIRC",mime:"text/mirc",mode:"mirc"},{name:"MariaDB SQL",mime:"text/x-mariadb",mode:"sql"},{name:"Mathematica",mime:"text/x-mathematica",mode:"mathematica",ext:["m","nb"]},{name:"Modelica",mime:"text/x-modelica",mode:"modelica",ext:["mo"]},{name:"MUMPS",mime:"text/x-mumps",mode:"mumps",ext:["mps"]},{name:"MS SQL",mime:"text/x-mssql",mode:"sql"},{name:"mbox",mime:"application/mbox",mode:"mbox",ext:["mbox"]},{name:"MySQL",mime:"text/x-mysql",mode:"sql"},{name:"Nginx",mime:"text/x-nginx-conf",mode:"nginx",file:/nginx.*\.conf$/i},{name:"NSIS",mime:"text/x-nsis",mode:"nsis",ext:["nsh","nsi"]},{name:"NTriples",mime:"text/n-triples",mode:"ntriples",ext:["nt"]},{name:"Objective C",mime:"text/x-objectivec",mode:"clike",ext:["m","mm"],alias:["objective-c","objc"]},{name:"OCaml",mime:"text/x-ocaml",mode:"mllike",ext:["ml","mli","mll","mly"]},{name:"Octave",mime:"text/x-octave",mode:"octave",ext:["m"]},{name:"Oz",mime:"text/x-oz",mode:"oz",ext:["oz"]},{name:"Pascal",mime:"text/x-pascal",mode:"pascal",ext:["p","pas"]},{name:"PEG.js",mime:"null",mode:"pegjs",ext:["jsonld"]},{name:"Perl",mime:"text/x-perl",mode:"perl",ext:["pl","pm"]},{name:"PHP",mime:"application/x-httpd-php",mode:"php",ext:["php","php3","php4","php5","phtml"]},{name:"Pig",mime:"text/x-pig",mode:"pig",ext:["pig"]},{name:"Plain Text",mime:"text/plain",mode:"null",ext:["txt","text","conf","def","list","log"]},{name:"PLSQL",mime:"text/x-plsql",mode:"sql",ext:["pls"]},{name:"PowerShell",mime:"application/x-powershell",mode:"powershell",ext:["ps1","psd1","psm1"]},{name:"Properties files",mime:"text/x-properties",mode:"properties",ext:["properties","ini","in"],alias:["ini","properties"]},{name:"ProtoBuf",mime:"text/x-protobuf",mode:"protobuf",ext:["proto"]},{name:"Python",mime:"text/x-python",mode:"python",ext:["BUILD","bzl","py","pyw"],file:/^(BUCK|BUILD)$/},{name:"Puppet",mime:"text/x-puppet",mode:"puppet",ext:["pp"]},{name:"Q",mime:"text/x-q",mode:"q",ext:["q"]},{name:"R",mime:"text/x-rsrc",mode:"r",ext:["r"],alias:["rscript"]},{name:"reStructuredText",mime:"text/x-rst",mode:"rst",ext:["rst"],alias:["rst"]},{name:"RPM Changes",mime:"text/x-rpm-changes",mode:"rpm"},{name:"RPM Spec",mime:"text/x-rpm-spec",mode:"rpm",ext:["spec"]},{name:"Ruby",mime:"text/x-ruby",mode:"ruby",ext:["rb"],alias:["jruby","macruby","rake","rb","rbx"]},{name:"Rust",mime:"text/x-rustsrc",mode:"rust",ext:["rs"]},{name:"SAS",mime:"text/x-sas",mode:"sas",ext:["sas"]},{name:"Sass",mime:"text/x-sass",mode:"sass",ext:["sass"]},{name:"Scala",mime:"text/x-scala",mode:"clike",ext:["scala"]},{name:"Scheme",mime:"text/x-scheme",mode:"scheme",ext:["scm","ss"]},{name:"SCSS",mime:"text/x-scss",mode:"css",ext:["scss"]},{name:"Shell",mime:"text/x-sh",mode:"shell",ext:["sh","ksh","bash"],alias:["bash","sh","zsh"],file:/^PKGBUILD$/},{name:"Sieve",mime:"application/sieve",mode:"sieve",ext:["siv","sieve"]},{name:"Slim",mimes:["text/x-slim","application/x-slim"],mode:"slim",ext:["slim"]},{name:"Smalltalk",mime:"text/x-stsrc",mode:"smalltalk",ext:["st"]},{name:"Smarty",mime:"text/x-smarty",mode:"smarty",ext:["tpl"]},{name:"Solr",mime:"text/x-solr",mode:"solr"},{name:"Soy",mime:"text/x-soy",mode:"soy",ext:["soy"],alias:["closure template"]},{name:"SPARQL",mime:"application/sparql-query",mode:"sparql",ext:["rq","sparql"],alias:["sparul"]},{name:"Spreadsheet",mime:"text/x-spreadsheet",mode:"spreadsheet",alias:["excel","formula"]},{name:"SQL",mime:"text/x-sql",mode:"sql",ext:["sql"]},{name:"Squirrel",mime:"text/x-squirrel",mode:"clike",ext:["nut"]},{name:"Swift",mime:"text/x-swift",mode:"swift",ext:["swift"]},{name:"sTeX",mime:"text/x-stex",mode:"stex"},{name:"LaTeX",mime:"text/x-latex",mode:"stex",ext:["text","ltx"],alias:["tex"]},{name:"SystemVerilog",mime:"text/x-systemverilog",mode:"verilog",ext:["v"]},{name:"Tcl",mime:"text/x-tcl",mode:"tcl",ext:["tcl"]},{name:"Textile",mime:"text/x-textile",mode:"textile",ext:["textile"]},{name:"TiddlyWiki ",mime:"text/x-tiddlywiki",mode:"tiddlywiki"},{name:"Tiki wiki",mime:"text/tiki",mode:"tiki"},{name:"TOML",mime:"text/x-toml",mode:"toml",ext:["toml"]},{name:"Tornado",mime:"text/x-tornado",mode:"tornado"},{name:"troff",mime:"text/troff",mode:"troff",ext:["1","2","3","4","5","6","7","8","9"]},{name:"TTCN",mime:"text/x-ttcn",mode:"ttcn",ext:["ttcn","ttcn3","ttcnpp"]},{name:"TTCN_CFG",mime:"text/x-ttcn-cfg",mode:"ttcn-cfg",ext:["cfg"]},{name:"Turtle",mime:"text/turtle",mode:"turtle",ext:["ttl"]},{name:"TypeScript",mime:"application/typescript",mode:"javascript",ext:["ts"],alias:["ts"]},{name:"Twig",mime:"text/x-twig",mode:"twig"},{name:"Web IDL",mime:"text/x-webidl",mode:"webidl",ext:["webidl"]},{name:"VB.NET",mime:"text/x-vb",mode:"vb",ext:["vb"]},{name:"VBScript",mime:"text/vbscript",mode:"vbscript",ext:["vbs"]},{name:"Velocity",mime:"text/velocity",mode:"velocity",ext:["vtl"]},{name:"Verilog",mime:"text/x-verilog",mode:"verilog",ext:["v"]},{name:"VHDL",mime:"text/x-vhdl",mode:"vhdl",ext:["vhd","vhdl"]},{name:"XML",mimes:["application/xml","text/xml"],mode:"xml",ext:["xml","xsl","xsd"],alias:["rss","wsdl","xsd"]},{name:"XQuery",mime:"application/xquery",mode:"xquery",ext:["xy","xquery"]},{name:"Yacas",mime:"text/x-yacas",mode:"yacas",ext:["ys"]},{name:"YAML",mime:"text/x-yaml",mode:"yaml",ext:["yaml","yml"],alias:["yml"]},{name:"Z80",mime:"text/x-z80",mode:"z80",ext:["z80"]},{name:"mscgen",mime:"text/x-mscgen",mode:"mscgen",ext:["mscgen","mscin","msc"]},{name:"xu",mime:"text/x-xu",mode:"mscgen",ext:["xu"]},{name:"msgenny",mime:"text/x-msgenny",mode:"mscgen",ext:["msgenny"]}];for(var t=0;t<e.modeInfo.length;t++){var n=e.modeInfo[t];n.mimes&&(n.mime=n.mimes[0])}e.findModeByMIME=function(t){t=t.toLowerCase();for(var n=0;n<e.modeInfo.length;n++){var r=e.modeInfo[n];if(r.mime==t)return r;if(r.mimes)for(var i=0;i<r.mimes.length;i++)if(r.mimes[i]==t)return r}},e.findModeByExtension=function(t){for(var n=0;n<e.modeInfo.length;n++){var r=e.modeInfo[n];if(r.ext)for(var i=0;i<r.ext.length;i++)if(r.ext[i]==t)return r}},e.findModeByFileName=function(t){for(var n=0;n<e.modeInfo.length;n++){var r=e.modeInfo[n];if(r.file&&r.file.test(t))return r}var i=t.lastIndexOf("."),o=i>-1&&t.substring(i+1,t.length);return o?e.findModeByExtension(o):void 0},e.findModeByName=function(t){t=t.toLowerCase();for(var n=0;n<e.modeInfo.length;n++){var r=e.modeInfo[n];if(r.name.toLowerCase()==t)return r;if(r.alias)for(var i=0;i<r.alias.length;i++)if(r.alias[i].toLowerCase()==t)return r}}})},{"../lib/codemirror":10}],14:[function(t,n,r){!function(i){"object"==typeof r&&"object"==typeof n?i(t("../../lib/codemirror")):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],i):i(CodeMirror)}(function(e){"use strict";var t={autoSelfClosers:{area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},implicitlyClosed:{dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},contextGrabbers:{dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}},doNotIndent:{pre:!0},allowUnquoted:!0,allowMissing:!0,caseFold:!0},n={autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!1,allowMissing:!1,caseFold:!1};e.defineMode("xml",function(r,i){function o(e,t){function n(n){return t.tokenize=n,n(e,t)}var r=e.next();if("<"==r)return e.eat("!")?e.eat("[")?e.match("CDATA[")?n(s("atom","]]>")):null:e.match("--")?n(s("comment","-->")):e.match("DOCTYPE",!0,!0)?(e.eatWhile(/[\w\._\-]/),n(c(1))):null:e.eat("?")?(e.eatWhile(/[\w\._\-]/),t.tokenize=s("meta","?>"),"meta"):(T=e.eat("/")?"closeTag":"openTag",t.tokenize=a,"tag bracket");if("&"==r){var i;return i=e.eat("#")?e.eat("x")?e.eatWhile(/[a-fA-F\d]/)&&e.eat(";"):e.eatWhile(/[\d]/)&&e.eat(";"):e.eatWhile(/[\w\.\-:]/)&&e.eat(";"),i?"atom":"error"}return e.eatWhile(/[^&<]/),null}function a(e,t){var n=e.next();if(">"==n||"/"==n&&e.eat(">"))return t.tokenize=o,T=">"==n?"endTag":"selfcloseTag","tag bracket";if("="==n)return T="equals",null;if("<"==n){t.tokenize=o,t.state=d,t.tagName=t.tagStart=null;var r=t.tokenize(e,t);return r?r+" tag error":"tag error"}return/[\'\"]/.test(n)?(t.tokenize=l(n),t.stringStartCol=e.column(),t.tokenize(e,t)):(e.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/),"word")}function l(e){var t=function(t,n){for(;!t.eol();)if(t.next()==e){n.tokenize=a;break}return"string"};return t.isInAttribute=!0,t}function s(e,t){return function(n,r){for(;!n.eol();){if(n.match(t)){r.tokenize=o;break}n.next()}return e}}function c(e){return function(t,n){for(var r;null!=(r=t.next());){if("<"==r)return n.tokenize=c(e+1),n.tokenize(t,n);if(">"==r){if(1==e){n.tokenize=o;break}return n.tokenize=c(e-1),n.tokenize(t,n)}}return"meta"}}function u(e,t,n){this.prev=e.context,this.tagName=t,this.indent=e.indented,this.startOfLine=n,(S.doNotIndent.hasOwnProperty(t)||e.context&&e.context.noIndent)&&(this.noIndent=!0)}function f(e){e.context&&(e.context=e.context.prev)}function h(e,t){for(var n;;){if(!e.context)return;if(n=e.context.tagName,!S.contextGrabbers.hasOwnProperty(n)||!S.contextGrabbers[n].hasOwnProperty(t))return;f(e)}}function d(e,t,n){return"openTag"==e?(n.tagStart=t.column(),p):"closeTag"==e?m:d}function p(e,t,n){return"word"==e?(n.tagName=t.current(),M="tag",y):(M="error",p)}function m(e,t,n){if("word"==e){var r=t.current();return n.context&&n.context.tagName!=r&&S.implicitlyClosed.hasOwnProperty(n.context.tagName)&&f(n),n.context&&n.context.tagName==r||S.matchClosing===!1?(M="tag",g):(M="tag error",v)}return M="error",v}function g(e,t,n){return"endTag"!=e?(M="error",g):(f(n),d)}function v(e,t,n){return M="error",g(e,t,n)}function y(e,t,n){if("word"==e)return M="attribute",x;if("endTag"==e||"selfcloseTag"==e){var r=n.tagName,i=n.tagStart;return n.tagName=n.tagStart=null,"selfcloseTag"==e||S.autoSelfClosers.hasOwnProperty(r)?h(n,r):(h(n,r),n.context=new u(n,r,i==n.indented)),d}return M="error",y}function x(e,t,n){return"equals"==e?b:(S.allowMissing||(M="error"),y(e,t,n))}function b(e,t,n){return"string"==e?w:"word"==e&&S.allowUnquoted?(M="string",y):(M="error",y(e,t,n))}function w(e,t,n){return"string"==e?w:y(e,t,n)}var k=r.indentUnit,S={},C=i.htmlMode?t:n;for(var L in C)S[L]=C[L];for(var L in i)S[L]=i[L];var T,M;return o.isInText=!0,{startState:function(e){var t={tokenize:o,state:d,indented:e||0,tagName:null,tagStart:null,context:null};return null!=e&&(t.baseIndent=e),t},token:function(e,t){if(!t.tagName&&e.sol()&&(t.indented=e.indentation()),e.eatSpace())return null;T=null;var n=t.tokenize(e,t);return(n||T)&&"comment"!=n&&(M=null,t.state=t.state(T||n,e,t),M&&(n="error"==M?n+" error":M)),n},indent:function(t,n,r){var i=t.context;if(t.tokenize.isInAttribute)return t.tagStart==t.indented?t.stringStartCol+1:t.indented+k;if(i&&i.noIndent)return e.Pass;if(t.tokenize!=a&&t.tokenize!=o)return r?r.match(/^(\s*)/)[0].length:0;if(t.tagName)return S.multilineTagIndentPastTag!==!1?t.tagStart+t.tagName.length+2:t.tagStart+k*(S.multilineTagIndentFactor||1);if(S.alignCDATA&&/<!\[CDATA\[/.test(n))return 0;var l=n&&/^<(\/)?([\w_:\.-]*)/.exec(n);if(l&&l[1])for(;i;){if(i.tagName==l[2]){i=i.prev;break}if(!S.implicitlyClosed.hasOwnProperty(i.tagName))break;i=i.prev}else if(l)for(;i;){var s=S.contextGrabbers[i.tagName];if(!s||!s.hasOwnProperty(l[2]))break;i=i.prev}for(;i&&i.prev&&!i.startOfLine;)i=i.prev;return i?i.indent+k:t.baseIndent||0},electricInput:/<\/[\s\w:]+>$/,blockCommentStart:"<!--",blockCommentEnd:"-->",configuration:S.htmlMode?"html":"xml",helperType:S.htmlMode?"html":"xml",skipAttribute:function(e){e.state==b&&(e.state=y)}}}),e.defineMIME("text/xml","xml"),e.defineMIME("application/xml","xml"),e.mimeModes.hasOwnProperty("text/html")||e.defineMIME("text/html",{name:"xml",htmlMode:!0})})},{"../../lib/codemirror":10}],15:[function(e,t,n){n.read=function(e,t,n,r,i){var o,a,l=8*i-r-1,s=(1<<l)-1,c=s>>1,u=-7,f=n?i-1:0,h=n?-1:1,d=e[t+f];for(f+=h,o=d&(1<<-u)-1,d>>=-u,u+=l;u>0;o=256*o+e[t+f],f+=h,u-=8);for(a=o&(1<<-u)-1,o>>=-u,u+=r;u>0;a=256*a+e[t+f],f+=h,u-=8);if(0===o)o=1-c;else{if(o===s)return a?NaN:(d?-1:1)*(1/0);a+=Math.pow(2,r),o-=c}return(d?-1:1)*a*Math.pow(2,o-r)},n.write=function(e,t,n,r,i,o){var a,l,s,c=8*o-i-1,u=(1<<c)-1,f=u>>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=r?0:o-1,p=r?1:-1,m=0>t||0===t&&0>1/t?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(l=isNaN(t)?1:0,a=u):(a=Math.floor(Math.log(t)/Math.LN2),t*(s=Math.pow(2,-a))<1&&(a--,s*=2),t+=a+f>=1?h/s:h*Math.pow(2,1-f),t*s>=2&&(a++,s/=2),a+f>=u?(l=0,a=u):a+f>=1?(l=(t*s-1)*Math.pow(2,i),a+=f):(l=t*Math.pow(2,f-1)*Math.pow(2,i),a=0));i>=8;e[n+d]=255&l,d+=p,l/=256,i-=8);for(a=a<<i|l,c+=i;c>0;e[n+d]=255&a,d+=p,a/=256,c-=8);e[n+d-p]|=128*m}},{}],16:[function(e,t,n){var r={}.toString;t.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},{}],17:[function(t,n,r){(function(t){(function(){function t(e){this.tokens=[],this.tokens.links={},this.options=e||h.defaults,this.rules=d.normal,this.options.gfm&&(this.options.tables?this.rules=d.tables:this.rules=d.gfm)}function i(e,t){if(this.options=t||h.defaults,this.links=e,this.rules=p.normal,this.renderer=this.options.renderer||new o,this.renderer.options=this.options,!this.links)throw new Error("Tokens array requires a `links` property.");this.options.gfm?this.options.breaks?this.rules=p.breaks:this.rules=p.gfm:this.options.pedantic&&(this.rules=p.pedantic)}function o(e){this.options=e||{}}function a(e){this.tokens=[],this.token=null,this.options=e||h.defaults,this.options.renderer=this.options.renderer||new o,this.renderer=this.options.renderer,this.renderer.options=this.options}function l(e,t){return e.replace(t?/&/g:/&(?!#?\w+;)/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function s(e){return e.replace(/&([#\w]+);/g,function(e,t){return t=t.toLowerCase(),"colon"===t?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""})}function c(e,t){return e=e.source,t=t||"",function n(r,i){return r?(i=i.source||i,i=i.replace(/(^|[^\[])\^/g,"$1"),e=e.replace(r,i),n):new RegExp(e,t)}}function u(){}function f(e){for(var t,n,r=1;r<arguments.length;r++){t=arguments[r];for(n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}function h(e,n,r){if(r||"function"==typeof n){r||(r=n,n=null),n=f({},h.defaults,n||{});var i,o,s=n.highlight,c=0;try{i=t.lex(e,n)}catch(u){return r(u)}o=i.length;var d=function(e){if(e)return n.highlight=s,r(e);var t;try{t=a.parse(i,n)}catch(o){e=o}return n.highlight=s,e?r(e):r(null,t)};if(!s||s.length<3)return d();if(delete n.highlight,!o)return d();for(;c<i.length;c++)!function(e){return"code"!==e.type?--o||d():s(e.text,e.lang,function(t,n){return t?d(t):null==n||n===e.text?--o||d():(e.text=n,e.escaped=!0,void(--o||d()))})}(i[c])}else try{return n&&(n=f({},h.defaults,n)),a.parse(t.lex(e,n),n)}catch(u){if(u.message+="\nPlease report this to https://github.com/chjj/marked.",(n||h.defaults).silent)return"<p>An error occured:</p><pre>"+l(u.message+"",!0)+"</pre>";throw u}}var d={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:u,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:u,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:u,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/};d.bullet=/(?:[*+-]|\d+\.)/,d.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/,d.item=c(d.item,"gm")(/bull/g,d.bullet)(),d.list=c(d.list)(/bull/g,d.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+d.def.source+")")(),d.blockquote=c(d.blockquote)("def",d.def)(),d._tag="(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b",d.html=c(d.html)("comment",/<!--[\s\S]*?-->/)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/<tag(?:"[^"]*"|'[^']*'|[^'">])*?>/)(/tag/g,d._tag)(),d.paragraph=c(d.paragraph)("hr",d.hr)("heading",d.heading)("lheading",d.lheading)("blockquote",d.blockquote)("tag","<"+d._tag)("def",d.def)(),d.normal=f({},d),d.gfm=f({},d.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),d.gfm.paragraph=c(d.paragraph)("(?!","(?!"+d.gfm.fences.source.replace("\\1","\\2")+"|"+d.list.source.replace("\\1","\\3")+"|")(),d.tables=f({},d.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/}),t.rules=d,t.lex=function(e,n){var r=new t(n);return r.lex(e)},t.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g,"    ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},t.prototype.token=function(e,t,n){for(var r,i,o,a,l,s,c,u,f,e=e.replace(/^ +$/gm,"");e;)if((o=this.rules.newline.exec(e))&&(e=e.substring(o[0].length),o[0].length>1&&this.tokens.push({type:"space"})),o=this.rules.code.exec(e))e=e.substring(o[0].length),o=o[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",text:this.options.pedantic?o:o.replace(/\n+$/,"")});else if(o=this.rules.fences.exec(e))e=e.substring(o[0].length),this.tokens.push({type:"code",lang:o[2],text:o[3]||""});else if(o=this.rules.heading.exec(e))e=e.substring(o[0].length),this.tokens.push({type:"heading",depth:o[1].length,text:o[2]});else if(t&&(o=this.rules.nptable.exec(e))){for(e=e.substring(o[0].length),s={type:"table",header:o[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:o[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:o[3].replace(/\n$/,"").split("\n")},u=0;u<s.align.length;u++)/^ *-+: *$/.test(s.align[u])?s.align[u]="right":/^ *:-+: *$/.test(s.align[u])?s.align[u]="center":/^ *:-+ *$/.test(s.align[u])?s.align[u]="left":s.align[u]=null;for(u=0;u<s.cells.length;u++)s.cells[u]=s.cells[u].split(/ *\| */);this.tokens.push(s)}else if(o=this.rules.lheading.exec(e))e=e.substring(o[0].length),this.tokens.push({type:"heading",depth:"="===o[2]?1:2,text:o[1]});else if(o=this.rules.hr.exec(e))e=e.substring(o[0].length),this.tokens.push({type:"hr"});else if(o=this.rules.blockquote.exec(e))e=e.substring(o[0].length),this.tokens.push({type:"blockquote_start"}),o=o[0].replace(/^ *> ?/gm,""),this.token(o,t,!0),this.tokens.push({type:"blockquote_end"});else if(o=this.rules.list.exec(e)){for(e=e.substring(o[0].length),a=o[2],this.tokens.push({type:"list_start",ordered:a.length>1}),o=o[0].match(this.rules.item),r=!1,f=o.length,u=0;f>u;u++)s=o[u],c=s.length,s=s.replace(/^ *([*+-]|\d+\.) +/,""),~s.indexOf("\n ")&&(c-=s.length,s=this.options.pedantic?s.replace(/^ {1,4}/gm,""):s.replace(new RegExp("^ {1,"+c+"}","gm"),"")),this.options.smartLists&&u!==f-1&&(l=d.bullet.exec(o[u+1])[0],a===l||a.length>1&&l.length>1||(e=o.slice(u+1).join("\n")+e,u=f-1)),i=r||/\n\n(?!\s*$)/.test(s),u!==f-1&&(r="\n"===s.charAt(s.length-1),i||(i=r)),this.tokens.push({type:i?"loose_item_start":"list_item_start"}),this.token(s,!1,n),this.tokens.push({type:"list_item_end"});this.tokens.push({type:"list_end"})}else if(o=this.rules.html.exec(e))e=e.substring(o[0].length),this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:!this.options.sanitizer&&("pre"===o[1]||"script"===o[1]||"style"===o[1]),text:o[0]});else if(!n&&t&&(o=this.rules.def.exec(e)))e=e.substring(o[0].length),this.tokens.links[o[1].toLowerCase()]={href:o[2],title:o[3]};else if(t&&(o=this.rules.table.exec(e))){for(e=e.substring(o[0].length),s={type:"table",
-header:o[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:o[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:o[3].replace(/(?: *\| *)?\n$/,"").split("\n")},u=0;u<s.align.length;u++)/^ *-+: *$/.test(s.align[u])?s.align[u]="right":/^ *:-+: *$/.test(s.align[u])?s.align[u]="center":/^ *:-+ *$/.test(s.align[u])?s.align[u]="left":s.align[u]=null;for(u=0;u<s.cells.length;u++)s.cells[u]=s.cells[u].replace(/^ *\| *| *\| *$/g,"").split(/ *\| */);this.tokens.push(s)}else if(t&&(o=this.rules.paragraph.exec(e)))e=e.substring(o[0].length),this.tokens.push({type:"paragraph",text:"\n"===o[1].charAt(o[1].length-1)?o[1].slice(0,-1):o[1]});else if(o=this.rules.text.exec(e))e=e.substring(o[0].length),this.tokens.push({type:"text",text:o[0]});else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0));return this.tokens};var p={escape:/^\\([\\`*{}\[\]()#+\-.!_>])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:u,tag:/^<!--[\s\S]*?-->|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:u,text:/^[\s\S]+?(?=[\\<!\[_*`]| {2,}\n|$)/};p._inside=/(?:\[[^\]]*\]|[^\[\]]|\](?=[^\[]*\]))*/,p._href=/\s*<?([\s\S]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*/,p.link=c(p.link)("inside",p._inside)("href",p._href)(),p.reflink=c(p.reflink)("inside",p._inside)(),p.normal=f({},p),p.pedantic=f({},p.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/}),p.gfm=f({},p.normal,{escape:c(p.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:c(p.text)("]|","~]|")("|","|https?://|")()}),p.breaks=f({},p.gfm,{br:c(p.br)("{2,}","*")(),text:c(p.gfm.text)("{2,}","*")()}),i.rules=p,i.output=function(e,t,n){var r=new i(t,n);return r.output(e)},i.prototype.output=function(e){for(var t,n,r,i,o="";e;)if(i=this.rules.escape.exec(e))e=e.substring(i[0].length),o+=i[1];else if(i=this.rules.autolink.exec(e))e=e.substring(i[0].length),"@"===i[2]?(n=":"===i[1].charAt(6)?this.mangle(i[1].substring(7)):this.mangle(i[1]),r=this.mangle("mailto:")+n):(n=l(i[1]),r=n),o+=this.renderer.link(r,null,n);else if(this.inLink||!(i=this.rules.url.exec(e))){if(i=this.rules.tag.exec(e))!this.inLink&&/^<a /i.test(i[0])?this.inLink=!0:this.inLink&&/^<\/a>/i.test(i[0])&&(this.inLink=!1),e=e.substring(i[0].length),o+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(i[0]):l(i[0]):i[0];else if(i=this.rules.link.exec(e))e=e.substring(i[0].length),this.inLink=!0,o+=this.outputLink(i,{href:i[2],title:i[3]}),this.inLink=!1;else if((i=this.rules.reflink.exec(e))||(i=this.rules.nolink.exec(e))){if(e=e.substring(i[0].length),t=(i[2]||i[1]).replace(/\s+/g," "),t=this.links[t.toLowerCase()],!t||!t.href){o+=i[0].charAt(0),e=i[0].substring(1)+e;continue}this.inLink=!0,o+=this.outputLink(i,t),this.inLink=!1}else if(i=this.rules.strong.exec(e))e=e.substring(i[0].length),o+=this.renderer.strong(this.output(i[2]||i[1]));else if(i=this.rules.em.exec(e))e=e.substring(i[0].length),o+=this.renderer.em(this.output(i[2]||i[1]));else if(i=this.rules.code.exec(e))e=e.substring(i[0].length),o+=this.renderer.codespan(l(i[2],!0));else if(i=this.rules.br.exec(e))e=e.substring(i[0].length),o+=this.renderer.br();else if(i=this.rules.del.exec(e))e=e.substring(i[0].length),o+=this.renderer.del(this.output(i[1]));else if(i=this.rules.text.exec(e))e=e.substring(i[0].length),o+=this.renderer.text(l(this.smartypants(i[0])));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else e=e.substring(i[0].length),n=l(i[1]),r=n,o+=this.renderer.link(r,null,n);return o},i.prototype.outputLink=function(e,t){var n=l(t.href),r=t.title?l(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(n,r,this.output(e[1])):this.renderer.image(n,r,l(e[1]))},i.prototype.smartypants=function(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014\/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014\/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e},i.prototype.mangle=function(e){if(!this.options.mangle)return e;for(var t,n="",r=e.length,i=0;r>i;i++)t=e.charCodeAt(i),Math.random()>.5&&(t="x"+t.toString(16)),n+="&#"+t+";";return n},o.prototype.code=function(e,t,n){if(this.options.highlight){var r=this.options.highlight(e,t);null!=r&&r!==e&&(n=!0,e=r)}return t?'<pre><code class="'+this.options.langPrefix+l(t,!0)+'">'+(n?e:l(e,!0))+"\n</code></pre>\n":"<pre><code>"+(n?e:l(e,!0))+"\n</code></pre>"},o.prototype.blockquote=function(e){return"<blockquote>\n"+e+"</blockquote>\n"},o.prototype.html=function(e){return e},o.prototype.heading=function(e,t,n){return"<h"+t+' id="'+this.options.headerPrefix+n.toLowerCase().replace(/[^\w]+/g,"-")+'">'+e+"</h"+t+">\n"},o.prototype.hr=function(){return this.options.xhtml?"<hr/>\n":"<hr>\n"},o.prototype.list=function(e,t){var n=t?"ol":"ul";return"<"+n+">\n"+e+"</"+n+">\n"},o.prototype.listitem=function(e){return"<li>"+e+"</li>\n"},o.prototype.paragraph=function(e){return"<p>"+e+"</p>\n"},o.prototype.table=function(e,t){return"<table>\n<thead>\n"+e+"</thead>\n<tbody>\n"+t+"</tbody>\n</table>\n"},o.prototype.tablerow=function(e){return"<tr>\n"+e+"</tr>\n"},o.prototype.tablecell=function(e,t){var n=t.header?"th":"td",r=t.align?"<"+n+' style="text-align:'+t.align+'">':"<"+n+">";return r+e+"</"+n+">\n"},o.prototype.strong=function(e){return"<strong>"+e+"</strong>"},o.prototype.em=function(e){return"<em>"+e+"</em>"},o.prototype.codespan=function(e){return"<code>"+e+"</code>"},o.prototype.br=function(){return this.options.xhtml?"<br/>":"<br>"},o.prototype.del=function(e){return"<del>"+e+"</del>"},o.prototype.link=function(e,t,n){if(this.options.sanitize){try{var r=decodeURIComponent(s(e)).replace(/[^\w:]/g,"").toLowerCase()}catch(i){return""}if(0===r.indexOf("javascript:")||0===r.indexOf("vbscript:"))return""}var o='<a href="'+e+'"';return t&&(o+=' title="'+t+'"'),o+=">"+n+"</a>"},o.prototype.image=function(e,t,n){var r='<img src="'+e+'" alt="'+n+'"';return t&&(r+=' title="'+t+'"'),r+=this.options.xhtml?"/>":">"},o.prototype.text=function(e){return e},a.parse=function(e,t,n){var r=new a(t,n);return r.parse(e)},a.prototype.parse=function(e){this.inline=new i(e.links,this.options,this.renderer),this.tokens=e.reverse();for(var t="";this.next();)t+=this.tok();return t},a.prototype.next=function(){return this.token=this.tokens.pop()},a.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},a.prototype.parseText=function(){for(var e=this.token.text;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)},a.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,this.token.text);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,t,n,r,i,o="",a="";for(n="",e=0;e<this.token.header.length;e++)r={header:!0,align:this.token.align[e]},n+=this.renderer.tablecell(this.inline.output(this.token.header[e]),{header:!0,align:this.token.align[e]});for(o+=this.renderer.tablerow(n),e=0;e<this.token.cells.length;e++){for(t=this.token.cells[e],n="",i=0;i<t.length;i++)n+=this.renderer.tablecell(this.inline.output(t[i]),{header:!1,align:this.token.align[i]});a+=this.renderer.tablerow(n)}return this.renderer.table(o,a);case"blockquote_start":for(var a="";"blockquote_end"!==this.next().type;)a+=this.tok();return this.renderer.blockquote(a);case"list_start":for(var a="",l=this.token.ordered;"list_end"!==this.next().type;)a+=this.tok();return this.renderer.list(a,l);case"list_item_start":for(var a="";"list_item_end"!==this.next().type;)a+="text"===this.token.type?this.parseText():this.tok();return this.renderer.listitem(a);case"loose_item_start":for(var a="";"list_item_end"!==this.next().type;)a+=this.tok();return this.renderer.listitem(a);case"html":var s=this.token.pre||this.options.pedantic?this.token.text:this.inline.output(this.token.text);return this.renderer.html(s);case"paragraph":return this.renderer.paragraph(this.inline.output(this.token.text));case"text":return this.renderer.paragraph(this.parseText())}},u.exec=u,h.options=h.setOptions=function(e){return f(h.defaults,e),h},h.defaults={gfm:!0,tables:!0,breaks:!1,pedantic:!1,sanitize:!1,sanitizer:null,mangle:!0,smartLists:!1,silent:!1,highlight:null,langPrefix:"lang-",smartypants:!1,headerPrefix:"",renderer:new o,xhtml:!1},h.Parser=a,h.parser=a.parse,h.Renderer=o,h.Lexer=t,h.lexer=t.lex,h.InlineLexer=i,h.inlineLexer=i.output,h.parse=h,"undefined"!=typeof n&&"object"==typeof r?n.exports=h:"function"==typeof e&&e.amd?e(function(){return h}):this.marked=h}).call(function(){return this||("undefined"!=typeof window?window:t)}())}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],18:[function(e,t,n){(function(n,r){"use strict";var i=function(e,t,n,i){if(i=i||{},this.dictionary=null,this.rules={},this.dictionaryTable={},this.compoundRules=[],this.compoundRuleCodes={},this.replacementTable=[],this.flags=i.flags||{},e){if(this.dictionary=e,"undefined"!=typeof window&&"chrome"in window&&"extension"in window.chrome&&"getURL"in window.chrome.extension)t||(t=this._readFile(chrome.extension.getURL("lib/typo/dictionaries/"+e+"/"+e+".aff"))),n||(n=this._readFile(chrome.extension.getURL("lib/typo/dictionaries/"+e+"/"+e+".dic")));else{if(i.dictionaryPath)var o=i.dictionaryPath;else if("undefined"!=typeof r)var o=r+"/dictionaries";else var o="./dictionaries";t||(t=this._readFile(o+"/"+e+"/"+e+".aff")),n||(n=this._readFile(o+"/"+e+"/"+e+".dic"))}this.rules=this._parseAFF(t),this.compoundRuleCodes={};for(var a=0,l=this.compoundRules.length;l>a;a++)for(var s=this.compoundRules[a],c=0,u=s.length;u>c;c++)this.compoundRuleCodes[s[c]]=[];"ONLYINCOMPOUND"in this.flags&&(this.compoundRuleCodes[this.flags.ONLYINCOMPOUND]=[]),this.dictionaryTable=this._parseDIC(n);for(var a in this.compoundRuleCodes)0==this.compoundRuleCodes[a].length&&delete this.compoundRuleCodes[a];for(var a=0,l=this.compoundRules.length;l>a;a++){for(var f=this.compoundRules[a],h="",c=0,u=f.length;u>c;c++){var d=f[c];h+=d in this.compoundRuleCodes?"("+this.compoundRuleCodes[d].join("|")+")":d}this.compoundRules[a]=new RegExp(h,"i")}}return this};i.prototype={load:function(e){for(var t in e)this[t]=e[t];return this},_readFile:function(t,r){if(r||(r="utf8"),"undefined"!=typeof XMLHttpRequest){var i=new XMLHttpRequest;return i.open("GET",t,!1),i.overrideMimeType&&i.overrideMimeType("text/plain; charset="+r),i.send(null),i.responseText}if("undefined"!=typeof e){var o=e("fs");try{if(o.existsSync(t)){var a=o.statSync(t),l=o.openSync(t,"r"),s=new n(a.size);return o.readSync(l,s,0,s.length,null),s.toString(r,0,s.length)}console.log("Path "+t+" does not exist.")}catch(c){return console.log(c),""}}},_parseAFF:function(e){var t={};e=this._removeAffixComments(e);for(var n=e.split("\n"),r=0,i=n.length;i>r;r++){var o=n[r],a=o.split(/\s+/),l=a[0];if("PFX"==l||"SFX"==l){for(var s=a[1],c=a[2],u=parseInt(a[3],10),f=[],h=r+1,d=r+1+u;d>h;h++){var o=n[h],p=o.split(/\s+/),m=p[2],g=p[3].split("/"),v=g[0];"0"===v&&(v="");var y=this.parseRuleCodes(g[1]),x=p[4],b={};b.add=v,y.length>0&&(b.continuationClasses=y),"."!==x&&("SFX"===l?b.match=new RegExp(x+"$"):b.match=new RegExp("^"+x)),"0"!=m&&("SFX"===l?b.remove=new RegExp(m+"$"):b.remove=m),f.push(b)}t[s]={type:l,combineable:"Y"==c,entries:f},r+=u}else if("COMPOUNDRULE"===l){for(var u=parseInt(a[1],10),h=r+1,d=r+1+u;d>h;h++){var o=n[h],p=o.split(/\s+/);this.compoundRules.push(p[1])}r+=u}else if("REP"===l){var p=o.split(/\s+/);3===p.length&&this.replacementTable.push([p[1],p[2]])}else this.flags[l]=a[1]}return t},_removeAffixComments:function(e){return e=e.replace(/#.*$/gm,""),e=e.replace(/^\s\s*/m,"").replace(/\s\s*$/m,""),e=e.replace(/\n{2,}/g,"\n"),e=e.replace(/^\s\s*/,"").replace(/\s\s*$/,"")},_parseDIC:function(e){function t(e,t){e in r&&"object"==typeof r[e]||(r[e]=[]),r[e].push(t)}e=this._removeDicComments(e);for(var n=e.split("\n"),r={},i=1,o=n.length;o>i;i++){var a=n[i],l=a.split("/",2),s=l[0];if(l.length>1){var c=this.parseRuleCodes(l[1]);"NEEDAFFIX"in this.flags&&-1!=c.indexOf(this.flags.NEEDAFFIX)||t(s,c);for(var u=0,f=c.length;f>u;u++){var h=c[u],d=this.rules[h];if(d)for(var p=this._applyRule(s,d),m=0,g=p.length;g>m;m++){var v=p[m];if(t(v,[]),d.combineable)for(var y=u+1;f>y;y++){var x=c[y],b=this.rules[x];if(b&&b.combineable&&d.type!=b.type)for(var w=this._applyRule(v,b),k=0,S=w.length;S>k;k++){var C=w[k];t(C,[])}}}h in this.compoundRuleCodes&&this.compoundRuleCodes[h].push(s)}}else t(s.trim(),[])}return r},_removeDicComments:function(e){return e=e.replace(/^\t.*$/gm,"")},parseRuleCodes:function(e){if(!e)return[];if(!("FLAG"in this.flags))return e.split("");if("long"===this.flags.FLAG){for(var t=[],n=0,r=e.length;r>n;n+=2)t.push(e.substr(n,2));return t}return"num"===this.flags.FLAG?textCode.split(","):void 0},_applyRule:function(e,t){for(var n=t.entries,r=[],i=0,o=n.length;o>i;i++){var a=n[i];if(!a.match||e.match(a.match)){var l=e;if(a.remove&&(l=l.replace(a.remove,"")),"SFX"===t.type?l+=a.add:l=a.add+l,r.push(l),"continuationClasses"in a)for(var s=0,c=a.continuationClasses.length;c>s;s++){var u=this.rules[a.continuationClasses[s]];u&&(r=r.concat(this._applyRule(l,u)))}}}return r},check:function(e){var t=e.replace(/^\s\s*/,"").replace(/\s\s*$/,"");if(this.checkExact(t))return!0;if(t.toUpperCase()===t){var n=t[0]+t.substring(1).toLowerCase();if(this.hasFlag(n,"KEEPCASE"))return!1;if(this.checkExact(n))return!0}var r=t.toLowerCase();if(r!==t){if(this.hasFlag(r,"KEEPCASE"))return!1;if(this.checkExact(r))return!0}return!1},checkExact:function(e){var t=this.dictionaryTable[e];if("undefined"==typeof t){if("COMPOUNDMIN"in this.flags&&e.length>=this.flags.COMPOUNDMIN)for(var n=0,r=this.compoundRules.length;r>n;n++)if(e.match(this.compoundRules[n]))return!0;return!1}if("object"==typeof t){for(var n=0,r=t.length;r>n;n++)if(!this.hasFlag(e,"ONLYINCOMPOUND",t[n]))return!0;return!1}},hasFlag:function(e,t,n){if(t in this.flags){if("undefined"==typeof n)var n=Array.prototype.concat.apply([],this.dictionaryTable[e]);if(n&&-1!==n.indexOf(this.flags[t]))return!0}return!1},alphabet:"",suggest:function(e,t){function n(e){for(var t=[],n=0,r=e.length;r>n;n++){for(var i=e[n],o=[],a=0,l=i.length+1;l>a;a++)o.push([i.substring(0,a),i.substring(a,i.length)]);for(var s=[],a=0,l=o.length;l>a;a++){var u=o[a];u[1]&&s.push(u[0]+u[1].substring(1))}for(var f=[],a=0,l=o.length;l>a;a++){var u=o[a];u[1].length>1&&f.push(u[0]+u[1][1]+u[1][0]+u[1].substring(2))}for(var h=[],a=0,l=o.length;l>a;a++){var u=o[a];if(u[1])for(var d=0,p=c.alphabet.length;p>d;d++)h.push(u[0]+c.alphabet[d]+u[1].substring(1))}for(var m=[],a=0,l=o.length;l>a;a++){var u=o[a];if(u[1])for(var d=0,p=c.alphabet.length;p>d;d++)h.push(u[0]+c.alphabet[d]+u[1])}t=t.concat(s),t=t.concat(f),t=t.concat(h),t=t.concat(m)}return t}function r(e){for(var t=[],n=0;n<e.length;n++)c.check(e[n])&&t.push(e[n]);return t}function i(e){function i(e,t){return e[1]<t[1]?-1:1}for(var o=n([e]),a=n(o),l=r(o).concat(r(a)),s={},u=0,f=l.length;f>u;u++)l[u]in s?s[l[u]]+=1:s[l[u]]=1;var h=[];for(var u in s)h.push([u,s[u]]);h.sort(i).reverse();for(var d=[],u=0,f=Math.min(t,h.length);f>u;u++)c.hasFlag(h[u][0],"NOSUGGEST")||d.push(h[u][0]);return d}if(t||(t=5),this.check(e))return[];for(var o=0,a=this.replacementTable.length;a>o;o++){var l=this.replacementTable[o];if(-1!==e.indexOf(l[0])){var s=e.replace(l[0],l[1]);if(this.check(s))return[s]}}var c=this;return c.alphabet="abcdefghijklmnopqrstuvwxyz",i(e)}},"undefined"!=typeof t&&(t.exports=i)}).call(this,e("buffer").Buffer,"/node_modules/typo-js")},{buffer:3,fs:2}],19:[function(e,t,n){var r=e("codemirror");r.commands.tabAndIndentMarkdownList=function(e){var t=e.listSelections(),n=t[0].head,r=e.getStateAfter(n.line),i=r.list!==!1;if(i)return void e.execCommand("indentMore");if(e.options.indentWithTabs)e.execCommand("insertTab");else{var o=Array(e.options.tabSize+1).join(" ");e.replaceSelection(o)}},r.commands.shiftTabAndUnindentMarkdownList=function(e){var t=e.listSelections(),n=t[0].head,r=e.getStateAfter(n.line),i=r.list!==!1;if(i)return void e.execCommand("indentLess");if(e.options.indentWithTabs)e.execCommand("insertTab");else{var o=Array(e.options.tabSize+1).join(" ");e.replaceSelection(o)}}},{codemirror:10}],20:[function(e,t,n){"use strict";function r(e){return e=U?e.replace("Ctrl","Cmd"):e.replace("Cmd","Ctrl")}function i(e,t,n){e=e||{};var r=document.createElement("a");return t=void 0==t?!0:t,e.title&&t&&(r.title=a(e.title,e.action,n),U&&(r.title=r.title.replace("Ctrl","⌘"),r.title=r.title.replace("Alt","⌥"))),r.tabIndex=-1,r.className=e.className,r}function o(){var e=document.createElement("i");return e.className="separator",e.innerHTML="|",e}function a(e,t,n){var i,o=e;return t&&(i=Y(t),n[i]&&(o+=" ("+r(n[i])+")")),o}function l(e,t){t=t||e.getCursor("start");var n=e.getTokenAt(t);if(!n.type)return{};for(var r,i,o=n.type.split(" "),a={},l=0;l<o.length;l++)r=o[l],"strong"===r?a.bold=!0:"variable-2"===r?(i=e.getLine(t.line),/^\s*\d+\.\s/.test(i)?a["ordered-list"]=!0:a["unordered-list"]=!0):"atom"===r?a.quote=!0:"em"===r?a.italic=!0:"quote"===r?a.quote=!0:"strikethrough"===r?a.strikethrough=!0:"comment"===r?a.code=!0:"link"===r?a.link=!0:"tag"===r?a.image=!0:r.match(/^header(\-[1-6])?$/)&&(a[r.replace("header","heading")]=!0);return a}function s(e){var t=e.codemirror;t.setOption("fullScreen",!t.getOption("fullScreen")),t.getOption("fullScreen")?(V=document.body.style.overflow,document.body.style.overflow="hidden"):document.body.style.overflow=V;var n=t.getWrapperElement();/fullscreen/.test(n.previousSibling.className)?n.previousSibling.className=n.previousSibling.className.replace(/\s*fullscreen\b/,""):n.previousSibling.className+=" fullscreen";var r=e.toolbarElements.fullscreen;/active/.test(r.className)?r.className=r.className.replace(/\s*active\s*/g,""):r.className+=" active";var i=t.getWrapperElement().nextSibling;/editor-preview-active-side/.test(i.className)&&N(e)}function c(e){P(e,"bold",e.options.blockStyles.bold)}function u(e){P(e,"italic",e.options.blockStyles.italic)}function f(e){P(e,"strikethrough","~~")}function h(e){function t(e){if("object"!=typeof e)throw"fencing_line() takes a 'line' object (not a line number, or line text).  Got: "+typeof e+": "+e;return e.styles&&e.styles[2]&&-1!==e.styles[2].indexOf("formatting-code-block")}function n(e){return e.state.base.base||e.state.base}function r(e,r,i,o,a){i=i||e.getLineHandle(r),o=o||e.getTokenAt({line:r,ch:1}),a=a||!!i.text&&e.getTokenAt({line:r,ch:i.text.length-1});var l=o.type?o.type.split(" "):[];return a&&n(a).indentedCode?"indented":-1===l.indexOf("comment")?!1:n(o).fencedChars||n(a).fencedChars||t(i)?"fenced":"single"}function i(e,t,n,r){var i=t.line+1,o=n.line+1,a=t.line!==n.line,l=r+"\n",s="\n"+r;a&&o++,a&&0===n.ch&&(s=r+"\n",o--),E(e,!1,[l,s]),e.setSelection({line:i,ch:0},{line:o,ch:0})}var o,a,l,s=e.options.blockStyles.code,c=e.codemirror,u=c.getCursor("start"),f=c.getCursor("end"),h=c.getTokenAt({line:u.line,ch:u.ch||1}),d=c.getLineHandle(u.line),p=r(c,u.line,d,h);if("single"===p){var m=d.text.slice(0,u.ch).replace("`",""),g=d.text.slice(u.ch).replace("`","");c.replaceRange(m+g,{line:u.line,ch:0},{line:u.line,ch:99999999999999}),u.ch--,u!==f&&f.ch--,c.setSelection(u,f),c.focus()}else if("fenced"===p)if(u.line!==f.line||u.ch!==f.ch){for(o=u.line;o>=0&&(d=c.getLineHandle(o),!t(d));o--);var v,y,x,b,w=c.getTokenAt({line:o,ch:1}),k=n(w).fencedChars;t(c.getLineHandle(u.line))?(v="",y=u.line):t(c.getLineHandle(u.line-1))?(v="",y=u.line-1):(v=k+"\n",y=u.line),t(c.getLineHandle(f.line))?(x="",b=f.line,0===f.ch&&(b+=1)):0!==f.ch&&t(c.getLineHandle(f.line+1))?(x="",b=f.line+1):(x=k+"\n",b=f.line+1),0===f.ch&&(b-=1),c.operation(function(){c.replaceRange(x,{line:b,ch:0},{line:b+(x?0:1),ch:0}),c.replaceRange(v,{line:y,ch:0},{line:y+(v?0:1),ch:0})}),c.setSelection({line:y+(v?1:0),ch:0},{line:b+(v?1:-1),ch:0}),c.focus()}else{var S=u.line;if(t(c.getLineHandle(u.line))&&("fenced"===r(c,u.line+1)?(o=u.line,S=u.line+1):(a=u.line,S=u.line-1)),void 0===o)for(o=S;o>=0&&(d=c.getLineHandle(o),!t(d));o--);if(void 0===a)for(l=c.lineCount(),a=S;l>a&&(d=c.getLineHandle(a),!t(d));a++);c.operation(function(){c.replaceRange("",{line:o,ch:0},{line:o+1,ch:0}),c.replaceRange("",{line:a-1,ch:0},{line:a,ch:0})}),c.focus()}else if("indented"===p){if(u.line!==f.line||u.ch!==f.ch)o=u.line,a=f.line,0===f.ch&&a--;else{for(o=u.line;o>=0;o--)if(d=c.getLineHandle(o),!d.text.match(/^\s*$/)&&"indented"!==r(c,o,d)){o+=1;break}for(l=c.lineCount(),a=u.line;l>a;a++)if(d=c.getLineHandle(a),!d.text.match(/^\s*$/)&&"indented"!==r(c,a,d)){a-=1;break}}var C=c.getLineHandle(a+1),L=C&&c.getTokenAt({line:a+1,ch:C.text.length-1}),T=L&&n(L).indentedCode;T&&c.replaceRange("\n",{line:a+1,ch:0});for(var M=o;a>=M;M++)c.indentLine(M,"subtract");c.focus()}else{var N=u.line===f.line&&u.ch===f.ch&&0===u.ch,A=u.line!==f.line;N||A?i(c,u,f,s):E(c,!1,["`","`"])}}function d(e){var t=e.codemirror;I(t,"quote")}function p(e){var t=e.codemirror;O(t,"smaller")}function m(e){var t=e.codemirror;O(t,"bigger")}function g(e){var t=e.codemirror;O(t,void 0,1)}function v(e){var t=e.codemirror;O(t,void 0,2)}function y(e){var t=e.codemirror;O(t,void 0,3)}function x(e){var t=e.codemirror;I(t,"unordered-list")}function b(e){var t=e.codemirror;I(t,"ordered-list")}function w(e){var t=e.codemirror;R(t)}function k(e){var t=e.codemirror,n=l(t),r=e.options,i="http://";return r.promptURLs&&(i=prompt(r.promptTexts.link),!i)?!1:void E(t,n.link,r.insertTexts.link,i)}function S(e){var t=e.codemirror,n=l(t),r=e.options,i="http://";return r.promptURLs&&(i=prompt(r.promptTexts.image),!i)?!1:void E(t,n.image,r.insertTexts.image,i)}function C(e){var t=e.codemirror,n=l(t),r=e.options;E(t,n.table,r.insertTexts.table)}function L(e){var t=e.codemirror,n=l(t),r=e.options;E(t,n.image,r.insertTexts.horizontalRule)}function T(e){var t=e.codemirror;t.undo(),t.focus()}function M(e){var t=e.codemirror;t.redo(),t.focus()}function N(e){var t=e.codemirror,n=t.getWrapperElement(),r=n.nextSibling,i=e.toolbarElements["side-by-side"],o=!1;/editor-preview-active-side/.test(r.className)?(r.className=r.className.replace(/\s*editor-preview-active-side\s*/g,""),i.className=i.className.replace(/\s*active\s*/g,""),n.className=n.className.replace(/\s*CodeMirror-sided\s*/g," ")):(setTimeout(function(){t.getOption("fullScreen")||s(e),r.className+=" editor-preview-active-side"},1),i.className+=" active",n.className+=" CodeMirror-sided",o=!0);var a=n.lastChild;if(/editor-preview-active/.test(a.className)){a.className=a.className.replace(/\s*editor-preview-active\s*/g,"");var l=e.toolbarElements.preview,c=n.previousSibling;l.className=l.className.replace(/\s*active\s*/g,""),c.className=c.className.replace(/\s*disabled-for-preview*/g,"")}var u=function(){r.innerHTML=e.options.previewRender(e.value(),r)};t.sideBySideRenderingFunction||(t.sideBySideRenderingFunction=u),o?(r.innerHTML=e.options.previewRender(e.value(),r),t.on("update",t.sideBySideRenderingFunction)):t.off("update",t.sideBySideRenderingFunction),t.refresh()}function A(e){var t=e.codemirror,n=t.getWrapperElement(),r=n.previousSibling,i=e.options.toolbar?e.toolbarElements.preview:!1,o=n.lastChild;o&&/editor-preview/.test(o.className)||(o=document.createElement("div"),o.className="editor-preview",n.appendChild(o)),/editor-preview-active/.test(o.className)?(o.className=o.className.replace(/\s*editor-preview-active\s*/g,""),i&&(i.className=i.className.replace(/\s*active\s*/g,""),r.className=r.className.replace(/\s*disabled-for-preview*/g,""))):(setTimeout(function(){o.className+=" editor-preview-active"},1),i&&(i.className+=" active",r.className+=" disabled-for-preview")),o.innerHTML=e.options.previewRender(e.value(),o);var a=t.getWrapperElement().nextSibling;/editor-preview-active-side/.test(a.className)&&N(e)}function E(e,t,n,r){if(!/editor-preview-active/.test(e.getWrapperElement().lastChild.className)){var i,o=n[0],a=n[1],l=e.getCursor("start"),s=e.getCursor("end");r&&(a=a.replace("#url#",r)),t?(i=e.getLine(l.line),o=i.slice(0,l.ch),a=i.slice(l.ch),e.replaceRange(o+a,{line:l.line,ch:0})):(i=e.getSelection(),e.replaceSelection(o+i+a),l.ch+=o.length,l!==s&&(s.ch+=o.length)),e.setSelection(l,s),e.focus()}}function O(e,t,n){if(!/editor-preview-active/.test(e.getWrapperElement().lastChild.className)){for(var r=e.getCursor("start"),i=e.getCursor("end"),o=r.line;o<=i.line;o++)!function(r){var i=e.getLine(r),o=i.search(/[^#]/);i=void 0!==t?0>=o?"bigger"==t?"###### "+i:"# "+i:6==o&&"smaller"==t?i.substr(7):1==o&&"bigger"==t?i.substr(2):"bigger"==t?i.substr(1):"#"+i:1==n?0>=o?"# "+i:o==n?i.substr(o+1):"# "+i.substr(o+1):2==n?0>=o?"## "+i:o==n?i.substr(o+1):"## "+i.substr(o+1):0>=o?"### "+i:o==n?i.substr(o+1):"### "+i.substr(o+1),e.replaceRange(i,{line:r,ch:0},{line:r,ch:99999999999999})}(o);e.focus()}}function I(e,t){if(!/editor-preview-active/.test(e.getWrapperElement().lastChild.className)){for(var n=l(e),r=e.getCursor("start"),i=e.getCursor("end"),o={quote:/^(\s*)\>\s+/,"unordered-list":/^(\s*)(\*|\-|\+)\s+/,"ordered-list":/^(\s*)\d+\.\s+/},a={quote:"> ","unordered-list":"* ","ordered-list":"1. "},s=r.line;s<=i.line;s++)!function(r){var i=e.getLine(r);i=n[t]?i.replace(o[t],"$1"):a[t]+i,e.replaceRange(i,{line:r,ch:0},{line:r,ch:99999999999999})}(s);e.focus()}}function P(e,t,n,r){if(!/editor-preview-active/.test(e.codemirror.getWrapperElement().lastChild.className)){r="undefined"==typeof r?n:r;var i,o=e.codemirror,a=l(o),s=n,c=r,u=o.getCursor("start"),f=o.getCursor("end");a[t]?(i=o.getLine(u.line),s=i.slice(0,u.ch),c=i.slice(u.ch),"bold"==t?(s=s.replace(/(\*\*|__)(?![\s\S]*(\*\*|__))/,""),c=c.replace(/(\*\*|__)/,"")):"italic"==t?(s=s.replace(/(\*|_)(?![\s\S]*(\*|_))/,""),c=c.replace(/(\*|_)/,"")):"strikethrough"==t&&(s=s.replace(/(\*\*|~~)(?![\s\S]*(\*\*|~~))/,""),c=c.replace(/(\*\*|~~)/,"")),o.replaceRange(s+c,{line:u.line,ch:0},{line:u.line,ch:99999999999999}),"bold"==t||"strikethrough"==t?(u.ch-=2,u!==f&&(f.ch-=2)):"italic"==t&&(u.ch-=1,u!==f&&(f.ch-=1))):(i=o.getSelection(),"bold"==t?(i=i.split("**").join(""),i=i.split("__").join("")):"italic"==t?(i=i.split("*").join(""),i=i.split("_").join("")):"strikethrough"==t&&(i=i.split("~~").join("")),o.replaceSelection(s+i+c),u.ch+=n.length,f.ch=u.ch+i.length),o.setSelection(u,f),o.focus()}}function R(e){if(!/editor-preview-active/.test(e.getWrapperElement().lastChild.className))for(var t,n=e.getCursor("start"),r=e.getCursor("end"),i=n.line;i<=r.line;i++)t=e.getLine(i),t=t.replace(/^[ ]*([# ]+|\*|\-|[> ]+|[0-9]+(.|\)))[ ]*/,""),e.replaceRange(t,{line:i,ch:0},{line:i,ch:99999999999999})}function D(e,t){for(var n in t)t.hasOwnProperty(n)&&(t[n]instanceof Array?e[n]=t[n].concat(e[n]instanceof Array?e[n]:[]):null!==t[n]&&"object"==typeof t[n]&&t[n].constructor===Object?e[n]=D(e[n]||{},t[n]):e[n]=t[n]);return e}function H(e){for(var t=1;t<arguments.length;t++)e=D(e,arguments[t]);return e}function W(e){var t=/[a-zA-Z0-9_\u0392-\u03c9\u0410-\u04F9]+|[\u4E00-\u9FFF\u3400-\u4dbf\uf900-\ufaff\u3040-\u309f\uac00-\ud7af]+/g,n=e.match(t),r=0;if(null===n)return r;for(var i=0;i<n.length;i++)r+=n[i].charCodeAt(0)>=19968?n[i].length:1;return r}function B(e){e=e||{},e.parent=this;var t=!0;if(e.autoDownloadFontAwesome===!1&&(t=!1),e.autoDownloadFontAwesome!==!0)for(var n=document.styleSheets,r=0;r<n.length;r++)n[r].href&&n[r].href.indexOf("//maxcdn.bootstrapcdn.com/font-awesome/")>-1&&(t=!1);if(t){var i=document.createElement("link");i.rel="stylesheet",i.href="https://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css",document.getElementsByTagName("head")[0].appendChild(i)}if(e.element)this.element=e.element;else if(null===e.element)return void console.log("SimpleMDE: Error. No element was found.");if(void 0===e.toolbar){e.toolbar=[];for(var o in K)K.hasOwnProperty(o)&&(-1!=o.indexOf("separator-")&&e.toolbar.push("|"),(K[o]["default"]===!0||e.showIcons&&e.showIcons.constructor===Array&&-1!=e.showIcons.indexOf(o))&&e.toolbar.push(o))}e.hasOwnProperty("status")||(e.status=["autosave","lines","words","cursor"]),e.previewRender||(e.previewRender=function(e){return this.parent.markdown(e)}),e.parsingConfig=H({highlightFormatting:!0},e.parsingConfig||{}),e.insertTexts=H({},X,e.insertTexts||{}),e.promptTexts=Z,e.blockStyles=H({},J,e.blockStyles||{}),e.shortcuts=H({},G,e.shortcuts||{}),void 0!=e.autosave&&void 0!=e.autosave.unique_id&&""!=e.autosave.unique_id&&(e.autosave.uniqueId=e.autosave.unique_id),this.options=e,this.render(),!e.initialValue||this.options.autosave&&this.options.autosave.foundSavedValue===!0||this.value(e.initialValue)}function _(){if("object"!=typeof localStorage)return!1;try{localStorage.setItem("smde_localStorage",1),localStorage.removeItem("smde_localStorage")}catch(e){return!1}return!0}var F=e("codemirror");e("codemirror/addon/edit/continuelist.js"),e("./codemirror/tablist"),e("codemirror/addon/display/fullscreen.js"),e("codemirror/mode/markdown/markdown.js"),e("codemirror/addon/mode/overlay.js"),e("codemirror/addon/display/placeholder.js"),e("codemirror/addon/selection/mark-selection.js"),e("codemirror/mode/gfm/gfm.js"),e("codemirror/mode/xml/xml.js");var z=e("codemirror-spell-checker"),j=e("marked"),U=/Mac/.test(navigator.platform),q={toggleBold:c,toggleItalic:u,drawLink:k,toggleHeadingSmaller:p,toggleHeadingBigger:m,drawImage:S,toggleBlockquote:d,toggleOrderedList:b,toggleUnorderedList:x,toggleCodeBlock:h,togglePreview:A,toggleStrikethrough:f,toggleHeading1:g,toggleHeading2:v,toggleHeading3:y,cleanBlock:w,drawTable:C,drawHorizontalRule:L,undo:T,redo:M,toggleSideBySide:N,toggleFullScreen:s},G={toggleBold:"Cmd-B",toggleItalic:"Cmd-I",drawLink:"Cmd-K",toggleHeadingSmaller:"Cmd-H",toggleHeadingBigger:"Shift-Cmd-H",cleanBlock:"Cmd-E",drawImage:"Cmd-Alt-I",toggleBlockquote:"Cmd-'",toggleOrderedList:"Cmd-Alt-L",toggleUnorderedList:"Cmd-L",toggleCodeBlock:"Cmd-Alt-C",togglePreview:"Cmd-P",toggleSideBySide:"F9",toggleFullScreen:"F11"},Y=function(e){for(var t in q)if(q[t]===e)return t;return null},$=function(){var e=!1;return function(t){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4)))&&(e=!0);
-}(navigator.userAgent||navigator.vendor||window.opera),e},V="",K={bold:{name:"bold",action:c,className:"fa fa-bold",title:"Bold","default":!0},italic:{name:"italic",action:u,className:"fa fa-italic",title:"Italic","default":!0},strikethrough:{name:"strikethrough",action:f,className:"fa fa-strikethrough",title:"Strikethrough"},heading:{name:"heading",action:p,className:"fa fa-header",title:"Heading","default":!0},"heading-smaller":{name:"heading-smaller",action:p,className:"fa fa-header fa-header-x fa-header-smaller",title:"Smaller Heading"},"heading-bigger":{name:"heading-bigger",action:m,className:"fa fa-header fa-header-x fa-header-bigger",title:"Bigger Heading"},"heading-1":{name:"heading-1",action:g,className:"fa fa-header fa-header-x fa-header-1",title:"Big Heading"},"heading-2":{name:"heading-2",action:v,className:"fa fa-header fa-header-x fa-header-2",title:"Medium Heading"},"heading-3":{name:"heading-3",action:y,className:"fa fa-header fa-header-x fa-header-3",title:"Small Heading"},"separator-1":{name:"separator-1"},code:{name:"code",action:h,className:"fa fa-code",title:"Code"},quote:{name:"quote",action:d,className:"fa fa-quote-left",title:"Quote","default":!0},"unordered-list":{name:"unordered-list",action:x,className:"fa fa-list-ul",title:"Generic List","default":!0},"ordered-list":{name:"ordered-list",action:b,className:"fa fa-list-ol",title:"Numbered List","default":!0},"clean-block":{name:"clean-block",action:w,className:"fa fa-eraser fa-clean-block",title:"Clean block"},"separator-2":{name:"separator-2"},link:{name:"link",action:k,className:"fa fa-link",title:"Create Link","default":!0},image:{name:"image",action:S,className:"fa fa-picture-o",title:"Insert Image","default":!0},table:{name:"table",action:C,className:"fa fa-table",title:"Insert Table"},"horizontal-rule":{name:"horizontal-rule",action:L,className:"fa fa-minus",title:"Insert Horizontal Line"},"separator-3":{name:"separator-3"},preview:{name:"preview",action:A,className:"fa fa-eye no-disable",title:"Toggle Preview","default":!0},"side-by-side":{name:"side-by-side",action:N,className:"fa fa-columns no-disable no-mobile",title:"Toggle Side by Side","default":!0},fullscreen:{name:"fullscreen",action:s,className:"fa fa-arrows-alt no-disable no-mobile",title:"Toggle Fullscreen","default":!0},"separator-4":{name:"separator-4"},guide:{name:"guide",action:"https://simplemde.com/markdown-guide",className:"fa fa-question-circle",title:"Markdown Guide","default":!0},"separator-5":{name:"separator-5"},undo:{name:"undo",action:T,className:"fa fa-undo no-disable",title:"Undo"},redo:{name:"redo",action:M,className:"fa fa-repeat no-disable",title:"Redo"}},X={link:["[","](#url#)"],image:["![](","#url#)"],table:["","\n\n| Column 1 | Column 2 | Column 3 |\n| -------- | -------- | -------- |\n| Text     | Text     | Text     |\n\n"],horizontalRule:["","\n\n-----\n\n"]},Z={link:"URL for the link:",image:"URL of the image:"},J={bold:"**",code:"```",italic:"*"};B.prototype.markdown=function(e){if(j){var t={};return this.options&&this.options.renderingConfig&&this.options.renderingConfig.singleLineBreaks===!1?t.breaks=!1:t.breaks=!0,this.options&&this.options.renderingConfig&&this.options.renderingConfig.codeSyntaxHighlighting===!0&&window.hljs&&(t.highlight=function(e){return window.hljs.highlightAuto(e).value}),j.setOptions(t),j(e)}},B.prototype.render=function(e){if(e||(e=this.element||document.getElementsByTagName("textarea")[0]),!this._rendered||this._rendered!==e){this.element=e;var t=this.options,n=this,i={};for(var o in t.shortcuts)null!==t.shortcuts[o]&&null!==q[o]&&!function(e){i[r(t.shortcuts[e])]=function(){q[e](n)}}(o);i.Enter="newlineAndIndentContinueMarkdownList",i.Tab="tabAndIndentMarkdownList",i["Shift-Tab"]="shiftTabAndUnindentMarkdownList",i.Esc=function(e){e.getOption("fullScreen")&&s(n)},document.addEventListener("keydown",function(e){e=e||window.event,27==e.keyCode&&n.codemirror.getOption("fullScreen")&&s(n)},!1);var a,l;if(t.spellChecker!==!1?(a="spell-checker",l=t.parsingConfig,l.name="gfm",l.gitHubSpice=!1,z({codeMirrorInstance:F})):(a=t.parsingConfig,a.name="gfm",a.gitHubSpice=!1),this.codemirror=F.fromTextArea(e,{mode:a,backdrop:l,theme:"paper",tabSize:void 0!=t.tabSize?t.tabSize:2,indentUnit:void 0!=t.tabSize?t.tabSize:2,indentWithTabs:t.indentWithTabs!==!1,lineNumbers:!1,autofocus:t.autofocus===!0,extraKeys:i,lineWrapping:t.lineWrapping!==!1,allowDropFileTypes:["text/plain"],placeholder:t.placeholder||e.getAttribute("placeholder")||"",styleSelectedText:void 0!=t.styleSelectedText?t.styleSelectedText:!0}),t.forceSync===!0){var c=this.codemirror;c.on("change",function(){c.save()})}this.gui={},t.toolbar!==!1&&(this.gui.toolbar=this.createToolbar()),t.status!==!1&&(this.gui.statusbar=this.createStatusbar()),void 0!=t.autosave&&t.autosave.enabled===!0&&this.autosave(),this.gui.sideBySide=this.createSideBySide(),this._rendered=this.element;var u=this.codemirror;setTimeout(function(){u.refresh()}.bind(u),0)}},B.prototype.autosave=function(){if(_()){var e=this;if(void 0==this.options.autosave.uniqueId||""==this.options.autosave.uniqueId)return void console.log("SimpleMDE: You must set a uniqueId to use the autosave feature");null!=e.element.form&&void 0!=e.element.form&&e.element.form.addEventListener("submit",function(){localStorage.removeItem("smde_"+e.options.autosave.uniqueId)}),this.options.autosave.loaded!==!0&&("string"==typeof localStorage.getItem("smde_"+this.options.autosave.uniqueId)&&""!=localStorage.getItem("smde_"+this.options.autosave.uniqueId)&&(this.codemirror.setValue(localStorage.getItem("smde_"+this.options.autosave.uniqueId)),this.options.autosave.foundSavedValue=!0),this.options.autosave.loaded=!0),localStorage.setItem("smde_"+this.options.autosave.uniqueId,e.value());var t=document.getElementById("autosaved");if(null!=t&&void 0!=t&&""!=t){var n=new Date,r=n.getHours(),i=n.getMinutes(),o="am",a=r;a>=12&&(a=r-12,o="pm"),0==a&&(a=12),i=10>i?"0"+i:i,t.innerHTML="Autosaved: "+a+":"+i+" "+o}this.autosaveTimeoutId=setTimeout(function(){e.autosave()},this.options.autosave.delay||1e4)}else console.log("SimpleMDE: localStorage not available, cannot autosave")},B.prototype.clearAutosavedValue=function(){if(_()){if(void 0==this.options.autosave||void 0==this.options.autosave.uniqueId||""==this.options.autosave.uniqueId)return void console.log("SimpleMDE: You must set a uniqueId to clear the autosave value");localStorage.removeItem("smde_"+this.options.autosave.uniqueId)}else console.log("SimpleMDE: localStorage not available, cannot autosave")},B.prototype.createSideBySide=function(){var e=this.codemirror,t=e.getWrapperElement(),n=t.nextSibling;n&&/editor-preview-side/.test(n.className)||(n=document.createElement("div"),n.className="editor-preview-side",t.parentNode.insertBefore(n,t.nextSibling));var r=!1,i=!1;return e.on("scroll",function(e){if(r)return void(r=!1);i=!0;var t=e.getScrollInfo().height-e.getScrollInfo().clientHeight,o=parseFloat(e.getScrollInfo().top)/t,a=(n.scrollHeight-n.clientHeight)*o;n.scrollTop=a}),n.onscroll=function(){if(i)return void(i=!1);r=!0;var t=n.scrollHeight-n.clientHeight,o=parseFloat(n.scrollTop)/t,a=(e.getScrollInfo().height-e.getScrollInfo().clientHeight)*o;e.scrollTo(0,a)},n},B.prototype.createToolbar=function(e){if(e=e||this.options.toolbar,e&&0!==e.length){var t;for(t=0;t<e.length;t++)void 0!=K[e[t]]&&(e[t]=K[e[t]]);var n=document.createElement("div");n.className="editor-toolbar";var r=this,a={};for(r.toolbar=e,t=0;t<e.length;t++)if(("guide"!=e[t].name||r.options.toolbarGuideIcon!==!1)&&!(r.options.hideIcons&&-1!=r.options.hideIcons.indexOf(e[t].name)||("fullscreen"==e[t].name||"side-by-side"==e[t].name)&&$())){if("|"===e[t]){for(var s=!1,c=t+1;c<e.length;c++)"|"===e[c]||r.options.hideIcons&&-1!=r.options.hideIcons.indexOf(e[c].name)||(s=!0);if(!s)continue}!function(e){var t;t="|"===e?o():i(e,r.options.toolbarTips,r.options.shortcuts),e.action&&("function"==typeof e.action?t.onclick=function(t){t.preventDefault(),e.action(r)}:"string"==typeof e.action&&(t.href=e.action,t.target="_blank")),a[e.name||e]=t,n.appendChild(t)}(e[t])}r.toolbarElements=a;var u=this.codemirror;u.on("cursorActivity",function(){var e=l(u);for(var t in a)!function(t){var n=a[t];e[t]?n.className+=" active":"fullscreen"!=t&&"side-by-side"!=t&&(n.className=n.className.replace(/\s*active\s*/g,""))}(t)});var f=u.getWrapperElement();return f.parentNode.insertBefore(n,f),n}},B.prototype.createStatusbar=function(e){e=e||this.options.status;var t=this.options,n=this.codemirror;if(e&&0!==e.length){var r,i,o,a=[];for(r=0;r<e.length;r++)if(i=void 0,o=void 0,"object"==typeof e[r])a.push({className:e[r].className,defaultValue:e[r].defaultValue,onUpdate:e[r].onUpdate});else{var l=e[r];"words"===l?(o=function(e){e.innerHTML=W(n.getValue())},i=function(e){e.innerHTML=W(n.getValue())}):"lines"===l?(o=function(e){e.innerHTML=n.lineCount()},i=function(e){e.innerHTML=n.lineCount()}):"cursor"===l?(o=function(e){e.innerHTML="0:0"},i=function(e){var t=n.getCursor();e.innerHTML=t.line+":"+t.ch}):"autosave"===l&&(o=function(e){void 0!=t.autosave&&t.autosave.enabled===!0&&e.setAttribute("id","autosaved")}),a.push({className:l,defaultValue:o,onUpdate:i})}var s=document.createElement("div");for(s.className="editor-statusbar",r=0;r<a.length;r++){var c=a[r],u=document.createElement("span");u.className=c.className,"function"==typeof c.defaultValue&&c.defaultValue(u),"function"==typeof c.onUpdate&&this.codemirror.on("update",function(e,t){return function(){t.onUpdate(e)}}(u,c)),s.appendChild(u)}var f=this.codemirror.getWrapperElement();return f.parentNode.insertBefore(s,f.nextSibling),s}},B.prototype.value=function(e){return void 0===e?this.codemirror.getValue():(this.codemirror.getDoc().setValue(e),this)},B.toggleBold=c,B.toggleItalic=u,B.toggleStrikethrough=f,B.toggleBlockquote=d,B.toggleHeadingSmaller=p,B.toggleHeadingBigger=m,B.toggleHeading1=g,B.toggleHeading2=v,B.toggleHeading3=y,B.toggleCodeBlock=h,B.toggleUnorderedList=x,B.toggleOrderedList=b,B.cleanBlock=w,B.drawLink=k,B.drawImage=S,B.drawTable=C,B.drawHorizontalRule=L,B.undo=T,B.redo=M,B.togglePreview=A,B.toggleSideBySide=N,B.toggleFullScreen=s,B.prototype.toggleBold=function(){c(this)},B.prototype.toggleItalic=function(){u(this)},B.prototype.toggleStrikethrough=function(){f(this)},B.prototype.toggleBlockquote=function(){d(this)},B.prototype.toggleHeadingSmaller=function(){p(this)},B.prototype.toggleHeadingBigger=function(){m(this)},B.prototype.toggleHeading1=function(){g(this)},B.prototype.toggleHeading2=function(){v(this)},B.prototype.toggleHeading3=function(){y(this)},B.prototype.toggleCodeBlock=function(){h(this)},B.prototype.toggleUnorderedList=function(){x(this)},B.prototype.toggleOrderedList=function(){b(this)},B.prototype.cleanBlock=function(){w(this)},B.prototype.drawLink=function(){k(this)},B.prototype.drawImage=function(){S(this)},B.prototype.drawTable=function(){C(this)},B.prototype.drawHorizontalRule=function(){L(this)},B.prototype.undo=function(){T(this)},B.prototype.redo=function(){M(this)},B.prototype.togglePreview=function(){A(this)},B.prototype.toggleSideBySide=function(){N(this)},B.prototype.toggleFullScreen=function(){s(this)},B.prototype.isPreviewActive=function(){var e=this.codemirror,t=e.getWrapperElement(),n=t.lastChild;return/editor-preview-active/.test(n.className)},B.prototype.isSideBySideActive=function(){var e=this.codemirror,t=e.getWrapperElement(),n=t.nextSibling;return/editor-preview-active-side/.test(n.className)},B.prototype.isFullscreenActive=function(){var e=this.codemirror;return e.getOption("fullScreen")},B.prototype.getState=function(){var e=this.codemirror;return l(e)},B.prototype.toTextArea=function(){var e=this.codemirror,t=e.getWrapperElement();t.parentNode&&(this.gui.toolbar&&t.parentNode.removeChild(this.gui.toolbar),this.gui.statusbar&&t.parentNode.removeChild(this.gui.statusbar),this.gui.sideBySide&&t.parentNode.removeChild(this.gui.sideBySide)),e.toTextArea(),this.autosaveTimeoutId&&(clearTimeout(this.autosaveTimeoutId),this.autosaveTimeoutId=void 0,this.clearAutosavedValue())},t.exports=B},{"./codemirror/tablist":19,codemirror:10,"codemirror-spell-checker":4,"codemirror/addon/display/fullscreen.js":5,"codemirror/addon/display/placeholder.js":6,"codemirror/addon/edit/continuelist.js":7,"codemirror/addon/mode/overlay.js":8,"codemirror/addon/selection/mark-selection.js":9,"codemirror/mode/gfm/gfm.js":11,"codemirror/mode/markdown/markdown.js":12,"codemirror/mode/xml/xml.js":14,marked:17}]},{},[20])(20)});
\ No newline at end of file
diff --git a/resources/assets/js/controllers.js b/resources/assets/js/controllers.js
index d92c5538b..732467368 100644
--- a/resources/assets/js/controllers.js
+++ b/resources/assets/js/controllers.js
@@ -684,19 +684,20 @@ module.exports = function (ngApp, events) {
 
     // CommentCrudController
     ngApp.controller('CommentAddController', ['$scope', '$http', function ($scope, $http) {
+        const MarkdownIt = require("markdown-it");
+        const md = new MarkdownIt({html: true});
         let vm = this;
-        let comment = {};
         $scope.errors = {};
         vm.saveComment = function () {
             let pageId = $scope.comment.pageId;
             let comment = $scope.comment.newComment;
-            let commentHTML = $scope.getCommentHTML();
+            let commentHTML = md.render($scope.comment.newComment);
 
             $http.post(window.baseUrl(`/ajax/page/${pageId}/comment/`), {
                 text: comment,
                 html: commentHTML
             }).then(resp => {                
-                $scope.clearInput();
+                $scope.comment.newComment = '';
                 if (!resp.data || resp.data.status !== 'success') {
                      return events.emit('error', trans('error'));
                 }
diff --git a/resources/assets/js/directives.js b/resources/assets/js/directives.js
index cae07a166..dded45dd7 100644
--- a/resources/assets/js/directives.js
+++ b/resources/assets/js/directives.js
@@ -818,53 +818,6 @@ module.exports = function (ngApp, events) {
             }
         };
     }]);
-
-
-    ngApp.directive('simpleMarkdownInput', ['$timeout', function ($timeout) {
-        return {
-            restrict: 'A',
-            scope: {
-                smdModel: '=',
-                smdChange: '=',
-                smdGetContent: '=',
-                smdClear: '='
-            },
-            link: function (scope, element, attrs) {
-                // Set initial model content
-                element = element.find('textarea').first();
-                let simplemde = new SimpleMDE({
-                    element: element[0],
-                    status: []
-                });
-                let content = element.val();
-                simplemde.value(content)
-                scope.smdModel = content;
-
-                simplemde.codemirror.on('change', (event) => {
-                    content = simplemde.value();
-                    $timeout(() => {
-                        scope.smdModel = content;
-                        if (scope.smdChange) {
-                            scope.smdChange(element, content);
-                        }
-                    });
-                });
-                
-                if ('smdGetContent' in attrs) {
-                    scope.smdGetContent = function () {
-                        return simplemde.options.previewRender(simplemde.value());
-                    };
-                }
-                
-                if ('smdClear' in attrs) {
-                    scope.smdClear = function () {
-                        simplemde.value('');
-                        scope.smdModel = '';                        
-                    };
-                }
-            }
-        }
-    }]);
     
     ngApp.directive('commentReply', ['$timeout', function ($timeout) {        
         return {
diff --git a/resources/assets/sass/_comments.scss b/resources/assets/sass/_comments.scss
index 785f9948d..7da319025 100644
--- a/resources/assets/sass/_comments.scss
+++ b/resources/assets/sass/_comments.scss
@@ -57,4 +57,11 @@
 
 .comment-editor {
     margin-top: 2em;
+    
+    textarea {
+        display: block;
+        width: 100%;
+        max-width: 100%;
+        min-height: 120px;
+    }
 }
diff --git a/resources/assets/sass/_simplemde.scss b/resources/assets/sass/_simplemde.scss
deleted file mode 100644
index 41d944ee3..000000000
--- a/resources/assets/sass/_simplemde.scss
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * simplemde v1.11.2
- * Copyright Next Step Webs, Inc.
- * @link https://github.com/NextStepWebs/simplemde-markdown-editor
- * @license MIT
- */
-.CodeMirror{color:#000}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px; border: none; box-shadow: none;}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-ruler{border-left:1px solid #ccc;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0f0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#f22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:0;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-30px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:0 0!important;border:none!important;-webkit-user-select:none;-moz-user-select:none;user-select:none}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:0 0;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:none;font-variant-ligatures:none}.CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;overflow:auto}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected,.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background:#ffa;background:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:0 0}.CodeMirror{height:auto;min-height:300px;border:1px solid #ddd;border-bottom-left-radius:4px;border-bottom-right-radius:4px;padding:10px;font:inherit;z-index:1}.CodeMirror-scroll{min-height:300px}.CodeMirror-fullscreen{background:#fff;position:fixed!important;top:50px;left:0;right:0;bottom:0;height:auto;z-index:9}.CodeMirror-sided{width:50%!important}.editor-toolbar{position:relative;opacity:.6;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;padding:0 10px;border-top:1px solid #bbb;border-left:1px solid #bbb;border-right:1px solid #bbb;border-top-left-radius:4px;border-top-right-radius:4px}.editor-toolbar:after,.editor-toolbar:before{display:block;content:' ';height:1px}.editor-toolbar:before{margin-bottom:8px}.editor-toolbar:after{margin-top:8px}.editor-toolbar:hover,.editor-wrapper input.title:focus,.editor-wrapper input.title:hover{opacity:.8}.editor-toolbar.fullscreen{width:100%;height:50px;overflow-x:auto;overflow-y:hidden;white-space:nowrap;padding-top:10px;padding-bottom:10px;box-sizing:border-box;background:#fff;border:0;position:fixed;top:0;left:0;opacity:1;z-index:9}.editor-toolbar.fullscreen::before{width:20px;height:50px;background:-moz-linear-gradient(left,rgba(255,255,255,1) 0,rgba(255,255,255,0) 100%);background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,1)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,1) 0,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,1) 0,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,1) 0,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,1) 0,rgba(255,255,255,0) 100%);position:fixed;top:0;left:0;margin:0;padding:0}.editor-toolbar.fullscreen::after{width:20px;height:50px;background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,1) 100%);background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(100%,rgba(255,255,255,1)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,1) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,1) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,1) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,1) 100%);position:fixed;top:0;right:0;margin:0;padding:0}.editor-toolbar a{display:inline-block;text-align:center;text-decoration:none!important;color:#2c3e50!important;width:30px;height:30px;margin:0;border:1px solid transparent;border-radius:3px;cursor:pointer}.editor-toolbar a.active,.editor-toolbar a:hover{background:#fcfcfc;border-color:#95a5a6}.editor-toolbar a:before{line-height:30px}.editor-toolbar i.separator{display:inline-block;width:0;border-left:1px solid #d9d9d9;border-right:1px solid #fff;color:transparent;text-indent:-10px;margin:0 6px}.editor-toolbar a.fa-header-x:after{font-family:Arial,"Helvetica Neue",Helvetica,sans-serif;font-size:65%;vertical-align:text-bottom;position:relative;top:2px}.editor-toolbar a.fa-header-1:after{content:"1"}.editor-toolbar a.fa-header-2:after{content:"2"}.editor-toolbar a.fa-header-3:after{content:"3"}.editor-toolbar a.fa-header-bigger:after{content:"▲"}.editor-toolbar a.fa-header-smaller:after{content:"▼"}.editor-toolbar.disabled-for-preview a:not(.no-disable){pointer-events:none;background:#fff;border-color:transparent;text-shadow:inherit}@media only screen and (max-width:700px){.editor-toolbar a.no-mobile{display:none}}.editor-statusbar{padding:8px 10px;font-size:12px;color:#959694;text-align:right}.editor-statusbar span{display:inline-block;min-width:4em;margin-left:1em}.editor-preview,.editor-preview-side{padding:10px;background:#fafafa;overflow:auto;display:none;box-sizing:border-box}.editor-statusbar .lines:before{content:'lines: '}.editor-statusbar .words:before{content:'words: '}.editor-statusbar .characters:before{content:'characters: '}.editor-preview{position:absolute;width:100%;height:100%;top:0;left:0;z-index:7}.editor-preview-side{position:fixed;bottom:0;width:50%;top:50px;right:0;z-index:9;border:1px solid #ddd}.editor-preview-active,.editor-preview-active-side{display:block}.editor-preview-side>p,.editor-preview>p{margin-top:0}.editor-preview pre,.editor-preview-side pre{background:#eee;margin-bottom:10px}.editor-preview table td,.editor-preview table th,.editor-preview-side table td,.editor-preview-side table th{border:1px solid #ddd;padding:5px}.CodeMirror .CodeMirror-code .cm-tag{color:#63a35c}.CodeMirror .CodeMirror-code .cm-attribute{color:#795da3}.CodeMirror .CodeMirror-code .cm-string{color:#183691}.CodeMirror .CodeMirror-selected{background:#d9d9d9}.CodeMirror .CodeMirror-code .cm-header-1{font-size:200%;line-height:200%}.CodeMirror .CodeMirror-code .cm-header-2{font-size:160%;line-height:160%}.CodeMirror .CodeMirror-code .cm-header-3{font-size:125%;line-height:125%}.CodeMirror .CodeMirror-code .cm-header-4{font-size:110%;line-height:110%}.CodeMirror .CodeMirror-code .cm-comment{background:rgba(0,0,0,.05);border-radius:2px}.CodeMirror .CodeMirror-code .cm-link{color:#7f8c8d}.CodeMirror .CodeMirror-code .cm-url{color:#aab2b3}.CodeMirror .CodeMirror-code .cm-strikethrough{text-decoration:line-through}.CodeMirror .CodeMirror-placeholder{opacity:.5}.CodeMirror .cm-spell-error:not(.cm-url):not(.cm-comment):not(.cm-tag):not(.cm-word){background:rgba(255,0,0,.15)}
\ No newline at end of file
diff --git a/resources/assets/sass/styles.scss b/resources/assets/sass/styles.scss
index 60071b9ef..541e9fbaf 100644
--- a/resources/assets/sass/styles.scss
+++ b/resources/assets/sass/styles.scss
@@ -12,7 +12,6 @@
 @import "animations";
 @import "tinymce";
 @import "highlightjs";
-@import "simplemde";
 @import "components";
 @import "header";
 @import "lists";
diff --git a/resources/lang/en/entities.php b/resources/lang/en/entities.php
index 11e29976a..610309362 100644
--- a/resources/lang/en/entities.php
+++ b/resources/lang/en/entities.php
@@ -239,5 +239,6 @@ return [
      * Comments
      */
     'comment' => 'Comment',
-    'comments' => 'Comments'
+    'comments' => 'Comments',
+    'comment_placeholder' => 'Enter your comments here, markdown supported...'
 ];
\ No newline at end of file
diff --git a/resources/views/comments/add.blade.php b/resources/views/comments/add.blade.php
index c221cdbd4..7655675ae 100644
--- a/resources/views/comments/add.blade.php
+++ b/resources/views/comments/add.blade.php
@@ -1,13 +1,11 @@
 <div class="comment-editor" ng-controller="CommentAddController as vm" ng-cloak>
-<form novalidate>
-        <div simple-markdown-input smd-model="comment.newComment" smd-get-content="getCommentHTML" smd-clear="clearInput">
-            <textarea name="markdown" rows="3"
-                      @if($errors->has('markdown')) class="neg" @endif>@if(isset($model) ||
-                      old('markdown')){{htmlspecialchars( old('markdown') ? old('markdown') : ($model->markdown === '' ? $model->html : $model->markdown))}}@endif</textarea>
-        </div>
+    <form novalidate>
+        <textarea name="markdown" rows="3" ng-model="comment.newComment" placeholder="{{ trans('entities.comment_placeholder') }}"
+                  @if($errors->has('markdown')) class="neg" @endif>@if(isset($model) ||
+                  old('markdown')){{htmlspecialchars( old('markdown') ? old('markdown') : ($model->markdown === '' ? $model->html : $model->markdown))}}@endif</textarea>
         <input type="hidden" ng-model="pageId" name="comment.pageId" value="{{$pageId}}" ng-init="comment.pageId = {{$pageId }}">
         <button type="submit" class="button pos" ng-click="vm.saveComment()">Save</button>
-</form>
+    </form>
 </div>
 
 @if($errors->has('markdown'))
diff --git a/resources/views/comments/comments.blade.php b/resources/views/comments/comments.blade.php
index 107052e87..b3669faa9 100644
--- a/resources/views/comments/comments.blade.php
+++ b/resources/views/comments/comments.blade.php
@@ -1,6 +1,3 @@
-@section('head')
-    <script src="{{ baseUrl("/libs/simplemde/simplemde.min.js") }}"></script>
-@stop
 <script type="text/ng-template" id="comment-list-item.html">
     @include('comments/list-item')
 </script>

From 03e5d61798e6b8df3b4d74b5f3bb1a96fe8199bb Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Tue, 16 May 2017 00:40:14 +0530
Subject: [PATCH 07/83] #47 Implements the reply and edit functionality for
 comments.

---
 app/Comment.php                               | 22 +++---
 app/Http/Controllers/CommentController.php    | 23 +++---
 app/Repos/CommentRepo.php                     | 12 +--
 resources/assets/js/controllers.js            | 61 ++++++++++-----
 resources/assets/js/directives.js             | 77 +++++++++++++++----
 resources/views/comments/add.blade.php        | 13 ----
 .../views/comments/comment-reply.blade.php    | 23 +++---
 resources/views/comments/comments.blade.php   |  4 +-
 resources/views/comments/list-item.blade.php  |  5 +-
 routes/web.php                                |  4 +-
 10 files changed, 149 insertions(+), 95 deletions(-)
 delete mode 100644 resources/views/comments/add.blade.php

diff --git a/app/Comment.php b/app/Comment.php
index 74fcc3fdc..e7df32015 100644
--- a/app/Comment.php
+++ b/app/Comment.php
@@ -5,8 +5,8 @@ use Illuminate\Support\Facades\DB;
 
 class Comment extends Ownable
 {
-    protected $fillable = ['text', 'html'];
-    
+    protected $fillable = ['text', 'html', 'parent_id'];
+
     /**
      * Get the entity that this comment belongs to
      * @return \Illuminate\Database\Eloquent\Relations\MorphTo
@@ -15,7 +15,7 @@ class Comment extends Ownable
     {
         return $this->morphTo('entity');
     }
-    
+
     /**
      * Get the page that this comment is in.
      * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
@@ -24,32 +24,32 @@ class Comment extends Ownable
     {
         return $this->belongsTo(Page::class);
     }
-    
+
     /**
      * Get the owner of this comment.
      * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
      */
-    public function user() 
+    public function user()
     {
         return $this->belongsTo(User::class);
     }
-    
-    public function getCommentsByPage($pageId, $commentId, $pageNum = 0, $limit = 0) {        
-  
+
+    public function getCommentsByPage($pageId, $commentId, $pageNum = 0, $limit = 0) {
+
         $query = static::newQuery();
         $query->join('users AS u', 'comments.created_by', '=', 'u.id');
         $query->leftJoin('users AS u1', 'comments.updated_by', '=', 'u1.id');
         $query->leftJoin('images AS i', 'i.id', '=', 'u.image_id');
         $query->selectRaw('comments.id, text, html, comments.created_by, comments.updated_by, comments.created_at, comments.updated_at, '
                 . 'u.name AS created_by_name, u1.name AS updated_by_name, '
-                . '(SELECT count(c.id) FROM bookstack.comments c WHERE c.parent_id = comments.id AND page_id = ?) AS cnt_sub_comments, i.url AS avatar ', 
+                . '(SELECT count(c.id) FROM bookstack.comments c WHERE c.parent_id = comments.id AND page_id = ?) AS cnt_sub_comments, i.url AS avatar ',
                 [$pageId]);
-        
+
         if (empty($commentId)) {
             $query->whereRaw('page_id = ? AND parent_id IS NULL', [$pageId]);
         } else {
             $query->whereRaw('page_id = ? AND parent_id = ?', [$pageId, $commentId]);
-        }        
+        }
         $query->orderBy('created_at');
         return $query;
     }
diff --git a/app/Http/Controllers/CommentController.php b/app/Http/Controllers/CommentController.php
index 8e7b1512a..e1729bbee 100644
--- a/app/Http/Controllers/CommentController.php
+++ b/app/Http/Controllers/CommentController.php
@@ -2,18 +2,19 @@
 
 use BookStack\Repos\CommentRepo;
 use BookStack\Repos\EntityRepo;
+use BookStack\Comment;
 use Illuminate\Http\Request;
-use Views;
 
 // delete  -checkOwnablePermission \
 class CommentController extends Controller
 {
     protected $entityRepo;
 
-    public function __construct(EntityRepo $entityRepo, CommentRepo $commentRepo)
+    public function __construct(EntityRepo $entityRepo, CommentRepo $commentRepo, Comment $comment)
     {
         $this->entityRepo = $entityRepo;
         $this->commentRepo = $commentRepo;
+        $this->comment = $comment;
         parent::__construct();
     }
 
@@ -43,10 +44,10 @@ class CommentController extends Controller
             // create a new comment.
             $this->checkPermission('comment-create-all');
             $comment = $this->commentRepo->create($page, $request->only(['text', 'html', 'parent_id']));
-            $respMsg = trans('entities.comment_created');            
+            $respMsg = trans('entities.comment_created');
         } else {
             // update existing comment
-            // get comment by ID and check if this user has permission to update.            
+            // get comment by ID and check if this user has permission to update.
             $comment = $this->comment->findOrFail($commentId);
             $this->checkOwnablePermission('comment-update', $comment);
             $this->commentRepo->update($comment, $request->all());
@@ -59,7 +60,7 @@ class CommentController extends Controller
         ]);
 
     }
-    
+
     public function destroy($id) {
         $comment = $this->comment->findOrFail($id);
         $this->checkOwnablePermission('comment-delete', $comment);
@@ -67,13 +68,13 @@ class CommentController extends Controller
         //
     }
 
-    public function getComments($pageId, $commentId = null) {        
+    public function getCommentThread($pageId, $commentId = null) {
         try {
             $page = $this->entityRepo->getById('page', $pageId, true);
         } catch (ModelNotFoundException $e) {
             return response('Not found', 404);
         }
-        
+
         if($page->draft) {
             // cannot add comments to drafts.
             return response()->json([
@@ -81,15 +82,15 @@ class CommentController extends Controller
                 'message' => trans('errors.no_comments_for_draft'),
             ], 400);
         }
-        
+
         $this->checkOwnablePermission('page-view', $page);
-        
+
         $comments = $this->commentRepo->getCommentsForPage($pageId, $commentId);
         if (empty($commentId)) {
             // requesting for parent level comments, send the total count as well.
             $totalComments = $this->commentRepo->getCommentCount($pageId);
-            return response()->json(array('success' => true, 'comments'=> $comments, 'total' => $totalComments));
+            return response()->json(['success' => true, 'comments'=> $comments, 'total' => $totalComments]);
         }
-        return response()->json(array('success' => true, 'comments'=> $comments));
+        return response()->json(['success' => true, 'comments'=> $comments]);
     }
 }
diff --git a/app/Repos/CommentRepo.php b/app/Repos/CommentRepo.php
index ba34617ed..10b36eb16 100644
--- a/app/Repos/CommentRepo.php
+++ b/app/Repos/CommentRepo.php
@@ -10,7 +10,7 @@ use BookStack\Page;
 class CommentRepo {
     /**
      *
-     * @var Comment $comment 
+     * @var Comment $comment
      */
     protected $comment;
 
@@ -25,7 +25,7 @@ class CommentRepo {
         $comment->fill($data);
         // new comment
         $comment->page_id = $page->id;
-        $comment->created_by = $userId;        
+        $comment->created_by = $userId;
         $comment->save();
         return $comment;
     }
@@ -37,13 +37,13 @@ class CommentRepo {
         $comment->save();
         return $comment;
     }
-    
-    public function getCommentsForPage($pageId, $commentId, $count = 20) {        
+
+    public function getCommentsForPage($pageId, $commentId, $count = 20) {
         // requesting parent comments
         $query = $this->comment->getCommentsByPage($pageId, $commentId);
-        return $query->paginate($count);        
+        return $query->paginate($count);
     }
-    
+
     public function getCommentCount($pageId) {
         return $this->comment->where('page_id', '=', $pageId)->count();
     }
diff --git a/resources/assets/js/controllers.js b/resources/assets/js/controllers.js
index 732467368..9d5478690 100644
--- a/resources/assets/js/controllers.js
+++ b/resources/assets/js/controllers.js
@@ -683,29 +683,49 @@ module.exports = function (ngApp, events) {
         }]);
 
     // CommentCrudController
-    ngApp.controller('CommentAddController', ['$scope', '$http', function ($scope, $http) {
+    ngApp.controller('CommentReplyController', ['$scope', '$http', function ($scope, $http) {
         const MarkdownIt = require("markdown-it");
         const md = new MarkdownIt({html: true});
         let vm = this;
         $scope.errors = {};
         vm.saveComment = function () {
-            let pageId = $scope.comment.pageId;
-            let comment = $scope.comment.newComment;
-            let commentHTML = md.render($scope.comment.newComment);
-
-            $http.post(window.baseUrl(`/ajax/page/${pageId}/comment/`), {
+            let pageId = $scope.comment.pageId || $scope.pageId;
+            let comment = $scope.comment.text;
+            let commentHTML = md.render($scope.comment.text);
+            let serviceUrl = `/ajax/page/${pageId}/comment/`;
+            let httpMethod = 'post';
+            let errorOp = 'add';
+            let reqObj = {
                 text: comment,
                 html: commentHTML
-            }).then(resp => {                
-                $scope.comment.newComment = '';
+            };
+
+            if ($scope.isEdit === true) {
+                // this will be set when editing the comment.
+                serviceUrl = `/ajax/page/${pageId}/comment/${$scope.comment.id}`;
+                httpMethod = 'put';
+                errorOp = 'update';
+            } else if ($scope.isReply === true) {
+                // if its reply, get the parent comment id
+                reqObj.parent_id = $scope.parentId;
+            }
+            $http[httpMethod](window.baseUrl(serviceUrl), reqObj).then(resp => {
                 if (!resp.data || resp.data.status !== 'success') {
                      return events.emit('error', trans('error'));
                 }
+                if ($scope.isEdit) {
+                    $scope.comment.html = commentHTML;
+                    $scope.$emit('evt.comment-success', $scope.comment.id);
+                } else {
+                    $scope.comment.text = '';
+                    $scope.$emit('evt.comment-success', null, true);
+                }
                 events.emit('success', trans(resp.data.message));
-            }, checkError('add'));
-                        
-        };  
-        
+
+            }, checkError(errorOp));
+
+        };
+
         function checkError(errorGroupName) {
             $scope.errors[errorGroupName] = {};
             return function(response) {
@@ -725,19 +745,19 @@ module.exports = function (ngApp, events) {
     ngApp.controller('CommentListController', ['$scope', '$http', '$timeout', function ($scope, $http, $timeout) {
         let vm = this;
         $scope.errors = {};
-        $scope.defaultAvatar = defaultAvatar;        
+        $scope.defaultAvatar = defaultAvatar;
         vm.totalCommentsStr = 'Loading...';
         $scope.editorChange = function (content) {
             console.log(content);
         }
-        
+
         $timeout(function() {
             $http.get(window.baseUrl(`/ajax/page/${$scope.pageId}/comments/`)).then(resp => {
                 if (!resp.data || resp.data.success !== true) {
                     // TODO : Handle error
                     return;
                 }
-                vm.comments = resp.data.comments.data;  
+                vm.comments = resp.data.comments.data;
                 vm.totalComments = resp.data.total;
                 // TODO : Fetch message from translate.
                 if (vm.totalComments === 0) {
@@ -748,20 +768,19 @@ module.exports = function (ngApp, events) {
                     vm.totalCommentsStr = vm.totalComments + ' Comments'
                 }
             }, checkError('app'));
-        });        
-        
+        });
+
         vm.loadSubComments = function(event, comment) {
             event.preventDefault();
             $http.get(window.baseUrl(`/ajax/page/${$scope.pageId}/comments/${comment.id}/sub-comments`)).then(resp => {
-                console.log(resp);
                 if (!resp.data || resp.data.success !== true) {
                     return;
                 }
-                comment.is_loaded = true;                
-                comment.comments = resp.data.comments.data;                
+                comment.is_loaded = true;
+                comment.comments = resp.data.comments.data;
             }, checkError('app'));
         };
-        
+
         function checkError(errorGroupName) {
             $scope.errors[errorGroupName] = {};
             return function(response) {
diff --git a/resources/assets/js/directives.js b/resources/assets/js/directives.js
index dded45dd7..6c556acc9 100644
--- a/resources/assets/js/directives.js
+++ b/resources/assets/js/directives.js
@@ -818,29 +818,62 @@ module.exports = function (ngApp, events) {
             }
         };
     }]);
-    
-    ngApp.directive('commentReply', ['$timeout', function ($timeout) {        
+
+    ngApp.directive('commentReply', [function () {
         return {
             restrict: 'E',
             templateUrl: 'comment-reply.html',
             scope: {
-                
+              pageId: '=',
+              parentId: '='
             },
-            link: function (scope, element, attr) {
-               
+            link: function (scope, element) {
+                scope.isReply = true;
+                scope.$on('evt.comment-success', function (event) {
+                    // no need for the event to do anything more.
+                    event.stopPropagation();
+                    event.preventDefault();
+                    element.remove();
+                    scope.$destroy();
+                });
             }
         }
-                
     }]);
 
-    ngApp.directive('commentReplyLink', ['$document', '$compile', function ($document, $compile) {
-        return { 
+    ngApp.directive('commentEdit', [function () {
+         return {
+            restrict: 'E',
+            templateUrl: 'comment-reply.html',
+            scope: {
+              comment: '=',
+            },
+            link: function (scope, element) {
+                scope.isEdit = true;
+                scope.$on('evt.comment-success', function (event, commentId) {
+                   // no need for the event to do anything more.
+                   event.stopPropagation();
+                   event.preventDefault();
+                   if (commentId === scope.comment.id && !scope.isNew) {
+                       element.remove();
+                       scope.$destroy();
+                   }
+                });
+            }
+        }
+    }]);
+
+
+    ngApp.directive('commentReplyLink', ['$document', '$compile', '$http', function ($document, $compile, $http) {
+        return {
+            scope: {
+                comment: '='
+            },
             link: function (scope, element, attr) {
                 element.on('$destroy', function () {
                     element.off('click');
-                    scope.$destroy(); 
+                    scope.$destroy();
                 });
-                
+
                 element.on('click', function () {
                     var $container = element.parents('.comment-box').first();
                     if (!$container.length) {
@@ -848,21 +881,31 @@ module.exports = function (ngApp, events) {
                         return;
                     }
                     if (attr.noCommentReplyDupe) {
-                        removeDupe();                    
+                        removeDupe();
                     }
-                    var compiledHTML = $compile('<comment-reply></comment-reply>')(scope);
-                    $container.append(compiledHTML);
+
+                    compileHtml($container, scope, attr.isReply === 'true');
                 });
             }
         };
-        
-        
+
+        function compileHtml($container, scope, isReply) {
+            let lnkFunc = null;
+            if (isReply) {
+                lnkFunc = $compile('<comment-reply page-id="comment.pageId" parent-id="comment.id"></comment-reply>');
+            } else {
+                lnkFunc = $compile('<comment-edit comment="comment"></comment-add>');
+            }
+            var compiledHTML = lnkFunc(scope);
+            $container.append(compiledHTML);
+        }
+
         function removeDupe() {
-            let $existingElement = $document.find('comment-reply');
+            let $existingElement = $document.find('.comments-list comment-reply');
             if (!$existingElement.length) {
                 return;
             }
-            
+
             $existingElement.remove();
         }
     }]);
diff --git a/resources/views/comments/add.blade.php b/resources/views/comments/add.blade.php
deleted file mode 100644
index 7655675ae..000000000
--- a/resources/views/comments/add.blade.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<div class="comment-editor" ng-controller="CommentAddController as vm" ng-cloak>
-    <form novalidate>
-        <textarea name="markdown" rows="3" ng-model="comment.newComment" placeholder="{{ trans('entities.comment_placeholder') }}"
-                  @if($errors->has('markdown')) class="neg" @endif>@if(isset($model) ||
-                  old('markdown')){{htmlspecialchars( old('markdown') ? old('markdown') : ($model->markdown === '' ? $model->html : $model->markdown))}}@endif</textarea>
-        <input type="hidden" ng-model="pageId" name="comment.pageId" value="{{$pageId}}" ng-init="comment.pageId = {{$pageId }}">
-        <button type="submit" class="button pos" ng-click="vm.saveComment()">Save</button>
-    </form>
-</div>
-
-@if($errors->has('markdown'))
-    <div class="text-neg text-small">{{ $errors->first('markdown') }}</div>
-@endif
\ No newline at end of file
diff --git a/resources/views/comments/comment-reply.blade.php b/resources/views/comments/comment-reply.blade.php
index d5ceb55c6..74a13edff 100644
--- a/resources/views/comments/comment-reply.blade.php
+++ b/resources/views/comments/comment-reply.blade.php
@@ -1,10 +1,13 @@
-<!-- TODO :: needs to be merged with add.blade.php -->
-<form novalidate>
-        <div simple-markdown-input smd-model="comment.newComment" smd-get-content="getCommentHTML" smd-clear="clearInput">
-            <textarea name="markdown" rows="3"
-                      @if($errors->has('markdown')) class="neg" @endif>@if(isset($model) ||
-                      old('markdown')){{htmlspecialchars( old('markdown') ? old('markdown') : ($model->markdown === '' ? $model->html : $model->markdown))}}@endif</textarea>
-        </div>
-        <input type="hidden" ng-model="pageId" name="comment.pageId" value="{{$pageId}}" ng-init="comment.pageId = {{$pageId }}">
-        <button type="submit" class="button pos" ng-click="vm.saveComment()">Save</button>
-</form>
\ No newline at end of file
+<div class="comment-editor" ng-controller="CommentReplyController as vm" ng-cloak>
+    <form novalidate>
+        <textarea name="markdown" rows="3" ng-model="comment.text" placeholder="{{ trans('entities.comment_placeholder') }}"
+                  @if($errors->has('markdown')) class="neg" @endif>@if(isset($model) ||
+                  old('markdown')){{htmlspecialchars( old('markdown') ? old('markdown') : ($model->markdown === '' ? $model->html : $model->markdown))}}@endif</textarea>
+        <input type="hidden" ng-model="comment.pageId" name="comment.pageId" value="{{$pageId}}" ng-init="comment.pageId = {{$pageId }}">
+        <button type="submit" class="button pos" ng-click="vm.saveComment(isReply)">Save</button>
+    </form>
+</div>
+
+@if($errors->has('markdown'))
+    <div class="text-neg text-small">{{ $errors->first('markdown') }}</div>
+@endif
\ No newline at end of file
diff --git a/resources/views/comments/comments.blade.php b/resources/views/comments/comments.blade.php
index b3669faa9..8c4cb9860 100644
--- a/resources/views/comments/comments.blade.php
+++ b/resources/views/comments/comments.blade.php
@@ -2,7 +2,7 @@
     @include('comments/list-item')
 </script>
 <script type="text/ng-template" id="comment-reply.html">
-    @include('comments/comment-reply')
+    @include('comments/comment-reply', ['pageId' => $pageId])
 </script>
 <div ng-controller="CommentListController as vm" ng-init="pageId = <?= $page->id ?>" class="comments-list" ng-cloak>   
 <h3>@{{vm.totalCommentsStr}}</h3>
@@ -13,4 +13,4 @@
         </div>
     </div>
 </div>
-@include('comments/add', ['pageId' => $pageId])
\ No newline at end of file
+@include('comments/comment-reply', ['pageId' => $pageId])
\ No newline at end of file
diff --git a/resources/views/comments/list-item.blade.php b/resources/views/comments/list-item.blade.php
index aecc0c26b..290fe4a8b 100644
--- a/resources/views/comments/list-item.blade.php
+++ b/resources/views/comments/list-item.blade.php
@@ -6,12 +6,13 @@
         <div class="comment-header">
             @{{ ::comment.created_by_name }}
         </div>
-        <div ng-bind-html="::comment.html" class="comment-body">
+        <div ng-bind-html="comment.html" class="comment-body">
 
         </div>
         <div class="comment-actions">
             <ul>
-                <li><a href="#" comment-reply-link no-comment-reply-dupe="true">Reply</a></li>
+                <li><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment" is-reply="true">Reply</a></li>
+                <li><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment">Edit</a></li>
                 <li><a href="#">@{{::comment.created_at}}</a></li>            
             </ul>                
         </div>
diff --git a/routes/web.php b/routes/web.php
index 2ac212e62..076bc8110 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -123,8 +123,8 @@ Route::group(['middleware' => 'auth'], function () {
     Route::post('/ajax/page/{pageId}/comment/', 'CommentController@save');
     Route::put('/ajax/page/{pageId}/comment/{commentId}', 'CommentController@save');
     Route::delete('/ajax/comment/{id}', 'CommentController@destroy');
-    Route::get('/ajax/page/{pageId}/comments/{commentId}/sub-comments', 'CommentController@getComments');
-    Route::get('/ajax/page/{pageId}/comments/', 'CommentController@getComments');
+    Route::get('/ajax/page/{pageId}/comments/{commentId}/sub-comments', 'CommentController@getCommentThread');
+    Route::get('/ajax/page/{pageId}/comments/', 'CommentController@getCommentThread');
 
     // Links
     Route::get('/link/{id}', 'PageController@redirectFromLink');

From 0ff5aad9c0ff84057300f7565d41ab64ff2bc267 Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Wed, 24 May 2017 07:02:11 +0530
Subject: [PATCH 08/83] #47 Hides the reply button based if comments are 2
 levels deep.

---
 resources/assets/js/controllers.js           |  6 +++---
 resources/views/comments/list-item.blade.php | 14 +++++++-------
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/resources/assets/js/controllers.js b/resources/assets/js/controllers.js
index 9d5478690..198089056 100644
--- a/resources/assets/js/controllers.js
+++ b/resources/assets/js/controllers.js
@@ -745,11 +745,11 @@ module.exports = function (ngApp, events) {
     ngApp.controller('CommentListController', ['$scope', '$http', '$timeout', function ($scope, $http, $timeout) {
         let vm = this;
         $scope.errors = {};
+        // keep track of comment levels
+        $scope.level = 1;
         $scope.defaultAvatar = defaultAvatar;
         vm.totalCommentsStr = 'Loading...';
-        $scope.editorChange = function (content) {
-            console.log(content);
-        }
+
 
         $timeout(function() {
             $http.get(window.baseUrl(`/ajax/page/${$scope.pageId}/comments/`)).then(resp => {
diff --git a/resources/views/comments/list-item.blade.php b/resources/views/comments/list-item.blade.php
index 290fe4a8b..c267d619b 100644
--- a/resources/views/comments/list-item.blade.php
+++ b/resources/views/comments/list-item.blade.php
@@ -11,17 +11,17 @@
         </div>
         <div class="comment-actions">
             <ul>
-                <li><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment" is-reply="true">Reply</a></li>
+                <li ng-if="level < 3"><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment" is-reply="true">Reply</a></li>
                 <li><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment">Edit</a></li>
-                <li><a href="#">@{{::comment.created_at}}</a></li>            
-            </ul>                
+                <li><a href="#">@{{::comment.created_at}}</a></li>
+            </ul>
         </div>
         <a href="#" ng-click="vm.loadSubComments($event, comment, $index)" class="load-more-comments" ng-if="comment.cnt_sub_comments > 0 && !comment.is_loaded">
             Load @{{::comment.cnt_sub_comments}} more comment(s)
-        </a>        
-        <div class="comment-box" ng-repeat="comment in comments = comment.comments track by comment.id">        
+        </a>
+        <div class="comment-box" ng-repeat="comment in comments = comment.comments track by comment.id" ng-init="level = level + 1">
             <div ng-include src="'comment-list-item.html'">
             </div>
-        </div>        
-    </div>    
+        </div>
+    </div>
 </div>
\ No newline at end of file

From 34802ff8a6ead132ce963ba711849b58dc0f46f3 Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Thu, 25 May 2017 08:02:49 +0530
Subject: [PATCH 09/83] #47 Inserts null for updated_at when the user is
 creating a comment.

---
 app/Repos/CommentRepo.php | 1 +
 1 file changed, 1 insertion(+)

diff --git a/app/Repos/CommentRepo.php b/app/Repos/CommentRepo.php
index 10b36eb16..7e4955d55 100644
--- a/app/Repos/CommentRepo.php
+++ b/app/Repos/CommentRepo.php
@@ -26,6 +26,7 @@ class CommentRepo {
         // new comment
         $comment->page_id = $page->id;
         $comment->created_by = $userId;
+        $comment->updated_at = null;
         $comment->save();
         return $comment;
     }

From 1a1e71cd60925d92aa9d23546e73bb33eedd6a1f Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Thu, 25 May 2017 08:03:27 +0530
Subject: [PATCH 10/83] #47 Adds two attributes updated and created to display
 time to user.

---
 app/Comment.php | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/app/Comment.php b/app/Comment.php
index e7df32015..34abdcf29 100644
--- a/app/Comment.php
+++ b/app/Comment.php
@@ -6,7 +6,7 @@ use Illuminate\Support\Facades\DB;
 class Comment extends Ownable
 {
     protected $fillable = ['text', 'html', 'parent_id'];
-
+    protected $appends = ['created', 'updated'];
     /**
      * Get the entity that this comment belongs to
      * @return \Illuminate\Database\Eloquent\Relations\MorphTo
@@ -53,4 +53,23 @@ class Comment extends Ownable
         $query->orderBy('created_at');
         return $query;
     }
+
+    public function getCreatedAttribute() {
+        $created = [
+            'day_time_str' => $this->created_at->toDayDateTimeString(),
+            'diff' => $this->created_at->diffForHumans()
+        ];
+        return $created;
+    }
+
+    public function getUpdatedAttribute() {
+        if (empty($this->updated_at)) {
+            return null;
+        }
+        $updated = [
+            'day_time_str' => $this->updated_at->toDayDateTimeString(),
+            'diff' => $this->updated_at->diffForHumans()
+        ];
+        return $updated;
+    }
 }

From 9a97995f181c13c225f62b1b582f6bf802dd6578 Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Thu, 25 May 2017 08:04:19 +0530
Subject: [PATCH 11/83] #47 Displays the time for comments and border bottom
 for sub comments.

---
 resources/assets/sass/_comments.scss         | 44 +++++++++++++-------
 resources/views/comments/list-item.blade.php | 15 ++++---
 2 files changed, 38 insertions(+), 21 deletions(-)

diff --git a/resources/assets/sass/_comments.scss b/resources/assets/sass/_comments.scss
index 7da319025..7d7cb486a 100644
--- a/resources/assets/sass/_comments.scss
+++ b/resources/assets/sass/_comments.scss
@@ -2,49 +2,63 @@
     .comment-box {
         border-bottom: 1px solid $comment-border;
     }
-    
+
     .comment-box:last-child {
         border-bottom: none;
     }
+    .load-more-comments {
+        font-size: 0.8em;
+        margin-top: -1px;
+        margin-bottom: 6px;
+    }
 }
-.page-comment {        
+.page-comment {
     .comment-container {
         margin-left: 42px;
     }
-    
+
     .comment-actions {
-        font-size: 0.8em;        
-        padding-bottom: 4px;
+        font-size: 0.8em;
+        padding-bottom: 2px;
+
         ul {
             padding-left: 0px;
-            margin-bottom: 5px;
+            margin-bottom: 2px;
         }
         li {
             float: left;
             list-style-type: none;
         }
-        
+
         li:after {
             content: '•';
             color: #707070;
             padding: 0 5px;
             font-size: 1em;
         }
-        
+
         li:last-child:after {
             content: none;
         }
     }
-    
+
+    .comment-actions.has-border {
+        border-bottom: 1px solid #DDD;
+    }
+
+    .comment-actions.has-border:last-child {
+        border-bottom: 0px;
+    }
+
     .comment-header {
         font-size: 1.25em;
         margin-top: 0.6em;
     }
-    
-    .comment-body {
-        
+
+    .comment-body p {
+        margin-bottom: 1em;
     }
-    
+
     .user-image {
         float: left;
         margin-right: 10px;
@@ -52,12 +66,12 @@
         img {
             width: 100%;
         }
-    }    
+    }
 }
 
 .comment-editor {
     margin-top: 2em;
-    
+
     textarea {
         display: block;
         width: 100%;
diff --git a/resources/views/comments/list-item.blade.php b/resources/views/comments/list-item.blade.php
index c267d619b..ca8b58625 100644
--- a/resources/views/comments/list-item.blade.php
+++ b/resources/views/comments/list-item.blade.php
@@ -1,4 +1,4 @@
-<div class='page-comment'>
+<div class='page-comment' id="comment-@{{::pageId}}-@{{::comment.id}}">
     <div class="user-image">
         <img ng-src="@{{::defaultAvatar}}" alt="user avatar">
     </div>
@@ -9,16 +9,19 @@
         <div ng-bind-html="comment.html" class="comment-body">
 
         </div>
-        <div class="comment-actions">
+        <div class="comment-actions" ng-class="{'has-border': comment.cnt_sub_comments === 0 || comment.is_loaded}">
             <ul>
                 <li ng-if="level < 3"><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment" is-reply="true">Reply</a></li>
                 <li><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment">Edit</a></li>
-                <li><a href="#">@{{::comment.created_at}}</a></li>
+                <li>Created <a title="@{{::comment.created.day_time_str}}" href="#comment-@{{::comment.id}}-@{{::pageId}}">@{{::comment.created.diff}}</a></li>
+                <li ng-if="comment.updated"><span title="@{{::comment.updated.day_time_str}}">Updated @{{::comment.updated.diff}}</span></li>
             </ul>
         </div>
-        <a href="#" ng-click="vm.loadSubComments($event, comment, $index)" class="load-more-comments" ng-if="comment.cnt_sub_comments > 0 && !comment.is_loaded">
-            Load @{{::comment.cnt_sub_comments}} more comment(s)
-        </a>
+        <div class="load-more-comments" ng-if="comment.cnt_sub_comments > 0 && !comment.is_loaded">
+            <a href="#" ng-click="vm.loadSubComments($event, comment, $index)">
+                Load @{{::comment.cnt_sub_comments}} more comment(s)
+            </a>
+        </div>
         <div class="comment-box" ng-repeat="comment in comments = comment.comments track by comment.id" ng-init="level = level + 1">
             <div ng-include src="'comment-list-item.html'">
             </div>

From 860d4d4be5eb7b1d4b13fcc31bf5fe3eafb01a33 Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Tue, 30 May 2017 09:02:47 +0530
Subject: [PATCH 12/83] #47 - Changes the way we are handling fetching of data
 for the comment section.

---
 app/Comment.php                              | 46 +++++++++++++------
 app/Http/Controllers/CommentController.php   | 19 ++++----
 app/Repos/CommentRepo.php                    | 47 +++++++++++++++++---
 resources/assets/js/controllers.js           | 32 ++++++-------
 resources/assets/js/directives.js            |  7 ++-
 resources/assets/sass/_comments.scss         | 11 ++---
 resources/views/comments/comments.blade.php  | 12 ++---
 resources/views/comments/list-item.blade.php | 16 +++----
 routes/web.php                               |  3 +-
 9 files changed, 119 insertions(+), 74 deletions(-)

diff --git a/app/Comment.php b/app/Comment.php
index 34abdcf29..8588982e5 100644
--- a/app/Comment.php
+++ b/app/Comment.php
@@ -1,12 +1,12 @@
 <?php
 
 namespace BookStack;
-use Illuminate\Support\Facades\DB;
 
 class Comment extends Ownable
 {
+    public $sub_comments = [];
     protected $fillable = ['text', 'html', 'parent_id'];
-    protected $appends = ['created', 'updated'];
+    protected $appends = ['created', 'updated', 'sub_comments'];
     /**
      * Get the entity that this comment belongs to
      * @return \Illuminate\Database\Eloquent\Relations\MorphTo
@@ -34,24 +34,38 @@ class Comment extends Ownable
         return $this->belongsTo(User::class);
     }
 
-    public function getCommentsByPage($pageId, $commentId, $pageNum = 0, $limit = 0) {
-
+    public function getPageComments($pageId) {
         $query = static::newQuery();
         $query->join('users AS u', 'comments.created_by', '=', 'u.id');
         $query->leftJoin('users AS u1', 'comments.updated_by', '=', 'u1.id');
         $query->leftJoin('images AS i', 'i.id', '=', 'u.image_id');
-        $query->selectRaw('comments.id, text, html, comments.created_by, comments.updated_by, comments.created_at, comments.updated_at, '
+        $query->selectRaw('comments.id, text, html, comments.created_by, comments.updated_by, '
+                . 'comments.created_at, comments.updated_at, comments.parent_id, '
                 . 'u.name AS created_by_name, u1.name AS updated_by_name, '
-                . '(SELECT count(c.id) FROM bookstack.comments c WHERE c.parent_id = comments.id AND page_id = ?) AS cnt_sub_comments, i.url AS avatar ',
-                [$pageId]);
-
-        if (empty($commentId)) {
-            $query->whereRaw('page_id = ? AND parent_id IS NULL', [$pageId]);
-        } else {
-            $query->whereRaw('page_id = ? AND parent_id = ?', [$pageId, $commentId]);
-        }
+                . 'i.url AS avatar ');
+        $query->whereRaw('page_id = ?', [$pageId]);
         $query->orderBy('created_at');
-        return $query;
+        return $query->get();
+    }
+
+    public function getAllPageComments($pageId) {
+        return self::where('page_id', '=', $pageId)->with(['createdBy' => function($query) {
+            $query->select('id', 'name', 'image_id');
+        }, 'updatedBy' => function($query) {
+            $query->select('id', 'name');
+        }, 'createdBy.avatar' => function ($query) {
+            $query->select('id', 'path', 'url');
+        }])->get();
+    }
+
+    public function getCommentById($commentId) {
+        return self::where('id', '=', $commentId)->with(['createdBy' => function($query) {
+            $query->select('id', 'name', 'image_id');
+        }, 'updatedBy' => function($query) {
+            $query->select('id', 'name');
+        }, 'createdBy.avatar' => function ($query) {
+            $query->select('id', 'path', 'url');
+        }])->first();
     }
 
     public function getCreatedAttribute() {
@@ -72,4 +86,8 @@ class Comment extends Ownable
         ];
         return $updated;
     }
+
+    public function getSubCommentsAttribute() {
+        return $this->sub_comments;
+    }
 }
diff --git a/app/Http/Controllers/CommentController.php b/app/Http/Controllers/CommentController.php
index e1729bbee..29ccdf5a7 100644
--- a/app/Http/Controllers/CommentController.php
+++ b/app/Http/Controllers/CommentController.php
@@ -54,9 +54,12 @@ class CommentController extends Controller
             $respMsg = trans('entities.comment_updated');
         }
 
+        $comment = $this->commentRepo->getCommentById($comment->id);
+
         return response()->json([
             'status'    => 'success',
-            'message'   => $respMsg
+            'message'   => $respMsg,
+            'comment'   => $comment
         ]);
 
     }
@@ -64,11 +67,10 @@ class CommentController extends Controller
     public function destroy($id) {
         $comment = $this->comment->findOrFail($id);
         $this->checkOwnablePermission('comment-delete', $comment);
-
-        //
     }
 
-    public function getCommentThread($pageId, $commentId = null) {
+
+    public function getPageComments($pageId) {
         try {
             $page = $this->entityRepo->getById('page', $pageId, true);
         } catch (ModelNotFoundException $e) {
@@ -85,12 +87,7 @@ class CommentController extends Controller
 
         $this->checkOwnablePermission('page-view', $page);
 
-        $comments = $this->commentRepo->getCommentsForPage($pageId, $commentId);
-        if (empty($commentId)) {
-            // requesting for parent level comments, send the total count as well.
-            $totalComments = $this->commentRepo->getCommentCount($pageId);
-            return response()->json(['success' => true, 'comments'=> $comments, 'total' => $totalComments]);
-        }
-        return response()->json(['success' => true, 'comments'=> $comments]);
+        $comments = $this->commentRepo->getPageComments($pageId);
+        return response()->json(['success' => true, 'comments'=> $comments['comments'], 'total' => $comments['total']]);
     }
 }
diff --git a/app/Repos/CommentRepo.php b/app/Repos/CommentRepo.php
index 7e4955d55..7d0c4ebd7 100644
--- a/app/Repos/CommentRepo.php
+++ b/app/Repos/CommentRepo.php
@@ -39,13 +39,48 @@ class CommentRepo {
         return $comment;
     }
 
-    public function getCommentsForPage($pageId, $commentId, $count = 20) {
-        // requesting parent comments
-        $query = $this->comment->getCommentsByPage($pageId, $commentId);
-        return $query->paginate($count);
+    public function getPageComments($pageId) {
+        $comments = $this->comment->getAllPageComments($pageId);
+        $index = [];
+        $totalComments = count($comments);
+        // normalizing the response.
+        foreach($comments as &$comment) {
+            $comment = $this->normalizeComment($comment);
+            $parentId = $comment->parent_id;
+            if (empty($parentId)) {
+                $index[$comment->id] = $comment;
+                continue;
+            }
+
+            if (empty($index[$parentId])) {
+                // weird condition should not happen.
+                continue;
+            }
+            if (empty($index[$parentId]->sub_comments)) {
+                $index[$parentId]->sub_comments = [];
+            }
+            array_push($index[$parentId]->sub_comments, $comment);
+            $index[$comment->id] = $comment;
+        }
+        return [
+            'comments' => $comments,
+            'total' => $totalComments
+        ];
     }
 
-    public function getCommentCount($pageId) {
-        return $this->comment->where('page_id', '=', $pageId)->count();
+    public function getCommentById($commentId) {
+        return $this->normalizeComment($this->comment->getCommentById($commentId));
+    }
+
+    private function normalizeComment($comment) {
+        if (empty($comment)) {
+            return;
+        }
+        $comment->createdBy->avatar_url = $comment->createdBy->getAvatar(50);
+        $comment->createdBy->profile_url = $comment->createdBy->getProfileUrl();
+        if (!empty($comment->updatedBy)) {
+            $comment->updatedBy->profile_url = $comment->updatedBy->getProfileUrl();
+        }
+        return $comment;
     }
 }
\ No newline at end of file
diff --git a/resources/assets/js/controllers.js b/resources/assets/js/controllers.js
index 198089056..f64d7c038 100644
--- a/resources/assets/js/controllers.js
+++ b/resources/assets/js/controllers.js
@@ -714,10 +714,18 @@ module.exports = function (ngApp, events) {
                      return events.emit('error', trans('error'));
                 }
                 if ($scope.isEdit) {
-                    $scope.comment.html = commentHTML;
+                    $scope.comment.html = resp.data.comment.html;
+                    $scope.comment.text = resp.data.comment.text;
+                    $scope.comment.updated = resp.data.comment.updated;
+                    $scope.comment.updated_by = resp.data.comment.updated_by;
                     $scope.$emit('evt.comment-success', $scope.comment.id);
                 } else {
                     $scope.comment.text = '';
+                    if ($scope.isReply === true && $scope.parent.sub_comments) {
+                        $scope.parent.sub_comments.push(resp.data.comment);
+                    } else {
+                        $scope.$emit('evt.new-comment', resp.data.comment);
+                    }
                     $scope.$emit('evt.comment-success', null, true);
                 }
                 events.emit('success', trans(resp.data.message));
@@ -747,9 +755,14 @@ module.exports = function (ngApp, events) {
         $scope.errors = {};
         // keep track of comment levels
         $scope.level = 1;
-        $scope.defaultAvatar = defaultAvatar;
         vm.totalCommentsStr = 'Loading...';
 
+        $scope.$on('evt.new-comment', function (event, comment) {
+            // add the comment to the comment list.
+            vm.comments.push(comment);
+            event.stopPropagation();
+            event.preventDefault();
+        });
 
         $timeout(function() {
             $http.get(window.baseUrl(`/ajax/page/${$scope.pageId}/comments/`)).then(resp => {
@@ -757,7 +770,7 @@ module.exports = function (ngApp, events) {
                     // TODO : Handle error
                     return;
                 }
-                vm.comments = resp.data.comments.data;
+                vm.comments = resp.data.comments;
                 vm.totalComments = resp.data.total;
                 // TODO : Fetch message from translate.
                 if (vm.totalComments === 0) {
@@ -770,21 +783,10 @@ module.exports = function (ngApp, events) {
             }, checkError('app'));
         });
 
-        vm.loadSubComments = function(event, comment) {
-            event.preventDefault();
-            $http.get(window.baseUrl(`/ajax/page/${$scope.pageId}/comments/${comment.id}/sub-comments`)).then(resp => {
-                if (!resp.data || resp.data.success !== true) {
-                    return;
-                }
-                comment.is_loaded = true;
-                comment.comments = resp.data.comments.data;
-            }, checkError('app'));
-        };
-
         function checkError(errorGroupName) {
             $scope.errors[errorGroupName] = {};
             return function(response) {
-                console.log(resp);
+                console.log(response);
             }
         }
     }]);
diff --git a/resources/assets/js/directives.js b/resources/assets/js/directives.js
index 6c556acc9..ff0f93cfa 100644
--- a/resources/assets/js/directives.js
+++ b/resources/assets/js/directives.js
@@ -825,10 +825,12 @@ module.exports = function (ngApp, events) {
             templateUrl: 'comment-reply.html',
             scope: {
               pageId: '=',
-              parentId: '='
+              parentId: '=',
+              parent: '='
             },
             link: function (scope, element) {
                 scope.isReply = true;
+                element.find('textarea').focus();
                 scope.$on('evt.comment-success', function (event) {
                     // no need for the event to do anything more.
                     event.stopPropagation();
@@ -849,6 +851,7 @@ module.exports = function (ngApp, events) {
             },
             link: function (scope, element) {
                 scope.isEdit = true;
+                element.find('textarea').focus();
                 scope.$on('evt.comment-success', function (event, commentId) {
                    // no need for the event to do anything more.
                    event.stopPropagation();
@@ -892,7 +895,7 @@ module.exports = function (ngApp, events) {
         function compileHtml($container, scope, isReply) {
             let lnkFunc = null;
             if (isReply) {
-                lnkFunc = $compile('<comment-reply page-id="comment.pageId" parent-id="comment.id"></comment-reply>');
+                lnkFunc = $compile('<comment-reply page-id="comment.pageId" parent-id="comment.id" parent="comment"></comment-reply>');
             } else {
                 lnkFunc = $compile('<comment-edit comment="comment"></comment-add>');
             }
diff --git a/resources/assets/sass/_comments.scss b/resources/assets/sass/_comments.scss
index 7d7cb486a..0328341c3 100644
--- a/resources/assets/sass/_comments.scss
+++ b/resources/assets/sass/_comments.scss
@@ -4,12 +4,7 @@
     }
 
     .comment-box:last-child {
-        border-bottom: none;
-    }
-    .load-more-comments {
-        font-size: 0.8em;
-        margin-top: -1px;
-        margin-bottom: 6px;
+        border-bottom: 0px;
     }
 }
 .page-comment {
@@ -42,11 +37,11 @@
         }
     }
 
-    .comment-actions.has-border {
+    .comment-actions {
         border-bottom: 1px solid #DDD;
     }
 
-    .comment-actions.has-border:last-child {
+    .comment-actions:last-child {
         border-bottom: 0px;
     }
 
diff --git a/resources/views/comments/comments.blade.php b/resources/views/comments/comments.blade.php
index 8c4cb9860..93e7ebc05 100644
--- a/resources/views/comments/comments.blade.php
+++ b/resources/views/comments/comments.blade.php
@@ -4,13 +4,13 @@
 <script type="text/ng-template" id="comment-reply.html">
     @include('comments/comment-reply', ['pageId' => $pageId])
 </script>
-<div ng-controller="CommentListController as vm" ng-init="pageId = <?= $page->id ?>" class="comments-list" ng-cloak>   
+<div ng-controller="CommentListController as vm" ng-init="pageId = <?= $page->id ?>" class="comments-list" ng-cloak>
 <h3>@{{vm.totalCommentsStr}}</h3>
-<hr> 
-    <div class="comment-box" ng-repeat="comment in vm.comments track by comment.id">        
+<hr>
+    <div class="comment-box" ng-repeat="comment in vm.comments track by comment.id">
         <div ng-include src="'comment-list-item.html'">
-            
+
         </div>
     </div>
-</div>
-@include('comments/comment-reply', ['pageId' => $pageId])
\ No newline at end of file
+    @include('comments/comment-reply', ['pageId' => $pageId])
+</div>
\ No newline at end of file
diff --git a/resources/views/comments/list-item.blade.php b/resources/views/comments/list-item.blade.php
index ca8b58625..46af1a862 100644
--- a/resources/views/comments/list-item.blade.php
+++ b/resources/views/comments/list-item.blade.php
@@ -1,28 +1,24 @@
 <div class='page-comment' id="comment-@{{::pageId}}-@{{::comment.id}}">
     <div class="user-image">
-        <img ng-src="@{{::defaultAvatar}}" alt="user avatar">
+        <img ng-src="@{{::comment.created_by.avatar_url}}" alt="user avatar">
     </div>
     <div class="comment-container">
         <div class="comment-header">
-            @{{ ::comment.created_by_name }}
+            <a href="@{{::comment.created_by.profile_url}}">@{{ ::comment.created_by.name }}</a>
         </div>
         <div ng-bind-html="comment.html" class="comment-body">
 
         </div>
-        <div class="comment-actions" ng-class="{'has-border': comment.cnt_sub_comments === 0 || comment.is_loaded}">
+        <div class="comment-actions">
             <ul>
                 <li ng-if="level < 3"><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment" is-reply="true">Reply</a></li>
                 <li><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment">Edit</a></li>
                 <li>Created <a title="@{{::comment.created.day_time_str}}" href="#comment-@{{::comment.id}}-@{{::pageId}}">@{{::comment.created.diff}}</a></li>
-                <li ng-if="comment.updated"><span title="@{{::comment.updated.day_time_str}}">Updated @{{::comment.updated.diff}}</span></li>
+                <li ng-if="comment.updated"><span title="@{{comment.updated.day_time_str}}">Updated @{{comment.updated.diff}} by
+                    <a href="@{{comment.updated_by.profile_url}}">@{{comment.updated_by.name}}</a></span></li>
             </ul>
         </div>
-        <div class="load-more-comments" ng-if="comment.cnt_sub_comments > 0 && !comment.is_loaded">
-            <a href="#" ng-click="vm.loadSubComments($event, comment, $index)">
-                Load @{{::comment.cnt_sub_comments}} more comment(s)
-            </a>
-        </div>
-        <div class="comment-box" ng-repeat="comment in comments = comment.comments track by comment.id" ng-init="level = level + 1">
+        <div class="comment-box" ng-repeat="comment in comments = comment.sub_comments track by comment.id" ng-init="level = level + 1">
             <div ng-include src="'comment-list-item.html'">
             </div>
         </div>
diff --git a/routes/web.php b/routes/web.php
index 076bc8110..463e4e77b 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -123,8 +123,7 @@ Route::group(['middleware' => 'auth'], function () {
     Route::post('/ajax/page/{pageId}/comment/', 'CommentController@save');
     Route::put('/ajax/page/{pageId}/comment/{commentId}', 'CommentController@save');
     Route::delete('/ajax/comment/{id}', 'CommentController@destroy');
-    Route::get('/ajax/page/{pageId}/comments/{commentId}/sub-comments', 'CommentController@getCommentThread');
-    Route::get('/ajax/page/{pageId}/comments/', 'CommentController@getCommentThread');
+    Route::get('/ajax/page/{pageId}/comments/', 'CommentController@getPageComments');
 
     // Links
     Route::get('/link/{id}', 'PageController@redirectFromLink');

From 2fd421b115132cdea97ec5ccbbab412e02659ab7 Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Sun, 4 Jun 2017 11:17:14 +0530
Subject: [PATCH 13/83] #47 - Adds comment level permissions to the front-end.

---
 app/Http/Controllers/CommentController.php   |  9 ++++++++-
 app/Http/Controllers/PageController.php      |  9 ++-------
 app/Repos/CommentRepo.php                    |  9 ++++++---
 resources/assets/js/controllers.js           | 19 +++++++++++++++++++
 resources/assets/js/directives.js            |  2 +-
 resources/views/comments/comments.blade.php  |  4 +++-
 resources/views/comments/list-item.blade.php |  4 ++--
 7 files changed, 41 insertions(+), 15 deletions(-)

diff --git a/app/Http/Controllers/CommentController.php b/app/Http/Controllers/CommentController.php
index 29ccdf5a7..3a267193d 100644
--- a/app/Http/Controllers/CommentController.php
+++ b/app/Http/Controllers/CommentController.php
@@ -88,6 +88,13 @@ class CommentController extends Controller
         $this->checkOwnablePermission('page-view', $page);
 
         $comments = $this->commentRepo->getPageComments($pageId);
-        return response()->json(['success' => true, 'comments'=> $comments['comments'], 'total' => $comments['total']]);
+        return response()->json(['success' => true, 'comments'=> $comments['comments'],
+            'total' => $comments['total'], 'permissions' => [
+                'comment_create' => $this->currentUser->can('comment-create-all'),
+                'comment_update_own' => $this->currentUser->can('comment-update-own'),
+                'comment_update_all' => $this->currentUser->can('comment-update-all'),
+                'comment_delete_all' => $this->currentUser->can('comment-delete-all'),
+                'comment_delete_own' => $this->currentUser->can('comment-delete-own'),
+            ], 'user_id' => $this->currentUser->id]);
     }
 }
diff --git a/app/Http/Controllers/PageController.php b/app/Http/Controllers/PageController.php
index 736197213..9a8525c23 100644
--- a/app/Http/Controllers/PageController.php
+++ b/app/Http/Controllers/PageController.php
@@ -161,7 +161,7 @@ class PageController extends Controller
         $pageContent = $this->entityRepo->renderPage($page);
         $sidebarTree = $this->entityRepo->getBookChildren($page->book);
         $pageNav = $this->entityRepo->getPageNav($pageContent);
-        
+
         Views::add($page);
         $this->setPageTitle($page->getShortName());
         return view('pages/show', [
@@ -376,7 +376,7 @@ class PageController extends Controller
 
         $page->fill($revision->toArray());
         $this->setPageTitle(trans('entities.pages_revision_named', ['pageName' => $page->getShortName()]));
-        
+
         return view('pages/revision', [
             'page' => $page,
             'book' => $page->book,
@@ -590,9 +590,4 @@ class PageController extends Controller
         return redirect($page->getUrl());
     }
 
-    public function getLastXComments($pageId)
-    {
-        // $this->checkOwnablePermission('page-view', $page);
-    }
-
 }
diff --git a/app/Repos/CommentRepo.php b/app/Repos/CommentRepo.php
index 7d0c4ebd7..83847239f 100644
--- a/app/Repos/CommentRepo.php
+++ b/app/Repos/CommentRepo.php
@@ -43,11 +43,14 @@ class CommentRepo {
         $comments = $this->comment->getAllPageComments($pageId);
         $index = [];
         $totalComments = count($comments);
+        $finalCommentList = [];
+
         // normalizing the response.
-        foreach($comments as &$comment) {
-            $comment = $this->normalizeComment($comment);
+        for ($i = 0; $i < count($comments); ++$i) {
+            $comment = $this->normalizeComment($comments[$i]);
             $parentId = $comment->parent_id;
             if (empty($parentId)) {
+                $finalCommentList[] = $comment;
                 $index[$comment->id] = $comment;
                 continue;
             }
@@ -63,7 +66,7 @@ class CommentRepo {
             $index[$comment->id] = $comment;
         }
         return [
-            'comments' => $comments,
+            'comments' => $finalCommentList,
             'total' => $totalComments
         ];
     }
diff --git a/resources/assets/js/controllers.js b/resources/assets/js/controllers.js
index f64d7c038..4763f9867 100644
--- a/resources/assets/js/controllers.js
+++ b/resources/assets/js/controllers.js
@@ -756,6 +756,7 @@ module.exports = function (ngApp, events) {
         // keep track of comment levels
         $scope.level = 1;
         vm.totalCommentsStr = 'Loading...';
+        vm.permissions = {};
 
         $scope.$on('evt.new-comment', function (event, comment) {
             // add the comment to the comment list.
@@ -764,6 +765,21 @@ module.exports = function (ngApp, events) {
             event.preventDefault();
         });
 
+        vm.canEdit = function (comment) {
+            if (vm.permissions.comment_update_all) {
+                return true;
+            }
+
+            if (vm.permissions.comment_update_own && comment.created_by.id === vm.current_user_id) {
+                return true;
+            }
+            return false;
+        }
+
+        vm.canComment = function () {
+            return vm.permissions.comment_create;
+        }
+
         $timeout(function() {
             $http.get(window.baseUrl(`/ajax/page/${$scope.pageId}/comments/`)).then(resp => {
                 if (!resp.data || resp.data.success !== true) {
@@ -772,6 +788,9 @@ module.exports = function (ngApp, events) {
                 }
                 vm.comments = resp.data.comments;
                 vm.totalComments = resp.data.total;
+                vm.permissions = resp.data.permissions;
+                vm.current_user_id = resp.data.user_id;
+
                 // TODO : Fetch message from translate.
                 if (vm.totalComments === 0) {
                     vm.totalCommentsStr = 'No comments found.';
diff --git a/resources/assets/js/directives.js b/resources/assets/js/directives.js
index 278e0f8c6..0929a9cf4 100644
--- a/resources/assets/js/directives.js
+++ b/resources/assets/js/directives.js
@@ -908,7 +908,7 @@ module.exports = function (ngApp, events) {
         }
 
         function removeDupe() {
-            let $existingElement = $document.find('.comments-list comment-reply');
+            let $existingElement = $document.find('.comments-list comment-reply, .comments-list comment-edit');
             if (!$existingElement.length) {
                 return;
             }
diff --git a/resources/views/comments/comments.blade.php b/resources/views/comments/comments.blade.php
index 93e7ebc05..ffa75cfed 100644
--- a/resources/views/comments/comments.blade.php
+++ b/resources/views/comments/comments.blade.php
@@ -12,5 +12,7 @@
 
         </div>
     </div>
-    @include('comments/comment-reply', ['pageId' => $pageId])
+    <div ng-if="::vm.canComment()">
+        @include('comments/comment-reply', ['pageId' => $pageId])
+    </div>
 </div>
\ No newline at end of file
diff --git a/resources/views/comments/list-item.blade.php b/resources/views/comments/list-item.blade.php
index 46af1a862..67355c586 100644
--- a/resources/views/comments/list-item.blade.php
+++ b/resources/views/comments/list-item.blade.php
@@ -11,8 +11,8 @@
         </div>
         <div class="comment-actions">
             <ul>
-                <li ng-if="level < 3"><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment" is-reply="true">Reply</a></li>
-                <li><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment">Edit</a></li>
+                <li ng-if="::(level < 3 && vm.canComment())"><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment" is-reply="true">Reply</a></li>
+                <li ng-if="::vm.canEdit(comment)"><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment" >Edit</a></li>
                 <li>Created <a title="@{{::comment.created.day_time_str}}" href="#comment-@{{::comment.id}}-@{{::pageId}}">@{{::comment.created.diff}}</a></li>
                 <li ng-if="comment.updated"><span title="@{{comment.updated.day_time_str}}">Updated @{{comment.updated.diff}} by
                     <a href="@{{comment.updated_by.profile_url}}">@{{comment.updated_by.name}}</a></span></li>

From 9558f84b979b45d6f011553a60d100973a21d48e Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Sun, 4 Jun 2017 18:52:44 +0530
Subject: [PATCH 14/83] #47 - Adds functionality to delete a comment. Also
 reduces the number of watchers.

---
 app/Http/Controllers/CommentController.php    |  8 +++
 app/Repos/CommentRepo.php                     | 18 +++++-
 ...7_06_04_060012_comments_add_active_col.php | 38 +++++++++++
 resources/assets/js/controllers.js            | 64 ++++++++++++++++---
 resources/assets/js/directives.js             | 22 ++++++-
 resources/views/comments/list-item.blade.php  | 12 ++--
 6 files changed, 147 insertions(+), 15 deletions(-)
 create mode 100644 database/migrations/2017_06_04_060012_comments_add_active_col.php

diff --git a/app/Http/Controllers/CommentController.php b/app/Http/Controllers/CommentController.php
index 3a267193d..a08279e8c 100644
--- a/app/Http/Controllers/CommentController.php
+++ b/app/Http/Controllers/CommentController.php
@@ -67,6 +67,14 @@ class CommentController extends Controller
     public function destroy($id) {
         $comment = $this->comment->findOrFail($id);
         $this->checkOwnablePermission('comment-delete', $comment);
+        $this->commentRepo->delete($comment);
+        $comment = $this->commentRepo->getCommentById($comment->id);
+
+        return response()->json([
+            'success' => true,
+            'message' => trans('entities.comment_deleted'),
+            'comment' => $comment
+        ]);
     }
 
 
diff --git a/app/Repos/CommentRepo.php b/app/Repos/CommentRepo.php
index 83847239f..55af0fe12 100644
--- a/app/Repos/CommentRepo.php
+++ b/app/Repos/CommentRepo.php
@@ -31,10 +31,26 @@ class CommentRepo {
         return $comment;
     }
 
-    public function update($comment, $input) {
+    public function update($comment, $input, $activeOnly = true) {
         $userId = user()->id;
         $comment->updated_by = $userId;
         $comment->fill($input);
+
+        // only update active comments by default.
+        $whereClause = ['active' => 1];
+        if (!$activeOnly) {
+            $whereClause = [];
+        }
+        $comment->update($whereClause);
+        return $comment;
+    }
+
+    public function delete($comment) {
+        $comment->text = trans('errors.cannot_add_comment_to_draft');
+        $comment->html = trans('errors.cannot_add_comment_to_draft');
+        $comment->active = false;
+        $userId = user()->id;
+        $comment->updated_by = $userId;
         $comment->save();
         return $comment;
     }
diff --git a/database/migrations/2017_06_04_060012_comments_add_active_col.php b/database/migrations/2017_06_04_060012_comments_add_active_col.php
new file mode 100644
index 000000000..3c6dd1f33
--- /dev/null
+++ b/database/migrations/2017_06_04_060012_comments_add_active_col.php
@@ -0,0 +1,38 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class CommentsAddActiveCol extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('comments', function (Blueprint $table) {
+            // add column active
+            $table->boolean('active')->default(true);
+            $table->dropIndex('comments_page_id_parent_id_index');
+            $table->index(['page_id']);
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('comments', function (Blueprint $table) {
+            // reversing the schema
+            $table->dropIndex('comments_page_id_index');
+            $table->dropColumn('active');
+            $table->index(['page_id', 'parent_id']);
+        });
+    }
+}
diff --git a/resources/assets/js/controllers.js b/resources/assets/js/controllers.js
index 4763f9867..0a4e7b333 100644
--- a/resources/assets/js/controllers.js
+++ b/resources/assets/js/controllers.js
@@ -683,11 +683,12 @@ module.exports = function (ngApp, events) {
         }]);
 
     // CommentCrudController
-    ngApp.controller('CommentReplyController', ['$scope', '$http', function ($scope, $http) {
+    ngApp.controller('CommentReplyController', ['$scope', '$http', '$timeout', function ($scope, $http, $timeout) {
         const MarkdownIt = require("markdown-it");
         const md = new MarkdownIt({html: true});
         let vm = this;
         $scope.errors = {};
+
         vm.saveComment = function () {
             let pageId = $scope.comment.pageId || $scope.pageId;
             let comment = $scope.comment.text;
@@ -713,11 +714,9 @@ module.exports = function (ngApp, events) {
                 if (!resp.data || resp.data.status !== 'success') {
                      return events.emit('error', trans('error'));
                 }
+                // hide the comments first, and then retrigger the refresh
                 if ($scope.isEdit) {
-                    $scope.comment.html = resp.data.comment.html;
-                    $scope.comment.text = resp.data.comment.text;
-                    $scope.comment.updated = resp.data.comment.updated;
-                    $scope.comment.updated_by = resp.data.comment.updated_by;
+                    updateComment($scope.comment, resp.data);
                     $scope.$emit('evt.comment-success', $scope.comment.id);
                 } else {
                     $scope.comment.text = '';
@@ -728,6 +727,11 @@ module.exports = function (ngApp, events) {
                     }
                     $scope.$emit('evt.comment-success', null, true);
                 }
+                $scope.comment.is_hidden = true;
+                $timeout(function() {
+                    $scope.comment.is_hidden = false;
+                });
+
                 events.emit('success', trans(resp.data.message));
 
             }, checkError(errorOp));
@@ -748,6 +752,24 @@ module.exports = function (ngApp, events) {
         }
     }]);
 
+    ngApp.controller('CommentDeleteController', ['$scope', '$http', '$timeout', function ($scope, $http, $timeout) {
+        let vm = this;
+
+        vm.delete = function(comment) {
+            $http.delete(window.baseUrl(`/ajax/comment/${comment.id}`)).then(resp => {
+                if (!resp.data || resp.data.success !== true) {
+                    return;
+                }
+                updateComment(comment, resp.data, $timeout, true);
+            }, function (resp) {
+                if (!resp || !resp.data || resp.data.success !== true) {
+                    events.emit('error', trans('entities.comment_delete_fail'));
+                } else {
+                    events.emit('success', trans('entities.comment_delete_success'));
+                }
+            });
+        };
+    }]);
 
     // CommentListController
     ngApp.controller('CommentListController', ['$scope', '$http', '$timeout', function ($scope, $http, $timeout) {
@@ -766,6 +788,9 @@ module.exports = function (ngApp, events) {
         });
 
         vm.canEdit = function (comment) {
+            if (!comment.active) {
+                return false;
+            }
             if (vm.permissions.comment_update_all) {
                 return true;
             }
@@ -774,11 +799,11 @@ module.exports = function (ngApp, events) {
                 return true;
             }
             return false;
-        }
+        };
 
         vm.canComment = function () {
             return vm.permissions.comment_create;
-        }
+        };
 
         $timeout(function() {
             $http.get(window.baseUrl(`/ajax/page/${$scope.pageId}/comments/`)).then(resp => {
@@ -797,7 +822,7 @@ module.exports = function (ngApp, events) {
                 } else if (vm.totalComments === 1) {
                     vm.totalCommentsStr = '1 Comments';
                 } else {
-                    vm.totalCommentsStr = vm.totalComments + ' Comments'
+                    vm.totalCommentsStr = vm.totalComments + ' Comments';
                 }
             }, checkError('app'));
         });
@@ -806,8 +831,29 @@ module.exports = function (ngApp, events) {
             $scope.errors[errorGroupName] = {};
             return function(response) {
                 console.log(response);
-            }
+            };
         }
     }]);
 
+    function updateComment(comment, resp, $timeout, isDelete) {
+        if (isDelete && !resp.comment.active) {
+            comment.html = trans('entities.comment_deleted');
+        }
+        comment.text = resp.comment.text;
+        comment.updated = resp.comment.updated;
+        comment.updated_by = resp.comment.updated_by;
+        comment.active = resp.comment.active;
+        if (isDelete && !resp.comment.active) {
+            comment.html = trans('entities.comment_deleted');
+        } else {
+            comment.html = resp.comment.html;
+        }
+        if (!$timeout) {
+            return;
+        }
+        comment.is_hidden = true;
+        $timeout(function() {
+            comment.is_hidden = false;
+        });
+    }
 };
diff --git a/resources/assets/js/directives.js b/resources/assets/js/directives.js
index 0929a9cf4..18217633f 100644
--- a/resources/assets/js/directives.js
+++ b/resources/assets/js/directives.js
@@ -870,7 +870,7 @@ module.exports = function (ngApp, events) {
     }]);
 
 
-    ngApp.directive('commentReplyLink', ['$document', '$compile', '$http', function ($document, $compile, $http) {
+    ngApp.directive('commentReplyLink', ['$document', '$compile', function ($document, $compile) {
         return {
             scope: {
                 comment: '='
@@ -916,4 +916,24 @@ module.exports = function (ngApp, events) {
             $existingElement.remove();
         }
     }]);
+
+    ngApp.directive('commentDeleteLink', ['$window', function ($window) {
+        return {
+            controller: 'CommentDeleteController',
+            scope: {
+                comment: '='
+            },
+            link: function (scope, element, attr, ctrl) {
+
+                element.on('click', function() {
+                   var resp = $window.confirm('This will remove the content of the comment, are you sure you want to continue?');
+                   if (!resp) {
+                       return;
+                   }
+
+                   ctrl.delete(scope.comment);
+                });
+            }
+        };
+    }]);
 };
diff --git a/resources/views/comments/list-item.blade.php b/resources/views/comments/list-item.blade.php
index 67355c586..22cbb24c0 100644
--- a/resources/views/comments/list-item.blade.php
+++ b/resources/views/comments/list-item.blade.php
@@ -6,16 +6,20 @@
         <div class="comment-header">
             <a href="@{{::comment.created_by.profile_url}}">@{{ ::comment.created_by.name }}</a>
         </div>
-        <div ng-bind-html="comment.html" class="comment-body">
+        <div ng-bind-html="comment.html" ng-if="::comment.active" class="comment-body">
 
+        </div>
+        <div ng-if="::!comment.active" class="comment-body">
+            {{ trans('entites.comment_deleted') }}
         </div>
         <div class="comment-actions">
-            <ul>
+            <ul ng-if="!comment.is_hidden">
                 <li ng-if="::(level < 3 && vm.canComment())"><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment" is-reply="true">Reply</a></li>
                 <li ng-if="::vm.canEdit(comment)"><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment" >Edit</a></li>
+                <li ng-if="::vm.canEdit(comment, true)"><a href="#" comment-delete-link comment="comment" >Delete</a></li>
                 <li>Created <a title="@{{::comment.created.day_time_str}}" href="#comment-@{{::comment.id}}-@{{::pageId}}">@{{::comment.created.diff}}</a></li>
-                <li ng-if="comment.updated"><span title="@{{comment.updated.day_time_str}}">Updated @{{comment.updated.diff}} by
-                    <a href="@{{comment.updated_by.profile_url}}">@{{comment.updated_by.name}}</a></span></li>
+                <li ng-if="::comment.updated"><span title="@{{::comment.updated.day_time_str}}">Updated @{{::comment.updated.diff}} by
+                    <a href="@{{::comment.updated_by.profile_url}}">@{{::comment.updated_by.name}}</a></span></li>
             </ul>
         </div>
         <div class="comment-box" ng-repeat="comment in comments = comment.sub_comments track by comment.id" ng-init="level = level + 1">

From 06d75e180469be60a06bf6aa8e7172d2f61dd53e Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Sun, 4 Jun 2017 20:12:01 +0530
Subject: [PATCH 15/83] #47 - Updates the total comments when a comment is
 added.

---
 app/Repos/CommentRepo.php                    |  4 +--
 resources/assets/js/controllers.js           | 34 +++++++++++---------
 resources/assets/sass/_comments.scss         |  6 ++++
 resources/lang/en/activities.php             |  6 ++++
 resources/lang/en/entities.php               |  6 +++-
 resources/views/comments/list-item.blade.php |  6 ++--
 6 files changed, 41 insertions(+), 21 deletions(-)

diff --git a/app/Repos/CommentRepo.php b/app/Repos/CommentRepo.php
index 55af0fe12..b8aa579c6 100644
--- a/app/Repos/CommentRepo.php
+++ b/app/Repos/CommentRepo.php
@@ -46,8 +46,8 @@ class CommentRepo {
     }
 
     public function delete($comment) {
-        $comment->text = trans('errors.cannot_add_comment_to_draft');
-        $comment->html = trans('errors.cannot_add_comment_to_draft');
+        $comment->text = trans('activities.comment_deleted');
+        $comment->html = trans('activities.comment_deleted');
         $comment->active = false;
         $userId = user()->id;
         $comment->updated_by = $userId;
diff --git a/resources/assets/js/controllers.js b/resources/assets/js/controllers.js
index 0a4e7b333..51f018232 100644
--- a/resources/assets/js/controllers.js
+++ b/resources/assets/js/controllers.js
@@ -777,12 +777,14 @@ module.exports = function (ngApp, events) {
         $scope.errors = {};
         // keep track of comment levels
         $scope.level = 1;
-        vm.totalCommentsStr = 'Loading...';
+        vm.totalCommentsStr = trans('entities.comments_loading');
         vm.permissions = {};
 
         $scope.$on('evt.new-comment', function (event, comment) {
             // add the comment to the comment list.
             vm.comments.push(comment);
+            ++vm.totalComments;
+            setTotalCommentMsg();
             event.stopPropagation();
             event.preventDefault();
         });
@@ -812,21 +814,26 @@ module.exports = function (ngApp, events) {
                     return;
                 }
                 vm.comments = resp.data.comments;
-                vm.totalComments = resp.data.total;
+                vm.totalComments = +resp.data.total;
                 vm.permissions = resp.data.permissions;
                 vm.current_user_id = resp.data.user_id;
-
-                // TODO : Fetch message from translate.
-                if (vm.totalComments === 0) {
-                    vm.totalCommentsStr = 'No comments found.';
-                } else if (vm.totalComments === 1) {
-                    vm.totalCommentsStr = '1 Comments';
-                } else {
-                    vm.totalCommentsStr = vm.totalComments + ' Comments';
-                }
+                setTotalCommentMsg();
             }, checkError('app'));
         });
 
+        function setTotalCommentMsg () {
+            // TODO : Fetch message from translate.
+            if (vm.totalComments === 0) {
+                vm.totalCommentsStr = trans('entities.no_comments');
+            } else if (vm.totalComments === 1) {
+                vm.totalCommentsStr = trans('entities.one_comment');
+            } else {
+                vm.totalCommentsStr = trans('entities.x_comments', {
+                    numComments: vm.totalComments
+                });
+            }
+        }
+
         function checkError(errorGroupName) {
             $scope.errors[errorGroupName] = {};
             return function(response) {
@@ -836,15 +843,12 @@ module.exports = function (ngApp, events) {
     }]);
 
     function updateComment(comment, resp, $timeout, isDelete) {
-        if (isDelete && !resp.comment.active) {
-            comment.html = trans('entities.comment_deleted');
-        }
         comment.text = resp.comment.text;
         comment.updated = resp.comment.updated;
         comment.updated_by = resp.comment.updated_by;
         comment.active = resp.comment.active;
         if (isDelete && !resp.comment.active) {
-            comment.html = trans('entities.comment_deleted');
+            comment.html = trans('activities.comment_deleted');
         } else {
             comment.html = resp.comment.html;
         }
diff --git a/resources/assets/sass/_comments.scss b/resources/assets/sass/_comments.scss
index 0328341c3..5da53a14d 100644
--- a/resources/assets/sass/_comments.scss
+++ b/resources/assets/sass/_comments.scss
@@ -54,6 +54,12 @@
         margin-bottom: 1em;
     }
 
+    .comment-inactive {
+        font-style: italic;
+        font-size: 0.85em;
+        padding-top: 5px;
+    }
+
     .user-image {
         float: left;
         margin-right: 10px;
diff --git a/resources/lang/en/activities.php b/resources/lang/en/activities.php
index 56af4ca07..125326b33 100644
--- a/resources/lang/en/activities.php
+++ b/resources/lang/en/activities.php
@@ -37,4 +37,10 @@ return [
     'book_sort'                   => 'sorted book',
     'book_sort_notification'      => 'Book Successfully Re-sorted',
 
+    // Comments
+    'comment_create_notification' => '',
+    'comment_update_notification' => '',
+    'comment_delete_notification' => '',
+    'comment_deleted'             => 'This comment has been deleted.'
+
 ];
diff --git a/resources/lang/en/entities.php b/resources/lang/en/entities.php
index 610309362..8480879d6 100644
--- a/resources/lang/en/entities.php
+++ b/resources/lang/en/entities.php
@@ -240,5 +240,9 @@ return [
      */
     'comment' => 'Comment',
     'comments' => 'Comments',
-    'comment_placeholder' => 'Enter your comments here, markdown supported...'
+    'comment_placeholder' => 'Enter your comments here, markdown supported...',
+    'no_comments' => 'No Comments',
+    'x_comments' => ':numComments Comments',
+    'one_comment' => '1 Comment',
+    'comments_loading' => 'Loading...'
 ];
\ No newline at end of file
diff --git a/resources/views/comments/list-item.blade.php b/resources/views/comments/list-item.blade.php
index 22cbb24c0..12629f0d6 100644
--- a/resources/views/comments/list-item.blade.php
+++ b/resources/views/comments/list-item.blade.php
@@ -6,11 +6,11 @@
         <div class="comment-header">
             <a href="@{{::comment.created_by.profile_url}}">@{{ ::comment.created_by.name }}</a>
         </div>
-        <div ng-bind-html="comment.html" ng-if="::comment.active" class="comment-body">
+        <div ng-bind-html="comment.html" ng-if="::comment.active" class="comment-body" ng-class="!comment.active ? 'comment-inactive' : ''">
 
         </div>
-        <div ng-if="::!comment.active" class="comment-body">
-            {{ trans('entites.comment_deleted') }}
+        <div ng-if="::!comment.active" class="comment-body comment-inactive">
+            {{ trans('activities.comment_deleted') }}
         </div>
         <div class="comment-actions">
             <ul ng-if="!comment.is_hidden">

From 689d1eb082555555dbfdfa04133c765618f34c47 Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Sun, 4 Jun 2017 20:43:56 +0530
Subject: [PATCH 16/83] #47 - Adds a cancel button for edit and reply button.

---
 resources/assets/js/directives.js                | 14 +++++++++++---
 resources/lang/en/entities.php                   |  4 +++-
 resources/views/comments/comment-reply.blade.php |  3 ++-
 3 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/resources/assets/js/directives.js b/resources/assets/js/directives.js
index 18217633f..5bd764fa7 100644
--- a/resources/assets/js/directives.js
+++ b/resources/assets/js/directives.js
@@ -839,9 +839,13 @@ module.exports = function (ngApp, events) {
                     // no need for the event to do anything more.
                     event.stopPropagation();
                     event.preventDefault();
+                    scope.closeBox();
+                });
+
+                scope.closeBox = function () {
                     element.remove();
                     scope.$destroy();
-                });
+                }
             }
         }
     }]);
@@ -861,10 +865,14 @@ module.exports = function (ngApp, events) {
                    event.stopPropagation();
                    event.preventDefault();
                    if (commentId === scope.comment.id && !scope.isNew) {
-                       element.remove();
-                       scope.$destroy();
+                       scope.closeBox();
                    }
                 });
+
+                scope.closeBox = function () {
+                    element.remove();
+                    scope.$destroy();
+                }
             }
         }
     }]);
diff --git a/resources/lang/en/entities.php b/resources/lang/en/entities.php
index 8480879d6..dd7c54755 100644
--- a/resources/lang/en/entities.php
+++ b/resources/lang/en/entities.php
@@ -244,5 +244,7 @@ return [
     'no_comments' => 'No Comments',
     'x_comments' => ':numComments Comments',
     'one_comment' => '1 Comment',
-    'comments_loading' => 'Loading...'
+    'comments_loading' => 'Loading...',
+    'comment_save' => 'Save Comment',
+    'comment_cancel' => 'Cancel'
 ];
\ No newline at end of file
diff --git a/resources/views/comments/comment-reply.blade.php b/resources/views/comments/comment-reply.blade.php
index 74a13edff..16fa2bff0 100644
--- a/resources/views/comments/comment-reply.blade.php
+++ b/resources/views/comments/comment-reply.blade.php
@@ -4,7 +4,8 @@
                   @if($errors->has('markdown')) class="neg" @endif>@if(isset($model) ||
                   old('markdown')){{htmlspecialchars( old('markdown') ? old('markdown') : ($model->markdown === '' ? $model->html : $model->markdown))}}@endif</textarea>
         <input type="hidden" ng-model="comment.pageId" name="comment.pageId" value="{{$pageId}}" ng-init="comment.pageId = {{$pageId }}">
-        <button type="submit" class="button pos" ng-click="vm.saveComment(isReply)">Save</button>
+        <button type="button" ng-if="::(isReply || isEdit)" class="button muted" ng-click="closeBox()">{{ trans('entities.comment_cancel') }}</button>
+        <button type="submit" class="button pos" ng-click="vm.saveComment(isReply)">{{ trans('entities.comment_save') }}</button>
     </form>
 </div>
 

From 7c6fe8c4e2a5b3d26973711a915025ac3a09a924 Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Mon, 5 Jun 2017 00:20:37 +0530
Subject: [PATCH 17/83] #47 - Changes the location of the reply and edit
 comment box.

---
 app/Repos/CommentRepo.php                    | 4 ++--
 resources/assets/js/controllers.js           | 2 +-
 resources/assets/js/directives.js            | 2 +-
 resources/lang/en/activities.php             | 1 -
 resources/lang/en/entities.php               | 3 ++-
 resources/views/comments/list-item.blade.php | 2 +-
 6 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/app/Repos/CommentRepo.php b/app/Repos/CommentRepo.php
index b8aa579c6..ce71b9234 100644
--- a/app/Repos/CommentRepo.php
+++ b/app/Repos/CommentRepo.php
@@ -46,8 +46,8 @@ class CommentRepo {
     }
 
     public function delete($comment) {
-        $comment->text = trans('activities.comment_deleted');
-        $comment->html = trans('activities.comment_deleted');
+        $comment->text = trans('entities.comment_deleted');
+        $comment->html = trans('entities.comment_deleted');
         $comment->active = false;
         $userId = user()->id;
         $comment->updated_by = $userId;
diff --git a/resources/assets/js/controllers.js b/resources/assets/js/controllers.js
index 51f018232..67e77a542 100644
--- a/resources/assets/js/controllers.js
+++ b/resources/assets/js/controllers.js
@@ -848,7 +848,7 @@ module.exports = function (ngApp, events) {
         comment.updated_by = resp.comment.updated_by;
         comment.active = resp.comment.active;
         if (isDelete && !resp.comment.active) {
-            comment.html = trans('activities.comment_deleted');
+            comment.html = trans('entities.comment_deleted');
         } else {
             comment.html = resp.comment.html;
         }
diff --git a/resources/assets/js/directives.js b/resources/assets/js/directives.js
index 5bd764fa7..3577cf396 100644
--- a/resources/assets/js/directives.js
+++ b/resources/assets/js/directives.js
@@ -890,7 +890,7 @@ module.exports = function (ngApp, events) {
                 });
 
                 element.on('click', function () {
-                    var $container = element.parents('.comment-box').first();
+                    var $container = element.parents('.comment-actions').first();
                     if (!$container.length) {
                         console.error('commentReplyLink directive should be placed inside a container with class comment-box!');
                         return;
diff --git a/resources/lang/en/activities.php b/resources/lang/en/activities.php
index 125326b33..094f97306 100644
--- a/resources/lang/en/activities.php
+++ b/resources/lang/en/activities.php
@@ -41,6 +41,5 @@ return [
     'comment_create_notification' => '',
     'comment_update_notification' => '',
     'comment_delete_notification' => '',
-    'comment_deleted'             => 'This comment has been deleted.'
 
 ];
diff --git a/resources/lang/en/entities.php b/resources/lang/en/entities.php
index dd7c54755..c0439f0e1 100644
--- a/resources/lang/en/entities.php
+++ b/resources/lang/en/entities.php
@@ -246,5 +246,6 @@ return [
     'one_comment' => '1 Comment',
     'comments_loading' => 'Loading...',
     'comment_save' => 'Save Comment',
-    'comment_cancel' => 'Cancel'
+    'comment_cancel' => 'Cancel',
+    'comment_deleted' => 'This comment has been deleted.'
 ];
\ No newline at end of file
diff --git a/resources/views/comments/list-item.blade.php b/resources/views/comments/list-item.blade.php
index 12629f0d6..ec0b13f17 100644
--- a/resources/views/comments/list-item.blade.php
+++ b/resources/views/comments/list-item.blade.php
@@ -10,7 +10,7 @@
 
         </div>
         <div ng-if="::!comment.active" class="comment-body comment-inactive">
-            {{ trans('activities.comment_deleted') }}
+            {{ trans('entities.comment_deleted') }}
         </div>
         <div class="comment-actions">
             <ul ng-if="!comment.is_hidden">

From 5bd9da60544dbfde9a121589b33bf92b372f9490 Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Tue, 6 Jun 2017 01:46:59 +0530
Subject: [PATCH 18/83] #47 - Adds various translations in English, and a few
 code improvements.

---
 app/Comment.php                               |  3 +
 app/Http/Controllers/CommentController.php    | 17 +---
 resources/assets/js/controllers.js            | 78 ++++++++++++-------
 resources/assets/js/directives.js             | 10 +--
 resources/lang/en/entities.php                |  8 +-
 resources/lang/en/errors.php                  |  6 ++
 .../views/comments/comment-reply.blade.php    |  4 +-
 resources/views/comments/list-item.blade.php  | 10 +--
 8 files changed, 79 insertions(+), 57 deletions(-)

diff --git a/app/Comment.php b/app/Comment.php
index 8588982e5..de01b6212 100644
--- a/app/Comment.php
+++ b/app/Comment.php
@@ -34,6 +34,9 @@ class Comment extends Ownable
         return $this->belongsTo(User::class);
     }
 
+    /*
+     * Not being used, but left here because might be used in the future for performance reasons.
+     */
     public function getPageComments($pageId) {
         $query = static::newQuery();
         $query->join('users AS u', 'comments.created_by', '=', 'u.id');
diff --git a/app/Http/Controllers/CommentController.php b/app/Http/Controllers/CommentController.php
index a08279e8c..e8d5eab30 100644
--- a/app/Http/Controllers/CommentController.php
+++ b/app/Http/Controllers/CommentController.php
@@ -5,7 +5,6 @@ use BookStack\Repos\EntityRepo;
 use BookStack\Comment;
 use Illuminate\Http\Request;
 
-// delete  -checkOwnablePermission \
 class CommentController extends Controller
 {
     protected $entityRepo;
@@ -68,12 +67,12 @@ class CommentController extends Controller
         $comment = $this->comment->findOrFail($id);
         $this->checkOwnablePermission('comment-delete', $comment);
         $this->commentRepo->delete($comment);
-        $comment = $this->commentRepo->getCommentById($comment->id);
+        $updatedComment = $this->commentRepo->getCommentById($comment->id);
 
         return response()->json([
-            'success' => true,
+            'status' => 'success',
             'message' => trans('entities.comment_deleted'),
-            'comment' => $comment
+            'comment' => $updatedComment
         ]);
     }
 
@@ -85,18 +84,10 @@ class CommentController extends Controller
             return response('Not found', 404);
         }
 
-        if($page->draft) {
-            // cannot add comments to drafts.
-            return response()->json([
-                'status' => 'error',
-                'message' => trans('errors.no_comments_for_draft'),
-            ], 400);
-        }
-
         $this->checkOwnablePermission('page-view', $page);
 
         $comments = $this->commentRepo->getPageComments($pageId);
-        return response()->json(['success' => true, 'comments'=> $comments['comments'],
+        return response()->json(['status' => 'success', 'comments'=> $comments['comments'],
             'total' => $comments['total'], 'permissions' => [
                 'comment_create' => $this->currentUser->can('comment-create-all'),
                 'comment_update_own' => $this->currentUser->can('comment-update-own'),
diff --git a/resources/assets/js/controllers.js b/resources/assets/js/controllers.js
index 67e77a542..3ef02d41f 100644
--- a/resources/assets/js/controllers.js
+++ b/resources/assets/js/controllers.js
@@ -682,7 +682,7 @@ module.exports = function (ngApp, events) {
 
         }]);
 
-    // CommentCrudController
+    // Controller used to reply to and add new comments
     ngApp.controller('CommentReplyController', ['$scope', '$http', '$timeout', function ($scope, $http, $timeout) {
         const MarkdownIt = require("markdown-it");
         const md = new MarkdownIt({html: true});
@@ -692,10 +692,12 @@ module.exports = function (ngApp, events) {
         vm.saveComment = function () {
             let pageId = $scope.comment.pageId || $scope.pageId;
             let comment = $scope.comment.text;
+            if (!comment) {
+                return events.emit('warning', trans('errors.empty_comment'));
+            }
             let commentHTML = md.render($scope.comment.text);
             let serviceUrl = `/ajax/page/${pageId}/comment/`;
             let httpMethod = 'post';
-            let errorOp = 'add';
             let reqObj = {
                 text: comment,
                 html: commentHTML
@@ -705,14 +707,13 @@ module.exports = function (ngApp, events) {
                 // this will be set when editing the comment.
                 serviceUrl = `/ajax/page/${pageId}/comment/${$scope.comment.id}`;
                 httpMethod = 'put';
-                errorOp = 'update';
             } else if ($scope.isReply === true) {
                 // if its reply, get the parent comment id
                 reqObj.parent_id = $scope.parentId;
             }
             $http[httpMethod](window.baseUrl(serviceUrl), reqObj).then(resp => {
-                if (!resp.data || resp.data.status !== 'success') {
-                     return events.emit('error', trans('error'));
+                if (!isCommentOpSuccess(resp)) {
+                     return;
                 }
                 // hide the comments first, and then retrigger the refresh
                 if ($scope.isEdit) {
@@ -734,44 +735,47 @@ module.exports = function (ngApp, events) {
 
                 events.emit('success', trans(resp.data.message));
 
-            }, checkError(errorOp));
+            }, checkError);
 
         };
 
-        function checkError(errorGroupName) {
-            $scope.errors[errorGroupName] = {};
-            return function(response) {
-                if (typeof response.data !== 'undefined' && typeof response.data.error !== 'undefined') {
-                    events.emit('error', response.data.error);
-                }
-                if (typeof response.data !== 'undefined' && typeof response.data.validation !== 'undefined') {
-                    $scope.errors[errorGroupName] = response.data.validation;
-                    console.log($scope.errors[errorGroupName])
-                }
+        function checkError(response) {
+            let msg = null;
+            if (isCommentOpSuccess(response)) {
+                // all good
+                return;
+            } else if (response.data) {
+                msg = response.data.message;
+            } else {
+                msg = trans('errors.comment_add_error');
+            }
+            if (msg) {
+                events.emit('success', msg);
             }
         }
     }]);
 
+    // Controller used to delete comments
     ngApp.controller('CommentDeleteController', ['$scope', '$http', '$timeout', function ($scope, $http, $timeout) {
         let vm = this;
 
         vm.delete = function(comment) {
             $http.delete(window.baseUrl(`/ajax/comment/${comment.id}`)).then(resp => {
-                if (!resp.data || resp.data.success !== true) {
+                if (isCommentOpSuccess(resp)) {
                     return;
                 }
                 updateComment(comment, resp.data, $timeout, true);
             }, function (resp) {
-                if (!resp || !resp.data || resp.data.success !== true) {
-                    events.emit('error', trans('entities.comment_delete_fail'));
-                } else {
+                if (isCommentOpSuccess(resp)) {
                     events.emit('success', trans('entities.comment_delete_success'));
+                } else {
+                    events.emit('error', trans('entities.comment_delete_fail'));
                 }
             });
         };
     }]);
 
-    // CommentListController
+    // Controller used to fetch all comments for a page
     ngApp.controller('CommentListController', ['$scope', '$http', '$timeout', function ($scope, $http, $timeout) {
         let vm = this;
         $scope.errors = {};
@@ -779,6 +783,7 @@ module.exports = function (ngApp, events) {
         $scope.level = 1;
         vm.totalCommentsStr = trans('entities.comments_loading');
         vm.permissions = {};
+        vm.trans = window.trans;
 
         $scope.$on('evt.new-comment', function (event, comment) {
             // add the comment to the comment list.
@@ -809,8 +814,7 @@ module.exports = function (ngApp, events) {
 
         $timeout(function() {
             $http.get(window.baseUrl(`/ajax/page/${$scope.pageId}/comments/`)).then(resp => {
-                if (!resp.data || resp.data.success !== true) {
-                    // TODO : Handle error
+                if (!isCommentOpSuccess(resp)) {
                     return;
                 }
                 vm.comments = resp.data.comments;
@@ -818,11 +822,10 @@ module.exports = function (ngApp, events) {
                 vm.permissions = resp.data.permissions;
                 vm.current_user_id = resp.data.user_id;
                 setTotalCommentMsg();
-            }, checkError('app'));
+            }, checkError);
         });
 
         function setTotalCommentMsg () {
-            // TODO : Fetch message from translate.
             if (vm.totalComments === 0) {
                 vm.totalCommentsStr = trans('entities.no_comments');
             } else if (vm.totalComments === 1) {
@@ -834,11 +837,19 @@ module.exports = function (ngApp, events) {
             }
         }
 
-        function checkError(errorGroupName) {
-            $scope.errors[errorGroupName] = {};
-            return function(response) {
-                console.log(response);
-            };
+        function checkError(response) {
+            let msg = null;
+            if (isCommentOpSuccess(response)) {
+                // all good
+                return;
+            } else if (response.data) {
+                msg = response.data.message;
+            } else {
+                msg = trans('errors.comment_error');
+            }
+            if (msg) {
+                events.emit('success', msg);
+            }
         }
     }]);
 
@@ -860,4 +871,11 @@ module.exports = function (ngApp, events) {
             comment.is_hidden = false;
         });
     }
+
+    function isCommentOpSuccess(resp) {
+        if (resp && resp.data && resp.data.status === 'success') {
+            return true;
+        }
+        return false;
+    }
 };
diff --git a/resources/assets/js/directives.js b/resources/assets/js/directives.js
index 3577cf396..0b9402a6b 100644
--- a/resources/assets/js/directives.js
+++ b/resources/assets/js/directives.js
@@ -845,9 +845,9 @@ module.exports = function (ngApp, events) {
                 scope.closeBox = function () {
                     element.remove();
                     scope.$destroy();
-                }
+                };
             }
-        }
+        };
     }]);
 
     ngApp.directive('commentEdit', [function () {
@@ -855,7 +855,7 @@ module.exports = function (ngApp, events) {
             restrict: 'E',
             templateUrl: 'comment-reply.html',
             scope: {
-              comment: '=',
+              comment: '='
             },
             link: function (scope, element) {
                 scope.isEdit = true;
@@ -872,9 +872,9 @@ module.exports = function (ngApp, events) {
                 scope.closeBox = function () {
                     element.remove();
                     scope.$destroy();
-                }
+                };
             }
-        }
+        };
     }]);
 
 
diff --git a/resources/lang/en/entities.php b/resources/lang/en/entities.php
index c0439f0e1..08e11cfde 100644
--- a/resources/lang/en/entities.php
+++ b/resources/lang/en/entities.php
@@ -246,6 +246,12 @@ return [
     'one_comment' => '1 Comment',
     'comments_loading' => 'Loading...',
     'comment_save' => 'Save Comment',
+    'comment_reply' => 'Reply',
+    'comment_edit' => 'Edit',
+    'comment_delete' => 'Delete',
     'comment_cancel' => 'Cancel',
-    'comment_deleted' => 'This comment has been deleted.'
+    'comment_created' => 'Comment added',
+    'comment_updated' => 'Comment updated',
+    'comment_deleted' => 'Comment deleted',
+    'comment_updated_text' => 'Updated :updateDiff by'
 ];
\ No newline at end of file
diff --git a/resources/lang/en/errors.php b/resources/lang/en/errors.php
index c4578a37a..fc2ac73b5 100644
--- a/resources/lang/en/errors.php
+++ b/resources/lang/en/errors.php
@@ -60,6 +60,12 @@ return [
     'role_system_cannot_be_deleted' => 'This role is a system role and cannot be deleted',
     'role_registration_default_cannot_delete' => 'This role cannot be deleted while set as the default registration role',
 
+    // Comments
+    'comment_error' => 'An error occurred while fetching the comments.',
+    'cannot_add_comment_to_draft' => 'You cannot add comments to a draft.',
+    'comment_add_error' => 'An error occurred while adding the comment.',
+    'empty_comment' => 'Cannot add an empty comment.',
+
     // Error pages
     '404_page_not_found' => 'Page Not Found',
     'sorry_page_not_found' => 'Sorry, The page you were looking for could not be found.',
diff --git a/resources/views/comments/comment-reply.blade.php b/resources/views/comments/comment-reply.blade.php
index 16fa2bff0..9c698bf0d 100644
--- a/resources/views/comments/comment-reply.blade.php
+++ b/resources/views/comments/comment-reply.blade.php
@@ -1,8 +1,6 @@
 <div class="comment-editor" ng-controller="CommentReplyController as vm" ng-cloak>
     <form novalidate>
-        <textarea name="markdown" rows="3" ng-model="comment.text" placeholder="{{ trans('entities.comment_placeholder') }}"
-                  @if($errors->has('markdown')) class="neg" @endif>@if(isset($model) ||
-                  old('markdown')){{htmlspecialchars( old('markdown') ? old('markdown') : ($model->markdown === '' ? $model->html : $model->markdown))}}@endif</textarea>
+        <textarea name="markdown" rows="3" ng-model="comment.text" placeholder="{{ trans('entities.comment_placeholder') }}"></textarea>
         <input type="hidden" ng-model="comment.pageId" name="comment.pageId" value="{{$pageId}}" ng-init="comment.pageId = {{$pageId }}">
         <button type="button" ng-if="::(isReply || isEdit)" class="button muted" ng-click="closeBox()">{{ trans('entities.comment_cancel') }}</button>
         <button type="submit" class="button pos" ng-click="vm.saveComment(isReply)">{{ trans('entities.comment_save') }}</button>
diff --git a/resources/views/comments/list-item.blade.php b/resources/views/comments/list-item.blade.php
index ec0b13f17..eb2bcf8ab 100644
--- a/resources/views/comments/list-item.blade.php
+++ b/resources/views/comments/list-item.blade.php
@@ -14,12 +14,12 @@
         </div>
         <div class="comment-actions">
             <ul ng-if="!comment.is_hidden">
-                <li ng-if="::(level < 3 && vm.canComment())"><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment" is-reply="true">Reply</a></li>
-                <li ng-if="::vm.canEdit(comment)"><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment" >Edit</a></li>
-                <li ng-if="::vm.canEdit(comment, true)"><a href="#" comment-delete-link comment="comment" >Delete</a></li>
+                <li ng-if="::(level < 3 && vm.canComment())"><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment" is-reply="true">{{ trans('entities.comment_reply') }}</a></li>
+                <li ng-if="::vm.canEdit(comment)"><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment" >{{ trans('entities.comment_edit') }}</a></li>
+                <li ng-if="::vm.canEdit(comment, true)"><a href="#" comment-delete-link comment="comment" >{{ trans('entities.comment_delete') }}</a></li>
                 <li>Created <a title="@{{::comment.created.day_time_str}}" href="#comment-@{{::comment.id}}-@{{::pageId}}">@{{::comment.created.diff}}</a></li>
-                <li ng-if="::comment.updated"><span title="@{{::comment.updated.day_time_str}}">Updated @{{::comment.updated.diff}} by
-                    <a href="@{{::comment.updated_by.profile_url}}">@{{::comment.updated_by.name}}</a></span></li>
+                <li ng-if="::comment.updated"><span title="@{{::comment.updated.day_time_str}}">@{{ ::vm.trans('entities.comment_updated_text', { updateDiff: comment.updated.diff }) }}
+                        <a href="@{{::comment.updated_by.profile_url}}">@{{::comment.updated_by.name}}</a></span></li>
             </ul>
         </div>
         <div class="comment-box" ng-repeat="comment in comments = comment.sub_comments track by comment.id" ng-init="level = level + 1">

From 652a67ad6598412759aec58454eba3d6a006ac4a Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Tue, 6 Jun 2017 23:20:40 +0530
Subject: [PATCH 19/83] Removes some unncessary code.

---
 app/Page.php                     | 9 ---------
 resources/lang/en/activities.php | 5 -----
 2 files changed, 14 deletions(-)

diff --git a/app/Page.php b/app/Page.php
index 4a8d32780..c9823e7e4 100644
--- a/app/Page.php
+++ b/app/Page.php
@@ -38,15 +38,6 @@ class Page extends Entity
     {
         return $this->belongsTo(Chapter::class);
     }
-    
-    /**
-     * Get the comments in the page.
-     * @return \Illuminate\Database\Eloquent\Relations\HasMany
-     */
-    public function comment()
-    {
-        return $this->hasMany(Comment::class);
-    }
 
     /**
      * Check if this page has a chapter.
diff --git a/resources/lang/en/activities.php b/resources/lang/en/activities.php
index 094f97306..56af4ca07 100644
--- a/resources/lang/en/activities.php
+++ b/resources/lang/en/activities.php
@@ -37,9 +37,4 @@ return [
     'book_sort'                   => 'sorted book',
     'book_sort_notification'      => 'Book Successfully Re-sorted',
 
-    // Comments
-    'comment_create_notification' => '',
-    'comment_update_notification' => '',
-    'comment_delete_notification' => '',
-
 ];

From 38fe7567258e0d61e3d4718bb0ccad0681608bcb Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Wed, 7 Jun 2017 23:45:29 +0530
Subject: [PATCH 20/83] #47 - Fixes a couple of issues found during testing -
 delete not updating the UI, delete none not working properly.

---
 resources/assets/js/controllers.js           | 23 +++++++++++++-------
 resources/lang/en/errors.php                 |  5 +++--
 resources/views/comments/list-item.blade.php |  4 ++--
 3 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/resources/assets/js/controllers.js b/resources/assets/js/controllers.js
index 3ef02d41f..a929f4aed 100644
--- a/resources/assets/js/controllers.js
+++ b/resources/assets/js/controllers.js
@@ -747,7 +747,7 @@ module.exports = function (ngApp, events) {
             } else if (response.data) {
                 msg = response.data.message;
             } else {
-                msg = trans('errors.comment_add_error');
+                msg = trans('errors.comment_add');
             }
             if (msg) {
                 events.emit('success', msg);
@@ -761,15 +761,15 @@ module.exports = function (ngApp, events) {
 
         vm.delete = function(comment) {
             $http.delete(window.baseUrl(`/ajax/comment/${comment.id}`)).then(resp => {
-                if (isCommentOpSuccess(resp)) {
+                if (!isCommentOpSuccess(resp)) {
                     return;
                 }
                 updateComment(comment, resp.data, $timeout, true);
             }, function (resp) {
                 if (isCommentOpSuccess(resp)) {
-                    events.emit('success', trans('entities.comment_delete_success'));
+                    events.emit('success', trans('entities.comment_deleted'));
                 } else {
-                    events.emit('error', trans('entities.comment_delete_fail'));
+                    events.emit('error', trans('error.comment_delete'));
                 }
             });
         };
@@ -794,17 +794,21 @@ module.exports = function (ngApp, events) {
             event.preventDefault();
         });
 
-        vm.canEdit = function (comment) {
+        vm.canEditDelete = function (comment, prop) {
             if (!comment.active) {
                 return false;
             }
-            if (vm.permissions.comment_update_all) {
+            let propAll = prop + '_all';
+            let propOwn = prop + '_own';
+
+            if (vm.permissions[propAll]) {
                 return true;
             }
 
-            if (vm.permissions.comment_update_own && comment.created_by.id === vm.current_user_id) {
+            if (vm.permissions[propOwn] && comment.created_by.id === vm.current_user_id) {
                 return true;
             }
+            
             return false;
         };
 
@@ -815,6 +819,9 @@ module.exports = function (ngApp, events) {
         $timeout(function() {
             $http.get(window.baseUrl(`/ajax/page/${$scope.pageId}/comments/`)).then(resp => {
                 if (!isCommentOpSuccess(resp)) {
+                    // just show that no comments are available.
+                    vm.totalComments = 0;
+                    setTotalCommentMsg();
                     return;
                 }
                 vm.comments = resp.data.comments;
@@ -845,7 +852,7 @@ module.exports = function (ngApp, events) {
             } else if (response.data) {
                 msg = response.data.message;
             } else {
-                msg = trans('errors.comment_error');
+                msg = trans('errors.comment_list');
             }
             if (msg) {
                 events.emit('success', msg);
diff --git a/resources/lang/en/errors.php b/resources/lang/en/errors.php
index fc2ac73b5..71bcd1f9a 100644
--- a/resources/lang/en/errors.php
+++ b/resources/lang/en/errors.php
@@ -61,9 +61,10 @@ return [
     'role_registration_default_cannot_delete' => 'This role cannot be deleted while set as the default registration role',
 
     // Comments
-    'comment_error' => 'An error occurred while fetching the comments.',
+    'comment_list' => 'An error occurred while fetching the comments.',
     'cannot_add_comment_to_draft' => 'You cannot add comments to a draft.',
-    'comment_add_error' => 'An error occurred while adding the comment.',
+    'comment_add' => 'An error occurred while adding the comment.',
+    'comment_delete' => 'An error occurred while deleting the comment.',
     'empty_comment' => 'Cannot add an empty comment.',
 
     // Error pages
diff --git a/resources/views/comments/list-item.blade.php b/resources/views/comments/list-item.blade.php
index eb2bcf8ab..6904a4abf 100644
--- a/resources/views/comments/list-item.blade.php
+++ b/resources/views/comments/list-item.blade.php
@@ -15,8 +15,8 @@
         <div class="comment-actions">
             <ul ng-if="!comment.is_hidden">
                 <li ng-if="::(level < 3 && vm.canComment())"><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment" is-reply="true">{{ trans('entities.comment_reply') }}</a></li>
-                <li ng-if="::vm.canEdit(comment)"><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment" >{{ trans('entities.comment_edit') }}</a></li>
-                <li ng-if="::vm.canEdit(comment, true)"><a href="#" comment-delete-link comment="comment" >{{ trans('entities.comment_delete') }}</a></li>
+                <li ng-if="::vm.canEditDelete(comment, 'comment_update')"><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment" >{{ trans('entities.comment_edit') }}</a></li>
+                <li ng-if="::vm.canEditDelete(comment, 'comment_delete')"><a href="#" comment-delete-link comment="comment" >{{ trans('entities.comment_delete') }}</a></li>
                 <li>Created <a title="@{{::comment.created.day_time_str}}" href="#comment-@{{::comment.id}}-@{{::pageId}}">@{{::comment.created.diff}}</a></li>
                 <li ng-if="::comment.updated"><span title="@{{::comment.updated.day_time_str}}">@{{ ::vm.trans('entities.comment_updated_text', { updateDiff: comment.updated.diff }) }}
                         <a href="@{{::comment.updated_by.profile_url}}">@{{::comment.updated_by.name}}</a></span></li>

From e647ec22b1e4b6ca565ad9b9269deefe36da2ea6 Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Thu, 8 Jun 2017 01:14:53 +0530
Subject: [PATCH 21/83] #47 - Adds direct linking to comments.

---
 resources/assets/js/controllers.js           | 23 ++++++++++++++++++--
 resources/assets/js/directives.js            | 16 ++++++++------
 resources/assets/js/pages/page-show.js       |  2 ++
 resources/views/comments/list-item.blade.php |  2 +-
 4 files changed, 33 insertions(+), 10 deletions(-)

diff --git a/resources/assets/js/controllers.js b/resources/assets/js/controllers.js
index a929f4aed..c1bfd441f 100644
--- a/resources/assets/js/controllers.js
+++ b/resources/assets/js/controllers.js
@@ -776,7 +776,7 @@ module.exports = function (ngApp, events) {
     }]);
 
     // Controller used to fetch all comments for a page
-    ngApp.controller('CommentListController', ['$scope', '$http', '$timeout', function ($scope, $http, $timeout) {
+    ngApp.controller('CommentListController', ['$scope', '$http', '$timeout', '$location', function ($scope, $http, $timeout, $location) {
         let vm = this;
         $scope.errors = {};
         // keep track of comment levels
@@ -808,7 +808,7 @@ module.exports = function (ngApp, events) {
             if (vm.permissions[propOwn] && comment.created_by.id === vm.current_user_id) {
                 return true;
             }
-            
+
             return false;
         };
 
@@ -816,6 +816,9 @@ module.exports = function (ngApp, events) {
             return vm.permissions.comment_create;
         };
 
+        // check if there are is any direct linking
+        let linkedCommentId = $location.search().cm;
+
         $timeout(function() {
             $http.get(window.baseUrl(`/ajax/page/${$scope.pageId}/comments/`)).then(resp => {
                 if (!isCommentOpSuccess(resp)) {
@@ -829,6 +832,13 @@ module.exports = function (ngApp, events) {
                 vm.permissions = resp.data.permissions;
                 vm.current_user_id = resp.data.user_id;
                 setTotalCommentMsg();
+                if (!linkedCommentId) {
+                    return;
+                }
+                $timeout(function() {
+                    // wait for the UI to render.
+                    focusLinkedComment(linkedCommentId);
+                });
             }, checkError);
         });
 
@@ -844,6 +854,15 @@ module.exports = function (ngApp, events) {
             }
         }
 
+        function focusLinkedComment(linkedCommentId) {
+            let comment = angular.element('#' + linkedCommentId);
+            if (comment.length === 0) {
+                return;
+            }
+
+            window.setupPageShow.goToText(linkedCommentId);
+        }
+
         function checkError(response) {
             let msg = null;
             if (isCommentOpSuccess(response)) {
diff --git a/resources/assets/js/directives.js b/resources/assets/js/directives.js
index 0b9402a6b..bbdf1a0ae 100644
--- a/resources/assets/js/directives.js
+++ b/resources/assets/js/directives.js
@@ -889,7 +889,8 @@ module.exports = function (ngApp, events) {
                     scope.$destroy();
                 });
 
-                element.on('click', function () {
+                element.on('click', function (e) {
+                    e.preventDefault();
                     var $container = element.parents('.comment-actions').first();
                     if (!$container.length) {
                         console.error('commentReplyLink directive should be placed inside a container with class comment-box!');
@@ -933,13 +934,14 @@ module.exports = function (ngApp, events) {
             },
             link: function (scope, element, attr, ctrl) {
 
-                element.on('click', function() {
-                   var resp = $window.confirm('This will remove the content of the comment, are you sure you want to continue?');
-                   if (!resp) {
-                       return;
-                   }
+                element.on('click', function(e) {
+                    e.preventDefault();
+                    var resp = $window.confirm('This will remove the content of the comment, are you sure you want to continue?');
+                    if (!resp) {
+                        return;
+                    }
 
-                   ctrl.delete(scope.comment);
+                    ctrl.delete(scope.comment);
                 });
             }
         };
diff --git a/resources/assets/js/pages/page-show.js b/resources/assets/js/pages/page-show.js
index 67d339d63..020229d2f 100644
--- a/resources/assets/js/pages/page-show.js
+++ b/resources/assets/js/pages/page-show.js
@@ -161,6 +161,8 @@ let setupPageShow = window.setupPageShow = function (pageId) {
         }
     });
 
+    // in order to call from other places.
+    window.setupPageShow.goToText = goToText;
 };
 
 module.exports = setupPageShow;
\ No newline at end of file
diff --git a/resources/views/comments/list-item.blade.php b/resources/views/comments/list-item.blade.php
index 6904a4abf..391e64baf 100644
--- a/resources/views/comments/list-item.blade.php
+++ b/resources/views/comments/list-item.blade.php
@@ -17,7 +17,7 @@
                 <li ng-if="::(level < 3 && vm.canComment())"><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment" is-reply="true">{{ trans('entities.comment_reply') }}</a></li>
                 <li ng-if="::vm.canEditDelete(comment, 'comment_update')"><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment" >{{ trans('entities.comment_edit') }}</a></li>
                 <li ng-if="::vm.canEditDelete(comment, 'comment_delete')"><a href="#" comment-delete-link comment="comment" >{{ trans('entities.comment_delete') }}</a></li>
-                <li>Created <a title="@{{::comment.created.day_time_str}}" href="#comment-@{{::comment.id}}-@{{::pageId}}">@{{::comment.created.diff}}</a></li>
+                <li>Created <a title="@{{::comment.created.day_time_str}}" href="#?cm=comment-@{{::pageId}}-@{{::comment.id}}">@{{::comment.created.diff}}</a></li>
                 <li ng-if="::comment.updated"><span title="@{{::comment.updated.day_time_str}}">@{{ ::vm.trans('entities.comment_updated_text', { updateDiff: comment.updated.diff }) }}
                         <a href="@{{::comment.updated_by.profile_url}}">@{{::comment.updated_by.name}}</a></span></li>
             </ul>

From 218376a41c396e45dff2a9c82ff0fdbddcf475a0 Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Thu, 8 Jun 2017 01:30:43 +0530
Subject: [PATCH 22/83] #47 - Fetching values from language files.

---
 resources/assets/js/directives.js | 10 +++++-----
 resources/lang/en/entities.php    |  3 ++-
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/resources/assets/js/directives.js b/resources/assets/js/directives.js
index bbdf1a0ae..bbf87adda 100644
--- a/resources/assets/js/directives.js
+++ b/resources/assets/js/directives.js
@@ -936,12 +936,12 @@ module.exports = function (ngApp, events) {
 
                 element.on('click', function(e) {
                     e.preventDefault();
-                    var resp = $window.confirm('This will remove the content of the comment, are you sure you want to continue?');
-                    if (!resp) {
-                        return;
-                    }
+                   var resp = $window.confirm(trans('entities.comment_delete_confirm'));
+                   if (!resp) {
+                       return;
+                   }
 
-                    ctrl.delete(scope.comment);
+                   ctrl.delete(scope.comment);
                 });
             }
         };
diff --git a/resources/lang/en/entities.php b/resources/lang/en/entities.php
index 08e11cfde..65fba069f 100644
--- a/resources/lang/en/entities.php
+++ b/resources/lang/en/entities.php
@@ -253,5 +253,6 @@ return [
     'comment_created' => 'Comment added',
     'comment_updated' => 'Comment updated',
     'comment_deleted' => 'Comment deleted',
-    'comment_updated_text' => 'Updated :updateDiff by'
+    'comment_updated_text' => 'Updated :updateDiff by',
+    'comment_delete_confirm' => 'This will remove the contents of the comment. Are you sure you want to delete this comment?'
 ];
\ No newline at end of file

From 4efe3b41da5941f7b49b7a43218166524e5924fb Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Sat, 10 Jun 2017 15:21:28 +0530
Subject: [PATCH 23/83] #47 - Added translations for other language files using
 Google translate.

---
 resources/assets/js/directives.js            | 10 ++++-----
 resources/lang/de/entities.php               | 23 ++++++++++++++++++++
 resources/lang/de/errors.php                 |  7 ++++++
 resources/lang/en/entities.php               |  4 +++-
 resources/lang/es/entities.php               | 22 +++++++++++++++++++
 resources/lang/es/errors.php                 |  7 ++++++
 resources/lang/fr/entities.php               | 22 +++++++++++++++++++
 resources/lang/fr/errors.php                 |  7 ++++++
 resources/lang/nl/entities.php               | 22 +++++++++++++++++++
 resources/lang/nl/errors.php                 |  7 ++++++
 resources/lang/pt_BR/entities.php            | 22 +++++++++++++++++++
 resources/lang/pt_BR/errors.php              |  7 ++++++
 resources/lang/sk/entities.php               | 22 +++++++++++++++++++
 resources/lang/sk/errors.php                 |  7 ++++++
 resources/views/comments/list-item.blade.php |  2 +-
 15 files changed, 184 insertions(+), 7 deletions(-)

diff --git a/resources/assets/js/directives.js b/resources/assets/js/directives.js
index bbf87adda..16d1ad2a4 100644
--- a/resources/assets/js/directives.js
+++ b/resources/assets/js/directives.js
@@ -936,12 +936,12 @@ module.exports = function (ngApp, events) {
 
                 element.on('click', function(e) {
                     e.preventDefault();
-                   var resp = $window.confirm(trans('entities.comment_delete_confirm'));
-                   if (!resp) {
-                       return;
-                   }
+                    var resp = $window.confirm(trans('entities.comment_delete_confirm'));
+                    if (!resp) {
+                        return;
+                    }
 
-                   ctrl.delete(scope.comment);
+                    ctrl.delete(scope.comment);
                 });
             }
         };
diff --git a/resources/lang/de/entities.php b/resources/lang/de/entities.php
index c9feb8497..5d7d5cdde 100644
--- a/resources/lang/de/entities.php
+++ b/resources/lang/de/entities.php
@@ -213,4 +213,27 @@ return [
     'profile_not_created_pages' => ':userName hat bisher keine Seiten angelegt.',
     'profile_not_created_chapters' => ':userName hat bisher keine Kapitel angelegt.',
     'profile_not_created_books' => ':userName hat bisher keine B&uuml;cher angelegt.',
+
+    /**
+     * Comnents
+     */
+    'comment' => 'Kommentar',
+    'comments' => 'Kommentare',
+    'comment_placeholder' => 'Geben Sie hier Ihre Kommentare ein, Markdown unterstützt ...',
+    'no_comments' => 'Keine Kommentare',
+    'x_comments' => ':numComments Kommentare',
+    'one_comment' => '1 Kommentar',
+    'comments_loading' => 'Laden ...',
+    'comment_save' => 'Kommentar speichern',
+    'comment_reply' => 'Antworten',
+    'comment_edit' => 'Bearbeiten',
+    'comment_delete' => 'Löschen',
+    'comment_cancel' => 'Abbrechen',
+    'comment_created' => 'Kommentar hinzugefügt',
+    'comment_updated' => 'Kommentar aktualisiert',
+    'comment_deleted' => 'Kommentar gelöscht',
+    'comment_updated_text' => 'Aktualisiert vor :updateDiff von',
+    'comment_delete_confirm' => 'Damit wird der Inhalt des Kommentars entfernt. Bist du sicher, dass du diesen Kommentar löschen möchtest?',
+    'comment_create' => 'Erstellt'
+
 ];
\ No newline at end of file
diff --git a/resources/lang/de/errors.php b/resources/lang/de/errors.php
index e085d9915..ff045d628 100644
--- a/resources/lang/de/errors.php
+++ b/resources/lang/de/errors.php
@@ -67,4 +67,11 @@ return [
     'error_occurred' => 'Es ist ein Fehler aufgetreten',
     'app_down' => ':appName befindet sich aktuell im Wartungsmodus.',
     'back_soon' => 'Wir werden so schnell wie m&ouml;glich wieder online sein.',
+
+    // Comments
+    'comment_list' => 'Beim Abrufen der Kommentare ist ein Fehler aufgetreten.',
+    'cannot_add_comment_to_draft' => 'Du kannst keine Kommentare zu einem Entwurf hinzufügen.',
+    'comment_add' => 'Beim Hinzufügen des Kommentars ist ein Fehler aufgetreten.',
+    'comment_delete' => 'Beim Löschen des Kommentars ist ein Fehler aufgetreten.',
+    'empty_comment' => 'Kann keinen leeren Kommentar hinzufügen',
 ];
diff --git a/resources/lang/en/entities.php b/resources/lang/en/entities.php
index 65fba069f..43053df10 100644
--- a/resources/lang/en/entities.php
+++ b/resources/lang/en/entities.php
@@ -254,5 +254,7 @@ return [
     'comment_updated' => 'Comment updated',
     'comment_deleted' => 'Comment deleted',
     'comment_updated_text' => 'Updated :updateDiff by',
-    'comment_delete_confirm' => 'This will remove the contents of the comment. Are you sure you want to delete this comment?'
+    'comment_delete_confirm' => 'This will remove the contents of the comment. Are you sure you want to delete this comment?',
+    'comment_create' => 'Created'
+
 ];
\ No newline at end of file
diff --git a/resources/lang/es/entities.php b/resources/lang/es/entities.php
index d6b2810bc..aadfa2324 100644
--- a/resources/lang/es/entities.php
+++ b/resources/lang/es/entities.php
@@ -214,4 +214,26 @@ return [
     'profile_not_created_pages' => ':userName no ha creado ninguna página',
     'profile_not_created_chapters' => ':userName no ha creado ningún capítulo',
     'profile_not_created_books' => ':userName no ha creado ningún libro',
+
+    /**
+     * Comments
+     */
+    'comment' => 'Comentario',
+    'comments' => 'Comentarios',
+    'comment_placeholder' => 'Introduzca sus comentarios aquí, markdown supported ...',
+    'no_comments' => 'No hay comentarios',
+    'x_comments' => ':numComments Comentarios',
+    'one_comment' => '1 Comentario',
+    'comments_loading' => 'Cargando ...',
+    'comment_save' => 'Guardar comentario',
+    'comment_reply' => 'Responder',
+    'comment_edit' => 'Editar',
+    'comment_delete' => 'Eliminar',
+    'comment_cancel' => 'Cancelar',
+    'comment_created' => 'Comentario añadido',
+    'comment_updated' => 'Comentario actualizado',
+    'comment_deleted' => 'Comentario eliminado',
+    'comment_updated_text' => 'Actualizado hace :updateDiff minutos por',
+    'comment_delete_confirm' => 'Esto eliminará el contenido del comentario. ¿Estás seguro de que quieres eliminar este comentario?',
+    'comment_create' => 'Creado'
 ];
diff --git a/resources/lang/es/errors.php b/resources/lang/es/errors.php
index 1e39a3cb8..e488b6a1b 100644
--- a/resources/lang/es/errors.php
+++ b/resources/lang/es/errors.php
@@ -67,4 +67,11 @@ return [
     'error_occurred' => 'Ha ocurrido un error',
     'app_down' => 'La aplicación :appName se encuentra caída en este momento',
     'back_soon' => 'Volverá a estar operativa en corto tiempo.',
+
+    // Comments
+    'comment_list' => 'Se ha producido un error al buscar los comentarios.',
+    'cannot_add_comment_to_draft' => 'No puedes añadir comentarios a un borrador.',
+    'comment_add' => 'Se ha producido un error al añadir el comentario.',
+    'comment_delete' => 'Se ha producido un error al eliminar el comentario.',
+    'empty_comment' => 'No se puede agregar un comentario vacío.',
 ];
diff --git a/resources/lang/fr/entities.php b/resources/lang/fr/entities.php
index 5562fb0fd..c618bab08 100644
--- a/resources/lang/fr/entities.php
+++ b/resources/lang/fr/entities.php
@@ -213,4 +213,26 @@ return [
     'profile_not_created_pages' => ':userName n\'a pas créé de pages',
     'profile_not_created_chapters' => ':userName n\'a pas créé de chapitres',
     'profile_not_created_books' => ':userName n\'a pas créé de livres',
+
+    /**
+     * Comments
+     */
+    'comment' => 'Commentaire',
+    'comments' => 'Commentaires',
+    'comment_placeholder' => 'Entrez vos commentaires ici, merci supporté ...',
+    'no_comments' => 'No Comments',
+    'x_comments' => ':numComments Commentaires',
+    'one_comment' => '1 Commentaire',
+    'comments_loading' => 'Loading ...',
+    'comment_save' => 'Enregistrer le commentaire',
+    'comment_reply' => 'Répondre',
+    'comment_edit' => 'Modifier',
+    'comment_delete' => 'Supprimer',
+    'comment_cancel' => 'Annuler',
+    'comment_created' => 'Commentaire ajouté',
+    'comment_updated' => 'Commentaire mis à jour',
+    'comment_deleted' => 'Commentaire supprimé',
+    'comment_updated_text' => 'Mis à jour il y a :updateDiff par',
+    'comment_delete_confirm' => 'Cela supprime le contenu du commentaire. Êtes-vous sûr de vouloir supprimer ce commentaire?',
+    'comment_create' => 'Créé'
 ];
diff --git a/resources/lang/fr/errors.php b/resources/lang/fr/errors.php
index 72af89f7f..402eeb405 100644
--- a/resources/lang/fr/errors.php
+++ b/resources/lang/fr/errors.php
@@ -67,4 +67,11 @@ return [
     'error_occurred' => 'Une erreur est survenue',
     'app_down' => ':appName n\'est pas en service pour le moment',
     'back_soon' => 'Nous serons bientôt de retour.',
+
+    // comments
+    'comment_list' => 'Une erreur s\'est produite lors de la récupération des commentaires.',
+    'cannot_add_comment_to_draft' => 'Vous ne pouvez pas ajouter de commentaires à un projet.',
+    'comment_add' => 'Une erreur s\'est produite lors de l\'ajout du commentaire.',
+    'comment_delete' => 'Une erreur s\'est produite lors de la suppression du commentaire.',
+    'empty_comment' => 'Impossible d\'ajouter un commentaire vide.',
 ];
diff --git a/resources/lang/nl/entities.php b/resources/lang/nl/entities.php
index d6975e130..6df9e5dd9 100644
--- a/resources/lang/nl/entities.php
+++ b/resources/lang/nl/entities.php
@@ -214,4 +214,26 @@ return [
     'profile_not_created_pages' => ':userName heeft geen pagina\'s gemaakt',
     'profile_not_created_chapters' => ':userName heeft geen hoofdstukken gemaakt',
     'profile_not_created_books' => ':userName heeft geen boeken gemaakt',
+
+    /**
+     * Comments
+     */
+    'comment' => 'Commentaar',
+    'comments' => 'Commentaren',
+    'comment_placeholder' => 'Vul hier uw reacties in, markdown ondersteund ...',
+    'no_comments' => 'No Comments',
+    'x_comments' => ':numComments Opmerkingen',
+    'one_comment' => '1 commentaar',
+    'comments_loading' => 'Loading ...',
+    'comment_save' => 'Opslaan opslaan',
+    'comment_reply' => 'Antwoord',
+    'comment_edit' => 'Bewerken',
+    'comment_delete' => 'Verwijderen',
+    'comment_cancel' => 'Annuleren',
+    'comment_created' => 'Opmerking toegevoegd',
+    'comment_updated' => 'Opmerking bijgewerkt',
+    'comment_deleted' => 'Opmerking verwijderd',
+    'comment_updated_text' => 'Bijgewerkt :updateDiff geleden door',
+    'comment_delete_confirm' => 'Hiermee verwijdert u de inhoud van de reactie. Weet u zeker dat u deze reactie wilt verwijderen?',
+    'comment_create' => 'Gemaakt'
 ];
\ No newline at end of file
diff --git a/resources/lang/nl/errors.php b/resources/lang/nl/errors.php
index f8b635bce..b8fab59fd 100644
--- a/resources/lang/nl/errors.php
+++ b/resources/lang/nl/errors.php
@@ -67,4 +67,11 @@ return [
     'error_occurred' => 'Er Ging Iets Fout',
     'app_down' => ':appName is nu niet beschikbaar',
     'back_soon' => 'Komt snel weer online.',
+
+    // Comments
+    'comment_list' => 'Er is een fout opgetreden tijdens het ophalen van de reacties.',
+    'cannot_add_comment_to_draft' => 'U kunt geen reacties toevoegen aan een ontwerp.',
+    'comment_add' => 'Er is een fout opgetreden tijdens het toevoegen van de reactie.',
+    'comment_delete' => 'Er is een fout opgetreden tijdens het verwijderen van de reactie.',
+    'empty_comment' => 'Kan geen lege reactie toevoegen.',
 ];
\ No newline at end of file
diff --git a/resources/lang/pt_BR/entities.php b/resources/lang/pt_BR/entities.php
index 5a965fe62..e6b900fdd 100644
--- a/resources/lang/pt_BR/entities.php
+++ b/resources/lang/pt_BR/entities.php
@@ -214,4 +214,26 @@ return [
     'profile_not_created_pages' => ':userName não criou páginas',
     'profile_not_created_chapters' => ':userName não criou capítulos',
     'profile_not_created_books' => ':userName não criou livros',
+
+    /**
+     * Comments
+     */
+    'comentário' => 'Comentário',
+    'comentários' => 'Comentários',
+    'comment_placeholder' => 'Digite seus comentários aqui, markdown suportado ...',
+    'no_comments' => 'No Comments',
+    'x_comments' => ':numComments Comentários',
+    'one_comment' => '1 comentário',
+    'comments_loading' => 'Carregando ....',
+    'comment_save' => 'Salvar comentário',
+    'comment_reply' => 'Responder',
+    'comment_edit' => 'Editar',
+    'comment_delete' => 'Excluir',
+    'comment_cancel' => 'Cancelar',
+    'comment_created' => 'Comentário adicionado',
+    'comment_updated' => 'Comentário atualizado',
+    'comment_deleted' => 'Comentário eliminado',
+    'comment_updated_text' => 'Atualizado :updatedDiff atrás por',
+    'comment_delete_confirm' => 'Isso removerá o conteúdo do comentário. Tem certeza de que deseja excluir esse comentário?',
+    'comment_create' => 'Criada'
 ];
\ No newline at end of file
diff --git a/resources/lang/pt_BR/errors.php b/resources/lang/pt_BR/errors.php
index 91b85e3ef..16fc78ff5 100644
--- a/resources/lang/pt_BR/errors.php
+++ b/resources/lang/pt_BR/errors.php
@@ -67,4 +67,11 @@ return [
     'error_occurred' => 'Um erro ocorreu',
     'app_down' => ':appName está fora do ar no momento',
     'back_soon' => 'Voltaremos em seguida.',
+
+    // comments
+    'comment_list' => 'Ocorreu um erro ao buscar os comentários.',
+    'cannot_add_comment_to_draft' => 'Você não pode adicionar comentários a um rascunho.',
+    'comment_add' => 'Ocorreu um erro ao adicionar o comentário.',
+    'comment_delete' => 'Ocorreu um erro ao excluir o comentário.',
+    'empty_comment' => 'Não é possível adicionar um comentário vazio.',
 ];
\ No newline at end of file
diff --git a/resources/lang/sk/entities.php b/resources/lang/sk/entities.php
index e70864753..8a3aa4df6 100644
--- a/resources/lang/sk/entities.php
+++ b/resources/lang/sk/entities.php
@@ -223,4 +223,26 @@ return [
     'profile_not_created_pages' => ':userName nevytvoril žiadne stránky',
     'profile_not_created_chapters' => ':userName nevytvoril žiadne kapitoly',
     'profile_not_created_books' => ':userName nevytvoril žiadne knihy',
+
+    /**
+     *
+     */
+    'comment' => 'Komentár',
+    'comments' => 'Komentáre',
+    'comment_placeholder' => 'Tu zadajte svoje pripomienky, podporované označenie ...',
+    'no_comments' => 'No Comments',
+    'x_comments' => ':numComments komentárov',
+    'one_comment' => '1 komentár',
+    'comments_loading' => 'Loading ..',
+    'comment_save' => 'Uložiť komentár',
+    'comment_reply' => 'Odpovedať',
+    'comment_edit' => 'Upraviť',
+    'comment_delete' => 'Odstrániť',
+    'comment_cancel' => 'Zrušiť',
+    'comment_created' => 'Pridaný komentár',
+    'comment_updated' => 'Komentár aktualizovaný',
+    'comment_deleted' => 'Komentár bol odstránený',
+    'comment_updated_text' => 'Aktualizované pred :updateDiff',
+    'comment_delete_confirm' => 'Tým sa odstráni obsah komentára. Naozaj chcete odstrániť tento komentár?',
+    'comment_create' => 'Vytvorené'
 ];
diff --git a/resources/lang/sk/errors.php b/resources/lang/sk/errors.php
index e3420852a..d4c7b7a3a 100644
--- a/resources/lang/sk/errors.php
+++ b/resources/lang/sk/errors.php
@@ -67,4 +67,11 @@ return [
     'error_occurred' => 'Nastala chyba',
     'app_down' => ':appName je momentálne nedostupná',
     'back_soon' => 'Čoskoro bude opäť dostupná.',
+
+    // comments
+    'comment_list' => 'Pri načítaní komentárov sa vyskytla chyba',
+    'cannot_add_comment_to_draft' => 'Do konceptu nemôžete pridávať komentáre.',
+    'comment_add' => 'Počas pridávania komentára sa vyskytla chyba',
+    'comment_delete' => 'Pri odstraňovaní komentára došlo k chybe',
+    'empty_comment' => 'Nelze pridať prázdny komentár.',
 ];
diff --git a/resources/views/comments/list-item.blade.php b/resources/views/comments/list-item.blade.php
index 391e64baf..f274d2ed2 100644
--- a/resources/views/comments/list-item.blade.php
+++ b/resources/views/comments/list-item.blade.php
@@ -17,7 +17,7 @@
                 <li ng-if="::(level < 3 && vm.canComment())"><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment" is-reply="true">{{ trans('entities.comment_reply') }}</a></li>
                 <li ng-if="::vm.canEditDelete(comment, 'comment_update')"><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment" >{{ trans('entities.comment_edit') }}</a></li>
                 <li ng-if="::vm.canEditDelete(comment, 'comment_delete')"><a href="#" comment-delete-link comment="comment" >{{ trans('entities.comment_delete') }}</a></li>
-                <li>Created <a title="@{{::comment.created.day_time_str}}" href="#?cm=comment-@{{::pageId}}-@{{::comment.id}}">@{{::comment.created.diff}}</a></li>
+                <li>{{ trans('entities.comment_create') }} <a title="@{{::comment.created.day_time_str}}" href="#?cm=comment-@{{::pageId}}-@{{::comment.id}}">@{{::comment.created.diff}}</a></li>
                 <li ng-if="::comment.updated"><span title="@{{::comment.updated.day_time_str}}">@{{ ::vm.trans('entities.comment_updated_text', { updateDiff: comment.updated.diff }) }}
                         <a href="@{{::comment.updated_by.profile_url}}">@{{::comment.updated_by.name}}</a></span></li>
             </ul>

From 552943c03349100c8655059554b9fadfc3291e75 Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Sat, 10 Jun 2017 19:46:00 +0530
Subject: [PATCH 24/83] #47 - Undos changes in config files.

---
 config/app.php      | 4 ++--
 config/database.php | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/config/app.php b/config/app.php
index 13bb9aa7d..54cdca21b 100644
--- a/config/app.php
+++ b/config/app.php
@@ -3,7 +3,7 @@
 return [
 
 
-    'env' => env('APP_ENV', 'development'),
+    'env' => env('APP_ENV', 'production'),
 
     'editor' => env('APP_EDITOR', 'html'),
 
@@ -18,7 +18,7 @@ return [
     |
     */
 
-    'debug' => env('APP_DEBUG', true),
+    'debug' => env('APP_DEBUG', false),
 
     /*
     |--------------------------------------------------------------------------
diff --git a/config/database.php b/config/database.php
index d13268cea..92c768245 100644
--- a/config/database.php
+++ b/config/database.php
@@ -71,9 +71,9 @@ return [
         'mysql' => [
             'driver'    => 'mysql',
             'host'      => env('DB_HOST', 'localhost'),
-            'database'  => env('DB_DATABASE', 'bookstack'),
-            'username'  => env('DB_USERNAME', 'root'),
-            'password'  => env('DB_PASSWORD', 'Change123'),
+            'database'  => env('DB_DATABASE', 'forge'),
+            'username'  => env('DB_USERNAME', 'forge'),
+            'password'  => env('DB_PASSWORD', ''),
             'charset'   => 'utf8',
             'collation' => 'utf8_unicode_ci',
             'prefix'    => '',

From c76e7c706caee5a77397457e0bc097cb502cbbeb Mon Sep 17 00:00:00 2001
From: Abijeet Patro <abijeetpatro@gmail.com>
Date: Sat, 10 Jun 2017 19:47:45 +0530
Subject: [PATCH 25/83] adding a comment on top.

---
 resources/lang/sk/entities.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/resources/lang/sk/entities.php b/resources/lang/sk/entities.php
index 8a3aa4df6..7c8f34368 100644
--- a/resources/lang/sk/entities.php
+++ b/resources/lang/sk/entities.php
@@ -225,7 +225,7 @@ return [
     'profile_not_created_books' => ':userName nevytvoril žiadne knihy',
 
     /**
-     *
+     * Comments
      */
     'comment' => 'Komentár',
     'comments' => 'Komentáre',

From e155c52256a6b8cf965b3cd3bf08747d2d9bdde2 Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Sat, 10 Jun 2017 22:55:36 +0530
Subject: [PATCH 26/83] #47 - Fixes a few issues with the code.

---
 resources/assets/js/controllers.js               | 2 --
 resources/lang/es/entities.php                   | 2 +-
 resources/views/comments/comment-reply.blade.php | 2 +-
 3 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/resources/assets/js/controllers.js b/resources/assets/js/controllers.js
index c1bfd441f..aebde8da4 100644
--- a/resources/assets/js/controllers.js
+++ b/resources/assets/js/controllers.js
@@ -272,7 +272,6 @@ module.exports = function (ngApp, events) {
         $scope.draftsEnabled = $attrs.draftsEnabled === 'true';
         $scope.isUpdateDraft = Number($attrs.pageUpdateDraft) === 1;
         $scope.isNewPageDraft = Number($attrs.pageNewDraft) === 1;
-        $scope.commentsLoaded = false;
 
         // Set initial header draft text
         if ($scope.isUpdateDraft || $scope.isNewPageDraft) {
@@ -687,7 +686,6 @@ module.exports = function (ngApp, events) {
         const MarkdownIt = require("markdown-it");
         const md = new MarkdownIt({html: true});
         let vm = this;
-        $scope.errors = {};
 
         vm.saveComment = function () {
             let pageId = $scope.comment.pageId || $scope.pageId;
diff --git a/resources/lang/es/entities.php b/resources/lang/es/entities.php
index aadfa2324..2ca55a786 100644
--- a/resources/lang/es/entities.php
+++ b/resources/lang/es/entities.php
@@ -233,7 +233,7 @@ return [
     'comment_created' => 'Comentario añadido',
     'comment_updated' => 'Comentario actualizado',
     'comment_deleted' => 'Comentario eliminado',
-    'comment_updated_text' => 'Actualizado hace :updateDiff minutos por',
+    'comment_updated_text' => 'Actualizado hace :updateDiff por',
     'comment_delete_confirm' => 'Esto eliminará el contenido del comentario. ¿Estás seguro de que quieres eliminar este comentario?',
     'comment_create' => 'Creado'
 ];
diff --git a/resources/views/comments/comment-reply.blade.php b/resources/views/comments/comment-reply.blade.php
index 9c698bf0d..02535341c 100644
--- a/resources/views/comments/comment-reply.blade.php
+++ b/resources/views/comments/comment-reply.blade.php
@@ -3,7 +3,7 @@
         <textarea name="markdown" rows="3" ng-model="comment.text" placeholder="{{ trans('entities.comment_placeholder') }}"></textarea>
         <input type="hidden" ng-model="comment.pageId" name="comment.pageId" value="{{$pageId}}" ng-init="comment.pageId = {{$pageId }}">
         <button type="button" ng-if="::(isReply || isEdit)" class="button muted" ng-click="closeBox()">{{ trans('entities.comment_cancel') }}</button>
-        <button type="submit" class="button pos" ng-click="vm.saveComment(isReply)">{{ trans('entities.comment_save') }}</button>
+        <button type="submit" class="button pos" ng-click="vm.saveComment()">{{ trans('entities.comment_save') }}</button>
     </form>
 </div>
 

From 9dbd7fa618dcac1a6301be36bae78b8bf9113b6b Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Sun, 11 Jun 2017 11:40:37 +0530
Subject: [PATCH 27/83] #47 - Adding comments to the dummy content seeder.

---
 database/factories/ModelFactory.php   | 10 ++++++++++
 database/seeds/DummyContentSeeder.php |  5 ++++-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/database/factories/ModelFactory.php b/database/factories/ModelFactory.php
index ebf78d1fa..b5bb32c11 100644
--- a/database/factories/ModelFactory.php
+++ b/database/factories/ModelFactory.php
@@ -70,4 +70,14 @@ $factory->define(BookStack\Image::class, function ($faker) {
         'type' => 'gallery',
         'uploaded_to' => 0
     ];
+});
+
+$factory->define(BookStack\Comment::class, function($faker) {
+    $text = $faker->paragraph(3);
+    $html = '<p>' . $text. '</p>';
+    return [
+        'html' => $html,
+        'text' => '#' . $text,
+        'active' => 1
+    ];
 });
\ No newline at end of file
diff --git a/database/seeds/DummyContentSeeder.php b/database/seeds/DummyContentSeeder.php
index 3d92efab1..996cd178d 100644
--- a/database/seeds/DummyContentSeeder.php
+++ b/database/seeds/DummyContentSeeder.php
@@ -20,7 +20,10 @@ class DummyContentSeeder extends Seeder
             ->each(function($book) use ($user) {
                 $chapters = factory(\BookStack\Chapter::class, 5)->create(['created_by' => $user->id, 'updated_by' => $user->id])
                     ->each(function($chapter) use ($user, $book){
-                       $pages = factory(\BookStack\Page::class, 5)->make(['created_by' => $user->id, 'updated_by' => $user->id, 'book_id' => $book->id]);
+                       $pages = factory(\BookStack\Page::class, 5)->create(['created_by' => $user->id, 'updated_by' => $user->id, 'book_id' => $book->id])->each(function($page) use ($user) {
+                           $comments = factory(\BookStack\Comment::class, 3)->make(['created_by' => $user->id, 'updated_by' => $user->id, 'page_id' => $page->id]);
+                           $page->comments()->saveMany($comments);
+                       });
                         $chapter->pages()->saveMany($pages);
                     });
                 $pages = factory(\BookStack\Page::class, 3)->make(['created_by' => $user->id, 'updated_by' => $user->id]);

From fd50efb503bf626934aa868b4d02b589e498842b Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Sun, 11 Jun 2017 11:41:33 +0530
Subject: [PATCH 28/83] #47 - Putting the comments right under the page.

---
 app/Page.php                         |  4 ++++
 resources/views/pages/show.blade.php | 14 ++++----------
 2 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/app/Page.php b/app/Page.php
index c9823e7e4..d722e4e54 100644
--- a/app/Page.php
+++ b/app/Page.php
@@ -66,6 +66,10 @@ class Page extends Entity
         return $this->hasMany(Attachment::class, 'uploaded_to')->orderBy('order', 'asc');
     }
 
+    public function comments() {
+        return $this->hasMany(Comment::class, 'page_id')->orderBy('created_on', 'asc');
+    }
+
     /**
      * Get the url for this page.
      * @param string|bool $path
diff --git a/resources/views/pages/show.blade.php b/resources/views/pages/show.blade.php
index 480a7603e..c63444344 100644
--- a/resources/views/pages/show.blade.php
+++ b/resources/views/pages/show.blade.php
@@ -46,13 +46,13 @@
     </div>
 
 
-    <div class="container" id="page-show" ng-non-bindable>
+    <div class="container" id="page-show">
         <div class="row">
             <div class="col-md-9 print-full-width">
-                <div class="page-content">
+                <div class="page-content" ng-non-bindable>
 
                     <div class="pointer-container" id="pointer">
-                        <div class="pointer anim">
+                        <div class="pointer anim" >
                             <span class="icon text-primary"><i class="zmdi zmdi-link"></i></span>
                             <input readonly="readonly" type="text" id="pointer-url" placeholder="url">
                             <button class="button icon" data-clipboard-target="#pointer-url" type="button" title="{{ trans('entities.pages_copy_link') }}"><i class="zmdi zmdi-copy"></i></button>
@@ -66,6 +66,7 @@
                     @include('partials.entity-meta', ['entity' => $page])
 
                 </div>
+                @include('comments/comments', ['pageId' => $page->id])
             </div>
 
             <div class="col-md-3 print-hidden">
@@ -109,13 +110,6 @@
 
         </div>
     </div>
-    <div class="container">
-        <div class="row">
-            <div class="col-md-9">
-                @include('comments/comments', ['pageId' => $page->id])
-            </div>
-        </div>
-    </div>	
 @stop
 
 @section('scripts')

From 7d02f77e6764175d2375a2b55e366b9beaba31a3 Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Tue, 13 Jun 2017 02:31:17 +0530
Subject: [PATCH 29/83] #47 - Added more test cases to test the APIs and
 permission for comments.

---
 database/factories/ModelFactory.php           |   2 +-
 ...017_01_01_130541_create_comments_table.php |  47 +++++++-
 tests/Entity/CommentTest.php                  | 111 ++++++++++++++++++
 tests/Permissions/RolesTest.php               | 106 +++++++++++++++++
 4 files changed, 264 insertions(+), 2 deletions(-)
 create mode 100644 tests/Entity/CommentTest.php

diff --git a/database/factories/ModelFactory.php b/database/factories/ModelFactory.php
index b5bb32c11..b03e34b9b 100644
--- a/database/factories/ModelFactory.php
+++ b/database/factories/ModelFactory.php
@@ -77,7 +77,7 @@ $factory->define(BookStack\Comment::class, function($faker) {
     $html = '<p>' . $text. '</p>';
     return [
         'html' => $html,
-        'text' => '#' . $text,
+        'text' => $text,
         'active' => 1
     ];
 });
\ No newline at end of file
diff --git a/database/migrations/2017_01_01_130541_create_comments_table.php b/database/migrations/2017_01_01_130541_create_comments_table.php
index 8aa99eea4..f4ece31a7 100644
--- a/database/migrations/2017_01_01_130541_create_comments_table.php
+++ b/database/migrations/2017_01_01_130541_create_comments_table.php
@@ -17,7 +17,7 @@ class CreateCommentsTable extends Migration
             return;
         }
         Schema::create('comments', function (Blueprint $table) {
-            $table->increments('id')->unsigned();                       
+            $table->increments('id')->unsigned();
             $table->integer('page_id')->unsigned();
             $table->longText('text')->nullable();
             $table->longText('html')->nullable();
@@ -45,6 +45,51 @@ class CreateCommentsTable extends Migration
                     'permission_id' => $permissionId
                 ]);
             }
+
+            // Get roles with permissions we need to change
+            /*
+            $editorRole = DB::table('roles')->where('name', '=', 'editor')->first();
+            if (!empty($editorRole)) {
+                $editorRoleId = $editorRole->id;
+                // Create & attach new entity permissions
+                $ops = ['Create All', 'Create Own', 'Update Own', 'Delete Own'];
+                $entity = 'Comment';
+                foreach ($ops as $op) {
+                    $permissionId = DB::table('role_permissions')->insertGetId([
+                        'name' => strtolower($entity) . '-' . strtolower(str_replace(' ', '-', $op)),
+                        'display_name' => $op . ' ' . $entity . 's',
+                        'created_at' => \Carbon\Carbon::now()->toDateTimeString(),
+                        'updated_at' => \Carbon\Carbon::now()->toDateTimeString()
+                    ]);
+                    DB::table('permission_role')->insert([
+                        'role_id' => $editorRoleId,
+                        'permission_id' => $permissionId
+                    ]);
+                }
+            }
+
+            // Get roles with permissions we need to change
+            $viewerRole = DB::table('roles')->where('name', '=', 'viewer')->first();
+            if (!empty($viewerRole)) {
+                $viewerRoleId = $viewerRole->id;
+                // Create & attach new entity permissions
+                $ops = ['Create All'];
+                $entity = 'Comment';
+                foreach ($ops as $op) {
+                    $permissionId = DB::table('role_permissions')->insertGetId([
+                        'name' => strtolower($entity) . '-' . strtolower(str_replace(' ', '-', $op)),
+                        'display_name' => $op . ' ' . $entity . 's',
+                        'created_at' => \Carbon\Carbon::now()->toDateTimeString(),
+                        'updated_at' => \Carbon\Carbon::now()->toDateTimeString()
+                    ]);
+                    DB::table('permission_role')->insert([
+                        'role_id' => $viewerRoleId,
+                        'permission_id' => $permissionId
+                    ]);
+                }
+            }
+            */
+
         });
     }
 
diff --git a/tests/Entity/CommentTest.php b/tests/Entity/CommentTest.php
new file mode 100644
index 000000000..86eb31213
--- /dev/null
+++ b/tests/Entity/CommentTest.php
@@ -0,0 +1,111 @@
+<?php namespace Tests;
+
+use BookStack\Page;
+use BookStack\Comment;
+
+class CommentTest extends BrowserKitTest
+{
+
+    public function test_add_comment()
+    {
+        $this->asAdmin();
+        $page = $this->getPage();
+
+        $this->addComment($page);
+    }
+
+    public function test_comment_reply()
+    {
+        $this->asAdmin();
+        $page = $this->getPage();
+
+        // add a normal comment
+        $createdComment = $this->addComment($page);
+
+        // reply to the added comment
+        $this->addComment($page, $createdComment['id']);
+    }
+
+    public function test_comment_edit()
+    {
+        $this->asAdmin();
+        $page = $this->getPage();
+
+        $createdComment = $this->addComment($page);
+        $comment = [
+            'id' => $createdComment['id'],
+            'page_id' => $createdComment['page_id']
+        ];
+        $this->updateComment($comment);
+    }
+
+    public function test_comment_delete()
+    {
+        $this->asAdmin();
+        $page = $this->getPage();
+
+        $createdComment = $this->addComment($page);
+
+        $this->deleteComment($createdComment['id']);
+    }
+
+    private function getPage() {
+        $page = Page::first();
+        return $page;
+    }
+
+
+    private function addComment($page, $parentCommentId = null) {
+        $comment = factory(Comment::class)->make();
+        $url = "/ajax/page/$page->id/comment/";
+        $request = [
+            'text' => $comment->text,
+            'html' => $comment->html
+        ];
+        if (!empty($parentCommentId)) {
+            $request['parent_id'] = $parentCommentId;
+        }
+        $this->call('POST', $url, $request);
+
+        $createdComment = $this->checkResponse();
+        return $createdComment;
+    }
+
+    private function updateComment($comment) {
+        $tmpComment = factory(Comment::class)->make();
+        $url = '/ajax/page/' . $comment['page_id'] . '/comment/ ' . $comment['id'];
+         $request = [
+            'text' => $tmpComment->text,
+            'html' => $tmpComment->html
+        ];
+
+        $this->call('PUT', $url, $request);
+
+        $updatedComment = $this->checkResponse();
+        return $updatedComment;
+    }
+
+    private function deleteComment($commentId) {
+        //  Route::delete('/ajax/comment/{id}', 'CommentController@destroy');
+        $url = '/ajax/comment/' . $commentId;
+        $this->call('DELETE', $url);
+
+        $deletedComment = $this->checkResponse();
+        return $deletedComment;
+    }
+
+    private function checkResponse() {
+        $expectedResp = [
+            'status' => 'success'
+        ];
+
+        $this->assertResponseOk();
+        $this->seeJsonContains($expectedResp);
+
+        $resp = $this->decodeResponseJson();
+        $createdComment = $resp['comment'];
+        $this->assertArrayHasKey('id', $createdComment);
+
+        return $createdComment;
+    }
+}
diff --git a/tests/Permissions/RolesTest.php b/tests/Permissions/RolesTest.php
index 83d1b98a8..9d054fe0b 100644
--- a/tests/Permissions/RolesTest.php
+++ b/tests/Permissions/RolesTest.php
@@ -620,4 +620,110 @@ class RolesTest extends BrowserKitTest
             ->dontSeeInDatabase('images', ['id' => $image->id]);
     }
 
+    public function test_comment_create_permission () {
+        $ownPage = $this->createEntityChainBelongingToUser($this->user)['page'];
+
+        $this->actingAs($this->user)->addComment($ownPage);
+
+        $this->assertResponseStatus(403);
+
+        $this->giveUserPermissions($this->user, ['comment-create-all']);
+
+        $this->actingAs($this->user)->addComment($ownPage);
+        $this->assertResponseOk(200)->seeJsonContains(['status' => 'success']);
+    }
+
+
+    public function test_comment_update_own_permission () {
+        $ownPage = $this->createEntityChainBelongingToUser($this->user)['page'];
+        $this->giveUserPermissions($this->user, ['comment-create-all']);
+        $comment = $this->actingAs($this->user)->addComment($ownPage);
+
+        // no comment-update-own
+        $this->actingAs($this->user)->updateComment($ownPage, $comment['id']);
+        $this->assertResponseStatus(403);
+
+        $this->giveUserPermissions($this->user, ['comment-update-own']);
+
+        // now has comment-update-own
+        $this->actingAs($this->user)->updateComment($ownPage, $comment['id']);
+        $this->assertResponseOk()->seeJsonContains(['status' => 'success']);
+    }
+
+    public function test_comment_update_all_permission () {
+        $ownPage = $this->createEntityChainBelongingToUser($this->user)['page'];
+        $comment = $this->asAdmin()->addComment($ownPage);
+
+        // no comment-update-all
+        $this->actingAs($this->user)->updateComment($ownPage, $comment['id']);
+        $this->assertResponseStatus(403);
+
+        $this->giveUserPermissions($this->user, ['comment-update-all']);
+
+        // now has comment-update-all
+        $this->actingAs($this->user)->updateComment($ownPage, $comment['id']);
+        $this->assertResponseOk()->seeJsonContains(['status' => 'success']);
+    }
+
+    public function test_comment_delete_own_permission () {
+        $ownPage = $this->createEntityChainBelongingToUser($this->user)['page'];
+        $this->giveUserPermissions($this->user, ['comment-create-all']);
+        $comment = $this->actingAs($this->user)->addComment($ownPage);
+
+        // no comment-delete-own
+        $this->actingAs($this->user)->deleteComment($comment['id']);
+        $this->assertResponseStatus(403);
+
+        $this->giveUserPermissions($this->user, ['comment-delete-own']);
+
+        // now has comment-update-own
+        $this->actingAs($this->user)->deleteComment($comment['id']);
+        $this->assertResponseOk()->seeJsonContains(['status' => 'success']);
+    }
+
+    public function test_comment_delete_all_permission () {
+        $ownPage = $this->createEntityChainBelongingToUser($this->user)['page'];
+        $comment = $this->asAdmin()->addComment($ownPage);
+
+        // no comment-delete-all
+        $this->actingAs($this->user)->deleteComment($comment['id']);
+        $this->assertResponseStatus(403);
+
+        $this->giveUserPermissions($this->user, ['comment-delete-all']);
+
+        // now has comment-delete-all
+        $this->actingAs($this->user)->deleteComment($comment['id']);
+        $this->assertResponseOk()->seeJsonContains(['status' => 'success']);
+    }
+
+    private function addComment($page) {
+        $comment = factory(\BookStack\Comment::class)->make();
+        $url = "/ajax/page/$page->id/comment/";
+        $request = [
+            'text' => $comment->text,
+            'html' => $comment->html
+        ];
+
+        $this->json('POST', $url, $request);
+        $resp = $this->decodeResponseJson();
+        return $resp['comment'];
+
+    }
+
+    private function updateComment($page, $commentId) {
+        $comment = factory(\BookStack\Comment::class)->make();
+        $url = "/ajax/page/$page->id/comment/$commentId";
+        $request = [
+            'text' => $comment->text,
+            'html' => $comment->html
+        ];
+
+        return $this->json('PUT', $url, $request);
+    }
+
+    private function deleteComment($commentId) {
+         $url = '/ajax/comment/' . $commentId;
+         return $this->json('DELETE', $url);
+    }
+
 }

From 574ee820a9155fa3989a5a0a1dfe57cdb23b3655 Mon Sep 17 00:00:00 2001
From: Abijeet <abijeetpatro@gmail.com>
Date: Tue, 13 Jun 2017 02:37:50 +0530
Subject: [PATCH 30/83] #47 - Fixes the issues with the test case.

---
 tests/Permissions/RolesTest.php | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/tests/Permissions/RolesTest.php b/tests/Permissions/RolesTest.php
index 9d054fe0b..0e9f691e0 100644
--- a/tests/Permissions/RolesTest.php
+++ b/tests/Permissions/RolesTest.php
@@ -706,8 +706,10 @@ class RolesTest extends BrowserKitTest
 
         $this->json('POST', $url, $request);
         $resp = $this->decodeResponseJson();
-        return $resp['comment'];
-
+        if (isset($resp['comment'])) {
+            return $resp['comment'];
+        }
+        return null;
     }
 
     private function updateComment($page, $commentId) {

From 9e0c9315737ff978c91114e5c74bba114f138cc9 Mon Sep 17 00:00:00 2001
From: JachuPL <bonkowskijan@gmail.com>
Date: Thu, 13 Jul 2017 16:00:42 +0200
Subject: [PATCH 31/83] Polish translation

---
 config/app.php                   |   2 +-
 resources/lang/en/settings.php   |   1 +
 resources/lang/pl/activities.php |  40 ++++++
 resources/lang/pl/auth.php       |  76 ++++++++++
 resources/lang/pl/common.php     |  59 ++++++++
 resources/lang/pl/components.php |  32 +++++
 resources/lang/pl/entities.php   | 237 +++++++++++++++++++++++++++++++
 resources/lang/pl/errors.php     |  70 +++++++++
 resources/lang/pl/pagination.php |  19 +++
 resources/lang/pl/passwords.php  |  22 +++
 resources/lang/pl/settings.php   | 111 +++++++++++++++
 resources/lang/pl/validation.php | 108 ++++++++++++++
 12 files changed, 776 insertions(+), 1 deletion(-)
 create mode 100644 resources/lang/pl/activities.php
 create mode 100644 resources/lang/pl/auth.php
 create mode 100644 resources/lang/pl/common.php
 create mode 100644 resources/lang/pl/components.php
 create mode 100644 resources/lang/pl/entities.php
 create mode 100644 resources/lang/pl/errors.php
 create mode 100644 resources/lang/pl/pagination.php
 create mode 100644 resources/lang/pl/passwords.php
 create mode 100644 resources/lang/pl/settings.php
 create mode 100644 resources/lang/pl/validation.php

diff --git a/config/app.php b/config/app.php
index 48348f837..a390eaf83 100644
--- a/config/app.php
+++ b/config/app.php
@@ -58,7 +58,7 @@ return [
     */
 
     'locale' => env('APP_LANG', 'en'),
-    'locales' => ['en', 'de', 'es', 'fr', 'nl', 'pt_BR', 'sk', 'ja'],
+    'locales' => ['en', 'de', 'es', 'fr', 'nl', 'pt_BR', 'sk', 'ja', 'pl'],
 
     /*
     |--------------------------------------------------------------------------
diff --git a/resources/lang/en/settings.php b/resources/lang/en/settings.php
index 4529b1978..3eec7737f 100644
--- a/resources/lang/en/settings.php
+++ b/resources/lang/en/settings.php
@@ -122,6 +122,7 @@ return [
         'pt_BR' => 'Português do Brasil',
         'sk' => 'Slovensky',
         'ja' => '日本語',
+        'pl' => 'Polski',
     ]
     ///////////////////////////////////
 ];
diff --git a/resources/lang/pl/activities.php b/resources/lang/pl/activities.php
new file mode 100644
index 000000000..5ef5acab0
--- /dev/null
+++ b/resources/lang/pl/activities.php
@@ -0,0 +1,40 @@
+<?php
+
+return [
+
+    /**
+     * Activity text strings.
+     * Is used for all the text within activity logs & notifications.
+     */
+
+    // Pages
+    'page_create'                 => 'utworzono stronę',
+    'page_create_notification'    => 'Strona utworzona pomyślnie',
+    'page_update'                 => 'zaktualizowano stronę',
+    'page_update_notification'    => 'Strona zaktualizowana pomyślnie',
+    'page_delete'                 => 'usunięto stronę',
+    'page_delete_notification'    => 'Strona usunięta pomyślnie',
+    'page_restore'                => 'przywrócono stronę',
+    'page_restore_notification'   => 'Stronga przywrócona pomyślnie',
+    'page_move'                   => 'przeniesiono stronę',
+
+    // Chapters
+    'chapter_create'              => 'utworzono rozdział',
+    'chapter_create_notification' => 'Rozdział utworzony pomyślnie',
+    'chapter_update'              => 'zaktualizowano rozdział',
+    'chapter_update_notification' => 'Rozdział zaktualizowany pomyślnie',
+    'chapter_delete'              => 'usunięto rozdział',
+    'chapter_delete_notification' => 'Rozdział usunięty pomyślnie',
+    'chapter_move'                => 'przeniesiono rozdział',
+
+    // Books
+    'book_create'                 => 'utworzono księgę',
+    'book_create_notification'    => 'Księga utworzona pomyślnie',
+    'book_update'                 => 'zaktualizowano księgę',
+    'book_update_notification'    => 'Księga zaktualizowana pomyślnie',
+    'book_delete'                 => 'usunięto księgę',
+    'book_delete_notification'    => 'Księga usunięta pomyślnie',
+    'book_sort'                   => 'posortowano księgę',
+    'book_sort_notification'      => 'Księga posortowana pomyślnie',
+
+];
diff --git a/resources/lang/pl/auth.php b/resources/lang/pl/auth.php
new file mode 100644
index 000000000..740e067ca
--- /dev/null
+++ b/resources/lang/pl/auth.php
@@ -0,0 +1,76 @@
+<?php
+return [
+    /*
+    |--------------------------------------------------------------------------
+    | Authentication Language Lines
+    |--------------------------------------------------------------------------
+    |
+    | The following language lines are used during authentication for various
+    | messages that we need to display to the user. You are free to modify
+    | these language lines according to your application's requirements.
+    |
+    */
+    'failed' => 'These credentials do not match our records.',
+    'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
+
+    /**
+     * Login & Register
+     */
+    'sign_up' => 'Zarejestruj się',
+    'log_in' => 'Zaloguj się',
+    'log_in_with' => 'Zaloguj się za pomocą :socialDriver',
+    'sign_up_with' => 'Zarejestruj się za pomocą :socialDriver',
+    'logout' => 'Wyloguj',
+
+    'name' => 'Imię',
+    'username' => 'Nazwa użytkownika',
+    'email' => 'Email',
+    'password' => 'Hasło',
+    'password_confirm' => 'Potwierdzenie hasła',
+    'password_hint' => 'Musi mieć więcej niż 5 znaków',
+    'forgot_password' => 'Przypomnij hasło',
+    'remember_me' => 'Zapamiętaj mnie',
+    'ldap_email_hint' => 'Wprowadź adres email dla tego konta.',
+    'create_account' => 'Utwórz konto',
+    'social_login' => 'Logowanie za pomocą konta społecznościowego',
+    'social_registration' => 'Rejestracja za pomocą konta społecznościowego',
+    'social_registration_text' => 'Zarejestruj się za pomocą innej usługi.',
+
+    'register_thanks' => 'Dziękujemy za rejestrację!',
+    'register_confirm' => 'Sprawdź podany adres e-mail i kliknij w link, by uzyskać dostęp do :appName.',
+    'registrations_disabled' => 'Rejestracja jest obecnie zablokowana.',
+    'registration_email_domain_invalid' => 'Adresy e-mail z tej domeny nie mają dostępu do tej aplikacji',
+    'register_success' => 'Dziękujemy za rejestrację! Zalogowano Cię automatycznie.',
+
+
+    /**
+     * Password Reset
+     */
+    'reset_password' => 'Resetowanie hasła',
+    'reset_password_send_instructions' => 'Wprowadź adres e-mail powiązany z Twoim kontem, by otrzymać link do resetowania hasła.',
+    'reset_password_send_button' => 'Wyślij link do resetowania hasła',
+    'reset_password_sent_success' => 'Wysłano link do resetowania hasła na adres :email.',
+    'reset_password_success' => 'Hasło zostało zresetowane pomyślnie.',
+
+    'email_reset_subject' => 'Resetowanie hasła do :appName',
+    'email_reset_text' => 'Otrzymujesz tę wiadomość ponieważ ktoś zażądał zresetowania hasła do Twojego konta.',
+    'email_reset_not_requested' => 'Jeśli to nie Ty złożyłeś żądanie zresetowania hasła, zignoruj tę wiadomość.',
+
+
+    /**
+     * Email Confirmation
+     */
+    'email_confirm_subject' => 'Potwierdź swój adres email w :appName',
+    'email_confirm_greeting' => 'Dziękujemy za dołączenie do :appName!',
+    'email_confirm_text' => 'Prosimy byś potwierdził swoje hasło klikając przycisk poniżej:',
+    'email_confirm_action' => 'Potwierdź email',
+    'email_confirm_send_error' => 'Wymagane jest potwierdzenie hasła, lecz wiadomość nie mogła zostać wysłana. Skontaktuj się z administratorem w celu upewnienia się, że skrzynka została skonfigurowana prawidłowo.',
+    'email_confirm_success' => 'Adres email został potwierdzony!',
+    'email_confirm_resent' => 'Wiadomość potwierdzająca została wysłana, sprawdź swoją skrzynkę.',
+
+    'email_not_confirmed' => 'Adres email niepotwierdzony',
+    'email_not_confirmed_text' => 'Twój adres email nie został jeszcze potwierdzony.',
+    'email_not_confirmed_click_link' => 'Aby potwierdzić swoje konto kliknij w link wysłany w wiadomości po rejestracji.',
+    'email_not_confirmed_resend' => 'Jeśli wiadomość do Ciebie nie dotarła możesz wysłać ją ponownie wypełniając formularz poniżej.',
+    'email_not_confirmed_resend_button' => 'Wyślij ponownie wiadomość z potwierdzeniem',
+];
\ No newline at end of file
diff --git a/resources/lang/pl/common.php b/resources/lang/pl/common.php
new file mode 100644
index 000000000..1c8963653
--- /dev/null
+++ b/resources/lang/pl/common.php
@@ -0,0 +1,59 @@
+<?php
+return [
+
+    /**
+     * Buttons
+     */
+    'cancel' => 'Anuluj',
+    'confirm' => 'Zatwierdź',
+    'back' => 'Wstecz',
+    'save' => 'Zapisz',
+    'continue' => 'Kontynuuj',
+    'select' => 'Wybierz',
+
+    /**
+     * Form Labels
+     */
+    'name' => 'Nazwa',
+    'description' => 'Opis',
+    'role' => 'Rola',
+
+    /**
+     * Actions
+     */
+    'actions' => 'Akcje',
+    'view' => 'Widok',
+    'create' => 'Utwórz',
+    'update' => 'Zaktualizuj',
+    'edit' => 'Edytuj',
+    'sort' => 'Sortuj',
+    'move' => 'Przenieś',
+    'delete' => 'Usuń',
+    'search' => 'Szukaj',
+    'search_clear' => 'Wyczyść wyszukiwanie',
+    'reset' => 'Resetuj',
+    'remove' => 'Usuń',
+    'add' => 'Dodaj',
+
+
+    /**
+     * Misc
+     */
+    'deleted_user' => 'Użytkownik usunięty',
+    'no_activity' => 'Brak aktywności do pokazania',
+    'no_items' => 'Brak elementów do wyświetlenia',
+    'back_to_top' => 'Powrót na górę',
+    'toggle_details' => 'Włącz/wyłącz szczegóły',
+
+    /**
+     * Header
+     */
+    'view_profile' => 'Zobacz profil',
+    'edit_profile' => 'Edytuj profil',
+
+    /**
+     * Email Content
+     */
+    'email_action_help' => 'Jeśli masz problem z kliknięciem przycisku ":actionText", skopiuj i wklej poniższy adres URL w nowej karcie swojej przeglądarki:',
+    'email_rights' => 'Wszelkie prawa zastrzeżone',
+];
\ No newline at end of file
diff --git a/resources/lang/pl/components.php b/resources/lang/pl/components.php
new file mode 100644
index 000000000..c1dbcd44b
--- /dev/null
+++ b/resources/lang/pl/components.php
@@ -0,0 +1,32 @@
+<?php
+return [
+
+    /**
+     * Image Manager
+     */
+    'image_select' => 'Wybór obrazka',
+    'image_all' => 'Wszystkie',
+    'image_all_title' => 'Zobacz wszystkie obrazki',
+    'image_book_title' => 'Zobacz obrazki zapisane w tej księdze',
+    'image_page_title' => 'Zobacz obrazki zapisane na tej stronie',
+    'image_search_hint' => 'Szukaj po nazwie obrazka',
+    'image_uploaded' => 'Udostępniono :uploadedDate',
+    'image_load_more' => 'Wczytaj więcej',
+    'image_image_name' => 'Nazwa obrazka',
+    'image_delete_confirm' => 'Ten obrazek jest używany na stronach poniżej, kliknij ponownie Usuń by potwierdzić usunięcie obrazka.',
+    'image_select_image' => 'Wybierz obrazek',
+    'image_dropzone' => 'Upuść obrazki tutaj lub kliknij by wybrać obrazki do udostępnienia',
+    'images_deleted' => 'Usunięte obrazki',
+    'image_preview' => 'Podgląd obrazka',
+    'image_upload_success' => 'Obrazek wysłany pomyślnie',
+    'image_update_success' => 'Szczegóły obrazka zaktualizowane pomyślnie',
+    'image_delete_success' => 'Obrazek usunięty pomyślnie',
+
+    /**
+     * Code editor
+     */
+    'code_editor' => 'Edytuj kod',
+    'code_language' => 'Język kodu',
+    'code_content' => 'Zawartość kodu',
+    'code_save' => 'Zapisz kod',
+];
\ No newline at end of file
diff --git a/resources/lang/pl/entities.php b/resources/lang/pl/entities.php
new file mode 100644
index 000000000..30e853bce
--- /dev/null
+++ b/resources/lang/pl/entities.php
@@ -0,0 +1,237 @@
+<?php
+return [
+
+    /**
+     * Shared
+     */
+    'recently_created' => 'Ostatnio utworzone',
+    'recently_created_pages' => 'Ostatnio utworzone strony',
+    'recently_updated_pages' => 'Ostatnio zaktualizowane strony',
+    'recently_created_chapters' => 'Ostatnio utworzone rozdziały',
+    'recently_created_books' => 'Ostatnio utworzone księgi',
+    'recently_update' => 'Ostatnio zaktualizowane',
+    'recently_viewed' => 'Ostatnio wyświetlane',
+    'recent_activity' => 'Ostatnia aktywność',
+    'create_now' => 'Utwórz teraz',
+    'revisions' => 'Rewizje',
+    'meta_revision' => 'Rewizja #:revisionCount',
+    'meta_created' => 'Utworzono :timeLength',
+    'meta_created_name' => 'Utworzono :timeLength przez :user',
+    'meta_updated' => 'Zaktualizowano :timeLength',
+    'meta_updated_name' => 'Zaktualizowano :timeLength przez :user',
+    'x_pages' => ':count stron',
+    'entity_select' => 'Wybór encji',
+    'images' => 'Obrazki',
+    'my_recent_drafts' => 'Moje ostatnie szkice',
+    'my_recently_viewed' => 'Moje ostatnio wyświetlane',
+    'no_pages_viewed' => 'Nie wyświetlano żadnych stron',
+    'no_pages_recently_created' => 'Nie utworzono ostatnio żadnych stron',
+    'no_pages_recently_updated' => 'Nie zaktualizowano ostatnio żadnych stron',
+    'export' => 'Eksportuj',
+    'export_html' => 'Plik HTML',
+    'export_pdf' => 'Plik PDF',
+    'export_text' => 'Plik tekstowy',
+
+    /**
+     * Permissions and restrictions
+     */
+    'permissions' => 'Uprawnienia',
+    'permissions_intro' => 'Jeśli odblokowane, te uprawnienia będą miały priorytet względem pozostałych ustawionych uprawnień ról.',
+    'permissions_enable' => 'Odblokuj własne uprawnienia',
+    'permissions_save' => 'Zapisz uprawnienia',
+
+    /**
+     * Search
+     */
+    'search_results' => 'Wyniki wyszukiwania',
+    'search_total_results_found' => ':count znalezionych wyników|:count ogółem znalezionych wyników',
+    'search_clear' => 'Wyczyść wyszukiwanie',
+    'search_no_pages' => 'Brak stron spełniających zadane kryterium',
+    'search_for_term' => 'Szukaj :term',
+    'search_more' => 'Więcej wyników',
+    'search_filters' => 'Filtry wyszukiwania',
+    'search_content_type' => 'Rodziaj treści',
+    'search_exact_matches' => 'Dokładne frazy',
+    'search_tags' => 'Tagi wyszukiwania',
+    'search_viewed_by_me' => 'Wyświetlone przeze mnie',
+    'search_not_viewed_by_me' => 'Niewyświetlone przeze mnie',
+    'search_permissions_set' => 'Zbiór uprawnień',
+    'search_created_by_me' => 'Utworzone przeze mnie',
+    'search_updated_by_me' => 'Zaktualizowane przeze mnie',
+    'search_updated_before' => 'Zaktualizowane przed',
+    'search_updated_after' => 'Zaktualizowane po',
+    'search_created_before' => 'Utworzone przed',
+    'search_created_after' => 'Utworzone po',
+    'search_set_date' => 'Ustaw datę',
+    'search_update' => 'Zaktualizuj wyszukiwanie',
+
+    /**
+     * Books
+     */
+    'book' => 'Księga',
+    'books' => 'Księgi',
+    'books_empty' => 'Brak utworzonych ksiąg',
+    'books_popular' => 'Popularne księgi',
+    'books_recent' => 'Ostatnie księgi',
+    'books_popular_empty' => 'Najbardziej popularne księgi zostaną wyświetlone w tym miejscu.',
+    'books_create' => 'Utwórz księgę',
+    'books_delete' => 'Usuń księgę',
+    'books_delete_named' => 'Usuń księgę :bookName',
+    'books_delete_explain' => 'To spowoduje usunięcie księgi \':bookName\', Wszystkie strony i rozdziały zostaną usunięte.',
+    'books_delete_confirmation' => 'Czy na pewno chcesz usunąc tę księgę?',
+    'books_edit' => 'Edytuj księgę',
+    'books_edit_named' => 'Edytuj księgę :bookName',
+    'books_form_book_name' => 'Nazwa księgi',
+    'books_save' => 'Zapisz księgę',
+    'books_permissions' => 'Uprawnienia księgi',
+    'books_permissions_updated' => 'Zaktualizowano uprawnienia księgi',
+    'books_empty_contents' => 'Brak stron lub rozdziałów w tej księdze.',
+    'books_empty_create_page' => 'Utwórz nową stronę',
+    'books_empty_or' => 'lub',
+    'books_empty_sort_current_book' => 'posortuj bieżącą księgę',
+    'books_empty_add_chapter' => 'Dodaj rozdział',
+    'books_permissions_active' => 'Uprawnienia księgi aktywne',
+    'books_search_this' => 'Wyszukaj w tej księdze',
+    'books_navigation' => 'Nawigacja po księdze',
+    'books_sort' => 'Sortuj zawartość Księgi',
+    'books_sort_named' => 'Sortuj księgę :bookName',
+    'books_sort_show_other' => 'Pokaż inne księgi',
+    'books_sort_save' => 'Zapisz nowy porządek',
+
+    /**
+     * Chapters
+     */
+    'chapter' => 'Rozdział',
+    'chapters' => 'Rozdziały',
+    'chapters_popular' => 'Popularne rozdziały',
+    'chapters_new' => 'Nowy rozdział',
+    'chapters_create' => 'Utwórz nowy rozdział',
+    'chapters_delete' => 'Usuń rozdział',
+    'chapters_delete_named' => 'Usuń rozdział :chapterName',
+    'chapters_delete_explain' => 'To spowoduje usunięcie rozdziału \':chapterName\', Wszystkie strony zostaną usunięte
+        i dodane bezpośrednio do księgi macierzystej.',
+    'chapters_delete_confirm' => 'Czy na pewno chcesz usunąć ten rozdział?',
+    'chapters_edit' => 'Edytuj rozdział',
+    'chapters_edit_named' => 'Edytuj rozdział :chapterName',
+    'chapters_save' => 'Zapisz rozdział',
+    'chapters_move' => 'Przenieś rozdział',
+    'chapters_move_named' => 'Przenieś rozdział :chapterName',
+    'chapter_move_success' => 'Rozdział przeniesiony do :bookName',
+    'chapters_permissions' => 'Uprawienia rozdziału',
+    'chapters_empty' => 'Brak stron w tym rozdziale.',
+    'chapters_permissions_active' => 'Uprawnienia rozdziału aktywne',
+    'chapters_permissions_success' => 'Zaktualizowano uprawnienia rozdziału',
+    'chapters_search_this' => 'Przeszukaj ten rozdział',
+
+    /**
+     * Pages
+     */
+    'page' => 'Strona',
+    'pages' => 'Strony',
+    'pages_popular' => 'Popularne strony',
+    'pages_new' => 'Nowa strona',
+    'pages_attachments' => 'Załączniki',
+    'pages_navigation' => 'Nawigacja po stronie',
+    'pages_delete' => 'Usuń stronę',
+    'pages_delete_named' => 'Usuń stronę :pageName',
+    'pages_delete_draft_named' => 'Usuń szkic strony :pageName',
+    'pages_delete_draft' => 'Usuń szkic strony',
+    'pages_delete_success' => 'Strona usunięta pomyślnie',
+    'pages_delete_draft_success' => 'Szkic strony usunięty pomyślnie',
+    'pages_delete_confirm' => 'Czy na pewno chcesz usunąć tę stron?',
+    'pages_delete_draft_confirm' => 'Czy na pewno chcesz usunąć szkic strony?',
+    'pages_editing_named' => 'Edytowanie strony :pageName',
+    'pages_edit_toggle_header' => 'Włącz/wyłącz nagłówek',
+    'pages_edit_save_draft' => 'Zapisz szkic',
+    'pages_edit_draft' => 'Edytuj szkic strony',
+    'pages_editing_draft' => 'Edytowanie szkicu strony',
+    'pages_editing_page' => 'Edytowanie strony',
+    'pages_edit_draft_save_at' => 'Szkic zapisany ',
+    'pages_edit_delete_draft' => 'Usuń szkic',
+    'pages_edit_discard_draft' => 'Porzuć szkic',
+    'pages_edit_set_changelog' => 'Ustaw log zmian',
+    'pages_edit_enter_changelog_desc' => 'Opisz zmiany, które zostały wprowadzone',
+    'pages_edit_enter_changelog' => 'Wyświetl log zmian',
+    'pages_save' => 'Zapisz stronę',
+    'pages_title' => 'Tytuł strony',
+    'pages_name' => 'Nazwa strony',
+    'pages_md_editor' => 'Edytor',
+    'pages_md_preview' => 'Podgląd',
+    'pages_md_insert_image' => 'Wstaw obrazek',
+    'pages_md_insert_link' => 'Wstaw łącze do encji',
+    'pages_not_in_chapter' => 'Strona nie została umieszczona w rozdziale',
+    'pages_move' => 'Przenieś stronę',
+    'pages_move_success' => 'Strona przeniesiona do ":parentName"',
+    'pages_permissions' => 'Uprawnienia strony',
+    'pages_permissions_success' => 'Zaktualizowano uprawnienia strony',
+    'pages_revisions' => 'Rewizje strony',
+    'pages_revisions_named' => 'Rewizje strony :pageName',
+    'pages_revision_named' => 'Rewizja stroony :pageName',
+    'pages_revisions_created_by' => 'Utworzona przez',
+    'pages_revisions_date' => 'Data rewizji',
+    'pages_revisions_number' => '#',
+    'pages_revisions_changelog' => 'Log zmian',
+    'pages_revisions_changes' => 'Zmiany',
+    'pages_revisions_current' => 'Obecna wersja',
+    'pages_revisions_preview' => 'Podgląd',
+    'pages_revisions_restore' => 'Przywróć',
+    'pages_revisions_none' => 'Ta strona nie posiada żadnych rewizji',
+    'pages_copy_link' => 'Kopiuj link',
+    'pages_permissions_active' => 'Uprawnienia strony aktywne',
+    'pages_initial_revision' => 'Wydanie pierwotne',
+    'pages_initial_name' => 'Nowa strona',
+    'pages_editing_draft_notification' => 'Edytujesz obecnie szkic, który był ostatnio zapisany :timeDiff.',
+    'pages_draft_edited_notification' => 'Od tego czasu ta strona była zmieniana. Zalecane jest odrzucenie tego szkicu.',
+    'pages_draft_edit_active' => [
+        'start_a' => ':count użytkowników rozpoczęło edytowanie tej strony',
+        'start_b' => ':userName edytuje stronę',
+        'time_a' => ' od czasu ostatniej edycji',
+        'time_b' => 'w ciągu ostatnich :minCount minut',
+        'message' => ':start :time. Pamiętaj by nie nadpisywać czyichś zmian!',
+    ],
+    'pages_draft_discarded' => 'Szkic odrzucony, edytor został uzupełniony najnowszą wersją strony',
+
+    /**
+     * Editor sidebar
+     */
+    'page_tags' => 'Tagi strony',
+    'tag' => 'Tag',
+    'tags' =>  '',
+    'tag_value' => 'Wartość tagu (opcjonalnie)',
+    'tags_explain' => "Dodaj tagi by skategoryzować zawartość. \n W celu dokładniejszej organizacji zawartości możesz dodać wartości do tagów.",
+    'tags_add' => 'Dodaj kolejny tag',
+    'attachments' => 'Załączniki',
+    'attachments_explain' => 'Udostępnij kilka plików lub załącz link. Będą one widoczne na marginesie strony.',
+    'attachments_explain_instant_save' => 'Zmiany są zapisywane natychmiastowo.',
+    'attachments_items' => 'Załączniki',
+    'attachments_upload' => 'Dodaj plik',
+    'attachments_link' => 'Dodaj link',
+    'attachments_set_link' => 'Ustaw link',
+    'attachments_delete_confirm' => 'Kliknij ponownie Usuń by potwierdzić usunięcie załącznika.',
+    'attachments_dropzone' => 'Upuść pliki lub kliknij tutaj by udostępnić pliki',
+    'attachments_no_files' => 'Nie udostępniono plików',
+    'attachments_explain_link' => 'Możesz załączyć link jeśli nie chcesz udostępniać pliku. Może być to link do innej strony lub link do pliku w chmurze.',
+    'attachments_link_name' => 'Nazwa linku',
+    'attachment_link' => 'Link do załącznika',
+    'attachments_link_url' => 'Link do pliku',
+    'attachments_link_url_hint' => 'Strona lub plik',
+    'attach' => 'Załącz',
+    'attachments_edit_file' => 'Edytuj plik',
+    'attachments_edit_file_name' => 'Nazwa pliku',
+    'attachments_edit_drop_upload' => 'Upuść pliki lub kliknij tutaj by udostępnić pliki i nadpisać istniejące',
+    'attachments_order_updated' => 'Kolejność załączników zaktualizowana',
+    'attachments_updated_success' => 'Szczegóły załączników zaktualizowane',
+    'attachments_deleted' => 'Załączniki usunięte',
+    'attachments_file_uploaded' => 'Plik załączony pomyślnie',
+    'attachments_file_updated' => 'Plik zaktualizowany pomyślnie',
+    'attachments_link_attached' => 'Link pomyślnie dodany do strony',
+
+    /**
+     * Profile View
+     */
+    'profile_user_for_x' => 'Użytkownik od :time',
+    'profile_created_content' => 'Utworzona zawartość',
+    'profile_not_created_pages' => ':userName nie utworzył żadnych stron',
+    'profile_not_created_chapters' => ':userName nie utworzył żadnych rozdziałów',
+    'profile_not_created_books' => ':userName nie utworzył żadnych ksiąg',
+];
\ No newline at end of file
diff --git a/resources/lang/pl/errors.php b/resources/lang/pl/errors.php
new file mode 100644
index 000000000..633bf7a2d
--- /dev/null
+++ b/resources/lang/pl/errors.php
@@ -0,0 +1,70 @@
+<?php
+
+return [
+
+    /**
+     * Error text strings.
+     */
+
+    // Permissions
+    'permission' => 'Nie masz uprawnień do wyświetlenia tej strony.',
+    'permissionJson' => 'Nie masz uprawnień do wykonania tej akcji.',
+
+    // Auth
+    'error_user_exists_different_creds' => 'Użytkownik o adresie :email już istnieje.',
+    'email_already_confirmed' => 'Email został potwierdzony, spróbuj się zalogować.',
+    'email_confirmation_invalid' => 'Ten token jest nieprawidłowy lub został już wykorzystany. Spróbuj zarejestrować się ponownie.',
+    'email_confirmation_expired' => 'Ten token potwierdzający wygasł. Wysłaliśmy Ci kolejny.',
+    'ldap_fail_anonymous' => 'Dostęp LDAP przy użyciu anonimowego powiązania nie powiódł się',
+    'ldap_fail_authed' => 'Dostęp LDAP przy użyciu tego dn i hasła nie powiódł się',
+    'ldap_extension_not_installed' => 'Rozszerzenie LDAP PHP nie zostało zainstalowane',
+    'ldap_cannot_connect' => 'Nie można połączyć z serwerem LDAP, połączenie nie zostało ustanowione',
+    'social_no_action_defined' => 'Brak zdefiniowanej akcji',
+    'social_account_in_use' => 'To konto :socialAccount jest już w użyciu, spróbuj zalogować się za pomocą opcji :socialAccount.',
+    'social_account_email_in_use' => 'Email :email jest już w użyciu. Jeśli masz już konto, połącz konto :socialAccount z poziomu ustawień profilu.',
+    'social_account_existing' => 'Konto :socialAccount jest już połączone z Twoim profilem',
+    'social_account_already_used_existing' => 'Konto :socialAccount jest już używane przez innego użytkownika.',
+    'social_account_not_used' => 'To konto :socialAccount nie jest połączone z żadnym użytkownikiem. Połącz je ze swoim kontem w ustawieniach profilu. ',
+    'social_account_register_instructions' => 'Jeśli nie masz jeszcze konta, możesz zarejestrować je używając opcji :socialAccount.',
+    'social_driver_not_found' => 'Funkcja społecznościowa nie została odnaleziona',
+    'social_driver_not_configured' => 'Ustawienia konta :socialAccount nie są poprawne.',
+
+    // System
+    'path_not_writable' => 'Zapis do ścieżki :filePath jest niemożliwy. Upewnij się że aplikacja ma prawa do zapisu w niej.',
+    'cannot_get_image_from_url' => 'Nie można pobrać obrazka z :url',
+    'cannot_create_thumbs' => 'Serwer nie może utworzyć miniaturek. Upewnij się że rozszerzenie GD PHP zostało zainstalowane.',
+    'server_upload_limit' => 'Serwer nie pozwala na przyjęcie pliku o tym rozmiarze. Spróbuj udostępnić coś o mniejszym rozmiarze.',
+    'image_upload_error' => 'Wystąpił błąd podczas udostępniania obrazka',
+
+    // Attachments
+    'attachment_page_mismatch' => 'Niezgodność stron podczas aktualizacji załącznika',
+
+    // Pages
+    'page_draft_autosave_fail' => 'Zapis szkicu nie powiódł się. Upewnij się że posiadasz połączenie z internetem.',
+
+    // Entities
+    'entity_not_found' => 'Encja nie została odnaleziona',
+    'book_not_found' => 'Księga nie została odnaleziona',
+    'page_not_found' => 'Strona nie została odnaleziona',
+    'chapter_not_found' => 'Rozdział nie został odnaleziony',
+    'selected_book_not_found' => 'Wybrana księga nie została odnaleziona',
+    'selected_book_chapter_not_found' => 'Wybrana księga lub rozdział nie zostały odnalezione',
+    'guests_cannot_save_drafts' => 'Goście nie mogą zapisywać szkiców',
+
+    // Users
+    'users_cannot_delete_only_admin' => 'Nie możesz usunąć jedynego administratora',
+    'users_cannot_delete_guest' => 'Nie możesz usunąć użytkownika-gościa',
+
+    // Roles
+    'role_cannot_be_edited' => 'Ta rola nie może być edytowana',
+    'role_system_cannot_be_deleted' => 'Ta rola jest rolą systemową i nie może zostać usunięta',
+    'role_registration_default_cannot_delete' => 'Ta rola nie może zostać usunięta jeśli jest ustawiona jako domyślna rola użytkownika',
+
+    // Error pages
+    '404_page_not_found' => 'Strona nie została odnaleziona',
+    'sorry_page_not_found' => 'Przepraszamy, ale strona której szukasz nie została odnaleziona.',
+    'return_home' => 'Powrót do strony głównej',
+    'error_occurred' => 'Wystąpił błąd',
+    'app_down' => ':appName jest aktualnie wyłączona',
+    'back_soon' => 'Niedługo zostanie uruchomiona ponownie.',
+];
\ No newline at end of file
diff --git a/resources/lang/pl/pagination.php b/resources/lang/pl/pagination.php
new file mode 100644
index 000000000..564694190
--- /dev/null
+++ b/resources/lang/pl/pagination.php
@@ -0,0 +1,19 @@
+<?php
+
+return [
+
+    /*
+    |--------------------------------------------------------------------------
+    | Pagination Language Lines
+    |--------------------------------------------------------------------------
+    |
+    | The following language lines are used by the paginator library to build
+    | the simple pagination links. You are free to change them to anything
+    | you want to customize your views to better match your application.
+    |
+    */
+
+    'previous' => '&laquo; Poprzednia',
+    'next'     => 'Następna &raquo;',
+
+];
diff --git a/resources/lang/pl/passwords.php b/resources/lang/pl/passwords.php
new file mode 100644
index 000000000..a9e669f4d
--- /dev/null
+++ b/resources/lang/pl/passwords.php
@@ -0,0 +1,22 @@
+<?php
+
+return [
+
+    /*
+    |--------------------------------------------------------------------------
+    | Password Reminder Language Lines
+    |--------------------------------------------------------------------------
+    |
+    | The following language lines are the default lines which match reasons
+    | that are given by the password broker for a password update attempt
+    | has failed, such as for an invalid token or invalid new password.
+    |
+    */
+
+    'password' => 'Hasło musi zawierać co najmniej 6 znaków i być zgodne z powtórzeniem.',
+    'user' => "Nie znaleziono użytkownika o takim adresie email.",
+    'token' => 'Ten token resetowania hasła jest nieprawidłowy.',
+    'sent' => 'Wysłaliśmy Ci link do resetowania hasła!',
+    'reset' => 'Twoje hasło zostało zresetowane!',
+
+];
diff --git a/resources/lang/pl/settings.php b/resources/lang/pl/settings.php
new file mode 100644
index 000000000..381e5517a
--- /dev/null
+++ b/resources/lang/pl/settings.php
@@ -0,0 +1,111 @@
+<?php
+
+return [
+
+    /**
+     * Settings text strings
+     * Contains all text strings used in the general settings sections of BookStack
+     * including users and roles.
+     */
+
+    'settings' => 'Ustawienia',
+    'settings_save' => 'Zapisz ustawienia',
+    'settings_save_success' => 'Ustawienia zapisane',
+
+    /**
+     * App settings
+     */
+
+    'app_settings' => 'Ustawienia aplikacji',
+    'app_name' => 'Nazwa aplikacji',
+    'app_name_desc' => 'Ta nazwa jest wyświetlana w nagłówku i emailach.',
+    'app_name_header' => 'Pokazać nazwę aplikacji w nagłówku?',
+    'app_public_viewing' => 'Zezwolić na publiczne przeglądanie?',
+    'app_secure_images' => 'Odblokować wyższe bezpieczeństwo obrazków?',
+    'app_secure_images_desc' => 'Ze względów wydajnościowych wszystkie obrazki są publiczne. Ta opcja dodaje dodatkowy, trudny do zgadnienia losowy ciąg na początku nazwy obrazka. Upewnij się że indeksowanie ścieżek jest zablokowane, by uniknąć problemów z dostępem do obrazka.',
+    'app_editor' => 'Edytor strony',
+    'app_editor_desc' => 'Wybierz edytor używany przez użytkowników do edycji zawartości.',
+    'app_custom_html' => 'Własna zawartość tagu <head>',
+    'app_custom_html_desc' => 'Zawartość dodana tutaj zostanie dołączona do sekcji <head> każdej strony. Przydatne przy nadpisywaniu styli lub dodawaniu analityki.',
+    'app_logo' => 'Logo aplikacji',
+    'app_logo_desc' => 'Ten obrazek powinien mieć nie więcej niż 43px w pionie. <br>Większe obrazki będą skalowane w dół.',
+    'app_primary_color' => 'Podstawowy kolor aplikacji',
+    'app_primary_color_desc' => 'To powinna być wartość HEX. <br>Zostaw to pole puste, by powrócić do podstawowego koloru.',
+
+    /**
+     * Registration settings
+     */
+
+    'reg_settings' => 'Ustawienia rejestracji',
+    'reg_allow' => 'Zezwolić na rejestrację?',
+    'reg_default_role' => 'Domyślna rola użytkownika po rejestracji',
+    'reg_confirm_email' => 'Wymagać potwierdzenia adresu email?',
+    'reg_confirm_email_desc' => 'Jeśli restrykcje domenowe zostały uzupełnione potwierdzenie adresu stanie się konieczne, a poniższa wartośc zostanie zignorowana.',
+    'reg_confirm_restrict_domain' => 'Restrykcje domenowe dot. adresu email',
+    'reg_confirm_restrict_domain_desc' => 'Wprowadź listę domen adresów email rozdzieloną przecinkami, którym chciałbyś zezwolić na rejestrację. Wymusi to konieczność potwierdzenia adresu email przez użytkownika przed uzyskaniem dostępu do aplikacji. <br> Pamiętaj, że użytkownicy będą mogli zmienić adres email po rejestracji.',
+    'reg_confirm_restrict_domain_placeholder' => 'Brak restrykcji',
+
+    /**
+     * Role settings
+     */
+
+    'roles' => 'Role',
+    'role_user_roles' => 'Role użytkownika',
+    'role_create' => 'Utwórz nową rolę',
+    'role_create_success' => 'Rola utworzona pomyślnie',
+    'role_delete' => 'Usuń rolę',
+    'role_delete_confirm' => 'To spowoduje usunięcie roli \':roleName\'.',
+    'role_delete_users_assigned' => 'Tę rolę ma przypisanych :userCount użytkowników. Jeśli chcesz zmigrować użytkowników z tej roli, wybierz nową poniżej.',
+    'role_delete_no_migration' => "Nie migruj użytkowników",
+    'role_delete_sure' => 'Czy na pewno chcesz usunąć tę rolę?',
+    'role_delete_success' => 'Rola usunięta pomyślnie',
+    'role_edit' => 'Edytuj rolę',
+    'role_details' => 'Szczegóły roli',
+    'role_name' => 'Nazwa roli',
+    'role_desc' => 'Krótki opis roli',
+    'role_system' => 'Uprawnienia systemowe',
+    'role_manage_users' => 'Zarządzanie użytkownikami',
+    'role_manage_roles' => 'Zarządzanie rolami i uprawnieniami ról',
+    'role_manage_entity_permissions' => 'Zarządzanie uprawnieniami ksiąg, rozdziałów i stron',
+    'role_manage_own_entity_permissions' => 'Zarządzanie uprawnieniami własnych ksiąg, rozdziałów i stron',
+    'role_manage_settings' => 'Zarządzanie ustawieniami aplikacji',
+    'role_asset' => 'Zarządzanie zasobami',
+    'role_asset_desc' => 'Te ustawienia kontrolują zarządzanie zasobami systemu. Uprawnienia ksiąg, rozdziałów i stron nadpisują te ustawienia.',
+    'role_all' => 'Wszyscy',
+    'role_own' => 'Własne',
+    'role_controlled_by_asset' => 'Kontrolowane przez zasób, do którego zostały udostępnione',
+    'role_save' => 'Zapisz rolę',
+    'role_update_success' => 'Rola zapisana pomyślnie',
+    'role_users' => 'Użytkownicy w tej roli',
+    'role_users_none' => 'Brak użytkowników zapisanych do tej roli',
+
+    /**
+     * Users
+     */
+
+    'users' => 'Użytkownicy',
+    'user_profile' => 'Profil użytkownika',
+    'users_add_new' => 'Dodaj użytkownika',
+    'users_search' => 'Wyszukaj użytkownika',
+    'users_role' => 'Role użytkownika',
+    'users_external_auth_id' => 'Zewnętrzne ID autentykacji',
+    'users_password_warning' => 'Wypełnij poniżej tylko jeśli chcesz zmienić swoje hasło:',
+    'users_system_public' => 'Ten użytkownik reprezentuje każdego gościa odwiedzającego tę aplikację. Nie można się na niego zalogować, lecz jest przyznawany automatycznie.',
+    'users_delete' => 'Usuń użytkownika',
+    'users_delete_named' => 'Usuń :userName',
+    'users_delete_warning' => 'To usunie użytkownika \':userName\' z systemu.',
+    'users_delete_confirm' => 'Czy na pewno chcesz usunąć tego użytkownika?',
+    'users_delete_success' => 'Użytkownik usunięty pomyślnie',
+    'users_edit' => 'Edytuj użytkownika',
+    'users_edit_profile' => 'Edytuj profil',
+    'users_edit_success' => 'Użytkownik zaktualizowany pomyśłnie',
+    'users_avatar' => 'Avatar użytkownika',
+    'users_avatar_desc' => 'Ten obrazek powinien mieć 25px x 256px.',
+    'users_preferred_language' => 'Preferowany język',
+    'users_social_accounts' => 'Konta społecznościowe',
+    'users_social_accounts_info' => 'Tutaj możesz połączyć kilka kont społecznościowych w celu łatwiejszego i szybszego logowania.',
+    'users_social_connect' => 'Podłącz konto',
+    'users_social_disconnect' => 'Odłącz konto',
+    'users_social_connected' => ':socialAccount zostało dodane do Twojego profilu.',
+    'users_social_disconnected' => ':socialAccount zostało odłączone od Twojego profilu.',
+];
diff --git a/resources/lang/pl/validation.php b/resources/lang/pl/validation.php
new file mode 100644
index 000000000..6a7c13e80
--- /dev/null
+++ b/resources/lang/pl/validation.php
@@ -0,0 +1,108 @@
+<?php
+
+return [
+
+    /*
+    |--------------------------------------------------------------------------
+    | Validation Language Lines
+    |--------------------------------------------------------------------------
+    |
+    | The following language lines contain the default error messages used by
+    | the validator class. Some of these rules have multiple versions such
+    | as the size rules. Feel free to tweak each of these messages here.
+    |
+    */
+
+    'accepted'             => ':attribute musi zostać zaakceptowany.',
+    'active_url'           => ':attribute nie jest prawidłowym adresem URL.',
+    'after'                => ':attribute musi być datą następującą po :date.',
+    'alpha'                => ':attribute może zawierać wyłącznie litery.',
+    'alpha_dash'           => ':attribute może zawierać wyłącznie litery, cyfry i myślniki.',
+    'alpha_num'            => ':attribute może zawierać wyłącznie litery i cyfry.',
+    'array'                => ':attribute musi być tablicą.',
+    'before'               => ':attribute musi być datą poprzedzającą :date.',
+    'between'              => [
+        'numeric' => ':attribute musi zawierać się w przedziale od :min do :max.',
+        'file'    => 'Waga :attribute musi zawierać się pomiędzy :min i :max kilobajtów.',
+        'string'  => 'Długość :attribute musi zawierać się pomiędzy :min i :max.',
+        'array'   => ':attribute musi mieć od :min do :max elementów.',
+    ],
+    'boolean'              => ':attribute musi być wartością prawda/fałsz.',
+    'confirmed'            => ':attribute i potwierdzenie muszą być zgodne.',
+    'date'                 => ':attribute nie jest prawidłową datą.',
+    'date_format'          => ':attribute musi mieć format :format.',
+    'different'            => ':attribute i :other muszą się różnić.',
+    'digits'               => ':attribute musi mieć :digits cyfr.',
+    'digits_between'       => ':attribute musi mieć od :min do :max cyfr.',
+    'email'                => ':attribute musi być prawidłowym adresem e-mail.',
+    'filled'               => ':attribute jest wymagany.',
+    'exists'               => 'Wybrana wartość :attribute jest nieprawidłowa.',
+    'image'                => ':attribute musi być obrazkiem.',
+    'in'                   => 'Wybrana wartość :attribute jest nieprawidłowa.',
+    'integer'              => ':attribute musi być liczbą całkowitą.',
+    'ip'                   => ':attribute musi być prawidłowym adresem IP.',
+    'max'                  => [
+        'numeric' => 'Wartość :attribute nie może być większa niż :max.',
+        'file'    => 'Wielkość :attribute nie może być większa niż :max kilobajtów.',
+        'string'  => 'Długość :attribute nie może być większa niż :max znaków.',
+        'array'   => 'Rozmiar :attribute nie może być większy niż :max elementów.',
+    ],
+    'mimes'                => ':attribute musi być plikiem typu: :values.',
+    'min'                  => [
+        'numeric' => 'Wartość :attribute nie może być mniejsza od :min.',
+        'file'    => 'Wielkość :attribute nie może być mniejsza niż :min kilobajtów.',
+        'string'  => 'Długość :attribute nie może być mniejsza niż :min znaków.',
+        'array'   => 'Rozmiar :attribute musi posiadać co najmniej :min elementy.',
+    ],
+    'not_in'               => 'Wartość :attribute jest nieprawidłowa.',
+    'numeric'              => ':attribute musi być liczbą.',
+    'regex'                => 'Format :attribute jest nieprawidłowy.',
+    'required'             => 'Pole :attribute jest wymagane.',
+    'required_if'          => 'Pole :attribute jest wymagane jeśli :other ma wartość :value.',
+    'required_with'        => 'Pole :attribute jest wymagane jeśli :values zostało wprowadzone.',
+    'required_with_all'    => 'Pole :attribute jest wymagane jeśli :values są obecne.',
+    'required_without'     => 'Pole :attribute jest wymagane jeśli :values nie zostało wprowadzone.',
+    'required_without_all' => 'Pole :attribute jest wymagane jeśli żadna z wartości :values nie została podana.',
+    'same'                 => 'Pole :attribute i :other muszą być takie same.',
+    'size'                 => [
+        'numeric' => ':attribute musi mieć długość :size.',
+        'file'    => ':attribute musi mieć :size kilobajtów.',
+        'string'  => ':attribute mmusi mieć długość :size znaków.',
+        'array'   => ':attribute musi posiadać :size elementów.',
+    ],
+    'string'               => ':attribute musi być ciągiem znaków.',
+    'timezone'             => ':attribute musi być prawidłową strefą czasową.',
+    'unique'               => ':attribute zostało już zajęte.',
+    'url'                  => 'Format :attribute jest nieprawidłowy.',
+
+    /*
+    |--------------------------------------------------------------------------
+    | Custom Validation Language Lines
+    |--------------------------------------------------------------------------
+    |
+    | Here you may specify custom validation messages for attributes using the
+    | convention "attribute.rule" to name the lines. This makes it quick to
+    | specify a specific custom language line for a given attribute rule.
+    |
+    */
+
+    'custom' => [
+        'password-confirm' => [
+            'required_with' => 'Potwierdzenie hasła jest wymagane.',
+        ],
+    ],
+
+    /*
+    |--------------------------------------------------------------------------
+    | Custom Validation Attributes
+    |--------------------------------------------------------------------------
+    |
+    | The following language lines are used to swap attribute place-holders
+    | with something more reader friendly such as E-Mail Address instead
+    | of "email". This simply helps us make messages a little cleaner.
+    |
+    */
+
+    'attributes' => [],
+
+];

From 67bc7007aa58cbb44801f3df1d1f98ae3f8e2c64 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cle=CC=81ment=20Blanco?= <clement@cyber-duck.co.uk>
Date: Fri, 14 Jul 2017 16:05:46 +0100
Subject: [PATCH 32/83] Support new lines for book/chapter descriptions

Avoid ignoring new lines when renderring the book/chapter descriptions on their respective detailed views.
---
 resources/views/books/show.blade.php    | 6 +++---
 resources/views/chapters/show.blade.php | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/resources/views/books/show.blade.php b/resources/views/books/show.blade.php
index ddbe7a0a4..d5832b708 100644
--- a/resources/views/books/show.blade.php
+++ b/resources/views/books/show.blade.php
@@ -56,7 +56,7 @@
 
                 <h1>{{$book->name}}</h1>
                 <div class="book-content" v-if="!searching">
-                    <p class="text-muted" v-pre>{{$book->description}}</p>
+                    <p class="text-muted" v-pre>{!! nl2br($book->description) !!}</p>
 
                     <div class="page-list" v-pre>
                         <hr>
@@ -118,7 +118,7 @@
                         <button v-if="searching" v-cloak class="text-neg" v-on:click="clearSearch()" type="button"><i class="zmdi zmdi-close"></i></button>
                     </form>
                 </div>
-                
+
                 <div class="activity">
                     <h3>{{ trans('entities.recent_activity') }}</h3>
                     @include('partials/activity-list', ['activity' => Activity::entityActivity($book, 20, 0)])
@@ -127,4 +127,4 @@
         </div>
     </div>
 
-@stop
\ No newline at end of file
+@stop
diff --git a/resources/views/chapters/show.blade.php b/resources/views/chapters/show.blade.php
index d4126cbcc..9b549cfbd 100644
--- a/resources/views/chapters/show.blade.php
+++ b/resources/views/chapters/show.blade.php
@@ -52,7 +52,7 @@
             <div class="col-md-7">
                 <h1>{{ $chapter->name }}</h1>
                 <div class="chapter-content" v-if="!searching">
-                    <p class="text-muted">{{ $chapter->description }}</p>
+                    <p class="text-muted">{!! nl2br($chapter->description) !!}</p>
 
                     @if(count($pages) > 0)
                         <div class="page-list">

From 711dcb4a4834a562bcdb36c7dac17964e93f38a6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cle=CC=81ment=20Blanco?= <clement@cyber-duck.co.uk>
Date: Mon, 17 Jul 2017 13:29:29 +0100
Subject: [PATCH 33/83] Update travis.yml to try and solve the test issue
 around LDAP.

---
 .travis.yml | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index 909e3e1f4..c5199b65f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -8,6 +8,9 @@ cache:
   directories:
     - $HOME/.composer/cache
 
+before_install:
+    - echo "extension=ldap.so" >> php --ini | grep "Loaded Configuration" | sed -e "s|.:\s||"
+
 before_script:
   - mysql -u root -e 'create database `bookstack-test`;'
   - mysql -u root -e "CREATE USER 'bookstack-test'@'localhost' IDENTIFIED BY 'bookstack-test';"
@@ -25,4 +28,4 @@ after_failure:
   - cat storage/logs/laravel.log
 
 script:
-  - phpunit
\ No newline at end of file
+  - phpunit

From 265ed34ffd49f199fe78e571a242eae39a4ea7bf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cle=CC=81ment=20Blanco?= <clement@cyber-duck.co.uk>
Date: Mon, 17 Jul 2017 13:34:19 +0100
Subject: [PATCH 34/83] Update travis.yml to try and solve the test issue
 around LDAP.

---
 .travis.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index c5199b65f..97895fee8 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -9,7 +9,7 @@ cache:
     - $HOME/.composer/cache
 
 before_install:
-    - echo "extension=ldap.so" >> php --ini | grep "Loaded Configuration" | sed -e "s|.:\s||"
+  - echo "extension = ldap.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
 
 before_script:
   - mysql -u root -e 'create database `bookstack-test`;'

From ae2ec43a826c92d96ae33388eba3d1599dc598e9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cle=CC=81ment=20Blanco?= <clement@cyber-duck.co.uk>
Date: Mon, 17 Jul 2017 13:35:38 +0100
Subject: [PATCH 35/83] Avoid having to wait until all tests are processed to
 exit upon error/failure.

---
 .travis.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index 97895fee8..c79775caf 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -28,4 +28,4 @@ after_failure:
   - cat storage/logs/laravel.log
 
 script:
-  - phpunit
+  - phpunit --stop-on-error --stop-on-failure

From 0d98b4ce5e4176ef4f31a5374964c054c48048db Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cle=CC=81ment=20Blanco?= <clement@cyber-duck.co.uk>
Date: Mon, 17 Jul 2017 13:37:15 +0100
Subject: [PATCH 36/83] Trying to make the tests green.

---
 .travis.yml | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index c79775caf..edc5732f6 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -8,9 +8,6 @@ cache:
   directories:
     - $HOME/.composer/cache
 
-before_install:
-  - echo "extension = ldap.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
-
 before_script:
   - mysql -u root -e 'create database `bookstack-test`;'
   - mysql -u root -e "CREATE USER 'bookstack-test'@'localhost' IDENTIFIED BY 'bookstack-test';"

From 5eeed03dcded3d024ac719599da250444bb87ac8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cle=CC=81ment=20Blanco?= <clement@cyber-duck.co.uk>
Date: Mon, 17 Jul 2017 13:53:02 +0100
Subject: [PATCH 37/83] Trying to make the tests green.

---
 .travis.yml | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/.travis.yml b/.travis.yml
index edc5732f6..4bd36f568 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -4,6 +4,11 @@ language: php
 php:
   - 7.0
 
+before_install:
+  - pecl install ldap
+  - echo "extension=ldap.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
+  - php -i "(command-line 'phpinfo()')" | grep ldap
+
 cache:
   directories:
     - $HOME/.composer/cache

From afc56c12fe02e4a1947b22b1858f6b2662e9bd80 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cle=CC=81ment=20Blanco?= <clement@cyber-duck.co.uk>
Date: Mon, 17 Jul 2017 14:01:10 +0100
Subject: [PATCH 38/83] Trying to make the tests green.

---
 .travis.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index 4bd36f568..a4116a317 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -5,7 +5,7 @@ php:
   - 7.0
 
 before_install:
-  - pecl install ldap
+  - sudo apt-get install php7.0-ldap
   - echo "extension=ldap.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
   - php -i "(command-line 'phpinfo()')" | grep ldap
 

From 3b771f2976e3272e77faaf1f5aed06d66aefd48e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cle=CC=81ment=20Blanco?= <clement@cyber-duck.co.uk>
Date: Mon, 17 Jul 2017 14:03:31 +0100
Subject: [PATCH 39/83] Trying to make the tests green.

---
 .travis.yml | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index a4116a317..f1495b46e 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -4,8 +4,12 @@ language: php
 php:
   - 7.0
 
+addons:
+  apt:
+    packages:
+      - php7.0-ldap
+
 before_install:
-  - sudo apt-get install php7.0-ldap
   - echo "extension=ldap.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
   - php -i "(command-line 'phpinfo()')" | grep ldap
 

From 6ef522df7ec8b43f484461e7690b08196d3585c1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cle=CC=81ment=20Blanco?= <clement@cyber-duck.co.uk>
Date: Mon, 17 Jul 2017 14:05:41 +0100
Subject: [PATCH 40/83] Trying to make the tests green.

---
 .travis.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index f1495b46e..054bc8b7d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -7,7 +7,7 @@ php:
 addons:
   apt:
     packages:
-      - php7.0-ldap
+      - php-ldap
 
 before_install:
   - echo "extension=ldap.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini

From 684c20c4ea186876afb4aa84115773d032d7063b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cle=CC=81ment=20Blanco?= <clement@cyber-duck.co.uk>
Date: Mon, 17 Jul 2017 14:09:21 +0100
Subject: [PATCH 41/83] Trying to make the tests green.

---
 .travis.yml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index 054bc8b7d..4613c64ef 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -7,7 +7,8 @@ php:
 addons:
   apt:
     packages:
-      - php-ldap
+      - ldap-utils
+      - slapd
 
 before_install:
   - echo "extension=ldap.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini

From 3407900abb7d1fe40551881ecf901d6e69c0d5a8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cle=CC=81ment=20Blanco?= <clement@cyber-duck.co.uk>
Date: Mon, 17 Jul 2017 14:18:03 +0100
Subject: [PATCH 42/83] Trying to make the tests green.

---
 .travis.yml             | 1 -
 tests/Auth/LdapTest.php | 3 ++-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 4613c64ef..f03865201 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -12,7 +12,6 @@ addons:
 
 before_install:
   - echo "extension=ldap.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
-  - php -i "(command-line 'phpinfo()')" | grep ldap
 
 cache:
   directories:
diff --git a/tests/Auth/LdapTest.php b/tests/Auth/LdapTest.php
index 681ead91c..f66d357e3 100644
--- a/tests/Auth/LdapTest.php
+++ b/tests/Auth/LdapTest.php
@@ -21,6 +21,7 @@ class LdapTest extends BrowserKitTest
     {
         $this->mockLdap->shouldReceive('connect')->once()->andReturn($this->resourceId);
         $this->mockLdap->shouldReceive('setVersion')->once();
+        $this->mockLdap->shouldReceive('setOption');
         $this->mockLdap->shouldReceive('searchAndGetEntries')->times(4)
             ->with($this->resourceId, config('services.ldap.base_dn'), \Mockery::type('string'), \Mockery::type('array'))
             ->andReturn(['count' => 1, 0 => [
@@ -129,4 +130,4 @@ class LdapTest extends BrowserKitTest
             ->dontSee('External Authentication');
     }
 
-}
\ No newline at end of file
+}

From f38bc75ab4f1d6980ecff7e2a1eb70eda8b42565 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cle=CC=81ment=20Blanco?= <clement@cyber-duck.co.uk>
Date: Mon, 17 Jul 2017 14:21:41 +0100
Subject: [PATCH 43/83] Trying to make the tests green.

---
 tests/Auth/LdapTest.php | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tests/Auth/LdapTest.php b/tests/Auth/LdapTest.php
index f66d357e3..573de4c43 100644
--- a/tests/Auth/LdapTest.php
+++ b/tests/Auth/LdapTest.php
@@ -21,7 +21,7 @@ class LdapTest extends BrowserKitTest
     {
         $this->mockLdap->shouldReceive('connect')->once()->andReturn($this->resourceId);
         $this->mockLdap->shouldReceive('setVersion')->once();
-        $this->mockLdap->shouldReceive('setOption');
+        $this->mockLdap->shouldReceive('setOption')->times(4);
         $this->mockLdap->shouldReceive('searchAndGetEntries')->times(4)
             ->with($this->resourceId, config('services.ldap.base_dn'), \Mockery::type('string'), \Mockery::type('array'))
             ->andReturn(['count' => 1, 0 => [
@@ -50,6 +50,7 @@ class LdapTest extends BrowserKitTest
         $this->mockLdap->shouldReceive('connect')->once()->andReturn($this->resourceId);
         $this->mockLdap->shouldReceive('setVersion')->once();
         $ldapDn = 'cn=test-user,dc=test' . config('services.ldap.base_dn');
+        $this->mockLdap->shouldReceive('setOption')->times(2);
         $this->mockLdap->shouldReceive('searchAndGetEntries')->times(2)
             ->with($this->resourceId, config('services.ldap.base_dn'), \Mockery::type('string'), \Mockery::type('array'))
             ->andReturn(['count' => 1, 0 => [

From 245294fbc55d0a2ecc765620758763b2f8f72998 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cle=CC=81ment=20Blanco?= <clement@cyber-duck.co.uk>
Date: Mon, 17 Jul 2017 14:42:08 +0100
Subject: [PATCH 44/83] Trying to make the tests green.

---
 tests/Auth/LdapTest.php | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tests/Auth/LdapTest.php b/tests/Auth/LdapTest.php
index 573de4c43..f6e8336e6 100644
--- a/tests/Auth/LdapTest.php
+++ b/tests/Auth/LdapTest.php
@@ -74,6 +74,7 @@ class LdapTest extends BrowserKitTest
     {
         $this->mockLdap->shouldReceive('connect')->once()->andReturn($this->resourceId);
         $this->mockLdap->shouldReceive('setVersion')->once();
+        $this->mockLdap->shouldReceive('setOption')->times(2);
         $this->mockLdap->shouldReceive('searchAndGetEntries')->times(2)
             ->with($this->resourceId, config('services.ldap.base_dn'), \Mockery::type('string'), \Mockery::type('array'))
             ->andReturn(['count' => 1, 0 => [

From bc067e9ad41804de26ec37fab90ec413b48b2270 Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Sat, 22 Jul 2017 14:02:47 +0100
Subject: [PATCH 45/83] Updated dropdowns to hide after option click

Fixes #429
---
 resources/assets/js/controllers.js |  2 +-
 resources/assets/js/directives.js  | 40 +++++++++++++++++-------------
 2 files changed, 24 insertions(+), 18 deletions(-)

diff --git a/resources/assets/js/controllers.js b/resources/assets/js/controllers.js
index ac1c3487c..9337ea889 100644
--- a/resources/assets/js/controllers.js
+++ b/resources/assets/js/controllers.js
@@ -379,7 +379,7 @@ module.exports = function (ngApp, events) {
          */
         $scope.discardDraft = function () {
             let url = window.baseUrl('/ajax/page/' + pageId);
-            $http.get(url).then((responseData) => {
+            $http.get(url).then(responseData => {
                 if (autoSave) $interval.cancel(autoSave);
                 $scope.draftText = trans('entities.pages_editing_page');
                 $scope.isUpdateDraft = false;
diff --git a/resources/assets/js/directives.js b/resources/assets/js/directives.js
index 51f1b7579..d783fd682 100644
--- a/resources/assets/js/directives.js
+++ b/resources/assets/js/directives.js
@@ -123,25 +123,31 @@ module.exports = function (ngApp, events) {
             restrict: 'A',
             link: function (scope, element, attrs) {
                 const menu = element.find('ul');
-                element.find('[dropdown-toggle]').on('click', function () {
+
+                function hide() {
+                    menu.hide();
+                    menu.removeClass('anim menuIn');
+                }
+
+                function show() {
                     menu.show().addClass('anim menuIn');
+                    element.mouseleave(hide);
+
+                    // Focus on input if exist in dropdown and hide on enter press
                     let inputs = menu.find('input');
-                    let hasInput = inputs.length > 0;
-                    if (hasInput) {
-                        inputs.first().focus();
-                        element.on('keypress', 'input', event => {
-                            if (event.keyCode === 13) {
-                                event.preventDefault();
-                                menu.hide();
-                                menu.removeClass('anim menuIn');
-                                return false;
-                            }
-                        });
-                    }
-                    element.mouseleave(function () {
-                        menu.hide();
-                        menu.removeClass('anim menuIn');
-                    });
+                    if (inputs.length > 0) inputs.first().focus();
+                }
+
+                // Hide menu on option click
+                element.on('click', '> ul a', hide);
+                // Show dropdown on toggle click.
+                element.find('[dropdown-toggle]').on('click', show);
+                // Hide menu on enter press in inputs
+                element.on('keypress', 'input', event => {
+                    if (event.keyCode !== 13) return true;
+                    event.preventDefault();
+                    hide();
+                    return false;
                 });
             }
         };

From b12e2ceada9b1b8a382b76c896fc392adcdf5b84 Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Sat, 22 Jul 2017 14:21:56 +0100
Subject: [PATCH 46/83] Added included content into page's text view

Allows rendered content to be shown in listings and used in searches.
Also prevented angular tags in content being parsed in listings.

Fixes #442
---
 app/Repos/EntityRepo.php                | 19 +++++++++++++++----
 resources/views/books/show.blade.php    |  4 ++--
 resources/views/chapters/show.blade.php |  4 ++--
 3 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/app/Repos/EntityRepo.php b/app/Repos/EntityRepo.php
index 7bc5fc4fc..7865de772 100644
--- a/app/Repos/EntityRepo.php
+++ b/app/Repos/EntityRepo.php
@@ -571,7 +571,7 @@ class EntityRepo
 
         $draftPage->slug = $this->findSuitableSlug('page', $draftPage->name, false, $draftPage->book->id);
         $draftPage->html = $this->formatHtml($input['html']);
-        $draftPage->text = strip_tags($draftPage->html);
+        $draftPage->text = $this->pageToPlainText($draftPage->html);
         $draftPage->draft = false;
         $draftPage->revision_count = 1;
 
@@ -713,6 +713,17 @@ class EntityRepo
         return $content;
     }
 
+    /**
+     * Get the plain text version of a page's content.
+     * @param Page $page
+     * @return string
+     */
+    public function pageToPlainText(Page $page)
+    {
+        $html = $this->renderPage($page);
+        return strip_tags($html);
+    }
+
     /**
      * Get a new draft page instance.
      * @param Book $book
@@ -816,7 +827,7 @@ class EntityRepo
         $userId = user()->id;
         $page->fill($input);
         $page->html = $this->formatHtml($input['html']);
-        $page->text = strip_tags($page->html);
+        $page->text = $this->pageToPlainText($page);
         if (setting('app-editor') !== 'markdown') $page->markdown = '';
         $page->updated_by = $userId;
         $page->revision_count++;
@@ -933,7 +944,7 @@ class EntityRepo
         $revision = $page->revisions()->where('id', '=', $revisionId)->first();
         $page->fill($revision->toArray());
         $page->slug = $this->findSuitableSlug('page', $page->name, $page->id, $book->id);
-        $page->text = strip_tags($page->html);
+        $page->text = $this->pageToPlainText($page->html);
         $page->updated_by = user()->id;
         $page->save();
         $this->searchService->indexEntity($page);
@@ -953,7 +964,7 @@ class EntityRepo
         if ($page->draft) {
             $page->fill($data);
             if (isset($data['html'])) {
-                $page->text = strip_tags($data['html']);
+                $page->text = $this->pageToPlainText($data['html']);
             }
             $page->save();
             return $page;
diff --git a/resources/views/books/show.blade.php b/resources/views/books/show.blade.php
index ddbe7a0a4..353018dbc 100644
--- a/resources/views/books/show.blade.php
+++ b/resources/views/books/show.blade.php
@@ -50,7 +50,7 @@
     </div>
 
 
-    <div class="container" id="entity-dashboard" entity-id="{{ $book->id }}" entity-type="book">
+    <div ng-non-bindable class="container" id="entity-dashboard" entity-id="{{ $book->id }}" entity-type="book">
         <div class="row">
             <div class="col-md-7">
 
@@ -112,7 +112,7 @@
                 @endif
 
                 <div class="search-box">
-                    <form v-on:submit="searchBook">
+                    <form v-on:submit.prevent="searchBook">
                         <input v-model="searchTerm" v-on:change="checkSearchForm()" type="text" name="term" placeholder="{{ trans('entities.books_search_this') }}">
                         <button type="submit"><i class="zmdi zmdi-search"></i></button>
                         <button v-if="searching" v-cloak class="text-neg" v-on:click="clearSearch()" type="button"><i class="zmdi zmdi-close"></i></button>
diff --git a/resources/views/chapters/show.blade.php b/resources/views/chapters/show.blade.php
index d4126cbcc..85aa252d1 100644
--- a/resources/views/chapters/show.blade.php
+++ b/resources/views/chapters/show.blade.php
@@ -47,7 +47,7 @@
     </div>
 
 
-    <div class="container" id="entity-dashboard" entity-id="{{ $chapter->id }}" entity-type="chapter">
+    <div class="container" id="entity-dashboard" ng-non-bindable entity-id="{{ $chapter->id }}" entity-type="chapter">
         <div class="row">
             <div class="col-md-7">
                 <h1>{{ $chapter->name }}</h1>
@@ -116,7 +116,7 @@
                 @endif
 
                 <div class="search-box">
-                    <form v-on:submit="searchBook">
+                    <form v-on:submit.prevent="searchBook">
                         <input v-model="searchTerm" v-on:change="checkSearchForm()" type="text" name="term" placeholder="{{ trans('entities.chapters_search_this') }}">
                         <button type="submit"><i class="zmdi zmdi-search"></i></button>
                         <button v-if="searching" v-cloak class="text-neg" v-on:click="clearSearch()" type="button"><i class="zmdi zmdi-close"></i></button>

From 7f43372dd497f0e9b5f6eaf668ea1e2748ad9a0c Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Sat, 22 Jul 2017 14:34:17 +0100
Subject: [PATCH 47/83] Fixed broken code block rendering when using DOMPDF

Fixes #427
---
 resources/assets/sass/_text.scss | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/resources/assets/sass/_text.scss b/resources/assets/sass/_text.scss
index ccef2a70f..2ef4bd16d 100644
--- a/resources/assets/sass/_text.scss
+++ b/resources/assets/sass/_text.scss
@@ -152,6 +152,14 @@ pre {
   }
 }
 
+@media print {
+  pre {
+    padding-left: 12px;
+  }
+  pre:after {
+    display: none;
+  }
+}
 
 blockquote {
   display: block;

From 433cb9b3b2b85c371818495b5e636daff5c49457 Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Sat, 22 Jul 2017 15:20:36 +0100
Subject: [PATCH 48/83] Improved breadcrumb responsiveness

Closes #426
---
 resources/assets/sass/_header.scss      | 22 +++++++++++++++++++++-
 resources/views/books/show.blade.php    |  4 ++--
 resources/views/chapters/show.blade.php |  4 ++--
 resources/views/pages/show.blade.php    |  4 ++--
 4 files changed, 27 insertions(+), 7 deletions(-)

diff --git a/resources/assets/sass/_header.scss b/resources/assets/sass/_header.scss
index 16ed75545..ae8dd3ff5 100644
--- a/resources/assets/sass/_header.scss
+++ b/resources/assets/sass/_header.scss
@@ -142,7 +142,6 @@ form.search-box {
   color: #aaa;
   padding: 0 $-xs;
 }
-
 .faded {
   a, button, span, span > div {
     color: #666;
@@ -178,6 +177,8 @@ form.search-box {
     padding-left: 0;
   }
 }
+
+
 .action-buttons .dropdown-container:last-child a {
   padding-right: 0;
   padding-left: $-s;
@@ -196,6 +197,25 @@ form.search-box {
   }
 }
 
+@include smaller-than($m) {
+  .breadcrumbs .text-button, .action-buttons .text-button {
+    padding: $-s $-xs;
+  }
+  .action-buttons .dropdown-container:last-child a {
+    padding-left: $-xs;
+  }
+  .breadcrumbs .text-button {
+    font-size: 0;
+  }
+  .breadcrumbs a i {
+    font-size: $fs-m;
+    padding-right: 0;
+  }
+  .breadcrumbs span.sep {
+    padding: 0 $-xxs;
+  }
+}
+
 .nav-tabs {
   text-align: center;
   a, .tab-item {
diff --git a/resources/views/books/show.blade.php b/resources/views/books/show.blade.php
index 353018dbc..0e3bd4e17 100644
--- a/resources/views/books/show.blade.php
+++ b/resources/views/books/show.blade.php
@@ -5,10 +5,10 @@
     <div class="faded-small toolbar">
         <div class="container">
             <div class="row">
-                <div class="col-sm-6 faded">
+                <div class="col-sm-6 col-xs-1  faded">
                     @include('books._breadcrumbs', ['book' => $book])
                 </div>
-                <div class="col-sm-6">
+                <div class="col-sm-6 col-xs-11">
                     <div class="action-buttons faded">
                         <span dropdown class="dropdown-container">
                             <div dropdown-toggle class="text-button text-primary"><i class="zmdi zmdi-open-in-new"></i>{{ trans('entities.export') }}</div>
diff --git a/resources/views/chapters/show.blade.php b/resources/views/chapters/show.blade.php
index 85aa252d1..9ebd8d9c4 100644
--- a/resources/views/chapters/show.blade.php
+++ b/resources/views/chapters/show.blade.php
@@ -5,10 +5,10 @@
     <div class="faded-small toolbar">
         <div class="container">
             <div class="row">
-                <div class="col-sm-8 faded" ng-non-bindable>
+                <div class="col-sm-6 col-xs-3 faded" ng-non-bindable>
                     @include('chapters._breadcrumbs', ['chapter' => $chapter])
                 </div>
-                <div class="col-sm-4 faded">
+                <div class="col-sm-6 col-xs-9 faded">
                     <div class="action-buttons">
                         <span dropdown class="dropdown-container">
                             <div dropdown-toggle class="text-button text-primary"><i class="zmdi zmdi-open-in-new"></i>{{ trans('entities.export') }}</div>
diff --git a/resources/views/pages/show.blade.php b/resources/views/pages/show.blade.php
index 6b2dc3c23..221ed4476 100644
--- a/resources/views/pages/show.blade.php
+++ b/resources/views/pages/show.blade.php
@@ -5,10 +5,10 @@
     <div class="faded-small toolbar">
         <div class="container">
             <div class="row">
-                <div class="col-sm-6 faded">
+                <div class="col-sm-8 col-xs-5 faded">
                     @include('pages._breadcrumbs', ['page' => $page])
                 </div>
-                <div class="col-sm-6 faded">
+                <div class="col-sm-4 col-xs-7 faded">
                     <div class="action-buttons">
                         <span dropdown class="dropdown-container">
                             <div dropdown-toggle class="text-button text-primary"><i class="zmdi zmdi-open-in-new"></i>{{ trans('entities.export') }}</div>

From 6bcd89acf76163ca09c95903f27ceed925718061 Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Sat, 22 Jul 2017 15:54:17 +0100
Subject: [PATCH 49/83] Moved utf8mb4 migration to command instead of migration

To prevent errors upon migration.
Command generates out the SQL syntax to make the change instead
so the upgrade can be done manually.

In reference to #425
---
 .../Commands/UpgradeDatabaseEncoding.php      | 57 +++++++++++++++++++
 app/Console/Kernel.php                        |  3 +-
 ...02_152834_update_db_encoding_to_ut8mb4.php | 26 ++-------
 3 files changed, 63 insertions(+), 23 deletions(-)
 create mode 100644 app/Console/Commands/UpgradeDatabaseEncoding.php

diff --git a/app/Console/Commands/UpgradeDatabaseEncoding.php b/app/Console/Commands/UpgradeDatabaseEncoding.php
new file mode 100644
index 000000000..dbdf778e8
--- /dev/null
+++ b/app/Console/Commands/UpgradeDatabaseEncoding.php
@@ -0,0 +1,57 @@
+<?php
+
+namespace BookStack\Console\Commands;
+
+use Illuminate\Console\Command;
+use Illuminate\Support\Facades\DB;
+
+class UpgradeDatabaseEncoding extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'bookstack:db-utf8mb4-syntax {--database= : The database connection to use.}';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = 'Generate SQL commands to upgrade the database to UTF8mb4';
+
+    /**
+     * Create a new command instance.
+     *
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Execute the console command.
+     *
+     * @return mixed
+     */
+    public function handle()
+    {
+        $connection = DB::getDefaultConnection();
+        if ($this->option('database') !== null) {
+            DB::setDefaultConnection($this->option('database'));
+        }
+
+        $database = DB::getDatabaseName();
+        $tables = DB::select('SHOW TABLES');
+        $this->line('ALTER DATABASE `'.$database.'` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;');
+        $this->line('USE `'.$database.'`;');
+        $key = 'Tables_in_' . $database;
+        foreach ($tables as $table) {
+            $tableName = $table->$key;
+            $this->line('ALTER TABLE `'.$tableName.'` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;');
+        }
+
+        DB::setDefaultConnection($connection);
+    }
+}
diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php
index 4fa0b3c80..af9f5fd46 100644
--- a/app/Console/Kernel.php
+++ b/app/Console/Kernel.php
@@ -15,7 +15,8 @@ class Kernel extends ConsoleKernel
         Commands\ClearActivity::class,
         Commands\ClearRevisions::class,
         Commands\RegeneratePermissions::class,
-        Commands\RegenerateSearch::class
+        Commands\RegenerateSearch::class,
+        Commands\UpgradeDatabaseEncoding::class
     ];
 
     /**
diff --git a/database/migrations/2017_07_02_152834_update_db_encoding_to_ut8mb4.php b/database/migrations/2017_07_02_152834_update_db_encoding_to_ut8mb4.php
index 550c95826..259da0720 100644
--- a/database/migrations/2017_07_02_152834_update_db_encoding_to_ut8mb4.php
+++ b/database/migrations/2017_07_02_152834_update_db_encoding_to_ut8mb4.php
@@ -1,7 +1,5 @@
 <?php
 
-use Illuminate\Support\Facades\Schema;
-use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Database\Migrations\Migration;
 
 class UpdateDbEncodingToUt8mb4 extends Migration
@@ -13,16 +11,9 @@ class UpdateDbEncodingToUt8mb4 extends Migration
      */
     public function up()
     {
-        $database = DB::getDatabaseName();
-        $tables = DB::select('SHOW TABLES');
-        $pdo = DB::getPdo();
-        $pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
-        $pdo->exec('ALTER DATABASE `'.$database.'` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci');
-        $key = 'Tables_in_' . $database;
-        foreach ($tables as $table) {
-            $tableName = $table->$key;
-            $pdo->exec('ALTER TABLE `'.$tableName.'` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci');
-        }
+        // Migration removed due to issues during live migration.
+        // Instead you can run the command `artisan bookstack:db-utf8mb4-syntax`
+        // which will generate out the SQL request to upgrade your DB to utf8mb4.
     }
 
     /**
@@ -32,15 +23,6 @@ class UpdateDbEncodingToUt8mb4 extends Migration
      */
     public function down()
     {
-        $database = DB::getDatabaseName();
-        $tables = DB::select('SHOW TABLES');
-        $pdo = DB::getPdo();
-        $pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
-        $pdo->exec('ALTER DATABASE `'.$database.'` CHARACTER SET utf8 COLLATE utf8_unicode_ci');
-        $key = 'Tables_in_' . $database;
-        foreach ($tables as $table) {
-            $tableName = $table->$key;
-            $pdo->exec('ALTER TABLE `'.$tableName.'` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci');
-        }
+        //
     }
 }

From 2704962277422818c850987142f5e2e0a7326670 Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Sat, 22 Jul 2017 16:19:17 +0100
Subject: [PATCH 50/83] Updated utfmb4 upgrade command

---
 app/Console/Commands/UpgradeDatabaseEncoding.php                | 2 +-
 .../2017_07_02_152834_update_db_encoding_to_ut8mb4.php          | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/app/Console/Commands/UpgradeDatabaseEncoding.php b/app/Console/Commands/UpgradeDatabaseEncoding.php
index dbdf778e8..a17fc9523 100644
--- a/app/Console/Commands/UpgradeDatabaseEncoding.php
+++ b/app/Console/Commands/UpgradeDatabaseEncoding.php
@@ -12,7 +12,7 @@ class UpgradeDatabaseEncoding extends Command
      *
      * @var string
      */
-    protected $signature = 'bookstack:db-utf8mb4-syntax {--database= : The database connection to use.}';
+    protected $signature = 'bookstack:db-utf8mb4 {--database= : The database connection to use.}';
 
     /**
      * The console command description.
diff --git a/database/migrations/2017_07_02_152834_update_db_encoding_to_ut8mb4.php b/database/migrations/2017_07_02_152834_update_db_encoding_to_ut8mb4.php
index 259da0720..5681013ad 100644
--- a/database/migrations/2017_07_02_152834_update_db_encoding_to_ut8mb4.php
+++ b/database/migrations/2017_07_02_152834_update_db_encoding_to_ut8mb4.php
@@ -12,7 +12,7 @@ class UpdateDbEncodingToUt8mb4 extends Migration
     public function up()
     {
         // Migration removed due to issues during live migration.
-        // Instead you can run the command `artisan bookstack:db-utf8mb4-syntax`
+        // Instead you can run the command `artisan bookstack:db-utf8mb4`
         // which will generate out the SQL request to upgrade your DB to utf8mb4.
     }
 

From 33642c20ecce13946d452cb79f5c58825ba2f4b3 Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Sat, 22 Jul 2017 17:10:52 +0100
Subject: [PATCH 51/83] Fixed faulty text rendering calls and LDAP tests

---
 app/Repos/EntityRepo.php | 6 +++---
 tests/Auth/LdapTest.php  | 3 +++
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/app/Repos/EntityRepo.php b/app/Repos/EntityRepo.php
index 7865de772..d87c40f9b 100644
--- a/app/Repos/EntityRepo.php
+++ b/app/Repos/EntityRepo.php
@@ -571,7 +571,7 @@ class EntityRepo
 
         $draftPage->slug = $this->findSuitableSlug('page', $draftPage->name, false, $draftPage->book->id);
         $draftPage->html = $this->formatHtml($input['html']);
-        $draftPage->text = $this->pageToPlainText($draftPage->html);
+        $draftPage->text = $this->pageToPlainText($draftPage);
         $draftPage->draft = false;
         $draftPage->revision_count = 1;
 
@@ -944,7 +944,7 @@ class EntityRepo
         $revision = $page->revisions()->where('id', '=', $revisionId)->first();
         $page->fill($revision->toArray());
         $page->slug = $this->findSuitableSlug('page', $page->name, $page->id, $book->id);
-        $page->text = $this->pageToPlainText($page->html);
+        $page->text = $this->pageToPlainText($page);
         $page->updated_by = user()->id;
         $page->save();
         $this->searchService->indexEntity($page);
@@ -964,7 +964,7 @@ class EntityRepo
         if ($page->draft) {
             $page->fill($data);
             if (isset($data['html'])) {
-                $page->text = $this->pageToPlainText($data['html']);
+                $page->text = $this->pageToPlainText($page);
             }
             $page->save();
             return $page;
diff --git a/tests/Auth/LdapTest.php b/tests/Auth/LdapTest.php
index 681ead91c..1b7dc8184 100644
--- a/tests/Auth/LdapTest.php
+++ b/tests/Auth/LdapTest.php
@@ -21,6 +21,7 @@ class LdapTest extends BrowserKitTest
     {
         $this->mockLdap->shouldReceive('connect')->once()->andReturn($this->resourceId);
         $this->mockLdap->shouldReceive('setVersion')->once();
+        $this->mockLdap->shouldReceive('setOption')->times(4);
         $this->mockLdap->shouldReceive('searchAndGetEntries')->times(4)
             ->with($this->resourceId, config('services.ldap.base_dn'), \Mockery::type('string'), \Mockery::type('array'))
             ->andReturn(['count' => 1, 0 => [
@@ -49,6 +50,7 @@ class LdapTest extends BrowserKitTest
         $this->mockLdap->shouldReceive('connect')->once()->andReturn($this->resourceId);
         $this->mockLdap->shouldReceive('setVersion')->once();
         $ldapDn = 'cn=test-user,dc=test' . config('services.ldap.base_dn');
+        $this->mockLdap->shouldReceive('setOption')->times(2);
         $this->mockLdap->shouldReceive('searchAndGetEntries')->times(2)
             ->with($this->resourceId, config('services.ldap.base_dn'), \Mockery::type('string'), \Mockery::type('array'))
             ->andReturn(['count' => 1, 0 => [
@@ -72,6 +74,7 @@ class LdapTest extends BrowserKitTest
     {
         $this->mockLdap->shouldReceive('connect')->once()->andReturn($this->resourceId);
         $this->mockLdap->shouldReceive('setVersion')->once();
+        $this->mockLdap->shouldReceive('setOption')->times(2);
         $this->mockLdap->shouldReceive('searchAndGetEntries')->times(2)
             ->with($this->resourceId, config('services.ldap.base_dn'), \Mockery::type('string'), \Mockery::type('array'))
             ->andReturn(['count' => 1, 0 => [

From f200b4183d6c49cabdc4a36e687bc87f764c094a Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Sat, 22 Jul 2017 17:22:31 +0100
Subject: [PATCH 52/83] Defined LDAP constant for testing without LDAP
 installed

---
 tests/Auth/LdapTest.php | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tests/Auth/LdapTest.php b/tests/Auth/LdapTest.php
index 1b7dc8184..76da6286d 100644
--- a/tests/Auth/LdapTest.php
+++ b/tests/Auth/LdapTest.php
@@ -11,6 +11,7 @@ class LdapTest extends BrowserKitTest
     public function setUp()
     {
         parent::setUp();
+        if (!defined('LDAP_OPT_REFERRALS')) define('LDAP_OPT_REFERRALS', 1);
         app('config')->set(['auth.method' => 'ldap', 'services.ldap.base_dn' => 'dc=ldap,dc=local', 'auth.providers.users.driver' => 'ldap']);
         $this->mockLdap = \Mockery::mock(\BookStack\Services\Ldap::class);
         $this->app['BookStack\Services\Ldap'] = $this->mockLdap;

From 813c7d590263bd7f25e886c5fe5080d6a95c425d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Le=20Gal?= <jerome@joworld.net>
Date: Sat, 22 Jul 2017 22:52:55 +0200
Subject: [PATCH 53/83] auth.php: fix some spelling issues in french
 translation

---
 resources/lang/fr/auth.php | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/resources/lang/fr/auth.php b/resources/lang/fr/auth.php
index 41d051c5f..015bfdff0 100644
--- a/resources/lang/fr/auth.php
+++ b/resources/lang/fr/auth.php
@@ -10,7 +10,7 @@ return [
     | these language lines according to your application's requirements.
     |
     */
-    'failed' => 'Ces informations ne correspondent a aucun compte.',
+    'failed' => 'Ces informations ne correspondent à aucun compte.',
     'throttle' => "Trop d'essais, veuillez réessayer dans :seconds secondes.",
 
     /**
@@ -26,7 +26,7 @@ return [
     'password' => 'Mot de passe',
     'password_confirm' => 'Confirmez le mot de passe',
     'password_hint' => 'Doit faire plus de 5 caractères',
-    'forgot_password' => 'Mot de passe oublié?',
+    'forgot_password' => 'Mot de passe oublié ?',
     'remember_me' => 'Se souvenir de moi',
     'ldap_email_hint' => "Merci d'entrer une adresse e-mail pour ce compte",
     'create_account' => 'Créer un compte',
@@ -35,9 +35,9 @@ return [
     'social_registration_text' => "S'inscrire et se connecter avec un réseau social",
 
     'register_thanks' => 'Merci pour votre enregistrement',
-    'register_confirm' => 'Vérifiez vos e-mails et cliquer sur le lien de confirmation pour rejoindre :appName.',
+    'register_confirm' => 'Vérifiez vos e-mails et cliquez sur le lien de confirmation pour rejoindre :appName.',
     'registrations_disabled' => "L'inscription est désactivée pour le moment",
-    'registration_email_domain_invalid' => 'Cette adresse e-mail ne peux pas adcéder à l\'application',
+    'registration_email_domain_invalid' => 'Cette adresse e-mail ne peut pas accéder à l\'application',
     'register_success' => 'Merci pour votre inscription. Vous êtes maintenant inscrit(e) et connecté(e)',
 
 
@@ -51,7 +51,7 @@ return [
     'reset_password_success' => 'Votre mot de passe a été réinitialisé avec succès.',
 
     'email_reset_subject' => 'Réinitialisez votre mot de passe pour :appName',
-    'email_reset_text' => 'Vous recevez cet e-mail parceque nous avons reçu une demande de réinitialisation pour votre compte',
+    'email_reset_text' => 'Vous recevez cet e-mail parce que nous avons reçu une demande de réinitialisation pour votre compte',
     'email_reset_not_requested' => 'Si vous n\'avez pas effectué cette demande, vous pouvez ignorer cet e-mail.',
 
 
@@ -59,11 +59,11 @@ return [
      * Email Confirmation
      */
     'email_confirm_subject' => 'Confirmez votre adresse e-mail pour :appName',
-    'email_confirm_greeting' => 'Merci d\'avoir rejoint :appName!',
-    'email_confirm_text' => 'Merci de confirmer en cliquant sur le lien ci-dessous:',
+    'email_confirm_greeting' => 'Merci d\'avoir rejoint :appName !',
+    'email_confirm_text' => 'Merci de confirmer en cliquant sur le lien ci-dessous :',
     'email_confirm_action' => 'Confirmez votre adresse e-mail',
     'email_confirm_send_error' => 'La confirmation par e-mail est requise mais le système n\'a pas pu envoyer l\'e-mail. Contactez l\'administrateur système.',
-    'email_confirm_success' => 'Votre adresse e-mail a été confirmée!',
+    'email_confirm_success' => 'Votre adresse e-mail a été confirmée !',
     'email_confirm_resent' => 'L\'e-mail de confirmation a été ré-envoyé. Vérifiez votre boîte de récéption.',
 
     'email_not_confirmed' => 'Adresse e-mail non confirmée',

From 57eeb9b0a39cd9c7934756cb7662d05259c1eaee Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Le=20Gal?= <jerome@joworld.net>
Date: Sat, 22 Jul 2017 23:01:03 +0200
Subject: [PATCH 54/83] common.php: fix some spelling issues in french
 translation

---
 resources/lang/fr/common.php | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/resources/lang/fr/common.php b/resources/lang/fr/common.php
index 5eb4b8fa8..7a8ec55b6 100644
--- a/resources/lang/fr/common.php
+++ b/resources/lang/fr/common.php
@@ -9,7 +9,7 @@ return [
     'back' => 'Retour',
     'save' => 'Enregistrer',
     'continue' => 'Continuer',
-    'select' => 'Selectionner',
+    'select' => 'Sélectionner',
 
     /**
      * Form Labels
@@ -53,6 +53,6 @@ return [
     /**
      * Email Content
      */
-    'email_action_help' => 'Si vous rencontrez des problèmes pour cliquer le bouton ":actionText", copiez et collez l\'adresse ci-dessous dans votre navigateur:',
+    'email_action_help' => 'Si vous rencontrez des problèmes pour cliquer sur le bouton ":actionText", copiez et collez l\'adresse ci-dessous dans votre navigateur :',
     'email_rights' => 'Tous droits réservés',
 ];

From 7557d6d619ff16b17d69fd8236e650e8d306600d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Le=20Gal?= <jerome@joworld.net>
Date: Sat, 22 Jul 2017 23:18:11 +0200
Subject: [PATCH 55/83] entities.php: fix some spelling issues in french
 translation

---
 resources/lang/fr/entities.php | 38 +++++++++++++++++-----------------
 1 file changed, 19 insertions(+), 19 deletions(-)

diff --git a/resources/lang/fr/entities.php b/resources/lang/fr/entities.php
index 5562fb0fd..17b4ea913 100644
--- a/resources/lang/fr/entities.php
+++ b/resources/lang/fr/entities.php
@@ -12,7 +12,7 @@ return [
     'recently_update' => 'Mis à jour récemment',
     'recently_viewed' => 'Vus récemment',
     'recent_activity' => 'Activité récente',
-    'create_now' => 'En créer un récemment',
+    'create_now' => 'En créer un maintenant',
     'revisions' => 'Révisions',
     'meta_created' => 'Créé :timeLength',
     'meta_created_name' => 'Créé :timeLength par :user',
@@ -59,8 +59,8 @@ return [
     'books_create' => 'Créer un nouveau livre',
     'books_delete' => 'Supprimer un livre',
     'books_delete_named' => 'Supprimer le livre :bookName',
-    'books_delete_explain' => 'Ceci va supprimer le livre nommé \':bookName\', Tous les chapitres et pages seront supprimés.',
-    'books_delete_confirmation' => 'Êtes-vous sûr(e) de vouloir supprimer ce livre?',
+    'books_delete_explain' => 'Ceci va supprimer le livre nommé \':bookName\', tous les chapitres et pages seront supprimés.',
+    'books_delete_confirmation' => 'Êtes-vous sûr(e) de vouloir supprimer ce livre ?',
     'books_edit' => 'Modifier le livre',
     'books_edit_named' => 'Modifier le livre :bookName',
     'books_form_book_name' => 'Nom du livre',
@@ -90,18 +90,18 @@ return [
     'chapters_create' => 'Créer un nouveau chapitre',
     'chapters_delete' => 'Supprimer le chapitre',
     'chapters_delete_named' => 'Supprimer le chapitre :chapterName',
-    'chapters_delete_explain' => 'Ceci va supprimer le chapitre \':chapterName\', Toutes les pages seront déplacée dans le livre parent.',
-    'chapters_delete_confirm' => 'Etes-vous sûr(e) de vouloir supprimer ce chapitre?',
+    'chapters_delete_explain' => 'Ceci va supprimer le chapitre \':chapterName\', toutes les pages seront déplacées dans le livre parent.',
+    'chapters_delete_confirm' => 'Etes-vous sûr(e) de vouloir supprimer ce chapitre ?',
     'chapters_edit' => 'Modifier le chapitre',
     'chapters_edit_named' => 'Modifier le chapitre :chapterName',
     'chapters_save' => 'Enregistrer le chapitre',
-    'chapters_move' => 'Déplace le chapitre',
+    'chapters_move' => 'Déplacer le chapitre',
     'chapters_move_named' => 'Déplacer le chapitre :chapterName',
     'chapter_move_success' => 'Chapitre déplacé dans :bookName',
     'chapters_permissions' => 'Permissions du chapitre',
-    'chapters_empty' => 'Il n\'y a pas de pages dans ce chapitre actuellement.',
+    'chapters_empty' => 'Il n\'y a pas de page dans ce chapitre actuellement.',
     'chapters_permissions_active' => 'Permissions du chapitre activées',
-    'chapters_permissions_success' => 'Permissions du chapitres mises à jour',
+    'chapters_permissions_success' => 'Permissions du chapitre mises à jour',
 
     /**
      * Pages
@@ -118,8 +118,8 @@ return [
     'pages_delete_draft' => 'Supprimer le brouillon',
     'pages_delete_success' => 'Page supprimée',
     'pages_delete_draft_success' => 'Brouillon supprimé',
-    'pages_delete_confirm' => 'Êtes-vous sûr(e) de vouloir supprimer cette page?',
-    'pages_delete_draft_confirm' => 'Êtes-vous sûr(e) de vouloir supprimer ce brouillon?',
+    'pages_delete_confirm' => 'Êtes-vous sûr(e) de vouloir supprimer cette page ?',
+    'pages_delete_draft_confirm' => 'Êtes-vous sûr(e) de vouloir supprimer ce brouillon ?',
     'pages_editing_named' => 'Modification de la page :pageName',
     'pages_edit_toggle_header' => 'Afficher/cacher l\'en-tête',
     'pages_edit_save_draft' => 'Enregistrer le brouillon',
@@ -131,7 +131,7 @@ return [
     'pages_edit_discard_draft' => 'Ecarter le brouillon',
     'pages_edit_set_changelog' => 'Remplir le journal des changements',
     'pages_edit_enter_changelog_desc' => 'Entrez une brève description des changements effectués',
-    'pages_edit_enter_changelog' => 'Entrez dans le journal des changements',
+    'pages_edit_enter_changelog' => 'Entrer dans le journal des changements',
     'pages_save' => 'Enregistrez la page',
     'pages_title' => 'Titre de la page',
     'pages_name' => 'Nom de la page',
@@ -139,7 +139,7 @@ return [
     'pages_md_preview' => 'Prévisualisation',
     'pages_md_insert_image' => 'Insérer une image',
     'pages_md_insert_link' => 'Insérer un lien',
-    'pages_not_in_chapter' => 'La page n\'est pas dans un chanpitre',
+    'pages_not_in_chapter' => 'La page n\'est pas dans un chapitre',
     'pages_move' => 'Déplacer la page',
     'pages_move_success' => 'Page déplacée à ":parentName"',
     'pages_permissions' => 'Permissions de la page',
@@ -160,15 +160,15 @@ return [
     'pages_initial_revision' => 'Publication initiale',
     'pages_initial_name' => 'Nouvelle page',
     'pages_editing_draft_notification' => 'Vous éditez actuellement un brouillon qui a été sauvé :timeDiff.',
-    'pages_draft_edited_notification' => 'La page a été mise à jour depuis votre dernière visit. Vous devriez écarter ce brouillon.',
+    'pages_draft_edited_notification' => 'La page a été mise à jour depuis votre dernière visite. Vous devriez écarter ce brouillon.',
     'pages_draft_edit_active' => [
-        'start_a' => ':count utilisateurs ont commencé a éditer cette page',
+        'start_a' => ':count utilisateurs ont commencé à éditer cette page',
         'start_b' => ':userName a commencé à éditer cette page',
         'time_a' => 'depuis la dernière sauvegarde',
         'time_b' => 'dans les :minCount dernières minutes',
-        'message' => ':start :time. Attention a ne pas écraser les mises à jour de quelqu\'un d\'autre!',
+        'message' => ':start :time. Attention à ne pas écraser les mises à jour de quelqu\'un d\'autre !',
     ],
-    'pages_draft_discarded' => 'Brouuillon écarté, la page est dans sa version actuelle.',
+    'pages_draft_discarded' => 'Brouillon écarté, la page est dans sa version actuelle.',
 
     /**
      * Editor sidebar
@@ -210,7 +210,7 @@ return [
      */
     'profile_user_for_x' => 'Utilisateur depuis :time',
     'profile_created_content' => 'Contenu créé',
-    'profile_not_created_pages' => ':userName n\'a pas créé de pages',
-    'profile_not_created_chapters' => ':userName n\'a pas créé de chapitres',
-    'profile_not_created_books' => ':userName n\'a pas créé de livres',
+    'profile_not_created_pages' => ':userName n\'a pas créé de page',
+    'profile_not_created_chapters' => ':userName n\'a pas créé de chapitre',
+    'profile_not_created_books' => ':userName n\'a pas créé de livre',
 ];

From b2b4a24d7c76f71c1b71910cd17a800e241f7117 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Le=20Gal?= <jerome@joworld.net>
Date: Sat, 22 Jul 2017 23:23:34 +0200
Subject: [PATCH 56/83] errors.php: fix some spelling issues in french
 translation

---
 resources/lang/fr/errors.php | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/resources/lang/fr/errors.php b/resources/lang/fr/errors.php
index 72af89f7f..d4390e0ba 100644
--- a/resources/lang/fr/errors.php
+++ b/resources/lang/fr/errors.php
@@ -20,8 +20,8 @@ return [
     'ldap_extension_not_installed' => 'L\'extention LDAP PHP n\'est pas installée',
     'ldap_cannot_connect' => 'Cannot connect to ldap server, Initial connection failed',
     'social_no_action_defined' => 'No action defined',
-    'social_account_in_use' => 'Cet compte :socialAccount est déjà utilisé. Essayez de vous connecter via :socialAccount.',
-    'social_account_email_in_use' => 'L\'email :email Est déjà utilisé. Si vous avez déjà un compte :socialAccount, vous pouvez le joindre à votre profil existant.',
+    'social_account_in_use' => 'Ce compte :socialAccount est déjà utilisé. Essayez de vous connecter via :socialAccount.',
+    'social_account_email_in_use' => 'L\'email :email est déjà utilisé. Si vous avez déjà un compte :socialAccount, vous pouvez le joindre à votre profil existant.',
     'social_account_existing' => 'Ce compte :socialAccount est déjà rattaché à votre profil.',
     'social_account_already_used_existing' => 'Ce compte :socialAccount est déjà utilisé par un autre utilisateur.',
     'social_account_not_used' => 'Ce compte :socialAccount n\'est lié à aucun utilisateur. ',
@@ -32,7 +32,7 @@ return [
     // System
     'path_not_writable' => 'File path :filePath could not be uploaded to. Ensure it is writable to the server.',
     'cannot_get_image_from_url' => 'Impossible de récupérer l\'image depuis :url',
-    'cannot_create_thumbs' => 'Le serveur ne peux pas créer de miniatures, vérifier que l\extensions GD PHP est installée.',
+    'cannot_create_thumbs' => 'Le serveur ne peut pas créer de miniature, vérifier que l\'extension PHP GD est installée.',
     'server_upload_limit' => 'La taille du fichier est trop grande.',
     'image_upload_error' => 'Une erreur est survenue pendant l\'envoi de l\'image',
 
@@ -57,7 +57,7 @@ return [
 
     // Roles
     'role_cannot_be_edited' => 'Ce rôle ne peut pas être modifié',
-    'role_system_cannot_be_deleted' => 'Ceci est un rôle du système et on ne peut pas le supprimer',
+    'role_system_cannot_be_deleted' => 'Ceci est un rôle du système et ne peut pas être supprimé',
     'role_registration_default_cannot_delete' => 'Ce rôle ne peut pas être supprimé tant qu\'il est le rôle par défaut',
 
     // Error pages

From 3d9819f97c2a0fda1a6f2d327faebe4228b70c9f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Le=20Gal?= <jerome@joworld.net>
Date: Sat, 22 Jul 2017 23:25:03 +0200
Subject: [PATCH 57/83] passwords.php: fix some spelling issues in french
 translation

---
 resources/lang/fr/passwords.php | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/resources/lang/fr/passwords.php b/resources/lang/fr/passwords.php
index 7be81da23..484b4b20c 100644
--- a/resources/lang/fr/passwords.php
+++ b/resources/lang/fr/passwords.php
@@ -16,7 +16,7 @@ return [
     'password' => 'Les mots de passe doivent faire au moins 6 caractères et correspondre à la confirmation.',
     'user' => "Nous n'avons pas trouvé d'utilisateur avec cette adresse.",
     'token' => 'Le jeton de réinitialisation est invalide.',
-    'sent' => 'Nous vous avons envoyé un lien de réinitialisation de mot de passe!',
-    'reset' => 'Votre mot de passe a été réinitialisé!',
+    'sent' => 'Nous vous avons envoyé un lien de réinitialisation de mot de passe !',
+    'reset' => 'Votre mot de passe a été réinitialisé !',
 
 ];

From a2a2e377975fec9b4d198ebf99a1273aceda6c47 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Le=20Gal?= <jerome@joworld.net>
Date: Sat, 22 Jul 2017 23:29:52 +0200
Subject: [PATCH 58/83] settings.php: fix some spelling issues in french
 translation

---
 resources/lang/fr/settings.php | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/resources/lang/fr/settings.php b/resources/lang/fr/settings.php
index 8a3756527..7899cdb2a 100644
--- a/resources/lang/fr/settings.php
+++ b/resources/lang/fr/settings.php
@@ -19,14 +19,14 @@ return [
     'app_settings' => 'Préférences de l\'application',
     'app_name' => 'Nom de l\'application',
     'app_name_desc' => 'Ce nom est affiché dans l\'en-tête et les e-mails.',
-    'app_name_header' => 'Afficher le nom dans l\'en-tête?',
-    'app_public_viewing' => 'Accepter le visionnage public des pages?',
-    'app_secure_images' => 'Activer l\'ajout d\'image sécurisé?',
+    'app_name_header' => 'Afficher le nom dans l\'en-tête ?',
+    'app_public_viewing' => 'Accepter le visionnage public des pages ?',
+    'app_secure_images' => 'Activer l\'ajout d\'image sécurisé ?',
     'app_secure_images_desc' => 'Pour des questions de performances, toutes les images sont publiques. Cette option ajoute une chaîne aléatoire difficile à deviner dans les URLs des images.',
     'app_editor' => 'Editeur des pages',
     'app_editor_desc' => 'Sélectionnez l\'éditeur qui sera utilisé pour modifier les pages.',
     'app_custom_html' => 'HTML personnalisé dans l\'en-tête',
-    'app_custom_html_desc' => 'Le contenu inséré ici sera jouté en bas de la balise <head> de toutes les pages. Vous pouvez l\'utiliser pour ajouter du CSS personnalisé ou un tracker analytique.',
+    'app_custom_html_desc' => 'Le contenu inséré ici sera ajouté en bas de la balise <head> de toutes les pages. Vous pouvez l\'utiliser pour ajouter du CSS personnalisé ou un tracker analytique.',
     'app_logo' => 'Logo de l\'Application',
     'app_logo_desc' => 'Cette image doit faire 43px de hauteur. <br>Les images plus larges seront réduites.',
     'app_primary_color' => 'Couleur principale de l\'application',
@@ -37,9 +37,9 @@ return [
      */
 
     'reg_settings' => 'Préférence pour l\'inscription',
-    'reg_allow' => 'Accepter l\'inscription?',
+    'reg_allow' => 'Accepter l\'inscription ?',
     'reg_default_role' => 'Rôle par défaut lors de l\'inscription',
-    'reg_confirm_email' => 'Obliger la confirmation par e-mail?',
+    'reg_confirm_email' => 'Obliger la confirmation par e-mail ?',
     'reg_confirm_email_desc' => 'Si la restriction de domaine est activée, la confirmation sera automatiquement obligatoire et cette valeur sera ignorée.',
     'reg_confirm_restrict_domain' => 'Restreindre l\'inscription à un domaine',
     'reg_confirm_restrict_domain_desc' => 'Entrez une liste de domaines acceptés lors de l\'inscription, séparés par une virgule. Les utilisateur recevront un e-mail de confirmation à cette adresse. <br> Les utilisateurs pourront changer leur adresse après inscription s\'ils le souhaitent.',
@@ -57,17 +57,17 @@ return [
     'role_delete_confirm' => 'Ceci va supprimer le rôle \':roleName\'.',
     'role_delete_users_assigned' => 'Ce rôle a :userCount utilisateurs assignés. Vous pouvez choisir un rôle de remplacement pour ces utilisateurs.',
     'role_delete_no_migration' => "Ne pas assigner de nouveau rôle",
-    'role_delete_sure' => 'Êtes vous sûr(e) de vouloir supprimer ce rôle?',
+    'role_delete_sure' => 'Êtes vous sûr(e) de vouloir supprimer ce rôle ?',
     'role_delete_success' => 'Le rôle a été supprimé avec succès',
     'role_edit' => 'Modifier le rôle',
     'role_details' => 'Détails du rôle',
-    'role_name' => 'Nom du Rôle',
+    'role_name' => 'Nom du rôle',
     'role_desc' => 'Courte description du rôle',
     'role_system' => 'Permissions système',
     'role_manage_users' => 'Gérer les utilisateurs',
     'role_manage_roles' => 'Gérer les rôles et permissions',
     'role_manage_entity_permissions' => 'Gérer les permissions sur les livres, chapitres et pages',
-    'role_manage_own_entity_permissions' => 'Gérer les permissions de ses propres livres chapitres et pages',
+    'role_manage_own_entity_permissions' => 'Gérer les permissions de ses propres livres, chapitres, et pages',
     'role_manage_settings' => 'Gérer les préférences de l\'application',
     'role_asset' => 'Asset Permissions',
     'role_asset_desc' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.',
@@ -94,7 +94,7 @@ return [
     'users_delete' => 'Supprimer un utilisateur',
     'users_delete_named' => 'Supprimer l\'utilisateur :userName',
     'users_delete_warning' => 'Ceci va supprimer \':userName\' du système.',
-    'users_delete_confirm' => 'Êtes-vous sûr(e) de vouloir supprimer cet utilisateur?',
+    'users_delete_confirm' => 'Êtes-vous sûr(e) de vouloir supprimer cet utilisateur ?',
     'users_delete_success' => 'Utilisateurs supprimés avec succès',
     'users_edit' => 'Modifier l\'utilisateur',
     'users_edit_profile' => 'Modifier le profil',
@@ -106,7 +106,7 @@ return [
     'users_social_accounts_info' => 'Vous pouvez connecter des réseaux sociaux à votre compte pour vous connecter plus rapidement. Déconnecter un compte n\'enlèvera pas les accès autorisés précédemment sur votre compte de réseau social.',
     'users_social_connect' => 'Connecter le compte',
     'users_social_disconnect' => 'Déconnecter le compte',
-    'users_social_connected' => 'Votre compte :socialAccount a élté ajouté avec succès.',
+    'users_social_connected' => 'Votre compte :socialAccount a été ajouté avec succès.',
     'users_social_disconnected' => 'Votre compte :socialAccount a été déconnecté avec succès',
 
 ];

From 0dc9d0bed7fff93fd57edcfafe9704b51e647533 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Le=20Gal?= <jerome@joworld.net>
Date: Sat, 22 Jul 2017 23:43:50 +0200
Subject: [PATCH 59/83] errors.php: add missing french translation

---
 resources/lang/fr/errors.php | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/resources/lang/fr/errors.php b/resources/lang/fr/errors.php
index d4390e0ba..4197b1708 100644
--- a/resources/lang/fr/errors.php
+++ b/resources/lang/fr/errors.php
@@ -18,19 +18,19 @@ return [
     'ldap_fail_anonymous' => 'L\'accès LDAP anonyme n\'a pas abouti',
     'ldap_fail_authed' => 'L\'accès LDAP n\'a pas abouti avec cet utilisateur et ce mot de passe',
     'ldap_extension_not_installed' => 'L\'extention LDAP PHP n\'est pas installée',
-    'ldap_cannot_connect' => 'Cannot connect to ldap server, Initial connection failed',
-    'social_no_action_defined' => 'No action defined',
+    'ldap_cannot_connect' => 'Impossible de se connecter au serveur LDAP, la connexion initiale a échoué',
+    'social_no_action_defined' => 'Pas d\'action définie',
     'social_account_in_use' => 'Ce compte :socialAccount est déjà utilisé. Essayez de vous connecter via :socialAccount.',
     'social_account_email_in_use' => 'L\'email :email est déjà utilisé. Si vous avez déjà un compte :socialAccount, vous pouvez le joindre à votre profil existant.',
     'social_account_existing' => 'Ce compte :socialAccount est déjà rattaché à votre profil.',
     'social_account_already_used_existing' => 'Ce compte :socialAccount est déjà utilisé par un autre utilisateur.',
     'social_account_not_used' => 'Ce compte :socialAccount n\'est lié à aucun utilisateur. ',
     'social_account_register_instructions' => 'Si vous n\'avez pas encore de compte, vous pouvez le lier avec l\'option :socialAccount.',
-    'social_driver_not_found' => 'Social driver not found',
-    'social_driver_not_configured' => 'Your :socialAccount social settings are not configured correctly.',
+    'social_driver_not_found' => 'Pilote de compte social absent',
+    'social_driver_not_configured' => 'Vos préférences pour le compte :socialAccount sont incorrectes.',
 
     // System
-    'path_not_writable' => 'File path :filePath could not be uploaded to. Ensure it is writable to the server.',
+    'path_not_writable' => 'Impossible d\'écrire dans :filePath. Assurez-vous d\'avoir les droits d\'écriture sur le serveur',
     'cannot_get_image_from_url' => 'Impossible de récupérer l\'image depuis :url',
     'cannot_create_thumbs' => 'Le serveur ne peut pas créer de miniature, vérifier que l\'extension PHP GD est installée.',
     'server_upload_limit' => 'La taille du fichier est trop grande.',

From 0b2c3c1aa7379e442647ee63c85bda2fd3401102 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Le=20Gal?= <jerome@joworld.net>
Date: Sat, 22 Jul 2017 23:44:01 +0200
Subject: [PATCH 60/83] settings.php: add missing french translation

---
 resources/lang/fr/settings.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/resources/lang/fr/settings.php b/resources/lang/fr/settings.php
index 7899cdb2a..92e623795 100644
--- a/resources/lang/fr/settings.php
+++ b/resources/lang/fr/settings.php
@@ -30,7 +30,7 @@ return [
     'app_logo' => 'Logo de l\'Application',
     'app_logo_desc' => 'Cette image doit faire 43px de hauteur. <br>Les images plus larges seront réduites.',
     'app_primary_color' => 'Couleur principale de l\'application',
-    'app_primary_color_desc' => 'This should be a hex value. <br>Leave empty to reset to the default color.',
+    'app_primary_color_desc' => 'Cela devrait être une valeur hexadécimale. <br>Laisser vide pour rétablir la couleur par défaut.',
 
     /**
      * Registration settings

From b4dcde252b8720baac214720f2c6740ff1796bac Mon Sep 17 00:00:00 2001
From: 10bass <10bass@users.noreply.github.com>
Date: Mon, 24 Jul 2017 20:06:15 -0400
Subject: [PATCH 61/83] Update search.js

Trying to apply an exact match or tag would previously redirect to /search, regardless of the installation path.
---
 resources/assets/js/vues/search.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/resources/assets/js/vues/search.js b/resources/assets/js/vues/search.js
index 515ca3bc9..8cb790d24 100644
--- a/resources/assets/js/vues/search.js
+++ b/resources/assets/js/vues/search.js
@@ -149,7 +149,7 @@ let methods = {
 
     updateSearch(e) {
         e.preventDefault();
-        window.location = '/search?term=' + encodeURIComponent(this.termString);
+        window.location = window.baseUrl('/search?term=' + encodeURIComponent(this.termString));
     },
 
     enableDate(optionName) {
@@ -192,4 +192,4 @@ function created() {
 
 module.exports = {
     data, computed, methods, created
-};
\ No newline at end of file
+};

From 072f6b103e5bddbc155e41e275d023d217cf6600 Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Thu, 27 Jul 2017 15:14:53 +0100
Subject: [PATCH 62/83] Vastly sped up gulp watch and added livereload

---
 gulpfile.js  | 28 ++++++++++++++++++++--------
 package.json |  1 +
 2 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/gulpfile.js b/gulpfile.js
index b72bb366d..08c8886bd 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -12,8 +12,10 @@ const babelify = require("babelify");
 const watchify = require("watchify");
 const envify = require("envify");
 const gutil = require("gulp-util");
+const liveReload = require('gulp-livereload');
 
 if (argv.production) process.env.NODE_ENV = 'production';
+let isProduction = argv.production || process.env.NODE_ENV === 'production';
 
 gulp.task('styles', () => {
     let chain = gulp.src(['resources/assets/sass/**/*.scss'])
@@ -24,31 +26,40 @@ gulp.task('styles', () => {
             }}))
         .pipe(sass())
         .pipe(autoprefixer('last 2 versions'));
-    if (argv.production) chain = chain.pipe(minifycss());
-    return chain.pipe(gulp.dest('public/css/'));
+    if (isProduction) chain = chain.pipe(minifycss());
+    return chain.pipe(gulp.dest('public/css/')).pipe(liveReload());
 });
 
 
-function scriptTask(watch=false) {
+function scriptTask(watch = false) {
 
     let props = {
         basedir: 'resources/assets/js',
         debug: true,
-        entries: ['global.js']
+        entries: ['global.js'],
+        fast: !isProduction,
+        cache: {},
+        packageCache: {},
     };
 
     let bundler = watch ? watchify(browserify(props), { poll: true }) : browserify(props);
-    bundler.transform(envify, {global: true}).transform(babelify, {presets: ['es2015']});
+
+    if (isProduction) {
+        bundler.transform(envify, {global: true}).transform(babelify, {presets: ['es2015']});
+    }
+
     function rebundle() {
         let stream = bundler.bundle();
         stream = stream.pipe(source('common.js'));
-        if (argv.production) stream = stream.pipe(buffer()).pipe(uglify());
-        return stream.pipe(gulp.dest('public/js/'));
+        if (isProduction) stream = stream.pipe(buffer()).pipe(uglify());
+        return stream.pipe(gulp.dest('public/js/')).pipe(liveReload());
     }
+
     bundler.on('update', function() {
         rebundle();
-        gutil.log('Rebundle...');
+        gutil.log('Rebundling assets...');
     });
+
     bundler.on('log', gutil.log);
     return rebundle();
 }
@@ -57,6 +68,7 @@ gulp.task('scripts', () => {scriptTask(false)});
 gulp.task('scripts-watch', () => {scriptTask(true)});
 
 gulp.task('default', ['styles', 'scripts-watch'], () => {
+    liveReload.listen();
     gulp.watch("resources/assets/sass/**/*.scss", ['styles']);
 });
 
diff --git a/package.json b/package.json
index 93f62bf1f..fb5e5a54a 100644
--- a/package.json
+++ b/package.json
@@ -13,6 +13,7 @@
     "gulp": "3.9.1",
     "gulp-autoprefixer": "3.1.1",
     "gulp-clean-css": "^3.0.4",
+    "gulp-livereload": "^3.8.1",
     "gulp-minify-css": "1.2.4",
     "gulp-plumber": "1.1.0",
     "gulp-sass": "3.1.0",

From 5cd08ab2f53ff7bcf21864772ef1349b1c89c627 Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Thu, 27 Jul 2017 15:43:17 +0100
Subject: [PATCH 63/83] Fixed custom plugin when developing

---
 resources/assets/js/pages/page-form.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/resources/assets/js/pages/page-form.js b/resources/assets/js/pages/page-form.js
index 81d1cdea6..f6f66beb4 100644
--- a/resources/assets/js/pages/page-form.js
+++ b/resources/assets/js/pages/page-form.js
@@ -120,7 +120,7 @@ function codePlugin() {
         $codeMirrorContainer.replaceWith($pre);
     }
 
-    window.tinymce.PluginManager.add('codeeditor', (editor, url) => {
+    window.tinymce.PluginManager.add('codeeditor', function(editor, url) {
 
         let $ = editor.$;
 

From ec83f830172721745b996eb3b4fddd19ff7ca9bb Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Thu, 27 Jul 2017 16:10:58 +0100
Subject: [PATCH 64/83] Added breadcrumbs to pages in entity select

Fixes #391
---
 package.json                                  |  3 ++-
 resources/views/chapters/list-item.blade.php  |  2 +-
 resources/views/pages/list-item.blade.php     | 12 +++++++++
 .../views/search/entity-ajax-list.blade.php   |  2 +-
 tests/Entity/EntitySearchTest.php             | 27 ++++++++++++++++---
 5 files changed, 39 insertions(+), 7 deletions(-)

diff --git a/package.json b/package.json
index fb5e5a54a..429572882 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,8 @@
     "build": "gulp build",
     "production": "gulp build --production",
     "dev": "gulp",
-    "watch": "gulp"
+    "watch": "gulp",
+    "permissions": "chown -R $USER:$USER bootstrap/cache storage public/uploads"
   },
   "devDependencies": {
     "babelify": "^7.3.0",
diff --git a/resources/views/chapters/list-item.blade.php b/resources/views/chapters/list-item.blade.php
index 8487a63a3..1ae20b301 100644
--- a/resources/views/chapters/list-item.blade.php
+++ b/resources/views/chapters/list-item.blade.php
@@ -2,7 +2,7 @@
     <h4>
         @if (isset($showPath) && $showPath)
             <a href="{{ $chapter->book->getUrl() }}" class="text-book">
-                <i class="zmdi zmdi-book"></i>{{ $chapter->book->name }}
+                <i class="zmdi zmdi-book"></i>{{ $chapter->book->getShortName() }}
             </a>
             <span class="text-muted">&nbsp;&nbsp;&raquo;&nbsp;&nbsp;</span>
         @endif
diff --git a/resources/views/pages/list-item.blade.php b/resources/views/pages/list-item.blade.php
index 70b309e7d..f440a52f6 100644
--- a/resources/views/pages/list-item.blade.php
+++ b/resources/views/pages/list-item.blade.php
@@ -1,5 +1,17 @@
 <div class="page {{$page->draft ? 'draft' : ''}} entity-list-item" data-entity-type="page" data-entity-id="{{$page->id}}">
     <h4>
+        @if (isset($showPath) && $showPath)
+            <a href="{{ $page->book->getUrl() }}" class="text-book">
+                <i class="zmdi zmdi-book"></i>{{ $page->book->getShortName() }}
+            </a>
+            <span class="text-muted">&nbsp;&nbsp;&raquo;&nbsp;&nbsp;</span>
+            @if($page->chapter)
+                <a href="{{ $page->chapter->getUrl() }}" class="text-chapter">
+                    <i class="zmdi zmdi-collection-bookmark"></i>{{ $page->chapter->getShortName() }}
+                </a>
+                <span class="text-muted">&nbsp;&nbsp;&raquo;&nbsp;&nbsp;</span>
+            @endif
+        @endif
         <a href="{{ $page->getUrl() }}" class="text-page entity-list-item-link"><i class="zmdi zmdi-file-text"></i><span class="entity-list-item-name">{{ $page->name }}</span></a>
     </h4>
 
diff --git a/resources/views/search/entity-ajax-list.blade.php b/resources/views/search/entity-ajax-list.blade.php
index 93f2633aa..9a146506f 100644
--- a/resources/views/search/entity-ajax-list.blade.php
+++ b/resources/views/search/entity-ajax-list.blade.php
@@ -2,7 +2,7 @@
     @if(count($entities) > 0)
         @foreach($entities as $index => $entity)
             @if($entity->isA('page'))
-                @include('pages/list-item', ['page' => $entity])
+                @include('pages/list-item', ['page' => $entity, 'showPath' => true])
             @elseif($entity->isA('book'))
                 @include('books/list-item', ['book' => $entity])
             @elseif($entity->isA('chapter'))
diff --git a/tests/Entity/EntitySearchTest.php b/tests/Entity/EntitySearchTest.php
index 94e28e944..587430918 100644
--- a/tests/Entity/EntitySearchTest.php
+++ b/tests/Entity/EntitySearchTest.php
@@ -1,6 +1,9 @@
 <?php namespace Tests;
 
 
+use BookStack\Chapter;
+use BookStack\Page;
+
 class EntitySearchTest extends TestCase
 {
 
@@ -75,10 +78,10 @@ class EntitySearchTest extends TestCase
             ])
         ];
 
-        $pageA = \BookStack\Page::first();
+        $pageA = Page::first();
         $pageA->tags()->saveMany($newTags);
 
-        $pageB = \BookStack\Page::all()->last();
+        $pageB = Page::all()->last();
         $pageB->tags()->create(['name' => 'animal', 'value' => 'dog']);
 
         $this->asEditor();
@@ -160,8 +163,8 @@ class EntitySearchTest extends TestCase
 
     public function test_ajax_entity_search()
     {
-        $page = \BookStack\Page::all()->last();
-        $notVisitedPage = \BookStack\Page::first();
+        $page = Page::all()->last();
+        $notVisitedPage = Page::first();
 
         // Visit the page to make popular
         $this->asEditor()->get($page->getUrl());
@@ -176,4 +179,20 @@ class EntitySearchTest extends TestCase
         $defaultListTest->assertSee($page->name);
         $defaultListTest->assertDontSee($notVisitedPage->name);
     }
+
+    public function test_ajax_entity_serach_shows_breadcrumbs()
+    {
+        $chapter = Chapter::first();
+        $page = $chapter->pages->first();
+        $this->asEditor();
+
+        $pageSearch = $this->get('/ajax/search/entities?term=' . urlencode($page->name));
+        $pageSearch->assertSee($page->name);
+        $pageSearch->assertSee($chapter->getShortName());
+        $pageSearch->assertSee($page->book->getShortName());
+
+        $chapterSearch = $this->get('/ajax/search/entities?term=' . urlencode($chapter->name));
+        $chapterSearch->assertSee($chapter->name);
+        $chapterSearch->assertSee($chapter->book->getShortName());
+    }
 }

From 21247e10d02b22c34883ab060796801867cda732 Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Thu, 27 Jul 2017 16:28:23 +0100
Subject: [PATCH 65/83] Reverted travis changes and added html escaping

---
 .travis.yml                             | 11 +----------
 resources/views/books/show.blade.php    |  2 +-
 resources/views/chapters/show.blade.php |  2 +-
 3 files changed, 3 insertions(+), 12 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index f03865201..839d3be3f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -4,15 +4,6 @@ language: php
 php:
   - 7.0
 
-addons:
-  apt:
-    packages:
-      - ldap-utils
-      - slapd
-
-before_install:
-  - echo "extension=ldap.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
-
 cache:
   directories:
     - $HOME/.composer/cache
@@ -34,4 +25,4 @@ after_failure:
   - cat storage/logs/laravel.log
 
 script:
-  - phpunit --stop-on-error --stop-on-failure
+  - phpunit
diff --git a/resources/views/books/show.blade.php b/resources/views/books/show.blade.php
index b6a9bcfba..9882f09a2 100644
--- a/resources/views/books/show.blade.php
+++ b/resources/views/books/show.blade.php
@@ -56,7 +56,7 @@
 
                 <h1>{{$book->name}}</h1>
                 <div class="book-content" v-if="!searching">
-                    <p class="text-muted" v-pre>{!! nl2br($book->description) !!}</p>
+                    <p class="text-muted" v-pre>{!! nl2br(e($book->description)) !!}</p>
 
                     <div class="page-list" v-pre>
                         <hr>
diff --git a/resources/views/chapters/show.blade.php b/resources/views/chapters/show.blade.php
index 5b36037ca..9a3195555 100644
--- a/resources/views/chapters/show.blade.php
+++ b/resources/views/chapters/show.blade.php
@@ -52,7 +52,7 @@
             <div class="col-md-7">
                 <h1>{{ $chapter->name }}</h1>
                 <div class="chapter-content" v-if="!searching">
-                    <p class="text-muted">{!! nl2br($chapter->description) !!}</p>
+                    <p class="text-muted">{!! nl2br(e($chapter->description)) !!}</p>
 
                     @if(count($pages) > 0)
                         <div class="page-list">

From ac7a8a8e1e6f861f9df3f4ba62260b546736581b Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Thu, 27 Jul 2017 19:07:58 +0100
Subject: [PATCH 66/83] Expanded the available editor shortcuts in both editors

Adds formatting on ctrl+nums for everything on formats dropdown.
Closes #85.
---
 resources/assets/js/directives.js      | 116 ++++++++++++++++++++-----
 resources/assets/js/pages/page-form.js |  69 +++++++++++++--
 2 files changed, 152 insertions(+), 33 deletions(-)

diff --git a/resources/assets/js/directives.js b/resources/assets/js/directives.js
index d783fd682..8d7d89cee 100644
--- a/resources/assets/js/directives.js
+++ b/resources/assets/js/directives.js
@@ -193,30 +193,6 @@ module.exports = function (ngApp, events) {
                 }
 
                 scope.tinymce.extraSetups.push(tinyMceSetup);
-
-                // Custom tinyMCE plugins
-                tinymce.PluginManager.add('customhr', function (editor) {
-                    editor.addCommand('InsertHorizontalRule', function () {
-                        let hrElem = document.createElement('hr');
-                        let cNode = editor.selection.getNode();
-                        let parentNode = cNode.parentNode;
-                        parentNode.insertBefore(hrElem, cNode);
-                    });
-
-                    editor.addButton('hr', {
-                        icon: 'hr',
-                        tooltip: 'Horizontal line',
-                        cmd: 'InsertHorizontalRule'
-                    });
-
-                    editor.addMenuItem('hr', {
-                        icon: 'hr',
-                        text: 'Horizontal line',
-                        cmd: 'InsertHorizontalRule',
-                        context: 'insert'
-                    });
-                });
-
                 tinymce.init(scope.tinymce);
             }
         }
@@ -257,6 +233,21 @@ module.exports = function (ngApp, events) {
                 extraKeys[`${metaKey}-S`] = function(cm) {scope.$emit('save-draft');};
                 // Show link selector
                 extraKeys[`Shift-${metaKey}-K`] = function(cm) {showLinkSelector()};
+                // Insert Link
+                extraKeys[`${metaKey}-K`] = function(cm) {insertLink()};
+                // FormatShortcuts
+                extraKeys[`${metaKey}-1`] = function(cm) {replaceLineStart('##');};
+                extraKeys[`${metaKey}-2`] = function(cm) {replaceLineStart('###');};
+                extraKeys[`${metaKey}-3`] = function(cm) {replaceLineStart('####');};
+                extraKeys[`${metaKey}-4`] = function(cm) {replaceLineStart('#####');};
+                extraKeys[`${metaKey}-5`] = function(cm) {replaceLineStart('');};
+                extraKeys[`${metaKey}-d`] = function(cm) {replaceLineStart('');};
+                extraKeys[`${metaKey}-6`] = function(cm) {replaceLineStart('>');};
+                extraKeys[`${metaKey}-q`] = function(cm) {replaceLineStart('>');};
+                extraKeys[`${metaKey}-7`] = function(cm) {wrapSelection('\n```\n', '\n```');};
+                extraKeys[`${metaKey}-8`] = function(cm) {wrapSelection('`', '`');};
+                extraKeys[`Shift-${metaKey}-E`] = function(cm) {wrapSelection('`', '`');};
+                extraKeys[`${metaKey}-9`] = function(cm) {wrapSelection('<p class="callout info">', '</div>');};
                 cm.setOption('extraKeys', extraKeys);
 
                 // Update data on content change
@@ -309,6 +300,73 @@ module.exports = function (ngApp, events) {
                     cm.setSelections(cursor);
                 }
 
+                // Helper to replace the start of the line
+                function replaceLineStart(newStart) {
+                    let cursor = cm.getCursor();
+                    let lineContent = cm.getLine(cursor.line);
+                    let lineLen = lineContent.length;
+                    let lineStart = lineContent.split(' ')[0];
+
+                    // Remove symbol if already set
+                    if (lineStart === newStart) {
+                        lineContent = lineContent.replace(`${newStart} `, '');
+                        cm.replaceRange(lineContent, {line: cursor.line, ch: 0}, {line: cursor.line, ch: lineLen});
+                        cm.setCursor({line: cursor.line, ch: cursor.ch - (newStart.length + 1)});
+                        return;
+                    }
+
+                    let alreadySymbol = /^[#>`]/.test(lineStart);
+                    let posDif = 0;
+                    if (alreadySymbol) {
+                        posDif = newStart.length - lineStart.length;
+                        lineContent = lineContent.replace(lineStart, newStart).trim();
+                    } else if (newStart !== '') {
+                        posDif = newStart.length + 1;
+                        lineContent = newStart + ' ' + lineContent;
+                    }
+                    cm.replaceRange(lineContent, {line: cursor.line, ch: 0}, {line: cursor.line, ch: lineLen});
+                    cm.setCursor({line: cursor.line, ch: cursor.ch + posDif});
+                }
+
+                function wrapLine(start, end) {
+                    let cursor = cm.getCursor();
+                    let lineContent = cm.getLine(cursor.line);
+                    let lineLen = lineContent.length;
+                    let newLineContent = lineContent;
+
+                    if (lineContent.indexOf(start) === 0 && lineContent.slice(-end.length) === end) {
+                        newLineContent = lineContent.slice(start.length, lineContent.length - end.length);
+                    } else {
+                        newLineContent = `${start}${lineContent}${end}`;
+                    }
+
+                    cm.replaceRange(newLineContent, {line: cursor.line, ch: 0}, {line: cursor.line, ch: lineLen});
+                    cm.setCursor({line: cursor.line, ch: cursor.ch + (newLineContent.length - lineLen)});
+                }
+
+                function wrapSelection(start, end) {
+                    let selection = cm.getSelection();
+                    if (selection === '') return wrapLine(start, end);
+                    let newSelection = selection;
+                    let frontDiff = 0;
+                    let endDiff = 0;
+
+                    if (selection.indexOf(start) === 0 && selection.slice(-end.length) === end) {
+                        newSelection = selection.slice(start.length, selection.length - end.length);
+                        endDiff = -(end.length + start.length);
+                    } else {
+                        newSelection = `${start}${selection}${end}`;
+                        endDiff = start.length + end.length;
+                    }
+
+                    let selections = cm.listSelections()[0];
+                    cm.replaceSelection(newSelection);
+                    let headFirst = selections.head.ch <= selections.anchor.ch;
+                    selections.head.ch += headFirst ? frontDiff : endDiff;
+                    selections.anchor.ch += headFirst ? endDiff : frontDiff;
+                    cm.setSelections([selections]);
+                }
+
                 // Handle image upload and add image into markdown content
                 function uploadImage(file) {
                     if (file === null || file.type.indexOf('image') !== 0) return;
@@ -351,6 +409,16 @@ module.exports = function (ngApp, events) {
                     });
                 }
 
+                function insertLink() {
+                    let cursorPos = cm.getCursor('from');
+                    let selectedText = cm.getSelection() || '';
+                    let newText = `[${selectedText}]()`;
+                    cm.focus();
+                    cm.replaceSelection(newText);
+                    let cursorPosDiff = (selectedText === '') ? -3 : -1;
+                    cm.setCursor(cursorPos.line, cursorPos.ch + newText.length+cursorPosDiff);
+                }
+
                 // Show the image manager and handle image insertion
                 function showImageManager() {
                     let cursorPos = cm.getCursor('from');
diff --git a/resources/assets/js/pages/page-form.js b/resources/assets/js/pages/page-form.js
index f6f66beb4..4f4c1fbe0 100644
--- a/resources/assets/js/pages/page-form.js
+++ b/resources/assets/js/pages/page-form.js
@@ -52,14 +52,36 @@ function editorPaste(e, editor) {
 function registerEditorShortcuts(editor) {
     // Headers
     for (let i = 1; i < 5; i++) {
-        editor.addShortcut('meta+' + i, '', ['FormatBlock', false, 'h' + i]);
+        editor.shortcuts.add('meta+' + i, '', ['FormatBlock', false, 'h' + (i+1)]);
     }
 
     // Other block shortcuts
-    editor.addShortcut('meta+q', '', ['FormatBlock', false, 'blockquote']);
-    editor.addShortcut('meta+d', '', ['FormatBlock', false, 'p']);
-    editor.addShortcut('meta+e', '', ['codeeditor', false, 'pre']);
-    editor.addShortcut('meta+shift+E', '', ['FormatBlock', false, 'code']);
+    editor.shortcuts.add('meta+5', '', ['FormatBlock', false, 'p']);
+    editor.shortcuts.add('meta+d', '', ['FormatBlock', false, 'p']);
+    editor.shortcuts.add('meta+6', '', ['FormatBlock', false, 'blockquote']);
+    editor.shortcuts.add('meta+q', '', ['FormatBlock', false, 'blockquote']);
+    editor.shortcuts.add('meta+7', '', ['codeeditor', false, 'pre']);
+    editor.shortcuts.add('meta+e', '', ['codeeditor', false, 'pre']);
+    editor.shortcuts.add('meta+8', '', ['FormatBlock', false, 'code']);
+    editor.shortcuts.add('meta+shift+E', '', ['FormatBlock', false, 'code']);
+    // Loop through callout styles
+    editor.shortcuts.add('meta+9', '', function() {
+        let selectedNode = editor.selection.getNode();
+        let formats = ['info', 'success', 'warning', 'danger'];
+
+        if (!selectedNode || selectedNode.className.indexOf('callout') === -1) {
+            editor.formatter.apply('calloutinfo');
+            return;
+        }
+
+        for (let i = 0; i < formats.length; i++) {
+            if (selectedNode.className.indexOf(formats[i]) === -1) continue;
+            let newFormat = (i === formats.length -1) ? formats[0] : formats[i+1];
+            editor.formatter.apply('callout' + newFormat);
+            return;
+        }
+        editor.formatter.apply('p');
+    });
 }
 
 
@@ -173,7 +195,32 @@ function codePlugin() {
     });
 }
 
+function hrPlugin() {
+    window.tinymce.PluginManager.add('customhr', function (editor) {
+        editor.addCommand('InsertHorizontalRule', function () {
+            let hrElem = document.createElement('hr');
+            let cNode = editor.selection.getNode();
+            let parentNode = cNode.parentNode;
+            parentNode.insertBefore(hrElem, cNode);
+        });
+
+        editor.addButton('hr', {
+            icon: 'hr',
+            tooltip: 'Horizontal line',
+            cmd: 'InsertHorizontalRule'
+        });
+
+        editor.addMenuItem('hr', {
+            icon: 'hr',
+            text: 'Horizontal line',
+            cmd: 'InsertHorizontalRule',
+            context: 'insert'
+        });
+    });
+}
+
 module.exports = function() {
+    hrPlugin();
     codePlugin();
     let settings = {
         selector: '#html-editor',
@@ -207,10 +254,10 @@ module.exports = function() {
             {title: "Code Block", icon: "code", cmd: 'codeeditor', format: 'codeeditor'},
             {title: "Inline Code", icon: "code", inline: "code"},
             {title: "Callouts", items: [
-                {title: "Success", block: 'p', exact: true, attributes : {'class' : 'callout success'}},
-                {title: "Info", block: 'p', exact: true, attributes : {'class' : 'callout info'}},
-                {title: "Warning", block: 'p', exact: true, attributes : {'class' : 'callout warning'}},
-                {title: "Danger", block: 'p', exact: true, attributes : {'class' : 'callout danger'}}
+                {title: "Info", format: 'calloutinfo'},
+                {title: "Success", format: 'calloutsuccess'},
+                {title: "Warning", format: 'calloutwarning'},
+                {title: "Danger", format: 'calloutdanger'}
             ]},
         ],
         style_formats_merge: false,
@@ -219,6 +266,10 @@ module.exports = function() {
             alignleft: {selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'align-left'},
             aligncenter: {selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'align-center'},
             alignright: {selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'align-right'},
+            calloutsuccess: {block: 'p', exact: true, attributes: {class: 'callout success'}},
+            calloutinfo: {block: 'p', exact: true, attributes: {class: 'callout info'}},
+            calloutwarning: {block: 'p', exact: true, attributes: {class: 'callout warning'}},
+            calloutdanger: {block: 'p', exact: true, attributes: {class: 'callout danger'}}
         },
         file_browser_callback: function (field_name, url, type, win) {
 

From 9126da629925a9dd7a637f3280d7e9614f48a45e Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Fri, 28 Jul 2017 11:32:42 +0100
Subject: [PATCH 67/83] Updated dev command details

Closes #453
---
 readme.md | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/readme.md b/readme.md
index 4f025e3c2..6067fbb94 100644
--- a/readme.md
+++ b/readme.md
@@ -22,9 +22,12 @@ All development on BookStack is currently done on the master branch. When it's t
 SASS is used to help the CSS development and the JavaScript is run through browserify/babel to allow for writing ES6 code. Both of these are done using gulp. To run the build task you can use the following commands:
 
 ``` bash
-# Build and minify for production
+# Build assets for development
 npm run-script build
 
+# Build and minify assets for production
+npm run-script production
+
 # Build for dev (With sourcemaps) and watch for changes
 npm run-script dev
 ```

From d6e87420c32ea64c5fb843176b75cd3f02fb5db7 Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Tue, 1 Aug 2017 20:05:49 +0100
Subject: [PATCH 68/83] Merged comment migrations and incremented dev version

---
 ...017_01_01_130541_create_comments_table.php | 112 ------------------
 ...7_06_04_060012_comments_add_active_col.php |  38 ------
 ...017_08_01_130541_create_comments_table.php |  66 +++++++++++
 version                                       |   2 +-
 4 files changed, 67 insertions(+), 151 deletions(-)
 delete mode 100644 database/migrations/2017_01_01_130541_create_comments_table.php
 delete mode 100644 database/migrations/2017_06_04_060012_comments_add_active_col.php
 create mode 100644 database/migrations/2017_08_01_130541_create_comments_table.php

diff --git a/database/migrations/2017_01_01_130541_create_comments_table.php b/database/migrations/2017_01_01_130541_create_comments_table.php
deleted file mode 100644
index f4ece31a7..000000000
--- a/database/migrations/2017_01_01_130541_create_comments_table.php
+++ /dev/null
@@ -1,112 +0,0 @@
-<?php
-
-use Illuminate\Support\Facades\Schema;
-use Illuminate\Database\Schema\Blueprint;
-use Illuminate\Database\Migrations\Migration;
-
-class CreateCommentsTable extends Migration
-{
-    /**
-     * Run the migrations.
-     *
-     * @return void
-     */
-    public function up()
-    {
-        if (Schema::hasTable('comments')) {
-            return;
-        }
-        Schema::create('comments', function (Blueprint $table) {
-            $table->increments('id')->unsigned();
-            $table->integer('page_id')->unsigned();
-            $table->longText('text')->nullable();
-            $table->longText('html')->nullable();
-            $table->integer('parent_id')->unsigned()->nullable();
-            $table->integer('created_by')->unsigned();
-            $table->integer('updated_by')->unsigned()->nullable();
-            $table->index(['page_id', 'parent_id']);
-            $table->timestamps();
-
-            // Get roles with permissions we need to change
-            $adminRoleId = DB::table('roles')->where('system_name', '=', 'admin')->first()->id;
-
-            // Create & attach new entity permissions
-            $ops = ['Create All', 'Create Own', 'Update All', 'Update Own', 'Delete All', 'Delete Own'];
-            $entity = 'Comment';
-            foreach ($ops as $op) {
-                $permissionId = DB::table('role_permissions')->insertGetId([
-                    'name' => strtolower($entity) . '-' . strtolower(str_replace(' ', '-', $op)),
-                    'display_name' => $op . ' ' . $entity . 's',
-                    'created_at' => \Carbon\Carbon::now()->toDateTimeString(),
-                    'updated_at' => \Carbon\Carbon::now()->toDateTimeString()
-                ]);
-                DB::table('permission_role')->insert([
-                    'role_id' => $adminRoleId,
-                    'permission_id' => $permissionId
-                ]);
-            }
-
-            // Get roles with permissions we need to change
-            /*
-            $editorRole = DB::table('roles')->where('name', '=', 'editor')->first();
-            if (!empty($editorRole)) {
-                $editorRoleId = $editorRole->id;
-                // Create & attach new entity permissions
-                $ops = ['Create All', 'Create Own', 'Update Own', 'Delete Own'];
-                $entity = 'Comment';
-                foreach ($ops as $op) {
-                    $permissionId = DB::table('role_permissions')->insertGetId([
-                        'name' => strtolower($entity) . '-' . strtolower(str_replace(' ', '-', $op)),
-                        'display_name' => $op . ' ' . $entity . 's',
-                        'created_at' => \Carbon\Carbon::now()->toDateTimeString(),
-                        'updated_at' => \Carbon\Carbon::now()->toDateTimeString()
-                    ]);
-                    DB::table('permission_role')->insert([
-                        'role_id' => $editorRoleId,
-                        'permission_id' => $permissionId
-                    ]);
-                }
-            }
-
-            // Get roles with permissions we need to change
-            $viewerRole = DB::table('roles')->where('name', '=', 'viewer')->first();
-            if (!empty($viewerRole)) {
-                $viewerRoleId = $viewerRole->id;
-                // Create & attach new entity permissions
-                $ops = ['Create All'];
-                $entity = 'Comment';
-                foreach ($ops as $op) {
-                    $permissionId = DB::table('role_permissions')->insertGetId([
-                        'name' => strtolower($entity) . '-' . strtolower(str_replace(' ', '-', $op)),
-                        'display_name' => $op . ' ' . $entity . 's',
-                        'created_at' => \Carbon\Carbon::now()->toDateTimeString(),
-                        'updated_at' => \Carbon\Carbon::now()->toDateTimeString()
-                    ]);
-                    DB::table('permission_role')->insert([
-                        'role_id' => $viewerRoleId,
-                        'permission_id' => $permissionId
-                    ]);
-                }
-            }
-            */
-
-        });
-    }
-
-    /**
-     * Reverse the migrations.
-     *
-     * @return void
-     */
-    public function down()
-    {
-        Schema::dropIfExists('comments');
-        // Create & attach new entity permissions
-        $ops = ['Create All', 'Create Own', 'Update All', 'Update Own', 'Delete All', 'Delete Own'];
-        $entity = 'Comment';
-        foreach ($ops as $op) {
-            $permName = strtolower($entity) . '-' . strtolower(str_replace(' ', '-', $op));
-            DB::table('role_permissions')->where('name', '=', $permName)->delete();
-        }
-    }
-}
diff --git a/database/migrations/2017_06_04_060012_comments_add_active_col.php b/database/migrations/2017_06_04_060012_comments_add_active_col.php
deleted file mode 100644
index 3c6dd1f33..000000000
--- a/database/migrations/2017_06_04_060012_comments_add_active_col.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-use Illuminate\Support\Facades\Schema;
-use Illuminate\Database\Schema\Blueprint;
-use Illuminate\Database\Migrations\Migration;
-
-class CommentsAddActiveCol extends Migration
-{
-    /**
-     * Run the migrations.
-     *
-     * @return void
-     */
-    public function up()
-    {
-        Schema::table('comments', function (Blueprint $table) {
-            // add column active
-            $table->boolean('active')->default(true);
-            $table->dropIndex('comments_page_id_parent_id_index');
-            $table->index(['page_id']);
-        });
-    }
-
-    /**
-     * Reverse the migrations.
-     *
-     * @return void
-     */
-    public function down()
-    {
-        Schema::table('comments', function (Blueprint $table) {
-            // reversing the schema
-            $table->dropIndex('comments_page_id_index');
-            $table->dropColumn('active');
-            $table->index(['page_id', 'parent_id']);
-        });
-    }
-}
diff --git a/database/migrations/2017_08_01_130541_create_comments_table.php b/database/migrations/2017_08_01_130541_create_comments_table.php
new file mode 100644
index 000000000..bfb7eecbf
--- /dev/null
+++ b/database/migrations/2017_08_01_130541_create_comments_table.php
@@ -0,0 +1,66 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class CreateCommentsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('comments', function (Blueprint $table) {
+            $table->increments('id')->unsigned();
+            $table->integer('page_id')->unsigned();
+            $table->longText('text')->nullable();
+            $table->longText('html')->nullable();
+            $table->integer('parent_id')->unsigned()->nullable();
+            $table->integer('created_by')->unsigned();
+            $table->integer('updated_by')->unsigned()->nullable();
+            $table->boolean('active')->default(true);
+
+            $table->index(['page_id']);
+            $table->timestamps();
+
+            // Assign new comment permissions to admin role
+            $adminRoleId = DB::table('roles')->where('system_name', '=', 'admin')->first()->id;
+            // Create & attach new entity permissions
+            $ops = ['Create All', 'Create Own', 'Update All', 'Update Own', 'Delete All', 'Delete Own'];
+            $entity = 'Comment';
+            foreach ($ops as $op) {
+                $permissionId = DB::table('role_permissions')->insertGetId([
+                    'name' => strtolower($entity) . '-' . strtolower(str_replace(' ', '-', $op)),
+                    'display_name' => $op . ' ' . $entity . 's',
+                    'created_at' => \Carbon\Carbon::now()->toDateTimeString(),
+                    'updated_at' => \Carbon\Carbon::now()->toDateTimeString()
+                ]);
+                DB::table('permission_role')->insert([
+                    'role_id' => $adminRoleId,
+                    'permission_id' => $permissionId
+                ]);
+            }
+
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('comments');
+        // Delete comment role permissions
+        $ops = ['Create All', 'Create Own', 'Update All', 'Update Own', 'Delete All', 'Delete Own'];
+        $entity = 'Comment';
+        foreach ($ops as $op) {
+            $permName = strtolower($entity) . '-' . strtolower(str_replace(' ', '-', $op));
+            DB::table('role_permissions')->where('name', '=', $permName)->delete();
+        }
+    }
+}
diff --git a/version b/version
index 1365ed940..de0ad7791 100644
--- a/version
+++ b/version
@@ -1 +1 @@
-v0.17-dev
+v0.18-dev

From 5e5928a8a6092d5250ebaf027796d56d2f37e609 Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Sun, 6 Aug 2017 18:01:49 +0100
Subject: [PATCH 69/83] Added vanilla JS component system

---
 package.json                               |  1 +
 resources/assets/js/components/dropdown.js | 48 ++++++++++++++++++++++
 resources/assets/js/components/index.js    | 21 ++++++++++
 resources/assets/js/directives.js          | 39 ------------------
 resources/assets/js/global.js              |  2 +
 5 files changed, 72 insertions(+), 39 deletions(-)
 create mode 100644 resources/assets/js/components/dropdown.js
 create mode 100644 resources/assets/js/components/index.js

diff --git a/package.json b/package.json
index 429572882..3d3b9c11c 100644
--- a/package.json
+++ b/package.json
@@ -31,6 +31,7 @@
     "angular-sanitize": "^1.5.5",
     "angular-ui-sortable": "^0.17.0",
     "axios": "^0.16.1",
+    "babel-polyfill": "^6.23.0",
     "babel-preset-es2015": "^6.24.1",
     "clipboard": "^1.5.16",
     "codemirror": "^5.26.0",
diff --git a/resources/assets/js/components/dropdown.js b/resources/assets/js/components/dropdown.js
new file mode 100644
index 000000000..0401efce0
--- /dev/null
+++ b/resources/assets/js/components/dropdown.js
@@ -0,0 +1,48 @@
+/**
+ * Dropdown
+ * Provides some simple logic to create simple dropdown menus.
+ */
+class DropDown {
+
+    constructor(elem) {
+        this.container = elem;
+        this.menu = elem.querySelector('ul');
+        this.toggle = elem.querySelector('[dropdown-toggle]');
+        this.setupListeners();
+    }
+
+    show() {
+        this.menu.style.display = 'block';
+        this.menu.classList.add('anim', 'menuIn');
+        this.container.addEventListener('mouseleave', this.hide.bind(this));
+
+        // Focus on first input if existing
+        let input = this.menu.querySelector('input');
+        if (input !== null) input.focus();
+    }
+
+    hide() {
+        this.menu.style.display = 'none';
+        this.menu.classList.remove('anim', 'menuIn');
+    }
+
+    setupListeners() {
+        // Hide menu on option click
+        this.container.addEventListener('click', event => {
+             let possibleChildren = Array.from(this.menu.querySelectorAll('a'));
+             if (possibleChildren.indexOf(event.target) !== -1) this.hide();
+        });
+        // Show dropdown on toggle click
+        this.toggle.addEventListener('click', this.show.bind(this));
+        // Hide menu on enter press
+        this.container.addEventListener('keypress', event => {
+                if (event.keyCode !== 13) return true;
+                event.preventDefault();
+                this.hide();
+                return false;
+        });
+    }
+
+}
+
+module.exports = DropDown;
\ No newline at end of file
diff --git a/resources/assets/js/components/index.js b/resources/assets/js/components/index.js
new file mode 100644
index 000000000..983b25d8f
--- /dev/null
+++ b/resources/assets/js/components/index.js
@@ -0,0 +1,21 @@
+
+let componentMapping = {
+    'dropdown': require('./dropdown'),
+};
+
+window.components = {};
+
+let componentNames = Object.keys(componentMapping);
+
+for (let i = 0, len = componentNames.length; i < len; i++) {
+    let name = componentNames[i];
+    let elems = document.querySelectorAll(`[${name}]`);
+    if (elems.length === 0) continue;
+
+    let component = componentMapping[name];
+    if (typeof window.components[name] === "undefined") window.components[name] = [];
+    for (let j = 0, jLen = elems.length; j < jLen; j++) {
+         let instance = new component(elems[j]);
+         window.components[name].push(instance);
+    }
+}
\ No newline at end of file
diff --git a/resources/assets/js/directives.js b/resources/assets/js/directives.js
index d8745462d..cd9cc0283 100644
--- a/resources/assets/js/directives.js
+++ b/resources/assets/js/directives.js
@@ -114,45 +114,6 @@ module.exports = function (ngApp, events) {
         };
     }]);
 
-    /**
-     * Dropdown
-     * Provides some simple logic to create small dropdown menus
-     */
-    ngApp.directive('dropdown', [function () {
-        return {
-            restrict: 'A',
-            link: function (scope, element, attrs) {
-                const menu = element.find('ul');
-
-                function hide() {
-                    menu.hide();
-                    menu.removeClass('anim menuIn');
-                }
-
-                function show() {
-                    menu.show().addClass('anim menuIn');
-                    element.mouseleave(hide);
-
-                    // Focus on input if exist in dropdown and hide on enter press
-                    let inputs = menu.find('input');
-                    if (inputs.length > 0) inputs.first().focus();
-                }
-
-                // Hide menu on option click
-                element.on('click', '> ul a', hide);
-                // Show dropdown on toggle click.
-                element.find('[dropdown-toggle]').on('click', show);
-                // Hide menu on enter press in inputs
-                element.on('keypress', 'input', event => {
-                    if (event.keyCode !== 13) return true;
-                    event.preventDefault();
-                    hide();
-                    return false;
-                });
-            }
-        };
-    }]);
-
     /**
      * TinyMCE
      * An angular wrapper around the tinyMCE editor.
diff --git a/resources/assets/js/global.js b/resources/assets/js/global.js
index 2ef062a5b..979310777 100644
--- a/resources/assets/js/global.js
+++ b/resources/assets/js/global.js
@@ -1,4 +1,5 @@
 "use strict";
+require("babel-polyfill");
 
 // Url retrieval function
 window.baseUrl = function(path) {
@@ -22,6 +23,7 @@ window.$http = axiosInstance;
 Vue.prototype.$http = axiosInstance;
 
 require("./vues/vues");
+require("./components");
 
 
 // AngularJS - Create application and load components

From 2a069880cd8ebe6b821fd37a6087b34a6488966b Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Sun, 6 Aug 2017 21:08:03 +0100
Subject: [PATCH 70/83] Converted jQuery bits into raw JS components

---
 .../assets/js/components/back-top-top.js      | 53 ++++++++++++
 .../assets/js/components/chapter-toggle.js    | 67 +++++++++++++++
 .../assets/js/components/expand-toggle.js     | 65 +++++++++++++++
 resources/assets/js/components/index.js       |  5 ++
 .../assets/js/components/notification.js      | 40 +++++++++
 resources/assets/js/components/overlay.js     | 39 +++++++++
 resources/assets/js/directives.js             |  1 +
 resources/assets/js/global.js                 | 81 +------------------
 resources/assets/sass/_animations.scss        | 49 ++---------
 resources/assets/sass/_components.scss        | 63 ++++++++++++++-
 resources/assets/sass/_lists.scss             | 27 ++-----
 resources/assets/sass/styles.scss             | 40 +--------
 resources/views/base.blade.php                |  2 +-
 resources/views/books/list-item.blade.php     | 12 +--
 resources/views/chapters/list-item.blade.php  | 16 ++--
 .../views/components/code-editor.blade.php    |  4 +-
 .../entity-selector-popup.blade.php           |  4 +-
 .../views/components/image-manager.blade.php  |  4 +-
 resources/views/home.blade.php                |  2 +-
 resources/views/pages/list-item.blade.php     | 12 +--
 .../views/pages/sidebar-tree-list.blade.php   |  2 +-
 .../views/partials/custom-styles.blade.php    |  2 +-
 .../views/partials/notifications.blade.php    |  6 +-
 23 files changed, 387 insertions(+), 209 deletions(-)
 create mode 100644 resources/assets/js/components/back-top-top.js
 create mode 100644 resources/assets/js/components/chapter-toggle.js
 create mode 100644 resources/assets/js/components/expand-toggle.js
 create mode 100644 resources/assets/js/components/notification.js
 create mode 100644 resources/assets/js/components/overlay.js

diff --git a/resources/assets/js/components/back-top-top.js b/resources/assets/js/components/back-top-top.js
new file mode 100644
index 000000000..5fa9b3436
--- /dev/null
+++ b/resources/assets/js/components/back-top-top.js
@@ -0,0 +1,53 @@
+
+class BackToTop {
+
+    constructor(elem) {
+        this.elem = elem;
+        this.targetElem = document.getElementById('header');
+        this.showing = false;
+        this.breakPoint = 1200;
+        this.elem.addEventListener('click', this.scrollToTop.bind(this));
+        window.addEventListener('scroll', this.onPageScroll.bind(this));
+    }
+
+    onPageScroll() {
+        let scrollTopPos = document.documentElement.scrollTop || document.body.scrollTop || 0;
+        if (!this.showing && scrollTopPos > this.breakPoint) {
+            this.elem.style.display = 'block';
+            this.showing = true;
+            setTimeout(() => {
+                this.elem.style.opacity = 0.4;
+            }, 1);
+        } else if (this.showing && scrollTopPos < this.breakPoint) {
+            this.elem.style.opacity = 0;
+            this.showing = false;
+            setTimeout(() => {
+                this.elem.style.display = 'none';
+            }, 500);
+        }
+    }
+
+    scrollToTop() {
+        let targetTop = this.targetElem.getBoundingClientRect().top;
+        let scrollElem = document.documentElement.scrollTop ? document.documentElement : document.body;
+        let duration = 300;
+        let start = Date.now();
+        let scrollStart = this.targetElem.getBoundingClientRect().top;
+
+        function setPos() {
+            let percentComplete = (1-((Date.now() - start) / duration));
+            let target = Math.abs(percentComplete * scrollStart);
+            if (percentComplete > 0) {
+                scrollElem.scrollTop = target;
+                requestAnimationFrame(setPos.bind(this));
+            } else {
+                scrollElem.scrollTop = targetTop;
+            }
+        }
+
+        requestAnimationFrame(setPos.bind(this));
+    }
+
+}
+
+module.exports = BackToTop;
\ No newline at end of file
diff --git a/resources/assets/js/components/chapter-toggle.js b/resources/assets/js/components/chapter-toggle.js
new file mode 100644
index 000000000..ad373a668
--- /dev/null
+++ b/resources/assets/js/components/chapter-toggle.js
@@ -0,0 +1,67 @@
+
+class ChapterToggle {
+
+    constructor(elem) {
+        this.elem = elem;
+        this.isOpen = elem.classList.contains('open');
+        elem.addEventListener('click', this.click.bind(this));
+    }
+
+    open() {
+        let list = this.elem.parentNode.querySelector('.inset-list');
+
+        this.elem.classList.add('open');
+        list.style.display = 'block';
+        list.style.height = '';
+        let height = list.getBoundingClientRect().height;
+        list.style.height = '0px';
+        list.style.overflow = 'hidden';
+        list.style.transition = 'height ease-in-out 240ms';
+
+        let transitionEndBound = onTransitionEnd.bind(this);
+        function onTransitionEnd() {
+            list.style.overflow = '';
+            list.style.height = '';
+            list.style.transition = '';
+            list.removeEventListener('transitionend', transitionEndBound);
+        }
+
+        setTimeout(() => {
+            list.style.height = `${height}px`;
+            list.addEventListener('transitionend', transitionEndBound)
+        }, 1);
+    }
+
+    close() {
+        let list = this.elem.parentNode.querySelector('.inset-list');
+
+        this.elem.classList.remove('open');
+        list.style.display =  'block';
+        list.style.height = list.getBoundingClientRect().height + 'px';
+        list.style.overflow = 'hidden';
+        list.style.transition = 'height ease-in-out 240ms';
+
+        let transitionEndBound = onTransitionEnd.bind(this);
+        function onTransitionEnd() {
+            list.style.overflow = '';
+            list.style.height = '';
+            list.style.transition = '';
+            list.style.display =  'none';
+            list.removeEventListener('transitionend', transitionEndBound);
+        }
+
+        setTimeout(() => {
+            list.style.height = `0px`;
+            list.addEventListener('transitionend', transitionEndBound)
+        }, 1);
+    }
+
+    click(event) {
+        event.preventDefault();
+        this.isOpen ?  this.close() : this.open();
+        this.isOpen = !this.isOpen;
+    }
+
+}
+
+module.exports = ChapterToggle;
\ No newline at end of file
diff --git a/resources/assets/js/components/expand-toggle.js b/resources/assets/js/components/expand-toggle.js
new file mode 100644
index 000000000..61d9f54b7
--- /dev/null
+++ b/resources/assets/js/components/expand-toggle.js
@@ -0,0 +1,65 @@
+
+class ExpandToggle {
+
+    constructor(elem) {
+        this.elem = elem;
+        this.isOpen = false;
+        this.selector = elem.getAttribute('expand-toggle');
+        elem.addEventListener('click', this.click.bind(this));
+    }
+
+    open(elemToToggle) {
+        elemToToggle.style.display = 'block';
+        elemToToggle.style.height = '';
+        let height = elemToToggle.getBoundingClientRect().height;
+        elemToToggle.style.height = '0px';
+        elemToToggle.style.overflow = 'hidden';
+        elemToToggle.style.transition = 'height ease-in-out 240ms';
+
+        let transitionEndBound = onTransitionEnd.bind(this);
+        function onTransitionEnd() {
+            elemToToggle.style.overflow = '';
+            elemToToggle.style.height = '';
+            elemToToggle.style.transition = '';
+            elemToToggle.removeEventListener('transitionend', transitionEndBound);
+        }
+
+        setTimeout(() => {
+            elemToToggle.style.height = `${height}px`;
+            elemToToggle.addEventListener('transitionend', transitionEndBound)
+        }, 1);
+    }
+
+    close(elemToToggle) {
+        elemToToggle.style.display =  'block';
+        elemToToggle.style.height = elemToToggle.getBoundingClientRect().height + 'px';
+        elemToToggle.style.overflow = 'hidden';
+        elemToToggle.style.transition = 'all ease-in-out 240ms';
+
+        let transitionEndBound = onTransitionEnd.bind(this);
+        function onTransitionEnd() {
+            elemToToggle.style.overflow = '';
+            elemToToggle.style.height = '';
+            elemToToggle.style.transition = '';
+            elemToToggle.style.display =  'none';
+            elemToToggle.removeEventListener('transitionend', transitionEndBound);
+        }
+
+        setTimeout(() => {
+            elemToToggle.style.height = `0px`;
+            elemToToggle.addEventListener('transitionend', transitionEndBound)
+        }, 1);
+    }
+
+    click(event) {
+        event.preventDefault();
+        let matchingElems = document.querySelectorAll(this.selector);
+        for (let i = 0, len = matchingElems.length; i < len; i++) {
+            this.isOpen ?  this.close(matchingElems[i]) : this.open(matchingElems[i]);
+        }
+        this.isOpen = !this.isOpen;
+    }
+
+}
+
+module.exports = ExpandToggle;
\ No newline at end of file
diff --git a/resources/assets/js/components/index.js b/resources/assets/js/components/index.js
index 983b25d8f..c38e20aa2 100644
--- a/resources/assets/js/components/index.js
+++ b/resources/assets/js/components/index.js
@@ -1,6 +1,11 @@
 
 let componentMapping = {
     'dropdown': require('./dropdown'),
+    'overlay': require('./overlay'),
+    'back-to-top': require('./back-top-top'),
+    'notification': require('./notification'),
+    'chapter-toggle': require('./chapter-toggle'),
+    'expand-toggle': require('./expand-toggle'),
 };
 
 window.components = {};
diff --git a/resources/assets/js/components/notification.js b/resources/assets/js/components/notification.js
new file mode 100644
index 000000000..4b809c935
--- /dev/null
+++ b/resources/assets/js/components/notification.js
@@ -0,0 +1,40 @@
+
+class Notification {
+
+    constructor(elem) {
+        this.elem = elem;
+        this.type = elem.getAttribute('notification');
+        this.textElem = elem.querySelector('span');
+        this.autohide = this.elem.hasAttribute('data-autohide');
+        window.Events.listen(this.type, text => {
+            console.log('show', text);
+            this.show(text);
+        });
+        elem.addEventListener('click', this.hide.bind(this));
+        if (elem.hasAttribute('data-show')) this.show(this.textElem.textContent);
+    }
+
+    show(textToShow = '') {
+        this.textElem.textContent = textToShow;
+        this.elem.style.display = 'block';
+        setTimeout(() => {
+            this.elem.classList.add('showing');
+        }, 1);
+
+        if (this.autohide) setTimeout(this.hide.bind(this), 2000);
+    }
+
+    hide() {
+        this.elem.classList.remove('showing');
+
+        function transitionEnd() {
+            this.elem.style.display = 'none';
+            this.elem.removeEventListener('transitionend', transitionEnd);
+        }
+
+        this.elem.addEventListener('transitionend', transitionEnd.bind(this));
+    }
+
+}
+
+module.exports = Notification;
\ No newline at end of file
diff --git a/resources/assets/js/components/overlay.js b/resources/assets/js/components/overlay.js
new file mode 100644
index 000000000..6984928bd
--- /dev/null
+++ b/resources/assets/js/components/overlay.js
@@ -0,0 +1,39 @@
+
+class Overlay {
+
+    constructor(elem) {
+        this.container = elem;
+        elem.addEventListener('click', event => {
+             if (event.target === elem) return this.hide();
+        });
+        let closeButtons = elem.querySelectorAll('.overlay-close');
+        for (let i=0; i < closeButtons.length; i++) {
+            closeButtons[i].addEventListener('click', this.hide.bind(this));
+        }
+    }
+
+    toggle(show = true) {
+        let start = Date.now();
+        let duration = 240;
+
+        function setOpacity() {
+            let elapsedTime = (Date.now() - start);
+            let targetOpacity = show ? (elapsedTime / duration) : 1-(elapsedTime / duration);
+            this.container.style.opacity = targetOpacity;
+            if (elapsedTime > duration) {
+                this.container.style.display = show ? 'display' : 'none';
+                this.container.style.opacity = '';
+            } else {
+                requestAnimationFrame(setOpacity.bind(this));
+            }
+        }
+
+        requestAnimationFrame(setOpacity.bind(this));
+    }
+
+    hide() { this.toggle(false); }
+    show() { this.toggle(true); }
+
+}
+
+module.exports = Overlay;
\ No newline at end of file
diff --git a/resources/assets/js/directives.js b/resources/assets/js/directives.js
index cd9cc0283..522dcacae 100644
--- a/resources/assets/js/directives.js
+++ b/resources/assets/js/directives.js
@@ -713,6 +713,7 @@ module.exports = function (ngApp, events) {
                 function hide() {
                     element.fadeOut(240);
                 }
+                scope.hide = hide;
 
                 // Listen to confirmation of entity selections (doubleclick)
                 events.listen('entity-select-confirm', entity => {
diff --git a/resources/assets/js/global.js b/resources/assets/js/global.js
index 979310777..3879a4d4f 100644
--- a/resources/assets/js/global.js
+++ b/resources/assets/js/global.js
@@ -19,12 +19,8 @@ let axiosInstance = axios.create({
     }
 });
 window.$http = axiosInstance;
-
 Vue.prototype.$http = axiosInstance;
 
-require("./vues/vues");
-require("./components");
-
 
 // AngularJS - Create application and load components
 const angular = require("angular");
@@ -67,6 +63,9 @@ class EventManager {
 window.Events = new EventManager();
 Vue.prototype.$events = window.Events;
 
+require("./vues/vues");
+require("./components");
+
 // Load in angular specific items
 const Services = require('./services');
 const Directives = require('./directives');
@@ -93,83 +92,11 @@ jQuery.expr[":"].contains = $.expr.createPseudo(function (arg) {
     };
 });
 
-// Global jQuery Elements
-let notifications = $('.notification');
-let successNotification = notifications.filter('.pos');
-let errorNotification = notifications.filter('.neg');
-let warningNotification = notifications.filter('.warning');
-// Notification Events
-window.Events.listen('success', function (text) {
-    successNotification.hide();
-    successNotification.find('span').text(text);
-    setTimeout(() => {
-        successNotification.show();
-    }, 1);
-});
-window.Events.listen('warning', function (text) {
-    warningNotification.find('span').text(text);
-    warningNotification.show();
-});
-window.Events.listen('error', function (text) {
-    errorNotification.find('span').text(text);
-    errorNotification.show();
-});
-
-// Notification hiding
-notifications.click(function () {
-    $(this).fadeOut(100);
-});
-
-// Chapter page list toggles
-$('.chapter-toggle').click(function (e) {
-    e.preventDefault();
-    $(this).toggleClass('open');
-    $(this).closest('.chapter').find('.inset-list').slideToggle(180);
-});
-
-// Back to top button
-$('#back-to-top').click(function() {
-     $('#header').smoothScrollTo();
-});
-let scrollTopShowing = false;
-let scrollTop = document.getElementById('back-to-top');
-let scrollTopBreakpoint = 1200;
-window.addEventListener('scroll', function() {
-    let scrollTopPos = document.documentElement.scrollTop || document.body.scrollTop || 0;
-    if (!scrollTopShowing && scrollTopPos > scrollTopBreakpoint) {
-        scrollTop.style.display = 'block';
-        scrollTopShowing = true;
-        setTimeout(() => {
-            scrollTop.style.opacity = 0.4;
-        }, 1);
-    } else if (scrollTopShowing && scrollTopPos < scrollTopBreakpoint) {
-        scrollTop.style.opacity = 0;
-        scrollTopShowing = false;
-        setTimeout(() => {
-            scrollTop.style.display = 'none';
-        }, 500);
-    }
-});
-
-// Common jQuery actions
-$('[data-action="expand-entity-list-details"]').click(function() {
-    $('.entity-list.compact').find('p').not('.empty-text').slideToggle(240);
-});
-
-// Popup close
-$('.popup-close').click(function() {
-    $(this).closest('.overlay').fadeOut(240);
-});
-$('.overlay').click(function(event) {
-    if (!$(event.target).hasClass('overlay')) return;
-    $(this).fadeOut(240);
-});
-
 // Detect IE for css
 if(navigator.userAgent.indexOf('MSIE')!==-1
     || navigator.appVersion.indexOf('Trident/') > 0
     || navigator.userAgent.indexOf('Safari') !== -1){
-    $('body').addClass('flexbox-support');
+    document.body.classList.add('flexbox-support');
 }
 
 // Page specific items
diff --git a/resources/assets/sass/_animations.scss b/resources/assets/sass/_animations.scss
index 467399a66..015a23ab1 100644
--- a/resources/assets/sass/_animations.scss
+++ b/resources/assets/sass/_animations.scss
@@ -36,41 +36,12 @@
   }
 }
 
-.anim.notification {
-  transform: translate3d(580px, 0, 0);
-  animation-name: notification;
-  animation-duration: 3s;
-  animation-timing-function: ease-in-out;
-  animation-fill-mode: forwards;
-  &.stopped {
-    animation-name: notificationStopped;
-  }
-}
-
-@keyframes notification {
-  0% {
-    transform: translate3d(580px, 0, 0);
-  }
-  10% {
-    transform: translate3d(0, 0, 0);
-  }
-  90% {
-    transform: translate3d(0, 0, 0);
-  }
-  100% {
-    transform: translate3d(580px, 0, 0);
-  }
-}
-@keyframes notificationStopped {
-  0% {
-    transform: translate3d(580px, 0, 0);
-  }
-  10% {
-    transform: translate3d(0, 0, 0);
-  }
-  100% {
-    transform: translate3d(0, 0, 0);
-  }
+.anim.menuIn {
+  transform-origin: 100% 0%;
+  animation-name: menuIn;
+  animation-duration: 120ms;
+  animation-delay: 0s;
+  animation-timing-function: cubic-bezier(.62, .28, .23, .99);
 }
 
 @keyframes menuIn {
@@ -85,14 +56,6 @@
   }
 }
 
-.anim.menuIn {
-  transform-origin: 100% 0%;
-  animation-name: menuIn;
-  animation-duration: 120ms;
-  animation-delay: 0s;
-  animation-timing-function: cubic-bezier(.62, .28, .23, .99);
-}
-
 @keyframes loadingBob {
   0% {
     transform: translate3d(0, 0, 0);
diff --git a/resources/assets/sass/_components.scss b/resources/assets/sass/_components.scss
index 12babae73..8092caa07 100644
--- a/resources/assets/sass/_components.scss
+++ b/resources/assets/sass/_components.scss
@@ -1,4 +1,65 @@
-.overlay {
+// System wide notifications
+[notification] {
+  position: fixed;
+  top: 0;
+  right: 0;
+  margin: $-xl*2 $-xl;
+  padding: $-l $-xl;
+  background-color: #EEE;
+  border-radius: 3px;
+  box-shadow: $bs-med;
+  z-index: 999999;
+  display: block;
+  cursor: pointer;
+  max-width: 480px;
+  transition: transform ease-in-out 360ms;
+  transform: translate3d(580px, 0, 0);
+  i, span {
+    display: table-cell;
+  }
+  i {
+    font-size: 2em;
+    padding-right: $-l;
+  }
+  span {
+    vertical-align: middle;
+  }
+  &.pos {
+    background-color: $positive;
+    color: #EEE;
+  }
+  &.neg {
+    background-color: $negative;
+    color: #EEE;
+  }
+  &.warning {
+    background-color: $secondary;
+    color: #EEE;
+  }
+  &.showing {
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+[chapter-toggle] {
+  cursor: pointer;
+  margin: 0;
+  transition: all ease-in-out 180ms;
+  user-select: none;
+  i.zmdi-caret-right {
+    transition: all ease-in-out 180ms;
+    transform: rotate(0deg);
+    transform-origin: 25% 50%;
+  }
+  &.open {
+    //margin-bottom: 0;
+  }
+  &.open i.zmdi-caret-right {
+    transform: rotate(90deg);
+  }
+}
+
+[overlay] {
   background-color: rgba(0, 0, 0, 0.333);
   position: fixed;
   z-index: 95536;
diff --git a/resources/assets/sass/_lists.scss b/resources/assets/sass/_lists.scss
index 051268926..d08ccc9bb 100644
--- a/resources/assets/sass/_lists.scss
+++ b/resources/assets/sass/_lists.scss
@@ -9,7 +9,6 @@
   .inset-list {
     display: none;
     overflow: hidden;
-    margin-bottom: $-l;
   }
   h5 {
     display: block;
@@ -22,6 +21,9 @@
       border-left-color: $color-page-draft;
     }
   }
+  .entity-list-item {
+    margin-bottom: $-m;
+  }
   hr {
     margin-top: 0;
   }
@@ -51,23 +53,6 @@
     margin-right: $-s;
   }
 }
-.chapter-toggle {
-  cursor: pointer;
-  margin: 0 0 $-l 0;
-  transition: all ease-in-out 180ms;
-  user-select: none;
-  i.zmdi-caret-right {
-    transition: all ease-in-out 180ms;
-    transform: rotate(0deg);
-    transform-origin: 25% 50%;
-  }
-  &.open {
-    margin-bottom: 0;
-  }
-  &.open i.zmdi-caret-right {
-    transform: rotate(90deg);
-  }
-}
 
 .sidebar-page-nav {
   $nav-indent: $-s;
@@ -171,7 +156,7 @@
       background-color: rgba($color-chapter, 0.12);
     }
   }
-  .chapter-toggle {
+  [chapter-toggle] {
     padding-left: $-s;
   }
   .list-item-chapter {
@@ -336,8 +321,10 @@ ul.pagination {
   h4, a {
     line-height: 1.2;
   }
-  p {
+  .entity-item-snippet {
     display: none;
+  }
+  p {
     font-size: $fs-m * 0.8;
     padding-top: $-xs;
     margin: 0;
diff --git a/resources/assets/sass/styles.scss b/resources/assets/sass/styles.scss
index 3b279b8bd..e40430bd8 100644
--- a/resources/assets/sass/styles.scss
+++ b/resources/assets/sass/styles.scss
@@ -66,44 +66,6 @@ body.dragging, body.dragging * {
   }
 }
 
-// System wide notifications
-.notification {
-  position: fixed;
-  top: 0;
-  right: 0;
-  margin: $-xl*2 $-xl;
-  padding: $-l $-xl;
-  background-color: #EEE;
-  border-radius: 3px;
-  box-shadow: $bs-med;
-  z-index: 999999;
-  display: block;
-  cursor: pointer;
-  max-width: 480px;
-  i, span {
-    display: table-cell;
-  }
-  i {
-    font-size: 2em;
-    padding-right: $-l;
-  }
-  span {
-    vertical-align: middle;
-  }
-  &.pos {
-    background-color: $positive;
-    color: #EEE;
-  }
-  &.neg {
-    background-color: $negative;
-    color: #EEE;
-  }
-  &.warning {
-    background-color: $secondary;
-    color: #EEE;
-  }
-}
-
 // Loading icon
 $loadingSize: 10px;
 .loading-container {
@@ -151,7 +113,7 @@ $loadingSize: 10px;
 
 // Back to top link
 $btt-size: 40px;
-#back-to-top {
+[back-to-top] {
   background-color: $primary;
   position: fixed;
   bottom: $-m;
diff --git a/resources/views/base.blade.php b/resources/views/base.blade.php
index 95a9d72b0..b1cacf08c 100644
--- a/resources/views/base.blade.php
+++ b/resources/views/base.blade.php
@@ -77,7 +77,7 @@
         @yield('content')
     </section>
 
-    <div id="back-to-top">
+    <div back-to-top>
         <div class="inner">
             <i class="zmdi zmdi-chevron-up"></i> <span>{{ trans('common.back_to_top') }}</span>
         </div>
diff --git a/resources/views/books/list-item.blade.php b/resources/views/books/list-item.blade.php
index 605841f7f..92d0f9e2d 100644
--- a/resources/views/books/list-item.blade.php
+++ b/resources/views/books/list-item.blade.php
@@ -1,8 +1,10 @@
 <div class="book entity-list-item"  data-entity-type="book" data-entity-id="{{$book->id}}">
     <h4 class="text-book"><a class="text-book entity-list-item-link" href="{{$book->getUrl()}}"><i class="zmdi zmdi-book"></i><span class="entity-list-item-name">{{$book->name}}</span></a></h4>
-    @if(isset($book->searchSnippet))
-        <p class="text-muted">{!! $book->searchSnippet !!}</p>
-    @else
-        <p class="text-muted">{{ $book->getExcerpt() }}</p>
-    @endif
+    <div class="entity-item-snippet">
+        @if(isset($book->searchSnippet))
+            <p class="text-muted">{!! $book->searchSnippet !!}</p>
+        @else
+            <p class="text-muted">{{ $book->getExcerpt() }}</p>
+        @endif
+    </div>
 </div>
\ No newline at end of file
diff --git a/resources/views/chapters/list-item.blade.php b/resources/views/chapters/list-item.blade.php
index 1ae20b301..1572f0d9b 100644
--- a/resources/views/chapters/list-item.blade.php
+++ b/resources/views/chapters/list-item.blade.php
@@ -10,14 +10,18 @@
             <i class="zmdi zmdi-collection-bookmark"></i><span class="entity-list-item-name">{{ $chapter->name }}</span>
         </a>
     </h4>
-    @if(isset($chapter->searchSnippet))
-        <p class="text-muted">{!! $chapter->searchSnippet !!}</p>
-    @else
-        <p class="text-muted">{{ $chapter->getExcerpt() }}</p>
-    @endif
+
+    <div class="entity-item-snippet">
+        @if(isset($chapter->searchSnippet))
+            <p class="text-muted">{!! $chapter->searchSnippet !!}</p>
+        @else
+            <p class="text-muted">{{ $chapter->getExcerpt() }}</p>
+        @endif
+    </div>
+
 
     @if(!isset($hidePages) && count($chapter->pages) > 0)
-        <p class="text-muted chapter-toggle"><i class="zmdi zmdi-caret-right"></i> <i class="zmdi zmdi-file-text"></i> <span>{{ trans('entities.x_pages', ['count' => $chapter->pages->count()]) }}</span></p>
+        <p chapter-toggle class="text-muted"><i class="zmdi zmdi-caret-right"></i> <i class="zmdi zmdi-file-text"></i> <span>{{ trans('entities.x_pages', ['count' => $chapter->pages->count()]) }}</span></p>
         <div class="inset-list">
             @foreach($chapter->pages as $page)
                 <h5 class="@if($page->draft) draft @endif"><a href="{{ $page->getUrl() }}" class="text-page @if($page->draft) draft @endif"><i class="zmdi zmdi-file-text"></i>{{$page->name}}</a></h5>
diff --git a/resources/views/components/code-editor.blade.php b/resources/views/components/code-editor.blade.php
index 5a385ef49..5788bd7f7 100644
--- a/resources/views/components/code-editor.blade.php
+++ b/resources/views/components/code-editor.blade.php
@@ -1,10 +1,10 @@
 <div id="code-editor">
-    <div class="overlay" ref="overlay" v-cloak @click="hide()">
+    <div overlay ref="overlay" v-cloak @click="hide()">
         <div class="popup-body" @click.stop>
 
             <div class="popup-header primary-background">
                 <div class="popup-title">{{ trans('components.code_editor') }}</div>
-                <button class="popup-close neg corner-button button" @click="hide()">x</button>
+                <button class="overlay-close neg corner-button button" @click="hide()">x</button>
             </div>
 
             <div class="padded">
diff --git a/resources/views/components/entity-selector-popup.blade.php b/resources/views/components/entity-selector-popup.blade.php
index 1c4d1fadb..39d25bfa6 100644
--- a/resources/views/components/entity-selector-popup.blade.php
+++ b/resources/views/components/entity-selector-popup.blade.php
@@ -1,9 +1,9 @@
 <div id="entity-selector-wrap">
-    <div class="overlay" entity-link-selector>
+    <div overlay entity-link-selector>
         <div class="popup-body small flex-child">
             <div class="popup-header primary-background">
                 <div class="popup-title">{{ trans('entities.entity_select') }}</div>
-                <button type="button" class="corner-button neg button popup-close">x</button>
+                <button type="button" class="corner-button neg button overlay-close">x</button>
             </div>
             @include('components.entity-selector', ['name' => 'entity-selector'])
             <div class="popup-footer">
diff --git a/resources/views/components/image-manager.blade.php b/resources/views/components/image-manager.blade.php
index 39f3bcd3c..05bf09799 100644
--- a/resources/views/components/image-manager.blade.php
+++ b/resources/views/components/image-manager.blade.php
@@ -1,10 +1,10 @@
 <div id="image-manager" image-type="{{ $imageType }}" ng-controller="ImageManagerController" uploaded-to="{{ $uploaded_to or 0 }}">
-    <div class="overlay" ng-cloak ng-click="hide()">
+    <div overlay ng-cloak ng-click="hide()">
         <div class="popup-body" ng-click="$event.stopPropagation()">
 
             <div class="popup-header primary-background">
                 <div class="popup-title">{{ trans('components.image_select') }}</div>
-                <button class="popup-close neg corner-button button">x</button>
+                <button class="overlay-close neg corner-button button">x</button>
             </div>
 
             <div class="flex-fill image-manager-body">
diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php
index 49cd2a75a..87c84ec1e 100644
--- a/resources/views/home.blade.php
+++ b/resources/views/home.blade.php
@@ -7,7 +7,7 @@
             <div class="row">
                 <div class="col-sm-6 faded">
                     <div class="action-buttons text-left">
-                        <a data-action="expand-entity-list-details" class="text-primary text-button"><i class="zmdi zmdi-wrap-text"></i>{{ trans('common.toggle_details') }}</a>
+                        <a expand-toggle=".entity-list.compact .entity-item-snippet" class="text-primary text-button"><i class="zmdi zmdi-wrap-text"></i>{{ trans('common.toggle_details') }}</a>
                     </div>
                 </div>
             </div>
diff --git a/resources/views/pages/list-item.blade.php b/resources/views/pages/list-item.blade.php
index f440a52f6..593c2fc3c 100644
--- a/resources/views/pages/list-item.blade.php
+++ b/resources/views/pages/list-item.blade.php
@@ -15,11 +15,13 @@
         <a href="{{ $page->getUrl() }}" class="text-page entity-list-item-link"><i class="zmdi zmdi-file-text"></i><span class="entity-list-item-name">{{ $page->name }}</span></a>
     </h4>
 
-    @if(isset($page->searchSnippet))
-        <p class="text-muted">{!! $page->searchSnippet !!}</p>
-    @else
-        <p class="text-muted">{{ $page->getExcerpt() }}</p>
-    @endif
+    <div class="entity-item-snippet">
+        @if(isset($page->searchSnippet))
+            <p class="text-muted">{!! $page->searchSnippet !!}</p>
+        @else
+            <p class="text-muted">{{ $page->getExcerpt() }}</p>
+        @endif
+    </div>
 
     @if(isset($style) && $style === 'detailed')
         <div class="row meta text-muted text-small">
diff --git a/resources/views/pages/sidebar-tree-list.blade.php b/resources/views/pages/sidebar-tree-list.blade.php
index 0a10987d6..90737740c 100644
--- a/resources/views/pages/sidebar-tree-list.blade.php
+++ b/resources/views/pages/sidebar-tree-list.blade.php
@@ -51,7 +51,7 @@
                 </a>
 
                 @if($bookChild->isA('chapter') && count($bookChild->pages) > 0)
-                    <p class="text-muted chapter-toggle @if($bookChild->matchesOrContains($current)) open @endif">
+                    <p chapter-toggle class="text-muted @if($bookChild->matchesOrContains($current)) open @endif">
                         <i class="zmdi zmdi-caret-right"></i> <i class="zmdi zmdi-file-text"></i> <span>{{ trans('entities.x_pages', ['count' => $bookChild->pages->count()]) }}</span>
                     </p>
                     <ul class="menu sub-menu inset-list @if($bookChild->matchesOrContains($current)) open @endif">
diff --git a/resources/views/partials/custom-styles.blade.php b/resources/views/partials/custom-styles.blade.php
index 62bcc881f..c13051df4 100644
--- a/resources/views/partials/custom-styles.blade.php
+++ b/resources/views/partials/custom-styles.blade.php
@@ -1,5 +1,5 @@
 <style id="custom-styles" data-color="{{ setting('app-color') }}" data-color-light="{{ setting('app-color-light') }}">
-    header, #back-to-top, .primary-background {
+    header, [back-to-top], .primary-background {
         background-color: {{ setting('app-color') }} !important;
     }
     .faded-small, .primary-background-light {
diff --git a/resources/views/partials/notifications.blade.php b/resources/views/partials/notifications.blade.php
index c079080db..215aee3ed 100644
--- a/resources/views/partials/notifications.blade.php
+++ b/resources/views/partials/notifications.blade.php
@@ -1,12 +1,12 @@
 
-<div class="notification anim pos" @if(!session()->has('success')) style="display:none;" @endif>
+<div notification="success" data-autohide class="pos" @if(session()->has('success')) data-show @endif>
     <i class="zmdi zmdi-check-circle"></i> <span>{!! nl2br(htmlentities(session()->get('success'))) !!}</span>
 </div>
 
-<div class="notification anim warning stopped" @if(!session()->has('warning')) style="display:none;" @endif>
+<div notification="warning" class="warning" @if(session()->has('warning')) data-show @endif>
     <i class="zmdi zmdi-info"></i> <span>{!! nl2br(htmlentities(session()->get('warning'))) !!}</span>
 </div>
 
-<div class="notification anim neg stopped" @if(!session()->has('error')) style="display:none;" @endif>
+<div notification="error" class="neg" @if(session()->has('error')) data-show @endif>
     <i class="zmdi zmdi-alert-circle"></i> <span>{!! nl2br(htmlentities(session()->get('error'))) !!}</span>
 </div>

From 1ac7618bb14e69f1dccb44570d3971d60fde13f6 Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Sun, 6 Aug 2017 21:21:20 +0100
Subject: [PATCH 71/83] Updated clipboard lib reference and version used

---
 package.json                           | 2 +-
 readme.md                              | 2 +-
 resources/assets/js/pages/page-show.js | 2 --
 3 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/package.json b/package.json
index 3d3b9c11c..1ae0e7f68 100644
--- a/package.json
+++ b/package.json
@@ -33,7 +33,7 @@
     "axios": "^0.16.1",
     "babel-polyfill": "^6.23.0",
     "babel-preset-es2015": "^6.24.1",
-    "clipboard": "^1.5.16",
+    "clipboard": "^1.7.1",
     "codemirror": "^5.26.0",
     "dropzone": "^4.0.1",
     "gulp-util": "^3.0.8",
diff --git a/readme.md b/readme.md
index 6067fbb94..5d099ad5f 100644
--- a/readme.md
+++ b/readme.md
@@ -79,7 +79,7 @@ These are the great open-source projects used to help build BookStack:
 * [jQuery Sortable](https://johnny.github.io/jquery-sortable/)
 * [Material Design Iconic Font](http://zavoloklom.github.io/material-design-iconic-font/icons.html)
 * [Dropzone.js](http://www.dropzonejs.com/)
-* [ZeroClipboard](http://zeroclipboard.org/)
+* [clipboard.js](https://clipboardjs.com/)
 * [TinyColorPicker](http://www.dematte.at/tinyColorPicker/index.html)
 * [markdown-it](https://github.com/markdown-it/markdown-it) and [markdown-it-task-lists](https://github.com/revin/markdown-it-task-lists)
 * [Moment.js](http://momentjs.com/)
diff --git a/resources/assets/js/pages/page-show.js b/resources/assets/js/pages/page-show.js
index 020229d2f..7754840af 100644
--- a/resources/assets/js/pages/page-show.js
+++ b/resources/assets/js/pages/page-show.js
@@ -1,5 +1,3 @@
-"use strict";
-// Configure ZeroClipboard
 const Clipboard = require("clipboard");
 const Code = require('../code');
 

From a59d73de7b8b5f00d647b4eefdafd7de08103fa4 Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Mon, 7 Aug 2017 19:32:31 +0100
Subject: [PATCH 72/83] Fixed bug causing image manager popup not to show

---
 resources/assets/js/components/overlay.js | 2 +-
 resources/assets/js/controllers.js        | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/resources/assets/js/components/overlay.js b/resources/assets/js/components/overlay.js
index 6984928bd..6e7a598ac 100644
--- a/resources/assets/js/components/overlay.js
+++ b/resources/assets/js/components/overlay.js
@@ -21,7 +21,7 @@ class Overlay {
             let targetOpacity = show ? (elapsedTime / duration) : 1-(elapsedTime / duration);
             this.container.style.opacity = targetOpacity;
             if (elapsedTime > duration) {
-                this.container.style.display = show ? 'display' : 'none';
+                this.container.style.display = show ? 'flex' : 'none';
                 this.container.style.opacity = '';
             } else {
                 requestAnimationFrame(setOpacity.bind(this));
diff --git a/resources/assets/js/controllers.js b/resources/assets/js/controllers.js
index e1d838bb6..4acb40b35 100644
--- a/resources/assets/js/controllers.js
+++ b/resources/assets/js/controllers.js
@@ -113,7 +113,7 @@ module.exports = function (ngApp, events) {
             function show(doneCallback) {
                 callback = doneCallback;
                 $scope.showing = true;
-                $('#image-manager').find('.overlay').css('display', 'flex').hide().fadeIn(240);
+                $('#image-manager').find('[overlay]').css('display', 'flex').hide().fadeIn(240);
                 // Get initial images if they have not yet been loaded in.
                 if (!dataLoaded) {
                     fetchData();
@@ -136,7 +136,7 @@ module.exports = function (ngApp, events) {
              */
             $scope.hide = function () {
                 $scope.showing = false;
-                $('#image-manager').find('.overlay').fadeOut(240);
+                $('#image-manager').find('[overlay]').fadeOut(240);
             };
 
             let baseUrl = window.baseUrl('/images/' + $scope.imageType + '/all/');

From ab07f7df6cc4b60768d385064a970d05db8234eb Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Wed, 9 Aug 2017 21:33:00 +0100
Subject: [PATCH 73/83] Converted image manager into vue component

---
 resources/assets/js/components/index.js       |   2 +
 .../assets/js/components/notification.js      |  15 +-
 resources/assets/js/controllers.js            | 250 ------------------
 resources/assets/js/directives.js             |   2 +-
 resources/assets/js/global.js                 |   2 -
 resources/assets/js/pages/page-form.js        |   4 +-
 resources/assets/js/services.js               |  12 -
 .../assets/js/vues/components/dropzone.js     |  60 +++++
 resources/assets/js/vues/image-manager.js     | 182 +++++++++++++
 resources/assets/js/vues/vues.js              |   3 +-
 .../views/components/image-manager.blade.php  |  62 +++--
 11 files changed, 287 insertions(+), 307 deletions(-)
 delete mode 100644 resources/assets/js/services.js
 create mode 100644 resources/assets/js/vues/components/dropzone.js
 create mode 100644 resources/assets/js/vues/image-manager.js

diff --git a/resources/assets/js/components/index.js b/resources/assets/js/components/index.js
index c38e20aa2..43466a0d9 100644
--- a/resources/assets/js/components/index.js
+++ b/resources/assets/js/components/index.js
@@ -21,6 +21,8 @@ for (let i = 0, len = componentNames.length; i < len; i++) {
     if (typeof window.components[name] === "undefined") window.components[name] = [];
     for (let j = 0, jLen = elems.length; j < jLen; j++) {
          let instance = new component(elems[j]);
+         if (typeof elems[j].components === 'undefined') elems[j].components = {};
+         elems[j].components[name] = instance;
          window.components[name].push(instance);
     }
 }
\ No newline at end of file
diff --git a/resources/assets/js/components/notification.js b/resources/assets/js/components/notification.js
index 4b809c935..1a9819702 100644
--- a/resources/assets/js/components/notification.js
+++ b/resources/assets/js/components/notification.js
@@ -7,14 +7,16 @@ class Notification {
         this.textElem = elem.querySelector('span');
         this.autohide = this.elem.hasAttribute('data-autohide');
         window.Events.listen(this.type, text => {
-            console.log('show', text);
             this.show(text);
         });
         elem.addEventListener('click', this.hide.bind(this));
         if (elem.hasAttribute('data-show')) this.show(this.textElem.textContent);
+
+        this.hideCleanup = this.hideCleanup.bind(this);
     }
 
     show(textToShow = '') {
+        this.elem.removeEventListener('transitionend', this.hideCleanup);
         this.textElem.textContent = textToShow;
         this.elem.style.display = 'block';
         setTimeout(() => {
@@ -26,13 +28,12 @@ class Notification {
 
     hide() {
         this.elem.classList.remove('showing');
+        this.elem.addEventListener('transitionend', this.hideCleanup);
+    }
 
-        function transitionEnd() {
-            this.elem.style.display = 'none';
-            this.elem.removeEventListener('transitionend', transitionEnd);
-        }
-
-        this.elem.addEventListener('transitionend', transitionEnd.bind(this));
+    hideCleanup() {
+        this.elem.style.display = 'none';
+        this.elem.removeEventListener('transitionend', this.hideCleanup);
     }
 
 }
diff --git a/resources/assets/js/controllers.js b/resources/assets/js/controllers.js
index 4acb40b35..de3ce81c6 100644
--- a/resources/assets/js/controllers.js
+++ b/resources/assets/js/controllers.js
@@ -8,256 +8,6 @@ moment.locale('en-gb');
 
 module.exports = function (ngApp, events) {
 
-    ngApp.controller('ImageManagerController', ['$scope', '$attrs', '$http', '$timeout', 'imageManagerService',
-        function ($scope, $attrs, $http, $timeout, imageManagerService) {
-
-            $scope.images = [];
-            $scope.imageType = $attrs.imageType;
-            $scope.selectedImage = false;
-            $scope.dependantPages = false;
-            $scope.showing = false;
-            $scope.hasMore = false;
-            $scope.imageUpdateSuccess = false;
-            $scope.imageDeleteSuccess = false;
-            $scope.uploadedTo = $attrs.uploadedTo;
-            $scope.view = 'all';
-
-            $scope.searching = false;
-            $scope.searchTerm = '';
-
-            let page = 0;
-            let previousClickTime = 0;
-            let previousClickImage = 0;
-            let dataLoaded = false;
-            let callback = false;
-
-            let preSearchImages = [];
-            let preSearchHasMore = false;
-
-            /**
-             * Used by dropzone to get the endpoint to upload to.
-             * @returns {string}
-             */
-            $scope.getUploadUrl = function () {
-                return window.baseUrl('/images/' + $scope.imageType + '/upload');
-            };
-
-            /**
-             * Cancel the current search operation.
-             */
-            function cancelSearch() {
-                $scope.searching = false;
-                $scope.searchTerm = '';
-                $scope.images = preSearchImages;
-                $scope.hasMore = preSearchHasMore;
-            }
-            $scope.cancelSearch = cancelSearch;
-
-
-            /**
-             * Runs on image upload, Adds an image to local list of images
-             * and shows a success message to the user.
-             * @param file
-             * @param data
-             */
-            $scope.uploadSuccess = function (file, data) {
-                $scope.$apply(() => {
-                    $scope.images.unshift(data);
-                });
-                events.emit('success', trans('components.image_upload_success'));
-            };
-
-            /**
-             * Runs the callback and hides the image manager.
-             * @param returnData
-             */
-            function callbackAndHide(returnData) {
-                if (callback) callback(returnData);
-                $scope.hide();
-            }
-
-            /**
-             * Image select action. Checks if a double-click was fired.
-             * @param image
-             */
-            $scope.imageSelect = function (image) {
-                let dblClickTime = 300;
-                let currentTime = Date.now();
-                let timeDiff = currentTime - previousClickTime;
-
-                if (timeDiff < dblClickTime && image.id === previousClickImage) {
-                    // If double click
-                    callbackAndHide(image);
-                } else {
-                    // If single
-                    $scope.selectedImage = image;
-                    $scope.dependantPages = false;
-                }
-                previousClickTime = currentTime;
-                previousClickImage = image.id;
-            };
-
-            /**
-             * Action that runs when the 'Select image' button is clicked.
-             * Runs the callback and hides the image manager.
-             */
-            $scope.selectButtonClick = function () {
-                callbackAndHide($scope.selectedImage);
-            };
-
-            /**
-             * Show the image manager.
-             * Takes a callback to execute later on.
-             * @param doneCallback
-             */
-            function show(doneCallback) {
-                callback = doneCallback;
-                $scope.showing = true;
-                $('#image-manager').find('[overlay]').css('display', 'flex').hide().fadeIn(240);
-                // Get initial images if they have not yet been loaded in.
-                if (!dataLoaded) {
-                    fetchData();
-                    dataLoaded = true;
-                }
-            }
-
-            // Connects up the image manger so it can be used externally
-            // such as from TinyMCE.
-            imageManagerService.show = show;
-            imageManagerService.showExternal = function (doneCallback) {
-                $scope.$apply(() => {
-                    show(doneCallback);
-                });
-            };
-            window.ImageManager = imageManagerService;
-
-            /**
-             * Hide the image manager
-             */
-            $scope.hide = function () {
-                $scope.showing = false;
-                $('#image-manager').find('[overlay]').fadeOut(240);
-            };
-
-            let baseUrl = window.baseUrl('/images/' + $scope.imageType + '/all/');
-
-            /**
-             * Fetch the list image data from the server.
-             */
-            function fetchData() {
-                let url = baseUrl + page + '?';
-                let components = {};
-                if ($scope.uploadedTo) components['page_id'] = $scope.uploadedTo;
-                if ($scope.searching) components['term'] = $scope.searchTerm;
-
-
-                url += Object.keys(components).map((key) => {
-                    return key + '=' + encodeURIComponent(components[key]);
-                }).join('&');
-
-                $http.get(url).then((response) => {
-                    $scope.images = $scope.images.concat(response.data.images);
-                    $scope.hasMore = response.data.hasMore;
-                    page++;
-                });
-            }
-            $scope.fetchData = fetchData;
-
-            /**
-             * Start a search operation
-             */
-            $scope.searchImages = function() {
-
-                if ($scope.searchTerm === '') {
-                    cancelSearch();
-                    return;
-                }
-
-                if (!$scope.searching) {
-                    preSearchImages = $scope.images;
-                    preSearchHasMore = $scope.hasMore;
-                }
-
-                $scope.searching = true;
-                $scope.images = [];
-                $scope.hasMore = false;
-                page = 0;
-                baseUrl = window.baseUrl('/images/' + $scope.imageType + '/search/');
-                fetchData();
-            };
-
-            /**
-             * Set the current image listing view.
-             * @param viewName
-             */
-            $scope.setView = function(viewName) {
-                cancelSearch();
-                $scope.images = [];
-                $scope.hasMore = false;
-                page = 0;
-                $scope.view = viewName;
-                baseUrl = window.baseUrl('/images/' + $scope.imageType  + '/' + viewName + '/');
-                fetchData();
-            };
-
-            /**
-             * Save the details of an image.
-             * @param event
-             */
-            $scope.saveImageDetails = function (event) {
-                event.preventDefault();
-                let url = window.baseUrl('/images/update/' + $scope.selectedImage.id);
-                $http.put(url, this.selectedImage).then(response => {
-                    events.emit('success', trans('components.image_update_success'));
-                }, (response) => {
-                    if (response.status === 422) {
-                        let errors = response.data;
-                        let message = '';
-                        Object.keys(errors).forEach((key) => {
-                            message += errors[key].join('\n');
-                        });
-                        events.emit('error', message);
-                    } else if (response.status === 403) {
-                        events.emit('error', response.data.error);
-                    }
-                });
-            };
-
-            /**
-             * Delete an image from system and notify of success.
-             * Checks if it should force delete when an image
-             * has dependant pages.
-             * @param event
-             */
-            $scope.deleteImage = function (event) {
-                event.preventDefault();
-                let force = $scope.dependantPages !== false;
-                let url = window.baseUrl('/images/' + $scope.selectedImage.id);
-                if (force) url += '?force=true';
-                $http.delete(url).then((response) => {
-                    $scope.images.splice($scope.images.indexOf($scope.selectedImage), 1);
-                    $scope.selectedImage = false;
-                    events.emit('success', trans('components.image_delete_success'));
-                }, (response) => {
-                    // Pages failure
-                    if (response.status === 400) {
-                        $scope.dependantPages = response.data;
-                    } else if (response.status === 403) {
-                        events.emit('error', response.data.error);
-                    }
-                });
-            };
-
-            /**
-             * Simple date creator used to properly format dates.
-             * @param stringDate
-             * @returns {Date}
-             */
-            $scope.getDate = function (stringDate) {
-                return new Date(stringDate);
-            };
-
-        }]);
 
     ngApp.controller('PageEditController', ['$scope', '$http', '$attrs', '$interval', '$timeout', '$sce',
         function ($scope, $http, $attrs, $interval, $timeout, $sce) {
diff --git a/resources/assets/js/directives.js b/resources/assets/js/directives.js
index 522dcacae..a156c961c 100644
--- a/resources/assets/js/directives.js
+++ b/resources/assets/js/directives.js
@@ -383,7 +383,7 @@ module.exports = function (ngApp, events) {
                 // Show the image manager and handle image insertion
                 function showImageManager() {
                     let cursorPos = cm.getCursor('from');
-                    window.ImageManager.showExternal(image => {
+                    window.ImageManager.show(image => {
                         let selectedText = cm.getSelection();
                         let newText = "![" + (selectedText || image.name) + "](" + image.thumbs.display + ")";
                         cm.focus();
diff --git a/resources/assets/js/global.js b/resources/assets/js/global.js
index 3879a4d4f..28d1e3b0c 100644
--- a/resources/assets/js/global.js
+++ b/resources/assets/js/global.js
@@ -67,10 +67,8 @@ require("./vues/vues");
 require("./components");
 
 // Load in angular specific items
-const Services = require('./services');
 const Directives = require('./directives');
 const Controllers = require('./controllers');
-Services(ngApp, window.Events);
 Directives(ngApp, window.Events);
 Controllers(ngApp, window.Events);
 
diff --git a/resources/assets/js/pages/page-form.js b/resources/assets/js/pages/page-form.js
index 4f4c1fbe0..08e4c0c34 100644
--- a/resources/assets/js/pages/page-form.js
+++ b/resources/assets/js/pages/page-form.js
@@ -283,7 +283,7 @@ module.exports = function() {
 
             if (type === 'image') {
                 // Show image manager
-                window.ImageManager.showExternal(function (image) {
+                window.ImageManager.show(function (image) {
 
                     // Set popover link input to image url then fire change event
                     // to ensure the new value sticks
@@ -365,7 +365,7 @@ module.exports = function() {
                 icon: 'image',
                 tooltip: 'Insert an image',
                 onclick: function () {
-                    window.ImageManager.showExternal(function (image) {
+                    window.ImageManager.show(function (image) {
                         let html = `<a href="${image.url}" target="_blank">`;
                         html += `<img src="${image.thumbs.display}" alt="${image.name}">`;
                         html += '</a>';
diff --git a/resources/assets/js/services.js b/resources/assets/js/services.js
deleted file mode 100644
index cd2759c54..000000000
--- a/resources/assets/js/services.js
+++ /dev/null
@@ -1,12 +0,0 @@
-"use strict";
-
-module.exports = function(ngApp, events) {
-
-    ngApp.factory('imageManagerService', function() {
-        return {
-            show: false,
-            showExternal: false
-        };
-    });
-
-};
\ No newline at end of file
diff --git a/resources/assets/js/vues/components/dropzone.js b/resources/assets/js/vues/components/dropzone.js
new file mode 100644
index 000000000..0f31bd579
--- /dev/null
+++ b/resources/assets/js/vues/components/dropzone.js
@@ -0,0 +1,60 @@
+const DropZone = require("dropzone");
+
+const template = `
+    <div class="dropzone-container">
+        <div class="dz-message">{{placeholder}}</div>
+    </div>
+`;
+
+const props = ['placeholder', 'uploadUrl', 'uploadedTo'];
+
+// TODO - Remove jQuery usage
+function mounted() {
+   let container = this.$el;
+   let _this = this;
+   new DropZone(container, {
+        url: function() {
+            return _this.uploadUrl;
+        },
+        init: function () {
+            let dz = this;
+
+            dz.on('sending', function (file, xhr, data) {
+                let token = window.document.querySelector('meta[name=token]').getAttribute('content');
+                data.append('_token', token);
+                let uploadedTo = typeof _this.uploadedTo === 'undefined' ? 0 : _this.uploadedTo;
+                data.append('uploaded_to', uploadedTo);
+            });
+
+            dz.on('success', function (file, data) {
+                _this.$emit('success', {file, data});
+                $(file.previewElement).fadeOut(400, function () {
+                    dz.removeFile(file);
+                });
+            });
+
+            dz.on('error', function (file, errorMessage, xhr) {
+                _this.$emit('error', {file, errorMessage, xhr});
+                console.log(errorMessage);
+                console.log(xhr);
+                function setMessage(message) {
+                    $(file.previewElement).find('[data-dz-errormessage]').text(message);
+                }
+
+                if (xhr.status === 413) setMessage(trans('errors.server_upload_limit'));
+                if (errorMessage.file) setMessage(errorMessage.file[0]);
+            });
+        }
+   });
+}
+
+function data() {
+    return {}
+}
+
+module.exports = {
+    template,
+    props,
+    mounted,
+    data,
+};
\ No newline at end of file
diff --git a/resources/assets/js/vues/image-manager.js b/resources/assets/js/vues/image-manager.js
new file mode 100644
index 000000000..9e3fa013e
--- /dev/null
+++ b/resources/assets/js/vues/image-manager.js
@@ -0,0 +1,182 @@
+const dropzone = require('./components/dropzone');
+
+let page = 0;
+let previousClickTime = 0;
+let previousClickImage = 0;
+let dataLoaded = false;
+let callback = false;
+let baseUrl = '';
+
+let preSearchImages = [];
+let preSearchHasMore = false;
+
+const data = {
+    images: [],
+
+    imageType: false,
+    uploadedTo: false,
+
+    selectedImage: false,
+    dependantPages: false,
+    showing: false,
+    view: 'all',
+    hasMore: false,
+    searching: false,
+    searchTerm: '',
+
+    imageUpdateSuccess: false,
+    imageDeleteSuccess: false,
+};
+
+const methods = {
+
+    show(providedCallback) {
+        callback = providedCallback;
+        this.showing = true;
+        this.$el.children[0].components.overlay.show();
+
+        // Get initial images if they have not yet been loaded in.
+        if (dataLoaded) return;
+        this.fetchData();
+        dataLoaded = true;
+    },
+
+    hide() {
+        this.showing = false;
+        this.$el.children[0].components.overlay.hide();
+    },
+
+    fetchData() {
+        let url = baseUrl + page;
+        let query = {};
+        if (this.uploadedTo !== false) query.page_id = this.uploadedTo;
+        if (this.searching) query.term = this.searchTerm;
+
+        this.$http.get(url, {params: query}).then(response => {
+            this.images = this.images.concat(response.data.images);
+            this.hasMore = response.data.hasMore;
+            page++;
+        });
+    },
+
+    setView(viewName) {
+        this.cancelSearch();
+        this.images = [];
+        this.hasMore = false;
+        page = 0;
+        this.view = viewName;
+        baseUrl = window.baseUrl(`/images/${this.imageType}/${viewName}/`);
+        this.fetchData();
+    },
+
+    searchImages() {
+        if (this.searchTerm === '') return this.cancelSearch();
+
+        // Cache current settings for later
+        if (!this.searching) {
+            preSearchImages = this.images;
+            preSearchHasMore = this.hasMore;
+        }
+
+        this.searching = true;
+        this.images = [];
+        this.hasMore = false;
+        page = 0;
+        baseUrl = window.baseUrl(`/images/${this.imageType}/search/`);
+        this.fetchData();
+    },
+
+    cancelSearch() {
+        this.searching = false;
+        this.searchTerm = '';
+        this.images = preSearchImages;
+        this.hasMore = preSearchHasMore;
+    },
+
+    imageSelect(image) {
+        let dblClickTime = 300;
+        let currentTime = Date.now();
+        let timeDiff = currentTime - previousClickTime;
+        let isDblClick = timeDiff < dblClickTime && image.id === previousClickImage;
+
+        if (isDblClick) {
+            this.callbackAndHide(image);
+        } else {
+            this.selectedImage = image;
+            this.dependantPages = false;
+        }
+
+        previousClickTime = currentTime;
+        previousClickImage = image.id;
+    },
+
+    callbackAndHide(imageResult) {
+        if (callback) callback(imageResult);
+        this.hide();
+    },
+
+    saveImageDetails() {
+        let url = window.baseUrl(`/images/update/${this.selectedImage.id}`);
+        this.$http.put(url, this.selectedImage).then(response => {
+            this.$events.emit('success', trans('components.image_update_success'));
+        }).catch(error => {
+            if (error.response.status === 422) {
+                let errors = error.response.data;
+                let message = '';
+                Object.keys(errors).forEach((key) => {
+                    message += errors[key].join('\n');
+                });
+                this.$events.emit('error', message);
+            } else if (error.response.status === 403) {
+                this.$events.emit('error', error.response.data.error);
+            }
+        });
+    },
+
+    deleteImage() {
+        let force = this.dependantPages !== false;
+        let url = window.baseUrl('/images/' + this.selectedImage.id);
+        if (force) url += '?force=true';
+        this.$http.delete(url).then(response => {
+            this.images.splice(this.images.indexOf(this.selectedImage), 1);
+            this.selectedImage = false;
+            this.$events.emit('success', trans('components.image_delete_success'));
+        }).catch(error=> {
+            if (error.response.status === 400) {
+                this.dependantPages = error.response.data;
+            } else if (error.response.status === 403) {
+                this.$events.emit('error', error.response.data.error);
+            }
+        });
+    },
+
+    getDate(stringDate) {
+        return new Date(stringDate);
+    },
+
+    uploadSuccess(event) {
+        this.images.unshift(event.data);
+        this.$events.emit('success', trans('components.image_upload_success'));
+    },
+};
+
+const computed = {
+    uploadUrl() {
+        return window.baseUrl(`/images/${this.imageType}/upload`);
+    }
+};
+
+function mounted() {
+    window.ImageManager = this;
+    this.imageType = this.$el.getAttribute('image-type');
+    this.uploadedTo = this.$el.getAttribute('uploaded-to');
+    baseUrl = window.baseUrl('/images/' + this.imageType + '/all/')
+}
+
+module.exports = {
+    mounted,
+    methods,
+    data,
+    computed,
+    components: {dropzone},
+};
\ No newline at end of file
diff --git a/resources/assets/js/vues/vues.js b/resources/assets/js/vues/vues.js
index 31d833bfb..e6d4b9f5b 100644
--- a/resources/assets/js/vues/vues.js
+++ b/resources/assets/js/vues/vues.js
@@ -7,7 +7,8 @@ function exists(id) {
 let vueMapping = {
     'search-system': require('./search'),
     'entity-dashboard': require('./entity-search'),
-    'code-editor': require('./code-editor')
+    'code-editor': require('./code-editor'),
+    'image-manager': require('./image-manager'),
 };
 
 window.vues = {};
diff --git a/resources/views/components/image-manager.blade.php b/resources/views/components/image-manager.blade.php
index 05bf09799..a4612a4ac 100644
--- a/resources/views/components/image-manager.blade.php
+++ b/resources/views/components/image-manager.blade.php
@@ -1,6 +1,6 @@
-<div id="image-manager" image-type="{{ $imageType }}" ng-controller="ImageManagerController" uploaded-to="{{ $uploaded_to or 0 }}">
-    <div overlay ng-cloak ng-click="hide()">
-        <div class="popup-body" ng-click="$event.stopPropagation()">
+<div id="image-manager" image-type="{{ $imageType }}" uploaded-to="{{ $uploaded_to or 0 }}">
+    <div overlay v-cloak>
+        <div class="popup-body" @click.stop="">
 
             <div class="popup-header primary-background">
                 <div class="popup-title">{{ trans('components.image_select') }}</div>
@@ -10,82 +10,80 @@
             <div class="flex-fill image-manager-body">
 
                 <div class="image-manager-content">
-                    <div ng-if="imageType === 'gallery'" class="container">
+                    <div v-if="imageType === 'gallery'" class="container">
                         <div class="image-manager-header row faded-small nav-tabs">
-                            <div class="col-xs-4 tab-item" title="{{ trans('components.image_all_title') }}" ng-class="{selected: (view=='all')}" ng-click="setView('all')"><i class="zmdi zmdi-collection-image"></i> {{ trans('components.image_all') }}</div>
-                            <div class="col-xs-4 tab-item" title="{{ trans('components.image_book_title') }}" ng-class="{selected: (view=='book')}" ng-click="setView('book')"><i class="zmdi zmdi-book text-book"></i> {{ trans('entities.book') }}</div>
-                            <div class="col-xs-4 tab-item" title="{{ trans('components.image_page_title') }}" ng-class="{selected: (view=='page')}" ng-click="setView('page')"><i class="zmdi zmdi-file-text text-page"></i> {{ trans('entities.page') }}</div>
+                            <div class="col-xs-4 tab-item" title="{{ trans('components.image_all_title') }}" :class="{selected: (view=='all')}" @click="setView('all')"><i class="zmdi zmdi-collection-image"></i> {{ trans('components.image_all') }}</div>
+                            <div class="col-xs-4 tab-item" title="{{ trans('components.image_book_title') }}" :class="{selected: (view=='book')}" @click="setView('book')"><i class="zmdi zmdi-book text-book"></i> {{ trans('entities.book') }}</div>
+                            <div class="col-xs-4 tab-item" title="{{ trans('components.image_page_title') }}" :class="{selected: (view=='page')}" @click="setView('page')"><i class="zmdi zmdi-file-text text-page"></i> {{ trans('entities.page') }}</div>
                         </div>
                     </div>
-                    <div ng-show="view === 'all'" >
-                        <form ng-submit="searchImages()" class="contained-search-box">
-                            <input type="text" placeholder="{{ trans('components.image_search_hint') }}" ng-model="searchTerm">
-                            <button ng-class="{active: searching}" title="{{ trans('common.search_clear') }}" type="button" ng-click="cancelSearch()" class="text-button cancel"><i class="zmdi zmdi-close-circle-o"></i></button>
-                            <button title="{{ trans('common.search') }}" class="text-button" type="submit"><i class="zmdi zmdi-search"></i></button>
+                    <div v-show="view === 'all'" >
+                        <form @submit="searchImages" class="contained-search-box">
+                            <input placeholder="{{ trans('components.image_search_hint') }}" v-model="searchTerm">
+                            <button :class="{active: searching}" title="{{ trans('common.search_clear') }}" type="button" @click="cancelSearch()" class="text-button cancel"><i class="zmdi zmdi-close-circle-o"></i></button>
+                            <button title="{{ trans('common.search') }}" class="text-button"><i class="zmdi zmdi-search"></i></button>
                         </form>
                     </div>
                     <div class="image-manager-list">
-                        <div ng-repeat="image in images">
-                            <div class="image anim fadeIn" ng-style="{animationDelay: ($index > 26) ? '160ms' : ($index * 25) + 'ms'}"
-                                 ng-class="{selected: (image==selectedImage)}" ng-click="imageSelect(image)">
-                                <img ng-src="@{{image.thumbs.gallery}}" ng-attr-alt="@{{image.title}}" ng-attr-title="@{{image.name}}">
+                        <div v-if="images.length > 0" v-for="(image, idx) in images">
+                            <div class="image anim fadeIn" :style="{animationDelay: (idx > 26) ? '160ms' : ((idx * 25) + 'ms')}"
+                                 :class="{selected: (image==selectedImage)}" @click="imageSelect(image)">
+                                <img :src="image.thumbs.gallery" :alt="image.title" :title="image.name">
                                 <div class="image-meta">
-                                    <span class="name" ng-bind="image.name"></span>
+                                    <span class="name" v-text="image.name"></span>
                                     <span class="date">{{ trans('components.image_uploaded', ['uploadedDate' => "{{ getDate(image.created_at) }" . "}"]) }}</span>
                                 </div>
                             </div>
                         </div>
-                        <div class="load-more" ng-show="hasMore" ng-click="fetchData()">{{ trans('components.image_load_more') }}</div>
+                        <div class="load-more" v-show="hasMore" @click="fetchData">{{ trans('components.image_load_more') }}</div>
                     </div>
                 </div>
 
                 <div class="image-manager-sidebar">
                     <div class="inner">
 
-                        <div class="image-manager-details anim fadeIn" ng-show="selectedImage">
+                        <div class="image-manager-details anim fadeIn" v-if="selectedImage">
 
-                            <form ng-submit="saveImageDetails($event)">
+                            <form @submit.prevent="saveImageDetails">
                                 <div>
-                                    <a ng-href="@{{selectedImage.url}}" target="_blank" style="display: block;">
-                                        <img ng-src="@{{selectedImage.thumbs.gallery}}" ng-attr-alt="@{{selectedImage.title}}" ng-attr-title="@{{selectedImage.name}}">
+                                    <a :href="selectedImage.url" target="_blank" style="display: block;">
+                                        <img :src="selectedImage.thumbs.gallery" :alt="selectedImage.title"
+                                             :title="selectedImage.name">
                                     </a>
                                 </div>
                                 <div class="form-group">
                                     <label for="name">{{ trans('components.image_image_name') }}</label>
-                                    <input type="text" id="name" name="name" ng-model="selectedImage.name">
+                                    <input id="name" name="name" v-model="selectedImage.name">
                                 </div>
                             </form>
 
-                            <div ng-show="dependantPages">
+                            <div v-show="dependantPages">
                                 <p class="text-neg text-small">
                                     {{ trans('components.image_delete_confirm') }}
                                 </p>
                                 <ul class="text-neg">
-                                    <li ng-repeat="page in dependantPages">
-                                        <a ng-href="@{{ page.url }}" target="_blank" class="text-neg" ng-bind="page.name"></a>
+                                    <li v-for="page in dependantPages">
+                                        <a :href="page.url" target="_blank" class="text-neg" v-text="page.name"></a>
                                     </li>
                                 </ul>
                             </div>
 
                             <div class="clearfix">
-                                <form class="float left" ng-submit="deleteImage($event)">
+                                <form class="float left" @submit.prevent="deleteImage">
                                     <button class="button icon neg"><i class="zmdi zmdi-delete"></i></button>
                                 </form>
-                                <button class="button pos anim fadeIn float right" ng-show="selectedImage" ng-click="selectButtonClick()">
+                                <button class="button pos anim fadeIn float right" v-show="selectedImage" @click="callbackAndHide(selectedImage)">
                                     <i class="zmdi zmdi-square-right"></i>{{ trans('components.image_select_image') }}
                                 </button>
                             </div>
 
                         </div>
 
-                        <drop-zone message="{{ trans('components.image_dropzone') }}" upload-url="@{{getUploadUrl()}}" uploaded-to="@{{uploadedTo}}" event-success="uploadSuccess"></drop-zone>
-
+                        <dropzone placeholder="{{ trans('components.image_dropzone') }}" :upload-url="uploadUrl" :uploaded-to="uploadedTo" @success="uploadSuccess"></dropzone>
 
                     </div>
                 </div>
 
-
-
             </div>
 
         </div>

From f338dbe3f87586d714a17f2bc12b520ac1a98cd2 Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Thu, 10 Aug 2017 20:11:25 +0100
Subject: [PATCH 74/83] Started vueifying tag system

---
 package.json                                 |  3 +-
 resources/assets/js/controllers.js           | 69 +-------------------
 resources/assets/js/vues/tag-manager.js      | 65 ++++++++++++++++++
 resources/assets/js/vues/vues.js             |  1 +
 resources/assets/sass/_pages.scss            |  2 +-
 resources/assets/sass/_tables.scss           | 13 ++++
 resources/views/pages/form-toolbox.blade.php | 31 +++++----
 7 files changed, 101 insertions(+), 83 deletions(-)
 create mode 100644 resources/assets/js/vues/tag-manager.js

diff --git a/package.json b/package.json
index 1ae0e7f68..f447ec786 100644
--- a/package.json
+++ b/package.json
@@ -40,7 +40,8 @@
     "markdown-it": "^8.3.1",
     "markdown-it-task-lists": "^2.0.0",
     "moment": "^2.12.0",
-    "vue": "^2.2.6"
+    "vue": "^2.2.6",
+    "vuedraggable": "^2.14.1"
   },
   "browser": {
     "vue": "vue/dist/vue.common.js"
diff --git a/resources/assets/js/controllers.js b/resources/assets/js/controllers.js
index de3ce81c6..c317da753 100644
--- a/resources/assets/js/controllers.js
+++ b/resources/assets/js/controllers.js
@@ -157,74 +157,7 @@ module.exports = function (ngApp, events) {
                 containment: "parent",
                 axis: "y"
             };
-
-            /**
-             * Push an empty tag to the end of the scope tags.
-             */
-            function addEmptyTag() {
-                $scope.tags.push({
-                    name: '',
-                    value: ''
-                });
-            }
-            $scope.addEmptyTag = addEmptyTag;
-
-            /**
-             * Get all tags for the current book and add into scope.
-             */
-            function getTags() {
-                let url = window.baseUrl(`/ajax/tags/get/page/${pageId}`);
-                $http.get(url).then((responseData) => {
-                    $scope.tags = responseData.data;
-                    addEmptyTag();
-                });
-            }
-            getTags();
-
-            /**
-             * Set the order property on all tags.
-             */
-            function setTagOrder() {
-                for (let i = 0; i < $scope.tags.length; i++) {
-                    $scope.tags[i].order = i;
-                }
-            }
-
-            /**
-             * When an tag changes check if another empty editable
-             * field needs to be added onto the end.
-             * @param tag
-             */
-            $scope.tagChange = function(tag) {
-                let cPos = $scope.tags.indexOf(tag);
-                if (cPos !== $scope.tags.length-1) return;
-
-                if (tag.name !== '' || tag.value !== '') {
-                    addEmptyTag();
-                }
-            };
-
-            /**
-             * When an tag field loses focus check the tag to see if its
-             * empty and therefore could be removed from the list.
-             * @param tag
-             */
-            $scope.tagBlur = function(tag) {
-                let isLast = $scope.tags.length - 1 === $scope.tags.indexOf(tag);
-                if (tag.name === '' && tag.value === '' && !isLast) {
-                    let cPos = $scope.tags.indexOf(tag);
-                    $scope.tags.splice(cPos, 1);
-                }
-            };
-
-            /**
-             * Remove a tag from the current list.
-             * @param tag
-             */
-            $scope.removeTag = function(tag) {
-                let cIndex = $scope.tags.indexOf(tag);
-                $scope.tags.splice(cIndex, 1);
-            };
+            // TODO - Delete
 
         }]);
 
diff --git a/resources/assets/js/vues/tag-manager.js b/resources/assets/js/vues/tag-manager.js
new file mode 100644
index 000000000..cf3e4d34e
--- /dev/null
+++ b/resources/assets/js/vues/tag-manager.js
@@ -0,0 +1,65 @@
+const draggable = require('vuedraggable');
+
+let data = {
+    pageId: false,
+    tags: [],
+};
+
+const components = {draggable};
+
+let computed = {
+
+};
+
+let methods = {
+
+    addEmptyTag() {
+        this.tags.push({name: '', value: '', key: Math.random().toString(36).substring(7)});
+    },
+
+    /**
+     * When an tag changes check if another empty editable field needs to be added onto the end.
+     * @param tag
+     */
+    tagChange(tag) {
+        let tagPos = this.tags.indexOf(tag);
+        if (tagPos !== this.tags.length-1 || tag.name !== '' || tag.value !== '') return;
+        this.addEmptyTag();
+    },
+
+    /**
+     * When an tag field loses focus check the tag to see if its
+     * empty and therefore could be removed from the list.
+     * @param tag
+     */
+    tagBlur(tag) {
+        let isLast = (this.tags.indexOf(tag) === this.tags.length-1);
+        if (tag.name !== '' || tag.value !== '' || isLast) return;
+        let cPos = this.tags.indexOf(tag);
+        this.tags.splice(cPos, 1);
+    },
+
+    removeTag(tag) {
+        let tagPos = this.tags.indexOf(tag);
+        if (tagPos === -1) return;
+        this.tags.splice(tagPos, 1);
+    }
+};
+
+function mounted() {
+    this.pageId = Number(this.$el.getAttribute('page-id'));
+
+    let url = window.baseUrl(`/ajax/tags/get/page/${this.pageId}`);
+    this.$http.get(url).then(response => {
+        let tags = response.data;
+        for (let i = 0, len = tags.length; i < len; i++) {
+            tags[i].key = Math.random().toString(36).substring(7);
+        }
+        this.tags = tags;
+        this.addEmptyTag();
+    });
+}
+
+module.exports = {
+    data, computed, methods, mounted, components
+};
\ No newline at end of file
diff --git a/resources/assets/js/vues/vues.js b/resources/assets/js/vues/vues.js
index e6d4b9f5b..a3f6ec8e5 100644
--- a/resources/assets/js/vues/vues.js
+++ b/resources/assets/js/vues/vues.js
@@ -9,6 +9,7 @@ let vueMapping = {
     'entity-dashboard': require('./entity-search'),
     'code-editor': require('./code-editor'),
     'image-manager': require('./image-manager'),
+    'tag-manager': require('./tag-manager'),
 };
 
 window.vues = {};
diff --git a/resources/assets/sass/_pages.scss b/resources/assets/sass/_pages.scss
index b06892c1d..65fdfbc4b 100755
--- a/resources/assets/sass/_pages.scss
+++ b/resources/assets/sass/_pages.scss
@@ -226,7 +226,7 @@
     width: 100%;
     min-width: 50px;
   }
-  .tags td {
+  .tags td, .tag-table > div > div > div {
     padding-right: $-s;
     padding-top: $-s;
     position: relative;
diff --git a/resources/assets/sass/_tables.scss b/resources/assets/sass/_tables.scss
index 21553b839..ea517fee3 100644
--- a/resources/assets/sass/_tables.scss
+++ b/resources/assets/sass/_tables.scss
@@ -67,4 +67,17 @@ table.file-table {
   .ui-sortable-helper {
     display: table;
   }
+}
+
+.fake-table {
+  display: table;
+  > div {
+    display: table-row-group;
+  }
+  > div > div {
+    display: table-row;
+  }
+  > div > div > div {
+    display: table-cell;
+  }
 }
\ No newline at end of file
diff --git a/resources/views/pages/form-toolbox.blade.php b/resources/views/pages/form-toolbox.blade.php
index ecf7619b7..9b8cd4ed3 100644
--- a/resources/views/pages/form-toolbox.blade.php
+++ b/resources/views/pages/form-toolbox.blade.php
@@ -9,31 +9,36 @@
         @endif
     </div>
 
-    <div toolbox-tab-content="tags" ng-controller="PageTagController" page-id="{{ $page->id or 0 }}">
+    <div toolbox-tab-content="tags" id="tag-manager" page-id="{{ $page->id or 0 }}">
         <h4>{{ trans('entities.page_tags') }}</h4>
         <div class="padded tags">
             <p class="muted small">{!! nl2br(e(trans('entities.tags_explain'))) !!}</p>
-            <table class="no-style" tag-autosuggestions style="width: 100%;">
-                <tbody ui-sortable="sortOptions" ng-model="tags" >
-                    <tr ng-repeat="tag in tags track by $index">
-                        <td width="20" ><i class="handle zmdi zmdi-menu"></i></td>
-                        <td><input autosuggest="{{ baseUrl('/ajax/tags/suggest/names') }}" autosuggest-type="name" class="outline" ng-attr-name="tags[@{{$index}}][name]" type="text" ng-model="tag.name" ng-change="tagChange(tag)" ng-blur="tagBlur(tag)" placeholder="{{ trans('entities.tag') }}"></td>
-                        <td><input autosuggest="{{ baseUrl('/ajax/tags/suggest/values') }}" autosuggest-type="value" class="outline" ng-attr-name="tags[@{{$index}}][value]" type="text" ng-model="tag.value" ng-change="tagChange(tag)" ng-blur="tagBlur(tag)" placeholder="{{ trans('entities.tag_value') }}"></td>
-                        <td width="10" ng-show="tags.length != 1" class="text-center text-neg" style="padding: 0;" ng-click="removeTag(tag)"><i class="zmdi zmdi-close"></i></td>
-                    </tr>
-                </tbody>
-            </table>
+
+            <draggable class="fake-table no-style tag-table" :options="{handle: '.handle'}" :list="tags" element="div" style="width: 100%;">
+                <transition-group name="test" tag="div">
+                    <div v-for="(tag, i) in tags" :key="tag.key">
+                        <div width="20" class="handle" ><i class="zmdi zmdi-menu"></i></div>
+                        <div><input autosuggest="{{ baseUrl('/ajax/tags/suggest/names') }}" autosuggest-type="name" class="outline" :name="tags[i].name"
+                                   v-model="tag.name" @change="tagChange(tag)" @blur="tagBlur(tag)" placeholder="{{ trans('entities.tag') }}"></div>
+                        <div><input autosuggest="{{ baseUrl('/ajax/tags/suggest/values') }}" autosuggest-type="value" class="outline" :name="tags[i].value"
+                                   v-model="tag.value" @change="tagChange(tag)" @blur="tagBlur(tag)" placeholder="{{ trans('entities.tag_value') }}"></div>
+                        <div width="10" v-show="tags.length !== 1" class="text-center text-neg" style="padding: 0;" @click="removeTag(tag)"><i class="zmdi zmdi-close"></i></div>
+                    </div>
+                </transition-group>
+            </draggable>
+
             <table class="no-style" style="width: 100%;">
                 <tbody>
                 <tr class="unsortable">
-                    <td  width="34"></td>
-                    <td ng-click="addEmptyTag()">
+                    <td width="34"></td>
+                    <td @click="addEmptyTag">
                         <button type="button" class="text-button">{{ trans('entities.tags_add') }}</button>
                     </td>
                     <td></td>
                 </tr>
                 </tbody>
             </table>
+
         </div>
     </div>
 

From b023699f1b4b2abd151b2b763ae2d809d1aa3d45 Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Sun, 13 Aug 2017 11:50:40 +0100
Subject: [PATCH 75/83] Converted tag manager to be fully vue based

---
 resources/assets/js/controllers.js           | 17 -----------------
 resources/assets/js/vues/tag-manager.js      |  9 ++++++---
 resources/views/pages/form-toolbox.blade.php | 14 +++++++-------
 3 files changed, 13 insertions(+), 27 deletions(-)

diff --git a/resources/assets/js/controllers.js b/resources/assets/js/controllers.js
index c317da753..132580f68 100644
--- a/resources/assets/js/controllers.js
+++ b/resources/assets/js/controllers.js
@@ -145,23 +145,6 @@ module.exports = function (ngApp, events) {
 
     }]);
 
-    ngApp.controller('PageTagController', ['$scope', '$http', '$attrs',
-        function ($scope, $http, $attrs) {
-
-            const pageId = Number($attrs.pageId);
-            $scope.tags = [];
-
-            $scope.sortOptions = {
-                handle: '.handle',
-                items: '> tr',
-                containment: "parent",
-                axis: "y"
-            };
-            // TODO - Delete
-
-        }]);
-
-
     ngApp.controller('PageAttachmentController', ['$scope', '$http', '$attrs',
         function ($scope, $http, $attrs) {
 
diff --git a/resources/assets/js/vues/tag-manager.js b/resources/assets/js/vues/tag-manager.js
index cf3e4d34e..d934b6266 100644
--- a/resources/assets/js/vues/tag-manager.js
+++ b/resources/assets/js/vues/tag-manager.js
@@ -23,8 +23,7 @@ let methods = {
      */
     tagChange(tag) {
         let tagPos = this.tags.indexOf(tag);
-        if (tagPos !== this.tags.length-1 || tag.name !== '' || tag.value !== '') return;
-        this.addEmptyTag();
+        if (tagPos === this.tags.length-1 && (tag.name !== '' || tag.value !== '')) this.addEmptyTag();
     },
 
     /**
@@ -43,7 +42,11 @@ let methods = {
         let tagPos = this.tags.indexOf(tag);
         if (tagPos === -1) return;
         this.tags.splice(tagPos, 1);
-    }
+    },
+
+    getTagFieldName(index, key) {
+        return `tags[${index}][${key}]`;
+    },
 };
 
 function mounted() {
diff --git a/resources/views/pages/form-toolbox.blade.php b/resources/views/pages/form-toolbox.blade.php
index 9b8cd4ed3..71a4b637e 100644
--- a/resources/views/pages/form-toolbox.blade.php
+++ b/resources/views/pages/form-toolbox.blade.php
@@ -18,9 +18,9 @@
                 <transition-group name="test" tag="div">
                     <div v-for="(tag, i) in tags" :key="tag.key">
                         <div width="20" class="handle" ><i class="zmdi zmdi-menu"></i></div>
-                        <div><input autosuggest="{{ baseUrl('/ajax/tags/suggest/names') }}" autosuggest-type="name" class="outline" :name="tags[i].name"
+                        <div><input autosuggest="{{ baseUrl('/ajax/tags/suggest/names') }}" autosuggest-type="name" class="outline" :name="getTagFieldName(i, 'name')"
                                    v-model="tag.name" @change="tagChange(tag)" @blur="tagBlur(tag)" placeholder="{{ trans('entities.tag') }}"></div>
-                        <div><input autosuggest="{{ baseUrl('/ajax/tags/suggest/values') }}" autosuggest-type="value" class="outline" :name="tags[i].value"
+                        <div><input autosuggest="{{ baseUrl('/ajax/tags/suggest/values') }}" autosuggest-type="value" class="outline" :name="getTagFieldName(i, 'value')"
                                    v-model="tag.value" @change="tagChange(tag)" @blur="tagBlur(tag)" placeholder="{{ trans('entities.tag_value') }}"></div>
                         <div width="10" v-show="tags.length !== 1" class="text-center text-neg" style="padding: 0;" @click="removeTag(tag)"><i class="zmdi zmdi-close"></i></div>
                     </div>
@@ -86,15 +86,15 @@
                             <p class="muted small">{{ trans('entities.attachments_explain_link') }}</p>
                             <div class="form-group">
                                 <label for="attachment-via-link">{{ trans('entities.attachments_link_name') }}</label>
-                                <input type="text" placeholder="{{ trans('entities.attachments_link_name') }}" ng-model="file.name">
+                                <input placeholder="{{ trans('entities.attachments_link_name') }}" ng-model="file.name">
                                 <p class="small neg" ng-repeat="error in errors.link.name" ng-bind="error"></p>
                             </div>
                             <div class="form-group">
                                 <label for="attachment-via-link">{{ trans('entities.attachments_link_url') }}</label>
-                                <input type="text" placeholder="{{ trans('entities.attachments_link_url_hint') }}" ng-model="file.link">
+                                <input placeholder="{{ trans('entities.attachments_link_url_hint') }}" ng-model="file.link">
                                 <p class="small neg" ng-repeat="error in errors.link.link" ng-bind="error"></p>
                             </div>
-                            <button type="submit" class="button pos">{{ trans('entities.attach') }}</button>
+                            <button class="button pos">{{ trans('entities.attach') }}</button>
 
                         </div>
                     </div>
@@ -122,14 +122,14 @@
                         <div tab-content="link">
                             <div class="form-group">
                                 <label for="attachment-link-edit">{{ trans('entities.attachments_link_url') }}</label>
-                                <input type="text" id="attachment-link-edit" placeholder="{{ trans('entities.attachment_link') }}" ng-model="editFile.link">
+                                <input id="attachment-link-edit" placeholder="{{ trans('entities.attachment_link') }}" ng-model="editFile.link">
                                 <p class="small neg" ng-repeat="error in errors.edit.link" ng-bind="error"></p>
                             </div>
                         </div>
                     </div>
 
                     <button type="button" class="button" ng-click="cancelEdit()">{{ trans('common.back') }}</button>
-                    <button type="submit" class="button pos">{{ trans('common.save') }}</button>
+                    <button class="button pos">{{ trans('common.save') }}</button>
                 </div>
 
             </div>

From d3e4a1a6f92231a99116fd5ae609a96971fd3a2a Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Sun, 13 Aug 2017 13:25:30 +0100
Subject: [PATCH 76/83] Converted tag autosuggestion to vue component

---
 resources/assets/js/directives.js             | 182 ------------------
 .../assets/js/vues/components/autosuggest.js  | 130 +++++++++++++
 resources/assets/js/vues/tag-manager.js       |  10 +-
 resources/assets/sass/_forms.scss             |   2 +-
 resources/views/pages/form-toolbox.blade.php  |  12 +-
 5 files changed, 144 insertions(+), 192 deletions(-)
 create mode 100644 resources/assets/js/vues/components/autosuggest.js

diff --git a/resources/assets/js/directives.js b/resources/assets/js/directives.js
index a156c961c..2a0547c97 100644
--- a/resources/assets/js/directives.js
+++ b/resources/assets/js/directives.js
@@ -496,188 +496,6 @@ module.exports = function (ngApp, events) {
         }
     }]);
 
-    /**
-     * Tag Autosuggestions
-     * Listens to child inputs and provides autosuggestions depending on field type
-     * and input. Suggestions provided by server.
-     */
-    ngApp.directive('tagAutosuggestions', ['$http', function ($http) {
-        return {
-            restrict: 'A',
-            link: function (scope, elem, attrs) {
-
-                // Local storage for quick caching.
-                const localCache = {};
-
-                // Create suggestion element
-                const suggestionBox = document.createElement('ul');
-                suggestionBox.className = 'suggestion-box';
-                suggestionBox.style.position = 'absolute';
-                suggestionBox.style.display = 'none';
-                const $suggestionBox = $(suggestionBox);
-
-                // General state tracking
-                let isShowing = false;
-                let currentInput = false;
-                let active = 0;
-
-                // Listen to input events on autosuggest fields
-                elem.on('input focus', '[autosuggest]', function (event) {
-                    let $input = $(this);
-                    let val = $input.val();
-                    let url = $input.attr('autosuggest');
-                    let type = $input.attr('autosuggest-type');
-
-                    // Add name param to request if for a value
-                    if (type.toLowerCase() === 'value') {
-                        let $nameInput = $input.closest('tr').find('[autosuggest-type="name"]').first();
-                        let nameVal = $nameInput.val();
-                        if (nameVal !== '') {
-                            url += '?name=' + encodeURIComponent(nameVal);
-                        }
-                    }
-
-                    let suggestionPromise = getSuggestions(val.slice(0, 3), url);
-                    suggestionPromise.then(suggestions => {
-                        if (val.length === 0) {
-                            displaySuggestions($input, suggestions.slice(0, 6));
-                        } else  {
-                            suggestions = suggestions.filter(item => {
-                                return item.toLowerCase().indexOf(val.toLowerCase()) !== -1;
-                            }).slice(0, 4);
-                            displaySuggestions($input, suggestions);
-                        }
-                    });
-                });
-
-                // Hide autosuggestions when input loses focus.
-                // Slight delay to allow clicks.
-                let lastFocusTime = 0;
-                elem.on('blur', '[autosuggest]', function (event) {
-                    let startTime = Date.now();
-                    setTimeout(() => {
-                        if (lastFocusTime < startTime) {
-                            $suggestionBox.hide();
-                            isShowing = false;
-                        }
-                    }, 200)
-                });
-                elem.on('focus', '[autosuggest]', function (event) {
-                    lastFocusTime = Date.now();
-                });
-
-                elem.on('keydown', '[autosuggest]', function (event) {
-                    if (!isShowing) return;
-
-                    let suggestionElems = suggestionBox.childNodes;
-                    let suggestCount = suggestionElems.length;
-
-                    // Down arrow
-                    if (event.keyCode === 40) {
-                        let newActive = (active === suggestCount - 1) ? 0 : active + 1;
-                        changeActiveTo(newActive, suggestionElems);
-                    }
-                    // Up arrow
-                    else if (event.keyCode === 38) {
-                        let newActive = (active === 0) ? suggestCount - 1 : active - 1;
-                        changeActiveTo(newActive, suggestionElems);
-                    }
-                    // Enter or tab key
-                    else if ((event.keyCode === 13 || event.keyCode === 9) && !event.shiftKey) {
-                        currentInput[0].value = suggestionElems[active].textContent;
-                        currentInput.focus();
-                        $suggestionBox.hide();
-                        isShowing = false;
-                        if (event.keyCode === 13) {
-                            event.preventDefault();
-                            return false;
-                        }
-                    }
-                });
-
-                // Change the active suggestion to the given index
-                function changeActiveTo(index, suggestionElems) {
-                    suggestionElems[active].className = '';
-                    active = index;
-                    suggestionElems[active].className = 'active';
-                }
-
-                // Display suggestions on a field
-                let prevSuggestions = [];
-
-                function displaySuggestions($input, suggestions) {
-
-                    // Hide if no suggestions
-                    if (suggestions.length === 0) {
-                        $suggestionBox.hide();
-                        isShowing = false;
-                        prevSuggestions = suggestions;
-                        return;
-                    }
-
-                    // Otherwise show and attach to input
-                    if (!isShowing) {
-                        $suggestionBox.show();
-                        isShowing = true;
-                    }
-                    if ($input !== currentInput) {
-                        $suggestionBox.detach();
-                        $input.after($suggestionBox);
-                        currentInput = $input;
-                    }
-
-                    // Return if no change
-                    if (prevSuggestions.join() === suggestions.join()) {
-                        prevSuggestions = suggestions;
-                        return;
-                    }
-
-                    // Build suggestions
-                    $suggestionBox[0].innerHTML = '';
-                    for (let i = 0; i < suggestions.length; i++) {
-                        let suggestion = document.createElement('li');
-                        suggestion.textContent = suggestions[i];
-                        suggestion.onclick = suggestionClick;
-                        if (i === 0) {
-                            suggestion.className = 'active';
-                            active = 0;
-                        }
-                        $suggestionBox[0].appendChild(suggestion);
-                    }
-
-                    prevSuggestions = suggestions;
-                }
-
-                // Suggestion click event
-                function suggestionClick(event) {
-                    currentInput[0].value = this.textContent;
-                    currentInput.focus();
-                    $suggestionBox.hide();
-                    isShowing = false;
-                }
-
-                // Get suggestions & cache
-                function getSuggestions(input, url) {
-                    let hasQuery = url.indexOf('?') !== -1;
-                    let searchUrl = url + (hasQuery ? '&' : '?') + 'search=' + encodeURIComponent(input);
-
-                    // Get from local cache if exists
-                    if (typeof localCache[searchUrl] !== 'undefined') {
-                        return new Promise((resolve, reject) => {
-                            resolve(localCache[searchUrl]);
-                        });
-                    }
-
-                    return $http.get(searchUrl).then(response => {
-                        localCache[searchUrl] = response.data;
-                        return response.data;
-                    });
-                }
-
-            }
-        }
-    }]);
-
     ngApp.directive('entityLinkSelector', [function($http) {
         return {
             restrict: 'A',
diff --git a/resources/assets/js/vues/components/autosuggest.js b/resources/assets/js/vues/components/autosuggest.js
new file mode 100644
index 000000000..4d6b97e55
--- /dev/null
+++ b/resources/assets/js/vues/components/autosuggest.js
@@ -0,0 +1,130 @@
+
+const template = `
+    <div>
+        <input :value="value" :autosuggest-type="type" ref="input"
+            :placeholder="placeholder" :name="name"
+            @input="inputUpdate($event.target.value)" @focus="inputUpdate($event.target.value)"
+            @blur="inputBlur"
+            @keydown="inputKeydown"
+        />
+        <ul class="suggestion-box" v-if="showSuggestions">
+            <li v-for="(suggestion, i) in suggestions"
+                @click="selectSuggestion(suggestion)"
+                :class="{active: (i === active)}">{{suggestion}}</li>
+        </ul>
+    </div>
+    
+`;
+
+function data() {
+    return {
+        suggestions: [],
+        showSuggestions: false,
+        active: 0,
+    };
+}
+
+const ajaxCache = {};
+
+const props = ['url', 'type', 'value', 'placeholder', 'name'];
+
+function getNameInputVal(valInput) {
+    let parentRow = valInput.parentNode.parentNode;
+    let nameInput = parentRow.querySelector('[autosuggest-type="name"]');
+    return (nameInput === null) ? '' : nameInput.value;
+}
+
+const methods = {
+
+    inputUpdate(inputValue) {
+        this.$emit('input', inputValue);
+        let params = {};
+
+        if (this.type === 'value') {
+            let nameVal = getNameInputVal(this.$el);
+            if (nameVal !== "") params.name = nameVal;
+        }
+
+        this.getSuggestions(inputValue.slice(0, 3), params).then(suggestions => {
+            if (inputValue.length === 0) {
+                this.displaySuggestions(suggestions.slice(0, 6));
+                return;
+            }
+            // Filter to suggestions containing searched term
+            suggestions = suggestions.filter(item => {
+                return item.toLowerCase().indexOf(inputValue.toLowerCase()) !== -1;
+            }).slice(0, 4);
+            this.displaySuggestions(suggestions);
+        });
+    },
+
+    inputBlur() {
+        setTimeout(() => {
+            this.$emit('blur');
+            this.showSuggestions = false;
+        }, 100);
+    },
+
+    inputKeydown(event) {
+        if (event.keyCode === 13) event.preventDefault();
+        if (!this.showSuggestions) return;
+
+        // Down arrow
+        if (event.keyCode === 40) {
+            this.active = (this.active === this.suggestions.length - 1) ? 0 : this.active+1;
+        }
+        // Up Arrow
+        else if (event.keyCode === 38) {
+            this.active = (this.active === 0) ? this.suggestions.length - 1 : this.active-1;
+        }
+        // Enter or tab keys
+        else if ((event.keyCode === 13 || event.keyCode === 9) && !event.shiftKey) {
+            this.selectSuggestion(this.suggestions[this.active]);
+        }
+        // Escape key
+        else if (event.keyCode === 27) {
+            this.showSuggestions = false;
+        }
+    },
+
+    displaySuggestions(suggestions) {
+        if (suggestions.length === 0) {
+            this.suggestions = [];
+            this.showSuggestions = false;
+            return;
+        }
+
+        this.suggestions = suggestions;
+        this.showSuggestions = true;
+        this.active = 0;
+    },
+
+    selectSuggestion(suggestion) {
+        this.$refs.input.value = suggestion;
+        this.$refs.input.focus();
+        this.$emit('input', suggestion);
+        this.showSuggestions = false;
+    },
+
+    /**
+     * Get suggestions from BookStack. Store and use local cache if already searched.
+     * @param {String} input
+     * @param {Object} params
+     */
+    getSuggestions(input, params) {
+        params.search = input;
+        let cacheKey = `${this.url}:${JSON.stringify(params)}`;
+
+        if (typeof ajaxCache[cacheKey] !== "undefined") return Promise.resolve(ajaxCache[cacheKey]);
+
+        return this.$http.get(this.url, {params}).then(resp => {
+            ajaxCache[cacheKey] = resp.data;
+            return resp.data;
+        });
+    }
+
+};
+
+const computed = [];
+
+module.exports = {template, data, props, methods, computed};
\ No newline at end of file
diff --git a/resources/assets/js/vues/tag-manager.js b/resources/assets/js/vues/tag-manager.js
index d934b6266..d97ceb96b 100644
--- a/resources/assets/js/vues/tag-manager.js
+++ b/resources/assets/js/vues/tag-manager.js
@@ -1,15 +1,15 @@
 const draggable = require('vuedraggable');
+const autosuggest = require('./components/autosuggest');
 
 let data = {
     pageId: false,
     tags: [],
 };
 
-const components = {draggable};
+const components = {draggable, autosuggest};
+const directives = {};
 
-let computed = {
-
-};
+let computed = {};
 
 let methods = {
 
@@ -64,5 +64,5 @@ function mounted() {
 }
 
 module.exports = {
-    data, computed, methods, mounted, components
+    data, computed, methods, mounted, components, directives
 };
\ No newline at end of file
diff --git a/resources/assets/sass/_forms.scss b/resources/assets/sass/_forms.scss
index 392e9ec3e..866316fc5 100644
--- a/resources/assets/sass/_forms.scss
+++ b/resources/assets/sass/_forms.scss
@@ -265,7 +265,7 @@ div[editor-type="markdown"] .title-input.page-title input[type="text"] {
   }
 }
 
-input.outline {
+.outline > input {
   border: 0;
   border-bottom: 2px solid #DDD;
   border-radius: 0;
diff --git a/resources/views/pages/form-toolbox.blade.php b/resources/views/pages/form-toolbox.blade.php
index 71a4b637e..3bc03a17f 100644
--- a/resources/views/pages/form-toolbox.blade.php
+++ b/resources/views/pages/form-toolbox.blade.php
@@ -18,10 +18,14 @@
                 <transition-group name="test" tag="div">
                     <div v-for="(tag, i) in tags" :key="tag.key">
                         <div width="20" class="handle" ><i class="zmdi zmdi-menu"></i></div>
-                        <div><input autosuggest="{{ baseUrl('/ajax/tags/suggest/names') }}" autosuggest-type="name" class="outline" :name="getTagFieldName(i, 'name')"
-                                   v-model="tag.name" @change="tagChange(tag)" @blur="tagBlur(tag)" placeholder="{{ trans('entities.tag') }}"></div>
-                        <div><input autosuggest="{{ baseUrl('/ajax/tags/suggest/values') }}" autosuggest-type="value" class="outline" :name="getTagFieldName(i, 'value')"
-                                   v-model="tag.value" @change="tagChange(tag)" @blur="tagBlur(tag)" placeholder="{{ trans('entities.tag_value') }}"></div>
+                        <div>
+                            <autosuggest url="/ajax/tags/suggest/names" type="name" class="outline" :name="getTagFieldName(i, 'name')"
+                                   v-model="tag.name" @input="tagChange(tag)" @blur="tagBlur(tag)" placeholder="{{ trans('entities.tag') }}"/>
+                        </div>
+                        <div>
+                            <autosuggest url="/ajax/tags/suggest/values" type="value" class="outline" :name="getTagFieldName(i, 'value')"
+                                         v-model="tag.value" @change="tagChange(tag)" @blur="tagBlur(tag)" placeholder="{{ trans('entities.tag') }}"/>
+                        </div>
                         <div width="10" v-show="tags.length !== 1" class="text-center text-neg" style="padding: 0;" @click="removeTag(tag)"><i class="zmdi zmdi-close"></i></div>
                     </div>
                 </transition-group>

From 0d6a6b5b63c73ea631cb305c00b7b39627eb1eb1 Mon Sep 17 00:00:00 2001
From: Timo Schwarzer <me@timoschwarzer.com>
Date: Wed, 16 Aug 2017 16:50:02 +0200
Subject: [PATCH 77/83] Update/fix german translation

---
 resources/lang/de/activities.php |  48 +++----
 resources/lang/de/auth.php       |  44 +++---
 resources/lang/de/common.php     |  14 +-
 resources/lang/de/components.php |   6 +-
 resources/lang/de/entities.php   | 232 +++++++++++++++++--------------
 resources/lang/de/errors.php     |  72 +++++-----
 resources/lang/de/pagination.php |   2 +-
 resources/lang/de/passwords.php  |  10 +-
 resources/lang/de/settings.php   |  80 +++++------
 resources/lang/de/validation.php |  46 +++---
 10 files changed, 287 insertions(+), 267 deletions(-)

diff --git a/resources/lang/de/activities.php b/resources/lang/de/activities.php
index c2d20b3a6..3318ea752 100644
--- a/resources/lang/de/activities.php
+++ b/resources/lang/de/activities.php
@@ -8,33 +8,33 @@ return [
      */
 
     // Pages
-    'page_create'                 => 'Seite erstellt',
-    'page_create_notification'    => 'Seite erfolgreich erstellt',
-    'page_update'                 => 'Seite aktualisiert',
-    'page_update_notification'    => 'Seite erfolgreich aktualisiert',
-    'page_delete'                 => 'Seite gel&ouml;scht',
-    'page_delete_notification'    => 'Seite erfolgreich gel&ouml;scht',
-    'page_restore'                => 'Seite wiederhergstellt',
-    'page_restore_notification'   => 'Seite erfolgreich wiederhergstellt',
-    'page_move'                   => 'Seite verschoben',
+    'page_create'                 => 'hat Seite erstellt:',
+    'page_create_notification'    => 'hat Seite erfolgreich erstellt:',
+    'page_update'                 => 'hat Seite aktualisiert:',
+    'page_update_notification'    => 'hat Seite erfolgreich aktualisiert:',
+    'page_delete'                 => 'hat Seite gelöscht:',
+    'page_delete_notification'    => 'hat Seite erfolgreich gelöscht:',
+    'page_restore'                => 'hat Seite wiederhergstellt:',
+    'page_restore_notification'   => 'hat Seite erfolgreich wiederhergstellt:',
+    'page_move'                   => 'hat Seite verschoben:',
 
     // Chapters
-    'chapter_create'              => 'Kapitel erstellt',
-    'chapter_create_notification' => 'Kapitel erfolgreich erstellt',
-    'chapter_update'              => 'Kapitel aktualisiert',
-    'chapter_update_notification' => 'Kapitel erfolgreich aktualisiert',
-    'chapter_delete'              => 'Kapitel gel&ouml;scht',
-    'chapter_delete_notification' => 'Kapitel erfolgreich gel&ouml;scht',
-    'chapter_move'                => 'Kapitel verschoben',
+    'chapter_create'              => 'hat Kapitel erstellt:',
+    'chapter_create_notification' => 'hat Kapitel erfolgreich erstellt:',
+    'chapter_update'              => 'hat Kapitel aktualisiert:',
+    'chapter_update_notification' => 'hat Kapitel erfolgreich aktualisiert:',
+    'chapter_delete'              => 'hat Kapitel gelöscht',
+    'chapter_delete_notification' => 'hat Kapitel erfolgreich gelöscht:',
+    'chapter_move'                => 'hat Kapitel verschoben:',
 
     // Books
-    'book_create'                 => 'Buch erstellt',
-    'book_create_notification'    => 'Buch erfolgreich erstellt',
-    'book_update'                 => 'Buch aktualisiert',
-    'book_update_notification'    => 'Buch erfolgreich aktualisiert',
-    'book_delete'                 => 'Buch gel&ouml;scht',
-    'book_delete_notification'    => 'Buch erfolgreich gel&ouml;scht',
-    'book_sort'                   => 'Buch sortiert',
-    'book_sort_notification'      => 'Buch erfolgreich neu sortiert',
+    'book_create'                 => 'hat Buch erstellt:',
+    'book_create_notification'    => 'hat Buch erfolgreich erstellt:',
+    'book_update'                 => 'hat Buch aktualisiert:',
+    'book_update_notification'    => 'hat Buch erfolgreich aktualisiert:',
+    'book_delete'                 => 'hat Buch gelöscht:',
+    'book_delete_notification'    => 'hat Buch erfolgreich gelöscht:',
+    'book_sort'                   => 'hat Buch sortiert:',
+    'book_sort_notification'      => 'hat Buch erfolgreich neu sortiert:',
 
 ];
diff --git a/resources/lang/de/auth.php b/resources/lang/de/auth.php
index f253cdfa1..8f4afe654 100644
--- a/resources/lang/de/auth.php
+++ b/resources/lang/de/auth.php
@@ -10,8 +10,8 @@ return [
     | these language lines according to your application's requirements.
     |
     */
-    'failed' => 'Dies sind keine g&uuml;ltigen Anmeldedaten.',
-    'throttle' => 'Zu viele Anmeldeversuche. Bitte versuchen sie es in :seconds Sekunden erneut.',
+    'failed' => 'Die eingegebenen Anmeldedaten sind ungültig.',
+    'throttle' => 'Zu viele Anmeldeversuche. Bitte versuchen Sie es in :seconds Sekunden erneut.',
 
     /**
      * Login & Register
@@ -29,16 +29,16 @@ return [
     'forgot_password' => 'Passwort vergessen?',
     'remember_me' => 'Angemeldet bleiben',
     'ldap_email_hint' => 'Bitte geben Sie eine E-Mail-Adresse ein, um diese mit dem Account zu nutzen.',
-    'create_account' => 'Account anlegen',
-    'social_login' => 'Social Login',
-    'social_registration' => 'Social Registrierung',
-    'social_registration_text' => 'Mit einem dieser Möglichkeiten registrieren oder anmelden.',
+    'create_account' => 'Account registrieren',
+    'social_login' => 'Mit Sozialem Netzwerk anmelden',
+    'social_registration' => 'Mit Sozialem Netzwerk registrieren',
+    'social_registration_text' => 'Mit einer dieser Dienste registrieren oder anmelden',
 
 
     'register_thanks' => 'Vielen Dank für Ihre Registrierung!',
-    'register_confirm' => 'Bitte prüfen Sie Ihren E-Mail Eingang und klicken auf den Verifizieren-Button, um :appName nutzen zu können.',
-    'registrations_disabled' => 'Die Registrierung ist momentan nicht möglich',
-    'registration_email_domain_invalid' => 'Diese E-Mail-Domain ist für die Benutzer der Applikation nicht freigeschaltet.',
+    'register_confirm' => 'Bitte prüfen Sie Ihren Posteingang und bestätigen Sie die Registrierung.',
+    'registrations_disabled' => 'Eine Registrierung ist momentan nicht möglich',
+    'registration_email_domain_invalid' => 'Sie können sich mit dieser E-Mail nicht registrieren.',
     'register_success' => 'Vielen Dank für Ihre Registrierung! Die Daten sind gespeichert und Sie sind angemeldet.',
 
 
@@ -46,30 +46,30 @@ return [
      * Password Reset
      */
     'reset_password' => 'Passwort vergessen',
-    'reset_password_send_instructions' => 'Bitte geben Sie unten Ihre E-Mail-Adresse ein und Sie erhalten eine E-Mail, um Ihr Passwort zurück zu setzen.',
+    'reset_password_send_instructions' => 'Bitte geben Sie Ihre E-Mail-Adresse ein. Danach erhalten Sie eine E-Mail mit einem Link zum Zurücksetzen Ihres Passwortes.',
     'reset_password_send_button' => 'Passwort zurücksetzen',
-    'reset_password_sent_success' => 'Eine E-Mail mit den Instruktionen, um Ihr Passwort zurückzusetzen wurde an :email gesendet.',
-    'reset_password_success' => 'Ihr Passwort wurde erfolgreich zurück gesetzt.',
+    'reset_password_sent_success' => 'Eine E-Mail mit dem Link zum Zurücksetzen Ihres Passwortes wurde an :email gesendet.',
+    'reset_password_success' => 'Ihr Passwort wurde erfolgreich zurückgesetzt.',
 
     'email_reset_subject' => 'Passwort zurücksetzen für :appName',
-    'email_reset_text' => 'Sie erhalten diese E-Mail, weil eine Passwort-Rücksetzung für Ihren Account beantragt wurde.',
-    'email_reset_not_requested' => 'Wenn Sie die Passwort-Rücksetzung nicht ausgelöst haben, ist kein weiteres Handeln notwendig.',
+    'email_reset_text' => 'Sie erhalten diese E-Mail, weil jemand versucht hat, Ihr Passwort zurückzusetzen.',
+    'email_reset_not_requested' => 'Wenn Sie das nicht waren, brauchen Sie nichts weiter zu tun.',
 
 
     /**
      * Email Confirmation
      */
-    'email_confirm_subject' => 'Best&auml;tigen sie ihre E-Mail Adresse bei :appName',
-    'email_confirm_greeting' => 'Danke, dass sie :appName beigetreten sind!',
-    'email_confirm_text' => 'Bitte best&auml;tigen sie ihre E-Mail Adresse, indem sie auf den Button klicken:',
-    'email_confirm_action' => 'E-Mail Adresse best&auml;tigen',
-    'email_confirm_send_error' => 'Best&auml;tigungs-E-Mail ben&ouml;tigt, aber das System konnte die E-Mail nicht versenden. Kontaktieren sie den Administrator, um sicherzustellen, dass das Sytsem korrekt eingerichtet ist.',
-    'email_confirm_success' => 'Ihre E-Mail Adresse wurde best&auml;tigt!',
-    'email_confirm_resent' => 'Best&auml;tigungs-E-Mail wurde erneut versendet, bitte &uuml;berpr&uuml;fen sie ihren Posteingang.',
+    'email_confirm_subject' => 'Bestätigen Sie Ihre E-Mail-Adresse für :appName',
+    'email_confirm_greeting' => 'Danke, dass Sie sich für :appName registriert haben!',
+    'email_confirm_text' => 'Bitte bestätigen Sie Ihre E-Mail-Adresse, indem Sie auf die Schaltfläche klicken:',
+    'email_confirm_action' => 'E-Mail-Adresse bestätigen',
+    'email_confirm_send_error' => 'Leider konnte die für die Registrierung notwendige E-Mail zur bestätigung Ihrer E-Mail-Adresse nicht versandt werden. Bitte kontaktieren Sie den Systemadministrator!',
+    'email_confirm_success' => 'Ihre E-Mail-Adresse wurde best&auml;tigt!',
+    'email_confirm_resent' => 'Bestätigungs-E-Mail wurde erneut versendet, bitte überprüfen Sie Ihren Posteingang.',
 
     'email_not_confirmed' => 'E-Mail-Adresse ist nicht bestätigt',
     'email_not_confirmed_text' => 'Ihre E-Mail-Adresse ist bisher nicht bestätigt.',
     'email_not_confirmed_click_link' => 'Bitte klicken Sie auf den Link in der E-Mail, die Sie nach der Registrierung erhalten haben.',
     'email_not_confirmed_resend' => 'Wenn Sie die E-Mail nicht erhalten haben, können Sie die Nachricht erneut anfordern. Füllen Sie hierzu bitte das folgende Formular aus:',
-    'email_not_confirmed_resend_button' => 'Bestätigungs E-Mail erneut senden',
+    'email_not_confirmed_resend_button' => 'Bestätigungs-E-Mail erneut senden',
 ];
diff --git a/resources/lang/de/common.php b/resources/lang/de/common.php
index 7ad1743a0..3c21a9d08 100644
--- a/resources/lang/de/common.php
+++ b/resources/lang/de/common.php
@@ -28,9 +28,9 @@ return [
     'edit' => 'Bearbeiten',
     'sort' => 'Sortieren',
     'move' => 'Verschieben',
-    'delete' => 'L&ouml;schen',
+    'delete' => 'Löschen',
     'search' => 'Suchen',
-    'search_clear' => 'Suche l&ouml;schen',
+    'search_clear' => 'Suche löschen',
     'reset' => 'Zurücksetzen',
     'remove' => 'Entfernen',
 
@@ -38,9 +38,9 @@ return [
     /**
      * Misc
      */
-    'deleted_user' => 'Gel&ouml;schte Benutzer',
-    'no_activity' => 'Keine Aktivit&auml;ten zum Anzeigen',
-    'no_items' => 'Keine Eintr&auml;ge gefunden.',
+    'deleted_user' => 'Gelöschte Benutzer',
+    'no_activity' => 'Keine Aktivitäten zum Anzeigen',
+    'no_items' => 'Keine Einträge gefunden.',
     'back_to_top' => 'nach oben',
     'toggle_details' => 'Details zeigen/verstecken',
 
@@ -53,6 +53,6 @@ return [
     /**
      * Email Content
      */
-    'email_action_help' => 'Sollte es beim Anklicken des ":actionText" Buttons Probleme geben, kopieren Sie folgende URL und fügen diese in Ihrem Webbrowser ein:',
+    'email_action_help' => 'Sollte es beim Anklicken der Schaltfläche ":action_text" Probleme geben, öffnen Sie folgende URL in Ihrem Browser:',
     'email_rights' => 'Alle Rechte vorbehalten',
-];
\ No newline at end of file
+];
diff --git a/resources/lang/de/components.php b/resources/lang/de/components.php
index a8538c465..26bf3e626 100644
--- a/resources/lang/de/components.php
+++ b/resources/lang/de/components.php
@@ -13,12 +13,12 @@ return [
     'image_uploaded' => 'Hochgeladen am :uploadedDate',
     'image_load_more' => 'Mehr',
     'image_image_name' => 'Bildname',
-    'image_delete_confirm' => 'Dieses Bild wird auf den folgenden Seiten benutzt. Bitte klicken Sie erneut auf löschen, wenn Sie dieses Bild tatsächlich entfernen möchten.',
+    'image_delete_confirm' => 'Dieses Bild wird auf den folgenden Seiten benutzt. Bitte klicken Sie erneut auf löschen, wenn Sie dieses Bild wirklich entfernen möchten.',
     'image_select_image' => 'Bild auswählen',
-    'image_dropzone' => 'Ziehen Sie Bilder hier hinein oder klicken Sie hier, um ein Bild auszuwählen',
+    'image_dropzone' => 'Ziehen Sie Bilder hierher oder klicken Sie, um ein Bild auszuwählen',
     'images_deleted' => 'Bilder gelöscht',
     'image_preview' => 'Bildvorschau',
     'image_upload_success' => 'Bild erfolgreich hochgeladen',
     'image_update_success' => 'Bilddetails erfolgreich aktualisiert',
     'image_delete_success' => 'Bild erfolgreich gelöscht'
-];
\ No newline at end of file
+];
diff --git a/resources/lang/de/entities.php b/resources/lang/de/entities.php
index 5d7d5cdde..910218a58 100644
--- a/resources/lang/de/entities.php
+++ b/resources/lang/de/entities.php
@@ -4,38 +4,39 @@ return [
     /**
      * Shared
      */
-    'recently_created' => 'K&uuml;rzlich angelegt',
-    'recently_created_pages' => 'K&uuml;rzlich angelegte Seiten',
-    'recently_updated_pages' => 'K&uuml;rzlich aktualisierte Seiten',
-    'recently_created_chapters' => 'K&uuml;rzlich angelegte Kapitel',
-    'recently_created_books' => 'K&uuml;rzlich angelegte B&uuml;cher',
-    'recently_update' => 'K&uuml;rzlich aktualisiert',
-    'recently_viewed' => 'K&uuml;rzlich angesehen',
-    'recent_activity' => 'K&uuml;rzliche Aktivit&auml;t',
+    'recently_created' => 'Kürzlich angelegt',
+    'recently_created_pages' => 'Kürzlich angelegte Seiten',
+    'recently_updated_pages' => 'Kürzlich aktualisierte Seiten',
+    'recently_created_chapters' => 'Kürzlich angelegte Kapitel',
+    'recently_created_books' => 'Kürzlich angelegte Bücher',
+    'recently_update' => 'Kürzlich aktualisiert',
+    'recently_viewed' => 'Kürzlich angesehen',
+    'recent_activity' => 'Kürzliche Aktivität',
     'create_now' => 'Jetzt anlegen',
-    'revisions' => 'Revisionen',
-    'meta_created' => 'Angelegt am :timeLength',
-    'meta_created_name' => 'Angelegt am :timeLength durch :user',
-    'meta_updated' => 'Aktualisiert am :timeLength',
-    'meta_updated_name' => 'Aktualisiert am :timeLength durch :user',
+    'revisions' => 'Versionen',
+    'meta_revision' => 'Version #:revisionCount',
+    'meta_created' => 'Erstellt: :timeLength',
+    'meta_created_name' => 'Erstellt: :timeLength von :user',
+    'meta_updated' => 'Zuletzt aktualisiert: :timeLength',
+    'meta_updated_name' => 'Zuletzt aktualisiert: :timeLength von :user',
     'x_pages' => ':count Seiten',
-    'entity_select' => 'Eintrag ausw&auml;hlen',
+    'entity_select' => 'Eintrag auswählen',
     'images' => 'Bilder',
-    'my_recent_drafts' => 'Meine k&uuml;rzlichen Entw&uuml;rfe',
-    'my_recently_viewed' => 'K&uuml;rzlich von mir angesehen',
+    'my_recent_drafts' => 'Meine kürzlichen Entwürfe',
+    'my_recently_viewed' => 'Kürzlich von mir angesehen',
     'no_pages_viewed' => 'Sie haben bisher keine Seiten angesehen.',
     'no_pages_recently_created' => 'Sie haben bisher keine Seiten angelegt.',
     'no_pages_recently_updated' => 'Sie haben bisher keine Seiten aktualisiert.',
     'export' => 'Exportieren',
     'export_html' => 'HTML-Datei',
     'export_pdf' => 'PDF-Datei',
-    'export_text' => 'Text-Datei',
+    'export_text' => 'Textdatei',
 
     /**
      * Permissions and restrictions
      */
     'permissions' => 'Berechtigungen',
-    'permissions_intro' => 'Wenn individuelle Berechtigungen aktiviert werden, &uuml;berschreiben diese Einstellungen durch Rollen zugewiesene Berechtigungen.',
+    'permissions_intro' => 'Wenn individuelle Berechtigungen aktiviert werden, überschreiben diese Einstellungen durch Rollen zugewiesene Berechtigungen.',
     'permissions_enable' => 'Individuelle Berechtigungen aktivieren',
     'permissions_save' => 'Berechtigungen speichern',
 
@@ -43,41 +44,58 @@ return [
      * Search
      */
     'search_results' => 'Suchergebnisse',
-    'search_clear' => 'Suche zur&uuml;cksetzen',
-    'search_no_pages' => 'Es wurden keine passenden Suchergebnisse gefunden',
-    'search_for_term' => 'Suche nach :term',
+    'search_total_results_found' => ':count Ergebnis gefunden|:count Ergebnisse gesamt',
+    'search_clear' => 'Filter löschen',
+    'search_no_pages' => 'Keine Seiten gefunden',
+    'search_for_term' => 'Nach :term suchen',
+    'search_more' => 'Mehr Ergebnisse',
+    'search_filters' => 'Filter',
+    'search_content_type' => 'Inhaltstyp',
+    'search_exact_matches' => 'Exakte Treffer',
+    'search_tags' => 'Nach Schlagwort suchen',
+    'search_viewed_by_me' => 'Schon von mir angesehen',
+    'search_not_viewed_by_me' => 'Noch nicht von mir angesehen',
+    'search_permissions_set' => 'Berechtigungen gesetzt',
+    'search_created_by_me' => 'Von mir erstellt',
+    'search_updated_by_me' => 'Von mir aktualisiert',
+    'search_updated_before' => 'Aktualisiert vor',
+    'search_updated_after' => 'Aktualisiert nach',
+    'search_created_before' => 'Erstellt vor',
+    'search_created_after' => 'Erstellt nach',
+    'search_set_date' => 'Datum auswählen',
+    'search_update' => 'Suche aktualisieren',
 
     /**
      * Books
      */
     'book' => 'Buch',
-    'books' => 'B&uuml;cher',
-    'books_empty' => 'Es wurden keine B&uuml;cher angelegt',
-    'books_popular' => 'Popul&auml;re B&uuml;cher',
-    'books_recent' => 'K&uuml;rzlich genutzte B&uuml;cher',
-    'books_popular_empty' => 'Die popul&auml;rsten B&uuml;cher werden hier angezeigt.',
-    'books_create' => 'Neues Buch anlegen',
-    'books_delete' => 'Buch l&ouml;schen',
-    'books_delete_named' => 'Buch :bookName l&ouml;schen',
-    'books_delete_explain' => 'Sie m&ouml;chten das Buch \':bookName\' l&ouml;schen und alle Seiten und Kapitel entfernen.',
-    'books_delete_confirmation' => 'Sind Sie sicher, dass Sie dieses Buch l&ouml;schen m&ouml;chten?',
+    'books' => 'Bücher',
+    'books_empty' => 'Keine Bücher vorhanden',
+    'books_popular' => 'Beliebte Bücher',
+    'books_recent' => 'Kürzlich angesehene Bücher',
+    'books_popular_empty' => 'Die beliebtesten Bücher werden hier angezeigt.',
+    'books_create' => 'Neues Buch erstellen',
+    'books_delete' => 'Buch löschen',
+    'books_delete_named' => 'Buch ":bookName" löschen',
+    'books_delete_explain' => 'Das Buch ":bookName" wird gelöscht und alle zugehörigen Kapitel und Seiten entfernt.',
+    'books_delete_confirmation' => 'Sind Sie sicher, dass Sie dieses Buch löschen möchten?',
     'books_edit' => 'Buch bearbeiten',
-    'books_edit_named' => 'Buch :bookName bearbeiten',
-    'books_form_book_name' => 'Buchname',
+    'books_edit_named' => 'Buch ":bookName" bearbeiten',
+    'books_form_book_name' => 'Name des Buches',
     'books_save' => 'Buch speichern',
     'books_permissions' => 'Buch-Berechtigungen',
     'books_permissions_updated' => 'Buch-Berechtigungen aktualisiert',
-    'books_empty_contents' => 'Es sind noch keine Seiten oder Kapitel f&uuml;r dieses Buch angelegt.',
+    'books_empty_contents' => 'Es sind noch keine Seiten oder Kapitel zu diesem Buch hinzugefügt worden.',
     'books_empty_create_page' => 'Neue Seite anlegen',
     'books_empty_or' => 'oder',
     'books_empty_sort_current_book' => 'Aktuelles Buch sortieren',
-    'books_empty_add_chapter' => 'Neues Kapitel hinzuf&uuml;gen',
+    'books_empty_add_chapter' => 'Neues Kapitel hinzufügen',
     'books_permissions_active' => 'Buch-Berechtigungen aktiv',
     'books_search_this' => 'Dieses Buch durchsuchen',
-    'books_navigation' => 'Buch-Navigation',
+    'books_navigation' => 'Buchnavigation',
     'books_sort' => 'Buchinhalte sortieren',
-    'books_sort_named' => 'Buch :bookName sortieren',
-    'books_sort_show_other' => 'Andere B&uuml;cher zeigen',
+    'books_sort_named' => 'Buch ":bookName" sortieren',
+    'books_sort_show_other' => 'Andere Bücher anzeigen',
     'books_sort_save' => 'Neue Reihenfolge speichern',
 
     /**
@@ -85,145 +103,147 @@ return [
      */
     'chapter' => 'Kapitel',
     'chapters' => 'Kapitel',
-    'chapters_popular' => 'Popul&auml;re Kapitel',
+    'chapters_popular' => 'Beliebte Kapitel',
     'chapters_new' => 'Neues Kapitel',
     'chapters_create' => 'Neues Kapitel anlegen',
     'chapters_delete' => 'Kapitel entfernen',
-    'chapters_delete_named' => 'Kapitel :chapterName entfernen',
-    'chapters_delete_explain' => 'Sie m&ouml;chten das Kapitel \':chapterName\' l&ouml;schen und alle Seiten dem direkten Eltern-Buch hinzugef&uuml;gen.',
-    'chapters_delete_confirm' => 'Sind Sie sicher, dass Sie dieses Kapitel l&ouml;schen m&ouml;chten?',
+    'chapters_delete_named' => 'Kapitel ":chapterName" entfernen',
+    'chapters_delete_explain' => 'Das Kapitel ":chapterName" wird gelöscht und alle zugehörigen Seiten dem übergeordneten Buch zugeordnet.',
+    'chapters_delete_confirm' => 'Sind Sie sicher, dass Sie dieses Kapitel löschen möchten?',
     'chapters_edit' => 'Kapitel bearbeiten',
-    'chapters_edit_named' => 'Kapitel :chapterName bearbeiten',
+    'chapters_edit_named' => 'Kapitel ":chapterName" bearbeiten',
     'chapters_save' => 'Kapitel speichern',
     'chapters_move' => 'Kapitel verschieben',
-    'chapters_move_named' => 'Kapitel :chapterName verschieben',
-    'chapter_move_success' => 'Kapitel in das Buch :bookName verschoben.',
+    'chapters_move_named' => 'Kapitel ":chapterName" verschieben',
+    'chapter_move_success' => 'Das Kapitel wurde in das Buch ":bookName" verschoben.',
     'chapters_permissions' => 'Kapitel-Berechtigungen',
-    'chapters_empty' => 'Aktuell sind keine Kapitel in diesem Buch angelegt.',
+    'chapters_empty' => 'Aktuell sind keine Kapitel diesem Buch hinzugefügt worden.',
     'chapters_permissions_active' => 'Kapitel-Berechtigungen aktiv',
     'chapters_permissions_success' => 'Kapitel-Berechtigungenen aktualisisert',
+    'chapters_search_this' => 'Dieses Kapitel durchsuchen',
 
     /**
      * Pages
      */
     'page' => 'Seite',
     'pages' => 'Seiten',
-    'pages_popular' => 'Popul&auml;re Seiten',
+    'pages_popular' => 'Beliebte Seiten',
     'pages_new' => 'Neue Seite',
-    'pages_attachments' => 'Anh&auml;nge',
+    'pages_attachments' => 'Anhänge',
     'pages_navigation' => 'Seitennavigation',
-    'pages_delete' => 'Seite l&ouml;schen',
-    'pages_delete_named' => 'Seite :pageName l&ouml;schen',
-    'pages_delete_draft_named' => 'Seitenentwurf von :pageName l&ouml;schen',
-    'pages_delete_draft' => 'Seitenentwurf l&ouml;schen',
-    'pages_delete_success' => 'Seite gel&ouml;scht',
-    'pages_delete_draft_success' => 'Seitenentwurf gel&ouml;scht',
-    'pages_delete_confirm' => 'Sind Sie sicher, dass Sie diese Seite l&ouml;schen m&ouml;chen?',
-    'pages_delete_draft_confirm' => 'Sind Sie sicher, dass Sie diesen Seitenentwurf l&ouml;schen m&ouml;chten?',
-    'pages_editing_named' => 'Seite :pageName bearbeiten',
-    'pages_edit_toggle_header' => 'Toggle header',
+    'pages_delete' => 'Seite löschen',
+    'pages_delete_named' => 'Seite ":pageName" löschen',
+    'pages_delete_draft_named' => 'Seitenentwurf von ":pageName" löschen',
+    'pages_delete_draft' => 'Seitenentwurf löschen',
+    'pages_delete_success' => 'Seite gelöscht',
+    'pages_delete_draft_success' => 'Seitenentwurf gelöscht',
+    'pages_delete_confirm' => 'Sind Sie sicher, dass Sie diese Seite löschen möchen?',
+    'pages_delete_draft_confirm' => 'Sind Sie sicher, dass Sie diesen Seitenentwurf löschen möchten?',
+    'pages_editing_named' => 'Seite ":pageName" bearbeiten',
+    'pages_edit_toggle_header' => 'Hauptmenü anzeigen/verstecken',
     'pages_edit_save_draft' => 'Entwurf speichern',
     'pages_edit_draft' => 'Seitenentwurf bearbeiten',
     'pages_editing_draft' => 'Seitenentwurf bearbeiten',
     'pages_editing_page' => 'Seite bearbeiten',
     'pages_edit_draft_save_at' => 'Entwurf gespeichert um ',
-    'pages_edit_delete_draft' => 'Entwurf l&ouml;schen',
+    'pages_edit_delete_draft' => 'Entwurf löschen',
     'pages_edit_discard_draft' => 'Entwurf verwerfen',
-    'pages_edit_set_changelog' => 'Ver&auml;nderungshinweis setzen',
-    'pages_edit_enter_changelog_desc' => 'Bitte geben Sie eine kurze Zusammenfassung Ihrer &Auml;nderungen ein',
-    'pages_edit_enter_changelog' => 'Ver&auml;nderungshinweis eingeben',
+    'pages_edit_set_changelog' => 'Änderungsprotokoll hinzufügen',
+    'pages_edit_enter_changelog_desc' => 'Bitte geben Sie eine kurze Zusammenfassung Ihrer Änderungen ein',
+    'pages_edit_enter_changelog' => 'Änderungsprotokoll eingeben',
     'pages_save' => 'Seite speichern',
     'pages_title' => 'Seitentitel',
     'pages_name' => 'Seitenname',
     'pages_md_editor' => 'Redakteur',
     'pages_md_preview' => 'Vorschau',
-    'pages_md_insert_image' => 'Bild einf&uuml;gen',
-    'pages_md_insert_link' => 'Link zu einem Objekt einf&uuml;gen',
+    'pages_md_insert_image' => 'Bild einfügen',
+    'pages_md_insert_link' => 'Link zu einem Objekt einfügen',
     'pages_not_in_chapter' => 'Seite ist in keinem Kapitel',
     'pages_move' => 'Seite verschieben',
     'pages_move_success' => 'Seite nach ":parentName" verschoben',
     'pages_permissions' => 'Seiten Berechtigungen',
     'pages_permissions_success' => 'Seiten Berechtigungen aktualisiert',
     'pages_revisions' => 'Seitenversionen',
-    'pages_revisions_named' => 'Seitenversionen von :pageName',
-    'pages_revision_named' => 'Seitenversion von :pageName',
-    'pages_revisions_created_by' => 'Angelegt von',
+    'pages_revisions_named' => 'Seitenversionen von ":pageName"',
+    'pages_revision_named' => 'Seitenversion von ":pageName"',
+    'pages_revisions_created_by' => 'Erstellt von',
     'pages_revisions_date' => 'Versionsdatum',
-    'pages_revisions_changelog' => 'Ver&auml;nderungshinweise',
-    'pages_revisions_changes' => 'Ver&auml;nderungen',
+    'pages_revisions_number' => '#',
+    'pages_revisions_changelog' => 'Änderungsprotokoll',
+    'pages_revisions_changes' => 'Änderungen',
     'pages_revisions_current' => 'Aktuelle Version',
     'pages_revisions_preview' => 'Vorschau',
-    'pages_revisions_restore' => 'Zur&uuml;ck sichern',
-    'pages_revisions_none' => 'Diese Seite hat keine &auml;lteren Versionen.',
+    'pages_revisions_restore' => 'Wiederherstellen',
+    'pages_revisions_none' => 'Diese Seite hat keine älteren Versionen.',
     'pages_copy_link' => 'Link kopieren',
     'pages_permissions_active' => 'Seiten-Berechtigungen aktiv',
-    'pages_initial_revision' => 'Erste Ver&ouml;ffentlichung',
+    'pages_initial_revision' => 'Erste Veröffentlichung',
     'pages_initial_name' => 'Neue Seite',
-    'pages_editing_draft_notification' => 'Sie bearbeiten momenten einen Entwurf, der zuletzt um :timeDiff gespeichert wurde.',
-    'pages_draft_edited_notification' => 'Diese Seite wurde seit diesem Zeitpunkt ver&auml;ndert. Wir empfehlen Ihnen, diesen Entwurf zu verwerfen.',
+    'pages_editing_draft_notification' => 'Sie bearbeiten momenten einen Entwurf, der zuletzt :timeDiff gespeichert wurde.',
+    'pages_draft_edited_notification' => 'Diese Seite wurde seit diesem Zeitpunkt verändert. Wir empfehlen Ihnen, diesen Entwurf zu verwerfen.',
     'pages_draft_edit_active' => [
-        'start_a' => ':count Benutzer haben die Bearbeitung dieser Seite begonnen.',
-        'start_b' => ':userName hat die Bearbeitung dieser Seite begonnen.',
+        'start_a' => ':count Benutzer bearbeiten derzeit diese Seite.',
+        'start_b' => ':userName bearbeitet jetzt diese Seite.',
         'time_a' => 'seit die Seiten zuletzt aktualisiert wurden.',
         'time_b' => 'in den letzten :minCount Minuten',
-        'message' => ':start :time. Achten Sie darauf keine Aktualisierungen von anderen Benutzern zu &uuml;berschreiben!',
+        'message' => ':start :time. Achten Sie darauf, keine Änderungen von anderen Benutzern zu überschreiben!',
     ],
     'pages_draft_discarded' => 'Entwurf verworfen. Der aktuelle Seiteninhalt wurde geladen.',
 
     /**
      * Editor sidebar
      */
-    'page_tags' => 'Seiten-Schlagw&ouml;rter',
+    'page_tags' => 'Seiten-Schlagwörter',
     'tag' => 'Schlagwort',
-    'tags' =>  'Schlagworte',
-    'tag_value' => 'Schlagwortinhalt (Optional)',
-    'tags_explain' => "F&uuml;gen Sie Schlagworte hinzu, um Ihren Inhalt zu kategorisieren. \n Sie k&ouml;nnen einen erkl&auml;renden Inhalt hinzuf&uuml;gen, um eine genauere Unterteilung vorzunehmen.",
-    'tags_add' => 'Weiteres Schlagwort hinzuf&uuml;gen',
-    'attachments' => 'Anh&auml;nge',
-    'attachments_explain' => 'Sie k&ouml;nnen auf Ihrer Seite Dateien hochladen oder Links anf&uuml;gen. Diese werden in der seitlich angezeigt.',
-    'attachments_explain_instant_save' => '&Auml;nderungen werden direkt gespeichert.',
-    'attachments_items' => 'Angef&uuml;gte Elemente',
+    'tags' =>  'Schlagwörter',
+    'tag_value' => 'Inhalt (Optional)',
+    'tags_explain' => "Fügen Sie Schlagwörter hinzu, um Ihren Inhalt zu kategorisieren.\nSie können einen erklärenden Inhalt hinzufügen, um eine genauere Unterteilung vorzunehmen.",
+    'tags_add' => 'Weiteres Schlagwort hinzufügen',
+    'attachments' => 'Anhänge',
+    'attachments_explain' => 'Sie können auf Ihrer Seite Dateien hochladen oder Links hinzufügen. Diese werden in der Seitenleiste angezeigt.',
+    'attachments_explain_instant_save' => 'Änderungen werden direkt gespeichert.',
+    'attachments_items' => 'Angefügte Elemente',
     'attachments_upload' => 'Datei hochladen',
-    'attachments_link' => 'Link anf&uuml;gen',
+    'attachments_link' => 'Link hinzufügen',
     'attachments_set_link' => 'Link setzen',
-    'attachments_delete_confirm' => 'Klicken Sie erneut auf l&ouml;schen, um diesen Anhang zu entfernen.',
-    'attachments_dropzone' => 'Ziehen Sie Dateien hier hinein oder klicken Sie hier, um eine Datei auszuw&auml;hlen',
+    'attachments_delete_confirm' => 'Klicken Sie erneut auf löschen, um diesen Anhang zu entfernen.',
+    'attachments_dropzone' => 'Ziehen Sie Dateien hierher oder klicken Sie, um eine Datei auszuwählen',
     'attachments_no_files' => 'Es wurden bisher keine Dateien hochgeladen.',
-    'attachments_explain_link' => 'Wenn Sie keine Datei hochladen m&ouml;chten, k&ouml;nnen Sie stattdessen einen Link anf&uuml;gen. Dieser Link kann auf eine andere Seite oder zu einer Datei in der Cloud weisen.',
+    'attachments_explain_link' => 'Wenn Sie keine Datei hochladen möchten, können Sie stattdessen einen Link hinzufügen. Dieser Link kann auf eine andere Seite oder eine Datei im Internet weisen.',
     'attachments_link_name' => 'Link-Name',
     'attachment_link' => 'Link zum Anhang',
     'attachments_link_url' => 'Link zu einer Datei',
     'attachments_link_url_hint' => 'URL einer Seite oder Datei',
-    'attach' => 'anf&uuml;gen',
+    'attach' => 'Hinzufügen',
     'attachments_edit_file' => 'Datei bearbeiten',
     'attachments_edit_file_name' => 'Dateiname',
-    'attachments_edit_drop_upload' => 'Ziehen Sie Dateien hier hinein, um diese hochzuladen und zu &uuml;berschreiben',
-    'attachments_order_updated' => 'Reihenfolge der Anh&auml;nge aktualisiert',
-    'attachments_updated_success' => 'Anhang-Details aktualisiert',
-    'attachments_deleted' => 'Anhang gel&ouml;scht',
-    'attachments_file_uploaded' => 'Datei erfolgrecich hochgeladen',
-    'attachments_file_updated' => 'Datei erfolgreich aktualisisert',
-    'attachments_link_attached' => 'Link erfolgreich der Seite hinzugef&uuml;gt',
+    'attachments_edit_drop_upload' => 'Ziehen Sie Dateien hierher, um diese hochzuladen und zu überschreiben',
+    'attachments_order_updated' => 'Reihenfolge der Anhänge aktualisiert',
+    'attachments_updated_success' => 'Anhangdetails aktualisiert',
+    'attachments_deleted' => 'Anhang gelöscht',
+    'attachments_file_uploaded' => 'Datei erfolgreich hochgeladen',
+    'attachments_file_updated' => 'Datei erfolgreich aktualisiert',
+    'attachments_link_attached' => 'Link erfolgreich der Seite hinzugefügt',
 
     /**
      * Profile View
      */
     'profile_user_for_x' => 'Benutzer seit :time',
-    'profile_created_content' => 'Angelegte Inhalte',
-    'profile_not_created_pages' => ':userName hat bisher keine Seiten angelegt.',
-    'profile_not_created_chapters' => ':userName hat bisher keine Kapitel angelegt.',
-    'profile_not_created_books' => ':userName hat bisher keine B&uuml;cher angelegt.',
+    'profile_created_content' => 'Erstellte Inhalte',
+    'profile_not_created_pages' => ':userName hat noch keine Seiten erstellt.',
+    'profile_not_created_chapters' => ':userName hat noch keine Kapitel erstellt.',
+    'profile_not_created_books' => ':userName hat noch keine Bücher erstellt.',
 
     /**
      * Comnents
      */
     'comment' => 'Kommentar',
     'comments' => 'Kommentare',
-    'comment_placeholder' => 'Geben Sie hier Ihre Kommentare ein, Markdown unterstützt ...',
+    'comment_placeholder' => 'Geben Sie hier Ihre Kommentare ein (Markdown unterstützt)',
     'no_comments' => 'Keine Kommentare',
     'x_comments' => ':numComments Kommentare',
     'one_comment' => '1 Kommentar',
-    'comments_loading' => 'Laden ...',
+    'comments_loading' => 'Laden...',
     'comment_save' => 'Kommentar speichern',
     'comment_reply' => 'Antworten',
     'comment_edit' => 'Bearbeiten',
@@ -233,7 +253,7 @@ return [
     'comment_updated' => 'Kommentar aktualisiert',
     'comment_deleted' => 'Kommentar gelöscht',
     'comment_updated_text' => 'Aktualisiert vor :updateDiff von',
-    'comment_delete_confirm' => 'Damit wird der Inhalt des Kommentars entfernt. Bist du sicher, dass du diesen Kommentar löschen möchtest?',
+    'comment_delete_confirm' => 'Der Inhalt des Kommentars wird entfernt. Bist du sicher, dass du diesen Kommentar löschen möchtest?',
     'comment_create' => 'Erstellt'
 
-];
\ No newline at end of file
+];
diff --git a/resources/lang/de/errors.php b/resources/lang/de/errors.php
index ff045d628..0b961f8ee 100644
--- a/resources/lang/de/errors.php
+++ b/resources/lang/de/errors.php
@@ -7,37 +7,37 @@ return [
      */
 
     // Pages
-    'permission' => 'Sie haben keine Berechtigung auf diese Seite zuzugreifen.',
-    'permissionJson' => 'Sie haben keine Berechtigung die angeforderte Aktion auszuf&uuml;hren.',
+    'permission' => 'Sie haben keine Berechtigung, auf diese Seite zuzugreifen.',
+    'permissionJson' => 'Sie haben keine Berechtigung, die angeforderte Aktion auszuführen.',
 
     // Auth
-    'error_user_exists_different_creds' => 'Ein Benutzer mit der E-Mail-Adresse :email ist bereits mit anderen Anmeldedaten angelegt.',
-    'email_already_confirmed' => 'Die E-Mail-Adresse ist bereits best&auml;tigt. Bitte melden Sie sich an.',
-    'email_confirmation_invalid' => 'Der Best&auml;tigungs-Token ist nicht g&uuml;ltig oder wurde bereits verwendet. Bitte registrieren Sie sich erneut.',
-    'email_confirmation_expired' => 'Der Best&auml;tigungs-Token ist abgelaufen. Es wurde eine neue Best&auml;tigungs-E-Mail gesendet.',
-    'ldap_fail_anonymous' => 'Anonymer LDAP Zugriff ist fehlgeschlafgen',
-    'ldap_fail_authed' => 'LDAP Zugriff mit DN & Passwort ist fehlgeschlagen',
-    'ldap_extension_not_installed' => 'LDAP PHP Erweiterung ist nicht installiert.',
-    'ldap_cannot_connect' => 'Die Verbindung zu LDAP-Server ist fehlgeschlagen. Beim initialen Verbindungsaufbau trat ein Fehler auf.',
+    'error_user_exists_different_creds' => 'Ein Benutzer mit der E-Mail-Adresse :email ist bereits mit anderen Anmeldedaten registriert.',
+    'email_already_confirmed' => 'Die E-Mail-Adresse ist bereits bestätigt. Bitte melden Sie sich an.',
+    'email_confirmation_invalid' => 'Der Bestätigungslink ist nicht gültig oder wurde bereits verwendet. Bitte registrieren Sie sich erneut.',
+    'email_confirmation_expired' => 'Der Bestätigungslink ist abgelaufen. Es wurde eine neue Bestätigungs-E-Mail gesendet.',
+    'ldap_fail_anonymous' => 'Anonymer LDAP-Zugriff ist fehlgeschlafgen',
+    'ldap_fail_authed' => 'LDAP-Zugriff mit DN und Passwort ist fehlgeschlagen',
+    'ldap_extension_not_installed' => 'LDAP-PHP-Erweiterung ist nicht installiert.',
+    'ldap_cannot_connect' => 'Die Verbindung zum LDAP-Server ist fehlgeschlagen. Beim initialen Verbindungsaufbau trat ein Fehler auf.',
     'social_no_action_defined' => 'Es ist keine Aktion definiert',
-    'social_account_in_use' => 'Dieses :socialAccount Konto wird bereits verwendet. Bitte melden Sie sich mit dem :socialAccount Konto an.',
-    'social_account_email_in_use' => 'Die E-Mail-Adresse :email ist bereits registriert. Wenn Sie bereits registriert sind, k&ouml;nnen Sie Ihr :socialAccount Konto in Ihren Profil-Einstellungen verkn&uuml;pfen.',
-    'social_account_existing' => 'Dieses :socialAccount Konto ist bereits mit Ihrem Profil verkn&uuml;pft.',
-    'social_account_already_used_existing' => 'Dieses :socialAccount Konto wird bereits durch einen anderen Benutzer verwendet.',
-    'social_account_not_used' => 'Dieses :socialAccount Konto ist bisher keinem Benutzer zugeordnet. Bitte verkn&uuml;pfen Sie deses in Ihrem Profil-Einstellungen.',
-    'social_account_register_instructions' => 'Wenn Sie bisher keinen Social-Media Konto besitzen k&ouml;nnen Sie ein solches Konto mit der :socialAccount Option anlegen.',
-    'social_driver_not_found' => 'Social-Media Konto Treiber nicht gefunden',
-    'social_driver_not_configured' => 'Ihr :socialAccount Konto ist nicht korrekt konfiguriert.',
+    'social_account_in_use' => 'Dieses :socialAccount-Konto wird bereits verwendet. Bitte melden Sie sich mit dem :socialAccount-Konto an.',
+    'social_account_email_in_use' => 'Die E-Mail-Adresse ":email" ist bereits registriert. Wenn Sie bereits registriert sind, können Sie Ihr :socialAccount-Konto in Ihren Profil-Einstellungen verknüpfen.',
+    'social_account_existing' => 'Dieses :socialAccount-Konto ist bereits mit Ihrem Profil verknüpft.',
+    'social_account_already_used_existing' => 'Dieses :socialAccount-Konto wird bereits von einem anderen Benutzer verwendet.',
+    'social_account_not_used' => 'Dieses :socialAccount-Konto ist bisher keinem Benutzer zugeordnet. Sie können es in Ihren Profil-Einstellung.',
+    'social_account_register_instructions' => 'Wenn Sie bisher keinen Social-Media Konto besitzen, können Sie ein solches Konto mit der :socialAccount Option anlegen.',
+    'social_driver_not_found' => 'Treiber für Social-Media-Konten nicht gefunden',
+    'social_driver_not_configured' => 'Ihr :socialAccount-Konto ist nicht korrekt konfiguriert.',
 
     // System
     'path_not_writable' => 'Die Datei kann nicht in den angegebenen Pfad :filePath hochgeladen werden. Stellen Sie sicher, dass dieser Ordner auf dem Server beschreibbar ist.',
     'cannot_get_image_from_url' => 'Bild konnte nicht von der URL :url geladen werden.',
-    'cannot_create_thumbs' => 'Der Server kann keine Vorschau-Bilder erzeugen. Bitte pr&uuml;fen Sie, ob Sie die GD PHP Erweiterung installiert haben.',
-    'server_upload_limit' => 'Der Server verbietet das Hochladen von Dateien mit dieser Dateigr&ouml;&szlig;e. Bitte versuchen Sie es mit einer kleineren Datei.',
+    'cannot_create_thumbs' => 'Der Server kann keine Vorschau-Bilder erzeugen. Bitte prüfen Sie, ob die GD PHP-Erweiterung installiert ist.',
+    'server_upload_limit' => 'Der Server verbietet das Hochladen von Dateien mit dieser Dateigröße. Bitte versuchen Sie es mit einer kleineren Datei.',
     'image_upload_error' => 'Beim Hochladen des Bildes trat ein Fehler auf.',
 
     // Attachments
-    'attachment_page_mismatch' => 'Die Seite stimmt nach dem Hochladen des Anhangs nicht &uuml;berein.',
+    'attachment_page_mismatch' => 'Die Seite stimmte nach dem Hochladen des Anhangs nicht überein.',
 
     // Pages
     'page_draft_autosave_fail' => 'Fehler beim Speichern des Entwurfs. Stellen Sie sicher, dass Sie mit dem Internet verbunden sind, bevor Sie den Entwurf dieser Seite speichern.',
@@ -47,26 +47,18 @@ return [
     'book_not_found' => 'Buch nicht gefunden',
     'page_not_found' => 'Seite nicht gefunden',
     'chapter_not_found' => 'Kapitel nicht gefunden',
-    'selected_book_not_found' => 'Das gew&auml;hlte Buch wurde nicht gefunden.',
-    'selected_book_chapter_not_found' => 'Das gew&auml;hlte Buch oder Kapitel wurde nicht gefunden.',
-    'guests_cannot_save_drafts' => 'G&auml;ste k&ouml;nnen keine Entw&uuml;rfe speichern',
+    'selected_book_not_found' => 'Das gewählte Buch wurde nicht gefunden.',
+    'selected_book_chapter_not_found' => 'Das gewählte Buch oder Kapitel wurde nicht gefunden.',
+    'guests_cannot_save_drafts' => 'Gäste können keine Entwürfe speichern',
 
     // Users
-    'users_cannot_delete_only_admin' => 'Sie k&ouml;nnen den einzigen Administrator nicht l&ouml;schen.',
-    'users_cannot_delete_guest' => 'Sie k&ouml;nnen den Gast-Benutzer nicht l&ouml;schen',
+    'users_cannot_delete_only_admin' => 'Sie können den einzigen Administrator nicht löschen.',
+    'users_cannot_delete_guest' => 'Sie können den Gast-Benutzer nicht löschen',
 
     // Roles
     'role_cannot_be_edited' => 'Diese Rolle kann nicht bearbeitet werden.',
-    'role_system_cannot_be_deleted' => 'Dies ist eine Systemrolle und kann nicht gel&ouml;scht werden',
-    'role_registration_default_cannot_delete' => 'Diese Rolle kann nicht gel&ouml;scht werden solange sie als Standardrolle f&uuml;r neue Registrierungen gesetzt ist',
-
-    // Error pages
-    '404_page_not_found' => 'Seite nicht gefunden',
-    'sorry_page_not_found' => 'Entschuldigung. Die Seite, die Sie angefordert haben wurde nicht gefunden.',
-    'return_home' => 'Zur&uuml;ck zur Startseite',
-    'error_occurred' => 'Es ist ein Fehler aufgetreten',
-    'app_down' => ':appName befindet sich aktuell im Wartungsmodus.',
-    'back_soon' => 'Wir werden so schnell wie m&ouml;glich wieder online sein.',
+    'role_system_cannot_be_deleted' => 'Dies ist eine Systemrolle und kann nicht gelöscht werden',
+    'role_registration_default_cannot_delete' => 'Diese Rolle kann nicht gelöscht werden, solange sie als Standardrolle für neue Registrierungen gesetzt ist',
 
     // Comments
     'comment_list' => 'Beim Abrufen der Kommentare ist ein Fehler aufgetreten.',
@@ -74,4 +66,12 @@ return [
     'comment_add' => 'Beim Hinzufügen des Kommentars ist ein Fehler aufgetreten.',
     'comment_delete' => 'Beim Löschen des Kommentars ist ein Fehler aufgetreten.',
     'empty_comment' => 'Kann keinen leeren Kommentar hinzufügen',
+
+    // Error pages
+    '404_page_not_found' => 'Seite nicht gefunden',
+    'sorry_page_not_found' => 'Entschuldigung. Die Seite, die Sie angefordert haben, wurde nicht gefunden.',
+    'return_home' => 'Zurück zur Startseite',
+    'error_occurred' => 'Es ist ein Fehler aufgetreten',
+    'app_down' => ':appName befindet sich aktuell im Wartungsmodus.',
+    'back_soon' => 'Wir werden so schnell wie möglich wieder online sein.'
 ];
diff --git a/resources/lang/de/pagination.php b/resources/lang/de/pagination.php
index a3bf7c8c8..6ed0e30f0 100644
--- a/resources/lang/de/pagination.php
+++ b/resources/lang/de/pagination.php
@@ -14,6 +14,6 @@ return [
     */
 
     'previous' => '&laquo; Vorherige',
-    'next'     => 'N&auml;chste &raquo;',
+    'next'     => 'Nächste &raquo;',
 
 ];
diff --git a/resources/lang/de/passwords.php b/resources/lang/de/passwords.php
index c44b49baa..25ed05a04 100644
--- a/resources/lang/de/passwords.php
+++ b/resources/lang/de/passwords.php
@@ -13,10 +13,10 @@ return [
     |
     */
 
-    'password' => 'Pass&ouml;rter m&uuml;ssen mindestens sechs Zeichen enthalten und die Wiederholung muss identisch sein.',
-    'user' => "Wir k&ouml;nnen keinen Benutzer mit dieser E-Mail Adresse finden.",
-    'token' => 'Dieser Passwort-Reset-Token ist ung&uuml;ltig.',
-    'sent' => 'Wir haben Ihnen eine E-Mail mit einem Link zum Zur&uuml;cksetzen des Passworts zugesendet!',
-    'reset' => 'Ihr Passwort wurde zur&uuml;ckgesetzt!',
+    'password' => 'Passörter müssen mindestens sechs Zeichen enthalten und die Wiederholung muss übereinstimmen.',
+    'user' => "Es konnte kein Benutzer mit dieser E-Mail-Adresse gefunden werden.",
+    'token' => 'Dieser Link zum Zurücksetzen des Passwortes ist ungültig.',
+    'sent' => 'Wir haben Ihnen eine E-Mail mit einem Link zum Zurücksetzen des Passworts zugesendet!',
+    'reset' => 'Ihr Passwort wurde zurückgesetzt!',
 
 ];
diff --git a/resources/lang/de/settings.php b/resources/lang/de/settings.php
index 668eecf33..9435ec808 100644
--- a/resources/lang/de/settings.php
+++ b/resources/lang/de/settings.php
@@ -20,17 +20,17 @@ return [
     'app_name' => 'Anwendungsname',
     'app_name_desc' => 'Dieser Name wird im Header und in E-Mails angezeigt.',
     'app_name_header' => 'Anwendungsname im Header anzeigen?',
-    'app_public_viewing' => '&Ouml;ffentliche Ansicht erlauben?',
-    'app_secure_images' => 'Erh&ouml;hte Sicherheit f&uuml;r Bilduploads aktivieren?',
-    'app_secure_images_desc' => 'Aus Leistungsgr&uuml;nden sind alle Bilder &ouml;ffentlich sichtbar. Diese Option f&uuml;gt zuf&auml;llige, schwer zu eratene, Zeichenketten vor die Bild-URLs hinzu. Stellen sie sicher, dass Verzeichnindexes deaktiviert sind, um einen einfachen Zugriff zu verhindern.',
+    'app_public_viewing' => 'Öffentliche Ansicht erlauben?',
+    'app_secure_images' => 'Erhöhte Sicherheit für hochgeladene Bilder aktivieren?',
+    'app_secure_images_desc' => 'Aus Leistungsgründen sind alle Bilder öffentlich sichtbar. Diese Option fügt zufällige, schwer zu eratene, Zeichenketten zu Bild-URLs hinzu. Stellen sie sicher, dass Verzeichnisindizes deaktiviert sind, um einen einfachen Zugriff zu verhindern.',
     'app_editor' => 'Seiteneditor',
-    'app_editor_desc' => 'W&auml;hlen sie den Editor aus, der von allen Benutzern genutzt werden soll, um Seiten zu editieren.',
+    'app_editor_desc' => 'Wählen Sie den Editor aus, der von allen Benutzern genutzt werden soll, um Seiten zu editieren.',
     'app_custom_html' => 'Benutzerdefinierter HTML <head> Inhalt',
-    'app_custom_html_desc' => 'Jeder Inhalt, der hier hinzugef&uuml;gt wird, wird am Ende der <head> Sektion jeder Seite eingef&uuml;gt. Diese kann praktisch sein, um CSS Styles anzupassen oder Analytics Code hinzuzuf&uuml;gen.',
+    'app_custom_html_desc' => 'Jeder Inhalt, der hier hinzugefügt wird, wird am Ende der <head> Sektion jeder Seite eingefügt. Diese kann praktisch sein, um CSS Styles anzupassen oder Analytics-Code hinzuzufügen.',
     'app_logo' => 'Anwendungslogo',
-    'app_logo_desc' => 'Dieses Bild sollte 43px hoch sein. <br>Gr&ouml;&szlig;ere Bilder werden verkleinert.',
-    'app_primary_color' => 'Prim&auml;re Anwendungsfarbe',
-    'app_primary_color_desc' => 'Dies sollte ein HEX Wert sein. <br>Wenn Sie nicht eingeben, wird die Anwendung auf die Standardfarbe zur&uuml;ckgesetzt.',
+    'app_logo_desc' => "Dieses Bild sollte 43px hoch sein.\nGrößere Bilder werden verkleinert.",
+    'app_primary_color' => 'Primäre Anwendungsfarbe',
+    'app_primary_color_desc' => "Dies sollte ein HEX Wert sein.\nWenn Sie nicht eingeben, wird die Anwendung auf die Standardfarbe zurückgesetzt.",
 
     /**
      * Registration settings
@@ -39,11 +39,11 @@ return [
     'reg_settings' => 'Registrierungseinstellungen',
     'reg_allow' => 'Registrierung erlauben?',
     'reg_default_role' => 'Standard-Benutzerrolle nach Registrierung',
-    'reg_confirm_email' => 'Best&auml;tigung per E-Mail erforderlich?',
-    'reg_confirm_email_desc' => 'Falls die Einschr&auml;nkung f&uuml;r Domains genutzt wird, ist die Best&auml;tigung per E-Mail zwingend erforderlich und der untenstehende Wert wird ignoriert.',
-    'reg_confirm_restrict_domain' => 'Registrierung auf bestimmte Domains einschr&auml;nken',
-    'reg_confirm_restrict_domain_desc' => 'F&uuml;gen sie eine, durch Komma getrennte, Liste von E-Mail Domains hinzu, auf die die Registrierung eingeschr&auml;nkt werden soll. Benutzern wird eine E-Mail gesendet, um ihre E-Mail Adresse zu best&auml;tigen, bevor sie diese Anwendung nutzen k&ouml;nnen. <br> Hinweis: Benutzer k&ouml;nnen ihre E-Mail Adresse nach erfolgreicher Registrierung &auml;ndern.',
-    'reg_confirm_restrict_domain_placeholder' => 'Keine Einschr&auml;nkung gesetzt',
+    'reg_confirm_email' => 'Bestätigung per E-Mail erforderlich?',
+    'reg_confirm_email_desc' => 'Falls die Einschränkung für Domains genutzt wird, ist die Bestätigung per E-Mail zwingend erforderlich und der untenstehende Wert wird ignoriert.',
+    'reg_confirm_restrict_domain' => 'Registrierung auf bestimmte Domains einschränken',
+    'reg_confirm_restrict_domain_desc' => "Fügen sie eine durch Komma getrennte Liste von Domains hinzu, auf die die Registrierung eingeschränkt werden soll. Benutzern wird eine E-Mail gesendet, um ihre E-Mail Adresse zu bestätigen, bevor sie diese Anwendung nutzen können.\nHinweis: Benutzer können ihre E-Mail Adresse nach erfolgreicher Registrierung ändern.",
+    'reg_confirm_restrict_domain_placeholder' => 'Keine Einschränkung gesetzt',
 
     /**
      * Role settings
@@ -53,31 +53,31 @@ return [
     'role_user_roles' => 'Benutzer-Rollen',
     'role_create' => 'Neue Rolle anlegen',
     'role_create_success' => 'Rolle erfolgreich angelegt',
-    'role_delete' => 'Rolle l&ouml;schen',
-    'role_delete_confirm' => 'Sie m&ouml;chten die Rolle \':roleName\' l&ouml;schen.',
-    'role_delete_users_assigned' => 'Diese Rolle ist :userCount Benutzern zugeordnet. Sie k&ouml;nnen unten eine neue Rolle ausw&auml;hlen, die Sie diesen Benutzern zuordnen m&ouml;chten.',
+    'role_delete' => 'Rolle löschen',
+    'role_delete_confirm' => 'Sie möchten die Rolle ":roleName" löschen.',
+    'role_delete_users_assigned' => 'Diese Rolle ist :userCount Benutzern zugeordnet. Sie können unten eine neue Rolle auswählen, die Sie diesen Benutzern zuordnen möchten.',
     'role_delete_no_migration' => "Den Benutzern keine andere Rolle zuordnen",
-    'role_delete_sure' => 'Sind Sie sicher, dass Sie diese Rolle l&ouml;schen m&ouml;chten?',
-    'role_delete_success' => 'Rolle erfolgreich gel&ouml;scht',
+    'role_delete_sure' => 'Sind Sie sicher, dass Sie diese Rolle löschen möchten?',
+    'role_delete_success' => 'Rolle erfolgreich gelöscht',
     'role_edit' => 'Rolle bearbeiten',
-    'role_details' => 'Rollen-Details',
+    'role_details' => 'Rollendetails',
     'role_name' => 'Rollenname',
     'role_desc' => 'Kurzbeschreibung der Rolle',
     'role_system' => 'System-Berechtigungen',
     'role_manage_users' => 'Benutzer verwalten',
-    'role_manage_roles' => 'Rollen & Rollen-Berechtigungen verwalten',
-    'role_manage_entity_permissions' => 'Alle Buch-, Kapitel und Seiten-Berechtigungen verwalten',
-    'role_manage_own_entity_permissions' => 'Nur Berechtigungen eigener B&uuml;cher, Kapitel und Seiten verwalten',
-    'role_manage_settings' => 'Globaleinstellungen verwalrten',
+    'role_manage_roles' => 'Rollen und Rollen-Berechtigungen verwalten',
+    'role_manage_entity_permissions' => 'Alle Buch-, Kapitel- und Seiten-Berechtigungen verwalten',
+    'role_manage_own_entity_permissions' => 'Nur Berechtigungen eigener Bücher, Kapitel und Seiten verwalten',
+    'role_manage_settings' => 'Globaleinstellungen verwalten',
     'role_asset' => 'Berechtigungen',
-    'role_asset_desc' => 'Diese Berechtigungen gelten f&uuml;r den Standard-Zugriff innerhalb des Systems. Berechtigungen f&uuml;r B&uuml;cher, Kapitel und Seiten &uuml;berschreiben diese Berechtigungenen.',
+    'role_asset_desc' => 'Diese Berechtigungen gelten für den Standard-Zugriff innerhalb des Systems. Berechtigungen für Bücher, Kapitel und Seiten überschreiben diese Berechtigungenen.',
     'role_all' => 'Alle',
     'role_own' => 'Eigene',
-    'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to',
+    'role_controlled_by_asset' => 'Berechtigungen werden vom Uploadziel bestimmt',
     'role_save' => 'Rolle speichern',
     'role_update_success' => 'Rolle erfolgreich gespeichert',
     'role_users' => 'Dieser Rolle zugeordnete Benutzer',
-    'role_users_none' => 'Bisher sind dieser Rolle keiner Benutzer zugeordnet,',
+    'role_users_none' => 'Bisher sind dieser Rolle keine Benutzer zugeordnet',
 
     /**
      * Users
@@ -85,27 +85,27 @@ return [
 
     'users' => 'Benutzer',
     'user_profile' => 'Benutzerprofil',
-    'users_add_new' => 'Benutzer hinzuf&uuml;gen',
+    'users_add_new' => 'Benutzer hinzufügen',
     'users_search' => 'Benutzer suchen',
     'users_role' => 'Benutzerrollen',
     'users_external_auth_id' => 'Externe Authentifizierungs-ID',
-    'users_password_warning' => 'F&uuml;llen Sie die folgenden Felder nur aus, wenn Sie Ihr Passwort &auml;ndern m&ouml;chten:',
-    'users_system_public' => 'Dieser Benutzer repr&auml;sentiert alle Gast-Benutzer, die diese Seite betrachten. Er kann nicht zum Anmelden benutzt werden, sondern wird automatisch zugeordnet.',
-    'users_delete' => 'Benutzer l&ouml;schen',
-    'users_delete_named' => 'Benutzer :userName l&ouml;schen',
-    'users_delete_warning' => 'Sie m&ouml;chten den Benutzer \':userName\' g&auml;nzlich aus dem System l&ouml;schen.',
-    'users_delete_confirm' => 'Sind Sie sicher, dass Sie diesen Benutzer l&ouml;schen m&ouml;chten?',
-    'users_delete_success' => 'Benutzer erfolgreich gel&ouml;scht.',
+    'users_password_warning' => 'Füllen Sie die folgenden Felder nur aus, wenn Sie Ihr Passwort ändern möchten:',
+    'users_system_public' => 'Dieser Benutzer repräsentiert alle unangemeldeten Benutzer, die diese Seite betrachten. Er kann nicht zum Anmelden benutzt werden, sondern wird automatisch zugeordnet.',
+    'users_delete' => 'Benutzer löschen',
+    'users_delete_named' => 'Benutzer ":userName" löschen',
+    'users_delete_warning' => 'Der Benutzer ":userName" wird aus dem System gelöscht.',
+    'users_delete_confirm' => 'Sind Sie sicher, dass Sie diesen Benutzer löschen möchten?',
+    'users_delete_success' => 'Benutzer erfolgreich gelöscht.',
     'users_edit' => 'Benutzer bearbeiten',
     'users_edit_profile' => 'Profil bearbeiten',
     'users_edit_success' => 'Benutzer erfolgreich aktualisisert',
     'users_avatar' => 'Benutzer-Bild',
-    'users_avatar_desc' => 'Dieses Bild sollte einen Durchmesser von ca. 256px haben.',
+    'users_avatar_desc' => 'Das Bild sollte eine Auflösung von 256x256px haben.',
     'users_preferred_language' => 'Bevorzugte Sprache',
     'users_social_accounts' => 'Social-Media Konten',
-    'users_social_accounts_info' => 'Hier k&ouml;nnen Sie andere Social-Media Konten f&uuml;r eine schnellere und einfachere Anmeldung verkn&uuml;pfen. Wenn Sie ein Social-Media Konto hier l&ouml;sen, bleibt der Zugriff erhalteb. Entfernen Sie in diesem Falle die Berechtigung in Ihren Profil-Einstellungen des verkn&uuml;pften Social-Media Kontos.',
-    'users_social_connect' => 'Social-Media Konto verkn&uuml;pfen',
-    'users_social_disconnect' => 'Social-Media Kontoverkn&uuml;pfung l&ouml;sen',
-    'users_social_connected' => ':socialAccount Konto wurde erfolgreich mit dem Profil verkn&uuml;pft.',
-    'users_social_disconnected' => ':socialAccount Konto wurde erfolgreich vom Profil gel&ouml;st.',
+    'users_social_accounts_info' => 'Hier können Sie andere Social-Media-Konten für eine schnellere und einfachere Anmeldung verknüpfen. Wenn Sie ein Social-Media Konto lösen, bleibt der Zugriff erhalten. Entfernen Sie in diesem Falle die Berechtigung in Ihren Profil-Einstellungen des verknüpften Social-Media-Kontos.',
+    'users_social_connect' => 'Social-Media-Konto verknüpfen',
+    'users_social_disconnect' => 'Social-Media-Konto lösen',
+    'users_social_connected' => ':socialAccount-Konto wurde erfolgreich mit dem Profil verknüpft.',
+    'users_social_disconnected' => ':socialAccount-Konto wurde erfolgreich vom Profil gelöst.',
 ];
diff --git a/resources/lang/de/validation.php b/resources/lang/de/validation.php
index 3a6a1bc15..5ac4b1b27 100644
--- a/resources/lang/de/validation.php
+++ b/resources/lang/de/validation.php
@@ -19,54 +19,54 @@ return [
     'alpha'                => ':attribute kann nur Buchstaben enthalten.',
     'alpha_dash'           => ':attribute kann nur Buchstaben, Zahlen und Bindestriche enthalten.',
     'alpha_num'            => ':attribute kann nur Buchstaben und Zahlen enthalten.',
-    'array'                => ':attribute muss eine Array sein.',
+    'array'                => ':attribute muss ein Array sein.',
     'before'               => ':attribute muss ein Datum vor :date sein.',
     'between'              => [
         'numeric' => ':attribute muss zwischen :min und :max liegen.',
-        'file'    => ':attribute muss zwischen :min und :max Kilobytes gro&szlig; sein.',
+        'file'    => ':attribute muss zwischen :min und :max Kilobytes groß sein.',
         'string'  => ':attribute muss zwischen :min und :max Zeichen lang sein.',
         'array'   => ':attribute muss zwischen :min und :max Elemente enthalten.',
     ],
     'boolean'              => ':attribute Feld muss wahr oder falsch sein.',
-    'confirmed'            => ':attribute Best&auml;tigung stimmt nicht &uuml;berein.',
+    'confirmed'            => ':attribute stimmt nicht überein.',
     'date'                 => ':attribute ist kein valides Datum.',
     'date_format'          => ':attribute entspricht nicht dem Format :format.',
-    'different'            => ':attribute und :other m&uuml;ssen unterschiedlich sein.',
+    'different'            => ':attribute und :other müssen unterschiedlich sein.',
     'digits'               => ':attribute muss :digits Stellen haben.',
     'digits_between'       => ':attribute muss zwischen :min und :max Stellen haben.',
-    'email'                => ':attribute muss eine valide E-Mail Adresse sein.',
-    'filled'               => ':attribute Feld ist erforderlich.',
-    'exists'               => 'Markiertes :attribute ist ung&uuml;ltig.',
+    'email'                => ':attribute muss eine valide E-Mail-Adresse sein.',
+    'filled'               => ':attribute ist erforderlich.',
+    'exists'               => ':attribute ist ungültig.',
     'image'                => ':attribute muss ein Bild sein.',
-    'in'                   => 'Markiertes :attribute ist ung&uuml;ltig.',
+    'in'                   => ':attribute ist ungültig.',
     'integer'              => ':attribute muss eine Zahl sein.',
     'ip'                   => ':attribute muss eine valide IP-Adresse sein.',
     'max'                  => [
-        'numeric' => ':attribute darf nicht gr&ouml;&szlig;er als :max sein.',
-        'file'    => ':attribute darf nicht gr&ouml;&szlig;er als :max Kilobyte sein.',
-        'string'  => ':attribute darf nicht l&auml;nger als :max Zeichen sein.',
+        'numeric' => ':attribute darf nicht größer als :max sein.',
+        'file'    => ':attribute darf nicht größer als :max Kilobyte sein.',
+        'string'  => ':attribute darf nicht länger als :max Zeichen sein.',
         'array'   => ':attribute darf nicht mehr als :max Elemente enthalten.',
     ],
     'mimes'                => ':attribute muss eine Datei vom Typ: :values sein.',
     'min'                  => [
-        'numeric' => ':attribute muss mindestens :min. sein',
-        'file'    => ':attribute muss mindestens :min Kilobyte gro&szlig; sein.',
+        'numeric' => ':attribute muss mindestens :min sein',
+        'file'    => ':attribute muss mindestens :min Kilobyte groß sein.',
         'string'  => ':attribute muss mindestens :min Zeichen lang sein.',
         'array'   => ':attribute muss mindesten :min Elemente enthalten.',
     ],
-    'not_in'               => 'Markiertes :attribute ist ung&uuml;ltig.',
+    'not_in'               => ':attribute ist ungültig.',
     'numeric'              => ':attribute muss eine Zahl sein.',
-    'regex'                => ':attribute Format ist ung&uuml;ltig.',
-    'required'             => ':attribute Feld ist erforderlich.',
-    'required_if'          => ':attribute Feld ist erforderlich, wenn :other :value ist.',
-    'required_with'        => ':attribute Feld ist erforderlich, wenn :values vorhanden ist.',
-    'required_with_all'    => ':attribute Feld ist erforderlich, wenn :values vorhanden sind.',
-    'required_without'     => ':attribute Feld ist erforderlich, wenn :values nicht vorhanden ist.',
-    'required_without_all' => ':attribute Feld ist erforderlich, wenn :values nicht vorhanden sind.',
-    'same'                 => ':attribute und :other muss &uuml;bereinstimmen.',
+    'regex'                => ':attribute ist in einem ungültigen Format.',
+    'required'             => ':attribute ist erforderlich.',
+    'required_if'          => ':attribute ist erforderlich, wenn :other :value ist.',
+    'required_with'        => ':attribute ist erforderlich, wenn :values vorhanden ist.',
+    'required_with_all'    => ':attribute ist erforderlich, wenn :values vorhanden sind.',
+    'required_without'     => ':attribute ist erforderlich, wenn :values nicht vorhanden ist.',
+    'required_without_all' => ':attribute ist erforderlich, wenn :values nicht vorhanden sind.',
+    'same'                 => ':attribute und :other müssen übereinstimmen.',
     'size'                 => [
         'numeric' => ':attribute muss :size sein.',
-        'file'    => ':attribute muss :size Kilobytes gro&szlig; sein.',
+        'file'    => ':attribute muss :size Kilobytes groß sein.',
         'string'  => ':attribute muss :size Zeichen lang sein.',
         'array'   => ':attribute muss :size Elemente enthalten.',
     ],

From a04b31866d9ec3810c8912e0c7bcd477556de4d3 Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Thu, 17 Aug 2017 19:44:35 +0100
Subject: [PATCH 78/83] Cleaned social callback

---
 app/Http/Controllers/Auth/RegisterController.php | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php
index 8b0ef309a..9a23fe2a1 100644
--- a/app/Http/Controllers/Auth/RegisterController.php
+++ b/app/Http/Controllers/Auth/RegisterController.php
@@ -8,6 +8,7 @@ use BookStack\Exceptions\UserRegistrationException;
 use BookStack\Repos\UserRepo;
 use BookStack\Services\EmailConfirmationService;
 use BookStack\Services\SocialAuthService;
+use BookStack\SocialAccount;
 use BookStack\User;
 use Exception;
 use Illuminate\Http\Request;
@@ -103,7 +104,7 @@ class RegisterController extends Controller
      * @param Request|\Illuminate\Http\Request $request
      * @return Response
      * @throws UserRegistrationException
-     * @throws \Illuminate\Foundation\Validation\ValidationException
+     * @throws \Illuminate\Validation\ValidationException
      */
     public function postRegister(Request $request)
     {
@@ -255,16 +256,13 @@ class RegisterController extends Controller
      */
     public function socialCallback($socialDriver)
     {
-        if (session()->has('social-callback')) {
-            $action = session()->pull('social-callback');
-            if ($action == 'login') {
-                return $this->socialAuthService->handleLoginCallback($socialDriver);
-            } elseif ($action == 'register') {
-                return $this->socialRegisterCallback($socialDriver);
-            }
-        } else {
+        if (!session()->has('social-callback')) {
             throw new SocialSignInException(trans('errors.social_no_action_defined'), '/login');
         }
+
+        $action = session()->pull('social-callback');
+        if ($action == 'login') return $this->socialAuthService->handleLoginCallback($socialDriver);
+        if ($action == 'register') return $this->socialRegisterCallback($socialDriver);
         return redirect()->back();
     }
 

From afc66b3c3da3db8f53a8d82adf394feff5e17bfb Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Sat, 19 Aug 2017 13:55:56 +0100
Subject: [PATCH 79/83] Migrated attachment manager to vue

---
 resources/assets/js/controllers.js            | 196 ------------------
 resources/assets/js/directives.js             | 109 ----------
 resources/assets/js/global.js                 |  65 +++---
 .../assets/js/vues/attachment-manager.js      | 138 ++++++++++++
 resources/assets/js/vues/image-manager.js     |   4 -
 resources/assets/js/vues/vues.js              |  15 +-
 resources/assets/sass/_components.scss        |   2 +-
 resources/assets/sass/_tables.scss            |  11 +-
 resources/views/pages/form-toolbox.blade.php  |  92 ++++----
 9 files changed, 231 insertions(+), 401 deletions(-)
 create mode 100644 resources/assets/js/vues/attachment-manager.js

diff --git a/resources/assets/js/controllers.js b/resources/assets/js/controllers.js
index 132580f68..8b37379fa 100644
--- a/resources/assets/js/controllers.js
+++ b/resources/assets/js/controllers.js
@@ -145,202 +145,6 @@ module.exports = function (ngApp, events) {
 
     }]);
 
-    ngApp.controller('PageAttachmentController', ['$scope', '$http', '$attrs',
-        function ($scope, $http, $attrs) {
-
-            const pageId = $scope.uploadedTo = $attrs.pageId;
-            let currentOrder = '';
-            $scope.files = [];
-            $scope.editFile = false;
-            $scope.file = getCleanFile();
-            $scope.errors = {
-                link: {},
-                edit: {}
-            };
-
-            function getCleanFile() {
-                return {
-                    page_id: pageId
-                };
-            }
-
-            // Angular-UI-Sort options
-            $scope.sortOptions = {
-                handle: '.handle',
-                items: '> tr',
-                containment: "parent",
-                axis: "y",
-                stop: sortUpdate,
-            };
-
-            /**
-             * Event listener for sort changes.
-             * Updates the file ordering on the server.
-             * @param event
-             * @param ui
-             */
-            function sortUpdate(event, ui) {
-                let newOrder = $scope.files.map(file => {return file.id}).join(':');
-                if (newOrder === currentOrder) return;
-
-                currentOrder = newOrder;
-                $http.put(window.baseUrl(`/attachments/sort/page/${pageId}`), {files: $scope.files}).then(resp => {
-                    events.emit('success', resp.data.message);
-                }, checkError('sort'));
-            }
-
-            /**
-             * Used by dropzone to get the endpoint to upload to.
-             * @returns {string}
-             */
-            $scope.getUploadUrl = function (file) {
-                let suffix = (typeof file !== 'undefined') ? `/${file.id}` : '';
-                return window.baseUrl(`/attachments/upload${suffix}`);
-            };
-
-            /**
-             * Get files for the current page from the server.
-             */
-            function getFiles() {
-                let url = window.baseUrl(`/attachments/get/page/${pageId}`);
-                $http.get(url).then(resp => {
-                    $scope.files = resp.data;
-                    currentOrder = resp.data.map(file => {return file.id}).join(':');
-                }, checkError('get'));
-            }
-            getFiles();
-
-            /**
-             * Runs on file upload, Adds an file to local file list
-             * and shows a success message to the user.
-             * @param file
-             * @param data
-             */
-            $scope.uploadSuccess = function (file, data) {
-                $scope.$apply(() => {
-                    $scope.files.push(data);
-                });
-                events.emit('success', trans('entities.attachments_file_uploaded'));
-            };
-
-            /**
-             * Upload and overwrite an existing file.
-             * @param file
-             * @param data
-             */
-            $scope.uploadSuccessUpdate = function (file, data) {
-                $scope.$apply(() => {
-                    let search = filesIndexOf(data);
-                    if (search !== -1) $scope.files[search] = data;
-
-                    if ($scope.editFile) {
-                        $scope.editFile = angular.copy(data);
-                        data.link = '';
-                    }
-                });
-                events.emit('success', trans('entities.attachments_file_updated'));
-            };
-
-            /**
-             * Delete a file from the server and, on success, the local listing.
-             * @param file
-             */
-            $scope.deleteFile = function(file) {
-                if (!file.deleting) {
-                    file.deleting = true;
-                    return;
-                }
-                  $http.delete(window.baseUrl(`/attachments/${file.id}`)).then(resp => {
-                      events.emit('success', resp.data.message);
-                      $scope.files.splice($scope.files.indexOf(file), 1);
-                  }, checkError('delete'));
-            };
-
-            /**
-             * Attach a link to a page.
-             * @param file
-             */
-            $scope.attachLinkSubmit = function(file) {
-                file.uploaded_to = pageId;
-                $http.post(window.baseUrl('/attachments/link'), file).then(resp => {
-                    $scope.files.push(resp.data);
-                    events.emit('success', trans('entities.attachments_link_attached'));
-                    $scope.file = getCleanFile();
-                }, checkError('link'));
-            };
-
-            /**
-             * Start the edit mode for a file.
-             * @param file
-             */
-            $scope.startEdit = function(file) {
-                $scope.editFile = angular.copy(file);
-                $scope.editFile.link = (file.external) ? file.path : '';
-            };
-
-            /**
-             * Cancel edit mode
-             */
-            $scope.cancelEdit = function() {
-                $scope.editFile = false;
-            };
-
-            /**
-             * Update the name and link of a file.
-             * @param file
-             */
-            $scope.updateFile = function(file) {
-                $http.put(window.baseUrl(`/attachments/${file.id}`), file).then(resp => {
-                    let search = filesIndexOf(resp.data);
-                    if (search !== -1) $scope.files[search] = resp.data;
-
-                    if ($scope.editFile && !file.external) {
-                        $scope.editFile.link = '';
-                    }
-                    $scope.editFile = false;
-                    events.emit('success', trans('entities.attachments_updated_success'));
-                }, checkError('edit'));
-            };
-
-            /**
-             * Get the url of a file.
-             */
-            $scope.getFileUrl = function(file) {
-                return window.baseUrl('/attachments/' + file.id);
-            };
-
-            /**
-             * Search the local files via another file object.
-             * Used to search via object copies.
-             * @param file
-             * @returns int
-             */
-            function filesIndexOf(file) {
-                for (let i = 0; i < $scope.files.length; i++) {
-                    if ($scope.files[i].id == file.id) return i;
-                }
-                return -1;
-            }
-
-            /**
-             * Check for an error response in a ajax request.
-             * @param errorGroupName
-             */
-            function checkError(errorGroupName) {
-                $scope.errors[errorGroupName] = {};
-                return function(response) {
-                    if (typeof response.data !== 'undefined' && typeof response.data.error !== 'undefined') {
-                        events.emit('error', response.data.error);
-                    }
-                    if (typeof response.data !== 'undefined' && typeof response.data.validation !== 'undefined') {
-                        $scope.errors[errorGroupName] = response.data.validation;
-                        console.log($scope.errors[errorGroupName])
-                    }
-                }
-            }
-
-        }]);
-
     // Controller used to reply to and add new comments
     ngApp.controller('CommentReplyController', ['$scope', '$http', '$timeout', function ($scope, $http, $timeout) {
         const MarkdownIt = require("markdown-it");
diff --git a/resources/assets/js/directives.js b/resources/assets/js/directives.js
index 2a0547c97..fc92121ff 100644
--- a/resources/assets/js/directives.js
+++ b/resources/assets/js/directives.js
@@ -1,119 +1,10 @@
 "use strict";
-const DropZone = require("dropzone");
 const MarkdownIt = require("markdown-it");
 const mdTasksLists = require('markdown-it-task-lists');
 const code = require('./code');
 
 module.exports = function (ngApp, events) {
 
-    /**
-     * Common tab controls using simple jQuery functions.
-     */
-    ngApp.directive('tabContainer', function() {
-        return {
-            restrict: 'A',
-            link: function (scope, element, attrs) {
-                const $content = element.find('[tab-content]');
-                const $buttons = element.find('[tab-button]');
-
-                if (attrs.tabContainer) {
-                    let initial = attrs.tabContainer;
-                    $buttons.filter(`[tab-button="${initial}"]`).addClass('selected');
-                    $content.hide().filter(`[tab-content="${initial}"]`).show();
-                } else {
-                    $content.hide().first().show();
-                    $buttons.first().addClass('selected');
-                }
-
-                $buttons.click(function() {
-                    let clickedTab = $(this);
-                    $buttons.removeClass('selected');
-                    $content.hide();
-                    let name = clickedTab.addClass('selected').attr('tab-button');
-                    $content.filter(`[tab-content="${name}"]`).show();
-                });
-            }
-        };
-    });
-
-    /**
-     * Sub form component to allow inner-form sections to act like their own forms.
-     */
-    ngApp.directive('subForm', function() {
-        return {
-            restrict: 'A',
-            link: function (scope, element, attrs) {
-                element.on('keypress', e => {
-                    if (e.keyCode === 13) {
-                        submitEvent(e);
-                    }
-                });
-
-                element.find('button[type="submit"]').click(submitEvent);
-
-                function submitEvent(e) {
-                    e.preventDefault();
-                    if (attrs.subForm) scope.$eval(attrs.subForm);
-                }
-            }
-        };
-    });
-
-    /**
-     * DropZone
-     * Used for uploading images
-     */
-    ngApp.directive('dropZone', [function () {
-        return {
-            restrict: 'E',
-            template: `
-            <div class="dropzone-container">
-                <div class="dz-message">{{message}}</div>
-            </div>
-            `,
-            scope: {
-                uploadUrl: '@',
-                eventSuccess: '=',
-                eventError: '=',
-                uploadedTo: '@',
-            },
-            link: function (scope, element, attrs) {
-                scope.message = attrs.message;
-                if (attrs.placeholder) element[0].querySelector('.dz-message').textContent = attrs.placeholder;
-                let dropZone = new DropZone(element[0].querySelector('.dropzone-container'), {
-                    url: scope.uploadUrl,
-                    init: function () {
-                        let dz = this;
-                        dz.on('sending', function (file, xhr, data) {
-                            let token = window.document.querySelector('meta[name=token]').getAttribute('content');
-                            data.append('_token', token);
-                            let uploadedTo = typeof scope.uploadedTo === 'undefined' ? 0 : scope.uploadedTo;
-                            data.append('uploaded_to', uploadedTo);
-                        });
-                        if (typeof scope.eventSuccess !== 'undefined') dz.on('success', scope.eventSuccess);
-                        dz.on('success', function (file, data) {
-                            $(file.previewElement).fadeOut(400, function () {
-                                dz.removeFile(file);
-                            });
-                        });
-                        if (typeof scope.eventError !== 'undefined') dz.on('error', scope.eventError);
-                        dz.on('error', function (file, errorMessage, xhr) {
-                            console.log(errorMessage);
-                            console.log(xhr);
-                            function setMessage(message) {
-                                $(file.previewElement).find('[data-dz-errormessage]').text(message);
-                            }
-
-                            if (xhr.status === 413) setMessage(trans('errors.server_upload_limit'));
-                            if (errorMessage.file) setMessage(errorMessage.file[0]);
-
-                        });
-                    }
-                });
-            }
-        };
-    }]);
-
     /**
      * TinyMCE
      * An angular wrapper around the tinyMCE editor.
diff --git a/resources/assets/js/global.js b/resources/assets/js/global.js
index 28d1e3b0c..ee7cf3cc1 100644
--- a/resources/assets/js/global.js
+++ b/resources/assets/js/global.js
@@ -9,34 +9,6 @@ window.baseUrl = function(path) {
     return basePath + '/' + path;
 };
 
-const Vue = require("vue");
-const axios = require("axios");
-
-let axiosInstance = axios.create({
-    headers: {
-        'X-CSRF-TOKEN': document.querySelector('meta[name=token]').getAttribute('content'),
-        'baseURL': window.baseUrl('')
-    }
-});
-window.$http = axiosInstance;
-Vue.prototype.$http = axiosInstance;
-
-
-// AngularJS - Create application and load components
-const angular = require("angular");
-require("angular-resource");
-require("angular-animate");
-require("angular-sanitize");
-require("angular-ui-sortable");
-
-let ngApp = angular.module('bookStack', ['ngResource', 'ngAnimate', 'ngSanitize', 'ui.sortable']);
-
-// Translation setup
-// Creates a global function with name 'trans' to be used in the same way as Laravel's translation system
-const Translations = require("./translations");
-let translator = new Translations(window.translations);
-window.trans = translator.get.bind(translator);
-
 // Global Event System
 class EventManager {
     constructor() {
@@ -61,8 +33,45 @@ class EventManager {
 }
 
 window.Events = new EventManager();
+
+const Vue = require("vue");
+const axios = require("axios");
+
+let axiosInstance = axios.create({
+    headers: {
+        'X-CSRF-TOKEN': document.querySelector('meta[name=token]').getAttribute('content'),
+        'baseURL': window.baseUrl('')
+    }
+});
+axiosInstance.interceptors.request.use(resp => {
+    return resp;
+}, err => {
+    if (typeof err.response === "undefined" || typeof err.response.data === "undefined") return Promise.reject(err);
+    if (typeof err.response.data.error !== "undefined") window.Events.emit('error', err.response.data.error);
+    if (typeof err.response.data.message !== "undefined") window.Events.emit('error', err.response.data.message);
+});
+window.$http = axiosInstance;
+
+Vue.prototype.$http = axiosInstance;
 Vue.prototype.$events = window.Events;
 
+
+// AngularJS - Create application and load components
+const angular = require("angular");
+require("angular-resource");
+require("angular-animate");
+require("angular-sanitize");
+require("angular-ui-sortable");
+
+let ngApp = angular.module('bookStack', ['ngResource', 'ngAnimate', 'ngSanitize', 'ui.sortable']);
+
+// Translation setup
+// Creates a global function with name 'trans' to be used in the same way as Laravel's translation system
+const Translations = require("./translations");
+let translator = new Translations(window.translations);
+window.trans = translator.get.bind(translator);
+
+
 require("./vues/vues");
 require("./components");
 
diff --git a/resources/assets/js/vues/attachment-manager.js b/resources/assets/js/vues/attachment-manager.js
new file mode 100644
index 000000000..635622b93
--- /dev/null
+++ b/resources/assets/js/vues/attachment-manager.js
@@ -0,0 +1,138 @@
+const draggable = require('vuedraggable');
+const dropzone = require('./components/dropzone');
+
+function mounted() {
+    this.pageId = this.$el.getAttribute('page-id');
+    this.file = this.newFile();
+
+    this.$http.get(window.baseUrl(`/attachments/get/page/${this.pageId}`)).then(resp => {
+        this.files = resp.data;
+    }).catch(err => {
+        this.checkValidationErrors('get', err);
+    });
+}
+
+let data = {
+    pageId: null,
+    files: [],
+    fileToEdit: null,
+    file: {},
+    tab: 'list',
+    editTab: 'file',
+    errors: {link: {}, edit: {}, delete: {}}
+};
+
+const components = {dropzone, draggable};
+
+let methods = {
+
+    newFile() {
+        return {page_id: this.pageId};
+    },
+
+    getFileUrl(file) {
+        return window.baseUrl(`/attachments/${file.id}`);
+    },
+
+    fileSortUpdate() {
+        this.$http.put(window.baseUrl(`/attachments/sort/page/${this.pageId}`), {files: this.files}).then(resp => {
+            this.$events.emit('success', resp.data.message);
+        }).catch(err => {
+            this.checkValidationErrors('sort', err);
+        });
+    },
+
+    startEdit(file) {
+        this.fileToEdit = Object.assign({}, file);
+        this.fileToEdit.link = file.external ? file.path : '';
+        this.editTab = file.external ? 'link' : 'file';
+    },
+
+    deleteFile(file) {
+        if (!file.deleting) return file.deleting = true;
+
+        this.$http.delete(window.baseUrl(`/attachments/${file.id}`)).then(resp => {
+            this.$events.emit('success', resp.data.message);
+            this.files.splice(this.files.indexOf(file), 1);
+        }).catch(err => {
+            this.checkValidationErrors('delete', err)
+        });
+    },
+
+    uploadSuccess(upload) {
+        this.files.push(upload.data);
+        this.$events.emit('success', trans('entities.attachments_file_uploaded'));
+    },
+
+    uploadSuccessUpdate(upload) {
+        let fileIndex = this.filesIndex(upload.data);
+        if (fileIndex === -1) {
+            this.files.push(upload.data)
+        } else {
+            this.files.splice(fileIndex, 1, upload.data);
+        }
+
+        if (this.fileToEdit && this.fileToEdit.id === upload.data.id) {
+            this.fileToEdit = Object.assign({}, upload.data);
+        }
+        this.$events.emit('success', trans('entities.attachments_file_updated'));
+    },
+
+    checkValidationErrors(groupName, err) {
+        console.error(err);
+        if (typeof err.response.data === "undefined" && typeof err.response.data.validation === "undefined") return;
+        this.errors[groupName] = err.response.data.validation;
+        console.log(this.errors[groupName]);
+    },
+
+    getUploadUrl(file) {
+        let url = window.baseUrl(`/attachments/upload`);
+        if (typeof file !== 'undefined') url += `/${file.id}`;
+        return url;
+    },
+
+    cancelEdit() {
+        this.fileToEdit = null;
+    },
+
+    attachNewLink(file) {
+        file.uploaded_to = this.pageId;
+        this.$http.post(window.baseUrl('/attachments/link'), file).then(resp => {
+            this.files.push(resp.data);
+            this.file = this.newFile();
+            this.$events.emit('success', trans('entities.attachments_link_attached'));
+        }).catch(err => {
+            this.checkValidationErrors('link', err);
+        });
+    },
+
+    updateFile(file) {
+        $http.put(window.baseUrl(`/attachments/${file.id}`), file).then(resp => {
+            let search = this.filesIndex(resp.data);
+            if (search === -1) {
+                this.files.push(resp.data);
+            } else {
+                this.files.splice(search, 1, resp.data);
+            }
+
+            if (this.fileToEdit && !file.external) this.fileToEdit.link = '';
+            this.fileToEdit = false;
+
+            this.$events.emit('success', trans('entities.attachments_updated_success'));
+        }).catch(err => {
+            this.checkValidationErrors('edit', err);
+        });
+    },
+
+    filesIndex(file) {
+        for (let i = 0, len = this.files.length; i < len; i++) {
+            if (this.files[i].id === file.id) return i;
+        }
+        return -1;
+    }
+
+};
+
+module.exports = {
+    data, methods, mounted, components,
+};
\ No newline at end of file
diff --git a/resources/assets/js/vues/image-manager.js b/resources/assets/js/vues/image-manager.js
index 9e3fa013e..12ccc970d 100644
--- a/resources/assets/js/vues/image-manager.js
+++ b/resources/assets/js/vues/image-manager.js
@@ -127,8 +127,6 @@ const methods = {
                     message += errors[key].join('\n');
                 });
                 this.$events.emit('error', message);
-            } else if (error.response.status === 403) {
-                this.$events.emit('error', error.response.data.error);
             }
         });
     },
@@ -144,8 +142,6 @@ const methods = {
         }).catch(error=> {
             if (error.response.status === 400) {
                 this.dependantPages = error.response.data;
-            } else if (error.response.status === 403) {
-                this.$events.emit('error', error.response.data.error);
             }
         });
     },
diff --git a/resources/assets/js/vues/vues.js b/resources/assets/js/vues/vues.js
index a3f6ec8e5..5f6f7d7a7 100644
--- a/resources/assets/js/vues/vues.js
+++ b/resources/assets/js/vues/vues.js
@@ -10,14 +10,15 @@ let vueMapping = {
     'code-editor': require('./code-editor'),
     'image-manager': require('./image-manager'),
     'tag-manager': require('./tag-manager'),
+    'attachment-manager': require('./attachment-manager'),
 };
 
 window.vues = {};
 
-Object.keys(vueMapping).forEach(id => {
-    if (exists(id)) {
-        let config = vueMapping[id];
-        config.el = '#' + id;
-        window.vues[id] = new Vue(config);
-    }
-});
\ No newline at end of file
+let ids = Object.keys(vueMapping);
+for (let i = 0, len = ids.length; i < len; i++) {
+    if (!exists(ids[i])) continue;
+    let config = vueMapping[ids[i]];
+    config.el = '#' + ids[i];
+    window.vues[ids[i]] = new Vue(config);
+}
\ No newline at end of file
diff --git a/resources/assets/sass/_components.scss b/resources/assets/sass/_components.scss
index 8092caa07..525b4f8f1 100644
--- a/resources/assets/sass/_components.scss
+++ b/resources/assets/sass/_components.scss
@@ -512,7 +512,7 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group {
 }
 
 
-[tab-container] .nav-tabs {
+.tab-container .nav-tabs {
   text-align: left;
   border-bottom: 1px solid #DDD;
   margin-bottom: $-m;
diff --git a/resources/assets/sass/_tables.scss b/resources/assets/sass/_tables.scss
index ea517fee3..31ac92f60 100644
--- a/resources/assets/sass/_tables.scss
+++ b/resources/assets/sass/_tables.scss
@@ -59,18 +59,9 @@ table.list-table {
   }
 }
 
-table.file-table {
-  @extend .no-style;
-  td {
-    padding: $-xs;
-  }
-  .ui-sortable-helper {
-    display: table;
-  }
-}
-
 .fake-table {
   display: table;
+  width: 100%;
   > div {
     display: table-row-group;
   }
diff --git a/resources/views/pages/form-toolbox.blade.php b/resources/views/pages/form-toolbox.blade.php
index 3bc03a17f..bd60af89a 100644
--- a/resources/views/pages/form-toolbox.blade.php
+++ b/resources/views/pages/form-toolbox.blade.php
@@ -14,8 +14,8 @@
         <div class="padded tags">
             <p class="muted small">{!! nl2br(e(trans('entities.tags_explain'))) !!}</p>
 
-            <draggable class="fake-table no-style tag-table" :options="{handle: '.handle'}" :list="tags" element="div" style="width: 100%;">
-                <transition-group name="test" tag="div">
+            <draggable class="fake-table no-style tag-table" :options="{handle: '.handle'}" :list="tags" element="div">
+                <transition-group tag="div">
                     <div v-for="(tag, i) in tags" :key="tag.key">
                         <div width="20" class="handle" ><i class="zmdi zmdi-menu"></i></div>
                         <div>
@@ -47,93 +47,93 @@
     </div>
 
     @if(userCan('attachment-create-all'))
-        <div toolbox-tab-content="files" ng-controller="PageAttachmentController" page-id="{{ $page->id or 0 }}">
+        <div toolbox-tab-content="files" id="attachment-manager" page-id="{{ $page->id or 0 }}">
             <h4>{{ trans('entities.attachments') }}</h4>
             <div class="padded files">
 
-                <div id="file-list" ng-show="!editFile">
+                <div id="file-list" v-show="!fileToEdit">
                     <p class="muted small">{{ trans('entities.attachments_explain') }} <span class="secondary">{{ trans('entities.attachments_explain_instant_save') }}</span></p>
 
-                    <div tab-container>
+                    <div class="tab-container">
                         <div class="nav-tabs">
-                            <div tab-button="list" class="tab-item">{{ trans('entities.attachments_items') }}</div>
-                            <div tab-button="file" class="tab-item">{{ trans('entities.attachments_upload') }}</div>
-                            <div tab-button="link" class="tab-item">{{ trans('entities.attachments_link') }}</div>
+                            <div @click="tab = 'list'" :class="{selected: tab === 'list'}" class="tab-item">{{ trans('entities.attachments_items') }}</div>
+                            <div @click="tab = 'file'" :class="{selected: tab === 'file'}" class="tab-item">{{ trans('entities.attachments_upload') }}</div>
+                            <div @click="tab = 'link'" :class="{selected: tab === 'link'}" class="tab-item">{{ trans('entities.attachments_link') }}</div>
                         </div>
-                        <div tab-content="list">
-                            <table class="file-table" style="width: 100%;">
-                                <tbody ui-sortable="sortOptions" ng-model="files" >
-                                <tr ng-repeat="file in files track by $index">
-                                    <td width="20" ><i class="handle zmdi zmdi-menu"></i></td>
-                                    <td>
-                                        <a ng-href="@{{getFileUrl(file)}}" target="_blank" ng-bind="file.name"></a>
-                                        <div ng-if="file.deleting">
+                        <div v-show="tab === 'list'">
+                            <draggable class="fake-table no-style " style="width: 100%;" :options="{handle: '.handle'}" @change="fileSortUpdate" :list="files" element="div">
+                                <transition-group tag="div">
+                                <div v-for="(file, index) in files" :key="file.id">
+                                    <div width="20" ><i class="handle zmdi zmdi-menu"></i></div>
+                                    <div>
+                                        <a :href="getFileUrl(file)" target="_blank" v-text="file.name"></a>
+                                        <div v-if="file.deleting">
                                             <span class="neg small">{{ trans('entities.attachments_delete_confirm') }}</span>
                                             <br>
-                                            <span class="text-primary small" ng-click="file.deleting=false;">{{ trans('common.cancel') }}</span>
+                                            <span class="text-primary small" @click="file.deleting = false;">{{ trans('common.cancel') }}</span>
                                         </div>
-                                    </td>
-                                    <td width="10" ng-click="startEdit(file)" class="text-center text-primary" style="padding: 0;"><i class="zmdi zmdi-edit"></i></td>
-                                    <td width="5"></td>
-                                    <td width="10" ng-click="deleteFile(file)" class="text-center text-neg" style="padding: 0;"><i class="zmdi zmdi-close"></i></td>
-                                </tr>
-                                </tbody>
-                            </table>
-                            <p class="small muted" ng-if="files.length == 0">
+                                    </div>
+                                    <div width="10" @click="startEdit(file)" class="text-center text-primary" style="padding: 0;"><i class="zmdi zmdi-edit"></i></div>
+                                    <div width="5"></div>
+                                    <div width="10" @click="deleteFile(file)" class="text-center text-neg" style="padding: 0;"><i class="zmdi zmdi-close"></i></div>
+                                </div>
+                                </transition-group>
+                            </draggable>
+                            <p class="small muted" v-if="files.length === 0">
                                 {{ trans('entities.attachments_no_files') }}
                             </p>
                         </div>
-                        <div tab-content="file">
-                            <drop-zone message="{{ trans('entities.attachments_dropzone') }}" upload-url="@{{getUploadUrl()}}" uploaded-to="@{{uploadedTo}}" event-success="uploadSuccess"></drop-zone>
+                        <div v-show="tab === 'file'">
+                            <dropzone placeholder="{{ trans('entities.attachments_dropzone') }}" :upload-url="getUploadUrl()" :uploaded-to="pageId" @success="uploadSuccess"></dropzone>
                         </div>
-                        <div tab-content="link" sub-form="attachLinkSubmit(file)">
+                        <div v-show="tab === 'link'" @keypress.enter.prevent="attachNewLink(file)">
                             <p class="muted small">{{ trans('entities.attachments_explain_link') }}</p>
                             <div class="form-group">
                                 <label for="attachment-via-link">{{ trans('entities.attachments_link_name') }}</label>
-                                <input placeholder="{{ trans('entities.attachments_link_name') }}" ng-model="file.name">
-                                <p class="small neg" ng-repeat="error in errors.link.name" ng-bind="error"></p>
+                                <input type="text" placeholder="{{ trans('entities.attachments_link_name') }}" v-model="file.name">
+                                <p class="small neg" v-for="error in errors.link.name" v-text="error"></p>
                             </div>
                             <div class="form-group">
                                 <label for="attachment-via-link">{{ trans('entities.attachments_link_url') }}</label>
-                                <input placeholder="{{ trans('entities.attachments_link_url_hint') }}" ng-model="file.link">
-                                <p class="small neg" ng-repeat="error in errors.link.link" ng-bind="error"></p>
+                                <input type="text"  placeholder="{{ trans('entities.attachments_link_url_hint') }}" v-model="file.link">
+                                <p class="small neg" v-for="error in errors.link.link" v-text="error"></p>
                             </div>
-                            <button class="button pos">{{ trans('entities.attach') }}</button>
+                            <button @click.prevent="attachNewLink(file)" class="button pos">{{ trans('entities.attach') }}</button>
 
                         </div>
                     </div>
 
                 </div>
 
-                <div id="file-edit" ng-if="editFile" sub-form="updateFile(editFile)">
+                <div id="file-edit" v-if="fileToEdit" @keypress.enter.prevent="updateFile(fileToEdit)">
                     <h5>{{ trans('entities.attachments_edit_file') }}</h5>
 
                     <div class="form-group">
                         <label for="attachment-name-edit">{{ trans('entities.attachments_edit_file_name') }}</label>
-                        <input type="text" id="attachment-name-edit" placeholder="{{ trans('entities.attachments_edit_file_name') }}" ng-model="editFile.name">
-                        <p class="small neg" ng-repeat="error in errors.edit.name" ng-bind="error"></p>
+                        <input type="text" id="attachment-name-edit" placeholder="{{ trans('entities.attachments_edit_file_name') }}" v-model="fileToEdit.name">
+                        <p class="small neg" v-for="error in errors.edit.name" v-text="error"></p>
                     </div>
 
-                    <div tab-container="@{{ editFile.external ? 'link' : 'file' }}">
+                    <div class="tab-container">
                         <div class="nav-tabs">
-                            <div tab-button="file" class="tab-item">{{ trans('entities.attachments_upload') }}</div>
-                            <div tab-button="link" class="tab-item">{{ trans('entities.attachments_set_link') }}</div>
+                            <div @click="editTab = 'file'" :class="{selected: editTab === 'file'}" class="tab-item">{{ trans('entities.attachments_upload') }}</div>
+                            <div @click="editTab = 'link'" :class="{selected: editTab === 'link'}" class="tab-item">{{ trans('entities.attachments_set_link') }}</div>
                         </div>
-                        <div tab-content="file">
-                            <drop-zone upload-url="@{{getUploadUrl(editFile)}}" uploaded-to="@{{uploadedTo}}" placeholder="{{ trans('entities.attachments_edit_drop_upload') }}" event-success="uploadSuccessUpdate"></drop-zone>
+                        <div v-if="editTab === 'file'">
+                            <dropzone :upload-url="getUploadUrl(fileToEdit)" :uploaded-to="pageId" placeholder="{{ trans('entities.attachments_edit_drop_upload') }}" @success="uploadSuccessUpdate"></dropzone>
                             <br>
                         </div>
-                        <div tab-content="link">
+                        <div v-if="editTab === 'link'">
                             <div class="form-group">
                                 <label for="attachment-link-edit">{{ trans('entities.attachments_link_url') }}</label>
-                                <input id="attachment-link-edit" placeholder="{{ trans('entities.attachment_link') }}" ng-model="editFile.link">
-                                <p class="small neg" ng-repeat="error in errors.edit.link" ng-bind="error"></p>
+                                <input type="text" id="attachment-link-edit" placeholder="{{ trans('entities.attachment_link') }}" v-model="fileToEdit.link">
+                                <p class="small neg" v-for="error in errors.edit.link" v-text="error"></p>
                             </div>
                         </div>
                     </div>
 
-                    <button type="button" class="button" ng-click="cancelEdit()">{{ trans('common.back') }}</button>
-                    <button class="button pos">{{ trans('common.save') }}</button>
+                    <button type="button" class="button" @click="cancelEdit">{{ trans('common.back') }}</button>
+                    <button @click.enter.prevent="updateFile(fileToEdit)" class="button pos">{{ trans('common.save') }}</button>
                 </div>
 
             </div>

From 039ee5d06c2f3364abacf3c93d5507c8d0f60ad5 Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Sat, 19 Aug 2017 14:04:38 +0100
Subject: [PATCH 80/83] Aligned entity dash name and fixed chapter toggle on
 dash

---
 .../assets/js/vues/{entity-search.js => entity-dashboard.js}  | 0
 resources/assets/js/vues/vues.js                              | 2 +-
 resources/views/books/show.blade.php                          | 4 ++--
 resources/views/chapters/show.blade.php                       | 4 ++--
 4 files changed, 5 insertions(+), 5 deletions(-)
 rename resources/assets/js/vues/{entity-search.js => entity-dashboard.js} (100%)

diff --git a/resources/assets/js/vues/entity-search.js b/resources/assets/js/vues/entity-dashboard.js
similarity index 100%
rename from resources/assets/js/vues/entity-search.js
rename to resources/assets/js/vues/entity-dashboard.js
diff --git a/resources/assets/js/vues/vues.js b/resources/assets/js/vues/vues.js
index 5f6f7d7a7..a70d32009 100644
--- a/resources/assets/js/vues/vues.js
+++ b/resources/assets/js/vues/vues.js
@@ -6,7 +6,7 @@ function exists(id) {
 
 let vueMapping = {
     'search-system': require('./search'),
-    'entity-dashboard': require('./entity-search'),
+    'entity-dashboard': require('./entity-dashboard'),
     'code-editor': require('./code-editor'),
     'image-manager': require('./image-manager'),
     'tag-manager': require('./tag-manager'),
diff --git a/resources/views/books/show.blade.php b/resources/views/books/show.blade.php
index 9882f09a2..3d50bcef8 100644
--- a/resources/views/books/show.blade.php
+++ b/resources/views/books/show.blade.php
@@ -55,7 +55,7 @@
             <div class="col-md-7">
 
                 <h1>{{$book->name}}</h1>
-                <div class="book-content" v-if="!searching">
+                <div class="book-content" v-show="!searching">
                     <p class="text-muted" v-pre>{!! nl2br(e($book->description)) !!}</p>
 
                     <div class="page-list" v-pre>
@@ -87,7 +87,7 @@
                         @include('partials.entity-meta', ['entity' => $book])
                     </div>
                 </div>
-                <div class="search-results" v-cloak v-if="searching">
+                <div class="search-results" v-cloak v-show="searching">
                     <h3 class="text-muted">{{ trans('entities.search_results') }} <a v-if="searching" v-on:click="clearSearch()" class="text-small"><i class="zmdi zmdi-close"></i>{{ trans('entities.search_clear') }}</a></h3>
                     <div v-if="!searchResults">
                         @include('partials/loading-icon')
diff --git a/resources/views/chapters/show.blade.php b/resources/views/chapters/show.blade.php
index 9a3195555..f0fa40a84 100644
--- a/resources/views/chapters/show.blade.php
+++ b/resources/views/chapters/show.blade.php
@@ -51,7 +51,7 @@
         <div class="row">
             <div class="col-md-7">
                 <h1>{{ $chapter->name }}</h1>
-                <div class="chapter-content" v-if="!searching">
+                <div class="chapter-content" v-show="!searching">
                     <p class="text-muted">{!! nl2br(e($chapter->description)) !!}</p>
 
                     @if(count($pages) > 0)
@@ -82,7 +82,7 @@
                     @include('partials.entity-meta', ['entity' => $chapter])
                 </div>
 
-                <div class="search-results" v-cloak v-if="searching">
+                <div class="search-results" v-cloak v-show="searching">
                     <h3 class="text-muted">{{ trans('entities.search_results') }} <a v-if="searching" v-on:click="clearSearch()" class="text-small"><i class="zmdi zmdi-close"></i>{{ trans('entities.search_clear') }}</a></h3>
                     <div v-if="!searchResults">
                         @include('partials/loading-icon')

From 194293664f36a84ac5a8fc60d0bf17ea0e97a15c Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Sat, 19 Aug 2017 14:09:03 +0100
Subject: [PATCH 81/83] Removed v-show delayed content display

---
 resources/assets/sass/styles.scss | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/resources/assets/sass/styles.scss b/resources/assets/sass/styles.scss
index e40430bd8..0b86051bb 100644
--- a/resources/assets/sass/styles.scss
+++ b/resources/assets/sass/styles.scss
@@ -18,7 +18,7 @@
 @import "pages";
 @import "comments";
 
-[v-cloak], [v-show] {
+[v-cloak] {
   display: none; opacity: 0;
   animation-name: none !important;
 }

From 666c86b108ff9f05ac47cff9f1f4511af196a77b Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Sat, 19 Aug 2017 14:33:55 +0100
Subject: [PATCH 82/83] Removed included fonts, Set to use system fonts.

All font definitions moved into _text.scss.
Needs override documentation to complete.
Relates to #423.
---
 .../fonts/roboto-mono-v4-latin-regular.woff   | Bin 19592 -> 0 bytes
 .../fonts/roboto-mono-v4-latin-regular.woff2  | Bin 16108 -> 0 bytes
 .../fonts/roboto-v15-cyrillic_latin-100.woff  | Bin 26292 -> 0 bytes
 .../fonts/roboto-v15-cyrillic_latin-100.woff2 | Bin 20988 -> 0 bytes
 .../roboto-v15-cyrillic_latin-100italic.woff  | Bin 28336 -> 0 bytes
 .../roboto-v15-cyrillic_latin-100italic.woff2 | Bin 22752 -> 0 bytes
 .../fonts/roboto-v15-cyrillic_latin-300.woff  | Bin 26764 -> 0 bytes
 .../fonts/roboto-v15-cyrillic_latin-300.woff2 | Bin 21320 -> 0 bytes
 .../roboto-v15-cyrillic_latin-300italic.woff  | Bin 29176 -> 0 bytes
 .../roboto-v15-cyrillic_latin-300italic.woff2 | Bin 23516 -> 0 bytes
 .../fonts/roboto-v15-cyrillic_latin-500.woff  | Bin 27228 -> 0 bytes
 .../fonts/roboto-v15-cyrillic_latin-500.woff2 | Bin 21788 -> 0 bytes
 .../roboto-v15-cyrillic_latin-500italic.woff  | Bin 28464 -> 0 bytes
 .../roboto-v15-cyrillic_latin-500italic.woff2 | Bin 22892 -> 0 bytes
 .../fonts/roboto-v15-cyrillic_latin-700.woff  | Bin 27136 -> 0 bytes
 .../fonts/roboto-v15-cyrillic_latin-700.woff2 | Bin 21560 -> 0 bytes
 .../roboto-v15-cyrillic_latin-700italic.woff  | Bin 28328 -> 0 bytes
 .../roboto-v15-cyrillic_latin-700italic.woff2 | Bin 22572 -> 0 bytes
 .../roboto-v15-cyrillic_latin-italic.woff     | Bin 28388 -> 0 bytes
 .../roboto-v15-cyrillic_latin-italic.woff2    | Bin 22716 -> 0 bytes
 .../roboto-v15-cyrillic_latin-regular.woff    | Bin 26924 -> 0 bytes
 .../roboto-v15-cyrillic_latin-regular.woff2   | Bin 21608 -> 0 bytes
 resources/assets/sass/_blocks.scss            |   3 +-
 resources/assets/sass/_buttons.scss           |   1 -
 resources/assets/sass/_codemirror.scss        |   2 -
 resources/assets/sass/_fonts.scss             | 102 ------------------
 resources/assets/sass/_forms.scss             |   3 -
 resources/assets/sass/_html.scss              |   1 -
 resources/assets/sass/_text.scss              |  14 ++-
 resources/assets/sass/_variables.scss         |   8 +-
 resources/assets/sass/export-styles.scss      |   1 -
 resources/assets/sass/styles.scss             |   2 -
 32 files changed, 18 insertions(+), 119 deletions(-)
 delete mode 100644 public/fonts/roboto-mono-v4-latin-regular.woff
 delete mode 100644 public/fonts/roboto-mono-v4-latin-regular.woff2
 delete mode 100644 public/fonts/roboto-v15-cyrillic_latin-100.woff
 delete mode 100644 public/fonts/roboto-v15-cyrillic_latin-100.woff2
 delete mode 100644 public/fonts/roboto-v15-cyrillic_latin-100italic.woff
 delete mode 100644 public/fonts/roboto-v15-cyrillic_latin-100italic.woff2
 delete mode 100644 public/fonts/roboto-v15-cyrillic_latin-300.woff
 delete mode 100644 public/fonts/roboto-v15-cyrillic_latin-300.woff2
 delete mode 100644 public/fonts/roboto-v15-cyrillic_latin-300italic.woff
 delete mode 100644 public/fonts/roboto-v15-cyrillic_latin-300italic.woff2
 delete mode 100644 public/fonts/roboto-v15-cyrillic_latin-500.woff
 delete mode 100644 public/fonts/roboto-v15-cyrillic_latin-500.woff2
 delete mode 100644 public/fonts/roboto-v15-cyrillic_latin-500italic.woff
 delete mode 100644 public/fonts/roboto-v15-cyrillic_latin-500italic.woff2
 delete mode 100644 public/fonts/roboto-v15-cyrillic_latin-700.woff
 delete mode 100644 public/fonts/roboto-v15-cyrillic_latin-700.woff2
 delete mode 100644 public/fonts/roboto-v15-cyrillic_latin-700italic.woff
 delete mode 100644 public/fonts/roboto-v15-cyrillic_latin-700italic.woff2
 delete mode 100644 public/fonts/roboto-v15-cyrillic_latin-italic.woff
 delete mode 100644 public/fonts/roboto-v15-cyrillic_latin-italic.woff2
 delete mode 100644 public/fonts/roboto-v15-cyrillic_latin-regular.woff
 delete mode 100644 public/fonts/roboto-v15-cyrillic_latin-regular.woff2
 delete mode 100644 resources/assets/sass/_fonts.scss

diff --git a/public/fonts/roboto-mono-v4-latin-regular.woff b/public/fonts/roboto-mono-v4-latin-regular.woff
deleted file mode 100644
index 8cb9e6fd8840b38960ce4348be2652ce5f41bcef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 19592
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

diff --git a/public/fonts/roboto-mono-v4-latin-regular.woff2 b/public/fonts/roboto-mono-v4-latin-regular.woff2
deleted file mode 100644
index 1f6598111497129d63a60d571c0dfa83296f619b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 16108
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

diff --git a/public/fonts/roboto-v15-cyrillic_latin-100.woff b/public/fonts/roboto-v15-cyrillic_latin-100.woff
deleted file mode 100644
index 4eb2be6a10c5dda5e7c71d396434949aa58881d8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 26292
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
N^2HcS0bxcSIsncr-JAdb

diff --git a/public/fonts/roboto-v15-cyrillic_latin-100.woff2 b/public/fonts/roboto-v15-cyrillic_latin-100.woff2
deleted file mode 100644
index 007b90e85e1e39e309000e293be027e2cce5bb5f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 20988
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

diff --git a/public/fonts/roboto-v15-cyrillic_latin-100italic.woff b/public/fonts/roboto-v15-cyrillic_latin-100italic.woff
deleted file mode 100644
index fa7e51bc8866f0a22a6b882a5eb8e88f0a1add83..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 28336
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
VxEM<}@rwb)^2HcS0bxcSIslfA&%OWv

diff --git a/public/fonts/roboto-v15-cyrillic_latin-100italic.woff2 b/public/fonts/roboto-v15-cyrillic_latin-100italic.woff2
deleted file mode 100644
index f27a169cbef1348efe7900590296e0152e6aed76..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 22752
zcmV)0K+eB+Pew8T0RR9109fDv5dZ)H0M1wd09b$k0ssI200000000000000000000
z0000RwRRkV2nJvPjQ|Kl34=Tl3<`p~1cI0V5`t6#HUcCAiX01t5C8-q1%g5cAPj38
zAh{)Mn^wc1JAgy<)=OW5H;<_T-9fL(gAy`3Lc_)Z1Q}gQ_Wx%b9b-6F1CTW99XjF?
z6v!Itt1vKQrJeV#G`$u);BeCs)TM&~clNlm`*9kgl96N!S{Fu8rAguai6&d_lemj!
zvvTL3x<5N+q3l<rAs!NB96J7^(Ua^DT|$zn^EVT_Po1xEom%6@meHqBnzSy{GMRsj
zD_NO=U1l_596AHsNgNwJ6``m#tY>e6AZf$GMzip-q{8Ll0Z}uPK{RKxm%Gcw47>#K
zU=}Qtgb;!!h}8wDJJhI%LRG)1%X>{;^#=HB{;4Cfw-)YQTDt57UGjwsx?n75wWy)y
zM*s0o=6U-4p5NL>?)^wo4UNdp3>EL9+PY~a6hdJ-p^=z*+y9!bMK}h<koFdAiUz$2
ztz7&6YEvi7xxP-lxZuUj{lGT+r(Sh<cRwP%%yQLk7HgKyxze?PURsC&3I-R&;9O*|
zAu6OP9pM9jF+(9I<UA`m??**!>`0nK97BwR8ud2;!29jXwti+sk=_Rk3&$Cpcz;m|
zl9M0`FG#!c(c!RKNPv!8>*qG=jmH>w|69|1z4iS+U~jzW>}FD33rM$WEX6bXl#T6>
z7ud3Y@jBD(87T1DV^0J(gfD3c61;HD@7wP+vAabZ;^W&&=9#%+a0OanTj5D3LKTE+
z)XeVwzl9I4NudD#6CmIp0-Ce7%$suViO8amCuFRc&Vka;LbLpog@u`abLx7ZljKqn
zDXkBa+uPZ)=4F}q1;oG42j3l7x&vebYJl5;3%FuA<v=dTX$_~es*{u=xq*9X8<R0p
zuWwI=F~gQM%NF~7zhC`l_6v2}FZG5<BSz6Xi`n5t(#1W}BGb*IC9zBtOYrdD?46y<
z9*3|aBja6uSYM-hszNl&u!ntE6xwtSDyQn7s#+Y9|5Mldtp*kc9Ko@3?WRMELn@1>
z8A)?i8tpR(HUSPX&b>3>xf1UjB-SB^D#ZVP`G4EF{bltK2S+*}&GO5^FwCbvrY^|V
z@9xPDkWDE%bXF}sv&1OS+0Hk%rn<VuH&v=mRs(~pB$SK;x%fE(^*01Xq}C|{;Q%H2
zW<scfTIVLL+TeS<fdn8kymxgUmRN#Ge*@r%e|79%F=23NAEjczMZb;g_09Z}cCd#m
za#>_E9LAVM%pij)&9riv(`F6S)&+;aq=>*$pn%`IYdCAj$(!fBXKf<}1cEJi+P4(}
zWWuQ#ZGNQC39skJHV#3^%Z+^pBmRw^&BKs|2H-!JR<KP<CZz<y0~q{b<1l!wD&(Uq
zjRJhOSk?m}Rx!%#iVZ24hVg=s5=a;3HZ~G#jYC2PutpWf3_!a=7uFi<3B9Y@$8w<W
zU?A*1P8ddp@ndge-{Eutm^N6~;To3MhuC+p=djP%|9RAyKM4Dd#|ZJ)fN(9=2yP0m
z!|o%1g3`>Lf=HLW$X>lIvJ5$lqGG?J3Q%6CB-BmpJ9G<r2IDz0u<tN<jKL*_`HcOu
zKFP1f3amBeHXnkG#3AvCpuyS&R@g*iab#Sl2f|+&$CbvdLZUMT`R78gWvGSD!S3gw
z)?k{h#(qzRB_vE01~?QF&}V|wkU#<{C}>C{_-YJ7MPOkNMT{89q)2sF(=y7YW0A+3
zO#xqpj($o)y)sVzDjBRg3{k62s0N1X&It1usXa7UZlfrhFH5!6c4>C%kl}!%*`c3i
zaokCH&N$2Fyo>Byt|)fh4P|b-!{MI$D!lf$Dm;(D&>)By%^?u2F%gK5NfC{oY4J~x
z83{?KISEgsd5KEA)+8p$(xlXdmL)Al%VUb6mC3EL)v+964H~JnX!p656;Zhm10$_;
zYMI>dRT0Z22s9lbi?aQwoi_7va7CgoZ?vl|eaTu<KG@hfRJ1EgsHsnFJsRAwwWM}h
zEAxqxT={PMd63^!<gIt!`;b2N0^(l=3<3&<C&PI%2uLVsL?mPs)J&@{y!h~EfqEj?
z7Qeg!OIH*X+QgNjMgx!;^+YQSLSkM4L0wackXjRCap|RG_J#I1R&vdA_o7l$O!j*m
zQj0LwFS9M$w^&J!d55czi(Al;K`Vz!WgU9jbCE%@BSp^g!)g~Hq8pIr{o`N%rT_0l
ze839}CCU9#TQzGv^1;TgVk%u)>u~~H`8K6H?xp*^u)HS-NGND(GtmCjdhMZNEhV4W
z*i~qCBDuQ2At0fksR3vu<`D!apg^^FbyS3KNI?V=G74(a7@(o-1!^033&W%X3WY+A
zMyR`#Id|v|I8M0U!i_#V;`0su*6JVUzj_(M3bd7>JfJ5=J61#@zZ7<ooS{N11T9Cd
z{3w9Jg3>DHD1|Z=D%IwuI?Y<?+Z<;|!MEm_$jh|@`-`bBcBBL;k`O5<sp*VcWK)>p
zFw>tb47wz|yk(W5N29tt2`!YhAiB`SEH4mr);_H_;e>^|eRjy_VOb#v#6pPO4-*BX
z@Q?%|pO0$6aqa>Kig8Y{L!}O8siq0W>S6pIlfBvIX5lsq%ja92hZ`QmL(Y%tLHv14
zeI(RF%~4j?Tb`0!qX#0~o`;tYnW-MHy!OUh?<$V77NkctoED9pn6@medK!F4txqjH
z((8rsATE!v#9``dBy3BfFy0U1IHo{%in-T=Uo99TjMZJWM0C1M##jiCc%l+hZ?T93
z|8ZiSOW{)QxJ(hsddaJMD7O+GH53GK^YHQ^PdEd7qVo}?yV6(I?XV#5lh8ml>q)rN
zXS;kp?g4ug;!t8Z#3B;>Fp*atpPDVl;RW`VO3top#v553KFj8SbFjm&<Dm?n=ONW3
z!O_OGPdMrG!yX{Se&*C#NKD3Lzx7g9S~+p<*O#%sw2lUJmT?eq2#z@FSUKK+lW^J@
z=i?&Ml`aJ8=tZ+kv_U@^S7c!M5D9W^Sq<fQBW}Z;xQBGV7lE=7#7G8BG&*P<uiq)x
zI$H-8EYFfSx7~5i{k{il8ToAN_upkLj8-_2TwUN0kWkRSeHRmI(*1WG3ll9)%z;=e
zWRMIkWmt>IXNv+F+KX@$Q&DP3(13Pp5gpBPxJoAwF2v=n+$O^vxR>tt2zVx75Kyq0
zr&0(60vU~9BV-iREI>lMA`YQ;U19(sQudJsrj&bz)v`WJ>3A8Z{Q4Q`0B_w`Ns$jW
zb`@GL*TLv856A0tf)uCvnk!@L5f)M+1dfPUyku!9_i$co8?n_%!*HFIM*DEXE;k&3
zMk44jCcCT#jr11=gTY`6hMYbwCPN|phjLNs_Z>Z>s&~|p5M|Fq<)~?BB}V$SQv&GS
z|CRWmDl|tDw49oZ8LFs`#ZV-v7x|mFOOcliqhh70r)^Vjyn6H+OVE~!`!V$<Q4OWj
zo5)V#U)^ZuU**J3I=fPrOm@|;V*Eo=+hod;`<Zf|Wa|yJg-SQ-Eo-)?ZPot_znJ<`
z`X_?U9&*5FYtyDBb=yh!UnME&2<nRPwTQK7eY9aAlHYQ*b`EvI1ZVy3l3QJsRE)GF
zbx#H-mzdH4+0KN@N#!K<mNk#kUR+<CpqP4*@j{uk-!cR#p_kdG;mm(i5h&rUTKqv6
zb#)Hnx|~n(>+Gv;b>jHoX6>f=1DyI7J|Y%N!t{ZSi*Nc)icV;BR$`Z^T~)!@fd80B
zo8Wn8vXO=Y4_(pphbnj1nvs^XgGjS0m!Tp6`|0$VN+jQZRhx9F=UTnKUF7k(01u#*
z)-Ig2uAH@&CXbur159ziemd7^zP&+y-&uY4*My#+9zT_igVXC0>ACB^JG!iVmIPvN
zb4?A&wF_9bK+2_|qH>7di9Z$9{B{3*@1BhxKkAMTWe<1DclLCvo`70u`vf3#d9vLW
z=e|Gj4Y(da=>9TKf~vY6IQ0ZD4wM0VWX`3>lTW`9&>y)me73H89}dd1-8|FQ?aBmR
zQYn8!?BbItRh3qRjaIlbb7Yz1^1HVtxq7;PvO+2r`n8&!dY)J>J?krfGPNV+ucqo6
zXgCpLKptl#>sA}{o5qF?t4v-#m~~N|ioIVeR1Q&nVT+-ZF5ABecyWl2yQoJV8k_;O
zLh;EY=nYuj928TGjC;{VO3$)OhxN~y@5>*`<<xQWE^9H3%$IThFHZU0+5W=gm(@P-
z+WuF5z3(OW0^N53I|kOTTL-kh?M+IEzZeVD0rHZH9UWn4SyA}L|8dgXRVLbBtKX|-
z6z)d{lt@1}*iKNcs-wO6gTmpCT6Vp-6g?5sKf)3ZQ3#*O8IlA9$}=gbrwR}(9F5Bp
ziI6IbnuV1o8{{*GlkWr$T|7W7%?wnpo1m%N(ooB-5M~t^VXa46&oEd_HOAV`I6E0{
zKNEB^(FrCwdwjC<E=Y0N6=`!gOJDgwrq@9ucj|_LHarW}G-<;`o01vLny#T03r7~A
z(5q1pBPke#kTV4cC5^C*LAW|o4WbAU4RVN~2(h6UapDP)Kn97D%q?AtG?0UlGNe<E
z3@VUGr7WsgsFp_!tF)>@XKt~4jSiwar!)$~!#u0WYtHGOx<THMMs4^)Xo|Ff5F1Hd
zG=~sE_`(-{@Pfwl)u?wt8s$x2jXrMB&s`EcAi?X9!5be@`1DdVzVjm%KlzOizxx}5
zfBcUF4?HLX!ayCix}lw&nr@U|0k<fl<sQ#?@r*ZE;uAj8)C!5-fg}D2AR>W9mjpqP
zU<4!tpM)M*5}pV`5?L@L3JHmZCNW4!ED92bI`Qa|h<lRIBssLR*?J}wUP(h2BYrWB
zv^lWv###wFQ?~b<ZZ{5*yHT+`%~f!Vp&*AyaaNL-ahyXEkwc2S?E?|SkU$D|$lwtL
zlx%3&Nwj6afOQ5HAdM;tQ6ss1pnwk)t~4Fwuz(y|MbFJ$gk>Oy<y2WIk*%WpT{Wm&
zXA4VhA}~vR9CQeS!<eaY#4!vzjgugQQ!}+rJA<*9Gq?ycaFNDkYFwGg;HFzVC+{M5
zliU2g-gNHf)p@HY#2F17#E_XF6N9!Gn3*im#e*DD*h*f8D(GsBBhE75Ac8vt12jn(
z-53H31~e4#0X@KwbY()4U9;7iNDBK5(8RoTW2ja36|WJ4eB|p}=W!5&IG--pgZisn
zji;H^kXQTngnXUn1_XQs%g6`|JvtiWKwt>l)A$mFBC({luT+{jQa~VhGqS6ZvU(?g
z{CF(6r{8!v^~;+)Am;z#|204bK<lF=RuJI-#{={~be$~&dSnBDjk}Yc{&`yyA4}F&
z65g{I2&rhw2WVl!fCb3GBpdCu&pDUf@x~8$UR)ewcibL#m&}S;mSwkmSM@q@UyUAO
z^f7|dAJEJ0Z~L8p4ule>w@rubcit6uz4fCjlwSozhpgC@x9nHd>bx(Zi_ldbz7FAE
z6_?veDOCeCKso$h)`i#ocl0Ch=L@zEZhQ6jup$NW<%o6PhVIr&FSY&KjDOSv4M4YL
zhev=Dz=u13<(aqMdGCXdrh4r+zx%_V{_?kJru)ag{_{T`W|$ceLMS32G+{8y>?nvb
zs;Hxh)*N%Ai(A~|5l{2tm7EA^kB?>Xebd_={X3SsuS`I?M#`!LS)Jg7Sd&m|t+PI1
z@weg4Zp~dZ+zm!2M(Lr%Ca!N++pi<>IvsE@2@W~zh@))B?vw0zQk+O?a--!^w7H^_
zjASP3-A=k1{g_WDTq6a*`Iaher0%Xu&|gmgA}|CPV5PhM7+3|Y0osAJ?!70#I$%H0
z2OI#7s@np`;B^fg2hIa;fD8D|Q{W<S4fqON2W|kPft$cx;5Tp&xDSj49^{mS@_xEJ
z9(WGC2eDoE<9ic;kH9yO0^mFF1DFW>1pb0_z&~f34E!f~f#N=33aA|90H#8??1<?Q
zJ||{E__D~XSKAo_C<jbH@&;4HT(E%T1Ezs_U`FHs`GQ5d1YkZ`N(unWNL|5lQXp7C
zECMS@L0}cI7_8PcpkT0;SOV68Lcwmj2e1_ENeTmdk^I5lzzVRB7yt?f2PT6oQ*<yu
zvEUFr23QS_wI~jpOte+eNdU!zll4?!12_$o05<BGz-Dk3DG{6vYzLeAIiOO>t{`@R
zb4e*+GqDqF0i}ZT^b%kfxHPVuWEn_l;Bw*!*g-Oaoxo9Wg;)(r2iGL)Mxp3>#8qpu
z0VFfH8_5Lj4x9up5*Gufz@5DVAmrkW5N|Tz48+^SI}A7n@vh`OV^xd~0JsA2A^oZW
zS0O%3T!;7paRcIa#7(HUg}4QkH=N|Q2+3j<>oMxp;>#NUFxF6Z0onhLsi!{)ZKPeT
zl)IDm@Sr=+Q;s_7lLiC8H38D!6qQO%$XnVFem<gFBrum5i2*2I97&Iilz}9|W)v7u
z&AH%eCj*5aS=+sp3ePw9q=SR+nFk(xO#$LSUe?(|u{3G$bofDal#zZBW;*L@l<@l8
z=2zd1%U=d#m_I5A*~nHn#RW7u4Xj1U^BXyKTwql*vi12w^Zlh;sX>@!BUX~jK64;6
z1%&!}(ZaxTiuZx9K78_Ues4o?>t^ybKPVeAWg|N1oie3>UCT9Kbr$L}iVX7uDQ|(D
zC^pcw2@>F6ozzf=wywZCWN$LIzTt4idFKPE=S>3!zTkQKpW|(_M-9%B8EAUHb1=11
z`x|qxhfO_BGffHuS1@=S0K^JFwOMv2v<3p_!iWLE1guQA@xrJx&913eo(S9#xKC#J
z=(~`z<he5iJ;jAB&qs${DsI*Q*BY-VQlvw!qD4cZX8cn$aCFYIxeYZz@|X%j&7DKX
zIxS&=iqVYh8n5*(sS(hd`;ZL(clakF)xQMU03tMwa*3|0kvy<*yy;|7s;Z;YoM;jw
z>n@5c*|B1D35*cd>vx7@C&bojEq5boHI<QVQlca;?mUU8h2(^fe6v=n@k`^1Y!{n}
zw%U+Ou6^Tb=k__XsFU21ZTt4^w~H%;yz*MEf?s46LdTK&B>j<eN_%E~IbRgkgHlF3
zdamT`h}OMUjU(CalMs~W?<zhYdhzJ1)kZkh-egRBA3{g%jZlK5>cgD8oV^#kvaCHy
z<BaBft$Uyz&Rgf`<YnE_NUXHv(MQEHMsCCgNm^1^e^kUoe_uij)>uiYrRCM@hh@5Y
z-7qPD(7yK->)jo1e}Yf;NJF78*KiJaEZT`hA~sE9f%*u{qB7PrbUWTm3i4OH>k$$Z
zN@oNix=M-7n(T;`Bq$$&Y{Rio8{Ox)Dnf)bN%l2P_@h3LemVL6t0AB^^nPz{x&MB;
zk9-{RDfw}5{L(7{$dp4TUpgf0t+DzdGtUZ+Re&sSLXe;o(r(U~b}+jd-{|Y&f8pHZ
zp74LB9b}i@(q=sKy$TC=>{D^+-t7F`v)%r~BRyH6yDA@!WPY({e!^M?355Hq$f$~Q
zhrYHXu1{A%U_DQ2IkxQUGNZzApn1{5W<!jGY9k13HT2_6(vx)5KP{;_+qmH>^SOJI
zK$w9%!yastvMEVp(kv+hm@1r&K+t9t@i7LX?9FO2!a^}NEle}c9nMt^l1oKEddy&f
z8lp)I^^h<}lIZp_C_@`rhp*dViqpPMVLQRF_`-h^9ZaXIMG$!EaJg=qUy05g{jjrz
zBiT_w852n}ay^VkGAot>>X3MAh{>zUr?r9O<0_&ai8o-?{-At+z#1`xdP^vaDihb5
zzQ#>s{=%&~LOE>vQ@<xU>uYCMTteZc(i{>Eq{eVGogl@|#F5o9wytks8Ig!=z&ecu
zYj<d;GfD1nsoDm<X6z1gbAu)}t`BD*vl}TXn^}VzxlFel)`%SRyfjoOZ2)gXtE_>J
z{46#Frh#g}vS|>Pvk5I%PW3T@GMpdEx4lt*d<-gOp&^YArUQje=He8^!-@k{jGR0|
zV$Y;iBJ=BDNChe^Q1it`fV$VU?{MzHE<5biCBYXFU~9IowBV#A(-HaD@+1;|*naT_
z@gN<KKay~T9G4A=1xmyesjEaNj@xzW<vTH$U~kFCpmgL>jWojJE3kSTMyoiY+?HS_
zsEj?t3^l}fn!sWfQGCkqK(UPk63{XXaW5PQ!G55NsRyf6f!>Vx611g^QmzfQ7Q9CR
z4*k?p6-BzntxVS1faJUr;zEUQX$u$h>I6J1f|${pB-wdVzHSS_hZkal7StJ;wRwll
zyqDqt!?zPIPK)oz8rj76#}4=L>q;rz9`B|n5U4^zeIxtn6f4O%i!5b9Azus1BUjNv
z9%$cPsUe`H9F<_mX~eo=6m&)1R|U!9KKf1ZwRZ_rboM`NNezT{gojt)lv_2ygdr+E
zNqrR_WZ+^cG3F*v0(`p)i4S|vO+w-+C?H)3g$Xm4EHc8y0b}CJhfXEpy`Mf7mOCC(
z^(acr`E!m!G&iK6F$0_Fx>95IGtVI#!v+KvsdBe&uncY_Y@0#b^V%^>`H0~WPYsvy
z<pUP`FqC_3gg#iQIwOAcHF|u4FQxuFI}rz_2g2BZiOnG|x^|dzE4x`qo+f9!-Xlmm
z$#X!cug$1)@KHAURS++?Y*uM)qrnW0mKSN!T1khyvr%*Id>Eq)G?iMl*PhnU$GhC?
z*56n1MuCQh>97NAJDTZG)({vVip6`d#)kw!k288ZsK|$v7hlkMBxg&jhomE>{J{y=
zO0`{9G}*`@x4|2bI+v>EJ4|q87N3|iSP~f2Pa!;`0ia2EM_ZY&(a6d{y|bHU_Lz0^
z1oLoefVj7%+Uwo;wzc|{sON4WwApuu&Re8Tu+GK`(|#)A7q!*cWl1$iU3@uwaf4v8
zL>R&rlNhw$g=Su;(<KF$i7h~ph$fvID(%*Jy0dKLB@Kkmh^evcoo&H~{VGK1ASgj3
z<&2axX3|v=>vxHihBhc<4z>#&U*{fcl*}vzgu6eO*)+-dnA$3ik732^xkoQ7CqTJ=
zno5O_*@Y=mecKW!HBi+N4n0~U8Nw*<G6pRoq<mI+S`EQS(L(}yZ1z4}K6c%%pzmI=
z>I56Q1hT%tX66401$SmrQY3vK=!3uQ?j)r>ON);TmLBR49$f4ns6=*@hu%uC%B3L8
zJzYI#HeNCEVpC+WLqTi5g(3~4O9L1}!0iI>t7^}hc3a3*@$4;s;si;Q&8C$4Llmzx
zuA;PXUUNg+$4U&`y2PXG+GNto7MH+H{95m0I7P!;O6}2wVsMj8I*<hwmO3Z$b|uiW
zS>0xZ>cZzM1%S%DNOE)ew?C>`JtbYo>zHl}<77bbC8f=^0k#Lk#cj0N`34^RP^!~f
z!Z?l8kWwYVcfDccIk<sNSh8sy$P-u0-s&u<{Rqj%d`GcMNEKxRlSyDYW1%GLuM%Sc
z-#&Uvb|h@?A=wGN6F45-Ci~y(`fwlcG4lTYhVZfXTOZWdX_y)os5u2cqm-2A&QlVh
zy+RK{2^5Jbt52&YrEUeEA{5uW0tscw)0se6`K=}`8E5XWX|OzjSakmJ)1JXK4aJ_{
z52~SUHdtVrsnIM-P1{6sgxz$@{f=NLGev5N5`8)cD8YdBBd;JsiXRIjD?mVN#?ygJ
zX7T`hI0wB%H|lT-&)AMSq5aX#V&r4Dv~7=MS6#j1b6?{LH9<mWH6Xb|4kV~5))5lI
zQH9#phnA3hoU?YMs#*@7vP4E0CI_HEZDa>SHtj**$|m#|9SQeM>EfG{6{0mg9EW9#
zI{{YvRH$HZnw5w&;0;_5m&*-f@ksa>;IfG2FIg<0vUbu$?;eBOyw9_R*iM}J*hH1)
zFuh&1neCx{NEPrDYlE0VdTX}MTG_$XVuxsl82t~1^%dQ!en*#8&agn~9buIbIcTG~
zkNgltTGIRU11wPEQlS$?-WH0C9F}X-wOeHfGlrNpgoj#G^2163>lt&1ltY0a9ZQar
z(_%|TrBHM<GGUat6Ax5h8`$xNij-InwrmcEzTit|K7ioXr}fb>S;sCFT4y#=Fie-%
z;8UPvb}In|azhVWIAct#frg@i>((sh;ds=jTJ2K-BGTpAWdccsRYq<Ow=cxo!%IOr
zy{5=8YyekO6|Iu_Efi57mdN5;V|{1r4PNf8A<~U8e2&N+zsjxxTlc;|ph6it4CZn#
zsmwug+7#wW%LU%DtuX0abZ62Kjr(OnDgTkD3&+q6(02DsFiTX9POyDtBh3O=7%tgE
zR$wTE07xmS>X|RNDuj$fnK|gTmvWlh(eEsE)wee@Mv=zj8OV~v(6Eu(QdZ&YUZrXK
z55bxelYmg~wLvSPnXHqGOka~HbQ7t828$3kg#ne1m;YzM31&6t7Ghf@q7)RNpct)(
z8AwnI?cp=aaUsPCFM(wz0R4g>6C)@vQF({m`p!M}#;u%DfK~}65;(yzQf~1OwBR4^
z0PismfPEg8-v;qaZbMmK3j#sPHA#ApNq*7|1$!4|eV}o(RRG3W44~{}NEy=jPRU5w
z)BL86Qu8C#P-;hs)H23s?eEFb$^hC}vrk2{W?3^&AaM>O!BVd3(6Zvb)g79Z9iKOX
z=Ca6vB9+aW%Lm?b7@syqx4YPAZ&<?X6T7Dq#m>>1p6^XyMHd;hTEqCRCwvQZ+EDAo
zruv7Y{3Uo7_4Ev1a<H*ldxFq1Z|n2TVZ7)P64EMa_Zi<x$qmn490fOkpG+1@nC!%+
zPLk5lhP?Ts6A3XH!=$WEYX0=8_R9!UcV|=2@*-Lc&Md+TY2o5z;#FS48;-M12OP@d
zQpZW@7#se)vBB7Q>_v0XMzp-~>E_f(PlTzPi-~th5pM*}CQ=7s?&fIfQ~Faa*_i8{
z4Ck26aABqt;H4BFj`4Ha8jK5xFKi^mP%AGs45uaXaXVzMGvq%vjWk|2;EX@mymk8W
z0bf5psB)_zR_n&qojHzpVM!==67P;bVOrVl0HyMx;v8~E)5bISvk0D{Np88r2l<qK
zN7eW0N52X5GbqZYZu_aWm&KcFByU;>j6nv$PdIilE-C5W1x`Hg;O`<~VK*A-#N@;M
z^-MCKhRHB8co6nF)ik=?CVLcnz~3PS8$7YYL}BJH3r?N|*SJK}vM{1_C#iTz7e8%4
zHR_VHUAdBY)%7dj@^vj}!}S|Og7TLXo=nT&%?GF%!XpBh%yaCs{ExZen<B)Yrb~aW
zq${{WiEoWFzt2;F@Kq5~lP5SGB(}zzJ%X2_B8~~E%M#3~b-~#7%8rbgud|K`9Kj)+
zQEBwc`OzV#K2KA@DZCY^F%<v^JYnNaskctz4DxMU%4)XG3Y`?FZC!3_dU0K>8xUJS
zejc4(y)G~zFnw?{o&$3cqCh;xeq;$$3e<KlH?_T76>qZ_ox<Fo8sE4pFh+>&n<_k#
zEtR`U$rYT&JYGy&kMQ2cB?Hv<t!o2=FINQH1=_dA&U?qG=4^dpeK9VhGs{Lmx^t!f
zZ2kpNPkHNxmg-}1UH|-)%}hDxG@0f2OoKV2Y|D$J4DtKlU}wg*?jTMBh@P&6mZH7(
zz@rp4HL)$14VqD7VwBFaZI)nOq#aY=#X~d8zCLv@!}u1NOD!&Yy_XTgT`q8XPbuQ9
z)5#fJhv}BV2PERDS>$w+8{Nr?pj6n;jFTZ16Ej-N0!(BoH2NzvHF!AYtU@irAU#Ub
z$>}_$3<d5sIYVe#?9Oi1dXU=;C6Si1wAy$iS}}Z%6e~E4xIGg$8Du+++5$+vmaQjG
zgbg9rgc=1KR+ooIA<GC#5P!+kT2<?-MZrpe;?bG<rgu|u+C2vdtCW|8`PB;ts6kY9
zG4Oo61e`h);&d(x94&iW??hgjG*p?*Pm1(PD5)YW%H@(1!G_R8)8$I9uuSmf!Q)l*
zOlT^kwrz=p>TWsdTKqcIA9%#!=;<-7l-P<k`-&_j6?#ucuPf)tJ-EzCHT0?yJ(-u4
z5gQuddIKAb^-N}Y<!tmymNO(e9`7~Qwp<cuBSq)$fp#Z1kCk}w9ej)4X!_X3QvCw6
z;H<W12fo3DU~X3j`~7}}UYP1qwZSS8VrTAQR<QSj{+2%)7K&WS;73-jEV}lQw7MI4
zc6m0709fbjSg)N}gX_f|k)awB*ahf~zSH8i(IW>cCLTNt*cLbG(pmMcYcO*Qr~l(2
zx2DtzxW5+K#(|6OUN6sx)%<X3`sK9lvHl4I5b5Hi*2|Zr=)62955nPO%nk7M9idTL
zR{Lm%NEWSfkCH8XTHw|``9geC{@nK>kq&|K`KjS@`tj{|UBXR*)f2s|Fsn?{oE4oL
zN59|9T22mnQVz21VlBRTOx!N|&E;obQBUcJ^{tyr+~=huRMAQ4OK3x5aIW*E{^<B^
z+zp*g+aY%^uMm95&bWgtf;r)w1iM5}?<mL&4uIe;9DKjA{{NBoDmbAIax^JKbl}l;
zAH?*y<dvO-R#~<W-ih&I%SFa*Md(5Huce&_2s@JzEJhUjs+q}To4F&-YjF1ig1ZZ`
z#ahX|5S^YAL$o#TzIgy$p^u(l8o#d3^!N+2LLlcZf1Is&XK8I_IXE8t!q*B&yUb0$
z3=n1~fy6;Bdywuj_m4zc-(;=_dh40Y9VBFK_0&t@B>-!OHX?@C#d3OIzZPFs`To1p
zQ*Wswr-q^!W1gJybppM<Epb)M$g`P#m4y>-P=<;i&m@iItM1}!zdH<oKXg+!aZ{wt
zdf*Q|Ccis=t{RFauJ}V&2BCkFuIS=~-*E!0RVcaJ?1)FuGO#t)T4GOpb5RA|-kP_a
z6!92R401YN<1?ajr;lKIMYdi*E}VZob5GCaC|>eB+6ZLSc>euN@w>uNoWz*yZLGQJ
zkKnN2K|U+9=fF3fiLQ&S3*CPZOOIcLt%#o#88~(JG_=@8^?&h0p6n+CFX0ot_LlgD
z^sS2k{z=Ha!NcfR5z%zJ9OczK(DpXB6-p|9?X}x=;@Bt=#+$y;{;yh*Hj%!aGiy2i
z`lKC-=gE}7@RO0owFFOMcx~5nx7?iF7|$(2D!|{fb8Vs*Q6rs7GrvV~pH6I7{$#v%
zp1+0|-7xUhEC1=Q*Mge>|Hz&F^Sy{Fr4$jzK)YEElpw<an$-cbv^5>*ljzz**@vpQ
zJEeQ6ZjX4&(5LRu(Y<#>*S0<`Yzlspz78dv(|ucxbyjp&WQpji&?XGYU#7G)i@jOz
z#byF@QP;xxUWC3Eq5A8}Je$x(Yi#n?n72r5FCItjOltedo+2M>GjTs(^w=P3$zq8a
z^NO=$=xKdIUdo9HQW{<CEe-e{;p@#a(KMs?u-`?P9@=>ZX=j6ttz=~_ACS$g@3CkU
zw|R;Jc6LgW@?1qz5OqEK!4HgepUkknt1NLC6jyw_{ZM`IhK|w}9bf~JqE8=bHe&R}
z-$C4HQBJ|n6AC~@s|G0<{7vE`_h4Y*b}F~FskG=$l@QxOsN|Qjqkm$Nw<W+3&NR+L
zz7@|0f8aW29RYpRLg6)hS)_p6!rGgZ*inB4FVSIu*Z>0dmsp0LiAfBr4KY3gO;stu
z8mhngg{O5e;fP3$g>>%|`L8<V*zWK75(d&Z-4BpTFM`G-DlT<P<^obJA5`7-^Yi3h
zv=7eLL!hJPS4(zg@8VTVAAqgwm@Z!VF-H&rHJ@zXwu+V$>L~;7WhccC#mR)ml?^-K
z$Wb%TJyue9WvKDFI_LZrh$z)Lj-Pi9=)y_ENROY?oQ{f&tev44rJ%Ev+@)&A-;|O#
zzUsC==KQq2g%4d%AFUt{<D9TAw2JZJY|x_W>vd{JVb_#fJ`&msx0SJGXfqPKp**Y-
z1B1>4&+|76){Kl~gY_RhdjBC5TwTMPB~VFA;>A#*!4Xs23id#vRFKpTfYG4J+z0*4
zJBXdj3GN$ddw4}=O{Brhb2pGZ)fLsk&K6uM&bgRr81MFqQq)$NnY}j>rIbg6>e=Vs
zDPyOXXQ5MgtZ<IWvp{BmF#$7SVev8Hpd$Ugq+FFev;2;K&IK@i+5pYTl)Qu<<(fA3
z^Q1t-#9)?eZS5m@7P!8W%E7@VrH^s3NH&u=Rb;i?#hP`d{5#5U0xr~t85!jQ!~zg7
zNQItu5zW*^_$7sef=c!Krb2bn$Uw7YsQfFvZ&f4}RB@pkv&1JQIT@8X=%jHzZs^HN
z7-JP!SYmVp$eTa!#%-XwCeH`AjIWxLohpAr<2PqnVf0D=z;$>cgozL1Z)p1AC@F{;
z3J6-|NrD<3kDyeI4HdNie#Tfl(n2n#RgDgD+yA^|%pGacy-7(J36ygSHUo$<w*l#O
zQ{UZ04tv6wHA1Zv?-p=hwaF!T{NRlpN=@x~fK+}R9W8eR1eTtQ9g2_(m0G7a@0n0D
zbNAf<c4#%5%`mgGIz4%%E>kf=*_dhoD|ogeTh7^@OLbCs$V}MEPLVxf`WG3vM7NC=
zduA!LLgGBAuj`!~#FYV<xb`w`_6nOEAkuMYRHsOM=`6fO&VJU?HMrM<%cH|$I<l*a
zA$ysDf^;8Mskg!ZBbV|65aw~~hr;$q@*VwQ_&AxH_fMU)r7Gq7S7O}M|EynXW=%dO
z4Q`8bN*n@`CeciNSVVGCc+Gzu(pkCR=L_{O=Tzh-;q*vH>a!M|K-JOIR8_}65QRPm
z;0a*iXF>nD|1uDr(E<>8YPfl~4gOjM0KwIn^t<8Ne9suP)#IqF0p;h^&+qRX6~h>M
zmO9l*I9)ofxc%Ouv@zBTEZgEJPs;bJl{564!S@~0Vt#qaR*#_9-l$5t4T}Et!d#?m
zdM7#tZicp!{Zi_{+c}Lu8nSsROZjr7UTMaeg_oBe8@tEXBKcU3=Z3BsuR}DCwN$js
zXS5}TvcF}m?2QA6yQ_d;Ymrolnwj{a9Q2018O<RIW~~+@^A%-=8W68;T53njbGpzm
zJk}Unng2`ekyfFuZcwCQ3Qu(dB~$XTX0&OTj1Bp{KxtP$8=T<h%?ft3^YY6n;OF=W
zR(1BW!Lfl}(b2XRZoc500={I`<vBN!C_r4*GuN_#JLK{K>AHKfop||2j7*{hJ9r;_
zifziH?^}B56-DkQqbhL|p=%%40^ll|PL(7rrsUoiEGGs-d4}80+K06qVG6E!_}>Sy
z(pmAo@-kDaDwg}~^GA-0Z@&D{-PM1UZ=8-YF2nicMue7~y(~I<^ms5U!En9xVEl2^
zhMTeT`Dx9A8M+T4RA4aCAwRcaqpx=LT-VL;MMo36I~x}FHsh9LUdX)~8n0TM)ssvU
zsPw{L?JVy<dT!bcGk{xu^?9li-MEHVv&^4hf@H$zl}U37?@vz&!vr9iNt%6N8e|)d
ziPO`%unB_{5OCS=fi^XC-Wee0%REU#{|Qp?XmPzDTf?`Re`RPVE^S=A_fl}jL2z{S
zV6OhZY`JJ5+ZBPleIr-F-^^2Uyj%jSue?I&YM9s_A*8tNrc2u1+5d#L0YaqlXuD5D
z@7oITRI+gw!Lc!1)veyl!BISnUoHzh6lBmxG9;N7`e(^C9jSutMhSb+OrFaWzqiPx
z$W%zH^73ucr449&Q`59fqP!{dI!ww_A|{d{0yPu;-0*^YTmsftxKyHl`%Hd8_6V^|
zJ=hm*8RXy`J2WL!Dv%Agg9n7O-9hoU3;5FL23nZ<s!v32$+@VX=h}#8aP`$6@$Aye
zaXf*C9vlC->Cg2pD4~mX_vTt5`fk(j{RqGb-LzYW%SG6<u{9y>gq%`vL{b9Yix4`?
zse}&WjML=c2DYX~pzzCHG-n1aWIQW1Cc25lp=;q!pxo*5mNo8K;?o^49<f23xr=iQ
z-M<V_SJ@AO$Y}3uH~zWS1!IMHcxRQ101<i<-QSSZ>ZCu_W9n)?3+h=XSaSDIoB_7s
z)ge6>{^dgJLubGjKtlDN<$&|k39;0|PSZqHYBSmpj2F{ps^i0O?xv0&;4_R(cW^-f
z-a%seG3<1XdVN|zkUxod?HbOvqte?ewhHe<@NF#f@r$c8<<GIy19U@7>B+@)=K31P
z!z~!8D$=zw^)8KO2S6laE)%mB(J{uKl~_vFd5y$~mKYxoqCLUk$eyKlP5`evKnv^7
zjSfvo!ut_IxJjn^BHzy0(4HDG{UG^Hcr${<2~QW#3=dvwI@PZyIXotnL-3&_cI#R5
zn*^Z^aDId7&r8yg!E~f!l%J<B*PCFAvkr2NhggIPJ$uarJ#BYMoV=|am4h(`nVm=~
zi|u`UR(2}BRUHG=rOuV!{}xo~BkCJ$sc~zcskfgyBKY=msKiBy%M9@29>UI~^y-#+
zXy7QQ8}Qmsk^K3sd2^)5=@`ehpmH8i5Wm#o0mUbSnxd3!IoSxLUHokmsOX0=ka5}0
z=dRPrNuh#mtIOQn!WCL2F@(Q)ZDURe;lT2Cj_v9^0+mumIR<+>#CP@{`6H-Ke0pW4
zNi4Ip3eKC9SpT<#5Ud9$Fd%EGU%Zqd*>`>8SjT}tCpn?&PAlh<egw(8*mFFo&Ow(z
zcZEY<Mng;!+T^E=eGVa7EG^IeL7NXlI*8ut8kzYLp|CoE@aAy&=1A4T8kPL{d=nMQ
zTuO9)9~0DbI<y*o9qumoPJDg-D5kTGHEpS9UpmGFjo(raLdGCtNl{{}>MCC0iCEm0
z2N!U*q+9ozdIS2kmHSWMe}^Yj#s#1<!&pN%wRF^>GFPZ<d;Zx;x@O=S^x}P?DWPfp
zhnKvyY}}u}dqi~VvdcJlO}JI4X>w~2>J|lHrGq85&R%OsZS5u|L`yqI&WM<Yts1cV
z8;o)=CRFYRw92jh=+FC#Me;^jhi$xxSR<pf&SJAnv~hyGw@<g2O)9}HA<qMx4W1eo
z>vJ&^r)DkWN+unFm_~n0&u<zyNy``Lg3q795j@ZaRtR5qIIHGbgK#<^Qu|rapV!a|
z&a>e@YRSwWt|4b(>~YR`r|-%a3C?gQOi5RJ;e1a{X?v-@xJKNAaJtKJZ^+o&c7Y;l
zR9>-h@Avz!ZX0ZG#^B5mCivLOtRI@QLN%9h%CG=|YUO`Y<80bYj{OsArqo>wdM$qP
z#8G>iV$I&~9EVq_u_;$vI`4X972S;SM}87)5DYn$lwNw+7p=gX#+yD=#p!-2sQ8Ly
z1Q|aUc<zd8m?|;%)5@16eK~2{I3FNx`2X`~vr;eVm9dU~QC2t;>ZuYpVgSlJUXlp9
z!^^fuw4A*Vn`%;k0DI`Pv!yAicItssG+u>!YX1{v0H;G@q&_8EDELfKDT)v6p%WU?
z__~0E0)9{?<Y~x7f-ixTSc(m3UiZJiZ$Qj2W-5Y5NfypeAa<a4z0_Iqk#XDX?Zj4D
zvshX!I1f*tIc4E1!55*5$CUmY6GR(;4EQS>cL(MAY+DXCh+Q^4zf_gu3qOXe;T;Le
z7jbqd2V!CGKpN;Gua2A6Qt=R6erAW*WZMf_Y-!qE;O!tK>q&OJxtGnEhxCu_*C+31
zR6XYB5_~b>V7rMLFTdpT8C8!2^NB1MN$cjXxbD&|8Vh4iimuIVSJC*1$^lg$KHM<G
z!QRU2sP7!m;s&`1DcL2MNIKdl$j`?&-=F5KL6{B3TE+Prnc9b<Oi;$rfo4Xo{suxg
zQ!BcqaXTOr0GBj!id59tStGlI2be1ER?NzUNpcu?o3KDjg%=UKavJ6)KN;pb93p|v
zae`$gYF6GTmAi}c#n<?qzCDZM5EZoNIezoXAE_&p<l41|QCZM{X*lcw-x%8RB5(Y3
zR&mfG-BTv(exo*@VrfUmUS@bv#Q;F#nDMMQq8Hl01f1t`c_1?O&3<H=tIOM8e|%qL
zMr2;*_N^*{3CE@;Om5wTaY$;0DY8Th*Fgpo<<?p%PN%G-E;+0rS4Fyn8&_7RVTqX6
zT+S8{lW%|h(LIsVB6HGrZ&oMIax)b=p??z4kX%k(wO>cBiF6A$Eu&6?YbV1w9$)ZW
zZ~XrGm*R)|@qi)4)~9yYK~s8ez*$~QdwXncZyL`ePBgc4ynx1gV23q87|Z(h!|TG+
zA~Ryw?pF0I$y9Um3VYCg13D|xDcrO<zk0&>A&_WX!_e_MfrGh#rY#vS?pgc#tz5F|
zPtyW{e@+4f+s4{NJ$vk8M7}hbcJWpY)jN98a`kD~d1mSGY4%AV2Y51h$PCncVg0Ug
zfpMR{P|Mj<%Twre$!2?6Li6coL76w6-w>H3vnM91m5Ze_=Bb4gPW#-q_2qdNBm6fA
z90no6abVUrai4cd$MD?9tAXUUhyOMs9qK3S<2i=-ejBrV8^*=~z<+VDc9xk`0=L-1
zG*%NPGiS^=6lmp9Vu=*5Li8o&w_7W0!Z+W@Nv$zeKX0lUS1-@X;0*X>sxrC*S@i<W
z(gsZWp`dUF_-kzpl)p`|dkdymGsrLhl%eo+=EuD_xIjBKopZs<YO{+bdxfEh#Bh23
zutfhXOR&QK%@c0pRfu4v->b(3b-b8Fp6{XJ?o`$!o$y1;aB@uQ09_w#6WeE#A+3Qk
zFFey7x_9BF<e`oa5CZLn=+m3y$s?xxJd;ObPogt^Qe|TO?4)NbC<<%$4CbI_Qr7AC
z_&j{R6L<KRN$-SK8|vP)2}kC6D|^sk4R%_jL#TFsVG8O)qEO#q?UtN&dHs2(?)91_
z5Oq>X*mSR8wzh7p6}+k%;1@ZGvx{cM@)d*3TG!u=Y!GhgtTJ>CRleWISYZb}23LR_
zx>!mbNNmh0{A#Md^7Jd}^8f>T>d#=@@P|K*xmaOs$Z<LucZa=(_%`iP@rgNEWLun!
z5Ibv)DD=gL=_h-Ig+G}H*I!GP@|29r!+B6rQfPlV`e1yrQu54rntxMNOmF55_ksT(
zhVuC9L(tALkK}px^41F+pOFhZj!OOPyejQ(xiFiyFE3nRPYM`LjZn>Ri^#CPY7=xT
z9<rY9cCSf#68A-H)s~cEdeE1YFpYysoM(^{tab;Y1I#en+Ci((*=lMo&W)QJ!4C~U
zaoTYH)S?$HvqYrB6~B)29Nu_JaA!ux3A*agdJ-*K?wSSCARMTJ8eycN0A@xzS#9UZ
zch4H<WB{W9bJkA)=*KM?$CZyK6oT48*Iqd95GoYrW9OnZO>Fig067jddISqQB{#gj
z<>xNfPk_s(_OGEIK&0NaQp^JSCmC8)J+~(RQi)(BLy-Hwr0wKPFRc*gl9d%I=_~A)
zM_}=mevyp!>`f8M0Yc(%ZBgfb0WCr4nH8cjxJDZpspG5_tF0W-wO7?XU1ebEHcn4&
zTUQe|J&8Utkm2%a=j*5cL}|@Z7G8Q!wZ&f=fT2Rar0S`^AGnwbl}i*`a&fGgvPp50
z?|o(fIvK=3=be>HIIBp3zD8et4IH_e`>6vS#6nM^S>$+HTs{^?XSk?$!3%Mc^-*89
z58C$6Cyoj&Nb=B>4zf+OFmnG)cmL$B&jtsVhU;GDNk3X3edNc-(UVd3$L-Gm4rlyy
z;=oN!PY~N81+oW)KZ?>RSNRZyobu=xaHtWg)?3NBl)HU4D#i4J7^;F(7hM9jwnz2)
zGY!~aF8J(zP;5G(ZYeUXumOy{@i0gN00XMYU%(4BZc`3E1`&UOwk8J3{RgBLybHpR
zdVt`mgN~TH{{~FSpS8!wr7_a5^O?|3ZASY^)1%$vVJa-FW6i-2)L)A`qE5TrtW|q_
zd7iJHukPK#Y+Ct}gB)A^RCSxLHuGikrq(o8!F>L2*P2>b<g4Xtct1Ctj{C*!F8iw<
zZ@N~go*_70%czq+AR8Gff7zuju_8^e){mN=fz^kQ1#q@KzG`<nhSN85jdw_sR#7!y
zIr>WwcTbt6(1;xES`YocSXUm2*0wM9qJqY~Io?i;Bg#n(&v3e)H(zY~kyh^YJ0t2n
zB->|YoFlX1zF^@1r>K0g2Sir#ac9o?yIF5=TsI8e_UwtQ2(&GM<+;1d&Vroi!<)u9
zI78AsP!=5MSh)G5zk>8zrtNst>{r8DBLmSQqtgr73`?qNHV|6VB2<FRBZSdTRH8pu
z70PpQeQ!5e+cI~7WEmEok|?_ppxDvIFO@yL3wJ>4JdQ27W`8p*zI*->ZZIbC&r&-4
ziF^Em&QfbY@{G1_2WUf*G$&R^Y2|#CZ--|&7!By({CM>%gUgBHL1MmTQ%BDh6@|P0
z@I-01UM}NJ<xS|QXia^TTxh+)u-<Bv4l*nZG$c-mkP{ycxe6{IlRr1&f`j7@L7NA+
zB+mj;XN?kBi!khxecC5<z3JNCfjqa6`C%#@bPq@^PcTTJs{wsb<_6ngra=Or#=A=<
zg(dLjl0)gl5a9s|j+&Jiu8I^25Q9YqDQdH%kVO7$S`I+XdQL&0*O9o}H&<!mF5W!E
zm1$<<g)p+gnFPC;nA*4^ObG)@caxb9<H=sJW*|y8^|AZulAcAL&xu>P6ydyy-`qc5
z6GX}nv-xUr2+osMwb#`aoFbkaB^oyJY*wg^6hw)yJ`;RKe04W@$3hKmuKb^CwrFao
zWbidvgz8)WrQ`*P)%m;x@Qwyc1IgUsdYfk<1PXMluW|F>7tcjoS65GO<vV;hSOp1E
z95%M2gP$w>G?*@7Vuhcz0)U5=go`=8-yG;Z{_*k`bss6#{R-x&9HHLrg=%mvI8Enr
z0wWEa3?6CYFQui%yV+4{ZoWWgXEsV8f@mKGuC1qK@K-!z0>b5B_|y2NiAIYMX*Yo=
zJvVtBkm3Q?vCFHIw=eI??~2$;$@3Z#=bJ!!jNJNTK1YYk>ISY)cW-lcHS?cR(y7N6
zr_Dj{&EkhlujI5d{p^9{6yzP`p74vSxwZ0$;&=yBP!tL;@0@%?pHZdqqJHDMZXW%A
zQLtE4UQ5QJo-Xhti;P8`hNhJU$VY#KrlUR@2=+@}bsH0!lnqL5%Zdq-A8mQVrJU!F
zj9CZWtPjrqgbVza>ZLsSYHb@u5}b9Upnn20Q7?r0Ul1YG7R`%7lLxT43Kq)$0JR?7
z^8!LVibkup5RY#Lq~UQ?fI45BGFG~Qo&*Pu2=RP0O6ezF;;sn;A@=!ZTpW|(BcD%E
zX!+JUHOceEKT!DhCusFWcR|-n+x)d|{|}^{x(+9lP17iL0FpyCp=mS?7AgoKf(y+v
zhmq{axh0>R+d>_`II0w1evohF@S=<Y3q2}1Hjn!nJiNH5S08Tv2^X^njzQjvQO@R)
z&Mme(x3$1As1JC2jp7uZaPZ93IFobBpu3pOIDT;)2@DU4q|DO_uoC8JFq=j$<_b6l
zMV)6hYJV3EpM_Lkt4`RtB`wZvb{)Uiaq`O#GFuKWiZ8fTXED0Y*6CU~xR~>?f17qM
zOM34KpZ_F!s9yH6{0}mEQucM(g$;+V90xi<TIc9=wVwb#@G69Jo24@s+nfVykluab
ztAXlyQzUY3NxO5Ky^cZV@rI;803dJpQJ9G@NueKMW4p6Wl0`JE?1ji<64{+RapRE-
z;}J6pPGKR$maHs1ov%+2M~HEvK}=vvNlX+&#Z)mvv@lzdx`PLr*?{N}oniy4r&T)0
z_t#262*XjuV$mu+3&T;o=Z6w!#?_<Ol`niLA633S5+}Q{7C(rntKQ#VLl&QZKLN(k
z**(6&@ZMkfQ2z7{KtbO{Wkpt19*JF%CRsew=NxhNj-Lc$c!2+GJK+(ega)v=@5y`K
z!EtXDO(EK9)E;@a&abMGd8l=)$wT1)`bN`uxW{xIS%Wf;6a{;q23H&rI~q=0H2$O|
zD~IV9GY<E*0k0TP=NcD1cp9iw1f7`1RM0aBIqbZKz;`iyLtCnal+qK2(WTbI(~wH(
zQ@!Lw0rTZe$t6@Of{vtd2$uJwD>;YvcPRRZgBOgs6}h!{q+K|)axZ3`TE)^z&87W`
zia!wDZZ$I>)MsC(gG0i8$P>wW<Q|s|W|$jtQt8Jd377hhJ=g488tMC*2$y=z%kNZv
zvFpqI8i5^6sT00-Ef3eh-AO|<3M=kT<_e~ATCl9-)<4y~Q+H<x+RPa47$LI`Qc6y8
zPAGLefCX!>?(NuTmPUC$n2sz!FF>G16^lIIQ<{3Tgjmo7$#;9X<-9hwWiNhuCE%8F
zmQKx(9Mhz6G8>YS+R~_)*5}SH1g+2>X>7Q-{<qh5UN{Sq_xtY)25ssM{Gx@xt#^ct
zcP^$zuh+lE(g8}uN)($k3Y4z`;%tM$?RPr>j08nYk`%0<G_GSJUtlBsl|B;969Zvm
z{k3z{fU%i=Sl)l%rk`eimkOc)BF-X#hKGa;3Z%}S)9j_>+6`Ew1G+&2@Ao^HOML-~
zt!UFA!Con2Vib6e0%4Q-a4x6{MR`w30V@!qz*&tTv|fPaBWae)-dvrb0T0(e7E2{P
z05;<`1F*C0?D(J_Gc*T_TOnc1yaK~vZ-5<Gi#0ushY!tO2awf-|FTaH-R0p4j-!vo
zqX8xu4FoFyEPGu?uu>>jWj<}&cm>~aK_mh5Gx{L=v%x`QYwVl868Bd2i$<_M*=R1d
ze6~gPvwmNTWKW?zj|>-HaqCft1!jICfG#Y?TLeImKs<EF=}4FoC}wIKxCO(Q@fraj
zBFR$%U_>kh0mnGNU??~C+!_HZcOZ8=NY#W;h?u)QHzCM!C|7!z$5=ox;cj!T0!QO}
z7hWQ;)7~B&x>s7jh28BriG(X|oLM}ZsJRS%0qudF)3*Fp5Q+_MM=2rh{$d`1o3blp
zoJJClDU~~1L@~-aP_4Tm!TtH!31By9!=>tgqZ<Lv!$MZ7Waq7b@YLe1ZwNt`ZlM%y
z^k;U;A&rYfSP}aHW~gS3?EVy`t^~X?B;?5m-Czv`_P4uh02?6I1_F|A609=s*=a^;
zxh}R&6WE9`CeG$roAYYK$nKAiD)_Urhj4l0n;(HPAqAB?rBj@eYF%dLCHS>pc?s4F
zLT{)leh?h`_3_0jbp?&)d=?J04Q-R>haZKSQ-w!`UK)dU&So+FgXIGG^CUZ=o$O*y
z=O^coz>W=24GPq@I!dMuuU28UuB>5u+h6s%x3PlT^EIiYiJUmF3A!}QiRK_f-d+T$
zT^_0%1uR4`A4CDyholDUy1*Sy$=HZdfZ!5nXX*3A_+7v0y2HbcqXE>6!u;^c8I7)&
zACf6XWUdv(ilq9H8*Tb7oxdvZN1l^C8pRD#KV^dfnnF9D6mT_pE{{I)4IcmVXwOGa
zlkW@3W!qLRfjvZKqk5iIjjAoOmm+wdlaB=Cy8ZrE+MD%YzAi|3rCQ6gS7cAj^w*rb
z@!#+4;ZN`Wm+y0OqZ707_&o0(PoNRwKw)=taDzc$!0;A^n+(Gg=3pQ|*M`$gI$Xv~
zFJ~~$egS*})EWoBi*%jDAg&U-s(`10pY8(-@bANiE$XOyq+mk<wFwLW?`K^zw6DI3
zX3FsvA%mydC|VP6WBaYQG;CU=)YNS4TP0|P4QSU%!a_Vvgp;z335tX|Ht|-_ns405
zR>5U^ywP+Ta=|#na7jqU%lQToQj()4xIvhpR@Hy9%79&ExkeOVOCJTCGMr^h9?fzj
z1xW*#3f)-3x+wy15z9cm1ZN4UA-Q0La!*Cn9Ao3t<MO0*t2tx~Z&$Dv7vCl&R_5Ih
zpgRz~q5AS>Ra%9H0?wmRU7vP&y6;gc*|&Q*DNS<dpc@ubFB}_Cld*L&G9Z7LY8Pf!
zwbQv`j3q$`*qW^;qJ2N+9M?SeL?6oSPpYs6aGZ%EP>l<noOoRY*KJ5eyhBWe%x7Wa
zK><1s)*Vt1IyX}Iwjtzk%|?Yh4k-s)hyf5n{wYXmms-?Kt$QH2OowDQZ>Xuji%?j1
zv8!gHD4ptyg$SY;MJ)x9OSd3A&ZH1-MjZ0k9Qw#q<lat9<pEe>a^8nCC^HMhspS)i
z&JQ|=kgP?i&MmDV6<FViuzZ`qp~Y{(MnFYN34%CsyOj>(2*RFw{Ju*c3oN9GtrRr%
zRBO+=+RnBz1Q{JPFXgKG{wVG~Y~R1GUcdXB`W-5C7RB{a3xt1gx2AXV!O6kRLGcD^
zz5>3w?aU=!Xb}d$h85$R<;{?da2wwdHSdrXdFWfa-W6hDO)!p>9}jT3`8aL5in`LB
zl7NgVUawb}T?vjT?oN22xbEn(Y?bP|ic{W2M8hlIz2f+gf{A{dIM>VGnkVDTojXg+
ziaN0w=}sboKwK@I5hlV^kzPN=LqTFmN|4~m4Mzc|Rn5TzKoT{}s;&8Ow%Q1iO7u!B
zBGsx`uX@a77m##fJmBq-k?qr@H-Ma&zVi_EN4!hm$hkqKC!Mn)NKpmM*a0XMo%9fK
zniVHZf`gSu;xdHDRdNW3JwtjgnHXQQiikDbqf_3Eh8$Y0A@LV01q@KN^E73(jpS+;
zE)IUMScw)yBc>nB!Ws7`{$X=trZGq|b$xK$c>PlLq7VKWDyPL!N*NLI49i7JF(uZ1
z;N0R{lx*fnQtU7&HPAIf1QVA|{vHZ@+WTEA^dW9If4H^+6;?*NTct~->SeNT#%HAm
z8AX)ZJRfNUs1DeS#lX5qk-{zs6JtX<7>v<YRf6f>Ty><7x_W#d!?wN2lC0ZzTV`Oe
z0xf=9V!^C1%!x#`_zDw&38|3W*tSs6W(4gQ!G#>P;f(XkQbCWy$qGWEq8V*RBUCdh
zUAQ(D)v2)C=q^&{vx{LHP5;J)z!r`a&Ox-)sDwGKs9)n&+ofaMWAtK=1WLIH7bq%o
zc_3Z&;c@Lh3cL_chjo`R3B#Tfx|*T;23Dk2Ku{V9D(B;rP2yB{9AX!S4KB?aah;|o
znnZFbJ{qcC3!tL5*ti2JVu<s=-rfg0`lvat>!BT%ij(W0Mf&bPm+O3z{xjCR+i=gT
z^h|mueUp}M4D1a?tZks1>?Wm%C+x2vxJEZd5rJ^ewkU>9)2tm$j*^h`#Q{)>XvUwy
zxc{(xU-@6b33nU2l_VEK*}4q04g#rfhX9Yf526O5BP1vqu}19d-7fX|JJ`Mdcy|3A
zd@5HOb7manU9HI9+QCn&bn^Ue@OG5dtS}ugtEZ26PkUZ<<`)-&Khs(@|82D~QM11j
zxsV%Uth2}4kMYG`H(qz~%X1IIR6V?A%XdJFiLQkQR&l6_C5=+k*TL_?$5WD40w+S3
zoW?i>HBn~&dy-_ed7y5@^#9^+uQ{C$PY!PmUk*PGw};uVdZU$VmSJ$2WxJCU6b$%r
zKqz8cCRP&q3QG>b%+$@cm5b1I_pZ9Nw^8S?dnkXsfd!S<)LFCZ`WnD}+Y_;0_0T0V
zO-6e2f#Yf%b(Ee6;Oa57I2DBk5v#>nYEE@i9+1lv*D9^kMux`#1W~-^<>n+)wu2CH
z*Pco|fPbs4>$U_lWWrwO)dVcsRSWbaW5*)V&f$?+ItmcpS<q}eS`Cp&*8P9jcm6TQ
zT$&(&m4H*CCOaDHHK90Kl>j_NMPf=P+x0B!_1HASTo&bDGDP&kbj+(O@*Fe{3fr*!
z10Z+b`9C?7YDvTI7XzV9GNc!)K{)?r*-psv(eSajXU%vRm><^vXY1ZI+tRJo!Zn+>
z?U}s(VLc^X;#TWMIW>>mWV7fIJgs2Gx1s`35jTr~Ksyw#jld}Xh<ZL(OcCfA1FA{k
z*bfQsKaj?i5K1~YR}1BQLUkjRb&%wM<gHF2T#9mPFJ)O@378a+JmFrADhOU&?|hzS
zzrz_!a^64jk2mk0<i39@4xq%V9=gtCG)cMN)a@l9&~cB-TyPxA!ilcR56acLe#keo
z#ixg=25J^=@bc@$V|QG@YyHT+PL_?8(NchBr&3Dn9Iw5quC4C=qvh_y(ff9i{$OGH
z$E?ceW3=-qcw_l@{XCwGH{;9rF>c2!*2txu^jkgP8+5+hdAR?_H%N<rrze&;@zKbW
z)8EeFb62D1P14u~L9LqTN3ffnk&uyvJ*b=7MP)G~Lkgbsktg0V-B>e4=Zr8C#UE@;
z@(Q1VZ~K_8!6rSnzRxvep_M@`bBn6o>~fJ(^Uhf=`*Fo&nIY~x8)JIUt;=lkmh>1#
zXFNJGWCX;fqAX~z%()r<PPb3;<mhonq7Nrhqmh!7W$dK;MC&Qi&XCibL-tLx^6`E!
zad^{@(zj6|A@_>R1r>-*jj4l+Q|`NZz`G#syt#ApsI01Yu`^X4y-|iIO}OVt`pRQT
zpw_mMbUy-@42}p2n)olVU+V#PYtA1l*7w7*6qk^4-$toRYrf2}(IYb!CW`>=z}4tp
zOIx?9Dv%Z79q+-FEfU&8O0Wx_=iT=t&#tzDik9i8I)dDxRm#V#eQKy+=dI$M)wx2(
zm4*nJEKeijz%yi3Ai}o*)p07wXm?V?pkf5O+a{ioJaev3Lq92_XEaPrFD-9%a68?v
zr&@Vd)(4oC@ccn($ehM;@Tp*K?<HhFD%@o&8)W4$s}5W(J{1U32`CHYfvB?g6z+}^
z1zXoh5|Tol#}Q3Q3SaHwKsj_pW0QpJbSkLnc<QtYhDt%{W|C%?3A>^!3M3(u#$_ak
zVJ|{E0K;jnfYlz%BFo4TRU;gt_FWZ(Frgb6+f~sIStDdLX^H7UzX4F0Q^i73;g`@L
zU^-c0P87BZX>2a8K|;bKUl-MG?v>v$*UZjN8D8OVaSGhw<)c(plXKg5&CYps>Nq=x
z7dqkSSe0xnUu8N<la+9#&6!IqNFzSviaMaP6xo*{OXHAmVG)#Suc{S<^UTE(S{%w$
zDUo4Jh3F;%q>4SS_v>goZ)PF|bEg!8(=lffL)ujPE8Htjm4D>ug=`R`NZe2f_GT%H
zDadm%(QelI2FD1UpNsqe*nwq=J|;a#nRzs+MwAlgUKVLDqB9B3P&7rTFkSNu4ka{S
zj>gCdeFeY@uYCkLAj0PyWmVwOB)qW95^4r5b(7Ty^jpKgP|B3Fc&3!~p)up!ExANX
zLc=8s5cMs7mYQ!dr8|)`kX8{sJoU|$+4$jkW3}$AfGdQd5Jt%LnAm#u$*jZPlB7!N
z2Eo&2w?da^HT#)J5~5QN-OH$%=GmdXFpV}e5SJ5hv^q;d6!vQWpk!U;m7!h!zQMYi
z)?2wX06H67SSX~*4oI&Ioqnv#%38>(*@y5&UxS>3Eh&H&=x#^c61-T}3A6EC1b}zU
z+GUbq9{vVlA(Sag2cRiRT=V(NoClg4U6d}cOBB@O=1)er()|u@Q!Y$w-XN|bHQ!nL
zCN%cV!=BC9uP+YJ9i8{0tQVCzzh#3q%2tW*GBhVlEzpQn<ngm8ILT#%o+pJ<gj!Xz
z{U9RT!{JCDCFEo15W~zpTvf?c3dHCYt(#mojJU4|SJI{|^eQx^5W7B?oGk^<ou^=~
zb9#9_=LC*}dHzh^-W<FFBfMg(puQDIS`ZLA`RN~t9eA$t+QS5QXB?|p7-0dXNt|Ie
zPb#psvsb{e+#a_uN^NhBIVo(c`k^^HTNo<Efs5k<^+7(n7<S2pQrO1=QEH8tDXlHb
z!zv7)hGY5e85tv^cy*o9iEZW4H@-;<iO{ERw@!d2_o*0SMfhF`ge*JLNumY`nScxY
z-d@4|+`=8bj-`jCdX%zzmRv4^1};4sr^Qf1Z#yHqkk))~2ZdNdt75ChYWUls^q+rk
zxct1gudsTihdauj#taro>5lsc0<aP13wSUZidC~t#!t$)BqA%$@You>Ma!F{<(PVk
zUq9;cRtF1EATP%^N3>>DnsCadmUi6f%Qi6;v%O(~W*`}Ff*EP$J(4<^1Epl%uNJsl
zUpQC{LH2#PiW2wzU<vb^qJ_5E$UD$TO)n?Q<_I9;GWGd5-@v`FMwFl%7h5vs3smfN
z;sQYDHaa=VGwFx=^__MXekz_kKC%MLYXa-%JiV=BsPY2mo0S`x9pD2*nMa40v1arz
zD;JFESBZ{=EkNIF$LLT*s*6GrcH(uwf%KZYAi7vE9~5m3t|<8r@0c9p$ya}_*4vNV
zIZ{l~Y;`?it&66sBD5mZA=HniiMgJgPdf*8Ex*PU*kSv?5AkKvW61T{A%*~ZEU8Ki
zueU!xoZaf>;6#dBKkuf_$y_;yNrgp}=)!%P&`y(3enG{%ZrYI}^hIfJBS5)m5!$9T
zIHpWyeX0>wsqR7mrE7?zX!9huHAs4i1K#x5I+W8M(Hfg~h1i#T+#stffj5V^$XB3#
ziBQ5Cdd@DydLArukJLI7;H{sh*HzqGSxO?y)kGQmSC}F$u**tv$Z?N#OiR_9_;js{
zdl%MVPx#b2vgnBud#S|39#)NA$fryE;c64dE90dpMV{1G@#zwNc&mxz7UT+PbCr?l
zlFMPAYoB|c+pSL`?|YP2@l@+rh#1ZfKcS>M%*Pn9eN><lbt8dj$?c}kz0bow4?gu-
z<fGnHUrQ5lRKJfmeGYw2<9p19LWpEV)jqbVN!eX6a3?ZGd3f;;eU5O_GSYCgKS~14
z`Vv2ujEC>Cj@+;iGQ?m*<VdUr#+GQVIY@}({USX<iCav>54r6|rP_H&nGyavUM>t0
zWqE<2$)owsHx+}LfgAp?DzdMPZ}Ah}gSzWu*5V@M)L*Av#Y3)?CdN|!qfV<Z9Y&EX
zul~@AIz+@13Bcmt!KE&Q(gN@XzZn121Pb6k<&jQN#mqGVj8JPP5u{loh|JjFlClkr
zoeoG5gn|O8Wa?fE934`E7%*kBFVkCP)!HkPfSD798FNN*1WrC^ZmqfXsI(_7!Z(O0
zIvLI&vIGn`g5a^}X)&)|5JBTmHW?sHHwn=MFOa4IdvezjfY`tTK|pu+2*qNBaz9W}
z8Uttte*7m+!|@#m{Lq!}I`95LQgu&9R{ad8!xme<7AO3l_21NnR@qTaD2V=<tf2&?
z4Y^1`NdNVn-qsFOf*g{K`jK@u=tB(nae8evU*r(r<+7l1FW$bdI<qcGkJF>!X2b~Y
z@o8?{3RarT>h^ti&5X!Nc<Hj~Z)BuLNd;*j3d{oy;3|kXVo3&5SyZ)zs9HXnLbb_r
zh(l+#f;C!n9apnSrtdB#FE(=1)NUWE_C!?-qN%G$$od0n7X~%QRLQ#tv*|{!Q-C?u
zRjzJ^wa<kOn7{VgajKjr7u%AD*1ksS?b46G;6|&V+oq9WQ?Iv%CS6t_9a5R|Z^*6L
zFh4=sn2@j8`NxB0XN$rtUR;9HTm1M3NzxLlM9#7(n{GLJWY0IE#$>~tb>m#qykFTe
z&(-XKJl8);WTjo$$IuNs$jr@(qq7ZM!F{`zoN*mn$|&o7^8zz9Do3q}GtTXqV$uT4
zIeKZCBA!eL{##-^$4$+g9Fw2$O%2+s*`=}Zq0@QYWa*9id*-+^W5w-N__h~3I<VM0
zCpUDwY2AYJA2(g{+9_`pNIBMV4=$O*R4xk{ExqK_$v>skpUyI-oCpQBkVjWPPDvM+
zC1+ngxV`J<CSdv%?>1fuQ+WW6?<Q62sq!7${9{M6)^2foj=G)D;`LV9u4CP5E!+e`
z34Iiwa*7W{0}c!2Yc$7-fL^DTiL0TJBWNbSeCu?Qy>c3T5I$%A4u)l8nonh|f@*e;
z{9ZtBF*}UhC)F-<%B7iqXk{I078@AcBdkl(B^BiyPU(#RKNxp8kA)UDk`Dn(*1$Ra
zWp6nS?q8ubCN5ZYB&yQ<;Cw!8!dH2t(bnPA1KB=vOhaS8_e+}3Cmbuu;o}iOiOvQf
z0;BYUjh|)g7^7$FDz^X5GY%ewFM)=P!5RZ#zDEF??+Dvt`9}1<q3piIV4?A{`jpoy
z4H?N$jWAv|$k;nYsaV9LePj?k-e{n)_9#=UYNP)dKi7U9InB5oqv)}P7+qN<HE~4c
zOOqe-90vl(YAH8WnEx^DoeKm|)3Gr?ei~{CKxolj)D7-53Q`apD?pHdN$F!5801k_
z;Ek}7!>L`l;d*({JhYzE00RwU)2yc<Sd-pYi}m-$N_{nIA~swO$BX_y3qc%Bx?|~k
z6c;C!>N)B#I$%pT8^QP=8?w=7En3eV>v@ItjgrGP>JO5f>}!~&l{UeukWDU&Vh-@A
zI=JA!MZKYI`dD7xhU+7L66s(VD$=ps`*!mJxX3@p$G;wRImul7@wIXEN!F-m?8!q<
rwEI1k6Eh^~;2{%clYho){)3Z1ntrjLjm^Jg3$e82D;#hij|sdM$%TNK

diff --git a/public/fonts/roboto-v15-cyrillic_latin-300.woff b/public/fonts/roboto-v15-cyrillic_latin-300.woff
deleted file mode 100644
index ace05294170d847b62cbf30f24567ba537bc3239..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 26764
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
JtN<&Q008P-<<0;A

diff --git a/public/fonts/roboto-v15-cyrillic_latin-300.woff2 b/public/fonts/roboto-v15-cyrillic_latin-300.woff2
deleted file mode 100644
index 0c093b91c5731e3c4555c5338afcfb35ee247a07..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 21320
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
P)VFHkxHh$iL;(N*^ieTK

diff --git a/public/fonts/roboto-v15-cyrillic_latin-300italic.woff b/public/fonts/roboto-v15-cyrillic_latin-300italic.woff
deleted file mode 100644
index 7984971e750e40e682f0fcb27afae301d4aab928..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 29176
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

diff --git a/public/fonts/roboto-v15-cyrillic_latin-300italic.woff2 b/public/fonts/roboto-v15-cyrillic_latin-300italic.woff2
deleted file mode 100644
index 46ed6c7cc434d3e60631c068432e01f7787a9dcf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 23516
zcmV)4K+3;&Pew8T0RR9109)Ju5dZ)H0M9T009$zg0ssI200000000000000000000
z0000RwRRkV2nJvPjQ|Kz34=Tl3<`p~e1e)@5`t6#HUcCAiX01t5C8-q1%gNiAPj*x
z8{fJ$Y@0?6gYE#F^HeKg1v~Zv=nmK)rKCbfMX+%ofJq0I{r@K=6&W+lG-<mD0IEMU
zU?^lkMyU%%%Tbui8T3*xUNgg19@yz_?x)*L>kw?5OSD<rO`N(&b+h)Jio*MY<BZ#P
zvTQOTo)Q!cjnDD>xfQ>>p~3YFCVJRsiyg&U7Ac!Z5|!A5Er~20YRvlc?+jPSj1}zv
zkW%MutV<|`4s9lGw!pSwuh~&Pe9(TsKeKl(53^{Chf2mnrotBwO<c3P89cwX|2a3d
z8YFcUmds@lMQT}SrP{{G1Pl4p6JFytNOdt9Fscaim67ZaKevDPZi7|8D4{JxKrpe0
zl8D|$<X96mq9jwHtx*yxf)aie3#$>MfA!DLRlbiDqRAw~3pt<?=@oK?Tp>@$la(iA
zg*+jvWQ8p8(c1r8XQpTOhX8Dz4B04j1n2~jQ4uCFhV5-MWNQ-j2IVZ*E1Tszb9FCh
zefNm5%_&pQ_MUd%Bk7Lyz#6F^Qz=LvFvz%a6VFT^M79ImK6QSQffcV~2VN3?q&)yC
zy6&oWr&j_5{Da#B@|AZjn*%N)NwbKomxo$j0RJk@)ukys0C*H~!o09G;x?b&SGk?g
zZ3k6SWfZk=losSCCzE(4dRL}kWi4Ip5DrPQJlmXZ@aXn<zg^x>Aq<|>si`}>093rS
zb`Tn2z#iB6zP56=wF5-2Kj=eUSkez5yKWCt0?X3OI<P!}_<l{_1*ya=T&sMn*xUIN
zrOVULv(+~ouwAb+Tuo%Yzqe_&yMhDO0f(^S9<Wp@DpQoH_P@W<>hIq#-L7OitCeG~
zr2`ofuXJREWM4oR0PL70*$1)%-k{GxIfQZmpvt7I(xxq)3Ydq_SxWVKn-x$&LvyBe
z&mW^qkh-{sSdPm*P%(+7$P=^^6k1kT`+mPyn>(AtuRGCEkr6f%D?aeP7y5XE8kkF<
zT3xmPq}kSq8dEFw+gBtt{ALz;5(*?zCM5TUC%4pSO`}THFaN7*)dC9R2}#^oZ?#P+
zd3N_M*IShXfFdjc@>nFjfg0M+vUDLte1P^6pnQ*zv?*M+?{ar<s|&g9rn|a4_}5Or
zV|eQOvt~KKW#U~9E6WF+^@#s1$v4XGr5F7sZm2C33Xk}%^(AK>N;%5tdOkz+%a5V6
z9O)X=6&H;dks=~F@p{eY7r(|Zw(N1bYF(Vy76u`-AiC}U|KHTn&g4rhT8j}OdE!^$
z>}f>+xkxb+6LEK33alQTH+>=;o}4~<0(_n;oH-doFaZ2FnPn}uOSVgK^mUl<`1HxJ
z8i&CitaJ*nbb+`4Az_vamX5h6G|ttI^+WTz++!kf$D{rrEDiai>Z%3AkyWQx7non~
z1kRj|6tdtR@6LjN)TnL=vmj4+r*6Hc?<r_)&$|~keL8IwVI9?FT$lida_faQ3-y5=
zy-(PU`+uwW>=@^Gw(s!nSN+yx%@p26A`G3GdC%wW$ps-^h`8J<XEX75_+ErzaRSsq
zNsKuK4$}`@pL)EiajZy4YlZB+BlMWja}k}-1v`ih9T!#b*%(z}wV`P!_+r)`khNt3
zAw-~{^f1uaW8ugJ2X5R6;3<FzT4zs1XDBm~qF6JCVJpsg21wkpTCx-arFk?mw(KBF
zHb=Q0XZao%>piZ@w(O={9e2N!()!IGg4Am;Sd;TaXnC(iGCC;A5l0yucT%i&of4dL
zUb0Ir8{w*JQg!(%ory3^iXstUW~fAEZq%~D;%G(N@(hfDm2t>sYvY`4*2g_&O5&GY
zwk0sDwLL+xP@d3OsYrOHt4d@6)fi~|jxysaM#OWqSm>w(QwU+slo7FWCmRTqt!@Ze
zo2PIWHJ!%e@CSD5$bLlMuSLTk)(ENnwC<MKuVi(vTsJN0*UG3=<hFjTJzr__uIKJf
z)1%i*uhQ#L5YwX&6dHrg9MkJ?@$d=A$SEkPvRS{1xqd9NW%tIauRi>deW%5QDm$v;
z!%sjC?A`=LXh`9YKv1;H_8FgcBi%sooRFQ$icz6!llHKpF-W&~wD;4^3wd8zj0*W^
zvfHcw{(THFm0`)H@hPNd6_X}J*hS)PP2loa5M;jj?nml-RWxCRLq_=4)ma5SN;C{&
zrOvKf2}&E<^CdEuT}{_UZGUeZo<LMDef)FmYl@s6Ct4W9N>!pQwGXj4Jb|dzo6>Ut
zT1-+I`N&R=YeX(|7)%yBwG#~4mnmFveZ~QY^TwN^@a8qg?^U1MahP@;-3EhKgshkB
zz;GvJodwE)<c3y8r-FVBMIGL+yz0-H?scFM(yYb4*pCCvXv0B`!#Lu&lRERIn=ZTR
zTHmByPy4SHgoUo3<}2zdD>b?3h=Ddn%`py%vly@Z3FwJvpOqCTR21u3^)?u}D})-V
zI9oxWv$hc>?T~KL;3XlU<`4lZRFh8Y2!2JWkH-AnM*B=!PidjT9hIfVVvsH;8ZwSk
zT#YaPtldM`LUvn$jml!X=JI4Ju2!c~n+(k&H>A|+Q0^ep9X+PkORv1nZ&E(`<g+in
zu1wnFGP1gGT+T+(6L6EWUeeXibStT@SXr@^Q&ogHtx+3m9huW2llFJ1R~2tk@GHR7
zG^D5{IFQW5s8G4iqE)9<L)6;Ex`cj3pm*3#iiQ+glQJS5Lg|p`7Cm~s^vdfa69Fy}
zCL=}q(If#7rQQ;wJ#yOp22ThXC{yK85n45$8lu*wb!e>^9cNA2i_&ye$v-3(5Xs(W
zur(jR#|u0K(Gae-Vs&JJuMco(XN4>)BPwh$p;g%+J!>TyGF+r==fL(t8VDL;%|r|K
z+3!Fz5*)-~M;wonq|PBtqibW_j3d1(Vx0b$keo%8+l&;Ka5=7$u8j(+g@$x?F&a`a
z;vI6mqkK3x{ejTA<g%--jV<V5(F|hW_E{AxL0f7cVsUr^@wa_U)Va5PN5xH=o(V4;
zV!~-8Os`)wL&V55R=*KUQd?F+x%5l)Yw%O6f7*z4q9e9T#4h7%x;6?j;V^<iFHE2s
zHEPsY6ifw^#m)g?!l;OPKfmZh1g0?|G(9IcSgu=>F~Sbn{uB{|&zjRG5)Fe`sY)K!
zkWOnBjQrXXIpn`~i?bGONE8k{fvDD-(z9FdvnaGW%4OFH1pQXBj&ebz&<rzO_9rF1
zZn?$8#8gel{Ng0BxYQrYMUriga9+CmvJ*ysK5|DvNyRUM_Z<_%zk*^k@A7`MYzuZX
zGn&9x?XUV2_H=I#@<$VsW86;FIosnr@z!=P$$(^Mx2sdCx58+XQku@pzq)PGf6T%y
zvTTQ~mSmj@)#}y9+HJ-jWg6C}Nf@IR#{@bN^Qi&O_Rh~ksm@G;eWES%vZFZb!N^FG
zc=x}4*I*M(+}(yz6hc&(z9Y?uY-=XXXrXw^R9Wq=bv~%}MSW7c0eigH;IJm=84Wt-
zj1w`RdcxWJ&wq|qox*N3BQy4AF<OK1?ZRNVP+dhB1=(+)m{1JsASi2OV-R<$O%j5B
z_Q8!I>B}GBw2i??W04Wy1Dmo>^4CH;mU(Zr1?$YaQIFa`FmQY(xFG}Cf+u~wcmJw#
zWxaGixkqSL<NB<W0@Rm8|LCdyIQ+U^A|ii-;(JbR9RVn?p*wD})$!#I_2^lDEetTK
zA@BV@zHDYXf*;PWzWRAVLvf66pko2@Y-93?%Z|hu#gK7uIyxyLwUUr!5&AUi^tJQX
zu94F4Uzt0+wRzp%Aq}7Mb>pMe|4UYIrS!9`P&?c^1X;yA1AVXG^doC{y8#(gNx$<C
zJ>JW2fwND8SSZnh<6Ff2jI?e8(D}R`SPkp$F;MKaQRD8t$h4ligZPMa<*upa0Mh6*
zq-7rKCie`>9~kY`iSZwMtmoPyPg~tj{(B1Y+;!{RK9g6a5QFXCHzr_A4cT%n)rxr1
zY(<=}8U4{ktLFLx_41q~cN?I-V{#K$YxP_20xpf`{+fGys`%ef<MrCbEOY})cW^LQ
zZov10t_WRjkNhA0dFIQ*pXd+g{B2jB6OLqi7UK&hFPv%(<Idnh75hycyYJP02!e`W
z^TFS%2prtjr6k}L`vBI#AD4m3oj9S>0VO*BdA{_6p6Qp?r<=wyS&g#^rgD!PHVMiN
zbk=l#>ow<hf-G~+4zg+oRfrJ<=bW5FzYqknH7O{@)6j6n@NPeRXbqtdNzal2+2rA5
zn}I`rKS-8Lwv!`|eb#NhqjLY_q!PNQ@ve3#+?;0wz5GFM_4Kiqz8dMLjsA|lIKXiy
z1nST!C=cg?7he~mD*}XP-7wxw>Dp{YrVWeS(k=_Dvuh~9roqi96h#W+NWTUJhc#(9
zl7Ukf3uko3yK%>b2jsz%e0Vh$z?%;)e96L3!n~yyAqeuIqZq-IU@)Z!q0A7<MN%P(
zN_weKg_$$Y4)@s+!hTYuL>Ly%GD22)PH!m>S%Z{l!xmg8?XSf}ov1(N;DQTV*kS;z
zpmgd8s-2J$d8dw`jq@Df3JI>0psO*9Zm&^z^QRcR^*0Xw@c|bfeZ}INK0KIUf-DGO
zp@>5AP~}dY+1sTs4=qaiMJ?(qqrq^9O`c6QwZbK8Pr)MtqlZuIV*1CxP()*B;$UpD
z`6)QWIfl5zHHIbbMo2siLp+U$co`}2Hj0=Tv+Okevdbv5J5QCHtypF+W0ifzEEZ-!
zETg%Ml{^lWVCH14h1u;Ci@Z6x%930)=2=I`gR6K{k`-}05B@?P0%c7f@F9Q@BJ_h8
z7Fk;Q4H(3V7|MVJ$FoR<4ARL(rX=)%6gH50nH7+SjpU(3Oy1n{u^sYIPPq#4X_f6a
zh=AOi`BkML5!m@Qnzdlj%4DT|4q!{q;2>miXtK&-N3az0EKWie?PSnFrOwGLF1W}t
z^DaU+ndjdVr1R!ptoK@ictisa0*D>mB>+P)u#-8&EUF|RDXnBhs2Z~vam1qxc;KTS
z=n6x8XC5oS0Sg9F*np|9B$(lnq0ty4k)-sgFeIYqu_6?I#cR+_H1hSWH}N0<Nx65p
z8j7!SrS2zF6Q3Si2+0_@m^l#e6)c`KaiGR1Ej$poRaej80SfWj;R^mCO|pD2F=+ZT
za>D{?)$#=m5G~17W5#Yo`LaA9FeMrIAwUg4=RJvf5a9oh4SmpeZyiu0wE)&FIW_gR
zEE$pt&q(!V763tup=^K-p;&ML3b0t6-S#-9!)4w6Vj{2OJ(kA3@t`ziQg-ED;Z;*j
zm#XG&p5|r#e*RNEQ@wkj`I7x_0$lKF{^vq_9oOlK9)CNxmmM$;Wm@*-QPtIWsd8@S
z!EOJ$@(|O<ej&V13hWa=15geBvs(9G`LX}UKH$%L%D?ttkG?lNY1_ZAxn|p_Cy)0}
zKRTPfZ1@b#KnpOKyq!k^Cx8!kJ}A%h==IVouPxK%gO5J>?2E6KTj87Ue&}PuN~;1w
z2t{bZ5EiSgiIm7f4<pPdS!-R)!iq{%qh@`qVigT#v9Ue2U2ix#Jxl*9GAP#3R~dU%
z(PWeAII8iJ9dU}T+HMyOh|wTw922DD@yd?0+1sljJ{mP?j;|K2_Svuefz^0qH)8^|
zMH`#!b2>Wh3C@8W%%Og#cqT(*J6~{?2mnWuM%{c$u6?*V0f@kGzyK?Y)sKNyz#5<j
zSX&(S1Xu^`2ZjL$fTQT9z%eje1&#yffj7Vf_@Af1Mc^9n6}S%E07e5hfxEzO;2v-v
z7z;eGNeJ$(V)=OBIq)9DNxBtYHv#wvd;>`Vz5_piiNH_bFUSn|SI8y<|3OwD?<1H3
z8V(u(Ooh-<0MjAd17<>a5NB4qEiizFfeC=D!4xnTOoME|3}GIaW%2;og86(Qz<jU>
zGzcsPg@Gj?JFpa31eSs9!E(Z4u!64yX}~IA3D}It5p2%40G5I+K~7*R&_J*?VFlQR
zISAwow)5LlCT<N7d4V1Hp1^9bmqgxRzaOpQ_6H&#Z~$KmYybxl`GR%)5MVQS2*?jS
zl&~EfnjZ#o<qrd32RIxQ2#x@Df+LBv;3$3~unU~zm5o0cKtbT)z!C5WkPe(eI0{Z>
zW`Kghnf`1p#GM0Ph3d}*Py{#+6bjBKoCI%XZUIh#8*@z{BJm8EX973_@m%Kl0M0?Y
z(0?(n;_-4IT!DBS{|LZUh<5_lA-)FOfcQ0V6Kc)|Zb9woJ93+gak3OhQzyY>8=VO{
z1x^Fyhig=$jjV$b_x%mU)FoteR8>i~<oVL3%50k>8^IJi1}p%J2P0?jlOz)IH7BNV
zTqW}9-B}PfX8&~2EwG^6KwM0gcH`_C&}0)ymBS1hF2*u`94}xrrKNPrHDuNq@Rq0V
z_Ys3orFrXBwPC@$gqR73ObLE%Eq+;gDu0W0>uyUsjASfW>Ik7u$r$!HK9c2jr><(j
z3C|LepJyph0XNKX*?yk&f~g>sfWWX`$)*NN-w_I(cd7=CPs|C<^+GL=zU*_dbfk4J
zy}VSKw|QDRH$|NV->o|p-xr#KzzvSR3xq<a?L=<Tv9OlI2>FF3mUGU-H{}dtGwgjU
z!S2F!_19QT>edLeVmE|-J&%)>M5n~j4_jcbQ;QA+6nLOaCP)F09w3ww_=vLmfQG99
zDF;XvLe~q)wn<-jGM#`04I-&h6&=R3`{DN_jfq{AHqqWkj!Qn>qnuR94A_>obCDnf
z6_$%}!A-{|Ic&H`kH_>Pj6`!8Ing+)(oJWjktkuRb2-E{nyES-5r{h{Nk;Q8$0Ws|
zekR5i5D<ozEnT71FgDOfUqN&<hNU7{Ne#`CsBeajZ4iyMZ4{J>*8Jck2}<sbwR*KQ
zIv#YH8P#M#U1hFvtF)x@z^8aIx!V=7m(}D8s-1CkEmJH)9^$zwMQ)>>=v-5~&Qsc}
zr?0)WU5u0FDYcT?Rz}*KX=!W_-nTXqJ8Bcu_F&ZPsWp|7g{QS&y;P_5x#qGvb}HAE
zbt;JJUT0aWlub4|WfU#zIwY@lzU_qXD}L54b5_co^EPkhtkCyc+MtuuzE!yztd{a6
z_CnA*>b<5F?L>1n)P;E6g_OMXC%KcQmFN3SzVci@t3lA+`WBze?z;Y2=cIxf%}70)
z^pn78o!BU>JV=0Yq&>(dYJD@PgY`OO0yT+Bo}cAofxHp{$58_4GY3!V95O*9b(#ox
z^J6>IFF00;5en9~_C)gvWEd!wTJQm@UkX^*^696Zd`_NOp%$W|P(Crf`hCu<F~#!{
z8~>UItN*Fga$%=R><EYYtS9Ml7p-EmrZYqBsvM+*vxqM(@lySRtu(&%Yx>C|c^VA}
zcCkuuz0nM)P_;Tt>k=!f{0{W}9%@|<(&1SwWa$G%Bt|+Yd#UGgF_R;jQd-j$dcnEq
zky0rB#GuYt(B(qb=9E>+p(a0+Xl)GTQX>h0AD$3l5&x7b5gX0Yr7oy11<5TW2h!p~
zx<dycg<-I_<0y_=_69Qticv?g2(1pU0;4w9Ti4px?%^UMUpY-@SO~t{bdhm}Pm|+C
zeGcx%*w4%qPt~n?<-LPVJe(Uw6F+3RoK#OWx7H)U3$(LuXIP!}b>;x$CH6b*Yo+OJ
zdarJcJbfNVVSgWm?<iRXf<w5Fk5Ia#O@wcoF4^^7S3jcHdxAS+Tmx9ky+$Px)x)#I
zBB*Rma!r`(OGd6@NiV)Dnn>2<)RKZe(1yX61WDa!x{NWzTg(;OzYr>ON?=<>E!Y$m
z@#Cz5Zp^g-oyl-Kz;i=j_&UmP#|qXu7&RvXQ(JbZ)e0W(MujGwW)4KY>ZW_R)+UO%
zt7d2}^eZS`+=IP1T?~~zME(%bmg~AFTD^SfYH5Qc;U`Nd9i4^?H!UjV$N%v{mhvl^
zmqjtLqR%}~Nne{1o)RanngLz>WXj3yJ9F#82p5fp!*_J2m9$$}`gm>`R+eC}f`em4
z8n7eef?6z8nIzzl5=mKHQc{;N3dj=l@hBWWcSwOY<~O&qHxjiTjj|~qc8v|)-Z{;;
z2A5;gA+PpK6B-xH-LX46N|mA&7sxkmd?-csD#l?dV^UojSG3e<vgm;Mx9;w4HU%i3
zh)UghxKK+b%C_-W8I0Eym5y&!ivo<S&fhV8AI3_A1Ws-ZMn_TfLb*ner9`=?n!XN{
zgjpQyy<IJWAQ61~(b|efv%9a)yc(19DvyP~ivdzAp3$dD=$aPs)H3iTC3HkIm)q7{
zmECCe9E7whA01G680~o-97N3%-K(aW$!;`ht{4${&bAwaT^Sptp$D~w6)>&_OG+P(
zioH$9<Eb%fhb48MOrBM-69%X;G{6IkY~!oZ42tl;C!Q)KX!c#@2cRF1MuP>$`XrAu
zTWoIc>>9XGnH9_3&Tblc;Kg;hzlclI+jG!|5<tw1qx@a~k5FB8mMpVB9}RqOTNGCC
z#tq}olBd8ow(wo4z%w9N{eOWKKbr_CqFq4~4w>lo*1%NISiLIDPLwf3eM$H=8XO!(
zg<Xs6z4dMS$*fpni%U<7gU==_C9S)otNB6Y=_Iw-C~9Q0XvD>Mm68y+6Dm1EQL<sm
zD%nsVPliT5+YTtL>KolOKc$4MCE>S~ui%WJ6R;?rG(Zj5mI-6te^5*wS^fgbsn^R-
zBlp%qPZPN{|Hech_aD#Ax+ZAD1e(7t#F!%v3KvEk21T@4ysMR5X}ww-!Zgv-o15Ex
z7#q~1Ie2SRt4i5KbLF`=F#z0cm}XB@*qT%mil%csNnEQyCa*Su_xY{+RRZRLU}uy@
z9V+GM`&=F|{>-;?oH*`T7;ADd4l-<UG01rFaF$`}%F~yW3hIeJc0UdyKP&|kXlF??
z2hz|cku}(hYH7JGWYH!XXGMffRGeb{??$Y?TjhQ3gC(9talkIh>Su2j9eC9Pp7zB8
zaN+>e*FOgiY>`%-%}s&u)`w9lytu&gi)L<~7UqseA>artC8Ash$zH85E1o6gEXg%-
z7s*mQRSzgRlxpZzATxHm3W2D1dtFtx+|D`g@G4_FZW6ENo|)mEpCLIEb<lwYaF&$4
zDA2-?BLTF$502UzbRCs)-4!i`v%d1BB+rMcoJ<!ET+_r!FI-@m<OO2TMRBeEaB&mU
zIZ-B!gE)$n6R`~L;vLuOiN?WV7@f^NUEMK#hp=W&YY{~2xS+z2D1I;(ATh+DBg&HQ
z1_Y%zD8y(s?A&Oe$>o3%wL<vw@4Rhkx-5yd&Z79_aZ!(60H{&=^&fHKyKf0I?CBrv
z<G0Nnr8-Z(<S%go$s9;AC6LyKF(nx`&E&hpDjti}cm*9eV8d#%4V^0Anjj<6@PghA
z36z!7YDL6vXt}`lyihD6g~g^@Ky<O1hfP;;!q@g$DyZAl(G_o4713FL#X2cmg9MM0
z7v5B(-E>ztk*uQC1Pxd?=a{I=*rA34PbF7;dcWl3JDjvjXsM(`UNv+nU^7JpLWAi<
zek9@OAt4yDAxi}U9$SY@nGqQ)cX-l3JLD-}GYX7{=-@sxv7Mcw#%lFifEAa|BQAt)
zBpWD)wsUgaM<mNGmG-N#p~oej2f<@X?Jg!V&eeq!)PVYx@~{_lILb8P?nt`V;g;Oi
z4la|>l{RtbM7hn|bt9j-YkOl&nU`soSH~vaXuv_C`Xe1Mm7|`)R6groHSd3KHMA?>
zP?A3ysB<Ea)?3`1l!U=(qrn`|<}v)mQ+}u)Nrqa|@jfY8UPqTKHbJE(hzHt5a23z!
z76;cSOUa{~cp<2>M9u4ss60OJSt*<<!o9$4T5s=Itt3kSpxs#eT2d#?{nj~luXV`p
zJ7@NEo5iFBJ>mmDn0{x7S0;)}6L;$0_`vA2a%ga#a)Ca^2WqjZ_yl-j*#|?S42hby
zZQ}x;8e}G%svV3E(o)zJlmZ92LxU49d+pRoMdF}N=3r3|YjI8(9CakA#sOqzz3+v;
zJ3_@BC1>M>fsv6?ABlB+=4|gBd>Cvhv#@N>oSMAB8I6fV3)#;4s`31B=t0Mhu&-TF
z%|snz2y7C!{cDsDY8*F1Q+a)Io+3BXE2cNxsz?g8?F_VcE~3nABgW!wF2zV<$FN)!
z>tH7_GO*d|N{5+xq)pE{ZQz_7+tG9%asehxW>QGvZvX?5pFEM2AxaLENEipHQ*mr^
z&t?~>dtO8W0#3M(OKJV)0E~vHYi0D?LpC%&lTDiB{OL7maC$_-I?>EW8Ap^b93IyQ
zIFDxpdC*V!EvFH-aRIVJ_G-BF<#xhvMA6zY2trHhse&m#l_e7~8Vgk#;^~LAb#Cg>
zHrRmk#;k^98#7O*g~*jEo1I?HpWZ8<ZP`}S!l`Zfofe|dK1HGDYt?sg8oG=GI8XgE
zTKLyL-f+KBLlkRUIO5;jI;M=Oc6ufgqIk9X{PI-mI>ks*->d6#n%)(T-qjXX(>v;{
zkldUzosAZPvu)%oT6c|~-;3aL#{|^Nq`r46XDK>I*sX%o3CDOxW(h(OsikqG0+fTL
zjx5rfCQ5<)v=s7S(GV_2!J1MbKPiT(plleI9RU==JbBK*6Ql{qk&3R0VP5<rzyk=S
zM7CzS5hd@`sZ79!g@cvyxl#&7Pl_N96rTte{+lq=gYN>|0iREfR&-N{a7}Xq-heM9
z#Nb~$?%d;(U~5vUetCm|rB^dSN^JV!LL<nAP3?+&Qs0Ay2JY_bDRr7ti8_BapJ;j`
zi>R6(cm&75)7zwBTw=${EAJEN$>xK1PosPPUrsHdiCa4q>h(y%sP3`6j0i%qqElG3
zOE}0c5-1lY9Wo4dzQAT0D?}=Jb|ro)m2JcTV5MBO(5L6JTyJw=%N+g(0%n+qOQL<X
zv=Hst_*$amdOr8x&wKpLRR%#9=55*`wzr;hTUzTiqBb2$^rWdXKN%+&M;K=uNRM?)
zb<L#2`SbcV2kdV#{nN<RN+)yeG&ALt_bahL|6}%f+!n7H_r`iRuRys#rIN2)rE`w{
z|I;cxrv1NQ;-IIaV|rVkVPprs=#escyII@Qm{*y6^qAntYgn$3V5nhiLOgH>BZu;T
zu&;pw&U!Q0IhbrJGw@f^c&Km;vw|9Y*rrAiV?z~>N}J-*28C<i3_qKgF(mf;#T2^@
ztu;!5zgt!Ib%-btg5;$ujBaXXK~F9$hgYZ6+Ifh|CGzhlz&KpGPwQhYtgY`iU-MNT
zQ{#cAI~|llazRmBE-VGJJ*uVYi1H}m)eIPg%TK8%aS4rQWIK~KC6D1n)LHtcMK}##
zz9o+diG}TF%3%XsK25GA=2SJ+;VrX}Y~PxDPw6pFEK@{>QyLVl&By*NGK+o!@o;B|
z*OB+1MlLVYlS2zW2|b#@D4564+nLX?wDV97uRI@30~O_+xv&Xdd_Wx`x0GKhg3T~L
zp0j`AJTX@13&w7Xi*l3vsn`v5JyPdKq+A@^W7g8HxMmLaVXi-?jNpQG77p?|du=Q^
z0`Rm<Gls+^@pfIx7es<E(8`ILB&E^1i*7~P3lhwg6Y|X#oph<}ZZm5oYl5Iro@*Xw
znlP!zqs(Z$y9v+1Cl4qigzTZY+MR(W{zHl!(wM^9EIa{!xJ&MdB<FSx$zTh(KS?R0
z<hLI$0Zs71X$A9WBERgoh=}jq3n$10L_t}b2*}{VVD9dpjyZ=d#>T=l(39u%n3zYY
zF8S%6EEk-B3-7SE&=jqy16*0wHp~tocgwGEXMdfAG<dCSzl1E=aiVB88%BW6_}F=3
z3L(Z!&gVp}mZxk}7QfD<h40SGP?1?2GCyd<h%*YpY`e>|ZKJt$W0tX!;FtNbh&?r#
ztb9|i8d6gD(Bgncm>DOOl**}!C!pC`q$Uvwv+u)lAB}AeFH?@uXU+|#hQ)<xb<er#
z{%1!nGJe4RgRFBt)a90vFG!8S26`km`+K6nXj~39lW?*r>(iA=-~#x2a*GZsx?mjl
z2VRPUT|E)I6lSo~LdH)Oqv$u-p!DDGER&ti*!*Mj0Mbtnd9pkk1MY!YM6JKk>h_C{
zDNV2BQ&-W;D66(+*VX&kaS!Hx@xz2$CtIN*nBlrjDS3+LJz)ptsk!b~!QR`=*$<lv
zckGf2=nZm7En<#`%27wC_v9_eEoSvH^#mcUYEZh3tDQcD6HzWGt-bj15Z5~t>AclP
zt0iSuG!?;U?jfX&Txucbs{XSJZw#LP)sorEJ^#JLUV?8)xHZ%j@1lN2>&nb7Vp}(Q
z6Mp!goESOt=Uh8n#IU@!k~BMEAP_kIP!q>SPhmgI>^|q#`HLY%hCZE4Hf5cqi?<sW
zr)i=B2Xg%jh_rkw@BPor5|xNqU5n@1q5VO|Og-204>^}tqf`<j_NRRN2JZux25W@_
z(mgKujrMbqf4#N6{M3;!rI;b~D)?JYT*G)0TvhvwcZ4LOm}U5F9lIb_Xc`)7f!8qV
zo?GxL)p$!_i!M&T?FI;DUA~nlgU<amwJ1X}ZBPKSUYb^Ez{vD`mMg5e|5tei;b+s9
zkHr5vMg0L^eo3E`QfdkYieMRBzMy{0gmCN2^*~tA9xfgC{&w81o~25yHN7&Id)yg1
zch|w98C$gM<ctQ?coo`Lrn}^9p}^SZ*F43W|Hl+2iR%>zj1_M5c}cE+nUNFTBVt|+
z%2yH>OXfBBm4RP}?gTexsgddFxzPm$Od)zDGvzDhDC$e}WVPt6oHr*otFBsRBbM`>
zmz(1g(PfO9lhHr=*O9_=^0jVw7sCqKgt6c1!SQHkuslM}v(MhpE;6s_zWWdw8-<*D
ze1_3Vt?L}Fg~^Dkzp2@S_d)hQnpnwAhAb~i{*0}Go&;y*dd({r4%54O(QEJ<9rv!|
z0aQET)XDJ4MywXN{?N=#K!3ofx^4SU?|R7M>G#LsDn=z}Gr@i_v@I?ar8PT^JbwL}
zF-NI6zuIo{J4c+KzQjdZ?~T){Y2_Wvc?0<)k-EGj*0~q{v$hX4#7duV={0A*h83c@
z=+)Gi%LHi#xvqbt33h;&_0(Jvr?z@x*SjO*E5vGos7C&C=mxY5c|Ili5+Nrgo90H{
z;hVN-cRPnQ%7laTts>qqVy%ol`{abWNBZmg@GoHndOaiL1+9!w_e4S{c&aqmcdHva
zfc>#u=M3TU=L0HZTF<xG{<Gd>qg=pfkZ0^@k}0elyq`5?+mms!J+u|iSL(L<xd!WU
z0q&Q%g2Fvz+P&!l99u38+@kOFnceKLn((A-x8(nMO+oJ>m&?5UoAe7*>kXN;p_<YN
zL*=!?(jARlHiP@OEXr!(jUglUGBwn8Ge`Y8-Tw1+8rz2HKV_pw@|7num$s)c34Xb@
zdwsB_v9HtpKCf)lwWA#J6L;MYI(|QC+l!bWdfC;`8GjaYhE=3>(@q)Z<m53IoB~R~
zurJb9F+RWjN5Ar?$jtb6L9(cj4+Y?~SUF0-to(cQ1n7t3^R(7LZAHJ0y&6w_lHiq8
zEAE!Bv&h-5T%ri)pPW{3@VKfTKuwNf;y`zxp^I)^D(x&HoElYjb`{$S2cDsqsqsRf
z5QZKXjR@gmnDNT<!-j~8*ch}Pz4AHcmb(CsmuU*pG`s&>I1cmCky5vx#myGPShvN3
z=Cc7jv=3f>fbB~~z{0|obeI7zG=(dpZD@DtN#{^))=;^^)toFe9CY|>_e}~Dwmd|o
zSXEUF-NH7);n(n@W}F033<J)vMA)7LlhJ{MeSv=e+C<2bIcO8+>Q6QgVjeT|z=eu{
zpF|b9<c0>y`q6w;4El4N*T|)cj$bxY5)Up_@S{LD+Tw0$ZMWAk^hyL0-M0+0GH-q+
z9Wka?7GICbBaA&fO^-aKRIA!Kcd821IMS7(vdv@i^JwXeoWJFff1dmxa}4U;BhW72
z?fwRBDa4q~jN-zZw~})p8-$pK?${e}#E#S22kYR{j9Rx^R#op+Y!e)O3Fon+1);A`
zuQ^~t&>qn!A4bDd>_gE$e^^DxQn_d|=E|=tm~{nhH&$UAth}u>DYz&U%m?hGjmR;v
zU?SHxFK3-5FOASJCMMps5c%%KSbESns6&I7zXx%Ld9MZO%{gY{P>&3DTQSK|$-1YZ
z!7b98v$}g}-z->RT{2C5`bfD}SCM^_sFBhlLC=khwEGQR%<KF_ndg{z{|zFxRpwjh
zo~c=W3e!Mi5<T)r%tCTHXhG{2NT*oBIg#K}kS$X_fl9#j<7$$OYa-FL4a|26Jg``&
zo0RibL|m{CDX-g6f65{He0&1H0u`!AZ>LT4_BPD>;$pNAoImRKo4A3Y`TyhODrN$G
zga!Avh)BW%R|?aj(F8D>mVT3#r9+=<{iPP|!n{W;@7nyV3IV-NX716Og*3az$r{ZS
zqpNg&afcqE%ar*2s;5i;UCjJ7k_|(<BoiVS3x?w@*a0~0?6U9(v>J2ewcgd_FdaRB
zF*$_^105bF-g>pEjci85-dNUkZQzHW!%Ld+VniVq?Ga80VH6yWJQNbd)C!ixMWbz)
zAO5z!nP6mokDJQ7P^KN9^A4dQPN09nBD_C38tA{Zf22k&ojiEL?6W&*Mxp5A;4#n%
z7EdeG2(b||NfO|-#pC@cxhKst^{rX2d`K4+^KSL`;&T(h8IRB!Y?u(?tP_ZVcpx!a
zQ`y}_=@BjRk?6K&QZ)L~N)Z#;Js%6gkCKXow=U5m=S-Et|6Y@O>@~I-ZMd&An?5e&
zP5Rm@1cyg^qaw^Tv1TMLnkMdDe!h3p;D)uDY<(q*NXmK&gnNDeNOcHN9oxrI7~79!
zZ{e__EpoKpSa1~6gNTW0Yk|+7z@54jB=ET`Y`p%Qs=AKs)pFW$?TQhFB=c@Mv*G8m
z!mYON9czwDqJd`zG4kwyLd13FMzWGimQ8I;KRxCEHFSr*fKBK8FS~5}q^7~F>?>nP
z>$OiPv$m5!<gDX1zSsS2SBO8C?*4z8p_%S?{X4Us{KLd%qXSy6vyPDFhpmi?$!yx&
zSvIrS76xoJ(|)gif7$JvU9y7n0awj8iH4Z)pb{@_ZI>GJ;!n)ens0nUm~|bB1nwui
z9<9~AE6AT?<eL8vqjh997YfldcA&4bjmsHyOD`8NYUERSARSGK2n%$wbp>94FH+)L
zogGObV$>F>2-q|VO+70)zs+V3t+|WfSgDRMO{41ZxlV@RYw@<X5%dK<n?6OCbAmqJ
z?o`_PSZw&TLbdS*wmubs3kq7(;UMM-f%Oh`@07`Xs$~Wwl?MOFyMR9SDxDLIq&jOp
zH&8xH=Z+buso(hf-&WWI$M4gIq$DY?T?n(#)04`5223|PmwWho!Nt})Fa}IH+a4L~
za11`%<}s?ithLrRE;||GnLl`;av4T|QF~k4g_B1@7lwSNHLj@N?~vyWgnI7zDP0)6
zX)Nq$Q*aC_gFlxZ`<+ov%kld>Q7VCX@LS=~Uxy=JFmE>O`x;3NXwbjbNcC^nYa^}t
zTB?7|&q}VN25`;47V-cY7Y)U@bVw+;A}aV*WMO@5lD71JN^LZC8kbhoyY63r-UJ`s
z(iVk)Qa3o>4(c!uDyb5@KUbP*cx<P;7D!~S)0Tcq+Ym#Wz@?P-zbQR<uE2XA7;{2$
zb<5aM*a>cyQ6$R!i!LACJNK3kUhgR|{IE%Nh7^*LcZ9nxp&#WD1BgKqS=$aNjm@Y3
zr=x#EkEV&}pC8g)gZL|TkwM>p=v`O0y%Wx88tX5Im9YK^xku5JdG7j?22cWz_7jdq
z(Vx!2I8f6|E5b*TawB>p&_#u<-8)Q;lpivcm%$|%^x<Nq(p73@$;-Ra0<;RH<lOyj
zl(!8*`Sk0k@RbEP3N%iahp}c=S3brBFPw*yP~~)actiDUxN%fME>|qT24m8uv%5=>
zN}t2zghbRCB-=2YxmZf#sjO_khvG(p#B?7e1Rt=+JuNI&b1(}@SmL4R=wx>=X?I?}
zXop5OBaWq>cU$$wdT7X%c_;@PP96<sU8FZws=v5POQ}S=dq2l(DnDSdmcdb!ly&cq
zF`m>`a%s`)hnWTFQIwi<`=@c9KbY+fh{D-8{EU@MiBus4U(n|4wG|gh#ycZg+EF%4
ztb?<H({2|Rcq(`p@g#g7+!1Eu1*8+L0S)ez)QAc?wSFGPwYSB9U?8o8kua{gDF%dZ
z`W6}<dc<$PO=uX_Cd4-QkY!}pfz37tGimG$+ll0=ucfkU?g~r6EB&{f8ngXyZL<;C
zooAU8iTBEJv_0g3L}$>PxzzN55&=j7xgv!K1zvsb`j73sKFal8E&(WaS4gOvt(7$r
z6Hd3}B9t-5MX9AmmhcCG;FwMRHmnR2e=0W<2tZXP<Z_LD-Ce!nJrt}-xpIsLl4QO9
z%XWmQnyST$v51vm-A!;G&MHXYT&89c&IVem;)&`l;*o3c48~C$ink+nxVwWCy^vM%
z@?W#7tox?e7i)-TTR8?J*BRP68*ei8jCD+J(hHQWD%7yWn8?9|Y7}wHM|oBfoEwME
zHOg|j(H_UE`(jHAb%>>#88j>w!MZt89X^WDvM^r-x1Oq5LOsr(cKqssaGsbPSQrSx
zVNp3nLI}bq1r`OM(Li>T#J8l4S7PfKN`hDIK%GrxA+?SqOsYr(NwA|>J&TX14y`Tr
z!(;Ho3bl=XarShn$jw!ye9n#k`=FzV&{iU2br20R*#SLSvz?vXh0Z?apmX5v!(R8$
zVK?2HKNMEYN@<g=NwiQuCvs?Mh>h=hF*YRm9??i>iQjujX#}Q+=5(gYAH}qxFOUL#
z&jXtdyL9tBG#rdrTiF*4q+I-Ll86`3s}gz2M|JMaT2R_MfzM9-+5K5NqQ8V>jlmlj
z4eeHfM(f@@et?RvY0pc4mugG_`Y5Lbw{Hp7lcTXH-)UlsNU8Jeph*Ism{T^p&M7~P
z?6nb5`+o-0`ouIdq~oESc9dG!JWvAtyG10Wu^P*dp7mnN;junK&LJ)D<S7luAj#gu
zx>`$-JFfoA#pBT9xZ$4dQL*lYfDcZ}NU;g~lIyDui?NoL`hH<820k8muTZ`(6ku9<
zSnZznFPRc>F2OL&BknyXAFTsD{kURc51739AA}j?yy%()C<XFNRtk^EEc<<I1S15U
zX-eU}51zqsIEAQQr9?k<CAcU$5i_c5h3FtWCf*d#C_9wP^#kLc_D(yEz9E~>loQi&
zVQF!P&0BKNrL+5{xa5#ZN`y3NWgk{~?E|=h5}KNq{2mdJ=1~Tva3b6P2{DIUQ}pps
zz6|<<E{9$A@Jq(n&t;q4o@OR-=WI-49ywN(+!1efo4KRyT^kq)I^g~1N>lWf#z&>F
z0keYHa35z=WyO<SQ%b+~yPk7BrZ4s9Zju-Nm3xu5+kxk9oB19|FnD`>S2R*~AuSVo
z6}?`0NO8OqjYNW-6S||3lJgRY!Y%CON=MwZ<`8<^IZ`KjgZ)-Fmf5}1m_}MTgf`l6
zb!=2EwVl8e{Bzit-@P(tPrpRUd%8s_!R2ReVcX!q3ow5;NLybaw>h^-?(lD_ctY$U
zXlJE^M$EMzM>V;(m8;1$MU1{Mtn1;ejv$(Hmx-Z~il@y7;0~TM_RwR0&a-b|aO*jq
ze?-+ON25o{<X`@qB^6!-c$)p^?HdVxIA2P2&rsv$akmn9xmHi?Q~0bR1DwT98_Y_h
zuwPRnan9td(xxOhgRPeude)SGh8bYFT3_fTdtX)rW$<i;=kL;Lx)v}FdNP7GRgGuC
ze0XCp){NFpEv#rsgJO8OCSBPT^aiiL78iG)Omw4H$fm2z7Jd~bAi1scV@U{E{I9`#
z=f+jCWT0FO1)#D5%ZouU32s3izz5-GQ`|RE7ZZS&Fx}mm6Azq$J3rmanay!?J9yaG
z^oVWD;oX+oO`MNx+;eY*9G%MZ);5T=-K}M8eegj5N)G1<y}+icmPWTXhUiQ7I8Hb`
zoe3kgG5xlMXMD2_`2nTvbuV-<h*X}kEeE&3>z|dkm`mDUpC~|14|sB()<SRXnCgHP
z=&ViFQk^fZml11|><E_3*Y^DVVlim?xjlrIP2Ga;0k}Wo^zZW>UkKIE8@PEgxK6Y<
z>jk0vnd{Xcj|=xkvZ;Aa=sALfeo61s+OuH|mI7P-vBSF_5c>(P2yskxId&8^)hO{B
zd#aXGa(t2A=M%JgT4DQeHB44orEBs#rAd5C<TiTl(kAJ1I_v9C1cMudgSb_MbVvTP
zc#aQJNn#II_%Zq@MP2Qcu+3fIpcT1c*6aj$4zGPuy<yXqVbjj+Ejif>yU;s3Gv}m~
zK8ImOtaYf8K#sHOsQCu4`n7Z*BJ*IxZAZsl4o`z9R>&Q6-KCwS&uOi_eMVVx*XXOb
zwqD@gCnsq2l;ZZ5Dj4Qq8r$f8MS37&)4>R-$CUu^ZAN@sQ<7y(bM$pGqoHKk3!V5+
z8+g3azILM%$He2(T3v_#`0?6b<J-!dYEGurNb|w#Hm+&qE);#NF5VQaKK-bfQbNuj
zYV8Cq;6;yGkqDvAu9^JAE<o>MKHi~@;#0d%SD2-5P8=bK@zT0WFuobc&};GBiv)>;
zQha8-8IECo-$SjX6m`~5U`7!}T(;Xrc@A}5E+z9<58JNhtX!p%`FHGm?c^jxq!>y(
zWVYMaY__ibu^VG7<apFzN3kXjO8kZ{R|#3)?s$Xo_@sZ+*^G2_BuF`0WaudIu}N}B
zS03L|XtQrZgVhSZ)Tg4fD#pNh^49GGh}M?7qAmA^zt;*B88wXl^W@ECCpK)k$ur(X
zD46zmWJ1-rtujCJ&nWf#W7U=G$Vpa1&@)YaZbl4HQXY?qeU2N7Q~K=7{I8@P2-COr
zEF9z-X9ydv9hiVm;Ei{xcdctOtZFy8T4M*%=X)h`dyQY^6{uMyVKGy7>Y+3wIwr>x
zLeF$A^1GaLAS_JhbQ>RBpWHi1WX)%o;pV*7>ve8zaC*Ehy<KFGJUvORiO#BQvsW<q
zr)MY4c^QXCRyg!Lrz%}8`8M%*zc@O0z6UO07{S{&cr#*MD8Y#BJm<ywST5R+c|Wt~
zyu|#~?*ATRm*7VV?iK2WcU3)ZvL`U*S7sG{{g*rxTE0|TRZMfE3ZU>*+g}R59pvcE
z&Y2MEJJI#U%Ry;YOP{;$=XH#d^R~bBS85M%JgVC~$}b9p=JAWf9L6ofZ*Ql`H56@%
z{z)pUI8lrZLsB=IAmdM_BRALmltCsk{hkmCb%}{V^A7g)wYRbPV755mBek3qZRDU+
zyS6<;c|=bwlf#;xJ8&tE+R1wJz~$!P>~d@yeEn2;K!-NgwpN9<!}SlWDIIE0$K9y?
z#Bqx_<TB1~#uqC1re|~X16WZdSZ~Fuw>_8s`zNx*5h?y786S=R^LsydsBMfEs6e~o
za3PE_RfL3!fPz&9p=Z_S>uuRKgQ!IAQIcV&e@hCX=U$@Yap9hWjOsn_$no328sO8}
zMfPsW0nS>!7W2Q9`u#j7t6TB-=Q=f0eOwXt@lmhGqEvG6@Z;7uO6~?ntA7t#)yly~
z;Da(^c_0Ox;3-E4=w;te4T3?;WEZ}O+;_{zOVcd}>rZI>b7TT@9NZYk)$$RAQB_$f
zAP<ZR@m%KIzw{77=N9jiS!DFDjTqmPVpNwR{VpcN*QMI^ee3c4CO+7m_lxGcFFL7=
zd7EmItZXfI2ZAuRdcwDkB{Kdx{iF`=5XDBsVG7RbUZ=-KKXa|@)&IGnaYD_9uS?L2
zPVl9!RpJY1kl7sQFZTOp?)xoQFY<X~-lC!e|E8EZm4*i0y$3Ge%_5B56%l&wrqbD*
z9pPl<J$bZQnG{3<M`OR2!oWA4=24&?w0uEtQTz<(ziN+TVt|XW$F$IM%G)>?RD$-q
zmrd=u*@}S*qY3AdfG>Jv8(u%UFaR7yFTB^deMl!-p*!JJ0&oYeTkz)54gp{mjd`?_
zN3RjqQVn$7Hr_KMjNSVvXM$H>@?J~U{w-qfrIwwU=fLo7*1REIw2h%?!(qv<NkOMs
zC|Tsls<$Y~Zq|^mMF<t$gNCG0N7l|0!*9`^3oYBTS<R#Sv^{4<ABzQ>5<R4oo}M7o
zle)iOoEk!ZVBGUceAW$+tcD_zfWQ%CCBm@Hau%pZ!eY~ci9MvQZ}ZcG?0P`HUwzg$
zf?RN-gv29qC7JP1e8jCeUQ)}xk30<YKZxLXrHUXGA&<%KzZ4vgPGOeRsjpNRn&`&B
z8<-wA`+(e+PLkwyrNb)B?fa%HFBvfp6x~#tRBTg@vRpQ*Bt>6#cBrpd#tgufr{rl1
zTs*U_?SFbw1<Zld1%V&QB}RzP!d-dpS_lvAB8he{%6QReKD;v=XF~6!<W{%y-~i?m
zN%d;?p<avYiW51H9d;Qj3tkM-3+z<n5E?&?kD0mRL)j^T&;@a6(?O&=vmy;+R<~KX
zJF(AmVnH)nbyH~u$FyV(OiWjRV^$1Sw05LFKZ_~F>07T0T1Q7P57AQ0Wgc?O>Ij`Z
zqPHZhRHOVm?m{@R+)^=`UFhO**bC?G6VEFa*wCu4UQfzKyW!<k>`)qlohR!^hc%d6
zw@t3C(b>-w?G+u!8HHtS`+22$NEdT%h){;F|1vc*%+K;M1({{?)6|14rgAX(a=m#a
z$(oi0E4yAaKr;4bladG_g49%uM6=x7>6FM>u8(vxY|m3pX!<ffJs7^pys)e&E~U4y
zCySI!2u)A9A@aBFd|`1o7{hSUk6~R6(%Az#GeW(YeS8CDW`<esc`!m$B=BodJI972
zDEcygJLIcFk-Yu8(^pv*`NFaG2Z(p7`Y~;H#fsIXD#b!tqUJ>=Wv9V@Ph5strb?lJ
zo~Ct~sqxNwH%F+Rp;{)Si*%;dG{66@gcO-dxmvxDRinM&R^+@lR;pg2(JfNz)tTJZ
z`yT5R&+%{x3iHHZJz}FgU4p}1SPu;rv%+6W7{M7l8g*6vB8z#E;ZwR$K-(j6_}_+)
zij66r>1}P^piA^8cv5A(Ek$Sq$k0XNXKTiTMr3tMAV#&y>>@(VnBLHHjuteIQQRfo
z@A4C1gKRC8gjhWem_dJgzVo9-8-|wIpxM)0mOejXPmi$2*PSVZ^%qIigh+a4?VP`U
zmQ+QEpdVYF7cJrA$i3gP60(5E#>e}~f?)(GDkh1we4;Wp@PBUOMZ$MLrf}~oLC3-4
zr?)fM+v)se{4$)OMV_IG)rVK7dw>|!S!l6^yLdo?)U0Cg=;GgGk-rw8=GMAup@pC(
zf%$kpH$Rug=K+|QELfURsN8*Vsucvxn`2IHrC}fPBZBMy(`BCy-f;m3u1~#wlqv5R
znN<G_otZe@nLKFuST%hW(4%vsywKqV;cyY~(@bw0Z)`ihc>CkC%22LQeumCIlip0)
zUPhJNknQ-|s)|U@Z5(FVmBwO?U|5Z3&T^P5<9Iw%bRhzo{j9$7M?-dXlzri;%9gdi
z_m8>zC-pBOYSK`(uXOe-bJetz!BqWPUg3>(re_0(;WztMu|sRVJP%3CJ3<2V#JFtq
z)mU}R)%AXOHw4*)FuoxeFpw&`4cQ!cSyBNs1i^Dp_@(|{<~V`PhJ#zDfeda%4>Wn?
zpC3eLw<86QaPf5P)-~Ps0<Ve7L`;4>UX4!mdQYb{*ngsKREl!{55)cc4d`^g=R@Bo
zV$nvI0%UN>dzYgw0jC>S<Zs4h|5^3))bvq5IFLhdps61i5s&N_-m~(HcPY~*TOuG4
zd~ue3z0Fw=%ju55dh>FpKQU+Lbr!J_g52jI$bAWuioJKbdq?ye?^!l^mv;4};{JpA
zgy_s>zMkvyq8Hw?#zybbcx|#J!SUdWLC=C5P+_Dj2y)dGL9PZ!adiMJBvQ}4_&Xzw
z2oF#fh4-xFdY9U;$rk1Kd~ueZY&OEe^f){HT!ygIM$7=ASS7%b^XlEG;t!k~rbT@9
ze%!1Z0N)b@Dg`tQl;JSLRy@~;uroeHF>O{7QG+>eYR|mIatl(d04&o!_m&XkO2NC-
zs!7E*vs|N)C0sfO#rJ_oY^w=*ibJ8EjVRNv01xnbrVTv}{bGa#)Ggi=i`WhYXiVfF
zv~?_J^Kgd&Cc_(U@YOZ}KR7~*!HAT>Np*9b?fniTkb>N^=15<-ml>0L`}N=;-Qa5R
zkg_fg66#?~WPQH<3a_hgdI<6~+@WB216qa6psT-+vXnpu{{0JasLwC>NNCD@tH1K2
zKLb?u#}wDT-hKFs<kvpM%I28ap}$|I{gitIX}@*a6-Z-(`}OIo*AY9%-r77>N)!D{
zD&l|DR)u4BQ~IS0qk97ejQa6#?c_c@24hTg6L|P;QeX$!C#~7dYjbv>E5x(#5LT~O
zCxbh?mfauRfmSX?f<A#58=jNSeE{S$Ka>H|Q9H}rep&BDFt|h9gZ7;m3%X}n?I!LW
zJp=58)PCPe)34@%^}cZ5n0R1)jF)mffmrYA&{?)X`a{@HcRg7c<ovN6RL+m&3aLS$
zZL1f?h9#3mu8%*ZvUQLLSjyfL-aW;z?+f=we^au<`0kdYdoSD{x82e8hp72^y$^L@
zN@7rcg890)8nGl+RVH;yE<wnUz#F>q-2TV3?pnikmDGtk)vE-%@Tq*u=HnqP+*Kl3
zRprRE0An9!XI;9oRi6{Gu!}$e(jpu;($^~yQ$LmnJpi6_Wj^LEnB?v{6wKF^64O$p
z>kE+F{zw?7`a`l{z4%)jE1k8KBp7sfwZlS(H+>PAHkoVndXA0z7W0oGv@3<8@1<Y-
zEkuice{jQ&0y=YYr|Quu!0%s}b2*+L|CV?d0l}0ea#loEx`b0Uqoekj%Uw4Nd_3N+
zc;|54ihTU~UAeiZkU%s{5`r~6G(r#{wLNc#Sw041iC@?q_|DPkV}~{zX2{5CA>9c_
z=@>8aoVk#pat$%vl_j{0le944ssNx(jZAGZEuM}lT~<K68m9Pp*vzkv)k99|31j`l
zzs}ryo=;$-gkOvfWQKPuP|Z>K>EWKrkdSv?oOgeMzT}g__k0QZ!(^8Pf={i}gA$;H
zrYYO0qI~KEcB&C?8a}K#zk~0xy$Gh4=V(f-#^cwg4d$0Pu6OGez(uPFTyYTPWRKd`
znBD6;H^i-1k@s-!3PH&Ihr%#GDu$~AK25BD&hx~<v`xQFGXYMc0#dYzZuJL+g8Vqd
zx;-Z;%{~8-08_Lthpe5FfE{^ueBtIk@Z=}+UU|NrP@dQ|L79kYG?>1^0)(PN!mNh9
zMz1(_4oV582~Jm#x)0T6I$Rvw!8RbhJS#vcY?)c;5m;p_Ja)d@!+xcoUyD7oIR7~i
zefFt7`8{j1Eqb55=i;I8H8!TNf#(%FMW=u|_Z|n>f-Kck6sYDd?_r?KZ=oY)F(K7$
zKv{ijUc|_W-mYjUeIyWm_7#Gr5Hs7Q3yG~RJ#0uC$d{X)o5cd+(Z^szw??4}AljmE
z(NDt4S;O|BHns*lF<2x7AGY_qK!}~oBBWg2@Q5GxLE+LayEekqhgG*UdUzqxV{Us)
z=Fa0GRQeb0k;l22VSjL8sqj2yN+}*UZg;yGHkS;}aegeco4DD;qdmPn`3bp#!Q+!c
znQ3M1f@~@-Unh{$w0&%j<O2#q1fh^tH*IgmaOzS`S-?v8j1M!Li;Y!_28;&_`!l?c
z_fYBkM+7?{#b6(bmOA>M#megRAQuj<|9;RF|MjbG<Sk#{?U!H61*dN5PdEbb=QKUv
zEZ)K~dG?+gJYFHU^3NoC<xN)mPMP%y6t1ewL$zgEuORIX+LIO0_QJ%kOJXUD9EWSI
z{~ubqSyo;wO%1V-n;Ap3l`cSV$Am+By2=$y#iI_G^`xK&K~rO<Q*Q?`$*Eqq{>FHK
z2TccH8^gZ6gOeyXX4g!C%w%iPRr%4U&~QL^mmixUGe*P2H4O{$tC+2p$>)iPWbkGB
zhG6N`Ur2cqmRP$rtswq|DujO~TMd@LQmCy@tu^y|O&XUO0|GoPwvXvBhh)RDUh+88
zSroKkU(VH~Y43)i!(l;0BK(y;L^(Dd1mq$o9GN0(Yl6rdpk|`|%m5Ob3x9%hkSa22
zC9hm>f1Uyi0$ze)O$}>6BYPz+bJG&E=Bf#QHJYv#nzZA08wAVB8WPm~NT8mpNt;Ha
zdyxnyGv9xjT5XNRZ&d*%W5z=m8Npx_hUOQbuxec7R?b8(yu-U=>2bqmX3c{zDvA`6
zs@ue&)CzXPH^~$4v(F*jG>~}<VH}r-63&#{cLLdkg<D9}7`Ygx!jSWDvXcqu2Ii%P
z%`nPHp0!=nC^WK=uux&x@IsXngcD`~aXd6D=H?(`5g0;<B6!}U+|$%?%CiJyh03G;
zgfi9{V4Kj}$7IuR_s0;y&8>nAH}HKT>Mum4y2cXJ%V%Pc!7x3K7(QhPF432#kUoki
z`1jr8;pDi_S#fZ?sx|ws@orLLG#4)W3pl1N^lj9ID)iH3kjkW_`1UO>C%uyR4wCp(
z4Min&+C&A#K=SE*%RI&UFdi?Hk@0Jd36<gjUoBTbF;uM--jilz=K`V*(}pBpMex{M
z$`#b%NRiD!s?A=9M<9S`|D0LOHdRf{z;-rsS4)}ZjuP$xPbXWSwv<k%=Hu3Sib=C|
zOlQj!TiYR}hU$06co9SOgT4a>xhRZOx<1SzeryF0GFc{#mJ!L-uRzQtuGXvF!&W+2
zx|Ilf!Mu8n_H_#jenwy4AlT6iE*BC&)p7}IH1)&~WHsfyr9AIcTC0TYay8-vS1=<$
zuve;nI*qvxXdUa{<;{^Pbdr<w*MQ^|)@5D~lCyP(<7)3OLR1a>XXbX?tZKq?+Ei2v
zzTlZ|kwgp@ZN+NRX)|{MT_>Eiv;8cs_J9}F93i7pQvEgeyzEj62gXiYX}Op2C^Q_}
z(bR=(R~n|u%tLFERUo7(nzOawavc%zVMmM+&fcfVc{+=v$u!z<V5%yY8k$+iU@jf!
z9K^}I?|N|2JCrpcj(89Q>Q}34U=KAU?JyiwONqJE9)p2Hf645+Ws3_nw$c;MxHU^Y
zbm*3B^~*>i(?iws9K+PC_n>?!s~Y=5K}#&<Y&INhw0@zp)GKrKvT9AnVQ<ProuM;q
zKftPIFwkl4*fa&+fl!$qfD!7a!lJ5Mn^MTnr|WkeI~*<b;Riecsutm;x&nGoR3i%L
z*K~#RI%Ywl{VdvHX;ng9{(G41X2xs*mbUYRB%6*P9#~uxxhG5BLfRrhHK{Dk4>%R0
zN1)2FKFO7w8Gd1DDhx6+c_(mQ<eFe~2yr%@<hDz4sewI#H%_Q?kJITJfUD!uXUuIa
zhWMrk&ms)x61$E-NfTG{)jROG!2uQGwsf3CDuDY|N1{%`C*x{mHGAy>y1jRwBN_hr
zR3N$P&oPB@X{=D83fcWJm?cOu3VT9r#LtF)WmC&YqH65ZGOsTrg4bW4(d)`w^s$VX
z7Dzvx`ZwznocUAY)pf|5TlwaZ=uO{4(7!l9`@V}f_NJ*wP<%!ZilJmU!Rf;tIwiHz
z@x%GWkGqd&3x8;R2*{g5p8e10r_0MP*G$kX8#@vjw9GfynU#3zN<D)<+!{0VXdg+Y
z5Gt=sQJ0l+B+8{XfR0Cqi>5l8MfwXhjOn+0-W>ZELvl_-;q>m0&~QmjBcpT>4U$It
z;QxH*y2SV2Ykx!tc=Ys(tPJ2Yvuoh}WF?yM>}zzSSMRd7(fi?i;~YQGB|R2*XLot;
z`*<sk@b{!0Yl@E`Q<sTIJ3XfI$Abt|T?M<`5U7_z3d%^0dAQuD$QJ2a_}!Lbmhe!i
zK6zL?ld?(#Vn!6-C_J?!fE}wWDVQSbUR#XxoB1&-5NN$vTxL1gWKjBs&Pi=OQv6?2
zaJwi}Fd&)<`Ju2WkM1y!gjo*jTzx8q*)$!X8h?7OUZkcU)HJJ{q8XW^4?jkzY7X9j
z^vixZL)5&ATncKRJyE~}FVhvg;x>bN!4|s1Le=kT>8wvE4#AIEX_>lFlkQE+=0&r3
zX)g=$<)*%%Icbe$jTg0jXmJkY$(?B0E_u%KlgJRUJu<bN(=Gu?chY8w7<^W*NBX^6
z(^Wg@18cgMAy9OTL)aXt7il_r%+>YILX?ehjyaQ}9f+0M&`|Nli?d`^y6!>jhEn$@
zt__N75Y9-<&aF1V54Zz20q{QJhd~CVT1{i}v|3<iIX0PoHxo-Y4~AMulcJCC?+F+Q
zNN4D89`YTqN*rQ(zcNi1Q%n?x@2>?z@>=Qmhn}+9vTJx;JKELdyj4PGaI7tkXZ8V^
zwytlX(!dC5(XE>ow12Aj@yA7eq<iyMl5+O8-s0(dk5zf|=s5j%2Mt1*_Jo4&iu+al
zaYMT>?rV_ri`BmOICEOhWjo`Gf}mV41~5;E{E<_el@(h(Ywe5qluP0v_t}2_eCJ@L
zZ&WCF(j$W0#b5VN=P!z1UjQJ_mvmd|fQPJt7z$02)*g`#j!E>IR_5+qv&>0p&2y`N
zUmCCo(*nx2Egm-En{c);hSvMz;&e@*Ln<aBOYc=FS$1fZkobnJA~#9P6@Uj*@H;=Y
z4Oua87LX4bC!-`87>efoEnJXXmDavH^RTMLz3eYas~7Ko_`J7mtH)<QD~i5>2(nd0
zHjlT#=(E?##GcQ&sZ0gEy~Z@t{@0^WKB~W}7E;nv>Q>V#zluPe<u@THRw3yRsll*E
zXrvobH57@llG{$P24yA<s7*@KMe8U?z7r;tRq!nI5bfqtJPTcBvLq5(c{IDs(`|GS
zN;LV5sFzCA5LKd1A?zl7DVXtWyJXhVFTc&l+k5hC|0%L#`>vyYHUS7TE+W|o!NX1H
zlS?E=(ZF{BcIwA5ffKYdZaNtx3)ZqH;lw`~E`aHYSIABAGEUPqlZnQOzUR%CuXqFT
z=e%U=1%s4q=ZJP$6+^eIdf18$Z0(F-a^aAp81m~=4eU#R#<7{J;D?tL-og;s<`jej
z%jHtZ0VWXDHc5E+m9kCGQqq1(2^|oc!9XdqEz3-!x(4%xR0%o29w43oWLd<V<_t+V
z2Db)>+bm{*wsv5wdEjIN>s`=i97tJuegPx%Y*RR5!=#?$!SyOECICP#w>cTQ?>1y}
zeSEAR1yc0U;x?j%^S+bX&#(#(%p9f$%L%`vsvq>%_YIa~EHW3KX`B_}sSZVsG=&X8
z0v0m*JSz*pyJenVbocwbTB4Qy&5ME|4Xw7$hbyH0_9%TKMXXAb_6AyUi@8oWX*WBp
zGf8(b+DMC!onG|>e0y}x<~oOZr?!jc0V_$vM;9Dw+=P0<&d6zPh9eu=E=P%cF~&|J
zJ4I;e;Ij`T&h9lq`XpW;tT_l6V>r@e!w}(%KuwLM7O0MD*cL(9g^*T>L@Ef?=6i`Y
zd^+2zM(h<HA{T&E$ldGIdP(RMKffnmYRSJ{@2Kyo;Hu?dnjM$;VtFb3gKo&oSI*bN
zptUgPA^g+=TaG_t>2ufmPPYjdec2?oo#1n)&9K)EW?%2nU!_B#909c^R+P{oUCr9p
zlTl%L)lXdJEX)3QE4?6ywUN$a>nvc^2&-wn3Xyr|CbD#FW|WeC6|FTWuT|XEWaGr&
z)-b(nnJ%?@TbsZ9b?XOD+q7=mr(=nKchu`x$o?44my0S!6C+tF^Hk#~rkhx@=M?nu
zaEgfFr%9rxMhEPK1X!7_JA695fF7Y<-0+nB_MVWIPOAVK!d^s-@>~eV`_H5oN5G98
z{d4yeY`N_OKQ6L9qPFe6!?o-}_FJlLh6L76W|B%5Sv#e>ln(xgjIs}S!VyO;C|Io`
zDEi9n!Uh)fR<!pd{sA(REwH|sr8w{=;1Qw+t!A<xo^0t&*oeaBy^L(M+k7Uy)C>uF
zwN9RDs!ZyB_t*Ja`$13&cXRSK&GeFTGCU@`%6!AVh&Sb`e50XSBY44}5k&m4l1g0t
z*bAx^?Nue;cR`)KHG%fK!v{G|Nu7<ct9n^sN#>b*#;G3y!AIVttB3nOiHf0Amh*~P
zZl+8(QXo@>PM0ce{txU`fo&GrPNLG<N-Dw_Ftdy$!b<OIZv?_E`n-iIbkdbTlm<D(
z$s)LyXv6P-sM%I1J24G9uT8g+SE}XI0-Ls@z*UT^znqbNo4tzS`SF*Tg;}@xDZ6`i
z^k<rXW<T`b@v07B0`;^)@~{%MZ_pVb{tKBJehJsXDn?9vdmn!OOuxGSFc_9J691o4
zE`}$FfT+?#AX2&lNCg~9hFhK*WL8A@8K)xcrW3OU@`tjktu+f(BMhE*_9C0F*v_&N
z-t*&O^~pY7s~*m;K6Xll&4~IKewHCsQsy9_POo6+x3t)xN6W>+tPfhSQmvNVlCSKT
z{_Fni>QS;Yo4xFqWyxe0HUzu>U9x-H-TFoZW76GBqg#|642(KUQOmVfH7E$r?xwTr
zDL8geYTE*Zb|F+tBEC$mC?HS_!($no>C#Zp7Lc9>PO>T3<uW!Z!rp(DpkZO52i1~o
zD-!fQ?Uy&K-}BBSn@hoTvfUmWJ(CQ-T%}*em($=|9mimvAft)GWGlpRPpdp8Q8+e=
zv?ZA0hrMOu58C-~K9U^}(4}Mf1imy>#$~AK1iNt^6L^Mw;*Xn>#p30kB+NA*^0fh{
zxYUq_{r?;#r9_o*Hd+em(%31T-~dP^Y+KLEUArC7&4Yw>atf4ia>ETxQT?Qvqp(?e
z-BhvIe0vz-H><&EIVIsd2sw|=Ky!kWwq0cQ_;}+u<I7ntqo|+1T-Hk|L4z&HELWp)
z%Y2gy9EvA(miE~=u2%?zJws@1*GQTuv`!d7AXmvsF`BzTAW9iD2o5j|cHbP=UsEv`
zfguxm11^xgP(hOUo{HL;@5He?HvrQc)4XH#l?lU6sp)WTI;G3w^|e{oF>hQT**jgQ
z{4}s>g^!{?rR_@dr<tR5FZ7?db2v9m0Usy)<)h#q*)J1n8!Nnq(}h2z^_O5|7_Z85
zpNoYP`fjYk#5BpE!6ZQ_Gu~U~c{8TUHd28JT_z(GbZ<~F5?0<u`G<G$2@t@~BBuVu
z3g3zSN;}Xzc!+1o?=|VqvpChr^Z0~9&fhN5Zt7xe_INL3thmg>74G2Hzl!{*4^ccy
z8p>54pzeprMU$4o+-oFG@i-3~yoOiX50T&XA)S=qAb*JWaD?-`kFtj+z#LRdIF!Ra
zm;?BZ^}dPou)z9rjI5i2Lw}2WkQO<rZ;BXc==6l5o$sf}P54P<_eeY)?6*<ZS<)%E
z?bS%5(csQ((qW0whnoLSvh3O!TnUCnM>rpv8=Uh5zKhSYZT@t|U9lh9u9R`Xp{$Xg
z(l$<+bVMCh6NY2cJo-0&2{tv+LHH5V5>2(Z52hEhQY6z;%&R;xrm@dzU#G5cMcASn
zgyhTjh?)wHN;6I<edVw^Y&qT$le?SN|9KSXXsc#nP~{Z|2~+?p)6LzCL#?GNn&nz_
z=xC}#4I&pP)fp^Tp=Y2zg{oSV26U*#=B%VgFn6Guk?6=gcxjr4k4E7Gl@q^X@yrP8
z3mvvb*XU@O7P0WKqq#=&I1DTss5S}#F~?Cp5D!Oi68Boxf#OS_2$Sc`3^dOw*Bdm_
zl(HV=e?8SrS)9Py({~@S)C2z`*2nH2I!FGJdjR0Vp9x#O2LHIn4>*>N0{<WP$|oQ*
z@gM?nn14q0rCt~zEo2etXQNRBz;LYIzL@6(3|lv<gje~CTT71C6(I?6bgVFW)bz@k
zYI-GzOHuD0VcheE$JFlXV*|xTgfx-^AH-WL%XL*+>*d~-U2Id?yNg0>`I=f(1k7r?
zceR*W>!v!-u#_xZ+6=`Pj%#BDSijaX3=Jd8omG7kPIt~WZ{(_Iax%AWS5NKC`W>RG
zhkKpWvg|FWRex+IoT#&Xy&CMTz5OoTB($aW*y^d%R_=`M)nk}X<wH~c=RI~j^c5tv
zNC+G47FPg8x$wxc;M_dCp>HoXwSD4LuC^;$c=>l%<w+a;Jmw$ZF-oN8OOKz6rmZ)&
z%`1Ij9_)JE;_FdGmpOK=dhQA`yH!Acs|a}|=@08qB4)SvOrw~?-8&0|;S4c#N}QkD
z6qlV9Tet}`$b<0(K9mF7@z7YaH+$@Jr*ituJZN41g@(NCefoZVJ=Z!nOZ8tv9<5$i
zHkn^%Rd?;y{cBl~FDK5`E4msvZ>=n<(zHq!S0O@*(=T&c(C#E{-z8#3ghD5WN=^55
z7Q0x(#jFwu>y~}X+2Ugsec@QK*v+vRSiyF^7q$j_$M&dq)}P#0h4_`#Cvs~(ZLJu-
z>O`!aUhP5jdl3Cb#GI{AY+V&zRbM9W>I&;hzo|sw6)AYS^RKMly842iW2<v<1Qaz*
zkL~ugpH4*-m@~$%AsHoL!8U6)A0;+hUiC%MdM>zjSkhF;7I=Krs^6v-6|E`T$v(2R
z2?+(<*l`jzQ+O>^J2x&$Gl9{1S(AePdE{st1%4TZt{ofwHjsS!E~Z!Z-{X$)<<GGH
z3}Gd*r~FMVTZ_j7b26getLV`9sZ2=V9q=f=4)Ub`vWCD1%!O<L&<^}O=orvvpdDZU
znlDoT?ax9&7(nXVfkgKXVRx>^W2z%?s8KI5ob&_cFnZjW$LM|F=RG!|d`{DNZo5i=
zUYOs20s35HE<>mg9;C?6Kh$*}$K(qDQ~@qx-a?5!yFe9xNZ>=VN6*Pan75=Ofb=#q
zmx29%-VRy_1W*@o)V3L9p+Ok_pw<E|bP6Iw*ocM$`|UCtv2YW!5eN2W7m^@FmEoo+
zGJa-TwK(IAHBN{Dz0kz@u^ZXEy!z6bX0+*ML;;yRO#1NPwdTEvztP}2sLT5~J2vhf
zK{U-YmF|CJq;sB<9tur0Xdt5t$tk8Ai)fr2ZL%4j%%D&lgK&`&jDWcZ!s!3c^^%H>
zB1>*K(e-<{YL1X{&FG0lZA_l1yY)I{z;ksVlOBxpvAs?EjavL<lJ;x^diF!H0UIzY
z9&^*hSpCuFslRcyycwdigAmtlbG+o+{WSIF_(8WEx)>6e1ck1WnokmQ+amt=T&<fM
b3zGh0(lwF)<5F&_Dfm%pn>I|*Bmw{cIRbs`

diff --git a/public/fonts/roboto-v15-cyrillic_latin-500.woff b/public/fonts/roboto-v15-cyrillic_latin-500.woff
deleted file mode 100644
index 8ae98f2dea0168496940f5da06f207f9320b7a90..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 27228
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

diff --git a/public/fonts/roboto-v15-cyrillic_latin-500.woff2 b/public/fonts/roboto-v15-cyrillic_latin-500.woff2
deleted file mode 100644
index fba67842e9ec56c5db214bffe25c41a155279ecf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 21788
zcmV(_K-9l?Pew8T0RR910970S5dZ)H0LOR$093gE0ssI200000000000000000000
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
PRroNj+Eu??i30!thvg({

diff --git a/public/fonts/roboto-v15-cyrillic_latin-500italic.woff b/public/fonts/roboto-v15-cyrillic_latin-500italic.woff
deleted file mode 100644
index 560968d16c25eff6ca703abb98fba70550f8c3c1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 28464
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
IH+C%C05a0N;{X5v

diff --git a/public/fonts/roboto-v15-cyrillic_latin-500italic.woff2 b/public/fonts/roboto-v15-cyrillic_latin-500italic.woff2
deleted file mode 100644
index cc41bf8739e1e62d615cc55c943453ae949a0ead..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 22892
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%0A9f5b(XtRWHiE+KafjTpbqc)(-RmqMNNaA|c
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
bIX=b&3FEfoyu@)X7aQS>(<MYSMgnjECCXWZ

diff --git a/public/fonts/roboto-v15-cyrillic_latin-700.woff b/public/fonts/roboto-v15-cyrillic_latin-700.woff
deleted file mode 100644
index 7d19e332d14bfe2392d82a028e43169b8c6981f9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 27136
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
T;ui;s<%=_x0su;QBai?9_swu6

diff --git a/public/fonts/roboto-v15-cyrillic_latin-700.woff2 b/public/fonts/roboto-v15-cyrillic_latin-700.woff2
deleted file mode 100644
index e2274a4fbb782bd5b894f739f674d60338f57f34..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 21560
zcmV)6K*+y$Pew8T0RR9108}^t5&!@I0LPF308`We0ssI200000000000000000000
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

diff --git a/public/fonts/roboto-v15-cyrillic_latin-700italic.woff b/public/fonts/roboto-v15-cyrillic_latin-700italic.woff
deleted file mode 100644
index 1604c876336bce4c40da45585a40b9b79818e847..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 28328
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
POE8uK0Dg}pQUCw|>fp|Z

diff --git a/public/fonts/roboto-v15-cyrillic_latin-700italic.woff2 b/public/fonts/roboto-v15-cyrillic_latin-700italic.woff2
deleted file mode 100644
index f950ca2aaa0aa1239c6bb9314b28324c960291d5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 22572
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
Tr+wdk&AjA4<AVt=U+lsU@|(rt

diff --git a/public/fonts/roboto-v15-cyrillic_latin-italic.woff b/public/fonts/roboto-v15-cyrillic_latin-italic.woff
deleted file mode 100644
index d76d13d6a0d4bc4aaae2707fe7b96b4de441ff58..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 28388
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
aAfiBov2+u^3{WgzhOra?=^8R`0002kBm$TK

diff --git a/public/fonts/roboto-v15-cyrillic_latin-italic.woff2 b/public/fonts/roboto-v15-cyrillic_latin-italic.woff2
deleted file mode 100644
index a80f41528db0350f6c7840c2ca269e61fc381e78..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 22716
zcmV({K+?Z=Pew8T0RR9109d>L5&!@I0LR1t09aN40ssI200000000000000000000
z0000QffO6IejI@a24Db$FbGTugFF!o3WBpZf|3*xf>Z%E0we>991DdI00bZff+hzb
z41rr4T(c$Y*oy+X15Uu%Du623F+<#~n#dvqPsTA5a2}9gDgRw%|9?($B4e-$w*9KN
ztf0_#kcpzMQ83$7iHR!ow&!T8XQ4`{z(<AW0gEyfNeXoahG!tJ>wVB@$DbQ(@#w<E
z>0m%XQo4~;$fu8d<?%gfir%8qPk|N6B(q6+%9c%njhmH%^;jxSMN+f{|D~eiH_Hn}
zd+pS0Er@37!g(udsulR*6}SyOMgu+asli&7;oU1CC?H#5S=ERN2f|hpdqN?r{*5UN
z@pJpTcgut^s)Uvdp+!nSi3rKo28omkv0x$tX&W1`;#>8@{-wh6p&jslZZg?@GQO=+
zuH{~6#hRF*b6u^Ik|WAx29NM2`}_UA>|Df0@R0(5E;3Pxa9lnM#*Z*7d<!{i3>(vf
zdDR|(-`xv(!I*oR%*=xBbXg(kB-KF$RTUYDZg-vk(73??6#GNLkF{S^y%7?mel^US
zla%3mh&ll`dui+?^n+{dTTQ5jtT_*6;LO_|o*p1Yw6P^Y0sYrtYQ-C@=*-F&SPIHF
z_u15Uy8mVlq}U%AdZ3DCZ%(?4*DMOKR+`3Xbw!h~p=bj|^#QBh9YgiG4F~`d27bZH
z`v2~o0pZtpIp`cbI{D1?9%FZ^>Lq7teD#g{xH^e3wd(X+Pi^B7kJt*_19N<7t#{AP
z{*wC$!n73*A;~KskE)dw7C6bw?iB9W`0VOurU$;-S@r6ux^LyV5J8B31lP+O{=fD*
zy>lq~QWv37U$|Jg33cZVD)mtmiixCEqj4&-ppdv`4DkHB{AS<X?XC#5fj(}81JCg&
zndE=Uo7vVv>!A-ll&aQfgyJ9!p^u|<i~0xc`CnCY1?hIzBc+d}ZDrUjrL<woG?@TN
zoCQjb2<eIxU$rl#G<<;a;|FyYk#dUUl-AZ#>bB)&*t6{!#{8e@vfWX*kOfY;;z}1C
zcklW2c2_ZfW>?J2E<(G~fdVFEaY+&v#HC$<{d5`5Dd`+i#g)!l;DWe>E@hlzDl4}x
zI(MyI)Rlk!a(aMqK=kiXmz8Dr!)#2qUN+{Y8xyQR?f%iW|1R|_+KMin=@|aqYiW~;
zl|um!eLTDuig_U22y;4~!2sH*eVoF74s`cEu0^hdR6>xBr8w79GA%f3IP-p4SL;Mv
zawQf*$QjFBV;e3nwVCo-6Y!*k%C?QB$6UIqyd#!CfcCZwH7iN`{~bF?XXY(u+Xjp=
z2qXmdUj+fk7H2aFs%$_`!axO4NQIy(K|2KPZbEz2fSQ|7r(V#2po6oZLymxsnFlRe
z6FTiI==@iqM;^nxiUOF%sDf#W7MPwmf%bO*8Gf?i?r<j$KOlU3L1qe2dva!MGB9{X
zWOf>`fdhcQroCCW!d48MpqF_16Eo9*@aiN0x;Th~@w|z#%6FARpMz=NUE7}S*)r^A
zZ7CGMePcM!?{*+)cnp6az#XQ&!*|3~d994xs;&OIFp8%)l&Y!v$DSIugtqaLH}%i&
zIXWh*e4OK`5_T4IJ^yKcj<5MulI~B2R9F90n?}>IyJ=-J%+HbTlzZ5%0D6}jYHAKT
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
Hlmh?&>>Sb5

diff --git a/public/fonts/roboto-v15-cyrillic_latin-regular.woff b/public/fonts/roboto-v15-cyrillic_latin-regular.woff
deleted file mode 100644
index a2ada2f46515cf2bd9bf6c411019a6e4875e3b5a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 26924
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
M6aeWOGH(C?0LK(1#sB~S

diff --git a/public/fonts/roboto-v15-cyrillic_latin-regular.woff2 b/public/fonts/roboto-v15-cyrillic_latin-regular.woff2
deleted file mode 100644
index a3b35e686d85a6078289a55ef3a458dcbdcd6e60..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 21608
zcmV)TK(W7fPew8T0RR91090rI5&!@I0LE|t08|420ssI200000000000000000000
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

diff --git a/resources/assets/sass/_blocks.scss b/resources/assets/sass/_blocks.scss
index bd3f8ff4e..e3a0d6952 100644
--- a/resources/assets/sass/_blocks.scss
+++ b/resources/assets/sass/_blocks.scss
@@ -134,8 +134,7 @@
 .callout {
   border-left: 3px solid #BBB;
   background-color: #EEE;
-  padding: $-s;
-  padding-left: $-xl;
+  padding: $-s $-s $-s $-xl;
   display: block;
   position: relative;
   &:before {
diff --git a/resources/assets/sass/_buttons.scss b/resources/assets/sass/_buttons.scss
index 6e03c9217..8ee7f596a 100644
--- a/resources/assets/sass/_buttons.scss
+++ b/resources/assets/sass/_buttons.scss
@@ -31,7 +31,6 @@ $button-border-radius: 2px;
   display: inline-block;
   border: none;
   font-weight: 500;
-  font-family: $text;
   outline: 0;
   border-radius: $button-border-radius;
   cursor: pointer;
diff --git a/resources/assets/sass/_codemirror.scss b/resources/assets/sass/_codemirror.scss
index bd85218a5..e281d4c0d 100644
--- a/resources/assets/sass/_codemirror.scss
+++ b/resources/assets/sass/_codemirror.scss
@@ -2,7 +2,6 @@
 
 .CodeMirror {
   /* Set height, width, borders, and global font properties here */
-  font-family: monospace;
   height: 300px;
   color: black;
 }
@@ -235,7 +234,6 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
   -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;
   border-width: 0;
   background: transparent;
-  font-family: inherit;
   font-size: inherit;
   margin: 0;
   white-space: pre;
diff --git a/resources/assets/sass/_fonts.scss b/resources/assets/sass/_fonts.scss
deleted file mode 100644
index c8e8ea833..000000000
--- a/resources/assets/sass/_fonts.scss
+++ /dev/null
@@ -1,102 +0,0 @@
-// Generated using https://google-webfonts-helper.herokuapp.com
-
-/* roboto-100 - cyrillic_latin */
-@font-face {
-  font-family: 'Roboto';
-  font-style: normal;
-  font-weight: 100;
-  src: local('Roboto Thin'), local('Roboto-Thin'),
-  url('../fonts/roboto-v15-cyrillic_latin-100.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */
-  url('../fonts/roboto-v15-cyrillic_latin-100.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-/* roboto-100italic - cyrillic_latin */
-@font-face {
-  font-family: 'Roboto';
-  font-style: italic;
-  font-weight: 100;
-  src: local('Roboto Thin Italic'), local('Roboto-ThinItalic'),
-  url('../fonts/roboto-v15-cyrillic_latin-100italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */
-  url('../fonts/roboto-v15-cyrillic_latin-100italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-/* roboto-300 - cyrillic_latin */
-@font-face {
-  font-family: 'Roboto';
-  font-style: normal;
-  font-weight: 300;
-  src: local('Roboto Light'), local('Roboto-Light'),
-  url('../fonts/roboto-v15-cyrillic_latin-300.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */
-  url('../fonts/roboto-v15-cyrillic_latin-300.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-/* roboto-300italic - cyrillic_latin */
-@font-face {
-  font-family: 'Roboto';
-  font-style: italic;
-  font-weight: 300;
-  src: local('Roboto Light Italic'), local('Roboto-LightItalic'),
-  url('../fonts/roboto-v15-cyrillic_latin-300italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */
-  url('../fonts/roboto-v15-cyrillic_latin-300italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-/* roboto-regular - cyrillic_latin */
-@font-face {
-  font-family: 'Roboto';
-  font-style: normal;
-  font-weight: 400;
-  src: local('Roboto'), local('Roboto-Regular'),
-  url('../fonts/roboto-v15-cyrillic_latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */
-  url('../fonts/roboto-v15-cyrillic_latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-/* roboto-italic - cyrillic_latin */
-@font-face {
-  font-family: 'Roboto';
-  font-style: italic;
-  font-weight: 400;
-  src: local('Roboto Italic'), local('Roboto-Italic'),
-  url('../fonts/roboto-v15-cyrillic_latin-italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */
-  url('../fonts/roboto-v15-cyrillic_latin-italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-/* roboto-500 - cyrillic_latin */
-@font-face {
-  font-family: 'Roboto';
-  font-style: normal;
-  font-weight: 500;
-  src: local('Roboto Medium'), local('Roboto-Medium'),
-  url('../fonts/roboto-v15-cyrillic_latin-500.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */
-  url('../fonts/roboto-v15-cyrillic_latin-500.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-/* roboto-500italic - cyrillic_latin */
-@font-face {
-  font-family: 'Roboto';
-  font-style: italic;
-  font-weight: 500;
-  src: local('Roboto Medium Italic'), local('Roboto-MediumItalic'),
-  url('../fonts/roboto-v15-cyrillic_latin-500italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */
-  url('../fonts/roboto-v15-cyrillic_latin-500italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-/* roboto-700 - cyrillic_latin */
-@font-face {
-  font-family: 'Roboto';
-  font-style: normal;
-  font-weight: 700;
-  src: local('Roboto Bold'), local('Roboto-Bold'),
-  url('../fonts/roboto-v15-cyrillic_latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */
-  url('../fonts/roboto-v15-cyrillic_latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-/* roboto-700italic - cyrillic_latin */
-@font-face {
-  font-family: 'Roboto';
-  font-style: italic;
-  font-weight: 700;
-  src: local('Roboto Bold Italic'), local('Roboto-BoldItalic'),
-  url('../fonts/roboto-v15-cyrillic_latin-700italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */
-  url('../fonts/roboto-v15-cyrillic_latin-700italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-
-/* roboto-mono-regular - latin */
-@font-face {
-  font-family: 'Roboto Mono';
-  font-style: normal;
-  font-weight: 400;
-  src: local('Roboto Mono'), local('RobotoMono-Regular'),
-  url('../fonts/roboto-mono-v4-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */
-  url('../fonts/roboto-mono-v4-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
\ No newline at end of file
diff --git a/resources/assets/sass/_forms.scss b/resources/assets/sass/_forms.scss
index 866316fc5..cf7ea083e 100644
--- a/resources/assets/sass/_forms.scss
+++ b/resources/assets/sass/_forms.scss
@@ -5,7 +5,6 @@
   border: 1px solid #CCC;
   display: inline-block;
   font-size: $fs-s;
-  font-family: $text;
   padding: $-xs;
   color: #222;
   width: 250px;
@@ -33,7 +32,6 @@
   position: relative;
   z-index: 5;
   #markdown-editor-input {
-    font-family: 'Roboto Mono', monospace;
     font-style: normal;
     font-weight: 400;
     padding: $-xs $-m;
@@ -69,7 +67,6 @@
 .editor-toolbar {
   width: 100%;
   padding: $-xs $-m;
-  font-family: 'Roboto Mono', monospace;
   font-size: 11px;
   line-height: 1.6;
   border-bottom: 1px solid #DDD;
diff --git a/resources/assets/sass/_html.scss b/resources/assets/sass/_html.scss
index c061f9d64..27ca04eb7 100644
--- a/resources/assets/sass/_html.scss
+++ b/resources/assets/sass/_html.scss
@@ -12,7 +12,6 @@ html {
 }
 
 body {
-  font-family: $text;
   font-size: $fs-m;
   line-height: 1.6;
   color: #616161;
diff --git a/resources/assets/sass/_text.scss b/resources/assets/sass/_text.scss
index 2ef4bd16d..d38a5c515 100644
--- a/resources/assets/sass/_text.scss
+++ b/resources/assets/sass/_text.scss
@@ -1,3 +1,14 @@
+/**
+ * Fonts
+ */
+
+body, button, input, select, label {
+  font-family: $text;
+}
+.Codemirror, pre, #markdown-editor-input, .editor-toolbar, .code-base {
+  font-family: $mono;
+}
+
 /*
  * Header Styles
  */
@@ -58,7 +69,6 @@ a, .link {
   cursor: pointer;
   text-decoration: none;
   transition: color ease-in-out 80ms;
-  font-family: $text;
   line-height: 1.6;
   &:hover {
     text-decoration: underline;
@@ -131,7 +141,6 @@ sub, .subscript {
 }
 
 pre {
-  font-family: monospace;
   font-size: 12px;
   background-color: #f5f5f5;
   border: 1px solid #DDD;
@@ -180,7 +189,6 @@ blockquote {
 
 .code-base {
     background-color: #F8F8F8;
-    font-family: monospace;
     font-size: 0.80em;
     border: 1px solid #DDD;
     border-radius: 3px;
diff --git a/resources/assets/sass/_variables.scss b/resources/assets/sass/_variables.scss
index 3e864aaa4..18880fa5b 100644
--- a/resources/assets/sass/_variables.scss
+++ b/resources/assets/sass/_variables.scss
@@ -27,8 +27,12 @@ $-xs: 6px;
 $-xxs: 3px;
 
 // Fonts
-$heading:  'Roboto', 'DejaVu Sans', Helvetica,  Arial, sans-serif;
-$text: 'Roboto', 'DejaVu Sans', Helvetica,  Arial, sans-serif;
+$text: -apple-system, BlinkMacSystemFont,
+"Segoe UI", "Oxygen", "Ubuntu", "Roboto", "Cantarell",
+"Fira Sans", "Droid Sans", "Helvetica Neue",
+sans-serif;
+$mono: "Lucida Console", "DejaVu Sans Mono", "Ubunto Mono", Monaco, monospace;
+$heading: $text;
 $fs-m: 15px;
 $fs-s: 14px;
 
diff --git a/resources/assets/sass/export-styles.scss b/resources/assets/sass/export-styles.scss
index 72b5b16b5..19579004b 100644
--- a/resources/assets/sass/export-styles.scss
+++ b/resources/assets/sass/export-styles.scss
@@ -1,4 +1,3 @@
-//@import "reset";
 @import "variables";
 @import "mixins";
 @import "html";
diff --git a/resources/assets/sass/styles.scss b/resources/assets/sass/styles.scss
index 0b86051bb..b912bf7ee 100644
--- a/resources/assets/sass/styles.scss
+++ b/resources/assets/sass/styles.scss
@@ -1,6 +1,5 @@
 @import "reset";
 @import "variables";
-@import "fonts";
 @import "mixins";
 @import "html";
 @import "text";
@@ -23,7 +22,6 @@
   animation-name: none !important;
 }
 
-
 [ng\:cloak], [ng-cloak], .ng-cloak {
   display: none !important;
   user-select: none;

From 28a9bd514f65638c78b07380d75dfb01070cff0c Mon Sep 17 00:00:00 2001
From: Dan Brown <ssddanbrown@googlemail.com>
Date: Sat, 19 Aug 2017 15:33:22 +0100
Subject: [PATCH 83/83] Updated header design

---
 public/logo.png                               | Bin 4682 -> 5415 bytes
 resources/assets/sass/_buttons.scss           |   1 +
 resources/assets/sass/_forms.scss             |  11 +--
 resources/assets/sass/_header.scss            |  87 ++++++++++--------
 resources/views/base.blade.php                |  16 ++--
 resources/views/books/show.blade.php          |  12 +--
 resources/views/chapters/show.blade.php       |  12 +--
 .../views/components/image-picker.blade.php   |   2 +-
 .../views/partials/custom-styles.blade.php    |   2 +
 9 files changed, 74 insertions(+), 69 deletions(-)

diff --git a/public/logo.png b/public/logo.png
index 1803feebf53414a98b6d670e4d6746a40b444ddb..585f8895b4f26c872ac9369bd4229811e725b252 100644
GIT binary patch
literal 5415
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
L&lFXw>+<M-fQUL^

literal 4682
zcmV-Q61DA#P)<h;3K|Lk000e1NJLTq003J6003491^@s6ps4Cc00006VoOIv00000
z008+zyMF)x010qNS#tmYcq#w@cq##=Tw8bm000McNliru-~$Z}H6@O>mW==a5!XpX
zK~#9!?OkhlRn?h(zjMn4K@@05E?SkUh4NsbFrWn^6&zq573EQcfe~;J#gLp3E^@QR
zS|FsHm<ozuBp{}e0&<rK1cqw}+DC?t45cHs2xXvvfLxN3^UjaGc3jy6ID3&BknfL%
zv-h|6e)n46dcVv1w%|IFU@+(b-~&Ja0w5d;g(9`({^U9V*$coUB9R$0W|TVr9YASq
z0{vPBIyM*#`s}}3w{GnrImmI0KNt)K>PEI1zyiPvz#9sME&xDbVPRayjvade$OO<F
zz&-#e+1c4^hYlSY9yxNPc)i{L$#7<7W@#PR(E;rTAYQMxBqJk(06_9#0Mh_;a2#F=
zU<ZI?5!t2LbuR#fLZOm6+i)3^k&=?)wf`nrpX35YCs_jr4)kcce8FHazHVe+Y%+WR
zBoqo21Hi6byBfA{-~J^4;{eo;Qq>v&6Gh~6=L-Z7Az6}{naLX#Y_+J-@Arq()6;E}
zF%UoofFDGu<{*G)0PGZzu+lLUz!?$wNPD5N02m5|&fjR}!V?Sz1LMYx698Dge7T3@
zeI!3+^m2sccw1*$TAGLC{Uo<($NYihUG_1lsi|JYZamlh$krCGNGKF4Rim&OfZqUk
z7JxqrHB^h`Y!Nx2bleRf4Zu?XVjRbR2Vg-_QPKF09Xp<wIdi7$-@o6d?xXm+<mYNc
zm4O)_A1@?dp*z_{@{V%IljBL2MsaSK<cp4biVFsVG1tY&R<_auz*oP1{o=H=H0I^y
z`TO?m`=}btZK71Q2SB=rEC7HpW5#%=O`G;OfOG(NyS%Lx>(;I7+r4}DVgML5YLrAG
z5x=65kx(eaYYuGXN_#~lJY&X;h#G}I1@I1lPBs_5f)oRI2|%8RoKiYE0eB0*{ZZ=B
z<@W$y+q`-6zOG%nMlKO|313sDB^V6G=q7{Y%_M*4!d#pqxn$$UjrAOy`z^Yc2+92<
zJ8QaPNj^^U49PT-@wLtMzoN-dH(Cbr(xpq|Nv4wg#sxU5l*b4FShQ$SEXlDXj~W2|
z7m|s~mMx3XfbL0heFew8)TK)oF90MZC6zr(Qc{xCHlWLatRAWd$-k+Q6^)!A`3Onf
zgX}}{m<t`cOe5LQ*0p~9`kP7StA(;6DOI3%a{2;#Agspua%yU-4$wV{-@4(;)9v#&
zZ{F-B*_z~X1At3N7LdG0yPqZ`Q(WqqOY%pyj!~mV`4s4$8UtB>;~O__Y)Enr$<r<#
zY8J_RHM8R-*`MTgHPYRT=$#~cy#D&@9u4T1Nq$K)IZiTj;>3vo<q%0Q81z=FJ+EN#
z^O78_MwMH8dfSz*H)YC{0LgbRqvrz2mp}UGBhl{ZPLjJ>IdYEVQ~CM%9tQ@2Dx-eE
zV9-m_)1X0va9UcL9mjYSz(fGQFi=?n;1vKx0L~~+?=*ljEn2iVbMWB7hz8z21K0pS
zkK&yLkPBe4h#XSK-3wr(qKlO+YXM9Vkxc+FcI;SBadB}uZ&)hBWGFYf#O9wQn**4y
zK=xndCC(~7U84SL|9=U9l_D}OCnqOv(4axz0Jue+vl>89MD_uI-|v^=;^Gj1LE14@
zA?E>nx@ps<K?w;7CpCNmB62~l0%TD@(hkCtyahlqfXUTlwa$r1yt?*A04)KG5Rql-
z-vY`($_3E0nwPE=05e6TSmAY(&k$rE0Ni@(ttFEtP2%9egT2|=*&_hF4B*Gr_&{+a
ze<C7Zs)suuBF7cbT~)lhXAP0D_5d0IIIIP{+}UMkV1{H{lKY|z_Ed$Gn?=i)FOMhr
zu_5=a4B4aT?L{=u=fW=AdAkb=<R7aAY;X<J`Mv<sNZtyd4}doT)T@E}_!_`lB9Z|B
zZ@lq_hvY*59ubjA(Yn~>`0~7Y^WsR(RGwRHkcdhM{HX@-VS-LmN#09xrTQ&D8lZi;
z$xwW`7s+o~C$_BHuwg?(4Wl@czjhq6=8|Sajbicp{gL$ablYTf127gq57Y?&Yy~hw
zM3$(yN}yY}ZvB;6z2{OV`5Y`GMo$G56cjW{NJ#hqKsNw^I*f51z;ggriO3nvp?VKM
ztEl`I<zDJ0qY=r(IxA5oXGzX$*RGu&P-{UlCyH~wHzR69mxe;2u!jEx0KvL}T$a7b
z5RuOm$PE>L9|E9>8$~`f^qqONF#xtHmpkqT1^F8QPXgE_B6b+!F=a9un<(@E@M~oQ
z^GLQ9k+6vTAv-&}F@V_sPToKu9|G{2h%^_Gogxw;*@@(*0G7D~x&*-PvNh2T1(Ix~
zY|KAMzPotw;y6dZf58o4o2RNe75llHD{u5W16_qAA4p0{@{~*K*i*!D@JW@A^Jy3F
zMDnW|bj_<m!X%4Sq|$!Q7?L9{lOnsEd`q&-tKPI}ljvr|mRQFWxLJiNKOxy207PU*
zVq)Sw08#-QxDHIl=K!7)kq#nqPyzicfI?X15N=8#P63z>;BFClU+HS!wQJX5<!GPn
zxLoFK6_Z@IZQHgc+S_kPa>_M4qKA{zOCeg3{K9ZFFCp2yckkYMHt2UG&y)P5A~Vt=
z$~Z(K$wrP8(<b#ot_8lFmz$fbgWQZ{hM~UyA=%5}uJ<8%sv@2ZJy+&3jQE0mUP3~G
zhh%THDAZQ@nB)WYJx`rF)lc$QB>!rl>oCcog@uJWiTGENTQ29+*qLyzI$^uZi~cvs
zmbR|>^XGfi!cv>$6v<xe*RR*7_%Bq6gj*>knW>Y8!otFMlFKd=KVRbvqx#fMj4^zm
zEWH+E>(;G}NM;*Srpl84BRREY%a*!}{d1Cw4H?TPBs(}l8mUoK4O|4aJ+fm-_Eogc
ztsEhl5eNkI5p<uLzSS*n=~Qm}_U#Qx<{E~F_mNCkv0{Zzfrq;=Kjpyo+M9w33JUZB
zmRYK>(5)OI`JjWJKTh)RRh+5{liW-4e(kyelFz7x(XE^ynd*q=x1?1A?nb@`J0&G0
zMw=FIs`QdR?G_q7{7RBtY+Z{NFRn*&oSNR1Eqh5m@5qflX|M*_MK_rw@6>d)Bstq~
zuw+$4{r*GqfQCBWXa|yC8(ioD$&a^e*-~HA*MQ_Zl?e1JBx5!GcPNk0gfDL;d6#2`
zzph?@TRB7W2~|#UkyA6raqu>h9R>^-pkH_l$%6(LK235EwW?7yYjzmA{^w|w4mZ{G
z{S)193(@&<KU-H(QBe%7Dq9m;_$|rzXU&=wcTow52KMhOIPpBmJX#xo^q~1<Ly-Qc
z++hGfUS3{6IRSfJ=qMnW;4m4fv<lkY%1O1@-Qu8y8w_9C2PE5Q6}JsZ{=1I2UtJ{o
z3W_E=9<VvB%1{$27x+>7eszU&is@(oK(d|T=!=kCMDiwES4KvLpH?Zbi5wu=&T(&#
zDeAkXBAcBWh0^^b`}OPBPv@@Bko?S$J-p#qi0)9Mqr@@#GFPoyb(5noDBBR2b^6Sp
zwLK)!kQRPLa(vsiZFN)o5Ury63aOuMMt<f3q}?pP2c;g#0fr07A!?gL*RNmiCHYeo
zZ~1`a?e=d21`O~jR&d<lItNL1*B2}`P!1TrwBL~Yp{;AjjvY-%u2!a((ZojF)=<yV
z?cJI+YvR=OG~ws_73;Yutf}~NZ^O}df@Hep-FlP>Ty3DML=lG;+P&ROa%8kljUF2@
znVLsQPM$k=Zj57*S!y_9@*Hk)PqiqT$U7ukIT%ZpqNHwRJISXUgJ1}+TvUI_*hn0$
zjXfp{&PkF_YBwUvewpmzI<H>V7K7Pl2gvRtsfP|y3_+&yL1G<F&h99koHcr;Mm!!5
zRVL<~h>TTLJ^8S9wMHYNGCPZDZ7galA{3ELBGLrbZr#H!vK}!2o&fM*w8fuF_5*lP
zL|Tc+-bITRdDRR5BY@w!EHwHKKyE=nK|>LlBO>QX-bFGKz@K65K6Y2%ZrkjI3m3+b
zd_^muv~P5Wq4)HGBgt?V$>~)T7dcNds4rNwGB0ZkJ;|kdjAi7=kv=u!4;koMT@m%`
zuYTN3tu2K5ZG>Skha_JfHf)&35eeK|i9l~4Syo=KV8H@E$#g?gc$DP7IG+6hl`L>8
z#d=&M7z}!Ju-|qZJe%ZCw2R(Gt5nz|M*W#?&$Y$nzpeu0|0LPl*7xCuAI2!#`Zohz
ze<%4`PEJmo1LUQKFKsc&_Kr;i0o{Yly@a3trfr*s4<9Zhf5h)=kKMlM9khz*b%){w
zms9<?qJjE?^)Sgl8-@_xCRx^%XYJax^=Tz=O=j|blAZ1Fa!N{yBqt}w*lbUCYI3gN
z5IpR7z{d>Z5mcU|9*_8;^19AmA;6P8XU?2}W44(T4~0p7PO`1z#hW^2M@f#>!qydU
zK-J91gea7*b-20>l&fo!&-*LMF%Hwx&Ee|WGN0tn?BnwD^Xt>fh?_V$e<Im$%9JU3
za-*M$*O)jtQ*<XsZ6fehxV2gv*<D>+WJ!L0ep#$y=gyt=3>~6~T70@VK<}v-&DT0B
zP`?elip6?DK|z7vQN~bYsB4QlUo?N^^8KX@OBw7K^$QMq_j6v{J|bF~uX}q52?=Fx
zd%b$~MA<?U-4|#zCeUm6ZjU0$cq!SVhl!O3?u)9uQ7{<v*f~g&D-6B0e{<BybvLAU
zCrQ3LV#El)!^Qr%f&fpnw6OiFufD2N&k2TEr?a&7;5V>!B_}5b6wnf_Q=@0so2k@L
ziQ%-m-Qgntnr4+!rHaPAYG|5HlYGt*I=G+Y{~9_>xw*Ny0S9I=QG@IN++Rjdtefjg
zvt((QWJq_4XqBhUVfAbRJw<ZL)~#Fh^jmvgUDEm?Z6teBQc^BzRAU0Tb1Pnq@+wW-
z-Q#*@honb=zPSp4UP!V@C=?O^$jQkGkbK`T+<R0pBOg%KOC+EVNE0bH4U&?Q#N+V<
z02H@r(*{F^3}IGQRv<Ak@jU>K0chY-|Ca!s2T&v;b~AzJVKowHQ3)l#RM$unk#$Oc
zJb*_4WUIa7ZsaI{xgs)N?b4NF$Buab`0Sm{l`e{q`yCy9JFw!UaJ190y{4-P$<c-m
zgzjiPw{G1!XK~|JLwzA?C3G5J_M$pOfgbDNxe118DUzI1R8$nFxyJSAu3wZbzwO_@
zzdjHe(>x>oCCU37&mC74{hlOB&;tNUn>KA489jQm-6dx-fMEcdxxD6KwY6=jh@4is
zdH|S&%Xi!%fRzBoi^v|E76KRutIukz%lp_1AS5F1D!c3{EiLuHY8_oAP0Yo`DEGkX
zFv%G+X4tKfZ-dnaXq>^d_W&3pB5UlVF@RqJn1hSkHGcu%#VuR5?CR2`i*5T~1TY%F
zoi49is_r>gL{4bs98~*3iP|E{w8ZNiQw8ex7&4dDB%4i~IMKO9;(}rlqaCcKwP9%X
z0<D(NjU3)zY<0DWyPCE|K3Lx#D9y;ous3B6fYnf-jZ1Z>0lW?1O|5xWD*z`%<gog?
zHLPwqgAML`1Ayrw@`=rtMMMC=v9q~$i?cT=Nk6TUu81MOeZGQHhG{InPsNRs(@QUp
zs0_Yb?IXJad+q}ee){RB*|~FPs(j#V#d+O!w%G+B2|z<wU5DLr@_zuxOG-*g%*x6N
zXJ=>2?%lgRBI1SBrH$7t*t$Jedk0IkE!qz%rtxSsJ=1#tGHu49m1(f1zE4vnU^_rB
z=XH^M9KZrZ|Md;GauC21cK3ve`lr;iR9QP>ttDNgXV0FI9zA++$&w{;efsoyRV{Kq
zsH98%1y=vO5CBY_I#rGwIpTr!b*AFlw7yk&?`O@P>!zgzthS-Uu2TJY0CPm-n8ufZ
zTKeI(YHPG@n-(>#Z7=iz0P|pdmmpfMTLNp(`LiPOmG(jdsO4YZsP?YrHa~CNxN+%(
z2@`C7J_J@XtCm+deFuQ4cKgrKqepwg;qbM`mump@a{U4oKOcVyetuSEz&#Fr@4J?s
zxkmf-CnqQSM8pH_3mLT9E@uIF2v)bTl>kQCJyvaVMC)5%kvgyq`MJ;M3s0XuJ)-gR
zGa~YZW_~>SLR%+S@A_BN*fF3dGOksTS_ruP-CZBlSC3HJLZ626|M7?doDk5*!T<mO
M07*qoM6N<$f;h>!B>(^b

diff --git a/resources/assets/sass/_buttons.scss b/resources/assets/sass/_buttons.scss
index 8ee7f596a..202eb935b 100644
--- a/resources/assets/sass/_buttons.scss
+++ b/resources/assets/sass/_buttons.scss
@@ -64,6 +64,7 @@ $button-border-radius: 2px;
   padding: 0;
   margin: 0;
   border: none;
+  user-select: none;
   &:focus, &:active {
     outline: 0;
   }
diff --git a/resources/assets/sass/_forms.scss b/resources/assets/sass/_forms.scss
index cf7ea083e..d372359cc 100644
--- a/resources/assets/sass/_forms.scss
+++ b/resources/assets/sass/_forms.scss
@@ -248,15 +248,14 @@ div[editor-type="markdown"] .title-input.page-title input[type="text"] {
     border: none;
     color: $primary;
     padding: 0;
-    margin: 0;
     cursor: pointer;
-    margin-left: $-s;
-  }
-  button[type="submit"] {
-    margin-left: -$-l;
+    position: absolute;
+    left: 7px;
+    top: 7px;
   }
   input {
-    padding-right: $-l;
+    display: block;
+    padding-left: $-l;
     width: 300px;
     max-width: 100%;
   }
diff --git a/resources/assets/sass/_header.scss b/resources/assets/sass/_header.scss
index ae8dd3ff5..49bd74b07 100644
--- a/resources/assets/sass/_header.scss
+++ b/resources/assets/sass/_header.scss
@@ -12,7 +12,6 @@ header {
     padding: $-m;
   }
   border-bottom: 1px solid #DDD;
-  //margin-bottom: $-l;
   .links {
     display: inline-block;
     vertical-align: top;
@@ -23,26 +22,27 @@ header {
   }
   .links a {
     display: inline-block;
-    padding: $-l;
+    padding: $-m $-l;
     color: #FFF;
     &:last-child {
       padding-right: 0;
     }
     @include smaller-than($screen-md) {
-      padding: $-l $-s;
+      padding: $-m $-s;
     }
   }
   .avatar, .user-name {
     display: inline-block;
   }
   .avatar {
-    //margin-top: (45px/2);
     width: 30px;
     height: 30px;
   }
   .user-name {
     vertical-align: top;
-    padding-top: $-l;
+    padding-top: $-m;
+    position: relative;
+    top: -3px;
     display: inline-block;
     cursor: pointer;
     > * {
@@ -66,53 +66,57 @@ header {
       }
     }
   }
-  @include smaller-than($screen-md) {
+  @include smaller-than($screen-sm) {
     text-align: center;
     .float.right {
       float: none;
     }
-  }
-  @include smaller-than($screen-sm) {
     .links a {
       padding: $-s;
     }
-    form.search-box {
-      margin-top: 0;
-    }
     .user-name {
       padding-top: $-s;
     }
   }
-  .dropdown-container {
-    font-size: 0.9em;
+}
+
+.header-search {
+  display: inline-block;
+}
+header .search-box {
+  display: inline-block;
+  margin-top: $-s;
+  input {
+    background-color: rgba(0, 0, 0, 0.2);
+    border: 1px solid rgba(255, 255, 255, 0.3);
+    color: #EEE;
+  }
+  button {
+    color: #EEE;
+  }
+  ::-webkit-input-placeholder { /* Chrome/Opera/Safari */
+    color: #DDD;
+  }
+  ::-moz-placeholder { /* Firefox 19+ */
+    color: #DDD;
+  }
+  :-ms-input-placeholder { /* IE 10+ */
+    color: #DDD;
+  }
+  :-moz-placeholder { /* Firefox 18- */
+    color: #DDD;
+  }
+  @include smaller-than($screen-lg) {
+    max-width: 250px;
+  }
+  @include smaller-than($l) {
+    max-width: 200px;
   }
 }
 
-form.search-box {
-  margin-top: $-l *0.9;
-  display: inline-block;
-  position: relative;
-  text-align: left;
-  input {
-    background-color: transparent;
-    border-radius: 24px;
-    border: 2px solid #EEE;
-    color: #EEE;
-    padding-left: $-m;
-    padding-right: $-l;
-    outline: 0;
-  }
-  button {
-    vertical-align: top;
-    margin-left: -$-l;
-    color: #FFF;
-    top: 6px;
-    right: 4px;
-    display: inline-block;
-    position: absolute;
-    &:hover {
-      color: #FFF;
-    }
+@include smaller-than($s) {
+  .header-search {
+    display: block;
   }
 }
 
@@ -128,12 +132,12 @@ form.search-box {
   font-size: 1.8em;
   color: #fff;
   font-weight: 400;
-  padding: $-l $-l $-l 0;
+  padding: 14px $-l 14px 0;
   vertical-align: top;
   line-height: 1;
 }
 .logo-image {
-  margin: $-m $-s $-m 0;
+  margin: $-xs $-s $-xs 0;
   vertical-align: top;
   height: 43px;
 }
@@ -227,4 +231,7 @@ form.search-box {
       border-bottom: 2px solid $primary;
     }
   }
+}
+.faded-small .nav-tabs a {
+  padding: $-s $-m;
 }
\ No newline at end of file
diff --git a/resources/views/base.blade.php b/resources/views/base.blade.php
index b1cacf08c..1c972e4fb 100644
--- a/resources/views/base.blade.php
+++ b/resources/views/base.blade.php
@@ -36,7 +36,7 @@
     <header id="header">
         <div class="container">
             <div class="row">
-                <div class="col-lg-4 col-sm-4" ng-non-bindable>
+                <div class="col-sm-4" ng-non-bindable>
                     <a href="{{ baseUrl('/') }}" class="logo">
                         @if(setting('app-logo', '') !== 'none')
                             <img class="logo-image" src="{{ setting('app-logo', '') === '' ? baseUrl('/logo.png') : baseUrl(setting('app-logo', '')) }}" alt="Logo">
@@ -46,14 +46,14 @@
                         @endif
                     </a>
                 </div>
-                <div class="col-lg-4 col-sm-3 text-center">
-                    <form action="{{ baseUrl('/search') }}" method="GET" class="search-box">
-                        <input id="header-search-box-input" type="text" name="term" tabindex="2" value="{{ isset($searchTerm) ? $searchTerm : '' }}">
-                        <button id="header-search-box-button" type="submit" class="text-button"><i class="zmdi zmdi-search"></i></button>
-                    </form>
-                </div>
-                <div class="col-lg-4 col-sm-5">
+                <div class="col-sm-8">
                     <div class="float right">
+                        <div class="header-search">
+                            <form action="{{ baseUrl('/search') }}" method="GET" class="search-box">
+                                <button id="header-search-box-button" type="submit"><i class="zmdi zmdi-search"></i> </button>
+                                <input id="header-search-box-input" type="text" name="term" tabindex="2" placeholder="{{ trans('common.search') }}" value="{{ isset($searchTerm) ? $searchTerm : '' }}">
+                            </form>
+                        </div>
                         <div class="links text-center">
                             <a href="{{ baseUrl('/books') }}"><i class="zmdi zmdi-book"></i>{{ trans('entities.books') }}</a>
                             @if(signedInUser() && userCan('settings-manage'))
diff --git a/resources/views/books/show.blade.php b/resources/views/books/show.blade.php
index 3d50bcef8..97942ee67 100644
--- a/resources/views/books/show.blade.php
+++ b/resources/views/books/show.blade.php
@@ -111,13 +111,11 @@
                     </p>
                 @endif
 
-                <div class="search-box">
-                    <form v-on:submit.prevent="searchBook">
-                        <input v-model="searchTerm" v-on:change="checkSearchForm()" type="text" name="term" placeholder="{{ trans('entities.books_search_this') }}">
-                        <button type="submit"><i class="zmdi zmdi-search"></i></button>
-                        <button v-if="searching" v-cloak class="text-neg" v-on:click="clearSearch()" type="button"><i class="zmdi zmdi-close"></i></button>
-                    </form>
-                </div>
+                <form v-on:submit.prevent="searchBook" class="search-box">
+                    <input v-model="searchTerm" v-on:change="checkSearchForm()" type="text" name="term" placeholder="{{ trans('entities.books_search_this') }}">
+                    <button type="submit"><i class="zmdi zmdi-search"></i></button>
+                    <button v-if="searching" v-cloak class="text-neg" v-on:click="clearSearch()" type="button"><i class="zmdi zmdi-close"></i></button>
+                </form>
 
                 <div class="activity">
                     <h3>{{ trans('entities.recent_activity') }}</h3>
diff --git a/resources/views/chapters/show.blade.php b/resources/views/chapters/show.blade.php
index f0fa40a84..62a7eaa74 100644
--- a/resources/views/chapters/show.blade.php
+++ b/resources/views/chapters/show.blade.php
@@ -115,13 +115,11 @@
                     </div>
                 @endif
 
-                <div class="search-box">
-                    <form v-on:submit.prevent="searchBook">
-                        <input v-model="searchTerm" v-on:change="checkSearchForm()" type="text" name="term" placeholder="{{ trans('entities.chapters_search_this') }}">
-                        <button type="submit"><i class="zmdi zmdi-search"></i></button>
-                        <button v-if="searching" v-cloak class="text-neg" v-on:click="clearSearch()" type="button"><i class="zmdi zmdi-close"></i></button>
-                    </form>
-                </div>
+                <form v-on:submit.prevent="searchBook" class="search-box">
+                    <input v-model="searchTerm" v-on:change="checkSearchForm()" type="text" name="term" placeholder="{{ trans('entities.chapters_search_this') }}">
+                    <button type="submit"><i class="zmdi zmdi-search"></i></button>
+                    <button v-if="searching" v-cloak class="text-neg" v-on:click="clearSearch()" type="button"><i class="zmdi zmdi-close"></i></button>
+                </form>
 
                 @include('pages/sidebar-tree-list', ['book' => $book, 'sidebarTree' => $sidebarTree])
 
diff --git a/resources/views/components/image-picker.blade.php b/resources/views/components/image-picker.blade.php
index 47fb2b8b7..228e8d230 100644
--- a/resources/views/components/image-picker.blade.php
+++ b/resources/views/components/image-picker.blade.php
@@ -43,7 +43,7 @@
              }
 
              if (action === 'show-image-manager') {
-                 window.ImageManager.showExternal((image) => {
+                 window.ImageManager.show((image) => {
                      if (!resize) {
                          setImage(image);
                          return;
diff --git a/resources/views/partials/custom-styles.blade.php b/resources/views/partials/custom-styles.blade.php
index c13051df4..ffa39c50a 100644
--- a/resources/views/partials/custom-styles.blade.php
+++ b/resources/views/partials/custom-styles.blade.php
@@ -1,4 +1,5 @@
 <style id="custom-styles" data-color="{{ setting('app-color') }}" data-color-light="{{ setting('app-color-light') }}">
+    @if(setting('app-color'))
     header, [back-to-top], .primary-background {
         background-color: {{ setting('app-color') }} !important;
     }
@@ -17,4 +18,5 @@
     .text-primary, p.primary, p .primary, span.primary:hover, .text-primary:hover, a, a:hover, a:focus, .text-button, .text-button:hover, .text-button:focus {
         color: {{ setting('app-color') }};
     }
+    @endif
 </style>
\ No newline at end of file