@aws-cdk/aws-imagebuilder-alpha 2.234.0-alpha.0 → 2.235.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.
@@ -82,6 +82,7 @@ var ImagePipelineStatus;
82
82
  class ImagePipelineBase extends cdk.Resource {
83
83
  /**
84
84
  * Grant custom actions to the given grantee for the image pipeline
85
+ * [disable-awslint:no-grants]
85
86
  *
86
87
  * @param grantee The principal
87
88
  * @param actions The list of actions
@@ -96,6 +97,7 @@ class ImagePipelineBase extends cdk.Resource {
96
97
  }
97
98
  /**
98
99
  * Grants the default permissions for building an image to the provided execution role.
100
+ * [disable-awslint:no-grants]
99
101
  *
100
102
  * @param grantee The execution role used for the image build.
101
103
  */
@@ -111,6 +113,7 @@ class ImagePipelineBase extends cdk.Resource {
111
113
  }
112
114
  /**
113
115
  * Grant read permissions to the given grantee for the image pipeline
116
+ * [disable-awslint:no-grants]
114
117
  *
115
118
  * @param grantee The principal
116
119
  */
@@ -119,6 +122,7 @@ class ImagePipelineBase extends cdk.Resource {
119
122
  }
120
123
  /**
121
124
  * Grant permissions to the given grantee to start an execution of the image pipeline
125
+ * [disable-awslint:no-grants]
122
126
  *
123
127
  * @param grantee The principal
124
128
  */
@@ -282,7 +286,7 @@ let ImagePipeline = (() => {
282
286
  ImagePipeline = _classThis = _classDescriptor.value;
283
287
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
284
288
  }
285
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ImagePipeline", version: "2.234.0-alpha.0" };
289
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ImagePipeline", version: "2.235.0-alpha.0" };
286
290
  /** Uniquely identifies this class. */
287
291
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.ImagePipeline';
288
292
  /**
@@ -394,6 +398,7 @@ let ImagePipeline = (() => {
394
398
  }
395
399
  /**
396
400
  * Grants the default permissions for building an image to the provided execution role.
401
+ * [disable-awslint:no-grants]
397
402
  *
398
403
  * @param grantee The execution role used for the image build.
399
404
  */
@@ -466,4 +471,4 @@ let ImagePipeline = (() => {
466
471
  return ImagePipeline = _classThis;
467
472
  })();
468
473
  exports.ImagePipeline = ImagePipeline;
469
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbWFnZS1waXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBbUM7QUFFbkMsaURBQWlEO0FBQ2pELDJDQUEyQztBQUMzQyxtRUFBZ0U7QUFFaEUsOEVBQThGO0FBQzlGLDBFQUEwRTtBQUcxRSxpRkFBMkc7QUFDM0csK0ZBSW1EO0FBQ25ELDJEQUF1RjtBQUl2RixNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsK0NBQStDLENBQUMsQ0FBQztBQXVTMUY7O0dBRUc7QUFDSCxJQUFZLHNCQVdYO0FBWEQsV0FBWSxzQkFBc0I7SUFDaEM7O09BRUc7SUFDSCx5RUFBK0MsQ0FBQTtJQUUvQzs7O09BR0c7SUFDSCxpSUFBdUcsQ0FBQTtBQUN6RyxDQUFDLEVBWFcsc0JBQXNCLHNDQUF0QixzQkFBc0IsUUFXakM7QUFFRDs7R0FFRztBQUNILElBQVksbUJBVVg7QUFWRCxXQUFZLG1CQUFtQjtJQUM3Qjs7T0FFRztJQUNILDBDQUFtQixDQUFBO0lBRW5COztPQUVHO0lBQ0gsNENBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQVZXLG1CQUFtQixtQ0FBbkIsbUJBQW1CLFFBVTlCO0FBRUQ7O0dBRUc7QUFDSCxNQUFlLGlCQUFrQixTQUFRLEdBQUcsQ0FBQyxRQUFRO0lBV25EOzs7OztPQUtHO0lBQ0ksS0FBSyxDQUFDLE9BQXVCLEVBQUUsR0FBRyxPQUFpQjtRQUN4RCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQzlCLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUNyQyxPQUFPLEVBQUUsT0FBTztZQUNoQixLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUMsQ0FBQztLQUNKO0lBRUQ7Ozs7T0FJRztJ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SyxTQUFTLElBQUk7b0JBQzNDLCtCQUErQixFQUFFLFFBQVEsQ0FBQyxjQUFjO2lCQUN6RCxDQUFDO2FBQ0gsQ0FBQztTQUNIO1FBRUQ7Ozs7O1dBS0c7UUFDSyx5QkFBeUIsR0FBRyxDQUNsQyxLQUF5QixFQUMwQyxFQUFFO1lBQ3JFLE1BQU0sb0JBQW9CLEdBQUc7Z0JBQzNCLEdBQUcsQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDbkYsR0FBRyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxFQUFFLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUN2RyxDQUFDO1lBRUYsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3JGLENBQUMsQ0FBQzs7WUE5TlMsdURBQWE7Ozs7O0FBQWIsc0NBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgZWNyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3InO1xuaW1wb3J0ICogYXMgZXZlbnRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ2ZuSW1hZ2VQaXBlbGluZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pbWFnZWJ1aWxkZXInO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSwgTWV0aG9kTWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vZGlzdHJpYnV0aW9uLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiwgSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9pbmZyYXN0cnVjdHVyZS1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7XG4gIGJ1aWxkSW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb24sXG4gIGJ1aWxkSW1hZ2VUZXN0c0NvbmZpZ3VyYXRpb24sXG4gIGJ1aWxkV29ya2Zsb3dzLFxufSBmcm9tICcuL3ByaXZhdGUvaW1hZ2UtYW5kLXBpcGVsaW5lLXByb3BzLWhlbHBlcic7XG5pbXBvcnQgeyBkZWZhdWx0RXhlY3V0aW9uUm9sZVBvbGljeSwgZ2V0RXhlY3V0aW9uUm9sZSB9IGZyb20gJy4vcHJpdmF0ZS9wb2xpY3ktaGVscGVyJztcbmltcG9ydCB7IElSZWNpcGVCYXNlIH0gZnJvbSAnLi9yZWNpcGUtYmFzZSc7XG5pbXBvcnQgeyBXb3JrZmxvd0NvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3dvcmtmbG93JztcblxuY29uc3QgSU1BR0VfUElQRUxJTkVfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvYXdzLWltYWdlYnVpbGRlci1hbHBoYS5JbWFnZVBpcGVsaW5lJyk7XG5cbi8qKlxuICogQW4gRUMyIEltYWdlIEJ1aWxkZXIgSW1hZ2UgUGlwZWxpbmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUltYWdlUGlwZWxpbmUgZXh0ZW5kcyBjZGsuSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUGlwZWxpbmVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUGlwZWxpbmVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKiBAcGFyYW0gYWN0aW9ucyBUaGUgbGlzdCBvZiBhY3Rpb25zXG4gICAqL1xuICBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50cyB0aGUgZGVmYXVsdCBwZXJtaXNzaW9ucyBmb3IgYnVpbGRpbmcgYW4gaW1hZ2UgdG8gdGhlIHByb3ZpZGVkIGV4ZWN1dGlvbiByb2xlLlxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgZXhlY3V0aW9uIHJvbGUgdXNlZCBmb3IgdGhlIGltYWdlIGJ1aWxkLlxuICAgKi9cbiAgZ3JhbnREZWZhdWx0RXhlY3V0aW9uUm9sZVBlcm1pc3Npb25zKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50W107XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbWFnZSBwaXBlbGluZVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50IHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIHRvIHN0YXJ0IGFuIGV4ZWN1dGlvbiBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgZ3JhbnRTdGFydEV4ZWN1dGlvbihncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIG9uRXZlbnQoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgQ1ZFIGRldGVjdGVkIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIG9uQ1ZFRGV0ZWN0ZWQoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2Ugc3RhdGUgY2hhbmdlIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIG9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIGJ1aWxkIGNvbXBsZXRpb24gZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZUJ1aWxkQ29tcGxldGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIGJ1aWxkIGZhaWx1cmUgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZUJ1aWxkRmFpbGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIHN1Y2Nlc3MgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZUJ1aWxkU3VjY2VlZGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIHBpcGVsaW5lIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZVBpcGVsaW5lQXV0b0Rpc2FibGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIHdhaXQgZm9yIGFjdGlvbiBldmVudHNcbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIG9uV2FpdEZvckFjdGlvbihpZDogc3RyaW5nLCBvcHRpb25zPzogZXZlbnRzLk9uRXZlbnRPcHRpb25zKTogZXZlbnRzLlJ1bGU7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYW4gSW1hZ2UgUGlwZWxpbmUgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbWFnZVBpcGVsaW5lUHJvcHMge1xuICAvKipcbiAgICogVGhlIHJlY2lwZSB0aGF0IGRlZmluZXMgdGhlIGJhc2UgaW1hZ2UsIGNvbXBvbmVudHMsIGFuZCBjdXN0b21pemF0aW9ucyB1c2VkIHRvIGJ1aWxkIHRoZSBpbWFnZS4gVGhpcyBjYW4gZWl0aGVyIGJlXG4gICAqIGFuIGltYWdlIHJlY2lwZSwgb3IgYSBjb250YWluZXIgcmVjaXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVjaXBlOiBJUmVjaXBlQmFzZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlIHBpcGVsaW5lLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbmFtZSBpcyBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUGlwZWxpbmVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGltYWdlIHBpcGVsaW5lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNjaGVkdWxlIG9mIHRoZSBpbWFnZSBwaXBlbGluZS4gVGhpcyBjb25maWd1cmVzIGhvdyBvZnRlbiBhbmQgd2hlbiBhIHBpcGVsaW5lIGF1dG9tYXRpY2FsbHkgY3JlYXRlcyBhIG5ld1xuICAgKiBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lLCBhIG1hbnVhbCBpbWFnZSBwaXBlbGluZSB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHNjaGVkdWxlPzogSW1hZ2VQaXBlbGluZVNjaGVkdWxlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcGlwZWxpbmUgaXMgZW5hYmxlZCB0byBiZSB0cmlnZ2VyZWQgYnkgdGhlIHByb3ZpZGVkIHNjaGVkdWxlXG4gICAqXG4gICAqIEBkZWZhdWx0IEltYWdlUGlwZWxpbmVTdGF0dXMuRU5BQkxFRFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzPzogSW1hZ2VQaXBlbGluZVN0YXR1cztcblxuICAvKipcbiAgICogVGhlIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gdXNlZCBmb3IgYnVpbGRpbmcgdGhlIGltYWdlLlxuICAgKlxuICAgKiBBIGRlZmF1bHQgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiB3aWxsIGJlIHVzZWQgaWYgb25lIGlzIG5vdCBwcm92aWRlZC5cbiAgICpcbiAgICogVGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiB3aWxsIGNyZWF0ZSBhbiBpbnN0YW5jZSBwcm9maWxlIGFuZCByb2xlIHdpdGggbWluaW1hbCBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gYnVpbGQgdGhlXG4gICAqIGltYWdlLCBhdHRhY2hlZCB0byB0aGUgRUMyIGluc3RhbmNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFuIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBjcmVhdGVkIHdpdGggdGhlIGRlZmF1bHQgc2V0dGluZ3NcbiAgICovXG4gIHJlYWRvbmx5IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbj86IElJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiB1c2VkIGZvciBkaXN0cmlidXRpbmcgdGhlIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uPzogSURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHdvcmtmbG93IGNvbmZpZ3VyYXRpb25zIHVzZWQgdG8gYnVpbGQgdGhlIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEltYWdlIEJ1aWxkZXIgd2lsbCB1c2UgYSBkZWZhdWx0IHNldCBvZiB3b3JrZmxvd3MgZm9yIHRoZSBidWlsZCB0byBidWlsZCwgdGVzdCwgYW5kIGRpc3RyaWJ1dGUgdGhlIGltYWdlXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd3M/OiBXb3JrZmxvd0NvbmZpZ3VyYXRpb25bXTtcblxuICAvKipcbiAgICogVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgdG8gcGVyZm9ybSB3b3JrZmxvdyBhY3Rpb25zIHRvIGJ1aWxkIHRoaXMgaW1hZ2UuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBJbWFnZSBCdWlsZGVyIFNlcnZpY2UgTGlua2VkIFJvbGUgKFNMUikgd2lsbCBiZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgYW5kIHVzZWQgYXMgdGhlIGV4ZWN1dGlvblxuICAgKiByb2xlLiBIb3dldmVyLCB3aGVuIHByb3ZpZGluZyBhIGN1c3RvbSBzZXQgb2YgaW1hZ2Ugd29ya2Zsb3dzIGZvciB0aGUgcGlwZWxpbmUsIGFuIGV4ZWN1dGlvbiByb2xlIHdpbGwgYmVcbiAgICogZ2VuZXJhdGVkIHdpdGggdGhlIG1pbmltYWwgcGVybWlzc2lvbnMgbmVlZGVkIHRvIGV4ZWN1dGUgdGhlIHdvcmtmbG93cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJbWFnZSBCdWlsZGVyIHdpbGwgdXNlIHRoZSBTTFIgaWYgcG9zc2libGUuIE90aGVyd2lzZSwgYW4gZXhlY3V0aW9uIHJvbGUgd2lsbCBiZSBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGV4ZWN1dGlvblJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2cgZ3JvdXAgdG8gdXNlIGZvciB0aGUgaW1hZ2UgcGlwZWxpbmUuIEJ5IGRlZmF1bHQsIGEgbG9nIGdyb3VwIHdpbGwgYmUgY3JlYXRlZCB3aXRoIHRoZSBmb3JtYXRcbiAgICogYC9hd3MvaW1hZ2VidWlsZGVyL3BpcGVsaW5lLzxwaXBlbGluZS1uYW1lPmBcbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIGxvZyBncm91cCB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUGlwZWxpbmVMb2dHcm91cD86IGxvZ3MuSUxvZ0dyb3VwO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9nIGdyb3VwIHRvIHVzZSBmb3IgaW1hZ2VzIGNyZWF0ZWQgZnJvbSB0aGUgaW1hZ2UgcGlwZWxpbmUuIEJ5IGRlZmF1bHQsIGEgbG9nIGdyb3VwIHdpbGwgYmUgY3JlYXRlZCB3aXRoIHRoZVxuICAgKiBmb3JtYXQgYC9hd3MvaW1hZ2VidWlsZGVyLzxpbWFnZS1uYW1lPmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBsb2cgZ3JvdXAgd2lsbCBiZSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBpbWFnZUxvZ0dyb3VwPzogbG9ncy5JTG9nR3JvdXA7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIEltYWdlIEJ1aWxkZXIga2VlcHMgYSBzbmFwc2hvdCBvZiB0aGUgdnVsbmVyYWJpbGl0eSBzY2FucyB0aGF0IEFtYXpvbiBJbnNwZWN0b3IgcnVucyBhZ2FpbnN0IHRoZVxuICAgKiBidWlsZCBpbnN0YW5jZSB3aGVuIHlvdSBjcmVhdGUgYSBuZXcgaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpbWFnZVNjYW5uaW5nRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBjb250YWluZXIgcmVwb3NpdG9yeSB0aGF0IEFtYXpvbiBJbnNwZWN0b3Igc2NhbnMgdG8gaWRlbnRpZnkgZmluZGluZ3MgZm9yIHlvdXIgY29udGFpbmVyIGltYWdlcy4gSWYgYVxuICAgKiByZXBvc2l0b3J5IGlzIG5vdCBwcm92aWRlZCwgSW1hZ2UgQnVpbGRlciBjcmVhdGVzIGEgcmVwb3NpdG9yeSBuYW1lZCBgaW1hZ2UtYnVpbGRlci1pbWFnZS1zY2FubmluZy1yZXBvc2l0b3J5YFxuICAgKiBmb3IgdnVsbmVyYWJpbGl0eSBzY2FubmluZy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBpZiBzY2FubmluZyBpcyBlbmFibGVkLCBhIHJlcG9zaXRvcnkgd2lsbCBiZSBjcmVhdGVkIGJ5IEltYWdlIEJ1aWxkZXIgaWYgb25lIGlzIG5vdCBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VTY2FubmluZ0VjclJlcG9zaXRvcnk/OiBlY3IuSVJlcG9zaXRvcnk7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWdzIGZvciBJbWFnZSBCdWlsZGVyIHRvIGFwcGx5IHRvIHRoZSBvdXRwdXQgY29udGFpbmVyIGltYWdlIHRoYXQgQW1hem9uIEluc3BlY3RvciBzY2Fucy5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VTY2FubmluZ0VjclRhZ3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSWYgZW5hYmxlZCwgY29sbGVjdHMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW1hZ2UgYmVpbmcgY3JlYXRlZCwgaW5jbHVkaW5nIHRoZSBvcGVyYXRpbmcgc3lzdGVtIChPUylcbiAgICogdmVyc2lvbiBhbmQgcGFja2FnZSBsaXN0IGZvciB0aGUgQU1JLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBydW4gdGVzdHMgYWZ0ZXIgYnVpbGRpbmcgYW4gaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlVGVzdHNFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHRhZ3MgdG8gYXBwbHkgdG8gdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIFRoZSBzY2hlZHVsZSBzZXR0aW5ncyBmb3IgdGhlIGltYWdlIHBpcGVsaW5lLCB3aGljaCBkZWZpbmVzIHdoZW4gYSBwaXBlbGluZSBzaG91bGQgYmUgdHJpZ2dlcmVkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VQaXBlbGluZVNjaGVkdWxlIHtcbiAgLyoqXG4gICAqIFRoZSBzY2hlZHVsZSBleHByZXNzaW9uIHRvIHVzZS4gVGhpcyBjYW4gZWl0aGVyIGJlIGEgY3JvbiBleHByZXNzaW9uIG9yIGEgcmF0ZSBleHByZXNzaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhwcmVzc2lvbjogZXZlbnRzLlNjaGVkdWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGZhaWx1cmVzIGFsbG93ZWQgYmVmb3JlIHRoZSBwaXBlbGluZSBpcyBhdXRvbWF0aWNhbGx5IGRpc2FibGVkLiBUaGlzIHZhbHVlIG11c3QgYmVcbiAgICogYmV0d2VlbiAxIGFuZCAxMC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhdXRvLWRpc2FibGUgcG9saWN5IGlzIGNvbmZpZ3VyZWQgYW5kIHRoZSBwaXBlbGluZSBpcyBub3QgYXV0b21hdGljYWxseSBkaXNhYmxlZCBvbiBjb25zZWN1dGl2ZVxuICAgKiBmYWlsdXJlc1xuICAgKi9cbiAgcmVhZG9ubHkgYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFydCBjb25kaXRpb24gZm9yIHRoZSBwaXBlbGluZSwgaW5kaWNhdGluZyB0aGUgY29uZGl0aW9uIHVuZGVyIHdoaWNoIGEgcGlwZWxpbmUgc2hvdWxkIGJlIHRyaWdnZXJlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgU2NoZWR1bGVTdGFydENvbmRpdGlvbi5FWFBSRVNTSU9OX01BVENIX0FORF9ERVBFTkRFTkNZX1VQREFURVNfQVZBSUxBQkxFXG4gICAqL1xuICByZWFkb25seSBzdGFydENvbmRpdGlvbj86IFNjaGVkdWxlU3RhcnRDb25kaXRpb247XG59XG5cbi8qKlxuICogVGhlIHN0YXJ0IGNvbmRpdGlvbiBmb3IgdGhlIHBpcGVsaW5lLCBpbmRpY2F0aW5nIHRoZSBjb25kaXRpb24gdW5kZXIgd2hpY2ggYSBwaXBlbGluZSBzaG91bGQgYmUgdHJpZ2dlcmVkLlxuICovXG5leHBvcnQgZW51bSBTY2hlZHVsZVN0YXJ0Q29uZGl0aW9uIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0byB0cmlnZ2VyIGEgcGlwZWxpbmUgd2hlbmV2ZXIgaXRzIHNjaGVkdWxlIGlzIG1ldFxuICAgKi9cbiAgRVhQUkVTU0lPTl9NQVRDSF9PTkxZID0gJ0VYUFJFU1NJT05fTUFUQ0hfT05MWScsXG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0byB0cmlnZ2VyIGEgcGlwZWxpbmUgd2hlbmV2ZXIgaXRzIHNjaGVkdWxlIGlzIG1ldCwgYW5kIHRoZXJlIGFyZSBtYXRjaGluZyBkZXBlbmRlbmN5IHVwZGF0ZXMgYXZhaWxhYmxlLFxuICAgKiBzdWNoIGFzIG5ldyB2ZXJzaW9ucyBvZiBjb21wb25lbnRzIG9yIGltYWdlcyB0byB1c2UgaW4gdGhlIHBpcGVsaW5lIGJ1aWxkLlxuICAgKi9cbiAgRVhQUkVTU0lPTl9NQVRDSF9BTkRfREVQRU5ERU5DWV9VUERBVEVTX0FWQUlMQUJMRSA9ICdFWFBSRVNTSU9OX01BVENIX0FORF9ERVBFTkRFTkNZX1VQREFURVNfQVZBSUxBQkxFJyxcbn1cblxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcGlwZWxpbmUgaXMgZW5hYmxlZCB0byBiZSB0cmlnZ2VyZWQgYnkgdGhlIHByb3ZpZGVkIHNjaGVkdWxlXG4gKi9cbmV4cG9ydCBlbnVtIEltYWdlUGlwZWxpbmVTdGF0dXMge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIHBpcGVsaW5lIGlzIGVuYWJsZWQgZm9yIHNjaGVkdWxpbmdcbiAgICovXG4gIEVOQUJMRUQgPSAnRU5BQkxFRCcsXG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoZSBwaXBlbGluZSBpcyBkaXNhYmxlZCBhbmQgd2lsbCBub3QgYmUgdHJpZ2dlcmVkIG9uIHRoZSBzY2hlZHVsZVxuICAgKi9cbiAgRElTQUJMRUQgPSAnRElTQUJMRUQnLFxufVxuXG4vKipcbiAqIEEgbmV3IG9yIGltcG9ydGVkIEltYWdlIFBpcGVsaW5lXG4gKi9cbmFic3RyYWN0IGNsYXNzIEltYWdlUGlwZWxpbmVCYXNlIGV4dGVuZHMgY2RrLlJlc291cmNlIGltcGxlbWVudHMgSUltYWdlUGlwZWxpbmUge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGltYWdlUGlwZWxpbmVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBpbWFnZVBpcGVsaW5lTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCBjdXN0b20gYWN0aW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlOiBncmFudGVlLFxuICAgICAgcmVzb3VyY2VBcm5zOiBbdGhpcy5pbWFnZVBpcGVsaW5lQXJuXSxcbiAgICAgIGFjdGlvbnM6IGFjdGlvbnMsXG4gICAgICBzY29wZTogdGhpcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgdGhlIGRlZmF1bHQgcGVybWlzc2lvbnMgZm9yIGJ1aWxkaW5nIGFuIGltYWdlIHRvIHRoZSBwcm92aWRlZCBleGVjdXRpb24gcm9sZS5cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZC5cbiAgICovXG4gIHB1YmxpYyBncmFudERlZmF1bHRFeGVjdXRpb25Sb2xlUGVybWlzc2lvbnMoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnRbXSB7XG4gICAgY29uc3QgcG9saWNpZXMgPSBkZWZhdWx0RXhlY3V0aW9uUm9sZVBvbGljeSh0aGlzKTtcbiAgICByZXR1cm4gcG9saWNpZXMubWFwKChwb2xpY3kpID0+XG4gICAgICBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgICBncmFudGVlOiBncmFudGVlLFxuICAgICAgICByZXNvdXJjZUFybnM6IHBvbGljeS5yZXNvdXJjZXMsXG4gICAgICAgIGFjdGlvbnM6IHBvbGljeS5hY3Rpb25zLFxuICAgICAgICBjb25kaXRpb25zOiBwb2xpY3kuY29uZGl0aW9ucyxcbiAgICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbWFnZSBwaXBlbGluZVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAnaW1hZ2VidWlsZGVyOkdldEltYWdlUGlwZWxpbmUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSB0byBzdGFydCBhbiBleGVjdXRpb24gb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIHB1YmxpYyBncmFudFN0YXJ0RXhlY3V0aW9uKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAnaW1hZ2VidWlsZGVyOlN0YXJ0SW1hZ2VQaXBlbGluZUV4ZWN1dGlvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25FdmVudChpZDogc3RyaW5nLCBvcHRpb25zOiBldmVudHMuT25FdmVudE9wdGlvbnMgPSB7fSk6IGV2ZW50cy5SdWxlIHtcbiAgICBjb25zdCBydWxlID0gbmV3IGV2ZW50cy5SdWxlKHRoaXMsIGlkLCBvcHRpb25zKTtcbiAgICBydWxlLmFkZFRhcmdldChvcHRpb25zLnRhcmdldCk7XG4gICAgcnVsZS5hZGRFdmVudFBhdHRlcm4oe1xuICAgICAgc291cmNlOiBbJ2F3cy5pbWFnZWJ1aWxkZXInXSxcbiAgICAgIC4uLihvcHRpb25zLmV2ZW50UGF0dGVybj8ucmVzb3VyY2VzPy5sZW5ndGggJiYgeyByZXNvdXJjZXM6IG9wdGlvbnMuZXZlbnRQYXR0ZXJuLnJlc291cmNlcyB9KSxcbiAgICAgIC4uLihvcHRpb25zLmV2ZW50UGF0dGVybj8uZGV0YWlsVHlwZT8ubGVuZ3RoICYmIHsgZGV0YWlsVHlwZTogb3B0aW9ucy5ldmVudFBhdHRlcm4uZGV0YWlsVHlwZSB9KSxcbiAgICAgIC4uLihvcHRpb25zLmV2ZW50UGF0dGVybj8uZGV0YWlsICE9PSB1bmRlZmluZWQgJiYgeyBkZXRhaWw6IG9wdGlvbnMuZXZlbnRQYXR0ZXJuLmRldGFpbCB9KSxcbiAgICB9KTtcbiAgICByZXR1cm4gcnVsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgQ1ZFIGRldGVjdGVkIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyBvbkNWRURldGVjdGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uRXZlbnQoaWQsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBldmVudFBhdHRlcm46IHtcbiAgICAgICAgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4sXG4gICAgICAgIGRldGFpbFR5cGU6IFsnRUMyIEltYWdlIEJ1aWxkZXIgQ1ZFIERldGVjdGVkJ10sXG4gICAgICAgIHJlc291cmNlczogW3RoaXMuaW1hZ2VQaXBlbGluZUFybl0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBpbWFnZSBzdGF0ZSBjaGFuZ2UgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgcHVibGljIG9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uRXZlbnQoaWQsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBldmVudFBhdHRlcm46IHsgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4sIGRldGFpbFR5cGU6IFsnRUMyIEltYWdlIEJ1aWxkZXIgSW1hZ2UgU3RhdGUgQ2hhbmdlJ10gfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2UgYnVpbGQgY29tcGxldGlvbiBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25JbWFnZUJ1aWxkQ29tcGxldGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuLFxuICAgICAgICBkZXRhaWw6IHsgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4/LmRldGFpbCwgc3RhdGU6IHsgc3RhdHVzOiBbJ0FWQUlMQUJMRScsICdDQU5DRUxMRUQnLCAnRkFJTEVEJ10gfSB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2UgYnVpbGQgZmFpbHVyZSBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25JbWFnZUJ1aWxkRmFpbGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuLFxuICAgICAgICBkZXRhaWw6IHsgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4/LmRldGFpbCwgc3RhdGU6IHsgc3RhdHVzOiBbJ0ZBSUxFRCddIH0gfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIHN1Y2Nlc3MgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgcHVibGljIG9uSW1hZ2VCdWlsZFN1Y2NlZWRlZChpZDogc3RyaW5nLCBvcHRpb25zOiBldmVudHMuT25FdmVudE9wdGlvbnMgPSB7fSk6IGV2ZW50cy5SdWxlIHtcbiAgICByZXR1cm4gdGhpcy5vbkltYWdlQnVpbGRTdGF0ZUNoYW5nZShpZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICAuLi5vcHRpb25zLmV2ZW50UGF0dGVybixcbiAgICAgICAgZGV0YWlsOiB7IC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuPy5kZXRhaWwsIHN0YXRlOiB7IHN0YXR1czogWydBVkFJTEFCTEUnXSB9IH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBpbWFnZSBwaXBlbGluZSBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyBvbkltYWdlUGlwZWxpbmVBdXRvRGlzYWJsZWQoaWQ6IHN0cmluZywgb3B0aW9uczogZXZlbnRzLk9uRXZlbnRPcHRpb25zID0ge30pOiBldmVudHMuUnVsZSB7XG4gICAgcmV0dXJuIHRoaXMub25FdmVudChpZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICBkZXRhaWxUeXBlOiBbJ0VDMiBJbWFnZSBCdWlsZGVyIEltYWdlIFBpcGVsaW5lIEF1dG9tYXRpY2FsbHkgRGlzYWJsZWQnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5pbWFnZVBpcGVsaW5lQXJuXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIHdhaXQgZm9yIGFjdGlvbiBldmVudHNcbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyBvbldhaXRGb3JBY3Rpb24oaWQ6IHN0cmluZywgb3B0aW9uczogZXZlbnRzLk9uRXZlbnRPcHRpb25zID0ge30pOiBldmVudHMuUnVsZSB7XG4gICAgcmV0dXJuIHRoaXMub25FdmVudChpZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGV2ZW50UGF0dGVybjogeyAuLi5vcHRpb25zLmV2ZW50UGF0dGVybiwgZGV0YWlsVHlwZTogWydFQzIgSW1hZ2UgQnVpbGRlciBXb3JrZmxvdyBTdGVwIFdhaXRpbmcnXSB9LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBFQzIgSW1hZ2UgQnVpbGRlciBJbWFnZSBQaXBlbGluZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9tYW5hZ2UtcGlwZWxpbmVzLmh0bWxcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIEltYWdlUGlwZWxpbmUgZXh0ZW5kcyBJbWFnZVBpcGVsaW5lQmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWltYWdlYnVpbGRlci1hbHBoYS5JbWFnZVBpcGVsaW5lJztcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGltYWdlIHBpcGVsaW5lIGdpdmVuIGl0cyBBUk4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbWFnZVBpcGVsaW5lQXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGltYWdlUGlwZWxpbmVBcm46IHN0cmluZyk6IElJbWFnZVBpcGVsaW5lIHtcbiAgICBjb25zdCBpbWFnZVBpcGVsaW5lTmFtZSA9IGNkay5TdGFjay5vZihzY29wZSkuc3BsaXRBcm4oXG4gICAgICBpbWFnZVBpcGVsaW5lQXJuLFxuICAgICAgY2RrLkFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FLFxuICAgICkucmVzb3VyY2VOYW1lITtcblxuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIEltYWdlUGlwZWxpbmVCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpbWFnZVBpcGVsaW5lQXJuID0gaW1hZ2VQaXBlbGluZUFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpbWFnZVBpcGVsaW5lTmFtZSA9IGltYWdlUGlwZWxpbmVOYW1lO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGltYWdlIHBpcGVsaW5lIGdpdmVuIGl0cyBuYW1lLiBUaGUgcHJvdmlkZWQgbmFtZSBtdXN0IGJlIG5vcm1hbGl6ZWQgYnkgY29udmVydGluZyBhbGxcbiAgICogYWxwaGFiZXRpY2FsIGNoYXJhY3RlcnMgdG8gbG93ZXJjYXNlLCBhbmQgcmVwbGFjaW5nIGFsbCBzcGFjZXMgYW5kIHVuZGVyc2NvcmVzIHdpdGggaHlwaGVucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUltYWdlUGlwZWxpbmVOYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGltYWdlUGlwZWxpbmVOYW1lOiBzdHJpbmcpOiBJSW1hZ2VQaXBlbGluZSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbUltYWdlUGlwZWxpbmVBcm4oXG4gICAgICBzY29wZSxcbiAgICAgIGlkLFxuICAgICAgY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgICAgcmVzb3VyY2U6ICdpbWFnZS1waXBlbGluZScsXG4gICAgICAgIHJlc291cmNlTmFtZTogaW1hZ2VQaXBlbGluZU5hbWUsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYW4gSW1hZ2VQaXBlbGluZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNJbWFnZVBpcGVsaW5lKHg6IGFueSk6IHggaXMgSW1hZ2VQaXBlbGluZSB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIElNQUdFX1BJUEVMSU5FX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW1hZ2VQaXBlbGluZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpbWFnZVBpcGVsaW5lTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb246IElJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBleGVjdXRpb24gcm9sZSB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGQuIElmIHRoZXJlIGlzIG5vIGV4ZWN1dGlvbiByb2xlLCB0aGVuIHRoZSBidWlsZCB3aWxsIGJlIGV4ZWN1dGVkIHdpdGhcbiAgICogdGhlIEFXU1NlcnZpY2VSb2xlRm9ySW1hZ2VCdWlsZGVyIHNlcnZpY2UtbGlua2VkIHJvbGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZXhlY3V0aW9uUm9sZT86IGlhbS5JUm9sZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBJbWFnZVBpcGVsaW5lUHJvcHM7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJbWFnZVBpcGVsaW5lUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTpcbiAgICAgICAgcHJvcHMuaW1hZ2VQaXBlbGluZU5hbWUgPz9cbiAgICAgICAgY2RrLkxhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PlxuICAgICAgICAgICAgY2RrLk5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgICAgICAgICAgIG1heExlbmd0aDogMTI4LFxuICAgICAgICAgICAgICBzZXBhcmF0b3I6ICctJyxcbiAgICAgICAgICAgICAgYWxsb3dlZFNwZWNpYWxDaGFyYWN0ZXJzOiAnLScsXG4gICAgICAgICAgICB9KS50b0xvd2VyQ2FzZSgpLCAvLyBFbmZvcmNlIGxvd2VyY2FzZSBmb3IgdGhlIGF1dG8tZ2VuZXJhdGVkIGZhbGxiYWNrXG4gICAgICAgIH0pLFxuICAgIH0pO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIElNQUdFX1BJUEVMSU5FX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMudmFsaWRhdGVJbWFnZVBpcGVsaW5lTmFtZSgpO1xuXG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgdGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gPVxuICAgICAgcHJvcHMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uID8/IG5ldyBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24odGhpcywgJ0luZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbicpO1xuICAgIHRoaXMuZXhlY3V0aW9uUm9sZSA9IGdldEV4ZWN1dGlvblJvbGUoXG4gICAgICB0aGlzLFxuICAgICAgKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKSA9PiB0aGlzLmdyYW50RGVmYXVsdEV4ZWN1dGlvblJvbGVQZXJtaXNzaW9ucyhncmFudGVlKSxcbiAgICAgIHByb3BzLFxuICAgICk7XG5cbiAgICBpZiAoSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLmlzSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKSkge1xuICAgICAgdGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24uX2JpbmQoeyBpc0NvbnRhaW5lckJ1aWxkOiBwcm9wcy5yZWNpcGUuX2lzQ29udGFpbmVyUmVjaXBlKCkgfSk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnJlY2lwZS5faXNJbWFnZVJlY2lwZSgpICYmIHByb3BzLnJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3RoZSByZWNpcGUgY2Fubm90IGJlIGJvdGggYW4gSUltYWdlUmVjaXBlIGFuZCBhbiBJQ29udGFpbmVyUmVjaXBlJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKCFwcm9wcy5yZWNpcGUuX2lzSW1hZ2VSZWNpcGUoKSAmJiAhcHJvcHMucmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcigndGhlIHJlY2lwZSBtdXN0IGVpdGhlciBiZSBhbiBJSW1hZ2VSZWNpcGUgb3IgSUNvbnRhaW5lclJlY2lwZScsIHRoaXMpO1xuICAgIH1cblxuICAgIGNvbnN0IGltYWdlUGlwZWxpbmUgPSBuZXcgQ2ZuSW1hZ2VQaXBlbGluZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBuYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIC4uLihwcm9wcy5yZWNpcGUuX2lzSW1hZ2VSZWNpcGUoKSAmJiB7IGltYWdlUmVjaXBlQXJuOiBwcm9wcy5yZWNpcGUuaW1hZ2VSZWNpcGVBcm4gfSksXG4gICAgICAuLi4ocHJvcHMucmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpICYmIHsgY29udGFpbmVyUmVjaXBlQXJuOiBwcm9wcy5yZWNpcGUuY29udGFpbmVyUmVjaXBlQXJuIH0pLFxuICAgICAgLi4uKHByb3BzLnN0YXR1cyAhPT0gdW5kZWZpbmVkICYmIHsgc3RhdHVzOiBwcm9wcy5zdGF0dXMgfSksXG4gICAgICBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm46IHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkFybixcbiAgICAgIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm46IHByb3BzLmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24/LmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm4sXG4gICAgICBlbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkOiBwcm9wcy5lbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkLFxuICAgICAgZXhlY3V0aW9uUm9sZTogdGhpcy5leGVjdXRpb25Sb2xlPy5yb2xlQXJuLFxuICAgICAgc2NoZWR1bGU6IHRoaXMuYnVpbGRTY2hlZHVsZShwcm9wcyksXG4gICAgICBsb2dnaW5nQ29uZmlndXJhdGlvbjogdGhpcy5idWlsZExvZ2dpbmdDb25maWd1cmF0aW9uKHByb3BzKSxcbiAgICAgIGltYWdlVGVzdHNDb25maWd1cmF0aW9uOiBidWlsZEltYWdlVGVzdHNDb25maWd1cmF0aW9uPFxuICAgICAgICBJbWFnZVBpcGVsaW5lUHJvcHMsXG4gICAgICAgIENmbkltYWdlUGlwZWxpbmUuSW1hZ2VUZXN0c0NvbmZpZ3VyYXRpb25Qcm9wZXJ0eVxuICAgICAgPihwcm9wcyksXG4gICAgICBpbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbjogYnVpbGRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbjxcbiAgICAgICAgSW1hZ2VQaXBlbGluZVByb3BzLFxuICAgICAgICBDZm5JbWFnZVBpcGVsaW5lLkltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uUHJvcGVydHlcbiAgICAgID4odGhpcywgcHJvcHMpLFxuICAgICAgd29ya2Zsb3dzOiBidWlsZFdvcmtmbG93czxJbWFnZVBpcGVsaW5lUHJvcHMsIENmbkltYWdlUGlwZWxpbmUuV29ya2Zsb3dDb25maWd1cmF0aW9uUHJvcGVydHlbXT4ocHJvcHMpLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICB9KTtcblxuICAgIHRoaXMuaW1hZ2VQaXBlbGluZU5hbWUgPSB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZShpbWFnZVBpcGVsaW5lLmF0dHJOYW1lKTtcbiAgICB0aGlzLmltYWdlUGlwZWxpbmVBcm4gPSB0aGlzLmdldFJlc291cmNlQXJuQXR0cmlidXRlKGltYWdlUGlwZWxpbmUuYXR0ckFybiwge1xuICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICByZXNvdXJjZTogJ2ltYWdlLXBpcGVsaW5lJyxcbiAgICAgIHJlc291cmNlTmFtZTogdGhpcy5waHlzaWNhbE5hbWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHRoZSBkZWZhdWx0IHBlcm1pc3Npb25zIGZvciBidWlsZGluZyBhbiBpbWFnZSB0byB0aGUgcHJvdmlkZWQgZXhlY3V0aW9uIHJvbGUuXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBleGVjdXRpb24gcm9sZSB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGQuXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgZ3JhbnREZWZhdWx0RXhlY3V0aW9uUm9sZVBlcm1pc3Npb25zKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50W10ge1xuICAgIGNvbnN0IHBvbGljaWVzID0gZGVmYXVsdEV4ZWN1dGlvblJvbGVQb2xpY3kodGhpcywgdGhpcy5wcm9wcyk7XG4gICAgcmV0dXJuIHBvbGljaWVzLm1hcCgocG9saWN5KSA9PlxuICAgICAgaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgICAgZ3JhbnRlZTogZ3JhbnRlZSxcbiAgICAgICAgcmVzb3VyY2VBcm5zOiBwb2xpY3kucmVzb3VyY2VzLFxuICAgICAgICBhY3Rpb25zOiBwb2xpY3kuYWN0aW9ucyxcbiAgICAgICAgY29uZGl0aW9uczogcG9saWN5LmNvbmRpdGlvbnMsXG4gICAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVJbWFnZVBpcGVsaW5lTmFtZSgpIHtcbiAgICBpZiAoY2RrLlRva2VuLmlzVW5yZXNvbHZlZCh0aGlzLnBoeXNpY2FsTmFtZSkpIHtcbiAgICAgIHJldHVybjsgLy8gQ2Fubm90IHZhbGlkYXRlIHVucmVzb2x2ZWQgdG9rZW5zLCBnaXZlbiB0aGVpciBhY3R1YWwgdmFsdWUgaXMgcmVuZGVyZWQgYXQgZGVwbG95bWVudCB0aW1lXG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmxlbmd0aCA+IDEyOCkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBpbWFnZVBpcGVsaW5lTmFtZSBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gMTI4IGNoYXJhY3RlcnMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJyAnKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBpbWFnZVBpcGVsaW5lTmFtZSBjYW5ub3QgY29udGFpbiBzcGFjZXMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJ18nKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBpbWFnZVBpcGVsaW5lTmFtZSBjYW5ub3QgY29udGFpbiB1bmRlcnNjb3JlcycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZSAhPT0gdGhpcy5waHlzaWNhbE5hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBpbWFnZVBpcGVsaW5lTmFtZSBtdXN0IGJlIGxvd2VyY2FzZScsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRTY2hlZHVsZShwcm9wczogSW1hZ2VQaXBlbGluZVByb3BzKTogQ2ZuSW1hZ2VQaXBlbGluZS5TY2hlZHVsZVByb3BlcnR5IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzY2hlZHVsZSA9IHByb3BzLnNjaGVkdWxlO1xuICAgIGlmICghc2NoZWR1bGUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKHNjaGVkdWxlLmF1dG9EaXNhYmxlRmFpbHVyZUNvdW50ICE9PSB1bmRlZmluZWQgJiYgIWNkay5Ub2tlbi5pc1VucmVzb2x2ZWQoc2NoZWR1bGUuYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQpKSB7XG4gICAgICBpZiAoc2NoZWR1bGUuYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQgPCAxIHx8IHNjaGVkdWxlLmF1dG9EaXNhYmxlRmFpbHVyZUNvdW50ID4gMTApIHtcbiAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3RoZSBhdXRvRGlzYWJsZUZhaWx1cmVDb3VudCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMTAnLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2NoZWR1bGVFeHByZXNzaW9uOiBzY2hlZHVsZS5leHByZXNzaW9uLmV4cHJlc3Npb25TdHJpbmcsXG4gICAgICAuLi4oc2NoZWR1bGUuYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQgIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgIGF1dG9EaXNhYmxlUG9saWN5OiB7XG4gICAgICAgICAgZmFpbHVyZUNvdW50OiBzY2hlZHVsZS5hdXRvRGlzYWJsZUZhaWx1cmVDb3VudCxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgLi4uKHNjaGVkdWxlLnN0YXJ0Q29uZGl0aW9uICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICBwaXBlbGluZUV4ZWN1dGlvblN0YXJ0Q29uZGl0aW9uOiBzY2hlZHVsZS5zdGFydENvbmRpdGlvbixcbiAgICAgIH0pLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBsb2dnaW5nQ29uZmlndXJhdGlvbiBwcm9wZXJ0eSBpbnRvIHRoZSBgTG9nZ2luZ0NvbmZpZ3VyYXRpb25gIHR5cGUgaW4gdGhlIENsb3VkRm9ybWF0aW9uIEwxXG4gICAqIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBQcm9wcyBpbnB1dCBmb3IgdGhlIGNvbnN0cnVjdFxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZExvZ2dpbmdDb25maWd1cmF0aW9uID0gKFxuICAgIHByb3BzOiBJbWFnZVBpcGVsaW5lUHJvcHMsXG4gICk6IENmbkltYWdlUGlwZWxpbmUuUGlwZWxpbmVMb2dnaW5nQ29uZmlndXJhdGlvblByb3BlcnR5IHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBsb2dnaW5nQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgIC4uLihwcm9wcy5pbWFnZUxvZ0dyb3VwICYmIHsgaW1hZ2VMb2dHcm91cE5hbWU6IHByb3BzLmltYWdlTG9nR3JvdXAubG9nR3JvdXBOYW1lIH0pLFxuICAgICAgLi4uKHByb3BzLmltYWdlUGlwZWxpbmVMb2dHcm91cCAmJiB7IHBpcGVsaW5lTG9nR3JvdXBOYW1lOiBwcm9wcy5pbWFnZVBpcGVsaW5lTG9nR3JvdXAubG9nR3JvdXBOYW1lIH0pLFxuICAgIH07XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMobG9nZ2luZ0NvbmZpZ3VyYXRpb24pLmxlbmd0aCA/IGxvZ2dpbmdDb25maWd1cmF0aW9uIDogdW5kZWZpbmVkO1xuICB9O1xufVxuIl19
474
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbWFnZS1waXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBbUM7QUFFbkMsaURBQWlEO0FBQ2pELDJDQUEyQztBQUMzQyxtRUFBZ0U7QUFFaEUsOEVBQThGO0FBQzlGLDBFQUEwRTtBQUcxRSxpRkFBMkc7QUFDM0csK0ZBSW1EO0FBQ25ELDJEQUF1RjtBQUl2RixNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsK0NBQStDLENBQUMsQ0FBQztBQXVTMUY7O0dBRUc7QUFDSCxJQUFZLHNCQVdYO0FBWEQsV0FBWSxzQkFBc0I7SUFDaEM7O09BRUc7SUFDSCx5RUFBK0MsQ0FBQTtJQUUvQzs7O09BR0c7SUFDSCxpSUFBdUcsQ0FBQTtBQUN6RyxDQUFDLEVBWFcsc0JBQXNCLHNDQUF0QixzQkFBc0IsUUFXakM7QUFFRDs7R0FFRztBQUNILElBQVksbUJBVVg7QUFWRCxXQUFZLG1CQUFtQjtJQUM3Qjs7T0FFRztJQUNILDBDQUFtQixDQUFBO0lBRW5COztPQUVHO0lBQ0gsNENBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQVZXLG1CQUFtQixtQ0FBbkIsbUJBQW1CLFFBVTlCO0FBRUQ7O0dBRUc7QUFDSCxNQUFlLGlCQUFrQixTQUFRLEdBQUcsQ0FBQyxRQUFRO0lBV25EOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxPQUF1QixFQUFFLEdBQUcsT0FBaUI7UUFDeEQsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztZQUM5QixPQUFPLEVBQUUsT0FBTztZQUNoQixZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDckMsT0FBTyxFQUFFLE9BQU87WUFDaEIsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQUM7S0FDSjtJQUVEOzs7OztPQUtH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YyxLQUFLLFNBQVMsSUFBSTtvQkFDM0MsK0JBQStCLEVBQUUsUUFBUSxDQUFDLGNBQWM7aUJBQ3pELENBQUM7YUFDSCxDQUFDO1NBQ0g7UUFFRDs7Ozs7V0FLRztRQUNLLHlCQUF5QixHQUFHLENBQ2xDLEtBQXlCLEVBQzBDLEVBQUU7WUFDckUsTUFBTSxvQkFBb0IsR0FBRztnQkFDM0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksRUFBRSxpQkFBaUIsRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNuRixHQUFHLENBQUMsS0FBSyxDQUFDLHFCQUFxQixJQUFJLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxDQUFDO2FBQ3ZHLENBQUM7WUFFRixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDckYsQ0FBQyxDQUFDOztZQS9OUyx1REFBYTs7Ozs7QUFBYixzQ0FBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBlY3IgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcic7XG5pbXBvcnQgKiBhcyBldmVudHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBDZm5JbWFnZVBpcGVsaW5lIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWltYWdlYnVpbGRlcic7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhLCBNZXRob2RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElEaXN0cmlidXRpb25Db25maWd1cmF0aW9uIH0gZnJvbSAnLi9kaXN0cmlidXRpb24tY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBJSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLCBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2luZnJhc3RydWN0dXJlLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtcbiAgYnVpbGRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbixcbiAgYnVpbGRJbWFnZVRlc3RzQ29uZmlndXJhdGlvbixcbiAgYnVpbGRXb3JrZmxvd3MsXG59IGZyb20gJy4vcHJpdmF0ZS9pbWFnZS1hbmQtcGlwZWxpbmUtcHJvcHMtaGVscGVyJztcbmltcG9ydCB7IGRlZmF1bHRFeGVjdXRpb25Sb2xlUG9saWN5LCBnZXRFeGVjdXRpb25Sb2xlIH0gZnJvbSAnLi9wcml2YXRlL3BvbGljeS1oZWxwZXInO1xuaW1wb3J0IHsgSVJlY2lwZUJhc2UgfSBmcm9tICcuL3JlY2lwZS1iYXNlJztcbmltcG9ydCB7IFdvcmtmbG93Q29uZmlndXJhdGlvbiB9IGZyb20gJy4vd29ya2Zsb3cnO1xuXG5jb25zdCBJTUFHRV9QSVBFTElORV9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay9hd3MtaW1hZ2VidWlsZGVyLWFscGhhLkltYWdlUGlwZWxpbmUnKTtcblxuLyoqXG4gKiBBbiBFQzIgSW1hZ2UgQnVpbGRlciBJbWFnZSBQaXBlbGluZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJSW1hZ2VQaXBlbGluZSBleHRlbmRzIGNkay5JUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VQaXBlbGluZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VQaXBlbGluZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogR3JhbnQgY3VzdG9tIGFjdGlvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbWFnZSBwaXBlbGluZVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBhY3Rpb25zIFRoZSBsaXN0IG9mIGFjdGlvbnNcbiAgICovXG4gIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnRzIHRoZSBkZWZhdWx0IHBlcm1pc3Npb25zIGZvciBidWlsZGluZyBhbiBpbWFnZSB0byB0aGUgcHJvdmlkZWQgZXhlY3V0aW9uIHJvbGUuXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBleGVjdXRpb24gcm9sZSB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGQuXG4gICAqL1xuICBncmFudERlZmF1bHRFeGVjdXRpb25Sb2xlUGVybWlzc2lvbnMoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnRbXTtcblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgdG8gc3RhcnQgYW4gZXhlY3V0aW9uIG9mIHRoZSBpbWFnZSBwaXBlbGluZVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBncmFudFN0YXJ0RXhlY3V0aW9uKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25FdmVudChpZDogc3RyaW5nLCBvcHRpb25zPzogZXZlbnRzLk9uRXZlbnRPcHRpb25zKTogZXZlbnRzLlJ1bGU7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBDVkUgZGV0ZWN0ZWQgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25DVkVEZXRlY3RlZChpZDogc3RyaW5nLCBvcHRpb25zPzogZXZlbnRzLk9uRXZlbnRPcHRpb25zKTogZXZlbnRzLlJ1bGU7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBpbWFnZSBzdGF0ZSBjaGFuZ2UgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZUJ1aWxkU3RhdGVDaGFuZ2UoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2UgYnVpbGQgY29tcGxldGlvbiBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBvbkltYWdlQnVpbGRDb21wbGV0ZWQoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2UgYnVpbGQgZmFpbHVyZSBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBvbkltYWdlQnVpbGRGYWlsZWQoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2Ugc3VjY2VzcyBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBvbkltYWdlQnVpbGRTdWNjZWVkZWQoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2UgcGlwZWxpbmUgYXV0b21hdGljYWxseSBkaXNhYmxlZCBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBvbkltYWdlUGlwZWxpbmVBdXRvRGlzYWJsZWQoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgd2FpdCBmb3IgYWN0aW9uIGV2ZW50c1xuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25XYWl0Rm9yQWN0aW9uKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhbiBJbWFnZSBQaXBlbGluZSByZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlUGlwZWxpbmVQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgcmVjaXBlIHRoYXQgZGVmaW5lcyB0aGUgYmFzZSBpbWFnZSwgY29tcG9uZW50cywgYW5kIGN1c3RvbWl6YXRpb25zIHVzZWQgdG8gYnVpbGQgdGhlIGltYWdlLiBUaGlzIGNhbiBlaXRoZXIgYmVcbiAgICogYW4gaW1hZ2UgcmVjaXBlLCBvciBhIGNvbnRhaW5lciByZWNpcGUuXG4gICAqL1xuICByZWFkb25seSByZWNpcGU6IElSZWNpcGVCYXNlO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW1hZ2UgcGlwZWxpbmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBuYW1lIGlzIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VQaXBlbGluZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgaW1hZ2UgcGlwZWxpbmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2NoZWR1bGUgb2YgdGhlIGltYWdlIHBpcGVsaW5lLiBUaGlzIGNvbmZpZ3VyZXMgaG93IG9mdGVuIGFuZCB3aGVuIGEgcGlwZWxpbmUgYXV0b21hdGljYWxseSBjcmVhdGVzIGEgbmV3XG4gICAqIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmUsIGEgbWFudWFsIGltYWdlIHBpcGVsaW5lIHdpbGwgYmUgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgc2NoZWR1bGU/OiBJbWFnZVBpcGVsaW5lU2NoZWR1bGU7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBwaXBlbGluZSBpcyBlbmFibGVkIHRvIGJlIHRyaWdnZXJlZCBieSB0aGUgcHJvdmlkZWQgc2NoZWR1bGVcbiAgICpcbiAgICogQGRlZmF1bHQgSW1hZ2VQaXBlbGluZVN0YXR1cy5FTkFCTEVEXG4gICAqL1xuICByZWFkb25seSBzdGF0dXM/OiBJbWFnZVBpcGVsaW5lU3RhdHVzO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiB1c2VkIGZvciBidWlsZGluZyB0aGUgaW1hZ2UuXG4gICAqXG4gICAqIEEgZGVmYXVsdCBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uIHdpbGwgYmUgdXNlZCBpZiBvbmUgaXMgbm90IHByb3ZpZGVkLlxuICAgKlxuICAgKiBUaGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIHdpbGwgY3JlYXRlIGFuIGluc3RhbmNlIHByb2ZpbGUgYW5kIHJvbGUgd2l0aCBtaW5pbWFsIHBlcm1pc3Npb25zIG5lZWRlZCB0byBidWlsZCB0aGVcbiAgICogaW1hZ2UsIGF0dGFjaGVkIHRvIHRoZSBFQzIgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYW4gaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiB3aWxsIGJlIGNyZWF0ZWQgd2l0aCB0aGUgZGVmYXVsdCBzZXR0aW5nc1xuICAgKi9cbiAgcmVhZG9ubHkgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uPzogSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIHVzZWQgZm9yIGRpc3RyaWJ1dGluZyB0aGUgaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24/OiBJRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2Ygd29ya2Zsb3cgY29uZmlndXJhdGlvbnMgdXNlZCB0byBidWlsZCB0aGUgaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSW1hZ2UgQnVpbGRlciB3aWxsIHVzZSBhIGRlZmF1bHQgc2V0IG9mIHdvcmtmbG93cyBmb3IgdGhlIGJ1aWxkIHRvIGJ1aWxkLCB0ZXN0LCBhbmQgZGlzdHJpYnV0ZSB0aGUgaW1hZ2VcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93cz86IFdvcmtmbG93Q29uZmlndXJhdGlvbltdO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhlY3V0aW9uIHJvbGUgdXNlZCB0byBwZXJmb3JtIHdvcmtmbG93IGFjdGlvbnMgdG8gYnVpbGQgdGhpcyBpbWFnZS5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhlIEltYWdlIEJ1aWxkZXIgU2VydmljZSBMaW5rZWQgUm9sZSAoU0xSKSB3aWxsIGJlIGNyZWF0ZWQgYXV0b21hdGljYWxseSBhbmQgdXNlZCBhcyB0aGUgZXhlY3V0aW9uXG4gICAqIHJvbGUuIEhvd2V2ZXIsIHdoZW4gcHJvdmlkaW5nIGEgY3VzdG9tIHNldCBvZiBpbWFnZSB3b3JrZmxvd3MgZm9yIHRoZSBwaXBlbGluZSwgYW4gZXhlY3V0aW9uIHJvbGUgd2lsbCBiZVxuICAgKiBnZW5lcmF0ZWQgd2l0aCB0aGUgbWluaW1hbCBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gZXhlY3V0ZSB0aGUgd29ya2Zsb3dzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEltYWdlIEJ1aWxkZXIgd2lsbCB1c2UgdGhlIFNMUiBpZiBwb3NzaWJsZS4gT3RoZXJ3aXNlLCBhbiBleGVjdXRpb24gcm9sZSB3aWxsIGJlIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgZXhlY3V0aW9uUm9sZT86IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIGxvZyBncm91cCB0byB1c2UgZm9yIHRoZSBpbWFnZSBwaXBlbGluZS4gQnkgZGVmYXVsdCwgYSBsb2cgZ3JvdXAgd2lsbCBiZSBjcmVhdGVkIHdpdGggdGhlIGZvcm1hdFxuICAgKiBgL2F3cy9pbWFnZWJ1aWxkZXIvcGlwZWxpbmUvPHBpcGVsaW5lLW5hbWU+YFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbG9nIGdyb3VwIHdpbGwgYmUgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VQaXBlbGluZUxvZ0dyb3VwPzogbG9ncy5JTG9nR3JvdXA7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2cgZ3JvdXAgdG8gdXNlIGZvciBpbWFnZXMgY3JlYXRlZCBmcm9tIHRoZSBpbWFnZSBwaXBlbGluZS4gQnkgZGVmYXVsdCwgYSBsb2cgZ3JvdXAgd2lsbCBiZSBjcmVhdGVkIHdpdGggdGhlXG4gICAqIGZvcm1hdCBgL2F3cy9pbWFnZWJ1aWxkZXIvPGltYWdlLW5hbWU+YC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIGxvZyBncm91cCB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlTG9nR3JvdXA/OiBsb2dzLklMb2dHcm91cDtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgSW1hZ2UgQnVpbGRlciBrZWVwcyBhIHNuYXBzaG90IG9mIHRoZSB2dWxuZXJhYmlsaXR5IHNjYW5zIHRoYXQgQW1hem9uIEluc3BlY3RvciBydW5zIGFnYWluc3QgdGhlXG4gICAqIGJ1aWxkIGluc3RhbmNlIHdoZW4geW91IGNyZWF0ZSBhIG5ldyBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlU2Nhbm5pbmdFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGNvbnRhaW5lciByZXBvc2l0b3J5IHRoYXQgQW1hem9uIEluc3BlY3RvciBzY2FucyB0byBpZGVudGlmeSBmaW5kaW5ncyBmb3IgeW91ciBjb250YWluZXIgaW1hZ2VzLiBJZiBhXG4gICAqIHJlcG9zaXRvcnkgaXMgbm90IHByb3ZpZGVkLCBJbWFnZSBCdWlsZGVyIGNyZWF0ZXMgYSByZXBvc2l0b3J5IG5hbWVkIGBpbWFnZS1idWlsZGVyLWltYWdlLXNjYW5uaW5nLXJlcG9zaXRvcnlgXG4gICAqIGZvciB2dWxuZXJhYmlsaXR5IHNjYW5uaW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGlmIHNjYW5uaW5nIGlzIGVuYWJsZWQsIGEgcmVwb3NpdG9yeSB3aWxsIGJlIGNyZWF0ZWQgYnkgSW1hZ2UgQnVpbGRlciBpZiBvbmUgaXMgbm90IHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBpbWFnZVNjYW5uaW5nRWNyUmVwb3NpdG9yeT86IGVjci5JUmVwb3NpdG9yeTtcblxuICAvKipcbiAgICogVGhlIHRhZ3MgZm9yIEltYWdlIEJ1aWxkZXIgdG8gYXBwbHkgdG8gdGhlIG91dHB1dCBjb250YWluZXIgaW1hZ2UgdGhhdCBBbWF6b24gSW5zcGVjdG9yIHNjYW5zLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBpbWFnZVNjYW5uaW5nRWNyVGFncz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBJZiBlbmFibGVkLCBjb2xsZWN0cyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpbWFnZSBiZWluZyBjcmVhdGVkLCBpbmNsdWRpbmcgdGhlIG9wZXJhdGluZyBzeXN0ZW0gKE9TKVxuICAgKiB2ZXJzaW9uIGFuZCBwYWNrYWdlIGxpc3QgZm9yIHRoZSBBTUkuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGVuaGFuY2VkSW1hZ2VNZXRhZGF0YUVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJ1biB0ZXN0cyBhZnRlciBidWlsZGluZyBhbiBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VUZXN0c0VuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFncyB0byBhcHBseSB0byB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogVGhlIHNjaGVkdWxlIHNldHRpbmdzIGZvciB0aGUgaW1hZ2UgcGlwZWxpbmUsIHdoaWNoIGRlZmluZXMgd2hlbiBhIHBpcGVsaW5lIHNob3VsZCBiZSB0cmlnZ2VyZWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbWFnZVBpcGVsaW5lU2NoZWR1bGUge1xuICAvKipcbiAgICogVGhlIHNjaGVkdWxlIGV4cHJlc3Npb24gdG8gdXNlLiBUaGlzIGNhbiBlaXRoZXIgYmUgYSBjcm9uIGV4cHJlc3Npb24gb3IgYSByYXRlIGV4cHJlc3Npb24uXG4gICAqL1xuICByZWFkb25seSBleHByZXNzaW9uOiBldmVudHMuU2NoZWR1bGU7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgY29uc2VjdXRpdmUgZmFpbHVyZXMgYWxsb3dlZCBiZWZvcmUgdGhlIHBpcGVsaW5lIGlzIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQuIFRoaXMgdmFsdWUgbXVzdCBiZVxuICAgKiBiZXR3ZWVuIDEgYW5kIDEwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGF1dG8tZGlzYWJsZSBwb2xpY3kgaXMgY29uZmlndXJlZCBhbmQgdGhlIHBpcGVsaW5lIGlzIG5vdCBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIG9uIGNvbnNlY3V0aXZlXG4gICAqIGZhaWx1cmVzXG4gICAqL1xuICByZWFkb25seSBhdXRvRGlzYWJsZUZhaWx1cmVDb3VudD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHN0YXJ0IGNvbmRpdGlvbiBmb3IgdGhlIHBpcGVsaW5lLCBpbmRpY2F0aW5nIHRoZSBjb25kaXRpb24gdW5kZXIgd2hpY2ggYSBwaXBlbGluZSBzaG91bGQgYmUgdHJpZ2dlcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBTY2hlZHVsZVN0YXJ0Q29uZGl0aW9uLkVYUFJFU1NJT05fTUFUQ0hfQU5EX0RFUEVOREVOQ1lfVVBEQVRFU19BVkFJTEFCTEVcbiAgICovXG4gIHJlYWRvbmx5IHN0YXJ0Q29uZGl0aW9uPzogU2NoZWR1bGVTdGFydENvbmRpdGlvbjtcbn1cblxuLyoqXG4gKiBUaGUgc3RhcnQgY29uZGl0aW9uIGZvciB0aGUgcGlwZWxpbmUsIGluZGljYXRpbmcgdGhlIGNvbmRpdGlvbiB1bmRlciB3aGljaCBhIHBpcGVsaW5lIHNob3VsZCBiZSB0cmlnZ2VyZWQuXG4gKi9cbmV4cG9ydCBlbnVtIFNjaGVkdWxlU3RhcnRDb25kaXRpb24ge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRvIHRyaWdnZXIgYSBwaXBlbGluZSB3aGVuZXZlciBpdHMgc2NoZWR1bGUgaXMgbWV0XG4gICAqL1xuICBFWFBSRVNTSU9OX01BVENIX09OTFkgPSAnRVhQUkVTU0lPTl9NQVRDSF9PTkxZJyxcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRvIHRyaWdnZXIgYSBwaXBlbGluZSB3aGVuZXZlciBpdHMgc2NoZWR1bGUgaXMgbWV0LCBhbmQgdGhlcmUgYXJlIG1hdGNoaW5nIGRlcGVuZGVuY3kgdXBkYXRlcyBhdmFpbGFibGUsXG4gICAqIHN1Y2ggYXMgbmV3IHZlcnNpb25zIG9mIGNvbXBvbmVudHMgb3IgaW1hZ2VzIHRvIHVzZSBpbiB0aGUgcGlwZWxpbmUgYnVpbGQuXG4gICAqL1xuICBFWFBSRVNTSU9OX01BVENIX0FORF9ERVBFTkRFTkNZX1VQREFURVNfQVZBSUxBQkxFID0gJ0VYUFJFU1NJT05fTUFUQ0hfQU5EX0RFUEVOREVOQ1lfVVBEQVRFU19BVkFJTEFCTEUnLFxufVxuXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBwaXBlbGluZSBpcyBlbmFibGVkIHRvIGJlIHRyaWdnZXJlZCBieSB0aGUgcHJvdmlkZWQgc2NoZWR1bGVcbiAqL1xuZXhwb3J0IGVudW0gSW1hZ2VQaXBlbGluZVN0YXR1cyB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgcGlwZWxpbmUgaXMgZW5hYmxlZCBmb3Igc2NoZWR1bGluZ1xuICAgKi9cbiAgRU5BQkxFRCA9ICdFTkFCTEVEJyxcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIHBpcGVsaW5lIGlzIGRpc2FibGVkIGFuZCB3aWxsIG5vdCBiZSB0cmlnZ2VyZWQgb24gdGhlIHNjaGVkdWxlXG4gICAqL1xuICBESVNBQkxFRCA9ICdESVNBQkxFRCcsXG59XG5cbi8qKlxuICogQSBuZXcgb3IgaW1wb3J0ZWQgSW1hZ2UgUGlwZWxpbmVcbiAqL1xuYWJzdHJhY3QgY2xhc3MgSW1hZ2VQaXBlbGluZUJhc2UgZXh0ZW5kcyBjZGsuUmVzb3VyY2UgaW1wbGVtZW50cyBJSW1hZ2VQaXBlbGluZSB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBpbWFnZSBwaXBlbGluZVxuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgaW1hZ2VQaXBlbGluZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGltYWdlUGlwZWxpbmVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlOiBncmFudGVlLFxuICAgICAgcmVzb3VyY2VBcm5zOiBbdGhpcy5pbWFnZVBpcGVsaW5lQXJuXSxcbiAgICAgIGFjdGlvbnM6IGFjdGlvbnMsXG4gICAgICBzY29wZTogdGhpcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgdGhlIGRlZmF1bHQgcGVybWlzc2lvbnMgZm9yIGJ1aWxkaW5nIGFuIGltYWdlIHRvIHRoZSBwcm92aWRlZCBleGVjdXRpb24gcm9sZS5cbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBleGVjdXRpb24gcm9sZSB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGQuXG4gICAqL1xuICBwdWJsaWMgZ3JhbnREZWZhdWx0RXhlY3V0aW9uUm9sZVBlcm1pc3Npb25zKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50W10ge1xuICAgIGNvbnN0IHBvbGljaWVzID0gZGVmYXVsdEV4ZWN1dGlvblJvbGVQb2xpY3kodGhpcyk7XG4gICAgcmV0dXJuIHBvbGljaWVzLm1hcCgocG9saWN5KSA9PlxuICAgICAgaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgICAgZ3JhbnRlZTogZ3JhbnRlZSxcbiAgICAgICAgcmVzb3VyY2VBcm5zOiBwb2xpY3kucmVzb3VyY2VzLFxuICAgICAgICBhY3Rpb25zOiBwb2xpY3kuYWN0aW9ucyxcbiAgICAgICAgY29uZGl0aW9uczogcG9saWN5LmNvbmRpdGlvbnMsXG4gICAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsICdpbWFnZWJ1aWxkZXI6R2V0SW1hZ2VQaXBlbGluZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIHRvIHN0YXJ0IGFuIGV4ZWN1dGlvbiBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIHB1YmxpYyBncmFudFN0YXJ0RXhlY3V0aW9uKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAnaW1hZ2VidWlsZGVyOlN0YXJ0SW1hZ2VQaXBlbGluZUV4ZWN1dGlvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25FdmVudChpZDogc3RyaW5nLCBvcHRpb25zOiBldmVudHMuT25FdmVudE9wdGlvbnMgPSB7fSk6IGV2ZW50cy5SdWxlIHtcbiAgICBjb25zdCBydWxlID0gbmV3IGV2ZW50cy5SdWxlKHRoaXMsIGlkLCBvcHRpb25zKTtcbiAgICBydWxlLmFkZFRhcmdldChvcHRpb25zLnRhcmdldCk7XG4gICAgcnVsZS5hZGRFdmVudFBhdHRlcm4oe1xuICAgICAgc291cmNlOiBbJ2F3cy5pbWFnZWJ1aWxkZXInXSxcbiAgICAgIC4uLihvcHRpb25zLmV2ZW50UGF0dGVybj8ucmVzb3VyY2VzPy5sZW5ndGggJiYgeyByZXNvdXJjZXM6IG9wdGlvbnMuZXZlbnRQYXR0ZXJuLnJlc291cmNlcyB9KSxcbiAgICAgIC4uLihvcHRpb25zLmV2ZW50UGF0dGVybj8uZGV0YWlsVHlwZT8ubGVuZ3RoICYmIHsgZGV0YWlsVHlwZTogb3B0aW9ucy5ldmVudFBhdHRlcm4uZGV0YWlsVHlwZSB9KSxcbiAgICAgIC4uLihvcHRpb25zLmV2ZW50UGF0dGVybj8uZGV0YWlsICE9PSB1bmRlZmluZWQgJiYgeyBkZXRhaWw6IG9wdGlvbnMuZXZlbnRQYXR0ZXJuLmRldGFpbCB9KSxcbiAgICB9KTtcbiAgICByZXR1cm4gcnVsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgQ1ZFIGRldGVjdGVkIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyBvbkNWRURldGVjdGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uRXZlbnQoaWQsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBldmVudFBhdHRlcm46IHtcbiAgICAgICAgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4sXG4gICAgICAgIGRldGFpbFR5cGU6IFsnRUMyIEltYWdlIEJ1aWxkZXIgQ1ZFIERldGVjdGVkJ10sXG4gICAgICAgIHJlc291cmNlczogW3RoaXMuaW1hZ2VQaXBlbGluZUFybl0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBpbWFnZSBzdGF0ZSBjaGFuZ2UgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgcHVibGljIG9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uRXZlbnQoaWQsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBldmVudFBhdHRlcm46IHsgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4sIGRldGFpbFR5cGU6IFsnRUMyIEltYWdlIEJ1aWxkZXIgSW1hZ2UgU3RhdGUgQ2hhbmdlJ10gfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2UgYnVpbGQgY29tcGxldGlvbiBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25JbWFnZUJ1aWxkQ29tcGxldGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuLFxuICAgICAgICBkZXRhaWw6IHsgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4/LmRldGFpbCwgc3RhdGU6IHsgc3RhdHVzOiBbJ0FWQUlMQUJMRScsICdDQU5DRUxMRUQnLCAnRkFJTEVEJ10gfSB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2UgYnVpbGQgZmFpbHVyZSBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25JbWFnZUJ1aWxkRmFpbGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuLFxuICAgICAgICBkZXRhaWw6IHsgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4/LmRldGFpbCwgc3RhdGU6IHsgc3RhdHVzOiBbJ0ZBSUxFRCddIH0gfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIHN1Y2Nlc3MgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgcHVibGljIG9uSW1hZ2VCdWlsZFN1Y2NlZWRlZChpZDogc3RyaW5nLCBvcHRpb25zOiBldmVudHMuT25FdmVudE9wdGlvbnMgPSB7fSk6IGV2ZW50cy5SdWxlIHtcbiAgICByZXR1cm4gdGhpcy5vbkltYWdlQnVpbGRTdGF0ZUNoYW5nZShpZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICAuLi5vcHRpb25zLmV2ZW50UGF0dGVybixcbiAgICAgICAgZGV0YWlsOiB7IC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuPy5kZXRhaWwsIHN0YXRlOiB7IHN0YXR1czogWydBVkFJTEFCTEUnXSB9IH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBpbWFnZSBwaXBlbGluZSBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyBvbkltYWdlUGlwZWxpbmVBdXRvRGlzYWJsZWQoaWQ6IHN0cmluZywgb3B0aW9uczogZXZlbnRzLk9uRXZlbnRPcHRpb25zID0ge30pOiBldmVudHMuUnVsZSB7XG4gICAgcmV0dXJuIHRoaXMub25FdmVudChpZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICBkZXRhaWxUeXBlOiBbJ0VDMiBJbWFnZSBCdWlsZGVyIEltYWdlIFBpcGVsaW5lIEF1dG9tYXRpY2FsbHkgRGlzYWJsZWQnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5pbWFnZVBpcGVsaW5lQXJuXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIHdhaXQgZm9yIGFjdGlvbiBldmVudHNcbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyBvbldhaXRGb3JBY3Rpb24oaWQ6IHN0cmluZywgb3B0aW9uczogZXZlbnRzLk9uRXZlbnRPcHRpb25zID0ge30pOiBldmVudHMuUnVsZSB7XG4gICAgcmV0dXJuIHRoaXMub25FdmVudChpZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGV2ZW50UGF0dGVybjogeyAuLi5vcHRpb25zLmV2ZW50UGF0dGVybiwgZGV0YWlsVHlwZTogWydFQzIgSW1hZ2UgQnVpbGRlciBXb3JrZmxvdyBTdGVwIFdhaXRpbmcnXSB9LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBFQzIgSW1hZ2UgQnVpbGRlciBJbWFnZSBQaXBlbGluZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9tYW5hZ2UtcGlwZWxpbmVzLmh0bWxcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIEltYWdlUGlwZWxpbmUgZXh0ZW5kcyBJbWFnZVBpcGVsaW5lQmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWltYWdlYnVpbGRlci1hbHBoYS5JbWFnZVBpcGVsaW5lJztcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGltYWdlIHBpcGVsaW5lIGdpdmVuIGl0cyBBUk4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbWFnZVBpcGVsaW5lQXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGltYWdlUGlwZWxpbmVBcm46IHN0cmluZyk6IElJbWFnZVBpcGVsaW5lIHtcbiAgICBjb25zdCBpbWFnZVBpcGVsaW5lTmFtZSA9IGNkay5TdGFjay5vZihzY29wZSkuc3BsaXRBcm4oXG4gICAgICBpbWFnZVBpcGVsaW5lQXJuLFxuICAgICAgY2RrLkFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FLFxuICAgICkucmVzb3VyY2VOYW1lITtcblxuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIEltYWdlUGlwZWxpbmVCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpbWFnZVBpcGVsaW5lQXJuID0gaW1hZ2VQaXBlbGluZUFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpbWFnZVBpcGVsaW5lTmFtZSA9IGltYWdlUGlwZWxpbmVOYW1lO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGltYWdlIHBpcGVsaW5lIGdpdmVuIGl0cyBuYW1lLiBUaGUgcHJvdmlkZWQgbmFtZSBtdXN0IGJlIG5vcm1hbGl6ZWQgYnkgY29udmVydGluZyBhbGxcbiAgICogYWxwaGFiZXRpY2FsIGNoYXJhY3RlcnMgdG8gbG93ZXJjYXNlLCBhbmQgcmVwbGFjaW5nIGFsbCBzcGFjZXMgYW5kIHVuZGVyc2NvcmVzIHdpdGggaHlwaGVucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUltYWdlUGlwZWxpbmVOYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGltYWdlUGlwZWxpbmVOYW1lOiBzdHJpbmcpOiBJSW1hZ2VQaXBlbGluZSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbUltYWdlUGlwZWxpbmVBcm4oXG4gICAgICBzY29wZSxcbiAgICAgIGlkLFxuICAgICAgY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgICAgcmVzb3VyY2U6ICdpbWFnZS1waXBlbGluZScsXG4gICAgICAgIHJlc291cmNlTmFtZTogaW1hZ2VQaXBlbGluZU5hbWUsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYW4gSW1hZ2VQaXBlbGluZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNJbWFnZVBpcGVsaW5lKHg6IGFueSk6IHggaXMgSW1hZ2VQaXBlbGluZSB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIElNQUdFX1BJUEVMSU5FX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW1hZ2VQaXBlbGluZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpbWFnZVBpcGVsaW5lTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb246IElJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBleGVjdXRpb24gcm9sZSB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGQuIElmIHRoZXJlIGlzIG5vIGV4ZWN1dGlvbiByb2xlLCB0aGVuIHRoZSBidWlsZCB3aWxsIGJlIGV4ZWN1dGVkIHdpdGhcbiAgICogdGhlIEFXU1NlcnZpY2VSb2xlRm9ySW1hZ2VCdWlsZGVyIHNlcnZpY2UtbGlua2VkIHJvbGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZXhlY3V0aW9uUm9sZT86IGlhbS5JUm9sZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBJbWFnZVBpcGVsaW5lUHJvcHM7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJbWFnZVBpcGVsaW5lUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTpcbiAgICAgICAgcHJvcHMuaW1hZ2VQaXBlbGluZU5hbWUgPz9cbiAgICAgICAgY2RrLkxhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PlxuICAgICAgICAgICAgY2RrLk5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgICAgICAgICAgIG1heExlbmd0aDogMTI4LFxuICAgICAgICAgICAgICBzZXBhcmF0b3I6ICctJyxcbiAgICAgICAgICAgICAgYWxsb3dlZFNwZWNpYWxDaGFyYWN0ZXJzOiAnLScsXG4gICAgICAgICAgICB9KS50b0xvd2VyQ2FzZSgpLCAvLyBFbmZvcmNlIGxvd2VyY2FzZSBmb3IgdGhlIGF1dG8tZ2VuZXJhdGVkIGZhbGxiYWNrXG4gICAgICAgIH0pLFxuICAgIH0pO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIElNQUdFX1BJUEVMSU5FX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMudmFsaWRhdGVJbWFnZVBpcGVsaW5lTmFtZSgpO1xuXG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgdGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gPVxuICAgICAgcHJvcHMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uID8/IG5ldyBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24odGhpcywgJ0luZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbicpO1xuICAgIHRoaXMuZXhlY3V0aW9uUm9sZSA9IGdldEV4ZWN1dGlvblJvbGUoXG4gICAgICB0aGlzLFxuICAgICAgKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKSA9PiB0aGlzLmdyYW50RGVmYXVsdEV4ZWN1dGlvblJvbGVQZXJtaXNzaW9ucyhncmFudGVlKSxcbiAgICAgIHByb3BzLFxuICAgICk7XG5cbiAgICBpZiAoSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLmlzSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKSkge1xuICAgICAgdGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24uX2JpbmQoeyBpc0NvbnRhaW5lckJ1aWxkOiBwcm9wcy5yZWNpcGUuX2lzQ29udGFpbmVyUmVjaXBlKCkgfSk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnJlY2lwZS5faXNJbWFnZVJlY2lwZSgpICYmIHByb3BzLnJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3RoZSByZWNpcGUgY2Fubm90IGJlIGJvdGggYW4gSUltYWdlUmVjaXBlIGFuZCBhbiBJQ29udGFpbmVyUmVjaXBlJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKCFwcm9wcy5yZWNpcGUuX2lzSW1hZ2VSZWNpcGUoKSAmJiAhcHJvcHMucmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcigndGhlIHJlY2lwZSBtdXN0IGVpdGhlciBiZSBhbiBJSW1hZ2VSZWNpcGUgb3IgSUNvbnRhaW5lclJlY2lwZScsIHRoaXMpO1xuICAgIH1cblxuICAgIGNvbnN0IGltYWdlUGlwZWxpbmUgPSBuZXcgQ2ZuSW1hZ2VQaXBlbGluZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBuYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIC4uLihwcm9wcy5yZWNpcGUuX2lzSW1hZ2VSZWNpcGUoKSAmJiB7IGltYWdlUmVjaXBlQXJuOiBwcm9wcy5yZWNpcGUuaW1hZ2VSZWNpcGVBcm4gfSksXG4gICAgICAuLi4ocHJvcHMucmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpICYmIHsgY29udGFpbmVyUmVjaXBlQXJuOiBwcm9wcy5yZWNpcGUuY29udGFpbmVyUmVjaXBlQXJuIH0pLFxuICAgICAgLi4uKHByb3BzLnN0YXR1cyAhPT0gdW5kZWZpbmVkICYmIHsgc3RhdHVzOiBwcm9wcy5zdGF0dXMgfSksXG4gICAgICBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm46IHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkFybixcbiAgICAgIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm46IHByb3BzLmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24/LmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm4sXG4gICAgICBlbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkOiBwcm9wcy5lbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkLFxuICAgICAgZXhlY3V0aW9uUm9sZTogdGhpcy5leGVjdXRpb25Sb2xlPy5yb2xlQXJuLFxuICAgICAgc2NoZWR1bGU6IHRoaXMuYnVpbGRTY2hlZHVsZShwcm9wcyksXG4gICAgICBsb2dnaW5nQ29uZmlndXJhdGlvbjogdGhpcy5idWlsZExvZ2dpbmdDb25maWd1cmF0aW9uKHByb3BzKSxcbiAgICAgIGltYWdlVGVzdHNDb25maWd1cmF0aW9uOiBidWlsZEltYWdlVGVzdHNDb25maWd1cmF0aW9uPFxuICAgICAgICBJbWFnZVBpcGVsaW5lUHJvcHMsXG4gICAgICAgIENmbkltYWdlUGlwZWxpbmUuSW1hZ2VUZXN0c0NvbmZpZ3VyYXRpb25Qcm9wZXJ0eVxuICAgICAgPihwcm9wcyksXG4gICAgICBpbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbjogYnVpbGRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbjxcbiAgICAgICAgSW1hZ2VQaXBlbGluZVByb3BzLFxuICAgICAgICBDZm5JbWFnZVBpcGVsaW5lLkltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uUHJvcGVydHlcbiAgICAgID4odGhpcywgcHJvcHMpLFxuICAgICAgd29ya2Zsb3dzOiBidWlsZFdvcmtmbG93czxJbWFnZVBpcGVsaW5lUHJvcHMsIENmbkltYWdlUGlwZWxpbmUuV29ya2Zsb3dDb25maWd1cmF0aW9uUHJvcGVydHlbXT4ocHJvcHMpLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICB9KTtcblxuICAgIHRoaXMuaW1hZ2VQaXBlbGluZU5hbWUgPSB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZShpbWFnZVBpcGVsaW5lLmF0dHJOYW1lKTtcbiAgICB0aGlzLmltYWdlUGlwZWxpbmVBcm4gPSB0aGlzLmdldFJlc291cmNlQXJuQXR0cmlidXRlKGltYWdlUGlwZWxpbmUuYXR0ckFybiwge1xuICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICByZXNvdXJjZTogJ2ltYWdlLXBpcGVsaW5lJyxcbiAgICAgIHJlc291cmNlTmFtZTogdGhpcy5waHlzaWNhbE5hbWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHRoZSBkZWZhdWx0IHBlcm1pc3Npb25zIGZvciBidWlsZGluZyBhbiBpbWFnZSB0byB0aGUgcHJvdmlkZWQgZXhlY3V0aW9uIHJvbGUuXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgZXhlY3V0aW9uIHJvbGUgdXNlZCBmb3IgdGhlIGltYWdlIGJ1aWxkLlxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGdyYW50RGVmYXVsdEV4ZWN1dGlvblJvbGVQZXJtaXNzaW9ucyhncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudFtdIHtcbiAgICBjb25zdCBwb2xpY2llcyA9IGRlZmF1bHRFeGVjdXRpb25Sb2xlUG9saWN5KHRoaXMsIHRoaXMucHJvcHMpO1xuICAgIHJldHVybiBwb2xpY2llcy5tYXAoKHBvbGljeSkgPT5cbiAgICAgIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICAgIGdyYW50ZWU6IGdyYW50ZWUsXG4gICAgICAgIHJlc291cmNlQXJuczogcG9saWN5LnJlc291cmNlcyxcbiAgICAgICAgYWN0aW9uczogcG9saWN5LmFjdGlvbnMsXG4gICAgICAgIGNvbmRpdGlvbnM6IHBvbGljeS5jb25kaXRpb25zLFxuICAgICAgICBzY29wZTogdGhpcyxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlSW1hZ2VQaXBlbGluZU5hbWUoKSB7XG4gICAgaWYgKGNkay5Ub2tlbi5pc1VucmVzb2x2ZWQodGhpcy5waHlzaWNhbE5hbWUpKSB7XG4gICAgICByZXR1cm47IC8vIENhbm5vdCB2YWxpZGF0ZSB1bnJlc29sdmVkIHRva2VucywgZ2l2ZW4gdGhlaXIgYWN0dWFsIHZhbHVlIGlzIHJlbmRlcmVkIGF0IGRlcGxveW1lbnQgdGltZVxuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5sZW5ndGggPiAxMjgpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdUaGUgaW1hZ2VQaXBlbGluZU5hbWUgY2Fubm90IGJlIGxvbmdlciB0aGFuIDEyOCBjaGFyYWN0ZXJzJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmluY2x1ZGVzKCcgJykpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdUaGUgaW1hZ2VQaXBlbGluZU5hbWUgY2Fubm90IGNvbnRhaW4gc3BhY2VzJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmluY2x1ZGVzKCdfJykpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdUaGUgaW1hZ2VQaXBlbGluZU5hbWUgY2Fubm90IGNvbnRhaW4gdW5kZXJzY29yZXMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUgIT09IHRoaXMucGh5c2ljYWxOYW1lLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdUaGUgaW1hZ2VQaXBlbGluZU5hbWUgbXVzdCBiZSBsb3dlcmNhc2UnLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU2NoZWR1bGUocHJvcHM6IEltYWdlUGlwZWxpbmVQcm9wcyk6IENmbkltYWdlUGlwZWxpbmUuU2NoZWR1bGVQcm9wZXJ0eSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgc2NoZWR1bGUgPSBwcm9wcy5zY2hlZHVsZTtcbiAgICBpZiAoIXNjaGVkdWxlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmIChzY2hlZHVsZS5hdXRvRGlzYWJsZUZhaWx1cmVDb3VudCAhPT0gdW5kZWZpbmVkICYmICFjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHNjaGVkdWxlLmF1dG9EaXNhYmxlRmFpbHVyZUNvdW50KSkge1xuICAgICAgaWYgKHNjaGVkdWxlLmF1dG9EaXNhYmxlRmFpbHVyZUNvdW50IDwgMSB8fCBzY2hlZHVsZS5hdXRvRGlzYWJsZUZhaWx1cmVDb3VudCA+IDEwKSB7XG4gICAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCd0aGUgYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDEwJywgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNjaGVkdWxlRXhwcmVzc2lvbjogc2NoZWR1bGUuZXhwcmVzc2lvbi5leHByZXNzaW9uU3RyaW5nLFxuICAgICAgLi4uKHNjaGVkdWxlLmF1dG9EaXNhYmxlRmFpbHVyZUNvdW50ICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICBhdXRvRGlzYWJsZVBvbGljeToge1xuICAgICAgICAgIGZhaWx1cmVDb3VudDogc2NoZWR1bGUuYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIC4uLihzY2hlZHVsZS5zdGFydENvbmRpdGlvbiAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgcGlwZWxpbmVFeGVjdXRpb25TdGFydENvbmRpdGlvbjogc2NoZWR1bGUuc3RhcnRDb25kaXRpb24sXG4gICAgICB9KSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyB0aGUgbG9nZ2luZ0NvbmZpZ3VyYXRpb24gcHJvcGVydHkgaW50byB0aGUgYExvZ2dpbmdDb25maWd1cmF0aW9uYCB0eXBlIGluIHRoZSBDbG91ZEZvcm1hdGlvbiBMMVxuICAgKiBkZWZpbml0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgUHJvcHMgaW5wdXQgZm9yIHRoZSBjb25zdHJ1Y3RcbiAgICovXG4gIHByaXZhdGUgYnVpbGRMb2dnaW5nQ29uZmlndXJhdGlvbiA9IChcbiAgICBwcm9wczogSW1hZ2VQaXBlbGluZVByb3BzLFxuICApOiBDZm5JbWFnZVBpcGVsaW5lLlBpcGVsaW5lTG9nZ2luZ0NvbmZpZ3VyYXRpb25Qcm9wZXJ0eSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3QgbG9nZ2luZ0NvbmZpZ3VyYXRpb24gPSB7XG4gICAgICAuLi4ocHJvcHMuaW1hZ2VMb2dHcm91cCAmJiB7IGltYWdlTG9nR3JvdXBOYW1lOiBwcm9wcy5pbWFnZUxvZ0dyb3VwLmxvZ0dyb3VwTmFtZSB9KSxcbiAgICAgIC4uLihwcm9wcy5pbWFnZVBpcGVsaW5lTG9nR3JvdXAgJiYgeyBwaXBlbGluZUxvZ0dyb3VwTmFtZTogcHJvcHMuaW1hZ2VQaXBlbGluZUxvZ0dyb3VwLmxvZ0dyb3VwTmFtZSB9KSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGxvZ2dpbmdDb25maWd1cmF0aW9uKS5sZW5ndGggPyBsb2dnaW5nQ29uZmlndXJhdGlvbiA6IHVuZGVmaW5lZDtcbiAgfTtcbn1cbiJdfQ==
@@ -146,6 +146,7 @@ declare abstract class ImageRecipeBase extends cdk.Resource implements IImageRec
146
146
  abstract readonly imageRecipeVersion: string;
147
147
  /**
148
148
  * Grant custom actions to the given grantee for the image recipe
149
+ * [disable-awslint:no-grants]
149
150
  *
150
151
  * @param grantee The principal
151
152
  * @param actions The list of actions
@@ -153,6 +154,7 @@ declare abstract class ImageRecipeBase extends cdk.Resource implements IImageRec
153
154
  grant(grantee: iam.IGrantable, ...actions: string[]): iam.Grant;
154
155
  /**
155
156
  * Grant read permissions to the given grantee for the image recipe
157
+ * [disable-awslint:no-grants]
156
158
  *
157
159
  * @param grantee The principal
158
160
  */
@@ -63,6 +63,7 @@ const DEFAULT_RECIPE_VERSION = '1.0.x';
63
63
  class ImageRecipeBase extends cdk.Resource {
64
64
  /**
65
65
  * Grant custom actions to the given grantee for the image recipe
66
+ * [disable-awslint:no-grants]
66
67
  *
67
68
  * @param grantee The principal
68
69
  * @param actions The list of actions
@@ -77,6 +78,7 @@ class ImageRecipeBase extends cdk.Resource {
77
78
  }
78
79
  /**
79
80
  * Grant read permissions to the given grantee for the image recipe
81
+ * [disable-awslint:no-grants]
80
82
  *
81
83
  * @param grantee The principal
82
84
  */
@@ -123,7 +125,7 @@ let ImageRecipe = (() => {
123
125
  ImageRecipe = _classThis = _classDescriptor.value;
124
126
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
125
127
  }
126
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ImageRecipe", version: "2.234.0-alpha.0" };
128
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ImageRecipe", version: "2.235.0-alpha.0" };
127
129
  /** Uniquely identifies this class. */
128
130
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.ImageRecipe';
129
131
  /**
@@ -332,4 +334,4 @@ let ImageRecipe = (() => {
332
334
  return ImageRecipe = _classThis;
333
335
  })();
334
336
  exports.ImageRecipe = ImageRecipe;
335
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcmVjaXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaW1hZ2UtcmVjaXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1DQUFtQztBQUVuQywyQ0FBMkM7QUFDM0MsbUVBQThEO0FBQzlELDhFQUE4RjtBQUM5RiwwRUFBMEU7QUFNMUUsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7QUFFdEY7Ozs7O0dBS0c7QUFDSCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUM7QUFFL0I7Ozs7O0dBS0c7QUFDSCxNQUFNLHNCQUFzQixHQUFHLE9BQU8sQ0FBQztBQTBJdkM7O0dBRUc7QUFDSCxNQUFlLGVBQWdCLFNBQVEsR0FBRyxDQUFDLFFBQVE7SUFnQmpEOzs7OztPQUtHO0lBQ0ksS0FBSyxDQUFDLE9BQXVCLEVBQUUsR0FBRyxPQUFpQjtRQUN4RCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQzlCLE9BQU87WUFDUCxPQUFPO1lBQ1AsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUNuQyxLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUMsQ0FBQztLQUNKO0lBRUQ7Ozs7T0FJRztJQUNJLFNBQVMsQ0FBQyxPQUF1QjtRQUN0QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLDZCQUE2QixDQUFDLENBQUM7S0FDM0Q7SUFFRDs7OztPQUlHO0lBQ0ksa0JBQWtCO1FBQ3ZCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRDs7OztPQUlHO0lBQ0ksY0FBYztRQUNuQixPQUFPLElBQUksQ0FBQztLQUNiO0NBQ0Y7QUFFRDs7OztHQUlHO0lBRVUsV0FBVzs0QkFEdkIsb0NBQWtCOzs7O3NCQUNjLGVBQWU7OzsyQkFBdkIsU0FBUSxXQUFlOzs7OzBDQXVKN0MsSUFBQSxrQ0FB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LEdBQUcsQ0FBQyxlQUFlLENBQUMsZ0RBQWdELElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM1RyxDQUFDO1NBQ0Y7O1lBOU9VLHVEQUFXOzs7OztBQUFYLGtDQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENmbkltYWdlUmVjaXBlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWltYWdlYnVpbGRlcic7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSwgTWV0aG9kTWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBCYXNlSW1hZ2UgfSBmcm9tICcuL2Jhc2UtaW1hZ2UnO1xuaW1wb3J0IHsgSUNvbnRhaW5lclJlY2lwZSB9IGZyb20gJy4vY29udGFpbmVyLXJlY2lwZSc7XG5pbXBvcnQgeyBDb21wb25lbnRDb25maWd1cmF0aW9uLCBJUmVjaXBlQmFzZSB9IGZyb20gJy4vcmVjaXBlLWJhc2UnO1xuXG5jb25zdCBJTUFHRV9SRUNJUEVfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvYXdzLWltYWdlYnVpbGRlci1hbHBoYS5JbWFnZVJlY2lwZScpO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGFuIGltYWdlIHJlY2lwZS4gV2hlbiB1c2luZyB0aGUgcmVjaXBlIGluIGEgcGlwZWxpbmUsIHRoZSBwaXBlbGluZSB3aWxsIHVzZSB0aGVcbiAqIGxhdGVzdCByZWNpcGUgYXQgdGhlIHRpbWUgb2YgZXhlY3V0aW9uLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2liaG93LXNlbWFudGljLXZlcnNpb25pbmcuaHRtbFxuICovXG5jb25zdCBMQVRFU1RfVkVSU0lPTiA9ICd4LngueCc7XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgdmVyc2lvbiB0byB1c2UgaW4gdGhlIGltYWdlIHJlY2lwZS4gV2hlbiB0aGUgcmVjaXBlIGlzIHVwZGF0ZWQsIHRoZSBgeGAgd2lsbCBiZSBpbmNyZW1lbnRlZCBvZmYgZnJvbVxuICogdGhlIGxhdGVzdCByZWNpcGUgdmVyc2lvbiB0aGF0IGV4aXN0cy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9jcmVhdGUtaW1hZ2UtcmVjaXBlcy5odG1sXG4gKi9cbmNvbnN0IERFRkFVTFRfUkVDSVBFX1ZFUlNJT04gPSAnMS4wLngnO1xuXG4vKipcbiAqIEFuIEVDMiBJbWFnZSBCdWlsZGVyIEltYWdlIFJlY2lwZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJSW1hZ2VSZWNpcGUgZXh0ZW5kcyBJUmVjaXBlQmFzZSB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBpbWFnZSByZWNpcGVcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VSZWNpcGVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlIHJlY2lwZVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBpbWFnZVJlY2lwZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGltYWdlIHJlY2lwZVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBpbWFnZVJlY2lwZVZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhbiBJbWFnZSBSZWNpcGUgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbWFnZVJlY2lwZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltYWdlIGZvciBjdXN0b21pemF0aW9ucyBzcGVjaWZpZWQgaW4gdGhlIGltYWdlIHJlY2lwZS5cbiAgICovXG4gIHJlYWRvbmx5IGJhc2VJbWFnZTogQmFzZUltYWdlO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW1hZ2UgcmVjaXBlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbmFtZSBpcyBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUmVjaXBlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGltYWdlIHJlY2lwZS5cbiAgICpcbiAgICogQGRlZmF1bHQgMS4wLnhcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUmVjaXBlVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBpbWFnZSByZWNpcGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBjb21wb25lbnQgY29uZmlndXJhdGlvbnMgdG8gYXBwbHkgaW4gdGhlIGltYWdlIGJ1aWxkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBjb21wb25lbnRzPzogQ29tcG9uZW50Q29uZmlndXJhdGlvbltdO1xuXG4gIC8qKlxuICAgKiBUaGUgYWRkaXRpb25hbCB0YWdzIHRvIGFzc2lnbiB0byB0aGUgb3V0cHV0IEFNSSBnZW5lcmF0ZWQgYnkgdGhlIGJ1aWxkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBhbWlUYWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGhlIGJsb2NrIGRldmljZXMgdG8gYXR0YWNoIHRvIHRoZSBpbnN0YW5jZSB1c2VkIGZvciBidWlsZGluZyB0aGUgaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGJsb2NrRGV2aWNlcz86IGVjMi5CbG9ja0RldmljZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgd29ya2luZyBkaXJlY3RvcnkgZm9yIHVzZSBkdXJpbmcgYnVpbGQgYW5kIHRlc3Qgd29ya2Zsb3dzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBJbWFnZSBCdWlsZGVyIGRlZmF1bHQgd29ya2luZyBkaXJlY3RvcnkgaXMgdXNlZC4gRm9yIExpbnV4IGFuZCBtYWNPUyBidWlsZHMsIHRoaXMgd291bGQgYmUgL3RtcC4gRm9yXG4gICAqIFdpbmRvd3MgYnVpbGRzLCB0aGlzIHdvdWxkIGJlIEM6L1xuICAgKi9cbiAgcmVhZG9ubHkgd29ya2luZ0RpcmVjdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byB1bmluc3RhbGwgdGhlIFN5c3RlbXMgTWFuYWdlciBhZ2VudCBmcm9tIHlvdXIgZmluYWwgYnVpbGQgaW1hZ2UsIHByaW9yIHRvIGNyZWF0aW5nIHRoZSBuZXcgQU1JLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoaXMgaXMgZmFsc2UgaWYgdGhlIFN5c3RlbXMgTWFuYWdlciBhZ2VudCBpcyBwcmUtaW5zdGFsbGVkIG9uIHRoZSBiYXNlIGltYWdlLiBPdGhlcndpc2UsIHRoaXMgaXMgdHJ1ZS5cbiAgICovXG4gIHJlYWRvbmx5IHVuaW5zdGFsbFNzbUFnZW50QWZ0ZXJCdWlsZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSB1c2VyIGRhdGEgY29tbWFuZHMgdG8gcGFzcyB0byBJbWFnZSBCdWlsZGVyIGJ1aWxkIGFuZCB0ZXN0IEVDMiBpbnN0YW5jZXMuIEZvciBMaW51eCBhbmQgbWFjT1MsIEltYWdlIEJ1aWxkZXJcbiAgICogdXNlcyBhIGRlZmF1bHQgdXNlciBkYXRhIHNjcmlwdCB0byBpbnN0YWxsIHRoZSBTeXN0ZW1zIE1hbmFnZXIgYWdlbnQuIElmIHlvdSBvdmVycmlkZSB0aGUgdXNlciBkYXRhLCB5b3UgbXVzdFxuICAgKiBlbnN1cmUgdG8gYWRkIGNvbW1hbmRzIHRvIGluc3RhbGwgU3lzdGVtcyBNYW5hZ2VyIGFnZW50LCBpZiBpdCBpcyBub3QgcHJlLWluc3RhbGxlZCBvbiB5b3VyIGJhc2UgaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJEYXRhT3ZlcnJpZGU/OiBlYzIuVXNlckRhdGE7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWdzIHRvIGFwcGx5IHRvIHRoZSBpbWFnZSByZWNpcGVcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYW4gRUMyIEltYWdlIEJ1aWxkZXIgaW1hZ2UgcmVjaXBlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VSZWNpcGVBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGltYWdlIHJlY2lwZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlcml2ZWQgZnJvbSB0aGUgaW1hZ2VSZWNpcGVOYW1lXG4gICAqL1xuICByZWFkb25seSBpbWFnZVJlY2lwZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlIHJlY2lwZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlcml2ZWQgZnJvbSB0aGUgaW1hZ2VSZWNpcGVBcm5cbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUmVjaXBlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGltYWdlIHJlY2lwZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlcml2ZWQgZnJvbSBpbWFnZVJlY2lwZUFybi4gaWYgYSBpbWFnZVJlY2lwZU5hbWUgaXMgcHJvdmlkZWQsIHRoZSBsYXRlc3QgdmVyc2lvbiwgeC54LngsIHdpbGxcbiAgICogYmUgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VSZWNpcGVWZXJzaW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgbmV3IG9yIGltcG9ydGVkIEltYWdlIFJlY2lwZVxuICovXG5hYnN0cmFjdCBjbGFzcyBJbWFnZVJlY2lwZUJhc2UgZXh0ZW5kcyBjZGsuUmVzb3VyY2UgaW1wbGVtZW50cyBJSW1hZ2VSZWNpcGUge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW1hZ2UgcmVjaXBlXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBpbWFnZVJlY2lwZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW1hZ2UgcmVjaXBlXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBpbWFnZVJlY2lwZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGltYWdlIHJlY2lwZVxuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgaW1hZ2VSZWNpcGVWZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW1hZ2UgcmVjaXBlXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlLFxuICAgICAgYWN0aW9ucyxcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMuaW1hZ2VSZWNpcGVBcm5dLFxuICAgICAgc2NvcGU6IHRoaXMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGltYWdlIHJlY2lwZVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAnaW1hZ2VidWlsZGVyOkdldEltYWdlUmVjaXBlJyk7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHJlY2lwZSBpcyBhIENvbnRhaW5lciBSZWNpcGVcbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX2lzQ29udGFpbmVyUmVjaXBlKCk6IHRoaXMgaXMgSUNvbnRhaW5lclJlY2lwZSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSByZWNpcGUgaXMgYW4gSW1hZ2UgUmVjaXBlXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF9pc0ltYWdlUmVjaXBlKCk6IHRoaXMgaXMgSUltYWdlUmVjaXBlIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gRUMyIEltYWdlIEJ1aWxkZXIgSW1hZ2UgUmVjaXBlLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL21hbmFnZS1yZWNpcGVzLmh0bWxcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIEltYWdlUmVjaXBlIGV4dGVuZHMgSW1hZ2VSZWNpcGVCYXNlIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtaW1hZ2VidWlsZGVyLWFscGhhLkltYWdlUmVjaXBlJztcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGltYWdlIHJlY2lwZSBnaXZlbiBpdHMgQVJOLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSW1hZ2VSZWNpcGVBcm4oc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgaW1hZ2VSZWNpcGVBcm46IHN0cmluZyk6IElJbWFnZVJlY2lwZSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbUltYWdlUmVjaXBlQXR0cmlidXRlcyhzY29wZSwgaWQsIHsgaW1hZ2VSZWNpcGVBcm4gfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBhbiBleGlzdGluZyBpbWFnZSByZWNpcGUgZ2l2ZW4gaXRzIG5hbWUuIFRoZSBwcm92aWRlZCBuYW1lIG11c3QgYmUgbm9ybWFsaXplZCBieVxuICAgKiBjb252ZXJ0aW5nIGFsbCBhbHBoYWJldGljYWwgY2hhcmFjdGVycyB0byBsb3dlcmNhc2UsIGFuZCByZXBsYWNpbmcgYWxsIHNwYWNlcyBhbmQgdW5kZXJzY29yZXMgd2l0aCBoeXBoZW5zLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSW1hZ2VSZWNpcGVOYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGltYWdlUmVjaXBlTmFtZTogc3RyaW5nKTogSUltYWdlUmVjaXBlIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tSW1hZ2VSZWNpcGVBdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyBpbWFnZVJlY2lwZU5hbWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGltYWdlIHJlY2lwZSBieSBwcm92aWRpbmcgaXRzIGF0dHJpYnV0ZXMuIElmIHRoZSBpbWFnZSByZWNpcGUgbmFtZSBpcyBwcm92aWRlZCBhcyBhbiBhdHRyaWJ1dGUsXG4gICAqIGl0IG11c3QgYmUgbm9ybWFsaXplZCBieSBjb252ZXJ0aW5nIGFsbCBhbHBoYWJldGljYWwgY2hhcmFjdGVycyB0byBsb3dlcmNhc2UsIGFuZCByZXBsYWNpbmcgYWxsIHNwYWNlcyBhbmRcbiAgICogdW5kZXJzY29yZXMgd2l0aCBoeXBoZW5zLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSW1hZ2VSZWNpcGVBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBJbWFnZVJlY2lwZUF0dHJpYnV0ZXMpOiBJSW1hZ2VSZWNpcGUge1xuICAgIGlmICghYXR0cnMuaW1hZ2VSZWNpcGVBcm4gJiYgIWF0dHJzLmltYWdlUmVjaXBlTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICdlaXRoZXIgaW1hZ2VSZWNpcGVBcm4gb3IgaW1hZ2VSZWNpcGVOYW1lIG11c3QgYmUgcHJvdmlkZWQgdG8gaW1wb3J0IGFuIGltYWdlIHJlY2lwZScsXG4gICAgICAgIHNjb3BlLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbWFnZVJlY2lwZUFybiA9XG4gICAgICBhdHRycy5pbWFnZVJlY2lwZUFybiA/P1xuICAgICAgY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgICAgcmVzb3VyY2U6ICdpbWFnZS1yZWNpcGUnLFxuICAgICAgICByZXNvdXJjZU5hbWU6IGAke2F0dHJzLmltYWdlUmVjaXBlTmFtZX0vJHthdHRycy5pbWFnZVJlY2lwZVZlcnNpb24gPz8gTEFURVNUX1ZFUlNJT059YCxcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgW2ltYWdlUmVjaXBlTmFtZSwgaW1hZ2VSZWNpcGVWZXJzaW9uXSA9ICgoKSA9PiB7XG4gICAgICBpZiAoYXR0cnMuaW1hZ2VSZWNpcGVOYW1lKSB7XG4gICAgICAgIHJldHVybiBbYXR0cnMuaW1hZ2VSZWNpcGVOYW1lLCBhdHRycy5pbWFnZVJlY2lwZVZlcnNpb24gPz8gTEFURVNUX1ZFUlNJT05dO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpbWFnZVJlY2lwZU5hbWVWZXJzaW9uID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5zcGxpdEFybihcbiAgICAgICAgaW1hZ2VSZWNpcGVBcm4sXG4gICAgICAgIGNkay5Bcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICAgICkucmVzb3VyY2VOYW1lITtcblxuICAgICAgY29uc3QgaW1hZ2VSZWNpcGVOYW1lVmVyc2lvblNwbGl0ID0gY2RrLkZuLnNwbGl0KCcvJywgaW1hZ2VSZWNpcGVOYW1lVmVyc2lvbik7XG4gICAgICByZXR1cm4gW2Nkay5Gbi5zZWxlY3QoMCwgaW1hZ2VSZWNpcGVOYW1lVmVyc2lvblNwbGl0KSwgY2RrLkZuLnNlbGVjdCgxLCBpbWFnZVJlY2lwZU5hbWVWZXJzaW9uU3BsaXQpXTtcbiAgICB9KSgpO1xuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgSW1hZ2VSZWNpcGVCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpbWFnZVJlY2lwZUFybiA9IGltYWdlUmVjaXBlQXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGltYWdlUmVjaXBlTmFtZSA9IGltYWdlUmVjaXBlTmFtZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpbWFnZVJlY2lwZVZlcnNpb24gPSBpbWFnZVJlY2lwZVZlcnNpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGFuIEltYWdlUmVjaXBlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc0ltYWdlUmVjaXBlKHg6IGFueSk6IHggaXMgSW1hZ2VSZWNpcGUge1xuICAgIHJldHVybiB4ICE9PSBudWxsICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiBJTUFHRV9SRUNJUEVfU1lNQk9MIGluIHg7XG4gIH1cblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW1hZ2UgcmVjaXBlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW1hZ2VSZWNpcGVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlIHJlY2lwZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGltYWdlUmVjaXBlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgaW1hZ2UgcmVjaXBlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW1hZ2VSZWNpcGVWZXJzaW9uOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBibG9ja0RldmljZXM6IGVjMi5CbG9ja0RldmljZVtdID0gW107XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJbWFnZVJlY2lwZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBwaHlzaWNhbE5hbWU6XG4gICAgICAgIHByb3BzLmltYWdlUmVjaXBlTmFtZSA/P1xuICAgICAgICBjZGsuTGF6eS5zdHJpbmcoe1xuICAgICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgICBjZGsuTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHtcbiAgICAgICAgICAgICAgbWF4TGVuZ3RoOiAxMjgsXG4gICAgICAgICAgICAgIHNlcGFyYXRvcjogJy0nLFxuICAgICAgICAgICAgICBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6ICctJyxcbiAgICAgICAgICAgIH0pLnRvTG93ZXJDYXNlKCksIC8vIEVuZm9yY2UgbG93ZXJjYXNlIGZvciB0aGUgYXV0by1nZW5lcmF0ZWQgZmFsbGJhY2tcbiAgICAgICAgfSksXG4gICAgfSk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgSU1BR0VfUkVDSVBFX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMudmFsaWRhdGVJbWFnZVJlY2lwZU5hbWUoKTtcblxuICAgIHRoaXMuYWRkQmxvY2tEZXZpY2UoLi4uKHByb3BzLmJsb2NrRGV2aWNlcyA/PyBbXSkpO1xuXG4gICAgY29uc3QgY29tcG9uZW50czogQ2ZuSW1hZ2VSZWNpcGUuQ29tcG9uZW50Q29uZmlndXJhdGlvblByb3BlcnR5W10gfCB1bmRlZmluZWQgPSBwcm9wcy5jb21wb25lbnRzPy5tYXAoXG4gICAgICAoY29tcG9uZW50KSA9PiAoe1xuICAgICAgICBjb21wb25lbnRBcm46IGNvbXBvbmVudC5jb21wb25lbnQuY29tcG9uZW50QXJuLFxuICAgICAgICAuLi4oY29tcG9uZW50LnBhcmFtZXRlcnMgJiYge1xuICAgICAgICAgIHBhcmFtZXRlcnM6IE9iamVjdC5lbnRyaWVzKGNvbXBvbmVudC5wYXJhbWV0ZXJzKS5tYXAoXG4gICAgICAgICAgICAoW25hbWUsIHBhcmFtXSk6IENmbkltYWdlUmVjaXBlLkNvbXBvbmVudFBhcmFtZXRlclByb3BlcnR5ID0+ICh7XG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIHZhbHVlOiBwYXJhbS52YWx1ZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICksXG4gICAgICAgIH0pLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGNvbnN0IGltYWdlUmVjaXBlVmVyc2lvbiA9IHByb3BzLmltYWdlUmVjaXBlVmVyc2lvbiA/PyBERUZBVUxUX1JFQ0lQRV9WRVJTSU9OO1xuICAgIGNvbnN0IGltYWdlUmVjaXBlID0gbmV3IENmbkltYWdlUmVjaXBlKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIG5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgICAgdmVyc2lvbjogaW1hZ2VSZWNpcGVWZXJzaW9uLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgcGFyZW50SW1hZ2U6IHByb3BzLmJhc2VJbWFnZS5pbWFnZSxcbiAgICAgIGJsb2NrRGV2aWNlTWFwcGluZ3M6IGNkay5MYXp5LmFueSh7IHByb2R1Y2U6ICgpID0+IHRoaXMucmVuZGVyQmxvY2tEZXZpY2VzKCkgfSksXG4gICAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9wcy53b3JraW5nRGlyZWN0b3J5LFxuICAgICAgYWRkaXRpb25hbEluc3RhbmNlQ29uZmlndXJhdGlvbjogdGhpcy5idWlsZEFkZGl0aW9uYWxJbnN0YW5jZUNvbmZpZ3VyYXRpb24ocHJvcHMpLFxuICAgICAgYW1pVGFnczogcHJvcHMuYW1pVGFncyxcbiAgICAgIHRhZ3M6IHByb3BzLnRhZ3MsXG4gICAgICAuLi4oY29tcG9uZW50cz8ubGVuZ3RoICYmIHsgY29tcG9uZW50cyB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuaW1hZ2VSZWNpcGVOYW1lID0gdGhpcy5nZXRSZXNvdXJjZU5hbWVBdHRyaWJ1dGUoaW1hZ2VSZWNpcGUuYXR0ck5hbWUpO1xuICAgIHRoaXMuaW1hZ2VSZWNpcGVBcm4gPSB0aGlzLmdldFJlc291cmNlQXJuQXR0cmlidXRlKGltYWdlUmVjaXBlLmF0dHJBcm4sIHtcbiAgICAgIHNlcnZpY2U6ICdpbWFnZWJ1aWxkZXInLFxuICAgICAgcmVzb3VyY2U6ICdpbWFnZS1yZWNpcGUnLFxuICAgICAgcmVzb3VyY2VOYW1lOiBgJHt0aGlzLnBoeXNpY2FsTmFtZX0vJHtpbWFnZVJlY2lwZVZlcnNpb259YCxcbiAgICB9KTtcbiAgICB0aGlzLmltYWdlUmVjaXBlVmVyc2lvbiA9IGltYWdlUmVjaXBlLmdldEF0dCgnVmVyc2lvbicpLnRvU3RyaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBibG9jayBkZXZpY2VzIHRvIGF0dGFjaCB0byB0aGUgaW5zdGFuY2UgdXNlZCBmb3IgYnVpbGRpbmcgdGhlIGltYWdlLlxuICAgKlxuICAgKiBAcGFyYW0gYmxvY2tEZXZpY2VzIFRoZSBsaXN0IG9mIGJsb2NrIGRldmljZXMgdG8gYXR0YWNoXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgYWRkQmxvY2tEZXZpY2UoLi4uYmxvY2tEZXZpY2VzOiBlYzIuQmxvY2tEZXZpY2VbXSk6IHZvaWQge1xuICAgIHRoaXMuYmxvY2tEZXZpY2VzLnB1c2goLi4uYmxvY2tEZXZpY2VzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBpbnB1dCBibG9jayBkZXZpY2VzLCBpbnRvIHRoZSBgQmxvY2tEZXZpY2VNYXBwaW5nW11gIHN0cnVjdHVyZSB0aGF0IENmbkltYWdlUmVjaXBlIGV4cGVjdHMgdG8gcmVjZWl2ZS5cbiAgICogVGhpcyBpcyByZW5kZXJlZCBhdCBzeW50aGVzaXMgdGltZSwgYXMgdXNlcnMgY2FuIGFkZCBhZGRpdGlvbmFsIGJsb2NrIGRldmljZXMgd2l0aCBgYWRkQmxvY2tEZXZpY2VgLCBhZnRlciB0aGVcbiAgICogY29uc3RydWN0IGhhcyBiZWVuIGluc3RhbnRpYXRlZC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgcmVuZGVyQmxvY2tEZXZpY2VzKCk6IENmbkltYWdlUmVjaXBlLkluc3RhbmNlQmxvY2tEZXZpY2VNYXBwaW5nUHJvcGVydHlbXSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgYmxvY2tEZXZpY2VzID0gdGhpcy5ibG9ja0RldmljZXMubWFwKChibG9ja0RldmljZSk6IENmbkltYWdlUmVjaXBlLkluc3RhbmNlQmxvY2tEZXZpY2VNYXBwaW5nUHJvcGVydHkgPT4ge1xuICAgICAgY29uc3QgZWJzRGV2aWNlID0gYmxvY2tEZXZpY2Uudm9sdW1lLmVic0RldmljZTtcbiAgICAgIGNvbnN0IGViczogQ2ZuSW1hZ2VSZWNpcGUuRWJzSW5zdGFuY2VCbG9ja0RldmljZVNwZWNpZmljYXRpb25Qcm9wZXJ0eSA9IHtcbiAgICAgICAgLi4uKGVic0RldmljZT8uZGVsZXRlT25UZXJtaW5hdGlvbiAhPT0gdW5kZWZpbmVkICYmIHsgZGVsZXRlT25UZXJtaW5hdGlvbjogZWJzRGV2aWNlLmRlbGV0ZU9uVGVybWluYXRpb24gfSksXG4gICAgICAgIC4uLihlYnNEZXZpY2U/LmVuY3J5cHRlZCAhPT0gdW5kZWZpbmVkICYmIHsgZW5jcnlwdGVkOiBlYnNEZXZpY2UuZW5jcnlwdGVkIH0pLFxuICAgICAgICAuLi4oZWJzRGV2aWNlPy5pb3BzICE9PSB1bmRlZmluZWQgJiYgeyBpb3BzOiBlYnNEZXZpY2UuaW9wcyB9KSxcbiAgICAgICAgLi4uKGVic0RldmljZT8ua21zS2V5ICE9PSB1bmRlZmluZWQgJiYgeyBrbXNLZXlJZDogZWJzRGV2aWNlLmttc0tleS5rZXlBcm4gfSksXG4gICAgICAgIC4uLihlYnNEZXZpY2U/LnNuYXBzaG90SWQgIT09IHVuZGVmaW5lZCAmJiB7IHNuYXBzaG90SWQ6IGVic0RldmljZS5zbmFwc2hvdElkIH0pLFxuICAgICAgICAuLi4oZWJzRGV2aWNlPy50aHJvdWdocHV0ICE9PSB1bmRlZmluZWQgJiYgeyB0aHJvdWdocHV0OiBlYnNEZXZpY2UudGhyb3VnaHB1dCB9KSxcbiAgICAgICAgLi4uKGVic0RldmljZT8udm9sdW1lU2l6ZSAhPT0gdW5kZWZpbmVkICYmIHsgdm9sdW1lU2l6ZTogZWJzRGV2aWNlLnZvbHVtZVNpemUgfSksXG4gICAgICAgIC4uLihlYnNEZXZpY2U/LnZvbHVtZVR5cGUgIT09IHVuZGVmaW5lZCAmJiB7IHZvbHVtZVR5cGU6IGVic0RldmljZS52b2x1bWVUeXBlIH0pLFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGV2aWNlTmFtZTogYmxvY2tEZXZpY2UuZGV2aWNlTmFtZSxcbiAgICAgICAgdmlydHVhbE5hbWU6IGJsb2NrRGV2aWNlLnZvbHVtZS52aXJ0dWFsTmFtZSxcbiAgICAgICAgLi4uKGJsb2NrRGV2aWNlLm1hcHBpbmdFbmFibGVkID09PSBmYWxzZSAmJiB7IG5vRGV2aWNlOiAnJyB9KSxcbiAgICAgICAgLi4uKE9iamVjdC5rZXlzKGVicykubGVuZ3RoICYmIHsgZWJzIH0pLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHJldHVybiBibG9ja0RldmljZXMubGVuZ3RoID8gYmxvY2tEZXZpY2VzIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyB0aGUgYWRkaXRpb25hbCBpbnN0YW5jZSBjb25maWd1cmF0aW9uIHByb3BlcnR5IGludG8gdGhlIGBBZGRpdGlvbmFsSW5zdGFuY2VDb25maWd1cmF0aW9uYCB0eXBlIGluIHRoZVxuICAgKiBDbG91ZEZvcm1hdGlvbiBMMSBkZWZpbml0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgVGhlIHByb3BzIHBhc3NlZCBhcyBpbnB1dCB0byB0aGUgY29uc3RydWN0XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkQWRkaXRpb25hbEluc3RhbmNlQ29uZmlndXJhdGlvbihcbiAgICBwcm9wczogSW1hZ2VSZWNpcGVQcm9wcyxcbiAgKTogQ2ZuSW1hZ2VSZWNpcGUuQWRkaXRpb25hbEluc3RhbmNlQ29uZmlndXJhdGlvblByb3BlcnR5IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzeXN0ZW1zTWFuYWdlckFnZW50OiBDZm5JbWFnZVJlY2lwZS5TeXN0ZW1zTWFuYWdlckFnZW50UHJvcGVydHkgPSB7XG4gICAgICAuLi4ocHJvcHMudW5pbnN0YWxsU3NtQWdlbnRBZnRlckJ1aWxkICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICB1bmluc3RhbGxBZnRlckJ1aWxkOiBwcm9wcy51bmluc3RhbGxTc21BZ2VudEFmdGVyQnVpbGQsXG4gICAgICB9KSxcbiAgICB9O1xuXG4gICAgY29uc3QgYWRkaXRpb25hbEluc3RhbmNlQ29uZmlndXJhdGlvbjogQ2ZuSW1hZ2VSZWNpcGUuQWRkaXRpb25hbEluc3RhbmNlQ29uZmlndXJhdGlvblByb3BlcnR5ID0ge1xuICAgICAgLi4uKE9iamVjdC5rZXlzKHN5c3RlbXNNYW5hZ2VyQWdlbnQpLmxlbmd0aCAmJiB7IHN5c3RlbXNNYW5hZ2VyQWdlbnQgfSksXG4gICAgICAuLi4ocHJvcHMudXNlckRhdGFPdmVycmlkZSAhPT0gdW5kZWZpbmVkICYmIHsgdXNlckRhdGFPdmVycmlkZTogY2RrLkZuLmJhc2U2NChwcm9wcy51c2VyRGF0YU92ZXJyaWRlLnJlbmRlcigpKSB9KSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGFkZGl0aW9uYWxJbnN0YW5jZUNvbmZpZ3VyYXRpb24pLmxlbmd0aCA/IGFkZGl0aW9uYWxJbnN0YW5jZUNvbmZpZ3VyYXRpb24gOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlSW1hZ2VSZWNpcGVOYW1lKCkge1xuICAgIGlmIChjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHRoaXMucGh5c2ljYWxOYW1lKSkge1xuICAgICAgcmV0dXJuOyAvLyBDYW5ub3QgdmFsaWRhdGUgdW5yZXNvbHZlZCB0b2tlbnMsIGdpdmVuIHRoZWlyIGFjdHVhbCB2YWx1ZSBpcyByZW5kZXJlZCBhdCBkZXBsb3ltZW50IHRpbWVcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUubGVuZ3RoID4gMTI4KSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgYHRoZSBpbWFnZVJlY2lwZU5hbWUgY2Fubm90IGJlIGxvbmdlciB0aGFuIDEyOCBjaGFyYWN0ZXJzLCBnb3Q6ICcke3RoaXMucGh5c2ljYWxOYW1lfSdgLFxuICAgICAgICB0aGlzLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJyAnKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoYHRoZSBpbWFnZVJlY2lwZU5hbWUgY2Fubm90IGNvbnRhaW4gc3BhY2VzLCBnb3Q6ICcke3RoaXMucGh5c2ljYWxOYW1lfSdgLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJ18nKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgIGB0aGUgaW1hZ2VSZWNpcGVOYW1lIGNhbm5vdCBjb250YWluIHVuZGVyc2NvcmVzLCBnb3Q6ICcke3RoaXMucGh5c2ljYWxOYW1lfSdgLFxuICAgICAgICB0aGlzLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUgIT09IHRoaXMucGh5c2ljYWxOYW1lLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKGB0aGUgaW1hZ2VSZWNpcGVOYW1lIG11c3QgYmUgbG93ZXJjYXNlLCBnb3Q6ICcke3RoaXMucGh5c2ljYWxOYW1lfSdgLCB0aGlzKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
337
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcmVjaXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaW1hZ2UtcmVjaXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1DQUFtQztBQUVuQywyQ0FBMkM7QUFDM0MsbUVBQThEO0FBQzlELDhFQUE4RjtBQUM5RiwwRUFBMEU7QUFNMUUsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7QUFFdEY7Ozs7O0dBS0c7QUFDSCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUM7QUFFL0I7Ozs7O0dBS0c7QUFDSCxNQUFNLHNCQUFzQixHQUFHLE9BQU8sQ0FBQztBQTBJdkM7O0dBRUc7QUFDSCxNQUFlLGVBQWdCLFNBQVEsR0FBRyxDQUFDLFFBQVE7SUFnQmpEOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxPQUF1QixFQUFFLEdBQUcsT0FBaUI7UUFDeEQsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztZQUM5QixPQUFPO1lBQ1AsT0FBTztZQUNQLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDbkMsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQUM7S0FDSjtJQUVEOzs7OztPQUtHO0lBQ0ksU0FBUyxDQUFDLE9BQXVCO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsNkJBQTZCLENBQUMsQ0FBQztLQUMzRDtJQUVEOzs7O09BSUc7SUFDSSxrQkFBa0I7UUFDdkIsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVEOzs7O09BSUc7SUFDSSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDO0tBQ2I7Q0FDRjtBQUVEOzs7O0dBSUc7SUFFVSxXQUFXOzRCQUR2QixvQ0FBa0I7Ozs7c0JBQ2MsZUFBZTs7OzJCQUF2QixTQUFRLFdBQWU7Ozs7MENBdUo3QyxJQUFBLGtD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QUksR0FBRyxDQUFDLGVBQWUsQ0FBQyxnREFBZ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzVHLENBQUM7U0FDRjs7WUE5T1UsdURBQVc7Ozs7O0FBQVgsa0NBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ2ZuSW1hZ2VSZWNpcGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaW1hZ2VidWlsZGVyJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhLCBNZXRob2RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEJhc2VJbWFnZSB9IGZyb20gJy4vYmFzZS1pbWFnZSc7XG5pbXBvcnQgeyBJQ29udGFpbmVyUmVjaXBlIH0gZnJvbSAnLi9jb250YWluZXItcmVjaXBlJztcbmltcG9ydCB7IENvbXBvbmVudENvbmZpZ3VyYXRpb24sIElSZWNpcGVCYXNlIH0gZnJvbSAnLi9yZWNpcGUtYmFzZSc7XG5cbmNvbnN0IElNQUdFX1JFQ0lQRV9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay9hd3MtaW1hZ2VidWlsZGVyLWFscGhhLkltYWdlUmVjaXBlJyk7XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgYW4gaW1hZ2UgcmVjaXBlLiBXaGVuIHVzaW5nIHRoZSByZWNpcGUgaW4gYSBwaXBlbGluZSwgdGhlIHBpcGVsaW5lIHdpbGwgdXNlIHRoZVxuICogbGF0ZXN0IHJlY2lwZSBhdCB0aGUgdGltZSBvZiBleGVjdXRpb24uXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaWJob3ctc2VtYW50aWMtdmVyc2lvbmluZy5odG1sXG4gKi9cbmNvbnN0IExBVEVTVF9WRVJTSU9OID0gJ3gueC54JztcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCB2ZXJzaW9uIHRvIHVzZSBpbiB0aGUgaW1hZ2UgcmVjaXBlLiBXaGVuIHRoZSByZWNpcGUgaXMgdXBkYXRlZCwgdGhlIGB4YCB3aWxsIGJlIGluY3JlbWVudGVkIG9mZiBmcm9tXG4gKiB0aGUgbGF0ZXN0IHJlY2lwZSB2ZXJzaW9uIHRoYXQgZXhpc3RzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2NyZWF0ZS1pbWFnZS1yZWNpcGVzLmh0bWxcbiAqL1xuY29uc3QgREVGQVVMVF9SRUNJUEVfVkVSU0lPTiA9ICcxLjAueCc7XG5cbi8qKlxuICogQW4gRUMyIEltYWdlIEJ1aWxkZXIgSW1hZ2UgUmVjaXBlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElJbWFnZVJlY2lwZSBleHRlbmRzIElSZWNpcGVCYXNlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGltYWdlIHJlY2lwZVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBpbWFnZVJlY2lwZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW1hZ2UgcmVjaXBlXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUmVjaXBlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgaW1hZ2UgcmVjaXBlXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUmVjaXBlVmVyc2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGFuIEltYWdlIFJlY2lwZSByZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlUmVjaXBlUHJvcHMge1xuICAvKipcbiAgICogVGhlIGJhc2UgaW1hZ2UgZm9yIGN1c3RvbWl6YXRpb25zIHNwZWNpZmllZCBpbiB0aGUgaW1hZ2UgcmVjaXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgYmFzZUltYWdlOiBCYXNlSW1hZ2U7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBpbWFnZSByZWNpcGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBuYW1lIGlzIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VSZWNpcGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgaW1hZ2UgcmVjaXBlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAxLjAueFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VSZWNpcGVWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGltYWdlIHJlY2lwZS5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIGNvbXBvbmVudCBjb25maWd1cmF0aW9ucyB0byBhcHBseSBpbiB0aGUgaW1hZ2UgYnVpbGQuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGNvbXBvbmVudHM/OiBDb21wb25lbnRDb25maWd1cmF0aW9uW107XG5cbiAgLyoqXG4gICAqIFRoZSBhZGRpdGlvbmFsIHRhZ3MgdG8gYXNzaWduIHRvIHRoZSBvdXRwdXQgQU1JIGdlbmVyYXRlZCBieSB0aGUgYnVpbGQuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGFtaVRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBUaGUgYmxvY2sgZGV2aWNlcyB0byBhdHRhY2ggdG8gdGhlIGluc3RhbmNlIHVzZWQgZm9yIGJ1aWxkaW5nIHRoZSBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgYmxvY2tEZXZpY2VzPzogZWMyLkJsb2NrRGV2aWNlW107XG5cbiAgLyoqXG4gICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBmb3IgdXNlIGR1cmluZyBidWlsZCBhbmQgdGVzdCB3b3JrZmxvd3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIEltYWdlIEJ1aWxkZXIgZGVmYXVsdCB3b3JraW5nIGRpcmVjdG9yeSBpcyB1c2VkLiBGb3IgTGludXggYW5kIG1hY09TIGJ1aWxkcywgdGhpcyB3b3VsZCBiZSAvdG1wLiBGb3JcbiAgICogV2luZG93cyBidWlsZHMsIHRoaXMgd291bGQgYmUgQzovXG4gICAqL1xuICByZWFkb25seSB3b3JraW5nRGlyZWN0b3J5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHVuaW5zdGFsbCB0aGUgU3lzdGVtcyBNYW5hZ2VyIGFnZW50IGZyb20geW91ciBmaW5hbCBidWlsZCBpbWFnZSwgcHJpb3IgdG8gY3JlYXRpbmcgdGhlIG5ldyBBTUkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhpcyBpcyBmYWxzZSBpZiB0aGUgU3lzdGVtcyBNYW5hZ2VyIGFnZW50IGlzIHByZS1pbnN0YWxsZWQgb24gdGhlIGJhc2UgaW1hZ2UuIE90aGVyd2lzZSwgdGhpcyBpcyB0cnVlLlxuICAgKi9cbiAgcmVhZG9ubHkgdW5pbnN0YWxsU3NtQWdlbnRBZnRlckJ1aWxkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHVzZXIgZGF0YSBjb21tYW5kcyB0byBwYXNzIHRvIEltYWdlIEJ1aWxkZXIgYnVpbGQgYW5kIHRlc3QgRUMyIGluc3RhbmNlcy4gRm9yIExpbnV4IGFuZCBtYWNPUywgSW1hZ2UgQnVpbGRlclxuICAgKiB1c2VzIGEgZGVmYXVsdCB1c2VyIGRhdGEgc2NyaXB0IHRvIGluc3RhbGwgdGhlIFN5c3RlbXMgTWFuYWdlciBhZ2VudC4gSWYgeW91IG92ZXJyaWRlIHRoZSB1c2VyIGRhdGEsIHlvdSBtdXN0XG4gICAqIGVuc3VyZSB0byBhZGQgY29tbWFuZHMgdG8gaW5zdGFsbCBTeXN0ZW1zIE1hbmFnZXIgYWdlbnQsIGlmIGl0IGlzIG5vdCBwcmUtaW5zdGFsbGVkIG9uIHlvdXIgYmFzZSBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckRhdGFPdmVycmlkZT86IGVjMi5Vc2VyRGF0YTtcblxuICAvKipcbiAgICogVGhlIHRhZ3MgdG8gYXBwbHkgdG8gdGhlIGltYWdlIHJlY2lwZVxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhbiBFQzIgSW1hZ2UgQnVpbGRlciBpbWFnZSByZWNpcGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbWFnZVJlY2lwZUF0dHJpYnV0ZXMge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW1hZ2UgcmVjaXBlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVyaXZlZCBmcm9tIHRoZSBpbWFnZVJlY2lwZU5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUmVjaXBlQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW1hZ2UgcmVjaXBlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVyaXZlZCBmcm9tIHRoZSBpbWFnZVJlY2lwZUFyblxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VSZWNpcGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgaW1hZ2UgcmVjaXBlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVyaXZlZCBmcm9tIGltYWdlUmVjaXBlQXJuLiBpZiBhIGltYWdlUmVjaXBlTmFtZSBpcyBwcm92aWRlZCwgdGhlIGxhdGVzdCB2ZXJzaW9uLCB4LngueCwgd2lsbFxuICAgKiBiZSB1c2VkXG4gICAqL1xuICByZWFkb25seSBpbWFnZVJlY2lwZVZlcnNpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBuZXcgb3IgaW1wb3J0ZWQgSW1hZ2UgUmVjaXBlXG4gKi9cbmFic3RyYWN0IGNsYXNzIEltYWdlUmVjaXBlQmFzZSBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIElJbWFnZVJlY2lwZSB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBpbWFnZSByZWNpcGVcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGltYWdlUmVjaXBlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBpbWFnZSByZWNpcGVcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGltYWdlUmVjaXBlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgaW1hZ2UgcmVjaXBlXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBpbWFnZVJlY2lwZVZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogR3JhbnQgY3VzdG9tIGFjdGlvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbWFnZSByZWNpcGVcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlLFxuICAgICAgYWN0aW9ucyxcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMuaW1hZ2VSZWNpcGVBcm5dLFxuICAgICAgc2NvcGU6IHRoaXMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGltYWdlIHJlY2lwZVxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgcHVibGljIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoZ3JhbnRlZSwgJ2ltYWdlYnVpbGRlcjpHZXRJbWFnZVJlY2lwZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSByZWNpcGUgaXMgYSBDb250YWluZXIgUmVjaXBlXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF9pc0NvbnRhaW5lclJlY2lwZSgpOiB0aGlzIGlzIElDb250YWluZXJSZWNpcGUge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcmVjaXBlIGlzIGFuIEltYWdlIFJlY2lwZVxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfaXNJbWFnZVJlY2lwZSgpOiB0aGlzIGlzIElJbWFnZVJlY2lwZSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIEVDMiBJbWFnZSBCdWlsZGVyIEltYWdlIFJlY2lwZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9tYW5hZ2UtcmVjaXBlcy5odG1sXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBJbWFnZVJlY2lwZSBleHRlbmRzIEltYWdlUmVjaXBlQmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWltYWdlYnVpbGRlci1hbHBoYS5JbWFnZVJlY2lwZSc7XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBpbWFnZSByZWNpcGUgZ2l2ZW4gaXRzIEFSTi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUltYWdlUmVjaXBlQXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGltYWdlUmVjaXBlQXJuOiBzdHJpbmcpOiBJSW1hZ2VSZWNpcGUge1xuICAgIHJldHVybiB0aGlzLmZyb21JbWFnZVJlY2lwZUF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IGltYWdlUmVjaXBlQXJuIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgYW4gZXhpc3RpbmcgaW1hZ2UgcmVjaXBlIGdpdmVuIGl0cyBuYW1lLiBUaGUgcHJvdmlkZWQgbmFtZSBtdXN0IGJlIG5vcm1hbGl6ZWQgYnlcbiAgICogY29udmVydGluZyBhbGwgYWxwaGFiZXRpY2FsIGNoYXJhY3RlcnMgdG8gbG93ZXJjYXNlLCBhbmQgcmVwbGFjaW5nIGFsbCBzcGFjZXMgYW5kIHVuZGVyc2NvcmVzIHdpdGggaHlwaGVucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUltYWdlUmVjaXBlTmFtZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBpbWFnZVJlY2lwZU5hbWU6IHN0cmluZyk6IElJbWFnZVJlY2lwZSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbUltYWdlUmVjaXBlQXR0cmlidXRlcyhzY29wZSwgaWQsIHsgaW1hZ2VSZWNpcGVOYW1lIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBpbWFnZSByZWNpcGUgYnkgcHJvdmlkaW5nIGl0cyBhdHRyaWJ1dGVzLiBJZiB0aGUgaW1hZ2UgcmVjaXBlIG5hbWUgaXMgcHJvdmlkZWQgYXMgYW4gYXR0cmlidXRlLFxuICAgKiBpdCBtdXN0IGJlIG5vcm1hbGl6ZWQgYnkgY29udmVydGluZyBhbGwgYWxwaGFiZXRpY2FsIGNoYXJhY3RlcnMgdG8gbG93ZXJjYXNlLCBhbmQgcmVwbGFjaW5nIGFsbCBzcGFjZXMgYW5kXG4gICAqIHVuZGVyc2NvcmVzIHdpdGggaHlwaGVucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUltYWdlUmVjaXBlQXR0cmlidXRlcyhzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBhdHRyczogSW1hZ2VSZWNpcGVBdHRyaWJ1dGVzKTogSUltYWdlUmVjaXBlIHtcbiAgICBpZiAoIWF0dHJzLmltYWdlUmVjaXBlQXJuICYmICFhdHRycy5pbWFnZVJlY2lwZU5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAnZWl0aGVyIGltYWdlUmVjaXBlQXJuIG9yIGltYWdlUmVjaXBlTmFtZSBtdXN0IGJlIHByb3ZpZGVkIHRvIGltcG9ydCBhbiBpbWFnZSByZWNpcGUnLFxuICAgICAgICBzY29wZSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgaW1hZ2VSZWNpcGVBcm4gPVxuICAgICAgYXR0cnMuaW1hZ2VSZWNpcGVBcm4gPz9cbiAgICAgIGNkay5TdGFjay5vZihzY29wZSkuZm9ybWF0QXJuKHtcbiAgICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICAgIHJlc291cmNlOiAnaW1hZ2UtcmVjaXBlJyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBgJHthdHRycy5pbWFnZVJlY2lwZU5hbWV9LyR7YXR0cnMuaW1hZ2VSZWNpcGVWZXJzaW9uID8/IExBVEVTVF9WRVJTSU9OfWAsXG4gICAgICB9KTtcblxuICAgIGNvbnN0IFtpbWFnZVJlY2lwZU5hbWUsIGltYWdlUmVjaXBlVmVyc2lvbl0gPSAoKCkgPT4ge1xuICAgICAgaWYgKGF0dHJzLmltYWdlUmVjaXBlTmFtZSkge1xuICAgICAgICByZXR1cm4gW2F0dHJzLmltYWdlUmVjaXBlTmFtZSwgYXR0cnMuaW1hZ2VSZWNpcGVWZXJzaW9uID8/IExBVEVTVF9WRVJTSU9OXTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaW1hZ2VSZWNpcGVOYW1lVmVyc2lvbiA9IGNkay5TdGFjay5vZihzY29wZSkuc3BsaXRBcm4oXG4gICAgICAgIGltYWdlUmVjaXBlQXJuLFxuICAgICAgICBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgICApLnJlc291cmNlTmFtZSE7XG5cbiAgICAgIGNvbnN0IGltYWdlUmVjaXBlTmFtZVZlcnNpb25TcGxpdCA9IGNkay5Gbi5zcGxpdCgnLycsIGltYWdlUmVjaXBlTmFtZVZlcnNpb24pO1xuICAgICAgcmV0dXJuIFtjZGsuRm4uc2VsZWN0KDAsIGltYWdlUmVjaXBlTmFtZVZlcnNpb25TcGxpdCksIGNkay5Gbi5zZWxlY3QoMSwgaW1hZ2VSZWNpcGVOYW1lVmVyc2lvblNwbGl0KV07XG4gICAgfSkoKTtcblxuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIEltYWdlUmVjaXBlQmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaW1hZ2VSZWNpcGVBcm4gPSBpbWFnZVJlY2lwZUFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpbWFnZVJlY2lwZU5hbWUgPSBpbWFnZVJlY2lwZU5hbWU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaW1hZ2VSZWNpcGVWZXJzaW9uID0gaW1hZ2VSZWNpcGVWZXJzaW9uO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIG9iamVjdCBpcyBhbiBJbWFnZVJlY2lwZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNJbWFnZVJlY2lwZSh4OiBhbnkpOiB4IGlzIEltYWdlUmVjaXBlIHtcbiAgICByZXR1cm4geCAhPT0gbnVsbCAmJiB0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgSU1BR0VfUkVDSVBFX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGltYWdlIHJlY2lwZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGltYWdlUmVjaXBlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBpbWFnZSByZWNpcGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpbWFnZVJlY2lwZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGltYWdlIHJlY2lwZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGltYWdlUmVjaXBlVmVyc2lvbjogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYmxvY2tEZXZpY2VzOiBlYzIuQmxvY2tEZXZpY2VbXSA9IFtdO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSW1hZ2VSZWNpcGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcGh5c2ljYWxOYW1lOlxuICAgICAgICBwcm9wcy5pbWFnZVJlY2lwZU5hbWUgPz9cbiAgICAgICAgY2RrLkxhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PlxuICAgICAgICAgICAgY2RrLk5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgICAgICAgICAgIG1heExlbmd0aDogMTI4LFxuICAgICAgICAgICAgICBzZXBhcmF0b3I6ICctJyxcbiAgICAgICAgICAgICAgYWxsb3dlZFNwZWNpYWxDaGFyYWN0ZXJzOiAnLScsXG4gICAgICAgICAgICB9KS50b0xvd2VyQ2FzZSgpLCAvLyBFbmZvcmNlIGxvd2VyY2FzZSBmb3IgdGhlIGF1dG8tZ2VuZXJhdGVkIGZhbGxiYWNrXG4gICAgICAgIH0pLFxuICAgIH0pO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIElNQUdFX1JFQ0lQRV9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG5cbiAgICB0aGlzLnZhbGlkYXRlSW1hZ2VSZWNpcGVOYW1lKCk7XG5cbiAgICB0aGlzLmFkZEJsb2NrRGV2aWNlKC4uLihwcm9wcy5ibG9ja0RldmljZXMgPz8gW10pKTtcblxuICAgIGNvbnN0IGNvbXBvbmVudHM6IENmbkltYWdlUmVjaXBlLkNvbXBvbmVudENvbmZpZ3VyYXRpb25Qcm9wZXJ0eVtdIHwgdW5kZWZpbmVkID0gcHJvcHMuY29tcG9uZW50cz8ubWFwKFxuICAgICAgKGNvbXBvbmVudCkgPT4gKHtcbiAgICAgICAgY29tcG9uZW50QXJuOiBjb21wb25lbnQuY29tcG9uZW50LmNvbXBvbmVudEFybixcbiAgICAgICAgLi4uKGNvbXBvbmVudC5wYXJhbWV0ZXJzICYmIHtcbiAgICAgICAgICBwYXJhbWV0ZXJzOiBPYmplY3QuZW50cmllcyhjb21wb25lbnQucGFyYW1ldGVycykubWFwKFxuICAgICAgICAgICAgKFtuYW1lLCBwYXJhbV0pOiBDZm5JbWFnZVJlY2lwZS5Db21wb25lbnRQYXJhbWV0ZXJQcm9wZXJ0eSA9PiAoe1xuICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICB2YWx1ZTogcGFyYW0udmFsdWUsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApLFxuICAgICAgICB9KSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBjb25zdCBpbWFnZVJlY2lwZVZlcnNpb24gPSBwcm9wcy5pbWFnZVJlY2lwZVZlcnNpb24gPz8gREVGQVVMVF9SRUNJUEVfVkVSU0lPTjtcbiAgICBjb25zdCBpbWFnZVJlY2lwZSA9IG5ldyBDZm5JbWFnZVJlY2lwZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBuYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICAgIHZlcnNpb246IGltYWdlUmVjaXBlVmVyc2lvbixcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIHBhcmVudEltYWdlOiBwcm9wcy5iYXNlSW1hZ2UuaW1hZ2UsXG4gICAgICBibG9ja0RldmljZU1hcHBpbmdzOiBjZGsuTGF6eS5hbnkoeyBwcm9kdWNlOiAoKSA9PiB0aGlzLnJlbmRlckJsb2NrRGV2aWNlcygpIH0pLFxuICAgICAgd29ya2luZ0RpcmVjdG9yeTogcHJvcHMud29ya2luZ0RpcmVjdG9yeSxcbiAgICAgIGFkZGl0aW9uYWxJbnN0YW5jZUNvbmZpZ3VyYXRpb246IHRoaXMuYnVpbGRBZGRpdGlvbmFsSW5zdGFuY2VDb25maWd1cmF0aW9uKHByb3BzKSxcbiAgICAgIGFtaVRhZ3M6IHByb3BzLmFtaVRhZ3MsXG4gICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgICAgLi4uKGNvbXBvbmVudHM/Lmxlbmd0aCAmJiB7IGNvbXBvbmVudHMgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmltYWdlUmVjaXBlTmFtZSA9IHRoaXMuZ2V0UmVzb3VyY2VOYW1lQXR0cmlidXRlKGltYWdlUmVjaXBlLmF0dHJOYW1lKTtcbiAgICB0aGlzLmltYWdlUmVjaXBlQXJuID0gdGhpcy5nZXRSZXNvdXJjZUFybkF0dHJpYnV0ZShpbWFnZVJlY2lwZS5hdHRyQXJuLCB7XG4gICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgIHJlc291cmNlOiAnaW1hZ2UtcmVjaXBlJyxcbiAgICAgIHJlc291cmNlTmFtZTogYCR7dGhpcy5waHlzaWNhbE5hbWV9LyR7aW1hZ2VSZWNpcGVWZXJzaW9ufWAsXG4gICAgfSk7XG4gICAgdGhpcy5pbWFnZVJlY2lwZVZlcnNpb24gPSBpbWFnZVJlY2lwZS5nZXRBdHQoJ1ZlcnNpb24nKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYmxvY2sgZGV2aWNlcyB0byBhdHRhY2ggdG8gdGhlIGluc3RhbmNlIHVzZWQgZm9yIGJ1aWxkaW5nIHRoZSBpbWFnZS5cbiAgICpcbiAgICogQHBhcmFtIGJsb2NrRGV2aWNlcyBUaGUgbGlzdCBvZiBibG9jayBkZXZpY2VzIHRvIGF0dGFjaFxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGFkZEJsb2NrRGV2aWNlKC4uLmJsb2NrRGV2aWNlczogZWMyLkJsb2NrRGV2aWNlW10pOiB2b2lkIHtcbiAgICB0aGlzLmJsb2NrRGV2aWNlcy5wdXNoKC4uLmJsb2NrRGV2aWNlcyk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgaW5wdXQgYmxvY2sgZGV2aWNlcywgaW50byB0aGUgYEJsb2NrRGV2aWNlTWFwcGluZ1tdYCBzdHJ1Y3R1cmUgdGhhdCBDZm5JbWFnZVJlY2lwZSBleHBlY3RzIHRvIHJlY2VpdmUuXG4gICAqIFRoaXMgaXMgcmVuZGVyZWQgYXQgc3ludGhlc2lzIHRpbWUsIGFzIHVzZXJzIGNhbiBhZGQgYWRkaXRpb25hbCBibG9jayBkZXZpY2VzIHdpdGggYGFkZEJsb2NrRGV2aWNlYCwgYWZ0ZXIgdGhlXG4gICAqIGNvbnN0cnVjdCBoYXMgYmVlbiBpbnN0YW50aWF0ZWQuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHJlbmRlckJsb2NrRGV2aWNlcygpOiBDZm5JbWFnZVJlY2lwZS5JbnN0YW5jZUJsb2NrRGV2aWNlTWFwcGluZ1Byb3BlcnR5W10gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGJsb2NrRGV2aWNlcyA9IHRoaXMuYmxvY2tEZXZpY2VzLm1hcCgoYmxvY2tEZXZpY2UpOiBDZm5JbWFnZVJlY2lwZS5JbnN0YW5jZUJsb2NrRGV2aWNlTWFwcGluZ1Byb3BlcnR5ID0+IHtcbiAgICAgIGNvbnN0IGVic0RldmljZSA9IGJsb2NrRGV2aWNlLnZvbHVtZS5lYnNEZXZpY2U7XG4gICAgICBjb25zdCBlYnM6IENmbkltYWdlUmVjaXBlLkVic0luc3RhbmNlQmxvY2tEZXZpY2VTcGVjaWZpY2F0aW9uUHJvcGVydHkgPSB7XG4gICAgICAgIC4uLihlYnNEZXZpY2U/LmRlbGV0ZU9uVGVybWluYXRpb24gIT09IHVuZGVmaW5lZCAmJiB7IGRlbGV0ZU9uVGVybWluYXRpb246IGVic0RldmljZS5kZWxldGVPblRlcm1pbmF0aW9uIH0pLFxuICAgICAgICAuLi4oZWJzRGV2aWNlPy5lbmNyeXB0ZWQgIT09IHVuZGVmaW5lZCAmJiB7IGVuY3J5cHRlZDogZWJzRGV2aWNlLmVuY3J5cHRlZCB9KSxcbiAgICAgICAgLi4uKGVic0RldmljZT8uaW9wcyAhPT0gdW5kZWZpbmVkICYmIHsgaW9wczogZWJzRGV2aWNlLmlvcHMgfSksXG4gICAgICAgIC4uLihlYnNEZXZpY2U/Lmttc0tleSAhPT0gdW5kZWZpbmVkICYmIHsga21zS2V5SWQ6IGVic0RldmljZS5rbXNLZXkua2V5QXJuIH0pLFxuICAgICAgICAuLi4oZWJzRGV2aWNlPy5zbmFwc2hvdElkICE9PSB1bmRlZmluZWQgJiYgeyBzbmFwc2hvdElkOiBlYnNEZXZpY2Uuc25hcHNob3RJZCB9KSxcbiAgICAgICAgLi4uKGVic0RldmljZT8udGhyb3VnaHB1dCAhPT0gdW5kZWZpbmVkICYmIHsgdGhyb3VnaHB1dDogZWJzRGV2aWNlLnRocm91Z2hwdXQgfSksXG4gICAgICAgIC4uLihlYnNEZXZpY2U/LnZvbHVtZVNpemUgIT09IHVuZGVmaW5lZCAmJiB7IHZvbHVtZVNpemU6IGVic0RldmljZS52b2x1bWVTaXplIH0pLFxuICAgICAgICAuLi4oZWJzRGV2aWNlPy52b2x1bWVUeXBlICE9PSB1bmRlZmluZWQgJiYgeyB2b2x1bWVUeXBlOiBlYnNEZXZpY2Uudm9sdW1lVHlwZSB9KSxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRldmljZU5hbWU6IGJsb2NrRGV2aWNlLmRldmljZU5hbWUsXG4gICAgICAgIHZpcnR1YWxOYW1lOiBibG9ja0RldmljZS52b2x1bWUudmlydHVhbE5hbWUsXG4gICAgICAgIC4uLihibG9ja0RldmljZS5tYXBwaW5nRW5hYmxlZCA9PT0gZmFsc2UgJiYgeyBub0RldmljZTogJycgfSksXG4gICAgICAgIC4uLihPYmplY3Qua2V5cyhlYnMpLmxlbmd0aCAmJiB7IGVicyB9KSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYmxvY2tEZXZpY2VzLmxlbmd0aCA/IGJsb2NrRGV2aWNlcyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIGFkZGl0aW9uYWwgaW5zdGFuY2UgY29uZmlndXJhdGlvbiBwcm9wZXJ0eSBpbnRvIHRoZSBgQWRkaXRpb25hbEluc3RhbmNlQ29uZmlndXJhdGlvbmAgdHlwZSBpbiB0aGVcbiAgICogQ2xvdWRGb3JtYXRpb24gTDEgZGVmaW5pdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIFRoZSBwcm9wcyBwYXNzZWQgYXMgaW5wdXQgdG8gdGhlIGNvbnN0cnVjdFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEFkZGl0aW9uYWxJbnN0YW5jZUNvbmZpZ3VyYXRpb24oXG4gICAgcHJvcHM6IEltYWdlUmVjaXBlUHJvcHMsXG4gICk6IENmbkltYWdlUmVjaXBlLkFkZGl0aW9uYWxJbnN0YW5jZUNvbmZpZ3VyYXRpb25Qcm9wZXJ0eSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgc3lzdGVtc01hbmFnZXJBZ2VudDogQ2ZuSW1hZ2VSZWNpcGUuU3lzdGVtc01hbmFnZXJBZ2VudFByb3BlcnR5ID0ge1xuICAgICAgLi4uKHByb3BzLnVuaW5zdGFsbFNzbUFnZW50QWZ0ZXJCdWlsZCAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgdW5pbnN0YWxsQWZ0ZXJCdWlsZDogcHJvcHMudW5pbnN0YWxsU3NtQWdlbnRBZnRlckJ1aWxkLFxuICAgICAgfSksXG4gICAgfTtcblxuICAgIGNvbnN0IGFkZGl0aW9uYWxJbnN0YW5jZUNvbmZpZ3VyYXRpb246IENmbkltYWdlUmVjaXBlLkFkZGl0aW9uYWxJbnN0YW5jZUNvbmZpZ3VyYXRpb25Qcm9wZXJ0eSA9IHtcbiAgICAgIC4uLihPYmplY3Qua2V5cyhzeXN0ZW1zTWFuYWdlckFnZW50KS5sZW5ndGggJiYgeyBzeXN0ZW1zTWFuYWdlckFnZW50IH0pLFxuICAgICAgLi4uKHByb3BzLnVzZXJEYXRhT3ZlcnJpZGUgIT09IHVuZGVmaW5lZCAmJiB7IHVzZXJEYXRhT3ZlcnJpZGU6IGNkay5Gbi5iYXNlNjQocHJvcHMudXNlckRhdGFPdmVycmlkZS5yZW5kZXIoKSkgfSksXG4gICAgfTtcblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhhZGRpdGlvbmFsSW5zdGFuY2VDb25maWd1cmF0aW9uKS5sZW5ndGggPyBhZGRpdGlvbmFsSW5zdGFuY2VDb25maWd1cmF0aW9uIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUltYWdlUmVjaXBlTmFtZSgpIHtcbiAgICBpZiAoY2RrLlRva2VuLmlzVW5yZXNvbHZlZCh0aGlzLnBoeXNpY2FsTmFtZSkpIHtcbiAgICAgIHJldHVybjsgLy8gQ2Fubm90IHZhbGlkYXRlIHVucmVzb2x2ZWQgdG9rZW5zLCBnaXZlbiB0aGVpciBhY3R1YWwgdmFsdWUgaXMgcmVuZGVyZWQgYXQgZGVwbG95bWVudCB0aW1lXG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmxlbmd0aCA+IDEyOCkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgIGB0aGUgaW1hZ2VSZWNpcGVOYW1lIGNhbm5vdCBiZSBsb25nZXIgdGhhbiAxMjggY2hhcmFjdGVycywgZ290OiAnJHt0aGlzLnBoeXNpY2FsTmFtZX0nYCxcbiAgICAgICAgdGhpcyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmluY2x1ZGVzKCcgJykpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKGB0aGUgaW1hZ2VSZWNpcGVOYW1lIGNhbm5vdCBjb250YWluIHNwYWNlcywgZ290OiAnJHt0aGlzLnBoeXNpY2FsTmFtZX0nYCwgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmluY2x1ZGVzKCdfJykpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBgdGhlIGltYWdlUmVjaXBlTmFtZSBjYW5ub3QgY29udGFpbiB1bmRlcnNjb3JlcywgZ290OiAnJHt0aGlzLnBoeXNpY2FsTmFtZX0nYCxcbiAgICAgICAgdGhpcyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lICE9PSB0aGlzLnBoeXNpY2FsTmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihgdGhlIGltYWdlUmVjaXBlTmFtZSBtdXN0IGJlIGxvd2VyY2FzZSwgZ290OiAnJHt0aGlzLnBoeXNpY2FsTmFtZX0nYCwgdGhpcyk7XG4gICAgfVxuICB9XG59XG4iXX0=
package/lib/image.d.ts CHANGED
@@ -229,6 +229,8 @@ declare abstract class ImageBase extends cdk.Resource implements IImage {
229
229
  /**
230
230
  * Grant custom actions to the given grantee for the image
231
231
  *
232
+ * [disable-awslint:no-grants]
233
+ *
232
234
  * @param grantee The principal
233
235
  * @param actions The list of actions
234
236
  */
@@ -236,12 +238,16 @@ declare abstract class ImageBase extends cdk.Resource implements IImage {
236
238
  /**
237
239
  * Grants the default permissions for building an image to the provided execution role.
238
240
  *
241
+ * [disable-awslint:no-grants]
242
+ *
239
243
  * @param grantee The execution role used for the image build.
240
244
  */
241
245
  grantDefaultExecutionRolePermissions(grantee: iam.IGrantable): iam.Grant[];
242
246
  /**
243
247
  * Grant read permissions to the given grantee for the image
244
248
  *
249
+ * [disable-awslint:no-grants]
250
+ *
245
251
  * @param grantee The principal
246
252
  */
247
253
  grantRead(grantee: iam.IGrantable): iam.Grant;
@@ -312,6 +318,8 @@ export declare class Image extends ImageBase {
312
318
  /**
313
319
  * Grants the default permissions for building an image to the provided execution role.
314
320
  *
321
+ * [disable-awslint:no-grants]
322
+ *
315
323
  * @param grantee The execution role used for the image build.
316
324
  */
317
325
  grantDefaultExecutionRolePermissions(grantee: iam.IGrantable): iam.Grant[];