ng-zorro-antd-extension 17.0.2 → 17.2.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 (38) hide show
  1. package/README.md +1 -0
  2. package/configurable-query/configurable-query.component.d.ts +13 -14
  3. package/configurable-query/type.d.ts +2 -2
  4. package/esm2022/configurable-query/configurable-query.component.mjs +66 -42
  5. package/esm2022/configurable-query/type.mjs +1 -1
  6. package/esm2022/print/ng-zorro-antd-extension-print.mjs +5 -0
  7. package/esm2022/print/nzx-print-content.directive.mjs +22 -0
  8. package/esm2022/print/nzx-print-v.component.mjs +300 -0
  9. package/esm2022/print/nzx-print.component.mjs +189 -0
  10. package/esm2022/print/nzx-print.directive.mjs +91 -0
  11. package/esm2022/print/nzx-print.module.mjs +39 -0
  12. package/esm2022/print/public-api.mjs +10 -0
  13. package/esm2022/table-select/page-table-select/page-table-select.component.mjs +3 -3
  14. package/esm2022/table-select/table-select/table-select.component.mjs +3 -3
  15. package/esm2022/util/lib/getElementByTag.mjs +31 -0
  16. package/esm2022/util/public-api.mjs +2 -1
  17. package/fesm2022/ng-zorro-antd-extension-configurable-query.mjs +64 -40
  18. package/fesm2022/ng-zorro-antd-extension-configurable-query.mjs.map +1 -1
  19. package/fesm2022/ng-zorro-antd-extension-print.mjs +637 -0
  20. package/fesm2022/ng-zorro-antd-extension-print.mjs.map +1 -0
  21. package/fesm2022/ng-zorro-antd-extension-table-select.mjs +4 -4
  22. package/fesm2022/ng-zorro-antd-extension-table-select.mjs.map +1 -1
  23. package/fesm2022/ng-zorro-antd-extension-util.mjs +32 -1
  24. package/fesm2022/ng-zorro-antd-extension-util.mjs.map +1 -1
  25. package/package.json +14 -7
  26. package/pipes/safe-url.pipe.d.ts +1 -1
  27. package/print/index.d.ts +5 -0
  28. package/print/nzx-print-content.directive.d.ts +10 -0
  29. package/print/nzx-print-v.component.d.ts +45 -0
  30. package/print/nzx-print.component.d.ts +34 -0
  31. package/print/nzx-print.directive.d.ts +17 -0
  32. package/print/nzx-print.module.d.ts +13 -0
  33. package/print/public-api.d.ts +9 -0
  34. package/public-api.d.ts +1 -1
  35. package/table-select/abstract-table-select.d.ts +1 -1
  36. package/timer-button/timer-button.directive.d.ts +1 -1
  37. package/util/lib/getElementByTag.d.ts +8 -0
  38. package/util/public-api.d.ts +1 -0
package/README.md CHANGED
@@ -65,6 +65,7 @@ export class AppModule {}
65
65
  | ^14.0.0 | ^14.0.0 | ^14.0.0 | end |
66
66
  | ^15.0.0 | ^15.0.0 | ^15.0.0 | 2024-05-18 |
67
67
  | ^16.0.0 | ^16.0.0 | ^15.6.0 | 2024-11-08 |
68
+ | ^17.0.0 | ^17.0.0 | ^15.6.0 | 2025-05-15 |
68
69
 
69
70
  Install the specified version if required using:
70
71
 
@@ -1,4 +1,4 @@
1
- import { AfterContentInit, ChangeDetectorRef, EventEmitter, OnChanges, OnDestroy, OnInit, QueryList, SimpleChanges } from '@angular/core';
1
+ import { AfterContentInit, AfterViewInit, ChangeDetectorRef, EventEmitter, OnChanges, OnDestroy, OnInit, QueryList, SimpleChanges } from '@angular/core';
2
2
  import { AbstractControl, FormBuilder, FormGroup } from '@angular/forms';
3
3
  import { NzxQueryI18nInterface } from 'ng-zorro-antd-extension/i18n';
4
4
  import { NzJustify } from 'ng-zorro-antd/grid';
@@ -10,7 +10,7 @@ import * as i0 from "@angular/core";
10
10
  * 查询组件
11
11
  * 支持模板自定义,在使用模板自定义时,要注意controlType应该设置为Template并且确保controlName与指令上的nzxControl应该相同
12
12
  */
