@aws-cdk/aws-glue-alpha 2.266.0-alpha.0 → 2.268.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +1002 -642
- package/.jsii.tabl.json.gz +0 -0
- package/.warnings.jsii.js +0 -58
- package/README.md +52 -33
- package/awslint.json +4 -0
- package/lib/catalog.d.ts +2 -2
- package/lib/catalog.js +4 -4
- package/lib/code.js +3 -3
- package/lib/connection.d.ts +41 -1
- package/lib/connection.js +48 -9
- package/lib/data-format.js +5 -5
- package/lib/data-quality-ruleset.d.ts +20 -9
- package/lib/data-quality-ruleset.js +33 -6
- package/lib/database.d.ts +3 -1
- package/lib/database.js +8 -2
- package/lib/external-table.js +1 -1
- package/lib/index.d.ts +0 -1
- package/lib/index.js +1 -2
- package/lib/jobs/job.d.ts +1 -1
- package/lib/jobs/job.js +3 -3
- package/lib/jobs/pyspark-etl-job.d.ts +1 -1
- package/lib/jobs/pyspark-etl-job.js +3 -3
- package/lib/jobs/pyspark-flex-etl-job.d.ts +1 -1
- package/lib/jobs/pyspark-flex-etl-job.js +3 -3
- package/lib/jobs/pyspark-streaming-job.d.ts +1 -1
- package/lib/jobs/pyspark-streaming-job.js +3 -3
- package/lib/jobs/python-shell-job.js +1 -1
- package/lib/jobs/ray-job.js +1 -1
- package/lib/jobs/scala-spark-etl-job.d.ts +3 -2
- package/lib/jobs/scala-spark-etl-job.js +5 -4
- package/lib/jobs/scala-spark-flex-etl-job.d.ts +11 -20
- package/lib/jobs/scala-spark-flex-etl-job.js +12 -11
- package/lib/jobs/scala-spark-streaming-job.d.ts +3 -2
- package/lib/jobs/scala-spark-streaming-job.js +5 -4
- package/lib/jobs/spark-job.js +1 -1
- package/lib/partition-projection.d.ts +8 -8
- package/lib/partition-projection.js +49 -2
- package/lib/s3-table.d.ts +86 -40
- package/lib/s3-table.js +136 -85
- package/lib/schema.d.ts +26 -6
- package/lib/schema.js +74 -77
- package/lib/security-configuration.js +4 -4
- package/lib/storage-parameter.d.ts +14 -3
- package/lib/storage-parameter.js +16 -6
- package/lib/table-base.d.ts +1 -1
- package/lib/table-base.js +2 -2
- package/lib/triggers/trigger-options.d.ts +1 -1
- package/lib/triggers/trigger-options.js +2 -2
- package/lib/triggers/workflow.js +2 -2
- package/package.json +7 -7
- package/lib/table-deprecated.d.ts +0 -13
- package/lib/table-deprecated.js +0 -70
|
@@ -44,16 +44,17 @@ const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
|
|
|
44
44
|
const constants_1 = require("../constants");
|
|
45
45
|
const spark_job_1 = require("./spark-job");
|
|
46
46
|
/**
|
|
47
|
-
* Spark ETL Jobs class
|
|
47
|
+
* Scala Spark Flex ETL Jobs class
|
|
48
48
|
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
49
|
+
* Flex jobs support Python and Scala languages.
|
|
50
|
+
* The flexible execution class is appropriate for non-urgent jobs such as
|
|
51
|
+
* pre-production jobs, testing, and one-time data loads.
|
|
52
|
+
* Flexible job runs are supported for jobs using AWS Glue version 3.0 or later and `G_1X` or
|
|
53
|
+
* `G_2X` worker types but will default to the latest version of Glue (currently Glue 5.0).
|
|
54
|
+
*
|
|
55
|
+
* Similar to ETL, we’ll enable these features: --enable-metrics,
|
|
56
|
+
* --enable-continuous-cloudwatch-log. The Spark UI (--enable-spark-ui) is off by
|
|
57
|
+
* default; enable it by setting the `sparkUI` prop.
|
|
57
58
|
*/
|
|
58
59
|
let ScalaSparkFlexEtlJob = (() => {
|
|
59
60
|
let _classDecorators = [prop_injectable_1.propertyInjectable];
|
|
@@ -76,7 +77,7 @@ let ScalaSparkFlexEtlJob = (() => {
|
|
|
76
77
|
ScalaSparkFlexEtlJob = _classThis = _classDescriptor.value;
|
|
77
78
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
78
79
|
}
|
|
79
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.ScalaSparkFlexEtlJob", version: "2.
|
|
80
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.ScalaSparkFlexEtlJob", version: "2.268.0-alpha.0" };
|
|
80
81
|
/** Uniquely identifies this class. */
|
|
81
82
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-glue-alpha.ScalaSparkFlexEtlJob';
|
|
82
83
|
resource = __runInitializers(this, _instanceExtraInitializers);
|
|
@@ -149,4 +150,4 @@ let ScalaSparkFlexEtlJob = (() => {
|
|
|
149
150
|
return ScalaSparkFlexEtlJob = _classThis;
|
|
150
151
|
})();
|
|
151
152
|
exports.ScalaSparkFlexEtlJob = ScalaSparkFlexEtlJob;
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NhbGEtc3BhcmstZmxleC1ldGwtam9iLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2NhbGEtc3BhcmstZmxleC1ldGwtam9iLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUE4QztBQUU5Qyw0RUFBdUU7QUFDdkUsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUcxRSw0Q0FBNkY7QUFFN0YsMkNBQXVDO0FBd0R2Qzs7Ozs7Ozs7Ozs7R0FXRztJQUVVLG9CQUFvQjs0QkFEaEMsb0NBQWtCOzs7O3NCQUN1QixvQkFBUTs7OztvQ0FBaEIsU0FBUSxXQUFROzs7O3NDQTJDL0MsaUNBQWM7dUNBS2QsaUNBQWM7WUFKZix5S0FBVyxNQUFNLDZEQUVoQjtZQUdELDRLQUFXLE9BQU8sNkRBRWpCO1lBbkRILDZLQWlFQzs7Ozs7UUFoRUMsc0NBQXNDO1FBQy9CLE1BQU0sQ0FBVSxxQkFBcUIsR0FBVyw4Q0FBOEMsQ0FBQztRQUM5RixRQUFRLEdBSEwsbURBQW9CLENBR047UUFFekI7O1dBRUc7UUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWdDO1lBQ3hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDOzs7Ozs7bURBVGYsb0JBQW9COzs7O1lBVTdCLG1DQUFtQztZQUNuQyxJQUFBLHdDQUFvQixFQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUVsQyx5REFBeUQ7WUFDekQsTUFBTSxnQkFBZ0IsR0FBRztnQkFDdkIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDO2dCQUNsQyxHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUM7YUFDNUMsQ0FBQztZQUVGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxpQkFBTSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQzNDLElBQUksRUFBRSxLQUFLLENBQUMsT0FBTztnQkFDbkIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO2dCQUM5QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO2dCQUN2QixPQUFPLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLG1CQUFPLENBQUMsR0FBRztvQkFDakIsY0FBYyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztpQkFDbkQ7Z0JBQ0QsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLHVCQUFXLENBQUMsSUFBSTtnQkFDckUsVUFBVSxFQUFFLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxVQUFVLElBQUksc0JBQVUsQ0FBQyxJQUFJO2dCQUNwRSxlQUFlLEVBQUUsS0FBSyxDQUFDLG1CQUFtQixFQUFFLGVBQWUsSUFBSSxFQUFFO2dCQUNqRSxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7Z0JBQzVCLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDdkcsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUNuSCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUU7Z0JBQ25DLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQzlILHFCQUFxQixFQUFFLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSx5QkFBeUI7Z0JBQzdFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtnQkFDaEIsY0FBYyxFQUFFLDBCQUFjLENBQUMsSUFBSTtnQkFDbkMsb0JBQW9CLEVBQUUsS0FBSztnQkFDM0IsZ0JBQWdCO2FBQ2pCLENBQUMsQ0FBQztTQUNKO1FBR0QsSUFBVyxNQUFNO1lBQ2YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDN0M7UUFHRCxJQUFXLE9BQU87WUFDaEIsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6RDtRQUVEOzs7O1dBSUc7UUFDSyxtQkFBbUIsQ0FBQyxLQUFnQztZQUMxRCxNQUFNLElBQUksR0FBOEIsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLHVCQUFXLENBQUMsS0FBSyxDQUFDO1lBQzNDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1lBQ2xDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDMUMsT0FBTyxJQUFJLENBQUM7U0FDYjs7WUFoRVUsdURBQW9COzs7OztBQUFwQixvREFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5Kb2IgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZ2x1ZSc7XG5pbXBvcnQgdHlwZSAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IG1lbW9pemVkR2V0dGVyIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvaGVscGVycy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHR5cGUgeyBDb2RlIH0gZnJvbSAnLi4vY29kZSc7XG5pbXBvcnQgeyBKb2JUeXBlLCBHbHVlVmVyc2lvbiwgSm9iTGFuZ3VhZ2UsIFdvcmtlclR5cGUsIEV4ZWN1dGlvbkNsYXNzIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB0eXBlIHsgU3BhcmtKb2JQcm9wcyB9IGZyb20gJy4vc3Bhcmstam9iJztcbmltcG9ydCB7IFNwYXJrSm9iIH0gZnJvbSAnLi9zcGFyay1qb2InO1xuXG4vKipcbiAqIEZsZXggSm9icyBjbGFzc1xuICpcbiAqIEZsZXggam9icyBzdXBwb3J0cyBQeXRob24gYW5kIFNjYWxhIGxhbmd1YWdlLlxuICogVGhlIGZsZXhpYmxlIGV4ZWN1dGlvbiBjbGFzcyBpcyBhcHByb3ByaWF0ZSBmb3Igbm9uLXVyZ2VudCBqb2JzIHN1Y2ggYXNcbiAqIHByZS1wcm9kdWN0aW9uIGpvYnMsIHRlc3RpbmcsIGFuZCBvbmUtdGltZSBkYXRhIGxvYWRzLlxuICogRmxleGlibGUgam9iIHJ1bnMgYXJlIHN1cHBvcnRlZCBmb3Igam9icyB1c2luZyBBV1MgR2x1ZSB2ZXJzaW9uIDMuMCBvciBsYXRlciBhbmQgRy4xWCBvclxuICogRy4yWCB3b3JrZXIgdHlwZXMgYnV0IHdpbGwgZGVmYXVsdCB0byB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgR2x1ZSAoY3VycmVudGx5IEdsdWUgMy4wLilcbiAqXG4gKiBTaW1pbGFyIHRvIEVUTCwgd2XigJlsbCBlbmFibGUgdGhlc2UgZmVhdHVyZXM6IOKAlGVuYWJsZS1tZXRyaWNzLCDigJRlbmFibGUtc3BhcmstdWksXG4gKiDigJRlbmFibGUtY29udGludW91cy1jbG91ZHdhdGNoLWxvZ1xuICpcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY2FsYVNwYXJrRmxleEV0bEpvYlByb3BzIGV4dGVuZHMgU3BhcmtKb2JQcm9wcyB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIG9mIGEgbm90aWZpY2F0aW9uIChvcHRpb25hbCkuXG4gICAqIEFmdGVyIGEgam9iIHJ1biBzdGFydHMsIHRoZSBudW1iZXIgb2YgbWludXRlcyB0byB3YWl0IGJlZm9yZSBzZW5kaW5nIGEgam9iIHJ1biBkZWxheSBub3RpZmljYXRpb24uXG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBub3RpZnlEZWxheUFmdGVyPzogY2RrLkR1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgZnVsbHkgcXVhbGlmaWVkIFNjYWxhIGNsYXNzIG5hbWUgdGhhdCBzZXJ2ZXMgYXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgam9iLlxuICAgKlxuICAgKiBAc2VlIGAtLWNsYXNzYCBpbiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2x1ZS9sYXRlc3QvZGcvYXdzLWdsdWUtcHJvZ3JhbW1pbmctZXRsLWdsdWUtYXJndW1lbnRzLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IGNsYXNzTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGZpbGVzLCBzdWNoIGFzIGNvbmZpZ3VyYXRpb24gZmlsZXMgdGhhdCBBV1MgR2x1ZSBjb3BpZXMgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9mIHlvdXIgc2NyaXB0IGJlZm9yZSBleGVjdXRpbmcgaXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZXh0cmEgZmlsZXMgc3BlY2lmaWVkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nbHVlL2xhdGVzdC9kZy9hd3MtZ2x1ZS1wcm9ncmFtbWluZy1ldGwtZ2x1ZS1hcmd1bWVudHMuaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmFGaWxlcz86IENvZGVbXTtcblxuICAvKipcbiAgICogRXh0cmEgSmFycyBTMyBVUkwgKG9wdGlvbmFsKVxuICAgKiBTMyBVUkwgd2hlcmUgYWRkaXRpb25hbCBqYXIgZGVwZW5kZW5jaWVzIGFyZSBsb2NhdGVkXG4gICAqIEBkZWZhdWx0IC0gbm8gZXh0cmEgamFyIGZpbGVzXG4gICAqL1xuICByZWFkb25seSBleHRyYUphcnM/OiBDb2RlW107XG5cbiAgLyoqXG4gICAqIFNldHRpbmcgdGhpcyB2YWx1ZSB0byB0cnVlIHByaW9yaXRpemVzIHRoZSBjdXN0b21lcidzIGV4dHJhIEpBUiBmaWxlcyBpbiB0aGUgY2xhc3NwYXRoLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZSAtIHByaW9yaXR5IGlzIG5vdCBnaXZlbiB0byB1c2VyLXByb3ZpZGVkIGphcnNcbiAgICpcbiAgICogQHNlZSBgLS11c2VyLWphcnMtZmlyc3RgIGluIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nbHVlL2xhdGVzdC9kZy9hd3MtZ2x1ZS1wcm9ncmFtbWluZy1ldGwtZ2x1ZS1hcmd1bWVudHMuaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmFKYXJzRmlyc3Q/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFNwYXJrIEVUTCBKb2JzIGNsYXNzXG4gKlxuICogRVRMIGpvYnMgc3VwcG9ydCBweVNwYXJrIGFuZCBTY2FsYSBsYW5ndWFnZXMsIGZvciB3aGljaCB0aGVyZSBhcmUgc2VwYXJhdGVcbiAqIGJ1dCBzaW1pbGFyIGNvbnN0cnVjdG9ycy4gRVRMIGpvYnMgZGVmYXVsdCB0byB0aGUgRzIgd29ya2VyIHR5cGUsIGJ1dCB5b3VcbiAqIGNhbiBvdmVycmlkZSB0aGlzIGRlZmF1bHQgd2l0aCBvdGhlciBzdXBwb3J0ZWQgd29ya2VyIHR5cGUgdmFsdWVzXG4gKiAoRzEsIEcyLCBHNCBhbmQgRzgpLiBFVEwgam9icyBkZWZhdWx0cyB0byBHbHVlIHZlcnNpb24gNC4wLCB3aGljaCB5b3UgY2FuXG4gKiBvdmVycmlkZSB0byAzLjAuIFRoZSBmb2xsb3dpbmcgRVRMIGZlYXR1cmVzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQ6XG4gKiDigJRlbmFibGUtbWV0cmljcywg4oCUZW5hYmxlLXNwYXJrLXVpLCDigJRlbmFibGUtY29udGludW91cy1jbG91ZHdhdGNoLWxvZy5cbiAqIFlvdSBjYW4gZmluZCBtb3JlIGRldGFpbHMgYWJvdXQgdmVyc2lvbiwgd29ya2VyIHR5cGUgYW5kIG90aGVyIGZlYXR1cmVzXG4gKiBpbiBHbHVlJ3MgcHVibGljIGRvY3VtZW50YXRpb24uXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBTY2FsYVNwYXJrRmxleEV0bEpvYiBleHRlbmRzIFNwYXJrSm9iIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtZ2x1ZS1hbHBoYS5TY2FsYVNwYXJrRmxleEV0bEpvYic7XG4gIHByaXZhdGUgcmVzb3VyY2U6IENmbkpvYjtcblxuICAvKipcbiAgICogU2NhbGFTcGFya0ZsZXhFdGxKb2IgY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTY2FsYVNwYXJrRmxleEV0bEpvYlByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICAvLyBDb21iaW5lIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgaW50byBhIHNpbmdsZSBsaW5lIGl0ZW1cbiAgICBjb25zdCBkZWZhdWx0QXJndW1lbnRzID0ge1xuICAgICAgLi4udGhpcy5leGVjdXRhYmxlQXJndW1lbnRzKHByb3BzKSxcbiAgICAgIC4uLnRoaXMubm9uRXhlY3V0YWJsZUNvbW1vbkFyZ3VtZW50cyhwcm9wcyksXG4gICAgfTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgQ2ZuSm9iKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIG5hbWU6IHByb3BzLmpvYk5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICByb2xlOiB0aGlzLnJvbGUucm9sZUFybixcbiAgICAgIGNvbW1hbmQ6IHtcbiAgICAgICAgbmFtZTogSm9iVHlwZS5FVEwsXG4gICAgICAgIHNjcmlwdExvY2F0aW9uOiB0aGlzLmNvZGVTM09iamVjdFVybChwcm9wcy5zY3JpcHQpLFxuICAgICAgfSxcbiAgICAgIGdsdWVWZXJzaW9uOiBwcm9wcy5nbHVlVmVyc2lvbiA/IHByb3BzLmdsdWVWZXJzaW9uIDogR2x1ZVZlcnNpb24uVjVfMCxcbiAgICAgIHdvcmtlclR5cGU6IHByb3BzLndvcmtlckNvbmZpZ3VyYXRpb24/LndvcmtlclR5cGUgPz8gV29ya2VyVHlwZS5HXzFYLFxuICAgICAgbnVtYmVyT2ZXb3JrZXJzOiBwcm9wcy53b3JrZXJDb25maWd1cmF0aW9uPy5udW1iZXJPZldvcmtlcnMgPz8gMTAsXG4gICAgICBtYXhSZXRyaWVzOiBwcm9wcy5tYXhSZXRyaWVzLFxuICAgICAgZXhlY3V0aW9uUHJvcGVydHk6IHByb3BzLm1heENvbmN1cnJlbnRSdW5zID8geyBtYXhDb25jdXJyZW50UnVuczogcHJvcHMubWF4Q29uY3VycmVudFJ1bnMgfSA6IHVuZGVmaW5lZCxcbiAgICAgIG5vdGlmaWNhdGlvblByb3BlcnR5OiBwcm9wcy5ub3RpZnlEZWxheUFmdGVyID8geyBub3RpZnlEZWxheUFmdGVyOiBwcm9wcy5ub3RpZnlEZWxheUFmdGVyLnRvTWludXRlcygpIH0gOiB1bmRlZmluZWQsXG4gICAgICB0aW1lb3V0OiBwcm9wcy50aW1lb3V0Py50b01pbnV0ZXMoKSxcbiAgICAgIGNvbm5lY3Rpb25zOiBwcm9wcy5jb25uZWN0aW9ucyA/IHsgY29ubmVjdGlvbnM6IHByb3BzLmNvbm5lY3Rpb25zLm1hcCgoY29ubmVjdGlvbikgPT4gY29ubmVjdGlvbi5jb25uZWN0aW9uTmFtZSkgfSA6IHVuZGVmaW5lZCxcbiAgICAgIHNlY3VyaXR5Q29uZmlndXJhdGlvbjogcHJvcHMuc2VjdXJpdHlDb25maWd1cmF0aW9uPy5zZWN1cml0eUNvbmZpZ3VyYXRpb25OYW1lLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICAgIGV4ZWN1dGlvbkNsYXNzOiBFeGVjdXRpb25DbGFzcy5GTEVYLFxuICAgICAgam9iUnVuUXVldWluZ0VuYWJsZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdEFyZ3VtZW50cyxcbiAgICB9KTtcbiAgfVxuXG4gIEBtZW1vaXplZEdldHRlclxuICBwdWJsaWMgZ2V0IGpvYkFybigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmJ1aWxkSm9iQXJuKHRoaXMsIHRoaXMuam9iTmFtZSk7XG4gIH1cblxuICBAbWVtb2l6ZWRHZXR0ZXJcbiAgcHVibGljIGdldCBqb2JOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVzb3VyY2VOYW1lQXR0cmlidXRlKHRoaXMucmVzb3VyY2UucmVmKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGV4ZWN1dGFibGUgYXJndW1lbnRzIHdpdGggYmVzdCBwcmFjdGljZXMgZW5hYmxlZCBieSBkZWZhdWx0XG4gICAqXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFyZ3VtZW50cyBmb3IgR2x1ZSB0byB1c2Ugb24gZXhlY3V0aW9uXG4gICAqL1xuICBwcml2YXRlIGV4ZWN1dGFibGVBcmd1bWVudHMocHJvcHM6IFNjYWxhU3BhcmtGbGV4RXRsSm9iUHJvcHMpIHtcbiAgICBjb25zdCBhcmdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gICAgYXJnc1snLS1qb2ItbGFuZ3VhZ2UnXSA9IEpvYkxhbmd1YWdlLlNDQUxBO1xuICAgIGFyZ3NbJy0tY2xhc3MnXSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICB0aGlzLnNldHVwRXh0cmFDb2RlQXJndW1lbnRzKGFyZ3MsIHByb3BzKTtcbiAgICByZXR1cm4gYXJncztcbiAgfVxufVxuIl19
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NhbGEtc3BhcmstZmxleC1ldGwtam9iLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2NhbGEtc3BhcmstZmxleC1ldGwtam9iLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUE4QztBQUU5Qyw0RUFBdUU7QUFDdkUsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUcxRSw0Q0FBNkY7QUFFN0YsMkNBQXVDO0FBOEN2Qzs7Ozs7Ozs7Ozs7O0dBWUc7SUFFVSxvQkFBb0I7NEJBRGhDLG9DQUFrQjs7OztzQkFDdUIsb0JBQVE7Ozs7b0NBQWhCLFNBQVEsV0FBUTs7OztzQ0EyQy9DLGlDQUFjO3VDQUtkLGlDQUFjO1lBSmYseUtBQVcsTUFBTSw2REFFaEI7WUFHRCw0S0FBVyxPQUFPLDZEQUVqQjtZQW5ESCw2S0FpRUM7Ozs7O1FBaEVDLHNDQUFzQztRQUMvQixNQUFNLENBQVUscUJBQXFCLEdBQVcsOENBQThDLENBQUM7UUFDOUYsUUFBUSxHQUhMLG1EQUFvQixDQUdOO1FBRXpCOztXQUVHO1FBQ0gsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFnQztZQUN4RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQzs7Ozs7O21EQVRmLG9CQUFvQjs7OztZQVU3QixtQ0FBbUM7WUFDbkMsSUFBQSx3Q0FBb0IsRUFBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFbEMseURBQXlEO1lBQ3pELE1BQU0sZ0JBQWdCLEdBQUc7Z0JBQ3ZCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQztnQkFDbEMsR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUMsS0FBSyxDQUFDO2FBQzVDLENBQUM7WUFFRixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksaUJBQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUMzQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU87Z0JBQ25CLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztnQkFDOUIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztnQkFDdkIsT0FBTyxFQUFFO29CQUNQLElBQUksRUFBRSxtQkFBTyxDQUFDLEdBQUc7b0JBQ2pCLGNBQWMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7aUJBQ25EO2dCQUNELFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyx1QkFBVyxDQUFDLElBQUk7Z0JBQ3JFLFVBQVUsRUFBRSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsVUFBVSxJQUFJLHNCQUFVLENBQUMsSUFBSTtnQkFDcEUsZUFBZSxFQUFFLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxlQUFlLElBQUksRUFBRTtnQkFDakUsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO2dCQUM1QixpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQ3ZHLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDbkgsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFO2dCQUNuQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUM5SCxxQkFBcUIsRUFBRSxLQUFLLENBQUMscUJBQXFCLEVBQUUseUJBQXlCO2dCQUM3RSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7Z0JBQ2hCLGNBQWMsRUFBRSwwQkFBYyxDQUFDLElBQUk7Z0JBQ25DLG9CQUFvQixFQUFFLEtBQUs7Z0JBQzNCLGdCQUFnQjthQUNqQixDQUFDLENBQUM7U0FDSjtRQUdELElBQVcsTUFBTTtZQUNmLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzdDO1FBR0QsSUFBVyxPQUFPO1lBQ2hCLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekQ7UUFFRDs7OztXQUlHO1FBQ0ssbUJBQW1CLENBQUMsS0FBZ0M7WUFDMUQsTUFBTSxJQUFJLEdBQThCLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyx1QkFBVyxDQUFDLEtBQUssQ0FBQztZQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztZQUNsQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzFDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7O1lBaEVVLHVEQUFvQjs7Ozs7QUFBcEIsb0RBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuSm9iIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWdsdWUnO1xuaW1wb3J0IHR5cGUgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBtZW1vaXplZEdldHRlciB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB0eXBlIHsgQ29kZSB9IGZyb20gJy4uL2NvZGUnO1xuaW1wb3J0IHsgSm9iVHlwZSwgR2x1ZVZlcnNpb24sIEpvYkxhbmd1YWdlLCBXb3JrZXJUeXBlLCBFeGVjdXRpb25DbGFzcyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7IFNwYXJrSm9iUHJvcHMgfSBmcm9tICcuL3NwYXJrLWpvYic7XG5pbXBvcnQgeyBTcGFya0pvYiB9IGZyb20gJy4vc3Bhcmstam9iJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIGBTY2FsYVNwYXJrRmxleEV0bEpvYmAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NhbGFTcGFya0ZsZXhFdGxKb2JQcm9wcyBleHRlbmRzIFNwYXJrSm9iUHJvcHMge1xuICAvKipcbiAgICogU3BlY2lmaWVzIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBvZiBhIG5vdGlmaWNhdGlvbiAob3B0aW9uYWwpLlxuICAgKiBBZnRlciBhIGpvYiBydW4gc3RhcnRzLCB0aGUgbnVtYmVyIG9mIG1pbnV0ZXMgdG8gd2FpdCBiZWZvcmUgc2VuZGluZyBhIGpvYiBydW4gZGVsYXkgbm90aWZpY2F0aW9uLlxuICAgKiBAZGVmYXVsdCAtIHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgbm90aWZ5RGVsYXlBZnRlcj86IGNkay5EdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGZ1bGx5IHF1YWxpZmllZCBTY2FsYSBjbGFzcyBuYW1lIHRoYXQgc2VydmVzIGFzIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIGpvYi5cbiAgICpcbiAgICogQHNlZSBgLS1jbGFzc2AgaW4gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsdWUvbGF0ZXN0L2RnL2F3cy1nbHVlLXByb2dyYW1taW5nLWV0bC1nbHVlLWFyZ3VtZW50cy5odG1sXG4gICAqL1xuICByZWFkb25seSBjbGFzc05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBmaWxlcywgc3VjaCBhcyBjb25maWd1cmF0aW9uIGZpbGVzIHRoYXQgQVdTIEdsdWUgY29waWVzIHRvIHRoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB5b3VyIHNjcmlwdCBiZWZvcmUgZXhlY3V0aW5nIGl0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGV4dHJhIGZpbGVzIHNwZWNpZmllZC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2x1ZS9sYXRlc3QvZGcvYXdzLWdsdWUtcHJvZ3JhbW1pbmctZXRsLWdsdWUtYXJndW1lbnRzLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IGV4dHJhRmlsZXM/OiBDb2RlW107XG5cbiAgLyoqXG4gICAqIEV4dHJhIEphcnMgUzMgVVJMIChvcHRpb25hbClcbiAgICogUzMgVVJMIHdoZXJlIGFkZGl0aW9uYWwgamFyIGRlcGVuZGVuY2llcyBhcmUgbG9jYXRlZFxuICAgKiBAZGVmYXVsdCAtIG5vIGV4dHJhIGphciBmaWxlc1xuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmFKYXJzPzogQ29kZVtdO1xuXG4gIC8qKlxuICAgKiBTZXR0aW5nIHRoaXMgdmFsdWUgdG8gdHJ1ZSBwcmlvcml0aXplcyB0aGUgY3VzdG9tZXIncyBleHRyYSBKQVIgZmlsZXMgaW4gdGhlIGNsYXNzcGF0aC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2UgLSBwcmlvcml0eSBpcyBub3QgZ2l2ZW4gdG8gdXNlci1wcm92aWRlZCBqYXJzXG4gICAqXG4gICAqIEBzZWUgYC0tdXNlci1qYXJzLWZpcnN0YCBpbiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2x1ZS9sYXRlc3QvZGcvYXdzLWdsdWUtcHJvZ3JhbW1pbmctZXRsLWdsdWUtYXJndW1lbnRzLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IGV4dHJhSmFyc0ZpcnN0PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTY2FsYSBTcGFyayBGbGV4IEVUTCBKb2JzIGNsYXNzXG4gKlxuICogRmxleCBqb2JzIHN1cHBvcnQgUHl0aG9uIGFuZCBTY2FsYSBsYW5ndWFnZXMuXG4gKiBUaGUgZmxleGlibGUgZXhlY3V0aW9uIGNsYXNzIGlzIGFwcHJvcHJpYXRlIGZvciBub24tdXJnZW50IGpvYnMgc3VjaCBhc1xuICogcHJlLXByb2R1Y3Rpb24gam9icywgdGVzdGluZywgYW5kIG9uZS10aW1lIGRhdGEgbG9hZHMuXG4gKiBGbGV4aWJsZSBqb2IgcnVucyBhcmUgc3VwcG9ydGVkIGZvciBqb2JzIHVzaW5nIEFXUyBHbHVlIHZlcnNpb24gMy4wIG9yIGxhdGVyIGFuZCBgR18xWGAgb3JcbiAqIGBHXzJYYCB3b3JrZXIgdHlwZXMgYnV0IHdpbGwgZGVmYXVsdCB0byB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgR2x1ZSAoY3VycmVudGx5IEdsdWUgNS4wKS5cbiAqXG4gKiBTaW1pbGFyIHRvIEVUTCwgd2XigJlsbCBlbmFibGUgdGhlc2UgZmVhdHVyZXM6IC0tZW5hYmxlLW1ldHJpY3MsXG4gKiAtLWVuYWJsZS1jb250aW51b3VzLWNsb3Vkd2F0Y2gtbG9nLiBUaGUgU3BhcmsgVUkgKC0tZW5hYmxlLXNwYXJrLXVpKSBpcyBvZmYgYnlcbiAqIGRlZmF1bHQ7IGVuYWJsZSBpdCBieSBzZXR0aW5nIHRoZSBgc3BhcmtVSWAgcHJvcC5cbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIFNjYWxhU3BhcmtGbGV4RXRsSm9iIGV4dGVuZHMgU3BhcmtKb2Ige1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1nbHVlLWFscGhhLlNjYWxhU3BhcmtGbGV4RXRsSm9iJztcbiAgcHJpdmF0ZSByZXNvdXJjZTogQ2ZuSm9iO1xuXG4gIC8qKlxuICAgKiBTY2FsYVNwYXJrRmxleEV0bEpvYiBjb25zdHJ1Y3RvclxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNjYWxhU3BhcmtGbGV4RXRsSm9iUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIC8vIENvbWJpbmUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBpbnRvIGEgc2luZ2xlIGxpbmUgaXRlbVxuICAgIGNvbnN0IGRlZmF1bHRBcmd1bWVudHMgPSB7XG4gICAgICAuLi50aGlzLmV4ZWN1dGFibGVBcmd1bWVudHMocHJvcHMpLFxuICAgICAgLi4udGhpcy5ub25FeGVjdXRhYmxlQ29tbW9uQXJndW1lbnRzKHByb3BzKSxcbiAgICB9O1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5Kb2IodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgbmFtZTogcHJvcHMuam9iTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIHJvbGU6IHRoaXMucm9sZS5yb2xlQXJuLFxuICAgICAgY29tbWFuZDoge1xuICAgICAgICBuYW1lOiBKb2JUeXBlLkVUTCxcbiAgICAgICAgc2NyaXB0TG9jYXRpb246IHRoaXMuY29kZVMzT2JqZWN0VXJsKHByb3BzLnNjcmlwdCksXG4gICAgICB9LFxuICAgICAgZ2x1ZVZlcnNpb246IHByb3BzLmdsdWVWZXJzaW9uID8gcHJvcHMuZ2x1ZVZlcnNpb24gOiBHbHVlVmVyc2lvbi5WNV8wLFxuICAgICAgd29ya2VyVHlwZTogcHJvcHMud29ya2VyQ29uZmlndXJhdGlvbj8ud29ya2VyVHlwZSA/PyBXb3JrZXJUeXBlLkdfMVgsXG4gICAgICBudW1iZXJPZldvcmtlcnM6IHByb3BzLndvcmtlckNvbmZpZ3VyYXRpb24/Lm51bWJlck9mV29ya2VycyA/PyAxMCxcbiAgICAgIG1heFJldHJpZXM6IHByb3BzLm1heFJldHJpZXMsXG4gICAgICBleGVjdXRpb25Qcm9wZXJ0eTogcHJvcHMubWF4Q29uY3VycmVudFJ1bnMgPyB7IG1heENvbmN1cnJlbnRSdW5zOiBwcm9wcy5tYXhDb25jdXJyZW50UnVucyB9IDogdW5kZWZpbmVkLFxuICAgICAgbm90aWZpY2F0aW9uUHJvcGVydHk6IHByb3BzLm5vdGlmeURlbGF5QWZ0ZXIgPyB7IG5vdGlmeURlbGF5QWZ0ZXI6IHByb3BzLm5vdGlmeURlbGF5QWZ0ZXIudG9NaW51dGVzKCkgfSA6IHVuZGVmaW5lZCxcbiAgICAgIHRpbWVvdXQ6IHByb3BzLnRpbWVvdXQ/LnRvTWludXRlcygpLFxuICAgICAgY29ubmVjdGlvbnM6IHByb3BzLmNvbm5lY3Rpb25zID8geyBjb25uZWN0aW9uczogcHJvcHMuY29ubmVjdGlvbnMubWFwKChjb25uZWN0aW9uKSA9PiBjb25uZWN0aW9uLmNvbm5lY3Rpb25OYW1lKSB9IDogdW5kZWZpbmVkLFxuICAgICAgc2VjdXJpdHlDb25maWd1cmF0aW9uOiBwcm9wcy5zZWN1cml0eUNvbmZpZ3VyYXRpb24/LnNlY3VyaXR5Q29uZmlndXJhdGlvbk5hbWUsXG4gICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgICAgZXhlY3V0aW9uQ2xhc3M6IEV4ZWN1dGlvbkNsYXNzLkZMRVgsXG4gICAgICBqb2JSdW5RdWV1aW5nRW5hYmxlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0QXJndW1lbnRzLFxuICAgIH0pO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgam9iQXJuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRKb2JBcm4odGhpcywgdGhpcy5qb2JOYW1lKTtcbiAgfVxuXG4gIEBtZW1vaXplZEdldHRlclxuICBwdWJsaWMgZ2V0IGpvYk5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZU5hbWVBdHRyaWJ1dGUodGhpcy5yZXNvdXJjZS5yZWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZXhlY3V0YWJsZSBhcmd1bWVudHMgd2l0aCBiZXN0IHByYWN0aWNlcyBlbmFibGVkIGJ5IGRlZmF1bHRcbiAgICpcbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgYXJndW1lbnRzIGZvciBHbHVlIHRvIHVzZSBvbiBleGVjdXRpb25cbiAgICovXG4gIHByaXZhdGUgZXhlY3V0YWJsZUFyZ3VtZW50cyhwcm9wczogU2NhbGFTcGFya0ZsZXhFdGxKb2JQcm9wcykge1xuICAgIGNvbnN0IGFyZ3M6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICBhcmdzWyctLWpvYi1sYW5ndWFnZSddID0gSm9iTGFuZ3VhZ2UuU0NBTEE7XG4gICAgYXJnc1snLS1jbGFzcyddID0gcHJvcHMuY2xhc3NOYW1lO1xuICAgIHRoaXMuc2V0dXBFeHRyYUNvZGVBcmd1bWVudHMoYXJncywgcHJvcHMpO1xuICAgIHJldHVybiBhcmdzO1xuICB9XG59XG4iXX0=
|
|
@@ -54,9 +54,10 @@ export interface ScalaSparkStreamingJobProps extends SparkJobProps {
|
|
|
54
54
|
* These jobs will default to use Python 3.9.
|
|
55
55
|
*
|
|
56
56
|
* Similar to ETL jobs, streaming job supports Scala and Python languages. Similar to ETL,
|
|
57
|
-
* it supports G1 and G2 worker type and 2.0, 3.0 and 4.0 version. We’ll default to
|
|
57
|
+
* it supports G1 and G2 worker type and 2.0, 3.0 and 4.0 version. We’ll default to G1 worker
|
|
58
58
|
* and 4.0 version for streaming jobs which developers can override.
|
|
59
|
-
* We will enable
|
|
59
|
+
* We will enable --enable-metrics, --enable-continuous-cloudwatch-log. The Spark UI
|
|
60
|
+
* (--enable-spark-ui) is off by default; enable it by setting the `sparkUI` prop.
|
|
60
61
|
*/
|
|
61
62
|
export declare class ScalaSparkStreamingJob extends SparkJob {
|
|
62
63
|
/** Uniquely identifies this class. */
|
|
@@ -51,9 +51,10 @@ const spark_job_1 = require("./spark-job");
|
|
|
51
51
|
* These jobs will default to use Python 3.9.
|
|
52
52
|
*
|
|
53
53
|
* Similar to ETL jobs, streaming job supports Scala and Python languages. Similar to ETL,
|
|
54
|
-
* it supports G1 and G2 worker type and 2.0, 3.0 and 4.0 version. We’ll default to
|
|
54
|
+
* it supports G1 and G2 worker type and 2.0, 3.0 and 4.0 version. We’ll default to G1 worker
|
|
55
55
|
* and 4.0 version for streaming jobs which developers can override.
|
|
56
|
-
* We will enable
|
|
56
|
+
* We will enable --enable-metrics, --enable-continuous-cloudwatch-log. The Spark UI
|
|
57
|
+
* (--enable-spark-ui) is off by default; enable it by setting the `sparkUI` prop.
|
|
57
58
|
*/
|
|
58
59
|
let ScalaSparkStreamingJob = (() => {
|
|
59
60
|
let _classDecorators = [prop_injectable_1.propertyInjectable];
|
|
@@ -76,7 +77,7 @@ let ScalaSparkStreamingJob = (() => {
|
|
|
76
77
|
ScalaSparkStreamingJob = _classThis = _classDescriptor.value;
|
|
77
78
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
78
79
|
}
|
|
79
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.ScalaSparkStreamingJob", version: "2.
|
|
80
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.ScalaSparkStreamingJob", version: "2.268.0-alpha.0" };
|
|
80
81
|
/** Uniquely identifies this class. */
|
|
81
82
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-glue-alpha.ScalaSparkStreamingJob';
|
|
82
83
|
resource = __runInitializers(this, _instanceExtraInitializers);
|
|
@@ -147,4 +148,4 @@ let ScalaSparkStreamingJob = (() => {
|
|
|
147
148
|
return ScalaSparkStreamingJob = _classThis;
|
|
148
149
|
})();
|
|
149
150
|
exports.ScalaSparkStreamingJob = ScalaSparkStreamingJob;
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NhbGEtc3Bhcmstc3RyZWFtaW5nLWpvYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNjYWxhLXNwYXJrLXN0cmVhbWluZy1qb2IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbURBQThDO0FBQzlDLDRFQUF1RTtBQUN2RSw4RUFBOEU7QUFDOUUsMEVBQTBFO0FBRzFFLDRDQUE2RTtBQUU3RSwyQ0FBdUM7QUFtRHZDOzs7Ozs7Ozs7OztHQVdHO0lBRVUsc0JBQXNCOzRCQURsQyxvQ0FBa0I7Ozs7c0JBQ3lCLG9CQUFROzs7O3NDQUFoQixTQUFRLFdBQVE7Ozs7c0NBeUNqRCxpQ0FBYzt1Q0FLZCxpQ0FBYztZQUpmLHlLQUFXLE1BQU0sNkRBRWhCO1lBR0QsNEtBQVcsT0FBTyw2REFFakI7WUFqREgsNktBK0RDOzs7OztRQTlEQyxzQ0FBc0M7UUFDL0IsTUFBTSxDQUFVLHFCQUFxQixHQUFXLGdEQUFnRCxDQUFDO1FBQ2hHLFFBQVEsR0FITCxtREFBc0IsQ0FHUjtRQUV6Qjs7V0FFRztRQUNILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBa0M7WUFDMUUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7Ozs7OzttREFUZixzQkFBc0I7Ozs7WUFVL0IsbUNBQW1DO1lBQ25DLElBQUEsd0NBQW9CLEVBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRWxDLHlEQUF5RDtZQUN6RCxNQUFNLGdCQUFnQixHQUFHO2dCQUN2QixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7Z0JBQ2xDLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEtBQUssQ0FBQzthQUM1QyxDQUFDO1lBRUYsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGlCQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFDM0MsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPO2dCQUNuQixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7Z0JBQzlCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87Z0JBQ3ZCLE9BQU8sRUFBRTtvQkFDUCxJQUFJLEVBQUUsbUJBQU8sQ0FBQyxTQUFTO29CQUN2QixjQUFjLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO2lCQUNuRDtnQkFDRCxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsdUJBQVcsQ0FBQyxJQUFJO2dCQUNyRSxVQUFVLEVBQUUsS0FBSyxDQUFDLG1CQUFtQixFQUFFLFVBQVUsSUFBSSxzQkFBVSxDQUFDLElBQUk7Z0JBQ3BFLGVBQWUsRUFBRSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsZUFBZSxJQUFJLEVBQUU7Z0JBQ2pFLFVBQVUsRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVU7Z0JBQzdELG9CQUFvQixFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxLQUFLO2dCQUNyRixpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQ3ZHLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRTtnQkFDbkMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDOUgscUJBQXFCLEVBQUUsS0FBSyxDQUFDLHFCQUFxQixFQUFFLHlCQUF5QjtnQkFDN0UsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2dCQUNoQixnQkFBZ0I7YUFDakIsQ0FBQyxDQUFDO1NBQ0o7UUFHRCxJQUFXLE1BQU07WUFDZixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3QztRQUdELElBQVcsT0FBTztZQUNoQixPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pEO1FBRUQ7Ozs7V0FJRztRQUNLLG1CQUFtQixDQUFDLEtBQWtDO1lBQzVELE1BQU0sSUFBSSxHQUE4QixFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsdUJBQVcsQ0FBQyxLQUFLLENBQUM7WUFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDbEMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMxQyxPQUFPLElBQUksQ0FBQztTQUNiOztZQTlEVSx1REFBc0I7Ozs7O0FBQXRCLHdEQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbkpvYiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1nbHVlJztcbmltcG9ydCB7IG1lbW9pemVkR2V0dGVyIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvaGVscGVycy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHR5cGUgeyBDb2RlIH0gZnJvbSAnLi4vY29kZSc7XG5pbXBvcnQgeyBKb2JUeXBlLCBHbHVlVmVyc2lvbiwgSm9iTGFuZ3VhZ2UsIFdvcmtlclR5cGUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBTcGFya0pvYlByb3BzIH0gZnJvbSAnLi9zcGFyay1qb2InO1xuaW1wb3J0IHsgU3BhcmtKb2IgfSBmcm9tICcuL3NwYXJrLWpvYic7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYSBTY2FsYSBTcGFyayBFVEwgam9iXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NhbGFTcGFya1N0cmVhbWluZ0pvYlByb3BzIGV4dGVuZHMgU3BhcmtKb2JQcm9wcyB7XG4gIC8qKlxuICAgKiBDbGFzcyBuYW1lIChyZXF1aXJlZCBmb3IgU2NhbGEgc2NyaXB0cylcbiAgICogUGFja2FnZSBhbmQgY2xhc3MgbmFtZSBmb3IgdGhlIGVudHJ5IHBvaW50IG9mIEdsdWUgam9iIGV4ZWN1dGlvbiBmb3JcbiAgICogSmF2YSBzY3JpcHRzXG4gICAqKi9cbiAgcmVhZG9ubHkgY2xhc3NOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZmlsZXMsIHN1Y2ggYXMgY29uZmlndXJhdGlvbiBmaWxlcyB0aGF0IEFXUyBHbHVlIGNvcGllcyB0byB0aGUgd29ya2luZyBkaXJlY3Rvcnkgb2YgeW91ciBzY3JpcHQgYmVmb3JlIGV4ZWN1dGluZyBpdC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBleHRyYSBmaWxlcyBzcGVjaWZpZWQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsdWUvbGF0ZXN0L2RnL2F3cy1nbHVlLXByb2dyYW1taW5nLWV0bC1nbHVlLWFyZ3VtZW50cy5odG1sXG4gICAqL1xuICByZWFkb25seSBleHRyYUZpbGVzPzogQ29kZVtdO1xuXG4gIC8qKlxuICAgKiBFeHRyYSBKYXJzIFMzIFVSTCAob3B0aW9uYWwpXG4gICAqIFMzIFVSTCB3aGVyZSBhZGRpdGlvbmFsIGphciBkZXBlbmRlbmNpZXMgYXJlIGxvY2F0ZWRcbiAgICogQGRlZmF1bHQgLSBubyBleHRyYSBqYXIgZmlsZXNcbiAgICovXG4gIHJlYWRvbmx5IGV4dHJhSmFycz86IENvZGVbXTtcblxuICAvKipcbiAgICogU2V0dGluZyB0aGlzIHZhbHVlIHRvIHRydWUgcHJpb3JpdGl6ZXMgdGhlIGN1c3RvbWVyJ3MgZXh0cmEgSkFSIGZpbGVzIGluIHRoZSBjbGFzc3BhdGguXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlIC0gcHJpb3JpdHkgaXMgbm90IGdpdmVuIHRvIHVzZXItcHJvdmlkZWQgamFyc1xuICAgKlxuICAgKiBAc2VlIGAtLXVzZXItamFycy1maXJzdGAgaW4gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsdWUvbGF0ZXN0L2RnL2F3cy1nbHVlLXByb2dyYW1taW5nLWV0bC1nbHVlLWFyZ3VtZW50cy5odG1sXG4gICAqL1xuICByZWFkb25seSBleHRyYUphcnNGaXJzdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIGpvYiBydW4gcXVldWluZyBpcyBlbmFibGVkIGZvciB0aGUgam9iIHJ1bnMgZm9yIHRoaXMgam9iLlxuICAgKiBBIHZhbHVlIG9mIHRydWUgbWVhbnMgam9iIHJ1biBxdWV1aW5nIGlzIGVuYWJsZWQgZm9yIHRoZSBqb2IgcnVucy5cbiAgICogSWYgZmFsc2Ugb3Igbm90IHBvcHVsYXRlZCwgdGhlIGpvYiBydW5zIHdpbGwgbm90IGJlIGNvbnNpZGVyZWQgZm9yIHF1ZXVlaW5nLlxuICAgKiBJZiB0aGlzIGZpZWxkIGRvZXMgbm90IG1hdGNoIHRoZSB2YWx1ZSBzZXQgaW4gdGhlIGpvYiBydW4sIHRoZW4gdGhlIHZhbHVlIGZyb21cbiAgICogdGhlIGpvYiBydW4gZmllbGQgd2lsbCBiZSB1c2VkLiBUaGlzIHByb3BlcnR5IG11c3QgYmUgc2V0IHRvIGZhbHNlIGZvciBmbGV4IGpvYnMuXG4gICAqIElmIHRoaXMgcHJvcGVydHkgaXMgZW5hYmxlZCwgbWF4UmV0cmllcyBtdXN0IGJlIHNldCB0byB6ZXJvLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGpvYiBydW4gcXVldWluZ1xuICAgKi9cbiAgcmVhZG9ubHkgam9iUnVuUXVldWluZ0VuYWJsZWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFNjYWxhIFN0cmVhbWluZyBKb2JzIGNsYXNzXG4gKlxuICogQSBTdHJlYW1pbmcgam9iIGlzIHNpbWlsYXIgdG8gYW4gRVRMIGpvYiwgZXhjZXB0IHRoYXQgaXQgcGVyZm9ybXMgRVRMIG9uIGRhdGEgc3RyZWFtc1xuICogdXNpbmcgdGhlIEFwYWNoZSBTcGFyayBTdHJ1Y3R1cmVkIFN0cmVhbWluZyBmcmFtZXdvcmsuXG4gKiBUaGVzZSBqb2JzIHdpbGwgZGVmYXVsdCB0byB1c2UgUHl0aG9uIDMuOS5cbiAqXG4gKiBTaW1pbGFyIHRvIEVUTCBqb2JzLCBzdHJlYW1pbmcgam9iIHN1cHBvcnRzIFNjYWxhIGFuZCBQeXRob24gbGFuZ3VhZ2VzLiBTaW1pbGFyIHRvIEVUTCxcbiAqIGl0IHN1cHBvcnRzIEcxIGFuZCBHMiB3b3JrZXIgdHlwZSBhbmQgMi4wLCAzLjAgYW5kIDQuMCB2ZXJzaW9uLiBXZeKAmWxsIGRlZmF1bHQgdG8gRzIgd29ya2VyXG4gKiBhbmQgNC4wIHZlcnNpb24gZm9yIHN0cmVhbWluZyBqb2JzIHdoaWNoIGRldmVsb3BlcnMgY2FuIG92ZXJyaWRlLlxuICogV2Ugd2lsbCBlbmFibGUg4oCUZW5hYmxlLW1ldHJpY3MsIOKAlGVuYWJsZS1zcGFyay11aSwg4oCUZW5hYmxlLWNvbnRpbnVvdXMtY2xvdWR3YXRjaC1sb2cuXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBTY2FsYVNwYXJrU3RyZWFtaW5nSm9iIGV4dGVuZHMgU3BhcmtKb2Ige1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1nbHVlLWFscGhhLlNjYWxhU3BhcmtTdHJlYW1pbmdKb2InO1xuICBwcml2YXRlIHJlc291cmNlOiBDZm5Kb2I7XG5cbiAgLyoqXG4gICAqIFNjYWxhU3BhcmtTdHJlYW1pbmdKb2IgY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTY2FsYVNwYXJrU3RyZWFtaW5nSm9iUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIC8vIENvbWJpbmUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBpbnRvIGEgc2luZ2xlIGxpbmUgaXRlbVxuICAgIGNvbnN0IGRlZmF1bHRBcmd1bWVudHMgPSB7XG4gICAgICAuLi50aGlzLmV4ZWN1dGFibGVBcmd1bWVudHMocHJvcHMpLFxuICAgICAgLi4udGhpcy5ub25FeGVjdXRhYmxlQ29tbW9uQXJndW1lbnRzKHByb3BzKSxcbiAgICB9O1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5Kb2IodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgbmFtZTogcHJvcHMuam9iTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIHJvbGU6IHRoaXMucm9sZS5yb2xlQXJuLFxuICAgICAgY29tbWFuZDoge1xuICAgICAgICBuYW1lOiBKb2JUeXBlLlNUUkVBTUlORyxcbiAgICAgICAgc2NyaXB0TG9jYXRpb246IHRoaXMuY29kZVMzT2JqZWN0VXJsKHByb3BzLnNjcmlwdCksXG4gICAgICB9LFxuICAgICAgZ2x1ZVZlcnNpb246IHByb3BzLmdsdWVWZXJzaW9uID8gcHJvcHMuZ2x1ZVZlcnNpb24gOiBHbHVlVmVyc2lvbi5WNF8wLFxuICAgICAgd29ya2VyVHlwZTogcHJvcHMud29ya2VyQ29uZmlndXJhdGlvbj8ud29ya2VyVHlwZSA/PyBXb3JrZXJUeXBlLkdfMVgsXG4gICAgICBudW1iZXJPZldvcmtlcnM6IHByb3BzLndvcmtlckNvbmZpZ3VyYXRpb24/Lm51bWJlck9mV29ya2VycyA/PyAxMCxcbiAgICAgIG1heFJldHJpZXM6IHByb3BzLmpvYlJ1blF1ZXVpbmdFbmFibGVkID8gMCA6IHByb3BzLm1heFJldHJpZXMsXG4gICAgICBqb2JSdW5RdWV1aW5nRW5hYmxlZDogcHJvcHMuam9iUnVuUXVldWluZ0VuYWJsZWQgPyBwcm9wcy5qb2JSdW5RdWV1aW5nRW5hYmxlZCA6IGZhbHNlLFxuICAgICAgZXhlY3V0aW9uUHJvcGVydHk6IHByb3BzLm1heENvbmN1cnJlbnRSdW5zID8geyBtYXhDb25jdXJyZW50UnVuczogcHJvcHMubWF4Q29uY3VycmVudFJ1bnMgfSA6IHVuZGVmaW5lZCxcbiAgICAgIHRpbWVvdXQ6IHByb3BzLnRpbWVvdXQ/LnRvTWludXRlcygpLFxuICAgICAgY29ubmVjdGlvbnM6IHByb3BzLmNvbm5lY3Rpb25zID8geyBjb25uZWN0aW9uczogcHJvcHMuY29ubmVjdGlvbnMubWFwKChjb25uZWN0aW9uKSA9PiBjb25uZWN0aW9uLmNvbm5lY3Rpb25OYW1lKSB9IDogdW5kZWZpbmVkLFxuICAgICAgc2VjdXJpdHlDb25maWd1cmF0aW9uOiBwcm9wcy5zZWN1cml0eUNvbmZpZ3VyYXRpb24/LnNlY3VyaXR5Q29uZmlndXJhdGlvbk5hbWUsXG4gICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgICAgZGVmYXVsdEFyZ3VtZW50cyxcbiAgICB9KTtcbiAgfVxuXG4gIEBtZW1vaXplZEdldHRlclxuICBwdWJsaWMgZ2V0IGpvYkFybigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmJ1aWxkSm9iQXJuKHRoaXMsIHRoaXMuam9iTmFtZSk7XG4gIH1cblxuICBAbWVtb2l6ZWRHZXR0ZXJcbiAgcHVibGljIGdldCBqb2JOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVzb3VyY2VOYW1lQXR0cmlidXRlKHRoaXMucmVzb3VyY2UucmVmKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGV4ZWN1dGFibGUgYXJndW1lbnRzIHdpdGggYmVzdCBwcmFjdGljZXMgZW5hYmxlZCBieSBkZWZhdWx0XG4gICAqXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFyZ3VtZW50cyBmb3IgR2x1ZSB0byB1c2Ugb24gZXhlY3V0aW9uXG4gICAqL1xuICBwcml2YXRlIGV4ZWN1dGFibGVBcmd1bWVudHMocHJvcHM6IFNjYWxhU3BhcmtTdHJlYW1pbmdKb2JQcm9wcykge1xuICAgIGNvbnN0IGFyZ3M6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICBhcmdzWyctLWpvYi1sYW5ndWFnZSddID0gSm9iTGFuZ3VhZ2UuU0NBTEE7XG4gICAgYXJnc1snLS1jbGFzcyddID0gcHJvcHMuY2xhc3NOYW1lO1xuICAgIHRoaXMuc2V0dXBFeHRyYUNvZGVBcmd1bWVudHMoYXJncywgcHJvcHMpO1xuICAgIHJldHVybiBhcmdzO1xuICB9XG59XG4iXX0=
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NhbGEtc3Bhcmstc3RyZWFtaW5nLWpvYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNjYWxhLXNwYXJrLXN0cmVhbWluZy1qb2IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbURBQThDO0FBQzlDLDRFQUF1RTtBQUN2RSw4RUFBOEU7QUFDOUUsMEVBQTBFO0FBRzFFLDRDQUE2RTtBQUU3RSwyQ0FBdUM7QUFtRHZDOzs7Ozs7Ozs7Ozs7R0FZRztJQUVVLHNCQUFzQjs0QkFEbEMsb0NBQWtCOzs7O3NCQUN5QixvQkFBUTs7OztzQ0FBaEIsU0FBUSxXQUFROzs7O3NDQXlDakQsaUNBQWM7dUNBS2QsaUNBQWM7WUFKZix5S0FBVyxNQUFNLDZEQUVoQjtZQUdELDRLQUFXLE9BQU8sNkRBRWpCO1lBakRILDZLQStEQzs7Ozs7UUE5REMsc0NBQXNDO1FBQy9CLE1BQU0sQ0FBVSxxQkFBcUIsR0FBVyxnREFBZ0QsQ0FBQztRQUNoRyxRQUFRLEdBSEwsbURBQXNCLENBR1I7UUFFekI7O1dBRUc7UUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWtDO1lBQzFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDOzs7Ozs7bURBVGYsc0JBQXNCOzs7O1lBVS9CLG1DQUFtQztZQUNuQyxJQUFBLHdDQUFvQixFQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUVsQyx5REFBeUQ7WUFDekQsTUFBTSxnQkFBZ0IsR0FBRztnQkFDdkIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDO2dCQUNsQyxHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUM7YUFDNUMsQ0FBQztZQUVGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxpQkFBTSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQzNDLElBQUksRUFBRSxLQUFLLENBQUMsT0FBTztnQkFDbkIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO2dCQUM5QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO2dCQUN2QixPQUFPLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLG1CQUFPLENBQUMsU0FBUztvQkFDdkIsY0FBYyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztpQkFDbkQ7Z0JBQ0QsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLHVCQUFXLENBQUMsSUFBSTtnQkFDckUsVUFBVSxFQUFFLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxVQUFVLElBQUksc0JBQVUsQ0FBQyxJQUFJO2dCQUNwRSxlQUFlLEVBQUUsS0FBSyxDQUFDLG1CQUFtQixFQUFFLGVBQWUsSUFBSSxFQUFFO2dCQUNqRSxVQUFVLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVO2dCQUM3RCxvQkFBb0IsRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsS0FBSztnQkFDckYsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUN2RyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUU7Z0JBQ25DLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQzlILHFCQUFxQixFQUFFLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSx5QkFBeUI7Z0JBQzdFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtnQkFDaEIsZ0JBQWdCO2FBQ2pCLENBQUMsQ0FBQztTQUNKO1FBR0QsSUFBVyxNQUFNO1lBQ2YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDN0M7UUFHRCxJQUFXLE9BQU87WUFDaEIsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6RDtRQUVEOzs7O1dBSUc7UUFDSyxtQkFBbUIsQ0FBQyxLQUFrQztZQUM1RCxNQUFNLElBQUksR0FBOEIsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLHVCQUFXLENBQUMsS0FBSyxDQUFDO1lBQzNDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1lBQ2xDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDMUMsT0FBTyxJQUFJLENBQUM7U0FDYjs7WUE5RFUsdURBQXNCOzs7OztBQUF0Qix3REFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5Kb2IgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZ2x1ZSc7XG5pbXBvcnQgeyBtZW1vaXplZEdldHRlciB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB0eXBlIHsgQ29kZSB9IGZyb20gJy4uL2NvZGUnO1xuaW1wb3J0IHsgSm9iVHlwZSwgR2x1ZVZlcnNpb24sIEpvYkxhbmd1YWdlLCBXb3JrZXJUeXBlIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB0eXBlIHsgU3BhcmtKb2JQcm9wcyB9IGZyb20gJy4vc3Bhcmstam9iJztcbmltcG9ydCB7IFNwYXJrSm9iIH0gZnJvbSAnLi9zcGFyay1qb2InO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgU2NhbGEgU3BhcmsgRVRMIGpvYlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjYWxhU3BhcmtTdHJlYW1pbmdKb2JQcm9wcyBleHRlbmRzIFNwYXJrSm9iUHJvcHMge1xuICAvKipcbiAgICogQ2xhc3MgbmFtZSAocmVxdWlyZWQgZm9yIFNjYWxhIHNjcmlwdHMpXG4gICAqIFBhY2thZ2UgYW5kIGNsYXNzIG5hbWUgZm9yIHRoZSBlbnRyeSBwb2ludCBvZiBHbHVlIGpvYiBleGVjdXRpb24gZm9yXG4gICAqIEphdmEgc2NyaXB0c1xuICAgKiovXG4gIHJlYWRvbmx5IGNsYXNzTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGZpbGVzLCBzdWNoIGFzIGNvbmZpZ3VyYXRpb24gZmlsZXMgdGhhdCBBV1MgR2x1ZSBjb3BpZXMgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9mIHlvdXIgc2NyaXB0IGJlZm9yZSBleGVjdXRpbmcgaXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZXh0cmEgZmlsZXMgc3BlY2lmaWVkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nbHVlL2xhdGVzdC9kZy9hd3MtZ2x1ZS1wcm9ncmFtbWluZy1ldGwtZ2x1ZS1hcmd1bWVudHMuaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmFGaWxlcz86IENvZGVbXTtcblxuICAvKipcbiAgICogRXh0cmEgSmFycyBTMyBVUkwgKG9wdGlvbmFsKVxuICAgKiBTMyBVUkwgd2hlcmUgYWRkaXRpb25hbCBqYXIgZGVwZW5kZW5jaWVzIGFyZSBsb2NhdGVkXG4gICAqIEBkZWZhdWx0IC0gbm8gZXh0cmEgamFyIGZpbGVzXG4gICAqL1xuICByZWFkb25seSBleHRyYUphcnM/OiBDb2RlW107XG5cbiAgLyoqXG4gICAqIFNldHRpbmcgdGhpcyB2YWx1ZSB0byB0cnVlIHByaW9yaXRpemVzIHRoZSBjdXN0b21lcidzIGV4dHJhIEpBUiBmaWxlcyBpbiB0aGUgY2xhc3NwYXRoLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZSAtIHByaW9yaXR5IGlzIG5vdCBnaXZlbiB0byB1c2VyLXByb3ZpZGVkIGphcnNcbiAgICpcbiAgICogQHNlZSBgLS11c2VyLWphcnMtZmlyc3RgIGluIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nbHVlL2xhdGVzdC9kZy9hd3MtZ2x1ZS1wcm9ncmFtbWluZy1ldGwtZ2x1ZS1hcmd1bWVudHMuaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmFKYXJzRmlyc3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciBqb2IgcnVuIHF1ZXVpbmcgaXMgZW5hYmxlZCBmb3IgdGhlIGpvYiBydW5zIGZvciB0aGlzIGpvYi5cbiAgICogQSB2YWx1ZSBvZiB0cnVlIG1lYW5zIGpvYiBydW4gcXVldWluZyBpcyBlbmFibGVkIGZvciB0aGUgam9iIHJ1bnMuXG4gICAqIElmIGZhbHNlIG9yIG5vdCBwb3B1bGF0ZWQsIHRoZSBqb2IgcnVucyB3aWxsIG5vdCBiZSBjb25zaWRlcmVkIGZvciBxdWV1ZWluZy5cbiAgICogSWYgdGhpcyBmaWVsZCBkb2VzIG5vdCBtYXRjaCB0aGUgdmFsdWUgc2V0IGluIHRoZSBqb2IgcnVuLCB0aGVuIHRoZSB2YWx1ZSBmcm9tXG4gICAqIHRoZSBqb2IgcnVuIGZpZWxkIHdpbGwgYmUgdXNlZC4gVGhpcyBwcm9wZXJ0eSBtdXN0IGJlIHNldCB0byBmYWxzZSBmb3IgZmxleCBqb2JzLlxuICAgKiBJZiB0aGlzIHByb3BlcnR5IGlzIGVuYWJsZWQsIG1heFJldHJpZXMgbXVzdCBiZSBzZXQgdG8gemVyby5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBqb2IgcnVuIHF1ZXVpbmdcbiAgICovXG4gIHJlYWRvbmx5IGpvYlJ1blF1ZXVpbmdFbmFibGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTY2FsYSBTdHJlYW1pbmcgSm9icyBjbGFzc1xuICpcbiAqIEEgU3RyZWFtaW5nIGpvYiBpcyBzaW1pbGFyIHRvIGFuIEVUTCBqb2IsIGV4Y2VwdCB0aGF0IGl0IHBlcmZvcm1zIEVUTCBvbiBkYXRhIHN0cmVhbXNcbiAqIHVzaW5nIHRoZSBBcGFjaGUgU3BhcmsgU3RydWN0dXJlZCBTdHJlYW1pbmcgZnJhbWV3b3JrLlxuICogVGhlc2Ugam9icyB3aWxsIGRlZmF1bHQgdG8gdXNlIFB5dGhvbiAzLjkuXG4gKlxuICogU2ltaWxhciB0byBFVEwgam9icywgc3RyZWFtaW5nIGpvYiBzdXBwb3J0cyBTY2FsYSBhbmQgUHl0aG9uIGxhbmd1YWdlcy4gU2ltaWxhciB0byBFVEwsXG4gKiBpdCBzdXBwb3J0cyBHMSBhbmQgRzIgd29ya2VyIHR5cGUgYW5kIDIuMCwgMy4wIGFuZCA0LjAgdmVyc2lvbi4gV2XigJlsbCBkZWZhdWx0IHRvIEcxIHdvcmtlclxuICogYW5kIDQuMCB2ZXJzaW9uIGZvciBzdHJlYW1pbmcgam9icyB3aGljaCBkZXZlbG9wZXJzIGNhbiBvdmVycmlkZS5cbiAqIFdlIHdpbGwgZW5hYmxlIC0tZW5hYmxlLW1ldHJpY3MsIC0tZW5hYmxlLWNvbnRpbnVvdXMtY2xvdWR3YXRjaC1sb2cuIFRoZSBTcGFyayBVSVxuICogKC0tZW5hYmxlLXNwYXJrLXVpKSBpcyBvZmYgYnkgZGVmYXVsdDsgZW5hYmxlIGl0IGJ5IHNldHRpbmcgdGhlIGBzcGFya1VJYCBwcm9wLlxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgU2NhbGFTcGFya1N0cmVhbWluZ0pvYiBleHRlbmRzIFNwYXJrSm9iIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtZ2x1ZS1hbHBoYS5TY2FsYVNwYXJrU3RyZWFtaW5nSm9iJztcbiAgcHJpdmF0ZSByZXNvdXJjZTogQ2ZuSm9iO1xuXG4gIC8qKlxuICAgKiBTY2FsYVNwYXJrU3RyZWFtaW5nSm9iIGNvbnN0cnVjdG9yXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2NhbGFTcGFya1N0cmVhbWluZ0pvYlByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICAvLyBDb21iaW5lIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgaW50byBhIHNpbmdsZSBsaW5lIGl0ZW1cbiAgICBjb25zdCBkZWZhdWx0QXJndW1lbnRzID0ge1xuICAgICAgLi4udGhpcy5leGVjdXRhYmxlQXJndW1lbnRzKHByb3BzKSxcbiAgICAgIC4uLnRoaXMubm9uRXhlY3V0YWJsZUNvbW1vbkFyZ3VtZW50cyhwcm9wcyksXG4gICAgfTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgQ2ZuSm9iKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIG5hbWU6IHByb3BzLmpvYk5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICByb2xlOiB0aGlzLnJvbGUucm9sZUFybixcbiAgICAgIGNvbW1hbmQ6IHtcbiAgICAgICAgbmFtZTogSm9iVHlwZS5TVFJFQU1JTkcsXG4gICAgICAgIHNjcmlwdExvY2F0aW9uOiB0aGlzLmNvZGVTM09iamVjdFVybChwcm9wcy5zY3JpcHQpLFxuICAgICAgfSxcbiAgICAgIGdsdWVWZXJzaW9uOiBwcm9wcy5nbHVlVmVyc2lvbiA/IHByb3BzLmdsdWVWZXJzaW9uIDogR2x1ZVZlcnNpb24uVjRfMCxcbiAgICAgIHdvcmtlclR5cGU6IHByb3BzLndvcmtlckNvbmZpZ3VyYXRpb24/LndvcmtlclR5cGUgPz8gV29ya2VyVHlwZS5HXzFYLFxuICAgICAgbnVtYmVyT2ZXb3JrZXJzOiBwcm9wcy53b3JrZXJDb25maWd1cmF0aW9uPy5udW1iZXJPZldvcmtlcnMgPz8gMTAsXG4gICAgICBtYXhSZXRyaWVzOiBwcm9wcy5qb2JSdW5RdWV1aW5nRW5hYmxlZCA/IDAgOiBwcm9wcy5tYXhSZXRyaWVzLFxuICAgICAgam9iUnVuUXVldWluZ0VuYWJsZWQ6IHByb3BzLmpvYlJ1blF1ZXVpbmdFbmFibGVkID8gcHJvcHMuam9iUnVuUXVldWluZ0VuYWJsZWQgOiBmYWxzZSxcbiAgICAgIGV4ZWN1dGlvblByb3BlcnR5OiBwcm9wcy5tYXhDb25jdXJyZW50UnVucyA/IHsgbWF4Q29uY3VycmVudFJ1bnM6IHByb3BzLm1heENvbmN1cnJlbnRSdW5zIH0gOiB1bmRlZmluZWQsXG4gICAgICB0aW1lb3V0OiBwcm9wcy50aW1lb3V0Py50b01pbnV0ZXMoKSxcbiAgICAgIGNvbm5lY3Rpb25zOiBwcm9wcy5jb25uZWN0aW9ucyA/IHsgY29ubmVjdGlvbnM6IHByb3BzLmNvbm5lY3Rpb25zLm1hcCgoY29ubmVjdGlvbikgPT4gY29ubmVjdGlvbi5jb25uZWN0aW9uTmFtZSkgfSA6IHVuZGVmaW5lZCxcbiAgICAgIHNlY3VyaXR5Q29uZmlndXJhdGlvbjogcHJvcHMuc2VjdXJpdHlDb25maWd1cmF0aW9uPy5zZWN1cml0eUNvbmZpZ3VyYXRpb25OYW1lLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICAgIGRlZmF1bHRBcmd1bWVudHMsXG4gICAgfSk7XG4gIH1cblxuICBAbWVtb2l6ZWRHZXR0ZXJcbiAgcHVibGljIGdldCBqb2JBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5idWlsZEpvYkFybih0aGlzLCB0aGlzLmpvYk5hbWUpO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgam9iTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZSh0aGlzLnJlc291cmNlLnJlZik7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBleGVjdXRhYmxlIGFyZ3VtZW50cyB3aXRoIGJlc3QgcHJhY3RpY2VzIGVuYWJsZWQgYnkgZGVmYXVsdFxuICAgKlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBhcmd1bWVudHMgZm9yIEdsdWUgdG8gdXNlIG9uIGV4ZWN1dGlvblxuICAgKi9cbiAgcHJpdmF0ZSBleGVjdXRhYmxlQXJndW1lbnRzKHByb3BzOiBTY2FsYVNwYXJrU3RyZWFtaW5nSm9iUHJvcHMpIHtcbiAgICBjb25zdCBhcmdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gICAgYXJnc1snLS1qb2ItbGFuZ3VhZ2UnXSA9IEpvYkxhbmd1YWdlLlNDQUxBO1xuICAgIGFyZ3NbJy0tY2xhc3MnXSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICB0aGlzLnNldHVwRXh0cmFDb2RlQXJndW1lbnRzKGFyZ3MsIHByb3BzKTtcbiAgICByZXR1cm4gYXJncztcbiAgfVxufVxuIl19
|
package/lib/jobs/spark-job.js
CHANGED
|
@@ -46,7 +46,7 @@ const job_1 = require("./job");
|
|
|
46
46
|
* Base class for different types of Spark Jobs.
|
|
47
47
|
*/
|
|
48
48
|
class SparkJob extends job_1.Job {
|
|
49
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.SparkJob", version: "2.
|
|
49
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.SparkJob", version: "2.268.0-alpha.0" };
|
|
50
50
|
role;
|
|
51
51
|
grantPrincipal;
|
|
52
52
|
/**
|
|
@@ -122,21 +122,21 @@ export interface DatePartitionProjectionConfigurationProps {
|
|
|
122
122
|
/**
|
|
123
123
|
* Interval between partition values.
|
|
124
124
|
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
125
|
+
* Required (together with `intervalUnit`) when `format` carries sub-day
|
|
126
|
+
* precision — i.e. a field finer than a day, such as hours or AM/PM. At day
|
|
127
|
+
* or coarser precision Athena defaults the step, so it is optional.
|
|
128
128
|
*
|
|
129
|
-
* @default -
|
|
129
|
+
* @default - Athena's default step for the format's precision; required when `format` is sub-day precision
|
|
130
130
|
*/
|
|
131
131
|
readonly interval?: number;
|
|
132
132
|
/**
|
|
133
133
|
* Unit for the interval.
|
|
134
134
|
*
|
|
135
|
-
*
|
|
136
|
-
*
|
|
137
|
-
*
|
|
135
|
+
* Required (together with `interval`) when `format` carries sub-day
|
|
136
|
+
* precision — i.e. a field finer than a day, such as hours or AM/PM. At day
|
|
137
|
+
* or coarser precision Athena defaults the step, so it is optional.
|
|
138
138
|
*
|
|
139
|
-
* @default -
|
|
139
|
+
* @default - Athena's default unit for the format's precision; required when `format` is sub-day precision
|
|
140
140
|
*/
|
|
141
141
|
readonly intervalUnit?: DateIntervalUnit;
|
|
142
142
|
}
|
|
@@ -68,11 +68,50 @@ var DateIntervalUnit;
|
|
|
68
68
|
*/
|
|
69
69
|
DateIntervalUnit["SECONDS"] = "SECONDS";
|
|
70
70
|
})(DateIntervalUnit || (exports.DateIntervalUnit = DateIntervalUnit = {}));
|
|
71
|
+
/**
|
|
72
|
+
* Whether a DATE projection `format` carries sub-day precision, in which case
|
|
73
|
+
* Athena requires both `interval` and `intervalUnit`.
|
|
74
|
+
*
|
|
75
|
+
* Athena only requires the two when the format contains a field finer than a
|
|
76
|
+
* day (hour/minute/second/fraction, or AM/PM). At day, month, or coarser
|
|
77
|
+
* precision it defaults the step and accepts the format without them — so, e.g.
|
|
78
|
+
* a plain `yyyy` needs no interval.
|
|
79
|
+
*
|
|
80
|
+
* @see https://docs.aws.amazon.com/athena/latest/ug/partition-projection-supported-types.html#partition-projection-date-type
|
|
81
|
+
*/
|
|
82
|
+
function dateFormatRequiresInterval(format) {
|
|
83
|
+
// Collect the unquoted Java DateTimeFormatter pattern letters, honoring the
|
|
84
|
+
// same single-quote literal escaping as the format validation above.
|
|
85
|
+
const letters = new Set();
|
|
86
|
+
let inQuote = false;
|
|
87
|
+
for (let i = 0; i < format.length; i++) {
|
|
88
|
+
const ch = format[i];
|
|
89
|
+
if (ch === "'") {
|
|
90
|
+
if (i + 1 < format.length && format[i + 1] === "'") {
|
|
91
|
+
i++;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
inQuote = !inQuote;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
else if (!inQuote && /[a-zA-Z]/.test(ch)) {
|
|
98
|
+
letters.add(ch);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// Sub-day fields — anything finer than a day. `a` (AM/PM-of-day) splits the
|
|
102
|
+
// day in two, so it counts alongside hour/minute/second/fraction/nano:
|
|
103
|
+
// a am/pm h clock-hour(1-12) K hour-of-am-pm(0-11) k clock-hour(1-24)
|
|
104
|
+
// H hour-of-day(0-23) m minute s second S fraction A milli-of-day
|
|
105
|
+
// n nano-of-second N nano-of-day
|
|
106
|
+
// Every coarser field (day, month, year, week, quarter, day-of-week) is
|
|
107
|
+
// accepted by Athena without an interval, so only the sub-day set requires it.
|
|
108
|
+
return [...'ahKkHmsSAnN'].some(c => letters.has(c));
|
|
109
|
+
}
|
|
71
110
|
/**
|
|
72
111
|
* Factory class for creating partition projection configurations.
|
|
73
112
|
*/
|
|
74
113
|
class PartitionProjectionConfiguration {
|
|
75
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.PartitionProjectionConfiguration", version: "2.
|
|
114
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.PartitionProjectionConfiguration", version: "2.268.0-alpha.0" };
|
|
76
115
|
/**
|
|
77
116
|
* Create an INTEGER partition projection configuration.
|
|
78
117
|
*/
|
|
@@ -176,6 +215,14 @@ class PartitionProjectionConfiguration {
|
|
|
176
215
|
(!Number.isInteger(props.interval) || props.interval <= 0)) {
|
|
177
216
|
throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `DateIntervalInvalid`, `DATE partition projection interval must be a positive integer, but got ${props.interval}`);
|
|
178
217
|
}
|
|
218
|
+
// For sub-day precision (a field finer than a day), Athena requires both
|
|
219
|
+
// `interval` and `intervalUnit`; at day or coarser precision it defaults
|
|
220
|
+
// them. Only enforce when the format is a resolved literal we can inspect.
|
|
221
|
+
if (!aws_cdk_lib_1.Token.isUnresolved(props.format) && dateFormatRequiresInterval(props.format)) {
|
|
222
|
+
if (props.interval === undefined || props.intervalUnit === undefined) {
|
|
223
|
+
throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `DateIntervalRequired`, `DATE partition projection with format '${props.format}' has sub-day precision, so both 'interval' and 'intervalUnit' are required`);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
179
226
|
return new PartitionProjectionConfiguration({
|
|
180
227
|
type: PartitionProjectionType.DATE,
|
|
181
228
|
dateRange: [props.min, props.max],
|
|
@@ -337,4 +384,4 @@ exports.PartitionProjectionConfiguration = PartitionProjectionConfiguration;
|
|
|
337
384
|
function generatePartitionProjectionParameters(columnName, config) {
|
|
338
385
|
return config._renderParameters(columnName);
|
|
339
386
|
}
|
|
340
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydGl0aW9uLXByb2plY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwYXJ0aXRpb24tcHJvamVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFtaUJBLHNGQUtDOzs7QUF4aUJELDZDQUE2RDtBQUM3RCw0RUFBNEQ7QUFFNUQ7Ozs7OztHQU1HO0FBQ0gsSUFBWSx1QkFvQlg7QUFwQkQsV0FBWSx1QkFBdUI7SUFDakM7O09BRUc7SUFDSCw4Q0FBbUIsQ0FBQTtJQUVuQjs7T0FFRztJQUNILHdDQUFhLENBQUE7SUFFYjs7T0FFRztJQUNILHdDQUFhLENBQUE7SUFFYjs7T0FFRztJQUNILGdEQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFwQlcsdUJBQXVCLHVDQUF2Qix1QkFBdUIsUUFvQmxDO0FBRUQ7Ozs7R0FJRztBQUNILElBQVksZ0JBbUNYO0FBbkNELFdBQVksZ0JBQWdCO0lBQzFCOztPQUVHO0lBQ0gsbUNBQWUsQ0FBQTtJQUVmOztPQUVHO0lBQ0gscUNBQWlCLENBQUE7SUFFakI7O09BRUc7SUFDSCxtQ0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCxpQ0FBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCxtQ0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCx1Q0FBbUIsQ0FBQTtJQUVuQjs7T0FFRztJQUNILHVDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFuQ1csZ0JBQWdCLGdDQUFoQixnQkFBZ0IsUUFtQzNCO0FBMEpEOztHQUVHO0FBQ0gsTUFBYSxnQ0FBZ0M7O0lBQzNDOztPQUVHO0lBQ0ksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFtRDs7Ozs7Ozs7OztRQUN2RSxnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLG1CQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JFLElBQUksQ0FBQyxNQUFNLENB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LENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNuRSxNQUFNO1lBQ1IsQ0FBQztZQUNELEtBQUssdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDdEMsd0NBQXdDO2dCQUN4QyxNQUFNO1lBQ1IsQ0FBQztZQUNELE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ1Isa0NBQWtDO2dCQUNsQyxNQUFNLGVBQWUsR0FBVSxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUN6QyxNQUFNLElBQUkscUNBQXVCLENBQy9CLElBQUEsc0JBQUcsRUFBQSx1QkFBdUIsRUFDMUIsMENBQTBDLFVBQVUsTUFBTSxlQUFlLEVBQUUsQ0FDNUUsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7S0FDZjs7QUExU0gsNEVBMlNDO0FBWUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IscUNBQXFDLENBQ25ELFVBQWtCLEVBQ2xCLE1BQXdDO0lBRXhDLE9BQU8sTUFBTSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUb2tlbiwgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBsaXQgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcblxuLyoqXG4gKiBQYXJ0aXRpb24gcHJvamVjdGlvbiB0eXBlLlxuICpcbiAqIERldGVybWluZXMgaG93IEF0aGVuYSBwcm9qZWN0cyBwYXJ0aXRpb24gdmFsdWVzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F0aGVuYS9sYXRlc3QvdWcvcGFydGl0aW9uLXByb2plY3Rpb24tc3VwcG9ydGVkLXR5cGVzLmh0bWxcbiAqL1xuZXhwb3J0IGVudW0gUGFydGl0aW9uUHJvamVjdGlvblR5cGUge1xuICAvKipcbiAgICogUHJvamVjdCBwYXJ0aXRpb24gdmFsdWVzIGFzIGludGVnZXJzIHdpdGhpbiBhIHJhbmdlLlxuICAgKi9cbiAgSU5URUdFUiA9ICdpbnRlZ2VyJyxcblxuICAvKipcbiAgICogUHJvamVjdCBwYXJ0aXRpb24gdmFsdWVzIGFzIGRhdGVzIHdpdGhpbiBhIHJhbmdlLlxuICAgKi9cbiAgREFURSA9ICdkYXRlJyxcblxuICAvKipcbiAgICogUHJvamVjdCBwYXJ0aXRpb24gdmFsdWVzIGZyb20gYW4gZXhwbGljaXQgbGlzdCBvZiB2YWx1ZXMuXG4gICAqL1xuICBFTlVNID0gJ2VudW0nLFxuXG4gIC8qKlxuICAgKiBQcm9qZWN0IHBhcnRpdGlvbiB2YWx1ZXMgdGhhdCBhcmUgaW5qZWN0ZWQgYXQgcXVlcnkgdGltZS5cbiAgICovXG4gIElOSkVDVEVEID0gJ2luamVjdGVkJyxcbn1cblxuLyoqXG4gKiBEYXRlIGludGVydmFsIHVuaXQgZm9yIHBhcnRpdGlvbiBwcm9qZWN0aW9uLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F0aGVuYS9sYXRlc3QvdWcvcGFydGl0aW9uLXByb2plY3Rpb24tc3VwcG9ydGVkLXR5cGVzLmh0bWwjcGFydGl0aW9uLXByb2plY3Rpb24tZGF0ZS10eXBlXG4gKi9cbmV4cG9ydCBlbnVtIERhdGVJbnRlcnZhbFVuaXQge1xuICAvKipcbiAgICogWWVhciBpbnRlcnZhbC5cbiAgICovXG4gIFlFQVJTID0gJ1lFQVJTJyxcblxuICAvKipcbiAgICogTW9udGggaW50ZXJ2YWwuXG4gICAqL1xuICBNT05USFMgPSAnTU9OVEhTJyxcblxuICAvKipcbiAgICogV2VlayBpbnRlcnZhbC5cbiAgICovXG4gIFdFRUtTID0gJ1dFRUtTJyxcblxuICAvKipcbiAgICogRGF5IGludGVydmFsIChkZWZhdWx0KS5cbiAgICovXG4gIERBWVMgPSAnREFZUycsXG5cbiAgLyoqXG4gICAqIEhvdXIgaW50ZXJ2YWwuXG4gICAqL1xuICBIT1VSUyA9ICdIT1VSUycsXG5cbiAgLyoqXG4gICAqIE1pbnV0ZSBpbnRlcnZhbC5cbiAgICovXG4gIE1JTlVURVMgPSAnTUlOVVRFUycsXG5cbiAgLyoqXG4gICAqIFNlY29uZCBpbnRlcnZhbC5cbiAgICovXG4gIFNFQ09ORFMgPSAnU0VDT05EUycsXG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgSU5URUdFUiBwYXJ0aXRpb24gcHJvamVjdGlvbiBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVnZXJQYXJ0aXRpb25Qcm9qZWN0aW9uQ29uZmlndXJhdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIE1pbmltdW0gdmFsdWUgZm9yIHRoZSBpbnRlZ2VyIHBhcnRpdGlvbiByYW5nZSAoaW5jbHVzaXZlKS5cbiAgICovXG4gIHJlYWRvbmx5IG1pbjogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIHZhbHVlIGZvciB0aGUgaW50ZWdlciBwYXJ0aXRpb24gcmFuZ2UgKGluY2x1c2l2ZSkuXG4gICAqL1xuICByZWFkb25seSBtYXg6IG51bWJlcjtcblxuICAvKipcbiAgICogSW50ZXJ2YWwgYmV0d2VlbiBwYXJ0aXRpb24gdmFsdWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICByZWFkb25seSBpbnRlcnZhbD86IG51bWJlcjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIGRpZ2l0cyB0byBwYWQgdGhlIHBhcnRpdGlvbiB2YWx1ZSB3aXRoIGxlYWRpbmcgemVyb3MuXG4gICAqXG4gICAqIFdpdGggZGlnaXRzOiA0LCBwYXJ0aXRpb24gdmFsdWVzOiAwMDAxLCAwMDAyLCAuLi4sIDAxMDBcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBzdGF0aWMgbnVtYmVyIG9mIGRpZ2l0cyBhbmQgbm8gbGVhZGluZyB6ZXJvZXNcbiAgICovXG4gIHJlYWRvbmx5IGRpZ2l0cz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBEQVRFIHBhcnRpdGlvbiBwcm9qZWN0aW9uIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVBhcnRpdGlvblByb2plY3Rpb25Db25maWd1cmF0aW9uUHJvcHMge1xuICAvKipcbiAgICogU3RhcnQgZGF0ZSBmb3IgdGhlIHBhcnRpdGlvbiByYW5nZSAoaW5jbHVzaXZlKS5cbiAgICpcbiAgICogQ2FuIGJlIGVpdGhlcjpcbiAgICogLSBGaXhlZCBkYXRlIGluIHRoZSBmb3JtYXQgc3BlY2lmaWVkIGJ5IGBmb3JtYXRgIHByb3BlcnR5XG4gICAqICAgKGUuZy4sICcyMDIwLTAxLTAxJyBmb3IgZm9ybWF0ICd5eXl5LU1NLWRkJylcbiAgICogLSBSZWxhdGl2ZSBkYXRlIHVzaW5nIE5PVyBzeW50YXhcbiAgICogICAoZS5nLiwgJ05PVycsICdOT1ctM1lFQVJTJywgJ05PVysxTU9OVEgnKVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdGhlbmEvbGF0ZXN0L3VnL3BhcnRpdGlvbi1wcm9qZWN0aW9uLXN1cHBvcnRlZC10eXBlcy5odG1sI3BhcnRpdGlvbi1wcm9qZWN0aW9uLWRhdGUtdHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgbWluOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVuZCBkYXRlIGZvciB0aGUgcGFydGl0aW9uIHJhbmdlIChpbmNsdXNpdmUpLlxuICAgKlxuICAgKiBDYW4gYmUgZWl0aGVyOlxuICAgKiAtIEZpeGVkIGRhdGUgaW4gdGhlIGZvcm1hdCBzcGVjaWZpZWQgYnkgYGZvcm1hdGAgcHJvcGVydHlcbiAgICogLSBSZWxhdGl2ZSBkYXRlIHVzaW5nIE5PVyBzeW50YXhcbiAgICpcbiAgICogU2FtZSBmb3JtYXQgY29uc3RyYWludHMgYXMgYG1pbmAuXG4gICAqL1xuICByZWFkb25seSBtYXg6IHN0cmluZztcblxuICAvKipcbiAgICogRGF0ZSBmb3JtYXQgZm9yIHBhcnRpdGlvbiB2YWx1ZXMuXG4gICAqXG4gICAqIFVzZXMgSmF2YSBTaW1wbGVEYXRlRm9ybWF0IHBhdHRlcm5zLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS84L2RvY3MvYXBpL2phdmEvdGV4dC9TaW1wbGVEYXRlRm9ybWF0Lmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IGZvcm1hdDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbnRlcnZhbCBiZXR3ZWVuIHBhcnRpdGlvbiB2YWx1ZXMuXG4gICAqXG4gICAqIFdoZW4gdGhlIHByb3ZpZGVkIGRhdGVzIGFyZSBhdCBzaW5nbGUtZGF5IG9yIHNpbmdsZS1tb250aCBwcmVjaXNpb24sXG4gICAqIHRoZSBpbnRlcnZhbCBpcyBvcHRpb25hbCBhbmQgZGVmYXVsdHMgdG8gMSBkYXkgb3IgMSBtb250aCwgcmVzcGVjdGl2ZWx5LlxuICAgKiBPdGhlcndpc2UsIGludGVydmFsIGlzIHJlcXVpcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIDEgZm9yIHNpbmdsZS1kYXkgb3Igc2luZ2xlLW1vbnRoIHByZWNpc2lvbiwgb3RoZXJ3aXNlIHJlcXVpcmVkXG4gICAqL1xuICByZWFkb25seSBpbnRlcnZhbD86IG51bWJlcjtcblxuICAvKipcbiAgICogVW5pdCBmb3IgdGhlIGludGVydmFsLlxuICAgKlxuICAgKiBXaGVuIHRoZSBwcm92aWRlZCBkYXRlcyBhcmUgYXQgc2luZ2xlLWRheSBvciBzaW5nbGUtbW9udGggcHJlY2lzaW9uLFxuICAgKiB0aGUgaW50ZXJ2YWxVbml0IGlzIG9wdGlvbmFsIGFuZCBkZWZhdWx0cyB0byAxIGRheSBvciAxIG1vbnRoLCByZXNwZWN0aXZlbHkuXG4gICAqIE90aGVyd2lzZSwgdGhlIGludGVydmFsVW5pdCBpcyByZXF1aXJlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEQVlTIGZvciBzaW5nbGUtZGF5IHByZWNpc2lvbiwgTU9OVEhTIGZvciBzaW5nbGUtbW9udGggcHJlY2lzaW9uLCBvdGhlcndpc2UgcmVxdWlyZWRcbiAgICovXG4gIHJlYWRvbmx5IGludGVydmFsVW5pdD86IERhdGVJbnRlcnZhbFVuaXQ7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgRU5VTSBwYXJ0aXRpb24gcHJvamVjdGlvbiBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVudW1QYXJ0aXRpb25Qcm9qZWN0aW9uQ29uZmlndXJhdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIEV4cGxpY2l0IGxpc3Qgb2YgcGFydGl0aW9uIHZhbHVlcy5cbiAgICpcbiAgICogQGV4YW1wbGUgWyd1cy1lYXN0LTEnLCAndXMtd2VzdC0yJywgJ2V1LXdlc3QtMSddXG4gICAqL1xuICByZWFkb25seSB2YWx1ZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEludGVybmFsIHByb3BlcnRpZXMgZm9yIFBhcnRpdGlvblByb2plY3Rpb25Db25maWd1cmF0aW9uLlxuICovXG5pbnRlcmZhY2UgUGFydGl0aW9uUHJvamVjdGlvbkNvbmZpZ3VyYXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBwYXJ0aXRpb24gcHJvamVjdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IFBhcnRpdGlvblByb2plY3Rpb25UeXBlO1xuXG4gIC8qKlxuICAgKiBSYW5nZSBvZiBwYXJ0aXRpb24gdmFsdWVzIGZvciBJTlRFR0VSIHR5cGUuXG4gICAqXG4gICAqIEFycmF5IG9mIFttaW4sIG1heF0gYXMgbnVtYmVycy5cbiAgICovXG4gIHJlYWRvbmx5IGludGVnZXJSYW5nZT86IG51bWJlcltdO1xuXG4gIC8qKlxuICAgKiBSYW5nZSBvZiBwYXJ0aXRpb24gdmFsdWVzIGZvciBEQVRFIHR5cGUuXG4gICAqXG4gICAqIEFycmF5IG9mIFtzdGFydCwgZW5kXSBhcyBkYXRlIHN0cmluZ3MuXG4gICAqL1xuICByZWFkb25seSBkYXRlUmFuZ2U/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSW50ZXJ2YWwgYmV0d2VlbiBwYXJ0aXRpb24gdmFsdWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZXJ2YWw/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBkaWdpdHMgdG8gcGFkIElOVEVHRVIgcGFydGl0aW9uIHZhbHVlcy5cbiAgICovXG4gIHJlYWRvbmx5IGRpZ2l0cz86IG51bWJlcjtcblxuICAvKipcbiAgICogRGF0ZSBmb3JtYXQgZm9yIERBVEUgcGFydGl0aW9uIHZhbHVlcyAoSmF2YSBTaW1wbGVEYXRlRm9ybWF0KS5cbiAgICovXG4gIHJlYWRvbmx5IGZvcm1hdD86IHN0cmluZztcblxuICAvKipcbiAgICogVW5pdCBmb3IgREFURSBwYXJ0aXRpb24gaW50ZXJ2YWwuXG4gICAqL1xuICByZWFkb25seSBpbnRlcnZhbFVuaXQ/OiBEYXRlSW50ZXJ2YWxVbml0O1xuXG4gIC8qKlxuICAgKiBFeHBsaWNpdCBsaXN0IG9mIHZhbHVlcyBmb3IgRU5VTSBwYXJ0aXRpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogRmFjdG9yeSBjbGFzcyBmb3IgY3JlYXRpbmcgcGFydGl0aW9uIHByb2plY3Rpb24gY29uZmlndXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBQYXJ0aXRpb25Qcm9qZWN0aW9uQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gSU5URUdFUiBwYXJ0aXRpb24gcHJvamVjdGlvbiBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpbnRlZ2VyKHByb3BzOiBJbnRlZ2VyUGFydGl0aW9uUHJvamVjdGlvbkNvbmZpZ3VyYXRpb25Qcm9wcyk6IFBhcnRpdGlvblByb2plY3Rpb25Db25maWd1cmF0aW9uIHtcbiAgICAvLyBWYWxpZGF0ZSBtaW4vbWF4IGFyZSBpbnRlZ2Vyc1xuICAgIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKHByb3BzLm1pbikgJiYgIVRva2VuLmlzVW5yZXNvbHZlZChwcm9wcy5tYXgpKSB7XG4gICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIocHJvcHMubWluKSB8fCAhTnVtYmVyLmlzSW50ZWdlcihwcm9wcy5tYXgpKSB7XG4gICAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICBsaXRgSW50ZWdlclJhbmdlTm90SW50ZWdlcnNgLFxuICAgICAgICAgIGBJTlRFR0VSIHBhcnRpdGlvbiBwcm9qZWN0aW9uIHJhbmdlIG11c3QgY29udGFpbiBpbnRlZ2VycywgYnV0IGdvdCBbJHtwcm9wcy5taW59LCAke3Byb3BzLm1heH1dYCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gVmFsaWRhdGUgbWluIDw9IG1heFxuICAgICAgaWYgKHByb3BzLm1pbiA+IHByb3BzLm1heCkge1xuICAgICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgbGl0YEludGVnZXJSYW5nZU1pbkdyZWF0ZXJUaGFuTWF4YCxcbiAgICAgICAgICBgSU5URUdFUiBwYXJ0aXRpb24gcHJvamVjdGlvbiByYW5nZSBtdXN0IGJlIFttaW4sIG1heF0gd2hlcmUgbWluIDw9IG1heCwgYnV0IGdvdCBbJHtwcm9wcy5taW59LCAke3Byb3BzLm1heH1dYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBWYWxpZGF0ZSBpbnRlcnZhbFxuICAgIGlmIChcbiAgICAgIHByb3BzLmludGVydmFsICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICFUb2tlbi5pc1VucmVzb2x2ZWQocHJvcHMuaW50ZXJ2YWwpICYmXG4gICAgICAoIU51bWJlci5pc0ludGVnZXIocHJvcHMuaW50ZXJ2YWwpIHx8IHByb3BzLmludGVydmFsIDw9IDApXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgIGxpdGBJbnRlZ2VySW50ZXJ2YWxJbnZhbGlkYCxcbiAgICAgICAgYElOVEVHRVIgcGFydGl0aW9uIHByb2plY3Rpb24gaW50ZXJ2YWwgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIsIGJ1dCBnb3QgJHtwcm9wcy5pbnRlcnZhbH1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBWYWxpZGF0ZSBkaWdpdHNcbiAgICBpZiAoXG4gICAgICBwcm9wcy5kaWdpdHMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgIVRva2VuLmlzVW5yZXNvbHZlZChwcm9wcy5kaWdpdHMpICYmXG4gICAgICAoIU51bWJlci5pc0ludGVnZXIocHJvcHMuZGlnaXRzKSB8fCBwcm9wcy5kaWdpdHMgPCAxKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBsaXRgSW50ZWdlckRpZ2l0c0ludmFsaWRgLFxuICAgICAgICBgSU5URUdFUiBwYXJ0aXRpb24gcHJvamVjdGlvbiBkaWdpdHMgbXVzdCBiZSBhbiBpbnRlZ2VyID49IDEsIGJ1dCBnb3QgJHtwcm9wcy5kaWdpdHN9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQYXJ0aXRpb25Qcm9qZWN0aW9uQ29uZmlndXJhdGlvbih7XG4gICAgICB0eXBlOiBQYXJ0aXRpb25Qcm9qZWN0aW9uVHlwZS5JTlRFR0VSLFxuICAgICAgaW50ZWdlclJhbmdlOiBbcHJvcHMubWluLCBwcm9wcy5tYXhdLFxuICAgICAgaW50ZXJ2YWw6IHByb3BzLmludGVydmFsLFxuICAgICAgZGlnaXRzOiBwcm9wcy5kaWdpdHMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgREFURSBwYXJ0aXRpb24gcHJvamVjdGlvbiBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkYXRlKHByb3BzOiBEYXRlUGFydGl0aW9uUHJvamVjdGlvbkNvbmZpZ3VyYXRpb25Qcm9wcyk6IFBhcnRpdGlvblByb2plY3Rpb25Db25maWd1cmF0aW9uIHtcbiAgICAvLyBWYWxpZGF0ZSBtaW4vbWF4IGFyZSBub3QgZW1wdHlcbiAgICBpZiAoXG4gICAgICAhVG9rZW4uaXNVbnJlc29sdmVkKHByb3BzLm1pbikgJiZcbiAgICAgICFUb2tlbi5pc1VucmVzb2x2ZWQocHJvcHMubWF4KSAmJlxuICAgICAgKHByb3BzLm1pbi50cmltKCkgPT09ICcnIHx8IHByb3BzLm1heC50cmltKCkgPT09ICcnKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBsaXRgRGF0ZVJhbmdlRW1wdHlgLFxuICAgICAgICAnREFURSBwYXJ0aXRpb24gcHJvamVjdGlvbiByYW5nZSBtdXN0IG5vdCBjb250YWluIGVtcHR5IHN0cmluZ3MnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBWYWxpZGF0ZSBmb3JtYXRcbiAgICBpZiAoIVRva2VuLmlzVW5yZXNvbHZlZChwcm9wcy5mb3JtYXQpKSB7XG4gICAgICAvLyBWYWxpZGF0ZSBmb3JtYXQgaXMgbm90IGVtcHR5XG4gICAgICBpZiAocHJvcHMuZm9ybWF0LnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgIGxpdGBEYXRlRm9ybWF0RW1wdHlgLFxuICAgICAgICAgICdEQVRFIHBhcnRpdGlvbiBwcm9qZWN0aW9uIGZvcm1hdCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIFZhbGlkYXRlIGZvcm1hdCBwYXR0ZXJuIGNoYXJhY3RlcnMgKEphdmEgOCBEYXRlVGltZUZvcm1hdHRlcilcbiAgICAgIGNvbnN0IHZhbGlkUGF0dGVybkxldHRlcnMgPSAnR3l1WURNTGRRcXdXRWVjRmFoS2tIbXNTQW5OVnpPWHhacCc7XG4gICAgICBjb25zdCBmb3JtYXQgPSBwcm9wcy5mb3JtYXQ7XG4gICAgICBsZXQgaW5RdW90ZSA9IGZhbHNlO1xuICAgICAgY29uc3QgaW52YWxpZENoYXJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvcm1hdC5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBjaCA9IGZvcm1hdFtpXTtcbiAgICAgICAgaWYgKGNoID09PSBcIidcIikge1xuICAgICAgICAgIGlmIChpICsgMSA8IGZvcm1hdC5sZW5ndGggJiYgZm9ybWF0W2kgKyAxXSA9PT0gXCInXCIpIHtcbiAgICAgICAgICAgIC8vICcnIGlzIGFuIGVzY2FwZWQgc2luZ2xlIHF1b3RlIGxpdGVyYWwsIHNraXAgYm90aFxuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpblF1b3RlID0gIWluUXVvdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFpblF1b3RlICYmIC9bYS16QS1aXS8udGVzdChjaCkpIHtcbiAgICAgICAgICBpZiAoIXZhbGlkUGF0dGVybkxldHRlcnMuaW5jbHVkZXMoY2gpKSB7XG4gICAgICAgICAgICBpbnZhbGlkQ2hhcnMucHVzaChjaCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChpblF1b3RlKSB7XG4gICAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICBsaXRgRGF0ZUZvcm1hdFVuY2xvc2VkUXVvdGVgLFxuICAgICAgICAgIGBEQVRFIHBhcnRpdGlvbiBwcm9qZWN0aW9uIGZvcm1hdCBoYXMgYW4gdW5jbG9zZWQgc2luZ2xlIHF1b3RlOiAnJHtmb3JtYXR9J2AsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpbnZhbGlkQ2hhcnMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCB1bmlxdWUgPSBbLi4ubmV3IFNldChpbnZhbGlkQ2hhcnMpXTtcbiAgICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgIGxpdGBEYXRlRm9ybWF0SW52YWxpZENoYXJhY3RlcnNgLFxuICAgICAgICAgIGBEQVRFIHBhcnRpdGlvbiBwcm9qZWN0aW9uIGZvcm1hdCBjb250YWlucyBpbnZhbGlkIHBhdHRlcm4gY2hhcmFjdGVyczogJHt1bmlxdWUuam9pbignLCAnKX0uIE11c3QgdXNlIEphdmEgRGF0ZVRpbWVGb3JtYXR0ZXIgdmFsaWQgcGF0dGVybiBsZXR0ZXJzLmAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgaW50ZXJ2YWxcbiAgICBpZiAoXG4gICAgICBwcm9wcy5pbnRlcnZhbCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAhVG9rZW4uaXNVbnJlc29sdmVkKHByb3BzLmludGVydmFsKSAmJlxuICAgICAgKCFOdW1iZXIuaXNJbnRlZ2VyKHByb3BzLmludGVydmFsKSB8fCBwcm9wcy5pbnRlcnZhbCA8PSAwKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBsaXRgRGF0ZUludGVydmFsSW52YWxpZGAsXG4gICAgICAgIGBEQVRFIHBhcnRpdGlvbiBwcm9qZWN0aW9uIGludGVydmFsIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLCBidXQgZ290ICR7cHJvcHMuaW50ZXJ2YWx9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQYXJ0aXRpb25Qcm9qZWN0aW9uQ29uZmlndXJhdGlvbih7XG4gICAgICB0eXBlOiBQYXJ0aXRpb25Qcm9qZWN0aW9uVHlwZS5EQVRFLFxuICAgICAgZGF0ZVJhbmdlOiBbcHJvcHMubWluLCBwcm9wcy5tYXhdLFxuICAgICAgaW50ZXJ2YWw6IHByb3BzLmludGVydmFsLFxuICAgICAgZm9ybWF0OiBwcm9wcy5mb3JtYXQsXG4gICAgICBpbnRlcnZhbFVuaXQ6IHByb3BzLmludGVydmFsVW5pdCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gRU5VTSBwYXJ0aXRpb24gcHJvamVjdGlvbiBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBlbnVtKHByb3BzOiBFbnVtUGFydGl0aW9uUHJvamVjdGlvbkNvbmZpZ3VyYXRpb25Qcm9wcyk6IFBhcnRpdGlvblByb2plY3Rpb25Db25maWd1cmF0aW9uIHtcbiAgICAvLyBWYWxpZGF0ZSB2YWx1ZXMgaXMgbm90IGVtcHR5XG4gICAgaWYgKHByb3BzLnZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgbGl0YEVudW1WYWx1ZXNFbXB0eWAsXG4gICAgICAgICdFTlVNIHBhcnRpdGlvbiBwcm9qZWN0aW9uIHZhbHVlcyBtdXN0IGJlIGEgbm9uLWVtcHR5IGFycmF5JyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wcy52YWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gcHJvcHMudmFsdWVzW2ldO1xuICAgICAgaWYgKCFUb2tlbi5pc1VucmVzb2x2ZWQodmFsdWUpKSB7XG4gICAgICAgIGlmICh2YWx1ZS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgICAgbGl0YEVudW1WYWx1ZUVtcHR5YCxcbiAgICAgICAgICAgICdFTlVNIHBhcnRpdGlvbiBwcm9qZWN0aW9uIHZhbHVlcyBtdXN0IG5vdCBjb250YWluIGVtcHR5IHN0cmluZ3MnLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlLmluY2x1ZGVzKCcsJykpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgICBsaXRgRW51bVZhbHVlQ29udGFpbnNDb21tYWAsXG4gICAgICAgICAgICBgRU5VTSBwYXJ0aXRpb24gcHJvamVjdGlvbiB2YWx1ZXMgbXVzdCBub3QgY29udGFpbiBjb21tYXMgYmVjYXVzZSB0aGUgdmFsdWVzIGFyZSBzZXJpYWxpemVkIGFzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsIGdvdDogJyR7dmFsdWV9J2AsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgUGFydGl0aW9uUHJvamVjdGlvbkNvbmZpZ3VyYXRpb24oe1xuICAgICAgdHlwZTogUGFydGl0aW9uUHJvamVjdGlvblR5cGUuRU5VTSxcbiAgICAgIHZhbHVlczogcHJvcHMudmFsdWVzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBJTkpFQ1RFRCBwYXJ0aXRpb24gcHJvamVjdGlvbiBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBQYXJ0aXRpb24gdmFsdWVzIGFyZSBpbmplY3RlZCBhdCBxdWVyeSB0aW1lIHRocm91Z2ggdGhlIHF1ZXJ5IHN0YXRlbWVudC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXRoZW5hL2xhdGVzdC91Zy9wYXJ0aXRpb24tcHJvamVjdGlvbi1zdXBwb3J0ZWQtdHlwZXMuaHRtbCNwYXJ0aXRpb24tcHJvamVjdGlvbi1pbmplY3RlZC10eXBlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGluamVjdGVkKCk6IFBhcnRpdGlvblByb2plY3Rpb25Db25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gbmV3IFBhcnRpdGlvblByb2plY3Rpb25Db25maWd1cmF0aW9uKHtcbiAgICAgIHR5cGU6IFBhcnRpdGlvblByb2plY3Rpb25UeXBlLklOSkVDVEVELFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHBhcnRpdGlvbiBwcm9qZWN0aW9uLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHR5cGU6IFBhcnRpdGlvblByb2plY3Rpb25UeXBlO1xuXG4gIC8qKlxuICAgKiBSYW5nZSBvZiBwYXJ0aXRpb24gdmFsdWVzIGZvciBJTlRFR0VSIHR5cGUuXG4gICAqXG4gICAqIEFycmF5IG9mIFttaW4sIG1heF0gYXMgbnVtYmVycy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpbnRlZ2VyUmFuZ2U/OiBudW1iZXJbXTtcblxuICAvKipcbiAgICogUmFuZ2Ugb2YgcGFydGl0aW9uIHZhbHVlcyBmb3IgREFURSB0eXBlLlxuICAgKlxuICAgKiBBcnJheSBvZiBbc3RhcnQsIGVuZF0gYXMgZGF0ZSBzdHJpbmdzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRhdGVSYW5nZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBJbnRlcnZhbCBiZXR3ZWVuIHBhcnRpdGlvbiB2YWx1ZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW50ZXJ2YWw/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBkaWdpdHMgdG8gcGFkIElOVEVHRVIgcGFydGl0aW9uIHZhbHVlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkaWdpdHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERhdGUgZm9ybWF0IGZvciBEQVRFIHBhcnRpdGlvbiB2YWx1ZXMgKEphdmEgU2ltcGxlRGF0ZUZvcm1hdCkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZm9ybWF0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVbml0IGZvciBEQVRFIHBhcnRpdGlvbiBpbnRlcnZhbC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpbnRlcnZhbFVuaXQ/OiBEYXRlSW50ZXJ2YWxVbml0O1xuXG4gIC8qKlxuICAgKiBFeHBsaWNpdCBsaXN0IG9mIHZhbHVlcyBmb3IgRU5VTSBwYXJ0aXRpb25zLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlcz86IHN0cmluZ1tdO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHJvcHM6IFBhcnRpdGlvblByb2plY3Rpb25Db25maWd1cmF0aW9uUHJvcHMpIHtcbiAgICB0aGlzLnR5cGUgPSBwcm9wcy50eXBlO1xuICAgIHRoaXMuaW50ZWdlclJhbmdlID0gcHJvcHMuaW50ZWdlclJhbmdlO1xuICAgIHRoaXMuZGF0ZVJhbmdlID0gcHJvcHMuZGF0ZVJhbmdlO1xuICAgIHRoaXMuaW50ZXJ2YWwgPSBwcm9wcy5pbnRlcnZhbDtcbiAgICB0aGlzLmRpZ2l0cyA9IHByb3BzLmRpZ2l0cztcbiAgICB0aGlzLmZvcm1hdCA9IHByb3BzLmZvcm1hdDtcbiAgICB0aGlzLmludGVydmFsVW5pdCA9IHByb3BzLmludGVydmFsVW5pdDtcbiAgICB0aGlzLnZhbHVlcyA9IHByb3BzLnZhbHVlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIENsb3VkRm9ybWF0aW9uIHBhcmFtZXRlcnMgZm9yIHRoaXMgcGFydGl0aW9uIHByb2plY3Rpb24gY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGNvbHVtbk5hbWUgLSBUaGUgcGFydGl0aW9uIGNvbHVtbiBuYW1lXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF9yZW5kZXJQYXJhbWV0ZXJzKGNvbHVtbk5hbWU6IHN0cmluZyk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIGNvbnN0IHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgIFtgcHJvamVjdGlvbi4ke2NvbHVtbk5hbWV9LnR5cGVgXTogdGhpcy50eXBlLFxuICAgIH07XG5cbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSBQYXJ0aXRpb25Qcm9qZWN0aW9uVHlwZS5JTlRFR0VSOiB7XG4gICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSB0aGlzLmludGVnZXJSYW5nZSE7XG4gICAgICAgIHBhcmFtc1tgcHJvamVjdGlvbi4ke2NvbHVtbk5hbWV9LnJhbmdlYF0gPSBgJHttaW59LCR7bWF4fWA7XG4gICAgICAgIGlmICh0aGlzLmludGVydmFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBwYXJhbXNbYHByb2plY3Rpb24uJHtjb2x1bW5OYW1lfS5pbnRlcnZhbGBdID0gdGhpcy5pbnRlcnZhbC50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRpZ2l0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcGFyYW1zW2Bwcm9qZWN0aW9uLiR7Y29sdW1uTmFtZX0uZGlnaXRzYF0gPSB0aGlzLmRpZ2l0cy50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBQYXJ0aXRpb25Qcm9qZWN0aW9uVHlwZS5EQVRFOiB7XG4gICAgICAgIGNvbnN0IFtzdGFydCwgZW5kXSA9IHRoaXMuZGF0ZVJhbmdlITtcbiAgICAgICAgcGFyYW1zW2Bwcm9qZWN0aW9uLiR7Y29sdW1uTmFtZX0ucmFuZ2VgXSA9IGAke3N0YXJ0fSwke2VuZH1gO1xuICAgICAgICBwYXJhbXNbYHByb2plY3Rpb24uJHtjb2x1bW5OYW1lfS5mb3JtYXRgXSA9IHRoaXMuZm9ybWF0ITtcbiAgICAgICAgaWYgKHRoaXMuaW50ZXJ2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHBhcmFtc1tgcHJvamVjdGlvbi4ke2NvbHVtbk5hbWV9LmludGVydmFsYF0gPSB0aGlzLmludGVydmFsLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaW50ZXJ2YWxVbml0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBwYXJhbXNbYHByb2plY3Rpb24uJHtjb2x1bW5OYW1lfS5pbnRlcnZhbC51bml0YF0gPSB0aGlzLmludGVydmFsVW5pdDtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgUGFydGl0aW9uUHJvamVjdGlvblR5cGUuRU5VTToge1xuICAgICAgICBwYXJhbXNbYHByb2plY3Rpb24uJHtjb2x1bW5OYW1lfS52YWx1ZXNgXSA9IHRoaXMudmFsdWVzIS5qb2luKCcsJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBQYXJ0aXRpb25Qcm9qZWN0aW9uVHlwZS5JTkpFQ1RFRDoge1xuICAgICAgICAvLyBJTkpFQ1RFRCBoYXMgbm8gYWRkaXRpb25hbCBwYXJhbWV0ZXJzXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICAvLyBUeXBlU2NyaXB0IGV4aGF1c3RpdmVuZXNzIGNoZWNrXG4gICAgICAgIGNvbnN0IGV4aGF1c3RpdmVDaGVjazogbmV2ZXIgPSB0aGlzLnR5cGU7XG4gICAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICBsaXRgVW5rbm93blByb2plY3Rpb25UeXBlYCxcbiAgICAgICAgICBgVW5rbm93biBwYXJ0aXRpb24gcHJvamVjdGlvbiB0eXBlIGZvciBcIiR7Y29sdW1uTmFtZX1cIjogJHtleGhhdXN0aXZlQ2hlY2t9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG59XG5cbi8qKlxuICogUGFydGl0aW9uIHByb2plY3Rpb24gY29uZmlndXJhdGlvbiBmb3IgYSB0YWJsZS5cbiAqXG4gKiBNYXBzIHBhcnRpdGlvbiBjb2x1bW4gbmFtZXMgdG8gdGhlaXIgcHJvamVjdGlvbiBjb25maWd1cmF0aW9ucy5cbiAqIFRoZSBrZXkgaXMgdGhlIHBhcnRpdGlvbiBjb2x1bW4gbmFtZSwgdGhlIHZhbHVlIGlzIHRoZSBwYXJ0aXRpb24gY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgUGFydGl0aW9uUHJvamVjdGlvbiA9IHtcbiAgW2NvbHVtbk5hbWU6IHN0cmluZ106IFBhcnRpdGlvblByb2plY3Rpb25Db25maWd1cmF0aW9uO1xufTtcblxuLyoqXG4gKiBHZW5lcmF0ZXMgQ2xvdWRGb3JtYXRpb24gcGFyYW1ldGVycyBmb3IgcGFydGl0aW9uIHByb2plY3Rpb24gY29uZmlndXJhdGlvbi5cbiAqXG4gKiBAcGFyYW0gY29sdW1uTmFtZSAtIFRoZSBwYXJ0aXRpb24gY29sdW1uIG5hbWVcbiAqIEBwYXJhbSBjb25maWcgLSBUaGUgcGFydGl0aW9uIGNvbmZpZ3VyYXRpb25cbiAqIEByZXR1cm5zIENsb3VkRm9ybWF0aW9uIHBhcmFtZXRlcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUGFydGl0aW9uUHJvamVjdGlvblBhcmFtZXRlcnMoXG4gIGNvbHVtbk5hbWU6IHN0cmluZyxcbiAgY29uZmlnOiBQYXJ0aXRpb25Qcm9qZWN0aW9uQ29uZmlndXJhdGlvbixcbik6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICByZXR1cm4gY29uZmlnLl9yZW5kZXJQYXJhbWV0ZXJzKGNvbHVtbk5hbWUpO1xufVxuIl19
|
|
387
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydGl0aW9uLXByb2plY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwYXJ0aXRpb24tcHJvamVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFzbEJBLHNGQUtDOzs7QUEzbEJELDZDQUE2RDtBQUM3RCw0RUFBNEQ7QUFFNUQ7Ozs7OztHQU1HO0FBQ0gsSUFBWSx1QkFvQlg7QUFwQkQsV0FBWSx1QkFBdUI7SUFDakM7O09BRUc7SUFDSCw4Q0FBbUIsQ0FBQTtJQUVuQjs7T0FFRztJQUNILHdDQUFhLENBQUE7SUFFYjs7T0FFRztJQUNILHdDQUFhLENBQUE7SUFFYjs7T0FFRztJQUNILGdEQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFwQlcsdUJBQXVCLHVDQUF2Qix1QkFBdUIsUUFvQmxDO0FBRUQ7Ozs7R0FJRztBQUNILElBQVksZ0JBbUNYO0FBbkNELFdBQVksZ0JBQWdCO0lBQzFCOztPQUVHO0lBQ0gsbUNBQWUsQ0FBQTtJQUVmOztPQUVHO0lBQ0gscUNBQWlCLENBQUE7SUFFakI7O09BRUc7SUFDSCxtQ0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCxpQ0FBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCxtQ0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCx1Q0FBbUIsQ0FBQTtJQUVuQjs7T0FFRztJQUNILHVDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFuQ1csZ0JBQWdCLGdDQUFoQixnQkFBZ0IsUUFtQzNCO0FBMEpEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFTLDBCQUEwQixDQUFDLE1BQWM7SUFDaEQsNEVBQTRFO0lBQzVFLHFFQUFxRTtJQUNyRSxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBQ2xDLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNwQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3ZD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UUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN6RSxDQUFDO2dCQUNELElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDcEMsTUFBTSxDQUFDLGNBQWMsVUFBVSxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7Z0JBQ3ZFLENBQUM7Z0JBQ0QsTUFBTTtZQUNSLENBQUM7WUFDRCxLQUFLLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ2xDLE1BQU0sQ0FBQyxjQUFjLFVBQVUsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ25FLE1BQU07WUFDUixDQUFDO1lBQ0QsS0FBSyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUN0Qyx3Q0FBd0M7Z0JBQ3hDLE1BQU07WUFDUixDQUFDO1lBQ0QsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDUixrQ0FBa0M7Z0JBQ2xDLE1BQU0sZUFBZSxHQUFVLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3pDLE1BQU0sSUFBSSxxQ0FBdUIsQ0FDL0IsSUFBQSxzQkFBRyxFQUFBLHVCQUF1QixFQUMxQiwwQ0FBMEMsVUFBVSxNQUFNLGVBQWUsRUFBRSxDQUM1RSxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztLQUNmOztBQXRUSCw0RUF1VEM7QUFZRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixxQ0FBcUMsQ0FDbkQsVUFBa0IsRUFDbEIsTUFBd0M7SUFFeEMsT0FBTyxNQUFNLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRva2VuLCBVbnNjb3BlZFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IGxpdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuXG4vKipcbiAqIFBhcnRpdGlvbiBwcm9qZWN0aW9uIHR5cGUuXG4gKlxuICogRGV0ZXJtaW5lcyBob3cgQXRoZW5hIHByb2plY3RzIHBhcnRpdGlvbiB2YWx1ZXMuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXRoZW5hL2xhdGVzdC91Zy9wYXJ0aXRpb24tcHJvamVjdGlvbi1zdXBwb3J0ZWQtdHlwZXMuaHRtbFxuICovXG5leHBvcnQgZW51bSBQYXJ0aXRpb25Qcm9qZWN0aW9uVHlwZSB7XG4gIC8qKlxuICAgKiBQcm9qZWN0IHBhcnRpdGlvbiB2YWx1ZXMgYXMgaW50ZWdlcnMgd2l0aGluIGEgcmFuZ2UuXG4gICAqL1xuICBJTlRFR0VSID0gJ2ludGVnZXInLFxuXG4gIC8qKlxuICAgKiBQcm9qZWN0IHBhcnRpdGlvbiB2YWx1ZXMgYXMgZGF0ZXMgd2l0aGluIGEgcmFuZ2UuXG4gICAqL1xuICBEQVRFID0gJ2RhdGUnLFxuXG4gIC8qKlxuICAgKiBQcm9qZWN0IHBhcnRpdGlvbiB2YWx1ZXMgZnJvbSBhbiBleHBsaWNpdCBsaXN0IG9mIHZhbHVlcy5cbiAgICovXG4gIEVOVU0gPSAnZW51bScsXG5cbiAgLyoqXG4gICAqIFByb2plY3QgcGFydGl0aW9uIHZhbHVlcyB0aGF0IGFyZSBpbmplY3RlZCBhdCBxdWVyeSB0aW1lLlxuICAgKi9cbiAgSU5KRUNURUQgPSAnaW5qZWN0ZWQnLFxufVxuXG4vKipcbiAqIERhdGUgaW50ZXJ2YWwgdW5pdCBmb3IgcGFydGl0aW9uIHByb2plY3Rpb24uXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXRoZW5hL2xhdGVzdC91Zy9wYXJ0aXRpb24tcHJvamVjdGlvbi1zdXBwb3J0ZWQtdHlwZXMuaHRtbCNwYXJ0aXRpb24tcHJvamVjdGlvbi1kYXRlLXR5cGVcbiAqL1xuZXhwb3J0IGVudW0gRGF0ZUludGVydmFsVW5pdCB7XG4gIC8qKlxuICAgKiBZZWFyIGludGVydmFsLlxuICAgKi9cbiAgWUVBUlMgPSAnWUVBUlMnLFxuXG4gIC8qKlxuICAgKiBNb250aCBpbnRlcnZhbC5cbiAgICovXG4gIE1PTlRIUyA9ICdNT05USFMnLFxuXG4gIC8qKlxuICAgKiBXZWVrIGludGVydmFsLlxuICAgKi9cbiAgV0VFS1MgPSAnV0VFS1MnLFxuXG4gIC8qKlxuICAgKiBEYXkgaW50ZXJ2YWwgKGRlZmF1bHQpLlxuICAgKi9cbiAgREFZUyA9ICdEQVlTJyxcblxuICAvKipcbiAgICogSG91ciBpbnRlcnZhbC5cbiAgICovXG4gIEhPVVJTID0gJ0hPVVJTJyxcblxuICAvKipcbiAgICogTWludXRlIGludGVydmFsLlxuICAgKi9cbiAgTUlOVVRFUyA9ICdNSU5VVEVTJyxcblxuICAvKipcbiAgICogU2Vjb25kIGludGVydmFsLlxuICAgKi9cbiAgU0VDT05EUyA9ICdTRUNPTkRTJyxcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBJTlRFR0VSIHBhcnRpdGlvbiBwcm9qZWN0aW9uIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZWdlclBhcnRpdGlvblByb2plY3Rpb25Db25maWd1cmF0aW9uUHJvcHMge1xuICAvKipcbiAgICogTWluaW11bSB2YWx1ZSBmb3IgdGhlIGludGVnZXIgcGFydGl0aW9uIHJhbmdlIChpbmNsdXNpdmUpLlxuICAgKi9cbiAgcmVhZG9ubHkgbWluOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gdmFsdWUgZm9yIHRoZSBpbnRlZ2VyIHBhcnRpdGlvbiByYW5nZSAoaW5jbHVzaXZlKS5cbiAgICovXG4gIHJlYWRvbmx5IG1heDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJbnRlcnZhbCBiZXR3ZWVuIHBhcnRpdGlvbiB2YWx1ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHJlYWRvbmx5IGludGVydmFsPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgZGlnaXRzIHRvIHBhZCB0aGUgcGFydGl0aW9uIHZhbHVlIHdpdGggbGVhZGluZyB6ZXJvcy5cbiAgICpcbiAgICogV2l0aCBkaWdpdHM6IDQsIHBhcnRpdGlvbiB2YWx1ZXM6IDAwMDEsIDAwMDIsIC4uLiwgMDEwMFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHN0YXRpYyBudW1iZXIgb2YgZGlnaXRzIGFuZCBubyBsZWFkaW5nIHplcm9lc1xuICAgKi9cbiAgcmVhZG9ubHkgZGlnaXRzPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIERBVEUgcGFydGl0aW9uIHByb2plY3Rpb24gY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRlUGFydGl0aW9uUHJvamVjdGlvbkNvbmZpZ3VyYXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBTdGFydCBkYXRlIGZvciB0aGUgcGFydGl0aW9uIHJhbmdlIChpbmNsdXNpdmUpLlxuICAgKlxuICAgKiBDYW4gYmUgZWl0aGVyOlxuICAgKiAtIEZpeGVkIGRhdGUgaW4gdGhlIGZvcm1hdCBzcGVjaWZpZWQgYnkgYGZvcm1hdGAgcHJvcGVydHlcbiAgICogICAoZS5nLiwgJzIwMjAtMDEtMDEnIGZvciBmb3JtYXQgJ3l5eXktTU0tZGQnKVxuICAgKiAtIFJlbGF0aXZlIGRhdGUgdXNpbmcgTk9XIHN5bnRheFxuICAgKiAgIChlLmcuLCAnTk9XJywgJ05PVy0zWUVBUlMnLCAnTk9XKzFNT05USCcpXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F0aGVuYS9sYXRlc3QvdWcvcGFydGl0aW9uLXByb2plY3Rpb24tc3VwcG9ydGVkLXR5cGVzLmh0bWwjcGFydGl0aW9uLXByb2plY3Rpb24tZGF0ZS10eXBlXG4gICAqL1xuICByZWFkb25seSBtaW46IHN0cmluZztcblxuICAvKipcbiAgICogRW5kIGRhdGUgZm9yIHRoZSBwYXJ0aXRpb24gcmFuZ2UgKGluY2x1c2l2ZSkuXG4gICAqXG4gICAqIENhbiBiZSBlaXRoZXI6XG4gICAqIC0gRml4ZWQgZGF0ZSBpbiB0aGUgZm9ybWF0IHNwZWNpZmllZCBieSBgZm9ybWF0YCBwcm9wZXJ0eVxuICAgKiAtIFJlbGF0aXZlIGRhdGUgdXNpbmcgTk9XIHN5bnRheFxuICAgKlxuICAgKiBTYW1lIGZvcm1hdCBjb25zdHJhaW50cyBhcyBgbWluYC5cbiAgICovXG4gIHJlYWRvbmx5IG1heDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEYXRlIGZvcm1hdCBmb3IgcGFydGl0aW9uIHZhbHVlcy5cbiAgICpcbiAgICogVXNlcyBKYXZhIFNpbXBsZURhdGVGb3JtYXQgcGF0dGVybnMuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLm9yYWNsZS5jb20vamF2YXNlLzgvZG9jcy9hcGkvamF2YS90ZXh0L1NpbXBsZURhdGVGb3JtYXQuaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgZm9ybWF0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEludGVydmFsIGJldHdlZW4gcGFydGl0aW9uIHZhbHVlcy5cbiAgICpcbiAgICogUmVxdWlyZWQgKHRvZ2V0aGVyIHdpdGggYGludGVydmFsVW5pdGApIHdoZW4gYGZvcm1hdGAgY2FycmllcyBzdWItZGF5XG4gICAqIHByZWNpc2lvbiDigJQgaS5lLiBhIGZpZWxkIGZpbmVyIHRoYW4gYSBkYXksIHN1Y2ggYXMgaG91cnMgb3IgQU0vUE0uIEF0IGRheVxuICAgKiBvciBjb2Fyc2VyIHByZWNpc2lvbiBBdGhlbmEgZGVmYXVsdHMgdGhlIHN0ZXAsIHNvIGl0IGlzIG9wdGlvbmFsLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEF0aGVuYSdzIGRlZmF1bHQgc3RlcCBmb3IgdGhlIGZvcm1hdCdzIHByZWNpc2lvbjsgcmVxdWlyZWQgd2hlbiBgZm9ybWF0YCBpcyBzdWItZGF5IHByZWNpc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZXJ2YWw/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFVuaXQgZm9yIHRoZSBpbnRlcnZhbC5cbiAgICpcbiAgICogUmVxdWlyZWQgKHRvZ2V0aGVyIHdpdGggYGludGVydmFsYCkgd2hlbiBgZm9ybWF0YCBjYXJyaWVzIHN1Yi1kYXlcbiAgICogcHJlY2lzaW9uIOKAlCBpLmUuIGEgZmllbGQgZmluZXIgdGhhbiBhIGRheSwgc3VjaCBhcyBob3VycyBvciBBTS9QTS4gQXQgZGF5XG4gICAqIG9yIGNvYXJzZXIgcHJlY2lzaW9uIEF0aGVuYSBkZWZhdWx0cyB0aGUgc3RlcCwgc28gaXQgaXMgb3B0aW9uYWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQXRoZW5hJ3MgZGVmYXVsdCB1bml0IGZvciB0aGUgZm9ybWF0J3MgcHJlY2lzaW9uOyByZXF1aXJlZCB3aGVuIGBmb3JtYXRgIGlzIHN1Yi1kYXkgcHJlY2lzaW9uXG4gICAqL1xuICByZWFkb25seSBpbnRlcnZhbFVuaXQ/OiBEYXRlSW50ZXJ2YWxVbml0O1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIEVOVU0gcGFydGl0aW9uIHByb2plY3Rpb24gY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnVtUGFydGl0aW9uUHJvamVjdGlvbkNvbmZpZ3VyYXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBFeHBsaWNpdCBsaXN0IG9mIHBhcnRpdGlvbiB2YWx1ZXMuXG4gICAqXG4gICAqIEBleGFtcGxlIFsndXMtZWFzdC0xJywgJ3VzLXdlc3QtMicsICdldS13ZXN0LTEnXVxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWVzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBJbnRlcm5hbCBwcm9wZXJ0aWVzIGZvciBQYXJ0aXRpb25Qcm9qZWN0aW9uQ29uZmlndXJhdGlvbi5cbiAqL1xuaW50ZXJmYWNlIFBhcnRpdGlvblByb2plY3Rpb25Db25maWd1cmF0aW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgcGFydGl0aW9uIHByb2plY3Rpb24uXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBQYXJ0aXRpb25Qcm9qZWN0aW9uVHlwZTtcblxuICAvKipcbiAgICogUmFuZ2Ugb2YgcGFydGl0aW9uIHZhbHVlcyBmb3IgSU5URUdFUiB0eXBlLlxuICAgKlxuICAgKiBBcnJheSBvZiBbbWluLCBtYXhdIGFzIG51bWJlcnMuXG4gICAqL1xuICByZWFkb25seSBpbnRlZ2VyUmFuZ2U/OiBudW1iZXJbXTtcblxuICAvKipcbiAgICogUmFuZ2Ugb2YgcGFydGl0aW9uIHZhbHVlcyBmb3IgREFURSB0eXBlLlxuICAgKlxuICAgKiBBcnJheSBvZiBbc3RhcnQsIGVuZF0gYXMgZGF0ZSBzdHJpbmdzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGF0ZVJhbmdlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEludGVydmFsIGJldHdlZW4gcGFydGl0aW9uIHZhbHVlcy5cbiAgICovXG4gIHJlYWRvbmx5IGludGVydmFsPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgZGlnaXRzIHRvIHBhZCBJTlRFR0VSIHBhcnRpdGlvbiB2YWx1ZXMuXG4gICAqL1xuICByZWFkb25seSBkaWdpdHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERhdGUgZm9ybWF0IGZvciBEQVRFIHBhcnRpdGlvbiB2YWx1ZXMgKEphdmEgU2ltcGxlRGF0ZUZvcm1hdCkuXG4gICAqL1xuICByZWFkb25seSBmb3JtYXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVuaXQgZm9yIERBVEUgcGFydGl0aW9uIGludGVydmFsLlxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZXJ2YWxVbml0PzogRGF0ZUludGVydmFsVW5pdDtcblxuICAvKipcbiAgICogRXhwbGljaXQgbGlzdCBvZiB2YWx1ZXMgZm9yIEVOVU0gcGFydGl0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgYSBEQVRFIHByb2plY3Rpb24gYGZvcm1hdGAgY2FycmllcyBzdWItZGF5IHByZWNpc2lvbiwgaW4gd2hpY2ggY2FzZVxuICogQXRoZW5hIHJlcXVpcmVzIGJvdGggYGludGVydmFsYCBhbmQgYGludGVydmFsVW5pdGAuXG4gKlxuICogQXRoZW5hIG9ubHkgcmVxdWlyZXMgdGhlIHR3byB3aGVuIHRoZSBmb3JtYXQgY29udGFpbnMgYSBmaWVsZCBmaW5lciB0aGFuIGFcbiAqIGRheSAoaG91ci9taW51dGUvc2Vjb25kL2ZyYWN0aW9uLCBvciBBTS9QTSkuIEF0IGRheSwgbW9udGgsIG9yIGNvYXJzZXJcbiAqIHByZWNpc2lvbiBpdCBkZWZhdWx0cyB0aGUgc3RlcCBhbmQgYWNjZXB0cyB0aGUgZm9ybWF0IHdpdGhvdXQgdGhlbSDigJQgc28sIGUuZy5cbiAqIGEgcGxhaW4gYHl5eXlgIG5lZWRzIG5vIGludGVydmFsLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F0aGVuYS9sYXRlc3QvdWcvcGFydGl0aW9uLXByb2plY3Rpb24tc3VwcG9ydGVkLXR5cGVzLmh0bWwjcGFydGl0aW9uLXByb2plY3Rpb24tZGF0ZS10eXBlXG4gKi9cbmZ1bmN0aW9uIGRhdGVGb3JtYXRSZXF1aXJlc0ludGVydmFsKGZvcm1hdDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIC8vIENvbGxlY3QgdGhlIHVucXVvdGVkIEphdmEgRGF0ZVRpbWVGb3JtYXR0ZXIgcGF0dGVybiBsZXR0ZXJzLCBob25vcmluZyB0aGVcbiAgLy8gc2FtZSBzaW5nbGUtcXVvdGUgbGl0ZXJhbCBlc2NhcGluZyBhcyB0aGUgZm9ybWF0IHZhbGlkYXRpb24gYWJvdmUuXG4gIGNvbnN0IGxldHRlcnMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgbGV0IGluUXVvdGUgPSBmYWxzZTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb3JtYXQubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjaCA9IGZvcm1hdFtpXTtcbiAgICBpZiAoY2ggPT09IFwiJ1wiKSB7XG4gICAgICBpZiAoaSArIDEgPCBmb3JtYXQubGVuZ3RoICYmIGZvcm1hdFtpICsgMV0gPT09IFwiJ1wiKSB7XG4gICAgICAgIGkrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluUXVvdGUgPSAhaW5RdW90ZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFpblF1b3RlICYmIC9bYS16QS1aXS8udGVzdChjaCkpIHtcbiAgICAgIGxldHRlcnMuYWRkKGNoKTtcbiAgICB9XG4gIH1cblxuICAvLyBTdWItZGF5IGZpZWxkcyDigJQgYW55dGhpbmcgZmluZXIgdGhhbiBhIGRheS4gYGFgIChBTS9QTS1vZi1kYXkpIHNwbGl0cyB0aGVcbiAgLy8gZGF5IGluIHR3bywgc28gaXQgY291bnRzIGFsb25nc2lkZSBob3VyL21pbnV0ZS9zZWNvbmQvZnJhY3Rpb24vbmFubzpcbiAgLy8gICBhIGFtL3BtICBoIGNsb2NrLWhvdXIoMS0xMikgIEsgaG91ci1vZi1hbS1wbSgwLTExKSAgayBjbG9jay1ob3VyKDEtMjQpXG4gIC8vICAgSCBob3VyLW9mLWRheSgwLTIzKSAgbSBtaW51dGUgIHMgc2Vjb25kICBTIGZyYWN0aW9uICBBIG1pbGxpLW9mLWRheVxuICAvLyAgIG4gbmFuby1vZi1zZWNvbmQgIE4gbmFuby1vZi1kYXlcbiAgLy8gRXZlcnkgY29hcnNlciBmaWVsZCAoZGF5LCBtb250aCwgeWVhciwgd2VlaywgcXVhcnRlciwgZGF5LW9mLXdlZWspIGlzXG4gIC8vIGFjY2VwdGVkIGJ5IEF0aGVuYSB3aXRob3V0IGFuIGludGVydmFsLCBzbyBvbmx5IHRoZSBzdWItZGF5IHNldCByZXF1aXJlcyBpdC5cbiAgcmV0dXJuIFsuLi4nYWhLa0htc1NBbk4nXS5zb21lKGMgPT4gbGV0dGVycy5oYXMoYykpO1xufVxuXG4vKipcbiAqIEZhY3RvcnkgY2xhc3MgZm9yIGNyZWF0aW5nIHBhcnRpdGlvbiBwcm9qZWN0aW9uIGNvbmZpZ3VyYXRpb25zLlxuICovXG5leHBvcnQgY2xhc3MgUGFydGl0aW9uUHJvamVjdGlvbkNvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogQ3JlYXRlIGFuIElOVEVHRVIgcGFydGl0aW9uIHByb2plY3Rpb24gY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaW50ZWdlcihwcm9wczogSW50ZWdlclBhcnRpdGlvblByb2plY3Rpb25Db25maWd1cmF0aW9uUHJvcHMpOiBQYXJ0aXRpb25Qcm9qZWN0aW9uQ29uZmlndXJhdGlvbiB7XG4gICAgLy8gVmFsaWRhdGUgbWluL21heCBhcmUgaW50ZWdlcnNcbiAgICBpZiAoIVRva2VuLmlzVW5yZXNvbHZlZChwcm9wcy5taW4pICYmICFUb2tlbi5pc1VucmVzb2x2ZWQocHJvcHMubWF4KSkge1xuICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHByb3BzLm1pbikgfHwgIU51bWJlci5pc0ludGVnZXIocHJvcHMubWF4KSkge1xuICAgICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgbGl0YEludGVnZXJSYW5nZU5vdEludGVnZXJzYCxcbiAgICAgICAgICBgSU5URUdFUiBwYXJ0aXRpb24gcHJvamVjdGlvbiByYW5nZSBtdXN0IGNvbnRhaW4gaW50ZWdlcnMsIGJ1dCBnb3QgWyR7cHJvcHMubWlufSwgJHtwcm9wcy5tYXh9XWAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIFZhbGlkYXRlIG1pbiA8PSBtYXhcbiAgICAgIGlmIChwcm9wcy5taW4gPiBwcm9wcy5tYXgpIHtcbiAgICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgIGxpdGBJbnRlZ2VyUmFuZ2VNaW5HcmVhdGVyVGhhbk1heGAsXG4gICAgICAgICAgYElOVEVHRVIgcGFydGl0aW9uIHByb2plY3Rpb24gcmFuZ2UgbXVzdCBiZSBbbWluLCBtYXhdIHdoZXJlIG1pbiA8PSBtYXgsIGJ1dCBnb3QgWyR7cHJvcHMubWlufSwgJHtwcm9wcy5tYXh9XWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgaW50ZXJ2YWxcbiAgICBpZiAoXG4gICAgICBwcm9wcy5pbnRlcnZhbCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAhVG9rZW4uaXNVbnJlc29sdmVkKHByb3BzLmludGVydmFsKSAmJlxuICAgICAgKCFOdW1iZXIuaXNJbnRlZ2VyKHByb3BzLmludGVydmFsKSB8fCBwcm9wcy5pbnRlcnZhbCA8PSAwKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBsaXRgSW50ZWdlckludGVydmFsSW52YWxpZGAsXG4gICAgICAgIGBJTlRFR0VSIHBhcnRpdGlvbiBwcm9qZWN0aW9uIGludGVydmFsIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLCBidXQgZ290ICR7cHJvcHMuaW50ZXJ2YWx9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgZGlnaXRzXG4gICAgaWYgKFxuICAgICAgcHJvcHMuZGlnaXRzICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICFUb2tlbi5pc1VucmVzb2x2ZWQocHJvcHMuZGlnaXRzKSAmJlxuICAgICAgKCFOdW1iZXIuaXNJbnRlZ2VyKHByb3BzLmRpZ2l0cykgfHwgcHJvcHMuZGlnaXRzIDwgMSlcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgbGl0YEludGVnZXJEaWdpdHNJbnZhbGlkYCxcbiAgICAgICAgYElOVEVHRVIgcGFydGl0aW9uIHByb2plY3Rpb24gZGlnaXRzIG11c3QgYmUgYW4gaW50ZWdlciA+PSAxLCBidXQgZ290ICR7cHJvcHMuZGlnaXRzfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUGFydGl0aW9uUHJvamVjdGlvbkNvbmZpZ3VyYXRpb24oe1xuICAgICAgdHlwZTogUGFydGl0aW9uUHJvamVjdGlvblR5cGUuSU5URUdFUixcbiAgICAgIGludGVnZXJSYW5nZTogW3Byb3BzLm1pbiwgcHJvcHMubWF4XSxcbiAgICAgIGludGVydmFsOiBwcm9wcy5pbnRlcnZhbCxcbiAgICAgIGRpZ2l0czogcHJvcHMuZGlnaXRzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIERBVEUgcGFydGl0aW9uIHByb2plY3Rpb24gY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGF0ZShwcm9wczogRGF0ZVBhcnRpdGlvblByb2plY3Rpb25Db25maWd1cmF0aW9uUHJvcHMpOiBQYXJ0aXRpb25Qcm9qZWN0aW9uQ29uZmlndXJhdGlvbiB7XG4gICAgLy8gVmFsaWRhdGUgbWluL21heCBhcmUgbm90IGVtcHR5XG4gICAgaWYgKFxuICAgICAgIVRva2VuLmlzVW5yZXNvbHZlZChwcm9wcy5taW4pICYmXG4gICAgICAhVG9rZW4uaXNVbnJlc29sdmVkKHByb3BzLm1heCkgJiZcbiAgICAgIChwcm9wcy5taW4udHJpbSgpID09PSAnJyB8fCBwcm9wcy5tYXgudHJpbSgpID09PSAnJylcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgbGl0YERhdGVSYW5nZUVtcHR5YCxcbiAgICAgICAgJ0RBVEUgcGFydGl0aW9uIHByb2plY3Rpb24gcmFuZ2UgbXVzdCBub3QgY29udGFpbiBlbXB0eSBzdHJpbmdzJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgZm9ybWF0XG4gICAgaWYgKCFUb2tlbi5pc1VucmVzb2x2ZWQocHJvcHMuZm9ybWF0KSkge1xuICAgICAgLy8gVmFsaWRhdGUgZm9ybWF0IGlzIG5vdCBlbXB0eVxuICAgICAgaWYgKHByb3BzLmZvcm1hdC50cmltKCkgPT09ICcnKSB7XG4gICAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICBsaXRgRGF0ZUZvcm1hdEVtcHR5YCxcbiAgICAgICAgICAnREFURSBwYXJ0aXRpb24gcHJvamVjdGlvbiBmb3JtYXQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBWYWxpZGF0ZSBmb3JtYXQgcGF0dGVybiBjaGFyYWN0ZXJzIChKYXZhIDggRGF0ZVRpbWVGb3JtYXR0ZXIpXG4gICAgICBjb25zdCB2YWxpZFBhdHRlcm5MZXR0ZXJzID0gJ0d5dVlETUxkUXF3V0VlY0ZhaEtrSG1zU0FuTlZ6T1h4WnAnO1xuICAgICAgY29uc3QgZm9ybWF0ID0gcHJvcHMuZm9ybWF0O1xuICAgICAgbGV0IGluUXVvdGUgPSBmYWxzZTtcbiAgICAgIGNvbnN0IGludmFsaWRDaGFyczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb3JtYXQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgY2ggPSBmb3JtYXRbaV07XG4gICAgICAgIGlmIChjaCA9PT0gXCInXCIpIHtcbiAgICAgICAgICBpZiAoaSArIDEgPCBmb3JtYXQubGVuZ3RoICYmIGZvcm1hdFtpICsgMV0gPT09IFwiJ1wiKSB7XG4gICAgICAgICAgICAvLyAnJyBpcyBhbiBlc2NhcGVkIHNpbmdsZSBxdW90ZSBsaXRlcmFsLCBza2lwIGJvdGhcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW5RdW90ZSA9ICFpblF1b3RlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghaW5RdW90ZSAmJiAvW2EtekEtWl0vLnRlc3QoY2gpKSB7XG4gICAgICAgICAgaWYgKCF2YWxpZFBhdHRlcm5MZXR0ZXJzLmluY2x1ZGVzKGNoKSkge1xuICAgICAgICAgICAgaW52YWxpZENoYXJzLnB1c2goY2gpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoaW5RdW90ZSkge1xuICAgICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgbGl0YERhdGVGb3JtYXRVbmNsb3NlZFF1b3RlYCxcbiAgICAgICAgICBgREFURSBwYXJ0aXRpb24gcHJvamVjdGlvbiBmb3JtYXQgaGFzIGFuIHVuY2xvc2VkIHNpbmdsZSBxdW90ZTogJyR7Zm9ybWF0fSdgLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoaW52YWxpZENoYXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgdW5pcXVlID0gWy4uLm5ldyBTZXQoaW52YWxpZENoYXJzKV07XG4gICAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICBsaXRgRGF0ZUZvcm1hdEludmFsaWRDaGFyYWN0ZXJzYCxcbiAgICAgICAgICBgREFURSBwYXJ0aXRpb24gcHJvamVjdGlvbiBmb3JtYXQgY29udGFpbnMgaW52YWxpZCBwYXR0ZXJuIGNoYXJhY3RlcnM6ICR7dW5pcXVlLmpvaW4oJywgJyl9LiBNdXN0IHVzZSBKYXZhIERhdGVUaW1lRm9ybWF0dGVyIHZhbGlkIHBhdHRlcm4gbGV0dGVycy5gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIGludGVydmFsXG4gICAgaWYgKFxuICAgICAgcHJvcHMuaW50ZXJ2YWwgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgIVRva2VuLmlzVW5yZXNvbHZlZChwcm9wcy5pbnRlcnZhbCkgJiZcbiAgICAgICghTnVtYmVyLmlzSW50ZWdlcihwcm9wcy5pbnRlcnZhbCkgfHwgcHJvcHMuaW50ZXJ2YWwgPD0gMClcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgbGl0YERhdGVJbnRlcnZhbEludmFsaWRgLFxuICAgICAgICBgREFURSBwYXJ0aXRpb24gcHJvamVjdGlvbiBpbnRlcnZhbCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciwgYnV0IGdvdCAke3Byb3BzLmludGVydmFsfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEZvciBzdWItZGF5IHByZWNpc2lvbiAoYSBmaWVsZCBmaW5lciB0aGFuIGEgZGF5KSwgQXRoZW5hIHJlcXVpcmVzIGJvdGhcbiAgICAvLyBgaW50ZXJ2YWxgIGFuZCBgaW50ZXJ2YWxVbml0YDsgYXQgZGF5IG9yIGNvYXJzZXIgcHJlY2lzaW9uIGl0IGRlZmF1bHRzXG4gICAgLy8gdGhlbS4gT25seSBlbmZvcmNlIHdoZW4gdGhlIGZvcm1hdCBpcyBhIHJlc29sdmVkIGxpdGVyYWwgd2UgY2FuIGluc3BlY3QuXG4gICAgaWYgKCFUb2tlbi5pc1VucmVzb2x2ZWQocHJvcHMuZm9ybWF0KSAmJiBkYXRlRm9ybWF0UmVxdWlyZXNJbnRlcnZhbChwcm9wcy5mb3JtYXQpKSB7XG4gICAgICBpZiAocHJvcHMuaW50ZXJ2YWwgPT09IHVuZGVmaW5lZCB8fCBwcm9wcy5pbnRlcnZhbFVuaXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgbGl0YERhdGVJbnRlcnZhbFJlcXVpcmVkYCxcbiAgICAgICAgICBgREFURSBwYXJ0aXRpb24gcHJvamVjdGlvbiB3aXRoIGZvcm1hdCAnJHtwcm9wcy5mb3JtYXR9JyBoYXMgc3ViLWRheSBwcmVjaXNpb24sIHNvIGJvdGggJ2ludGVydmFsJyBhbmQgJ2ludGVydmFsVW5pdCcgYXJlIHJlcXVpcmVkYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFBhcnRpdGlvblByb2plY3Rpb25Db25maWd1cmF0aW9uKHtcbiAgICAgIHR5cGU6IFBhcnRpdGlvblByb2plY3Rpb25UeXBlLkRBVEUsXG4gICAgICBkYXRlUmFuZ2U6IFtwcm9wcy5taW4sIHByb3BzLm1heF0sXG4gICAgICBpbnRlcnZhbDogcHJvcHMuaW50ZXJ2YWwsXG4gICAgICBmb3JtYXQ6IHByb3BzLmZvcm1hdCxcbiAgICAgIGludGVydmFsVW5pdDogcHJvcHMuaW50ZXJ2YWxVbml0LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBFTlVNIHBhcnRpdGlvbiBwcm9qZWN0aW9uIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGVudW0ocHJvcHM6IEVudW1QYXJ0aXRpb25Qcm9qZWN0aW9uQ29uZmlndXJhdGlvblByb3BzKTogUGFydGl0aW9uUHJvamVjdGlvbkNvbmZpZ3VyYXRpb24ge1xuICAgIC8vIFZhbGlkYXRlIHZhbHVlcyBpcyBub3QgZW1wdHlcbiAgICBpZiAocHJvcHMudmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBsaXRgRW51bVZhbHVlc0VtcHR5YCxcbiAgICAgICAgJ0VOVU0gcGFydGl0aW9uIHByb2plY3Rpb24gdmFsdWVzIG11c3QgYmUgYSBub24tZW1wdHkgYXJyYXknLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzLnZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdmFsdWUgPSBwcm9wcy52YWx1ZXNbaV07XG4gICAgICBpZiAoIVRva2VuLmlzVW5yZXNvbHZlZCh2YWx1ZSkpIHtcbiAgICAgICAgaWYgKHZhbHVlLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgICBsaXRgRW51bVZhbHVlRW1wdHlgLFxuICAgICAgICAgICAgJ0VOVU0gcGFydGl0aW9uIHByb2plY3Rpb24gdmFsdWVzIG11c3Qgbm90IGNvbnRhaW4gZW1wdHkgc3RyaW5ncycsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUuaW5jbHVkZXMoJywnKSkge1xuICAgICAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICAgIGxpdGBFbnVtVmFsdWVDb250YWluc0NvbW1hYCxcbiAgICAgICAgICAgIGBFTlVNIHBhcnRpdGlvbiBwcm9qZWN0aW9uIHZhbHVlcyBtdXN0IG5vdCBjb250YWluIGNvbW1hcyBiZWNhdXNlIHRoZSB2YWx1ZXMgYXJlIHNlcmlhbGl6ZWQgYXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCwgZ290OiAnJHt2YWx1ZX0nYCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQYXJ0aXRpb25Qcm9qZWN0aW9uQ29uZmlndXJhdGlvbih7XG4gICAgICB0eXBlOiBQYXJ0aXRpb25Qcm9qZWN0aW9uVHlwZS5FTlVNLFxuICAgICAgdmFsdWVzOiBwcm9wcy52YWx1ZXMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIElOSkVDVEVEIHBhcnRpdGlvbiBwcm9qZWN0aW9uIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIFBhcnRpdGlvbiB2YWx1ZXMgYXJlIGluamVjdGVkIGF0IHF1ZXJ5IHRpbWUgdGhyb3VnaCB0aGUgcXVlcnkgc3RhdGVtZW50LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdGhlbmEvbGF0ZXN0L3VnL3BhcnRpdGlvbi1wcm9qZWN0aW9uLXN1cHBvcnRlZC10eXBlcy5odG1sI3BhcnRpdGlvbi1wcm9qZWN0aW9uLWluamVjdGVkLXR5cGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaW5qZWN0ZWQoKTogUGFydGl0aW9uUHJvamVjdGlvbkNvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiBuZXcgUGFydGl0aW9uUHJvamVjdGlvbkNvbmZpZ3VyYXRpb24oe1xuICAgICAgdHlwZTogUGFydGl0aW9uUHJvamVjdGlvblR5cGUuSU5KRUNURUQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgcGFydGl0aW9uIHByb2plY3Rpb24uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogUGFydGl0aW9uUHJvamVjdGlvblR5cGU7XG5cbiAgLyoqXG4gICAqIFJhbmdlIG9mIHBhcnRpdGlvbiB2YWx1ZXMgZm9yIElOVEVHRVIgdHlwZS5cbiAgICpcbiAgICogQXJyYXkgb2YgW21pbiwgbWF4XSBhcyBudW1iZXJzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGludGVnZXJSYW5nZT86IG51bWJlcltdO1xuXG4gIC8qKlxuICAgKiBSYW5nZSBvZiBwYXJ0aXRpb24gdmFsdWVzIGZvciBEQVRFIHR5cGUuXG4gICAqXG4gICAqIEFycmF5IG9mIFtzdGFydCwgZW5kXSBhcyBkYXRlIHN0cmluZ3MuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGF0ZVJhbmdlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEludGVydmFsIGJldHdlZW4gcGFydGl0aW9uIHZhbHVlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpbnRlcnZhbD86IG51bWJlcjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIGRpZ2l0cyB0byBwYWQgSU5URUdFUiBwYXJ0aXRpb24gdmFsdWVzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRpZ2l0cz86IG51bWJlcjtcblxuICAvKipcbiAgICogRGF0ZSBmb3JtYXQgZm9yIERBVEUgcGFydGl0aW9uIHZhbHVlcyAoSmF2YSBTaW1wbGVEYXRlRm9ybWF0KS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBmb3JtYXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVuaXQgZm9yIERBVEUgcGFydGl0aW9uIGludGVydmFsLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGludGVydmFsVW5pdD86IERhdGVJbnRlcnZhbFVuaXQ7XG5cbiAgLyoqXG4gICAqIEV4cGxpY2l0IGxpc3Qgb2YgdmFsdWVzIGZvciBFTlVNIHBhcnRpdGlvbnMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWVzPzogc3RyaW5nW107XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihwcm9wczogUGFydGl0aW9uUHJvamVjdGlvbkNvbmZpZ3VyYXRpb25Qcm9wcykge1xuICAgIHRoaXMudHlwZSA9IHByb3BzLnR5cGU7XG4gICAgdGhpcy5pbnRlZ2VyUmFuZ2UgPSBwcm9wcy5pbnRlZ2VyUmFuZ2U7XG4gICAgdGhpcy5kYXRlUmFuZ2UgPSBwcm9wcy5kYXRlUmFuZ2U7XG4gICAgdGhpcy5pbnRlcnZhbCA9IHByb3BzLmludGVydmFsO1xuICAgIHRoaXMuZGlnaXRzID0gcHJvcHMuZGlnaXRzO1xuICAgIHRoaXMuZm9ybWF0ID0gcHJvcHMuZm9ybWF0O1xuICAgIHRoaXMuaW50ZXJ2YWxVbml0ID0gcHJvcHMuaW50ZXJ2YWxVbml0O1xuICAgIHRoaXMudmFsdWVzID0gcHJvcHMudmFsdWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgQ2xvdWRGb3JtYXRpb24gcGFyYW1ldGVycyBmb3IgdGhpcyBwYXJ0aXRpb24gcHJvamVjdGlvbiBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gY29sdW1uTmFtZSAtIFRoZSBwYXJ0aXRpb24gY29sdW1uIG5hbWVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX3JlbmRlclBhcmFtZXRlcnMoY29sdW1uTmFtZTogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgY29uc3QgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgW2Bwcm9qZWN0aW9uLiR7Y29sdW1uTmFtZX0udHlwZWBdOiB0aGlzLnR5cGUsXG4gICAgfTtcblxuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlIFBhcnRpdGlvblByb2plY3Rpb25UeXBlLklOVEVHRVI6IHtcbiAgICAgICAgY29uc3QgW21pbiwgbWF4XSA9IHRoaXMuaW50ZWdlclJhbmdlITtcbiAgICAgICAgcGFyYW1zW2Bwcm9qZWN0aW9uLiR7Y29sdW1uTmFtZX0ucmFuZ2VgXSA9IGAke21pbn0sJHttYXh9YDtcbiAgICAgICAgaWYgKHRoaXMuaW50ZXJ2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHBhcmFtc1tgcHJvamVjdGlvbi4ke2NvbHVtbk5hbWV9LmludGVydmFsYF0gPSB0aGlzLmludGVydmFsLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGlnaXRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBwYXJhbXNbYHByb2plY3Rpb24uJHtjb2x1bW5OYW1lfS5kaWdpdHNgXSA9IHRoaXMuZGlnaXRzLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFBhcnRpdGlvblByb2plY3Rpb25UeXBlLkRBVEU6IHtcbiAgICAgICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gdGhpcy5kYXRlUmFuZ2UhO1xuICAgICAgICBwYXJhbXNbYHByb2plY3Rpb24uJHtjb2x1bW5OYW1lfS5yYW5nZWBdID0gYCR7c3RhcnR9LCR7ZW5kfWA7XG4gICAgICAgIHBhcmFtc1tgcHJvamVjdGlvbi4ke2NvbHVtbk5hbWV9LmZvcm1hdGBdID0gdGhpcy5mb3JtYXQhO1xuICAgICAgICBpZiAodGhpcy5pbnRlcnZhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcGFyYW1zW2Bwcm9qZWN0aW9uLiR7Y29sdW1uTmFtZX0uaW50ZXJ2YWxgXSA9IHRoaXMuaW50ZXJ2YWwudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pbnRlcnZhbFVuaXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHBhcmFtc1tgcHJvamVjdGlvbi4ke2NvbHVtbk5hbWV9LmludGVydmFsLnVuaXRgXSA9IHRoaXMuaW50ZXJ2YWxVbml0O1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBQYXJ0aXRpb25Qcm9qZWN0aW9uVHlwZS5FTlVNOiB7XG4gICAgICAgIHBhcmFtc1tgcHJvamVjdGlvbi4ke2NvbHVtbk5hbWV9LnZhbHVlc2BdID0gdGhpcy52YWx1ZXMhLmpvaW4oJywnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFBhcnRpdGlvblByb2plY3Rpb25UeXBlLklOSkVDVEVEOiB7XG4gICAgICAgIC8vIElOSkVDVEVEIGhhcyBubyBhZGRpdGlvbmFsIHBhcmFtZXRlcnNcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIC8vIFR5cGVTY3JpcHQgZXhoYXVzdGl2ZW5lc3MgY2hlY2tcbiAgICAgICAgY29uc3QgZXhoYXVzdGl2ZUNoZWNrOiBuZXZlciA9IHRoaXMudHlwZTtcbiAgICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgIGxpdGBVbmtub3duUHJvamVjdGlvblR5cGVgLFxuICAgICAgICAgIGBVbmtub3duIHBhcnRpdGlvbiBwcm9qZWN0aW9uIHR5cGUgZm9yIFwiJHtjb2x1bW5OYW1lfVwiOiAke2V4aGF1c3RpdmVDaGVja31gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cbn1cblxuLyoqXG4gKiBQYXJ0aXRpb24gcHJvamVjdGlvbiBjb25maWd1cmF0aW9uIGZvciBhIHRhYmxlLlxuICpcbiAqIE1hcHMgcGFydGl0aW9uIGNvbHVtbiBuYW1lcyB0byB0aGVpciBwcm9qZWN0aW9uIGNvbmZpZ3VyYXRpb25zLlxuICogVGhlIGtleSBpcyB0aGUgcGFydGl0aW9uIGNvbHVtbiBuYW1lLCB0aGUgdmFsdWUgaXMgdGhlIHBhcnRpdGlvbiBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgdHlwZSBQYXJ0aXRpb25Qcm9qZWN0aW9uID0ge1xuICBbY29sdW1uTmFtZTogc3RyaW5nXTogUGFydGl0aW9uUHJvamVjdGlvbkNvbmZpZ3VyYXRpb247XG59O1xuXG4vKipcbiAqIEdlbmVyYXRlcyBDbG91ZEZvcm1hdGlvbiBwYXJhbWV0ZXJzIGZvciBwYXJ0aXRpb24gcHJvamVjdGlvbiBjb25maWd1cmF0aW9uLlxuICpcbiAqIEBwYXJhbSBjb2x1bW5OYW1lIC0gVGhlIHBhcnRpdGlvbiBjb2x1bW4gbmFtZVxuICogQHBhcmFtIGNvbmZpZyAtIFRoZSBwYXJ0aXRpb24gY29uZmlndXJhdGlvblxuICogQHJldHVybnMgQ2xvdWRGb3JtYXRpb24gcGFyYW1ldGVyc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVQYXJ0aXRpb25Qcm9qZWN0aW9uUGFyYW1ldGVycyhcbiAgY29sdW1uTmFtZTogc3RyaW5nLFxuICBjb25maWc6IFBhcnRpdGlvblByb2plY3Rpb25Db25maWd1cmF0aW9uLFxuKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gIHJldHVybiBjb25maWcuX3JlbmRlclBhcmFtZXRlcnMoY29sdW1uTmFtZSk7XG59XG4iXX0=
|
package/lib/s3-table.d.ts
CHANGED
|
@@ -6,41 +6,98 @@ import type { Construct } from 'constructs';
|
|
|
6
6
|
import type { PartitionIndex, TableBaseProps } from './table-base';
|
|
7
7
|
import { TableBase } from './table-base';
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* Server-side encryption for the S3 bucket that a managed `S3Table` creates.
|
|
10
10
|
*
|
|
11
|
-
*
|
|
11
|
+
* Applies only when the table manages its own bucket (via
|
|
12
|
+
* `S3TableStorage.managedBucket`). An existing bucket keeps whatever encryption
|
|
13
|
+
* it was created with.
|
|
12
14
|
*/
|
|
13
|
-
export declare
|
|
15
|
+
export declare class S3TableEncryption {
|
|
14
16
|
/**
|
|
15
|
-
* Server
|
|
16
|
-
*
|
|
17
|
-
* @see https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
|
|
17
|
+
* Server-side encryption (SSE-S3) with an Amazon S3-managed key.
|
|
18
18
|
*/
|
|
19
|
-
|
|
19
|
+
static s3Managed(): S3TableEncryption;
|
|
20
20
|
/**
|
|
21
|
-
* Server-side encryption (SSE) with an AWS KMS key managed by the account owner.
|
|
21
|
+
* Server-side encryption (SSE-KMS) with an AWS KMS key managed by the account owner.
|
|
22
22
|
*
|
|
23
|
-
* @
|
|
23
|
+
* @param key the KMS key used to encrypt the data. A key is created if one is not provided.
|
|
24
|
+
*/
|
|
25
|
+
static kms(key?: kms.IKey): S3TableEncryption;
|
|
26
|
+
/**
|
|
27
|
+
* Server-side encryption (SSE-KMS) with an AWS KMS key managed by the KMS service.
|
|
24
28
|
*/
|
|
25
|
-
|
|
29
|
+
static kmsManaged(): S3TableEncryption;
|
|
30
|
+
/** @internal */
|
|
31
|
+
readonly _bucketEncryption: s3.BucketEncryption;
|
|
26
32
|
/**
|
|
27
|
-
*
|
|
33
|
+
* @internal
|
|
34
|
+
* Typed `kms.IKey` (not `IKeyRef`) because it is forwarded to `s3.Bucket`, whose `encryptionKey` prop requires `IKey`.
|
|
28
35
|
*/
|
|
29
|
-
|
|
36
|
+
readonly _kmsKey?: kms.IKey;
|
|
37
|
+
private constructor();
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Where an `S3Table` stores its data.
|
|
41
|
+
*
|
|
42
|
+
* The two paths are mutually exclusive: a managed bucket may specify its
|
|
43
|
+
* server-side encryption, while an existing bucket keeps its own encryption — so
|
|
44
|
+
* an encryption choice can never be paired with a bring-your-own bucket.
|
|
45
|
+
*/
|
|
46
|
+
export declare class S3TableStorage {
|
|
30
47
|
/**
|
|
31
|
-
*
|
|
48
|
+
* Store the table's data in a bucket created and managed by the table.
|
|
32
49
|
*
|
|
33
|
-
* @
|
|
50
|
+
* @param encryption the server-side encryption for the created bucket.
|
|
51
|
+
* @default - S3-managed (SSE-S3) encryption
|
|
34
52
|
*/
|
|
35
|
-
|
|
53
|
+
static managedBucket(encryption?: S3TableEncryption): S3TableStorage;
|
|
54
|
+
/**
|
|
55
|
+
* Store the table's data in an existing bucket. CDK does not manage the
|
|
56
|
+
* bucket's encryption.
|
|
57
|
+
*
|
|
58
|
+
* The bucket can be one you don't own, imported with
|
|
59
|
+
* `Bucket.fromBucketArn()` or `Bucket.fromBucketAttributes()`. If that bucket
|
|
60
|
+
* is KMS-encrypted, import it with `Bucket.fromBucketAttributes()` and supply
|
|
61
|
+
* the `encryptionKey` attribute. Otherwise, CDK has no reference to the key,
|
|
62
|
+
* which means that `S3Table.grantRead()`/`grantWrite()` will correctly grant
|
|
63
|
+
* S3 access but silently skip the KMS permissions on the key. As a consequence,
|
|
64
|
+
* at runtime, reads and writes will fail with access denied on the key.
|
|
65
|
+
*
|
|
66
|
+
* @param bucket the bucket that holds the table's data.
|
|
67
|
+
*/
|
|
68
|
+
static fromBucket(bucket: s3.IBucket): S3TableStorage;
|
|
69
|
+
/** @internal */
|
|
70
|
+
readonly _bucket?: s3.IBucket;
|
|
71
|
+
/** @internal */
|
|
72
|
+
readonly _encryption?: S3TableEncryption;
|
|
73
|
+
private constructor();
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Client-side encryption for an `S3Table`'s data.
|
|
77
|
+
*
|
|
78
|
+
* Independent of the bucket's server-side encryption and of who owns the bucket:
|
|
79
|
+
* the data is encrypted by the client before it is written to S3. When set, the
|
|
80
|
+
* `grant*` methods also grant the relevant KMS permissions on the key.
|
|
81
|
+
*/
|
|
82
|
+
export declare class TableClientSideEncryption {
|
|
83
|
+
/**
|
|
84
|
+
* Client-side encryption (CSE-KMS) with an AWS KMS key managed by the account owner.
|
|
85
|
+
*
|
|
86
|
+
* @param key the KMS key used to encrypt the data. A key is created if one is not provided.
|
|
87
|
+
*/
|
|
88
|
+
static kms(key?: kms.IKeyRef): TableClientSideEncryption;
|
|
89
|
+
/** @internal */
|
|
90
|
+
readonly _kmsKey?: kms.IKeyRef;
|
|
91
|
+
private constructor();
|
|
36
92
|
}
|
|
37
93
|
export interface S3TableProps extends TableBaseProps {
|
|
38
94
|
/**
|
|
39
|
-
*
|
|
95
|
+
* Where the table's data is stored: a bucket created and managed by the table,
|
|
96
|
+
* or an existing bucket you provide.
|
|
40
97
|
*
|
|
41
|
-
* @default
|
|
98
|
+
* @default - a managed bucket with S3-managed (SSE-S3) encryption
|
|
42
99
|
*/
|
|
43
|
-
readonly
|
|
100
|
+
readonly storage?: S3TableStorage;
|
|
44
101
|
/**
|
|
45
102
|
* S3 prefix under which table objects are stored.
|
|
46
103
|
*
|
|
@@ -52,25 +109,14 @@ export interface S3TableProps extends TableBaseProps {
|
|
|
52
109
|
*/
|
|
53
110
|
readonly s3Prefix?: string;
|
|
54
111
|
/**
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
* You can only provide this option if you are not explicitly passing in a bucket.
|
|
58
|
-
*
|
|
59
|
-
* If you choose `SSE-KMS`, you *can* provide an un-managed KMS key with `encryptionKey`.
|
|
60
|
-
* If you choose `CSE-KMS`, you *may* provide an un-managed KMS key with `encryptionKey`;
|
|
61
|
-
* one is created automatically if omitted.
|
|
62
|
-
*
|
|
63
|
-
* @default BucketEncryption.S3_MANAGED
|
|
64
|
-
*/
|
|
65
|
-
readonly encryption?: TableEncryption;
|
|
66
|
-
/**
|
|
67
|
-
* External KMS key to use for bucket encryption.
|
|
112
|
+
* Client-side encryption (CSE-KMS) for the table's data.
|
|
68
113
|
*
|
|
69
|
-
*
|
|
114
|
+
* Independent of the bucket's server-side encryption, and valid whether the
|
|
115
|
+
* bucket is managed or provided.
|
|
70
116
|
*
|
|
71
|
-
* @default
|
|
117
|
+
* @default - no client-side encryption
|
|
72
118
|
*/
|
|
73
|
-
readonly
|
|
119
|
+
readonly clientSideEncryption?: TableClientSideEncryption;
|
|
74
120
|
}
|
|
75
121
|
/**
|
|
76
122
|
* A Glue table that targets a S3 dataset.
|
|
@@ -89,13 +135,12 @@ export declare class S3Table extends TableBase {
|
|
|
89
135
|
*/
|
|
90
136
|
readonly s3Prefix: string;
|
|
91
137
|
/**
|
|
92
|
-
* The
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
* The KMS key used to secure the data if `encryption` is set to `CSE-KMS` or `SSE-KMS`. Otherwise, `undefined`.
|
|
138
|
+
* The KMS key used for client-side encryption of the table's data, if
|
|
139
|
+
* `clientSideEncryption` was configured. Otherwise, `undefined`.
|
|
140
|
+
*
|
|
141
|
+
* For server-side (bucket) encryption, read `bucket.encryptionKey` instead.
|
|
97
142
|
*/
|
|
98
|
-
readonly
|
|
143
|
+
readonly clientSideEncryptionKey?: kms.IKeyRef;
|
|
99
144
|
/**
|
|
100
145
|
* This table's partition indexes.
|
|
101
146
|
*/
|
|
@@ -138,4 +183,5 @@ export declare class S3Table extends TableBase {
|
|
|
138
183
|
*/
|
|
139
184
|
grantReadWrite(grantee: iam.IGrantable): iam.Grant;
|
|
140
185
|
protected generateS3PrefixForGrant(): string;
|
|
186
|
+
private createManagedBucket;
|
|
141
187
|
}
|