Compare commits

..

No commits in common. "main" and "v4.0.0-2024-03-14-05-31-28" have entirely different histories.

554 changed files with 13188 additions and 853403 deletions

View File

@ -6,7 +6,7 @@ stages:
build-android: build-android:
stage: build stage: build
image: walljm/gradle_android:8.2.1-jdk17-android34-node22 image: walljm/gradle_android:8.0.2-jdk17-33-node1
before_script: before_script:
- cd ./src/android - cd ./src/android
- bash ./install-sdk.sh - bash ./install-sdk.sh
@ -29,7 +29,7 @@ build-android:
test: test:
stage: test stage: test
image: walljm/node-chrome-headless:22.4-bookworm image: walljm/node-chrome-headless:21.6
variables: variables:
NODE_OPTIONS: "--max_old_space_size=2048" NODE_OPTIONS: "--max_old_space_size=2048"
script: script:
@ -68,7 +68,7 @@ deploy-prod-site:
deploy-android: deploy-android:
stage: prod stage: prod
image: walljm/gradle_android:8.2.1-jdk17-android34-node22 image: walljm/gradle_android:8.0.2-jdk17-33-node1
needs: needs:
- build-android - build-android
before_script: before_script:

View File

@ -1,4 +1,4 @@
FROM node:22.4-bookworm FROM node:21.6.2-bookworm
RUN apt-get update -qqy \ RUN apt-get update -qqy \
&& apt-get -qqy install \ && apt-get -qqy install \

View File

@ -1,2 +1,2 @@
docker build -t walljm/node-chrome-headless:22.4-bookworm . docker build -t walljm/node-chrome-headless:21.6 .
docker push walljm/node-chrome-headless:22.4-bookworm docker push walljm/node-chrome-headless:21.6

View File

@ -1,5 +1,5 @@
FROM gradle:8.2.1-jdk17-focal FROM gradle:8.0.2-jdk17-focal
# Install Git and dependencies # Install Git and dependencies
RUN apt-get update \ RUN apt-get update \
@ -7,7 +7,7 @@ RUN apt-get update \
&& apt-get clean \ && apt-get clean \
&& rm -rf /var/lib/apt/lists /var/cache/apt && rm -rf /var/lib/apt/lists /var/cache/apt
RUN curl -L -o node.tar.gz "https://nodejs.org/dist/v22.4.1/node-v22.4.1-linux-x64.tar.gz" && \ RUN curl -L -o node.tar.gz "https://nodejs.org/dist/v21.6.2/node-v21.6.2-linux-x64.tar.gz" && \
tar -xzf node.tar.gz -C /usr/local --strip-components=1 && \ tar -xzf node.tar.gz -C /usr/local --strip-components=1 && \
rm node.tar.gz && \ rm node.tar.gz && \
ln -s /usr/local/bin/node /usr/local/bin/nodejs ln -s /usr/local/bin/node /usr/local/bin/nodejs
@ -42,7 +42,7 @@ RUN $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --update
RUN $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --verbose \ RUN $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --verbose \
"build-tools;34.0.0" \ "build-tools;34.0.0" \
"build-tools;30.0.3" \ "build-tools;30.0.3" \
"platforms;android-34" \ "platforms;android-33" \
"platform-tools" "platform-tools"

View File

@ -1,2 +1,2 @@
docker build -t walljm/gradle_android:8.2.1-jdk17-android34-node22 . docker build -t walljm/gradle_android:8.0.2-jdk17-33-node1 .
docker push walljm/gradle_android:8.2.1-jdk17-android34-node22 docker push walljm/gradle_android:8.0.2-jdk17-33-node1

View File

@ -85,7 +85,7 @@ dependencies {
implementation 'com.google.firebase:firebase-auth' implementation 'com.google.firebase:firebase-auth'
// Also declare the dependency for the Google Play services library and specify its version // Also declare the dependency for the Google Play services library and specify its version
implementation 'com.google.android.gms:play-services-auth:21.2.0' implementation 'com.google.android.gms:play-services-auth:21.0.0'
} }

View File

