@solar-angular/ui-zorro 1.0.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 (81) hide show
  1. package/README.md +7 -0
  2. package/crud/editor-drawer/editor-drawer.component.d.ts +9 -0
  3. package/crud/editor-drawer/index.d.ts +1 -0
  4. package/crud/editor.d.ts +35 -0
  5. package/crud/index.d.ts +4 -0
  6. package/crud/page.d.ts +52 -0
  7. package/crud/searcher.d.ts +8 -0
  8. package/esm2022/crud/editor-drawer/editor-drawer.component.mjs +34 -0
  9. package/esm2022/crud/editor-drawer/index.mjs +2 -0
  10. package/esm2022/crud/editor.mjs +65 -0
  11. package/esm2022/crud/index.mjs +5 -0
  12. package/esm2022/crud/page.mjs +69 -0
  13. package/esm2022/crud/searcher.mjs +9 -0
  14. package/esm2022/crud/solar-angular-ui-zorro-crud.mjs +5 -0
  15. package/esm2022/fluent-form/components.mjs +15 -0
  16. package/esm2022/fluent-form/controls.mjs +104 -0
  17. package/esm2022/fluent-form/form.mjs +15 -0
  18. package/esm2022/fluent-form/index.mjs +5 -0
  19. package/esm2022/fluent-form/patchers.mjs +57 -0
  20. package/esm2022/fluent-form/solar-angular-ui-zorro-fluent-form.mjs +5 -0
  21. package/esm2022/fluent-form/typing.mjs +2 -0
  22. package/esm2022/index.mjs +2 -0
  23. package/esm2022/media-uploader/index.mjs +2 -0
  24. package/esm2022/media-uploader/media-uploader.component.mjs +175 -0
  25. package/esm2022/media-uploader/solar-angular-ui-zorro-media-uploader.mjs +5 -0
  26. package/esm2022/message/index.mjs +2 -0
  27. package/esm2022/message/message.service.mjs +36 -0
  28. package/esm2022/message/solar-angular-ui-zorro-message.mjs +5 -0
  29. package/esm2022/page-forbidden/forbidden.page.mjs +25 -0
  30. package/esm2022/page-forbidden/index.mjs +4 -0
  31. package/esm2022/page-forbidden/solar-angular-ui-zorro-page-forbidden.mjs +5 -0
  32. package/esm2022/page-logout/index.mjs +4 -0
  33. package/esm2022/page-logout/logout.page.mjs +36 -0
  34. package/esm2022/page-logout/solar-angular-ui-zorro-page-logout.mjs +5 -0
  35. package/esm2022/page-not-found/index.mjs +4 -0
  36. package/esm2022/page-not-found/not-found.page.mjs +25 -0
  37. package/esm2022/page-not-found/solar-angular-ui-zorro-page-not-found.mjs +5 -0
  38. package/esm2022/solar-angular-ui-zorro.mjs +5 -0
  39. package/esm2022/updater/app-updater.mjs +27 -0
  40. package/esm2022/updater/index.mjs +3 -0
  41. package/esm2022/updater/solar-angular-ui-zorro-updater.mjs +5 -0
  42. package/esm2022/updater/updater.component.mjs +71 -0
  43. package/fesm2022/solar-angular-ui-zorro-crud.mjs +180 -0
  44. package/fesm2022/solar-angular-ui-zorro-crud.mjs.map +1 -0
  45. package/fesm2022/solar-angular-ui-zorro-fluent-form.mjs +196 -0
  46. package/fesm2022/solar-angular-ui-zorro-fluent-form.mjs.map +1 -0
  47. package/fesm2022/solar-angular-ui-zorro-media-uploader.mjs +182 -0
  48. package/fesm2022/solar-angular-ui-zorro-media-uploader.mjs.map +1 -0
  49. package/fesm2022/solar-angular-ui-zorro-message.mjs +43 -0
  50. package/fesm2022/solar-angular-ui-zorro-message.mjs.map +1 -0
  51. package/fesm2022/solar-angular-ui-zorro-page-forbidden.mjs +32 -0
  52. package/fesm2022/solar-angular-ui-zorro-page-forbidden.mjs.map +1 -0
  53. package/fesm2022/solar-angular-ui-zorro-page-logout.mjs +43 -0
  54. package/fesm2022/solar-angular-ui-zorro-page-logout.mjs.map +1 -0
  55. package/fesm2022/solar-angular-ui-zorro-page-not-found.mjs +32 -0
  56. package/fesm2022/solar-angular-ui-zorro-page-not-found.mjs.map +1 -0
  57. package/fesm2022/solar-angular-ui-zorro-updater.mjs +102 -0
  58. package/fesm2022/solar-angular-ui-zorro-updater.mjs.map +1 -0
  59. package/fesm2022/solar-angular-ui-zorro.mjs +6 -0
  60. package/fesm2022/solar-angular-ui-zorro.mjs.map +1 -0
  61. package/fluent-form/components.d.ts +6 -0
  62. package/fluent-form/controls.d.ts +45 -0
  63. package/fluent-form/form.d.ts +8 -0
  64. package/fluent-form/index.d.ts +4 -0
  65. package/fluent-form/patchers.d.ts +10 -0
  66. package/fluent-form/typing.d.ts +1 -0
  67. package/index.d.ts +2 -0
  68. package/media-uploader/index.d.ts +1 -0
  69. package/media-uploader/media-uploader.component.d.ts +53 -0
  70. package/message/index.d.ts +1 -0
  71. package/message/message.service.d.ts +13 -0
  72. package/package.json +85 -0
  73. package/page-forbidden/forbidden.page.d.ts +5 -0
  74. package/page-forbidden/index.d.ts +3 -0
  75. package/page-logout/index.d.ts +3 -0
  76. package/page-logout/logout.page.d.ts +10 -0
  77. package/page-not-found/index.d.ts +3 -0
  78. package/page-not-found/not-found.page.d.ts +5 -0
  79. package/updater/app-updater.d.ts +10 -0
  80. package/updater/index.d.ts +2 -0
  81. package/updater/updater.component.d.ts +14 -0
