@dereekb/dbx-firebase 12.5.9 → 12.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. package/esm2022/lib/development/development.widget.service.mjs +1 -1
  2. package/esm2022/lib/modules/storagefile/container/index.mjs +2 -1
  3. package/esm2022/lib/modules/storagefile/container/storagefile.download.button.component.mjs +244 -0
  4. package/esm2022/lib/modules/storagefile/index.mjs +3 -1
  5. package/esm2022/lib/modules/storagefile/service/index.mjs +3 -0
  6. package/esm2022/lib/modules/storagefile/service/storagefile.download.service.mjs +158 -0
  7. package/esm2022/lib/modules/storagefile/service/storagefile.download.storage.service.mjs +91 -0
  8. package/esm2022/lib/modules/storagefile/storagefile.providers.mjs +33 -0
  9. package/esm2022/lib/modules/storagefile/store/storagefile.document.store.mjs +3 -2
  10. package/esm2022/lib/providers.mjs +6 -2
  11. package/fesm2022/dereekb-dbx-firebase.mjs +512 -8
  12. package/fesm2022/dereekb-dbx-firebase.mjs.map +1 -1
  13. package/lib/development/development.widget.service.d.ts +1 -1
  14. package/lib/modules/storagefile/container/index.d.ts +1 -0
  15. package/lib/modules/storagefile/container/storagefile.download.button.component.d.ts +133 -0
  16. package/lib/modules/storagefile/index.d.ts +2 -0
  17. package/lib/modules/storagefile/service/index.d.ts +2 -0
  18. package/lib/modules/storagefile/service/storagefile.download.service.d.ts +79 -0
  19. package/lib/modules/storagefile/service/storagefile.download.storage.service.d.ts +56 -0
  20. package/lib/modules/storagefile/storagefile.providers.d.ts +13 -0
  21. package/lib/modules/storagefile/storagefile.upload.module.d.ts +1 -1
  22. package/lib/modules/storagefile/store/storagefile.document.store.d.ts +1 -0
  23. package/lib/providers.d.ts +4 -0
  24. package/package.json +1 -1
