footprintjs 3.0.3 → 3.0.5
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/dist/esm/index.js +1 -2
- package/dist/esm/lib/builder/FlowChartBuilder.js +8 -8
- package/dist/esm/lib/builder/typedFlowChart.js +2 -4
- package/dist/esm/lib/engine/handlers/SubflowExecutor.js +9 -2
- package/dist/index.js +2 -4
- package/dist/lib/builder/FlowChartBuilder.js +8 -8
- package/dist/lib/builder/typedFlowChart.js +2 -4
- package/dist/lib/engine/handlers/SubflowExecutor.js +9 -2
- package/dist/types/index.d.ts +0 -1
- package/dist/types/lib/builder/FlowChartBuilder.d.ts +1 -1
- package/package.json +1 -1
|
@@ -103,7 +103,14 @@ export class SubflowExecutor {
|
|
|
103
103
|
outputContext = parentContext.parent;
|
|
104
104
|
}
|
|
105
105
|
const parentScope = outputContext.getScope();
|
|
106
|
-
|
|
106
|
+
// For TypedScope subflows, stage functions return void — fall back to a shallow clone
|
|
107
|
+
// of the subflow's shared state so outputMapper can access all scope values written
|
|
108
|
+
// during the subflow. We shallow-clone to avoid aliasing the live SharedMemory context.
|
|
109
|
+
// NOTE: the full scope is passed (not just declared outputs) — outputMapper must
|
|
110
|
+
// explicitly select what to propagate to the parent. Redaction of subflow PII keys
|
|
111
|
+
// is the caller's responsibility until the full redaction layer is implemented.
|
|
112
|
+
const effectiveOutput = subflowOutput !== null && subflowOutput !== void 0 ? subflowOutput : { ...subflowTreeContext.sharedState };
|
|
113
|
+
const mappedOutput = applyOutputMapping(effectiveOutput, parentScope, outputContext, mountOptions);
|
|
107
114
|
outputContext.commit();
|
|
108
115
|
}
|
|
109
116
|
catch (error) {
|
|
@@ -334,4 +341,4 @@ export class SubflowExecutor {
|
|
|
334
341
|
return await this.executeNodeChildrenInternal(tempNode, context, branchPath, breakFlag);
|
|
335
342
|
}
|
|
336
343
|
}
|
|
337
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3ViZmxvd0V4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvaGFuZGxlcnMvU3ViZmxvd0V4ZWN1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7R0FZRztBQUlILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSTFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4QixxQkFBcUIsRUFDckIsc0JBQXNCLEdBQ3ZCLE1BQU0seUJBQXlCLENBQUM7QUF3QmpDLE1BQU0sT0FBTyxlQUFlO0lBSzFCLFlBQ1UsSUFBK0IsRUFDL0IsWUFBd0MsRUFDeEMsWUFBMEMsRUFDMUMsYUFBNEMsRUFDNUMsVUFBc0M7UUFKdEMsU0FBSSxHQUFKLElBQUksQ0FBMkI7UUFDL0IsaUJBQVksR0FBWixZQUFZLENBQTRCO1FBQ3hDLGlCQUFZLEdBQVosWUFBWSxDQUE4QjtRQUMxQyxrQkFBYSxHQUFiLGFBQWEsQ0FBK0I7UUFDNUMsZUFBVSxHQUFWLFVBQVUsQ0FBNEI7SUFDN0MsQ0FBQztJQUVKOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FDbEIsSUFBNkIsRUFDN0IsYUFBMkIsRUFDM0IsU0FBbUMsRUFDbkMsVUFBOEIsRUFDOUIsaUJBQTZDLEVBQzdDLHNCQUF5Qzs7UUFFekMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVUsQ0FBQztRQUNsQyxNQUFNLFdBQVcsR0FBRyxNQUFBLElBQUksQ0FBQyxXQUFXLG1DQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7UUFFbEQsYUFBYSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxZQUFZLFdBQVcsVUFBVSxFQUFFO1lBQzlFLFdBQVcsRUFBRSxTQUFTO1NBQ3ZCLENBQUMsQ0FBQztRQUNI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QUUsWUFBWSxDQUFDLENBQUM7WUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pGLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxQixPQUFPLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBNEI7WUFDeEMsSUFBSSxFQUFFLGVBQWU7WUFDckIsRUFBRSxFQUFFLGVBQWU7WUFDbkIsUUFBUSxFQUFFLGdCQUFnQjtTQUMzQixDQUFDO1FBQ0YsT0FBTyxNQUFNLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMxRixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN1YmZsb3dFeGVjdXRvciDigJQgSXNvbGF0ZWQgcmVjdXJzaXZlIGV4ZWN1dGlvbiB3aXRoIEkvTyBtYXBwaW5nLlxuICpcbiAqIFJlc3BvbnNpYmlsaXRpZXM6XG4gKiAtIEV4ZWN1dGUgc3ViZmxvd3Mgd2l0aCBpc29sYXRlZCBFeGVjdXRpb25SdW50aW1lIGNvbnRleHRzXG4gKiAtIEFwcGx5IGlucHV0L291dHB1dCBtYXBwaW5nIHZpYSBTdWJmbG93SW5wdXRNYXBwZXJcbiAqIC0gSGFuZGxlIG5lc3RlZCBzdWJmbG93IGRldGVjdGlvbiBhbmQgZGVsZWdhdGlvblxuICogLSBUcmFjayBzdWJmbG93IHJlc3VsdHMgZm9yIGRlYnVnZ2luZy92aXN1YWxpemF0aW9uXG4gKlxuICogRWFjaCBzdWJmbG93IGdldHMgaXRzIG93biBHbG9iYWxTdG9yZSBmb3IgaXNvbGF0aW9uLlxuICogVGhlIHN1YmZsb3cncyBgbmV4dGAgY2hhaW4gYWZ0ZXIgY2hpbGRyZW4gaXMgTk9UIGV4ZWN1dGVkIGluc2lkZSDigJRcbiAqIHRoZSBwYXJlbnQncyBleGVjdXRlTm9kZSBjb250aW51ZXMgd2l0aCBub2RlLm5leHQgYWZ0ZXIgcmV0dXJuLlxuICovXG5cbmltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSAnLi4vLi4vbWVtb3J5L1N0YWdlQ29udGV4dC5qcyc7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdG9yLCBTdGFnZU5vZGUgfSBmcm9tICcuLi9ncmFwaC9TdGFnZU5vZGUuanMnO1xuaW1wb3J0IHsgaXNTdGFnZU5vZGVSZXR1cm4gfSBmcm9tICcuLi9ncmFwaC9TdGFnZU5vZGUuanMnO1xuaW1wb3J0IHR5cGUgeyBUcmF2ZXJzYWxDb250ZXh0IH0gZnJvbSAnLi4vbmFycmF0aXZlL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgSGFuZGxlckRlcHMsIElFeGVjdXRpb25SdW50aW1lLCBOb2RlUmVzdWx0VHlwZSwgU3RhZ2VGdW5jdGlvbiwgU3ViZmxvd1Jlc3VsdCB9IGZyb20gJy4uL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgTm9kZVJlc29sdmVyIH0gZnJvbSAnLi9Ob2RlUmVzb2x2ZXIuanMnO1xuaW1wb3J0IHsgU3RhZ2VSdW5uZXIgfSBmcm9tICcuL1N0YWdlUnVubmVyLmpzJztcbmltcG9ydCB7XG4gIGFwcGx5T3V0cHV0TWFwcGluZyxcbiAgY3JlYXRlU3ViZmxvd0hhbmRsZXJEZXBzLFxuICBnZXRJbml0aWFsU2NvcGVWYWx1ZXMsXG4gIHNlZWRTdWJmbG93R2xvYmFsU3RvcmUsXG59IGZyb20gJy4vU3ViZmxvd0lucHV0TWFwcGVyLmpzJztcblxuLyoqIENhbGxiYWNrIGZvciBydW5uaW5nIGEgc3RhZ2UgZnVuY3Rpb24uIEF2b2lkcyBjaXJjdWxhciBkZXAgd2l0aCB0cmF2ZXJzZXIuICovXG5leHBvcnQgdHlwZSBFeGVjdXRlU3RhZ2VGbjxUT3V0ID0gYW55LCBUU2NvcGUgPSBhbnk+ID0gKFxuICBub2RlOiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPixcbiAgc3RhZ2VGdW5jOiBTdGFnZUZ1bmN0aW9uPFRPdXQsIFRTY29wZT4sXG4gIGNvbnRleHQ6IFN0YWdlQ29udGV4dCxcbiAgYnJlYWtGbjogKCkgPT4gdm9pZCxcbikgPT4gUHJvbWlzZTxUT3V0PjtcblxuLyoqIENhbGxiYWNrIGZvciBjYWxsaW5nIHRoZSB0cmF2ZXJzYWwgZXh0cmFjdG9yLiAqL1xuZXhwb3J0IHR5cGUgQ2FsbEV4dHJhY3RvckZuPFRPdXQgPSBhbnksIFRTY29wZSA9IGFueT4gPSAoXG4gIG5vZGU6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+LFxuICBjb250ZXh0OiBTdGFnZUNvbnRleHQsXG4gIHN0YWdlUGF0aDogc3RyaW5nLFxuICBzdGFnZU91dHB1dD86IHVua25vd24sXG4gIGVycm9ySW5mbz86IHsgdHlwZTogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfSxcbikgPT4gdm9pZDtcblxuLyoqIENhbGxiYWNrIGZvciBnZXR0aW5nIGEgc3RhZ2UgZnVuY3Rpb24gZnJvbSB0aGUgc3RhZ2UgbWFwLiAqL1xuZXhwb3J0IHR5cGUgR2V0U3RhZ2VGbkZuPFRPdXQgPSBhbnksIFRTY29wZSA9IGFueT4gPSAoXG4gIG5vZGU6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+LFxuKSA9PiBTdGFnZUZ1bmN0aW9uPFRPdXQsIFRTY29wZT4gfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCBjbGFzcyBTdWJmbG93RXhlY3V0b3I8VE91dCA9IGFueSwgVFNjb3BlID0gYW55PiB7XG4gIHByaXZhdGUgY3VycmVudFN1YmZsb3dEZXBzPzogSGFuZGxlckRlcHM8VE91dCwgVFNjb3BlPjtcbiAgcHJpdmF0ZSBjdXJyZW50U3ViZmxvd1Jvb3Q/OiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPjtcbiAgcHJpdmF0ZSBzdWJmbG93UmVzdWx0c01hcD86IE1hcDxzdHJpbmcsIFN1YmZsb3dSZXN1bHQ+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGVwczogSGFuZGxlckRlcHM8VE91dCwgVFNjb3BlPixcbiAgICBwcml2YXRlIG5vZGVSZXNvbHZlcjogTm9kZVJlc29sdmVyPFRPdXQsIFRTY29wZT4sXG4gICAgcHJpdmF0ZSBleGVjdXRlU3RhZ2U6IEV4ZWN1dGVTdGFnZUZuPFRPdXQsIFRTY29wZT4sXG4gICAgcHJpdmF0ZSBjYWxsRXh0cmFjdG9yOiBDYWxsRXh0cmFjdG9yRm48VE91dCwgVFNjb3BlPixcbiAgICBwcml2YXRlIGdldFN0YWdlRm46IEdldFN0YWdlRm5GbjxUT3V0LCBUU2NvcGU+LFxuICApIHt9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgYSBzdWJmbG93IHdpdGggaXNvbGF0ZWQgY29udGV4dC5cbiAgICpcbiAgICogMS4gQ3JlYXRlcyBhIGZyZXNoIEV4ZWN1dGlvblJ1bnRpbWUgZm9yIHRoZSBzdWJmbG93XG4gICAqIDIuIEFwcGxpZXMgaW5wdXQgbWFwcGluZyB0byBzZWVkIHRoZSBzdWJmbG93J3MgR2xvYmFsU3RvcmVcbiAgICogMy4gRXhlY3V0ZXMgdGhlIHN1YmZsb3cncyBpbnRlcm5hbCBzdHJ1Y3R1cmVcbiAgICogNC4gQXBwbGllcyBvdXRwdXQgbWFwcGluZyB0byB3cml0ZSByZXN1bHRzIGJhY2sgdG8gcGFyZW50IHNjb3BlXG4gICAqIDUuIFN0b3JlcyBleGVjdXRpb24gZGF0YSBmb3IgZGVidWdnaW5nL3Zpc3VhbGl6YXRpb25cbiAgICovXG4gIGFzeW5jIGV4ZWN1dGVTdWJmbG93KFxuICAgIG5vZGU6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+LFxuICAgIHBhcmVudENvbnRleHQ6IFN0YWdlQ29udGV4dCxcbiAgICBicmVha0ZsYWc6IHsgc2hvdWxkQnJlYWs6IGJvb2xlYW4gfSxcbiAgICBicmFuY2hQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgc3ViZmxvd1Jlc3VsdHNNYXA6IE1hcDxzdHJpbmcsIFN1YmZsb3dSZXN1bHQ+LFxuICAgIHBhcmVudFRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICApOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHN1YmZsb3dJZCA9IG5vZGUuc3ViZmxvd0lkITtcbiAgICBjb25zdCBzdWJmbG93TmFtZSA9IG5vZGUuc3ViZmxvd05hbWUgPz8gbm9kZS5uYW1lO1xuXG4gICAgcGFyZW50Q29udGV4dC5hZGRGbG93RGVidWdNZXNzYWdlKCdzdWJmbG93JywgYEVudGVyaW5nICR7c3ViZmxvd05hbWV9IHN1YmZsb3dgLCB7XG4gICAgICB0YXJnZXRTdGFnZTogc3ViZmxvd0lkLFxuICAgIH0pO1xuICAgIHRoaXMuZGVwcy5uYXJyYXRpdmVHZW5lcmF0b3Iub25TdWJmbG93RW50cnkoc3ViZmxvd05hbWUsIHN1YmZsb3dJZCwgbm9kZS5kZXNjcmlwdGlvbiwgcGFyZW50VHJhdmVyc2FsQ29udGV4dCk7XG5cbiAgICAvLyDilIDilIDilIAgSW5wdXQgTWFwcGluZyDilIDilIDilIBcbiAgICBjb25zdCBtb3VudE9wdGlvbnMgPSBub2RlLnN1YmZsb3dNb3VudE9wdGlvbnM7XG4gICAgbGV0IG1hcHBlZElucHV0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXG4gICAgaWYgKG1vdW50T3B0aW9ucykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGFyZW50U2NvcGUgPSBwYXJlbnRDb250ZXh0LmdldFNjb3BlKCk7XG4gICAgICAgIG1hcHBlZElucHV0ID0gZ2V0SW5pdGlhbFNjb3BlVmFsdWVzKHBhcmVudFNjb3BlLCBtb3VudE9wdGlvbnMpO1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMobWFwcGVkSW5wdXQpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAvLyBtYXBwZWRJbnB1dCBpcyBjYXB0dXJlZCBpbiBTdWJmbG93UmVzdWx0LnRyZWVDb250ZXh0IGZvciBkZWJ1Z2dpbmdcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICBwYXJlbnRDb250ZXh0LmFkZEVycm9yKCdpbnB1dE1hcHBlckVycm9yJywgZXJyb3IudG9TdHJpbmcoKSk7XG4gICAgICAgIHRoaXMuZGVwcy5sb2dnZXIuZXJyb3IoYEVycm9yIGluIGlucHV0TWFwcGVyIGZvciBzdWJmbG93ICgke3N1YmZsb3dJZH0pOmAsIHsgZXJyb3IgfSk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENyZWF0ZSBpc29sYXRlZCBydW50aW1lIHZpYSBkeW5hbWljIGNvbnN0cnVjdGlvbiAoYXZvaWRzIGNpcmN1bGFyIGltcG9ydClcbiAgICBjb25zdCBFeGVjdXRpb25SdW50aW1lQ2xhc3MgPSB0aGlzLmRlcHMuZXhlY3V0aW9uUnVudGltZS5jb25zdHJ1Y3RvciBhcyBuZXcgKFxuICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgaWQ6IHN0cmluZyxcbiAgICApID0+IElFeGVjdXRpb25SdW50aW1lO1xuICAgIGNvbnN0IG5lc3RlZFJ1bnRpbWUgPSBuZXcgRXhlY3V0aW9uUnVudGltZUNsYXNzKG5vZGUubmFtZSwgbm9kZS5pZCk7XG4gICAgbGV0IG5lc3RlZFJvb3RDb250ZXh0ID0gbmVzdGVkUnVudGltZS5yb290U3RhZ2VDb250ZXh0O1xuXG4gICAgLy8gU2VlZCBHbG9iYWxTdG9yZSB3aXRoIGlucHV0XG4gICAgaWYgKE9iamVjdC5rZXlzKG1hcHBlZElucHV0KS5sZW5ndGggPiAwKSB7XG4gICAgICBzZWVkU3ViZmxvd0dsb2JhbFN0b3JlKG5lc3RlZFJ1bnRpbWUsIG1hcHBlZElucHV0KTtcbiAgICAgIC8vIFJlZnJlc2ggcm9vdFN0YWdlQ29udGV4dCBzbyBXcml0ZUJ1ZmZlciBzZWVzIGNvbW1pdHRlZCBkYXRhXG4gICAgICBjb25zdCBTdGFnZUNvbnRleHRDbGFzcyA9IG5lc3RlZFJvb3RDb250ZXh0LmNvbnN0cnVjdG9yIGFzIG5ldyAoLi4uYXJnczogYW55W10pID0+IFN0YWdlQ29udGV4dDtcbiAgICAgIG5lc3RlZFJvb3RDb250ZXh0ID0gbmV3IFN0YWdlQ29udGV4dENsYXNzKFxuICAgICAgICAnJyxcbiAgICAgICAgbmVzdGVkUm9vdENvbnRleHQuc3RhZ2VOYW1lLFxuICAgICAgICBuZXN0ZWRSb290Q29udGV4dC5zdGFnZUlkLFxuICAgICAgICBuZXN0ZWRSdW50aW1lLmdsb2JhbFN0b3JlLFxuICAgICAgICAnJyxcbiAgICAgICAgbmVzdGVkUnVudGltZS5leGVjdXRpb25IaXN0b3J5LFxuICAgICAgKTtcbiAgICAgIG5lc3RlZFJ1bnRpbWUucm9vdFN0YWdlQ29udGV4dCA9IG5lc3RlZFJvb3RDb250ZXh0O1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBzdWJmbG93IEhhbmRsZXJEZXBzXG4gICAgY29uc3Qgc3ViZmxvd0RlcHMgPSBjcmVhdGVTdWJmbG93SGFuZGxlckRlcHModGhpcy5kZXBzLCBuZXN0ZWRSdW50aW1lLCBtYXBwZWRJbnB1dCk7XG5cbiAgICBjb25zdCBzdWJmbG93QnJlYWtGbGFnID0geyBzaG91bGRCcmVhazogZmFsc2UgfTtcblxuICAgIGNvbnN0IGhhc0NoaWxkcmVuID0gQm9vbGVhbihub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCk7XG4gICAgY29uc3Qgc3ViZmxvd05vZGU6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+ID0ge1xuICAgICAgLi4ubm9kZSxcbiAgICAgIGlzU3ViZmxvd1Jvb3Q6IGZhbHNlLFxuICAgICAgbmV4dDogaGFzQ2hpbGRyZW4gPyB1bmRlZmluZWQgOiBub2RlLm5leHQsXG4gICAgfTtcblxuICAgIGxldCBzdWJmbG93T3V0cHV0OiBhbnk7XG4gICAgbGV0IHN1YmZsb3dFcnJvcjogRXJyb3IgfCB1bmRlZmluZWQ7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5zdWJmbG93UmVzdWx0c01hcCA9IHN1YmZsb3dSZXN1bHRzTWFwO1xuICAgICAgdGhpcy5jdXJyZW50U3ViZmxvd1Jvb3QgPSBzdWJmbG93Tm9kZTtcbiAgICAgIHRoaXMuY3VycmVudFN1YmZsb3dEZXBzID0gc3ViZmxvd0RlcHM7XG5cbiAgICAgIHN1YmZsb3dPdXRwdXQgPSBhd2FpdCB0aGlzLmV4ZWN1dGVTdWJmbG93SW50ZXJuYWwoc3ViZmxvd05vZGUsIG5lc3RlZFJvb3RDb250ZXh0LCBzdWJmbG93QnJlYWtGbGFnLCBzdWJmbG93SWQpO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIHN1YmZsb3dFcnJvciA9IGVycm9yO1xuICAgICAgcGFyZW50Q29udGV4dC5hZGRFcnJvcignc3ViZmxvd0Vycm9yJywgZXJyb3IudG9TdHJpbmcoKSk7XG4gICAgICB0aGlzLmRlcHMubG9nZ2VyLmVycm9yKGBFcnJvciBpbiBzdWJmbG93ICgke3N1YmZsb3dJZH0pOmAsIHsgZXJyb3IgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuY3VycmVudFN1YmZsb3dSb290ID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5jdXJyZW50U3ViZmxvd0RlcHMgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3Qgc3ViZmxvd1RyZWVDb250ZXh0ID0gbmVzdGVkUnVudGltZS5nZXRTbmFwc2hvdCgpO1xuXG4gICAgLy8g4pSA4pSA4pSAIE91dHB1dCBNYXBwaW5nIOKUgOKUgOKUgFxuICAgIGlmICghc3ViZmxvd0Vycm9yICYmIG1vdW50T3B0aW9ucz8ub3V0cHV0TWFwcGVyKSB7XG4gICAgICB0cnkge1xuICAgICAgICBsZXQgb3V0cHV0Q29udGV4dCA9IHBhcmVudENvbnRleHQ7XG4gICAgICAgIGlmIChwYXJlbnRDb250ZXh0LmJyYW5jaElkICYmIHBhcmVudENvbnRleHQuYnJhbmNoSWQgIT09ICcnICYmIHBhcmVudENvbnRleHQucGFyZW50KSB7XG4gICAgICAgICAgb3V0cHV0Q29udGV4dCA9IHBhcmVudENvbnRleHQucGFyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFyZW50U2NvcGUgPSBvdXRwdXRDb250ZXh0LmdldFNjb3BlKCk7XG4gICAgICAgIGNvbnN0IG1hcHBlZE91dHB1dCA9IGFwcGx5T3V0cHV0TWFwcGluZyhzdWJmbG93T3V0cHV0LCBwYXJlbnRTY29wZSwgb3V0cHV0Q29udGV4dCwgbW91bnRPcHRpb25zKTtcblxuICAgICAgICBvdXRwdXRDb250ZXh0LmNvbW1pdCgpO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICBwYXJlbnRDb250ZXh0LmFkZEVycm9yKCdvdXRwdXRNYXBwZXJFcnJvcicsIGVycm9yLnRvU3RyaW5nKCkpO1xuICAgICAgICB0aGlzLmRlcHMubG9nZ2VyLmVycm9yKGBFcnJvciBpbiBvdXRwdXRNYXBwZXIgZm9yIHN1YmZsb3cgKCR7c3ViZmxvd0lkfSk6YCwgeyBlcnJvciB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzdWJmbG93UmVzdWx0OiBTdWJmbG93UmVzdWx0ID0ge1xuICAgICAgc3ViZmxvd0lkLFxuICAgICAgc3ViZmxvd05hbWUsXG4gICAgICB0cmVlQ29udGV4dDoge1xuICAgICAgICBnbG9iYWxDb250ZXh0OiBzdWJmbG93VHJlZUNvbnRleHQuc2hhcmVkU3RhdGUsXG4gICAgICAgIHN0YWdlQ29udGV4dHM6IHN1YmZsb3dUcmVlQ29udGV4dC5leGVjdXRpb25UcmVlIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgIGhpc3Rvcnk6IHN1YmZsb3dUcmVlQ29udGV4dC5jb21taXRMb2csXG4gICAgICB9LFxuICAgICAgcGFyZW50U3RhZ2VJZDogcGFyZW50Q29udGV4dC5nZXRTdGFnZUlkKCksXG4gICAgfTtcblxuICAgIGNvbnN0IHN1YmZsb3dEZWYgPSB0aGlzLmRlcHMuc3ViZmxvd3M/LltzdWJmbG93SWRdO1xuICAgIGlmIChzdWJmbG93RGVmICYmIChzdWJmbG93RGVmIGFzIGFueSkuYnVpbGRUaW1lU3RydWN0dXJlKSB7XG4gICAgICBzdWJmbG93UmVzdWx0LnBpcGVsaW5lU3RydWN0dXJlID0gKHN1YmZsb3dEZWYgYXMgYW55KS5idWlsZFRpbWVTdHJ1Y3R1cmU7XG4gICAgfVxuXG4gICAgc3ViZmxvd1Jlc3VsdHNNYXAuc2V0KHN1YmZsb3dJZCwgc3ViZmxvd1Jlc3VsdCk7XG5cbiAgICBwYXJlbnRDb250ZXh0LmFkZEZsb3dEZWJ1Z01lc3NhZ2UoJ3N1YmZsb3cnLCBgRXhpdGluZyAke3N1YmZsb3dOYW1lfSBzdWJmbG93YCwge1xuICAgICAgdGFyZ2V0U3RhZ2U6IHN1YmZsb3dJZCxcbiAgICB9KTtcbiAgICB0aGlzLmRlcHMubmFycmF0aXZlR2VuZXJhdG9yLm9uU3ViZmxvd0V4aXQoc3ViZmxvd05hbWUsIHN1YmZsb3dJZCwgcGFyZW50VHJhdmVyc2FsQ29udGV4dCk7XG5cbiAgICBwYXJlbnRDb250ZXh0LmNvbW1pdCgpO1xuXG4gICAgaWYgKHN1YmZsb3dFcnJvcikge1xuICAgICAgdGhyb3cgc3ViZmxvd0Vycm9yO1xuICAgIH1cblxuICAgIHJldHVybiBzdWJmbG93T3V0cHV0O1xuICB9XG5cbiAgLyoqXG4gICAqIEludGVybmFsIGV4ZWN1dGlvbiB3aXRoaW4gc3ViZmxvdyBjb250ZXh0LlxuICAgKiBNaXJyb3JzIHRoZSB0cmF2ZXJzZXIncyBleGVjdXRlTm9kZSBidXQgd2l0aGluIHRoZSBzdWJmbG93J3MgaXNvbGF0ZWQgcnVudGltZS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZXhlY3V0ZVN1YmZsb3dJbnRlcm5hbChcbiAgICBub2RlOiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPixcbiAgICBjb250ZXh0OiBTdGFnZUNvbnRleHQsXG4gICAgYnJlYWtGbGFnOiB7IHNob3VsZEJyZWFrOiBib29sZWFuIH0sXG4gICAgYnJhbmNoUGF0aDogc3RyaW5nLFxuICApOiBQcm9taXNlPGFueT4ge1xuICAgIC8vIERldGVjdCBuZXN0ZWQgc3ViZmxvd3NcbiAgICBpZiAobm9kZS5pc1N1YmZsb3dSb290ICYmIG5vZGUuc3ViZmxvd0lkKSB7XG4gICAgICBjb25zdCByZXNvbHZlZE5vZGUgPSB0aGlzLm5vZGVSZXNvbHZlci5yZXNvbHZlU3ViZmxvd1JlZmVyZW5jZShub2RlKTtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVTdWJmbG93KHJlc29sdmVkTm9kZSwgY29udGV4dCwgYnJlYWtGbGFnLCBicmFuY2hQYXRoLCB0aGlzLnN1YmZsb3dSZXN1bHRzTWFwISk7XG4gICAgfVxuXG4gICAgLy8gQnVpbGQgdHJhdmVyc2FsIGNvbnRleHQgZm9yIHN1YmZsb3cgc3RhZ2UgZXZlbnRzXG4gICAgY29uc3QgdHJhdmVyc2FsQ29udGV4dDogVHJhdmVyc2FsQ29udGV4dCA9IHtcbiAgICAgIHN0YWdlSWQ6IG5vZGUuaWQgPz8gY29udGV4dC5zdGFnZUlkLFxuICAgICAgc3RhZ2VOYW1lOiBub2RlLm5hbWUsXG4gICAgICBwYXJlbnRTdGFnZUlkOiBjb250ZXh0LnBhcmVudD8uc3RhZ2VJZCxcbiAgICAgIHN1YmZsb3dJZDogYnJhbmNoUGF0aCB8fCB1bmRlZmluZWQsXG4gICAgICBzdWJmbG93UGF0aDogYnJhbmNoUGF0aCB8fCB1bmRlZmluZWQsXG4gICAgICBkZXB0aDogdGhpcy5jb21wdXRlQ29udGV4dERlcHRoKGNvbnRleHQpLFxuICAgIH07XG5cbiAgICBjb25zdCBzdGFnZUZ1bmMgPSB0aGlzLmdldFN0YWdlRm4obm9kZSk7XG4gICAgY29uc3QgYnJlYWtGbiA9ICgpID0+IChicmVha0ZsYWcuc2hvdWxkQnJlYWsgPSB0cnVlKTtcblxuICAgIGxldCBzdGFnZU91dHB1dDogVE91dCB8IHVuZGVmaW5lZDtcbiAgICBpZiAoc3RhZ2VGdW5jKSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50U3ViZmxvd0RlcHMpIHtcbiAgICAgICAgICBjb25zdCBzdWJmbG93U3RhZ2VSdW5uZXIgPSBuZXcgU3RhZ2VSdW5uZXI8VE91dCwgVFNjb3BlPih0aGlzLmN1cnJlbnRTdWJmbG93RGVwcyk7XG4gICAgICAgICAgc3RhZ2VPdXRwdXQgPSBhd2FpdCBzdWJmbG93U3RhZ2VSdW5uZXIucnVuKG5vZGUsIHN0YWdlRnVuYywgY29udGV4dCwgYnJlYWtGbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhZ2VPdXRwdXQgPSBhd2FpdCB0aGlzLmV4ZWN1dGVTdGFnZShub2RlLCBzdGFnZUZ1bmMsIGNvbnRleHQsIGJyZWFrRm4pO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgIGNvbnRleHQuY29tbWl0KCk7XG4gICAgICAgIHRoaXMuY2FsbEV4dHJhY3Rvcihub2RlLCBjb250ZXh0LCB0aGlzLmdldFN0YWdlUGF0aChub2RlLCBicmFuY2hQYXRoLCBjb250ZXh0LnN0YWdlTmFtZSksIHVuZGVmaW5lZCwge1xuICAgICAgICAgIHR5cGU6ICdzdGFnZUV4ZWN1dGlvbkVycm9yJyxcbiAgICAgICAgICBtZXNzYWdlOiBlcnJvci50b1N0cmluZygpLFxuICAgICAgICB9KTtcbiAgICAgICAgY29udGV4dC5hZGRFcnJvcignc3RhZ2VFeGVjdXRpb25FcnJvcicsIGVycm9yLnRvU3RyaW5nKCkpO1xuICAgICAgICB0aGlzLmRlcHMubmFycmF0aXZlR2VuZXJhdG9yLm9uRXJyb3Iobm9kZS5uYW1lLCBlcnJvci50b1N0cmluZygpLCBlcnJvciwgdHJhdmVyc2FsQ29udGV4dCk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgY29udGV4dC5jb21taXQoKTtcbiAgICAgIHRoaXMuY2FsbEV4dHJhY3Rvcihub2RlLCBjb250ZXh0LCB0aGlzLmdldFN0YWdlUGF0aChub2RlLCBicmFuY2hQYXRoLCBjb250ZXh0LnN0YWdlTmFtZSksIHN0YWdlT3V0cHV0KTtcbiAgICAgIHRoaXMuZGVwcy5uYXJyYXRpdmVHZW5lcmF0b3Iub25TdGFnZUV4ZWN1dGVkKG5vZGUubmFtZSwgbm9kZS5kZXNjcmlwdGlvbiwgdHJhdmVyc2FsQ29udGV4dCk7XG5cbiAgICAgIGlmIChicmVha0ZsYWcuc2hvdWxkQnJlYWspIHtcbiAgICAgICAgdGhpcy5kZXBzLm5hcnJhdGl2ZUdlbmVyYXRvci5vbkJyZWFrKG5vZGUubmFtZSwgdHJhdmVyc2FsQ29udGV4dCk7XG4gICAgICAgIHJldHVybiBzdGFnZU91dHB1dDtcbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIGR5bmFtaWMgU3RhZ2VOb2RlIHJldHVyblxuICAgICAgaWYgKHN0YWdlT3V0cHV0ICYmIHR5cGVvZiBzdGFnZU91dHB1dCA9PT0gJ29iamVjdCcgJiYgaXNTdGFnZU5vZGVSZXR1cm4oc3RhZ2VPdXRwdXQpKSB7XG4gICAgICAgIGNvbnN0IGR5bmFtaWNOb2RlID0gc3RhZ2VPdXRwdXQgYXMgU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT47XG4gICAgICAgIGNvbnRleHQuYWRkTG9nKCdpc0R5bmFtaWMnLCB0cnVlKTtcbiAgICAgICAgY29udGV4dC5hZGRMb2coJ2R5bmFtaWNQYXR0ZXJuJywgJ1N0YWdlTm9kZVJldHVybicpO1xuXG4gICAgICAgIGlmIChkeW5hbWljTm9kZS5jaGlsZHJlbiAmJiBkeW5hbWljTm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgbm9kZS5jaGlsZHJlbiA9IGR5bmFtaWNOb2RlLmNoaWxkcmVuO1xuICAgICAgICAgIGNvbnRleHQuYWRkTG9nKCdkeW5hbWljQ2hpbGRDb3VudCcsIGR5bmFtaWNOb2RlLmNoaWxkcmVuLmxlbmd0aCk7XG4gICAgICAgICAgY29udGV4dC5hZGRMb2coXG4gICAgICAgICAgICAnZHluYW1pY0NoaWxkSWRzJyxcbiAgICAgICAgICAgIGR5bmFtaWNOb2RlLmNoaWxkcmVuLm1hcCgoYykgPT4gYy5pZCksXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmICh0eXBlb2YgZHluYW1pY05vZGUubmV4dE5vZGVTZWxlY3RvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgbm9kZS5uZXh0Tm9kZVNlbGVjdG9yID0gZHluYW1pY05vZGUubmV4dE5vZGVTZWxlY3RvcjtcbiAgICAgICAgICAgIGNvbnRleHQuYWRkTG9nKCdoYXNTZWxlY3RvcicsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkeW5hbWljTm9kZS5uZXh0KSB7XG4gICAgICAgICAgbm9kZS5uZXh0ID0gZHluYW1pY05vZGUubmV4dDtcbiAgICAgICAgICBjb250ZXh0LmFkZExvZygnaGFzRHluYW1pY05leHQnLCB0cnVlKTtcbiAgICAgICAgICBjb25zdCBsb29wVGFyZ2V0SWQgPSBkeW5hbWljTm9kZS5uZXh0LmlkO1xuICAgICAgICAgIGlmIChsb29wVGFyZ2V0SWQpIHtcbiAgICAgICAgICAgIGNvbnRleHQuYWRkTG9nKCdsb29wVGFyZ2V0JywgbG9vcFRhcmdldElkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzdGFnZU91dHB1dCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyDilIDilIDilIAgQ2hpbGRyZW4gZGlzcGF0Y2gg4pSA4pSA4pSAXG4gICAgY29uc3QgaGFzQ2hpbGRyZW5BZnRlclN0YWdlID0gQm9vbGVhbihub2RlLmNoaWxkcmVuPy5sZW5ndGgpO1xuICAgIGNvbnN0IGhhc05leHRBZnRlclN0YWdlID0gQm9vbGVhbihub2RlLm5leHQpO1xuXG4gICAgaWYgKGhhc0NoaWxkcmVuQWZ0ZXJTdGFnZSkge1xuICAgICAgaWYgKG5vZGUubmV4dE5vZGVTZWxlY3Rvcikge1xuICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgdGhpcy5leGVjdXRlU2VsZWN0ZWRDaGlsZHJlbkludGVybmFsKFxuICAgICAgICAgIG5vZGUubmV4dE5vZGVTZWxlY3RvcixcbiAgICAgICAgICBub2RlLmNoaWxkcmVuISxcbiAgICAgICAgICBzdGFnZU91dHB1dCxcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIGJyYW5jaFBhdGgsXG4gICAgICAgICAgYnJlYWtGbGFnLFxuICAgICAgICApO1xuICAgICAgICBpZiAoIWhhc05leHRBZnRlclN0YWdlKSByZXR1cm4gcmVzdWx0cztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLmV4ZWN1dGVOb2RlQ2hpbGRyZW5JbnRlcm5hbChub2RlLCBjb250ZXh0LCBicmFuY2hQYXRoLCBicmVha0ZsYWcpO1xuICAgICAgICBpZiAoIWhhc05leHRBZnRlclN0YWdlKSByZXR1cm4gcmVzdWx0cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyDilIDilIDilIAgTGluZWFyIG5leHQg4pSA4pSA4pSAXG4gICAgaWYgKGhhc05leHRBZnRlclN0YWdlKSB7XG4gICAgICBsZXQgbmV4dE5vZGUgPSBub2RlLm5leHQhO1xuXG4gICAgICAvLyBSZXNvbHZlIHJlZmVyZW5jZSBub2RlcyAoaGFzIGlkIGJ1dCBubyBmbilcbiAgICAgIGlmIChuZXh0Tm9kZS5pZCAmJiAhbmV4dE5vZGUuZm4pIHtcbiAgICAgICAgbGV0IHJlc29sdmVkTm9kZTogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4gfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRTdWJmbG93Um9vdCkge1xuICAgICAgICAgIHJlc29sdmVkTm9kZSA9IHRoaXMubm9kZVJlc29sdmVyLmZpbmROb2RlQnlJZChuZXh0Tm9kZS5pZCwgdGhpcy5jdXJyZW50U3ViZmxvd1Jvb3QpO1xuICAgICAgICAgIGlmIChyZXNvbHZlZE5vZGUpIGNvbnRleHQuYWRkTG9nKCdkeW5hbWljTmV4dFJlc29sdmVkRnJvbScsICdzdWJmbG93Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyZXNvbHZlZE5vZGUpIHtcbiAgICAgICAgICByZXNvbHZlZE5vZGUgPSB0aGlzLm5vZGVSZXNvbHZlci5maW5kTm9kZUJ5SWQobmV4dE5vZGUuaWQpO1xuICAgICAgICAgIGlmIChyZXNvbHZlZE5vZGUpIGNvbnRleHQuYWRkTG9nKCdkeW5hbWljTmV4dFJlc29sdmVkRnJvbScsICdtYWluUGlwZWxpbmUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzb2x2ZWROb2RlKSB7XG4gICAgICAgICAgbmV4dE5vZGUgPSByZXNvbHZlZE5vZGU7XG4gICAgICAgICAgY29udGV4dC5hZGRMb2coJ2R5bmFtaWNOZXh0UmVzb2x2ZWQnLCB0cnVlKTtcbiAgICAgICAgICBjb250ZXh0LmFkZExvZygnZHluYW1pY05leHRUYXJnZXQnLCBuZXh0Tm9kZS5pZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5kZXBzLmxvZ2dlci5pbmZvKGBEeW5hbWljIG5leHQgbm9kZSAnJHtuZXh0Tm9kZS5pZH0nIG5vdCBmb3VuZCBpbiBzdWJmbG93IG9yIG1haW4gcGlwZWxpbmVgKTtcbiAgICAgICAgICBjb250ZXh0LmFkZExvZygnZHluYW1pY05leHRSZXNvbHZlZCcsIGZhbHNlKTtcbiAgICAgICAgICBjb250ZXh0LmFkZExvZygnZHluYW1pY05leHROb3RGb3VuZCcsIG5leHROb2RlLmlkKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLmRlcHMubmFycmF0aXZlR2VuZXJhdG9yLm9uTmV4dChub2RlLm5hbWUsIG5leHROb2RlLm5hbWUsIG5leHROb2RlLmRlc2NyaXB0aW9uLCB0cmF2ZXJzYWxDb250ZXh0KTtcbiAgICAgIGNvbnN0IG5leHRDdHggPSBjb250ZXh0LmNyZWF0ZU5leHQoJycsIG5leHROb2RlLm5hbWUsIG5leHROb2RlLmlkKTtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVTdWJmbG93SW50ZXJuYWwobmV4dE5vZGUsIG5leHRDdHgsIGJyZWFrRmxhZywgYnJhbmNoUGF0aCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YWdlT3V0cHV0O1xuICB9XG5cbiAgcHJpdmF0ZSBjb21wdXRlQ29udGV4dERlcHRoKGNvbnRleHQ6IFN0YWdlQ29udGV4dCk6IG51bWJlciB7XG4gICAgbGV0IGRlcHRoID0gMDtcbiAgICBsZXQgY3VycmVudCA9IGNvbnRleHQucGFyZW50O1xuICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICBkZXB0aCsrO1xuICAgICAgY3VycmVudCA9IGN1cnJlbnQucGFyZW50O1xuICAgIH1cbiAgICByZXR1cm4gZGVwdGg7XG4gIH1cblxuICBwcml2YXRlIGdldFN0YWdlUGF0aChub2RlOiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPiwgYnJhbmNoUGF0aD86IHN0cmluZywgY29udGV4dFN0YWdlTmFtZT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgYmFzZU5hbWUgPSBub2RlLmlkO1xuICAgIGNvbnN0IG5vZGVJZCA9IGNvbnRleHRTdGFnZU5hbWUgJiYgY29udGV4dFN0YWdlTmFtZSAhPT0gbm9kZS5uYW1lID8gY29udGV4dFN0YWdlTmFtZSA6IGJhc2VOYW1lO1xuICAgIGlmICghYnJhbmNoUGF0aCkgcmV0dXJuIG5vZGVJZDtcbiAgICByZXR1cm4gYCR7YnJhbmNoUGF0aH0uJHtub2RlSWR9YDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZXhlY3V0ZU5vZGVDaGlsZHJlbkludGVybmFsKFxuICAgIG5vZGU6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+LFxuICAgIGNvbnRleHQ6IFN0YWdlQ29udGV4dCxcbiAgICBicmFuY2hQYXRoOiBzdHJpbmcsXG4gICAgYnJlYWtGbGFnOiB7IHNob3VsZEJyZWFrOiBib29sZWFuIH0sXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgTm9kZVJlc3VsdFR5cGU+PiB7XG4gICAgY29uc3QgY2hpbGRQcm9taXNlczogUHJvbWlzZTxOb2RlUmVzdWx0VHlwZT5bXSA9IChub2RlLmNoaWxkcmVuID8/IFtdKS5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICBjb25zdCBjaGlsZENvbnRleHQgPSBjb250ZXh0LmNyZWF0ZUNoaWxkKCcnLCBjaGlsZC5pZCBhcyBzdHJpbmcsIGNoaWxkLm5hbWUsIGNoaWxkLmlkKTtcbiAgICAgIGNvbnN0IGNoaWxkQnJlYWtGbGFnID0geyBzaG91bGRCcmVhazogZmFsc2UgfTtcblxuICAgICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVN1YmZsb3dJbnRlcm5hbChjaGlsZCwgY2hpbGRDb250ZXh0LCBjaGlsZEJyZWFrRmxhZywgYnJhbmNoUGF0aClcbiAgICAgICAgLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIGNoaWxkQ29udGV4dC5jb21taXQoKTtcbiAgICAgICAgICByZXR1cm4geyBpZDogY2hpbGQuaWQhLCByZXN1bHQsIGlzRXJyb3I6IGZhbHNlIH07XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICBjaGlsZENvbnRleHQuY29tbWl0KCk7XG4gICAgICAgICAgdGhpcy5kZXBzLmxvZ2dlci5pbmZvKGBUUkVFIFBJUEVMSU5FOiBleGVjdXRlTm9kZUNoaWxkcmVuSW50ZXJuYWwgLSBFcnJvciBmb3IgaWQ6ICR7Y2hpbGQ/LmlkfWAsIHsgZXJyb3IgfSk7XG4gICAgICAgICAgcmV0dXJuIHsgaWQ6IGNoaWxkLmlkISwgcmVzdWx0OiBlcnJvciwgaXNFcnJvcjogdHJ1ZSB9O1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHNldHRsZWQgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoY2hpbGRQcm9taXNlcyk7XG4gICAgY29uc3QgY2hpbGRyZW5SZXN1bHRzOiBSZWNvcmQ8c3RyaW5nLCBOb2RlUmVzdWx0VHlwZT4gPSB7fTtcbiAgICBzZXR0bGVkLmZvckVhY2goKHMpID0+IHtcbiAgICAgIGlmIChzLnN0YXR1cyA9PT0gJ2Z1bGZpbGxlZCcpIHtcbiAgICAgICAgY29uc3QgeyBpZCwgcmVzdWx0LCBpc0Vycm9yIH0gPSBzLnZhbHVlO1xuICAgICAgICBjaGlsZHJlblJlc3VsdHNbaWRdID0geyBpZCwgcmVzdWx0LCBpc0Vycm9yIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRlcHMubG9nZ2VyLmVycm9yKGBFeGVjdXRpb24gZmFpbGVkOiAke3MucmVhc29ufWApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjaGlsZHJlblJlc3VsdHM7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGV4ZWN1dGVTZWxlY3RlZENoaWxkcmVuSW50ZXJuYWwoXG4gICAgc2VsZWN0b3I6IFNlbGVjdG9yLFxuICAgIGNoaWxkcmVuOiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPltdLFxuICAgIGlucHV0OiBhbnksXG4gICAgY29udGV4dDogU3RhZ2VDb250ZXh0LFxuICAgIGJyYW5jaFBhdGg6IHN0cmluZyxcbiAgICBicmVha0ZsYWc6IHsgc2hvdWxkQnJlYWs6IGJvb2xlYW4gfSxcbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBOb2RlUmVzdWx0VHlwZT4+IHtcbiAgICBjb25zdCBzZWxlY3RvclJlc3VsdCA9IGF3YWl0IHNlbGVjdG9yKGlucHV0KTtcbiAgICBjb25zdCBzZWxlY3RlZElkcyA9IEFycmF5LmlzQXJyYXkoc2VsZWN0b3JSZXN1bHQpID8gc2VsZWN0b3JSZXN1bHQgOiBbc2VsZWN0b3JSZXN1bHRdO1xuXG4gICAgY29udGV4dC5hZGRMb2coJ3NlbGVjdGVkQ2hpbGRJZHMnLCBzZWxlY3RlZElkcyk7XG4gICAgY29udGV4dC5hZGRMb2coJ3NlbGVjdG9yUGF0dGVybicsICdtdWx0aS1jaG9pY2UnKTtcblxuICAgIGlmIChzZWxlY3RlZElkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnRleHQuYWRkTG9nKCdza2lwcGVkQWxsQ2hpbGRyZW4nLCB0cnVlKTtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3RlZENoaWxkcmVuID0gY2hpbGRyZW4uZmlsdGVyKChjKSA9PiBzZWxlY3RlZElkcy5pbmNsdWRlcyhjLmlkISkpO1xuICAgIGlmIChzZWxlY3RlZENoaWxkcmVuLmxlbmd0aCAhPT0gc2VsZWN0ZWRJZHMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBjaGlsZElkcyA9IGNoaWxkcmVuLm1hcCgoYykgPT4gYy5pZCk7XG4gICAgICBjb25zdCBtaXNzaW5nID0gc2VsZWN0ZWRJZHMuZmlsdGVyKChpZCkgPT4gIWNoaWxkSWRzLmluY2x1ZGVzKGlkKSk7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgU2VsZWN0b3IgcmV0dXJuZWQgdW5rbm93biBjaGlsZCBJRHM6ICR7bWlzc2luZy5qb2luKCcsICcpfS4gQXZhaWxhYmxlOiAke2NoaWxkSWRzLmpvaW4oXG4gICAgICAgICcsICcsXG4gICAgICApfWA7XG4gICAgICB0aGlzLmRlcHMubG9nZ2VyLmVycm9yKGBFcnJvciBpbiBzdWJmbG93ICgke2JyYW5jaFBhdGh9KTpgLCB7IGVycm9yOiBlcnJvck1lc3NhZ2UgfSk7XG4gICAgICBjb250ZXh0LmFkZEVycm9yKCdzZWxlY3RvckVycm9yJywgZXJyb3JNZXNzYWdlKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGNvbnN0IHNraXBwZWRJZHMgPSBjaGlsZHJlbi5maWx0ZXIoKGMpID0+ICFzZWxlY3RlZElkcy5pbmNsdWRlcyhjLmlkISkpLm1hcCgoYykgPT4gYy5pZCk7XG4gICAgaWYgKHNraXBwZWRJZHMubGVuZ3RoID4gMCkge1xuICAgICAgY29udGV4dC5hZGRMb2coJ3NraXBwZWRDaGlsZElkcycsIHNraXBwZWRJZHMpO1xuICAgIH1cblxuICAgIGNvbnN0IHRlbXBOb2RlOiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPiA9IHtcbiAgICAgIG5hbWU6ICdzZWxlY3Rvci10ZW1wJyxcbiAgICAgIGlkOiAnc2VsZWN0b3ItdGVtcCcsXG4gICAgICBjaGlsZHJlbjogc2VsZWN0ZWRDaGlsZHJlbixcbiAgICB9O1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVOb2RlQ2hpbGRyZW5JbnRlcm5hbCh0ZW1wTm9kZSwgY29udGV4dCwgYnJhbmNoUGF0aCwgYnJlYWtGbGFnKTtcbiAgfVxufVxuIl19
|
|
344
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3ViZmxvd0V4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvaGFuZGxlcnMvU3ViZmxvd0V4ZWN1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7R0FZRztBQUlILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSTFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4QixxQkFBcUIsRUFDckIsc0JBQXNCLEdBQ3ZCLE1BQU0seUJBQXlCLENBQUM7QUF3QmpDLE1BQU0sT0FBTyxlQUFlO0lBSzFCLFlBQ1UsSUFBK0IsRUFDL0IsWUFBd0MsRUFDeEMsWUFBMEMsRUFDMUMsYUFBNEMsRUFDNUMsVUFBc0M7UUFKdEMsU0FBSSxHQUFKLElBQUksQ0FBMkI7UUFDL0IsaUJBQVksR0FBWixZQUFZLENBQTRCO1FBQ3hDLGlCQUFZLEdBQVosWUFBWSxDQUE4QjtRQUMxQyxrQkFBYSxHQUFiLGFBQWEsQ0FBK0I7UUFDNUMsZUFBVSxHQUFWLFVBQVUsQ0FBNEI7SUFDN0MsQ0FBQztJQUVKOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FDbEIsSUFBNkIsRUFDN0IsYUFBMkIsRUFDM0IsU0FBbUMsRUFDbkMsVUFBOEIsRUFDOUIsaUJBQTZDLEVBQzdDLHNCQUF5Qzs7UUFFekMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVUsQ0FBQztRQUNsQyxNQUFNLFdBQVcsR0FBRyxNQUFBLElBQUksQ0FBQyxXQUFXLG1DQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7UUFFbEQsYUFBYSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxZQUFZLFdBQVcsVUFBVSxFQUFFO1lBQzlFLFdBQVcsRUFBRSxTQUFTO1NBQ3ZCLENBQUMsQ0FBQztRQUNI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USxDQUFDLElBQUksQ0FDMUcsSUFBSSxDQUNMLEVBQUUsQ0FBQztZQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsVUFBVSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztZQUNyRixPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUNoRCxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekYsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFCLE9BQU8sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUE0QjtZQUN4QyxJQUFJLEVBQUUsZUFBZTtZQUNyQixFQUFFLEVBQUUsZUFBZTtZQUNuQixRQUFRLEVBQUUsZ0JBQWdCO1NBQzNCLENBQUM7UUFDRixPQUFPLE1BQU0sSUFBSSxDQUFDLDJCQUEyQixDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzFGLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3ViZmxvd0V4ZWN1dG9yIOKAlCBJc29sYXRlZCByZWN1cnNpdmUgZXhlY3V0aW9uIHdpdGggSS9PIG1hcHBpbmcuXG4gKlxuICogUmVzcG9uc2liaWxpdGllczpcbiAqIC0gRXhlY3V0ZSBzdWJmbG93cyB3aXRoIGlzb2xhdGVkIEV4ZWN1dGlvblJ1bnRpbWUgY29udGV4dHNcbiAqIC0gQXBwbHkgaW5wdXQvb3V0cHV0IG1hcHBpbmcgdmlhIFN1YmZsb3dJbnB1dE1hcHBlclxuICogLSBIYW5kbGUgbmVzdGVkIHN1YmZsb3cgZGV0ZWN0aW9uIGFuZCBkZWxlZ2F0aW9uXG4gKiAtIFRyYWNrIHN1YmZsb3cgcmVzdWx0cyBmb3IgZGVidWdnaW5nL3Zpc3VhbGl6YXRpb25cbiAqXG4gKiBFYWNoIHN1YmZsb3cgZ2V0cyBpdHMgb3duIEdsb2JhbFN0b3JlIGZvciBpc29sYXRpb24uXG4gKiBUaGUgc3ViZmxvdydzIGBuZXh0YCBjaGFpbiBhZnRlciBjaGlsZHJlbiBpcyBOT1QgZXhlY3V0ZWQgaW5zaWRlIOKAlFxuICogdGhlIHBhcmVudCdzIGV4ZWN1dGVOb2RlIGNvbnRpbnVlcyB3aXRoIG5vZGUubmV4dCBhZnRlciByZXR1cm4uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBTdGFnZUNvbnRleHQgfSBmcm9tICcuLi8uLi9tZW1vcnkvU3RhZ2VDb250ZXh0LmpzJztcbmltcG9ydCB0eXBlIHsgU2VsZWN0b3IsIFN0YWdlTm9kZSB9IGZyb20gJy4uL2dyYXBoL1N0YWdlTm9kZS5qcyc7XG5pbXBvcnQgeyBpc1N0YWdlTm9kZVJldHVybiB9IGZyb20gJy4uL2dyYXBoL1N0YWdlTm9kZS5qcyc7XG5pbXBvcnQgdHlwZSB7IFRyYXZlcnNhbENvbnRleHQgfSBmcm9tICcuLi9uYXJyYXRpdmUvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBIYW5kbGVyRGVwcywgSUV4ZWN1dGlvblJ1bnRpbWUsIE5vZGVSZXN1bHRUeXBlLCBTdGFnZUZ1bmN0aW9uLCBTdWJmbG93UmVzdWx0IH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBOb2RlUmVzb2x2ZXIgfSBmcm9tICcuL05vZGVSZXNvbHZlci5qcyc7XG5pbXBvcnQgeyBTdGFnZVJ1bm5lciB9IGZyb20gJy4vU3RhZ2VSdW5uZXIuanMnO1xuaW1wb3J0IHtcbiAgYXBwbHlPdXRwdXRNYXBwaW5nLFxuICBjcmVhdGVTdWJmbG93SGFuZGxlckRlcHMsXG4gIGdldEluaXRpYWxTY29wZVZhbHVlcyxcbiAgc2VlZFN1YmZsb3dHbG9iYWxTdG9yZSxcbn0gZnJvbSAnLi9TdWJmbG93SW5wdXRNYXBwZXIuanMnO1xuXG4vKiogQ2FsbGJhY2sgZm9yIHJ1bm5pbmcgYSBzdGFnZSBmdW5jdGlvbi4gQXZvaWRzIGNpcmN1bGFyIGRlcCB3aXRoIHRyYXZlcnNlci4gKi9cbmV4cG9ydCB0eXBlIEV4ZWN1dGVTdGFnZUZuPFRPdXQgPSBhbnksIFRTY29wZSA9IGFueT4gPSAoXG4gIG5vZGU6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+LFxuICBzdGFnZUZ1bmM6IFN0YWdlRnVuY3Rpb248VE91dCwgVFNjb3BlPixcbiAgY29udGV4dDogU3RhZ2VDb250ZXh0LFxuICBicmVha0ZuOiAoKSA9PiB2b2lkLFxuKSA9PiBQcm9taXNlPFRPdXQ+O1xuXG4vKiogQ2FsbGJhY2sgZm9yIGNhbGxpbmcgdGhlIHRyYXZlcnNhbCBleHRyYWN0b3IuICovXG5leHBvcnQgdHlwZSBDYWxsRXh0cmFjdG9yRm48VE91dCA9IGFueSwgVFNjb3BlID0gYW55PiA9IChcbiAgbm9kZTogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4sXG4gIGNvbnRleHQ6IFN0YWdlQ29udGV4dCxcbiAgc3RhZ2VQYXRoOiBzdHJpbmcsXG4gIHN0YWdlT3V0cHV0PzogdW5rbm93bixcbiAgZXJyb3JJbmZvPzogeyB0eXBlOiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZyB9LFxuKSA9PiB2b2lkO1xuXG4vKiogQ2FsbGJhY2sgZm9yIGdldHRpbmcgYSBzdGFnZSBmdW5jdGlvbiBmcm9tIHRoZSBzdGFnZSBtYXAuICovXG5leHBvcnQgdHlwZSBHZXRTdGFnZUZuRm48VE91dCA9IGFueSwgVFNjb3BlID0gYW55PiA9IChcbiAgbm9kZTogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4sXG4pID0+IFN0YWdlRnVuY3Rpb248VE91dCwgVFNjb3BlPiB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IGNsYXNzIFN1YmZsb3dFeGVjdXRvcjxUT3V0ID0gYW55LCBUU2NvcGUgPSBhbnk+IHtcbiAgcHJpdmF0ZSBjdXJyZW50U3ViZmxvd0RlcHM/OiBIYW5kbGVyRGVwczxUT3V0LCBUU2NvcGU+O1xuICBwcml2YXRlIGN1cnJlbnRTdWJmbG93Um9vdD86IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+O1xuICBwcml2YXRlIHN1YmZsb3dSZXN1bHRzTWFwPzogTWFwPHN0cmluZywgU3ViZmxvd1Jlc3VsdD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkZXBzOiBIYW5kbGVyRGVwczxUT3V0LCBUU2NvcGU+LFxuICAgIHByaXZhdGUgbm9kZVJlc29sdmVyOiBOb2RlUmVzb2x2ZXI8VE91dCwgVFNjb3BlPixcbiAgICBwcml2YXRlIGV4ZWN1dGVTdGFnZTogRXhlY3V0ZVN0YWdlRm48VE91dCwgVFNjb3BlPixcbiAgICBwcml2YXRlIGNhbGxFeHRyYWN0b3I6IENhbGxFeHRyYWN0b3JGbjxUT3V0LCBUU2NvcGU+LFxuICAgIHByaXZhdGUgZ2V0U3RhZ2VGbjogR2V0U3RhZ2VGbkZuPFRPdXQsIFRTY29wZT4sXG4gICkge31cblxuICAvKipcbiAgICogRXhlY3V0ZSBhIHN1YmZsb3cgd2l0aCBpc29sYXRlZCBjb250ZXh0LlxuICAgKlxuICAgKiAxLiBDcmVhdGVzIGEgZnJlc2ggRXhlY3V0aW9uUnVudGltZSBmb3IgdGhlIHN1YmZsb3dcbiAgICogMi4gQXBwbGllcyBpbnB1dCBtYXBwaW5nIHRvIHNlZWQgdGhlIHN1YmZsb3cncyBHbG9iYWxTdG9yZVxuICAgKiAzLiBFeGVjdXRlcyB0aGUgc3ViZmxvdydzIGludGVybmFsIHN0cnVjdHVyZVxuICAgKiA0LiBBcHBsaWVzIG91dHB1dCBtYXBwaW5nIHRvIHdyaXRlIHJlc3VsdHMgYmFjayB0byBwYXJlbnQgc2NvcGVcbiAgICogNS4gU3RvcmVzIGV4ZWN1dGlvbiBkYXRhIGZvciBkZWJ1Z2dpbmcvdmlzdWFsaXphdGlvblxuICAgKi9cbiAgYXN5bmMgZXhlY3V0ZVN1YmZsb3coXG4gICAgbm9kZTogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4sXG4gICAgcGFyZW50Q29udGV4dDogU3RhZ2VDb250ZXh0LFxuICAgIGJyZWFrRmxhZzogeyBzaG91bGRCcmVhazogYm9vbGVhbiB9LFxuICAgIGJyYW5jaFBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBzdWJmbG93UmVzdWx0c01hcDogTWFwPHN0cmluZywgU3ViZmxvd1Jlc3VsdD4sXG4gICAgcGFyZW50VHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3Qgc3ViZmxvd0lkID0gbm9kZS5zdWJmbG93SWQhO1xuICAgIGNvbnN0IHN1YmZsb3dOYW1lID0gbm9kZS5zdWJmbG93TmFtZSA/PyBub2RlLm5hbWU7XG5cbiAgICBwYXJlbnRDb250ZXh0LmFkZEZsb3dEZWJ1Z01lc3NhZ2UoJ3N1YmZsb3cnLCBgRW50ZXJpbmcgJHtzdWJmbG93TmFtZX0gc3ViZmxvd2AsIHtcbiAgICAgIHRhcmdldFN0YWdlOiBzdWJmbG93SWQsXG4gICAgfSk7XG4gICAgdGhpcy5kZXBzLm5hcnJhdGl2ZUdlbmVyYXRvci5vblN1YmZsb3dFbnRyeShzdWJmbG93TmFtZSwgc3ViZmxvd0lkLCBub2RlLmRlc2NyaXB0aW9uLCBwYXJlbnRUcmF2ZXJzYWxDb250ZXh0KTtcblxuICAgIC8vIOKUgOKUgOKUgCBJbnB1dCBNYXBwaW5nIOKUgOKUgOKUgFxuICAgIGNvbnN0IG1vdW50T3B0aW9ucyA9IG5vZGUuc3ViZmxvd01vdW50T3B0aW9ucztcbiAgICBsZXQgbWFwcGVkSW5wdXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgICBpZiAobW91bnRPcHRpb25zKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwYXJlbnRTY29wZSA9IHBhcmVudENvbnRleHQuZ2V0U2NvcGUoKTtcbiAgICAgICAgbWFwcGVkSW5wdXQgPSBnZXRJbml0aWFsU2NvcGVWYWx1ZXMocGFyZW50U2NvcGUsIG1vdW50T3B0aW9ucyk7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhtYXBwZWRJbnB1dCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIC8vIG1hcHBlZElucHV0IGlzIGNhcHR1cmVkIGluIFN1YmZsb3dSZXN1bHQudHJlZUNvbnRleHQgZm9yIGRlYnVnZ2luZ1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgIHBhcmVudENvbnRleHQuYWRkRXJyb3IoJ2lucHV0TWFwcGVyRXJyb3InLCBlcnJvci50b1N0cmluZygpKTtcbiAgICAgICAgdGhpcy5kZXBzLmxvZ2dlci5lcnJvcihgRXJyb3IgaW4gaW5wdXRNYXBwZXIgZm9yIHN1YmZsb3cgKCR7c3ViZmxvd0lkfSk6YCwgeyBlcnJvciB9KTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIGlzb2xhdGVkIHJ1bnRpbWUgdmlhIGR5bmFtaWMgY29uc3RydWN0aW9uIChhdm9pZHMgY2lyY3VsYXIgaW1wb3J0KVxuICAgIGNvbnN0IEV4ZWN1dGlvblJ1bnRpbWVDbGFzcyA9IHRoaXMuZGVwcy5leGVjdXRpb25SdW50aW1lLmNvbnN0cnVjdG9yIGFzIG5ldyAoXG4gICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICBpZDogc3RyaW5nLFxuICAgICkgPT4gSUV4ZWN1dGlvblJ1bnRpbWU7XG4gICAgY29uc3QgbmVzdGVkUnVudGltZSA9IG5ldyBFeGVjdXRpb25SdW50aW1lQ2xhc3Mobm9kZS5uYW1lLCBub2RlLmlkKTtcbiAgICBsZXQgbmVzdGVkUm9vdENvbnRleHQgPSBuZXN0ZWRSdW50aW1lLnJvb3RTdGFnZUNvbnRleHQ7XG5cbiAgICAvLyBTZWVkIEdsb2JhbFN0b3JlIHdpdGggaW5wdXRcbiAgICBpZiAoT2JqZWN0LmtleXMobWFwcGVkSW5wdXQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHNlZWRTdWJmbG93R2xvYmFsU3RvcmUobmVzdGVkUnVudGltZSwgbWFwcGVkSW5wdXQpO1xuICAgICAgLy8gUmVmcmVzaCByb290U3RhZ2VDb250ZXh0IHNvIFdyaXRlQnVmZmVyIHNlZXMgY29tbWl0dGVkIGRhdGFcbiAgICAgIGNvbnN0IFN0YWdlQ29udGV4dENsYXNzID0gbmVzdGVkUm9vdENvbnRleHQuY29uc3RydWN0b3IgYXMgbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gU3RhZ2VDb250ZXh0O1xuICAgICAgbmVzdGVkUm9vdENvbnRleHQgPSBuZXcgU3RhZ2VDb250ZXh0Q2xhc3MoXG4gICAgICAgICcnLFxuICAgICAgICBuZXN0ZWRSb290Q29udGV4dC5zdGFnZU5hbWUsXG4gICAgICAgIG5lc3RlZFJvb3RDb250ZXh0LnN0YWdlSWQsXG4gICAgICAgIG5lc3RlZFJ1bnRpbWUuZ2xvYmFsU3RvcmUsXG4gICAgICAgICcnLFxuICAgICAgICBuZXN0ZWRSdW50aW1lLmV4ZWN1dGlvbkhpc3RvcnksXG4gICAgICApO1xuICAgICAgbmVzdGVkUnVudGltZS5yb290U3RhZ2VDb250ZXh0ID0gbmVzdGVkUm9vdENvbnRleHQ7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHN1YmZsb3cgSGFuZGxlckRlcHNcbiAgICBjb25zdCBzdWJmbG93RGVwcyA9IGNyZWF0ZVN1YmZsb3dIYW5kbGVyRGVwcyh0aGlzLmRlcHMsIG5lc3RlZFJ1bnRpbWUsIG1hcHBlZElucHV0KTtcblxuICAgIGNvbnN0IHN1YmZsb3dCcmVha0ZsYWcgPSB7IHNob3VsZEJyZWFrOiBmYWxzZSB9O1xuXG4gICAgY29uc3QgaGFzQ2hpbGRyZW4gPSBCb29sZWFuKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKTtcbiAgICBjb25zdCBzdWJmbG93Tm9kZTogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4gPSB7XG4gICAgICAuLi5ub2RlLFxuICAgICAgaXNTdWJmbG93Um9vdDogZmFsc2UsXG4gICAgICBuZXh0OiBoYXNDaGlsZHJlbiA/IHVuZGVmaW5lZCA6IG5vZGUubmV4dCxcbiAgICB9O1xuXG4gICAgbGV0IHN1YmZsb3dPdXRwdXQ6IGFueTtcbiAgICBsZXQgc3ViZmxvd0Vycm9yOiBFcnJvciB8IHVuZGVmaW5lZDtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLnN1YmZsb3dSZXN1bHRzTWFwID0gc3ViZmxvd1Jlc3VsdHNNYXA7XG4gICAgICB0aGlzLmN1cnJlbnRTdWJmbG93Um9vdCA9IHN1YmZsb3dOb2RlO1xuICAgICAgdGhpcy5jdXJyZW50U3ViZmxvd0RlcHMgPSBzdWJmbG93RGVwcztcblxuICAgICAgc3ViZmxvd091dHB1dCA9IGF3YWl0IHRoaXMuZXhlY3V0ZVN1YmZsb3dJbnRlcm5hbChzdWJmbG93Tm9kZSwgbmVzdGVkUm9vdENvbnRleHQsIHN1YmZsb3dCcmVha0ZsYWcsIHN1YmZsb3dJZCk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgc3ViZmxvd0Vycm9yID0gZXJyb3I7XG4gICAgICBwYXJlbnRDb250ZXh0LmFkZEVycm9yKCdzdWJmbG93RXJyb3InLCBlcnJvci50b1N0cmluZygpKTtcbiAgICAgIHRoaXMuZGVwcy5sb2dnZXIuZXJyb3IoYEVycm9yIGluIHN1YmZsb3cgKCR7c3ViZmxvd0lkfSk6YCwgeyBlcnJvciB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5jdXJyZW50U3ViZmxvd1Jvb3QgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmN1cnJlbnRTdWJmbG93RGVwcyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBzdWJmbG93VHJlZUNvbnRleHQgPSBuZXN0ZWRSdW50aW1lLmdldFNuYXBzaG90KCk7XG5cbiAgICAvLyDilIDilIDilIAgT3V0cHV0IE1hcHBpbmcg4pSA4pSA4pSAXG4gICAgaWYgKCFzdWJmbG93RXJyb3IgJiYgbW91bnRPcHRpb25zPy5vdXRwdXRNYXBwZXIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCBvdXRwdXRDb250ZXh0ID0gcGFyZW50Q29udGV4dDtcbiAgICAgICAgaWYgKHBhcmVudENvbnRleHQuYnJhbmNoSWQgJiYgcGFyZW50Q29udGV4dC5icmFuY2hJZCAhPT0gJycgJiYgcGFyZW50Q29udGV4dC5wYXJlbnQpIHtcbiAgICAgICAgICBvdXRwdXRDb250ZXh0ID0gcGFyZW50Q29udGV4dC5wYXJlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJlbnRTY29wZSA9IG91dHB1dENvbnRleHQuZ2V0U2NvcGUoKTtcbiAgICAgICAgLy8gRm9yIFR5cGVkU2NvcGUgc3ViZmxvd3MsIHN0YWdlIGZ1bmN0aW9ucyByZXR1cm4gdm9pZCDigJQgZmFsbCBiYWNrIHRvIGEgc2hhbGxvdyBjbG9uZVxuICAgICAgICAvLyBvZiB0aGUgc3ViZmxvdydzIHNoYXJlZCBzdGF0ZSBzbyBvdXRwdXRNYXBwZXIgY2FuIGFjY2VzcyBhbGwgc2NvcGUgdmFsdWVzIHdyaXR0ZW5cbiAgICAgICAgLy8gZHVyaW5nIHRoZSBzdWJmbG93LiBXZSBzaGFsbG93LWNsb25lIHRvIGF2b2lkIGFsaWFzaW5nIHRoZSBsaXZlIFNoYXJlZE1lbW9yeSBjb250ZXh0LlxuICAgICAgICAvLyBOT1RFOiB0aGUgZnVsbCBzY29wZSBpcyBwYXNzZWQgKG5vdCBqdXN0IGRlY2xhcmVkIG91dHB1dHMpIOKAlCBvdXRwdXRNYXBwZXIgbXVzdFxuICAgICAgICAvLyBleHBsaWNpdGx5IHNlbGVjdCB3aGF0IHRvIHByb3BhZ2F0ZSB0byB0aGUgcGFyZW50LiBSZWRhY3Rpb24gb2Ygc3ViZmxvdyBQSUkga2V5c1xuICAgICAgICAvLyBpcyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdW50aWwgdGhlIGZ1bGwgcmVkYWN0aW9uIGxheWVyIGlzIGltcGxlbWVudGVkLlxuICAgICAgICBjb25zdCBlZmZlY3RpdmVPdXRwdXQgPSBzdWJmbG93T3V0cHV0ID8/IHsgLi4uc3ViZmxvd1RyZWVDb250ZXh0LnNoYXJlZFN0YXRlIH07XG4gICAgICAgIGNvbnN0IG1hcHBlZE91dHB1dCA9IGFwcGx5T3V0cHV0TWFwcGluZyhlZmZlY3RpdmVPdXRwdXQsIHBhcmVudFNjb3BlLCBvdXRwdXRDb250ZXh0LCBtb3VudE9wdGlvbnMpO1xuXG4gICAgICAgIG91dHB1dENvbnRleHQuY29tbWl0KCk7XG4gICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgIHBhcmVudENvbnRleHQuYWRkRXJyb3IoJ291dHB1dE1hcHBlckVycm9yJywgZXJyb3IudG9TdHJpbmcoKSk7XG4gICAgICAgIHRoaXMuZGVwcy5sb2dnZXIuZXJyb3IoYEVycm9yIGluIG91dHB1dE1hcHBlciBmb3Igc3ViZmxvdyAoJHtzdWJmbG93SWR9KTpgLCB7IGVycm9yIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHN1YmZsb3dSZXN1bHQ6IFN1YmZsb3dSZXN1bHQgPSB7XG4gICAgICBzdWJmbG93SWQsXG4gICAgICBzdWJmbG93TmFtZSxcbiAgICAgIHRyZWVDb250ZXh0OiB7XG4gICAgICAgIGdsb2JhbENvbnRleHQ6IHN1YmZsb3dUcmVlQ29udGV4dC5zaGFyZWRTdGF0ZSxcbiAgICAgICAgc3RhZ2VDb250ZXh0czogc3ViZmxvd1RyZWVDb250ZXh0LmV4ZWN1dGlvblRyZWUgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgaGlzdG9yeTogc3ViZmxvd1RyZWVDb250ZXh0LmNvbW1pdExvZyxcbiAgICAgIH0sXG4gICAgICBwYXJlbnRTdGFnZUlkOiBwYXJlbnRDb250ZXh0LmdldFN0YWdlSWQoKSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc3ViZmxvd0RlZiA9IHRoaXMuZGVwcy5zdWJmbG93cz8uW3N1YmZsb3dJZF07XG4gICAgaWYgKHN1YmZsb3dEZWYgJiYgKHN1YmZsb3dEZWYgYXMgYW55KS5idWlsZFRpbWVTdHJ1Y3R1cmUpIHtcbiAgICAgIHN1YmZsb3dSZXN1bHQucGlwZWxpbmVTdHJ1Y3R1cmUgPSAoc3ViZmxvd0RlZiBhcyBhbnkpLmJ1aWxkVGltZVN0cnVjdHVyZTtcbiAgICB9XG5cbiAgICBzdWJmbG93UmVzdWx0c01hcC5zZXQoc3ViZmxvd0lkLCBzdWJmbG93UmVzdWx0KTtcblxuICAgIHBhcmVudENvbnRleHQuYWRkRmxvd0RlYnVnTWVzc2FnZSgnc3ViZmxvdycsIGBFeGl0aW5nICR7c3ViZmxvd05hbWV9IHN1YmZsb3dgLCB7XG4gICAgICB0YXJnZXRTdGFnZTogc3ViZmxvd0lkLFxuICAgIH0pO1xuICAgIHRoaXMuZGVwcy5uYXJyYXRpdmVHZW5lcmF0b3Iub25TdWJmbG93RXhpdChzdWJmbG93TmFtZSwgc3ViZmxvd0lkLCBwYXJlbnRUcmF2ZXJzYWxDb250ZXh0KTtcblxuICAgIHBhcmVudENvbnRleHQuY29tbWl0KCk7XG5cbiAgICBpZiAoc3ViZmxvd0Vycm9yKSB7XG4gICAgICB0aHJvdyBzdWJmbG93RXJyb3I7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YmZsb3dPdXRwdXQ7XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJuYWwgZXhlY3V0aW9uIHdpdGhpbiBzdWJmbG93IGNvbnRleHQuXG4gICAqIE1pcnJvcnMgdGhlIHRyYXZlcnNlcidzIGV4ZWN1dGVOb2RlIGJ1dCB3aXRoaW4gdGhlIHN1YmZsb3cncyBpc29sYXRlZCBydW50aW1lLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBleGVjdXRlU3ViZmxvd0ludGVybmFsKFxuICAgIG5vZGU6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+LFxuICAgIGNvbnRleHQ6IFN0YWdlQ29udGV4dCxcbiAgICBicmVha0ZsYWc6IHsgc2hvdWxkQnJlYWs6IGJvb2xlYW4gfSxcbiAgICBicmFuY2hQYXRoOiBzdHJpbmcsXG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgLy8gRGV0ZWN0IG5lc3RlZCBzdWJmbG93c1xuICAgIGlmIChub2RlLmlzU3ViZmxvd1Jvb3QgJiYgbm9kZS5zdWJmbG93SWQpIHtcbiAgICAgIGNvbnN0IHJlc29sdmVkTm9kZSA9IHRoaXMubm9kZVJlc29sdmVyLnJlc29sdmVTdWJmbG93UmVmZXJlbmNlKG5vZGUpO1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZVN1YmZsb3cocmVzb2x2ZWROb2RlLCBjb250ZXh0LCBicmVha0ZsYWcsIGJyYW5jaFBhdGgsIHRoaXMuc3ViZmxvd1Jlc3VsdHNNYXAhKTtcbiAgICB9XG5cbiAgICAvLyBCdWlsZCB0cmF2ZXJzYWwgY29udGV4dCBmb3Igc3ViZmxvdyBzdGFnZSBldmVudHNcbiAgICBjb25zdCB0cmF2ZXJzYWxDb250ZXh0OiBUcmF2ZXJzYWxDb250ZXh0ID0ge1xuICAgICAgc3RhZ2VJZDogbm9kZS5pZCA/PyBjb250ZXh0LnN0YWdlSWQsXG4gICAgICBzdGFnZU5hbWU6IG5vZGUubmFtZSxcbiAgICAgIHBhcmVudFN0YWdlSWQ6IGNvbnRleHQucGFyZW50Py5zdGFnZUlkLFxuICAgICAgc3ViZmxvd0lkOiBicmFuY2hQYXRoIHx8IHVuZGVmaW5lZCxcbiAgICAgIHN1YmZsb3dQYXRoOiBicmFuY2hQYXRoIHx8IHVuZGVmaW5lZCxcbiAgICAgIGRlcHRoOiB0aGlzLmNvbXB1dGVDb250ZXh0RGVwdGgoY29udGV4dCksXG4gICAgfTtcblxuICAgIGNvbnN0IHN0YWdlRnVuYyA9IHRoaXMuZ2V0U3RhZ2VGbihub2RlKTtcbiAgICBjb25zdCBicmVha0ZuID0gKCkgPT4gKGJyZWFrRmxhZy5zaG91bGRCcmVhayA9IHRydWUpO1xuXG4gICAgbGV0IHN0YWdlT3V0cHV0OiBUT3V0IHwgdW5kZWZpbmVkO1xuICAgIGlmIChzdGFnZUZ1bmMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRTdWJmbG93RGVwcykge1xuICAgICAgICAgIGNvbnN0IHN1YmZsb3dTdGFnZVJ1bm5lciA9IG5ldyBTdGFnZVJ1bm5lcjxUT3V0LCBUU2NvcGU+KHRoaXMuY3VycmVudFN1YmZsb3dEZXBzKTtcbiAgICAgICAgICBzdGFnZU91dHB1dCA9IGF3YWl0IHN1YmZsb3dTdGFnZVJ1bm5lci5ydW4obm9kZSwgc3RhZ2VGdW5jLCBjb250ZXh0LCBicmVha0ZuKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGFnZU91dHB1dCA9IGF3YWl0IHRoaXMuZXhlY3V0ZVN0YWdlKG5vZGUsIHN0YWdlRnVuYywgY29udGV4dCwgYnJlYWtGbik7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgY29udGV4dC5jb21taXQoKTtcbiAgICAgICAgdGhpcy5jYWxsRXh0cmFjdG9yKG5vZGUsIGNvbnRleHQsIHRoaXMuZ2V0U3RhZ2VQYXRoKG5vZGUsIGJyYW5jaFBhdGgsIGNvbnRleHQuc3RhZ2VOYW1lKSwgdW5kZWZpbmVkLCB7XG4gICAgICAgICAgdHlwZTogJ3N0YWdlRXhlY3V0aW9uRXJyb3InLFxuICAgICAgICAgIG1lc3NhZ2U6IGVycm9yLnRvU3RyaW5nKCksXG4gICAgICAgIH0pO1xuICAgICAgICBjb250ZXh0LmFkZEVycm9yKCdzdGFnZUV4ZWN1dGlvbkVycm9yJywgZXJyb3IudG9TdHJpbmcoKSk7XG4gICAgICAgIHRoaXMuZGVwcy5uYXJyYXRpdmVHZW5lcmF0b3Iub25FcnJvcihub2RlLm5hbWUsIGVycm9yLnRvU3RyaW5nKCksIGVycm9yLCB0cmF2ZXJzYWxDb250ZXh0KTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICBjb250ZXh0LmNvbW1pdCgpO1xuICAgICAgdGhpcy5jYWxsRXh0cmFjdG9yKG5vZGUsIGNvbnRleHQsIHRoaXMuZ2V0U3RhZ2VQYXRoKG5vZGUsIGJyYW5jaFBhdGgsIGNvbnRleHQuc3RhZ2VOYW1lKSwgc3RhZ2VPdXRwdXQpO1xuICAgICAgdGhpcy5kZXBzLm5hcnJhdGl2ZUdlbmVyYXRvci5vblN0YWdlRXhlY3V0ZWQobm9kZS5uYW1lLCBub2RlLmRlc2NyaXB0aW9uLCB0cmF2ZXJzYWxDb250ZXh0KTtcblxuICAgICAgaWYgKGJyZWFrRmxhZy5zaG91bGRCcmVhaykge1xuICAgICAgICB0aGlzLmRlcHMubmFycmF0aXZlR2VuZXJhdG9yLm9uQnJlYWsobm9kZS5uYW1lLCB0cmF2ZXJzYWxDb250ZXh0KTtcbiAgICAgICAgcmV0dXJuIHN0YWdlT3V0cHV0O1xuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgZHluYW1pYyBTdGFnZU5vZGUgcmV0dXJuXG4gICAgICBpZiAoc3RhZ2VPdXRwdXQgJiYgdHlwZW9mIHN0YWdlT3V0cHV0ID09PSAnb2JqZWN0JyAmJiBpc1N0YWdlTm9kZVJldHVybihzdGFnZU91dHB1dCkpIHtcbiAgICAgICAgY29uc3QgZHluYW1pY05vZGUgPSBzdGFnZU91dHB1dCBhcyBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPjtcbiAgICAgICAgY29udGV4dC5hZGRMb2coJ2lzRHluYW1pYycsIHRydWUpO1xuICAgICAgICBjb250ZXh0LmFkZExvZygnZHluYW1pY1BhdHRlcm4nLCAnU3RhZ2VOb2RlUmV0dXJuJyk7XG5cbiAgICAgICAgaWYgKGR5bmFtaWNOb2RlLmNoaWxkcmVuICYmIGR5bmFtaWNOb2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBub2RlLmNoaWxkcmVuID0gZHluYW1pY05vZGUuY2hpbGRyZW47XG4gICAgICAgICAgY29udGV4dC5hZGRMb2coJ2R5bmFtaWNDaGlsZENvdW50JywgZHluYW1pY05vZGUuY2hpbGRyZW4ubGVuZ3RoKTtcbiAgICAgICAgICBjb250ZXh0LmFkZExvZyhcbiAgICAgICAgICAgICdkeW5hbWljQ2hpbGRJZHMnLFxuICAgICAgICAgICAgZHluYW1pY05vZGUuY2hpbGRyZW4ubWFwKChjKSA9PiBjLmlkKSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBkeW5hbWljTm9kZS5uZXh0Tm9kZVNlbGVjdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBub2RlLm5leHROb2RlU2VsZWN0b3IgPSBkeW5hbWljTm9kZS5uZXh0Tm9kZVNlbGVjdG9yO1xuICAgICAgICAgICAgY29udGV4dC5hZGRMb2coJ2hhc1NlbGVjdG9yJywgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGR5bmFtaWNOb2RlLm5leHQpIHtcbiAgICAgICAgICBub2RlLm5leHQgPSBkeW5hbWljTm9kZS5uZXh0O1xuICAgICAgICAgIGNvbnRleHQuYWRkTG9nKCdoYXNEeW5hbWljTmV4dCcsIHRydWUpO1xuICAgICAgICAgIGNvbnN0IGxvb3BUYXJnZXRJZCA9IGR5bmFtaWNOb2RlLm5leHQuaWQ7XG4gICAgICAgICAgaWYgKGxvb3BUYXJnZXRJZCkge1xuICAgICAgICAgICAgY29udGV4dC5hZGRMb2coJ2xvb3BUYXJnZXQnLCBsb29wVGFyZ2V0SWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHN0YWdlT3V0cHV0ID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIOKUgOKUgOKUgCBDaGlsZHJlbiBkaXNwYXRjaCDilIDilIDilIBcbiAgICBjb25zdCBoYXNDaGlsZHJlbkFmdGVyU3RhZ2UgPSBCb29sZWFuKG5vZGUuY2hpbGRyZW4/Lmxlbmd0aCk7XG4gICAgY29uc3QgaGFzTmV4dEFmdGVyU3RhZ2UgPSBCb29sZWFuKG5vZGUubmV4dCk7XG5cbiAgICBpZiAoaGFzQ2hpbGRyZW5BZnRlclN0YWdlKSB7XG4gICAgICBpZiAobm9kZS5uZXh0Tm9kZVNlbGVjdG9yKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLmV4ZWN1dGVTZWxlY3RlZENoaWxkcmVuSW50ZXJuYWwoXG4gICAgICAgICAgbm9kZS5uZXh0Tm9kZVNlbGVjdG9yLFxuICAgICAgICAgIG5vZGUuY2hpbGRyZW4hLFxuICAgICAgICAgIHN0YWdlT3V0cHV0LFxuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgYnJhbmNoUGF0aCxcbiAgICAgICAgICBicmVha0ZsYWcsXG4gICAgICAgICk7XG4gICAgICAgIGlmICghaGFzTmV4dEFmdGVyU3RhZ2UpIHJldHVybiByZXN1bHRzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMuZXhlY3V0ZU5vZGVDaGlsZHJlbkludGVybmFsKG5vZGUsIGNvbnRleHQsIGJyYW5jaFBhdGgsIGJyZWFrRmxhZyk7XG4gICAgICAgIGlmICghaGFzTmV4dEFmdGVyU3RhZ2UpIHJldHVybiByZXN1bHRzO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIOKUgOKUgOKUgCBMaW5lYXIgbmV4dCDilIDilIDilIBcbiAgICBpZiAoaGFzTmV4dEFmdGVyU3RhZ2UpIHtcbiAgICAgIGxldCBuZXh0Tm9kZSA9IG5vZGUubmV4dCE7XG5cbiAgICAgIC8vIFJlc29sdmUgcmVmZXJlbmNlIG5vZGVzIChoYXMgaWQgYnV0IG5vIGZuKVxuICAgICAgaWYgKG5leHROb2RlLmlkICYmICFuZXh0Tm9kZS5mbikge1xuICAgICAgICBsZXQgcmVzb2x2ZWROb2RlOiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPiB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFN1YmZsb3dSb290KSB7XG4gICAgICAgICAgcmVzb2x2ZWROb2RlID0gdGhpcy5ub2RlUmVzb2x2ZXIuZmluZE5vZGVCeUlkKG5leHROb2RlLmlkLCB0aGlzLmN1cnJlbnRTdWJmbG93Um9vdCk7XG4gICAgICAgICAgaWYgKHJlc29sdmVkTm9kZSkgY29udGV4dC5hZGRMb2coJ2R5bmFtaWNOZXh0UmVzb2x2ZWRGcm9tJywgJ3N1YmZsb3cnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJlc29sdmVkTm9kZSkge1xuICAgICAgICAgIHJlc29sdmVkTm9kZSA9IHRoaXMubm9kZVJlc29sdmVyLmZpbmROb2RlQnlJZChuZXh0Tm9kZS5pZCk7XG4gICAgICAgICAgaWYgKHJlc29sdmVkTm9kZSkgY29udGV4dC5hZGRMb2coJ2R5bmFtaWNOZXh0UmVzb2x2ZWRGcm9tJywgJ21haW5QaXBlbGluZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXNvbHZlZE5vZGUpIHtcbiAgICAgICAgICBuZXh0Tm9kZSA9IHJlc29sdmVkTm9kZTtcbiAgICAgICAgICBjb250ZXh0LmFkZExvZygnZHluYW1pY05leHRSZXNvbHZlZCcsIHRydWUpO1xuICAgICAgICAgIGNvbnRleHQuYWRkTG9nKCdkeW5hbWljTmV4dFRhcmdldCcsIG5leHROb2RlLmlkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRlcHMubG9nZ2VyLmluZm8oYER5bmFtaWMgbmV4dCBub2RlICcke25leHROb2RlLmlkfScgbm90IGZvdW5kIGluIHN1YmZsb3cgb3IgbWFpbiBwaXBlbGluZWApO1xuICAgICAgICAgIGNvbnRleHQuYWRkTG9nKCdkeW5hbWljTmV4dFJlc29sdmVkJywgZmFsc2UpO1xuICAgICAgICAgIGNvbnRleHQuYWRkTG9nKCdkeW5hbWljTmV4dE5vdEZvdW5kJywgbmV4dE5vZGUuaWQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGVwcy5uYXJyYXRpdmVHZW5lcmF0b3Iub25OZXh0KG5vZGUubmFtZSwgbmV4dE5vZGUubmFtZSwgbmV4dE5vZGUuZGVzY3JpcHRpb24sIHRyYXZlcnNhbENvbnRleHQpO1xuICAgICAgY29uc3QgbmV4dEN0eCA9IGNvbnRleHQuY3JlYXRlTmV4dCgnJywgbmV4dE5vZGUubmFtZSwgbmV4dE5vZGUuaWQpO1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZVN1YmZsb3dJbnRlcm5hbChuZXh0Tm9kZSwgbmV4dEN0eCwgYnJlYWtGbGFnLCBicmFuY2hQYXRoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhZ2VPdXRwdXQ7XG4gIH1cblxuICBwcml2YXRlIGNvbXB1dGVDb250ZXh0RGVwdGgoY29udGV4dDogU3RhZ2VDb250ZXh0KTogbnVtYmVyIHtcbiAgICBsZXQgZGVwdGggPSAwO1xuICAgIGxldCBjdXJyZW50ID0gY29udGV4dC5wYXJlbnQ7XG4gICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgIGRlcHRoKys7XG4gICAgICBjdXJyZW50ID0gY3VycmVudC5wYXJlbnQ7XG4gICAgfVxuICAgIHJldHVybiBkZXB0aDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3RhZ2VQYXRoKG5vZGU6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+LCBicmFuY2hQYXRoPzogc3RyaW5nLCBjb250ZXh0U3RhZ2VOYW1lPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlTmFtZSA9IG5vZGUuaWQ7XG4gICAgY29uc3Qgbm9kZUlkID0gY29udGV4dFN0YWdlTmFtZSAmJiBjb250ZXh0U3RhZ2VOYW1lICE9PSBub2RlLm5hbWUgPyBjb250ZXh0U3RhZ2VOYW1lIDogYmFzZU5hbWU7XG4gICAgaWYgKCFicmFuY2hQYXRoKSByZXR1cm4gbm9kZUlkO1xuICAgIHJldHVybiBgJHticmFuY2hQYXRofS4ke25vZGVJZH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBleGVjdXRlTm9kZUNoaWxkcmVuSW50ZXJuYWwoXG4gICAgbm9kZTogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4sXG4gICAgY29udGV4dDogU3RhZ2VDb250ZXh0LFxuICAgIGJyYW5jaFBhdGg6IHN0cmluZyxcbiAgICBicmVha0ZsYWc6IHsgc2hvdWxkQnJlYWs6IGJvb2xlYW4gfSxcbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBOb2RlUmVzdWx0VHlwZT4+IHtcbiAgICBjb25zdCBjaGlsZFByb21pc2VzOiBQcm9taXNlPE5vZGVSZXN1bHRUeXBlPltdID0gKG5vZGUuY2hpbGRyZW4gPz8gW10pLm1hcCgoY2hpbGQpID0+IHtcbiAgICAgIGNvbnN0IGNoaWxkQ29udGV4dCA9IGNvbnRleHQuY3JlYXRlQ2hpbGQoJycsIGNoaWxkLmlkIGFzIHN0cmluZywgY2hpbGQubmFtZSwgY2hpbGQuaWQpO1xuICAgICAgY29uc3QgY2hpbGRCcmVha0ZsYWcgPSB7IHNob3VsZEJyZWFrOiBmYWxzZSB9O1xuXG4gICAgICByZXR1cm4gdGhpcy5leGVjdXRlU3ViZmxvd0ludGVybmFsKGNoaWxkLCBjaGlsZENvbnRleHQsIGNoaWxkQnJlYWtGbGFnLCBicmFuY2hQYXRoKVxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgY2hpbGRDb250ZXh0LmNvbW1pdCgpO1xuICAgICAgICAgIHJldHVybiB7IGlkOiBjaGlsZC5pZCEsIHJlc3VsdCwgaXNFcnJvcjogZmFsc2UgfTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIGNoaWxkQ29udGV4dC5jb21taXQoKTtcbiAgICAgICAgICB0aGlzLmRlcHMubG9nZ2VyLmluZm8oYFRSRUUgUElQRUxJTkU6IGV4ZWN1dGVOb2RlQ2hpbGRyZW5JbnRlcm5hbCAtIEVycm9yIGZvciBpZDogJHtjaGlsZD8uaWR9YCwgeyBlcnJvciB9KTtcbiAgICAgICAgICByZXR1cm4geyBpZDogY2hpbGQuaWQhLCByZXN1bHQ6IGVycm9yLCBpc0Vycm9yOiB0cnVlIH07XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3Qgc2V0dGxlZCA9IGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChjaGlsZFByb21pc2VzKTtcbiAgICBjb25zdCBjaGlsZHJlblJlc3VsdHM6IFJlY29yZDxzdHJpbmcsIE5vZGVSZXN1bHRUeXBlPiA9IHt9O1xuICAgIHNldHRsZWQuZm9yRWFjaCgocykgPT4ge1xuICAgICAgaWYgKHMuc3RhdHVzID09PSAnZnVsZmlsbGVkJykge1xuICAgICAgICBjb25zdCB7IGlkLCByZXN1bHQsIGlzRXJyb3IgfSA9IHMudmFsdWU7XG4gICAgICAgIGNoaWxkcmVuUmVzdWx0c1tpZF0gPSB7IGlkLCByZXN1bHQsIGlzRXJyb3IgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGVwcy5sb2dnZXIuZXJyb3IoYEV4ZWN1dGlvbiBmYWlsZWQ6ICR7cy5yZWFzb259YCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNoaWxkcmVuUmVzdWx0cztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZXhlY3V0ZVNlbGVjdGVkQ2hpbGRyZW5JbnRlcm5hbChcbiAgICBzZWxlY3RvcjogU2VsZWN0b3IsXG4gICAgY2hpbGRyZW46IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+W10sXG4gICAgaW5wdXQ6IGFueSxcbiAgICBjb250ZXh0OiBTdGFnZUNvbnRleHQsXG4gICAgYnJhbmNoUGF0aDogc3RyaW5nLFxuICAgIGJyZWFrRmxhZzogeyBzaG91bGRCcmVhazogYm9vbGVhbiB9LFxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIE5vZGVSZXN1bHRUeXBlPj4ge1xuICAgIGNvbnN0IHNlbGVjdG9yUmVzdWx0ID0gYXdhaXQgc2VsZWN0b3IoaW5wdXQpO1xuICAgIGNvbnN0IHNlbGVjdGVkSWRzID0gQXJyYXkuaXNBcnJheShzZWxlY3RvclJlc3VsdCkgPyBzZWxlY3RvclJlc3VsdCA6IFtzZWxlY3RvclJlc3VsdF07XG5cbiAgICBjb250ZXh0LmFkZExvZygnc2VsZWN0ZWRDaGlsZElkcycsIHNlbGVjdGVkSWRzKTtcbiAgICBjb250ZXh0LmFkZExvZygnc2VsZWN0b3JQYXR0ZXJuJywgJ211bHRpLWNob2ljZScpO1xuXG4gICAgaWYgKHNlbGVjdGVkSWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29udGV4dC5hZGRMb2coJ3NraXBwZWRBbGxDaGlsZHJlbicsIHRydWUpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGVkQ2hpbGRyZW4gPSBjaGlsZHJlbi5maWx0ZXIoKGMpID0+IHNlbGVjdGVkSWRzLmluY2x1ZGVzKGMuaWQhKSk7XG4gICAgaWYgKHNlbGVjdGVkQ2hpbGRyZW4ubGVuZ3RoICE9PSBzZWxlY3RlZElkcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGNoaWxkSWRzID0gY2hpbGRyZW4ubWFwKChjKSA9PiBjLmlkKTtcbiAgICAgIGNvbnN0IG1pc3NpbmcgPSBzZWxlY3RlZElkcy5maWx0ZXIoKGlkKSA9PiAhY2hpbGRJZHMuaW5jbHVkZXMoaWQpKTtcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGBTZWxlY3RvciByZXR1cm5lZCB1bmtub3duIGNoaWxkIElEczogJHttaXNzaW5nLmpvaW4oJywgJyl9LiBBdmFpbGFibGU6ICR7Y2hpbGRJZHMuam9pbihcbiAgICAgICAgJywgJyxcbiAgICAgICl9YDtcbiAgICAgIHRoaXMuZGVwcy5sb2dnZXIuZXJyb3IoYEVycm9yIGluIHN1YmZsb3cgKCR7YnJhbmNoUGF0aH0pOmAsIHsgZXJyb3I6IGVycm9yTWVzc2FnZSB9KTtcbiAgICAgIGNvbnRleHQuYWRkRXJyb3IoJ3NlbGVjdG9yRXJyb3InLCBlcnJvck1lc3NhZ2UpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2tpcHBlZElkcyA9IGNoaWxkcmVuLmZpbHRlcigoYykgPT4gIXNlbGVjdGVkSWRzLmluY2x1ZGVzKGMuaWQhKSkubWFwKChjKSA9PiBjLmlkKTtcbiAgICBpZiAoc2tpcHBlZElkcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb250ZXh0LmFkZExvZygnc2tpcHBlZENoaWxkSWRzJywgc2tpcHBlZElkcyk7XG4gICAgfVxuXG4gICAgY29uc3QgdGVtcE5vZGU6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+ID0ge1xuICAgICAgbmFtZTogJ3NlbGVjdG9yLXRlbXAnLFxuICAgICAgaWQ6ICdzZWxlY3Rvci10ZW1wJyxcbiAgICAgIGNoaWxkcmVuOiBzZWxlY3RlZENoaWxkcmVuLFxuICAgIH07XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZU5vZGVDaGlsZHJlbkludGVybmFsKHRlbXBOb2RlLCBjb250ZXh0LCBicmFuY2hQYXRoLCBicmVha0ZsYWcpO1xuICB9XG59XG4iXX0=
|
package/dist/index.js
CHANGED
|
@@ -9,12 +9,10 @@
|
|
|
9
9
|
* For recorder factories, import from 'footprintjs/recorders'.
|
|
10
10
|
*/
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.validateOrThrow = exports.validateAgainstSchema = exports.InputValidationError = exports.isZod = exports.isValidatable = exports.detectSchema = exports.WindowedNarrativeFlowRecorder = exports.SilentNarrativeFlowRecorder = exports.SeparateNarrativeFlowRecorder = exports.RLENarrativeFlowRecorder = exports.ProgressiveNarrativeFlowRecorder = exports.MilestoneNarrativeFlowRecorder = exports.AdaptiveNarrativeFlowRecorder = exports.ManifestFlowRecorder = exports.formatErrorInfo = exports.extractErrorInfo = exports.NarrativeFlowRecorder = exports.defineScopeFromZod = exports.DebugRecorder = exports.MetricRecorder = exports.enableDevMode = exports.disableDevMode = exports.ScopeFacade = exports.listSubflowPaths = exports.getSubtreeSnapshot = exports.RunContext = exports.FlowChartExecutor = exports.select = exports.decide = exports.
|
|
12
|
+
exports.validateOrThrow = exports.validateAgainstSchema = exports.InputValidationError = exports.isZod = exports.isValidatable = exports.detectSchema = exports.WindowedNarrativeFlowRecorder = exports.SilentNarrativeFlowRecorder = exports.SeparateNarrativeFlowRecorder = exports.RLENarrativeFlowRecorder = exports.ProgressiveNarrativeFlowRecorder = exports.MilestoneNarrativeFlowRecorder = exports.AdaptiveNarrativeFlowRecorder = exports.ManifestFlowRecorder = exports.formatErrorInfo = exports.extractErrorInfo = exports.NarrativeFlowRecorder = exports.defineScopeFromZod = exports.DebugRecorder = exports.MetricRecorder = exports.enableDevMode = exports.disableDevMode = exports.ScopeFacade = exports.listSubflowPaths = exports.getSubtreeSnapshot = exports.RunContext = exports.FlowChartExecutor = exports.select = exports.decide = exports.FlowChartBuilder = exports.flowChart = void 0;
|
|
13
13
|
var index_js_1 = require("./lib/builder/index.js");
|
|
14
14
|
Object.defineProperty(exports, "flowChart", { enumerable: true, get: function () { return index_js_1.flowChart; } });
|
|
15
15
|
Object.defineProperty(exports, "FlowChartBuilder", { enumerable: true, get: function () { return index_js_1.FlowChartBuilder; } });
|
|
16
|
-
var typedFlowChart_js_1 = require("./lib/builder/typedFlowChart.js");
|
|
17
|
-
Object.defineProperty(exports, "createTypedScopeFactory", { enumerable: true, get: function () { return typedFlowChart_js_1.createTypedScopeFactory; } });
|
|
18
16
|
var index_js_2 = require("./lib/decide/index.js");
|
|
19
17
|
Object.defineProperty(exports, "decide", { enumerable: true, get: function () { return index_js_2.decide; } });
|
|
20
18
|
Object.defineProperty(exports, "select", { enumerable: true, get: function () { return index_js_2.select; } });
|
|
@@ -71,4 +69,4 @@ var index_js_21 = require("./lib/schema/index.js");
|
|
|
71
69
|
Object.defineProperty(exports, "InputValidationError", { enumerable: true, get: function () { return index_js_21.InputValidationError; } });
|
|
72
70
|
Object.defineProperty(exports, "validateAgainstSchema", { enumerable: true, get: function () { return index_js_21.validateAgainstSchema; } });
|
|
73
71
|
Object.defineProperty(exports, "validateOrThrow", { enumerable: true, get: function () { return index_js_21.validateOrThrow; } });
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7OztHQVFHOzs7QUFPSCxtREFBcUU7QUFBNUQscUdBQUEsU0FBUyxPQUFBO0FBQUUsNEdBQUEsZ0JBQWdCLE9BQUE7QUFlcEMsa0RBQXVEO0FBQTlDLGtHQUFBLE1BQU0sT0FBQTtBQUFFLGtHQUFBLE1BQU0sT0FBQTtBQU92QixrREFBMEQ7QUFBakQsNkdBQUEsaUJBQWlCLE9BQUE7QUFDMUIsa0RBQW1EO0FBQTFDLHNHQUFBLFVBQVUsT0FBQTtBQVluQixrREFBNkU7QUFBcEUsOEdBQUEsa0JBQWtCLE9BQUE7QUFBRSw0R0FBQSxnQkFBZ0IsT0FBQTtBQUU3QywrRUFBK0U7QUFDL0UsMENBQTBDO0FBQzFDLCtFQUErRTtBQUUvRSxpREFBbUQ7QUFBMUMsdUdBQUEsV0FBVyxPQUFBO0FBRXBCLHVCQUF1QjtBQUN2QixtRUFBOEU7QUFBckUsbUhBQUEsY0FBYyxPQUFBO0FBQUUsa0hBQUEsYUFBYSxPQUFBO0FBRXRDLGtGQUFrRjtBQUNsRixpREFBc0Q7QUFBN0MsMEdBQUEsY0FBYyxPQUFBO0FBQ3ZCLGlEQUFxRDtBQUE1Qyx5R0FBQSxhQUFhLE9BQUE7QUFhdEIsOEJBQThCO0FBQzlCLGlEQUEwRDtBQUFqRCw4R0FBQSxrQkFBa0IsT0FBQTtBQXVCM0IsbURBQThEO0FBQXJELGtIQUFBLHFCQUFxQixPQUFBO0FBSTlCLG1EQUEwRTtBQUFqRSw2R0FBQSxnQkFBZ0IsT0FBQTtBQUFFLDRHQUFBLGVBQWUsT0FBQTtBQUkxQyxtREFBNkQ7QUFBcEQsaUhBQUEsb0JBQW9CLE9BQUE7QUFDN0IsbURBQXNFO0FBQTdELDBIQUFBLDZCQUE2QixPQUFBO0FBQ3RDLG1EQUF1RTtBQUE5RCwySEFBQSw4QkFBOEIsT0FBQTtBQUN2QyxtREFBeUU7QUFBaEUsNkhBQUEsZ0NBQWdDLE9BQUE7QUFDekMsbURBQWlFO0FBQXhELHFIQUFBLHdCQUF3QixPQUFBO0FBQ2pDLG1EQUFzRTtBQUE3RCwwSEFBQSw2QkFBNkIsT0FBQTtBQUN0QyxtREFBb0U7QUFBM0Qsd0hBQUEsMkJBQTJCLE9BQUE7QUFDcEMsbURBQXNFO0FBQTdELDBIQUFBLDZCQUE2QixPQUFBO0FBMEJ0QyxtREFBMkU7QUFBbEUseUdBQUEsWUFBWSxPQUFBO0FBQUUsMEdBQUEsYUFBYSxPQUFBO0FBQUUsa0dBQUEsS0FBSyxPQUFBO0FBQzNDLG1EQUFxRztBQUE1RixpSEFBQSxvQkFBb0IsT0FBQTtBQUFFLGtIQUFBLHFCQUFxQixPQUFBO0FBQUUsNEdBQUEsZUFBZSxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb290UHJpbnQg4oCUIFB1YmxpYyBBUEkgKHYyLjApXG4gKlxuICogVGhlIGZsb3djaGFydCBwYXR0ZXJuIGZvciBiYWNrZW5kIGNvZGUuXG4gKiBCdWlsZCDihpIgRGVzY3JpYmUg4oaSIFJ1bi5cbiAqXG4gKiBGb3IgYWR2YW5jZWQvaW50ZXJuYWwgQVBJcywgaW1wb3J0IGZyb20gJ2Zvb3RwcmludGpzL2FkdmFuY2VkJy5cbiAqIEZvciByZWNvcmRlciBmYWN0b3JpZXMsIGltcG9ydCBmcm9tICdmb290cHJpbnRqcy9yZWNvcmRlcnMnLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJ1aWxkZXIg4oCUIEZsb3djaGFydCBjb25zdHJ1Y3Rpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgeyBGbG93Q2hhcnQsIFN0YWdlRnVuY3Rpb24gYXMgU3RhZ2VIYW5kbGVyLCBTdHJlYW1IYW5kbGVycyB9IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuZXhwb3J0IHsgZmxvd0NoYXJ0LCBGbG93Q2hhcnRCdWlsZGVyIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5cbi8vIFR5cGVkU2NvcGUg4oCUIHR5cGVkIHByb3BlcnR5IGFjY2VzcyAobm8gY2FzdHMgbmVlZGVkKVxuZXhwb3J0IHR5cGUgeyBUeXBlZFN0YWdlRnVuY3Rpb24gfSBmcm9tICcuL2xpYi9idWlsZGVyL3R5cGVkRmxvd0NoYXJ0LmpzJztcbmV4cG9ydCB0eXBlIHsgU2NvcGVNZXRob2RzLCBUeXBlZFNjb3BlIH0gZnJvbSAnLi9saWIvcmVhY3RpdmUvaW5kZXguanMnO1xuXG4vLyBEZWNpc2lvbiByZWFzb25pbmcgY2FwdHVyZVxuZXhwb3J0IHR5cGUge1xuICBEZWNpZGVSdWxlLFxuICBEZWNpc2lvbkV2aWRlbmNlLFxuICBEZWNpc2lvblJlc3VsdCxcbiAgRmlsdGVyT3BzLFxuICBTZWxlY3Rpb25SZXN1bHQsXG4gIFdoZXJlRmlsdGVyLFxufSBmcm9tICcuL2xpYi9kZWNpZGUvaW5kZXguanMnO1xuZXhwb3J0IHsgZGVjaWRlLCBzZWxlY3QgfSBmcm9tICcuL2xpYi9kZWNpZGUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSdW5uZXIg4oCUIHYyIEFQSTogY2hhcnQucmVjb3JkZXIoKS5ydW4oKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7IFJ1blJlc3VsdCB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5leHBvcnQgeyBGbG93Q2hhcnRFeGVjdXRvciB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5leHBvcnQgeyBSdW5Db250ZXh0IH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcbmV4cG9ydCB0eXBlIHtcbiAgT3BlbkFQSU9wdGlvbnMgYXMgQ2hhcnRPcGVuQVBJT3B0aW9ucyxcbiAgTUNQVG9vbERlc2NyaXB0aW9uLFxuICBSdW5uYWJsZUZsb3dDaGFydCxcbn0gZnJvbSAnLi9saWIvcnVubmVyL1J1bm5hYmxlQ2hhcnQuanMnO1xuXG4vLyBDb21wb3NhYmxlUnVubmVyIOKAlCBpbnRlcmZhY2UgZm9yIHN1YmZsb3cgY29tcG9zaXRpb25cbmV4cG9ydCB0eXBlIHsgQ29tcG9zYWJsZVJ1bm5lciB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8vIFNuYXBzaG90IG5hdmlnYXRpb25cbmV4cG9ydCB0eXBlIHsgUmVjb3JkZXJTbmFwc2hvdCwgUnVudGltZVNuYXBzaG90LCBTdWJ0cmVlU25hcHNob3QgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuZXhwb3J0IHsgZ2V0U3VidHJlZVNuYXBzaG90LCBsaXN0U3ViZmxvd1BhdGhzIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2NvcGUg4oCUIFBlci1zdGFnZSBmYWNhZGVzIGFuZCByZWNvcmRlcnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHsgU2NvcGVGYWNhZGUgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8vIERldi1tb2RlIGRpYWdub3N0aWNzXG5leHBvcnQgeyBkaXNhYmxlRGV2TW9kZSwgZW5hYmxlRGV2TW9kZSB9IGZyb20gJy4vbGliL3Njb3BlL2RldGVjdENpcmN1bGFyLmpzJztcblxuLy8gUmVjb3JkZXJzIChjbGFzcyBleHBvcnRzIOKAlCBwcmVmZXIgZmFjdG9yeSBmdW5jdGlvbnMgZnJvbSBmb290cHJpbnRqcy9yZWNvcmRlcnMpXG5leHBvcnQgeyBNZXRyaWNSZWNvcmRlciB9IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcbmV4cG9ydCB7IERlYnVnUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8vIFJlY29yZGVyIGludGVyZmFjZSBhbmQgZXZlbnQgdHlwZXMgKGZvciBjdXN0b20gcmVjb3JkZXJzKVxuZXhwb3J0IHR5cGUge1xuICBDb21taXRFdmVudCxcbiAgRXJyb3JFdmVudCxcbiAgUmVhZEV2ZW50LFxuICBSZWNvcmRlcixcbiAgUmVkYWN0aW9uUG9saWN5LFxuICBSZWRhY3Rpb25SZXBvcnQsXG4gIFdyaXRlRXZlbnQsXG59IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLy8gWm9kLWJhc2VkIHNjb3BlIGRlZmluaXRpb25zXG5leHBvcnQgeyBkZWZpbmVTY29wZUZyb21ab2QgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVuZ2luZSDigJQgTmFycmF0aXZlIHR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHsgQ29tYmluZWROYXJyYXRpdmVFbnRyeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vIEZsb3dSZWNvcmRlciDigJQgUGx1Z2dhYmxlIG9ic2VydmVyIGZvciBjb250cm9sIGZsb3cgZXZlbnRzXG5leHBvcnQgdHlwZSB7XG4gIEZsb3dCcmVha0V2ZW50LFxuICBGbG93RGVjaXNpb25FdmVudCxcbiAgRmxvd0Vycm9yRXZlbnQsXG4gIEZsb3dGb3JrRXZlbnQsXG4gIEZsb3dMb29wRXZlbnQsXG4gIEZsb3dOZXh0RXZlbnQsXG4gIEZsb3dSZWNvcmRlcixcbiAgRmxvd1NlbGVjdGVkRXZlbnQsXG4gIEZsb3dTdGFnZUV2ZW50LFxuICBGbG93U3ViZmxvd0V2ZW50LFxuICBGbG93U3ViZmxvd1JlZ2lzdGVyZWRFdmVudCxcbiAgVHJhdmVyc2FsQ29udGV4dCxcbn0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IE5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vIFN0cnVjdHVyZWQgZXJyb3JzXG5leHBvcnQgdHlwZSB7IFN0cnVjdHVyZWRFcnJvckluZm8gfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgZXh0cmFjdEVycm9ySW5mbywgZm9ybWF0RXJyb3JJbmZvIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gQnVpbHQtaW4gRmxvd1JlY29yZGVyIHN0cmF0ZWdpZXMgKHByZWZlciBmYWN0b3J5IGZ1bmN0aW9ucyBmcm9tIGZvb3RwcmludGpzL3JlY29yZGVycylcbmV4cG9ydCB0eXBlIHsgTWFuaWZlc3RFbnRyeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBNYW5pZmVzdEZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBBZGFwdGl2ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBNaWxlc3RvbmVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgUHJvZ3Jlc3NpdmVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgUkxFTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IFNlcGFyYXRlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IFNpbGVudE5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBXaW5kb3dlZE5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVuZ2luZSB0eXBlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7IEV4ZWN1dGlvbkVudiwgUnVuT3B0aW9ucyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgdHlwZSB7IFNjb3BlRmFjdG9yeSB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbnRyYWN0IHR5cGVzICh1c2UgLmNvbnRyYWN0KCkgb24gYnVpbGRlciArIGNoYXJ0LnRvT3BlbkFQSSgpIGluc3RlYWQpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHtcbiAgRmxvd0NoYXJ0Q29udHJhY3QsXG4gIEZsb3dDaGFydENvbnRyYWN0T3B0aW9ucyxcbiAgSnNvblNjaGVtYSxcbiAgT3BlbkFQSU9wdGlvbnMsXG4gIE9wZW5BUElTcGVjLFxufSBmcm9tICcuL2xpYi9jb250cmFjdC9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNjaGVtYSDigJQgVmFsaWRhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7IFNjaGVtYUtpbmQsIFZhbGlkYXRpb25Jc3N1ZSwgVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJy4vbGliL3NjaGVtYS9pbmRleC5qcyc7XG5leHBvcnQgeyBkZXRlY3RTY2hlbWEsIGlzVmFsaWRhdGFibGUsIGlzWm9kIH0gZnJvbSAnLi9saWIvc2NoZW1hL2luZGV4LmpzJztcbmV4cG9ydCB7IElucHV0VmFsaWRhdGlvbkVycm9yLCB2YWxpZGF0ZUFnYWluc3RTY2hlbWEsIHZhbGlkYXRlT3JUaHJvdyB9IGZyb20gJy4vbGliL3NjaGVtYS9pbmRleC5qcyc7XG4iXX0=
|