@@ -0,0 +1,175 @@
1
+ import { HttpEventType } from '@angular/common/http';
2
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation, booleanAttribute, inject, numberAttribute } from '@angular/core';
3
+ import { EarthService, ObjectStorageService } from '@solar-angular/planets/earth';
4
+ import { FileManager, ImageCompressor } from '@solar-angular/platform-browser';
5
+ import { MessageService } from '@solar-angular/ui-zorro/message';
6
+ import { fileExtensionOf } from '@solar-kit/core';
7
+ import { filterResult, unpackResult } from '@solar-kit/planets/sun';
8
+ import { NzIconModule } from 'ng-zorro-antd/icon';
9
+ import { NzImageModule, NzImageService } from 'ng-zorro-antd/image';
10
+ import { NzPopconfirmModule } from 'ng-zorro-antd/popconfirm';
11
+ import { NzUploadModule } from 'ng-zorro-antd/upload';
12
+ import { from, fromEvent, of, switchMap, take, tap } from 'rxjs';
13
+ import * as i0 from "@angular/core";
14
+ import * as i1 from "ng-zorro-antd/icon";
15
+ import * as i2 from "ng-zorro-antd/upload";
16
+ import * as i3 from "ng-zorro-antd/popconfirm";
17
+ export class SunMediaUploader {
18
+ constructor() {
19
+ this.imageService = inject(NzImageService);
20
+ this.earthService = inject(EarthService);
21
+ this.oss = inject(ObjectStorageService);
22
+ this.imageCompressor = inject(ImageCompressor);
23
+ this.message = inject(MessageService);
24
+ this.fileManager = inject(FileManager);
25
+ this.data = [
26
+ // {
27
+ // uid: '1',
28
+ // type: 'image',
29
+ // url: '',
30
+ // progress: 50
31
+ // },
32
+ // {
33
+ // uid: '2',
34
+ // type: 'image',
35
+ // url: '',
36
+ // }
37
+ ];
38
+ this.limit = 9;
39
+ this.deletable = true;
40
+ this.uploadable = true;
41
+ this.previewable = true;
42
+ this.downloadable = false;
43
+ this.shape = 'square';
44
+ this.uploadKeys = this.earthService.mediaUploadKeys().pipe(filterResult(), unpackResult());
45
+ /** 启用图片压缩 */
46
+ this.compress = false;
47
+ this.uploaded = new EventEmitter();
48
+ this.delete = new EventEmitter();
49
+ this.error = new EventEmitter();
50
+ this.dataChange = new EventEmitter();
51
+ this.upload = (args) => {
52
+ const file = args.postFile;
53
+ const ext = fileExtensionOf(args.file.name);
54
+ return this.uploadKeys.pipe(switchMap(uploadKey => this.oss.uploadWithEvents(file, `${uploadKey.keys[0]}.${ext}`, uploadKey))).subscribe({
55
+ next: event => {
56
+ switch (event.type) {
57
+ case HttpEventType.UploadProgress:
58
+ args.onProgress({ percent: (event.loaded / event.total) * 100 }, args.file);
59
+ break;
60
+ case HttpEventType.Response:
61
+ this.uploaded.next({
62
+ url: URL.createObjectURL(file),
63
+ ...event.body
64
+ });
65
+ args.onSuccess(event.body, args.file, event);
66
+ break;
67
+ }
68
+ },
69
+ error: error => {
70
+ args.onError(error, args.file);
71
+ }
72
+ });
73
+ };
74
+ }
75
+ get transform() {
76
+ return (file) => {
77
+ if (!file.type?.startsWith('image/')) {
78
+ return of(file);
79
+ }
80
+ const { messageId } = this.message.loading('正在压缩图像');
81
+ const reader = new FileReader();
82
+ const source = fromEvent(reader, 'load').pipe(take(1), switchMap(() => this.imageCompressor.compress(reader.result)), tap(() => this.message.remove(messageId)));
83
+ reader.readAsDataURL(file);
84
+ return source;
85
+ };
86
+ }
87
+ onChange({ type, file, event }) {
88
+ const media = this.data.find(o => o.uid === file.uid);
89
+ switch (type) {
90
+ case 'start': {
91
+ const url = URL.createObjectURL(file.originFileObj);
92
+ this.data = this.data.concat({
93
+ uid: file.uid,
94
+ url: url,
95
+ thumbnailUrl: url,
96
+ progress: 0.01,
97
+ type: 'image',
98
+ file: file.originFileObj
99
+ });
100
+ this.dataChange.emit(this.data);
101
+ break;
102
+ }
103
+ case 'progress':
104
+ media.progress = +event.percent.toFixed(2);
105
+ break;
106
+ case 'success':
107
+ delete media.progress;
108
+ break;
109
+ case 'error':
110
+ this.data = this.data.filter(o => o.uid !== file.uid);
111
+ this.dataChange.emit(this.data);
112
+ this.error.emit(media);
113
+ break;
114
+ }
115
+ }
116
+ onPreview(media) {
117
+ const images = this.data.map(o => ({ src: o.url || o.thumbnailUrl }));
118
+ const ref = this.imageService.preview(images);
119
+ ref.switchTo(this.data.findIndex(o => o === media));
120
+ }
121
+ onDownload(media) {
122
+ from(this.fileManager.download(media.url)).pipe(this.message.withLoading('正在下载')).subscribe({
123
+ error: () => {
124
+ this.message.error('下载失败');
125
+ }
126
+ });
127
+ }
128
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SunMediaUploader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
129
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SunMediaUploader, isStandalone: true, selector: "sun-media-uploader", inputs: { data: "data", limit: ["limit", "limit", numberAttribute], deletable: ["deletable", "deletable", booleanAttribute], uploadable: ["uploadable", "uploadable", booleanAttribute], previewable: ["previewable", "previewable", booleanAttribute], downloadable: ["downloadable", "downloadable", booleanAttribute], shape: "shape", uploadKeys: "uploadKeys", compress: ["compress", "compress", booleanAttribute] }, outputs: { uploaded: "uploaded", delete: "delete", error: "error", dataChange: "dataChange" }, host: { properties: { "class.sun-media-uploader-circle": "shape === 'circle'" }, classAttribute: "sun-media-uploader" }, ngImport: i0, template: "@for (item of data; track item) {\n <div class=\"sun-media-uploader-item\">\n <img class=\"sun-media-uploader-img\" [src]=\"item.thumbnailUrl || item.url\" />\n\n @if (item.progress) {\n <div class=\"sun-media-uploader-progress-bar\">\n <div\n class=\"sun-media-uploader-progress-inner\"\n [style]=\"{ transform: 'translateY(-' + item.progress + 'px)' }\"></div>\n <div class=\"sun-media-uploader-progress-text\">\n <div>{{ item.progress }}%</div>\n <div>\u4E0A\u4F20\u4E2D...</div>\n </div>\n </div>\n } @else {\n <div class=\"sun-media-uploader-mask\">\n @if (previewable) {\n <div class=\"sun-media-uploader-action\" (click)=\"onPreview(item)\">\n <span nz-icon nzType=\"eye\" nzTheme=\"outline\"></span>\u9884\u89C8\n </div>\n }\n @if (downloadable) {\n <div class=\"sun-media-uploader-action\" (click)=\"onDownload(item)\">\n <span nz-icon nzType=\"download\" nzTheme=\"outline\"></span>\u4E0B\u8F7D\n </div>\n }\n @if (deletable) {\n <div\n class=\"sun-media-uploader-action\"\n nz-popconfirm\n nzType=\"danger\"\n nzPopconfirmTitle=\"\u60A8\u786E\u5B9A\u8981\u5220\u9664\u8BE5\u9879\u76EE\u5417\uFF1F\"\n nzOkDanger\n (nzOnConfirm)=\"delete.next(item)\">\n <span nz-icon nzType=\"delete\" nzTheme=\"outline\"></span>\u5220\u9664\n </div>\n }\n </div>\n }\n </div>\n}\n\n<nz-upload\n nzAccept=\"image/*\"\n nzListType=\"picture-card\"\n [hidden]=\"data?.length! >= limit || !uploadable\"\n [nzShowUploadList]=\"false\"\n [nzCustomRequest]=\"upload\"\n [nzTransformFile]=\"compress ? transform : undefined\"\n (nzChange)=\"onChange($event)\">\n <div class=\"sun-media-uploader-btn\">\n <span nz-icon nzType=\"plus\"></span>\n <div class=\"sun-media-uploader-btn-text\">\u70B9\u51FB\u4E0A\u4F20</div>\n </div>\n</nz-upload>\n", styles: [".sun-media-uploader{--item-size: 100px;--item-width: var(--item-size);--item-height: var(--item-size);display:flex;flex-wrap:wrap;gap:6px}.sun-media-uploader .ant-upload-picture-card-wrapper{width:auto}.sun-media-uploader .ant-upload.ant-upload-select-picture-card{height:var(--item-height);width:var(--item-width)}.sun-media-uploader-item{position:relative;height:var(--item-height);width:var(--item-width);border:.5px solid #d9d9d9;border-radius:var(--border-radius-base);overflow:hidden}.sun-media-uploader-item:hover{border-color:var(--color-primary)}.sun-media-uploader-progress-bar,.sun-media-uploader-mask{position:absolute;top:0;left:0;height:100%;width:100%;color:#fff;filter:drop-shadow(0 0 1px rgba(0,0,0,.5))}.sun-media-uploader-progress-inner,.sun-media-uploader-mask{background-color:#0000004d}.sun-media-uploader-progress-bar{display:flex;justify-content:center;align-items:center;text-align:center}.sun-media-uploader-progress-inner{position:absolute;top:0;left:0;width:100%;height:100%;transition:transform ease-out .3s}.sun-media-uploader-progress-text{position:relative;z-index:1}.sun-media-uploader-mask{display:flex;flex-direction:column;justify-content:center;gap:2px;opacity:0;transition:all ease-out .3s}.sun-media-uploader-mask:hover{opacity:1}.sun-media-uploader-action{display:flex;justify-content:center;gap:6px;padding-right:4px;cursor:pointer}.sun-media-uploader-btn-text{margin-top:6px}.sun-media-uploader-img,.sun-media-uploader-video{width:100%;height:100%;object-fit:cover}.sun-media-uploader-circle .sun-media-uploader-item,.sun-media-uploader-circle .ant-upload.ant-upload-select-picture-card{border-radius:50%}\n"], dependencies: [{ kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzUploadModule }, { kind: "component", type: i2.NzUploadComponent, selector: "nz-upload", inputs: ["nzType", "nzLimit", "nzSize", "nzFileType", "nzAccept", "nzAction", "nzDirectory", "nzOpenFileDialogOnClick", "nzBeforeUpload", "nzCustomRequest", "nzData", "nzFilter", "nzFileList", "nzDisabled", "nzHeaders", "nzListType", "nzMultiple", "nzName", "nzShowUploadList", "nzShowButton", "nzWithCredentials", "nzRemove", "nzPreview", "nzPreviewFile", "nzPreviewIsImage", "nzTransformFile", "nzDownload", "nzIconRender", "nzFileListRender"], outputs: ["nzChange", "nzFileListChange"], exportAs: ["nzUpload"] }, { kind: "ngmodule", type: NzImageModule }, { kind: "ngmodule", type: NzPopconfirmModule }, { kind: "directive", type: i3.NzPopconfirmDirective, selector: "[nz-popconfirm]", inputs: ["nzPopconfirmArrowPointAtCenter", "nzPopconfirmTitle", "nzPopconfirmTitleContext", "nz-popconfirm", "nzPopconfirmTrigger", "nzPopconfirmPlacement", "nzPopconfirmOrigin", "nzPopconfirmMouseEnterDelay", "nzPopconfirmMouseLeaveDelay", "nzPopconfirmOverlayClassName", "nzPopconfirmOverlayStyle", "nzPopconfirmVisible", "nzOkText", "nzOkType", "nzOkDisabled", "nzOkDanger", "nzCancelText", "nzBeforeConfirm", "nzIcon", "nzCondition", "nzPopconfirmShowArrow", "nzPopconfirmBackdrop", "nzAutofocus"], outputs: ["nzPopconfirmVisibleChange", "nzOnCancel", "nzOnConfirm"], exportAs: ["nzPopconfirm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
130
+ }
131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SunMediaUploader, decorators: [{
132
+ type: Component,
133
+ args: [{ selector: 'sun-media-uploader', standalone: true, imports: [
134
+ NzIconModule,
135
+ NzUploadModule,
136
+ NzImageModule,
137
+ NzPopconfirmModule
138
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
139
+ class: 'sun-media-uploader',
140
+ '[class.sun-media-uploader-circle]': `shape === 'circle'`,
141
+ }, template: "@for (item of data; track item) {\n <div class=\"sun-media-uploader-item\">\n <img class=\"sun-media-uploader-img\" [src]=\"item.thumbnailUrl || item.url\" />\n\n @if (item.progress) {\n <div class=\"sun-media-uploader-progress-bar\">\n <div\n class=\"sun-media-uploader-progress-inner\"\n [style]=\"{ transform: 'translateY(-' + item.progress + 'px)' }\"></div>\n <div class=\"sun-media-uploader-progress-text\">\n <div>{{ item.progress }}%</div>\n <div>\u4E0A\u4F20\u4E2D...</div>\n </div>\n </div>\n } @else {\n <div class=\"sun-media-uploader-mask\">\n @if (previewable) {\n <div class=\"sun-media-uploader-action\" (click)=\"onPreview(item)\">\n <span nz-icon nzType=\"eye\" nzTheme=\"outline\"></span>\u9884\u89C8\n </div>\n }\n @if (downloadable) {\n <div class=\"sun-media-uploader-action\" (click)=\"onDownload(item)\">\n <span nz-icon nzType=\"download\" nzTheme=\"outline\"></span>\u4E0B\u8F7D\n </div>\n }\n @if (deletable) {\n <div\n class=\"sun-media-uploader-action\"\n nz-popconfirm\n nzType=\"danger\"\n nzPopconfirmTitle=\"\u60A8\u786E\u5B9A\u8981\u5220\u9664\u8BE5\u9879\u76EE\u5417\uFF1F\"\n nzOkDanger\n (nzOnConfirm)=\"delete.next(item)\">\n <span nz-icon nzType=\"delete\" nzTheme=\"outline\"></span>\u5220\u9664\n </div>\n }\n </div>\n }\n </div>\n}\n\n<nz-upload\n nzAccept=\"image/*\"\n nzListType=\"picture-card\"\n [hidden]=\"data?.length! >= limit || !uploadable\"\n [nzShowUploadList]=\"false\"\n [nzCustomRequest]=\"upload\"\n [nzTransformFile]=\"compress ? transform : undefined\"\n (nzChange)=\"onChange($event)\">\n <div class=\"sun-media-uploader-btn\">\n <span nz-icon nzType=\"plus\"></span>\n <div class=\"sun-media-uploader-btn-text\">\u70B9\u51FB\u4E0A\u4F20</div>\n </div>\n</nz-upload>\n", styles: [".sun-media-uploader{--item-size: 100px;--item-width: var(--item-size);--item-height: var(--item-size);display:flex;flex-wrap:wrap;gap:6px}.sun-media-uploader .ant-upload-picture-card-wrapper{width:auto}.sun-media-uploader .ant-upload.ant-upload-select-picture-card{height:var(--item-height);width:var(--item-width)}.sun-media-uploader-item{position:relative;height:var(--item-height);width:var(--item-width);border:.5px solid #d9d9d9;border-radius:var(--border-radius-base);overflow:hidden}.sun-media-uploader-item:hover{border-color:var(--color-primary)}.sun-media-uploader-progress-bar,.sun-media-uploader-mask{position:absolute;top:0;left:0;height:100%;width:100%;color:#fff;filter:drop-shadow(0 0 1px rgba(0,0,0,.5))}.sun-media-uploader-progress-inner,.sun-media-uploader-mask{background-color:#0000004d}.sun-media-uploader-progress-bar{display:flex;justify-content:center;align-items:center;text-align:center}.sun-media-uploader-progress-inner{position:absolute;top:0;left:0;width:100%;height:100%;transition:transform ease-out .3s}.sun-media-uploader-progress-text{position:relative;z-index:1}.sun-media-uploader-mask{display:flex;flex-direction:column;justify-content:center;gap:2px;opacity:0;transition:all ease-out .3s}.sun-media-uploader-mask:hover{opacity:1}.sun-media-uploader-action{display:flex;justify-content:center;gap:6px;padding-right:4px;cursor:pointer}.sun-media-uploader-btn-text{margin-top:6px}.sun-media-uploader-img,.sun-media-uploader-video{width:100%;height:100%;object-fit:cover}.sun-media-uploader-circle .sun-media-uploader-item,.sun-media-uploader-circle .ant-upload.ant-upload-select-picture-card{border-radius:50%}\n"] }]
142
+ }], propDecorators: { data: [{
143
+ type: Input
144
+ }], limit: [{
145
+ type: Input,
146
+ args: [{ transform: numberAttribute }]
147
+ }], deletable: [{
148
+ type: Input,
149
+ args: [{ transform: booleanAttribute }]
150
+ }], uploadable: [{
151
+ type: Input,
152
+ args: [{ transform: booleanAttribute }]
153
+ }], previewable: [{
154
+ type: Input,
155
+ args: [{ transform: booleanAttribute }]
156
+ }], downloadable: [{
157
+ type: Input,
158
+ args: [{ transform: booleanAttribute }]
159
+ }], shape: [{
160
+ type: Input
161
+ }], uploadKeys: [{
162
+ type: Input
163
+ }], compress: [{
164
+ type: Input,
165
+ args: [{ transform: booleanAttribute }]
166
+ }], uploaded: [{
167
+ type: Output
168
+ }], delete: [{
169
+ type: Output
170
+ }], error: [{
171
+ type: Output
172
+ }], dataChange: [{
173
+ type: Output
174
+ }] } });
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtdXBsb2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvdWktem9ycm8vbWVkaWEtdXBsb2FkZXIvbWVkaWEtdXBsb2FkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvdWktem9ycm8vbWVkaWEtdXBsb2FkZXIvbWVkaWEtdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SixPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFxQyxjQUFjLEVBQW1CLE1BQU0sc0JBQXNCLENBQUM7QUFDMUcsT0FBTyxFQUFjLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFF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QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osS0FBSyxFQUFFLG9CQUFvQjt3QkFDM0IsbUNBQW1DLEVBQUUsb0JBQW9CO3FCQUMxRDs4QkFVUSxJQUFJO3NCQUFaLEtBQUs7Z0JBYWlDLEtBQUs7c0JBQTNDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQUNHLFNBQVM7c0JBQWhELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsVUFBVTtzQkFBakQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxXQUFXO3NCQUFsRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLFlBQVk7c0JBQW5ELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQzdCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUtrQyxRQUFRO3NCQUEvQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUU1QixRQUFRO3NCQUFqQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFdmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBib29sZWFuQXR0cmlidXRlLCBpbmplY3QsIG51bWJlckF0dHJpYnV0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRWFydGhTZXJ2aWNlLCBPYmplY3RTdG9yYWdlU2VydmljZSB9IGZyb20gJ0Bzb2xhci1hbmd1bGFyL3BsYW5ldHMvZWFydGgnO1xuaW1wb3J0IHsgRmlsZU1hbmFnZXIsIEltYWdlQ29tcHJlc3NvciB9IGZyb20gJ0Bzb2xhci1hbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdAc29sYXItYW5ndWxhci91aS16b3Jyby9tZXNzYWdlJztcbmltcG9ydCB7IGZpbGVFeHRlbnNpb25PZiB9IGZyb20gJ0Bzb2xhci1raXQvY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXJSZXN1bHQsIHVucGFja1Jlc3VsdCB9IGZyb20gJ0Bzb2xhci1raXQvcGxhbmV0cy9zdW4nO1xuaW1wb3J0IHsgTnpJY29uTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9pY29uJztcbmltcG9ydCB7IE56SW1hZ2VNb2R1bGUsIE56SW1hZ2VTZXJ2aWNlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9pbWFnZSc7XG5pbXBvcnQgeyBOelBvcGNvbmZpcm1Nb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL3BvcGNvbmZpcm0nO1xuaW1wb3J0IHsgTnpVcGxvYWRDaGFuZ2VQYXJhbSwgTnpVcGxvYWRGaWxlLCBOelVwbG9hZE1vZHVsZSwgTnpVcGxvYWRYSFJBcmdzIH0gZnJvbSAnbmctem9ycm8tYW50ZC91cGxvYWQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZnJvbSwgZnJvbUV2ZW50LCBvZiwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBTdW5NZWRpYSB7XG4gIHVpZDogc3RyaW5nO1xuICB0eXBlOiAnaW1hZ2UnIHwgJ3ZpZGVvJztcbiAgcHJvZ3Jlc3M/OiBudW1iZXI7XG4gIGFjdGl2ZT86IGJvb2xlYW47XG4gIGZpbGU/OiBCbG9iO1xuICB1cmw6IHN0cmluZ1xuICB0aHVtYm5haWxVcmw/OiBzdHJpbmc7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3VuLW1lZGlhLXVwbG9hZGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE56SWNvbk1vZHVsZSxcbiAgICBOelVwbG9hZE1vZHVsZSxcbiAgICBOekltYWdlTW9kdWxlLFxuICAgIE56UG9wY29uZmlybU1vZHVsZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVkaWEtdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbWVkaWEtdXBsb2FkZXIuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnc3VuLW1lZGlhLXVwbG9hZGVyJyxcbiAgICAnW2NsYXNzLnN1bi1tZWRpYS11cGxvYWRlci1jaXJjbGVdJzogYHNoYXBlID09PSAnY2lyY2xlJ2AsXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgU3VuTWVkaWFVcGxvYWRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW1hZ2VTZXJ2aWNlID0gaW5qZWN0KE56SW1hZ2VTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBlYXJ0aFNlcnZpY2UgPSBpbmplY3QoRWFydGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBvc3MgPSBpbmplY3QoT2JqZWN0U3RvcmFnZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGltYWdlQ29tcHJlc3NvciA9IGluamVjdChJbWFnZUNvbXByZXNzb3IpO1xuICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2UgPSBpbmplY3QoTWVzc2FnZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbGVNYW5hZ2VyID0gaW5qZWN0KEZpbGVNYW5hZ2VyKTtcblxuICBASW5wdXQoKSBkYXRhOiBTdW5NZWRpYVtdID0gW1xuICAgIC8vIHtcbiAgICAvLyAgIHVpZDogJzEnLFxuICAgIC8vICAgdHlwZTogJ2ltYWdlJyxcbiAgICAvLyAgIHVybDogJycsXG4gICAgLy8gICBwcm9ncmVzczogNTBcbiAgICAvLyB9LFxuICAgIC8vIHtcbiAgICAvLyAgIHVpZDogJzInLFxuICAgIC8vICAgdHlwZTogJ2ltYWdlJyxcbiAgICAvLyAgIHVybDogJycsXG4gICAgLy8gfVxuICBdO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBsaW1pdCA9IDk7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBkZWxldGFibGUgPSB0cnVlO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgdXBsb2FkYWJsZSA9IHRydWU7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBwcmV2aWV3YWJsZSA9IHRydWU7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBkb3dubG9hZGFibGUgPSBmYWxzZTtcbiAgQElucHV0KCkgc2hhcGU6ICdjaXJjbGUnIHwgJ3NxdWFyZScgPSAnc3F1YXJlJztcbiAgQElucHV0KCkgdXBsb2FkS2V5cyA9IHRoaXMuZWFydGhTZXJ2aWNlLm1lZGlhVXBsb2FkS2V5cygpLnBpcGUoXG4gICAgZmlsdGVyUmVzdWx0KCksXG4gICAgdW5wYWNrUmVzdWx0KCksXG4gICk7XG4gIC8qKiDlkK/nlKjlm77niYfljovnvKkgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGNvbXByZXNzID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHVwbG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjx7IGtleTogc3RyaW5nLCBoYXNoOiBzdHJpbmcsIHVybDogc3RyaW5nIH0+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPFN1bk1lZGlhPigpO1xuICBAT3V0cHV0KCkgZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPFN1bk1lZGlhPigpO1xuICBAT3V0cHV0KCkgZGF0YUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U3VuTWVkaWFbXT4oKTtcblxuICBnZXQgdHJhbnNmb3JtKCkge1xuICAgIHJldHVybiAoZmlsZTogTnpVcGxvYWRGaWxlKTogT2JzZXJ2YWJsZTxCbG9iPiA9PiB7XG4gICAgICBpZiAoIWZpbGUudHlwZT8uc3RhcnRzV2l0aCgnaW1hZ2UvJykpIHtcbiAgICAgICAgcmV0dXJuIG9mKGZpbGUgYXMgYW55KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBtZXNzYWdlSWQgfSA9IHRoaXMubWVzc2FnZS5sb2FkaW5nKCfmraPlnKjljovnvKnlm77lg48nKTtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICAgIGNvbnN0IHNvdXJjZSA9IGZyb21FdmVudChyZWFkZXIsICdsb2FkJykucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuaW1hZ2VDb21wcmVzc29yLmNvbXByZXNzKHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nKSksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLm1lc3NhZ2UucmVtb3ZlKG1lc3NhZ2VJZCkpXG4gICAgICApO1xuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSBhcyBhbnkpO1xuXG4gICAgICByZXR1cm4gc291cmNlO1xuICAgIH07XG4gIH1cblxuICB1cGxvYWQgPSAoYXJnczogTnpVcGxvYWRYSFJBcmdzKSA9PiB7XG4gICAgY29uc3QgZmlsZSA9IGFyZ3MucG9zdEZpbGUgYXMgRmlsZTtcbiAgICBjb25zdCBleHQgPSBmaWxlRXh0ZW5zaW9uT2YoYXJncy5maWxlLm5hbWUpO1xuXG4gICAgcmV0dXJuIHRoaXMudXBsb2FkS2V5cy5waXBlKFxuICAgICAgc3dpdGNoTWFwKHVwbG9hZEtleSA9PiB0aGlzLm9zcy51cGxvYWRXaXRoRXZlbnRzKGZpbGUsIGAke3VwbG9hZEtleS5rZXlzWzBdfS4ke2V4dH1gLCB1cGxvYWRLZXkpKSxcbiAgICApLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBldmVudCA9PiB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xuICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzczpcbiAgICAgICAgICAgIGFyZ3Mub25Qcm9ncmVzcyEoeyBwZXJjZW50OiAoZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWwhKSAqIDEwMCB9LCBhcmdzLmZpbGUpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuUmVzcG9uc2U6XG4gICAgICAgICAgICB0aGlzLnVwbG9hZGVkLm5leHQoe1xuICAgICAgICAgICAgICB1cmw6IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSksXG4gICAgICAgICAgICAgIC4uLmV2ZW50LmJvZHkhXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGFyZ3Mub25TdWNjZXNzIShldmVudC5ib2R5LCBhcmdzLmZpbGUsIGV2ZW50KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IGVycm9yID0+IHtcbiAgICAgICAgYXJncy5vbkVycm9yIShlcnJvciwgYXJncy5maWxlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBvbkNoYW5nZSh7IHR5cGUsIGZpbGUsIGV2ZW50IH06IE56VXBsb2FkQ2hhbmdlUGFyYW0pOiB2b2lkIHtcbiAgICBjb25zdCBtZWRpYSA9IHRoaXMuZGF0YS5maW5kKG8gPT4gby51aWQgPT09IGZpbGUudWlkKSE7XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ3N0YXJ0Jzoge1xuICAgICAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUub3JpZ2luRmlsZU9iaiEpO1xuICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEuY29uY2F0KHtcbiAgICAgICAgICB1aWQ6IGZpbGUudWlkLFxuICAgICAgICAgIHVybDogdXJsLFxuICAgICAgICAgIHRodW1ibmFpbFVybDogdXJsLFxuICAgICAgICAgIHByb2dyZXNzOiAwLjAxLFxuICAgICAgICAgIHR5cGU6ICdpbWFnZScsXG4gICAgICAgICAgZmlsZTogZmlsZS5vcmlnaW5GaWxlT2JqXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRhdGFDaGFuZ2UuZW1pdCh0aGlzLmRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSAncHJvZ3Jlc3MnOlxuICAgICAgICBtZWRpYS5wcm9ncmVzcyA9ICtldmVudCEucGVyY2VudC50b0ZpeGVkKDIpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnc3VjY2Vzcyc6XG4gICAgICAgIGRlbGV0ZSBtZWRpYS5wcm9ncmVzcztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLmZpbHRlcihvID0+IG8udWlkICE9PSBmaWxlLnVpZCk7XG4gICAgICAgIHRoaXMuZGF0YUNoYW5nZS5lbWl0KHRoaXMuZGF0YSk7XG4gICAgICAgIHRoaXMuZXJyb3IuZW1pdChtZWRpYSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIG9uUHJldmlldyhtZWRpYTogU3VuTWVkaWEpIHtcbiAgICBjb25zdCBpbWFnZXMgPSB0aGlzLmRhdGEubWFwKG8gPT4gKHsgc3JjOiBvLnVybCB8fCBvLnRodW1ibmFpbFVybCEgfSkpO1xuICAgIGNvbnN0IHJlZiA9IHRoaXMuaW1hZ2VTZXJ2aWNlLnByZXZpZXcoaW1hZ2VzKTtcbiAgICByZWYuc3dpdGNoVG8odGhpcy5kYXRhLmZpbmRJbmRleChvID0+IG8gPT09IG1lZGlhKSk7XG4gIH1cblxuICBvbkRvd25sb2FkKG1lZGlhOiBTdW5NZWRpYSkge1xuICAgIGZyb20odGhpcy5maWxlTWFuYWdlci5kb3dubG9hZChtZWRpYS51cmwpKS5waXBlKFxuICAgICAgdGhpcy5tZXNzYWdlLndpdGhMb2FkaW5nKCfmraPlnKjkuIvovb0nKVxuICAgICkuc3Vic2NyaWJlKHtcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMubWVzc2FnZS5lcnJvcign5LiL6L295aSx6LSlJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIkBmb3IgKGl0ZW0gb2YgZGF0YTsgdHJhY2sgaXRlbSkge1xuICA8ZGl2IGNsYXNzPVwic3VuLW1lZGlhLXVwbG9hZGVyLWl0ZW1cIj5cbiAgICA8aW1nIGNsYXNzPVwic3VuLW1lZGlhLXVwbG9hZGVyLWltZ1wiIFtzcmNdPVwiaXRlbS50aHVtYm5haWxVcmwgfHwgaXRlbS51cmxcIiAvPlxuXG4gICAgQGlmIChpdGVtLnByb2dyZXNzKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwic3VuLW1lZGlhLXVwbG9hZGVyLXByb2dyZXNzLWJhclwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzdW4tbWVkaWEtdXBsb2FkZXItcHJvZ3Jlc3MtaW5uZXJcIlxuICAgICAgICAgIFtzdHlsZV09XCJ7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLScgKyBpdGVtLnByb2dyZXNzICsgJ3B4KScgfVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3VuLW1lZGlhLXVwbG9hZGVyLXByb2dyZXNzLXRleHRcIj5cbiAgICAgICAgICA8ZGl2Pnt7IGl0ZW0ucHJvZ3Jlc3MgfX0lPC9kaXY+XG4gICAgICAgICAgPGRpdj7kuIrkvKDkuK0uLi48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJzdW4tbWVkaWEtdXBsb2FkZXItbWFza1wiPlxuICAgICAgICBAaWYgKHByZXZpZXdhYmxlKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN1bi1tZWRpYS11cGxvYWRlci1hY3Rpb25cIiAoY2xpY2spPVwib25QcmV2aWV3KGl0ZW0pXCI+XG4gICAgICAgICAgICA8c3BhbiBuei1pY29uIG56VHlwZT1cImV5ZVwiIG56VGhlbWU9XCJvdXRsaW5lXCI+PC9zcGFuPumihOiniFxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoZG93bmxvYWRhYmxlKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN1bi1tZWRpYS11cGxvYWRlci1hY3Rpb25cIiAoY2xpY2spPVwib25Eb3dubG9hZChpdGVtKVwiPlxuICAgICAgICAgICAgPHNwYW4gbnotaWNvbiBuelR5cGU9XCJkb3dubG9hZFwiIG56VGhlbWU9XCJvdXRsaW5lXCI+PC9zcGFuPuS4i+i9vVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoZGVsZXRhYmxlKSB7XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzdW4tbWVkaWEtdXBsb2FkZXItYWN0aW9uXCJcbiAgICAgICAgICAgIG56LXBvcGNvbmZpcm1cbiAgICAgICAgICAgIG56VHlwZT1cImRhbmdlclwiXG4gICAgICAgICAgICBuelBvcGNvbmZpcm1UaXRsZT1cIuaCqOehruWumuimgeWIoOmZpOivpemhueebruWQl++8n1wiXG4gICAgICAgICAgICBuek9rRGFuZ2VyXG4gICAgICAgICAgICAobnpPbkNvbmZpcm0pPVwiZGVsZXRlLm5leHQoaXRlbSlcIj5cbiAgICAgICAgICAgIDxzcGFuIG56LWljb24gbnpUeXBlPVwiZGVsZXRlXCIgbnpUaGVtZT1cIm91dGxpbmVcIj48L3NwYW4+5Yig6ZmkXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG59XG5cbjxuei11cGxvYWRcbiAgbnpBY2NlcHQ9XCJpbWFnZS8qXCJcbiAgbnpMaXN0VHlwZT1cInBpY3R1cmUtY2FyZFwiXG4gIFtoaWRkZW5dPVwiZGF0YT8ubGVuZ3RoISA+PSBsaW1pdCB8fCAhdXBsb2FkYWJsZVwiXG4gIFtuelNob3dVcGxvYWRMaXN0XT1cImZhbHNlXCJcbiAgW256Q3VzdG9tUmVxdWVzdF09XCJ1cGxvYWRcIlxuICBbbnpUcmFuc2Zvcm1GaWxlXT1cImNvbXByZXNzID8gdHJhbnNmb3JtIDogdW5kZWZpbmVkXCJcbiAgKG56Q2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIj5cbiAgPGRpdiBjbGFzcz1cInN1bi1tZWRpYS11cGxvYWRlci1idG5cIj5cbiAgICA8c3BhbiBuei1pY29uIG56VHlwZT1cInBsdXNcIj48L3NwYW4+XG4gICAgPGRpdiBjbGFzcz1cInN1bi1tZWRpYS11cGxvYWRlci1idG4tdGV4dFwiPueCueWHu+S4iuS8oDwvZGl2PlxuICA8L2Rpdj5cbjwvbnotdXBsb2FkPlxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sYXItYW5ndWxhci11aS16b3Jyby1tZWRpYS11cGxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3VpLXpvcnJvL21lZGlhLXVwbG9hZGVyL3NvbGFyLWFuZ3VsYXItdWktem9ycm8tbWVkaWEtdXBsb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './message.service';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy91aS16b3Jyby9tZXNzYWdlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21lc3NhZ2Uuc2VydmljZSc7XG4iXX0=
@@ -0,0 +1,36 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { NzMessageService } from 'ng-zorro-antd/message';
3
+ import { finalize } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export class MessageService extends NzMessageService {
6
+ saveSuccess() {
7
+ this.success('保存成功');
8
+ }
9
+ deleteSuccess() {
10
+ this.success('删除成功');
11
+ }
12
+ updateSuccess() {
13
+ this.success('更新成功');
14
+ }
15
+ withLoading(content = '正在加载') {
16
+ return (observable) => {
17
+ const msg = this.loading(content, { nzDuration: 0 });
18
+ return observable.pipe(finalize(() => this.remove(msg.messageId)));
19
+ };
20
+ }
21
+ withDeleteLoading() {
22
+ return this.withLoading('正在删除');
23
+ }
24
+ withSaveLoading() {
25
+ return this.withLoading('正在保存');
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessageService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
28
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessageService, providedIn: 'root' }); }
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessageService, decorators: [{
31
+ type: Injectable,
32
+ args: [{
33
+ providedIn: 'root'
34
+ }]
35
+ }] });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvdWktem9ycm8vbWVzc2FnZS9tZXNzYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQWMsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUs1QyxNQUFNLE9BQU8sY0FBZSxTQUFRLGdCQUFnQjtJQUVsRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXLENBQUksT0FBTyxHQUFHLE1BQU07UUFDN0IsT0FBTyxDQUFDLFVBQXlCLEVBQUUsRUFBRTtZQUNuQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JELE9BQU8sVUFBVSxDQUFDLElBQUksQ0FDcEIsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQzNDLENBQUM7UUFDSixDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFJLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFJLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7K0dBN0JVLGNBQWM7bUhBQWQsY0FBYyxjQUZiLE1BQU07OzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTnpNZXNzYWdlU2VydmljZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvbWVzc2FnZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmaW5hbGl6ZSB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlU2VydmljZSBleHRlbmRzIE56TWVzc2FnZVNlcnZpY2Uge1xuXG4gIHNhdmVTdWNjZXNzKCkge1xuICAgIHRoaXMuc3VjY2Vzcygn5L+d5a2Y5oiQ5YqfJyk7XG4gIH1cblxuICBkZWxldGVTdWNjZXNzKCkge1xuICAgIHRoaXMuc3VjY2Vzcygn5Yig6Zmk5oiQ5YqfJyk7XG4gIH1cblxuICB1cGRhdGVTdWNjZXNzKCkge1xuICAgIHRoaXMuc3VjY2Vzcygn5pu05paw5oiQ5YqfJyk7XG4gIH1cblxuICB3aXRoTG9hZGluZzxUPihjb250ZW50ID0gJ+ato+WcqOWKoOi9vScpIHtcbiAgICByZXR1cm4gKG9ic2VydmFibGU6IE9ic2VydmFibGU8VD4pID0+IHtcbiAgICAgIGNvbnN0IG1zZyA9IHRoaXMubG9hZGluZyhjb250ZW50LCB7IG56RHVyYXRpb246IDAgfSk7XG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZS5waXBlKFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLnJlbW92ZShtc2cubWVzc2FnZUlkKSlcbiAgICAgICk7XG4gICAgfTtcbiAgfVxuXG4gIHdpdGhEZWxldGVMb2FkaW5nPFQ+KCkge1xuICAgIHJldHVybiB0aGlzLndpdGhMb2FkaW5nPFQ+KCfmraPlnKjliKDpmaQnKTtcbiAgfVxuXG4gIHdpdGhTYXZlTG9hZGluZzxUPigpIHtcbiAgICByZXR1cm4gdGhpcy53aXRoTG9hZGluZzxUPign5q2j5Zyo5L+d5a2YJyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sYXItYW5ndWxhci11aS16b3Jyby1tZXNzYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvdWktem9ycm8vbWVzc2FnZS9zb2xhci1hbmd1bGFyLXVpLXpvcnJvLW1lc3NhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,25 @@
1
+ import { Component } from '@angular/core';
2
+ import { RouterLink } from '@angular/router';
3
+ import { NzButtonModule } from 'ng-zorro-antd/button';
4
+ import { NzIconModule } from 'ng-zorro-antd/icon';
5
+ import { NzResultModule } from 'ng-zorro-antd/result';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "ng-zorro-antd/result";
8
+ import * as i2 from "ng-zorro-antd/icon";
9
+ import * as i3 from "ng-zorro-antd/button";
10
+ import * as i4 from "ng-zorro-antd/core/transition-patch";
11
+ import * as i5 from "ng-zorro-antd/core/wave";
12
+ export class SunForbiddenPage {
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SunForbiddenPage, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SunForbiddenPage, isStandalone: true, selector: "sun-forbidden", ngImport: i0, template: "<nz-result nzStatus=\"403\" nzTitle=\"403\" nzSubTitle=\"\u62B1\u6B49\uFF0C\u60A8\u6CA1\u6709\u6743\u9650\u8BBF\u95EE\u8BE5\u9875\u9762\">\n <div nz-result-extra>\n <button nz-button nzType=\"primary\" routerLink=\"/\">\n <span nz-icon nzType=\"arrow-left\" nzTheme=\"outline\"></span>\n \u8FD4\u56DE\u4E3B\u9875\n </button>\n </div>\n</nz-result>\n", styles: [":host{height:100%;width:100%;display:flex;justify-content:center;align-items:center;background:var(--ant-primary-1);padding-bottom:10vh}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: NzResultModule }, { kind: "component", type: i1.NzResultComponent, selector: "nz-result", inputs: ["nzIcon", "nzTitle", "nzStatus", "nzSubTitle", "nzExtra"], exportAs: ["nzResult"] }, { kind: "directive", type: i1.NzResultExtraDirective, selector: "div[nz-result-extra]", exportAs: ["nzResultExtra"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i2.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzButtonModule }, { kind: "component", type: i3.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i4.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i5.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }] }); }
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SunForbiddenPage, decorators: [{
17
+ type: Component,
18
+ args: [{ selector: 'sun-forbidden', standalone: true, imports: [
19
+ RouterLink,
20
+ NzResultModule,
21
+ NzIconModule,
22
+ NzButtonModule
23
+ ], template: "<nz-result nzStatus=\"403\" nzTitle=\"403\" nzSubTitle=\"\u62B1\u6B49\uFF0C\u60A8\u6CA1\u6709\u6743\u9650\u8BBF\u95EE\u8BE5\u9875\u9762\">\n <div nz-result-extra>\n <button nz-button nzType=\"primary\" routerLink=\"/\">\n <span nz-icon nzType=\"arrow-left\" nzTheme=\"outline\"></span>\n \u8FD4\u56DE\u4E3B\u9875\n </button>\n </div>\n</nz-result>\n", styles: [":host{height:100%;width:100%;display:flex;justify-content:center;align-items:center;background:var(--ant-primary-1);padding-bottom:10vh}\n"] }]
24
+ }] });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yYmlkZGVuLnBhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy91aS16b3Jyby9wYWdlLWZvcmJpZGRlbi9mb3JiaWRkZW4ucGFnZS50cyIsIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3VpLXpvcnJvL3BhZ2UtZm9yYmlkZGVuL2ZvcmJpZGRlbi5wYWdlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7QUFjdEQsTUFBTSxPQUFPLGdCQUFnQjsrR0FBaEIsZ0JBQWdCO21HQUFoQixnQkFBZ0IseUVDbEI3QixpWEFRQSxvTURFSSxVQUFVLG1PQUNWLGNBQWMsMlRBQ2QsWUFBWSxpTkFDWixjQUFjOzs0RkFLTCxnQkFBZ0I7a0JBWjVCLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUDt3QkFDUCxVQUFVO3dCQUNWLGNBQWM7d0JBQ2QsWUFBWTt3QkFDWixjQUFjO3FCQUNmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE56QnV0dG9uTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9idXR0b24nO1xuaW1wb3J0IHsgTnpJY29uTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9pY29uJztcbmltcG9ydCB7IE56UmVzdWx0TW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9yZXN1bHQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdW4tZm9yYmlkZGVuJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFJvdXRlckxpbmssXG4gICAgTnpSZXN1bHRNb2R1bGUsXG4gICAgTnpJY29uTW9kdWxlLFxuICAgIE56QnV0dG9uTW9kdWxlXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JiaWRkZW4ucGFnZS5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2ZvcmJpZGRlbi5wYWdlLnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIFN1bkZvcmJpZGRlblBhZ2UgeyB9XG4iLCI8bnotcmVzdWx0IG56U3RhdHVzPVwiNDAzXCIgbnpUaXRsZT1cIjQwM1wiIG56U3ViVGl0bGU9XCLmirHmrYnvvIzmgqjmsqHmnInmnYPpmZDorr/pl67or6XpobXpnaJcIj5cbiAgPGRpdiBuei1yZXN1bHQtZXh0cmE+XG4gICAgPGJ1dHRvbiBuei1idXR0b24gbnpUeXBlPVwicHJpbWFyeVwiIHJvdXRlckxpbms9XCIvXCI+XG4gICAgICA8c3BhbiBuei1pY29uIG56VHlwZT1cImFycm93LWxlZnRcIiBuelRoZW1lPVwib3V0bGluZVwiPjwvc3Bhbj5cbiAgICAgIOi/lOWbnuS4u+mhtVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbnotcmVzdWx0PlxuIl19
@@ -0,0 +1,4 @@
1
+ import { SunForbiddenPage } from './forbidden.page';
2
+ export * from './forbidden.page';
3
+ export default SunForbiddenPage;
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy91aS16b3Jyby9wYWdlLWZvcmJpZGRlbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRCxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGVBQWUsZ0JBQWdCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdW5Gb3JiaWRkZW5QYWdlIH0gZnJvbSAnLi9mb3JiaWRkZW4ucGFnZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vZm9yYmlkZGVuLnBhZ2UnO1xuZXhwb3J0IGRlZmF1bHQgU3VuRm9yYmlkZGVuUGFnZVxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sYXItYW5ndWxhci11aS16b3Jyby1wYWdlLWZvcmJpZGRlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3VpLXpvcnJvL3BhZ2UtZm9yYmlkZGVuL3NvbGFyLWFuZ3VsYXItdWktem9ycm8tcGFnZS1mb3JiaWRkZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,4 @@
1
+ import { SunLogoutPage } from './logout.page';
2
+ export * from './logout.page';
3
+ export default SunLogoutPage;
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy91aS16b3Jyby9wYWdlLWxvZ291dC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGVBQWUsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3VuTG9nb3V0UGFnZSB9IGZyb20gJy4vbG9nb3V0LnBhZ2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xvZ291dC5wYWdlJztcbmV4cG9ydCBkZWZhdWx0IFN1bkxvZ291dFBhZ2U7XG4iXX0=
@@ -0,0 +1,36 @@
1
+ import { AsyncPipe } from '@angular/common';
2
+ import { Component } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import { NzButtonModule } from 'ng-zorro-antd/button';
5
+ import { NzIconModule } from 'ng-zorro-antd/icon';
6
+ import { NzResultModule } from 'ng-zorro-antd/result';
7
+ import { last, shareReplay, take, timer } from 'rxjs';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/router";
10
+ import * as i2 from "ng-zorro-antd/result";
11
+ import * as i3 from "ng-zorro-antd/icon";
12
+ import * as i4 from "ng-zorro-antd/button";
13
+ import * as i5 from "ng-zorro-antd/core/transition-patch";
14
+ import * as i6 from "ng-zorro-antd/core/wave";
15
+ export class SunLogoutPage {
16
+ constructor(router) {
17
+ this.router = router;
18
+ this.interval$ = timer(0, 1000).pipe(take(6), shareReplay(1));
19
+ this.interval$.pipe(last(), takeUntilDestroyed()).subscribe(() => this.login());
20
+ }
21
+ login() {
22
+ this.router.navigateByUrl('/login');
23
+ }
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SunLogoutPage, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
25
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SunLogoutPage, isStandalone: true, selector: "sun-logout", ngImport: i0, template: "<nz-result\n nzStatus=\"success\"\n nzTitle=\"\u60A8\u5DF2\u6210\u529F\u9000\u51FA\u767B\u5F55!\"\n [nzSubTitle]=\"'\u7CFB\u7EDF\u5C06\u5728 ' + (5 - (interval$ | async)!) + ' \u79D2\u540E\u81EA\u52A8\u91CD\u5B9A\u5411...'\"\n>\n <div nz-result-extra>\n <button nz-button nzType=\"primary\" (click)=\"login()\">\n <span nz-icon nzType=\"arrow-right\" nzTheme=\"outline\"></span>\n \u7ACB\u5373\u767B\u5F55\n </button>\n </div>\n</nz-result>\n", styles: [":host{height:100%;width:100%;display:flex;justify-content:center;align-items:center;background:var(--ant-primary-1);padding-bottom:10vh}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: NzResultModule }, { kind: "component", type: i2.NzResultComponent, selector: "nz-result", inputs: ["nzIcon", "nzTitle", "nzStatus", "nzSubTitle", "nzExtra"], exportAs: ["nzResult"] }, { kind: "directive", type: i2.NzResultExtraDirective, selector: "div[nz-result-extra]", exportAs: ["nzResultExtra"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i3.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzButtonModule }, { kind: "component", type: i4.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i5.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i6.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }] }); }
26
+ }
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SunLogoutPage, decorators: [{
28
+ type: Component,
29
+ args: [{ selector: 'sun-logout', standalone: true, imports: [
30
+ AsyncPipe,
31
+ NzResultModule,
32
+ NzIconModule,
33
+ NzButtonModule
34
+ ], template: "<nz-result\n nzStatus=\"success\"\n nzTitle=\"\u60A8\u5DF2\u6210\u529F\u9000\u51FA\u767B\u5F55!\"\n [nzSubTitle]=\"'\u7CFB\u7EDF\u5C06\u5728 ' + (5 - (interval$ | async)!) + ' \u79D2\u540E\u81EA\u52A8\u91CD\u5B9A\u5411...'\"\n>\n <div nz-result-extra>\n <button nz-button nzType=\"primary\" (click)=\"login()\">\n <span nz-icon nzType=\"arrow-right\" nzTheme=\"outline\"></span>\n \u7ACB\u5373\u767B\u5F55\n </button>\n </div>\n</nz-result>\n", styles: [":host{height:100%;width:100%;display:flex;justify-content:center;align-items:center;background:var(--ant-primary-1);padding-bottom:10vh}\n"] }]
35
+ }], ctorParameters: () => [{ type: i1.Router }] });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nb3V0LnBhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy91aS16b3Jyby9wYWdlLWxvZ291dC9sb2dvdXQucGFnZS50cyIsIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3VpLXpvcnJvL3BhZ2UtbG9nb3V0L2xvZ291dC5wYWdlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFjdEQsTUFBTSxPQUFPLGFBQWE7SUFNeEIsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFMZixjQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQ2hELElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztRQUdBLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUNqQixJQUFJLEVBQUUsRUFDTixrQkFBa0IsRUFBRSxDQUNyQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7K0dBZlUsYUFBYTttR0FBYixhQUFhLHNFQ3JCMUIsaWRBWUEsK0xEQ0ksU0FBUyw2Q0FDVCxjQUFjLDJUQUNkLFlBQVksaU5BQ1osY0FBYzs7NEZBS0wsYUFBYTtrQkFaekIsU0FBUzsrQkFDRSxZQUFZLGNBQ1YsSUFBSSxXQUNQO3dCQUNQLFNBQVM7d0JBQ1QsY0FBYzt3QkFDZCxZQUFZO3dCQUNaLGNBQWM7cUJBQ2YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTnpCdXR0b25Nb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2J1dHRvbic7XG5pbXBvcnQgeyBOekljb25Nb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2ljb24nO1xuaW1wb3J0IHsgTnpSZXN1bHRNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL3Jlc3VsdCc7XG5pbXBvcnQgeyBsYXN0LCBzaGFyZVJlcGxheSwgdGFrZSwgdGltZXIgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3VuLWxvZ291dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gICAgTnpSZXN1bHRNb2R1bGUsXG4gICAgTnpJY29uTW9kdWxlLFxuICAgIE56QnV0dG9uTW9kdWxlXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2dvdXQucGFnZS5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2xvZ291dC5wYWdlLnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIFN1bkxvZ291dFBhZ2Uge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW50ZXJ2YWwkID0gdGltZXIoMCwgMTAwMCkucGlwZShcbiAgICB0YWtlKDYpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xuICAgIHRoaXMuaW50ZXJ2YWwkLnBpcGUoXG4gICAgICBsYXN0KCksXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKVxuICAgICkuc3Vic2NyaWJlKCgpID0+IHRoaXMubG9naW4oKSk7XG4gIH1cblxuICBsb2dpbigpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvbG9naW4nKTtcbiAgfVxuXG59XG4iLCI8bnotcmVzdWx0XG4gIG56U3RhdHVzPVwic3VjY2Vzc1wiXG4gIG56VGl0bGU9XCLmgqjlt7LmiJDlip/pgIDlh7rnmbvlvZUhXCJcbiAgW256U3ViVGl0bGVdPVwiJ+ezu+e7n+WwhuWcqCAnICsgKDUgLSAoaW50ZXJ2YWwkIHwgYXN5bmMpISkgKyAnIOenkuWQjuiHquWKqOmHjeWumuWQkS4uLidcIlxuPlxuICA8ZGl2IG56LXJlc3VsdC1leHRyYT5cbiAgICA8YnV0dG9uIG56LWJ1dHRvbiBuelR5cGU9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImxvZ2luKClcIj5cbiAgICAgIDxzcGFuIG56LWljb24gbnpUeXBlPVwiYXJyb3ctcmlnaHRcIiBuelRoZW1lPVwib3V0bGluZVwiPjwvc3Bhbj5cbiAgICAgIOeri+WNs+eZu+W9lVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbnotcmVzdWx0PlxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sYXItYW5ndWxhci11aS16b3Jyby1wYWdlLWxvZ291dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3VpLXpvcnJvL3BhZ2UtbG9nb3V0L3NvbGFyLWFuZ3VsYXItdWktem9ycm8tcGFnZS1sb2dvdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,4 @@
1
+ import { SunNotFoundPage } from './not-found.page';
2
+ export * from './not-found.page';
3
+ export default SunNotFoundPage;
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy91aS16b3Jyby9wYWdlLW5vdC1mb3VuZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbkQsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxlQUFlLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1bk5vdEZvdW5kUGFnZSB9IGZyb20gJy4vbm90LWZvdW5kLnBhZ2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL25vdC1mb3VuZC5wYWdlJztcbmV4cG9ydCBkZWZhdWx0IFN1bk5vdEZvdW5kUGFnZTtcbiJdfQ==
@@ -0,0 +1,25 @@
1
+ import { Component } from '@angular/core';
2
+ import { RouterLink } from '@angular/router';
3
+ import { NzButtonModule } from 'ng-zorro-antd/button';
4
+ import { NzIconModule } from 'ng-zorro-antd/icon';
5
+ import { NzResultModule } from 'ng-zorro-antd/result';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "ng-zorro-antd/result";
8
+ import * as i2 from "ng-zorro-antd/icon";
9
+ import * as i3 from "ng-zorro-antd/button";
10
+ import * as i4 from "ng-zorro-antd/core/transition-patch";
11
+ import * as i5 from "ng-zorro-antd/core/wave";
12
+ export class SunNotFoundPage {
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SunNotFoundPage, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SunNotFoundPage, isStandalone: true, selector: "sun-not-found", ngImport: i0, template: "<nz-result nzStatus=\"404\" nzTitle=\"404\" nzSubTitle=\"\u62B1\u6B49\uFF0C\u60A8\u8BBF\u95EE\u7684\u9875\u9762\u4E0D\u5B58\u5728\">\n <div nz-result-extra>\n <button nz-button nzType=\"primary\" routerLink=\"/\">\n <span nz-icon nzType=\"arrow-left\" nzTheme=\"outline\"></span>\n \u8FD4\u56DE\u4E3B\u9875\n </button>\n </div>\n</nz-result>\n", styles: [":host{height:100%;width:100%;display:flex;justify-content:center;align-items:center;background:var(--ant-primary-1);padding-bottom:10vh}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: NzResultModule }, { kind: "component", type: i1.NzResultComponent, selector: "nz-result", inputs: ["nzIcon", "nzTitle", "nzStatus", "nzSubTitle", "nzExtra"], exportAs: ["nzResult"] }, { kind: "directive", type: i1.NzResultExtraDirective, selector: "div[nz-result-extra]", exportAs: ["nzResultExtra"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i2.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzButtonModule }, { kind: "component", type: i3.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i4.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i5.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }] }); }
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SunNotFoundPage, decorators: [{
17
+ type: Component,
18
+ args: [{ selector: 'sun-not-found', standalone: true, imports: [
19
+ RouterLink,
20
+ NzResultModule,
21
+ NzIconModule,
22
+ NzButtonModule
23
+ ], template: "<nz-result nzStatus=\"404\" nzTitle=\"404\" nzSubTitle=\"\u62B1\u6B49\uFF0C\u60A8\u8BBF\u95EE\u7684\u9875\u9762\u4E0D\u5B58\u5728\">\n <div nz-result-extra>\n <button nz-button nzType=\"primary\" routerLink=\"/\">\n <span nz-icon nzType=\"arrow-left\" nzTheme=\"outline\"></span>\n \u8FD4\u56DE\u4E3B\u9875\n </button>\n </div>\n</nz-result>\n", styles: [":host{height:100%;width:100%;display:flex;justify-content:center;align-items:center;background:var(--ant-primary-1);padding-bottom:10vh}\n"] }]
24
+ }] });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90LWZvdW5kLnBhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy91aS16b3Jyby9wYWdlLW5vdC1mb3VuZC9ub3QtZm91bmQucGFnZS50cyIsIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3VpLXpvcnJvL3BhZ2Utbm90LWZvdW5kL25vdC1mb3VuZC5wYWdlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7QUFjdEQsTUFBTSxPQUFPLGVBQWU7K0dBQWYsZUFBZTttR0FBZixlQUFlLHlFQ2xCNUIsMldBUUEsb01ERUksVUFBVSxtT0FDVixjQUFjLDJUQUNkLFlBQVksaU5BQ1osY0FBYzs7NEZBS0wsZUFBZTtrQkFaM0IsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxXQUNQO3dCQUNQLFVBQVU7d0JBQ1YsY0FBYzt3QkFDZCxZQUFZO3dCQUNaLGNBQWM7cUJBQ2YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTnpCdXR0b25Nb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2J1dHRvbic7XG5pbXBvcnQgeyBOekljb25Nb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2ljb24nO1xuaW1wb3J0IHsgTnpSZXN1bHRNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL3Jlc3VsdCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N1bi1ub3QtZm91bmQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgUm91dGVyTGluayxcbiAgICBOelJlc3VsdE1vZHVsZSxcbiAgICBOekljb25Nb2R1bGUsXG4gICAgTnpCdXR0b25Nb2R1bGVcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL25vdC1mb3VuZC5wYWdlLmh0bWwnLFxuICBzdHlsZVVybDogJy4vbm90LWZvdW5kLnBhZ2Uuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgU3VuTm90Rm91bmRQYWdlIHsgfVxuIiwiPG56LXJlc3VsdCBuelN0YXR1cz1cIjQwNFwiIG56VGl0bGU9XCI0MDRcIiBuelN1YlRpdGxlPVwi5oqx5q2J77yM5oKo6K6/6Zeu55qE6aG16Z2i5LiN5a2Y5ZyoXCI+XG4gIDxkaXYgbnotcmVzdWx0LWV4dHJhPlxuICAgIDxidXR0b24gbnotYnV0dG9uIG56VHlwZT1cInByaW1hcnlcIiByb3V0ZXJMaW5rPVwiL1wiPlxuICAgICAgPHNwYW4gbnotaWNvbiBuelR5cGU9XCJhcnJvdy1sZWZ0XCIgbnpUaGVtZT1cIm91dGxpbmVcIj48L3NwYW4+XG4gICAgICDov5Tlm57kuLvpobVcbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L256LXJlc3VsdD5cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sYXItYW5ndWxhci11aS16b3Jyby1wYWdlLW5vdC1mb3VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3VpLXpvcnJvL3BhZ2Utbm90LWZvdW5kL3NvbGFyLWFuZ3VsYXItdWktem9ycm8tcGFnZS1ub3QtZm91bmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sYXItYW5ndWxhci11aS16b3Jyby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3VpLXpvcnJvL3NvbGFyLWFuZ3VsYXItdWktem9ycm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,27 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { SwUpdate } from '@angular/service-worker';
3
+ import { NzMessageService } from 'ng-zorro-antd/message';
4
+ import * as i0 from "@angular/core";
5
+ export class AppUpdater {
6
+ constructor() {
7
+ this.update = inject(SwUpdate);
8
+ this.message = inject(NzMessageService);
9
+ }
10
+ checkForUpdate() {
11
+ const loading = this.message.loading('正在检查更新...', { nzDuration: 0 });
12
+ this.update.checkForUpdate()
13
+ // 这里我们只处理 bool 为 false 的情况;如果为 true,意味着有新版本,应该由 sun-updates 组件处理
14
+ .then(bool => bool || this.message.info('当前已是最新版本'))
15
+ .catch(() => this.message.error('检查更新失败'))
16
+ .finally(() => this.message.remove(loading.messageId));
17
+ }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppUpdater, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
19
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppUpdater, providedIn: 'root' }); }
20
+ }
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppUpdater, decorators: [{
22
+ type: Injectable,
23
+ args: [{
24
+ providedIn: 'root'
25
+ }]
26
+ }] });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXVwZGF0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy91aS16b3Jyby91cGRhdGVyL2FwcC11cGRhdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFLekQsTUFBTSxPQUFPLFVBQVU7SUFIdkI7UUFJcUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxQixZQUFPLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7S0FXdkQ7SUFUQyxjQUFjO1FBQ1osTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFckUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUU7WUFDMUIsaUVBQWlFO2FBQ2hFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNuRCxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDekMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7K0dBWlUsVUFBVTttSEFBVixVQUFVLGNBRlQsTUFBTTs7NEZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN3VXBkYXRlIH0gZnJvbSAnQGFuZ3VsYXIvc2VydmljZS13b3JrZXInO1xuaW1wb3J0IHsgTnpNZXNzYWdlU2VydmljZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvbWVzc2FnZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFwcFVwZGF0ZXIge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdXBkYXRlID0gaW5qZWN0KFN3VXBkYXRlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1lc3NhZ2UgPSBpbmplY3QoTnpNZXNzYWdlU2VydmljZSk7XG5cbiAgY2hlY2tGb3JVcGRhdGUoKSB7XG4gICAgY29uc3QgbG9hZGluZyA9IHRoaXMubWVzc2FnZS5sb2FkaW5nKCfmraPlnKjmo4Dmn6Xmm7TmlrAuLi4nLCB7IG56RHVyYXRpb246IDAgfSk7XG5cbiAgICB0aGlzLnVwZGF0ZS5jaGVja0ZvclVwZGF0ZSgpXG4gICAgICAvLyDov5nph4zmiJHku6zlj6rlpITnkIYgYm9vbCDkuLogZmFsc2Ug55qE5oOF5Ya177yb5aaC5p6c5Li6IHRydWXvvIzmhI/lkbPnnYDmnInmlrDniYjmnKzvvIzlupTor6XnlLEgc3VuLXVwZGF0ZXMg57uE5Lu25aSE55CGXG4gICAgICAudGhlbihib29sID0+IGJvb2wgfHwgdGhpcy5tZXNzYWdlLmluZm8oJ+W9k+WJjeW3suaYr+acgOaWsOeJiOacrCcpKVxuICAgICAgLmNhdGNoKCgpID0+IHRoaXMubWVzc2FnZS5lcnJvcign5qOA5p+l5pu05paw5aSx6LSlJykpXG4gICAgICAuZmluYWxseSgoKSA9PiB0aGlzLm1lc3NhZ2UucmVtb3ZlKGxvYWRpbmcubWVzc2FnZUlkKSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './app-updater';
2
+ export * from './updater.component';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy91aS16b3Jyby91cGRhdGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FwcC11cGRhdGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdXBkYXRlci5jb21wb25lbnQnO1xuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sYXItYW5ndWxhci11aS16b3Jyby11cGRhdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvdWktem9ycm8vdXBkYXRlci9zb2xhci1hbmd1bGFyLXVpLXpvcnJvLXVwZGF0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,71 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { Component, inject, TemplateRef, ViewChild } from '@angular/core';
3
+ import { SwUpdate } from '@angular/service-worker';
4
+ import { NzButtonModule } from 'ng-zorro-antd/button';
5
+ import { NzIconModule } from 'ng-zorro-antd/icon';
6
+ import { NzNotificationModule, NzNotificationService } from 'ng-zorro-antd/notification';
7
+ import { NzSpaceModule } from 'ng-zorro-antd/space';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "ng-zorro-antd/button";
10
+ import * as i2 from "ng-zorro-antd/core/transition-patch";
11
+ import * as i3 from "ng-zorro-antd/core/wave";
12
+ import * as i4 from "ng-zorro-antd/space";
13
+ export class SunUpdater {
14
+ constructor() {
15
+ this.location = inject(DOCUMENT).defaultView.location;
16
+ this.notification = inject(NzNotificationService);
17
+ const updater = inject(SwUpdate);
18
+ let loadingRef;
19
+ updater.versionUpdates.subscribe(event => {
20
+ switch (event.type) {
21
+ case 'VERSION_DETECTED':
22
+ loadingRef = this.notification.info('温馨提示', '发现新版本,正在下载更新...', { nzCloseIcon: 'loading', nzDuration: 0 });
23
+ break;
24
+ case 'VERSION_READY':
25
+ this.notification.remove(loadingRef.messageId);
26
+ this.present();
27
+ break;
28
+ case 'VERSION_INSTALLATION_FAILED':
29
+ this.notification.remove(loadingRef.messageId);
30
+ this.notification.error('温馨提示', '新版本安装失败,原因:' + event.error, { nzDuration: 0 });
31
+ break;
32
+ }
33
+ });
34
+ updater.unrecoverable.subscribe(event => {
35
+ alert(`发生错误,我们无法从 ${event.reason} 恢复,请重新加载页面。`);
36
+ });
37
+ }
38
+ // ngOnInit() {
39
+ // this.present()
40
+ // }
41
+ present() {
42
+ this.notification.info('新版本已就绪', '为了让您获得更好的使用体验,我们建议您立即进行更新。', {
43
+ nzButton: this.templateRef,
44
+ nzDuration: 0
45
+ });
46
+ }
47
+ update() {
48
+ this.location.reload();
49
+ }
50
+ defer(notification) {
51
+ notification.close();
52
+ setTimeout(() => {
53
+ this.present();
54
+ }, 1000 * 60 * 5); // 5min
55
+ }
56
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SunUpdater, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
57
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SunUpdater, isStandalone: true, selector: "sun-updater", viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: "<ng-template let-notification>\n <nz-space>\n <button *nzSpaceItem nz-button nzType=\"link\" nzSize=\"small\" (click)=\"defer(notification)\">\u7A0D\u540E\u63D0\u9192</button>\n <button *nzSpaceItem nz-button nzType=\"primary\" nzSize=\"small\" (click)=\"update()\">\u7ACB\u5373\u66F4\u65B0</button>\n </nz-space>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: NzIconModule }, { kind: "ngmodule", type: NzButtonModule }, { kind: "component", type: i1.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i2.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i3.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "ngmodule", type: NzSpaceModule }, { kind: "component", type: i4.NzSpaceComponent, selector: "nz-space, [nz-space]", inputs: ["nzDirection", "nzAlign", "nzSplit", "nzWrap", "nzSize"], exportAs: ["NzSpace"] }, { kind: "directive", type: i4.NzSpaceItemDirective, selector: "[nzSpaceItem]" }, { kind: "ngmodule", type: NzNotificationModule }] }); }
58
+ }
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SunUpdater, decorators: [{
60
+ type: Component,
61
+ args: [{ selector: 'sun-updater', standalone: true, imports: [
62
+ NzIconModule,
63
+ NzButtonModule,
64
+ NzSpaceModule,
65
+ NzNotificationModule
66
+ ], template: "<ng-template let-notification>\n <nz-space>\n <button *nzSpaceItem nz-button nzType=\"link\" nzSize=\"small\" (click)=\"defer(notification)\">\u7A0D\u540E\u63D0\u9192</button>\n <button *nzSpaceItem nz-button nzType=\"primary\" nzSize=\"small\" (click)=\"update()\">\u7ACB\u5373\u66F4\u65B0</button>\n </nz-space>\n</ng-template>\n" }]
67
+ }], ctorParameters: () => [], propDecorators: { templateRef: [{
68
+ type: ViewChild,
69
+ args: [TemplateRef, { static: true }]
70
+ }] } });
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy91aS16b3Jyby91cGRhdGVyL3VwZGF0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvdWktem9ycm8vdXBkYXRlci91cGRhdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBMkIsb0JBQW9CLEVBQXFCLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckksT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7QUFhcEQsTUFBTSxPQUFPLFVBQVU7SUFNckI7UUFMaUIsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFZLENBQUMsUUFBUSxDQUFDO1FBQ2xELGlCQUFZLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFLNUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWpDLElBQUksVUFBNkIsQ0FBQztRQUVsQyxPQUFPLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2QyxRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDbkIsS0FBSyxrQkFBa0I7b0JBQ3JCLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDakMsTUFBTSxFQUNOLGlCQUFpQixFQUNqQixFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUMxQyxDQUFDO29CQUNGLE1BQU07Z0JBRVIsS0FBSyxlQUFlO29CQUNsQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQy9DLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDZixNQUFNO2dCQUVSLEtBQUssNkJBQTZCO29CQUNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQy9DLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUNyQixNQUFNLEVBQ04sYUFBYSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQzNCLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUNsQixDQUFDO29CQUNGLE1BQU07WUFDVixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN0QyxLQUFLLENBQUMsY0FBYyxLQUFLLENBQUMsTUFBTSxjQUFjLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlO0lBQ2YsbUJBQW1CO0lBQ25CLElBQUk7SUFFSSxPQUFPO1FBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ3BCLFFBQVEsRUFDUiw0QkFBNEIsRUFDNUI7WUFDRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDMUIsVUFBVSxFQUFFLENBQUM7U0FDZCxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFxQztRQUN6QyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFckIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDLEVBQUUsSUFBSSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU87SUFDNUIsQ0FBQzsrR0FuRVUsVUFBVTttR0FBVixVQUFVLG9IQUlWLFdBQVcsOERDdkJ4QixxVkFNQSwyQ0RNSSxZQUFZLDhCQUNaLGNBQWMsK3FCQUNkLGFBQWEsNlJBQ2Isb0JBQW9COzs0RkFJWCxVQUFVO2tCQVh0QixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3dCQUNkLGFBQWE7d0JBQ2Isb0JBQW9CO3FCQUNyQjt3REFPeUMsV0FBVztzQkFBcEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN3VXBkYXRlIH0gZnJvbSAnQGFuZ3VsYXIvc2VydmljZS13b3JrZXInO1xuaW1wb3J0IHsgTnpCdXR0b25Nb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2J1dHRvbic7XG5pbXBvcnQgeyBOekljb25Nb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2ljb24nO1xuaW1wb3J0IHsgTnpOb3RpZmljYXRpb25Db21wb25lbnQsIE56Tm90aWZpY2F0aW9uTW9kdWxlLCBOek5vdGlmaWNhdGlvblJlZiwgTnpOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9ub3RpZmljYXRpb24nO1xuaW1wb3J0IHsgTnpTcGFjZU1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvc3BhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdW4tdXBkYXRlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBOekljb25Nb2R1bGUsXG4gICAgTnpCdXR0b25Nb2R1bGUsXG4gICAgTnpTcGFjZU1vZHVsZSxcbiAgICBOek5vdGlmaWNhdGlvbk1vZHVsZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vdXBkYXRlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU3VuVXBkYXRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9jYXRpb24gPSBpbmplY3QoRE9DVU1FTlQpLmRlZmF1bHRWaWV3IS5sb2NhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBub3RpZmljYXRpb24gPSBpbmplY3QoTnpOb3RpZmljYXRpb25TZXJ2aWNlKTtcblxuICBAVmlld0NoaWxkKFRlbXBsYXRlUmVmLCB7IHN0YXRpYzogdHJ1ZSB9KSB0ZW1wbGF0ZVJlZiE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3QgdXBkYXRlciA9IGluamVjdChTd1VwZGF0ZSk7XG5cbiAgICBsZXQgbG9hZGluZ1JlZjogTnpOb3RpZmljYXRpb25SZWY7XG5cbiAgICB1cGRhdGVyLnZlcnNpb25VcGRhdGVzLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgICAgY2FzZSAnVkVSU0lPTl9ERVRFQ1RFRCc6XG4gICAgICAgICAgbG9hZGluZ1JlZiA9IHRoaXMubm90aWZpY2F0aW9uLmluZm8oXG4gICAgICAgICAgICAn5rip6aao5o+Q56S6JyxcbiAgICAgICAgICAgICflj5HnjrDmlrDniYjmnKzvvIzmraPlnKjkuIvovb3mm7TmlrAuLi4nLFxuICAgICAgICAgICAgeyBuekNsb3NlSWNvbjogJ2xvYWRpbmcnLCBuekR1cmF0aW9uOiAwIH1cbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ1ZFUlNJT05fUkVBRFknOlxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uLnJlbW92ZShsb2FkaW5nUmVmLm1lc3NhZ2VJZCk7XG4gICAgICAgICAgdGhpcy5wcmVzZW50KCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnVkVSU0lPTl9JTlNUQUxMQVRJT05fRkFJTEVEJzpcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5yZW1vdmUobG9hZGluZ1JlZi5tZXNzYWdlSWQpO1xuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uLmVycm9yKFxuICAgICAgICAgICAgJ+a4qemmqOaPkOekuicsXG4gICAgICAgICAgICAn5paw54mI5pys5a6J6KOF5aSx6LSl77yM5Y6f5Zug77yaJyArIGV2ZW50LmVycm9yLFxuICAgICAgICAgICAgeyBuekR1cmF0aW9uOiAwIH1cbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdXBkYXRlci51bnJlY292ZXJhYmxlLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICBhbGVydChg5Y+R55Sf6ZSZ6K+v77yM5oiR5Lus5peg5rOV5LuOICR7ZXZlbnQucmVhc29ufSDmgaLlpI3vvIzor7fph43mlrDliqDovb3pobXpnaLjgIJgKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIG5nT25Jbml0KCkge1xuICAvLyAgIHRoaXMucHJlc2VudCgpXG4gIC8vIH1cblxuICBwcml2YXRlIHByZXNlbnQoKSB7XG4gICAgdGhpcy5ub3RpZmljYXRpb24uaW5mbyhcbiAgICAgICfmlrDniYjmnKzlt7LlsLHnu6onLFxuICAgICAgJ+S4uuS6huiuqeaCqOiOt+W+l+abtOWlveeahOS9v+eUqOS9k+mqjO+8jOaIkeS7rOW7uuiuruaCqOeri+WNs+i/m+ihjOabtOaWsOOAgicsXG4gICAgICB7XG4gICAgICAgIG56QnV0dG9uOiB0aGlzLnRlbXBsYXRlUmVmLFxuICAgICAgICBuekR1cmF0aW9uOiAwXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHVwZGF0ZSgpIHtcbiAgICB0aGlzLmxvY2F0aW9uLnJlbG9hZCgpO1xuICB9XG5cbiAgZGVmZXIobm90aWZpY2F0aW9uOiBOek5vdGlmaWNhdGlvbkNvbXBvbmVudCkge1xuICAgIG5vdGlmaWNhdGlvbi5jbG9zZSgpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnByZXNlbnQoKTtcbiAgICB9LCAxMDAwICogNjAgKiA1KTsgLy8gNW1pblxuICB9XG59XG4iLCI8bmctdGVtcGxhdGUgbGV0LW5vdGlmaWNhdGlvbj5cbiAgPG56LXNwYWNlPlxuICAgIDxidXR0b24gKm56U3BhY2VJdGVtIG56LWJ1dHRvbiBuelR5cGU9XCJsaW5rXCIgbnpTaXplPVwic21hbGxcIiAoY2xpY2spPVwiZGVmZXIobm90aWZpY2F0aW9uKVwiPueojeWQjuaPkOmGkjwvYnV0dG9uPlxuICAgIDxidXR0b24gKm56U3BhY2VJdGVtIG56LWJ1dHRvbiBuelR5cGU9XCJwcmltYXJ5XCIgbnpTaXplPVwic21hbGxcIiAoY2xpY2spPVwidXBkYXRlKClcIj7nq4vljbPmm7TmlrA8L2J1dHRvbj5cbiAgPC9uei1zcGFjZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=