@ -7,8 +7,8 @@ buildscript {
mavenCentral() mavenCentral()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:8.2.1' classpath 'com.android.tools.build:gradle:8.0.2'
classpath 'com.google.gms:google-services:4.4.2' classpath 'com.google.gms:google-services:4.4.1'
classpath "com.github.triplet.gradle:play-publisher:3.8.1" classpath "com.github.triplet.gradle:play-publisher:3.8.1"
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong

View File

@ -9,7 +9,7 @@ buildscript {
mavenCentral() mavenCentral()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:8.2.1' classpath 'com.android.tools.build:gradle:8.0.0'
} }
} }
@ -17,10 +17,10 @@ apply plugin: 'com.android.library'
android { android {
namespace "capacitor.cordova.android.plugins" namespace "capacitor.cordova.android.plugins"
compileSdk project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 34 compileSdkVersion project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 33
defaultConfig { defaultConfig {
minSdkVersion project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 22 minSdkVersion project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 22
targetSdkVersion project.hasProperty('targetSdkVersion') ? rootProject.ext.targetSdkVersion : 34 targetSdkVersion project.hasProperty('targetSdkVersion') ? rootProject.ext.targetSdkVersion : 33
versionCode 1 versionCode 1
versionName "1.0" versionName "1.0"
} }

View File

@ -1,15 +1,15 @@
ext { ext {
minSdkVersion = 22 minSdkVersion = 22
firebaseMessagingVersion = '23.3.1' firebaseMessagingVersion = '23.0.5'
compileSdkVersion = 34 compileSdkVersion = 33
targetSdkVersion = 34 targetSdkVersion = 33
androidxActivityVersion = '1.8.0' androidxActivityVersion = '1.7.0'
androidxAppCompatVersion = '1.6.1' androidxAppCompatVersion = '1.6.1'
androidxCoordinatorLayoutVersion = '1.2.0' androidxCoordinatorLayoutVersion = '1.2.0'
androidxCoreVersion = '1.12.0' androidxCoreVersion = '1.10.0'
androidxFragmentVersion = '1.6.2' androidxFragmentVersion = '1.5.6'
coreSplashScreenVersion = '1.0.1' coreSplashScreenVersion = '1.0.1'
androidxWebkitVersion = '1.9.0' androidxWebkitVersion = '1.6.1'
junitVersion = '4.13.2' junitVersion = '4.13.2'
androidxJunitVersion = '1.1.5' androidxJunitVersion = '1.1.5'
androidxEspressoCoreVersion = '3.5.1' androidxEspressoCoreVersion = '3.5.1'

View File

@ -5,9 +5,9 @@ PODS:
- AppAuth/Core (1.7.1) - AppAuth/Core (1.7.1)
- AppAuth/ExternalUserAgent (1.7.1): - AppAuth/ExternalUserAgent (1.7.1):
- AppAuth/Core - AppAuth/Core
- Capacitor (6.1.0): - Capacitor (5.7.0):
- CapacitorCordova - CapacitorCordova
- CapacitorCordova (6.1.0) - CapacitorCordova (5.7.0)
- CodetrixStudioCapacitorGoogleAuth (0.0.1): - CodetrixStudioCapacitorGoogleAuth (0.0.1):
- Capacitor - Capacitor
- GoogleSignIn (~> 6.2.4) - GoogleSignIn (~> 6.2.4)
@ -42,8 +42,8 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS: SPEC CHECKSUMS:
AppAuth: e93b919be5dbcbba49555011ce94f7d716368574 AppAuth: e93b919be5dbcbba49555011ce94f7d716368574
Capacitor: 187bd7847b6f71467015a20200a1a071be3e5f14 Capacitor: fc155ee2ee45a2093d716f13cf5aa5a865e2d85a
CapacitorCordova: be703980ca797f847c3356f78fa175d21c8330c2 CapacitorCordova: e825fce1a2e14e4b5730641c7e098dccf74397b7
CodetrixStudioCapacitorGoogleAuth: fcce058390347c1ce5d8ac4764bdf1f5c1ee233b CodetrixStudioCapacitorGoogleAuth: fcce058390347c1ce5d8ac4764bdf1f5c1ee233b
GoogleSignIn: 5651ce3a61e56ca864160e79b484cd9ed3f49b7a GoogleSignIn: 5651ce3a61e56ca864160e79b484cd9ed3f49b7a
GTMAppAuth: 0ff230db599948a9ad7470ca667337803b3fc4dd GTMAppAuth: 0ff230db599948a9ad7470ca667337803b3fc4dd

12119
src/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -16,51 +16,51 @@
}, },
"private": true, "private": true,
"dependencies": { "dependencies": {
"@angular/animations": "^18.1.0", "@angular/animations": "^17.2.3",
"@angular/cdk": "^18.0.6", "@angular/cdk": "^17.2.1",
"@angular/common": "^18.1.0", "@angular/common": "^17.2.3",
"@angular/compiler": "^18.1.0", "@angular/compiler": "^17.2.3",
"@angular/core": "^18.1.0", "@angular/core": "^17.2.3",
"@angular/fire": "^18.0.1", "@angular/fire": "^17.0.1",
"@angular/forms": "^18.1.0", "@angular/forms": "^17.2.3",
"@angular/material": "^18.0.6", "@angular/material": "^17.2.1",
"@angular/platform-browser": "^18.1.0", "@angular/platform-browser": "^17.2.3",
"@angular/platform-browser-dynamic": "^18.1.0", "@angular/platform-browser-dynamic": "^17.2.3",
"@angular/router": "^18.1.0", "@angular/router": "^17.2.3",
"@capacitor/android": "^6.0.0", "@capacitor/android": "^5.7.0",
"@capacitor/core": "^6.0.0", "@capacitor/core": "^5.7.0",
"@capacitor/ios": "^6.0.0", "@capacitor/ios": "^5.7.0",
"@codetrix-studio/capacitor-google-auth": "^3.4.0-rc.0", "@codetrix-studio/capacitor-google-auth": "^3.4.0-rc.0",
"@ngx-pwa/local-storage": "^18.0.0", "@ngx-pwa/local-storage": "^17.0.0",
"angular2-uuid": "^1.1.1", "angular2-uuid": "^1.1.1",
"firebase": "^10.8.0", "firebase": "^10.8.0",
"marked": "^9.0.0", "marked": "^9.0.0",
"ngx-markdown": "^18.0.0", "ngx-markdown": "^17.1.1",
"reselect": "^5.1.0", "reselect": "^5.1.0",
"rxjs": "^7.8.1", "rxjs": "^7.8.1",
"tslib": "^2.6.2", "tslib": "^2.6.2",
"zone.js": "~0.14.4" "zone.js": "~0.14.4"
}, },
"devDependencies": { "devDependencies": {
"@angular-devkit/architect": "0.1800.7", "@angular-devkit/architect": "0.1702.1",
"@angular-devkit/build-angular": "^18.0.7", "@angular-devkit/build-angular": "^17.2.1",
"@angular-eslint/builder": "18.1.0", "@angular-eslint/builder": "17.2.1",
"@angular-eslint/eslint-plugin": "18.1.0", "@angular-eslint/eslint-plugin": "17.2.1",
"@angular-eslint/eslint-plugin-template": "18.1.0", "@angular-eslint/eslint-plugin-template": "17.2.1",
"@angular-eslint/schematics": "18.1.0", "@angular-eslint/schematics": "17.2.1",
"@angular-eslint/template-parser": "18.1.0", "@angular-eslint/template-parser": "17.2.1",
"@angular/cli": "^18.0.7", "@angular/cli": "^17.2.1",
"@angular/compiler-cli": "^18.1.0", "@angular/compiler-cli": "^17.2.1",
"@capacitor/cli": "^6.0.0", "@capacitor/cli": "^5.7.0",
"@cypress/schematic": "^2.5.1", "@cypress/schematic": "^2.5.1",
"@types/jasmine": "~5.1.4", "@types/jasmine": "~5.1.4",
"@types/jasminewd2": "~2.0.13", "@types/jasminewd2": "~2.0.13",
"@types/node": "^20.11.21", "@types/node": "^20.11.21",
"@typescript-eslint/eslint-plugin": "^7.2.0", "@typescript-eslint/eslint-plugin": "7.1.0",
"@typescript-eslint/parser": "^7.2.0", "@typescript-eslint/parser": "^7.1.0",
"cypress": "13.6.6", "cypress": "latest",
"eslint": "^8.57.0", "eslint": "^8.57.0",
"eslint-plugin-deprecation": "^3.0.0", "eslint-plugin-deprecation": "^2.0.0",
"eslint-plugin-optimize-regex": "^1.2.1", "eslint-plugin-optimize-regex": "^1.2.1",
"eslint-plugin-simple-import-sort": "^12.0.0", "eslint-plugin-simple-import-sort": "^12.0.0",
"eslint-plugin-unused-imports": "^3.1.0", "eslint-plugin-unused-imports": "^3.1.0",
@ -77,7 +77,7 @@
"karma-jasmine-html-reporter": "^2.1.0", "karma-jasmine-html-reporter": "^2.1.0",
"open": "^10.0.4", "open": "^10.0.4",
"ts-node": "~10.9.2", "ts-node": "~10.9.2",
"typescript": "~5.4.5" "typescript": "~5.3.3"
}, },
"browserslist": [ "browserslist": [
"last 1 Chrome version", "last 1 Chrome version",

View File

@ -1,6 +1,6 @@
import { ClipboardModule } from '@angular/cdk/clipboard'; import { ClipboardModule } from '@angular/cdk/clipboard';
import { DragDropModule } from '@angular/cdk/drag-drop'; import { DragDropModule } from '@angular/cdk/drag-drop';
import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; import { HttpClientModule } from '@angular/common/http';
import { APP_ID, NgModule } from '@angular/core'; import { APP_ID, NgModule } from '@angular/core';
import { AngularFireModule } from '@angular/fire/compat'; import { AngularFireModule } from '@angular/fire/compat';
import { AngularFireAuthModule } from '@angular/fire/compat/auth'; import { AngularFireAuthModule } from '@angular/fire/compat/auth';
@ -41,7 +41,6 @@ import { MarkedOptions, MarkedRenderer } from 'ngx-markdown';
import { AppComponent } from './app.component'; import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module'; import { AppRoutingModule } from './app-routing.module';
import { AddToPageModalComponent } from './components/add-to-page-modal/add-to-page-modal.component'; import { AddToPageModalComponent } from './components/add-to-page-modal/add-to-page-modal.component';
import { CardEditModalComponent } from './components/card-edit-modal/card-edit-modal.component';
import { HelpModalComponent } from './components/help-modal/help-modal.component'; import { HelpModalComponent } from './components/help-modal/help-modal.component';
import { NoteEditModalComponent } from './components/note/edit-modal/note-edit-modal.component'; import { NoteEditModalComponent } from './components/note/edit-modal/note-edit-modal.component';
import { NoteCardComponent } from './components/note/note-card.component'; import { NoteCardComponent } from './components/note/note-card.component';
@ -76,69 +75,79 @@ export function markedOptionsFactory(): MarkedOptions {
}; };
} }
@NgModule({ declarations: [ @NgModule({
AppComponent, declarations: [
NotesAdminPageComponent, AppComponent,
SavedPagesAdminPageComponent, NotesAdminPageComponent,
SavedPageCardComponent, SavedPagesAdminPageComponent,
HelpModalComponent, SavedPageCardComponent,
SearchPageComponent, HelpModalComponent,
PassageCardComponent, SearchPageComponent,
StrongsComponent, PassageCardComponent,
StrongsCardComponent, StrongsComponent,
StrongsModalComponent, StrongsCardComponent,
WordsCardComponent, StrongsModalComponent,
NoteCardComponent, WordsCardComponent,
PageEditModalComponent, NoteCardComponent,
NoteEditModalComponent, PageEditModalComponent,
AddToPageModalComponent, NoteEditModalComponent,
VersePickerModalComponent, AddToPageModalComponent,
SettingsComponent, VersePickerModalComponent,
OkCancelModalComponent, SettingsComponent,
CardEditModalComponent, OkCancelModalComponent,
], ],
bootstrap: [AppComponent], imports: [BrowserModule, imports: [
ReactiveFormsModule, BrowserModule,
FormsModule, HttpClientModule,
AppRoutingModule,
BrowserAnimationsModule, ReactiveFormsModule,
MarkdownModule.forRoot({ FormsModule,
markedOptions: { AppRoutingModule,
provide: MARKED_OPTIONS, BrowserAnimationsModule,
useFactory: markedOptionsFactory,
}, MarkdownModule.forRoot({
}), markedOptions: {
AngularFireModule.initializeApp(FirebaseConfig), provide: MARKED_OPTIONS,
AngularFireAuthModule, useFactory: markedOptionsFactory,
AngularFireDatabaseModule, },
DragDropModule, }),
MatSidenavModule,
MatChipsModule, AngularFireModule.initializeApp(FirebaseConfig),
MatToolbarModule, AngularFireAuthModule,
MatIconModule, AngularFireDatabaseModule,
MatAutocompleteModule,
MatBadgeModule, DragDropModule,
MatBottomSheetModule, MatSidenavModule,
MatButtonModule, MatChipsModule,
MatButtonToggleModule, MatToolbarModule,
MatCardModule, MatIconModule,
MatCheckboxModule, MatAutocompleteModule,
MatStepperModule, MatBadgeModule,
MatDialogModule, MatBottomSheetModule,
MatDividerModule, MatButtonModule,
MatExpansionModule, MatButtonToggleModule,
MatInputModule, MatCardModule,
MatListModule, MatCheckboxModule,
MatMenuModule, MatStepperModule,
MatNativeDateModule, MatDialogModule,
MatRadioModule, MatDividerModule,
MatRippleModule, MatExpansionModule,
MatSelectModule, MatInputModule,
MatSliderModule, MatListModule,
MatSlideToggleModule, MatMenuModule,
MatSnackBarModule, MatNativeDateModule,
MatTooltipModule, MatRadioModule,
MatFormFieldModule, MatRippleModule,
MatTabsModule, MatSelectModule,
ClipboardModule], providers: [{ provide: APP_ID, useValue: 'ng-cli-universal' }, provideHttpClient(withInterceptorsFromDi())] }) MatSliderModule,
MatSlideToggleModule,
MatSnackBarModule,
MatTooltipModule,
MatFormFieldModule,
MatTabsModule,
ClipboardModule,
],
providers: [{ provide: APP_ID, useValue: 'ng-cli-universal' }],
bootstrap: [AppComponent],
})
export class AppModule {} export class AppModule {}

View File

@ -1,16 +0,0 @@
<mat-toolbar>
<mat-icon>save</mat-icon>
</mat-toolbar>
<mat-dialog-content class="content">
<form [formGroup]="form">
<mat-form-field class="page-title">
<mat-label>Query</mat-label>
<input formControlName="qry" matInput />
</mat-form-field>
</form>
<div mat-dialog-actions>
<button mat-button (click)="save()">Save</button>
<button mat-button (click)="cancel()">Cancel</button>
</div>
</mat-dialog-content>

View File

@ -1,25 +0,0 @@
.close-button {
float: right;
}
.title {
width: 100%;
padding-left: 1rem;
font-size: 1.5rem;
overflow: hidden;
}
.mat-mdc-form-field {
display: block;
}
.page-title {
min-width: 50vw;
padding-top: 12px;
}
.mat-mdc-dialog-content {
min-width: 60vw;
min-height: 20vh;
max-height: 80vh;
}

View File

@ -1,45 +0,0 @@
import { Component, Inject } from '@angular/core';
import { FormGroup, UntypedFormBuilder } from '@angular/forms';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { CardItem } from 'src/app/models/card-state';
import { AppService } from 'src/app/services/app.service';
@Component({
selector: 'app-card-edit-modal',
templateUrl: 'card-edit-modal.component.html',
styleUrls: ['./card-edit-modal.component.scss'],
})
export class CardEditModalComponent {
form: FormGroup;
dialogTitle = 'Save Page using Current Cards';
oldCard: CardItem;
constructor(
@Inject(MAT_DIALOG_DATA) public data: CardEditModalData,
public dialogRef: MatDialogRef<CardEditModalComponent>,
private appService: AppService,
private fb: UntypedFormBuilder
) {
this.oldCard = data.card;
this.form = this.fb.group(data.card);
}
cancel() {
this.dialogRef.close();
}
save() {
this.appService.updateCard(
{
qry: this.form.get('qry').value,
type: this.form.get('type').value,
} as CardItem,
this.oldCard
);
this.dialogRef.close();
}
}
export interface CardEditModalData {
card: CardItem;
}

View File

@ -1,5 +1,5 @@
import { Clipboard } from '@angular/cdk/clipboard'; import { Clipboard } from '@angular/cdk/clipboard';
import { Component, ElementRef, EventEmitter, Input, Output } from '@angular/core'; import { Component,ElementRef, EventEmitter, Input, Output } from '@angular/core';
import { MatDialog } from '@angular/material/dialog'; import { MatDialog } from '@angular/material/dialog';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
@ -8,7 +8,6 @@ import { SubscriberBase } from '../common/subscriber-base';
import { AddToPageModalComponent } from '../components/add-to-page-modal/add-to-page-modal.component'; import { AddToPageModalComponent } from '../components/add-to-page-modal/add-to-page-modal.component';
import { CardItem } from '../models/card-state'; import { CardItem } from '../models/card-state';
import { AppService } from '../services/app.service'; import { AppService } from '../services/app.service';
import { CardEditModalComponent } from './card-edit-modal/card-edit-modal.component';
@Component({ @Component({
template: '', template: '',
@ -84,12 +83,4 @@ export class CardComponent extends SubscriberBase {
moveCardUp() { moveCardUp() {
this.appService.moveCard(this.cardItem, MoveDirection.Up); this.appService.moveCard(this.cardItem, MoveDirection.Up);
} }
editReferenceModal() {
this.dialog.open(CardEditModalComponent, {
data: {
card: { ...this.cardItem } as CardItem,
},
});
}
} }

View File

@ -14,21 +14,21 @@ export class PageEditModalComponent {
dialogTitle = 'Save Page using Current Cards'; dialogTitle = 'Save Page using Current Cards';
constructor( constructor(
@Inject(MAT_DIALOG_DATA) public data: PageEditModalData, @Inject(MAT_DIALOG_DATA) public title: PageEditModalData,
public dialogRef: MatDialogRef<PageEditModalComponent>, public dialogRef: MatDialogRef<PageEditModalComponent>,
private appService: AppService, private appService: AppService,
private fb: UntypedFormBuilder private fb: UntypedFormBuilder
) { ) {
if (data) { if (title) {
this.dialogTitle = 'Edit Page Name'; this.dialogTitle = 'Edit Page Name';
} else { } else {
data = { title = {
title: '', title: '',
savedPage: null, savedPage: null,
}; };
} }
this.form = this.fb.group(data); this.form = this.fb.group(title);
} }
cancel() { cancel() {
@ -38,7 +38,7 @@ export class PageEditModalComponent {
save() { save() {
if (this.dialogTitle === 'Edit Page Name') { if (this.dialogTitle === 'Edit Page Name') {
this.appService.updateSavedPage({ this.appService.updateSavedPage({
...this.data.savedPage, ...this.title.savedPage,
title: this.form.get('title').value, title: this.form.get('title').value,
}); });
} else { } else {

View File

@ -102,10 +102,6 @@
<mat-icon>more_vert</mat-icon> <mat-icon>more_vert</mat-icon>
</button> </button>
<mat-menu #moreMenu="matMenu"> <mat-menu #moreMenu="matMenu">
<button mat-menu-item (click)="editReferenceModal()">
<mat-icon>edit</mat-icon>
<span>Edit Reference</span>
</button>
<button mat-menu-item (click)="copy()"> <button mat-menu-item (click)="copy()">
<mat-icon>content_copy</mat-icon> <mat-icon>content_copy</mat-icon>
<span>Copy Passage</span> <span>Copy Passage</span>

View File

@ -11,7 +11,3 @@
.auth-button { .auth-button {
width: 100%; width: 100%;
} }
.mdc-slider__input {
padding: 0px !important;
}

View File

@ -4,14 +4,14 @@ import { UUID } from 'angular2-uuid';
import { lastValueFrom } from 'rxjs'; import { lastValueFrom } from 'rxjs';
import { moveItem, moveItemUpOrDown } from '../common/array-operations'; import { moveItem, moveItemUpOrDown } from '../common/array-operations';
import { BibleReference, Overlap, Section } from '../common/bible-reference'; import { BibleReference, Overlap,Section } from '../common/bible-reference';
import { getFromCardCache, removeFromCardCache, updateInCardCache } from '../common/card-cache-operations'; import { getFromCardCache,removeFromCardCache, updateInCardCache } from '../common/card-cache-operations';
import { mergeCardList } from '../common/card-operations'; import { mergeCardList } from '../common/card-operations';
import { HashTable } from '../common/hashtable'; import { HashTable } from '../common/hashtable';
import { MoveDirection } from '../common/move-direction'; import { MoveDirection } from '../common/move-direction';
import { createReducingService, IReducingAction } from '../common/state-service'; import { createReducingService,IReducingAction } from '../common/state-service';
import { IStorable, Storable, StorableType } from '../common/storable'; import { IStorable, Storable, StorableType } from '../common/storable';
import { AppState, DisplaySettings, Error, PageSettings, Settings, User } from '../models/app-state'; import { AppState, DisplaySettings, Error,PageSettings, Settings, User } from '../models/app-state';
import { CardItem, CardType, DataReference } from '../models/card-state'; import { CardItem, CardType, DataReference } from '../models/card-state';
import { NoteItem } from '../models/note-state'; import { NoteItem } from '../models/note-state';
import { SavedPage } from '../models/page-state'; import { SavedPage } from '../models/page-state';
@ -31,7 +31,7 @@ import {
StrongsDictionary, StrongsDictionary,
StrongsResult, StrongsResult,
} from '../models/strongs-state'; } from '../models/strongs-state';
import { IndexResult, WordLookupResult, WordToStem } from '../models/words-state'; import { IndexResult, WordLookupResult,WordToStem } from '../models/words-state';
const initialState: AppState = { const initialState: AppState = {
user: null, user: null,
@ -294,7 +294,7 @@ export const updateCardAction = (newCard: CardItem, oldCard: CardItem): AppActio
...state, ...state,
currentCards: new Storable( currentCards: new Storable(
state.currentCards.value.map((c) => { state.currentCards.value.map((c) => {
if (c.type === oldCard.type && c.qry === oldCard.qry) { if (c === oldCard) {
return newCard; return newCard;
} }
return c; return c;
@ -824,11 +824,6 @@ export class AppService extends createReducingService(initialState) {
); );
} }
async updateCard(newCard: CardItem, oldCard: CardItem) {
const card = await this.getCardByQuery(newCard.qry.trim());
this.dispatch(updateCardAction(card, oldCard));
}
async clearCards() { async clearCards() {
this.dispatch(clearCardsAction()); this.dispatch(clearCardsAction());
} }
@ -1496,8 +1491,8 @@ export class AppService extends createReducingService(initialState) {
words.unshift('barbarian'); words.unshift('barbarian');
words.unshift('beard'); words.unshift('beard');
words.unshift('begettest'); words.unshift('begettest');
words.unshift('beneath'); words.unshift('benefactor');
words.unshift('bethabara'); words.unshift('bethel');
words.unshift('bilshan'); words.unshift('bilshan');
words.unshift('blindeth'); words.unshift('blindeth');
words.unshift('booti'); words.unshift('booti');
@ -1511,152 +1506,152 @@ export class AppService extends createReducingService(initialState) {
words.unshift('chrysoprasus'); words.unshift('chrysoprasus');
words.unshift('cloth'); words.unshift('cloth');
words.unshift('common'); words.unshift('common');
words.unshift('confer'); words.unshift('confess');
words.unshift('contendest'); words.unshift('contendeth');
words.unshift('couch'); words.unshift('coucheth');
words.unshift('creepeth'); words.unshift('crept');
words.unshift('cursest'); words.unshift('curseth');
words.unshift('dare'); words.unshift('darius');
words.unshift('deckest'); words.unshift('decketh');
words.unshift('delus'); words.unshift('dema');
words.unshift('devic'); words.unshift('devil');
words.unshift('direct'); words.unshift('directeth');
words.unshift('dispos'); words.unshift('disposit');
words.unshift('dote'); words.unshift('doth');
words.unshift('drown'); words.unshift('drowsi');
words.unshift('ebal'); words.unshift('ebe');
words.unshift('eldest'); words.unshift('elead');
words.unshift('elkanah'); words.unshift('elkoshit');
words.unshift('encount'); words.unshift('encourag');
words.unshift('entranc'); words.unshift('entreat');
words.unshift('escapeth'); words.unshift('eschew');
words.unshift('eventid'); words.unshift('ever');
words.unshift('experi'); words.unshift('expert');
words.unshift('fallen'); words.unshift('fallest');
words.unshift('feedest'); words.unshift('feedeth');
words.unshift('filth'); words.unshift('filthi');
words.unshift('fleec'); words.unshift('fleeth');
words.unshift('forbor'); words.unshift('forborn');
words.unshift('forsook'); words.unshift('forsookest');
words.unshift('fret'); words.unshift('fretteth');
words.unshift('gaham'); words.unshift('gahar');
words.unshift('gazit'); words.unshift('gazzam');
words.unshift('gibbethon'); words.unshift('gibea');
words.unshift('glede'); words.unshift('glister');
words.unshift('gospel'); words.unshift('got');
words.unshift('groaneth'); words.unshift('grope');
words.unshift('hadid'); words.unshift('hadlai');
words.unshift('hammoleketh'); words.unshift('hammon');
words.unshift('haraseth'); words.unshift('harbona');
words.unshift('hashupha'); words.unshift('hasrah');
words.unshift('hazeroth'); words.unshift('hazezon');
words.unshift('height'); words.unshift('heinous');
words.unshift('hereaft'); words.unshift('herebi');
words.unshift('higher'); words.unshift('highest');
words.unshift('holdest'); words.unshift('holdeth');
words.unshift('hosah'); words.unshift('hosanna');
words.unshift('huram'); words.unshift('huri');
words.unshift('ilai'); words.unshift('ill');
words.unshift('indit'); words.unshift('inexcus');
words.unshift('intellig'); words.unshift('intend');
words.unshift('ishuai'); words.unshift('ishui');
words.unshift('jaasiel'); words.unshift('jaazaniah');
words.unshift('jamin'); words.unshift('jaminit');
words.unshift('jechoniah'); words.unshift('jecoliah');
words.unshift('jemuel'); words.unshift('jeopard');
words.unshift('jethlah'); words.unshift('jethro');
words.unshift('joiakim'); words.unshift('joiarib');
words.unshift('jucal'); words.unshift('juda');
words.unshift('keilah'); words.unshift('kelaiah');
words.unshift('kishi'); words.unshift('kishion');
words.unshift('lade'); words.unshift('laden');
words.unshift('laugheth'); words.unshift('laughter');
words.unshift('lehem'); words.unshift('lehi');
words.unshift('lifetim'); words.unshift('lift');
words.unshift('loath'); words.unshift('loatheth');
words.unshift('lucif'); words.unshift('lucius');
words.unshift('madmannah'); words.unshift('madmen');
words.unshift('maktesh'); words.unshift('malachi');
words.unshift('marcaboth'); words.unshift('march');
words.unshift('mattock'); words.unshift('maul');
words.unshift('melchiah'); words.unshift('melchizedek');
words.unshift('merri'); words.unshift('merrili');
words.unshift('midian'); words.unshift('midianit');
words.unshift('mire'); words.unshift('miri');
words.unshift('moder'); words.unshift('modest');
words.unshift('movabl'); words.unshift('move');
words.unshift('naarath'); words.unshift('naashon');
words.unshift('nazaren'); words.unshift('nazareth');
words.unshift('nephish'); words.unshift('nephishesim');
words.unshift('ninth'); words.unshift('nisan');
words.unshift('oath'); words.unshift('obadiah');
words.unshift('olivet'); words.unshift('oliveyard');
words.unshift('oregim'); words.unshift('oren');
words.unshift('overran'); words.unshift('overrun');
words.unshift('palet'); words.unshift('pallu');
words.unshift('parvaim'); words.unshift('pas');
words.unshift('pedigre'); words.unshift('peel');
words.unshift('permit'); words.unshift('pernici');
words.unshift('philetus'); words.unshift('philip');
words.unshift('pisidia'); words.unshift('pison');
words.unshift('pluck'); words.unshift('plucketh');
words.unshift('pound'); words.unshift('pour');
words.unshift('prey'); words.unshift('price');
words.unshift('propiti'); words.unshift('proport');
words.unshift('purer'); words.unshift('purg');
words.unshift('rabbith'); words.unshift('rabboni');
words.unshift('ravin'); words.unshift('ravish');
words.unshift('redeem'); words.unshift('redeemedst');
words.unshift('remaind'); words.unshift('remainest');
words.unshift('reproveth'); words.unshift('reput');
words.unshift('reverend'); words.unshift('revers');
words.unshift('rishathaim'); words.unshift('rissah');
words.unshift('rudder'); words.unshift('ruddi');
words.unshift('sahadutha'); words.unshift('said');
words.unshift('saphir'); words.unshift('sapphir');
words.unshift('scent'); words.unshift('scepter');
words.unshift('sect'); words.unshift('secundus');
words.unshift('seorim'); words.unshift('separ');
words.unshift('shabbethai'); words.unshift('shachia');
words.unshift('sharaim'); words.unshift('sharar');
words.unshift('sheepmast'); words.unshift('sheepshear');
words.unshift('shethar'); words.unshift('sheva');
words.unshift('shisha'); words.unshift('shishak');
words.unshift('shrine'); words.unshift('shroud');
words.unshift('signif'); words.unshift('signifi');
words.unshift('sitnah'); words.unshift('sittest');
words.unshift('sloth'); words.unshift('slow');
words.unshift('soever'); words.unshift('soft');
words.unshift('sow'); words.unshift('sowedst');
words.unshift('spittl'); words.unshift('spoil');
words.unshift('state'); words.unshift('station');
words.unshift('stool'); words.unshift('stoop');
words.unshift('stronger'); words.unshift('strongest');
words.unshift('sukkiim'); words.unshift('sum');
words.unshift('sweat'); words.unshift('sweep');
words.unshift('tahanit'); words.unshift('tahapan');
words.unshift('taskmast'); words.unshift('tast');
words.unshift('tempteth'); words.unshift('ten');
words.unshift('thereabout'); words.unshift('thereat');
words.unshift('thread'); words.unshift('threaten');
words.unshift('timber'); words.unshift('timbrel');
words.unshift('tong'); words.unshift('tongu');
words.unshift('travail'); words.unshift('travailest');
words.unshift('trumpet'); words.unshift('trust');
words.unshift('unchang'); words.unshift('uncircumcis');
words.unshift('unperfect'); words.unshift('unprepar');
words.unshift('urban'); words.unshift('urg');
words.unshift('vashti'); words.unshift('vat');
words.unshift('visitest'); words.unshift('visiteth');
words.unshift('warrior'); words.unshift('wash');
words.unshift('web'); words.unshift('wed');
words.unshift('whereupon'); words.unshift('wherewith');
words.unshift('winebibb'); words.unshift('winepress');
words.unshift('womenserv'); words.unshift('won');
words.unshift('writeth'); words.unshift('written');
words.unshift('zalmon'); words.unshift('zalmonah');
words.unshift('zena'); words.unshift('zenan');
words.unshift('ziphah'); words.unshift('ziphim');
words.unshift('zuzim'); words.unshift('zuzim');
return words; return words;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
[{"w":"elkoshit","r":["34:1:1"]},{"w":"ellasar","r":["1:14:1","1:14:9"]},{"w":"elm","r":["28:4:13"]},{"w":"elmodam","r":["42:3:28"]},{"w":"elnaam","r":["13:11:46"]},{"w":"elnathan","r":["12:24:8","15:8:16","24:26:22","24:36:12","24:36:25"]},{"w":"elohe-israel","r":["1:33:20"]},{"w":"eloi","r":["41:15:34"]},{"w":"elon","r":["1:26:34","1:36:2","1:46:14","4:26:26","6:19:43","7:12:11","7:12:12","11:4:9"]},{"w":"elonit","r":["4:26:26"]},{"w":"eloqu","r":["2:4:10","23:3:3","44:18:24"]},{"w":"eloth","r":["11:9:26","14:8:17","14:26:2"]},{"w":"elpaal","r":["13:8:11","13:8:12","13:8:18"]},{"w":"elpalet","r":["13:14:5"]},{"w":"els","r":["1:30:1","1:42:16","2:8:21","2:10:4","4:20:19","5:4:35","5:4:39","6:23:12","7:7:14","10:3:35","10:15:14","11:8:60","11:20:39","11:21:6","13:21:12","14:23:7","16:2:2","19:51:16","21:2:25","23:45:5","23:45:6","23:45:14","23:45:18","23:45:21","23:45:22","23:46:9","23:47:8","23:47:10","29:2:27","40:6:24","40:9:17","40:12:29","40:12:33","41:2:21","41:2:22","42:5:37","42:14:32","42:16:13","43:14:11","44:17:21","44:24:20","45:2:15","46:7:14","46:14:16","46:15:29","50:1:27","66:2:5","66:2:16"]},{"w":"eltekeh","r":["6:19:44","6:21:23"]},{"w":"eltekon","r":["6:15:59"]},{"w":"eltolad","r":["6:15:30","6:19:4"]},{"w":"elul","r":["16:6:15"]},{"w":"eluzai","r":["13:12:5"]},{"w":"elyma","r":["44:13:8"]},{"w":"elzabad","r":["13:12:12","13:26:7"]},{"w":"elzaphan","r":["2:6:22","3:10:4"]},{"w":"embalm","r":["1:50:2","1:50:3","1:50:26"]},{"w":"embolden","r":["46:8:10"]},{"w":"emboldeneth","r":["18:16:3"]},{"w":"embrac","r":["1:29:13","1:33:4","1:48:10","12:4:16","18:24:8","20:4:8","20:5:20","21:3:5","22:2:6","22:8:3","25:4:5","44:20:1","44:20:10","58:11:13"]},{"w":"embroid","r":["2:28:4","2:28:39","26:16:10","26:16:13","26:16:18","26:26:16","26:27:7","26:27:16","26:27:24"]},{"w":"embroider","r":["2:35:35","2:38:23"]},{"w":"emek","r":["6:19:27"]},{"w":"emerald","r":["2:28:18","2:39:11","26:27:16","26:28:13","66:4:3","66:21:19"]},{"w":"emerod","r":["5:28:27","9:5:6","9:5:9","9:5:12","9:6:4","9:6:5","9:6:11","9:6:17"]},{"w":"emim","r":["1:14:5","5:2:10","5:2:11"]},{"w":"emin","r":["26:16:24","26:16:31","26:16:39","26:17:22"]},{"w":"emmanuel","r":["40:1:23"]},{"w":"emmaus","r":["42:24:13"]},{"w":"empir","r":["17:1:20"]},{"w":"employ","r":["5:20:19","13:9:33","15:10:15","26:39:14"]},{"w":"empti","r":["1:24:20","1:31:42","1:37:24","1:41:27","1:42:35","2:3:21","2:23:15","2:34:20","3:14:36","5:15:13","5:16:16","7:7:16","8:1:21","8:3:17","9:6:3","9:20:18","9:20:25","9:20:27","10:1:22","12:4:3","14:24:11","16:5:13","18:22:9","18:26:7","21:11:3","23:19:6","23:24:1","23:24:3","23:29:8","23:32:6","23:34:11","24:14:3","24:48:11","24:48:12","24:51:2","24:51:34","26:24:11","28:10:1","34:2:2","34:2:10","35:1:17","38:4:12","40:12:44","41:12:3","42:1:53","42:20:10","42:20:11"]},{"w":"emptier","r":["34:2:2"]},{"w":"emul","r":["45:11:14","48:5:20"]},{"w":"en","r":["1:14:7","6:15:7","6:15:34","6:15:62","6:17:7","6:18:16","6:18:17","6:19:21","6:19:37","6:21:29","7:15:19","9:23:29","9:24:1","10:17:17","11:1:9","14:20:2","16:11:29","22:1:14","26:47:10"]},{"w":"enabl","r":["54:1:12"]},{"w":"enam","r":["6:15:34"]},{"w":"enan","r":["4:1:15","4:2:29","4:7:78","4:7:83","4:10:27","4:34:9","4:34:10","26:47:17","26:48:1"]},{"w":"encamp","r":["2:13:20","2:14:2","2:14:9","2:15:27","2:18:5","4:1:50","4:2:17","4:2:27","4:3:38","4:10:31","4:33:10","4:33:11","4:33:12","4:33:13","4:33:14","4:33:17","4:33:24","4:33:26","4:33:30","4:33:32","4:33:34","4:33:35","4:33:46","6:4:19","6:5:10","6:10:5","6:10:31","6:10:34","7:6:4","7:9:50","7:10:17","7:20:19","9:11:1","9:13:16","10:11:11","10:12:28","11:16:15","11:16:16","13:11:15","14:32:1","18:19:12","19:27:3","38:9:8"]},{"w":"encampeth","r":["19:34:7","19:53:5"]},{"w":"enchant","r":["2:7:11","2:7:22","2:8:7","2:8:18","3:19:26","4:23:23","4:24:1","5:18:10","12:17:17","12:21:6","14:33:6","21:10:11","23:47:9","23:47:12","24:27:9"]},{"w":"enclos","r":["2:28:20","2:39:6","2:39:13","7:20:43","19:17:10","19:22:16","22:4:12","22:8:9","25:3:9","42:5:6"]},{"w":"encount","r":["44:17:18"]}]

View File

@ -0,0 +1 @@
[{"w":"ellasar","r":["1:14:1","1:14:9"]},{"w":"elm","r":["28:4:13"]},{"w":"elmodam","r":["42:3:28"]},{"w":"elnaam","r":["13:11:46"]},{"w":"elnathan","r":["12:24:8","15:8:16","24:26:22","24:36:12","24:36:25"]},{"w":"elohe-israel","r":["1:33:20"]},{"w":"eloi","r":["41:15:34"]},{"w":"elon","r":["1:26:34","1:36:2","1:46:14","4:26:26","6:19:43","7:12:11","7:12:12","11:4:9"]},{"w":"elonit","r":["4:26:26"]},{"w":"eloqu","r":["2:4:10","23:3:3","44:18:24"]},{"w":"eloth","r":["11:9:26","14:8:17","14:26:2"]},{"w":"elpaal","r":["13:8:11","13:8:12","13:8:18"]},{"w":"elpalet","r":["13:14:5"]},{"w":"els","r":["1:30:1","1:42:16","2:8:21","2:10:4","4:20:19","5:4:35","5:4:39","6:23:12","7:7:14","10:3:35","10:15:14","11:8:60","11:20:39","11:21:6","13:21:12","14:23:7","16:2:2","19:51:16","21:2:25","23:45:5","23:45:6","23:45:14","23:45:18","23:45:21","23:45:22","23:46:9","23:47:8","23:47:10","29:2:27","40:6:24","40:9:17","40:12:29","40:12:33","41:2:21","41:2:22","42:5:37","42:14:32","42:16:13","43:14:11","44:17:21","44:24:20","45:2:15","46:7:14","46:14:16","46:15:29","50:1:27","66:2:5","66:2:16"]},{"w":"eltekeh","r":["6:19:44","6:21:23"]},{"w":"eltekon","r":["6:15:59"]},{"w":"eltolad","r":["6:15:30","6:19:4"]},{"w":"elul","r":["16:6:15"]},{"w":"eluzai","r":["13:12:5"]},{"w":"elyma","r":["44:13:8"]},{"w":"elzabad","r":["13:12:12","13:26:7"]},{"w":"elzaphan","r":["2:6:22","3:10:4"]},{"w":"embalm","r":["1:50:2","1:50:3","1:50:26"]},{"w":"embolden","r":["46:8:10"]},{"w":"emboldeneth","r":["18:16:3"]},{"w":"embrac","r":["1:29:13","1:33:4","1:48:10","12:4:16","18:24:8","20:4:8","20:5:20","21:3:5","22:2:6","22:8:3","25:4:5","44:20:1","44:20:10","58:11:13"]},{"w":"embroid","r":["2:28:4","2:28:39","26:16:10","26:16:13","26:16:18","26:26:16","26:27:7","26:27:16","26:27:24"]},{"w":"embroider","r":["2:35:35","2:38:23"]},{"w":"emek","r":["6:19:27"]},{"w":"emerald","r":["2:28:18","2:39:11","26:27:16","26:28:13","66:4:3","66:21:19"]},{"w":"emerod","r":["5:28:27","9:5:6","9:5:9","9:5:12","9:6:4","9:6:5","9:6:11","9:6:17"]},{"w":"emim","r":["1:14:5","5:2:10","5:2:11"]},{"w":"emin","r":["26:16:24","26:16:31","26:16:39","26:17:22"]},{"w":"emmanuel","r":["40:1:23"]},{"w":"emmaus","r":["42:24:13"]},{"w":"empir","r":["17:1:20"]},{"w":"employ","r":["5:20:19","13:9:33","15:10:15","26:39:14"]},{"w":"empti","r":["1:24:20","1:31:42","1:37:24","1:41:27","1:42:35","2:3:21","2:23:15","2:34:20","3:14:36","5:15:13","5:16:16","7:7:16","8:1:21","8:3:17","9:6:3","9:20:18","9:20:25","9:20:27","10:1:22","12:4:3","14:24:11","16:5:13","18:22:9","18:26:7","21:11:3","23:19:6","23:24:1","23:24:3","23:29:8","23:32:6","23:34:11","24:14:3","24:48:11","24:48:12","24:51:2","24:51:34","26:24:11","28:10:1","34:2:2","34:2:10","35:1:17","38:4:12","40:12:44","41:12:3","42:1:53","42:20:10","42:20:11"]},{"w":"emptier","r":["34:2:2"]},{"w":"emul","r":["45:11:14","48:5:20"]},{"w":"en","r":["1:14:7","6:15:7","6:15:34","6:15:62","6:17:7","6:18:16","6:18:17","6:19:21","6:19:37","6:21:29","7:15:19","9:23:29","9:24:1","10:17:17","11:1:9","14:20:2","16:11:29","22:1:14","26:47:10"]},{"w":"enabl","r":["54:1:12"]},{"w":"enam","r":["6:15:34"]},{"w":"enan","r":["4:1:15","4:2:29","4:7:78","4:7:83","4:10:27","4:34:9","4:34:10","26:47:17","26:48:1"]},{"w":"encamp","r":["2:13:20","2:14:2","2:14:9","2:15:27","2:18:5","4:1:50","4:2:17","4:2:27","4:3:38","4:10:31","4:33:10","4:33:11","4:33:12","4:33:13","4:33:14","4:33:17","4:33:24","4:33:26","4:33:30","4:33:32","4:33:34","4:33:35","4:33:46","6:4:19","6:5:10","6:10:5","6:10:31","6:10:34","7:6:4","7:9:50","7:10:17","7:20:19","9:11:1","9:13:16","10:11:11","10:12:28","11:16:15","11:16:16","13:11:15","14:32:1","18:19:12","19:27:3","38:9:8"]},{"w":"encampeth","r":["19:34:7","19:53:5"]},{"w":"enchant","r":["2:7:11","2:7:22","2:8:7","2:8:18","3:19:26","4:23:23","4:24:1","5:18:10","12:17:17","12:21:6","14:33:6","21:10:11","23:47:9","23:47:12","24:27:9"]},{"w":"enclos","r":["2:28:20","2:39:6","2:39:13","7:20:43","19:17:10","19:22:16","22:4:12","22:8:9","25:3:9","42:5:6"]},{"w":"encount","r":["44:17:18"]},{"w":"encourag","r":["5:1:38","5:3:28","7:20:22","9:30:6","10:11:25","14:31:4","14:35:2","19:64:5","23:41:7"]}]

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

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