13
- export declare class NzxConfigurableQueryComponent implements OnChanges, OnInit, AfterContentInit, OnDestroy {
13
+ export declare class NzxConfigurableQueryComponent implements OnChanges, OnInit, AfterViewInit, AfterContentInit, OnDestroy {
14
14
  private i18n;
15
15
  private fb;
16
16
  private cd;
@@ -24,8 +24,6 @@ export declare class NzxConfigurableQueryComponent implements OnChanges, OnInit,
24
24
  lineNumber: number;
25
25
  /** 操作按钮所占栅格数,24则换行 */
26
26
  nzxBtnSpan: number | null;
27
- /**启用折叠 */
28
- nzxCollapse: boolean;
29
27
  /** 初始化时,主动查询 */
30
28
  initQuery: boolean;
31
29
  /** 缺省 固定参数 */
@@ -39,18 +37,19 @@ export declare class NzxConfigurableQueryComponent implements OnChanges, OnInit,
39
37
  /** 查询组件出参*/
40
38
  get queryParams(): any;
41
39
  set queryParams(value: any);
42
- get collapseText(): string;
43
- get collapseIcon(): "down" | "up";
40
+ get nzxCollapse(): boolean;
44
41
  locale: NzxQueryI18nInterface;
45
- /**是否展开状态*/
46
- private isCollapse;
42
+ collapseIcon: string;
43
+ collapseText: string;
47
44
  private _queryParams;
48
45
  private defaultValue;
49
46
  private cacheParams;
50
47
  private destroy$;
51
48
  private _nzxBtnSpan;
49
+ private queyFormEl;
52
50
  controlTemplateList: QueryList<NzxControlDirective>;
53
51
  constructor(i18n: NzI18nService, fb: FormBuilder, cd: ChangeDetectorRef);
52
+ ngAfterViewInit(): void;
54
53
  ngOnChanges(changes: SimpleChanges): void;
55
54
  ngOnInit(): void;
56
55
  ngAfterContentInit(): void;
@@ -62,8 +61,10 @@ export declare class NzxConfigurableQueryComponent implements OnChanges, OnInit,
62
61
  setControl(controlName: string, config: Partial<NzxQueryControlOptions>): void;
63
62
  /**
64
63
  * 动态添加控件
64
+ * @param config 配置项
65
+ * @param position 添加位置 不传为末尾
65
66
  */
66
- addControl(config: NzxQueryControlOptions): void;
67
+ addControl(config: NzxQueryControlOptions, position?: number | undefined): void;
67
68
  /**
68
69
  * 根据控件名删除控件
69
70
  */
@@ -75,22 +76,20 @@ export declare class NzxConfigurableQueryComponent implements OnChanges, OnInit,
75
76
  /**
76
77
  * 检索给定控件名称或路径的子控件。
77
78
  * 这个 getFormControl 签名支持字符串和 const 数组(.getFormControl(['foo', 'bar'] as const))
78
- * 注意调用时机,最好在afterViewInit中调用
79
79
  */
80
80
  getFormControl(path: string | readonly (string | number)[]): AbstractControl<any, any> | null;
81
81
  /** 查询 */
82
- search(): void;
82
+ search(event?: Event): void;
83
83
  /** 重置 */
84
84
  reset(): void;
85
85
  /**展开、收起*/
86
86
  toggleCollapse(): void;
87
87
  ngOnDestroy(): void;
88
+ private calculateText;
88
89
  /** 清空表单控件 */
89
90
  private clearFormControl;
90
- /** 折叠 */
91
- private collapse;
92
91
  /** 生成表单 */
93
92
  private generateForm;
94
93
  static ɵfac: i0.ɵɵFactoryDeclaration<NzxConfigurableQueryComponent, never>;
95
- static ɵcmp: i0.ɵɵComponentDeclaration<NzxConfigurableQueryComponent, "nzx-configurable-query", ["NzxConfigurableQuery"], { "controls": { "alias": "controls"; "required": false; }; "nzxJustify": { "alias": "nzxJustify"; "required": false; }; "nzxGutter": { "alias": "nzxGutter"; "required": false; }; "lineNumber": { "alias": "lineNumber"; "required": false; }; "nzxBtnSpan": { "alias": "nzxBtnSpan"; "required": false; }; "nzxCollapse": { "alias": "nzxCollapse"; "required": false; }; "initQuery": { "alias": "initQuery"; "required": false; }; "fixedParams": { "alias": "fixedParams"; "required": false; }; }, { "queryChange": "queryChange"; "resetChange": "resetChange"; }, ["controlTemplateList"], ["*"], false, never>;
94
+ static ɵcmp: i0.ɵɵComponentDeclaration<NzxConfigurableQueryComponent, "nzx-configurable-query", ["NzxConfigurableQuery"], { "controls": { "alias": "controls"; "required": false; }; "nzxJustify": { "alias": "nzxJustify"; "required": false; }; "nzxGutter": { "alias": "nzxGutter"; "required": false; }; "lineNumber": { "alias": "lineNumber"; "required": false; }; "nzxBtnSpan": { "alias": "nzxBtnSpan"; "required": false; }; "initQuery": { "alias": "initQuery"; "required": false; }; "fixedParams": { "alias": "fixedParams"; "required": false; }; }, { "queryChange": "queryChange"; "resetChange": "resetChange"; }, ["controlTemplateList"], ["*"], false, never>;
96
95
  }
@@ -62,9 +62,9 @@ export interface NzxQueryControlOptions {
62
62
  */
63
63
  errorTip?: string;
64
64
  /**
65
- * 是否要折叠(nzxCollapse必须为true才生效)
65
+ * 折叠
66
66
  */
67
- collapse?: boolean;
67
+ collapse?: true;
68
68
  /**
69
69
  * 隐藏控件(主要用来携带查询参数但界面不可见)
70
70
  */
@@ -1,6 +1,6 @@
1
- import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Input, Output, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
2
2
  import { updateControlStatus } from 'ng-zorro-antd-extension/util';
3
- import { Subject, takeUntil } from 'rxjs';
3
+ import { Subject, fromEvent, takeUntil } from 'rxjs';
4
4
  import { NzxControlDirective } from './control.directive';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "ng-zorro-antd/i18n";
@@ -25,11 +25,8 @@ export class NzxConfigurableQueryComponent {
25
25
  set queryParams(value) {
26
26
  this._queryParams = value;
27
27
  }
28
- get collapseText() {
29
- return this.isCollapse ? this.locale.expand : this.locale.collapse;
30
- }
31
- get collapseIcon() {
32
- return this.isCollapse ? 'down' : 'up';
28
+ get nzxCollapse() {
29
+ return this.controls.some((i) => i.hasOwnProperty('collapse'));
33
30
  }
34
31
  constructor(i18n, fb, cd) {
35
32
  this.i18n = i18n;
@@ -45,8 +42,6 @@ export class NzxConfigurableQueryComponent {
45
42
  this.lineNumber = 3;
46
43
  /** 操作按钮所占栅格数,24则换行 */
47
44
  this.nzxBtnSpan = null;
48
- /**启用折叠 */
49
- this.nzxCollapse = true;
50
45
  /** 初始化时,主动查询 */
51
46
  this.initQuery = false;
52
47
  /** 缺省 固定参数 */
@@ -55,8 +50,8 @@ export class NzxConfigurableQueryComponent {
55
50
  this.queryChange = new EventEmitter();
56
51
  /** 重置时会触发抛出查询参数 */
57
52
  this.resetChange = new EventEmitter();
58
- /**是否展开状态*/
59
- this.isCollapse = true;
53
+ this.collapseIcon = 'down';
54
+ this.collapseText = '';
60
55
  this._queryParams = {};
61
56
  this.defaultValue = {};
62
57
  this.cacheParams = {};
@@ -64,6 +59,26 @@ export class NzxConfigurableQueryComponent {
64
59
  this._nzxBtnSpan = null;
65
60
  this.queryForm = this.fb.group({});
66
61
  }
62
+ ngAfterViewInit() {
63
+ if (this.queyFormEl) {
64
+ fromEvent(this.queyFormEl.nativeElement, 'keydown')
65
+ .pipe(takeUntil(this.destroy$))
66
+ .subscribe((event) => {
67
+ if (event.key === 'Enter') {
68
+ event.stopPropagation();
69
+ event.preventDefault();
70
+ this.search();
71
+ }
72
+ // 检查是否同时按下了Ctrl键(在Windows/Linux上)和S键
73
+ if ((event.ctrlKey || event.metaKey) && event.key === 'r') {
74
+ // 注意:event.metaKey用于兼容Mac的Command键
75
+ event.preventDefault(); // 阻止浏览器默认的保存行为
76
+ event.stopPropagation();
77
+ this.reset();
78
+ }
79
+ });
80
+ }
81
+ }
67
82
  ngOnChanges(changes) {
68
83
  if (changes['controls'] && !changes['controls'].isFirstChange()) {
69
84
  const controls = changes['controls'].currentValue;
@@ -113,16 +128,22 @@ export class NzxConfigurableQueryComponent {
113
128
  }
114
129
  /**
115
130
  * 动态添加控件
131
+ * @param config 配置项
132
+ * @param position 添加位置 不传为末尾
116
133
  */
117
- addControl(config) {
134
+ addControl(config, position) {
118
135
  const control = this.getControl(config.controlName);
119
136
  if (!control) {
120
- this.collapse();
121
137
  if (config.controlName) {
122
138
  this.queryForm.addControl(config.controlName, config.controlInstance ?? this.fb.control(config.default ?? null));
123
139
  }
124
- this.controls.push(config);
125
- this.cd.markForCheck();
140
+ if (position === void 0 || position === null) {
141
+ this.controls.push(config);
142
+ }
143
+ else {
144
+ this.controls.splice(position - 1, 0, config);
145
+ }
146
+ this.calculateText();
126
147
  }
127
148
  else {
128
149
  throw `The control name: '${config.controlName}' already exists!`;
@@ -134,10 +155,9 @@ export class NzxConfigurableQueryComponent {
134
155
  removeControl(controlName) {
135
156
  const control = this.getControl(controlName);
136
157
  if (control) {
137
- this.collapse();
138
158
  this.queryForm.removeControl(controlName);
139
159
  this.controls = this.controls.filter((c) => c.controlName !== controlName);
140
- this.cd.markForCheck();
160
+ this.calculateText();
141
161
  }
142
162
  else {
143
163
  throw `The control name: '${controlName}' not find!`;
@@ -152,13 +172,15 @@ export class NzxConfigurableQueryComponent {
152
172
  /**
153
173
  * 检索给定控件名称或路径的子控件。
154
174
  * 这个 getFormControl 签名支持字符串和 const 数组(.getFormControl(['foo', 'bar'] as const))
155
- * 注意调用时机,最好在afterViewInit中调用
156
175
  */
157
176
  getFormControl(path) {
158
177
  return this.queryForm.get(path);
159
178
  }
160
179
  /** 查询 */
161
- search() {
180
+ search(event) {
181
+ if (event) {
182
+ event.stopPropagation();
183
+ }
162
184
  if (this.queryForm.invalid) {
163
185
  updateControlStatus(this.queryForm);
164
186
  return;
@@ -176,39 +198,39 @@ export class NzxConfigurableQueryComponent {
176
198
  }
177
199
  /**展开、收起*/
178
200
  toggleCollapse() {
179
- this.controls.forEach((config) => {
180
- if (this.isCollapse && config.collapse === true) {
181
- // 展开
201
+ for (let index = 0; index < this.controls.length; index++) {
202
+ const config = this.controls[index];
203
+ if (config.hasOwnProperty('collapse') && config.collapse === true) {
182
204
  config.collapse = false;
183
- this.nzxBtnSpan = 24;
184
205
  }
185
- if (!this.isCollapse && config.collapse === false) {
206
+ else if (config.hasOwnProperty('collapse') &&
207
+ config.collapse === false) {
186
208
  config.collapse = true;
187
- this.nzxBtnSpan = this._nzxBtnSpan;
188
209
  }
189
- });
190
- this.isCollapse = !this.isCollapse;
210
+ }
211
+ this.calculateText();
191
212
  }
192
213
  ngOnDestroy() {
193
214
  this.destroy$.next();
194
215
  this.destroy$.complete();
195
216
  }
217
+ calculateText() {
218
+ if (this.controls.some((i) => i.collapse === true)) {
219
+ this.collapseIcon = 'down';
220
+ this.collapseText = this.locale.expand;
221
+ }
222
+ else {
223
+ this.collapseIcon = 'up';
224
+ this.collapseText = this.locale.collapse;
225
+ }
226
+ this.cd.markForCheck();
227
+ }
196
228
  /** 清空表单控件 */
197
229
  clearFormControl() {
198
230
  Object.keys(this.queryForm.controls).forEach((key) => {
199
231
  this.queryForm.removeControl(key);
200
232
  });
201
233
  }
202
- /** 折叠 */
203
- collapse() {
204
- this.isCollapse = true;
205
- this.controls.forEach((config) => {
206
- if (config.collapse === false) {
207
- config.collapse = true;
208
- this.nzxBtnSpan = this._nzxBtnSpan;
209
- }
210
- });
211
- }
212
234
  /** 生成表单 */
213
235
  generateForm(controlConfigs) {
214
236
  this.clearFormControl();
@@ -228,13 +250,14 @@ export class NzxConfigurableQueryComponent {
228
250
  // 缓存回显查询条件
229
251
  this.queryForm.patchValue(this.cacheParams);
230
252
  }
253
+ this.calculateText();
231
254
  }
232
255
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NzxConfigurableQueryComponent, deps: [{ token: i1.NzI18nService }, { token: i2.FormBuilder }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
233
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: NzxConfigurableQueryComponent, selector: "nzx-configurable-query", inputs: { controls: "controls", nzxJustify: "nzxJustify", nzxGutter: "nzxGutter", lineNumber: "lineNumber", nzxBtnSpan: "nzxBtnSpan", nzxCollapse: "nzxCollapse", initQuery: "initQuery", fixedParams: "fixedParams" }, outputs: { queryChange: "queryChange", resetChange: "resetChange" }, queries: [{ propertyName: "controlTemplateList", predicate: NzxControlDirective, descendants: true }], exportAs: ["NzxConfigurableQuery"], usesOnChanges: true, ngImport: i0, template: "<form class=\"nzx-query-container\" nz-form [formGroup]=\"queryForm\">\n <div nz-row [nzGutter]=\"nzxGutter\" [nzJustify]=\"nzxJustify\">\n <ng-container *ngFor=\"let config of controls\">\n <div\n *ngIf=\"!config.hidden\"\n nz-col\n [nzSpan]=\"config.nzxSpan || 24 / lineNumber\"\n [hidden]=\"nzxCollapse && config.collapse\"\n >\n <nzx-configurable-query-item\n *ngIf=\"config.controlName\"\n [form]=\"queryForm\"\n [control]=\"config\"\n ></nzx-configurable-query-item>\n </div>\n </ng-container>\n\n <div class=\"nzx-query-btn\" nz-col [nzSpan]=\"nzxBtnSpan || 24 / lineNumber\">\n <div nz-row nzJustify=\"end\" nzAlign=\"middle\">\n <button nz-button nzType=\"primary\" type=\"button\" (click)=\"search()\">\n {{ locale[\"query\"] }}\n </button>\n <button nz-button type=\"button\" (click)=\"reset()\">\n {{ locale[\"reset\"] }}\n </button>\n <ng-content></ng-content>\n <a\n *ngIf=\"nzxCollapse\"\n nz-button\n nzType=\"link\"\n (click)=\"toggleCollapse()\"\n >\n {{ collapseText }}\n <i nz-icon [nzType]=\"collapseIcon\"></i>\n </a>\n </div>\n </div>\n </div>\n</form>\n", styles: [".nzx-query-container{padding:12px;background-color:#fff;border-radius:8px}.nzx-query-container [nz-form-label]{overflow:visible}.nzx-query-container .nzx-query-btn{flex-grow:2;max-width:none}.nzx-query-container .nzx-query-btn button{margin:0 4px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { kind: "directive", type: i4.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "directive", type: i5.NzFormDirective, selector: "[nz-form]", inputs: ["nzLayout", "nzNoColon", "nzAutoTips", "nzDisableAutoTips", "nzTooltipIcon", "nzLabelAlign", "nzLabelWrap"], exportAs: ["nzForm"] }, { kind: "component", type: i6.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i7.ɵ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: i8.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "directive", type: i9.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i10.NzxConfigurableQueryItemComponent, selector: "nzx-configurable-query-item", inputs: ["form", "control"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
256
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: NzxConfigurableQueryComponent, selector: "nzx-configurable-query", inputs: { controls: "controls", nzxJustify: "nzxJustify", nzxGutter: "nzxGutter", lineNumber: "lineNumber", nzxBtnSpan: "nzxBtnSpan", initQuery: "initQuery", fixedParams: "fixedParams" }, outputs: { queryChange: "queryChange", resetChange: "resetChange" }, queries: [{ propertyName: "controlTemplateList", predicate: NzxControlDirective, descendants: true }], viewQueries: [{ propertyName: "queyFormEl", first: true, predicate: ["queyForm"], descendants: true }], exportAs: ["NzxConfigurableQuery"], usesOnChanges: true, ngImport: i0, template: "<form #queyForm class=\"nzx-query-container\" nz-form [formGroup]=\"queryForm\">\n\t<div nz-row [nzGutter]=\"nzxGutter\" [nzJustify]=\"nzxJustify\">\n\t\t<ng-container *ngFor=\"let config of controls; let i = index\">\n\t\t\t<div\n\t\t\t\t*ngIf=\"!config.hidden\"\n\t\t\t\tnz-col\n\t\t\t\t[nzSpan]=\"config.nzxSpan || 24 / lineNumber\"\n\t\t\t\t[hidden]=\"config.collapse\"\n\t\t\t\t[nzOrder]=\"i\"\n\t\t\t>\n\t\t\t\t<nzx-configurable-query-item\n\t\t\t\t\t*ngIf=\"config.controlName\"\n\t\t\t\t\t[form]=\"queryForm\"\n\t\t\t\t\t[control]=\"config\"\n\t\t\t\t></nzx-configurable-query-item>\n\t\t\t</div>\n\t\t</ng-container>\n\n\t\t<div\n\t\t\t[nzOrder]=\"controls.length\"\n\t\t\tclass=\"nzx-query-btn\"\n\t\t\tnz-col\n\t\t\t[nzSpan]=\"nzxBtnSpan || 24 / lineNumber\"\n\t\t>\n\t\t\t<div nz-row nzJustify=\"end\" nzAlign=\"middle\">\n\t\t\t\t<button\n\t\t\t\t\tnz-button\n\t\t\t\t\tnzType=\"primary\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\ttitle=\"Enter\"\n\t\t\t\t\t(click)=\"search($event)\"\n\t\t\t\t>\n\t\t\t\t\t{{ locale['query'] }}\n\t\t\t\t</button>\n\t\t\t\t<button nz-button type=\"button\" title=\"ctrl+r\" (click)=\"reset()\">\n\t\t\t\t\t{{ locale['reset'] }}\n\t\t\t\t</button>\n\t\t\t\t<ng-content></ng-content>\n\t\t\t\t<a\n\t\t\t\t\t*ngIf=\"nzxCollapse\"\n\t\t\t\t\tnz-button\n\t\t\t\t\tnzType=\"link\"\n\t\t\t\t\t(click)=\"toggleCollapse()\"\n\t\t\t\t>\n\t\t\t\t\t{{ collapseText }}\n\t\t\t\t\t<i nz-icon [nzType]=\"collapseIcon\"></i>\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</form>\n", styles: [".nzx-query-container{padding:12px;background-color:#fff;border-radius:8px}.nzx-query-container [nz-form-label]{overflow:visible}.nzx-query-container .nzx-query-btn{flex-grow:2;max-width:none}.nzx-query-container .nzx-query-btn button{margin:0 4px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { kind: "directive", type: i4.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "directive", type: i5.NzFormDirective, selector: "[nz-form]", inputs: ["nzLayout", "nzNoColon", "nzAutoTips", "nzDisableAutoTips", "nzTooltipIcon", "nzLabelAlign", "nzLabelWrap"], exportAs: ["nzForm"] }, { kind: "component", type: i6.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i7.ɵ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: i8.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "directive", type: i9.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i10.NzxConfigurableQueryItemComponent, selector: "nzx-configurable-query-item", inputs: ["form", "control"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
234
257
  }
235
258
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NzxConfigurableQueryComponent, decorators: [{
236
259
  type: Component,
237
- args: [{ selector: 'nzx-configurable-query', changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'NzxConfigurableQuery', template: "<form class=\"nzx-query-container\" nz-form [formGroup]=\"queryForm\">\n <div nz-row [nzGutter]=\"nzxGutter\" [nzJustify]=\"nzxJustify\">\n <ng-container *ngFor=\"let config of controls\">\n <div\n *ngIf=\"!config.hidden\"\n nz-col\n [nzSpan]=\"config.nzxSpan || 24 / lineNumber\"\n [hidden]=\"nzxCollapse && config.collapse\"\n >\n <nzx-configurable-query-item\n *ngIf=\"config.controlName\"\n [form]=\"queryForm\"\n [control]=\"config\"\n ></nzx-configurable-query-item>\n </div>\n </ng-container>\n\n <div class=\"nzx-query-btn\" nz-col [nzSpan]=\"nzxBtnSpan || 24 / lineNumber\">\n <div nz-row nzJustify=\"end\" nzAlign=\"middle\">\n <button nz-button nzType=\"primary\" type=\"button\" (click)=\"search()\">\n {{ locale[\"query\"] }}\n </button>\n <button nz-button type=\"button\" (click)=\"reset()\">\n {{ locale[\"reset\"] }}\n </button>\n <ng-content></ng-content>\n <a\n *ngIf=\"nzxCollapse\"\n nz-button\n nzType=\"link\"\n (click)=\"toggleCollapse()\"\n >\n {{ collapseText }}\n <i nz-icon [nzType]=\"collapseIcon\"></i>\n </a>\n </div>\n </div>\n </div>\n</form>\n", styles: [".nzx-query-container{padding:12px;background-color:#fff;border-radius:8px}.nzx-query-container [nz-form-label]{overflow:visible}.nzx-query-container .nzx-query-btn{flex-grow:2;max-width:none}.nzx-query-container .nzx-query-btn button{margin:0 4px}\n"] }]
260
+ args: [{ selector: 'nzx-configurable-query', changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'NzxConfigurableQuery', template: "<form #queyForm class=\"nzx-query-container\" nz-form [formGroup]=\"queryForm\">\n\t<div nz-row [nzGutter]=\"nzxGutter\" [nzJustify]=\"nzxJustify\">\n\t\t<ng-container *ngFor=\"let config of controls; let i = index\">\n\t\t\t<div\n\t\t\t\t*ngIf=\"!config.hidden\"\n\t\t\t\tnz-col\n\t\t\t\t[nzSpan]=\"config.nzxSpan || 24 / lineNumber\"\n\t\t\t\t[hidden]=\"config.collapse\"\n\t\t\t\t[nzOrder]=\"i\"\n\t\t\t>\n\t\t\t\t<nzx-configurable-query-item\n\t\t\t\t\t*ngIf=\"config.controlName\"\n\t\t\t\t\t[form]=\"queryForm\"\n\t\t\t\t\t[control]=\"config\"\n\t\t\t\t></nzx-configurable-query-item>\n\t\t\t</div>\n\t\t</ng-container>\n\n\t\t<div\n\t\t\t[nzOrder]=\"controls.length\"\n\t\t\tclass=\"nzx-query-btn\"\n\t\t\tnz-col\n\t\t\t[nzSpan]=\"nzxBtnSpan || 24 / lineNumber\"\n\t\t>\n\t\t\t<div nz-row nzJustify=\"end\" nzAlign=\"middle\">\n\t\t\t\t<button\n\t\t\t\t\tnz-button\n\t\t\t\t\tnzType=\"primary\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\ttitle=\"Enter\"\n\t\t\t\t\t(click)=\"search($event)\"\n\t\t\t\t>\n\t\t\t\t\t{{ locale['query'] }}\n\t\t\t\t</button>\n\t\t\t\t<button nz-button type=\"button\" title=\"ctrl+r\" (click)=\"reset()\">\n\t\t\t\t\t{{ locale['reset'] }}\n\t\t\t\t</button>\n\t\t\t\t<ng-content></ng-content>\n\t\t\t\t<a\n\t\t\t\t\t*ngIf=\"nzxCollapse\"\n\t\t\t\t\tnz-button\n\t\t\t\t\tnzType=\"link\"\n\t\t\t\t\t(click)=\"toggleCollapse()\"\n\t\t\t\t>\n\t\t\t\t\t{{ collapseText }}\n\t\t\t\t\t<i nz-icon [nzType]=\"collapseIcon\"></i>\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</form>\n", styles: [".nzx-query-container{padding:12px;background-color:#fff;border-radius:8px}.nzx-query-container [nz-form-label]{overflow:visible}.nzx-query-container .nzx-query-btn{flex-grow:2;max-width:none}.nzx-query-container .nzx-query-btn button{margin:0 4px}\n"] }]
238
261
  }], ctorParameters: () => [{ type: i1.NzI18nService }, { type: i2.FormBuilder }, { type: i0.ChangeDetectorRef }], propDecorators: { controls: [{
239
262
  type: Input
240
263
  }], nzxJustify: [{
@@ -245,8 +268,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
245
268
  type: Input
246
269
  }], nzxBtnSpan: [{
247
270
  type: Input
248
- }], nzxCollapse: [{
249
- type: Input
250
271
  }], initQuery: [{
251
272
  type: Input
252
273
  }], fixedParams: [{
@@ -255,8 +276,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
255
276
  type: Output
256
277
  }], resetChange: [{
257
278
  type: Output
279
+ }], queyFormEl: [{
280
+ type: ViewChild,
281
+ args: ['queyForm']
258
282
  }], controlTemplateList: [{
259
283
  type: ContentChildren,
260
284
  args: [NzxControlDirective, { descendants: true }]
261
285
  }] } });
262
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhYmxlLXF1ZXJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvY29uZmlndXJhYmxlLXF1ZXJ5L2NvbmZpZ3VyYWJsZS1xdWVyeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2NvbmZpZ3VyYWJsZS1xdWVyeS9jb25maWd1cmFibGUtcXVlcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxHQUlQLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBR25FLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7Ozs7QUFHMUQ7OztHQUdHO0FBU0gsTUFBTSxPQUFPLDZCQUE2QjtJQTZCeEMsWUFBWTtJQUNaLElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxXQUFXLENBQUMsS0FBVTtRQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDckUsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7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QUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLFdBQVc7WUFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDN0M7SUFDSCxDQUFDOzhHQTFRVSw2QkFBNkI7a0dBQTdCLDZCQUE2QiwrWEF3RHZCLG1CQUFtQix5R0MvRnRDLG15Q0F1Q0E7OzJGREFhLDZCQUE2QjtrQkFQekMsU0FBUzsrQkFDRSx3QkFBd0IsbUJBR2pCLHVCQUF1QixDQUFDLE1BQU0sWUFDckMsc0JBQXNCOzRJQU12QixRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0ksV0FBVztzQkFBcEIsTUFBTTtnQkFFRyxXQUFXO3NCQUFwQixNQUFNO2dCQWlDUCxtQkFBbUI7c0JBRGxCLGVBQWU7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlckNvbnRlbnRJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBRdWVyeUxpc3QsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IE56eFF1ZXJ5STE4bkludGVyZmFjZSB9IGZyb20gJ25nLXpvcnJvLWFudGQtZXh0ZW5zaW9uL2kxOG4nO1xyXG5pbXBvcnQgeyB1cGRhdGVDb250cm9sU3RhdHVzIH0gZnJvbSAnbmctem9ycm8tYW50ZC1leHRlbnNpb24vdXRpbCc7XHJcbmltcG9ydCB7IE56SnVzdGlmeSB9IGZyb20gJ25nLXpvcnJvLWFudGQvZ3JpZCc7XHJcbmltcG9ydCB7IE56STE4blNlcnZpY2UgfSBmcm9tICduZy16b3Jyby1hbnRkL2kxOG4nO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTnp4Q29udHJvbERpcmVjdGl2ZSB9IGZyb20gJy4vY29udHJvbC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBOenhRdWVyeUNvbnRyb2xPcHRpb25zLCBOenhRdWVyeVBhcmFtcyB9IGZyb20gJy4vdHlwZSc7XHJcblxyXG4vKipcclxuICog5p+l6K+i57uE5Lu2XHJcbiAqIOaUr+aMgeaooeadv+iHquWumuS5ie+8jOWcqOS9v+eUqOaooeadv+iHquWumuS5ieaXtu+8jOimgeazqOaEj2NvbnRyb2xUeXBl5bqU6K+l6K6+572u5Li6VGVtcGxhdGXlubbkuJTnoa7kv51jb250cm9sTmFtZeS4juaMh+S7pOS4iueahG56eENvbnRyb2zlupTor6Xnm7jlkIxcclxuICovXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ256eC1jb25maWd1cmFibGUtcXVlcnknLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb25maWd1cmFibGUtcXVlcnkuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvbmZpZ3VyYWJsZS1xdWVyeS5jb21wb25lbnQubGVzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGV4cG9ydEFzOiAnTnp4Q29uZmlndXJhYmxlUXVlcnknLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTnp4Q29uZmlndXJhYmxlUXVlcnlDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3lcclxue1xyXG4gIC8qKiDphY3nva7pobkgKi9cclxuICBASW5wdXQoKSBjb250cm9sczogQXJyYXk8Tnp4UXVlcnlDb250cm9sT3B0aW9ucz4gPSBbXTtcclxuICAvKiog5p+l6K+i6KGo5Y2V5o6S5YiX5pa55byPICovXHJcbiAgQElucHV0KCkgbnp4SnVzdGlmeTogTnpKdXN0aWZ5ID0gJ3N0YXJ0JztcclxuICAvKiog5p+l6K+i6aG56Ze06ZqUICovXHJcbiAgQElucHV0KCkgbnp4R3V0dGVyOiBudW1iZXIgPSA4O1xyXG4gIC8qKiDkuIDooYzlsZXnpLrlpJrlsJHmn6Xor6LpobkgKi9cclxuICBASW5wdXQoKSBsaW5lTnVtYmVyOiBudW1iZXIgPSAzO1xyXG4gIC8qKiDmk43kvZzmjInpkq7miYDljaDmoIXmoLzmlbDvvIwyNOWImeaNouihjCAqL1xyXG4gIEBJbnB1dCgpIG56eEJ0blNwYW46IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIC8qKuWQr+eUqOaKmOWPoCAqL1xyXG4gIEBJbnB1dCgpIG56eENvbGxhcHNlID0gdHJ1ZTtcclxuICAvKiog5Yid5aeL5YyW5pe277yM5Li75Yqo5p+l6K+iICovXHJcbiAgQElucHV0KCkgaW5pdFF1ZXJ5ID0gZmFsc2U7XHJcblxyXG4gIC8qKiDnvLrnnIEg5Zu65a6a5Y+C5pWwICovXHJcbiAgQElucHV0KCkgZml4ZWRQYXJhbXMgPSB7fTtcclxuXHJcbiAgLyoqIOafpeivouaXtuS8muinpuWPkeaKm+WHuuafpeivouWPguaVsCAqL1xyXG4gIEBPdXRwdXQoKSBxdWVyeUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Tnp4UXVlcnlQYXJhbXM+KCk7XHJcbiAgLyoqIOmHjee9ruaXtuS8muinpuWPkeaKm+WHuuafpeivouWPguaVsCAqL1xyXG4gIEBPdXRwdXQoKSByZXNldENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Tnp4UXVlcnlQYXJhbXM+KCk7XHJcblxyXG4gIC8qKiBmb3JtIOihqOWNlSovXHJcbiAgcXVlcnlGb3JtITogRm9ybUdyb3VwO1xyXG5cclxuICAvKiog5p+l6K+i57uE5Lu25Ye65Y+CKi9cclxuICBnZXQgcXVlcnlQYXJhbXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcXVlcnlQYXJhbXM7XHJcbiAgfVxyXG5cclxuICBzZXQgcXVlcnlQYXJhbXModmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5fcXVlcnlQYXJhbXMgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCBjb2xsYXBzZVRleHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0NvbGxhcHNlID8gdGhpcy5sb2NhbGUuZXhwYW5kIDogdGhpcy5sb2NhbGUuY29sbGFwc2U7XHJcbiAgfVxyXG5cclxuICBnZXQgY29sbGFwc2VJY29uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNDb2xsYXBzZSA/ICdkb3duJyA6ICd1cCc7XHJcbiAgfVxyXG5cclxuICBsb2NhbGUhOiBOenhRdWVyeUkxOG5JbnRlcmZhY2U7XHJcblxyXG4gIC8qKuaYr+WQpuWxleW8gOeKtuaAgSovXHJcbiAgcHJpdmF0ZSBpc0NvbGxhcHNlID0gdHJ1ZTtcclxuICBwcml2YXRlIF9xdWVyeVBhcmFtczogTnp4UXVlcnlQYXJhbXMgPSB7fTtcclxuICBwcml2YXRlIGRlZmF1bHRWYWx1ZTogTnp4UXVlcnlQYXJhbXMgPSB7fTtcclxuICBwcml2YXRlIGNhY2hlUGFyYW1zOiBOenhRdWVyeVBhcmFtcyA9IHt9O1xyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgX256eEJ0blNwYW46IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICBAQ29udGVudENoaWxkcmVuKE56eENvbnRyb2xEaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcclxuICBjb250cm9sVGVtcGxhdGVMaXN0ITogUXVlcnlMaXN0PE56eENvbnRyb2xEaXJlY3RpdmU+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaTE4bjogTnpJMThuU2VydmljZSxcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHtcclxuICAgIHRoaXMucXVlcnlGb3JtID0gdGhpcy5mYi5ncm91cCh7fSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snY29udHJvbHMnXSAmJiAhY2hhbmdlc1snY29udHJvbHMnXS5pc0ZpcnN0Q2hhbmdlKCkpIHtcclxuICAgICAgY29uc3QgY29udHJvbHMgPSBjaGFuZ2VzWydjb250cm9scyddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29udHJvbHMpKSB7XHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZUZvcm0oY29udHJvbHMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaTE4bi5sb2NhbGVDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9jYWxlID0gdGhpcy5pMThuLmdldExvY2FsZURhdGEoJ1F1ZXJ5Jyk7XHJcbiAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnF1ZXJ5Rm9ybS52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh2YWwpID0+IHtcclxuICAgICAgICB0aGlzLl9xdWVyeVBhcmFtcyA9IHtcclxuICAgICAgICAgIC4uLnZhbCxcclxuICAgICAgICAgIC4uLnRoaXMuZml4ZWRQYXJhbXMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5fbnp4QnRuU3BhbiA9IHRoaXMubnp4QnRuU3BhbjtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2VuZXJhdGVGb3JtKHRoaXMuY29udHJvbHMpO1xyXG5cclxuICAgIGlmICh0aGlzLmluaXRRdWVyeSkge1xyXG4gICAgICB0aGlzLnNlYXJjaCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIOiuvue9ruafpeivouWAvOi/m+ihjOWbnuaYviAqL1xyXG4gIHNldFF1ZXJ5UGFyYW1zKGNhY2hlUGFyYW1zOiBOenhRdWVyeVBhcmFtcyk6IHZvaWQge1xyXG4gICAgdGhpcy5jYWNoZVBhcmFtcyA9IGNhY2hlUGFyYW1zO1xyXG4gICAgdGhpcy5xdWVyeUZvcm0ucGF0Y2hWYWx1ZShjYWNoZVBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmoLnmja5jb250cm9sTmFtZeiuvue9rmNvbmZpZ+WAvFxyXG4gICAqL1xyXG4gIHNldENvbnRyb2woXHJcbiAgICBjb250cm9sTmFtZTogc3RyaW5nLFxyXG4gICAgY29uZmlnOiBQYXJ0aWFsPE56eFF1ZXJ5Q29udHJvbE9wdGlvbnM+XHJcbiAgKTogdm9pZCB7XHJcbiAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcclxuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbChjb250cm9sTmFtZSk7XHJcbiAgICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgICAgT2JqZWN0LmtleXMoY29uZmlnKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICAgIChjb250cm9sIGFzIGFueSlba2V5XSA9IChjb25maWcgYXMgYW55KVtrZXldO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWKqOaAgea3u+WKoOaOp+S7tlxyXG4gICAqL1xyXG4gIGFkZENvbnRyb2woY29uZmlnOiBOenhRdWVyeUNvbnRyb2xPcHRpb25zKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5nZXRDb250cm9sKGNvbmZpZy5jb250cm9sTmFtZSk7XHJcbiAgICBpZiAoIWNvbnRyb2wpIHtcclxuICAgICAgdGhpcy5jb2xsYXBzZSgpO1xyXG4gICAgICBpZiAoY29uZmlnLmNvbnRyb2xOYW1lKSB7XHJcbiAgICAgICAgdGhpcy5xdWVyeUZvcm0uYWRkQ29udHJvbChcclxuICAgICAgICAgIGNvbmZpZy5jb250cm9sTmFtZSxcclxuICAgICAgICAgIGNvbmZpZy5jb250cm9sSW5zdGFuY2UgPz8gdGhpcy5mYi5jb250cm9sKGNvbmZpZy5kZWZhdWx0ID8/IG51bGwpXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbnRyb2xzLnB1c2goY29uZmlnKTtcclxuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IGBUaGUgY29udHJvbCBuYW1lOiAnJHtjb25maWcuY29udHJvbE5hbWV9JyBhbHJlYWR5IGV4aXN0cyFgO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qC55o2u5o6n5Lu25ZCN5Yig6Zmk5o6n5Lu2XHJcbiAgICovXHJcbiAgcmVtb3ZlQ29udHJvbChjb250cm9sTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5nZXRDb250cm9sKGNvbnRyb2xOYW1lKTtcclxuICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgIHRoaXMuY29sbGFwc2UoKTtcclxuICAgICAgdGhpcy5xdWVyeUZvcm0ucmVtb3ZlQ29udHJvbChjb250cm9sTmFtZSk7XHJcbiAgICAgIHRoaXMuY29udHJvbHMgPSB0aGlzLmNvbnRyb2xzLmZpbHRlcihcclxuICAgICAgICAoYykgPT4gYy5jb250cm9sTmFtZSAhPT0gY29udHJvbE5hbWVcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aHJvdyBgVGhlIGNvbnRyb2wgbmFtZTogJyR7Y29udHJvbE5hbWV9JyBub3QgZmluZCFgO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qC55o2uY29udHJvbE5hbWXojrflj5Zjb25maWfpoblcclxuICAgKi9cclxuICBnZXRDb250cm9sKFxyXG4gICAgY29udHJvbE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZFxyXG4gICk6IE56eFF1ZXJ5Q29udHJvbE9wdGlvbnMgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbHMuZmluZCgoY29uZmlnKSA9PiBjb25maWcuY29udHJvbE5hbWUgPT09IGNvbnRyb2xOYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOajgOe0oue7meWumuaOp+S7tuWQjeensOaIlui3r+W+hOeahOWtkOaOp+S7tuOAglxyXG4gICAqIOi/meS4qiBnZXRGb3JtQ29udHJvbCDnrb7lkI3mlK/mjIHlrZfnrKbkuLLlkowgY29uc3Qg5pWw57uE77yILmdldEZvcm1Db250cm9sKFsnZm9vJywgJ2JhciddIGFzIGNvbnN0Ke+8iVxyXG4gICAqIOazqOaEj+iwg+eUqOaXtuacuu+8jOacgOWlveWcqGFmdGVyVmlld0luaXTkuK3osIPnlKhcclxuICAgKi9cclxuICBnZXRGb3JtQ29udHJvbChcclxuICAgIHBhdGg6IHN0cmluZyB8IHJlYWRvbmx5IChzdHJpbmcgfCBudW1iZXIpW11cclxuICApOiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+IHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5xdWVyeUZvcm0uZ2V0KHBhdGgpO1xyXG4gIH1cclxuXHJcbiAgLyoqIOafpeivoiAqL1xyXG4gIHNlYXJjaCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnF1ZXJ5Rm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIHVwZGF0ZUNvbnRyb2xTdGF0dXModGhpcy5xdWVyeUZvcm0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnF1ZXJ5Q2hhbmdlLmVtaXQodGhpcy5fcXVlcnlQYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqIOmHjee9riAqL1xyXG4gIHJlc2V0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucXVlcnlGb3JtLmludmFsaWQpIHtcclxuICAgICAgdXBkYXRlQ29udHJvbFN0YXR1cyh0aGlzLnF1ZXJ5Rm9ybSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMucXVlcnlGb3JtLnJlc2V0KHRoaXMuZGVmYXVsdFZhbHVlKTtcclxuICAgIHRoaXMucmVzZXRDaGFuZ2UuZW1pdCh0aGlzLl9xdWVyeVBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICAvKirlsZXlvIDjgIHmlLbotbcqL1xyXG4gIHRvZ2dsZUNvbGxhcHNlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb250cm9scy5mb3JFYWNoKChjb25maWcpID0+IHtcclxuICAgICAgaWYgKHRoaXMuaXNDb2xsYXBzZSAmJiBjb25maWcuY29sbGFwc2UgPT09IHRydWUpIHtcclxuICAgICAgICAvLyDlsZXlvIBcclxuICAgICAgICBjb25maWcuY29sbGFwc2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm56eEJ0blNwYW4gPSAyNDtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuaXNDb2xsYXBzZSAmJiBjb25maWcuY29sbGFwc2UgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgY29uZmlnLmNvbGxhcHNlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm56eEJ0blNwYW4gPSB0aGlzLl9uenhCdG5TcGFuO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuaXNDb2xsYXBzZSA9ICF0aGlzLmlzQ29sbGFwc2U7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqIOa4heepuuihqOWNleaOp+S7tiAqL1xyXG4gIHByaXZhdGUgY2xlYXJGb3JtQ29udHJvbCgpOiB2b2lkIHtcclxuICAgIE9iamVjdC5rZXlzKHRoaXMucXVlcnlGb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgdGhpcy5xdWVyeUZvcm0ucmVtb3ZlQ29udHJvbChrZXkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKiog5oqY5Y+gICovXHJcbiAgcHJpdmF0ZSBjb2xsYXBzZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNDb2xsYXBzZSA9IHRydWU7XHJcbiAgICB0aGlzLmNvbnRyb2xzLmZvckVhY2goKGNvbmZpZykgPT4ge1xyXG4gICAgICBpZiAoY29uZmlnLmNvbGxhcHNlID09PSBmYWxzZSkge1xyXG4gICAgICAgIGNvbmZpZy5jb2xsYXBzZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5uenhCdG5TcGFuID0gdGhpcy5fbnp4QnRuU3BhbjtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKiog55Sf5oiQ6KGo5Y2VICovXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZUZvcm0oY29udHJvbENvbmZpZ3M6IEFycmF5PE56eFF1ZXJ5Q29udHJvbE9wdGlvbnM+KTogdm9pZCB7XHJcbiAgICB0aGlzLmNsZWFyRm9ybUNvbnRyb2woKTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGNvbmZpZyBvZiBjb250cm9sQ29uZmlncykge1xyXG4gICAgICBpZiAoY29uZmlnLmNvbnRyb2xUeXBlID09PSAnVGVtcGxhdGUnKSB7XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuY29udHJvbFRlbXBsYXRlTGlzdC5maW5kKFxyXG4gICAgICAgICAgKGRpcmVjdGl2ZSkgPT4gZGlyZWN0aXZlLm56eENvbnRyb2wgPT09IGNvbmZpZy5jb250cm9sTmFtZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICAgIGNvbmZpZy50ZW1wbGF0ZVJlZiA9IGl0ZW0udGVtcGxhdGVSZWY7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChjb25maWcuY29udHJvbE5hbWUpIHtcclxuICAgICAgICB0aGlzLnF1ZXJ5Rm9ybS5hZGRDb250cm9sKFxyXG4gICAgICAgICAgY29uZmlnLmNvbnRyb2xOYW1lLFxyXG4gICAgICAgICAgY29uZmlnLmNvbnRyb2xJbnN0YW5jZSA/PyB0aGlzLmZiLmNvbnRyb2woY29uZmlnLmRlZmF1bHQgPz8gbnVsbClcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IHRoaXMucXVlcnlGb3JtLmdldFJhd1ZhbHVlKCk7XHJcbiAgICBpZiAodGhpcy5jYWNoZVBhcmFtcykge1xyXG4gICAgICAvLyDnvJPlrZjlm57mmL7mn6Xor6LmnaHku7ZcclxuICAgICAgdGhpcy5xdWVyeUZvcm0ucGF0Y2hWYWx1ZSh0aGlzLmNhY2hlUGFyYW1zKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGZvcm0gY2xhc3M9XCJuengtcXVlcnktY29udGFpbmVyXCIgbnotZm9ybSBbZm9ybUdyb3VwXT1cInF1ZXJ5Rm9ybVwiPlxuICA8ZGl2IG56LXJvdyBbbnpHdXR0ZXJdPVwibnp4R3V0dGVyXCIgW256SnVzdGlmeV09XCJuenhKdXN0aWZ5XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29uZmlnIG9mIGNvbnRyb2xzXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiIWNvbmZpZy5oaWRkZW5cIlxuICAgICAgICBuei1jb2xcbiAgICAgICAgW256U3Bhbl09XCJjb25maWcubnp4U3BhbiB8fCAyNCAvIGxpbmVOdW1iZXJcIlxuICAgICAgICBbaGlkZGVuXT1cIm56eENvbGxhcHNlICYmIGNvbmZpZy5jb2xsYXBzZVwiXG4gICAgICA+XG4gICAgICAgIDxuengtY29uZmlndXJhYmxlLXF1ZXJ5LWl0ZW1cbiAgICAgICAgICAqbmdJZj1cImNvbmZpZy5jb250cm9sTmFtZVwiXG4gICAgICAgICAgW2Zvcm1dPVwicXVlcnlGb3JtXCJcbiAgICAgICAgICBbY29udHJvbF09XCJjb25maWdcIlxuICAgICAgICA+PC9uengtY29uZmlndXJhYmxlLXF1ZXJ5LWl0ZW0+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxkaXYgY2xhc3M9XCJuengtcXVlcnktYnRuXCIgbnotY29sIFtuelNwYW5dPVwibnp4QnRuU3BhbiB8fCAyNCAvIGxpbmVOdW1iZXJcIj5cbiAgICAgIDxkaXYgbnotcm93IG56SnVzdGlmeT1cImVuZFwiIG56QWxpZ249XCJtaWRkbGVcIj5cbiAgICAgICAgPGJ1dHRvbiBuei1idXR0b24gbnpUeXBlPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2VhcmNoKClcIj5cbiAgICAgICAgICB7eyBsb2NhbGVbXCJxdWVyeVwiXSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBuei1idXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXNldCgpXCI+XG4gICAgICAgICAge3sgbG9jYWxlW1wicmVzZXRcIl0gfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPGFcbiAgICAgICAgICAqbmdJZj1cIm56eENvbGxhcHNlXCJcbiAgICAgICAgICBuei1idXR0b25cbiAgICAgICAgICBuelR5cGU9XCJsaW5rXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ29sbGFwc2UoKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBjb2xsYXBzZVRleHQgfX1cbiAgICAgICAgICA8aSBuei1pY29uIFtuelR5cGVdPVwiY29sbGFwc2VJY29uXCI+PC9pPlxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhYmxlLXF1ZXJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvY29uZmlndXJhYmxlLXF1ZXJ5L2NvbmZpZ3VyYWJsZS1xdWVyeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2NvbmZpZ3VyYWJsZS1xdWVyeS9jb25maWd1cmFibGUtcXVlcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdOLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUdOLFNBQVMsR0FFVCxNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUduRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7OztBQUcxRDs7O0dBR0c7QUFTSCxNQUFNLE9BQU8sNkJBQTZCO0lBNkJ6QyxZQUFZO0lBQ1osSUFBSSxXQUFXO1FBQ2QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLFdBQVcsQ0FBQyxLQUFVO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQWlCRCxZQUNTLElBQW1CLEVBQ25CLEVBQWUsRUFDZixFQUFxQjtRQUZyQixTQUFJLEdBQUosSUFBSSxDQUFlO1FBQ25C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QztJQUN0QixDQUFDOzhHQXpTVyw2QkFBNkI7a0dBQTdCLDZCQUE2QixtV0FzRHhCLG1CQUFtQixpTkNoR3JDLDArQ0FtREE7OzJGRFRhLDZCQUE2QjtrQkFQekMsU0FBUzsrQkFDQyx3QkFBd0IsbUJBR2pCLHVCQUF1QixDQUFDLE1BQU0sWUFDckMsc0JBQXNCOzRJQU12QixRQUFRO3NCQUFoQixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdJLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUcsV0FBVztzQkFBcEIsTUFBTTtnQkE0QndCLFVBQVU7c0JBQXhDLFNBQVM7dUJBQUMsVUFBVTtnQkFHckIsbUJBQW1CO3NCQURsQixlQUFlO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcblx0QWZ0ZXJDb250ZW50SW5pdCxcclxuXHRBZnRlclZpZXdJbml0LFxyXG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG5cdENoYW5nZURldGVjdG9yUmVmLFxyXG5cdENvbXBvbmVudCxcclxuXHRDb250ZW50Q2hpbGRyZW4sXHJcblx0RWxlbWVudFJlZixcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0SW5wdXQsXHJcblx0T25DaGFuZ2VzLFxyXG5cdE9uRGVzdHJveSxcclxuXHRPbkluaXQsXHJcblx0T3V0cHV0LFxyXG5cdFF1ZXJ5TGlzdCxcclxuXHRTaW1wbGVDaGFuZ2VzLFxyXG5cdFZpZXdDaGlsZCxcclxuXHRWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IE56eFF1ZXJ5STE4bkludGVyZmFjZSB9IGZyb20gJ25nLXpvcnJvLWFudGQtZXh0ZW5zaW9uL2kxOG4nO1xyXG5pbXBvcnQgeyB1cGRhdGVDb250cm9sU3RhdHVzIH0gZnJvbSAnbmctem9ycm8tYW50ZC1leHRlbnNpb24vdXRpbCc7XHJcbmltcG9ydCB7IE56SnVzdGlmeSB9IGZyb20gJ25nLXpvcnJvLWFudGQvZ3JpZCc7XHJcbmltcG9ydCB7IE56STE4blNlcnZpY2UgfSBmcm9tICduZy16b3Jyby1hbnRkL2kxOG4nO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBOenhDb250cm9sRGlyZWN0aXZlIH0gZnJvbSAnLi9jb250cm9sLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE56eFF1ZXJ5Q29udHJvbE9wdGlvbnMsIE56eFF1ZXJ5UGFyYW1zIH0gZnJvbSAnLi90eXBlJztcclxuXHJcbi8qKlxyXG4gKiDmn6Xor6Lnu4Tku7ZcclxuICog5pSv5oyB5qih5p2/6Ieq5a6a5LmJ77yM5Zyo5L2/55So5qih5p2/6Ieq5a6a5LmJ5pe277yM6KaB5rOo5oSPY29udHJvbFR5cGXlupTor6Xorr7nva7kuLpUZW1wbGF0ZeW5tuS4lOehruS/nWNvbnRyb2xOYW1l5LiO5oyH5Luk5LiK55qEbnp4Q29udHJvbOW6lOivpeebuOWQjFxyXG4gKi9cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnbnp4LWNvbmZpZ3VyYWJsZS1xdWVyeScsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2NvbmZpZ3VyYWJsZS1xdWVyeS5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vY29uZmlndXJhYmxlLXF1ZXJ5LmNvbXBvbmVudC5sZXNzJ10sXHJcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcblx0ZXhwb3J0QXM6ICdOenhDb25maWd1cmFibGVRdWVyeScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOenhDb25maWd1cmFibGVRdWVyeUNvbXBvbmVudFxyXG5cdGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveVxyXG57XHJcblx0LyoqIOmFjee9rumhuSAqL1xyXG5cdEBJbnB1dCgpIGNvbnRyb2xzOiBBcnJheTxOenhRdWVyeUNvbnRyb2xPcHRpb25zPiA9IFtdO1xyXG5cclxuXHQvKiog5p+l6K+i6KGo5Y2V5o6S5YiX5pa55byPICovXHJcblx0QElucHV0KCkgbnp4SnVzdGlmeTogTnpKdXN0aWZ5ID0gJ3N0YXJ0JztcclxuXHQvKiog5p+l6K+i6aG56Ze06ZqUICovXHJcblx0QElucHV0KCkgbnp4R3V0dGVyOiBudW1iZXIgPSA4O1xyXG5cdC8qKiDkuIDooYzlsZXnpLrlpJrlsJHmn6Xor6LpobkgKi9cclxuXHRASW5wdXQoKSBsaW5lTnVtYmVyOiBudW1iZXIgPSAzO1xyXG5cdC8qKiDmk43kvZzmjInpkq7miYDljaDmoIXmoLzmlbDvvIwyNOWImeaNouihjCAqL1xyXG5cdEBJbnB1dCgpIG56eEJ0blNwYW46IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuXHQvKiog5Yid5aeL5YyW5pe277yM5Li75Yqo5p+l6K+iICovXHJcblx0QElucHV0KCkgaW5pdFF1ZXJ5ID0gZmFsc2U7XHJcblxyXG5cdC8qKiDnvLrnnIEg5Zu65a6a5Y+C5pWwICovXHJcblx0QElucHV0KCkgZml4ZWRQYXJhbXMgPSB7fTtcclxuXHJcblx0LyoqIOafpeivouaXtuS8muinpuWPkeaKm+WHuuafpeivouWPguaVsCAqL1xyXG5cdEBPdXRwdXQoKSBxdWVyeUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Tnp4UXVlcnlQYXJhbXM+KCk7XHJcblx0LyoqIOmHjee9ruaXtuS8muinpuWPkeaKm+WHuuafpeivouWPguaVsCAqL1xyXG5cdEBPdXRwdXQoKSByZXNldENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Tnp4UXVlcnlQYXJhbXM+KCk7XHJcblxyXG5cdC8qKiBmb3JtIOihqOWNlSovXHJcblx0cXVlcnlGb3JtITogRm9ybUdyb3VwO1xyXG5cclxuXHQvKiog5p+l6K+i57uE5Lu25Ye65Y+CKi9cclxuXHRnZXQgcXVlcnlQYXJhbXMoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcXVlcnlQYXJhbXM7XHJcblx0fVxyXG5cclxuXHRzZXQgcXVlcnlQYXJhbXModmFsdWU6IGFueSkge1xyXG5cdFx0dGhpcy5fcXVlcnlQYXJhbXMgPSB2YWx1ZTtcclxuXHR9XHJcblxyXG5cdGdldCBuenhDb2xsYXBzZSgpIHtcclxuXHRcdHJldHVybiB0aGlzLmNvbnRyb2xzLnNvbWUoKGkpID0+IGkuaGFzT3duUHJvcGVydHkoJ2NvbGxhcHNlJykpO1xyXG5cdH1cclxuXHJcblx0bG9jYWxlITogTnp4UXVlcnlJMThuSW50ZXJmYWNlO1xyXG5cdGNvbGxhcHNlSWNvbjogc3RyaW5nID0gJ2Rvd24nO1xyXG5cdGNvbGxhcHNlVGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG5cdHByaXZhdGUgX3F1ZXJ5UGFyYW1zOiBOenhRdWVyeVBhcmFtcyA9IHt9O1xyXG5cdHByaXZhdGUgZGVmYXVsdFZhbHVlOiBOenhRdWVyeVBhcmFtcyA9IHt9O1xyXG5cdHByaXZhdGUgY2FjaGVQYXJhbXM6IE56eFF1ZXJ5UGFyYW1zID0ge307XHJcblx0cHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblx0cHJpdmF0ZSBfbnp4QnRuU3BhbjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cdEBWaWV3Q2hpbGQoJ3F1ZXlGb3JtJykgcHJpdmF0ZSBxdWV5Rm9ybUVsITogRWxlbWVudFJlZjxIVE1MRm9ybUVsZW1lbnQ+O1xyXG5cclxuXHRAQ29udGVudENoaWxkcmVuKE56eENvbnRyb2xEaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcclxuXHRjb250cm9sVGVtcGxhdGVMaXN0ITogUXVlcnlMaXN0PE56eENvbnRyb2xEaXJlY3RpdmU+O1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgaTE4bjogTnpJMThuU2VydmljZSxcclxuXHRcdHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG5cdFx0cHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuXHQpIHtcclxuXHRcdHRoaXMucXVlcnlGb3JtID0gdGhpcy5mYi5ncm91cCh7fSk7XHJcblx0fVxyXG5cclxuXHRuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5xdWV5Rm9ybUVsKSB7XHJcblx0XHRcdGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pih0aGlzLnF1ZXlGb3JtRWwubmF0aXZlRWxlbWVudCwgJ2tleWRvd24nKVxyXG5cdFx0XHRcdC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuXHRcdFx0XHQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xyXG5cdFx0XHRcdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHRcdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5zZWFyY2goKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdC8vIOajgOafpeaYr+WQpuWQjOaXtuaMieS4i+S6hkN0cmzplK7vvIjlnKhXaW5kb3dzL0xpbnV45LiK77yJ5ZKMU+mUrlxyXG5cdFx0XHRcdFx0aWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LmtleSA9PT0gJ3InKSB7XHJcblx0XHRcdFx0XHRcdC8vIOazqOaEj++8mmV2ZW50Lm1ldGFLZXnnlKjkuo7lhbzlrrlNYWPnmoRDb21tYW5k6ZSuXHJcblx0XHRcdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIOmYu+atoua1j+iniOWZqOm7mOiupOeahOS/neWtmOihjOS4ulxyXG5cdFx0XHRcdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5yZXNldCgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0bmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG5cdFx0aWYgKGNoYW5nZXNbJ2NvbnRyb2xzJ10gJiYgIWNoYW5nZXNbJ2NvbnRyb2xzJ10uaXNGaXJzdENoYW5nZSgpKSB7XHJcblx0XHRcdGNvbnN0IGNvbnRyb2xzID0gY2hhbmdlc1snY29udHJvbHMnXS5jdXJyZW50VmFsdWU7XHJcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KGNvbnRyb2xzKSkge1xyXG5cdFx0XHRcdHRoaXMuZ2VuZXJhdGVGb3JtKGNvbnRyb2xzKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmkxOG4ubG9jYWxlQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG5cdFx0XHR0aGlzLmxvY2FsZSA9IHRoaXMuaTE4bi5nZXRMb2NhbGVEYXRhKCdRdWVyeScpO1xyXG5cclxuXHRcdFx0dGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdHRoaXMucXVlcnlGb3JtLnZhbHVlQ2hhbmdlc1xyXG5cdFx0XHQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcblx0XHRcdC5zdWJzY3JpYmUoKHZhbCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuX3F1ZXJ5UGFyYW1zID0ge1xyXG5cdFx0XHRcdFx0Li4udmFsLFxyXG5cdFx0XHRcdFx0Li4udGhpcy5maXhlZFBhcmFtcyxcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHR9KTtcclxuXHJcblx0XHR0aGlzLl9uenhCdG5TcGFuID0gdGhpcy5uenhCdG5TcGFuO1xyXG5cdH1cclxuXHJcblx0bmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5nZW5lcmF0ZUZvcm0odGhpcy5jb250cm9scyk7XHJcblxyXG5cdFx0aWYgKHRoaXMuaW5pdFF1ZXJ5KSB7XHJcblx0XHRcdHRoaXMuc2VhcmNoKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiog6K6+572u5p+l6K+i5YC86L+b6KGM5Zue5pi+ICovXHJcblx0c2V0UXVlcnlQYXJhbXMoY2FjaGVQYXJhbXM6IE56eFF1ZXJ5UGFyYW1zKTogdm9pZCB7XHJcblx0XHR0aGlzLmNhY2hlUGFyYW1zID0gY2FjaGVQYXJhbXM7XHJcblx0XHR0aGlzLnF1ZXJ5Rm9ybS5wYXRjaFZhbHVlKGNhY2hlUGFyYW1zKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIOagueaNrmNvbnRyb2xOYW1l6K6+572uY29uZmln5YC8XHJcblx0ICovXHJcblx0c2V0Q29udHJvbChcclxuXHRcdGNvbnRyb2xOYW1lOiBzdHJpbmcsXHJcblx0XHRjb25maWc6IFBhcnRpYWw8Tnp4UXVlcnlDb250cm9sT3B0aW9ucz5cclxuXHQpOiB2b2lkIHtcclxuXHRcdFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xyXG5cdFx0XHRjb25zdCBjb250cm9sID0gdGhpcy5nZXRDb250cm9sKGNvbnRyb2xOYW1lKTtcclxuXHRcdFx0aWYgKGNvbnRyb2wpIHtcclxuXHRcdFx0XHRPYmplY3Qua2V5cyhjb25maWcpLmZvckVhY2goKGtleSkgPT4ge1xyXG5cdFx0XHRcdFx0KGNvbnRyb2wgYXMgYW55KVtrZXldID0gKGNvbmZpZyBhcyBhbnkpW2tleV07XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICog5Yqo5oCB5re75Yqg5o6n5Lu2XHJcblx0ICogQHBhcmFtIGNvbmZpZyDphY3nva7poblcclxuXHQgKiBAcGFyYW0gcG9zaXRpb24g5re75Yqg5L2N572uIOS4jeS8oOS4uuacq+WwvlxyXG5cdCAqL1xyXG5cdGFkZENvbnRyb2woXHJcblx0XHRjb25maWc6IE56eFF1ZXJ5Q29udHJvbE9wdGlvbnMsXHJcblx0XHRwb3NpdGlvbj86IG51bWJlciB8IHVuZGVmaW5lZFxyXG5cdCk6IHZvaWQge1xyXG5cdFx0Y29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbChjb25maWcuY29udHJvbE5hbWUpO1xyXG5cdFx0aWYgKCFjb250cm9sKSB7XHJcblx0XHRcdGlmIChjb25maWcuY29udHJvbE5hbWUpIHtcclxuXHRcdFx0XHR0aGlzLnF1ZXJ5Rm9ybS5hZGRDb250cm9sKFxyXG5cdFx0XHRcdFx0Y29uZmlnLmNvbnRyb2xOYW1lLFxyXG5cdFx0XHRcdFx0Y29uZmlnLmNvbnRyb2xJbnN0YW5jZSA/PyB0aGlzLmZiLmNvbnRyb2woY29uZmlnLmRlZmF1bHQgPz8gbnVsbClcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChwb3NpdGlvbiA9PT0gdm9pZCAwIHx8IHBvc2l0aW9uID09PSBudWxsKSB7XHJcblx0XHRcdFx0dGhpcy5jb250cm9scy5wdXNoKGNvbmZpZyk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5jb250cm9scy5zcGxpY2UocG9zaXRpb24gLSAxLCAwLCBjb25maWcpO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMuY2FsY3VsYXRlVGV4dCgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhyb3cgYFRoZSBjb250cm9sIG5hbWU6ICcke2NvbmZpZy5jb250cm9sTmFtZX0nIGFscmVhZHkgZXhpc3RzIWA7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiDmoLnmja7mjqfku7blkI3liKDpmaTmjqfku7ZcclxuXHQgKi9cclxuXHRyZW1vdmVDb250cm9sKGNvbnRyb2xOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldENvbnRyb2woY29udHJvbE5hbWUpO1xyXG5cdFx0aWYgKGNvbnRyb2wpIHtcclxuXHRcdFx0dGhpcy5xdWVyeUZvcm0ucmVtb3ZlQ29udHJvbChjb250cm9sTmFtZSk7XHJcblx0XHRcdHRoaXMuY29udHJvbHMgPSB0aGlzLmNvbnRyb2xzLmZpbHRlcihcclxuXHRcdFx0XHQoYykgPT4gYy5jb250cm9sTmFtZSAhPT0gY29udHJvbE5hbWVcclxuXHRcdFx0KTtcclxuXHJcblx0XHRcdHRoaXMuY2FsY3VsYXRlVGV4dCgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhyb3cgYFRoZSBjb250cm9sIG5hbWU6ICcke2NvbnRyb2xOYW1lfScgbm90IGZpbmQhYDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIOagueaNrmNvbnRyb2xOYW1l6I635Y+WY29uZmln6aG5XHJcblx0ICovXHJcblx0Z2V0Q29udHJvbChcclxuXHRcdGNvbnRyb2xOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWRcclxuXHQpOiBOenhRdWVyeUNvbnRyb2xPcHRpb25zIHwgdW5kZWZpbmVkIHtcclxuXHRcdHJldHVybiB0aGlzLmNvbnRyb2xzLmZpbmQoKGNvbmZpZykgPT4gY29uZmlnLmNvbnRyb2xOYW1lID09PSBjb250cm9sTmFtZSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiDmo4DntKLnu5nlrprmjqfku7blkI3np7DmiJbot6/lvoTnmoTlrZDmjqfku7bjgIJcclxuXHQgKiDov5nkuKogZ2V0Rm9ybUNvbnRyb2wg562+5ZCN5pSv5oyB5a2X56ym5Liy5ZKMIGNvbnN0IOaVsOe7hO+8iC5nZXRGb3JtQ29udHJvbChbJ2ZvbycsICdiYXInXSBhcyBjb25zdCnvvIlcclxuXHQgKi9cclxuXHRnZXRGb3JtQ29udHJvbChcclxuXHRcdHBhdGg6IHN0cmluZyB8IHJlYWRvbmx5IChzdHJpbmcgfCBudW1iZXIpW11cclxuXHQpOiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+IHwgbnVsbCB7XHJcblx0XHRyZXR1cm4gdGhpcy5xdWVyeUZvcm0uZ2V0KHBhdGgpO1xyXG5cdH1cclxuXHJcblx0LyoqIOafpeivoiAqL1xyXG5cdHNlYXJjaChldmVudD86IEV2ZW50KTogdm9pZCB7XHJcblx0XHRpZiAoZXZlbnQpIHtcclxuXHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblx0XHR9XHJcblx0XHRpZiAodGhpcy5xdWVyeUZvcm0uaW52YWxpZCkge1xyXG5cdFx0XHR1cGRhdGVDb250cm9sU3RhdHVzKHRoaXMucXVlcnlGb3JtKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5xdWVyeUNoYW5nZS5lbWl0KHRoaXMuX3F1ZXJ5UGFyYW1zKTtcclxuXHR9XHJcblxyXG5cdC8qKiDph43nva4gKi9cclxuXHRyZXNldCgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLnF1ZXJ5Rm9ybS5pbnZhbGlkKSB7XHJcblx0XHRcdHVwZGF0ZUNvbnRyb2xTdGF0dXModGhpcy5xdWVyeUZvcm0pO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLnF1ZXJ5Rm9ybS5yZXNldCh0aGlzLmRlZmF1bHRWYWx1ZSk7XHJcblx0XHR0aGlzLnJlc2V0Q2hhbmdlLmVtaXQodGhpcy5fcXVlcnlQYXJhbXMpO1xyXG5cdH1cclxuXHJcblx0Lyoq5bGV5byA44CB5pS26LW3Ki9cclxuXHR0b2dnbGVDb2xsYXBzZSgpOiB2b2lkIHtcclxuXHRcdGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmNvbnRyb2xzLmxlbmd0aDsgaW5kZXgrKykge1xyXG5cdFx0XHRjb25zdCBjb25maWcgPSB0aGlzLmNvbnRyb2xzW2luZGV4XTtcclxuXHRcdFx0aWYgKGNvbmZpZy5oYXNPd25Qcm9wZXJ0eSgnY29sbGFwc2UnKSAmJiBjb25maWcuY29sbGFwc2UgPT09IHRydWUpIHtcclxuXHRcdFx0XHQoY29uZmlnLmNvbGxhcHNlIGFzIGJvb2xlYW4pID0gZmFsc2U7XHJcblx0XHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdFx0Y29uZmlnLmhhc093blByb3BlcnR5KCdjb2xsYXBzZScpICYmXHJcblx0XHRcdFx0KGNvbmZpZy5jb2xsYXBzZSBhcyBib29sZWFuKSA9PT0gZmFsc2VcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0Y29uZmlnLmNvbGxhcHNlID0gdHJ1ZTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0dGhpcy5jYWxjdWxhdGVUZXh0KCk7XHJcblx0fVxyXG5cclxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG5cdFx0dGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBjYWxjdWxhdGVUZXh0KCkge1xyXG5cdFx0aWYgKHRoaXMuY29udHJvbHMuc29tZSgoaSkgPT4gaS5jb2xsYXBzZSA9PT0gdHJ1ZSkpIHtcclxuXHRcdFx0dGhpcy5jb2xsYXBzZUljb24gPSAnZG93bic7XHJcblx0XHRcdHRoaXMuY29sbGFwc2VUZXh0ID0gdGhpcy5sb2NhbGUuZXhwYW5kO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5jb2xsYXBzZUljb24gPSAndXAnO1xyXG5cdFx0XHR0aGlzLmNvbGxhcHNlVGV4dCA9IHRoaXMubG9jYWxlLmNvbGxhcHNlO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuXHR9XHJcblxyXG5cdC8qKiDmuIXnqbrooajljZXmjqfku7YgKi9cclxuXHRwcml2YXRlIGNsZWFyRm9ybUNvbnRyb2woKTogdm9pZCB7XHJcblx0XHRPYmplY3Qua2V5cyh0aGlzLnF1ZXJ5Rm9ybS5jb250cm9scykuZm9yRWFjaCgoa2V5KSA9PiB7XHJcblx0XHRcdHRoaXMucXVlcnlGb3JtLnJlbW92ZUNvbnRyb2woa2V5KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqIOeUn+aIkOihqOWNlSAqL1xyXG5cdHByaXZhdGUgZ2VuZXJhdGVGb3JtKGNvbnRyb2xDb25maWdzOiBBcnJheTxOenhRdWVyeUNvbnRyb2xPcHRpb25zPik6IHZvaWQge1xyXG5cdFx0dGhpcy5jbGVhckZvcm1Db250cm9sKCk7XHJcblxyXG5cdFx0Zm9yIChjb25zdCBjb25maWcgb2YgY29udHJvbENvbmZpZ3MpIHtcclxuXHRcdFx0aWYgKGNvbmZpZy5jb250cm9sVHlwZSA9PT0gJ1RlbXBsYXRlJykge1xyXG5cdFx0XHRcdGNvbnN0IGl0ZW0gPSB0aGlzLmNvbnRyb2xUZW1wbGF0ZUxpc3QuZmluZChcclxuXHRcdFx0XHRcdChkaXJlY3RpdmUpID0+IGRpcmVjdGl2ZS5uenhDb250cm9sID09PSBjb25maWcuY29udHJvbE5hbWVcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHRcdGlmIChpdGVtKSB7XHJcblx0XHRcdFx0XHRjb25maWcudGVtcGxhdGVSZWYgPSBpdGVtLnRlbXBsYXRlUmVmO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoY29uZmlnLmNvbnRyb2xOYW1lKSB7XHJcblx0XHRcdFx0dGhpcy5xdWVyeUZvcm0uYWRkQ29udHJvbChcclxuXHRcdFx0XHRcdGNvbmZpZy5jb250cm9sTmFtZSxcclxuXHRcdFx0XHRcdGNvbmZpZy5jb250cm9sSW5zdGFuY2UgPz8gdGhpcy5mYi5jb250cm9sKGNvbmZpZy5kZWZhdWx0ID8/IG51bGwpXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0dGhpcy5kZWZhdWx0VmFsdWUgPSB0aGlzLnF1ZXJ5Rm9ybS5nZXRSYXdWYWx1ZSgpO1xyXG5cdFx0aWYgKHRoaXMuY2FjaGVQYXJhbXMpIHtcclxuXHRcdFx0Ly8g57yT5a2Y5Zue5pi+5p+l6K+i5p2h5Lu2XHJcblx0XHRcdHRoaXMucXVlcnlGb3JtLnBhdGNoVmFsdWUodGhpcy5jYWNoZVBhcmFtcyk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5jYWxjdWxhdGVUZXh0KCk7XHJcblx0fVxyXG59XHJcbiIsIjxmb3JtICNxdWV5Rm9ybSBjbGFzcz1cIm56eC1xdWVyeS1jb250YWluZXJcIiBuei1mb3JtIFtmb3JtR3JvdXBdPVwicXVlcnlGb3JtXCI+XG5cdDxkaXYgbnotcm93IFtuekd1dHRlcl09XCJuenhHdXR0ZXJcIiBbbnpKdXN0aWZ5XT1cIm56eEp1c3RpZnlcIj5cblx0XHQ8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb25maWcgb2YgY29udHJvbHM7IGxldCBpID0gaW5kZXhcIj5cblx0XHRcdDxkaXZcblx0XHRcdFx0Km5nSWY9XCIhY29uZmlnLmhpZGRlblwiXG5cdFx0XHRcdG56LWNvbFxuXHRcdFx0XHRbbnpTcGFuXT1cImNvbmZpZy5uenhTcGFuIHx8IDI0IC8gbGluZU51bWJlclwiXG5cdFx0XHRcdFtoaWRkZW5dPVwiY29uZmlnLmNvbGxhcHNlXCJcblx0XHRcdFx0W256T3JkZXJdPVwiaVwiXG5cdFx0XHQ+XG5cdFx0XHRcdDxuengtY29uZmlndXJhYmxlLXF1ZXJ5LWl0ZW1cblx0XHRcdFx0XHQqbmdJZj1cImNvbmZpZy5jb250cm9sTmFtZVwiXG5cdFx0XHRcdFx0W2Zvcm1dPVwicXVlcnlGb3JtXCJcblx0XHRcdFx0XHRbY29udHJvbF09XCJjb25maWdcIlxuXHRcdFx0XHQ+PC9uengtY29uZmlndXJhYmxlLXF1ZXJ5LWl0ZW0+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L25nLWNvbnRhaW5lcj5cblxuXHRcdDxkaXZcblx0XHRcdFtuek9yZGVyXT1cImNvbnRyb2xzLmxlbmd0aFwiXG5cdFx0XHRjbGFzcz1cIm56eC1xdWVyeS1idG5cIlxuXHRcdFx0bnotY29sXG5cdFx0XHRbbnpTcGFuXT1cIm56eEJ0blNwYW4gfHwgMjQgLyBsaW5lTnVtYmVyXCJcblx0XHQ+XG5cdFx0XHQ8ZGl2IG56LXJvdyBuekp1c3RpZnk9XCJlbmRcIiBuekFsaWduPVwibWlkZGxlXCI+XG5cdFx0XHRcdDxidXR0b25cblx0XHRcdFx0XHRuei1idXR0b25cblx0XHRcdFx0XHRuelR5cGU9XCJwcmltYXJ5XCJcblx0XHRcdFx0XHR0eXBlPVwiYnV0dG9uXCJcblx0XHRcdFx0XHR0aXRsZT1cIkVudGVyXCJcblx0XHRcdFx0XHQoY2xpY2spPVwic2VhcmNoKCRldmVudClcIlxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0e3sgbG9jYWxlWydxdWVyeSddIH19XG5cdFx0XHRcdDwvYnV0dG9uPlxuXHRcdFx0XHQ8YnV0dG9uIG56LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGl0bGU9XCJjdHJsK3JcIiAoY2xpY2spPVwicmVzZXQoKVwiPlxuXHRcdFx0XHRcdHt7IGxvY2FsZVsncmVzZXQnXSB9fVxuXHRcdFx0XHQ8L2J1dHRvbj5cblx0XHRcdFx0PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXHRcdFx0XHQ8YVxuXHRcdFx0XHRcdCpuZ0lmPVwibnp4Q29sbGFwc2VcIlxuXHRcdFx0XHRcdG56LWJ1dHRvblxuXHRcdFx0XHRcdG56VHlwZT1cImxpbmtcIlxuXHRcdFx0XHRcdChjbGljayk9XCJ0b2dnbGVDb2xsYXBzZSgpXCJcblx0XHRcdFx0PlxuXHRcdFx0XHRcdHt7IGNvbGxhcHNlVGV4dCB9fVxuXHRcdFx0XHRcdDxpIG56LWljb24gW256VHlwZV09XCJjb2xsYXBzZUljb25cIj48L2k+XG5cdFx0XHRcdDwvYT5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvY29uZmlndXJhYmxlLXF1ZXJ5L3R5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOenhPcHRpb25zIH0gZnJvbSAnbmctem9ycm8tYW50ZC1leHRlbnNpb24vdHlwZXMnO1xuaW1wb3J0IHsgTnp4QWJzdHJhY3RDb250cm9sIH0gZnJvbSAnLi9jb250cm9scy9hYnN0cmFjdC5jb250cm9sJztcblxuLyoqXG4gKiDmn6Xor6Llj4LmlbBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOenhRdWVyeVBhcmFtcyB7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxudHlwZSBDb250cm9sVHlwZSA9XG4gIHwgJ2lucHV0J1xuICB8ICdzZWxlY3QnXG4gIHwgJ2RhdGVQaWNrZXInXG4gIHwgJ3JhbmdlUGlja2VyJ1xuICB8ICdUZW1wbGF0ZSdcbiAgfCBzdHJpbmc7XG5cbi8qKlxuICog6YWN572u6aG5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTnp4UXVlcnlDb250cm9sT3B0aW9ucyB7XG4gIC8qKlxuICAgKiDmjqfku7blkI3lr7nlupTmn6Xor6Llj4LmlbDnmoRrZXlcbiAgICovXG4gIGNvbnRyb2xOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICog5o6n5Lu257G75Z6LXG4gICAqL1xuICBjb250cm9sVHlwZT86IENvbnRyb2xUeXBlO1xuXG4gIC8qKlxuICAgKiDmn6Xor6LmoYZsYWJlbFxuICAgKi9cbiAgbGFiZWw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiDmn6Xor6LmoYZwbGFjZWhvbGRlclxuICAgKi9cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiDmjqfku7bkuLpzZWxlY3Tml7bkuIvmi4npm4blkIhcbiAgICovXG4gIG1lbnVMaXN0PzogQXJyYXk8Tnp4T3B0aW9uczxhbnk+PjtcbiAgLyoqXG4gICAqIOaOp+S7tuS4unNlbGVjdOaXtuWFgeiuuOWNleeLrOa4heepulxuICAgKi9cbiAgbnp4QWxsb3dDbGVhcj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiDmjqfku7bkuLpzZWxlY3Tml7blhYHorrjliY3nq6/mkJzntKJcbiAgICovXG4gIG56eFNob3dTZWFyY2g/OiBib29sZWFuO1xuICAvKipcbiAgICog5p+l6K+i6aG55omA5Y2g5qCF5qC85pWwXG4gICAqL1xuICBuenhTcGFuPzogbnVtYmVyO1xuICAvKipcbiAgICog5o6n5Lu26buY6K6k5YC877yM5rOo5oSP6buY6K6k5YC86YeN572u5pe25LiN5Lya5riF56m6XG4gICAqL1xuICBkZWZhdWx0PzogYW55O1xuICAvKipcbiAgICog5p+l6K+i6aG5bGFiZWzmiYDljaDmoIXmoLzmlbBcbiAgICovXG4gIG56eExTcGFuPzogbnVtYmVyO1xuICAvKipcbiAgICog5p+l6K+i6aG55o6n5Lu25omA5Y2g5qCF5qC85pWwXG4gICAqL1xuICBuenhSU3Bhbj86IG51bWJlcjtcbiAgLyoqXG4gICAqIOagoemqjOmUmeivr+aPkOekulxuICAgKi9cbiAgZXJyb3JUaXA/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiDmmK/lkKbopoHmipjlj6DvvIhuenhDb2xsYXBzZeW/hemhu+S4unRydWXmiY3nlJ/mlYjvvIlcbiAgICovXG4gIGNvbGxhcHNlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIOmakOiXj+aOp+S7tijkuLvopoHnlKjmnaXmkLrluKbmn6Xor6Llj4LmlbDkvYbnlYzpnaLkuI3lj6/op4EpXG4gICAqL1xuICBoaWRkZW4/OiBib29sZWFuO1xuICAvKipcbiAgICog5o6n5Lu25a6e5L6L77yM5Y+v6YCJXG4gICAqL1xuICBjb250cm9sSW5zdGFuY2U/OiBBYnN0cmFjdENvbnRyb2w7XG4gIC8qKlxuICAgKiDoh6rlrprkuYnmqKHmnb9cbiAgICovXG4gIHRlbXBsYXRlUmVmPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE56eFF1ZXJ5Q29udHJvbFR5cGUge1xuICBrZXk6IHN0cmluZztcbiAgY29tcG9uZW50OiB0eXBlb2YgTnp4QWJzdHJhY3RDb250cm9sO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE56eFF1ZXJ5Q29uZmlnIHtcbiAgY29udHJvbFR5cGVzOiBOenhRdWVyeUNvbnRyb2xUeXBlW107XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvY29uZmlndXJhYmxlLXF1ZXJ5L3R5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOenhPcHRpb25zIH0gZnJvbSAnbmctem9ycm8tYW50ZC1leHRlbnNpb24vdHlwZXMnO1xuaW1wb3J0IHsgTnp4QWJzdHJhY3RDb250cm9sIH0gZnJvbSAnLi9jb250cm9scy9hYnN0cmFjdC5jb250cm9sJztcblxuLyoqXG4gKiDmn6Xor6Llj4LmlbBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOenhRdWVyeVBhcmFtcyB7XG5cdFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxudHlwZSBDb250cm9sVHlwZSA9XG5cdHwgJ2lucHV0J1xuXHR8ICdzZWxlY3QnXG5cdHwgJ2RhdGVQaWNrZXInXG5cdHwgJ3JhbmdlUGlja2VyJ1xuXHR8ICdUZW1wbGF0ZSdcblx0fCBzdHJpbmc7XG5cbi8qKlxuICog6YWN572u6aG5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTnp4UXVlcnlDb250cm9sT3B0aW9ucyB7XG5cdC8qKlxuXHQgKiDmjqfku7blkI3lr7nlupTmn6Xor6Llj4LmlbDnmoRrZXlcblx0ICovXG5cdGNvbnRyb2xOYW1lPzogc3RyaW5nO1xuXHQvKipcblx0ICog5o6n5Lu257G75Z6LXG5cdCAqL1xuXHRjb250cm9sVHlwZT86IENvbnRyb2xUeXBlO1xuXG5cdC8qKlxuXHQgKiDmn6Xor6LmoYZsYWJlbFxuXHQgKi9cblx0bGFiZWw/OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiDmn6Xor6LmoYZwbGFjZWhvbGRlclxuXHQgKi9cblx0cGxhY2Vob2xkZXI/OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiDmjqfku7bkuLpzZWxlY3Tml7bkuIvmi4npm4blkIhcblx0ICovXG5cdG1lbnVMaXN0PzogQXJyYXk8Tnp4T3B0aW9uczxhbnk+Pjtcblx0LyoqXG5cdCAqIOaOp+S7tuS4unNlbGVjdOaXtuWFgeiuuOWNleeLrOa4heepulxuXHQgKi9cblx0bnp4QWxsb3dDbGVhcj86IGJvb2xlYW47XG5cdC8qKlxuXHQgKiDmjqfku7bkuLpzZWxlY3Tml7blhYHorrjliY3nq6/mkJzntKJcblx0ICovXG5cdG56eFNob3dTZWFyY2g/OiBib29sZWFuO1xuXHQvKipcblx0ICog5p+l6K+i6aG55omA5Y2g5qCF5qC85pWwXG5cdCAqL1xuXHRuenhTcGFuPzogbnVtYmVyO1xuXHQvKipcblx0ICog5o6n5Lu26buY6K6k5YC877yM5rOo5oSP6buY6K6k5YC86YeN572u5pe25LiN5Lya5riF56m6XG5cdCAqL1xuXHRkZWZhdWx0PzogYW55O1xuXHQvKipcblx0ICog5p+l6K+i6aG5bGFiZWzmiYDljaDmoIXmoLzmlbBcblx0ICovXG5cdG56eExTcGFuPzogbnVtYmVyO1xuXHQvKipcblx0ICog5p+l6K+i6aG55o6n5Lu25omA5Y2g5qCF5qC85pWwXG5cdCAqL1xuXHRuenhSU3Bhbj86IG51bWJlcjtcblx0LyoqXG5cdCAqIOagoemqjOmUmeivr+aPkOekulxuXHQgKi9cblx0ZXJyb3JUaXA/OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiDmipjlj6Bcblx0ICovXG5cdGNvbGxhcHNlPzogdHJ1ZTtcblx0LyoqXG5cdCAqIOmakOiXj+aOp+S7tijkuLvopoHnlKjmnaXmkLrluKbmn6Xor6Llj4LmlbDkvYbnlYzpnaLkuI3lj6/op4EpXG5cdCAqL1xuXHRoaWRkZW4/OiBib29sZWFuO1xuXHQvKipcblx0ICog5o6n5Lu25a6e5L6L77yM5Y+v6YCJXG5cdCAqL1xuXHRjb250cm9sSW5zdGFuY2U/OiBBYnN0cmFjdENvbnRyb2w7XG5cdC8qKlxuXHQgKiDoh6rlrprkuYnmqKHmnb9cblx0ICovXG5cdHRlbXBsYXRlUmVmPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cblx0W2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE56eFF1ZXJ5Q29udHJvbFR5cGUge1xuXHRrZXk6IHN0cmluZztcblx0Y29tcG9uZW50OiB0eXBlb2YgTnp4QWJzdHJhY3RDb250cm9sO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE56eFF1ZXJ5Q29uZmlnIHtcblx0Y29udHJvbFR5cGVzOiBOenhRdWVyeUNvbnRyb2xUeXBlW107XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctem9ycm8tYW50ZC1leHRlbnNpb24tcHJpbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21wb25lbnRzL3ByaW50L25nLXpvcnJvLWFudGQtZXh0ZW5zaW9uLXByaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -0,0 +1,22 @@
1
+ import { Directive, Input } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export class NzxPrintContentDirective {
4
+ constructor(elementRef) {
5
+ this.elementRef = elementRef;
6
+ this.identifierStr = '';
7
+ this.customStyle = '';
8
+ }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NzxPrintContentDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
10
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.3", type: NzxPrintContentDirective, selector: "[nzxPrintContent]", inputs: { identifierStr: "identifierStr", customStyle: "customStyle" }, ngImport: i0 }); }
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NzxPrintContentDirective, decorators: [{
13
+ type: Directive,
14
+ args: [{
15
+ selector: '[nzxPrintContent]',
16
+ }]
17
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { identifierStr: [{
18
+ type: Input
19
+ }], customStyle: [{
20
+ type: Input
21
+ }] } });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnp4LXByaW50LWNvbnRlbnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29tcG9uZW50cy9wcmludC9uengtcHJpbnQtY29udGVudC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzdELE1BQU0sT0FBTyx3QkFBd0I7SUFHcEMsWUFBbUIsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUZoQyxrQkFBYSxHQUFzQixFQUFFLENBQUM7UUFDdEMsZ0JBQVcsR0FBRyxFQUFFLENBQUM7SUFDa0IsQ0FBQzs4R0FIakMsd0JBQXdCO2tHQUF4Qix3QkFBd0I7OzJGQUF4Qix3QkFBd0I7a0JBSHBDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLG1CQUFtQjtpQkFDN0I7K0VBRVMsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ1tuenhQcmludENvbnRlbnRdJyxcbn0pXG5leHBvcnQgY2xhc3MgTnp4UHJpbnRDb250ZW50RGlyZWN0aXZlIHtcblx0QElucHV0KCkgaWRlbnRpZmllclN0cjogc3RyaW5nIHwgc3RyaW5nW10gPSAnJztcblx0QElucHV0KCkgY3VzdG9tU3R5bGUgPSAnJztcblx0Y29uc3RydWN0b3IocHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG59XG4iXX0=