@@ -0,0 +1,91 @@
1
+ import { Injectable, InjectionToken, inject } from '@angular/core';
2
+ import { map, mergeMap, catchError, of, switchMap, first } from 'rxjs';
3
+ import { firestoreModelId } from '@dereekb/firebase';
4
+ import { DbxFirebaseAuthService } from '../../../auth/service/firebase.auth.service';
5
+ import { splitJoinRemainder } from '@dereekb/util';
6
+ import * as i0 from "@angular/core";
7
+ /**
8
+ * Token that corresponds to a StorageAccessor<DbxFirebaseStorageFileDownloadUserCache> that is used by DbxModelViewTrackerStorage.
9
+ */
10
+ export const DBX_FIREBASE_STORAGEFILE_DOWNLOAD_STORAGE_ACCESSOR_TOKEN = new InjectionToken('DbxFirebaseStorageFileDownloadStorageAccessor');
11
+ /**
12
+ * Used for managing DbxModelViewTrackerEvent storage.
13
+ */
14
+ export class DbxFirebaseStorageFileDownloadStorage {
15
+ static DEFAULT_MAX_DOWNLOAD_URLS = 100;
16
+ authService = inject(DbxFirebaseAuthService);
17
+ storageAccessor = inject(DBX_FIREBASE_STORAGEFILE_DOWNLOAD_STORAGE_ACCESSOR_TOKEN);
18
+ addDownloadUrl({ id, downloadUrl, expiresAt, mimeType }) {
19
+ return this.getCurrentUserDownloadCache().pipe(mergeMap((cache) => {
20
+ const { uid, pairs: currentPairs } = cache;
21
+ const storageKey = this.getStorageKeyForUid(uid);
22
+ const pairs = {
23
+ ...currentPairs,
24
+ [id]: `${expiresAt}_${mimeType}_${downloadUrl}`
25
+ };
26
+ return this.storageAccessor.set(storageKey, {
27
+ uid,
28
+ pairs
29
+ });
30
+ }), first());
31
+ }
32
+ /**
33
+ * Returns the cached download URL pair for the given key.
34
+ *
35
+ * The pair may be expired.
36
+ *
37
+ * @param key
38
+ * @returns
39
+ */
40
+ getDownloadUrlPair(input) {
41
+ const id = firestoreModelId(input);
42
+ return this.authService.uid$.pipe(switchMap((uid) => {
43
+ return this.getUserDownloadCache(uid).pipe(map((cache) => {
44
+ const pair = cache?.pairs[id];
45
+ let result;
46
+ if (pair) {
47
+ const [expiresAt, mimeType, downloadUrl] = splitJoinRemainder(pair, '_', 3);
48
+ result = {
49
+ id,
50
+ downloadUrl,
51
+ expiresAt: Number(expiresAt),
52
+ mimeType
53
+ };
54
+ }
55
+ return result;
56
+ }));
57
+ }), first());
58
+ }
59
+ getAllDownloadUrlPairsRecord(uid) {
60
+ return this.getUserDownloadCache(uid).pipe(map((x) => x.pairs));
61
+ }
62
+ getCurrentUserDownloadCache() {
63
+ return this.authService.uid$.pipe(switchMap((uid) => this.getUserDownloadCache(uid)));
64
+ }
65
+ getUserDownloadCache(uid) {
66
+ const storageKey = this.getStorageKeyForUid(uid);
67
+ return this._getUserDownloadCacheForStorageKey(storageKey, uid);
68
+ }
69
+ clearCurrentUserDownloadCache() {
70
+ return this.authService.uid$.pipe(switchMap((uid) => this.clearUserDownloadCache(uid)));
71
+ }
72
+ clearUserDownloadCache(uid) {
73
+ const storageKey = this.getStorageKeyForUid(uid);
74
+ return this.storageAccessor.remove(storageKey);
75
+ }
76
+ _getUserDownloadCacheForStorageKey(storageKey, uid) {
77
+ return this.storageAccessor.get(storageKey).pipe(catchError((e) => {
78
+ return of(undefined);
79
+ }), map((result) => result ?? { uid, pairs: {} }));
80
+ }
81
+ getStorageKeyForUid(uid) {
82
+ const storageKey = `sf_dl_cache_${uid}`;
83
+ return storageKey;
84
+ }
85
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileDownloadStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
86
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileDownloadStorage });
87
+ }
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileDownloadStorage, decorators: [{
89
+ type: Injectable
90
+ }] });
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZWZpbGUuZG93bmxvYWQuc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kdWxlcy9zdG9yYWdlZmlsZS9zZXJ2aWNlL3N0b3JhZ2VmaWxlLmRvd25sb2FkLnN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25GLE9BQU8sRUFBc0IsZ0JBQWdCLEVBQXNFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0ksT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDckYsT0FBTyxFQUE4QixrQkFBa0IsRUFBNkIsTUFBTSxlQUFlLENBQUM7O0FBd0IxRzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdEQUF3RCxHQUFHLElBQUksY0FBYyxDQUFDLCtDQUErQyxDQUFDLENBQUM7QUFFNUk7O0dBRUc7QUFFSCxNQUFNLE9BQU8scUNBQXFDO0lBQ2hELE1BQU0sQ0FBVSx5QkFBeUIsR0FBRyxHQUFHLENBQUM7SUFFdkMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzdDLGVBQWUsR0FBRyxNQUFNLENBQTJELHdEQUF3RCxDQUFDLENBQUM7SUFFdEosY0FBYyxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUF5QztRQUM1RixPQUFPLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDLElBQUksQ0FDNUMsUUFBUSxDQUFDLENBQUMsS0FBSyxFQUFFLEVB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LENBQUM7SUFFTyxrQ0FBa0MsQ0FBQyxVQUFrQixFQUFFLEdBQXVCO1FBQ3BGLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUM5QyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNmLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUM5QyxDQUFDO0lBQ0osQ0FBQztJQUVELG1CQUFtQixDQUFDLEdBQXVCO1FBQ3pDLE1BQU0sVUFBVSxHQUFHLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDeEMsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQzt3R0FqR1UscUNBQXFDOzRHQUFyQyxxQ0FBcUM7OzRGQUFyQyxxQ0FBcUM7a0JBRGpELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yYWdlQWNjZXNzb3IgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyBtYXAsIG1lcmdlTWFwLCBjYXRjaEVycm9yLCBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwLCBmaXJzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmlyZWJhc2VBdXRoVXNlcklkLCBmaXJlc3RvcmVNb2RlbElkLCBGaXJlc3RvcmVNb2RlbElkSW5wdXQsIFN0b3JhZ2VGaWxlSWQsIFN0b3JhZ2VGaWxlU2lnbmVkRG93bmxvYWRVcmwgfSBmcm9tICdAZGVyZWVrYi9maXJlYmFzZSc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXV0aC9zZXJ2aWNlL2ZpcmViYXNlLmF1dGguc2VydmljZSc7XG5pbXBvcnQgeyBDb250ZW50VHlwZU1pbWVUeXBlLCBNYXliZSwgc3BsaXRKb2luUmVtYWluZGVyLCBVbml4RGF0ZVRpbWVTZWNvbmRzTnVtYmVyIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZURvd25sb2FkVXJsUGFpciB7XG4gIHJlYWRvbmx5IGlkOiBTdG9yYWdlRmlsZUlkO1xuICByZWFkb25seSBkb3dubG9hZFVybDogU3RvcmFnZUZpbGVTaWduZWREb3dubG9hZFVybDtcbiAgLyoqXG4gICAqIE1pbWUgdHlwZSwgaWYgYXZhaWxhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgbWltZVR5cGU/OiBNYXliZTxDb250ZW50VHlwZU1pbWVUeXBlPjtcbiAgLyoqXG4gICAqIEV4cGlyYXRpb24gaW4gc2Vjb25kcyBzaW5jZSBlcG9jaC5cbiAgICovXG4gIHJlYWRvbmx5IGV4cGlyZXNBdDogVW5peERhdGVUaW1lU2Vjb25kc051bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZURvd25sb2FkVXJsUGFpclN0cmluZyA9IGAke1VuaXhEYXRlVGltZVNlY29uZHNOdW1iZXJ9XyR7U3RvcmFnZUZpbGVTaWduZWREb3dubG9hZFVybH1gO1xuXG5leHBvcnQgdHlwZSBEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlRG93bmxvYWRVcmxQYWlyc1JlY29yZCA9IFJlY29yZDxTdG9yYWdlRmlsZUlkLCBEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlRG93bmxvYWRVcmxQYWlyU3RyaW5nPjtcblxuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlRG93bmxvYWRVc2VyQ2FjaGUge1xuICByZWFkb25seSB1aWQ6IEZpcmViYXNlQXV0aFVzZXJJZDtcbiAgcmVhZG9ubHkgcGFpcnM6IERieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZFVybFBhaXJzUmVjb3JkO1xufVxuXG4vKipcbiAqIFRva2VuIHRoYXQgY29ycmVzcG9uZHMgdG8gYSBTdG9yYWdlQWNjZXNzb3I8RGJ4RmlyZWJhc2VTdG9yYWdlRmlsZURvd25sb2FkVXNlckNhY2hlPiB0aGF0IGlzIHVzZWQgYnkgRGJ4TW9kZWxWaWV3VHJhY2tlclN0b3JhZ2UuXG4gKi9cbmV4cG9ydCBjb25zdCBEQlhfRklSRUJBU0VfU1RPUkFHRUZJTEVfRE9XTkxPQURfU1RPUkFHRV9BQ0NFU1NPUl9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbignRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZURvd25sb2FkU3RvcmFnZUFjY2Vzc29yJyk7XG5cbi8qKlxuICogVXNlZCBmb3IgbWFuYWdpbmcgRGJ4TW9kZWxWaWV3VHJhY2tlckV2ZW50IHN0b3JhZ2UuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlRG93bmxvYWRTdG9yYWdlIHtcbiAgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfTUFYX0RPV05MT0FEX1VSTFMgPSAxMDA7XG5cbiAgcmVhZG9ubHkgYXV0aFNlcnZpY2UgPSBpbmplY3QoRGJ4RmlyZWJhc2VBdXRoU2VydmljZSk7XG4gIHJlYWRvbmx5IHN0b3JhZ2VBY2Nlc3NvciA9IGluamVjdDxTdG9yYWdlQWNjZXNzb3I8RGJ4RmlyZWJhc2VTdG9yYWdlRmlsZURvd25sb2FkVXNlckNhY2hlPj4oREJYX0ZJUkVCQVNFX1NUT1JBR0VGSUxFX0RPV05MT0FEX1NUT1JBR0VfQUNDRVNTT1JfVE9LRU4pO1xuXG4gIGFkZERvd25sb2FkVXJsKHsgaWQsIGRvd25sb2FkVXJsLCBleHBpcmVzQXQsIG1pbWVUeXBlIH06IERieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZFVybFBhaXIpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRDdXJyZW50VXNlckRvd25sb2FkQ2FjaGUoKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKGNhY2hlKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgdWlkLCBwYWlyczogY3VycmVudFBhaXJzIH0gPSBjYWNoZTtcblxuICAgICAgICBjb25zdCBzdG9yYWdlS2V5ID0gdGhpcy5nZXRTdG9yYWdlS2V5Rm9yVWlkKHVpZCk7XG4gICAgICAgIGNvbnN0IHBhaXJzOiBEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlRG93bmxvYWRVcmxQYWlyc1JlY29yZCA9IHtcbiAgICAgICAgICAuLi5jdXJyZW50UGFpcnMsXG4gICAgICAgICAgW2lkXTogYCR7ZXhwaXJlc0F0fV8ke21pbWVUeXBlfV8ke2Rvd25sb2FkVXJsfWBcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdGhpcy5zdG9yYWdlQWNjZXNzb3Iuc2V0KHN0b3JhZ2VLZXksIHtcbiAgICAgICAgICB1aWQsXG4gICAgICAgICAgcGFpcnNcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICAgIGZpcnN0KClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNhY2hlZCBkb3dubG9hZCBVUkwgcGFpciBmb3IgdGhlIGdpdmVuIGtleS5cbiAgICpcbiAgICogVGhlIHBhaXIgbWF5IGJlIGV4cGlyZWQuXG4gICAqXG4gICAqIEBwYXJhbSBrZXlcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldERvd25sb2FkVXJsUGFpcihpbnB1dDogRmlyZXN0b3JlTW9kZWxJZElucHV0KTogT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlRG93bmxvYWRVcmxQYWlyIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgaWQgPSBmaXJlc3RvcmVNb2RlbElkKGlucHV0KTtcbiAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS51aWQkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHVpZCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRVc2VyRG93bmxvYWRDYWNoZSh1aWQpLnBpcGUoXG4gICAgICAgICAgbWFwKChjYWNoZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFpciA9IGNhY2hlPy5wYWlyc1tpZF07XG5cbiAgICAgICAgICAgIGxldCByZXN1bHQ6IERieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZFVybFBhaXIgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIGlmIChwYWlyKSB7XG4gICAgICAgICAgICAgIGNvbnN0IFtleHBpcmVzQXQsIG1pbWVUeXBlLCBkb3dubG9hZFVybF0gPSBzcGxpdEpvaW5SZW1haW5kZXIocGFpciwgJ18nLCAzKTtcblxuICAgICAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgZG93bmxvYWRVcmwsXG4gICAgICAgICAgICAgICAgZXhwaXJlc0F0OiBOdW1iZXIoZXhwaXJlc0F0KSxcbiAgICAgICAgICAgICAgICBtaW1lVHlwZVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICAgIGZpcnN0KClcbiAgICApO1xuICB9XG5cbiAgZ2V0QWxsRG93bmxvYWRVcmxQYWlyc1JlY29yZCh1aWQ6IEZpcmViYXNlQXV0aFVzZXJJZCk6IE9ic2VydmFibGU8RGJ4RmlyZWJhc2VTdG9yYWdlRmlsZURvd25sb2FkVXJsUGFpcnNSZWNvcmQ+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRVc2VyRG93bmxvYWRDYWNoZSh1aWQpLnBpcGUobWFwKCh4KSA9PiB4LnBhaXJzKSk7XG4gIH1cblxuICBnZXRDdXJyZW50VXNlckRvd25sb2FkQ2FjaGUoKTogT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlRG93bmxvYWRVc2VyQ2FjaGU+IHtcbiAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS51aWQkLnBpcGUoc3dpdGNoTWFwKCh1aWQpID0+IHRoaXMuZ2V0VXNlckRvd25sb2FkQ2FjaGUodWlkKSkpO1xuICB9XG5cbiAgZ2V0VXNlckRvd25sb2FkQ2FjaGUodWlkOiBGaXJlYmFzZUF1dGhVc2VySWQpOiBPYnNlcnZhYmxlPERieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZFVzZXJDYWNoZT4ge1xuICAgIGNvbnN0IHN0b3JhZ2VLZXkgPSB0aGlzLmdldFN0b3JhZ2VLZXlGb3JVaWQodWlkKTtcbiAgICByZXR1cm4gdGhpcy5fZ2V0VXNlckRvd25sb2FkQ2FjaGVGb3JTdG9yYWdlS2V5KHN0b3JhZ2VLZXksIHVpZCk7XG4gIH1cblxuICBjbGVhckN1cnJlbnRVc2VyRG93bmxvYWRDYWNoZSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS51aWQkLnBpcGUoc3dpdGNoTWFwKCh1aWQpID0+IHRoaXMuY2xlYXJVc2VyRG93bmxvYWRDYWNoZSh1aWQpKSk7XG4gIH1cblxuICBjbGVhclVzZXJEb3dubG9hZENhY2hlKHVpZDogRmlyZWJhc2VBdXRoVXNlcklkKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3Qgc3RvcmFnZUtleSA9IHRoaXMuZ2V0U3RvcmFnZUtleUZvclVpZCh1aWQpO1xuICAgIHJldHVybiB0aGlzLnN0b3JhZ2VBY2Nlc3Nvci5yZW1vdmUoc3RvcmFnZUtleSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRVc2VyRG93bmxvYWRDYWNoZUZvclN0b3JhZ2VLZXkoc3RvcmFnZUtleTogc3RyaW5nLCB1aWQ6IEZpcmViYXNlQXV0aFVzZXJJZCk6IE9ic2VydmFibGU8RGJ4RmlyZWJhc2VTdG9yYWdlRmlsZURvd25sb2FkVXNlckNhY2hlPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZUFjY2Vzc29yLmdldChzdG9yYWdlS2V5KS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcigoZSkgPT4ge1xuICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICAgIH0pLFxuICAgICAgbWFwKChyZXN1bHQpID0+IHJlc3VsdCA/PyB7IHVpZCwgcGFpcnM6IHt9IH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldFN0b3JhZ2VLZXlGb3JVaWQodWlkOiBGaXJlYmFzZUF1dGhVc2VySWQpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0b3JhZ2VLZXkgPSBgc2ZfZGxfY2FjaGVfJHt1aWR9YDtcbiAgICByZXR1cm4gc3RvcmFnZUtleTtcbiAgfVxufVxuIl19
@@ -0,0 +1,33 @@
1
+ import { makeEnvironmentProviders } from '@angular/core';
2
+ import { SimpleStorageAccessorFactory } from '@dereekb/dbx-core';
3
+ import { DBX_FIREBASE_STORAGEFILE_DOWNLOAD_STORAGE_ACCESSOR_TOKEN, DbxFirebaseStorageFileDownloadStorage } from './service/storagefile.download.storage.service';
4
+ import { DbxFirebaseStorageFileDownloadService } from './service/storagefile.download.service';
5
+ /**
6
+ * Factory function for creating a StorageAccessor for the model view tracker.
7
+ */
8
+ export function defaultDbxFirebaseStorageFileDownloadStorageAccessorFactory(storageAccessorFactory) {
9
+ const accessor = storageAccessorFactory.createStorageAccessor({
10
+ prefix: 'sfds'
11
+ });
12
+ return accessor;
13
+ }
14
+ /**
15
+ * Creates EnvironmentProviders for providing DbxModelTrackerService, DbxModelObjectStateService and sets up the NgRx store for DbxModelTrackerEffects.
16
+ *
17
+ * @returns EnvironmentProviders
18
+ */
19
+ export function provideDbxFirebaseStorageFileService() {
20
+ const providers = [
21
+ // Storage accessor
22
+ {
23
+ provide: DBX_FIREBASE_STORAGEFILE_DOWNLOAD_STORAGE_ACCESSOR_TOKEN,
24
+ useFactory: defaultDbxFirebaseStorageFileDownloadStorageAccessorFactory,
25
+ deps: [SimpleStorageAccessorFactory]
26
+ },
27
+ // Service
28
+ DbxFirebaseStorageFileDownloadStorage,
29
+ DbxFirebaseStorageFileDownloadService
30
+ ];
31
+ return makeEnvironmentProviders(providers);
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZWZpbGUucHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kdWxlcy9zdG9yYWdlZmlsZS9zdG9yYWdlZmlsZS5wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE0Qyx3QkFBd0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsNEJBQTRCLEVBQXdCLE1BQU0sbUJBQW1CLENBQUM7QUFDdkYsT0FBTyxFQUFFLHdEQUF3RCxFQUFFLHFDQUFxQyxFQUFnRCxNQUFNLGdEQUFnRCxDQUFDO0FBQy9NLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRS9GOztHQUVHO0FBQ0gsTUFBTSxVQUFVLDJEQUEyRCxDQUFDLHNCQUFvRDtJQUM5SCxNQUFNLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxxQkFBcUIsQ0FBMEM7UUFDckcsTUFBTSxFQUFFLE1BQU07S0FDZixDQUFDLENBQUM7SUFFSCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxvQ0FBb0M7SUFDbEQsTUFBTSxTQUFTLEdBQXdDO1FBQ3JELG1CQUFtQjtRQUNuQjtZQUNFLE9BQU8sRUFBRSx3REFBd0Q7WUFDakUsVUFBVSxFQUFFLDJEQUEyRDtZQUN2RSxJQUFJLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztTQUNyQztRQUNELFVBQVU7UUFDVixxQ0FBcUM7UUFDckMscUNBQXFDO0tBQ3RDLENBQUM7SUFFRixPQUFPLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEVudmlyb25tZW50UHJvdmlkZXJzLCB0eXBlIFByb3ZpZGVyLCBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNpbXBsZVN0b3JhZ2VBY2Nlc3NvckZhY3RvcnksIHR5cGUgU3RvcmFnZUFjY2Vzc29yIH0gZnJvbSAnQGRlcmVla2IvZGJ4LWNvcmUnO1xuaW1wb3J0IHsgREJYX0ZJUkVCQVNFX1NUT1JBR0VGSUxFX0RPV05MT0FEX1NUT1JBR0VfQUNDRVNTT1JfVE9LRU4sIERieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZFN0b3JhZ2UsIHR5cGUgRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZURvd25sb2FkVXNlckNhY2hlIH0gZnJvbSAnLi9zZXJ2aWNlL3N0b3JhZ2VmaWxlLmRvd25sb2FkLnN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlRG93bmxvYWRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlL3N0b3JhZ2VmaWxlLmRvd25sb2FkLnNlcnZpY2UnO1xuXG4vKipcbiAqIEZhY3RvcnkgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIGEgU3RvcmFnZUFjY2Vzc29yIGZvciB0aGUgbW9kZWwgdmlldyB0cmFja2VyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdERieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZFN0b3JhZ2VBY2Nlc3NvckZhY3Rvcnkoc3RvcmFnZUFjY2Vzc29yRmFjdG9yeTogU2ltcGxlU3RvcmFnZUFjY2Vzc29yRmFjdG9yeSk6IFN0b3JhZ2VBY2Nlc3NvcjxEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlRG93bmxvYWRVc2VyQ2FjaGU+IHtcbiAgY29uc3QgYWNjZXNzb3IgPSBzdG9yYWdlQWNjZXNzb3JGYWN0b3J5LmNyZWF0ZVN0b3JhZ2VBY2Nlc3NvcjxEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlRG93bmxvYWRVc2VyQ2FjaGU+KHtcbiAgICBwcmVmaXg6ICdzZmRzJ1xuICB9KTtcblxuICByZXR1cm4gYWNjZXNzb3I7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBFbnZpcm9ubWVudFByb3ZpZGVycyBmb3IgcHJvdmlkaW5nIERieE1vZGVsVHJhY2tlclNlcnZpY2UsIERieE1vZGVsT2JqZWN0U3RhdGVTZXJ2aWNlIGFuZCBzZXRzIHVwIHRoZSBOZ1J4IHN0b3JlIGZvciBEYnhNb2RlbFRyYWNrZXJFZmZlY3RzLlxuICpcbiAqIEByZXR1cm5zIEVudmlyb25tZW50UHJvdmlkZXJzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZVNlcnZpY2UoKTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICBjb25zdCBwcm92aWRlcnM6IChQcm92aWRlciB8IEVudmlyb25tZW50UHJvdmlkZXJzKVtdID0gW1xuICAgIC8vIFN0b3JhZ2UgYWNjZXNzb3JcbiAgICB7XG4gICAgICBwcm92aWRlOiBEQlhfRklSRUJBU0VfU1RPUkFHRUZJTEVfRE9XTkxPQURfU1RPUkFHRV9BQ0NFU1NPUl9UT0tFTixcbiAgICAgIHVzZUZhY3Rvcnk6IGRlZmF1bHREYnhGaXJlYmFzZVN0b3JhZ2VGaWxlRG93bmxvYWRTdG9yYWdlQWNjZXNzb3JGYWN0b3J5LFxuICAgICAgZGVwczogW1NpbXBsZVN0b3JhZ2VBY2Nlc3NvckZhY3RvcnldXG4gICAgfSxcbiAgICAvLyBTZXJ2aWNlXG4gICAgRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZURvd25sb2FkU3RvcmFnZSxcbiAgICBEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlRG93bmxvYWRTZXJ2aWNlXG4gIF07XG5cbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhwcm92aWRlcnMpO1xufVxuIl19
@@ -1,5 +1,5 @@
1
1
  import { Injectable, inject } from '@angular/core';
2
- import { AbstractDbxFirebaseDocumentStore, firebaseDocumentStoreCreateFunction, firebaseDocumentStoreCrudFunction, firebaseDocumentStoreDeleteFunction, firebaseDocumentStoreUpdateFunction } from '../../../model/modules/store';
2
+ import { AbstractDbxFirebaseDocumentStore, firebaseDocumentStoreCreateFunction, firebaseDocumentStoreCrudFunction, firebaseDocumentStoreDeleteFunction, firebaseDocumentStoreReadFunction, firebaseDocumentStoreUpdateFunction } from '../../../model/modules/store';
3
3
  import { StorageFileFirestoreCollections, StorageFileFunctions } from '@dereekb/firebase';
4
4
  import * as i0 from "@angular/core";
5
5
  export class StorageFileDocumentStore extends AbstractDbxFirebaseDocumentStore {
@@ -13,10 +13,11 @@ export class StorageFileDocumentStore extends AbstractDbxFirebaseDocumentStore {
13
13
  updateStorageFile = firebaseDocumentStoreUpdateFunction(this, this.storageFileFunctions.storageFile.updateStorageFile.update);
14
14
  processStorageFile = firebaseDocumentStoreUpdateFunction(this, this.storageFileFunctions.storageFile.updateStorageFile.process);
15
15
  deleteStorageFile = firebaseDocumentStoreDeleteFunction(this, this.storageFileFunctions.storageFile.deleteStorageFile.delete);
16
+ downloadStorageFile = firebaseDocumentStoreReadFunction(this, this.storageFileFunctions.storageFile.readStorageFile.download);
16
17
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StorageFileDocumentStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
17
18
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StorageFileDocumentStore });
18
19
  }
