@bizdoc/core 1.17.7 → 1.17.10
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.
- package/assets/bizdoc-schema.json +2 -2
- package/assets/themes/dark.min.css +7 -2
- package/esm2020/lib/admin/architecture/declarations.mjs +1 -8
- package/esm2020/lib/admin/architecture/designer-element.component.mjs +20 -4
- package/esm2020/lib/admin/architecture/designer.base.mjs +1 -9
- package/esm2020/lib/admin/architecture/elements/action.component.mjs +3 -3
- package/esm2020/lib/admin/architecture/elements/analysis-view.component.mjs +8 -8
- package/esm2020/lib/admin/architecture/elements/analysis-widget.component.mjs +8 -8
- package/esm2020/lib/admin/architecture/elements/attribute.component.mjs +1 -1
- package/esm2020/lib/admin/architecture/elements/control.component.mjs +1 -1
- package/esm2020/lib/admin/architecture/elements/cube.component.mjs +26 -24
- package/esm2020/lib/admin/architecture/elements/folder.component.mjs +3 -3
- package/esm2020/lib/admin/architecture/elements/form-invite.dialog.mjs +3 -3
- package/esm2020/lib/admin/architecture/elements/form.component.mjs +3 -3
- package/esm2020/lib/admin/architecture/elements/guide.component.mjs +4 -3
- package/esm2020/lib/admin/architecture/elements/matrix-view.component.mjs +8 -3
- package/esm2020/lib/admin/architecture/elements/node.component.mjs +1 -1
- package/esm2020/lib/admin/architecture/elements/policy.component.mjs +1 -1
- package/esm2020/lib/admin/architecture/elements/report.component.mjs +1 -1
- package/esm2020/lib/admin/architecture/elements/role.component.mjs +3 -3
- package/esm2020/lib/admin/architecture/elements/rule.component.mjs +1 -1
- package/esm2020/lib/admin/architecture/elements/state.component.mjs +1 -1
- package/esm2020/lib/admin/architecture/elements/type.component.mjs +7 -6
- package/esm2020/lib/admin/architecture/elements/utility.component.mjs +1 -1
- package/esm2020/lib/admin/architecture/elements/view.component.mjs +1 -1
- package/esm2020/lib/admin/architecture/elements/widget.component.mjs +1 -1
- package/esm2020/lib/compose/attachments/preview/attachment-preview.component.mjs +6 -4
- package/esm2020/lib/compose/box/box.component.mjs +2 -2
- package/esm2020/lib/compose/box/control.component.mjs +3 -3
- package/esm2020/lib/compose/version-compare/version-compare.directive.mjs +3 -3
- package/esm2020/lib/core/authentication.mjs +1 -1
- package/esm2020/lib/core/configuration.mjs +1 -1
- package/esm2020/lib/core/fields/checklist.field.mjs +3 -3
- package/esm2020/lib/core/http.interceptor.mjs +37 -47
- package/esm2020/lib/core/mailbox.service.mjs +7 -3
- package/esm2020/lib/core/models.mjs +1 -1
- package/esm2020/lib/core/session.service.mjs +9 -6
- package/esm2020/lib/core/slots/pane-ref.mjs +11 -11
- package/esm2020/lib/core/slots/slots.component.mjs +3 -4
- package/esm2020/lib/core/translations.mjs +2 -2
- package/esm2020/lib/cube/chart/chart.component.mjs +6 -5
- package/esm2020/lib/cube/grid/spreadsheet.component.mjs +2 -2
- package/esm2020/lib/cube/pivot/pivot.component.mjs +4 -3
- package/esm2020/lib/dashboard/cube/accum-cube.widget.mjs +32 -22
- package/esm2020/lib/dashboard/cube/cube-analysis.base.mjs +5 -5
- package/esm2020/lib/dashboard/cube/cube-chart.widget.mjs +9 -9
- package/esm2020/lib/dashboard/score/activity.widget.mjs +12 -8
- package/esm2020/lib/dashboard/widget-item.component.mjs +2 -2
- package/esm2020/lib/system.module.mjs +49 -7
- package/esm2020/lib/views/timeline/timeline.component.exp.mjs +18 -14
- package/fesm2015/bizdoc-core.mjs +284 -216
- package/fesm2015/bizdoc-core.mjs.map +1 -1
- package/fesm2020/bizdoc-core.mjs +283 -216
- package/fesm2020/bizdoc-core.mjs.map +1 -1
- package/lib/admin/architecture/declarations.d.ts +2 -1
- package/lib/admin/architecture/designer-element.component.d.ts +5 -2
- package/lib/admin/architecture/designer.base.d.ts +0 -2
- package/lib/admin/architecture/elements/cube.component.d.ts +2 -1
- package/lib/admin/architecture/elements/guide.component.d.ts +1 -0
- package/lib/admin/architecture/elements/matrix-view.component.d.ts +1 -0
- package/lib/core/authentication.d.ts +1 -1
- package/lib/core/configuration.d.ts +1 -0
- package/lib/core/http.interceptor.d.ts +4 -6
- package/lib/core/mailbox.service.d.ts +1 -1
- package/lib/core/models.d.ts +2 -2
- package/lib/core/session.service.d.ts +1 -0
- package/lib/core/slots/pane-ref.d.ts +4 -4
- package/lib/dashboard/cube/accum-cube.widget.d.ts +4 -2
- package/lib/dashboard/cube/cube-analysis.base.d.ts +2 -2
- package/lib/dashboard/cube/cube-chart.widget.d.ts +2 -2
- package/lib/dashboard/widget-item.component.d.ts +1 -1
- package/lib/views/timeline/timeline.component.exp.d.ts +1 -3
- package/package.json +1 -1
@@ -39,7 +39,7 @@ export class CompareGroupDirective extends CompareDirectiveBase {
|
|
39
39
|
this._version = this._parent.version;
|
40
40
|
}
|
41
41
|
else {
|
42
|
-
this._structure = this._comparision.form.
|
42
|
+
this._structure = this._comparision.form.fields.find(e => e.name === this.name);
|
43
43
|
const { currentVersion, baseVersion } = this._comparision;
|
44
44
|
this._base = baseVersion;
|
45
45
|
this._version = currentVersion;
|
@@ -123,7 +123,7 @@ export class CompareNameDirective extends CompareDirectiveBase {
|
|
123
123
|
throw `No form field with name ${this._name[0]}`;
|
124
124
|
}
|
125
125
|
else {
|
126
|
-
this._structure = this._comparision.form.
|
126
|
+
this._structure = this._comparision.form.fields.find(e => e.name === this._name[0]);
|
127
127
|
const { currentVersion, baseVersion } = this._comparision;
|
128
128
|
this._base = baseVersion;
|
129
129
|
this._version = currentVersion;
|
@@ -341,4 +341,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
|
|
341
341
|
type: Input,
|
342
342
|
args: ['bizdocCompareDecorate']
|
343
343
|
}] } });
|
344
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi1jb21wYXJlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29tcG9zZS92ZXJzaW9uLWNvbXBhcmUvdmVyc2lvbi1jb21wYXJlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBc0IsUUFBUSxFQUFFLElBQUksRUFBb0MsUUFBUSxFQUFpQyxNQUFNLGVBQWUsQ0FBQztBQUVoSyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7O0FBS2hELElBQUssWUFLSjtBQUxELFdBQUssWUFBWTtJQUNmLHNEQUFZLENBQUE7SUFDWix5REFBYSxDQUFBO0lBQ2IsaURBQVMsQ0FBQTtJQUNULHVEQUFZLENBQUE7QUFDZCxDQUFDLEVBTEksWUFBWSxLQUFaLFlBQVksUUFLaEI7QUFFRCxNQUFNLE9BQWdCLG9CQUFvQjtDQUl6QztBQUNELE1BQU07QUFFTixNQUFNLE9BQ0UscUJBQXNCLFNBQVEsb0JBQW9CO0lBVXhELFlBQ3NCLFlBQXFDLEVBQzdCLFFBQWlDLEVBQ3JCLE9BQThCO1FBQ3RFLEtBQUssRUFBRSxDQUFDO1FBSFksaUJBQVksR0FBWixZQUFZLENBQXlCO1FBQzdCLGFBQVEsR0FBUixRQUFRLENBQXlCO1FBQ3JCLFlBQU8sR0FBUCxPQUFPLENBQXVCO0lBRXhFLENBQUM7SUFURCxJQUFXLFNBQVMsS0FBZ0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUM3RCxJQUFXLElBQUksS0FBVSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVFLElBQVcsT0FBTyxLQUFVLE9BQU8s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QixJQUFJLEtBQW1CLENBQUM7WUFDeEIsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7Z0JBQ2hDLEtBQUssR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO2lCQUN4QixJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztnQkFDdkMsS0FBSyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUM7aUJBQzFCO2dCQUNILEtBQUssR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDO2dCQUMvQixTQUFTO2FBQ1Y7WUFDRCxJQUFJLFNBQVMsS0FBSyxLQUFLLEVBQUU7Z0JBQ3ZCLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzNDLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDN0I7WUFDRCxTQUFTLEdBQUcsS0FBSyxDQUFDO1NBQ25CO0lBQ0gsQ0FBQzs7b0hBOUVLLHVCQUF1Qjt3R0FBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBRjlCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsd0NBQXdDLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRTs7MEJBWXZGLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUFJLElBQUk7OzBCQUVoQixRQUFRO3FFQVhtQixTQUFTO3NCQUF0QyxLQUFLO3VCQUFDLGlCQUFpQjtnQkFDVyxPQUFPO3NCQUF6QyxLQUFLO3VCQUFDLHNCQUFzQjtnQkFFRyxRQUFRO3NCQUF2QyxLQUFLO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElucHV0LCBEaXJlY3RpdmUsIE9uSW5pdCwgRWxlbWVudFJlZiwgT3B0aW9uYWwsIEhvc3QsIEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBTa2lwU2VsZiwgVmlld0NvbnRhaW5lclJlZiwgVGVtcGxhdGVSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xyXG5pbXBvcnQgeyBpc09iamVjdCB9IGZyb20gXCIuLi8uLi9jb3JlL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBGaWVsZEluZm8gfSBmcm9tIFwiLi4vLi4vY29yZS9tb2RlbHNcIjtcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL3RyYW5zbGF0ZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFZlcnNpb25Db21wYXJlQ29tcG9uZW50IH0gZnJvbSBcIi4vdmVyc2lvbi1jb21wYXJlLmNvbXBvbmVudFwiO1xyXG5cclxuZW51bSBDb21wYXJlU3RhdGUge1xyXG4gIFJlbW92ZWQgPSAtMSxcclxuICBVbmNoYW5nZWQgPSAwLFxyXG4gIEFkZGVkID0gMSxcclxuICBNb2RpZmllZCA9IDJcclxufVxyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbXBhcmVEaXJlY3RpdmVCYXNlIHtcclxuICBhYnN0cmFjdCBnZXQgYmFzZSgpOiBhbnk7XHJcbiAgYWJzdHJhY3QgZ2V0IHZlcnNpb24oKTogYW55O1xyXG4gIGFic3RyYWN0IGdldCBzdHJ1Y3R1cmUoKTogRmllbGRJbmZvO1xyXG59XHJcbi8qKiAqL1xyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbYml6ZG9jQ29tcGFyZUdyb3VwXSxbYml6ZG9jQ29tcGFyZUFycmF5XScgfSlcclxuZXhwb3J0XHJcbiAgY2xhc3MgQ29tcGFyZUdyb3VwRGlyZWN0aXZlIGV4dGVuZHMgQ29tcGFyZURpcmVjdGl2ZUJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgnYml6ZG9jQ29tcGFyZUdyb3VwJykgbmFtZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX2tleXM6IHN0cmluZ1tdO1xyXG4gIHByaXZhdGUgX3N0cnVjdHVyZTogRmllbGRJbmZvO1xyXG4gIHByaXZhdGUgX2Jhc2U6IGFueTtcclxuICBwcml2YXRlIF92ZXJzaW9uOiBhbnk7XHJcbiAgcHVibGljIGdldCBzdHJ1Y3R1cmUoKTogRmllbGRJbmZvIHsgcmV0dXJuIHRoaXMuX3N0cnVjdHVyZTsgfVxyXG4gIHB1YmxpYyBnZXQgYmFzZSgpOiBhbnkgeyByZXR1cm4gdGhpcy5fYmFzZSA/IHRoaXMuX2Jhc2VbdGhpcy5uYW1lXSA6IG51bGw7IH1cclxuICBwdWJsaWMgZ2V0IHZlcnNpb24oKTogYW55IHsgcmV0dXJuIHRoaXMuX3ZlcnNpb25bdGhpcy5uYW1lXTsgfVxyXG4gIHB1YmxpYyBnZXQga2V5cygpOiBzdHJpbmdbXSB7IHJldHVybiB0aGlzLl9rZXlzOyB9XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9jb21wYXJpc2lvbjogVmVyc2lvbkNvbXBhcmVDb21wb25lbnQsXHJcbiAgICBAT3B0aW9uYWwoKSBASG9zdCgpIHByaXZhdGUgX2NvbnRleHQ6IENvbXBhcmVDb250ZXh0RGlyZWN0aXZlLFxyXG4gICAgQE9wdGlvbmFsKCkgQEhvc3QoKSBAU2tpcFNlbGYoKSBwcml2YXRlIF9wYXJlbnQ6IENvbXBhcmVHcm91cERpcmVjdGl2ZSkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuX2NvbXBhcmlzaW9uKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5fY29udGV4dCkge1xyXG4gICAgICB0aGlzLl9zdHJ1Y3R1cmUgPSB0aGlzLl9jb250ZXh0LnN0cnVjdHVyZS5maWVsZHMuZmluZChlID0+IGUubmFtZSA9PT0gdGhpcy5uYW1lKTtcclxuICAgICAgdGhpcy5fYmFzZSA9IHRoaXMuX2NvbnRleHQuYmFzZTtcclxuICAgICAgdGhpcy5fdmVyc2lvbiA9IHRoaXMuX2NvbnRleHQudmVyc2lvbjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuX3BhcmVudCkge1xyXG4gICAgICB0aGlzLl9zdHJ1Y3R1cmUgPSB0aGlzLl9wYXJlbnQuc3RydWN0dXJlLmZpZWxkcy5maW5kKGUgPT4gZS5uYW1lID09PSB0aGlzLm5hbWUpO1xyXG4gICAgICB0aGlzLl9iYXNlID0gdGhpcy5fcGFyZW50LmJhc2U7XHJcbiAgICAgIHRoaXMuX3ZlcnNpb24gPSB0aGlzLl9wYXJlbnQudmVyc2lvbjtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLl9zdHJ1Y3R1cmUgPSB0aGlzLl9jb21wYXJpc2lvbi5mb3JtLnN0cnVjdHVyZS5maW5kKGUgPT4gZS5uYW1lID09PSB0aGlzLm5hbWUpO1xyXG4gICAgICBjb25zdCB7IGN1cnJlbnRWZXJzaW9uLCBiYXNlVmVyc2lvbiB9ID0gdGhpcy5fY29tcGFyaXNpb247XHJcbiAgICAgIHRoaXMuX2Jhc2UgPSBiYXNlVmVyc2lvbjtcclxuICAgICAgdGhpcy5fdmVyc2lvbiA9IGN1cnJlbnRWZXJzaW9uO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLl9zdHJ1Y3R1cmUpIHRocm93IGBObyBmb3JtIGZpZWxkIHdpdGggbmFtZSAke3RoaXMubmFtZX1gO1xyXG4gICAgaWYgKCF0aGlzLl9zdHJ1Y3R1cmUuaXNPYmplY3QpIHRocm93IGBiaXpkb2NDb21wYXJlR3JvdXAgJHt0aGlzLm5hbWV9YDtcclxuICAgIHRoaXMuc3RydWN0dXJlLmlzQXJyYXkgJiYgdGhpcy5fbm9ybWFsaXplKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX25vcm1hbGl6ZSgpIHtcclxuICAgIHRoaXMuX2tleXMgPSB0aGlzLnN0cnVjdHVyZS5maWVsZHMuZmlsdGVyKGYgPT4gZi5rZXkpLm1hcChrID0+IGsubmFtZSk7XHJcbiAgICB0aGlzLmJhc2UuZm9yRWFjaCgoYiwgaSkgPT4gIXRoaXMudmVyc2lvbi5maW5kKHYgPT4gdGhpcy5fa2V5cy5ldmVyeShrID0+IHZba10gPT09IGJba10pKSAvKiBkb2Vzbid0IGhhdmUgYSB2ZXJzaW9uICovICYmXHJcbiAgICAgIHRoaXMudmVyc2lvbi5zcGxpY2UoaSwgMCwgT2JqZWN0LmFzc2lnbih7IF9jb21wYXJlOiBDb21wYXJlU3RhdGUuUmVtb3ZlZCB9LCBiKSkpO1xyXG4gICAgdGhpcy52ZXJzaW9uLmZvckVhY2godiA9PiB7XHJcbiAgICAgIGlmICh2WydfY29tcGFyZSddID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBjb25zdCBiYXNlID0gdGhpcy5iYXNlLmZpbmQoYiA9PiB0aGlzLl9rZXlzLmV2ZXJ5KGsgPT4gYltrXSA9PT0gdltrXSkpO1xyXG4gICAgICAgIGlmICghYmFzZSlcclxuICAgICAgICAgIHZbJ19jb21wYXJlJ10gPSBDb21wYXJlU3RhdGUuQWRkZWQ7XHJcbiAgICAgICAgZWxzZSBpZiAoSlNPTi5zdHJpbmdpZnkodikgIT09IEpTT04uc3RyaW5naWZ5KGJhc2UpKVxyXG4gICAgICAgICAgdlsnX2NvbXBhcmUnXSA9IENvbXBhcmVTdGF0ZS5Nb2RpZmllZDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbi8qKiAqL1xyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbYml6ZG9jQ29tcGFyZU5hbWVdJyB9KVxyXG5leHBvcnRcclxuICBjbGFzcyBDb21wYXJlTmFtZURpcmVjdGl2ZSBleHRlbmRzIENvbXBhcmVEaXJlY3RpdmVCYXNlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBwcml2YXRlIF9uYW1lOiBzdHJpbmdbXTtcclxuICBASW5wdXQoJ2JpemRvY0NvbXBhcmVOYW1lJykgc2V0IG5hbWUodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX25hbWUgPSB2YWwuc3BsaXQoJywnKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfc3RydWN0dXJlOiBGaWVsZEluZm87XHJcbiAgcHJpdmF0ZSBfYmFzZTogYW55O1xyXG4gIHByaXZhdGUgX3ZlcnNpb246IGFueTtcclxuICBwcml2YXRlIF9zdGF0ZTogQ29tcGFyZVN0YXRlID0gQ29tcGFyZVN0YXRlLlVuY2hhbmdlZDtcclxuICBwdWJsaWMgZ2V0IHN0cnVjdHVyZSgpOiBGaWVsZEluZm8geyByZXR1cm4gdGhpcy5fc3RydWN0dXJlOyB9XHJcbiAgcHVibGljIGdldCBiYXNlKCk6IGFueSB7IHJldHVybiB0aGlzLl9iYXNlID8gdGhpcy5fYmFzZVt0aGlzLl9uYW1lWzBdXSA6IG51bGw7IH1cclxuICBwdWJsaWMgZ2V0IHZlcnNpb24oKTogYW55IHsgcmV0dXJuIHRoaXMuX3ZlcnNpb25bdGhpcy5fbmFtZVswXV07IH1cclxuICBnZXQgc3RhdGUoKTogQ29tcGFyZVN0YXRlIHsgcmV0dXJuIHRoaXMuX3N0YXRlIH07XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9jb21wYXJpc2lvbjogVmVyc2lvbkNvbXBhcmVDb21wb25lbnQsXHJcbiAgICBAT3B0aW9uYWwoKSBASG9zdCgpIHByaXZhdGUgX2NvbnRleHQ6IENvbXBhcmVDb250ZXh0RGlyZWN0aXZlLFxyXG4gICAgQE9wdGlvbmFsKCkgQEhvc3QoKSBwcml2YXRlIF9ncm91cDogQ29tcGFyZUdyb3VwRGlyZWN0aXZlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfZG9tOiBEb21TYW5pdGl6ZXIsXHJcbiAgICBwcml2YXRlIF9lbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuX2NvbXBhcmlzaW9uKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5fY29udGV4dCkge1xyXG4gICAgICB0aGlzLl9zdHJ1Y3R1cmUgPSB0aGlzLl9jb250ZXh0LnN0cnVjdHVyZS5maWVsZHMuZmluZChlID0+IGUubmFtZSA9PT0gdGhpcy5fbmFtZVswXSk7XHJcbiAgICAgIHRoaXMuX2Jhc2UgPSB0aGlzLl9jb250ZXh0LmJhc2U7XHJcbiAgICAgIHRoaXMuX3ZlcnNpb24gPSB0aGlzLl9jb250ZXh0LnZlcnNpb247XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLl9ncm91cCkge1xyXG4gICAgICB0aGlzLl9zdHJ1Y3R1cmUgPSB0aGlzLl9ncm91cC5zdHJ1Y3R1cmUuZmllbGRzLmZpbmQoZSA9PiBlLm5hbWUgPT09IHRoaXMuX25hbWVbMF0pO1xyXG4gICAgICB0aGlzLl9iYXNlID0gdGhpcy5fZ3JvdXAuYmFzZTtcclxuICAgICAgdGhpcy5fdmVyc2lvbiA9IHRoaXMuX2dyb3VwLnZlcnNpb247XHJcbiAgICBpZiAoIXRoaXMuX3N0cnVjdHVyZSkgdGhyb3cgYE5vIGZvcm0gZmllbGQgd2l0aCBuYW1lICR7dGhpcy5fbmFtZVswXX1gO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuX3N0cnVjdHVyZSA9IHRoaXMuX2NvbXBhcmlzaW9uLmZvcm0uc3RydWN0dXJlLmZpbmQoZSA9PiBlLm5hbWUgPT09IHRoaXMuX25hbWVbMF0pO1xyXG4gICAgICBjb25zdCB7IGN1cnJlbnRWZXJzaW9uLCBiYXNlVmVyc2lvbiB9ID0gdGhpcy5fY29tcGFyaXNpb247XHJcbiAgICAgIHRoaXMuX2Jhc2UgPSBiYXNlVmVyc2lvbjtcclxuICAgICAgdGhpcy5fdmVyc2lvbiA9IGN1cnJlbnRWZXJzaW9uO1xyXG4gICAgfVxyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuX2NvbXBhcmlzaW9uKSByZXR1cm47XHJcbiAgICAvLyBpZiBvYmplY3QgaGFzIHN0YXRlXHJcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuX3ZlcnNpb25bJ19jb21wYXJlJ107XHJcbiAgICBpZiAoc3RhdGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBzd2l0Y2ggKHN0YXRlKSB7XHJcbiAgICAgICAgY2FzZSBDb21wYXJlU3RhdGUuUmVtb3ZlZDpcclxuICAgICAgICAgIHRoaXMuX2RlY29yYXRlKCdyZW1vdmVkJywgJ0RlbGV0ZWQnKTtcclxuICAgICAgICAgIHRoaXMuX3N0YXRlID0gc3RhdGU7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgY2FzZSBDb21wYXJlU3RhdGUuQWRkZWQ6XHJcbiAgICAgICAgICB0aGlzLl9kZWNvcmF0ZSgnYWRkZWQnLCAnQWRkZWQnKTtcclxuICAgICAgICAgIHRoaXMuX3N0YXRlID0gc3RhdGU7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHZlcnNpb25EYXRhOiB7IFtmaWVsZDogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuICAgIC8vIGl0ZXJhdGUgbmFtZXNcclxuICAgIGxldCBuYW1lOiBzdHJpbmcsIGkgPSAwO1xyXG4gICAgd2hpbGUgKGkgPCB0aGlzLl9uYW1lLmxlbmd0aCkge1xyXG4gICAgICBuYW1lID0gdGhpcy5fbmFtZVtpXTtcclxuICAgICAgaWYgKCF0aGlzLl9iYXNlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3ZlcnNpb25bbmFtZV0gIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgIHRoaXMuX3N0YXRlID0gQ29tcGFyZVN0YXRlLkFkZGVkO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuX3ZlcnNpb25bbmFtZV0gIT09IHRoaXMuX2Jhc2VbbmFtZV0pIHtcclxuICAgICAgICBpZiAodGhpcy5fdmVyc2lvbltuYW1lXSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLl92ZXJzaW9uW25hbWVdID0gdGhpcy5fYmFzZVtuYW1lXTtcclxuICAgICAgICAgIHZlcnNpb25EYXRhW25hbWVdID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgdGhpcy5fc3RhdGUgPSBDb21wYXJlU3RhdGUuUmVtb3ZlZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5fYmFzZVtuYW1lXSA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgdGhpcy5fc3RhdGUgPSBDb21wYXJlU3RhdGUuQWRkZWQ7XHJcbiAgICAgICAgZWxzZSBpZiAoSlNPTi5zdHJpbmdpZnkodGhpcy5fdmVyc2lvbltuYW1lXSkgIT09IEpTT04uc3RyaW5naWZ5KHRoaXMuX2Jhc2VbbmFtZV0pKSB7XHJcbiAgICAgICAgICAvLyBzdG9yZSB2ZXJzaW9uIGRhdGFcclxuICAgICAgICAgIHZlcnNpb25EYXRhW25hbWVdID0gdGhpcy5fdmVyc2lvbltuYW1lXTtcclxuICAgICAgICAgIHRoaXMuX3ZlcnNpb25bbmFtZV0gPSB0aGlzLl9iYXNlW25hbWVdO1xyXG4gICAgICAgICAgdGhpcy5fc3RhdGUgPSBDb21wYXJlU3RhdGUuTW9kaWZpZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGkrKztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9zdGF0ZSAhPT0gQ29tcGFyZVN0YXRlLlVuY2hhbmdlZClcclxuICAgICAgc3dpdGNoICh0aGlzLl9zdGF0ZSkge1xyXG4gICAgICAgIGNhc2UgQ29tcGFyZVN0YXRlLlJlbW92ZWQ6XHJcbiAgICAgICAgICAvLyBkZXRlY3Qgd2l0aCBiYXNlIHZhbHVlKHMpXHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLl9kZWNvcmF0ZSgncmVtb3ZlZCcsICdEZWxldGVkJyk7XHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fdmVyc2lvbiwgdmVyc2lvbkRhdGEpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbXBhcmVTdGF0ZS5BZGRlZDpcclxuICAgICAgICAgIHRoaXMuX2RlY29yYXRlKCdhZGRlZCcsICdBZGRlZCcpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb21wYXJlU3RhdGUuTW9kaWZpZWQ6XHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZlcnNpb25IVE1MID0gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LmlubmVySFRNTDtcclxuLy8gICAgICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgLy8gZGV0ZWN0IGFnYWluIHdpdGggYmFzZSB2YWx1ZShzKVxyXG4gICAgICAgICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICBjb25zdCBvcmlnaW5hbEhUTUwgPSB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MO1xyXG4gICAgICAgICAgICAgIC8vIHJlc3RvcmUgdmVyc2lvbiBodG1sXHJcbiAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IHZlcnNpb25IVE1MO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGxhYmVsRWwgPSB0aGlzLl9kZWNvcmF0ZSgnbW9kaWZpZWQnLCAnTW9kaWZpZWQnKTtcclxuICAgICAgICAgICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgICAgICAgICAgICBlbC5jbGFzc05hbWUgPSAnb3JpZ2luYWwnO1xyXG4gICAgICAgICAgICAgIGVsLmlubmVySFRNTCA9IG9yaWdpbmFsSFRNTDsgLy90aGlzLl9kb20uc2FuaXRpemUoKTtcclxuICAgICAgICAgICAgICBsYWJlbEVsLmFwcGVuZChlbCk7XHJcbiAgICAgICAgICAgICAgLy8gcmVzdG9yZSB2ZXJzaW9uIHZhbHVlKHMpXHJcbiAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl92ZXJzaW9uLCB2ZXJzaW9uRGF0YSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgfVxyXG4gIH1cclxuICBwcml2YXRlIF9kZWNvcmF0ZShjbGFzc05hbWU6IHN0cmluZywgbGFiZWw6IHN0cmluZyk6IEhUTUxFbGVtZW50IHtcclxuICAgIHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdjb21wYXJlJywgY2xhc3NOYW1lKTtcclxuICAgIGNvbnN0IGxhYmVsQ29udGFpbmVyRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIGxhYmVsQ29udGFpbmVyRWwuY2xhc3NOYW1lID0gJ2xhYmVsJztcclxuICAgIGNvbnN0IGxhYmVsRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XHJcbiAgICBsYWJlbEVsLmlubmVyVGV4dCA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQobGFiZWwpO1xyXG4gICAgbGFiZWxDb250YWluZXJFbC5hcHBlbmQobGFiZWxFbCk7XHJcbiAgICB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQobGFiZWxDb250YWluZXJFbCk7XHJcbiAgICByZXR1cm4gbGFiZWxFbDtcclxuICB9XHJcbn1cclxuLyoqICovXHJcbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tiaXpkb2NDb21wYXJlQ29udGV4dF0sW2JpemRvY0NvbXBhcmVdJywgZXhwb3J0QXM6ICdiaXpkb2NDb21wYXJlJyB9KVxyXG5leHBvcnRcclxuICBjbGFzcyBDb21wYXJlQ29udGV4dERpcmVjdGl2ZSBleHRlbmRzIENvbXBhcmVEaXJlY3RpdmVCYXNlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBwcml2YXRlIF92ZXJzaW9uOiB7fTtcclxuICBASW5wdXQoJ2JpemRvY0NvbXBhcmVPZicpIHNldCBjb21wYXJlT2YodmFsOiB7fSkgeyB0aGlzLl92ZXJzaW9uID0gdmFsOyB9XHJcbiAgQElucHV0KCdiaXpkb2NDb21wYXJlQ29udGV4dCcpIHNldCBjb250ZXh0KHZhbDoge30pIHsgdGhpcy5fdmVyc2lvbiA9IHZhbDsgfVxyXG4gIGdldCB2ZXJzaW9uKCk6IHt9IHsgcmV0dXJuIHRoaXMuX3ZlcnNpb247IH1cclxuICBASW5wdXQoJ2JpemRvY0NvbXBhcmVEZWNvcmF0ZScpIGRlY29yYXRlOiAnZ3JvdXAnIHwgJ3NpbmdsZScgfCAndGFibGUnO1xyXG4gIHByaXZhdGUgX2Jhc2U6IHt9O1xyXG4gIHB1YmxpYyBnZXQgYmFzZSgpOiB7fSB7IHJldHVybiB0aGlzLl9iYXNlOyB9XHJcbiAgcHVibGljIGdldCBzdHJ1Y3R1cmUoKTogRmllbGRJbmZvIHsgcmV0dXJuIHRoaXMuX2dyb3VwLnN0cnVjdHVyZTsgfVxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfY29tcGFyaXNpb246IFZlcnNpb25Db21wYXJlQ29tcG9uZW50LFxyXG4gICAgQE9wdGlvbmFsKCkgQEhvc3QoKSBwcml2YXRlIF9ncm91cDogQ29tcGFyZUdyb3VwRGlyZWN0aXZlLFxyXG4gICAgcHJpdmF0ZSBfdmM6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF90ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PixcclxuICAgIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5kZWNvcmF0ZSA9IF9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGFnTmFtZSA9PT0gJ1RSJyA/ICd0YWJsZScgOiAnZ3JvdXAnO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9jb21wYXJpc2lvbikge1xyXG4gICAgICBpZiAoIXRoaXMuX2dyb3VwKSB0aHJvdyBgTWlzc2luZyBlbmNsb3NpbmcgYml6ZG9jQ29tcGFyZUdyb3VwIGRpcmVjdGl2ZWA7XHJcbiAgICAgIGlmICghaXNPYmplY3QodGhpcy52ZXJzaW9uKSkgdGhyb3cgYFtiaXpkb2NDb21wYXJlQ29udGV4dF0gc3ludGF4YDtcclxuICAgICAgdGhpcy5fYmFzZSA9IHRoaXMuX2dyb3VwLmJhc2UuZmluZChiID0+IHRoaXMuX2dyb3VwLmtleXMuZXZlcnkoayA9PiBiW2tdID09PSB0aGlzLnZlcnNpb25ba10pKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl90ZW1wbGF0ZSkge1xyXG4gICAgICB0aGlzLl92Yy5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fdGVtcGxhdGUsIHtcclxuICAgICAgICAkaW1wbGljaXQ6IHRoaXMuX2Jhc2VcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5fY29tcGFyaXNpb24pIHJldHVybjtcclxuICAgIHN3aXRjaCAodGhpcy5kZWNvcmF0ZSkge1xyXG4gICAgICBjYXNlICd0YWJsZSc6XHJcbiAgICAgICAgdGhpcy5fdGFibGUoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZ3JvdXAnOlxyXG4gICAgICAgIHRoaXMuX2NvbGxhcHNlKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKiAqL1xyXG4gIHByaXZhdGUgX3RhYmxlKCkge1xyXG4gICAgbGV0IGNsYXNzTmFtZTogc3RyaW5nO1xyXG4gICAgc3dpdGNoICh0aGlzLl92ZXJzaW9uWydfY29tcGFyZSddIGFzIENvbXBhcmVTdGF0ZSkge1xyXG4gICAgICBjYXNlIENvbXBhcmVTdGF0ZS5BZGRlZDpcclxuICAgICAgICBjbGFzc05hbWUgPSAnYWRkZWQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbXBhcmVTdGF0ZS5SZW1vdmVkOlxyXG4gICAgICAgIGNsYXNzTmFtZSA9ICdyZW1vdmVkJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb21wYXJlU3RhdGUuTW9kaWZpZWQ6XHJcbiAgICAgICAgY2xhc3NOYW1lID0gJ21vZGlmaWVkJztcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdjb21wYXJlJywgY2xhc3NOYW1lKTtcclxuICB9XHJcbiAgLyoqIHJlbW92ZXMgcmVwZWF0ZWQgYWRkZWQgYW5kIHJlbW92ZWQgdGFncyAqL1xyXG4gIHByaXZhdGUgX2NvbGxhcHNlKCkge1xyXG4gICAgY29uc3QgZWxzID0gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNvbXBhcmUnKTtcclxuICAgIGxldCBwcmV2U3RhdGU6IENvbXBhcmVTdGF0ZSA9IENvbXBhcmVTdGF0ZS5VbmNoYW5nZWQ7XHJcbiAgICBmb3IgKGxldCBpID0gZWxzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgIGNvbnN0IGVsID0gZWxzW2ldO1xyXG4gICAgICBsZXQgc3RhdGU6IENvbXBhcmVTdGF0ZTtcclxuICAgICAgaWYgKGVsLmNsYXNzTGlzdC5jb250YWlucygnYWRkZWQnKSlcclxuICAgICAgICBzdGF0ZSA9IENvbXBhcmVTdGF0ZS5BZGRlZDtcclxuICAgICAgZWxzZSBpZiAoZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdyZW1vdmVkJykpXHJcbiAgICAgICAgc3RhdGUgPSBDb21wYXJlU3RhdGUuUmVtb3ZlZDtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgc3RhdGUgPSBDb21wYXJlU3RhdGUuVW5jaGFuZ2VkO1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwcmV2U3RhdGUgPT09IHN0YXRlKSB7XHJcbiAgICAgICAgY29uc3QgbGFiZWxFbCA9IGVsLnF1ZXJ5U2VsZWN0b3IoJy5sYWJlbCcpO1xyXG4gICAgICAgIGxhYmVsRWwgJiYgbGFiZWxFbC5yZW1vdmUoKTtcclxuICAgICAgfVxyXG4gICAgICBwcmV2U3RhdGUgPSBzdGF0ZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
344
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi1jb21wYXJlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29tcG9zZS92ZXJzaW9uLWNvbXBhcmUvdmVyc2lvbi1jb21wYXJlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBc0IsUUFBUSxFQUFFLElBQUksRUFBb0MsUUFBUSxFQUFpQyxNQUFNLGVBQWUsQ0FBQztBQUVoSyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7O0FBS2hELElBQUssWUFLSjtBQUxELFdBQUssWUFBWTtJQUNmLHNEQUFZLENBQUE7SUFDWix5REFBYSxDQUFBO0lBQ2IsaURBQVMsQ0FBQTtJQUNULHVEQUFZLENBQUE7QUFDZCxDQUFDLEVBTEksWUFBWSxLQUFaLFlBQVksUUFLaEI7QUFFRCxNQUFNLE9BQWdCLG9CQUFvQjtDQUl6QztBQUNELE1BQU07QUFFTixNQUFNLE9BQ0UscUJBQXNCLFNBQVEsb0JBQW9CO0lBVXhELFlBQ3NCLFlBQXFDLEVBQzdCLFFBQWlDLEVBQ3JCLE9BQThCO1FBQ3RFLEtBQUssRUFBRSxDQUFDO1FBSFksaUJBQVksR0FBWixZQUFZLENBQXlCO1FBQzdCLGFBQVEsR0FBUixRQUFRLENBQXlCO1FBQ3JCLFlBQU8sR0FBUCxPQUFPLENBQXVCO0lBRXhFLENBQUM7SUFURCxJQUFXLFNBQVMsS0FBZ0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUM3RCxJQUFXLElBQUksS0FBVSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVFLElBQVcsT0FBTyxLQUFVLE9BQU8s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QixJQUFJLEtBQW1CLENBQUM7WUFDeEIsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7Z0JBQ2hDLEtBQUssR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO2lCQUN4QixJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztnQkFDdkMsS0FBSyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUM7aUJBQzFCO2dCQUNILEtBQUssR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDO2dCQUMvQixTQUFTO2FBQ1Y7WUFDRCxJQUFJLFNBQVMsS0FBSyxLQUFLLEVBQUU7Z0JBQ3ZCLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzNDLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDN0I7WUFDRCxTQUFTLEdBQUcsS0FBSyxDQUFDO1NBQ25CO0lBQ0gsQ0FBQzs7b0hBOUVLLHVCQUF1Qjt3R0FBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBRjlCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsd0NBQXdDLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRTs7MEJBWXZGLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUFJLElBQUk7OzBCQUVoQixRQUFRO3FFQVhtQixTQUFTO3NCQUF0QyxLQUFLO3VCQUFDLGlCQUFpQjtnQkFDVyxPQUFPO3NCQUF6QyxLQUFLO3VCQUFDLHNCQUFzQjtnQkFFRyxRQUFRO3NCQUF2QyxLQUFLO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElucHV0LCBEaXJlY3RpdmUsIE9uSW5pdCwgRWxlbWVudFJlZiwgT3B0aW9uYWwsIEhvc3QsIEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBTa2lwU2VsZiwgVmlld0NvbnRhaW5lclJlZiwgVGVtcGxhdGVSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xyXG5pbXBvcnQgeyBpc09iamVjdCB9IGZyb20gXCIuLi8uLi9jb3JlL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBGaWVsZEluZm8gfSBmcm9tIFwiLi4vLi4vY29yZS9tb2RlbHNcIjtcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL3RyYW5zbGF0ZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFZlcnNpb25Db21wYXJlQ29tcG9uZW50IH0gZnJvbSBcIi4vdmVyc2lvbi1jb21wYXJlLmNvbXBvbmVudFwiO1xyXG5cclxuZW51bSBDb21wYXJlU3RhdGUge1xyXG4gIFJlbW92ZWQgPSAtMSxcclxuICBVbmNoYW5nZWQgPSAwLFxyXG4gIEFkZGVkID0gMSxcclxuICBNb2RpZmllZCA9IDJcclxufVxyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbXBhcmVEaXJlY3RpdmVCYXNlIHtcclxuICBhYnN0cmFjdCBnZXQgYmFzZSgpOiBhbnk7XHJcbiAgYWJzdHJhY3QgZ2V0IHZlcnNpb24oKTogYW55O1xyXG4gIGFic3RyYWN0IGdldCBzdHJ1Y3R1cmUoKTogRmllbGRJbmZvO1xyXG59XHJcbi8qKiAqL1xyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbYml6ZG9jQ29tcGFyZUdyb3VwXSxbYml6ZG9jQ29tcGFyZUFycmF5XScgfSlcclxuZXhwb3J0XHJcbiAgY2xhc3MgQ29tcGFyZUdyb3VwRGlyZWN0aXZlIGV4dGVuZHMgQ29tcGFyZURpcmVjdGl2ZUJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgnYml6ZG9jQ29tcGFyZUdyb3VwJykgbmFtZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX2tleXM6IHN0cmluZ1tdO1xyXG4gIHByaXZhdGUgX3N0cnVjdHVyZTogRmllbGRJbmZvO1xyXG4gIHByaXZhdGUgX2Jhc2U6IGFueTtcclxuICBwcml2YXRlIF92ZXJzaW9uOiBhbnk7XHJcbiAgcHVibGljIGdldCBzdHJ1Y3R1cmUoKTogRmllbGRJbmZvIHsgcmV0dXJuIHRoaXMuX3N0cnVjdHVyZTsgfVxyXG4gIHB1YmxpYyBnZXQgYmFzZSgpOiBhbnkgeyByZXR1cm4gdGhpcy5fYmFzZSA/IHRoaXMuX2Jhc2VbdGhpcy5uYW1lXSA6IG51bGw7IH1cclxuICBwdWJsaWMgZ2V0IHZlcnNpb24oKTogYW55IHsgcmV0dXJuIHRoaXMuX3ZlcnNpb25bdGhpcy5uYW1lXTsgfVxyXG4gIHB1YmxpYyBnZXQga2V5cygpOiBzdHJpbmdbXSB7IHJldHVybiB0aGlzLl9rZXlzOyB9XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9jb21wYXJpc2lvbjogVmVyc2lvbkNvbXBhcmVDb21wb25lbnQsXHJcbiAgICBAT3B0aW9uYWwoKSBASG9zdCgpIHByaXZhdGUgX2NvbnRleHQ6IENvbXBhcmVDb250ZXh0RGlyZWN0aXZlLFxyXG4gICAgQE9wdGlvbmFsKCkgQEhvc3QoKSBAU2tpcFNlbGYoKSBwcml2YXRlIF9wYXJlbnQ6IENvbXBhcmVHcm91cERpcmVjdGl2ZSkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuX2NvbXBhcmlzaW9uKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5fY29udGV4dCkge1xyXG4gICAgICB0aGlzLl9zdHJ1Y3R1cmUgPSB0aGlzLl9jb250ZXh0LnN0cnVjdHVyZS5maWVsZHMuZmluZChlID0+IGUubmFtZSA9PT0gdGhpcy5uYW1lKTtcclxuICAgICAgdGhpcy5fYmFzZSA9IHRoaXMuX2NvbnRleHQuYmFzZTtcclxuICAgICAgdGhpcy5fdmVyc2lvbiA9IHRoaXMuX2NvbnRleHQudmVyc2lvbjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuX3BhcmVudCkge1xyXG4gICAgICB0aGlzLl9zdHJ1Y3R1cmUgPSB0aGlzLl9wYXJlbnQuc3RydWN0dXJlLmZpZWxkcy5maW5kKGUgPT4gZS5uYW1lID09PSB0aGlzLm5hbWUpO1xyXG4gICAgICB0aGlzLl9iYXNlID0gdGhpcy5fcGFyZW50LmJhc2U7XHJcbiAgICAgIHRoaXMuX3ZlcnNpb24gPSB0aGlzLl9wYXJlbnQudmVyc2lvbjtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLl9zdHJ1Y3R1cmUgPSB0aGlzLl9jb21wYXJpc2lvbi5mb3JtLmZpZWxkcy5maW5kKGUgPT4gZS5uYW1lID09PSB0aGlzLm5hbWUpO1xyXG4gICAgICBjb25zdCB7IGN1cnJlbnRWZXJzaW9uLCBiYXNlVmVyc2lvbiB9ID0gdGhpcy5fY29tcGFyaXNpb247XHJcbiAgICAgIHRoaXMuX2Jhc2UgPSBiYXNlVmVyc2lvbjtcclxuICAgICAgdGhpcy5fdmVyc2lvbiA9IGN1cnJlbnRWZXJzaW9uO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLl9zdHJ1Y3R1cmUpIHRocm93IGBObyBmb3JtIGZpZWxkIHdpdGggbmFtZSAke3RoaXMubmFtZX1gO1xyXG4gICAgaWYgKCF0aGlzLl9zdHJ1Y3R1cmUuaXNPYmplY3QpIHRocm93IGBiaXpkb2NDb21wYXJlR3JvdXAgJHt0aGlzLm5hbWV9YDtcclxuICAgIHRoaXMuc3RydWN0dXJlLmlzQXJyYXkgJiYgdGhpcy5fbm9ybWFsaXplKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX25vcm1hbGl6ZSgpIHtcclxuICAgIHRoaXMuX2tleXMgPSB0aGlzLnN0cnVjdHVyZS5maWVsZHMuZmlsdGVyKGYgPT4gZi5rZXkpLm1hcChrID0+IGsubmFtZSk7XHJcbiAgICB0aGlzLmJhc2UuZm9yRWFjaCgoYiwgaSkgPT4gIXRoaXMudmVyc2lvbi5maW5kKHYgPT4gdGhpcy5fa2V5cy5ldmVyeShrID0+IHZba10gPT09IGJba10pKSAvKiBkb2Vzbid0IGhhdmUgYSB2ZXJzaW9uICovICYmXHJcbiAgICAgIHRoaXMudmVyc2lvbi5zcGxpY2UoaSwgMCwgT2JqZWN0LmFzc2lnbih7IF9jb21wYXJlOiBDb21wYXJlU3RhdGUuUmVtb3ZlZCB9LCBiKSkpO1xyXG4gICAgdGhpcy52ZXJzaW9uLmZvckVhY2godiA9PiB7XHJcbiAgICAgIGlmICh2WydfY29tcGFyZSddID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBjb25zdCBiYXNlID0gdGhpcy5iYXNlLmZpbmQoYiA9PiB0aGlzLl9rZXlzLmV2ZXJ5KGsgPT4gYltrXSA9PT0gdltrXSkpO1xyXG4gICAgICAgIGlmICghYmFzZSlcclxuICAgICAgICAgIHZbJ19jb21wYXJlJ10gPSBDb21wYXJlU3RhdGUuQWRkZWQ7XHJcbiAgICAgICAgZWxzZSBpZiAoSlNPTi5zdHJpbmdpZnkodikgIT09IEpTT04uc3RyaW5naWZ5KGJhc2UpKVxyXG4gICAgICAgICAgdlsnX2NvbXBhcmUnXSA9IENvbXBhcmVTdGF0ZS5Nb2RpZmllZDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbi8qKiAqL1xyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbYml6ZG9jQ29tcGFyZU5hbWVdJyB9KVxyXG5leHBvcnRcclxuICBjbGFzcyBDb21wYXJlTmFtZURpcmVjdGl2ZSBleHRlbmRzIENvbXBhcmVEaXJlY3RpdmVCYXNlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBwcml2YXRlIF9uYW1lOiBzdHJpbmdbXTtcclxuICBASW5wdXQoJ2JpemRvY0NvbXBhcmVOYW1lJykgc2V0IG5hbWUodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX25hbWUgPSB2YWwuc3BsaXQoJywnKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfc3RydWN0dXJlOiBGaWVsZEluZm87XHJcbiAgcHJpdmF0ZSBfYmFzZTogYW55O1xyXG4gIHByaXZhdGUgX3ZlcnNpb246IGFueTtcclxuICBwcml2YXRlIF9zdGF0ZTogQ29tcGFyZVN0YXRlID0gQ29tcGFyZVN0YXRlLlVuY2hhbmdlZDtcclxuICBwdWJsaWMgZ2V0IHN0cnVjdHVyZSgpOiBGaWVsZEluZm8geyByZXR1cm4gdGhpcy5fc3RydWN0dXJlOyB9XHJcbiAgcHVibGljIGdldCBiYXNlKCk6IGFueSB7IHJldHVybiB0aGlzLl9iYXNlID8gdGhpcy5fYmFzZVt0aGlzLl9uYW1lWzBdXSA6IG51bGw7IH1cclxuICBwdWJsaWMgZ2V0IHZlcnNpb24oKTogYW55IHsgcmV0dXJuIHRoaXMuX3ZlcnNpb25bdGhpcy5fbmFtZVswXV07IH1cclxuICBnZXQgc3RhdGUoKTogQ29tcGFyZVN0YXRlIHsgcmV0dXJuIHRoaXMuX3N0YXRlIH07XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9jb21wYXJpc2lvbjogVmVyc2lvbkNvbXBhcmVDb21wb25lbnQsXHJcbiAgICBAT3B0aW9uYWwoKSBASG9zdCgpIHByaXZhdGUgX2NvbnRleHQ6IENvbXBhcmVDb250ZXh0RGlyZWN0aXZlLFxyXG4gICAgQE9wdGlvbmFsKCkgQEhvc3QoKSBwcml2YXRlIF9ncm91cDogQ29tcGFyZUdyb3VwRGlyZWN0aXZlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfZG9tOiBEb21TYW5pdGl6ZXIsXHJcbiAgICBwcml2YXRlIF9lbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuX2NvbXBhcmlzaW9uKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5fY29udGV4dCkge1xyXG4gICAgICB0aGlzLl9zdHJ1Y3R1cmUgPSB0aGlzLl9jb250ZXh0LnN0cnVjdHVyZS5maWVsZHMuZmluZChlID0+IGUubmFtZSA9PT0gdGhpcy5fbmFtZVswXSk7XHJcbiAgICAgIHRoaXMuX2Jhc2UgPSB0aGlzLl9jb250ZXh0LmJhc2U7XHJcbiAgICAgIHRoaXMuX3ZlcnNpb24gPSB0aGlzLl9jb250ZXh0LnZlcnNpb247XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLl9ncm91cCkge1xyXG4gICAgICB0aGlzLl9zdHJ1Y3R1cmUgPSB0aGlzLl9ncm91cC5zdHJ1Y3R1cmUuZmllbGRzLmZpbmQoZSA9PiBlLm5hbWUgPT09IHRoaXMuX25hbWVbMF0pO1xyXG4gICAgICB0aGlzLl9iYXNlID0gdGhpcy5fZ3JvdXAuYmFzZTtcclxuICAgICAgdGhpcy5fdmVyc2lvbiA9IHRoaXMuX2dyb3VwLnZlcnNpb247XHJcbiAgICBpZiAoIXRoaXMuX3N0cnVjdHVyZSkgdGhyb3cgYE5vIGZvcm0gZmllbGQgd2l0aCBuYW1lICR7dGhpcy5fbmFtZVswXX1gO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuX3N0cnVjdHVyZSA9IHRoaXMuX2NvbXBhcmlzaW9uLmZvcm0uZmllbGRzLmZpbmQoZSA9PiBlLm5hbWUgPT09IHRoaXMuX25hbWVbMF0pO1xyXG4gICAgICBjb25zdCB7IGN1cnJlbnRWZXJzaW9uLCBiYXNlVmVyc2lvbiB9ID0gdGhpcy5fY29tcGFyaXNpb247XHJcbiAgICAgIHRoaXMuX2Jhc2UgPSBiYXNlVmVyc2lvbjtcclxuICAgICAgdGhpcy5fdmVyc2lvbiA9IGN1cnJlbnRWZXJzaW9uO1xyXG4gICAgfVxyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuX2NvbXBhcmlzaW9uKSByZXR1cm47XHJcbiAgICAvLyBpZiBvYmplY3QgaGFzIHN0YXRlXHJcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuX3ZlcnNpb25bJ19jb21wYXJlJ107XHJcbiAgICBpZiAoc3RhdGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBzd2l0Y2ggKHN0YXRlKSB7XHJcbiAgICAgICAgY2FzZSBDb21wYXJlU3RhdGUuUmVtb3ZlZDpcclxuICAgICAgICAgIHRoaXMuX2RlY29yYXRlKCdyZW1vdmVkJywgJ0RlbGV0ZWQnKTtcclxuICAgICAgICAgIHRoaXMuX3N0YXRlID0gc3RhdGU7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgY2FzZSBDb21wYXJlU3RhdGUuQWRkZWQ6XHJcbiAgICAgICAgICB0aGlzLl9kZWNvcmF0ZSgnYWRkZWQnLCAnQWRkZWQnKTtcclxuICAgICAgICAgIHRoaXMuX3N0YXRlID0gc3RhdGU7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHZlcnNpb25EYXRhOiB7IFtmaWVsZDogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuICAgIC8vIGl0ZXJhdGUgbmFtZXNcclxuICAgIGxldCBuYW1lOiBzdHJpbmcsIGkgPSAwO1xyXG4gICAgd2hpbGUgKGkgPCB0aGlzLl9uYW1lLmxlbmd0aCkge1xyXG4gICAgICBuYW1lID0gdGhpcy5fbmFtZVtpXTtcclxuICAgICAgaWYgKCF0aGlzLl9iYXNlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3ZlcnNpb25bbmFtZV0gIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgIHRoaXMuX3N0YXRlID0gQ29tcGFyZVN0YXRlLkFkZGVkO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuX3ZlcnNpb25bbmFtZV0gIT09IHRoaXMuX2Jhc2VbbmFtZV0pIHtcclxuICAgICAgICBpZiAodGhpcy5fdmVyc2lvbltuYW1lXSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLl92ZXJzaW9uW25hbWVdID0gdGhpcy5fYmFzZVtuYW1lXTtcclxuICAgICAgICAgIHZlcnNpb25EYXRhW25hbWVdID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgdGhpcy5fc3RhdGUgPSBDb21wYXJlU3RhdGUuUmVtb3ZlZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5fYmFzZVtuYW1lXSA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgdGhpcy5fc3RhdGUgPSBDb21wYXJlU3RhdGUuQWRkZWQ7XHJcbiAgICAgICAgZWxzZSBpZiAoSlNPTi5zdHJpbmdpZnkodGhpcy5fdmVyc2lvbltuYW1lXSkgIT09IEpTT04uc3RyaW5naWZ5KHRoaXMuX2Jhc2VbbmFtZV0pKSB7XHJcbiAgICAgICAgICAvLyBzdG9yZSB2ZXJzaW9uIGRhdGFcclxuICAgICAgICAgIHZlcnNpb25EYXRhW25hbWVdID0gdGhpcy5fdmVyc2lvbltuYW1lXTtcclxuICAgICAgICAgIHRoaXMuX3ZlcnNpb25bbmFtZV0gPSB0aGlzLl9iYXNlW25hbWVdO1xyXG4gICAgICAgICAgdGhpcy5fc3RhdGUgPSBDb21wYXJlU3RhdGUuTW9kaWZpZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGkrKztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9zdGF0ZSAhPT0gQ29tcGFyZVN0YXRlLlVuY2hhbmdlZClcclxuICAgICAgc3dpdGNoICh0aGlzLl9zdGF0ZSkge1xyXG4gICAgICAgIGNhc2UgQ29tcGFyZVN0YXRlLlJlbW92ZWQ6XHJcbiAgICAgICAgICAvLyBkZXRlY3Qgd2l0aCBiYXNlIHZhbHVlKHMpXHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLl9kZWNvcmF0ZSgncmVtb3ZlZCcsICdEZWxldGVkJyk7XHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fdmVyc2lvbiwgdmVyc2lvbkRhdGEpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbXBhcmVTdGF0ZS5BZGRlZDpcclxuICAgICAgICAgIHRoaXMuX2RlY29yYXRlKCdhZGRlZCcsICdBZGRlZCcpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb21wYXJlU3RhdGUuTW9kaWZpZWQ6XHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZlcnNpb25IVE1MID0gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LmlubmVySFRNTDtcclxuLy8gICAgICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgLy8gZGV0ZWN0IGFnYWluIHdpdGggYmFzZSB2YWx1ZShzKVxyXG4gICAgICAgICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICBjb25zdCBvcmlnaW5hbEhUTUwgPSB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MO1xyXG4gICAgICAgICAgICAgIC8vIHJlc3RvcmUgdmVyc2lvbiBodG1sXHJcbiAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IHZlcnNpb25IVE1MO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGxhYmVsRWwgPSB0aGlzLl9kZWNvcmF0ZSgnbW9kaWZpZWQnLCAnTW9kaWZpZWQnKTtcclxuICAgICAgICAgICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgICAgICAgICAgICBlbC5jbGFzc05hbWUgPSAnb3JpZ2luYWwnO1xyXG4gICAgICAgICAgICAgIGVsLmlubmVySFRNTCA9IG9yaWdpbmFsSFRNTDsgLy90aGlzLl9kb20uc2FuaXRpemUoKTtcclxuICAgICAgICAgICAgICBsYWJlbEVsLmFwcGVuZChlbCk7XHJcbiAgICAgICAgICAgICAgLy8gcmVzdG9yZSB2ZXJzaW9uIHZhbHVlKHMpXHJcbiAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl92ZXJzaW9uLCB2ZXJzaW9uRGF0YSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgfVxyXG4gIH1cclxuICBwcml2YXRlIF9kZWNvcmF0ZShjbGFzc05hbWU6IHN0cmluZywgbGFiZWw6IHN0cmluZyk6IEhUTUxFbGVtZW50IHtcclxuICAgIHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdjb21wYXJlJywgY2xhc3NOYW1lKTtcclxuICAgIGNvbnN0IGxhYmVsQ29udGFpbmVyRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIGxhYmVsQ29udGFpbmVyRWwuY2xhc3NOYW1lID0gJ2xhYmVsJztcclxuICAgIGNvbnN0IGxhYmVsRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XHJcbiAgICBsYWJlbEVsLmlubmVyVGV4dCA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQobGFiZWwpO1xyXG4gICAgbGFiZWxDb250YWluZXJFbC5hcHBlbmQobGFiZWxFbCk7XHJcbiAgICB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQobGFiZWxDb250YWluZXJFbCk7XHJcbiAgICByZXR1cm4gbGFiZWxFbDtcclxuICB9XHJcbn1cclxuLyoqICovXHJcbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tiaXpkb2NDb21wYXJlQ29udGV4dF0sW2JpemRvY0NvbXBhcmVdJywgZXhwb3J0QXM6ICdiaXpkb2NDb21wYXJlJyB9KVxyXG5leHBvcnRcclxuICBjbGFzcyBDb21wYXJlQ29udGV4dERpcmVjdGl2ZSBleHRlbmRzIENvbXBhcmVEaXJlY3RpdmVCYXNlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBwcml2YXRlIF92ZXJzaW9uOiB7fTtcclxuICBASW5wdXQoJ2JpemRvY0NvbXBhcmVPZicpIHNldCBjb21wYXJlT2YodmFsOiB7fSkgeyB0aGlzLl92ZXJzaW9uID0gdmFsOyB9XHJcbiAgQElucHV0KCdiaXpkb2NDb21wYXJlQ29udGV4dCcpIHNldCBjb250ZXh0KHZhbDoge30pIHsgdGhpcy5fdmVyc2lvbiA9IHZhbDsgfVxyXG4gIGdldCB2ZXJzaW9uKCk6IHt9IHsgcmV0dXJuIHRoaXMuX3ZlcnNpb247IH1cclxuICBASW5wdXQoJ2JpemRvY0NvbXBhcmVEZWNvcmF0ZScpIGRlY29yYXRlOiAnZ3JvdXAnIHwgJ3NpbmdsZScgfCAndGFibGUnO1xyXG4gIHByaXZhdGUgX2Jhc2U6IHt9O1xyXG4gIHB1YmxpYyBnZXQgYmFzZSgpOiB7fSB7IHJldHVybiB0aGlzLl9iYXNlOyB9XHJcbiAgcHVibGljIGdldCBzdHJ1Y3R1cmUoKTogRmllbGRJbmZvIHsgcmV0dXJuIHRoaXMuX2dyb3VwLnN0cnVjdHVyZTsgfVxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfY29tcGFyaXNpb246IFZlcnNpb25Db21wYXJlQ29tcG9uZW50LFxyXG4gICAgQE9wdGlvbmFsKCkgQEhvc3QoKSBwcml2YXRlIF9ncm91cDogQ29tcGFyZUdyb3VwRGlyZWN0aXZlLFxyXG4gICAgcHJpdmF0ZSBfdmM6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF90ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PixcclxuICAgIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5kZWNvcmF0ZSA9IF9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGFnTmFtZSA9PT0gJ1RSJyA/ICd0YWJsZScgOiAnZ3JvdXAnO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9jb21wYXJpc2lvbikge1xyXG4gICAgICBpZiAoIXRoaXMuX2dyb3VwKSB0aHJvdyBgTWlzc2luZyBlbmNsb3NpbmcgYml6ZG9jQ29tcGFyZUdyb3VwIGRpcmVjdGl2ZWA7XHJcbiAgICAgIGlmICghaXNPYmplY3QodGhpcy52ZXJzaW9uKSkgdGhyb3cgYFtiaXpkb2NDb21wYXJlQ29udGV4dF0gc3ludGF4YDtcclxuICAgICAgdGhpcy5fYmFzZSA9IHRoaXMuX2dyb3VwLmJhc2UuZmluZChiID0+IHRoaXMuX2dyb3VwLmtleXMuZXZlcnkoayA9PiBiW2tdID09PSB0aGlzLnZlcnNpb25ba10pKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl90ZW1wbGF0ZSkge1xyXG4gICAgICB0aGlzLl92Yy5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fdGVtcGxhdGUsIHtcclxuICAgICAgICAkaW1wbGljaXQ6IHRoaXMuX2Jhc2VcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5fY29tcGFyaXNpb24pIHJldHVybjtcclxuICAgIHN3aXRjaCAodGhpcy5kZWNvcmF0ZSkge1xyXG4gICAgICBjYXNlICd0YWJsZSc6XHJcbiAgICAgICAgdGhpcy5fdGFibGUoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZ3JvdXAnOlxyXG4gICAgICAgIHRoaXMuX2NvbGxhcHNlKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKiAqL1xyXG4gIHByaXZhdGUgX3RhYmxlKCkge1xyXG4gICAgbGV0IGNsYXNzTmFtZTogc3RyaW5nO1xyXG4gICAgc3dpdGNoICh0aGlzLl92ZXJzaW9uWydfY29tcGFyZSddIGFzIENvbXBhcmVTdGF0ZSkge1xyXG4gICAgICBjYXNlIENvbXBhcmVTdGF0ZS5BZGRlZDpcclxuICAgICAgICBjbGFzc05hbWUgPSAnYWRkZWQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbXBhcmVTdGF0ZS5SZW1vdmVkOlxyXG4gICAgICAgIGNsYXNzTmFtZSA9ICdyZW1vdmVkJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb21wYXJlU3RhdGUuTW9kaWZpZWQ6XHJcbiAgICAgICAgY2xhc3NOYW1lID0gJ21vZGlmaWVkJztcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdjb21wYXJlJywgY2xhc3NOYW1lKTtcclxuICB9XHJcbiAgLyoqIHJlbW92ZXMgcmVwZWF0ZWQgYWRkZWQgYW5kIHJlbW92ZWQgdGFncyAqL1xyXG4gIHByaXZhdGUgX2NvbGxhcHNlKCkge1xyXG4gICAgY29uc3QgZWxzID0gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNvbXBhcmUnKTtcclxuICAgIGxldCBwcmV2U3RhdGU6IENvbXBhcmVTdGF0ZSA9IENvbXBhcmVTdGF0ZS5VbmNoYW5nZWQ7XHJcbiAgICBmb3IgKGxldCBpID0gZWxzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgIGNvbnN0IGVsID0gZWxzW2ldO1xyXG4gICAgICBsZXQgc3RhdGU6IENvbXBhcmVTdGF0ZTtcclxuICAgICAgaWYgKGVsLmNsYXNzTGlzdC5jb250YWlucygnYWRkZWQnKSlcclxuICAgICAgICBzdGF0ZSA9IENvbXBhcmVTdGF0ZS5BZGRlZDtcclxuICAgICAgZWxzZSBpZiAoZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdyZW1vdmVkJykpXHJcbiAgICAgICAgc3RhdGUgPSBDb21wYXJlU3RhdGUuUmVtb3ZlZDtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgc3RhdGUgPSBDb21wYXJlU3RhdGUuVW5jaGFuZ2VkO1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwcmV2U3RhdGUgPT09IHN0YXRlKSB7XHJcbiAgICAgICAgY29uc3QgbGFiZWxFbCA9IGVsLnF1ZXJ5U2VsZWN0b3IoJy5sYWJlbCcpO1xyXG4gICAgICAgIGxhYmVsRWwgJiYgbGFiZWxFbC5yZW1vdmUoKTtcclxuICAgICAgfVxyXG4gICAgICBwcmV2U3RhdGUgPSBzdGF0ZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
@@ -1,3 +1,3 @@
|
|
1
1
|
export class AuthenticationImpl {
|
2
2
|
}
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvcmUvYXV0aGVudGljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFnQixrQkFBa0I7Q0FJdkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBdXRoZW50aWNhdGlvbkltcGwge1xyXG4gIGFic3RyYWN0IGF1dGhvcml6ZSgpOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgYWJzdHJhY3Qgc2lnbk91dD8oKTogUHJvbWlzZTxhbnk+
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvcmUvYXV0aGVudGljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFnQixrQkFBa0I7Q0FJdkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBdXRoZW50aWNhdGlvbkltcGwge1xyXG4gIGFic3RyYWN0IGF1dGhvcml6ZSgpOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgYWJzdHJhY3Qgc2lnbk91dD8oKTogUHJvbWlzZTxhbnk+O1xyXG4gIGFic3RyYWN0IGdldEFjY2Vzc1Rva2VuKCk6IHN0cmluZztcclxufVxyXG4iXX0=
|
@@ -14,4 +14,4 @@ export var OpenPolicy;
|
|
14
14
|
OpenPolicy[OpenPolicy["Dialog"] = 672] = "Dialog";
|
15
15
|
})(OpenPolicy || (OpenPolicy = {}));
|
16
16
|
export const DEFAULT_POLICY = OpenPolicy.Pane;
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFLckQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUFlLFFBQVEsQ0FBQyxDQUFDO0FBdUJ4RSxNQUFNLENBQU4sSUFBWSxVQVdYO0FBWEQsV0FBWSxVQUFVO0lBQ3BCLDJDQUFhLENBQUE7SUFDYiw2Q0FBYyxDQUFBO0lBQ2QsNkNBQWMsQ0FBQTtJQUNkLG1EQUFpQixDQUFBO0lBQ2pCLGtEQUFnQixDQUFBO0lBQ2hCLHdEQUFtQixDQUFBO0lBQ25CLGdEQUFlLENBQUE7SUFDZiwyQ0FBWSxDQUFBO0lBQ1osMkRBQW9CLENBQUE7SUFDcEIsaURBQXdELENBQUE7QUFDMUQsQ0FBQyxFQVhXLFVBQVUsS0FBVixVQUFVLFFBV3JCO0FBRUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRBcHBlYXJhbmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRm9sZGVyQ29sdW1uIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IEJJWkRPQ19DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48Qml6RG9jQ29uZmlnPignYml6ZG9jJyk7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBhbmVSb3V0ZSB7XHJcbiAgcGF0aDogc3RyaW5nO1xyXG4gIGd1aWRlPzogc3RyaW5nO1xyXG4gIGNvbXBvbmVudD86IFR5cGU8YW55PjtcclxuICByZXNvbHZlPzogeyBba2V5OiBzdHJpbmddOiBUeXBlPFBhbmVSZXNvbHZlPGFueT4+IH07XHJcbiAgY2FuRGlzbWlzcz86IFR5cGU8Q2FuRGlzbWlzczxhbnk+PjtcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIGhlbHA/OiBzdHJpbmc7XHJcbiAgY2hpbGRyZW4/OiBQYW5lUm91dGVbXTtcclxuICBwb2xpY3k/OiBPcGVuUG9saWN5O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQYXJhbU1hcCA9IHsgW2tleTogc3RyaW5nXTogYW55IH07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBhbmVSZXNvbHZlPFQ+IHtcclxuICBvblJlc29sdmUocGFyYW1zOiBQYXJhbU1hcCwgcXVlcnlQYXJhbXM/OiBQYXJhbU1hcCk6IE9ic2VydmFibGU8VD4gfCBQcm9taXNlPFQ+
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFLckQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUFlLFFBQVEsQ0FBQyxDQUFDO0FBdUJ4RSxNQUFNLENBQU4sSUFBWSxVQVdYO0FBWEQsV0FBWSxVQUFVO0lBQ3BCLDJDQUFhLENBQUE7SUFDYiw2Q0FBYyxDQUFBO0lBQ2QsNkNBQWMsQ0FBQTtJQUNkLG1EQUFpQixDQUFBO0lBQ2pCLGtEQUFnQixDQUFBO0lBQ2hCLHdEQUFtQixDQUFBO0lBQ25CLGdEQUFlLENBQUE7SUFDZiwyQ0FBWSxDQUFBO0lBQ1osMkRBQW9CLENBQUE7SUFDcEIsaURBQXdELENBQUE7QUFDMUQsQ0FBQyxFQVhXLFVBQVUsS0FBVixVQUFVLFFBV3JCO0FBRUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRBcHBlYXJhbmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRm9sZGVyQ29sdW1uIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IEJJWkRPQ19DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48Qml6RG9jQ29uZmlnPignYml6ZG9jJyk7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBhbmVSb3V0ZSB7XHJcbiAgcGF0aDogc3RyaW5nO1xyXG4gIGd1aWRlPzogc3RyaW5nO1xyXG4gIGNvbXBvbmVudD86IFR5cGU8YW55PjtcclxuICByZXNvbHZlPzogeyBba2V5OiBzdHJpbmddOiBUeXBlPFBhbmVSZXNvbHZlPGFueT4+IH07XHJcbiAgY2FuRGlzbWlzcz86IFR5cGU8Q2FuRGlzbWlzczxhbnk+PjtcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIGhlbHA/OiBzdHJpbmc7XHJcbiAgY2hpbGRyZW4/OiBQYW5lUm91dGVbXTtcclxuICBwb2xpY3k/OiBPcGVuUG9saWN5O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQYXJhbU1hcCA9IHsgW2tleTogc3RyaW5nXTogYW55IH07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBhbmVSZXNvbHZlPFQ+IHtcclxuICBvblJlc29sdmUocGFyYW1zOiBQYXJhbU1hcCwgcXVlcnlQYXJhbXM/OiBQYXJhbU1hcCk6IE9ic2VydmFibGU8VD4gfCBQcm9taXNlPFQ+IHwgVDtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIENhbkRpc21pc3M8VD4ge1xyXG4gIG9uRGlzbWlzcyhjb21wb25lbnQ6IFQpOiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPiB8IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIE9wZW5Qb2xpY3kge1xyXG4gIFBhbmUgPSAxIDw8IDAsXHJcbiAgQ2xlYXIgPSAxIDw8IDEsXHJcbiAgRGVmZXIgPSAxIDw8IDIsXHJcbiAgUGlubmFibGUgPSAxIDw8IDMsXHJcbiAgU3RyZXRjaCA9IDEgPDwgNCxcclxuICBFeHBhbmRhYmxlID0gMSA8PCA1LFxyXG4gIFRvZ2dsZSA9IDEgPDwgNixcclxuICBUYWIgPSAxIDw8IDcsXHJcbiAgRGlzbWlzc2FibGUgPSAxIDw8IDgsXHJcbiAgRGlhbG9nID0gMSA8PCA5IHwgT3BlblBvbGljeS5UYWIgfCBPcGVuUG9saWN5LkV4cGFuZGFibGUsXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX1BPTElDWSA9IE9wZW5Qb2xpY3kuUGFuZTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQml6RG9jQ2hpbGRDb25maWcge1xyXG4gIGNvbXBvbmVudHM6IFR5cGU8YW55PltdO1xyXG4gIHJvdXRlcz86IFBhbmVSb3V0ZVtdO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgVGhlbWUge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIHByaW1hcnk6IHN0cmluZztcclxuICBhY2NlbnQ6IHN0cmluZztcclxuICBjb2xvcjogc3RyaW5nO1xyXG4gIGRhcms/OiBib29sZWFuO1xyXG59XHJcblxyXG4vKiogQml6RG9jIGFwcCBvcHRpb25zICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQml6RG9jQ29uZmlnIHtcclxuICBhcHBlYXJhbmNlPzogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZTtcclxuICBjdXJyZW5jeUNvZGU/OiBzdHJpbmc7XHJcbiAgLyoqIGF2YWlsYWJsZSB1c2VyIGludGVyZmFjZSBsYW5ndWFnZXMgKi9cclxuICB0aGVtZXM/OiBUaGVtZVtdO1xyXG4gIGxhbmd1YWdlcz86IHN0cmluZ1tdO1xyXG4gIGFwcFRpdGxlPzogc3RyaW5nO1xyXG4gIGZpcmViYXNlPzogRmlyZWJhc2VTZXR0aW5ncztcclxuICBjaGF0aW5nPzogQ2hhdFNldHRpbmdzIHwgYm9vbGVhbjtcclxuICBjb21tZW50cz86IENvbW1lbnRzU2V0dGluZ3M7XHJcbiAgbWFwcz86IEdvb2dsZU1hcHNTZXR0aW5ncyB8IGJvb2xlYW47XHJcbiAgZm9ybWF0cz86IEZvcm1hdHNTZXR0aW5ncztcclxuICByb3V0ZXM/OiBQYW5lUm91dGVbXTtcclxuICBjb21wb25lbnRzOiBUeXBlPGFueT5bXTtcclxuICBzY2hlZHVsZXI/OiBTY2hlZHVsZXJTZXR0aW5ncyB8IGJvb2xlYW47XHJcbiAgZm9sZGVycz86IEZvbGRlcnNTZXR0aW5ncztcclxuICBhbmFseXNpcz86IEFuYWx5c2lzU2V0dGluZ3MgfCBib29sZWFuO1xyXG59XHJcbmV4cG9ydCB0eXBlIFNjb3BlVHlwZSA9ICdwYXR0ZXJucycgfCAncG9zaXRpb25zJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQW5hbHlzaXNTZXR0aW5ncyB7XHJcbn1cclxuZXhwb3J0XHJcbiAgaW50ZXJmYWNlIFNjaGVkdWxlclNldHRpbmdzIHtcclxuXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRm9sZGVyc1NldHRpbmdzIHtcclxuICBjdWJlPzogc3RyaW5nO1xyXG4gIGF4ZXM/OiBzdHJpbmdbXTtcclxuICBjb2x1bW5zPzogRm9sZGVyQ29sdW1uW107XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBGb3JtYXRzU2V0dGluZ3Mge1xyXG4gIGRhdGU/OiBzdHJpbmc7XHJcbiAgZGF0ZVRpbWU/OiBzdHJpbmc7XHJcbiAgZnJhY3Rpb25EaWdpdHM/OiBudW1iZXI7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBDb21tZW50c1NldHRpbmdzIHtcclxuICBwcmVzZXJ2ZURyYWZ0PzogYm9vbGVhbjtcclxuICB2b3Rpbmc/OiBib29sZWFuO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdFNldHRpbmdzIHtcclxuICBwcmVzZXJ2ZURyYWZ0PzogYm9vbGVhbjtcclxuICBhcHA/OiBzdHJpbmcgfCBDaGF0TGF1bmNoZXJGbjtcclxufVxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQ2hhdExhdW5jaGVyRm4ge1xyXG4gIChpZGVudGl0eTogc3RyaW5nKTogdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaXJlYmFzZVNldHRpbmdzIHtcclxuICBhcGlLZXk6IHN0cmluZztcclxuICB2YXBpZEtleT86IHN0cmluZztcclxuICBwcm9qZWN0SWQ6IHN0cmluZztcclxuICBzZW5kZXJJZDogc3RyaW5nO1xyXG4gIGFwcElkOiBzdHJpbmc7XHJcbiAgLyoqIG1pbGxpc2Vjb25kZXMgYmVmb3JlIHVzZXIgaXMgcHJvbXB0IHRvIGFwcHJvdmUgcmVjZWl2aW5nIG1lc3NhZ2VzICovXHJcbiAgZ3JhY2U/OiBudW1iZXI7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBHb29nbGVNYXBzU2V0dGluZ3Mge1xyXG4gIGFwaUtleTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24geyB9XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlZENvbmZpZyB7XHJcbiAgbWFwcz86IEdvb2dsZU1hcHNTZXR0aW5ncyB8IGJvb2xlYW47XHJcbiAgZm9ybWF0cz86IEZvcm1hdHNTZXR0aW5ncztcclxuXHJcbiAgcm91dGluZz86ICduZycgfCAncGFuZSdcclxufVxyXG4iXX0=
|
@@ -20,18 +20,18 @@ let ChecklistField = class ChecklistField extends OptionsControlField {
|
|
20
20
|
focus() { this.input.focus(); }
|
21
21
|
};
|
22
22
|
ChecklistField.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ChecklistField, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
23
|
-
ChecklistField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ChecklistField, selector: "ng-component", inputs: { params: "params" }, host: { classAttribute: "field" }, viewQueries: [{ propertyName: "input", first: true, predicate: MatSelectionList, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"mode==='compose';else view\">\r\n <mat-label *ngIf=\"label\">{{label |localizedString}}</mat-label>\r\n <mat-selection-list [formControl]=\"control\" [multiple]=\"multiple\">\r\n <mat-list-option *ngFor=\"let o of options\" [value]=\"o.key\">{{o.value|localizedString}}</mat-list-option>\r\n </mat-selection-list>\r\n <mat-hint *ngIf=\"hint\"> {{ hint |localizedString}}</mat-hint>\r\n <mat-error *ngIf=\"control.hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n</div>\r\n<ng-template #view>\r\n <ng-container *ngIf=\"control.value\">\r\n <ng-container *ngFor=\"let o of control.value; index as index\">\r\n <ng-container *ngIf=\"index>0\">, </ng-container>\r\n {{optionOf(o)|localizedString}}\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatSelectionList, selector: "mat-selection-list", inputs: ["disableRipple", "color", "compareWith", "disabled", "multiple"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i3.MatListOption, selector: "mat-list-option", inputs: ["disableRipple", "checkboxPosition", "color", "value", "disabled", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "directive", type: i4.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "pipe", type: i5.LocalizedStringPipe, name: "localizedString" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] });
|
23
|
+
ChecklistField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ChecklistField, selector: "ng-component", inputs: { params: "params" }, host: { classAttribute: "field" }, viewQueries: [{ propertyName: "input", first: true, predicate: MatSelectionList, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"mode==='compose';else view\">\r\n <mat-label *ngIf=\"label\">{{label |localizedString}}</mat-label>\r\n <mat-selection-list [formControl]=\"control\" [multiple]=\"multiple\">\r\n <mat-list-option *ngFor=\"let o of options\" [value]=\"o.key\">{{o.value|localizedString}}</mat-list-option>\r\n </mat-selection-list>\r\n <mat-hint *ngIf=\"hint\"> {{ hint |localizedString}}</mat-hint>\r\n <mat-error *ngIf=\"control.hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:((label|localizedString)||'')\"></mat-error>\r\n</div>\r\n<ng-template #view>\r\n <ng-container *ngIf=\"control.value\">\r\n <ng-container *ngFor=\"let o of control.value; index as index\">\r\n <ng-container *ngIf=\"index>0\">, </ng-container>\r\n {{optionOf(o)|localizedString}}\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatSelectionList, selector: "mat-selection-list", inputs: ["disableRipple", "color", "compareWith", "disabled", "multiple"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i3.MatListOption, selector: "mat-list-option", inputs: ["disableRipple", "checkboxPosition", "color", "value", "disabled", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "directive", type: i4.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "pipe", type: i5.LocalizedStringPipe, name: "localizedString" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] });
|
24
24
|
ChecklistField = __decorate([
|
25
25
|
BizDoc({ selector: 'checklist-control' })
|
26
26
|
], ChecklistField);
|
27
27
|
export { ChecklistField };
|
28
28
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ChecklistField, decorators: [{
|
29
29
|
type: Component,
|
30
|
-
args: [{ host: { class: 'field' }, template: "<div *ngIf=\"mode==='compose';else view\">\r\n <mat-label *ngIf=\"label\">{{label |localizedString}}</mat-label>\r\n <mat-selection-list [formControl]=\"control\" [multiple]=\"multiple\">\r\n <mat-list-option *ngFor=\"let o of options\" [value]=\"o.key\">{{o.value|localizedString}}</mat-list-option>\r\n </mat-selection-list>\r\n <mat-hint *ngIf=\"hint\"> {{ hint |localizedString}}</mat-hint>\r\n <mat-error *ngIf=\"control.hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:(label|localizedString)\"></mat-error>\r\n</div>\r\n<ng-template #view>\r\n <ng-container *ngIf=\"control.value\">\r\n <ng-container *ngFor=\"let o of control.value; index as index\">\r\n <ng-container *ngIf=\"index>0\">, </ng-container>\r\n {{optionOf(o)|localizedString}}\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>\r\n" }]
|
30
|
+
args: [{ host: { class: 'field' }, template: "<div *ngIf=\"mode==='compose';else view\">\r\n <mat-label *ngIf=\"label\">{{label |localizedString}}</mat-label>\r\n <mat-selection-list [formControl]=\"control\" [multiple]=\"multiple\">\r\n <mat-list-option *ngFor=\"let o of options\" [value]=\"o.key\">{{o.value|localizedString}}</mat-list-option>\r\n </mat-selection-list>\r\n <mat-hint *ngIf=\"hint\"> {{ hint |localizedString}}</mat-hint>\r\n <mat-error *ngIf=\"control.hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:((label|localizedString)||'')\"></mat-error>\r\n</div>\r\n<ng-template #view>\r\n <ng-container *ngIf=\"control.value\">\r\n <ng-container *ngFor=\"let o of control.value; index as index\">\r\n <ng-container *ngIf=\"index>0\">, </ng-container>\r\n {{optionOf(o)|localizedString}}\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>\r\n" }]
|
31
31
|
}], propDecorators: { params: [{
|
32
32
|
type: Input
|
33
33
|
}], input: [{
|
34
34
|
type: ViewChild,
|
35
35
|
args: [MatSelectionList]
|
36
36
|
}] } });
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tsaXN0LmZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb3JlL2ZpZWxkcy9jaGVja2xpc3QuZmllbGQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvcmUvZmllbGRzL2NoZWNrbGlzdC5maWVsZC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBTzlDLElBQU0sY0FBYyxHQUFwQixNQUFNLGNBQWUsU0FBUSxtQkFBbUI7SUFBaEQ7O1FBRUksWUFBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFJckMsYUFBUSxHQUFhLElBQUksQ0FBQztLQUkzQjtJQURDLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQzs7MkdBVHBCLGNBQWM7K0ZBQWQsY0FBYyw0SkFJZCxnQkFBZ0IsdUVDakI3Qiw2MUJBZ0JBO0FESGEsY0FBYztJQUQxQixNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztHQUM3QixjQUFjLENBVTFCO1NBVlksY0FBYzsyRkFBZCxjQUFjO2tCQUwxQixTQUFTOzJCQUVGLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTs4QkFNZixNQUFNO3NCQUFkLEtBQUs7Z0JBQ3VCLEtBQUs7c0JBQWpDLFNBQVM7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0aW9uTGlzdCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xyXG5pbXBvcnQgeyBDb250cm9sQ29tcG9uZW50LCBWaWV3TW9kZSB9IGZyb20gJy4uL2Jhc2UnO1xyXG5pbXBvcnQgeyBCaXpEb2MgfSBmcm9tICcuLi9kZWNvcmF0b3JzJztcclxuaW1wb3J0IHsgT3B0aW9uc0NvbnRyb2xGaWVsZCB9IGZyb20gJy4vb3B0aW9ucy5iYXNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnY2hlY2tsaXN0LmZpZWxkLmh0bWwnLFxyXG4gIGhvc3Q6IHsgY2xhc3M6ICdmaWVsZCcgfVxyXG59KVxyXG5AQml6RG9jKHsgc2VsZWN0b3I6ICdjaGVja2xpc3QtY29udHJvbCcgfSlcclxuZXhwb3J0IGNsYXNzIENoZWNrbGlzdEZpZWxkIGV4dGVuZHMgT3B0aW9uc0NvbnRyb2xGaWVsZCBpbXBsZW1lbnRzIENvbnRyb2xDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgYXBwZWFyYW5jZTogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZTtcclxuICByZWFkb25seSBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgQElucHV0KCkgcGFyYW1zOiBhbnk7XHJcbiAgQFZpZXdDaGlsZChNYXRTZWxlY3Rpb25MaXN0KSBpbnB1dDogTWF0U2VsZWN0aW9uTGlzdDtcclxuICBtb2RlOiBWaWV3TW9kZTtcclxuICBtdWx0aXBsZT86IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGhpbnQ/OiBzdHJpbmc7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBmb2N1cygpIHsgdGhpcy5pbnB1dC5mb2N1cygpOyB9XHJcbn1cclxuIiwiPGRpdiAqbmdJZj1cIm1vZGU9PT0nY29tcG9zZSc7ZWxzZSB2aWV3XCI+XHJcbiAgPG1hdC1sYWJlbCAqbmdJZj1cImxhYmVsXCI+e3tsYWJlbCB8bG9jYWxpemVkU3RyaW5nfX08L21hdC1sYWJlbD5cclxuICA8bWF0LXNlbGVjdGlvbi1saXN0IFtmb3JtQ29udHJvbF09XCJjb250cm9sXCIgW211bHRpcGxlXT1cIm11bHRpcGxlXCI+XHJcbiAgICA8bWF0LWxpc3Qtb3B0aW9uICpuZ0Zvcj1cImxldCBvIG9mIG9wdGlvbnNcIiBbdmFsdWVdPVwiby5rZXlcIj57e28udmFsdWV8bG9jYWxpemVkU3RyaW5nfX08L21hdC1saXN0LW9wdGlvbj5cclxuICA8L21hdC1zZWxlY3Rpb24tbGlzdD5cclxuICA8bWF0LWhpbnQgKm5nSWY9XCJoaW50XCI+IHt7IGhpbnQgfGxvY2FsaXplZFN0cmluZ319PC9tYXQtaGludD5cclxuICA8bWF0LWVycm9yICpuZ0lmPVwiY29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKVwiIFtpbm5lckhUTUxdPVwiJ1JlcXVpcmVkRXJyJ3x0cmFuc2xhdGU6KChsYWJlbHxsb2NhbGl6ZWRTdHJpbmcpfHwnJylcIj48L21hdC1lcnJvcj5cclxuPC9kaXY+XHJcbjxuZy10ZW1wbGF0ZSAjdmlldz5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC52YWx1ZVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbyBvZiBjb250cm9sLnZhbHVlOyBpbmRleCBhcyBpbmRleFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5kZXg+MFwiPiwmbmJzcDs8L25nLWNvbnRhaW5lcj5cclxuICAgICAge3tvcHRpb25PZihvKXxsb2NhbGl6ZWRTdHJpbmd9fVxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
@@ -4,17 +4,15 @@ import { Subject, switchMap, throwError } from 'rxjs';
|
|
4
4
|
import { catchError, map, tap } from 'rxjs/operators';
|
5
5
|
import * as i0 from "@angular/core";
|
6
6
|
import * as i1 from "./session.service";
|
7
|
-
import * as i2 from "./
|
8
|
-
import * as i3 from "./
|
9
|
-
import * as i4 from "./hub.service";
|
7
|
+
import * as i2 from "./authentication";
|
8
|
+
import * as i3 from "./hub.service";
|
10
9
|
export class AppHttpInterceptor {
|
11
|
-
constructor(baseUrl, _session,
|
10
|
+
constructor(baseUrl, _session, _auth, _messaging) {
|
12
11
|
this._session = _session;
|
13
|
-
this._router = _router;
|
14
12
|
this._auth = _auth;
|
15
13
|
this._messaging = _messaging;
|
16
|
-
this.
|
17
|
-
this.active$ = this.
|
14
|
+
this._ongoingCounter$ = new Subject();
|
15
|
+
this.active$ = this._ongoingCounter$.asObservable().pipe(map(c => c > 0));
|
18
16
|
if (baseUrl) {
|
19
17
|
if (baseUrl.endsWith('/'))
|
20
18
|
this._baseUrl = baseUrl.substr(0, baseUrl.length - 1);
|
@@ -25,47 +23,39 @@ export class AppHttpInterceptor {
|
|
25
23
|
this._baseUrl = '';
|
26
24
|
}
|
27
25
|
intercept(req, next) {
|
28
|
-
const
|
29
|
-
|
30
|
-
'accept-language': this._session.language,
|
31
|
-
};
|
32
|
-
if (connectionId)
|
33
|
-
headers['connection-id'] = connectionId;
|
34
|
-
const accessToken = this._auth.getAccessToken();
|
35
|
-
if (accessToken)
|
36
|
-
headers['Authorization'] = `Bearer ${accessToken}`;
|
37
|
-
const request = req.clone({
|
38
|
-
setHeaders: headers,
|
39
|
-
url
|
40
|
-
});
|
41
|
-
const handle = next.handle(request).pipe(catchError((e) => {
|
42
|
-
if (this._authenticating)
|
43
|
-
return this._authenticating;
|
44
|
-
else if (e.status === 401) {
|
45
|
-
//this._session.ok && this._router.navigate(['broken']);
|
46
|
-
this._authenticating = this._auth.authorize().pipe(switchMap(() => {
|
47
|
-
this._authenticating = null;
|
48
|
-
//this._session.ok && history.back();
|
49
|
-
return forward();
|
50
|
-
}));
|
51
|
-
return this._authenticating;
|
52
|
-
}
|
53
|
-
else
|
54
|
-
return throwError(e);
|
55
|
-
}));
|
56
|
-
const noprogress = req.headers.has('no-progress');
|
57
|
-
if (!noprogress) {
|
58
|
-
this._ongoing.next(1);
|
59
|
-
return handle.pipe(tap(event => event instanceof HttpResponse
|
60
|
-
&& this._ongoing.next(0), () => this._ongoing.next(0)));
|
61
|
-
}
|
62
|
-
else
|
63
|
-
return handle;
|
26
|
+
const url = this._baseUrl + req.url, connectionId = this._messaging.connectionId, headers = {
|
27
|
+
'accept-language': this._session.language,
|
64
28
|
};
|
65
|
-
|
29
|
+
if (connectionId)
|
30
|
+
headers['connection-id'] = connectionId;
|
31
|
+
const accessToken = this._auth.getAccessToken();
|
32
|
+
if (accessToken)
|
33
|
+
headers['Authorization'] = `Bearer ${accessToken}`;
|
34
|
+
const request = req.clone({
|
35
|
+
setHeaders: headers,
|
36
|
+
url
|
37
|
+
});
|
38
|
+
const handle = next.handle(request).pipe(catchError((e) => {
|
39
|
+
if (this._authenticationInProgress$)
|
40
|
+
return this._authenticationInProgress$;
|
41
|
+
else if (e.status === 401)
|
42
|
+
return this._authenticationInProgress$ = this._auth.authorize().pipe(switchMap(() => {
|
43
|
+
this._authenticationInProgress$ = null;
|
44
|
+
return this.intercept(req, next);
|
45
|
+
}));
|
46
|
+
else
|
47
|
+
return throwError(e);
|
48
|
+
}));
|
49
|
+
if (!req.headers.has('no-progress')) {
|
50
|
+
this._ongoingCounter$.next(1);
|
51
|
+
return handle.pipe(tap(event => event instanceof HttpResponse
|
52
|
+
&& this._ongoingCounter$.next(0), () => this._ongoingCounter$.next(0)));
|
53
|
+
}
|
54
|
+
else
|
55
|
+
return handle;
|
66
56
|
}
|
67
57
|
}
|
68
|
-
AppHttpInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppHttpInterceptor, deps: [{ token: 'BASE_URL', optional: true }, { token: i1.SessionService }, { token: i2.
|
58
|
+
AppHttpInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppHttpInterceptor, deps: [{ token: 'BASE_URL', optional: true }, { token: i1.SessionService }, { token: i2.AuthenticationImpl }, { token: i3.HubService }], target: i0.ɵɵFactoryTarget.Injectable });
|
69
59
|
AppHttpInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppHttpInterceptor, providedIn: 'root' });
|
70
60
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: AppHttpInterceptor, decorators: [{
|
71
61
|
type: Injectable,
|
@@ -75,5 +65,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
|
|
75
65
|
args: ['BASE_URL']
|
76
66
|
}, {
|
77
67
|
type: Optional
|
78
|
-
}] }, { type: i1.SessionService }, { type: i2.
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
68
|
+
}] }, { type: i1.SessionService }, { type: i2.AuthenticationImpl }, { type: i3.HubService }]; } });
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9odHRwLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQXdELFlBQVksRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQztBQUM3SCxPQUFPLEVBQWMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBS3RELE1BQU0sT0FBTyxrQkFBa0I7SUE2QzdCLFlBQ2tDLE9BQWUsRUFDdkMsUUFBd0IsRUFDeEIsS0FBeUIsRUFDekIsVUFBc0I7UUFGdEIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFDeEIsVUFBSyxHQUFMLEtBQUssQ0FBb0I7UUFDekIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQWhEZixxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBRWpELFlBQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUMxRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQThDakIsSUFBSSxPQUFPLEVBQUU7WUFDWCxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO2dCQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7O2dCQUV0RCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztTQUMzQjs7WUFFQyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBcERELFNBQVMsQ0FBQyxHQUFxQixFQUFFLElBQWlCO1FBQ2hELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFDakMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUMzQyxPQUFPLEdBQUc7WUFDUixpQkFBaUIsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVE7U0FDMUMsQ0FBQztRQUNKLElBQUksWUFBWTtZQUNkLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxZQUFZLENBQUM7UUFFMUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUVoRCxJQUFJLFdBQVc7WUFDYixPQUFPLENBQUMsZUFBZSxDQUFDLEdBQUcsVUFBVSxXQUFXLEVBQUUsQ0FBQztRQUVyRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1lBQ3hCLFVBQVUsRUFBRSxPQUFPO1lBQ25CLEdBQUc7U0FDSixDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFvQixFQUFFLEVBQUU7WUFDM0UsSUFBSSxJQUFJLENBQUMsMEJBQTBCO2dCQUFFLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDO2lCQUN2RSxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssR0FBRztnQkFDdkIsT0FBTyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtvQkFDbEYsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQztvQkFDdkMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDbkMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7Z0JBQ0QsT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNKLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNuQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDN0IsS0FBSyxZQUFZLFlBQVk7bUJBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQzlCLEdBQUcsRUFBRSxDQUNMLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JDOztZQUVDLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7OytHQTVDVSxrQkFBa0Isa0JBOENuQixVQUFVO21IQTlDVCxrQkFBa0IsY0FETCxNQUFNOzJGQUNuQixrQkFBa0I7a0JBRDlCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkErQzdCLE1BQU07MkJBQUMsVUFBVTs7MEJBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cEludGVyY2VwdG9yLCBIdHRwUmVxdWVzdCwgSHR0cEhhbmRsZXIsIEh0dHBFdmVudCwgSHR0cFJlc3BvbnNlLCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgc3dpdGNoTWFwLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEh1YlNlcnZpY2UgfSBmcm9tICcuL2h1Yi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbkltcGwgfSBmcm9tICcuL2F1dGhlbnRpY2F0aW9uJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBBcHBIdHRwSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX29uZ29pbmdDb3VudGVyJCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcclxuICBwcml2YXRlIF9hdXRoZW50aWNhdGlvbkluUHJvZ3Jlc3MkOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgcmVhZG9ubHkgYWN0aXZlJCA9IHRoaXMuX29uZ29pbmdDb3VudGVyJC5hc09ic2VydmFibGUoKS5waXBlKFxyXG4gICAgbWFwKGMgPT4gYyA+IDApKTtcclxuICBwcml2YXRlIF9iYXNlVXJsOiBzdHJpbmc7XHJcbiAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLl9iYXNlVXJsICsgcmVxLnVybCxcclxuICAgICAgY29ubmVjdGlvbklkID0gdGhpcy5fbWVzc2FnaW5nLmNvbm5lY3Rpb25JZCxcclxuICAgICAgaGVhZGVycyA9IHtcclxuICAgICAgICAnYWNjZXB0LWxhbmd1YWdlJzogdGhpcy5fc2Vzc2lvbi5sYW5ndWFnZSxcclxuICAgICAgfTtcclxuICAgIGlmIChjb25uZWN0aW9uSWQpXHJcbiAgICAgIGhlYWRlcnNbJ2Nvbm5lY3Rpb24taWQnXSA9IGNvbm5lY3Rpb25JZDtcclxuXHJcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IHRoaXMuX2F1dGguZ2V0QWNjZXNzVG9rZW4oKTtcclxuXHJcbiAgICBpZiAoYWNjZXNzVG9rZW4pXHJcbiAgICAgIGhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXSA9IGBCZWFyZXIgJHthY2Nlc3NUb2tlbn1gO1xyXG5cclxuICAgIGNvbnN0IHJlcXVlc3QgPSByZXEuY2xvbmUoe1xyXG4gICAgICBzZXRIZWFkZXJzOiBoZWFkZXJzLFxyXG4gICAgICB1cmxcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZSA9IG5leHQuaGFuZGxlKHJlcXVlc3QpLnBpcGUoY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKHRoaXMuX2F1dGhlbnRpY2F0aW9uSW5Qcm9ncmVzcyQpIHJldHVybiB0aGlzLl9hdXRoZW50aWNhdGlvbkluUHJvZ3Jlc3MkO1xyXG4gICAgICBlbHNlIGlmIChlLnN0YXR1cyA9PT0gNDAxKVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9hdXRoZW50aWNhdGlvbkluUHJvZ3Jlc3MkID0gdGhpcy5fYXV0aC5hdXRob3JpemUoKS5waXBlKHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9hdXRoZW50aWNhdGlvbkluUHJvZ3Jlc3MkID0gbnVsbDtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmludGVyY2VwdChyZXEsIG5leHQpO1xyXG4gICAgICAgIH0pKTtcclxuICAgICAgZWxzZSByZXR1cm4gdGhyb3dFcnJvcihlKTtcclxuICAgIH0pKTtcclxuICAgIGlmICghcmVxLmhlYWRlcnMuaGFzKCduby1wcm9ncmVzcycpKSB7XHJcbiAgICAgIHRoaXMuX29uZ29pbmdDb3VudGVyJC5uZXh0KDEpO1xyXG4gICAgICByZXR1cm4gaGFuZGxlLnBpcGUodGFwKGV2ZW50ID0+XHJcbiAgICAgICAgZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2VcclxuICAgICAgICAmJiB0aGlzLl9vbmdvaW5nQ291bnRlciQubmV4dCgwKVxyXG4gICAgICAgICwgKCkgPT5cclxuICAgICAgICAgIHRoaXMuX29uZ29pbmdDb3VudGVyJC5uZXh0KDApKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBoYW5kbGU7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnQkFTRV9VUkwnKSBAT3B0aW9uYWwoKSBiYXNlVXJsOiBzdHJpbmcsXHJcbiAgICBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2F1dGg6IEF1dGhlbnRpY2F0aW9uSW1wbCxcclxuICAgIHByaXZhdGUgX21lc3NhZ2luZzogSHViU2VydmljZSkge1xyXG4gICAgaWYgKGJhc2VVcmwpIHtcclxuICAgICAgaWYgKGJhc2VVcmwuZW5kc1dpdGgoJy8nKSlcclxuICAgICAgICB0aGlzLl9iYXNlVXJsID0gYmFzZVVybC5zdWJzdHIoMCwgYmFzZVVybC5sZW5ndGggLSAxKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMuX2Jhc2VVcmwgPSBiYXNlVXJsO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLl9iYXNlVXJsID0gJyc7XHJcbiAgfVxyXG59XHJcblxyXG4iXX0=
|