awscdk-resources-mongodbatlas
Version:
MongoDB Atlas CDK Construct Library for AWS CloudFormation Resources
173 lines • 35.1 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CfnSearchIndex = void 0;
exports.toJson_CfnSearchIndexProps = toJson_CfnSearchIndexProps;
exports.toJson_ApiAtlasFtsAnalyzersViewManual = toJson_ApiAtlasFtsAnalyzersViewManual;
exports.toJson_ApiAtlasFtsMappingsViewManual = toJson_ApiAtlasFtsMappingsViewManual;
exports.toJson_ApiAtlasFtsSynonymMappingDefinitionView = toJson_ApiAtlasFtsSynonymMappingDefinitionView;
exports.toJson_TypeSet = toJson_TypeSet;
exports.toJson_ApiAtlasFtsAnalyzersTokenizer = toJson_ApiAtlasFtsAnalyzersTokenizer;
exports.toJson_SynonymSource = toJson_SynonymSource;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
// Generated by cdk-import
const cdk = require("aws-cdk-lib");
/**
* Converts an object of type 'CfnSearchIndexProps' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnSearchIndexProps(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
Analyzer: obj.analyzer,
Analyzers: obj.analyzers?.map((y) => toJson_ApiAtlasFtsAnalyzersViewManual(y)),
Profile: obj.profile,
ClusterName: obj.clusterName,
CollectionName: obj.collectionName,
Database: obj.database,
ProjectId: obj.projectId,
Mappings: toJson_ApiAtlasFtsMappingsViewManual(obj.mappings),
Name: obj.name,
Type: obj.type,
SearchAnalyzer: obj.searchAnalyzer,
Synonyms: obj.synonyms?.map((y) => toJson_ApiAtlasFtsSynonymMappingDefinitionView(y)),
Fields: obj.fields,
StoredSource: obj.storedSource,
TypeSets: obj.typeSets?.map((y) => toJson_TypeSet(y)),
NumPartitions: obj.numPartitions,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'ApiAtlasFtsAnalyzersViewManual' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_ApiAtlasFtsAnalyzersViewManual(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
CharFilters: obj.charFilters?.map((y) => y),
Name: obj.name,
TokenFilters: obj.tokenFilters?.map((y) => y),
Tokenizer: toJson_ApiAtlasFtsAnalyzersTokenizer(obj.tokenizer),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'ApiAtlasFtsMappingsViewManual' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_ApiAtlasFtsMappingsViewManual(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
Dynamic: obj.dynamic,
DynamicConfig: obj.dynamicConfig,
Fields: obj.fields,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'ApiAtlasFtsSynonymMappingDefinitionView' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_ApiAtlasFtsSynonymMappingDefinitionView(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
Analyzer: obj.analyzer,
Name: obj.name,
Source: toJson_SynonymSource(obj.source),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'TypeSet' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_TypeSet(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
Name: obj.name,
Types: obj.types,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'ApiAtlasFtsAnalyzersTokenizer' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_ApiAtlasFtsAnalyzersTokenizer(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
MaxGram: obj.maxGram,
MinGram: obj.minGram,
Type: obj.type,
Group: obj.group,
Pattern: obj.pattern,
MaxTokenLength: obj.maxTokenLength,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'SynonymSource' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_SynonymSource(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
Collection: obj.collection,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {});
}
/* eslint-enable max-len, quote-props */
/**
* A CloudFormation `MongoDB::Atlas::SearchIndex`
*
* @cloudformationResource MongoDB::Atlas::SearchIndex
* @stability external
*/
class CfnSearchIndex extends cdk.CfnResource {
/**
* Create a new `MongoDB::Atlas::SearchIndex`.
*
* @param scope - scope in which this resource is defined
* @param id - scoped id of the resource
* @param props - resource properties
*/
constructor(scope, id, props) {
super(scope, id, {
type: CfnSearchIndex.CFN_RESOURCE_TYPE_NAME,
properties: toJson_CfnSearchIndexProps(props),
});
this.props = props;
this.attrIndexId = cdk.Token.asString(this.getAtt("IndexId"));
this.attrStatus = cdk.Token.asString(this.getAtt("Status"));
}
}
exports.CfnSearchIndex = CfnSearchIndex;
_a = JSII_RTTI_SYMBOL_1;
CfnSearchIndex[_a] = { fqn: "awscdk-resources-mongodbatlas.CfnSearchIndex", version: "4.0.0" };
/**
* The CloudFormation resource type name for this resource class.
*/
CfnSearchIndex.CFN_RESOURCE_TYPE_NAME = "MongoDB::Atlas::SearchIndex";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbDEtcmVzb3VyY2VzL3NlYXJjaC1pbmRleC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBd0lBLGdFQWlDQztBQStDRCxzRkFpQkM7QUFpQ0Qsb0ZBZ0JDO0FBaUNELHdHQWdCQztBQTBCRCx3Q0FlQztBQXdERCxvRkFtQkM7QUFtQkQsb0RBY0M7O0FBaGVELDBCQUEwQjtBQUMxQixtQ0FBbUM7QUFtSW5DOztHQUVHO0FBQ0gseUNBQXlDO0FBQ3pDLFNBQWdCLDBCQUEwQixDQUN4QyxHQUFvQztJQUVwQyxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN0QixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUc7UUFDYixRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVE7UUFDdEIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDbEMscUNBQXFDLENBQUMsQ0FBQyxDQUFDLENBQ3pDO1FBQ0QsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO1FBQ3BCLFdBQVcsRUFBRSxHQUFHLENBQUMsV0FBVztRQUM1QixjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWM7UUFDbEMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1FBQ3RCLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUztRQUN4QixRQUFRLEVBQUUsb0NBQW9DLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUM1RCxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7UUFDZCxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7UUFDZCxjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWM7UUFDbEMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDaEMsOENBQThDLENB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QTBCO0lBQzFCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQ2xDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUMzRCxFQUFFLENBQ0gsQ0FBQztBQUNKLENBQUM7QUFDRCx3Q0FBd0M7QUFFeEM7Ozs7O0dBS0c7QUFDSCxNQUFhLGNBQWUsU0FBUSxHQUFHLENBQUMsV0FBVztJQW9CakQ7Ozs7OztPQU1HO0lBQ0gsWUFDRSxLQUEyQixFQUMzQixFQUFVLEVBQ1YsS0FBMEI7UUFFMUIsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixJQUFJLEVBQUUsY0FBYyxDQUFDLHNCQUFzQjtZQUMzQyxVQUFVLEVBQUUsMEJBQTBCLENBQUMsS0FBSyxDQUFFO1NBQy9DLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRW5CLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7O0FBekNILHdDQTBDQzs7O0FBekNDOztHQUVHO0FBQ29CLHFDQUFzQixHQUFHLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IGNkay1pbXBvcnRcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuLyoqXG4gKiBSZXR1cm5zLCBhZGRzLCBlZGl0cywgYW5kIHJlbW92ZXMgQXRsYXMgU2VhcmNoIGluZGV4ZXMuIEFsc28gcmV0dXJucyBhbmQgdXBkYXRlcyB1c2VyLWRlZmluZWQgYW5hbHl6ZXJzLlxuICpcbiAqIEBzY2hlbWEgQ2ZuU2VhcmNoSW5kZXhQcm9wc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENmblNlYXJjaEluZGV4UHJvcHMge1xuICAvKipcbiAgICogU3BlY2lmaWMgcHJlLWRlZmluZWQgbWV0aG9kIGNob3NlbiB0byBjb252ZXJ0IGRhdGFiYXNlIGZpZWxkIHRleHQgaW50byBzZWFyY2hhYmxlIHdvcmRzLiBUaGlzIGNvbnZlcnNpb24gcmVkdWNlcyB0aGUgdGV4dCBvZiBmaWVsZHMgaW50byB0aGUgc21hbGxlc3QgdW5pdHMgb2YgdGV4dC4gVGhlc2UgdW5pdHMgYXJlIGNhbGxlZCBhICoqdGVybSoqIG9yICoqdG9rZW4qKi4gVGhpcyBwcm9jZXNzLCBrbm93biBhcyB0b2tlbml6YXRpb24sIGludm9sdmVzIGEgdmFyaWV0eSBvZiBjaGFuZ2VzIG1hZGUgdG8gdGhlIHRleHQgaW4gZmllbGRzOlxuICAgKlxuICAgKiAtIGV4dHJhY3Rpbmcgd29yZHNcbiAgICogLSByZW1vdmluZyBwdW5jdHVhdGlvblxuICAgKiAtIHJlbW92aW5nIGFjY2VudHNcbiAgICogLSBjaGFuZ2luZyB0byBsb3dlcmNhc2VcbiAgICogLSByZW1vdmluZyBjb21tb24gd29yZHNcbiAgICogLSByZWR1Y2luZyB3b3JkcyB0byB0aGVpciByb290IGZvcm0gKHN0ZW1taW5nKVxuICAgKiAtIGNoYW5naW5nIHdvcmRzIHRvIHRoZWlyIGJhc2UgZm9ybSAobGVtbWF0aXphdGlvbilcbiAgICogTW9uZ29EQiBDbG91ZCB1c2VzIHRoZSBzZWxlY3RlZCBwcm9jZXNzIHRvIGJ1aWxkIHRoZSBBdGxhcyBTZWFyY2ggaW5kZXguXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuU2VhcmNoSW5kZXhQcm9wcyNBbmFseXplclxuICAgKi9cbiAgcmVhZG9ubHkgYW5hbHl6ZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgdXNlci1kZWZpbmVkIG1ldGhvZHMgdG8gY29udmVydCBkYXRhYmFzZSBmaWVsZCB0ZXh0IGludG8gc2VhcmNoYWJsZSB3b3Jkcy5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5TZWFyY2hJbmRleFByb3BzI0FuYWx5emVyc1xuICAgKi9cbiAgcmVhZG9ubHkgYW5hbHl6ZXJzPzogQXBpQXRsYXNGdHNBbmFseXplcnNWaWV3TWFudWFsW107XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9maWxlIGlzIGRlZmluZWQgaW4gQVdTIFNlY3JldCBtYW5hZ2VyLiBTZWUgW1NlY3JldCBNYW5hZ2VyIFByb2ZpbGUgc2V0dXBdKC4uLy4uLy4uL2V4YW1wbGVzL3Byb2ZpbGUtc2VjcmV0LnlhbWwpLlxuICAgKlxuICAgKiBAc2NoZW1hIENmblNlYXJjaEluZGV4UHJvcHMjUHJvZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgY2x1c3RlciB0aGF0IGNvbnRhaW5zIHRoZSBkYXRhYmFzZSBhbmQgY29sbGVjdGlvbiB3aXRoIG9uZSBvciBtb3JlIEFwcGxpY2F0aW9uIFNlYXJjaCBpbmRleGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIENmblNlYXJjaEluZGV4UHJvcHMjQ2x1c3Rlck5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGNsdXN0ZXJOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgaWRlbnRpZmllcyB0aGUgY29sbGVjdGlvbiB0aGF0IGNvbnRhaW5zIG9uZSBvciBtb3JlIEF0bGFzIFNlYXJjaCBpbmRleGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIENmblNlYXJjaEluZGV4UHJvcHMjQ29sbGVjdGlvbk5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGNvbGxlY3Rpb25OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgaWRlbnRpZmllcyB0aGUgZGF0YWJhc2UgdGhhdCBjb250YWlucyB0aGUgY29sbGVjdGlvbiB3aXRoIG9uZSBvciBtb3JlIEF0bGFzIFNlYXJjaCBpbmRleGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIENmblNlYXJjaEluZGV4UHJvcHMjRGF0YWJhc2VcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFiYXNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVuaXF1ZSAyNC1oZXhhZGVjaW1hbCBkaWdpdCBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHlvdXIgcHJvamVjdC5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5TZWFyY2hJbmRleFByb3BzI1Byb2plY3RJZFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVjdElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRleCBzcGVjaWZpY2F0aW9ucyBmb3IgdGhlIGNvbGxlY3Rpb24ncyBmaWVsZHMuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuU2VhcmNoSW5kZXhQcm9wcyNNYXBwaW5nc1xuICAgKi9cbiAgcmVhZG9ubHkgbWFwcGluZ3M/OiBBcGlBdGxhc0Z0c01hcHBpbmdzVmlld01hbnVhbDtcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHRoaXMgaW5kZXguIFdpdGhpbiBlYWNoIG5hbWVzcGFjZSwgbmFtZXMgb2YgYWxsIGluZGV4ZXMgaW4gdGhlIG5hbWVzcGFjZSBtdXN0IGJlIHVuaXF1ZS5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5TZWFyY2hJbmRleFByb3BzI05hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVHlwZSBvZiBpbmRleDogKipzZWFyY2gqKiBvciAqKnZlY3RvclNlYXJjaCoqLiBEZWZhdWx0IHR5cGUgaXMgKipzZWFyY2gqKi5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5TZWFyY2hJbmRleFByb3BzI1R5cGVcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBhcHBsaWVkIHRvIGlkZW50aWZ5IHdvcmRzIHdoZW4gc2VhcmNoaW5nIHRoaXMgaW5kZXguXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuU2VhcmNoSW5kZXhQcm9wcyNTZWFyY2hBbmFseXplclxuICAgKi9cbiAgcmVhZG9ubHkgc2VhcmNoQW5hbHl6ZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJ1bGUgc2V0cyB0aGF0IG1hcCB3b3JkcyB0byB0aGVpciBzeW5vbnltcyBpbiB0aGlzIGluZGV4LlxuICAgKlxuICAgKiBAc2NoZW1hIENmblNlYXJjaEluZGV4UHJvcHMjU3lub255bXNcbiAgICovXG4gIHJlYWRvbmx5IHN5bm9ueW1zPzogQXBpQXRsYXNGdHNTeW5vbnltTWFwcGluZ0RlZmluaXRpb25WaWV3W107XG5cbiAgLyoqXG4gICAqIEFycmF5IG9mIFtGaWVsZHNdKGh0dHBzOi8vd3d3Lm1vbmdvZGIuY29tL2RvY3MvYXRsYXMvYXRsYXMtc2VhcmNoL2ZpZWxkLXR5cGVzL2tubi12ZWN0b3IvI3N0ZC1sYWJlbC1mdHMtZGF0YS10eXBlcy1rbm4tdmVjdG9yKSB0byBjb25maWd1cmUgdGhpcyB2ZWN0b3JTZWFyY2ggaW5kZXguIFN0cmluZ2lmeSBqc29uIHJlcHJlc2VudGF0aW9uIG9mIGZpZWxkIHdpdGggdHlwZXMgYW5kIHByb3BlcnRpZXMuIFJlcXVpcmVkIGZvciB2ZWN0b3IgaW5kZXhlcy4gSXQgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSAqKnZlY3RvcioqIHR5cGUgZmllbGQuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuU2VhcmNoSW5kZXhQcm9wcyNGaWVsZHNcbiAgICovXG4gIHJlYWRvbmx5IGZpZWxkcz86IHN0cmluZztcblxuICAvKipcbiAgICogRmxhZyB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRvIHN0b3JlIHRoZSBvcmlnaW5hbCBkb2N1bWVudCBpbiB0aGUgaW5kZXguIENhbiBiZSBhIGJvb2xlYW4gKFwidHJ1ZVwiIG9yIFwiZmFsc2VcIikgb3IgYSBzdHJpbmdpZmllZCBKU09OIG9iamVjdCBzcGVjaWZ5aW5nIHdoaWNoIGZpZWxkcyB0byBpbmNsdWRlL2V4Y2x1ZGUuIFdoZW4gc3RvcmVkLCB0aGlzIGFsbG93cyB0aGUgaW5kZXggdG8gcmV0dXJuIHRoZSBvcmlnaW5hbCBkb2N1bWVudCBmb3IgcXVlcmllcy5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5TZWFyY2hJbmRleFByb3BzI1N0b3JlZFNvdXJjZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RvcmVkU291cmNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBcnJheSBvZiB0eXBlIHNldHMgdGhhdCBkZWZpbmUgYWx0ZXJuYXRlIHR5cGVzIGZvciBmaWVsZHMgaW4gdGhlIGluZGV4LiBFYWNoIHR5cGUgc2V0IGFsbG93cyB5b3UgdG8gZ3JvdXAgcmVsYXRlZCBmaWVsZHMgdW5kZXIgYSBjb21tb24gbmFtZS5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5TZWFyY2hJbmRleFByb3BzI1R5cGVTZXRzXG4gICAqL1xuICByZWFkb25seSB0eXBlU2V0cz86IFR5cGVTZXRbXTtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIHBhcnRpdGlvbnMgZm9yIHRoZSBpbmRleC4gVGhpcyBpcyB1c2VkIHRvIGltcHJvdmUgc2VhcmNoIHBlcmZvcm1hbmNlIGZvciBsYXJnZSBkYXRhc2V0cyBieSBkaXN0cmlidXRpbmcgdGhlIGluZGV4IGFjcm9zcyBtdWx0aXBsZSBwYXJ0aXRpb25zLlxuICAgKlxuICAgKiBAc2NoZW1hIENmblNlYXJjaEluZGV4UHJvcHMjTnVtUGFydGl0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgbnVtUGFydGl0aW9ucz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQ2ZuU2VhcmNoSW5kZXhQcm9wcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fQ2ZuU2VhcmNoSW5kZXhQcm9wcyhcbiAgb2JqOiBDZm5TZWFyY2hJbmRleFByb3BzIHwgdW5kZWZpbmVkXG4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgQW5hbHl6ZXI6IG9iai5hbmFseXplcixcbiAgICBBbmFseXplcnM6IG9iai5hbmFseXplcnM/Lm1hcCgoeSkgPT5cbiAgICAgIHRvSnNvbl9BcGlBdGxhc0Z0c0FuYWx5emVyc1ZpZXdNYW51YWwoeSlcbiAgICApLFxuICAgIFByb2ZpbGU6IG9iai5wcm9maWxlLFxuICAgIENsdXN0ZXJOYW1lOiBvYmouY2x1c3Rlck5hbWUsXG4gICAgQ29sbGVjdGlvbk5hbWU6IG9iai5jb2xsZWN0aW9uTmFtZSxcbiAgICBEYXRhYmFzZTogb2JqLmRhdGFiYXNlLFxuICAgIFByb2plY3RJZDogb2JqLnByb2plY3RJZCxcbiAgICBNYXBwaW5nczogdG9Kc29uX0FwaUF0bGFzRnRzTWFwcGluZ3NWaWV3TWFudWFsKG9iai5tYXBwaW5ncyksXG4gICAgTmFtZTogb2JqLm5hbWUsXG4gICAgVHlwZTogb2JqLnR5cGUsXG4gICAgU2VhcmNoQW5hbHl6ZXI6IG9iai5zZWFyY2hBbmFseXplcixcbiAgICBTeW5vbnltczogb2JqLnN5bm9ueW1zPy5tYXAoKHkpID0+XG4gICAgICB0b0pzb25fQXBpQXRsYXNGdHNTeW5vbnltTWFwcGluZ0RlZmluaXRpb25WaWV3KHkpXG4gICAgKSxcbiAgICBGaWVsZHM6IG9iai5maWVsZHMsXG4gICAgU3RvcmVkU291cmNlOiBvYmouc3RvcmVkU291cmNlLFxuICAgIFR5cGVTZXRzOiBvYmoudHlwZVNldHM/Lm1hcCgoeSkgPT4gdG9Kc29uX1R5cGVTZXQoeSkpLFxuICAgIE51bVBhcnRpdGlvbnM6IG9iai5udW1QYXJ0aXRpb25zLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoXG4gICAgKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQgPyByIDogeyAuLi5yLCBbaVswXV06IGlbMV0gfSksXG4gICAge31cbiAgKTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIEFwaUF0bGFzRlRTQW5hbHl6ZXJzVmlld01hbnVhbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwaUF0bGFzRnRzQW5hbHl6ZXJzVmlld01hbnVhbCB7XG4gIC8qKlxuICAgKiBGaWx0ZXJzIHRoYXQgZXhhbWluZSB0ZXh0IG9uZSBjaGFyYWN0ZXIgYXQgYSB0aW1lIGFuZCBwZXJmb3JtIGZpbHRlcmluZyBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRlRTQW5hbHl6ZXJzVmlld01hbnVhbCNDaGFyRmlsdGVyc1xuICAgKi9cbiAgcmVhZG9ubHkgY2hhckZpbHRlcnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgbmFtZSB0aGF0IGlkZW50aWZpZXMgdGhlIGN1c3RvbSBhbmFseXplci4gTmFtZXMgbXVzdCBiZSB1bmlxdWUgd2l0aGluIGFuIGluZGV4LCBhbmQgbXVzdCBub3Qgc3RhcnQgd2l0aCBhbnkgb2YgdGhlIGZvbGxvd2luZyBzdHJpbmdzOlxuICAgKiAtIGBsdWNlbmUuYFxuICAgKiAtIGBidWlsdGluLmBcbiAgICogLSBgbW9uZ29kYi5gXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNGVFNBbmFseXplcnNWaWV3TWFudWFsI05hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZpbHRlciB0aGF0IHBlcmZvcm1zIG9wZXJhdGlvbnMgc3VjaCBhczpcbiAgICpcbiAgICogLSBTdGVtbWluZywgd2hpY2ggcmVkdWNlcyByZWxhdGVkIHdvcmRzLCBzdWNoIGFzIFwidGFsa2luZ1wiLCBcInRhbGtlZFwiLCBhbmQgXCJ0YWxrc1wiIHRvIHRoZWlyIHJvb3Qgd29yZCBcInRhbGtcIi5cbiAgICpcbiAgICogLSBSZWRhY3Rpb24sIHRoZSByZW1vdmFsIG9mIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiBmcm9tIHB1YmxpYyBkb2N1bWVudHMuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNGVFNBbmFseXplcnNWaWV3TWFudWFsI1Rva2VuRmlsdGVyc1xuICAgKi9cbiAgcmVhZG9ubHkgdG9rZW5GaWx0ZXJzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRva2VuaXplciB0aGF0IHlvdSB3YW50IHRvIHVzZSB0byBjcmVhdGUgdG9rZW5zLiBUb2tlbnMgZGV0ZXJtaW5lIGhvdyBBdGxhcyBTZWFyY2ggc3BsaXRzIHVwIHRleHQgaW50byBkaXNjcmV0ZSBjaHVua3MgZm9yIGluZGV4aW5nLlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRlRTQW5hbHl6ZXJzVmlld01hbnVhbCNUb2tlbml6ZXJcbiAgICovXG4gIHJlYWRvbmx5IHRva2VuaXplcj86IEFwaUF0bGFzRnRzQW5hbHl6ZXJzVG9rZW5pemVyO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdBcGlBdGxhc0Z0c0FuYWx5emVyc1ZpZXdNYW51YWwnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0FwaUF0bGFzRnRzQW5hbHl6ZXJzVmlld01hbnVhbChcbiAgb2JqOiBBcGlBdGxhc0Z0c0FuYWx5emVyc1ZpZXdNYW51YWwgfCB1bmRlZmluZWRcbik6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBDaGFyRmlsdGVyczogb2JqLmNoYXJGaWx0ZXJzPy5tYXAoKHkpID0+IHkpLFxuICAgIE5hbWU6IG9iai5uYW1lLFxuICAgIFRva2VuRmlsdGVyczogb2JqLnRva2VuRmlsdGVycz8ubWFwKCh5KSA9PiB5KSxcbiAgICBUb2tlbml6ZXI6IHRvSnNvbl9BcGlBdGxhc0Z0c0FuYWx5emVyc1Rva2VuaXplcihvYmoudG9rZW5pemVyKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKFxuICAgIChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkID8gciA6IHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLFxuICAgIHt9XG4gICk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBBcGlBdGxhc0ZUU01hcHBpbmdzVmlld01hbnVhbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwaUF0bGFzRnRzTWFwcGluZ3NWaWV3TWFudWFsIHtcbiAgLyoqXG4gICAqIEZsYWcgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgaW5kZXggdXNlcyBkeW5hbWljIG9yIHN0YXRpYyBtYXBwaW5ncy4gSWYgRHluYW1pY0NvbmZpZyBpcyBzcGVjaWZpZWQsIHRoaXMgZmllbGQgaXMgaWdub3JlZCAoRHluYW1pY0NvbmZpZyB0YWtlcyBwcmVjZWRlbmNlKS4gUmVxdWlyZWQgZm9yIHNlYXJjaCBpbmRleGVzIGlmICoqbWFwcGluZ3MuZmllbGRzKiogaXMgb21pdHRlZCBhbmQgKiptYXBwaW5ncy5keW5hbWljQ29uZmlnKiogaXMgbm90IHNwZWNpZmllZC5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlBdGxhc0ZUU01hcHBpbmdzVmlld01hbnVhbCNEeW5hbWljXG4gICAqL1xuICByZWFkb25seSBkeW5hbWljPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU3RyaW5naWZ5IGpzb24gcmVwcmVzZW50YXRpb24gb2YgZHluYW1pYyBtYXBwaW5nIGNvbmZpZ3VyYXRpb24gb2JqZWN0LiBUaGlzIGFsbG93cyBmb3IgbW9yZSBjb21wbGV4IGR5bmFtaWMgbWFwcGluZyBjb25maWd1cmF0aW9ucyBiZXlvbmQgYSBzaW1wbGUgYm9vbGVhbi4gSWYgYm90aCBEeW5hbWljIGFuZCBEeW5hbWljQ29uZmlnIGFyZSBzcGVjaWZpZWQsIER5bmFtaWNDb25maWcgdGFrZXMgcHJlY2VkZW5jZS5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlBdGxhc0ZUU01hcHBpbmdzVmlld01hbnVhbCNEeW5hbWljQ29uZmlnXG4gICAqL1xuICByZWFkb25seSBkeW5hbWljQ29uZmlnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPbmUgb3IgbW9yZSBmaWVsZCBzcGVjaWZpY2F0aW9ucyBmb3IgdGhlIEF0bGFzIFNlYXJjaCBpbmRleC4gU3RyaW5naWZ5IGpzb24gcmVwcmVzZW50YXRpb24gb2YgZmllbGQgd2l0aCB0eXBlcyBhbmQgcHJvcGVydGllcy4gUmVxdWlyZWQgZm9yIHNlYXJjaCBpbmRleGVzIGlmICoqbWFwcGluZ3MuZHluYW1pYyoqIGFuZCAqKm1hcHBpbmdzLmR5bmFtaWNDb25maWcqKiBhcmUgb21pdHRlZCBvciBpZiAqKm1hcHBpbmdzLmR5bmFtaWMqKiBpcyBzZXQgdG8gKipmYWxzZSoqLlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRlRTTWFwcGluZ3NWaWV3TWFudWFsI0ZpZWxkc1xuICAgKi9cbiAgcmVhZG9ubHkgZmllbGRzPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdBcGlBdGxhc0Z0c01hcHBpbmdzVmlld01hbnVhbCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fQXBpQXRsYXNGdHNNYXBwaW5nc1ZpZXdNYW51YWwoXG4gIG9iajogQXBpQXRsYXNGdHNNYXBwaW5nc1ZpZXdNYW51YWwgfCB1bmRlZmluZWRcbik6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBEeW5hbWljOiBvYmouZHluYW1pYyxcbiAgICBEeW5hbWljQ29uZmlnOiBvYmouZHluYW1pY0NvbmZpZyxcbiAgICBGaWVsZHM6IG9iai5maWVsZHMsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZShcbiAgICAociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCA/IHIgOiB7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSxcbiAgICB7fVxuICApO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgQXBpQXRsYXNGVFNTeW5vbnltTWFwcGluZ0RlZmluaXRpb25WaWV3XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpQXRsYXNGdHNTeW5vbnltTWFwcGluZ0RlZmluaXRpb25WaWV3IHtcbiAgLyoqXG4gICAqIFNwZWNpZmljIHByZS1kZWZpbmVkIG1ldGhvZCBjaG9zZW4gdG8gYXBwbHkgdG8gdGhlIHN5bm9ueW1zIHRvIGJlIHNlYXJjaGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRlRTU3lub255bU1hcHBpbmdEZWZpbml0aW9uVmlldyNBbmFseXplclxuICAgKi9cbiAgcmVhZG9ubHkgYW5hbHl6ZXI6IHN0cmluZztcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHRoZSBzeW5vbnltIGRlZmluaXRpb24uIEVhY2ggKipzeW5vbnltLm5hbWUqKiBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIHNhbWUgaW5kZXggZGVmaW5pdGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlBdGxhc0ZUU1N5bm9ueW1NYXBwaW5nRGVmaW5pdGlvblZpZXcjTmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEYXRhIHNldCB0aGF0IHN0b3JlcyB0aGUgbWFwcGluZyBvbmUgb3IgbW9yZSB3b3JkcyBtYXAgdG8gb25lIG9yIG1vcmUgc3lub255bXMgb2YgdGhvc2Ugd29yZHMuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNGVFNTeW5vbnltTWFwcGluZ0RlZmluaXRpb25WaWV3I1NvdXJjZVxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlOiBTeW5vbnltU291cmNlO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdBcGlBdGxhc0Z0c1N5bm9ueW1NYXBwaW5nRGVmaW5pdGlvblZpZXcnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0FwaUF0bGFzRnRzU3lub255bU1hcHBpbmdEZWZpbml0aW9uVmlldyhcbiAgb2JqOiBBcGlBdGxhc0Z0c1N5bm9ueW1NYXBwaW5nRGVmaW5pdGlvblZpZXcgfCB1bmRlZmluZWRcbik6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBBbmFseXplcjogb2JqLmFuYWx5emVyLFxuICAgIE5hbWU6IG9iai5uYW1lLFxuICAgIFNvdXJjZTogdG9Kc29uX1N5bm9ueW1Tb3VyY2Uob2JqLnNvdXJjZSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZShcbiAgICAociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCA/IHIgOiB7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSxcbiAgICB7fVxuICApO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgVHlwZVNldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVTZXQge1xuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHRoaXMgdHlwZSBzZXQuXG4gICAqXG4gICAqIEBzY2hlbWEgVHlwZVNldCNOYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFN0cmluZ2lmeSBqc29uIHJlcHJlc2VudGF0aW9uIG9mIHR5cGVzIGFycmF5LiBFYWNoIHR5cGUgZGVmaW5lcyBhIGZpZWxkIHR5cGUgZm9yIHRoZSBzZWFyY2ggaW5kZXguXG4gICAqXG4gICAqIEBzY2hlbWEgVHlwZVNldCNUeXBlc1xuICAgKi9cbiAgcmVhZG9ubHkgdHlwZXM/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1R5cGVTZXQnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1R5cGVTZXQoXG4gIG9iajogVHlwZVNldCB8IHVuZGVmaW5lZFxuKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIE5hbWU6IG9iai5uYW1lLFxuICAgIFR5cGVzOiBvYmoudHlwZXMsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZShcbiAgICAociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCA/IHIgOiB7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSxcbiAgICB7fVxuICApO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFRva2VuaXplciB0aGF0IHlvdSB3YW50IHRvIHVzZSB0byBjcmVhdGUgdG9rZW5zLiBUb2tlbnMgZGV0ZXJtaW5lIGhvdyBBdGxhcyBTZWFyY2ggc3BsaXRzIHVwIHRleHQgaW50byBkaXNjcmV0ZSBjaHVua3MgZm9yIGluZGV4aW5nLlxuICpcbiAqIEBzY2hlbWEgQXBpQXRsYXNGVFNBbmFseXplcnNUb2tlbml6ZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcGlBdGxhc0Z0c0FuYWx5emVyc1Rva2VuaXplciB7XG4gIC8qKlxuICAgKiBDaGFyYWN0ZXJzIHRvIGluY2x1ZGUgaW4gdGhlIGxvbmdlc3QgdG9rZW4gdGhhdCBBdGxhcyBTZWFyY2ggY3JlYXRlcy5cbiAgICpcbiAgICogQHNjaGVtYSBBcGlBdGxhc0ZUU0FuYWx5emVyc1Rva2VuaXplciNNYXhHcmFtXG4gICAqL1xuICByZWFkb25seSBtYXhHcmFtPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGFyYWN0ZXJzIHRvIGluY2x1ZGUgaW4gdGhlIHNob3J0ZXN0IHRva2VuIHRoYXQgQXRsYXMgU2VhcmNoIGNyZWF0ZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNGVFNBbmFseXplcnNUb2tlbml6ZXIjTWluR3JhbVxuICAgKi9cbiAgcmVhZG9ubHkgbWluR3JhbT86IG51bWJlcjtcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHRoaXMgdG9rZW5pemVyIHR5cGUuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNGVFNBbmFseXplcnNUb2tlbml6ZXIjVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IHN0cmluZztcblxuICAvKipcbiAgICogSW5kZXggb2YgdGhlIGNoYXJhY3RlciBncm91cCB3aXRoaW4gdGhlIG1hdGNoaW5nIGV4cHJlc3Npb24gdG8gZXh0cmFjdCBpbnRvIHRva2Vucy4gVXNlIGAwYCB0byBleHRyYWN0IGFsbCBjaGFyYWN0ZXIgZ3JvdXBzLlxuICAgKlxuICAgKiBAc2NoZW1hIEFwaUF0bGFzRlRTQW5hbHl6ZXJzVG9rZW5pemVyI0dyb3VwXG4gICAqL1xuICByZWFkb25seSBncm91cD86IG51bWJlcjtcblxuICAvKipcbiAgICogUmVndWxhciBleHByZXNzaW9uIHRvIG1hdGNoIGFnYWluc3QuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNGVFNBbmFseXplcnNUb2tlbml6ZXIjUGF0dGVyblxuICAgKi9cbiAgcmVhZG9ubHkgcGF0dGVybj86IHN0cmluZztcblxuICAvKipcbiAgICogTWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBhIHNpbmdsZSB0b2tlbi4gVG9rZW5zIGdyZWF0ZXIgdGhhbiB0aGlzIGxlbmd0aCBhcmUgc3BsaXQgYXQgdGhpcyBsZW5ndGggaW50byBtdWx0aXBsZSB0b2tlbnMuXG4gICAqXG4gICAqIEBzY2hlbWEgQXBpQXRsYXNGVFNBbmFseXplcnNUb2tlbml6ZXIjTWF4VG9rZW5MZW5ndGhcbiAgICovXG4gIHJlYWRvbmx5IG1heFRva2VuTGVuZ3RoPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdBcGlBdGxhc0Z0c0FuYWx5emVyc1Rva2VuaXplcicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fQXBpQXRsYXNGdHNBbmFseXplcnNUb2tlbml6ZXIoXG4gIG9iajogQXBpQXRsYXNGdHNBbmFseXplcnNUb2tlbml6ZXIgfCB1bmRlZmluZWRcbik6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBNYXhHcmFtOiBvYmoubWF4R3JhbSxcbiAgICBNaW5HcmFtOiBvYmoubWluR3JhbSxcbiAgICBUeXBlOiBvYmoudHlwZSxcbiAgICBHcm91cDogb2JqLmdyb3VwLFxuICAgIFBhdHRlcm46IG9iai5wYXR0ZXJuLFxuICAgIE1heFRva2VuTGVuZ3RoOiBvYmoubWF4VG9rZW5MZW5ndGgsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZShcbiAgICAociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCA/IHIgOiB7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSxcbiAgICB7fVxuICApO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgU3lub255bVNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN5bm9ueW1Tb3VyY2Uge1xuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHRoZSBNb25nb0RCIGNvbGxlY3Rpb24gdGhhdCBzdG9yZXMgd29yZHMgYW5kIHRoZWlyIGFwcGxpY2FibGUgc3lub255bXMuXG4gICAqXG4gICAqIEBzY2hlbWEgU3lub255bVNvdXJjZSNDb2xsZWN0aW9uXG4gICAqL1xuICByZWFkb25seSBjb2xsZWN0aW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1N5bm9ueW1Tb3VyY2UnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1N5bm9ueW1Tb3VyY2UoXG4gIG9iajogU3lub255bVNvdXJjZSB8IHVuZGVmaW5lZFxuKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIENvbGxlY3Rpb246IG9iai5jb2xsZWN0aW9uLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoXG4gICAgKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQgPyByIDogeyAuLi5yLCBbaVswXV06IGlbMV0gfSksXG4gICAge31cbiAgKTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBBIENsb3VkRm9ybWF0aW9uIGBNb25nb0RCOjpBdGxhczo6U2VhcmNoSW5kZXhgXG4gKlxuICogQGNsb3VkZm9ybWF0aW9uUmVzb3VyY2UgTW9uZ29EQjo6QXRsYXM6OlNlYXJjaEluZGV4XG4gKiBAc3RhYmlsaXR5IGV4dGVybmFsXG4gKi9cbmV4cG9ydCBjbGFzcyBDZm5TZWFyY2hJbmRleCBleHRlbmRzIGNkay5DZm5SZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgdHlwZSBuYW1lIGZvciB0aGlzIHJlc291cmNlIGNsYXNzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBDRk5fUkVTT1VSQ0VfVFlQRV9OQU1FID0gXCJNb25nb0RCOjpBdGxhczo6U2VhcmNoSW5kZXhcIjtcblxuICAvKipcbiAgICogUmVzb3VyY2UgcHJvcHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvcHM6IENmblNlYXJjaEluZGV4UHJvcHM7XG5cbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSBgTW9uZ29EQjo6QXRsYXM6OlNlYXJjaEluZGV4LkluZGV4SWRgXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXR0ckluZGV4SWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSBgTW9uZ29EQjo6QXRsYXM6OlNlYXJjaEluZGV4LlN0YXR1c2BcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdHRyU3RhdHVzOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBgTW9uZ29EQjo6QXRsYXM6OlNlYXJjaEluZGV4YC5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gc2NvcGUgaW4gd2hpY2ggdGhpcyByZXNvdXJjZSBpcyBkZWZpbmVkXG4gICAqIEBwYXJhbSBpZCAgICAtIHNjb3BlZCBpZCBvZiB0aGUgcmVzb3VyY2VcbiAgICogQHBhcmFtIHByb3BzIC0gcmVzb3VyY2UgcHJvcGVydGllc1xuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IENmblNlYXJjaEluZGV4UHJvcHNcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICB0eXBlOiBDZm5TZWFyY2hJbmRleC5DRk5fUkVTT1VSQ0VfVFlQRV9OQU1FLFxuICAgICAgcHJvcGVydGllczogdG9Kc29uX0NmblNlYXJjaEluZGV4UHJvcHMocHJvcHMpISxcbiAgICB9KTtcblxuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcblxuICAgIHRoaXMuYXR0ckluZGV4SWQgPSBjZGsuVG9rZW4uYXNTdHJpbmcodGhpcy5nZXRBdHQoXCJJbmRleElkXCIpKTtcbiAgICB0aGlzLmF0dHJTdGF0dXMgPSBjZGsuVG9rZW4uYXNTdHJpbmcodGhpcy5nZXRBdHQoXCJTdGF0dXNcIikpO1xuICB9XG59XG4iXX0=