19
20
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StorageFileDocumentStore, decorators: [{
20
21
  type: Injectable
21
22
  }], ctorParameters: () => [] });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZWZpbGUuZG9jdW1lbnQuc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2R1bGVzL3N0b3JhZ2VmaWxlL3N0b3JlL3N0b3JhZ2VmaWxlLmRvY3VtZW50LnN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxtQ0FBbUMsRUFBRSxpQ0FBaUMsRUFBRSxtQ0FBbUMsRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xPLE9BQU8sRUFBb0MsK0JBQStCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFHNUgsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGdDQUFrRTtJQUNyRyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUU3RDtRQUNFLEtBQUssQ0FBQyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRVEsMkJBQTJCLEdBQUcsbUNBQW1DLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEksK0JBQStCLEdBQUcsbUNBQW1DLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEosbUNBQW1DLEdBQUcsaUNBQWlDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUUvSSxpQkFBaUIsR0FBRyxtQ0FBbUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5SCxrQkFBa0IsR0FBRyxtQ0FBbUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVoSSxpQkFBaUIsR0FBRyxtQ0FBbUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQzt3R0FkNUgsd0JBQXdCOzRHQUF4Qix3QkFBd0I7OzRGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0RGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlLCBmaXJlYmFzZURvY3VtZW50U3RvcmVDcmVhdGVGdW5jdGlvbiwgZmlyZWJhc2VEb2N1bWVudFN0b3JlQ3J1ZEZ1bmN0aW9uLCBmaXJlYmFzZURvY3VtZW50U3RvcmVEZWxldGVGdW5jdGlvbiwgZmlyZWJhc2VEb2N1bWVudFN0b3JlVXBkYXRlRnVuY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9tb2R1bGVzL3N0b3JlJztcbmltcG9ydCB7IFN0b3JhZ2VGaWxlLCBTdG9yYWdlRmlsZURvY3VtZW50LCBTdG9yYWdlRmlsZUZpcmVzdG9yZUNvbGxlY3Rpb25zLCBTdG9yYWdlRmlsZUZ1bmN0aW9ucyB9IGZyb20gJ0BkZXJlZWtiL2ZpcmViYXNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFN0b3JhZ2VGaWxlRG9jdW1lbnRTdG9yZSBleHRlbmRzIEFic3RyYWN0RGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlPFN0b3JhZ2VGaWxlLCBTdG9yYWdlRmlsZURvY3VtZW50PiB7XG4gIHJlYWRvbmx5IHN0b3JhZ2VGaWxlRnVuY3Rpb25zID0gaW5qZWN0KFN0b3JhZ2VGaWxlRnVuY3Rpb25zKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcih7IGZpcmVzdG9yZUNvbGxlY3Rpb246IGluamVjdChTdG9yYWdlRmlsZUZpcmVzdG9yZUNvbGxlY3Rpb25zKS5zdG9yYWdlRmlsZUNvbGxlY3Rpb24gfSk7XG4gIH1cblxuICByZWFkb25seSBjcmVhdGVTdG9yYWdlRmlsZUZyb21VcGxvYWQgPSBmaXJlYmFzZURvY3VtZW50U3RvcmVDcmVhdGVGdW5jdGlvbih0aGlzLCB0aGlzLnN0b3JhZ2VGaWxlRnVuY3Rpb25zLnN0b3JhZ2VGaWxlLmNyZWF0ZVN0b3JhZ2VGaWxlLmNyZWF0ZSk7XG4gIHJlYWRvbmx5IGluaXRpYWxpemVTdG9yYWdlRmlsZUZyb21VcGxvYWQgPSBmaXJlYmFzZURvY3VtZW50U3RvcmVDcmVhdGVGdW5jdGlvbih0aGlzLCB0aGlzLnN0b3JhZ2VGaWxlRnVuY3Rpb25zLnN0b3JhZ2VGaWxlLmNyZWF0ZVN0b3JhZ2VGaWxlLmZyb21VcGxvYWQpO1xuICByZWFkb25seSBpbml0aWFsaXplQWxsU3RvcmFnZUZpbGVzRnJvbVVwbG9hZCA9IGZpcmViYXNlRG9jdW1lbnRTdG9yZUNydWRGdW5jdGlvbih0aGlzLnN0b3JhZ2VGaWxlRnVuY3Rpb25zLnN0b3JhZ2VGaWxlLmNyZWF0ZVN0b3JhZ2VGaWxlLmFsbEZyb21VcGxvYWQpO1xuXG4gIHJlYWRvbmx5IHVwZGF0ZVN0b3JhZ2VGaWxlID0gZmlyZWJhc2VEb2N1bWVudFN0b3JlVXBkYXRlRnVuY3Rpb24odGhpcywgdGhpcy5zdG9yYWdlRmlsZUZ1bmN0aW9ucy5zdG9yYWdlRmlsZS51cGRhdGVTdG9yYWdlRmlsZS51cGRhdGUpO1xuICByZWFkb25seSBwcm9jZXNzU3RvcmFnZUZpbGUgPSBmaXJlYmFzZURvY3VtZW50U3RvcmVVcGRhdGVGdW5jdGlvbih0aGlzLCB0aGlzLnN0b3JhZ2VGaWxlRnVuY3Rpb25zLnN0b3JhZ2VGaWxlLnVwZGF0ZVN0b3JhZ2VGaWxlLnByb2Nlc3MpO1xuXG4gIHJlYWRvbmx5IGRlbGV0ZVN0b3JhZ2VGaWxlID0gZmlyZWJhc2VEb2N1bWVudFN0b3JlRGVsZXRlRnVuY3Rpb24odGhpcywgdGhpcy5zdG9yYWdlRmlsZUZ1bmN0aW9ucy5zdG9yYWdlRmlsZS5kZWxldGVTdG9yYWdlRmlsZS5kZWxldGUpO1xufVxuIl19
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZWZpbGUuZG9jdW1lbnQuc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2R1bGVzL3N0b3JhZ2VmaWxlL3N0b3JlL3N0b3JhZ2VmaWxlLmRvY3VtZW50LnN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxtQ0FBbUMsRUFBRSxpQ0FBaUMsRUFBRSxtQ0FBbUMsRUFBRSxpQ0FBaUMsRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JRLE9BQU8sRUFBb0MsK0JBQStCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFHNUgsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGdDQUFrRTtJQUNyRyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUU3RDtRQUNFLEtBQUssQ0FBQyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRVEsMkJBQTJCLEdBQUcsbUNBQW1DLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEksK0JBQStCLEdBQUcsbUNBQW1DLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEosbUNBQW1DLEdBQUcsaUNBQWlDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUUvSSxpQkFBaUIsR0FBRyxtQ0FBbUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5SCxrQkFBa0IsR0FBRyxtQ0FBbUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVoSSxpQkFBaUIsR0FBRyxtQ0FBbUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUU5SCxtQkFBbUIsR0FBRyxpQ0FBaUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7d0dBaEI1SCx3QkFBd0I7NEdBQXhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3REYnhGaXJlYmFzZURvY3VtZW50U3RvcmUsIGZpcmViYXNlRG9jdW1lbnRTdG9yZUNyZWF0ZUZ1bmN0aW9uLCBmaXJlYmFzZURvY3VtZW50U3RvcmVDcnVkRnVuY3Rpb24sIGZpcmViYXNlRG9jdW1lbnRTdG9yZURlbGV0ZUZ1bmN0aW9uLCBmaXJlYmFzZURvY3VtZW50U3RvcmVSZWFkRnVuY3Rpb24sIGZpcmViYXNlRG9jdW1lbnRTdG9yZVVwZGF0ZUZ1bmN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvbW9kdWxlcy9zdG9yZSc7XG5pbXBvcnQgeyBTdG9yYWdlRmlsZSwgU3RvcmFnZUZpbGVEb2N1bWVudCwgU3RvcmFnZUZpbGVGaXJlc3RvcmVDb2xsZWN0aW9ucywgU3RvcmFnZUZpbGVGdW5jdGlvbnMgfSBmcm9tICdAZGVyZWVrYi9maXJlYmFzZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTdG9yYWdlRmlsZURvY3VtZW50U3RvcmUgZXh0ZW5kcyBBYnN0cmFjdERieEZpcmViYXNlRG9jdW1lbnRTdG9yZTxTdG9yYWdlRmlsZSwgU3RvcmFnZUZpbGVEb2N1bWVudD4ge1xuICByZWFkb25seSBzdG9yYWdlRmlsZUZ1bmN0aW9ucyA9IGluamVjdChTdG9yYWdlRmlsZUZ1bmN0aW9ucyk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoeyBmaXJlc3RvcmVDb2xsZWN0aW9uOiBpbmplY3QoU3RvcmFnZUZpbGVGaXJlc3RvcmVDb2xsZWN0aW9ucykuc3RvcmFnZUZpbGVDb2xsZWN0aW9uIH0pO1xuICB9XG5cbiAgcmVhZG9ubHkgY3JlYXRlU3RvcmFnZUZpbGVGcm9tVXBsb2FkID0gZmlyZWJhc2VEb2N1bWVudFN0b3JlQ3JlYXRlRnVuY3Rpb24odGhpcywgdGhpcy5zdG9yYWdlRmlsZUZ1bmN0aW9ucy5zdG9yYWdlRmlsZS5jcmVhdGVTdG9yYWdlRmlsZS5jcmVhdGUpO1xuICByZWFkb25seSBpbml0aWFsaXplU3RvcmFnZUZpbGVGcm9tVXBsb2FkID0gZmlyZWJhc2VEb2N1bWVudFN0b3JlQ3JlYXRlRnVuY3Rpb24odGhpcywgdGhpcy5zdG9yYWdlRmlsZUZ1bmN0aW9ucy5zdG9yYWdlRmlsZS5jcmVhdGVTdG9yYWdlRmlsZS5mcm9tVXBsb2FkKTtcbiAgcmVhZG9ubHkgaW5pdGlhbGl6ZUFsbFN0b3JhZ2VGaWxlc0Zyb21VcGxvYWQgPSBmaXJlYmFzZURvY3VtZW50U3RvcmVDcnVkRnVuY3Rpb24odGhpcy5zdG9yYWdlRmlsZUZ1bmN0aW9ucy5zdG9yYWdlRmlsZS5jcmVhdGVTdG9yYWdlRmlsZS5hbGxGcm9tVXBsb2FkKTtcblxuICByZWFkb25seSB1cGRhdGVTdG9yYWdlRmlsZSA9IGZpcmViYXNlRG9jdW1lbnRTdG9yZVVwZGF0ZUZ1bmN0aW9uKHRoaXMsIHRoaXMuc3RvcmFnZUZpbGVGdW5jdGlvbnMuc3RvcmFnZUZpbGUudXBkYXRlU3RvcmFnZUZpbGUudXBkYXRlKTtcbiAgcmVhZG9ubHkgcHJvY2Vzc1N0b3JhZ2VGaWxlID0gZmlyZWJhc2VEb2N1bWVudFN0b3JlVXBkYXRlRnVuY3Rpb24odGhpcywgdGhpcy5zdG9yYWdlRmlsZUZ1bmN0aW9ucy5zdG9yYWdlRmlsZS51cGRhdGVTdG9yYWdlRmlsZS5wcm9jZXNzKTtcblxuICByZWFkb25seSBkZWxldGVTdG9yYWdlRmlsZSA9IGZpcmViYXNlRG9jdW1lbnRTdG9yZURlbGV0ZUZ1bmN0aW9uKHRoaXMsIHRoaXMuc3RvcmFnZUZpbGVGdW5jdGlvbnMuc3RvcmFnZUZpbGUuZGVsZXRlU3RvcmFnZUZpbGUuZGVsZXRlKTtcblxuICByZWFkb25seSBkb3dubG9hZFN0b3JhZ2VGaWxlID0gZmlyZWJhc2VEb2N1bWVudFN0b3JlUmVhZEZ1bmN0aW9uKHRoaXMsIHRoaXMuc3RvcmFnZUZpbGVGdW5jdGlvbnMuc3RvcmFnZUZpbGUucmVhZFN0b3JhZ2VGaWxlLmRvd25sb2FkKTtcbn1cbiJdfQ==
@@ -11,6 +11,7 @@ import { provideDbxFirebaseNotifications } from './modules/notification/notifica
11
11
  import { provideDbxFirebaseModelContextService } from './model/service/model.context.providers';
