bways-report 0.1.2 → 0.1.4
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/README.md +150 -51
- package/esm2022/lib/core/errors/reporting-errors.mjs +2 -2
- package/esm2022/lib/core/index.mjs +3 -1
- package/esm2022/lib/core/models/report-datasource.model.mjs +1 -1
- package/esm2022/lib/core/models/report-definition.model.mjs +1 -1
- package/esm2022/lib/core/models/report-grid.model.mjs +1 -1
- package/esm2022/lib/core/services/report-session-context.service.mjs +50 -5
- package/esm2022/lib/core/utils/data-normalization.util.mjs +56 -0
- package/esm2022/lib/core/utils/report-parameter.util.mjs +180 -0
- package/esm2022/lib/data-access/adapters/http-datasource.adapter.mjs +82 -0
- package/esm2022/lib/data-access/adapters/http-lookup.adapter.mjs +34 -9
- package/esm2022/lib/data-access/adapters/http-masterdata.adapter.mjs +38 -0
- package/esm2022/lib/data-access/adapters/http-persistence.adapter.mjs +217 -0
- package/esm2022/lib/data-access/adapters/http-schema-discovery.adapter.mjs +3 -1
- package/esm2022/lib/data-access/adapters/index.mjs +8 -3
- package/esm2022/lib/data-access/adapters/local-storage-persistence.adapter.mjs +167 -0
- package/esm2022/lib/data-access/adapters/mock-datasource.adapter.mjs +60 -0
- package/esm2022/lib/data-access/contracts/api-dtos.mjs +6 -0
- package/esm2022/lib/data-access/contracts/index.mjs +2 -1
- package/esm2022/lib/features/designer/components/component-palette/component-palette.component.mjs +24 -3
- package/esm2022/lib/features/designer/components/design-canvas/design-canvas.component.mjs +572 -102
- package/esm2022/lib/features/designer/components/property-editor/property-editor-action.component.mjs +593 -0
- package/esm2022/lib/features/designer/components/property-editor/property-editor-datasource.component.mjs +225 -25
- package/esm2022/lib/features/designer/components/property-editor/property-editor-grid.component.mjs +568 -12
- package/esm2022/lib/features/designer/components/property-editor/property-editor.component.mjs +238 -11
- package/esm2022/lib/features/designer/components/toolbar/designer-toolbar.component.mjs +191 -25
- package/esm2022/lib/features/designer/designer.component.mjs +245 -27
- package/esm2022/lib/features/designer/index.mjs +4 -1
- package/esm2022/lib/features/designer/rpt-report-designer.component.mjs +102 -0
- package/esm2022/lib/features/designer/services/designer-state.service.mjs +18 -10
- package/esm2022/lib/features/designer/services/report-template.service.mjs +318 -0
- package/esm2022/lib/features/designer/utilities/canvas-layout.util.mjs +41 -9
- package/esm2022/lib/features/export/index.mjs +2 -2
- package/esm2022/lib/features/export/models/export.models.mjs +1 -1
- package/esm2022/lib/features/export/services/report-export.service.mjs +420 -5
- package/esm2022/lib/features/routing/components/routed-report-runtime.component.mjs +2 -2
- package/esm2022/lib/features/runtime/dynamic-renderer.component.mjs +239 -33
- package/esm2022/lib/features/runtime/index.mjs +2 -1
- package/esm2022/lib/features/runtime/report-execution.service.mjs +56 -0
- package/esm2022/lib/features/runtime/report-grid-bridge.component.mjs +423 -30
- package/esm2022/lib/features/runtime/report-runtime.component.mjs +349 -7
- package/esm2022/lib/features/runtime/rpt-report.component.mjs +545 -0
- package/esm2022/lib/primitives/components/button/rpt-button.component.mjs +19 -8
- package/esm2022/lib/primitives/components/chart-bridge/report-chart-bridge.component.mjs +18 -7
- package/esm2022/lib/primitives/components/checkbox/rpt-checkbox.component.mjs +3 -3
- package/esm2022/lib/primitives/components/date/rpt-date.component.mjs +3 -3
- package/esm2022/lib/primitives/components/date-range/rpt-date-range.component.mjs +346 -0
- package/esm2022/lib/primitives/components/dropdown/rpt-dropdown.component.mjs +728 -74
- package/esm2022/lib/primitives/components/icon/rpt-icon.component.mjs +30 -1
- package/esm2022/lib/primitives/components/index.mjs +2 -1
- package/esm2022/lib/primitives/components/input/rpt-input.component.mjs +3 -3
- package/esm2022/lib/primitives/components/kpi-card/rpt-kpi-card.component.mjs +3 -3
- package/esm2022/lib/primitives/components/number/rpt-number.component.mjs +3 -3
- package/esm2022/lib/primitives/register-builtins.mjs +51 -2
- package/esm2022/lib/provide-reporting.mjs +145 -24
- package/fesm2022/bways-report.mjs +7797 -921
- package/fesm2022/bways-report.mjs.map +1 -1
- package/lib/core/index.d.ts +2 -0
- package/lib/core/models/report-datasource.model.d.ts +9 -0
- package/lib/core/models/report-definition.model.d.ts +2 -0
- package/lib/core/models/report-grid.model.d.ts +67 -1
- package/lib/core/services/report-session-context.service.d.ts +6 -1
- package/lib/core/utils/data-normalization.util.d.ts +15 -0
- package/lib/core/utils/report-parameter.util.d.ts +35 -0
- package/lib/data-access/adapters/http-datasource.adapter.d.ts +20 -0
- package/lib/data-access/adapters/http-lookup.adapter.d.ts +3 -0
- package/lib/data-access/adapters/http-masterdata.adapter.d.ts +13 -0
- package/lib/data-access/adapters/http-persistence.adapter.d.ts +27 -0
- package/lib/data-access/adapters/http-schema-discovery.adapter.d.ts +2 -0
- package/lib/data-access/adapters/index.d.ts +7 -2
- package/lib/data-access/adapters/local-storage-persistence.adapter.d.ts +19 -0
- package/lib/data-access/adapters/mock-datasource.adapter.d.ts +9 -0
- package/lib/data-access/contracts/api-dtos.d.ts +67 -0
- package/lib/data-access/contracts/index.d.ts +1 -0
- package/lib/features/designer/components/component-palette/component-palette.component.d.ts +2 -1
- package/lib/features/designer/components/design-canvas/design-canvas.component.d.ts +22 -0
- package/lib/features/designer/components/property-editor/parameter-binding-editor.component.d.ts +1 -1
- package/lib/features/designer/components/property-editor/property-editor-action.component.d.ts +33 -0
- package/lib/features/designer/components/property-editor/property-editor-datasource.component.d.ts +13 -0
- package/lib/features/designer/components/property-editor/property-editor-grid.component.d.ts +16 -2
- package/lib/features/designer/components/property-editor/property-editor.component.d.ts +9 -1
- package/lib/features/designer/components/toolbar/designer-toolbar.component.d.ts +12 -1
- package/lib/features/designer/designer.component.d.ts +11 -0
- package/lib/features/designer/index.d.ts +4 -0
- package/lib/features/designer/rpt-report-designer.component.d.ts +38 -0
- package/lib/features/designer/services/designer-state.service.d.ts +1 -1
- package/lib/features/designer/services/report-template.service.d.ts +32 -0
- package/lib/features/designer/utilities/canvas-layout.util.d.ts +4 -0
- package/lib/features/export/index.d.ts +2 -2
- package/lib/features/export/models/export.models.d.ts +23 -0
- package/lib/features/export/services/report-export.service.d.ts +31 -2
- package/lib/features/runtime/dynamic-renderer.component.d.ts +42 -2
- package/lib/features/runtime/index.d.ts +2 -0
- package/lib/features/runtime/report-execution.service.d.ts +16 -0
- package/lib/features/runtime/report-grid-bridge.component.d.ts +171 -6
- package/lib/features/runtime/report-runtime.component.d.ts +86 -1
- package/lib/features/runtime/rpt-report.component.d.ts +69 -0
- package/lib/primitives/components/button/rpt-button.component.d.ts +5 -2
- package/lib/primitives/components/chart-bridge/report-chart-bridge.component.d.ts +1 -0
- package/lib/primitives/components/date-range/rpt-date-range.component.d.ts +43 -0
- package/lib/primitives/components/dropdown/rpt-dropdown.component.d.ts +55 -7
- package/lib/primitives/components/index.d.ts +2 -0
- package/lib/provide-reporting.d.ts +79 -26
- package/package.json +2 -1
- package/schematics/collection.json +10 -0
- package/schematics/ng-add/index.js +45 -0
- package/schematics/ng-add/schema.json +17 -0
|
@@ -106,7 +106,7 @@ export class RoutedReportRuntimeComponent {
|
|
|
106
106
|
</div>
|
|
107
107
|
}
|
|
108
108
|
</div>
|
|
109
|
-
`, isInline: true, styles: [".rpt-routed-container{display:flex;flex-direction:column;gap:var(--rpt-space-md, 16px);width:100%;min-height:100%;box-sizing:border-box;padding:var(--rpt-space-md, 16px)}.rpt-routed-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:var(--rpt-space-sm, 8px);border-bottom:1px solid var(--rpt-border-color, #e2e8f0)}.rpt-routed-title-row{display:flex;align-items:center;gap:12px}.rpt-routed-title{font-size:1.25rem;font-weight:700;color:var(--rpt-text-color, #0f172a);margin:0}.rpt-routed-version{font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:9999px;background:var(--rpt-bg-subtle, #f1f5f9);color:var(--rpt-text-muted, #64748b)}.rpt-routed-loading,.rpt-routed-error{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;color:var(--rpt-text-muted, #64748b)}.rpt-error-card{background:var(--rpt-surface-bg, #ffffff);border:1px solid var(--rpt-border-color, #e2e8f0);border-radius:var(--rpt-radius-md, 8px);padding:32px 40px;box-shadow:var(--rpt-shadow-sm, 0 1px 3px rgba(0,0,0,.05))}.rpt-error-card h3{color:var(--rpt-error-color, #ef4444);margin-top:0}.rpt-spinner{width:36px;height:36px;border:3px solid var(--rpt-border-color, #e2e8f0);border-top-color:var(--rpt-primary, #2563eb);border-radius:50%;animation:rpt-spin .8s linear infinite;margin-bottom:12px}@keyframes rpt-spin{to{transform:rotate(360deg)}}.rpt-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;font-size:.875rem;font-weight:500;border-radius:var(--rpt-radius-md, 6px);cursor:pointer;border:1px solid transparent;transition:all .15s ease}.rpt-btn-sm{padding:5px 10px;font-size:.8125rem}.rpt-btn-primary{background:var(--rpt-primary, #2563eb);color:#fff}.rpt-btn-primary:hover{background:var(--rpt-primary-hover, #1d4ed8)}.rpt-btn-secondary{background:var(--rpt-surface-bg, #ffffff);color:var(--rpt-text-color, #1e293b);border-color:var(--rpt-border-color, #cbd5e1)}.rpt-btn-secondary:hover{background:var(--rpt-bg-subtle, #f8fafc)}.rpt-btn-ghost{background:transparent;color:var(--rpt-text-muted, #64748b)}.rpt-btn-ghost:hover{color:var(--rpt-text-color, #1e293b);background:var(--rpt-bg-subtle, #f1f5f9)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "component", type: ReportRuntimeComponent, selector: "rpt-report-runtime, rpt-runtime", inputs: ["reportId", "report"] }, { kind: "component", type: RptIconComponent, selector: "rpt-icon", inputs: ["name", "size", "color", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
109
|
+
`, isInline: true, styles: [".rpt-routed-container{display:flex;flex-direction:column;gap:var(--rpt-space-md, 16px);width:100%;min-height:100%;box-sizing:border-box;padding:var(--rpt-space-md, 16px)}.rpt-routed-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:var(--rpt-space-sm, 8px);border-bottom:1px solid var(--rpt-border-color, #e2e8f0)}.rpt-routed-title-row{display:flex;align-items:center;gap:12px}.rpt-routed-title{font-size:1.25rem;font-weight:700;color:var(--rpt-text-color, #0f172a);margin:0}.rpt-routed-version{font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:9999px;background:var(--rpt-bg-subtle, #f1f5f9);color:var(--rpt-text-muted, #64748b)}.rpt-routed-loading,.rpt-routed-error{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;color:var(--rpt-text-muted, #64748b)}.rpt-error-card{background:var(--rpt-surface-bg, #ffffff);border:1px solid var(--rpt-border-color, #e2e8f0);border-radius:var(--rpt-radius-md, 8px);padding:32px 40px;box-shadow:var(--rpt-shadow-sm, 0 1px 3px rgba(0,0,0,.05))}.rpt-error-card h3{color:var(--rpt-error-color, #ef4444);margin-top:0}.rpt-spinner{width:36px;height:36px;border:3px solid var(--rpt-border-color, #e2e8f0);border-top-color:var(--rpt-primary, #2563eb);border-radius:50%;animation:rpt-spin .8s linear infinite;margin-bottom:12px}@keyframes rpt-spin{to{transform:rotate(360deg)}}.rpt-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;font-size:.875rem;font-weight:500;border-radius:var(--rpt-radius-md, 6px);cursor:pointer;border:1px solid transparent;transition:all .15s ease}.rpt-btn-sm{padding:5px 10px;font-size:.8125rem}.rpt-btn-primary{background:var(--rpt-primary, #2563eb);color:#fff}.rpt-btn-primary:hover{background:var(--rpt-primary-hover, #1d4ed8)}.rpt-btn-secondary{background:var(--rpt-surface-bg, #ffffff);color:var(--rpt-text-color, #1e293b);border-color:var(--rpt-border-color, #cbd5e1)}.rpt-btn-secondary:hover{background:var(--rpt-bg-subtle, #f8fafc)}.rpt-btn-ghost{background:transparent;color:var(--rpt-text-muted, #64748b)}.rpt-btn-ghost:hover{color:var(--rpt-text-color, #1e293b);background:var(--rpt-bg-subtle, #f1f5f9)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "component", type: ReportRuntimeComponent, selector: "rpt-report-runtime, rpt-runtime", inputs: ["reportId", "report"], outputs: ["resetRequested", "exportRequested", "printRequested", "customActionTriggered", "gridStateChange", "columnDefsChange", "selectionChange", "selectionChanged", "rowActionTriggered", "drilldownRequested"] }, { kind: "component", type: RptIconComponent, selector: "rpt-icon", inputs: ["name", "size", "color", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
110
110
|
}
|
|
111
111
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RoutedReportRuntimeComponent, decorators: [{
|
|
112
112
|
type: Component,
|
|
@@ -160,4 +160,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
160
160
|
</div>
|
|
161
161
|
`, styles: [".rpt-routed-container{display:flex;flex-direction:column;gap:var(--rpt-space-md, 16px);width:100%;min-height:100%;box-sizing:border-box;padding:var(--rpt-space-md, 16px)}.rpt-routed-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:var(--rpt-space-sm, 8px);border-bottom:1px solid var(--rpt-border-color, #e2e8f0)}.rpt-routed-title-row{display:flex;align-items:center;gap:12px}.rpt-routed-title{font-size:1.25rem;font-weight:700;color:var(--rpt-text-color, #0f172a);margin:0}.rpt-routed-version{font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:9999px;background:var(--rpt-bg-subtle, #f1f5f9);color:var(--rpt-text-muted, #64748b)}.rpt-routed-loading,.rpt-routed-error{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;color:var(--rpt-text-muted, #64748b)}.rpt-error-card{background:var(--rpt-surface-bg, #ffffff);border:1px solid var(--rpt-border-color, #e2e8f0);border-radius:var(--rpt-radius-md, 8px);padding:32px 40px;box-shadow:var(--rpt-shadow-sm, 0 1px 3px rgba(0,0,0,.05))}.rpt-error-card h3{color:var(--rpt-error-color, #ef4444);margin-top:0}.rpt-spinner{width:36px;height:36px;border:3px solid var(--rpt-border-color, #e2e8f0);border-top-color:var(--rpt-primary, #2563eb);border-radius:50%;animation:rpt-spin .8s linear infinite;margin-bottom:12px}@keyframes rpt-spin{to{transform:rotate(360deg)}}.rpt-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;font-size:.875rem;font-weight:500;border-radius:var(--rpt-radius-md, 6px);cursor:pointer;border:1px solid transparent;transition:all .15s ease}.rpt-btn-sm{padding:5px 10px;font-size:.8125rem}.rpt-btn-primary{background:var(--rpt-primary, #2563eb);color:#fff}.rpt-btn-primary:hover{background:var(--rpt-primary-hover, #1d4ed8)}.rpt-btn-secondary{background:var(--rpt-surface-bg, #ffffff);color:var(--rpt-text-color, #1e293b);border-color:var(--rpt-border-color, #cbd5e1)}.rpt-btn-secondary:hover{background:var(--rpt-bg-subtle, #f8fafc)}.rpt-btn-ghost{background:transparent;color:var(--rpt-text-muted, #64748b)}.rpt-btn-ghost:hover{color:var(--rpt-text-color, #1e293b);background:var(--rpt-bg-subtle, #f1f5f9)}\n"] }]
|
|
162
162
|
}] });
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVkLXJlcG9ydC1ydW50aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2ZlYXR1cmVzL3JvdXRpbmcvY29tcG9uZW50cy9yb3V0ZWQtcmVwb3J0LXJ1bnRpbWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFHVixNQUFNLEVBQ04sTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNyRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7QUFxTDFGLE1BQU0sT0FBTyw0QkFBNEI7SUFDdEIsS0FBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMvQixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hCLEtBQUssR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNuQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXhDLE1BQU0sR0FBRyxNQUFNLENBQTBCLElBQUksQ0FBQyxDQUFDO0lBQy9DLE9BQU8sR0FBRyxNQUFNLENBQVUsSUFBSSxDQUFDLENBQUM7SUFDaEMsT0FBTyxHQUFHLE1BQU0sQ0FBVSxJQUFJLENBQUMsQ0FBQztJQUV6QyxRQUFRO1FBQ04scUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTthQUNaLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDekMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDeEIsT0FBTztZQUNULENBQUM7WUFFRCwrQ0FBK0M7WUFDL0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM5RCxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztxQkFDNUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztxQkFDekMsU0FBUyxDQUFDO29CQUNULElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO3dCQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDMUIsQ0FBQztvQkFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFO3dCQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDMUIsQ0FBQztpQkFDRixDQUFDLENBQUM7WUFDUCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQTRCO1FBQzNDLGtEQUFrRDtJQUNwRCxDQUFDO0lBRUQsVUFBVTtRQUNSLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM3RCxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzVELENBQUM7d0dBdkRVLDRCQUE0Qjs0RkFBNUIsNEJBQTRCLDhFQTlLN0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdEVCx5dkVBbERTLFlBQVksOEJBQUUsWUFBWSwrQkFBRSxzQkFBc0IsNEdBQUUsZ0JBQWdCOzs0RkFnTG5FLDRCQUE0QjtrQkFuTHhDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsc0JBQXNCLEVBQUUsZ0JBQWdCLENBQUMsbUJBQzlELHVCQUF1QixDQUFDLE1BQU0sWUFDckM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdEVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIE9uSW5pdCxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgc2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBSZXBvcnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMnO1xuaW1wb3J0IHsgUmVwb3J0U3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcGVyc2lzdGVuY2Uvc2VydmljZXMvcmVwb3J0LXN0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVwb3J0UnVudGltZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3J1bnRpbWUvcmVwb3J0LXJ1bnRpbWUuY29tcG9uZW50JztcbmltcG9ydCB7IFJwdEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9wcmltaXRpdmVzL2NvbXBvbmVudHMvaWNvbi9ycHQtaWNvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdycHQtcm91dGVkLXJ1bnRpbWUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSb3V0ZXJNb2R1bGUsIFJlcG9ydFJ1bnRpbWVDb21wb25lbnQsIFJwdEljb25Db21wb25lbnRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicnB0LXJvdXRlZC1jb250YWluZXJcIj5cbiAgICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJycHQtcm91dGVkLWxvYWRpbmdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LXNwaW5uZXJcIj48L2Rpdj5cbiAgICAgICAgICA8cD5Mb2FkaW5nIHJlcG9ydCBkZWZpbml0aW9uLi4uPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH0gQGVsc2UgaWYgKHJlcG9ydCgpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJycHQtcm91dGVkLWhlYWRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJycHQtcm91dGVkLXRpdGxlLXJvd1wiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJycHQtYnRuIHJwdC1idG4tZ2hvc3QgcnB0LWJ0bi1zbVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJnb0JhY2soKVwiXG4gICAgICAgICAgICAgIHRpdGxlPVwiR28gYmFja1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwiYXJyb3ctbGVmdFwiIFtzaXplXT1cIjE0XCIgLz5cbiAgICAgICAgICAgICAgPHNwYW4+QmFjazwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGgxIGNsYXNzPVwicnB0LXJvdXRlZC10aXRsZVwiPnt7IHJlcG9ydCgpPy5uYW1lIH19PC9oMT5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicnB0LXJvdXRlZC12ZXJzaW9uXCI+dnt7IHJlcG9ydCgpPy52ZXJzaW9uID8/IDEgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICBAaWYgKGNhbkVkaXQoKSkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJycHQtYnRuIHJwdC1idG4tc2Vjb25kYXJ5IHJwdC1idG4tc21cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdFJlcG9ydCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJzZXR0aW5nc1wiIFtzaXplXT1cIjE0XCIgLz5cbiAgICAgICAgICAgICAgPHNwYW4+RWRpdCBSZXBvcnQ8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxycHQtcnVudGltZSBbcmVwb3J0XT1cInJlcG9ydCgpIVwiIChleGVjdXRlKT1cIm9uUmVwb3J0RXhlY3V0ZWQoJGV2ZW50KVwiIC8+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInJwdC1yb3V0ZWQtZXJyb3JcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LWVycm9yLWNhcmRcIj5cbiAgICAgICAgICAgIDxoMz5SZXBvcnQgTm90IEZvdW5kPC9oMz5cbiAgICAgICAgICAgIDxwPlRoZSByZXF1ZXN0ZWQgcmVwb3J0IGNvdWxkIG5vdCBiZSBmb3VuZCBvciBoYXMgbm90IGJlZW4gcHVibGlzaGVkIHlldC48L3A+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInJwdC1idG4gcnB0LWJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgICAgICAgIFJldHVybiB0byBQcmV2aW91cyBQYWdlXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW2BcbiAgICAucnB0LXJvdXRlZC1jb250YWluZXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBnYXA6IHZhcigtLXJwdC1zcGFjZS1tZCwgMTZweCk7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgcGFkZGluZzogdmFyKC0tcnB0LXNwYWNlLW1kLCAxNnB4KTtcbiAgICB9XG5cbiAgICAucnB0LXJvdXRlZC1oZWFkZXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tcnB0LXNwYWNlLXNtLCA4cHgpO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXJwdC1ib3JkZXItY29sb3IsICNlMmU4ZjApO1xuICAgIH1cblxuICAgIC5ycHQtcm91dGVkLXRpdGxlLXJvdyB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogMTJweDtcbiAgICB9XG5cbiAgICAucnB0LXJvdXRlZC10aXRsZSB7XG4gICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC10ZXh0LWNvbG9yLCAjMGYxNzJhKTtcbiAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICAucnB0LXJvdXRlZC12ZXJzaW9uIHtcbiAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBwYWRkaW5nOiAycHggOHB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogOTk5OXB4O1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LWJnLXN1YnRsZSwgI2YxZjVmOSk7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LXRleHQtbXV0ZWQsICM2NDc0OGIpO1xuICAgIH1cblxuICAgIC5ycHQtcm91dGVkLWxvYWRpbmcsXG4gICAgLnJwdC1yb3V0ZWQtZXJyb3Ige1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBwYWRkaW5nOiA2MHB4IDIwcHg7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LXRleHQtbXV0ZWQsICM2NDc0OGIpO1xuICAgIH1cblxuICAgIC5ycHQtZXJyb3ItY2FyZCB7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtc3VyZmFjZS1iZywgI2ZmZmZmZik7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ycHQtYm9yZGVyLWNvbG9yLCAjZTJlOGYwKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJwdC1yYWRpdXMtbWQsIDhweCk7XG4gICAgICBwYWRkaW5nOiAzMnB4IDQwcHg7XG4gICAgICBib3gtc2hhZG93OiB2YXIoLS1ycHQtc2hhZG93LXNtLCAwIDFweCAzcHggcmdiYSgwLDAsMCwwLjA1KSk7XG4gICAgfVxuXG4gICAgLnJwdC1lcnJvci1jYXJkIGgzIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtZXJyb3ItY29sb3IsICNlZjQ0NDQpO1xuICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICB9XG5cbiAgICAucnB0LXNwaW5uZXIge1xuICAgICAgd2lkdGg6IDM2cHg7XG4gICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgICBib3JkZXI6IDNweCBzb2xpZCB2YXIoLS1ycHQtYm9yZGVyLWNvbG9yLCAjZTJlOGYwKTtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLXJwdC1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGFuaW1hdGlvbjogcnB0LXNwaW4gMC44cyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuICAgIH1cblxuICAgIEBrZXlmcmFtZXMgcnB0LXNwaW4ge1xuICAgICAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9XG4gICAgfVxuXG4gICAgLnJwdC1idG4ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBnYXA6IDZweDtcbiAgICAgIHBhZGRpbmc6IDhweCAxNHB4O1xuICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ycHQtcmFkaXVzLW1kLCA2cHgpO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTtcbiAgICB9XG5cbiAgICAucnB0LWJ0bi1zbSB7XG4gICAgICBwYWRkaW5nOiA1cHggMTBweDtcbiAgICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgIH1cblxuICAgIC5ycHQtYnRuLXByaW1hcnkge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgfVxuICAgIC5ycHQtYnRuLXByaW1hcnk6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LXByaW1hcnktaG92ZXIsICMxZDRlZDgpO1xuICAgIH1cblxuICAgIC5ycHQtYnRuLXNlY29uZGFyeSB7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtc3VyZmFjZS1iZywgI2ZmZmZmZik7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LXRleHQtY29sb3IsICMxZTI5M2IpO1xuICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ycHQtYm9yZGVyLWNvbG9yLCAjY2JkNWUxKTtcbiAgICB9XG4gICAgLnJwdC1idG4tc2Vjb25kYXJ5OmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1iZy1zdWJ0bGUsICNmOGZhZmMpO1xuICAgIH1cblxuICAgIC5ycHQtYnRuLWdob3N0IHtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgY29sb3I6IHZhcigtLXJwdC10ZXh0LW11dGVkLCAjNjQ3NDhiKTtcbiAgICB9XG4gICAgLnJwdC1idG4tZ2hvc3Q6aG92ZXIge1xuICAgICAgY29sb3I6IHZhcigtLXJwdC10ZXh0LWNvbG9yLCAjMWUyOTNiKTtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1iZy1zdWJ0bGUsICNmMWY1ZjkpO1xuICAgIH1cbiAgYF1cbn0pXG5leHBvcnQgY2xhc3MgUm91dGVkUmVwb3J0UnVudGltZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlID0gaW5qZWN0KFJlcG9ydFN0b3JlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICByZWFkb25seSByZXBvcnQgPSBzaWduYWw8UmVwb3J0RGVmaW5pdGlvbiB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSBsb2FkaW5nID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBjYW5FZGl0ID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIENoZWNrIGlmIHJvdXRlIHJlc29sdmVkIHRoZSByZXBvcnRcbiAgICB0aGlzLnJvdXRlLmRhdGFcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICBpZiAoZGF0YSAmJiBkYXRhWydyZXBvcnQnXSkge1xuICAgICAgICAgIHRoaXMucmVwb3J0LnNldChkYXRhWydyZXBvcnQnXSk7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlIGZhbGxiYWNrIHRvIHJlc29sdmluZyB2aWEgcGFyYW1NYXBcbiAgICAgICAgY29uc3QgcmVwb3J0SWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgncmVwb3J0SWQnKTtcbiAgICAgICAgaWYgKHJlcG9ydElkKSB7XG4gICAgICAgICAgdGhpcy5zdG9yZS5sb2FkUmVwb3J0KHJlcG9ydElkKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgbmV4dDogKHJlcCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVwb3J0LnNldChyZXApO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVwb3J0LnNldChudWxsKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgb25SZXBvcnRFeGVjdXRlZChmaWx0ZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZCB7XG4gICAgLy8gSG9zdCBjYW4gb2JzZXJ2ZSBvciBoYW5kbGUgZXhlY3V0aW9ucyBpZiBuZWVkZWRcbiAgfVxuXG4gIGVkaXRSZXBvcnQoKTogdm9pZCB7XG4gICAgY29uc3QgcmVwID0gdGhpcy5yZXBvcnQoKTtcbiAgICBpZiAocmVwKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2VkaXQnXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdvQmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLyddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVkLXJlcG9ydC1ydW50aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2ZlYXR1cmVzL3JvdXRpbmcvY29tcG9uZW50cy9yb3V0ZWQtcmVwb3J0LXJ1bnRpbWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFHVixNQUFNLEVBQ04sTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNyRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7QUFxTDFGLE1BQU0sT0FBTyw0QkFBNEI7SUFDdEIsS0FBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMvQixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hCLEtBQUssR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNuQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXhDLE1BQU0sR0FBRyxNQUFNLENBQTBCLElBQUksQ0FBQyxDQUFDO0lBQy9DLE9BQU8sR0FBRyxNQUFNLENBQVUsSUFBSSxDQUFDLENBQUM7SUFDaEMsT0FBTyxHQUFHLE1BQU0sQ0FBVSxJQUFJLENBQUMsQ0FBQztJQUV6QyxRQUFRO1FBQ04scUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTthQUNaLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDekMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDeEIsT0FBTztZQUNULENBQUM7WUFFRCwrQ0FBK0M7WUFDL0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM5RCxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztxQkFDNUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztxQkFDekMsU0FBUyxDQUFDO29CQUNULElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO3dCQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDMUIsQ0FBQztvQkFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFO3dCQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDMUIsQ0FBQztpQkFDRixDQUFDLENBQUM7WUFDUCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQTRCO1FBQzNDLGtEQUFrRDtJQUNwRCxDQUFDO0lBRUQsVUFBVTtRQUNSLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM3RCxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzVELENBQUM7d0dBdkRVLDRCQUE0Qjs0RkFBNUIsNEJBQTRCLDhFQTlLN0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdEVCx5dkVBbERTLFlBQVksOEJBQUUsWUFBWSwrQkFBRSxzQkFBc0IsaVVBQUUsZ0JBQWdCOzs0RkFnTG5FLDRCQUE0QjtrQkFuTHhDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsc0JBQXNCLEVBQUUsZ0JBQWdCLENBQUMsbUJBQzlELHVCQUF1QixDQUFDLE1BQU0sWUFDckM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdEVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIE9uSW5pdCxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgc2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBSZXBvcnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMnO1xuaW1wb3J0IHsgUmVwb3J0U3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcGVyc2lzdGVuY2Uvc2VydmljZXMvcmVwb3J0LXN0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVwb3J0UnVudGltZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3J1bnRpbWUvcmVwb3J0LXJ1bnRpbWUuY29tcG9uZW50JztcbmltcG9ydCB7IFJwdEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9wcmltaXRpdmVzL2NvbXBvbmVudHMvaWNvbi9ycHQtaWNvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdycHQtcm91dGVkLXJ1bnRpbWUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSb3V0ZXJNb2R1bGUsIFJlcG9ydFJ1bnRpbWVDb21wb25lbnQsIFJwdEljb25Db21wb25lbnRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicnB0LXJvdXRlZC1jb250YWluZXJcIj5cbiAgICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJycHQtcm91dGVkLWxvYWRpbmdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LXNwaW5uZXJcIj48L2Rpdj5cbiAgICAgICAgICA8cD5Mb2FkaW5nIHJlcG9ydCBkZWZpbml0aW9uLi4uPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH0gQGVsc2UgaWYgKHJlcG9ydCgpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJycHQtcm91dGVkLWhlYWRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJycHQtcm91dGVkLXRpdGxlLXJvd1wiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJycHQtYnRuIHJwdC1idG4tZ2hvc3QgcnB0LWJ0bi1zbVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJnb0JhY2soKVwiXG4gICAgICAgICAgICAgIHRpdGxlPVwiR28gYmFja1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwiYXJyb3ctbGVmdFwiIFtzaXplXT1cIjE0XCIgLz5cbiAgICAgICAgICAgICAgPHNwYW4+QmFjazwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGgxIGNsYXNzPVwicnB0LXJvdXRlZC10aXRsZVwiPnt7IHJlcG9ydCgpPy5uYW1lIH19PC9oMT5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicnB0LXJvdXRlZC12ZXJzaW9uXCI+dnt7IHJlcG9ydCgpPy52ZXJzaW9uID8/IDEgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICBAaWYgKGNhbkVkaXQoKSkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJycHQtYnRuIHJwdC1idG4tc2Vjb25kYXJ5IHJwdC1idG4tc21cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdFJlcG9ydCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJzZXR0aW5nc1wiIFtzaXplXT1cIjE0XCIgLz5cbiAgICAgICAgICAgICAgPHNwYW4+RWRpdCBSZXBvcnQ8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxycHQtcnVudGltZSBbcmVwb3J0XT1cInJlcG9ydCgpIVwiIChleGVjdXRlKT1cIm9uUmVwb3J0RXhlY3V0ZWQoJGV2ZW50KVwiIC8+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInJwdC1yb3V0ZWQtZXJyb3JcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LWVycm9yLWNhcmRcIj5cbiAgICAgICAgICAgIDxoMz5SZXBvcnQgTm90IEZvdW5kPC9oMz5cbiAgICAgICAgICAgIDxwPlRoZSByZXF1ZXN0ZWQgcmVwb3J0IGNvdWxkIG5vdCBiZSBmb3VuZCBvciBoYXMgbm90IGJlZW4gcHVibGlzaGVkIHlldC48L3A+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInJwdC1idG4gcnB0LWJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgICAgICAgIFJldHVybiB0byBQcmV2aW91cyBQYWdlXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW2BcbiAgICAucnB0LXJvdXRlZC1jb250YWluZXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBnYXA6IHZhcigtLXJwdC1zcGFjZS1tZCwgMTZweCk7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgcGFkZGluZzogdmFyKC0tcnB0LXNwYWNlLW1kLCAxNnB4KTtcbiAgICB9XG5cbiAgICAucnB0LXJvdXRlZC1oZWFkZXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tcnB0LXNwYWNlLXNtLCA4cHgpO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXJwdC1ib3JkZXItY29sb3IsICNlMmU4ZjApO1xuICAgIH1cblxuICAgIC5ycHQtcm91dGVkLXRpdGxlLXJvdyB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogMTJweDtcbiAgICB9XG5cbiAgICAucnB0LXJvdXRlZC10aXRsZSB7XG4gICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC10ZXh0LWNvbG9yLCAjMGYxNzJhKTtcbiAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICAucnB0LXJvdXRlZC12ZXJzaW9uIHtcbiAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBwYWRkaW5nOiAycHggOHB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogOTk5OXB4O1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LWJnLXN1YnRsZSwgI2YxZjVmOSk7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LXRleHQtbXV0ZWQsICM2NDc0OGIpO1xuICAgIH1cblxuICAgIC5ycHQtcm91dGVkLWxvYWRpbmcsXG4gICAgLnJwdC1yb3V0ZWQtZXJyb3Ige1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBwYWRkaW5nOiA2MHB4IDIwcHg7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LXRleHQtbXV0ZWQsICM2NDc0OGIpO1xuICAgIH1cblxuICAgIC5ycHQtZXJyb3ItY2FyZCB7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtc3VyZmFjZS1iZywgI2ZmZmZmZik7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ycHQtYm9yZGVyLWNvbG9yLCAjZTJlOGYwKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJwdC1yYWRpdXMtbWQsIDhweCk7XG4gICAgICBwYWRkaW5nOiAzMnB4IDQwcHg7XG4gICAgICBib3gtc2hhZG93OiB2YXIoLS1ycHQtc2hhZG93LXNtLCAwIDFweCAzcHggcmdiYSgwLDAsMCwwLjA1KSk7XG4gICAgfVxuXG4gICAgLnJwdC1lcnJvci1jYXJkIGgzIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtZXJyb3ItY29sb3IsICNlZjQ0NDQpO1xuICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICB9XG5cbiAgICAucnB0LXNwaW5uZXIge1xuICAgICAgd2lkdGg6IDM2cHg7XG4gICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgICBib3JkZXI6IDNweCBzb2xpZCB2YXIoLS1ycHQtYm9yZGVyLWNvbG9yLCAjZTJlOGYwKTtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLXJwdC1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGFuaW1hdGlvbjogcnB0LXNwaW4gMC44cyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuICAgIH1cblxuICAgIEBrZXlmcmFtZXMgcnB0LXNwaW4ge1xuICAgICAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9XG4gICAgfVxuXG4gICAgLnJwdC1idG4ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBnYXA6IDZweDtcbiAgICAgIHBhZGRpbmc6IDhweCAxNHB4O1xuICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ycHQtcmFkaXVzLW1kLCA2cHgpO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTtcbiAgICB9XG5cbiAgICAucnB0LWJ0bi1zbSB7XG4gICAgICBwYWRkaW5nOiA1cHggMTBweDtcbiAgICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgIH1cblxuICAgIC5ycHQtYnRuLXByaW1hcnkge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgfVxuICAgIC5ycHQtYnRuLXByaW1hcnk6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LXByaW1hcnktaG92ZXIsICMxZDRlZDgpO1xuICAgIH1cblxuICAgIC5ycHQtYnRuLXNlY29uZGFyeSB7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtc3VyZmFjZS1iZywgI2ZmZmZmZik7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LXRleHQtY29sb3IsICMxZTI5M2IpO1xuICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ycHQtYm9yZGVyLWNvbG9yLCAjY2JkNWUxKTtcbiAgICB9XG4gICAgLnJwdC1idG4tc2Vjb25kYXJ5OmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1iZy1zdWJ0bGUsICNmOGZhZmMpO1xuICAgIH1cblxuICAgIC5ycHQtYnRuLWdob3N0IHtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgY29sb3I6IHZhcigtLXJwdC10ZXh0LW11dGVkLCAjNjQ3NDhiKTtcbiAgICB9XG4gICAgLnJwdC1idG4tZ2hvc3Q6aG92ZXIge1xuICAgICAgY29sb3I6IHZhcigtLXJwdC10ZXh0LWNvbG9yLCAjMWUyOTNiKTtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1iZy1zdWJ0bGUsICNmMWY1ZjkpO1xuICAgIH1cbiAgYF1cbn0pXG5leHBvcnQgY2xhc3MgUm91dGVkUmVwb3J0UnVudGltZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlID0gaW5qZWN0KFJlcG9ydFN0b3JlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICByZWFkb25seSByZXBvcnQgPSBzaWduYWw8UmVwb3J0RGVmaW5pdGlvbiB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSBsb2FkaW5nID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBjYW5FZGl0ID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIENoZWNrIGlmIHJvdXRlIHJlc29sdmVkIHRoZSByZXBvcnRcbiAgICB0aGlzLnJvdXRlLmRhdGFcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICBpZiAoZGF0YSAmJiBkYXRhWydyZXBvcnQnXSkge1xuICAgICAgICAgIHRoaXMucmVwb3J0LnNldChkYXRhWydyZXBvcnQnXSk7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlIGZhbGxiYWNrIHRvIHJlc29sdmluZyB2aWEgcGFyYW1NYXBcbiAgICAgICAgY29uc3QgcmVwb3J0SWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgncmVwb3J0SWQnKTtcbiAgICAgICAgaWYgKHJlcG9ydElkKSB7XG4gICAgICAgICAgdGhpcy5zdG9yZS5sb2FkUmVwb3J0KHJlcG9ydElkKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgbmV4dDogKHJlcCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVwb3J0LnNldChyZXApO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVwb3J0LnNldChudWxsKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgb25SZXBvcnRFeGVjdXRlZChmaWx0ZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZCB7XG4gICAgLy8gSG9zdCBjYW4gb2JzZXJ2ZSBvciBoYW5kbGUgZXhlY3V0aW9ucyBpZiBuZWVkZWRcbiAgfVxuXG4gIGVkaXRSZXBvcnQoKTogdm9pZCB7XG4gICAgY29uc3QgcmVwID0gdGhpcy5yZXBvcnQoKTtcbiAgICBpZiAocmVwKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2VkaXQnXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdvQmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLyddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,20 +1,36 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, computed, inject, input, output, } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
|
+
import { Router } from '@angular/router';
|
|
4
5
|
import { ComponentRegistry } from '../../core/registry/component-registry';
|
|
5
6
|
import { DynamicFormBuilder } from '../../core/services/dynamic-form-builder.service';
|
|
7
|
+
import { ReportExportService } from '../export/services/report-export.service';
|
|
8
|
+
import { ReportSessionContextService } from '../../core/services/report-session-context.service';
|
|
9
|
+
import { getFieldCaseInsensitive } from '../../core/utils/data-normalization.util';
|
|
6
10
|
import { ReportGridBridgeComponent } from './report-grid-bridge.component';
|
|
7
|
-
import { calculateGridColumn, calculateGridRow } from '../designer/utilities/canvas-layout.util';
|
|
11
|
+
import { calculateGridColumn, calculateGridRow, resolveComponentHeight, resolveComponentMinHeight } from '../designer/utilities/canvas-layout.util';
|
|
8
12
|
import * as i0 from "@angular/core";
|
|
9
13
|
import * as i1 from "@angular/common";
|
|
10
14
|
import * as i2 from "@angular/forms";
|
|
11
15
|
export class DynamicRendererComponent {
|
|
12
16
|
registry = inject(ComponentRegistry);
|
|
13
17
|
formBuilder = inject(DynamicFormBuilder);
|
|
18
|
+
router = inject(Router, { optional: true });
|
|
19
|
+
exportService = inject(ReportExportService, { optional: true });
|
|
20
|
+
sessionService = inject(ReportSessionContextService, { optional: true });
|
|
14
21
|
definition = input.required();
|
|
15
22
|
initialValues = input({});
|
|
16
23
|
resultData = input(null);
|
|
17
24
|
executeRequested = output();
|
|
25
|
+
resetRequested = output();
|
|
26
|
+
exportRequested = output();
|
|
27
|
+
printRequested = output();
|
|
28
|
+
customActionTriggered = output();
|
|
29
|
+
gridStateChanged = output();
|
|
30
|
+
columnDefsChanged = output();
|
|
31
|
+
selectionChange = output();
|
|
32
|
+
selectionChanged = output();
|
|
33
|
+
rowActionTriggered = output();
|
|
18
34
|
form = computed(() => {
|
|
19
35
|
return this.formBuilder.toFormGroup(this.definition().components, this.initialValues());
|
|
20
36
|
});
|
|
@@ -32,13 +48,22 @@ export class DynamicRendererComponent {
|
|
|
32
48
|
return meta?.component ?? null;
|
|
33
49
|
}
|
|
34
50
|
getComponentInputs(comp) {
|
|
35
|
-
const inputs = {
|
|
36
|
-
|
|
37
|
-
definition
|
|
38
|
-
}
|
|
39
|
-
|
|
51
|
+
const inputs = {};
|
|
52
|
+
if (comp.type === 'kpi-card' || comp.type === 'chart') {
|
|
53
|
+
inputs['definition'] = comp;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
inputs['config'] = comp;
|
|
57
|
+
}
|
|
58
|
+
if (comp.key && comp.type !== 'button' && comp.type !== 'kpi-card' && comp.type !== 'chart') {
|
|
40
59
|
inputs['control'] = this.form().get(comp.key);
|
|
41
60
|
}
|
|
61
|
+
if (comp.type === 'dropdown') {
|
|
62
|
+
inputs['parentForm'] = this.form();
|
|
63
|
+
}
|
|
64
|
+
if (comp.type === 'button') {
|
|
65
|
+
inputs['onAction'] = (action) => this.handleAction(action, comp);
|
|
66
|
+
}
|
|
42
67
|
return inputs;
|
|
43
68
|
}
|
|
44
69
|
getGridColumn(comp) {
|
|
@@ -47,6 +72,12 @@ export class DynamicRendererComponent {
|
|
|
47
72
|
getGridRow(comp) {
|
|
48
73
|
return calculateGridRow(comp);
|
|
49
74
|
}
|
|
75
|
+
getComponentHeight(comp) {
|
|
76
|
+
return resolveComponentHeight(comp);
|
|
77
|
+
}
|
|
78
|
+
getComponentMinHeight(comp) {
|
|
79
|
+
return resolveComponentMinHeight(comp);
|
|
80
|
+
}
|
|
50
81
|
isComponentVisible(comp) {
|
|
51
82
|
const vis = comp.visibility;
|
|
52
83
|
if (!vis)
|
|
@@ -84,16 +115,145 @@ export class DynamicRendererComponent {
|
|
|
84
115
|
parameters,
|
|
85
116
|
});
|
|
86
117
|
}
|
|
87
|
-
handleAction(action) {
|
|
88
|
-
|
|
89
|
-
|
|
118
|
+
handleAction(action, comp) {
|
|
119
|
+
const parameters = this.formBuilder.extractValues(this.form());
|
|
120
|
+
switch (action.type) {
|
|
121
|
+
case 'execute-report':
|
|
122
|
+
case 'submit':
|
|
123
|
+
this.onSubmit();
|
|
124
|
+
break;
|
|
125
|
+
case 'reset':
|
|
126
|
+
this.form().reset(this.initialValues());
|
|
127
|
+
this.resetRequested.emit({ definition: this.definition() });
|
|
128
|
+
break;
|
|
129
|
+
case 'export': {
|
|
130
|
+
const format = action.params?.['format'] || 'excel';
|
|
131
|
+
const defaultName = this.definition().name
|
|
132
|
+
? this.definition().name.toLowerCase().replace(/[^a-z0-9_-]/gi, '_')
|
|
133
|
+
: 'report';
|
|
134
|
+
const fileName = action.params?.['fileName'] || `${defaultName}_${Date.now()}`;
|
|
135
|
+
const data = this.resultData();
|
|
136
|
+
if (data && data.length > 0 && this.exportService) {
|
|
137
|
+
if (format === 'csv') {
|
|
138
|
+
this.exportService.exportCsv(data, {
|
|
139
|
+
fileName: `${fileName}.csv`,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
else if (format === 'json') {
|
|
143
|
+
this.exportService.exportJson(data, {
|
|
144
|
+
fileName: `${fileName}.json`,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
this.exportRequested.emit({
|
|
149
|
+
format,
|
|
150
|
+
fileName,
|
|
151
|
+
parameters,
|
|
152
|
+
data,
|
|
153
|
+
});
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
case 'print-report': {
|
|
157
|
+
const rptFileName = action.params?.['rptFileName'] || '';
|
|
158
|
+
const exportType = action.params?.['exportType'] || 'pdf';
|
|
159
|
+
this.printRequested.emit({
|
|
160
|
+
rptFileName,
|
|
161
|
+
exportType,
|
|
162
|
+
parameters,
|
|
163
|
+
});
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
case 'navigate': {
|
|
167
|
+
const targetUrl = action.params?.['targetUrl'] || '';
|
|
168
|
+
const openNewTab = action.params?.['openNewTab'] === true;
|
|
169
|
+
if (targetUrl) {
|
|
170
|
+
if (openNewTab || targetUrl.startsWith('http://') || targetUrl.startsWith('https://')) {
|
|
171
|
+
window.open(targetUrl, openNewTab ? '_blank' : '_self');
|
|
172
|
+
}
|
|
173
|
+
else if (this.router) {
|
|
174
|
+
this.router.navigate([targetUrl], { queryParams: parameters });
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
window.location.href = targetUrl;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
case 'custom-event':
|
|
183
|
+
default:
|
|
184
|
+
if (comp) {
|
|
185
|
+
this.customActionTriggered.emit({
|
|
186
|
+
action,
|
|
187
|
+
component: comp,
|
|
188
|
+
parameters,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
onGridRowClick(event) {
|
|
195
|
+
const grid = this.definition().grid;
|
|
196
|
+
if (!grid)
|
|
197
|
+
return;
|
|
198
|
+
const action = event.column?.action ?? grid.rowClickAction ?? grid.options?.rowClickAction;
|
|
199
|
+
if (!action)
|
|
200
|
+
return;
|
|
201
|
+
const formValues = this.formBuilder.extractValues(this.form());
|
|
202
|
+
const session = this.sessionService?.sessionContext() ?? {};
|
|
203
|
+
const mappedParameters = {};
|
|
204
|
+
if (action.parameterMapping && Object.keys(action.parameterMapping).length > 0) {
|
|
205
|
+
for (const [targetKey, expr] of Object.entries(action.parameterMapping)) {
|
|
206
|
+
let val = undefined;
|
|
207
|
+
if (expr.startsWith('row.')) {
|
|
208
|
+
const rowField = expr.slice(4);
|
|
209
|
+
val = getFieldCaseInsensitive(event.row, rowField);
|
|
210
|
+
}
|
|
211
|
+
else if (expr.startsWith('form.') || expr.startsWith('formValues.')) {
|
|
212
|
+
const formField = expr.replace(/^form\.|^formValues\./, '');
|
|
213
|
+
val = getFieldCaseInsensitive(formValues, formField);
|
|
214
|
+
}
|
|
215
|
+
else if (expr.startsWith('session.')) {
|
|
216
|
+
const sessionField = expr.slice(8);
|
|
217
|
+
val = getFieldCaseInsensitive(session, sessionField);
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
// Direct row field or literal
|
|
221
|
+
val = getFieldCaseInsensitive(event.row, expr) ?? expr;
|
|
222
|
+
}
|
|
223
|
+
mappedParameters[targetKey] = val !== undefined ? val : '';
|
|
224
|
+
}
|
|
90
225
|
}
|
|
91
|
-
else
|
|
92
|
-
|
|
226
|
+
else {
|
|
227
|
+
// Default: copy entire row data
|
|
228
|
+
Object.assign(mappedParameters, event.row);
|
|
93
229
|
}
|
|
230
|
+
if (action.type === 'navigate' && action.targetUrl) {
|
|
231
|
+
let targetUrl = action.targetUrl;
|
|
232
|
+
for (const [k, v] of Object.entries(event.row)) {
|
|
233
|
+
targetUrl = targetUrl.replace(new RegExp(`\\{\\{\\s*(?:row\\.)?${k}\\s*\\}\\}`, 'gi'), String(v ?? ''));
|
|
234
|
+
}
|
|
235
|
+
if (action.openNewTab || targetUrl.startsWith('http://') || targetUrl.startsWith('https://')) {
|
|
236
|
+
window.open(targetUrl, action.openNewTab ? '_blank' : '_self');
|
|
237
|
+
}
|
|
238
|
+
else if (this.router) {
|
|
239
|
+
this.router.navigateByUrl(targetUrl);
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
window.location.href = targetUrl;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
this.rowActionTriggered.emit({
|
|
246
|
+
action,
|
|
247
|
+
row: event.row,
|
|
248
|
+
parameters: mappedParameters,
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
onGridSelectionChange(rows) {
|
|
252
|
+
this.selectionChange.emit(rows);
|
|
253
|
+
this.selectionChanged.emit(rows);
|
|
94
254
|
}
|
|
95
255
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DynamicRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
96
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DynamicRendererComponent, isStandalone: true, selector: "rpt-dynamic-renderer", inputs: { definition: { classPropertyName: "definition", publicName: "definition", isSignal: true, isRequired: true, transformFunction: null }, initialValues: { classPropertyName: "initialValues", publicName: "initialValues", isSignal: true, isRequired: false, transformFunction: null }, resultData: { classPropertyName: "resultData", publicName: "resultData", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { executeRequested: "executeRequested" }, ngImport: i0, template: `
|
|
256
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DynamicRendererComponent, isStandalone: true, selector: "rpt-dynamic-renderer", inputs: { definition: { classPropertyName: "definition", publicName: "definition", isSignal: true, isRequired: true, transformFunction: null }, initialValues: { classPropertyName: "initialValues", publicName: "initialValues", isSignal: true, isRequired: false, transformFunction: null }, resultData: { classPropertyName: "resultData", publicName: "resultData", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { executeRequested: "executeRequested", resetRequested: "resetRequested", exportRequested: "exportRequested", printRequested: "printRequested", customActionTriggered: "customActionTriggered", gridStateChanged: "gridStateChanged", columnDefsChanged: "columnDefsChanged", selectionChange: "selectionChange", selectionChanged: "selectionChanged", rowActionTriggered: "rowActionTriggered" }, ngImport: i0, template: `
|
|
97
257
|
<div
|
|
98
258
|
class="rpt-renderer-root"
|
|
99
259
|
[style.direction]="definition().layout.direction || 'ltr'"
|
|
@@ -122,8 +282,8 @@ export class DynamicRendererComponent {
|
|
|
122
282
|
[style.grid-column]="getGridColumn(comp)"
|
|
123
283
|
[style.grid-row]="getGridRow(comp)"
|
|
124
284
|
[style.width]="comp.layout?.width || 'auto'"
|
|
125
|
-
[style.height]="comp
|
|
126
|
-
[style.min-height]="comp
|
|
285
|
+
[style.height]="getComponentHeight(comp)"
|
|
286
|
+
[style.min-height]="getComponentMinHeight(comp)"
|
|
127
287
|
[style.max-height]="comp.layout?.maxHeight || 'none'"
|
|
128
288
|
>
|
|
129
289
|
@if (resolveComponent(comp.type); as compClass) {
|
|
@@ -144,16 +304,39 @@ export class DynamicRendererComponent {
|
|
|
144
304
|
}
|
|
145
305
|
|
|
146
306
|
<!-- Result Grid Section -->
|
|
147
|
-
@if (definition().grid
|
|
148
|
-
|
|
149
|
-
<rpt-grid-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
307
|
+
@if (definition().grid) {
|
|
308
|
+
@if (resultData() !== null && resultData() !== undefined) {
|
|
309
|
+
<div class="rpt-grid-section">
|
|
310
|
+
<rpt-grid-bridge
|
|
311
|
+
[gridDefinition]="definition().grid!"
|
|
312
|
+
[data]="resultData()!"
|
|
313
|
+
(gridStateChange)="gridStateChanged.emit($event)"
|
|
314
|
+
(columnDefsChange)="columnDefsChanged.emit($event)"
|
|
315
|
+
(rowClick)="onGridRowClick($event)"
|
|
316
|
+
(selectionChange)="onGridSelectionChange($event)"
|
|
317
|
+
/>
|
|
318
|
+
</div>
|
|
319
|
+
} @else {
|
|
320
|
+
<div class="rpt-grid-section rpt-grid-initial-state">
|
|
321
|
+
<div class="grid-initial-card">
|
|
322
|
+
<div class="grid-initial-icon">
|
|
323
|
+
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
|
324
|
+
<path d="M3 3h18v18H3zM3 9h18M3 15h18M9 3v18M15 3v18"/>
|
|
325
|
+
</svg>
|
|
326
|
+
</div>
|
|
327
|
+
<h4 class="grid-initial-title">Report Ready to Execute</h4>
|
|
328
|
+
<p class="grid-initial-desc">
|
|
329
|
+
Configure filter parameters above and execute the report to retrieve live records into the grid ({{ definition().grid?.columns?.length ?? 0 }} columns configured).
|
|
330
|
+
</p>
|
|
331
|
+
<button type="button" class="btn-grid-initial-exec" (click)="onSubmit()">
|
|
332
|
+
<span>Execute Report</span>
|
|
333
|
+
</button>
|
|
334
|
+
</div>
|
|
335
|
+
</div>
|
|
336
|
+
}
|
|
154
337
|
}
|
|
155
338
|
</div>
|
|
156
|
-
`, isInline: true, styles: [":host{display:block;width:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-renderer-root{width:100%;box-sizing:border-box}.rpt-header{margin-bottom:20px}.rpt-title{font-size:var(--rpt-font-size-xl, 1.5rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px;letter-spacing:-.02em}.rpt-description{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #64748b);margin:0}.rpt-form{margin-bottom:24px}.rpt-layout-grid{display:grid;width:100%;align-items:stretch}.rpt-cell{box-sizing:border-box;min-width:0;display:flex;flex-direction:column;height:100%}.rpt-cell>*{width:100%;height:100%;flex:1;display:flex;flex-direction:column;min-height:0;box-sizing:border-box}.rpt-unregistered-placeholder{padding:8px 12px;font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-danger, #ef4444);background-color:var(--rpt-color-danger-bg, #fef2f2);border:1px dashed var(--rpt-color-danger, #ef4444);border-radius:var(--rpt-border-radius, 6px)}.rpt-grid-section{width:100%;margin-top:16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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: "component", type: ReportGridBridgeComponent, selector: "rpt-grid-bridge", inputs: ["gridDefinition", "data"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
339
|
+
`, isInline: true, styles: [":host{display:block;width:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-renderer-root{width:100%;box-sizing:border-box}.rpt-header{margin-bottom:20px}.rpt-title{font-size:var(--rpt-font-size-xl, 1.5rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px;letter-spacing:-.02em}.rpt-description{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #64748b);margin:0}.rpt-form{margin-bottom:24px}.rpt-layout-grid{display:grid;width:100%;align-items:stretch}.rpt-cell{box-sizing:border-box;min-width:0;display:flex;flex-direction:column;height:100%}.rpt-cell>*{width:100%;height:100%;flex:1;display:flex;flex-direction:column;min-height:0;box-sizing:border-box}.rpt-unregistered-placeholder{padding:8px 12px;font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-danger, #ef4444);background-color:var(--rpt-color-danger-bg, #fef2f2);border:1px dashed var(--rpt-color-danger, #ef4444);border-radius:var(--rpt-border-radius, 6px)}.rpt-grid-section{width:100%;margin-top:16px}.rpt-grid-initial-state{padding:12px 0}.grid-initial-card{border:2px dashed var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-xl, 12px);background:var(--rpt-color-surface, #ffffff);padding:48px 24px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:var(--rpt-box-shadow-xs, 0 1px 2px rgba(0, 0, 0, .04))}.grid-initial-icon{width:52px;height:52px;border-radius:12px;background:#eff6ff;color:var(--rpt-color-primary, #2563eb);display:flex;align-items:center;justify-content:center;margin-bottom:14px}.grid-initial-title{font-size:var(--rpt-font-size-md, 1rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px}.grid-initial-desc{font-size:var(--rpt-font-size-sm, .8125rem);color:var(--rpt-color-text-muted, #64748b);max-width:460px;line-height:1.5;margin:0 0 20px}.btn-grid-initial-exec{padding:8px 20px;background:var(--rpt-color-primary, #2563eb);color:#fff;border:none;border-radius:var(--rpt-border-radius, 6px);font-size:var(--rpt-font-size-sm, .75rem);font-weight:600;cursor:pointer;box-shadow:0 1px 3px #2563eb33;transition:all var(--rpt-transition-speed, .15s) ease}.btn-grid-initial-exec:hover{background:var(--rpt-color-primary-hover, #1d4ed8);transform:translateY(-1px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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: "component", type: ReportGridBridgeComponent, selector: "rpt-grid-bridge", inputs: ["gridDefinition", "data"], outputs: ["gridStateChange", "columnDefsChange", "rowClick", "selectionChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
157
340
|
}
|
|
158
341
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DynamicRendererComponent, decorators: [{
|
|
159
342
|
type: Component,
|
|
@@ -186,8 +369,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
186
369
|
[style.grid-column]="getGridColumn(comp)"
|
|
187
370
|
[style.grid-row]="getGridRow(comp)"
|
|
188
371
|
[style.width]="comp.layout?.width || 'auto'"
|
|
189
|
-
[style.height]="comp
|
|
190
|
-
[style.min-height]="comp
|
|
372
|
+
[style.height]="getComponentHeight(comp)"
|
|
373
|
+
[style.min-height]="getComponentMinHeight(comp)"
|
|
191
374
|
[style.max-height]="comp.layout?.maxHeight || 'none'"
|
|
192
375
|
>
|
|
193
376
|
@if (resolveComponent(comp.type); as compClass) {
|
|
@@ -208,15 +391,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
208
391
|
}
|
|
209
392
|
|
|
210
393
|
<!-- Result Grid Section -->
|
|
211
|
-
@if (definition().grid
|
|
212
|
-
|
|
213
|
-
<rpt-grid-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
394
|
+
@if (definition().grid) {
|
|
395
|
+
@if (resultData() !== null && resultData() !== undefined) {
|
|
396
|
+
<div class="rpt-grid-section">
|
|
397
|
+
<rpt-grid-bridge
|
|
398
|
+
[gridDefinition]="definition().grid!"
|
|
399
|
+
[data]="resultData()!"
|
|
400
|
+
(gridStateChange)="gridStateChanged.emit($event)"
|
|
401
|
+
(columnDefsChange)="columnDefsChanged.emit($event)"
|
|
402
|
+
(rowClick)="onGridRowClick($event)"
|
|
403
|
+
(selectionChange)="onGridSelectionChange($event)"
|
|
404
|
+
/>
|
|
405
|
+
</div>
|
|
406
|
+
} @else {
|
|
407
|
+
<div class="rpt-grid-section rpt-grid-initial-state">
|
|
408
|
+
<div class="grid-initial-card">
|
|
409
|
+
<div class="grid-initial-icon">
|
|
410
|
+
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
|
411
|
+
<path d="M3 3h18v18H3zM3 9h18M3 15h18M9 3v18M15 3v18"/>
|
|
412
|
+
</svg>
|
|
413
|
+
</div>
|
|
414
|
+
<h4 class="grid-initial-title">Report Ready to Execute</h4>
|
|
415
|
+
<p class="grid-initial-desc">
|
|
416
|
+
Configure filter parameters above and execute the report to retrieve live records into the grid ({{ definition().grid?.columns?.length ?? 0 }} columns configured).
|
|
417
|
+
</p>
|
|
418
|
+
<button type="button" class="btn-grid-initial-exec" (click)="onSubmit()">
|
|
419
|
+
<span>Execute Report</span>
|
|
420
|
+
</button>
|
|
421
|
+
</div>
|
|
422
|
+
</div>
|
|
423
|
+
}
|
|
218
424
|
}
|
|
219
425
|
</div>
|
|
220
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-renderer-root{width:100%;box-sizing:border-box}.rpt-header{margin-bottom:20px}.rpt-title{font-size:var(--rpt-font-size-xl, 1.5rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px;letter-spacing:-.02em}.rpt-description{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #64748b);margin:0}.rpt-form{margin-bottom:24px}.rpt-layout-grid{display:grid;width:100%;align-items:stretch}.rpt-cell{box-sizing:border-box;min-width:0;display:flex;flex-direction:column;height:100%}.rpt-cell>*{width:100%;height:100%;flex:1;display:flex;flex-direction:column;min-height:0;box-sizing:border-box}.rpt-unregistered-placeholder{padding:8px 12px;font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-danger, #ef4444);background-color:var(--rpt-color-danger-bg, #fef2f2);border:1px dashed var(--rpt-color-danger, #ef4444);border-radius:var(--rpt-border-radius, 6px)}.rpt-grid-section{width:100%;margin-top:16px}\n"] }]
|
|
426
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-renderer-root{width:100%;box-sizing:border-box}.rpt-header{margin-bottom:20px}.rpt-title{font-size:var(--rpt-font-size-xl, 1.5rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px;letter-spacing:-.02em}.rpt-description{font-size:var(--rpt-font-size-base, .875rem);color:var(--rpt-color-text-muted, #64748b);margin:0}.rpt-form{margin-bottom:24px}.rpt-layout-grid{display:grid;width:100%;align-items:stretch}.rpt-cell{box-sizing:border-box;min-width:0;display:flex;flex-direction:column;height:100%}.rpt-cell>*{width:100%;height:100%;flex:1;display:flex;flex-direction:column;min-height:0;box-sizing:border-box}.rpt-unregistered-placeholder{padding:8px 12px;font-size:var(--rpt-font-size-sm, .75rem);color:var(--rpt-color-danger, #ef4444);background-color:var(--rpt-color-danger-bg, #fef2f2);border:1px dashed var(--rpt-color-danger, #ef4444);border-radius:var(--rpt-border-radius, 6px)}.rpt-grid-section{width:100%;margin-top:16px}.rpt-grid-initial-state{padding:12px 0}.grid-initial-card{border:2px dashed var(--rpt-color-border, #cbd5e1);border-radius:var(--rpt-border-radius-xl, 12px);background:var(--rpt-color-surface, #ffffff);padding:48px 24px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:var(--rpt-box-shadow-xs, 0 1px 2px rgba(0, 0, 0, .04))}.grid-initial-icon{width:52px;height:52px;border-radius:12px;background:#eff6ff;color:var(--rpt-color-primary, #2563eb);display:flex;align-items:center;justify-content:center;margin-bottom:14px}.grid-initial-title{font-size:var(--rpt-font-size-md, 1rem);font-weight:700;color:var(--rpt-color-text, #0f172a);margin:0 0 6px}.grid-initial-desc{font-size:var(--rpt-font-size-sm, .8125rem);color:var(--rpt-color-text-muted, #64748b);max-width:460px;line-height:1.5;margin:0 0 20px}.btn-grid-initial-exec{padding:8px 20px;background:var(--rpt-color-primary, #2563eb);color:#fff;border:none;border-radius:var(--rpt-border-radius, 6px);font-size:var(--rpt-font-size-sm, .75rem);font-weight:600;cursor:pointer;box-shadow:0 1px 3px #2563eb33;transition:all var(--rpt-transition-speed, .15s) ease}.btn-grid-initial-exec:hover{background:var(--rpt-color-primary-hover, #1d4ed8);transform:translateY(-1px)}\n"] }]
|
|
221
427
|
}] });
|
|
222
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9mZWF0dXJlcy9ydW50aW1lL2R5bmFtaWMtcmVuZGVyZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFJaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7QUFvSWpHLE1BQU0sT0FBTyx3QkFBd0I7SUFDbEIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3JDLFdBQVcsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUVqRCxVQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBb0IsQ0FBQztJQUNoRCxhQUFhLEdBQUcsS0FBSyxDQUEwQixFQUFFLENBQUMsQ0FBQztJQUNuRCxVQUFVLEdBQUcsS0FBSyxDQUFtQixJQUFJLENBQUMsQ0FBQztJQUUzQyxnQkFBZ0IsR0FBRyxNQUFNLEVBRzlCLENBQUM7SUFFSSxJQUFJLEdBQUcsUUFBUSxDQUFZLEdBQUcsRUFBRTtRQUN2QyxPQUFPLElBQUksQ0FB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTREVCxzbUNBN0RTLFlBQVksc1NBQUUsbUJBQW1CLHFiQUFFLHlCQUF5Qjs7NEZBK0gzRCx3QkFBd0I7a0JBbElwQyxTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLEVBQUUseUJBQXlCLENBQUMsWUFDN0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTREVCxtQkFnRWdCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBUeXBlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSZXBvcnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvcmVwb3J0LWRlZmluaXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzL3JlcG9ydC1jb21wb25lbnQubW9kZWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50QWN0aW9uRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzL2NvbXBvbmVudC1ldmVudC5tb2RlbCc7XG5pbXBvcnQgeyBDb21wb25lbnRSZWdpc3RyeSB9IGZyb20gJy4uLy4uL2NvcmUvcmVnaXN0cnkvY29tcG9uZW50LXJlZ2lzdHJ5JztcbmltcG9ydCB7IER5bmFtaWNGb3JtQnVpbGRlciB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvZHluYW1pYy1mb3JtLWJ1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBSZXBvcnRHcmlkQnJpZGdlQ29tcG9uZW50IH0gZnJvbSAnLi9yZXBvcnQtZ3JpZC1icmlkZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IGNhbGN1bGF0ZUdyaWRDb2x1bW4sIGNhbGN1bGF0ZUdyaWRSb3cgfSBmcm9tICcuLi9kZXNpZ25lci91dGlsaXRpZXMvY2FudmFzLWxheW91dC51dGlsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnB0LWR5bmFtaWMtcmVuZGVyZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBSZXBvcnRHcmlkQnJpZGdlQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInJwdC1yZW5kZXJlci1yb290XCJcbiAgICAgIFtzdHlsZS5kaXJlY3Rpb25dPVwiZGVmaW5pdGlvbigpLmxheW91dC5kaXJlY3Rpb24gfHwgJ2x0cidcIlxuICAgICAgW3N0eWxlLnBhZGRpbmcucHhdPVwiZGVmaW5pdGlvbigpLmxheW91dC5wYWRkaW5nID8/IDI0XCJcbiAgICA+XG4gICAgICA8IS0tIFJlcG9ydCBIZWFkZXIgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwicnB0LWhlYWRlclwiPlxuICAgICAgICA8aDIgY2xhc3M9XCJycHQtdGl0bGVcIj57eyBkZWZpbml0aW9uKCkubmFtZSB9fTwvaDI+XG4gICAgICAgIEBpZiAoZGVmaW5pdGlvbigpLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgPHAgY2xhc3M9XCJycHQtZGVzY3JpcHRpb25cIj57eyBkZWZpbml0aW9uKCkuZGVzY3JpcHRpb24gfX08L3A+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIENvbnRyb2xzIEZvcm0gLyBQYXJhbWV0ZXIgRmlsdGVyIEJhciAtLT5cbiAgICAgIEBpZiAoZGVmaW5pdGlvbigpLmNvbXBvbmVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm0oKVwiIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdCgpXCIgY2xhc3M9XCJycHQtZm9ybVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicnB0LWxheW91dC1ncmlkXCJcbiAgICAgICAgICAgIFtzdHlsZS5ncmlkLXRlbXBsYXRlLWNvbHVtbnNdPVwiZ3JpZENvbHVtbnNUZW1wbGF0ZSgpXCJcbiAgICAgICAgICAgIFtzdHlsZS5nYXAucHhdPVwiZGVmaW5pdGlvbigpLmxheW91dC5nYXAgPz8gMTZcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBmb3IgKGNvbXAgb2Ygc29ydGVkQ29tcG9uZW50cygpOyB0cmFjayBjb21wLmlkKSB7XG4gICAgICAgICAgICAgIEBpZiAoaXNDb21wb25lbnRWaXNpYmxlKGNvbXApKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJycHQtY2VsbFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuZ3JpZC1jb2x1bW5dPVwiZ2V0R3JpZENvbHVtbihjb21wKVwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuZ3JpZC1yb3ddPVwiZ2V0R3JpZFJvdyhjb21wKVwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29tcC5sYXlvdXQ/LndpZHRoIHx8ICdhdXRvJ1wiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImNvbXAubGF5b3V0Py5oZWlnaHQgfHwgJ2F1dG8nXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0XT1cImNvbXAubGF5b3V0Py5taW5IZWlnaHQgfHwgJ2F1dG8nXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0XT1cImNvbXAubGF5b3V0Py5tYXhIZWlnaHQgfHwgJ25vbmUnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBAaWYgKHJlc29sdmVDb21wb25lbnQoY29tcC50eXBlKTsgYXMgY29tcENsYXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdDb21wb25lbnRPdXRsZXRdPVwiY29tcENsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdDb21wb25lbnRPdXRsZXRJbnB1dHNdPVwiZ2V0Q29tcG9uZW50SW5wdXRzKGNvbXApXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LXVucmVnaXN0ZXJlZC1wbGFjZWhvbGRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIFVua25vd24gY29tcG9uZW50OiA8Y29kZT57eyBjb21wLnR5cGUgfX08L2NvZGU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZm9ybT5cbiAgICAgIH1cblxuICAgICAgPCEtLSBSZXN1bHQgR3JpZCBTZWN0aW9uIC0tPlxuICAgICAgQGlmIChkZWZpbml0aW9uKCkuZ3JpZCAmJiByZXN1bHREYXRhKCkgIT09IG51bGwgJiYgcmVzdWx0RGF0YSgpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInJwdC1ncmlkLXNlY3Rpb25cIj5cbiAgICAgICAgICA8cnB0LWdyaWQtYnJpZGdlXG4gICAgICAgICAgICBbZ3JpZERlZmluaXRpb25dPVwiZGVmaW5pdGlvbigpLmdyaWQhXCJcbiAgICAgICAgICAgIFtkYXRhXT1cInJlc3VsdERhdGEoKSFcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgOmhvc3Qge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICBmb250LWZhbWlseTogdmFyKC0tcnB0LWZvbnQtZmFtaWx5LCBpbmhlcml0KTtcbiAgICB9XG4gICAgLnJwdC1yZW5kZXJlci1yb290IHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB9XG4gICAgLnJwdC1oZWFkZXIge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICB9XG4gICAgLnJwdC10aXRsZSB7XG4gICAgICBmb250LXNpemU6IHZhcigtLXJwdC1mb250LXNpemUteGwsIDEuNXJlbSk7XG4gICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LCAjMGYxNzJhKTtcbiAgICAgIG1hcmdpbjogMCAwIDZweCAwO1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgfVxuICAgIC5ycHQtZGVzY3JpcHRpb24ge1xuICAgICAgZm9udC1zaXplOiB2YXIoLS1ycHQtZm9udC1zaXplLWJhc2UsIDAuODc1cmVtKTtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dC1tdXRlZCwgIzY0NzQ4Yik7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuICAgIC5ycHQtZm9ybSB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAyNHB4O1xuICAgIH1cbiAgICAucnB0LWxheW91dC1ncmlkIHtcbiAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgIH1cbiAgICAucnB0LWNlbGwge1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cbiAgICAucnB0LWNlbGwgPiAqIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgZmxleDogMTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgfVxuICAgIC5ycHQtdW5yZWdpc3RlcmVkLXBsYWNlaG9sZGVyIHtcbiAgICAgIHBhZGRpbmc6IDhweCAxMnB4O1xuICAgICAgZm9udC1zaXplOiB2YXIoLS1ycHQtZm9udC1zaXplLXNtLCAwLjc1cmVtKTtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItZGFuZ2VyLCAjZWY0NDQ0KTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXJwdC1jb2xvci1kYW5nZXItYmcsICNmZWYyZjIpO1xuICAgICAgYm9yZGVyOiAxcHggZGFzaGVkIHZhcigtLXJwdC1jb2xvci1kYW5nZXIsICNlZjQ0NDQpO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMsIDZweCk7XG4gICAgfVxuICAgIC5ycHQtZ3JpZC1zZWN0aW9uIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgbWFyZ2luLXRvcDogMTZweDtcbiAgICB9XG4gIGBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY1JlbmRlcmVyQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSByZWdpc3RyeSA9IGluamVjdChDb21wb25lbnRSZWdpc3RyeSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZm9ybUJ1aWxkZXIgPSBpbmplY3QoRHluYW1pY0Zvcm1CdWlsZGVyKTtcblxuICByZWFkb25seSBkZWZpbml0aW9uID0gaW5wdXQucmVxdWlyZWQ8UmVwb3J0RGVmaW5pdGlvbj4oKTtcbiAgcmVhZG9ubHkgaW5pdGlhbFZhbHVlcyA9IGlucHV0PFJlY29yZDxzdHJpbmcsIHVua25vd24+Pih7fSk7XG4gIHJlYWRvbmx5IHJlc3VsdERhdGEgPSBpbnB1dDx1bmtub3duW10gfCBudWxsPihudWxsKTtcblxuICByZWFkb25seSBleGVjdXRlUmVxdWVzdGVkID0gb3V0cHV0PHtcbiAgICBkZWZpbml0aW9uOiBSZXBvcnREZWZpbml0aW9uO1xuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9PigpO1xuXG4gIHJlYWRvbmx5IGZvcm0gPSBjb21wdXRlZDxGb3JtR3JvdXA+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQnVpbGRlci50b0Zvcm1Hcm91cChcbiAgICAgIHRoaXMuZGVmaW5pdGlvbigpLmNvbXBvbmVudHMsXG4gICAgICB0aGlzLmluaXRpYWxWYWx1ZXMoKVxuICAgICk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHNvcnRlZENvbXBvbmVudHMgPSBjb21wdXRlZDxSZXBvcnRDb21wb25lbnREZWZpbml0aW9uW10+KCgpID0+IHtcbiAgICByZXR1cm4gWy4uLnRoaXMuZGVmaW5pdGlvbigpLmNvbXBvbmVudHNdLnNvcnQoXG4gICAgICAoYSwgYikgPT4gKGEub3JkZXIgPz8gMCkgLSAoYi5vcmRlciA/PyAwKVxuICAgICk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHRvdGFsR3JpZENvbHVtbnMgPSBjb21wdXRlZDxudW1iZXI+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5kZWZpbml0aW9uKCkubGF5b3V0LmNvbHVtbnMgfHwgMTI7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGdyaWRDb2x1bW5zVGVtcGxhdGUgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcbiAgICByZXR1cm4gYHJlcGVhdCgke3RoaXMudG90YWxHcmlkQ29sdW1ucygpfSwgbWlubWF4KDAsIDFmcikpYDtcbiAgfSk7XG5cbiAgcmVzb2x2ZUNvbXBvbmVudCh0eXBlOiBzdHJpbmcpOiBUeXBlPHVua25vd24+IHwgbnVsbCB7XG4gICAgY29uc3QgbWV0YSA9IHRoaXMucmVnaXN0cnkucmVzb2x2ZSh0eXBlKTtcbiAgICByZXR1cm4gKG1ldGE/LmNvbXBvbmVudCBhcyBUeXBlPHVua25vd24+KSA/PyBudWxsO1xuICB9XG5cbiAgZ2V0Q29tcG9uZW50SW5wdXRzKGNvbXA6IFJlcG9ydENvbXBvbmVudERlZmluaXRpb24pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgY29uc3QgaW5wdXRzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICAgIGNvbmZpZzogY29tcCxcbiAgICAgIGRlZmluaXRpb246IGNvbXAsXG4gICAgfTtcblxuICAgIGlmIChjb21wLmtleSkge1xuICAgICAgaW5wdXRzWydjb250cm9sJ10gPSB0aGlzLmZvcm0oKS5nZXQoY29tcC5rZXkpO1xuICAgIH1cblxuICAgIHJldHVybiBpbnB1dHM7XG4gIH1cblxuXG4gIGdldEdyaWRDb2x1bW4oY29tcDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNhbGN1bGF0ZUdyaWRDb2x1bW4oY29tcCwgdGhpcy50b3RhbEdyaWRDb2x1bW5zKCkpO1xuICB9XG5cbiAgZ2V0R3JpZFJvdyhjb21wOiBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY2FsY3VsYXRlR3JpZFJvdyhjb21wKTtcbiAgfVxuXG4gIGlzQ29tcG9uZW50VmlzaWJsZShjb21wOiBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdmlzID0gY29tcC52aXNpYmlsaXR5O1xuICAgIGlmICghdmlzKSByZXR1cm4gdHJ1ZTtcbiAgICBjb25zdCBjdHJsID0gdGhpcy5mb3JtKCkuZ2V0KHZpcy5kZXBlbmRzT24pO1xuICAgIGNvbnN0IHZhbCA9IGN0cmwgPyBjdHJsLnZhbHVlIDogdW5kZWZpbmVkO1xuICAgIHN3aXRjaCAodmlzLm9wZXJhdG9yKSB7XG4gICAgICBjYXNlICdlcXVhbHMnOlxuICAgICAgICByZXR1cm4gdmFsID09PSB2aXMudmFsdWU7XG4gICAgICBjYXNlICdub3RFcXVhbHMnOlxuICAgICAgICByZXR1cm4gdmFsICE9PSB2aXMudmFsdWU7XG4gICAgICBjYXNlICdjb250YWlucyc6XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09PSAnc3RyaW5nJyAmJiB2YWwuaW5jbHVkZXMoU3RyaW5nKHZpcy52YWx1ZSkpO1xuICAgICAgY2FzZSAnZ3JlYXRlclRoYW4nOlxuICAgICAgICByZXR1cm4gTnVtYmVyKHZhbCkgPiBOdW1iZXIodmlzLnZhbHVlKTtcbiAgICAgIGNhc2UgJ2xlc3NUaGFuJzpcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWwpIDwgTnVtYmVyKHZpcy52YWx1ZSk7XG4gICAgICBjYXNlICdpc05vdEVtcHR5JzpcbiAgICAgICAgcmV0dXJuIHZhbCAhPT0gbnVsbCAmJiB2YWwgIT09IHVuZGVmaW5lZCAmJiB2YWwgIT09ICcnO1xuICAgICAgY2FzZSAnaXNFbXB0eSc6XG4gICAgICAgIHJldHVybiB2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQgfHwgdmFsID09PSAnJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIG9uU3VibWl0KCk6IHZvaWQge1xuICAgIGNvbnN0IGYgPSB0aGlzLmZvcm0oKTtcbiAgICBpZiAoZi5pbnZhbGlkKSB7XG4gICAgICBmLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJhbWV0ZXJzID0gdGhpcy5mb3JtQnVpbGRlci5leHRyYWN0VmFsdWVzKGYpO1xuICAgIHRoaXMuZXhlY3V0ZVJlcXVlc3RlZC5lbWl0KHtcbiAgICAgIGRlZmluaXRpb246IHRoaXMuZGVmaW5pdGlvbigpLFxuICAgICAgcGFyYW1ldGVycyxcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZUFjdGlvbihhY3Rpb246IENvbXBvbmVudEFjdGlvbkRlZmluaXRpb24pOiB2b2lkIHtcbiAgICBpZiAoYWN0aW9uLnR5cGUgPT09ICdleGVjdXRlLXJlcG9ydCcpIHtcbiAgICAgIHRoaXMub25TdWJtaXQoKTtcbiAgICB9IGVsc2UgaWYgKGFjdGlvbi50eXBlID09PSAncmVzZXQnKSB7XG4gICAgICB0aGlzLmZvcm0oKS5yZXNldCgpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
428
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9mZWF0dXJlcy9ydW50aW1lL2R5bmFtaWMtcmVuZGVyZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBS3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN0Qix5QkFBeUIsRUFDMUIsTUFBTSwwQ0FBMEMsQ0FBQzs7OztBQWtObEQsTUFBTSxPQUFPLHdCQUF3QjtJQUNsQixRQUFRLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDckMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3pDLE1B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QUksV0FDUCxDQUFDLFlBQVksRUFBRSxtQkFBbUIsRUFBRSx5QkFBeUIsQ0FBQyxZQUM3RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtRlQsbUJBdUhnQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgVHlwZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFJlcG9ydERlZmluaXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtZGVmaW5pdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvcmVwb3J0LWNvbXBvbmVudC5tb2RlbCc7XG5pbXBvcnQgeyBDb21wb25lbnRBY3Rpb25EZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvY29tcG9uZW50LWV2ZW50Lm1vZGVsJztcbmltcG9ydCB7IEdyaWRDb2x1bW5EZWZpbml0aW9uLCBHcmlkUm93Q2xpY2tBY3Rpb24gfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtZ3JpZC5tb2RlbCc7XG5pbXBvcnQgeyBDb21wb25lbnRSZWdpc3RyeSB9IGZyb20gJy4uLy4uL2NvcmUvcmVnaXN0cnkvY29tcG9uZW50LXJlZ2lzdHJ5JztcbmltcG9ydCB7IER5bmFtaWNGb3JtQnVpbGRlciB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvZHluYW1pYy1mb3JtLWJ1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBSZXBvcnRFeHBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vZXhwb3J0L3NlcnZpY2VzL3JlcG9ydC1leHBvcnQuc2VydmljZSc7XG5pbXBvcnQgeyBSZXBvcnRTZXNzaW9uQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL3JlcG9ydC1zZXNzaW9uLWNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBnZXRGaWVsZENhc2VJbnNlbnNpdGl2ZSB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvZGF0YS1ub3JtYWxpemF0aW9uLnV0aWwnO1xuaW1wb3J0IHsgUmVwb3J0R3JpZEJyaWRnZUNvbXBvbmVudCB9IGZyb20gJy4vcmVwb3J0LWdyaWQtYnJpZGdlLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBjYWxjdWxhdGVHcmlkQ29sdW1uLFxuICBjYWxjdWxhdGVHcmlkUm93LFxuICByZXNvbHZlQ29tcG9uZW50SGVpZ2h0LFxuICByZXNvbHZlQ29tcG9uZW50TWluSGVpZ2h0XG59IGZyb20gJy4uL2Rlc2lnbmVyL3V0aWxpdGllcy9jYW52YXMtbGF5b3V0LnV0aWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdycHQtZHluYW1pYy1yZW5kZXJlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFJlcG9ydEdyaWRCcmlkZ2VDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicnB0LXJlbmRlcmVyLXJvb3RcIlxuICAgICAgW3N0eWxlLmRpcmVjdGlvbl09XCJkZWZpbml0aW9uKCkubGF5b3V0LmRpcmVjdGlvbiB8fCAnbHRyJ1wiXG4gICAgICBbc3R5bGUucGFkZGluZy5weF09XCJkZWZpbml0aW9uKCkubGF5b3V0LnBhZGRpbmcgPz8gMjRcIlxuICAgID5cbiAgICAgIDwhLS0gUmVwb3J0IEhlYWRlciAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJycHQtaGVhZGVyXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cInJwdC10aXRsZVwiPnt7IGRlZmluaXRpb24oKS5uYW1lIH19PC9oMj5cbiAgICAgICAgQGlmIChkZWZpbml0aW9uKCkuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICA8cCBjbGFzcz1cInJwdC1kZXNjcmlwdGlvblwiPnt7IGRlZmluaXRpb24oKS5kZXNjcmlwdGlvbiB9fTwvcD5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gQ29udHJvbHMgRm9ybSAvIFBhcmFtZXRlciBGaWx0ZXIgQmFyIC0tPlxuICAgICAgQGlmIChkZWZpbml0aW9uKCkuY29tcG9uZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybSgpXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KClcIiBjbGFzcz1cInJwdC1mb3JtXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJycHQtbGF5b3V0LWdyaWRcIlxuICAgICAgICAgICAgW3N0eWxlLmdyaWQtdGVtcGxhdGUtY29sdW1uc109XCJncmlkQ29sdW1uc1RlbXBsYXRlKClcIlxuICAgICAgICAgICAgW3N0eWxlLmdhcC5weF09XCJkZWZpbml0aW9uKCkubGF5b3V0LmdhcCA/PyAxNlwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQGZvciAoY29tcCBvZiBzb3J0ZWRDb21wb25lbnRzKCk7IHRyYWNrIGNvbXAuaWQpIHtcbiAgICAgICAgICAgICAgQGlmIChpc0NvbXBvbmVudFZpc2libGUoY29tcCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInJwdC1jZWxsXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5ncmlkLWNvbHVtbl09XCJnZXRHcmlkQ29sdW1uKGNvbXApXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5ncmlkLXJvd109XCJnZXRHcmlkUm93KGNvbXApXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb21wLmxheW91dD8ud2lkdGggfHwgJ2F1dG8nXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiZ2V0Q29tcG9uZW50SGVpZ2h0KGNvbXApXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0XT1cImdldENvbXBvbmVudE1pbkhlaWdodChjb21wKVwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodF09XCJjb21wLmxheW91dD8ubWF4SGVpZ2h0IHx8ICdub25lJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQGlmIChyZXNvbHZlQ29tcG9uZW50KGNvbXAudHlwZSk7IGFzIGNvbXBDbGFzcykge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ29tcG9uZW50T3V0bGV0XT1cImNvbXBDbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ29tcG9uZW50T3V0bGV0SW5wdXRzXT1cImdldENvbXBvbmVudElucHV0cyhjb21wKVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJwdC11bnJlZ2lzdGVyZWQtcGxhY2Vob2xkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICBVbmtub3duIGNvbXBvbmVudDogPGNvZGU+e3sgY29tcC50eXBlIH19PC9jb2RlPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Zvcm0+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gUmVzdWx0IEdyaWQgU2VjdGlvbiAtLT5cbiAgICAgIEBpZiAoZGVmaW5pdGlvbigpLmdyaWQpIHtcbiAgICAgICAgQGlmIChyZXN1bHREYXRhKCkgIT09IG51bGwgJiYgcmVzdWx0RGF0YSgpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LWdyaWQtc2VjdGlvblwiPlxuICAgICAgICAgICAgPHJwdC1ncmlkLWJyaWRnZVxuICAgICAgICAgICAgICBbZ3JpZERlZmluaXRpb25dPVwiZGVmaW5pdGlvbigpLmdyaWQhXCJcbiAgICAgICAgICAgICAgW2RhdGFdPVwicmVzdWx0RGF0YSgpIVwiXG4gICAgICAgICAgICAgIChncmlkU3RhdGVDaGFuZ2UpPVwiZ3JpZFN0YXRlQ2hhbmdlZC5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAoY29sdW1uRGVmc0NoYW5nZSk9XCJjb2x1bW5EZWZzQ2hhbmdlZC5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAocm93Q2xpY2spPVwib25HcmlkUm93Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25HcmlkU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJwdC1ncmlkLXNlY3Rpb24gcnB0LWdyaWQtaW5pdGlhbC1zdGF0ZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtaW5pdGlhbC1jYXJkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLWluaXRpYWwtaWNvblwiPlxuICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyOFwiIGhlaWdodD1cIjI4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS44XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMgM2gxOHYxOEgzek0zIDloMThNMyAxNWgxOE05IDN2MThNMTUgM3YxOFwiLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxoNCBjbGFzcz1cImdyaWQtaW5pdGlhbC10aXRsZVwiPlJlcG9ydCBSZWFkeSB0byBFeGVjdXRlPC9oND5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJncmlkLWluaXRpYWwtZGVzY1wiPlxuICAgICAgICAgICAgICAgIENvbmZpZ3VyZSBmaWx0ZXIgcGFyYW1ldGVycyBhYm92ZSBhbmQgZXhlY3V0ZSB0aGUgcmVwb3J0IHRvIHJldHJpZXZlIGxpdmUgcmVjb3JkcyBpbnRvIHRoZSBncmlkICh7eyBkZWZpbml0aW9uKCkuZ3JpZD8uY29sdW1ucz8ubGVuZ3RoID8/IDAgfX0gY29sdW1ucyBjb25maWd1cmVkKS5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmlkLWluaXRpYWwtZXhlY1wiIChjbGljayk9XCJvblN1Ym1pdCgpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+RXhlY3V0ZSBSZXBvcnQ8L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbYFxuICAgIDpob3N0IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgZm9udC1mYW1pbHk6IHZhcigtLXJwdC1mb250LWZhbWlseSwgaW5oZXJpdCk7XG4gICAgfVxuICAgIC5ycHQtcmVuZGVyZXItcm9vdCB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgfVxuICAgIC5ycHQtaGVhZGVyIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgfVxuICAgIC5ycHQtdGl0bGUge1xuICAgICAgZm9udC1zaXplOiB2YXIoLS1ycHQtZm9udC1zaXplLXhsLCAxLjVyZW0pO1xuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dCwgIzBmMTcyYSk7XG4gICAgICBtYXJnaW46IDAgMCA2cHggMDtcbiAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICAgIH1cbiAgICAucnB0LWRlc2NyaXB0aW9uIHtcbiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tcnB0LWZvbnQtc2l6ZS1iYXNlLCAwLjg3NXJlbSk7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQtbXV0ZWQsICM2NDc0OGIpO1xuICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbiAgICAucnB0LWZvcm0ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgICB9XG4gICAgLnJwdC1sYXlvdXQtZ3JpZCB7XG4gICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICB9XG4gICAgLnJwdC1jZWxsIHtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICBtaW4td2lkdGg6IDA7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG4gICAgLnJwdC1jZWxsID4gKiB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIGZsZXg6IDE7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIH1cbiAgICAucnB0LXVucmVnaXN0ZXJlZC1wbGFjZWhvbGRlciB7XG4gICAgICBwYWRkaW5nOiA4cHggMTJweDtcbiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tcnB0LWZvbnQtc2l6ZS1zbSwgMC43NXJlbSk7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLWRhbmdlciwgI2VmNDQ0NCk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ycHQtY29sb3ItZGFuZ2VyLWJnLCAjZmVmMmYyKTtcbiAgICAgIGJvcmRlcjogMXB4IGRhc2hlZCB2YXIoLS1ycHQtY29sb3ItZGFuZ2VyLCAjZWY0NDQ0KTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJwdC1ib3JkZXItcmFkaXVzLCA2cHgpO1xuICAgIH1cbiAgICAucnB0LWdyaWQtc2VjdGlvbiB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgfVxuICAgIC5ycHQtZ3JpZC1pbml0aWFsLXN0YXRlIHtcbiAgICAgIHBhZGRpbmc6IDEycHggMDtcbiAgICB9XG4gICAgLmdyaWQtaW5pdGlhbC1jYXJkIHtcbiAgICAgIGJvcmRlcjogMnB4IGRhc2hlZCB2YXIoLS1ycHQtY29sb3ItYm9yZGVyLCAjY2JkNWUxKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJwdC1ib3JkZXItcmFkaXVzLXhsLCAxMnB4KTtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1jb2xvci1zdXJmYWNlLCAjZmZmZmZmKTtcbiAgICAgIHBhZGRpbmc6IDQ4cHggMjRweDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgYm94LXNoYWRvdzogdmFyKC0tcnB0LWJveC1zaGFkb3cteHMsIDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDQpKTtcbiAgICB9XG4gICAgLmdyaWQtaW5pdGlhbC1pY29uIHtcbiAgICAgIHdpZHRoOiA1MnB4O1xuICAgICAgaGVpZ2h0OiA1MnB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgIGJhY2tncm91bmQ6ICNlZmY2ZmY7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIG1hcmdpbi1ib3R0b206IDE0cHg7XG4gICAgfVxuICAgIC5ncmlkLWluaXRpYWwtdGl0bGUge1xuICAgICAgZm9udC1zaXplOiB2YXIoLS1ycHQtZm9udC1zaXplLW1kLCAxcmVtKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQsICMwZjE3MmEpO1xuICAgICAgbWFyZ2luOiAwIDAgNnB4IDA7XG4gICAgfVxuICAgIC5ncmlkLWluaXRpYWwtZGVzYyB7XG4gICAgICBmb250LXNpemU6IHZhcigtLXJwdC1mb250LXNpemUtc20sIDAuODEyNXJlbSk7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQtbXV0ZWQsICM2NDc0OGIpO1xuICAgICAgbWF4LXdpZHRoOiA0NjBweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICBtYXJnaW46IDAgMCAyMHB4IDA7XG4gICAgfVxuICAgIC5idG4tZ3JpZC1pbml0aWFsLWV4ZWMge1xuICAgICAgcGFkZGluZzogOHB4IDIwcHg7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJwdC1ib3JkZXItcmFkaXVzLCA2cHgpO1xuICAgICAgZm9udC1zaXplOiB2YXIoLS1ycHQtZm9udC1zaXplLXNtLCAwLjc1cmVtKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgzNywgOTksIDIzNSwgMC4yKTtcbiAgICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1ycHQtdHJhbnNpdGlvbi1zcGVlZCwgMTUwbXMpIGVhc2U7XG4gICAgfVxuICAgIC5idG4tZ3JpZC1pbml0aWFsLWV4ZWM6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnktaG92ZXIsICMxZDRlZDgpO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgIH1cbiAgYF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljUmVuZGVyZXJDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lzdHJ5ID0gaW5qZWN0KENvbXBvbmVudFJlZ2lzdHJ5KTtcbiAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlciA9IGluamVjdChEeW5hbWljRm9ybUJ1aWxkZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXhwb3J0U2VydmljZSA9IGluamVjdChSZXBvcnRFeHBvcnRTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KFJlcG9ydFNlc3Npb25Db250ZXh0U2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICByZWFkb25seSBkZWZpbml0aW9uID0gaW5wdXQucmVxdWlyZWQ8UmVwb3J0RGVmaW5pdGlvbj4oKTtcbiAgcmVhZG9ubHkgaW5pdGlhbFZhbHVlcyA9IGlucHV0PFJlY29yZDxzdHJpbmcsIHVua25vd24+Pih7fSk7XG4gIHJlYWRvbmx5IHJlc3VsdERhdGEgPSBpbnB1dDx1bmtub3duW10gfCBudWxsPihudWxsKTtcblxuICByZWFkb25seSBleGVjdXRlUmVxdWVzdGVkID0gb3V0cHV0PHtcbiAgICBkZWZpbml0aW9uOiBSZXBvcnREZWZpbml0aW9uO1xuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9PigpO1xuXG4gIHJlYWRvbmx5IHJlc2V0UmVxdWVzdGVkID0gb3V0cHV0PHtcbiAgICBkZWZpbml0aW9uOiBSZXBvcnREZWZpbml0aW9uO1xuICB9PigpO1xuXG4gIHJlYWRvbmx5IGV4cG9ydFJlcXVlc3RlZCA9IG91dHB1dDx7XG4gICAgZm9ybWF0OiBzdHJpbmc7XG4gICAgZmlsZU5hbWU/OiBzdHJpbmc7XG4gICAgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgZGF0YTogdW5rbm93bltdIHwgbnVsbDtcbiAgfT4oKTtcblxuICByZWFkb25seSBwcmludFJlcXVlc3RlZCA9IG91dHB1dDx7XG4gICAgcnB0RmlsZU5hbWU/OiBzdHJpbmc7XG4gICAgZXhwb3J0VHlwZT86IHN0cmluZztcbiAgICBwYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgfT4oKTtcblxuICByZWFkb25seSBjdXN0b21BY3Rpb25UcmlnZ2VyZWQgPSBvdXRwdXQ8e1xuICAgIGFjdGlvbjogQ29tcG9uZW50QWN0aW9uRGVmaW5pdGlvbjtcbiAgICBjb21wb25lbnQ6IFJlcG9ydENvbXBvbmVudERlZmluaXRpb247XG4gICAgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH0+KCk7XG5cbiAgcmVhZG9ubHkgZ3JpZFN0YXRlQ2hhbmdlZCA9IG91dHB1dDxhbnk+KCk7XG4gIHJlYWRvbmx5IGNvbHVtbkRlZnNDaGFuZ2VkID0gb3V0cHV0PGFueT4oKTtcbiAgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlID0gb3V0cHV0PGFueVtdPigpO1xuICByZWFkb25seSBzZWxlY3Rpb25DaGFuZ2VkID0gb3V0cHV0PGFueVtdPigpO1xuICByZWFkb25seSByb3dBY3Rpb25UcmlnZ2VyZWQgPSBvdXRwdXQ8e1xuICAgIGFjdGlvbjogR3JpZFJvd0NsaWNrQWN0aW9uO1xuICAgIHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH0+KCk7XG5cbiAgcmVhZG9ubHkgZm9ybSA9IGNvbXB1dGVkPEZvcm1Hcm91cD4oKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLnRvRm9ybUdyb3VwKFxuICAgICAgdGhpcy5kZWZpbml0aW9uKCkuY29tcG9uZW50cyxcbiAgICAgIHRoaXMuaW5pdGlhbFZhbHVlcygpXG4gICAgKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc29ydGVkQ29tcG9uZW50cyA9IGNvbXB1dGVkPFJlcG9ydENvbXBvbmVudERlZmluaXRpb25bXT4oKCkgPT4ge1xuICAgIHJldHVybiBbLi4udGhpcy5kZWZpbml0aW9uKCkuY29tcG9uZW50c10uc29ydChcbiAgICAgIChhLCBiKSA9PiAoYS5vcmRlciA/PyAwKSAtIChiLm9yZGVyID8/IDApXG4gICAgKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgdG90YWxHcmlkQ29sdW1ucyA9IGNvbXB1dGVkPG51bWJlcj4oKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmRlZmluaXRpb24oKS5sYXlvdXQuY29sdW1ucyB8fCAxMjtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZ3JpZENvbHVtbnNUZW1wbGF0ZSA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICAgIHJldHVybiBgcmVwZWF0KCR7dGhpcy50b3RhbEdyaWRDb2x1bW5zKCl9LCBtaW5tYXgoMCwgMWZyKSlgO1xuICB9KTtcblxuICByZXNvbHZlQ29tcG9uZW50KHR5cGU6IHN0cmluZyk6IFR5cGU8dW5rbm93bj4gfCBudWxsIHtcbiAgICBjb25zdCBtZXRhID0gdGhpcy5yZWdpc3RyeS5yZXNvbHZlKHR5cGUpO1xuICAgIHJldHVybiAobWV0YT8uY29tcG9uZW50IGFzIFR5cGU8dW5rbm93bj4pID8/IG51bGw7XG4gIH1cblxuICBnZXRDb21wb25lbnRJbnB1dHMoY29tcDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICBjb25zdCBpbnB1dHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgICBpZiAoY29tcC50eXBlID09PSAna3BpLWNhcmQnIHx8IGNvbXAudHlwZSA9PT0gJ2NoYXJ0Jykge1xuICAgICAgaW5wdXRzWydkZWZpbml0aW9uJ10gPSBjb21wO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnB1dHNbJ2NvbmZpZyddID0gY29tcDtcbiAgICB9XG5cbiAgICBpZiAoY29tcC5rZXkgJiYgY29tcC50eXBlICE9PSAnYnV0dG9uJyAmJiBjb21wLnR5cGUgIT09ICdrcGktY2FyZCcgJiYgY29tcC50eXBlICE9PSAnY2hhcnQnKSB7XG4gICAgICBpbnB1dHNbJ2NvbnRyb2wnXSA9IHRoaXMuZm9ybSgpLmdldChjb21wLmtleSk7XG4gICAgfVxuXG4gICAgaWYgKGNvbXAudHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xuICAgICAgaW5wdXRzWydwYXJlbnRGb3JtJ10gPSB0aGlzLmZvcm0oKTtcbiAgICB9XG5cbiAgICBpZiAoY29tcC50eXBlID09PSAnYnV0dG9uJykge1xuICAgICAgaW5wdXRzWydvbkFjdGlvbiddID0gKGFjdGlvbjogQ29tcG9uZW50QWN0aW9uRGVmaW5pdGlvbikgPT4gdGhpcy5oYW5kbGVBY3Rpb24oYWN0aW9uLCBjb21wKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5wdXRzO1xuICB9XG5cblxuICBnZXRHcmlkQ29sdW1uKGNvbXA6IFJlcG9ydENvbXBvbmVudERlZmluaXRpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiBjYWxjdWxhdGVHcmlkQ29sdW1uKGNvbXAsIHRoaXMudG90YWxHcmlkQ29sdW1ucygpKTtcbiAgfVxuXG4gIGdldEdyaWRSb3coY29tcDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNhbGN1bGF0ZUdyaWRSb3coY29tcCk7XG4gIH1cblxuICBnZXRDb21wb25lbnRIZWlnaHQoY29tcDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJlc29sdmVDb21wb25lbnRIZWlnaHQoY29tcCk7XG4gIH1cblxuICBnZXRDb21wb25lbnRNaW5IZWlnaHQoY29tcDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJlc29sdmVDb21wb25lbnRNaW5IZWlnaHQoY29tcCk7XG4gIH1cblxuICBpc0NvbXBvbmVudFZpc2libGUoY29tcDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHZpcyA9IGNvbXAudmlzaWJpbGl0eTtcbiAgICBpZiAoIXZpcykgcmV0dXJuIHRydWU7XG4gICAgY29uc3QgY3RybCA9IHRoaXMuZm9ybSgpLmdldCh2aXMuZGVwZW5kc09uKTtcbiAgICBjb25zdCB2YWwgPSBjdHJsID8gY3RybC52YWx1ZSA6IHVuZGVmaW5lZDtcbiAgICBzd2l0Y2ggKHZpcy5vcGVyYXRvcikge1xuICAgICAgY2FzZSAnZXF1YWxzJzpcbiAgICAgICAgcmV0dXJuIHZhbCA9PT0gdmlzLnZhbHVlO1xuICAgICAgY2FzZSAnbm90RXF1YWxzJzpcbiAgICAgICAgcmV0dXJuIHZhbCAhPT0gdmlzLnZhbHVlO1xuICAgICAgY2FzZSAnY29udGFpbnMnOlxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgJiYgdmFsLmluY2x1ZGVzKFN0cmluZyh2aXMudmFsdWUpKTtcbiAgICAgIGNhc2UgJ2dyZWF0ZXJUaGFuJzpcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWwpID4gTnVtYmVyKHZpcy52YWx1ZSk7XG4gICAgICBjYXNlICdsZXNzVGhhbic6XG4gICAgICAgIHJldHVybiBOdW1iZXIodmFsKSA8IE51bWJlcih2aXMudmFsdWUpO1xuICAgICAgY2FzZSAnaXNOb3RFbXB0eSc6XG4gICAgICAgIHJldHVybiB2YWwgIT09IG51bGwgJiYgdmFsICE9PSB1bmRlZmluZWQgJiYgdmFsICE9PSAnJztcbiAgICAgIGNhc2UgJ2lzRW1wdHknOlxuICAgICAgICByZXR1cm4gdmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkIHx8IHZhbCA9PT0gJyc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBvblN1Ym1pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBmID0gdGhpcy5mb3JtKCk7XG4gICAgaWYgKGYuaW52YWxpZCkge1xuICAgICAgZi5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFyYW1ldGVycyA9IHRoaXMuZm9ybUJ1aWxkZXIuZXh0cmFjdFZhbHVlcyhmKTtcbiAgICB0aGlzLmV4ZWN1dGVSZXF1ZXN0ZWQuZW1pdCh7XG4gICAgICBkZWZpbml0aW9uOiB0aGlzLmRlZmluaXRpb24oKSxcbiAgICAgIHBhcmFtZXRlcnMsXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVBY3Rpb24oYWN0aW9uOiBDb21wb25lbnRBY3Rpb25EZWZpbml0aW9uLCBjb21wPzogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB0aGlzLmZvcm1CdWlsZGVyLmV4dHJhY3RWYWx1ZXModGhpcy5mb3JtKCkpO1xuXG4gICAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgICAgY2FzZSAnZXhlY3V0ZS1yZXBvcnQnOlxuICAgICAgY2FzZSAnc3VibWl0JzpcbiAgICAgICAgdGhpcy5vblN1Ym1pdCgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAncmVzZXQnOlxuICAgICAgICB0aGlzLmZvcm0oKS5yZXNldCh0aGlzLmluaXRpYWxWYWx1ZXMoKSk7XG4gICAgICAgIHRoaXMucmVzZXRSZXF1ZXN0ZWQuZW1pdCh7IGRlZmluaXRpb246IHRoaXMuZGVmaW5pdGlvbigpIH0pO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZXhwb3J0Jzoge1xuICAgICAgICBjb25zdCBmb3JtYXQgPSAoYWN0aW9uLnBhcmFtcz8uWydmb3JtYXQnXSBhcyBzdHJpbmcpIHx8ICdleGNlbCc7XG4gICAgICAgIGNvbnN0IGRlZmF1bHROYW1lID0gdGhpcy5kZWZpbml0aW9uKCkubmFtZVxuICAgICAgICAgID8gdGhpcy5kZWZpbml0aW9uKCkubmFtZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teYS16MC05Xy1dL2dpLCAnXycpXG4gICAgICAgICAgOiAncmVwb3J0JztcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSAoYWN0aW9uLnBhcmFtcz8uWydmaWxlTmFtZSddIGFzIHN0cmluZykgfHwgYCR7ZGVmYXVsdE5hbWV9XyR7RGF0ZS5ub3coKX1gO1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5yZXN1bHREYXRhKCk7XG5cbiAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggPiAwICYmIHRoaXMuZXhwb3J0U2VydmljZSkge1xuICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdjc3YnKSB7XG4gICAgICAgICAgICB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0Q3N2KGRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSwge1xuICAgICAgICAgICAgICBmaWxlTmFtZTogYCR7ZmlsZU5hbWV9LmNzdmAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gJ2pzb24nKSB7XG4gICAgICAgICAgICB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0SnNvbihkYXRhLCB7XG4gICAgICAgICAgICAgIGZpbGVOYW1lOiBgJHtmaWxlTmFtZX0uanNvbmAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmV4cG9ydFJlcXVlc3RlZC5lbWl0KHtcbiAgICAgICAgICBmb3JtYXQsXG4gICAgICAgICAgZmlsZU5hbWUsXG4gICAgICAgICAgcGFyYW1ldGVycyxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3ByaW50LXJlcG9ydCc6IHtcbiAgICAgICAgY29uc3QgcnB0RmlsZU5hbWUgPSAoYWN0aW9uLnBhcmFtcz8uWydycHRGaWxlTmFtZSddIGFzIHN0cmluZykgfHwgJyc7XG4gICAgICAgIGNvbnN0IGV4cG9ydFR5cGUgPSAoYWN0aW9uLnBhcmFtcz8uWydleHBvcnRUeXBlJ10gYXMgc3RyaW5nKSB8fCAncGRmJztcbiAgICAgICAgdGhpcy5wcmludFJlcXVlc3RlZC5lbWl0KHtcbiAgICAgICAgICBycHRGaWxlTmFtZSxcbiAgICAgICAgICBleHBvcnRUeXBlLFxuICAgICAgICAgIHBhcmFtZXRlcnMsXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSAnbmF2aWdhdGUnOiB7XG4gICAgICAgIGNvbnN0IHRhcmdldFVybCA9IChhY3Rpb24ucGFyYW1zPy5bJ3RhcmdldFVybCddIGFzIHN0cmluZykgfHwgJyc7XG4gICAgICAgIGNvbnN0IG9wZW5OZXdUYWIgPSBhY3Rpb24ucGFyYW1zPy5bJ29wZW5OZXdUYWInXSA9PT0gdHJ1ZTtcblxuICAgICAgICBpZiAodGFyZ2V0VXJsKSB7XG4gICAgICAgICAgaWYgKG9wZW5OZXdUYWIgfHwgdGFyZ2V0VXJsLnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSB8fCB0YXJnZXRVcmwuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSkge1xuICAgICAgICAgICAgd2luZG93Lm9wZW4odGFyZ2V0VXJsLCBvcGVuTmV3VGFiID8gJ19ibGFuaycgOiAnX3NlbGYnKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucm91dGVyKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGFyZ2V0VXJsXSwgeyBxdWVyeVBhcmFtczogcGFyYW1ldGVycyB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0YXJnZXRVcmw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlICdjdXN0b20tZXZlbnQnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGNvbXApIHtcbiAgICAgICAgICB0aGlzLmN1c3RvbUFjdGlvblRyaWdnZXJlZC5lbWl0KHtcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIGNvbXBvbmVudDogY29tcCxcbiAgICAgICAgICAgIHBhcmFtZXRlcnMsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgb25HcmlkUm93Q2xpY2soZXZlbnQ6IHtcbiAgICByb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGNvbHVtbj86IEdyaWRDb2x1bW5EZWZpbml0aW9uO1xuICAgIGV2ZW50PzogTW91c2VFdmVudDtcbiAgfSk6IHZvaWQge1xuICAgIGNvbnN0IGdyaWQgPSB0aGlzLmRlZmluaXRpb24oKS5ncmlkO1xuICAgIGlmICghZ3JpZCkgcmV0dXJuO1xuXG4gICAgY29uc3QgYWN0aW9uID0gZXZlbnQuY29sdW1uPy5hY3Rpb24gPz8gZ3JpZC5yb3dDbGlja0FjdGlvbiA/PyBncmlkLm9wdGlvbnM/LnJvd0NsaWNrQWN0aW9uO1xuICAgIGlmICghYWN0aW9uKSByZXR1cm47XG5cbiAgICBjb25zdCBmb3JtVmFsdWVzID0gdGhpcy5mb3JtQnVpbGRlci5leHRyYWN0VmFsdWVzKHRoaXMuZm9ybSgpKTtcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5zZXNzaW9uU2VydmljZT8uc2Vzc2lvbkNvbnRleHQoKSA/PyB7fTtcbiAgICBjb25zdCBtYXBwZWRQYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXG4gICAgaWYgKGFjdGlvbi5wYXJhbWV0ZXJNYXBwaW5nICYmIE9iamVjdC5rZXlzKGFjdGlvbi5wYXJhbWV0ZXJNYXBwaW5nKS5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IFt0YXJnZXRLZXksIGV4cHJdIG9mIE9iamVjdC5lbnRyaWVzKGFjdGlvbi5wYXJhbWV0ZXJNYXBwaW5nKSkge1xuICAgICAgICBsZXQgdmFsOiB1bmtub3duID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoZXhwci5zdGFydHNXaXRoKCdyb3cuJykpIHtcbiAgICAgICAgICBjb25zdCByb3dGaWVsZCA9IGV4cHIuc2xpY2UoNCk7XG4gICAgICAgICAgdmFsID0gZ2V0RmllbGRDYXNlSW5zZW5zaXRpdmUoZXZlbnQucm93LCByb3dGaWVsZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXhwci5zdGFydHNXaXRoKCdmb3JtLicpIHx8IGV4cHIuc3RhcnRzV2l0aCgnZm9ybVZhbHVlcy4nKSkge1xuICAgICAgICAgIGNvbnN0IGZvcm1GaWVsZCA9IGV4cHIucmVwbGFjZSgvXmZvcm1cXC58XmZvcm1WYWx1ZXNcXC4vLCAnJyk7XG4gICAgICAgICAgdmFsID0gZ2V0RmllbGRDYXNlSW5zZW5zaXRpdmUoZm9ybVZhbHVlcywgZm9ybUZpZWxkKTtcbiAgICAgICAgfSBlbHNlIGlmIChleHByLnN0YXJ0c1dpdGgoJ3Nlc3Npb24uJykpIHtcbiAgICAgICAgICBjb25zdCBzZXNzaW9uRmllbGQgPSBleHByLnNsaWNlKDgpO1xuICAgICAgICAgIHZhbCA9IGdldEZpZWxkQ2FzZUluc2Vuc2l0aXZlKHNlc3Npb24sIHNlc3Npb25GaWVsZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRGlyZWN0IHJvdyBmaWVsZCBvciBsaXRlcmFsXG4gICAgICAgICAgdmFsID0gZ2V0RmllbGRDYXNlSW5zZW5zaXRpdmUoZXZlbnQucm93LCBleHByKSA/PyBleHByO1xuICAgICAgICB9XG4gICAgICAgIG1hcHBlZFBhcmFtZXRlcnNbdGFyZ2V0S2V5XSA9IHZhbCAhPT0gdW5kZWZpbmVkID8gdmFsIDogJyc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIERlZmF1bHQ6IGNvcHkgZW50aXJlIHJvdyBkYXRhXG4gICAgICBPYmplY3QuYXNzaWduKG1hcHBlZFBhcmFtZXRlcnMsIGV2ZW50LnJvdyk7XG4gICAgfVxuXG4gICAgaWYgKGFjdGlvbi50eXBlID09PSAnbmF2aWdhdGUnICYmIGFjdGlvbi50YXJnZXRVcmwpIHtcbiAgICAgIGxldCB0YXJnZXRVcmwgPSBhY3Rpb24udGFyZ2V0VXJsO1xuICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoZXZlbnQucm93KSkge1xuICAgICAgICB0YXJnZXRVcmwgPSB0YXJnZXRVcmwucmVwbGFjZShcbiAgICAgICAgICBuZXcgUmVnRXhwKGBcXFxce1xcXFx7XFxcXHMqKD86cm93XFxcXC4pPyR7a31cXFxccypcXFxcfVxcXFx9YCwgJ2dpJyksXG4gICAgICAgICAgU3RyaW5nKHYgPz8gJycpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoYWN0aW9uLm9wZW5OZXdUYWIgfHwgdGFyZ2V0VXJsLnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSB8fCB0YXJnZXRVcmwuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSkge1xuICAgICAgICB3aW5kb3cub3Blbih0YXJnZXRVcmwsIGFjdGlvbi5vcGVuTmV3VGFiID8gJ19ibGFuaycgOiAnX3NlbGYnKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5yb3V0ZXIpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0YXJnZXRVcmwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0YXJnZXRVcmw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yb3dBY3Rpb25UcmlnZ2VyZWQuZW1pdCh7XG4gICAgICBhY3Rpb24sXG4gICAgICByb3c6IGV2ZW50LnJvdyxcbiAgICAgIHBhcmFtZXRlcnM6IG1hcHBlZFBhcmFtZXRlcnMsXG4gICAgfSk7XG4gIH1cblxuICBvbkdyaWRTZWxlY3Rpb25DaGFuZ2Uocm93czogYW55W10pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHJvd3MpO1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZC5lbWl0KHJvd3MpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { ReportRuntimeComponent } from './report-runtime.component';
|
|
2
2
|
export { DynamicRendererComponent } from './dynamic-renderer.component';
|
|
3
3
|
export { ReportGridBridgeComponent } from './report-grid-bridge.component';
|
|
4
|
-
|
|
4
|
+
export { RptReportComponent } from './rpt-report.component';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9mZWF0dXJlcy9ydW50aW1lL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgUmVwb3J0UnVudGltZUNvbXBvbmVudCB9IGZyb20gJy4vcmVwb3J0LXJ1bnRpbWUuY29tcG9uZW50JztcbmV4cG9ydCB7IER5bmFtaWNSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1yZW5kZXJlci5jb21wb25lbnQnO1xuZXhwb3J0IHsgUmVwb3J0R3JpZEJyaWRnZUNvbXBvbmVudCB9IGZyb20gJy4vcmVwb3J0LWdyaWQtYnJpZGdlLmNvbXBvbmVudCc7XG5leHBvcnQgeyBScHRSZXBvcnRDb21wb25lbnQgfSBmcm9tICcuL3JwdC1yZXBvcnQuY29tcG9uZW50JztcbmV4cG9ydCB0eXBlIHsgUmVwb3J0Vmlld1ByZXNldCB9IGZyb20gJy4vcnB0LXJlcG9ydC5jb21wb25lbnQnO1xuIl19
|