12
12
  import { provideDbxFirebaseModelTypesService } from './model/modules/model/model.types.providers';
13
13
  import { provideDbxFirebaseAnalyticsUserEventsListenerService } from './analytics';
14
+ import { provideDbxFirebaseStorageFileService } from './modules/storagefile/storagefile.providers';
14
15
  /**
15
16
  * All-in-one provider for providing the main configurations for DbxFirebase.
16
17
  *
@@ -21,7 +22,7 @@ import { provideDbxFirebaseAnalyticsUserEventsListenerService } from './analytic
21
22
  * @returns EnvironmentProviders for the DbxFirebase configuration.
22
23
  */
23
24
  export function provideDbxFirebase(config) {
24
- const { app, emulator, storage, auth, functions, firestores, modelContextService, modelTypesService, development, notifications, provideAnalyticsUserEventsListener } = config;
25
+ const { app, emulator, storage, auth, functions, firestores, modelContextService, modelTypesService, development, notifications, provideAnalyticsUserEventsListener, provideStorageFileService } = config;
25
26
  const providers = [provideDbxFirebaseApp(app), provideDbxFirebaseEmulator(emulator), providedDbxFirebaseStorage(storage), provideDbxFirebaseAuth(auth), provideDbxFirebaseFunctions(functions), provideDbxFirebaseModelContextService(modelContextService), provideDbxFirebaseModelTypesService(modelTypesService)];
26
27
  asArray(firestores).forEach((firestore) => {
27
28
  providers.push(provideDbxFirestoreCollection(firestore));
@@ -35,6 +36,9 @@ export function provideDbxFirebase(config) {
35
36
  if (notifications != null) {
36
37
  providers.push(provideDbxFirebaseNotifications(notifications));
37
38
  }
39
+ if (provideStorageFileService) {
40
+ providers.push(provideDbxFirebaseStorageFileService());
41
+ }
38
42
  return makeEnvironmentProviders(providers);
39
43
  }
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvcHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsT0FBTyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBNkIsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxFQUFFLHNCQUFzQixFQUFxQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzVHLE9BQU8sRUFBRSwwQkFBMEIsRUFBMEMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1SCxPQUFPLEVBQUUscUJBQXFCLEVBQW9DLE1BQU0sK0JBQStCLENBQUM7QUFDeEcsT0FBTyxFQUFvRCw2QkFBNkIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzNJLE9BQU8sRUFBRSwyQkFBMkIsRUFBMEMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3SCxPQUFPLEVBQXdDLDBCQUEwQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEgsT0FBTyxFQUFFLDZCQUE2QixFQUE0QyxNQUFNLHFDQUFxQyxDQUFDO0FBQzlILE9BQU8sRUFBRSwrQkFBK0IsRUFBOEMsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1SSxPQUFPLEVBQUUscUNBQXFDLEVBQW9ELE1BQU0seUNBQXlDLENBQUM7QUFDbEosT0FBTyxFQUFFLG1DQUFtQyxFQUFrRCxNQUFNLDZDQUE2QyxDQUFDO0FBQ2xKLE9BQU8sRUFBRSxvREFBb0QsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQXVDbkY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQTJELE1BQXNDO0lBQ2pJLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLGtDQUFrQyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRS9LLE1BQU0sU0FBUyxHQUEyQixDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxFQUFFLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxFQUFFLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxFQUFFLHNCQUFzQixDQUFDLElBQUksQ0FBQyxFQUFFLDJCQUEyQixDQUFDLFNBQVMsQ0FBQyxFQUFFLHFDQUFxQyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsbUNBQW1DLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0lBRTVVLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtRQUN4QyxTQUFTLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLGtDQUFrQyxFQUFFLENBQUM7UUFDdkMsU0FBUyxDQUFDLElBQUksQ0FBQyxvREFBb0QsRUFBRSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELElBQUksV0FBVyxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELElBQUksYUFBYSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsT0FBTyx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBBcnJheU9yVmFsdWUsIGFzQXJyYXksIHR5cGUgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IHR5cGUgRW52aXJvbm1lbnRQcm92aWRlcnMsIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdHlwZSBGaXJlYmFzZUZ1bmN0aW9uc01hcCB9IGZyb20gJ0BkZXJlZWtiL2ZpcmViYXNlJztcbmltcG9ydCB7IHByb3ZpZGVEYnhGaXJlYmFzZUF1dGgsIHR5cGUgUHJvdmlkZURieEZpcmViYXNlQXV0aENvbmZpZyB9IGZyb20gJy4vYXV0aC8vZmlyZWJhc2UuYXV0aC5wcm92aWRlcnMnO1xuaW1wb3J0IHsgcHJvdmlkZURieEZpcmViYXNlRW11bGF0b3IsIHR5cGUgUHJvdmlkZURieEZpcmViYXNlRW11bGF0b3JzQ29uZmlnIH0gZnJvbSAnLi9maXJlYmFzZS9maXJlYmFzZS5lbXVsYXRvci5wcm92aWRlcnMnO1xuaW1wb3J0IHsgcHJvdmlkZURieEZpcmViYXNlQXBwLCB0eXBlIFByb3ZpZGVEYnhGaXJlYmFzZUFwcENvbmZpZyB9IGZyb20gJy4vZmlyZWJhc2UvZmlyZWJhc2UucHJvdmlkZXJzJztcbmltcG9ydCB7IHR5cGUgUHJvdmlkZURieEZpcmViYXNlRmlyZXN0b3JlQ29sbGVjdGlvbkNvbmZpZywgcHJvdmlkZURieEZpcmVzdG9yZUNvbGxlY3Rpb24gfSBmcm9tICcuL2ZpcmVzdG9yZS9maXJlYmFzZS5maXJlc3RvcmUucHJvdmlkZXJzJztcbmltcG9ydCB7IHByb3ZpZGVEYnhGaXJlYmFzZUZ1bmN0aW9ucywgdHlwZSBQcm92aWRlRGJ4RmlyZWJhc2VGdW5jdGlvbnNDb25maWcgfSBmcm9tICcuL2Z1bmN0aW9uL2ZpcmViYXNlLmZ1bmN0aW9uLnByb3ZpZGVycyc7XG5pbXBvcnQgeyB0eXBlIFByb3ZpZGVEYnhGaXJlYmFzZVN0b3JhZ2VDb25maWcsIHByb3ZpZGVkRGJ4RmlyZWJhc2VTdG9yYWdlIH0gZnJvbSAnLi9zdG9yYWdlL2ZpcmViYXNlLnN0b3JhZ2UucHJvdmlkZXJzJztcbmltcG9ydCB7IHByb3ZpZGVEYnhGaXJlYmFzZURldmVsb3BtZW50LCB0eXBlIFByb3ZpZGVEYnhGaXJlYmFzZURldmVsb3BtZW50Q29uZmlnIH0gZnJvbSAnLi9kZXZlbG9wbWVudC9kZXZlbG9wbWVudC5wcm92aWRlcnMnO1xuaW1wb3J0IHsgcHJvdmlkZURieEZpcmViYXNlTm90aWZpY2F0aW9ucywgdHlwZSBQcm92aWRlRGJ4RmlyZWJhc2VOb3RpZmljYXRpb25zQ29uZmlnIH0gZnJvbSAnLi9tb2R1bGVzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24ucHJvdmlkZXJzJztcbmltcG9ydCB7IHByb3ZpZGVEYnhGaXJlYmFzZU1vZGVsQ29udGV4dFNlcnZpY2UsIHR5cGUgUHJvdmlkZURieEZpcmViYXNlTW9kZWxDb250ZXh0U2VydmljZUNvbmZpZyB9IGZyb20gJy4vbW9kZWwvc2VydmljZS9tb2RlbC5jb250ZXh0LnByb3ZpZGVycyc7XG5pbXBvcnQgeyBwcm92aWRlRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZSwgdHlwZSBQcm92aWRlRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUNvbmZpZyB9IGZyb20gJy4vbW9kZWwvbW9kdWxlcy9tb2RlbC9tb2RlbC50eXBlcy5wcm92aWRlcnMnO1xuaW1wb3J0IHsgcHJvdmlkZURieEZpcmViYXNlQW5hbHl0aWNzVXNlckV2ZW50c0xpc3RlbmVyU2VydmljZSB9IGZyb20gJy4vYW5hbHl0aWNzJztcblxuZXhwb3J0IGludGVyZmFjZSBQcm92aWRlRGJ4RmlyZWJhc2VDb25maWc8VCwgTSBleHRlbmRzIEZpcmViYXNlRnVuY3Rpb25zTWFwID0gRmlyZWJhc2VGdW5jdGlvbnNNYXA+IHtcbiAgLy8gUmVxdWlyZWQgQ29uZmlndXJhdGlvbnNcbiAgcmVhZG9ubHkgYXBwOiBQcm92aWRlRGJ4RmlyZWJhc2VBcHBDb25maWc7XG4gIHJlYWRvbmx5IGVtdWxhdG9yOiBQcm92aWRlRGJ4RmlyZWJhc2VFbXVsYXRvcnNDb25maWc7XG4gIHJlYWRvbmx5IHN0b3JhZ2U6IFByb3ZpZGVEYnhGaXJlYmFzZVN0b3JhZ2VDb25maWc7XG4gIHJlYWRvbmx5IGF1dGg6IFByb3ZpZGVEYnhGaXJlYmFzZUF1dGhDb25maWc7XG4gIHJlYWRvbmx5IGZ1bmN0aW9uczogUHJvdmlkZURieEZpcmViYXNlRnVuY3Rpb25zQ29uZmlnPFQsIE0+O1xuICByZWFkb25seSBmaXJlc3RvcmVzOiBBcnJheU9yVmFsdWU8UHJvdmlkZURieEZpcmViYXNlRmlyZXN0b3JlQ29sbGVjdGlvbkNvbmZpZzxhbnk+PjtcbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIHByb3ZpZGVEYnhGaXJlYmFzZU1vZGVsQ29udGV4dFNlcnZpY2UoKS5cbiAgICovXG4gIHJlYWRvbmx5IG1vZGVsQ29udGV4dFNlcnZpY2U6IFByb3ZpZGVEYnhGaXJlYmFzZU1vZGVsQ29udGV4dFNlcnZpY2VDb25maWc8YW55PjtcbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIHByb3ZpZGVEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlKCkuXG4gICAqL1xuICByZWFkb25seSBtb2RlbFR5cGVzU2VydmljZTogUHJvdmlkZURieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VDb25maWc7XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBwcm92aWRlRGJ4RmlyZWJhc2VEZXZlbG9wbWVudC5cbiAgICpcbiAgICogSWYgZmFsc2UsIHByb3ZpZGVEYnhGaXJlYmFzZURldmVsb3BtZW50KCkgd2lsbCBub3QgYmUgcHJvdmlkZWQvY2FsbGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZGV2ZWxvcG1lbnQ/OiBQcm92aWRlRGJ4RmlyZWJhc2VEZXZlbG9wbWVudENvbmZpZyB8IGZhbHNlO1xuXG4gIC8vIE9wdGlvbmFsXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBwcm92aWRlRGJ4RmlyZWJhc2VOb3RpZmljYXRpb25zKCkuXG4gICAqXG4gICAqIElmIG5vdCBwcm92aWRlZCwgcHJvdmlkZURieEZpcmViYXNlTm90aWZpY2F0aW9ucygpIHdpbGwgbm90IGJlIHByb3ZpZGVkL2NhbGxlZC5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbnM/OiBQcm92aWRlRGJ4RmlyZWJhc2VOb3RpZmljYXRpb25zQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCBwcm92aWRlRGJ4RmlyZWJhc2VBbmFseXRpY3NVc2VyRXZlbnRzTGlzdGVuZXJTZXJ2aWNlKCkgd2lsbCBiZSBwcm92aWRlZC9jYWxsZWQuXG4gICAqL1xuICByZWFkb25seSBwcm92aWRlQW5hbHl0aWNzVXNlckV2ZW50c0xpc3RlbmVyPzogTWF5YmU8Ym9vbGVhbj47XG59XG5cbi8qKlxuICogQWxsLWluLW9uZSBwcm92aWRlciBmb3IgcHJvdmlkaW5nIHRoZSBtYWluIGNvbmZpZ3VyYXRpb25zIGZvciBEYnhGaXJlYmFzZS5cbiAqXG4gKiBSZXF1aXJlcyB0aGUgZm9sbG93aW5nIGFscmVhZHkgYmUgcHJvdmlkZWQvY2FsbGVkOlxuICogLSBwcm92aWRlRGJ4TW9kZWxTZXJ2aWNlKClcbiAqXG4gKiBAcGFyYW0gY29uZmlnIENvbmZpZ3VyYXRpb24gZm9yIHByb3ZpZGVEYnhGaXJlYmFzZSgpLlxuICogQHJldHVybnMgRW52aXJvbm1lbnRQcm92aWRlcnMgZm9yIHRoZSBEYnhGaXJlYmFzZSBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZURieEZpcmViYXNlPFQsIE0gZXh0ZW5kcyBGaXJlYmFzZUZ1bmN0aW9uc01hcCA9IEZpcmViYXNlRnVuY3Rpb25zTWFwPihjb25maWc6IFByb3ZpZGVEYnhGaXJlYmFzZUNvbmZpZzxULCBNPikge1xuICBjb25zdCB7IGFwcCwgZW11bGF0b3IsIHN0b3JhZ2UsIGF1dGgsIGZ1bmN0aW9ucywgZmlyZXN0b3JlcywgbW9kZWxDb250ZXh0U2VydmljZSwgbW9kZWxUeXBlc1NlcnZpY2UsIGRldmVsb3BtZW50LCBub3RpZmljYXRpb25zLCBwcm92aWRlQW5hbHl0aWNzVXNlckV2ZW50c0xpc3RlbmVyIH0gPSBjb25maWc7XG5cbiAgY29uc3QgcHJvdmlkZXJzOiBFbnZpcm9ubWVudFByb3ZpZGVyc1tdID0gW3Byb3ZpZGVEYnhGaXJlYmFzZUFwcChhcHApLCBwcm92aWRlRGJ4RmlyZWJhc2VFbXVsYXRvcihlbXVsYXRvciksIHByb3ZpZGVkRGJ4RmlyZWJhc2VTdG9yYWdlKHN0b3JhZ2UpLCBwcm92aWRlRGJ4RmlyZWJhc2VBdXRoKGF1dGgpLCBwcm92aWRlRGJ4RmlyZWJhc2VGdW5jdGlvbnMoZnVuY3Rpb25zKSwgcHJvdmlkZURieEZpcmViYXNlTW9kZWxDb250ZXh0U2VydmljZShtb2RlbENvbnRleHRTZXJ2aWNlKSwgcHJvdmlkZURieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2UobW9kZWxUeXBlc1NlcnZpY2UpXTtcblxuICBhc0FycmF5KGZpcmVzdG9yZXMpLmZvckVhY2goKGZpcmVzdG9yZSkgPT4ge1xuICAgIHByb3ZpZGVycy5wdXNoKHByb3ZpZGVEYnhGaXJlc3RvcmVDb2xsZWN0aW9uKGZpcmVzdG9yZSkpO1xuICB9KTtcblxuICBpZiAocHJvdmlkZUFuYWx5dGljc1VzZXJFdmVudHNMaXN0ZW5lcikge1xuICAgIHByb3ZpZGVycy5wdXNoKHByb3ZpZGVEYnhGaXJlYmFzZUFuYWx5dGljc1VzZXJFdmVudHNMaXN0ZW5lclNlcnZpY2UoKSk7XG4gIH1cblxuICBpZiAoZGV2ZWxvcG1lbnQgIT09IGZhbHNlKSB7XG4gICAgcHJvdmlkZXJzLnB1c2gocHJvdmlkZURieEZpcmViYXNlRGV2ZWxvcG1lbnQoZGV2ZWxvcG1lbnQgPz8ge30pKTtcbiAgfVxuXG4gIGlmIChub3RpZmljYXRpb25zICE9IG51bGwpIHtcbiAgICBwcm92aWRlcnMucHVzaChwcm92aWRlRGJ4RmlyZWJhc2VOb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvbnMpKTtcbiAgfVxuXG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMocHJvdmlkZXJzKTtcbn1cbiJdfQ==
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvcHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsT0FBTyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBNkIsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxFQUFFLHNCQUFzQixFQUFxQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzVHLE9BQU8sRUFBRSwwQkFBMEIsRUFBMEMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1SCxPQUFPLEVBQUUscUJBQXFCLEVBQW9DLE1BQU0sK0JBQStCLENBQUM7QUFDeEcsT0FBTyxFQUFvRCw2QkFBNkIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzNJLE9BQU8sRUFBRSwyQkFBMkIsRUFBMEMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3SCxPQUFPLEVBQXdDLDBCQUEwQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEgsT0FBTyxFQUFFLDZCQUE2QixFQUE0QyxNQUFNLHFDQUFxQyxDQUFDO0FBQzlILE9BQU8sRUFBRSwrQkFBK0IsRUFBOEMsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1SSxPQUFPLEVBQUUscUNBQXFDLEVBQW9ELE1BQU0seUNBQXlDLENBQUM7QUFDbEosT0FBTyxFQUFFLG1DQUFtQyxFQUFrRCxNQUFNLDZDQUE2QyxDQUFDO0FBQ2xKLE9BQU8sRUFBRSxvREFBb0QsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuRixPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQTRDbkc7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQTJELE1BQXNDO0lBQ2pJLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLGtDQUFrQyxFQUFFLHlCQUF5QixFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRTFNLE1BQU0sU0FBUyxHQUEyQixDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxFQUFFLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxFQUFFLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxFQUFFLHNCQUFzQixDQUFDLElBQUksQ0FBQyxFQUFFLDJCQUEyQixDQUFDLFNBQVMsQ0FBQyxFQUFFLHFDQUFxQyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsbUNBQW1DLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0lBRTVVLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtRQUN4QyxTQUFTLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLGtDQUFrQyxFQUFFLENBQUM7UUFDdkMsU0FBUyxDQUFDLElBQUksQ0FBQyxvREFBb0QsRUFBRSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELElBQUksV0FBVyxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELElBQUksYUFBYSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsSUFBSSx5QkFBeUIsRUFBRSxDQUFDO1FBQzlCLFNBQVMsQ0FBQyxJQUFJLENBQUMsb0NBQW9DLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxPQUFPLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEFycmF5T3JWYWx1ZSwgYXNBcnJheSwgdHlwZSBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgdHlwZSBFbnZpcm9ubWVudFByb3ZpZGVycywgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0eXBlIEZpcmViYXNlRnVuY3Rpb25zTWFwIH0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuaW1wb3J0IHsgcHJvdmlkZURieEZpcmViYXNlQXV0aCwgdHlwZSBQcm92aWRlRGJ4RmlyZWJhc2VBdXRoQ29uZmlnIH0gZnJvbSAnLi9hdXRoLy9maXJlYmFzZS5hdXRoLnByb3ZpZGVycyc7XG5pbXBvcnQgeyBwcm92aWRlRGJ4RmlyZWJhc2VFbXVsYXRvciwgdHlwZSBQcm92aWRlRGJ4RmlyZWJhc2VFbXVsYXRvcnNDb25maWcgfSBmcm9tICcuL2ZpcmViYXNlL2ZpcmViYXNlLmVtdWxhdG9yLnByb3ZpZGVycyc7XG5pbXBvcnQgeyBwcm92aWRlRGJ4RmlyZWJhc2VBcHAsIHR5cGUgUHJvdmlkZURieEZpcmViYXNlQXBwQ29uZmlnIH0gZnJvbSAnLi9maXJlYmFzZS9maXJlYmFzZS5wcm92aWRlcnMnO1xuaW1wb3J0IHsgdHlwZSBQcm92aWRlRGJ4RmlyZWJhc2VGaXJlc3RvcmVDb2xsZWN0aW9uQ29uZmlnLCBwcm92aWRlRGJ4RmlyZXN0b3JlQ29sbGVjdGlvbiB9IGZyb20gJy4vZmlyZXN0b3JlL2ZpcmViYXNlLmZpcmVzdG9yZS5wcm92aWRlcnMnO1xuaW1wb3J0IHsgcHJvdmlkZURieEZpcmViYXNlRnVuY3Rpb25zLCB0eXBlIFByb3ZpZGVEYnhGaXJlYmFzZUZ1bmN0aW9uc0NvbmZpZyB9IGZyb20gJy4vZnVuY3Rpb24vZmlyZWJhc2UuZnVuY3Rpb24ucHJvdmlkZXJzJztcbmltcG9ydCB7IHR5cGUgUHJvdmlkZURieEZpcmViYXNlU3RvcmFnZUNvbmZpZywgcHJvdmlkZWREYnhGaXJlYmFzZVN0b3JhZ2UgfSBmcm9tICcuL3N0b3JhZ2UvZmlyZWJhc2Uuc3RvcmFnZS5wcm92aWRlcnMnO1xuaW1wb3J0IHsgcHJvdmlkZURieEZpcmViYXNlRGV2ZWxvcG1lbnQsIHR5cGUgUHJvdmlkZURieEZpcmViYXNlRGV2ZWxvcG1lbnRDb25maWcgfSBmcm9tICcuL2RldmVsb3BtZW50L2RldmVsb3BtZW50LnByb3ZpZGVycyc7XG5pbXBvcnQgeyBwcm92aWRlRGJ4RmlyZWJhc2VOb3RpZmljYXRpb25zLCB0eXBlIFByb3ZpZGVEYnhGaXJlYmFzZU5vdGlmaWNhdGlvbnNDb25maWcgfSBmcm9tICcuL21vZHVsZXMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5wcm92aWRlcnMnO1xuaW1wb3J0IHsgcHJvdmlkZURieEZpcmViYXNlTW9kZWxDb250ZXh0U2VydmljZSwgdHlwZSBQcm92aWRlRGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlQ29uZmlnIH0gZnJvbSAnLi9tb2RlbC9zZXJ2aWNlL21vZGVsLmNvbnRleHQucHJvdmlkZXJzJztcbmltcG9ydCB7IHByb3ZpZGVEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlLCB0eXBlIFByb3ZpZGVEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlQ29uZmlnIH0gZnJvbSAnLi9tb2RlbC9tb2R1bGVzL21vZGVsL21vZGVsLnR5cGVzLnByb3ZpZGVycyc7XG5pbXBvcnQgeyBwcm92aWRlRGJ4RmlyZWJhc2VBbmFseXRpY3NVc2VyRXZlbnRzTGlzdGVuZXJTZXJ2aWNlIH0gZnJvbSAnLi9hbmFseXRpY3MnO1xuaW1wb3J0IHsgcHJvdmlkZURieEZpcmViYXNlU3RvcmFnZUZpbGVTZXJ2aWNlIH0gZnJvbSAnLi9tb2R1bGVzL3N0b3JhZ2VmaWxlL3N0b3JhZ2VmaWxlLnByb3ZpZGVycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlkZURieEZpcmViYXNlQ29uZmlnPFQsIE0gZXh0ZW5kcyBGaXJlYmFzZUZ1bmN0aW9uc01hcCA9IEZpcmViYXNlRnVuY3Rpb25zTWFwPiB7XG4gIC8vIFJlcXVpcmVkIENvbmZpZ3VyYXRpb25zXG4gIHJlYWRvbmx5IGFwcDogUHJvdmlkZURieEZpcmViYXNlQXBwQ29uZmlnO1xuICByZWFkb25seSBlbXVsYXRvcjogUHJvdmlkZURieEZpcmViYXNlRW11bGF0b3JzQ29uZmlnO1xuICByZWFkb25seSBzdG9yYWdlOiBQcm92aWRlRGJ4RmlyZWJhc2VTdG9yYWdlQ29uZmlnO1xuICByZWFkb25seSBhdXRoOiBQcm92aWRlRGJ4RmlyZWJhc2VBdXRoQ29uZmlnO1xuICByZWFkb25seSBmdW5jdGlvbnM6IFByb3ZpZGVEYnhGaXJlYmFzZUZ1bmN0aW9uc0NvbmZpZzxULCBNPjtcbiAgcmVhZG9ubHkgZmlyZXN0b3JlczogQXJyYXlPclZhbHVlPFByb3ZpZGVEYnhGaXJlYmFzZUZpcmVzdG9yZUNvbGxlY3Rpb25Db25maWc8YW55Pj47XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBwcm92aWRlRGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlKCkuXG4gICAqL1xuICByZWFkb25seSBtb2RlbENvbnRleHRTZXJ2aWNlOiBQcm92aWRlRGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlQ29uZmlnPGFueT47XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBwcm92aWRlRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZSgpLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kZWxUeXBlc1NlcnZpY2U6IFByb3ZpZGVEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlQ29uZmlnO1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgcHJvdmlkZURieEZpcmViYXNlRGV2ZWxvcG1lbnQuXG4gICAqXG4gICAqIElmIGZhbHNlLCBwcm92aWRlRGJ4RmlyZWJhc2VEZXZlbG9wbWVudCgpIHdpbGwgbm90IGJlIHByb3ZpZGVkL2NhbGxlZC5cbiAgICovXG4gIHJlYWRvbmx5IGRldmVsb3BtZW50PzogUHJvdmlkZURieEZpcmViYXNlRGV2ZWxvcG1lbnRDb25maWcgfCBmYWxzZTtcblxuICAvLyBPcHRpb25hbFxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgcHJvdmlkZURieEZpcmViYXNlTm90aWZpY2F0aW9ucygpLlxuICAgKlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIHByb3ZpZGVEYnhGaXJlYmFzZU5vdGlmaWNhdGlvbnMoKSB3aWxsIG5vdCBiZSBwcm92aWRlZC9jYWxsZWQuXG4gICAqL1xuICByZWFkb25seSBub3RpZmljYXRpb25zPzogUHJvdmlkZURieEZpcmViYXNlTm90aWZpY2F0aW9uc0NvbmZpZztcblxuICAvKipcbiAgICogSWYgdHJ1ZSwgcHJvdmlkZURieEZpcmViYXNlQW5hbHl0aWNzVXNlckV2ZW50c0xpc3RlbmVyU2VydmljZSgpIHdpbGwgYmUgcHJvdmlkZWQvY2FsbGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZUFuYWx5dGljc1VzZXJFdmVudHNMaXN0ZW5lcj86IE1heWJlPGJvb2xlYW4+O1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCBwcm92aWRlRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZVNlcnZpY2UoKSB3aWxsIGJlIHByb3ZpZGVkL2NhbGxlZC5cbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVTdG9yYWdlRmlsZVNlcnZpY2U/OiBNYXliZTxib29sZWFuPjtcbn1cblxuLyoqXG4gKiBBbGwtaW4tb25lIHByb3ZpZGVyIGZvciBwcm92aWRpbmcgdGhlIG1haW4gY29uZmlndXJhdGlvbnMgZm9yIERieEZpcmViYXNlLlxuICpcbiAqIFJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgYWxyZWFkeSBiZSBwcm92aWRlZC9jYWxsZWQ6XG4gKiAtIHByb3ZpZGVEYnhNb2RlbFNlcnZpY2UoKVxuICpcbiAqIEBwYXJhbSBjb25maWcgQ29uZmlndXJhdGlvbiBmb3IgcHJvdmlkZURieEZpcmViYXNlKCkuXG4gKiBAcmV0dXJucyBFbnZpcm9ubWVudFByb3ZpZGVycyBmb3IgdGhlIERieEZpcmViYXNlIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlRGJ4RmlyZWJhc2U8VCwgTSBleHRlbmRzIEZpcmViYXNlRnVuY3Rpb25zTWFwID0gRmlyZWJhc2VGdW5jdGlvbnNNYXA+KGNvbmZpZzogUHJvdmlkZURieEZpcmViYXNlQ29uZmlnPFQsIE0+KSB7XG4gIGNvbnN0IHsgYXBwLCBlbXVsYXRvciwgc3RvcmFnZSwgYXV0aCwgZnVuY3Rpb25zLCBmaXJlc3RvcmVzLCBtb2RlbENvbnRleHRTZXJ2aWNlLCBtb2RlbFR5cGVzU2VydmljZSwgZGV2ZWxvcG1lbnQsIG5vdGlmaWNhdGlvbnMsIHByb3ZpZGVBbmFseXRpY3NVc2VyRXZlbnRzTGlzdGVuZXIsIHByb3ZpZGVTdG9yYWdlRmlsZVNlcnZpY2UgfSA9IGNvbmZpZztcblxuICBjb25zdCBwcm92aWRlcnM6IEVudmlyb25tZW50UHJvdmlkZXJzW10gPSBbcHJvdmlkZURieEZpcmViYXNlQXBwKGFwcCksIHByb3ZpZGVEYnhGaXJlYmFzZUVtdWxhdG9yKGVtdWxhdG9yKSwgcHJvdmlkZWREYnhGaXJlYmFzZVN0b3JhZ2Uoc3RvcmFnZSksIHByb3ZpZGVEYnhGaXJlYmFzZUF1dGgoYXV0aCksIHByb3ZpZGVEYnhGaXJlYmFzZUZ1bmN0aW9ucyhmdW5jdGlvbnMpLCBwcm92aWRlRGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlKG1vZGVsQ29udGV4dFNlcnZpY2UpLCBwcm92aWRlRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZShtb2RlbFR5cGVzU2VydmljZSldO1xuXG4gIGFzQXJyYXkoZmlyZXN0b3JlcykuZm9yRWFjaCgoZmlyZXN0b3JlKSA9PiB7XG4gICAgcHJvdmlkZXJzLnB1c2gocHJvdmlkZURieEZpcmVzdG9yZUNvbGxlY3Rpb24oZmlyZXN0b3JlKSk7XG4gIH0pO1xuXG4gIGlmIChwcm92aWRlQW5hbHl0aWNzVXNlckV2ZW50c0xpc3RlbmVyKSB7XG4gICAgcHJvdmlkZXJzLnB1c2gocHJvdmlkZURieEZpcmViYXNlQW5hbHl0aWNzVXNlckV2ZW50c0xpc3RlbmVyU2VydmljZSgpKTtcbiAgfVxuXG4gIGlmIChkZXZlbG9wbWVudCAhPT0gZmFsc2UpIHtcbiAgICBwcm92aWRlcnMucHVzaChwcm92aWRlRGJ4RmlyZWJhc2VEZXZlbG9wbWVudChkZXZlbG9wbWVudCA/PyB7fSkpO1xuICB9XG5cbiAgaWYgKG5vdGlmaWNhdGlvbnMgIT0gbnVsbCkge1xuICAgIHByb3ZpZGVycy5wdXNoKHByb3ZpZGVEYnhGaXJlYmFzZU5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9ucykpO1xuICB9XG5cbiAgaWYgKHByb3ZpZGVTdG9yYWdlRmlsZVNlcnZpY2UpIHtcbiAgICBwcm92aWRlcnMucHVzaChwcm92aWRlRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZVNlcnZpY2UoKSk7XG4gIH1cblxuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKHByb3ZpZGVycyk7XG59XG4iXX0=