breeze-client 2.1.2 → 2.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/adapter-ajax-angularjs/package.json +2 -2
- package/adapter-ajax-fetch/package.json +2 -2
- package/adapter-ajax-httpclient/package.json +2 -6
- package/adapter-ajax-jquery/package.json +2 -2
- package/adapter-ajax-post/package.json +2 -2
- package/adapter-data-service-odata/package.json +2 -2
- package/adapter-data-service-webapi/package.json +2 -2
- package/adapter-model-library-backing-store/package.json +2 -2
- package/adapter-model-library-ko/package.json +2 -2
- package/adapter-uri-builder-json/package.json +2 -2
- package/adapter-uri-builder-odata/package.json +2 -2
- package/breeze-client.d.ts +1 -1
- package/breeze-client.metadata.json +1 -1
- package/bundles/breeze-client.umd.js +9 -5
- package/bundles/breeze-client.umd.js.map +1 -1
- package/bundles/breeze-client.umd.min.js +1 -1
- package/bundles/breeze-client.umd.min.js.map +1 -1
- package/esm2015/breeze-client.js +2 -2
- package/esm2015/src/array.js +1 -1
- package/esm2015/src/breeze.js +2 -2
- package/esm2015/src/core.js +4 -1
- package/esm2015/src/csdl-metadata-parser.js +3 -3
- package/esm2015/src/default-property-interceptor.js +3 -2
- package/esm2015/src/enum.js +2 -2
- package/esm2015/src/local-query-comparison-options.js +1 -1
- package/esm5/breeze-client.js +2 -2
- package/esm5/src/array.js +1 -1
- package/esm5/src/breeze.js +2 -2
- package/esm5/src/core.js +4 -1
- package/esm5/src/csdl-metadata-parser.js +3 -3
- package/esm5/src/default-property-interceptor.js +3 -2
- package/esm5/src/enum.js +2 -2
- package/esm5/src/local-query-comparison-options.js +1 -1
- package/fesm2015/breeze-client.js +9 -5
- package/fesm2015/breeze-client.js.map +1 -1
- package/fesm5/breeze-client.js +9 -5
- package/fesm5/breeze-client.js.map +1 -1
- package/mixin-get-entity-graph/package.json +2 -2
- package/mixin-save-queuing/package.json +2 -2
- package/package.json +1 -1
- package/esm2015/public_api.js +0 -2
- package/esm5/public_api.js +0 -2
- package/public_api.d.ts +0 -1
|
@@ -2,7 +2,7 @@ import { core } from './core';
|
|
|
2
2
|
import { MetadataStore, EntityType, ComplexType, DataProperty, NavigationProperty, AutoGeneratedKeyType } from './entity-metadata';
|
|
3
3
|
import { DataType } from './data-type';
|
|
4
4
|
import { Validator } from './validate';
|
|
5
|
-
const RX_COLLECTION = /Collection\((
|
|
5
|
+
const RX_COLLECTION = /Collection\((.*)\)/;
|
|
6
6
|
function parse(metadataStore, schemas, altMetadata) {
|
|
7
7
|
metadataStore._entityTypeResourceMap = {};
|
|
8
8
|
schemas = core.toArray(schemas);
|
|
@@ -360,7 +360,7 @@ function parseTypeNameWithSchema(entityTypeName, schema) {
|
|
|
360
360
|
}
|
|
361
361
|
function getCollectionType(propertyType) {
|
|
362
362
|
const match = propertyType.match(RX_COLLECTION);
|
|
363
|
-
return match ? match[
|
|
363
|
+
return match ? match[1] : null;
|
|
364
364
|
}
|
|
365
365
|
function getNamespaceFor(shortName, schema) {
|
|
366
366
|
let ns;
|
|
@@ -382,4 +382,4 @@ function getNamespaceFor(shortName, schema) {
|
|
|
382
382
|
export const CsdlMetadataParser = {
|
|
383
383
|
parse: parse
|
|
384
384
|
};
|
|
385
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NkbC1tZXRhZGF0YS1wYXJzZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9icmVlemUtY2xpZW50LyIsInNvdXJjZXMiOlsic3JjL2NzZGwtbWV0YWRhdGEtcGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25JLE9BQU8sRUFBRSxRQUFRLEVBQUcsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQWN2QyxNQUFNLGFBQWEsR0FBSSwyQkFBMkIsQ0FBQztBQUVuRCxTQUFTLEtBQUssQ0FBQyxhQUE0QixFQUFFLE9BQVksRUFBRSxXQUFnQjtJQUV6RSxhQUFhLENBQUMsc0JBQXNCLEdBQUcsRUFBRSxDQUFDO0lBQzFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxNQUFXO1FBQ25DLElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFO1lBQzlCLHFDQUFxQztZQUNyQyx5RkFBeUY7WUFDekYsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUN0RCxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDaEIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLE9BQVk7Z0JBQ3JDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsQ0FBQyxDQUFDLENBQUM7WUFDSCxNQUFNLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDO1NBQ3JD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SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxZQUFvQjtJQUM3QyxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDN0MsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLFNBQWlCLEVBQUUsTUFBVztJQUNyRCxJQUFJLEVBQVUsQ0FBQztJQUNmLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQztJQUN6QyxJQUFJLE9BQU8sRUFBRTtRQUNYLElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLEdBQUcsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUMzRCxFQUFFLEdBQUcsUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUUsSUFBSSxFQUFFO1lBQUUsT0FBTyxFQUFFLENBQUM7S0FDbkI7SUFDRCx1REFBdUQ7SUFDdkQseUZBQXlGO0lBQ3pGLElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRTtRQUN2RCxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUM7S0FDekI7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCx3QkFBd0I7QUFDeEIsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDaEMsS0FBSyxFQUFFLEtBQUs7Q0FDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29yZSB9IGZyb20gJy4vY29yZSc7XHJcbmltcG9ydCB7IE1ldGFkYXRhU3RvcmUsIEVudGl0eVR5cGUsIENvbXBsZXhUeXBlLCBEYXRhUHJvcGVydHksIE5hdmlnYXRpb25Qcm9wZXJ0eSwgQXV0b0dlbmVyYXRlZEtleVR5cGUgfSBmcm9tICcuL2VudGl0eS1tZXRhZGF0YSc7XHJcbmltcG9ydCB7IERhdGFUeXBlICB9IGZyb20gJy4vZGF0YS10eXBlJztcclxuaW1wb3J0IHsgVmFsaWRhdG9yIH0gZnJvbSAnLi92YWxpZGF0ZSc7XHJcblxyXG5pbnRlcmZhY2UgSUFzc29jaWF0aW9uIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgZW5kOiBJRW5kW107XHJcbiAgcmVmZXJlbnRpYWxDb25zdHJhaW50OiBhbnk7XHJcbn1cclxuXHJcbmludGVyZmFjZSBJRW5kIHtcclxuICBtdWx0aXBsaWNpdHk6IHN0cmluZztcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgcm9sZTogc3RyaW5nO1xyXG59XHJcblxyXG5jb25zdCBSWF9DT0xMRUNUSU9OID0gIC9Db2xsZWN0aW9uXFwoKD88dHlwZT4uKilcXCkvO1xyXG5cclxuZnVuY3Rpb24gcGFyc2UobWV0YWRhdGFTdG9yZTogTWV0YWRhdGFTdG9yZSwgc2NoZW1hczogYW55LCBhbHRNZXRhZGF0YTogYW55KSB7XHJcblxyXG4gIG1ldGFkYXRhU3RvcmUuX2VudGl0eVR5cGVSZXNvdXJjZU1hcCA9IHt9O1xyXG4gIHNjaGVtYXMgPSBjb3JlLnRvQXJyYXkoc2NoZW1hcyk7XHJcbiAgc2NoZW1hcy5mb3JFYWNoKGZ1bmN0aW9uIChzY2hlbWE6IGFueSkge1xyXG4gICAgaWYgKHNjaGVtYS5jU3BhY2VPU3BhY2VNYXBwaW5nKSB7XHJcbiAgICAgIC8vIFdlYiBhcGkgb25seSAtIG5vdCBhdmFpbCBpbiBPRGF0YS5cclxuICAgICAgLy8gVE9ETyB0aHJvdyBpbmZvcm1hdGl2ZSBlcnJvciBpZiBhbHJlYWR5IHBhcnNlZCBhbmQgY29udmVydGVkIHRvIG1hcCBvbiBhIHByZXZpb3VzIHBhc3NcclxuICAgICAgbGV0IG1hcHBpbmdzID0gSlNPTi5wYXJzZShzY2hlbWEuY1NwYWNlT1NwYWNlTWFwcGluZyk7XHJcbiAgICAgIGxldCBuZXdNYXAgPSB7fTtcclxuICAgICAgbWFwcGluZ3MuZm9yRWFjaChmdW5jdGlvbiAobWFwcGluZzogYW55KSB7XHJcbiAgICAgICAgbmV3TWFwW21hcHBpbmdbMF1dID0gbWFwcGluZ1sxXTtcclxuICAgICAgfSk7XHJcbiAgICAgIHNjaGVtYS5jU3BhY2VPU3BhY2VNYXBwaW5nID0gbmV3TWFwO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzY2hlbWEuZW50aXR5Q29udGFpbmVyKSB7XHJcbiAgICAgIGNvcmUudG9BcnJheShzY2hlbWEuZW50aXR5Q29udGFpbmVyKS5mb3JFYWNoKGZ1bmN0aW9uIChjb250YWluZXIpIHtcclxuICAgICAgICBjb3JlLnRvQXJyYXkoY29udGFpbmVyLmVudGl0eVNldCkuZm9yRWFjaChmdW5jdGlvbiAoZW50aXR5U2V0KSB7XHJcbiAgICAgICAgICBsZXQgZW50aXR5VHlwZU5hbWUgPSBwYXJzZVR5cGVOYW1lV2l0aFNjaGVtYShlbnRpdHlTZXQuZW50aXR5VHlwZSwgc2NoZW1hKS50eXBlTmFtZTtcclxuICAgICAgICAgIG1ldGFkYXRhU3RvcmUuc2V0RW50aXR5VHlwZUZvclJlc291cmNlTmFtZShlbnRpdHlTZXQubmFtZSwgZW50aXR5VHlwZU5hbWUpO1xyXG4gICAgICAgICAgbWV0YWRhdGFTdG9yZS5fZW50aXR5VHlwZVJlc291cmNlTWFwW2VudGl0eVR5cGVOYW1lXSA9IGVudGl0eVNldC5uYW1lO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBwcm9jZXNzIGNvbXBsZXh0eXBlcyBiZWZvcmUgZW50aXR5IHR5cGVzLlxyXG4gICAgaWYgKHNjaGVtYS5jb21wbGV4VHlwZSkge1xyXG4gICAgICBjb3JlLnRvQXJyYXkoc2NoZW1hLmNvbXBsZXhUeXBlKS5mb3JFYWNoKGZ1bmN0aW9uIChjdCkge1xyXG4gICAgICAgIHBhcnNlQ3NkbENvbXBsZXhUeXBlKGN0LCBzY2hlbWEsIG1ldGFkYXRhU3RvcmUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChzY2hlbWEuZW50aXR5VHlwZSkge1xyXG4gICAgICBjb3JlLnRvQXJyYXkoc2NoZW1hLmVudGl0eVR5cGUpLmZvckVhY2goZnVuY3Rpb24gKGV0KSB7XHJcbiAgICAgICAgcGFyc2VDc2RsRW50aXR5VHlwZShldCwgc2NoZW1hLCBzY2hlbWFzLCBtZXRhZGF0YVN0b3JlKTtcclxuXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICB9KTtcclxuICBsZXQgYmFkTmF2UHJvcHMgPSBtZXRhZGF0YVN0b3JlLmdldEluY29tcGxldGVOYXZpZ2F0aW9uUHJvcGVydGllcygpO1xyXG4gIGlmIChiYWROYXZQcm9wcy5sZW5ndGggPiAwKSB7XHJcbiAgICBsZXQgbXNnID0gYmFkTmF2UHJvcHMubWFwKGZ1bmN0aW9uIChucGEpIHtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobnBhKSkge1xyXG4gICAgICAgIHJldHVybiBucGEubWFwKGZ1bmN0aW9uIChucCkge1xyXG4gICAgICAgICAgcmV0dXJuIG5wLnBhcmVudFR5cGUubmFtZSArIFwiOlwiICsgbnAubmFtZTtcclxuICAgICAgICB9KS5qb2luKCcsICcpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBucGEucGFyZW50VHlwZS5uYW1lICsgXCI6XCIgKyBucGEubmFtZTtcclxuICAgIH0pLmpvaW4oJywgJyk7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbmNvbXBsZXRlIG5hdmlnYXRpb24gcHJvcGVydGllczogXCIgKyBtc2cpO1xyXG4gIH1cclxuICBpZiAoYWx0TWV0YWRhdGEpIHtcclxuICAgIG1ldGFkYXRhU3RvcmUuaW1wb3J0TWV0YWRhdGEoYWx0TWV0YWRhdGEsIHRydWUpO1xyXG4gIH1cclxuICByZXR1cm4gbWV0YWRhdGFTdG9yZTtcclxufVxyXG5cclxuZnVuY3Rpb24gcGFyc2VDc2RsRW50aXR5VHlwZShjc2RsRW50aXR5VHlwZTogYW55LCBzY2hlbWE6IGFueSwgc2NoZW1hczogYW55LCBtZXRhZGF0YVN0b3JlOiBNZXRhZGF0YVN0b3JlKSB7XHJcbiAgbGV0IHNob3J0TmFtZSA9IGNzZGxFbnRpdHlUeXBlLm5hbWU7XHJcbiAgbGV0IG5zID0gZ2V0TmFtZXNwYWNlRm9yKHNob3J0TmFtZSwgc2NoZW1hKTtcclxuICBsZXQgZW50aXR5VHlwZSA9IG5ldyBFbnRpdHlUeXBlKHtcclxuICAgIHNob3J0TmFtZTogc2hvcnROYW1lLFxyXG4gICAgbmFtZXNwYWNlOiBucyxcclxuICAgIGlzQWJzdHJhY3Q6IGNzZGxFbnRpdHlUeXBlLmFic3RyYWN0ICYmIGNzZGxFbnRpdHlUeXBlLmFic3RyYWN0ID09PSAndHJ1ZSdcclxuICB9KTtcclxuICBpZiAoY3NkbEVudGl0eVR5cGUuYmFzZVR5cGUpIHtcclxuICAgIGxldCBiYXNlVHlwZU5hbWUgPSBwYXJzZVR5cGVOYW1lV2l0aFNjaGVtYShjc2RsRW50aXR5VHlwZS5iYXNlVHlwZSwgc2NoZW1hKS50eXBlTmFtZTtcclxuICAgIGVudGl0eVR5cGUuYmFzZVR5cGVOYW1lID0gYmFzZVR5cGVOYW1lO1xyXG4gICAgbGV0IGJhc2VFbnRpdHlUeXBlID0gbWV0YWRhdGFTdG9yZS5fZ2V0U3RydWN0dXJhbFR5cGUoYmFzZVR5cGVOYW1lLCB0cnVlKTtcclxuICAgIGlmIChiYXNlRW50aXR5VHlwZSkge1xyXG4gICAgICBjb21wbGV0ZVBhcnNlQ3NkbEVudGl0eVR5cGUoZW50aXR5VHlwZSwgY3NkbEVudGl0eVR5cGUsIHNjaGVtYSwgc2NoZW1hcywgbWV0YWRhdGFTdG9yZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgZGVmZXJyYWxzID0gbWV0YWRhdGFTdG9yZS5fZGVmZXJyZWRUeXBlc1tiYXNlVHlwZU5hbWVdO1xyXG4gICAgICBpZiAoIWRlZmVycmFscykge1xyXG4gICAgICAgIGRlZmVycmFscyA9IFtdO1xyXG4gICAgICAgIG1ldGFkYXRhU3RvcmUuX2RlZmVycmVkVHlwZXNbYmFzZVR5cGVOYW1lXSA9IGRlZmVycmFscztcclxuICAgICAgfVxyXG4gICAgICBkZWZlcnJhbHMucHVzaCh7IGVudGl0eVR5cGU6IGVudGl0eVR5cGUsIGNzZGxFbnRpdHlUeXBlOiBjc2RsRW50aXR5VHlwZSB9KTtcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgY29tcGxldGVQYXJzZUNzZGxFbnRpdHlUeXBlKGVudGl0eVR5cGUsIGNzZGxFbnRpdHlUeXBlLCBzY2hlbWEsIHNjaGVtYXMsIG1ldGFkYXRhU3RvcmUpO1xyXG4gIH1cclxuICAvLyBlbnRpdHlUeXBlIG1heSBvciBtYXkgbm90IGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgbWV0YWRhdGFTdG9yZSBhdCB0aGlzIHBvaW50LlxyXG4gIHJldHVybiBlbnRpdHlUeXBlO1xyXG5cclxufVxyXG5cclxuZnVuY3Rpb24gY29tcGxldGVQYXJzZUNzZGxFbnRpdHlUeXBlKGVudGl0eVR5cGU6IEVudGl0eVR5cGUsIGNzZGxFbnRpdHlUeXBlOiBhbnksIHNjaGVtYTogYW55LCBzY2hlbWFzOiBhbnksIG1ldGFkYXRhU3RvcmU6IE1ldGFkYXRhU3RvcmUpIHtcclxuICBsZXQga2V5TmFtZXNPblNlcnZlciA9IGNzZGxFbnRpdHlUeXBlLmtleSA/IGNvcmUudG9BcnJheShjc2RsRW50aXR5VHlwZS5rZXkucHJvcGVydHlSZWYpLm1hcChjb3JlLnBsdWNrKFwibmFtZVwiKSkgOiBbXTtcclxuXHJcbiAgY29yZS50b0FycmF5KGNzZGxFbnRpdHlUeXBlLnByb3BlcnR5KS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XHJcbiAgICBwYXJzZUNzZGxEYXRhUHJvcGVydHkoZW50aXR5VHlwZSwgcHJvcCwgc2NoZW1hLCBrZXlOYW1lc09uU2VydmVyKTtcclxuICB9KTtcclxuXHJcbiAgY29yZS50b0FycmF5KGNzZGxFbnRpdHlUeXBlLm5hdmlnYXRpb25Qcm9wZXJ0eSkuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xyXG4gICAgcGFyc2VDc2RsTmF2UHJvcGVydHkoZW50aXR5VHlwZSwgcHJvcCwgc2NoZW1hLCBzY2hlbWFzKTtcclxuICB9KTtcclxuXHJcbiAgbWV0YWRhdGFTdG9yZS5hZGRFbnRpdHlUeXBlKGVudGl0eVR5cGUpO1xyXG4gIGVudGl0eVR5cGUuZGVmYXVsdFJlc291cmNlTmFtZSA9IG1ldGFkYXRhU3RvcmUuX2VudGl0eVR5cGVSZXNvdXJjZU1hcFtlbnRpdHlUeXBlLm5hbWVdO1xyXG5cclxuICBsZXQgZGVmZXJyZWRUeXBlcyA9IG1ldGFkYXRhU3RvcmUuX2RlZmVycmVkVHlwZXM7XHJcbiAgbGV0IGRlZmVycmFscyA9IGRlZmVycmVkVHlwZXNbZW50aXR5VHlwZS5uYW1lXTtcclxuICBpZiAoZGVmZXJyYWxzKSB7XHJcbiAgICBkZWZlcnJhbHMuZm9yRWFjaChmdW5jdGlvbiAoZDogYW55KSB7XHJcbiAgICAgIGNvbXBsZXRlUGFyc2VDc2RsRW50aXR5VHlwZShkLmVudGl0eVR5cGUsIGQuY3NkbEVudGl0eVR5cGUsIHNjaGVtYSwgc2NoZW1hcywgbWV0YWRhdGFTdG9yZSk7XHJcbiAgICB9KTtcclxuICAgIGRlbGV0ZSBkZWZlcnJlZFR5cGVzW2VudGl0eVR5cGUubmFtZV07XHJcbiAgfVxyXG5cclxufVxyXG5cclxuZnVuY3Rpb24gcGFyc2VDc2RsQ29tcGxleFR5cGUoY3NkbENvbXBsZXhUeXBlOiBhbnksIHNjaGVtYTogYW55LCBtZXRhZGF0YVN0b3JlOiBNZXRhZGF0YVN0b3JlKSB7XHJcbiAgbGV0IHNob3J0TmFtZSA9IGNzZGxDb21wbGV4VHlwZS5uYW1lO1xyXG4gIGxldCBucyA9IGdldE5hbWVzcGFjZUZvcihzaG9ydE5hbWUsIHNjaGVtYSk7XHJcbiAgbGV0IGNvbXBsZXhUeXBlID0gbmV3IENvbXBsZXhUeXBlKHtcclxuICAgIHNob3J0TmFtZTogc2hvcnROYW1lLFxyXG4gICAgbmFtZXNwYWNlOiBuc1xyXG4gIH0pO1xyXG5cclxuICBjb3JlLnRvQXJyYXkoY3NkbENvbXBsZXhUeXBlLnByb3BlcnR5KS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XHJcbiAgICBwYXJzZUNzZGxEYXRhUHJvcGVydHkoY29tcGxleFR5cGUsIHByb3AsIHNjaGVtYSk7XHJcbiAgfSk7XHJcblxyXG4gIG1ldGFkYXRhU3RvcmUuYWRkRW50aXR5VHlwZShjb21wbGV4VHlwZSk7XHJcbiAgcmV0dXJuIGNvbXBsZXhUeXBlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwYXJzZUNzZGxEYXRhUHJvcGVydHkocGFyZW50VHlwZTogRW50aXR5VHlwZSB8IENvbXBsZXhUeXBlLCBjc2RsUHJvcGVydHk6IGFueSwgc2NoZW1hOiBhbnksIGtleU5hbWVzT25TZXJ2ZXI/OiBzdHJpbmdbXSkge1xyXG4gIGxldCBkcDogRGF0YVByb3BlcnR5IHwgdW5kZWZpbmVkO1xyXG4gIGxldCB0eXBlUGFydHMgPSBjc2RsUHJvcGVydHkudHlwZS5zcGxpdChcIi5cIik7XHJcbiAgLy8gQm90aCB0ZXN0cyBvbiB0eXBlUGFydHMgYXJlIG5lY2Vzc2FyeSBiZWNhdXNlIG9mIGRpZmZlcmluZyBtZXRhZGF0YSBjb252ZW50aW9ucyBmb3IgT0RhdGEgYW5kIEVkbXggZmVlZHMuXHJcbiAgaWYgKHR5cGVQYXJ0c1swXS5lbmRzV2l0aChcIkVkbVwiKSAmJiB0eXBlUGFydHMubGVuZ3RoID09PSAyKSB7XHJcbiAgICBkcCA9IHBhcnNlQ3NkbFNpbXBsZVByb3BlcnR5KHBhcmVudFR5cGUsIGNzZGxQcm9wZXJ0eSwga2V5TmFtZXNPblNlcnZlcik7XHJcbiAgfSBlbHNlIHtcclxuICAgIGlmIChpc0VudW1UeXBlKGNzZGxQcm9wZXJ0eSwgc2NoZW1hKSkge1xyXG4gICAgICBkcCA9IHBhcnNlQ3NkbFNpbXBsZVByb3BlcnR5KHBhcmVudFR5cGUsIGNzZGxQcm9wZXJ0eSwga2V5TmFtZXNPblNlcnZlcik7XHJcbiAgICAgIGlmIChkcCkge1xyXG4gICAgICAgIGRwLmVudW1UeXBlID0gY3NkbFByb3BlcnR5LnR5cGU7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRwID0gcGFyc2VDc2RsQ29tcGxleFByb3BlcnR5KHBhcmVudFR5cGUsIGNzZGxQcm9wZXJ0eSwgc2NoZW1hKTtcclxuICAgIH1cclxuICB9XHJcbiAgaWYgKGRwKSB7XHJcbiAgICBwYXJlbnRUeXBlLl9hZGRQcm9wZXJ0eUNvcmUoZHApO1xyXG4gICAgYWRkVmFsaWRhdG9ycyhkcCk7XHJcbiAgfVxyXG4gIHJldHVybiBkcDtcclxufVxyXG5cclxuZnVuY3Rpb24gcGFyc2VDc2RsU2ltcGxlUHJvcGVydHkocGFyZW50VHlwZTogRW50aXR5VHlwZSB8IENvbXBsZXhUeXBlLCBjc2RsUHJvcGVydHk6IGFueSwga2V5TmFtZXNPblNlcnZlcj86IHN0cmluZ1tdKSB7XHJcbiAgbGV0IGlzQ29sbGVjdGlvblR5cGUgPSBpc0NvbGxlY3Rpb24oY3NkbFByb3BlcnR5LnR5cGUpO1xyXG4gIGxldCBwcm9wZXJ0eVR5cGUgPSBnZXRDb2xsZWN0aW9uVHlwZShjc2RsUHJvcGVydHkudHlwZSkgfHwgY3NkbFByb3BlcnR5LnR5cGU7XHJcbiAgbGV0IGRhdGFUeXBlID0gRGF0YVR5cGUuZnJvbUVkbURhdGFUeXBlKHByb3BlcnR5VHlwZSk7XHJcbiAgaWYgKGRhdGFUeXBlID09IG51bGwpIHtcclxuICAgIHBhcmVudFR5cGUud2FybmluZ3MucHVzaChcIlVuYWJsZSB0byByZWNvZ25pemUgRGF0YVR5cGUgZm9yIHByb3BlcnR5OiBcIiArIGNzZGxQcm9wZXJ0eS5uYW1lICsgXCIgRGF0ZVR5cGU6IFwiICsgY3NkbFByb3BlcnR5LnR5cGUpO1xyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcbiAgbGV0IGlzTnVsbGFibGUgPSBjc2RsUHJvcGVydHkubnVsbGFibGUgPT09ICd0cnVlJyB8fCBjc2RsUHJvcGVydHkubnVsbGFibGUgPT0gbnVsbDtcclxuICAvLyBsZXQgZml4ZWRMZW5ndGggPSBjc2RsUHJvcGVydHkuZml4ZWRMZW5ndGggPyBjc2RsUHJvcGVydHkuZml4ZWRMZW5ndGggPT09IHRydWUgOiB1bmRlZmluZWQ7XHJcbiAgbGV0IGlzUGFydE9mS2V5ID0ga2V5TmFtZXNPblNlcnZlciAhPSBudWxsICYmIGtleU5hbWVzT25TZXJ2ZXIuaW5kZXhPZihjc2RsUHJvcGVydHkubmFtZSkgPj0gMDtcclxuICBpZiAoaXNQYXJ0T2ZLZXkgJiYgcGFyZW50VHlwZSBpbnN0YW5jZW9mIEVudGl0eVR5cGUgJiYgcGFyZW50VHlwZS5hdXRvR2VuZXJhdGVkS2V5VHlwZSA9PT0gQXV0b0dlbmVyYXRlZEtleVR5cGUuTm9uZSkge1xyXG4gICAgaWYgKGlzSWRlbnRpdHlQcm9wZXJ0eShjc2RsUHJvcGVydHkpKSB7XHJcbiAgICAgIHBhcmVudFR5cGUuYXV0b0dlbmVyYXRlZEtleVR5cGUgPSBBdXRvR2VuZXJhdGVkS2V5VHlwZS5JZGVudGl0eTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gVE9ETzogbml0IC0gZG9uJ3Qgc2V0IG1heExlbmd0aCBpZiBudWxsO1xyXG4gIGxldCBtYXhMZW5ndGggPSBjc2RsUHJvcGVydHkubWF4TGVuZ3RoO1xyXG4gIG1heExlbmd0aCA9IChtYXhMZW5ndGggPT0gbnVsbCB8fCBtYXhMZW5ndGggPT09IFwiTWF4XCIpID8gbnVsbCA6IHBhcnNlSW50KG1heExlbmd0aCwgMTApO1xyXG4gIC8vIGNhbid0IHNldCB0aGUgbmFtZSB1bnRpbCB3ZSBnbyB0aHJ1IG5hbWluZ0NvbnZlbnRpb25zIGFuZCB0aGVzZSBuZWVkIHRoZSBkcC5cclxuXHJcbiAgbGV0IGRwID0gbmV3IERhdGFQcm9wZXJ0eSh7XHJcbiAgICBuYW1lT25TZXJ2ZXI6IGNzZGxQcm9wZXJ0eS5uYW1lLFxyXG4gICAgZGF0YVR5cGU6IGRhdGFUeXBlLFxyXG4gICAgaXNOdWxsYWJsZTogaXNOdWxsYWJsZSxcclxuICAgIGlzUGFydE9mS2V5OiBpc1BhcnRPZktleSxcclxuICAgIGlzU2NhbGFyOiAhaXNDb2xsZWN0aW9uVHlwZSxcclxuICAgIG1heExlbmd0aDogbWF4TGVuZ3RoLFxyXG4gICAgZGVmYXVsdFZhbHVlOiBjc2RsUHJvcGVydHkuZGVmYXVsdFZhbHVlLFxyXG4gICAgLy8gZml4ZWRMZW5ndGg6IGZpeGVkTGVuZ3RoLFxyXG4gICAgY29uY3VycmVuY3lNb2RlOiBjc2RsUHJvcGVydHkuY29uY3VycmVuY3lNb2RlXHJcbiAgfSk7XHJcblxyXG4gIGlmIChkYXRhVHlwZSA9PT0gRGF0YVR5cGUuVW5kZWZpbmVkKSB7XHJcbiAgICBkcC5yYXdUeXBlTmFtZSA9IGNzZGxQcm9wZXJ0eS50eXBlO1xyXG4gIH1cclxuICByZXR1cm4gZHA7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBhcnNlQ3NkbENvbXBsZXhQcm9wZXJ0eShwYXJlbnRUeXBlOiBFbnRpdHlUeXBlIHwgQ29tcGxleFR5cGUsIGNzZGxQcm9wZXJ0eTogYW55LCBzY2hlbWE6IGFueSkge1xyXG5cclxuICAvLyBDb21wbGV4IHByb3BlcnRpZXMgYXJlIG5ldmVyIG51bGxhYmxlICggcGVyIEVGIHNwZWNzKVxyXG4gIC8vIGxldCBpc051bGxhYmxlID0gY3NkbFByb3BlcnR5Lm51bGxhYmxlID09PSAndHJ1ZScgfHwgY3NkbFByb3BlcnR5Lm51bGxhYmxlID09IG51bGw7XHJcbiAgLy8gbGV0IGNvbXBsZXhUeXBlTmFtZSA9IGNzZGxQcm9wZXJ0eS50eXBlLnNwbGl0KFwiRWRtLlwiKVsxXTtcclxuICBsZXQgaXNDb2xsZWN0aW9uVHlwZSA9IGlzQ29sbGVjdGlvbihjc2RsUHJvcGVydHkudHlwZSk7XHJcbiAgbGV0IHByb3BlcnR5VHlwZSA9IGdldENvbGxlY3Rpb25UeXBlKGNzZGxQcm9wZXJ0eS50eXBlKSB8fCBjc2RsUHJvcGVydHkudHlwZTtcclxuICBsZXQgY29tcGxleFR5cGVOYW1lID0gcGFyc2VUeXBlTmFtZVdpdGhTY2hlbWEocHJvcGVydHlUeXBlLCBzY2hlbWEpLnR5cGVOYW1lO1xyXG4gIC8vIGNhbid0IHNldCB0aGUgbmFtZSB1bnRpbCB3ZSBnbyB0aHJ1IG5hbWluZ0NvbnZlbnRpb25zIGFuZCB0aGVzZSBuZWVkIHRoZSBkcC5cclxuICBsZXQgZHAgPSBuZXcgRGF0YVByb3BlcnR5KHtcclxuICAgIG5hbWVPblNlcnZlcjogY3NkbFByb3BlcnR5Lm5hbWUsXHJcbiAgICBjb21wbGV4VHlwZU5hbWU6IGNvbXBsZXhUeXBlTmFtZSxcclxuICAgIGlzTnVsbGFibGU6IGZhbHNlLFxyXG4gICAgaXNTY2FsYXI6ICFpc0NvbGxlY3Rpb25UeXBlXHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiBkcDtcclxufVxyXG5cclxuZnVuY3Rpb24gcGFyc2VDc2RsTmF2UHJvcGVydHkoZW50aXR5VHlwZTogRW50aXR5VHlwZSwgY3NkbFByb3BlcnR5OiBhbnksIHNjaGVtYTogYW55LCBzY2hlbWFzOiBhbnlbXSkge1xyXG4gIGxldCBhc3NvY2lhdGlvbiA9IGdldEFzc29jaWF0aW9uKGNzZGxQcm9wZXJ0eSwgc2NoZW1hLCBzY2hlbWFzKTtcclxuICBpZiAoIWFzc29jaWF0aW9uKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmFibGUgdG8gcmVzb2x2ZSBGb3JlaWduIEtleSBBc3NvY2lhdGlvbjogXCIgKyBjc2RsUHJvcGVydHkucmVsYXRpb25zaGlwKTtcclxuICB9XHJcbiAgbGV0IHRvRW5kID0gY29yZS5hcnJheUZpcnN0KGFzc29jaWF0aW9uLmVuZCwgKGFzc29jRW5kKSA9PiB7XHJcbiAgICByZXR1cm4gYXNzb2NFbmQucm9sZSA9PT0gY3NkbFByb3BlcnR5LnRvUm9sZTtcclxuICB9KTtcclxuXHJcbiAgbGV0IGlzU2NhbGFyID0gdG9FbmQhLm11bHRpcGxpY2l0eSAhPT0gXCIqXCI7XHJcbiAgbGV0IGRhdGFUeXBlID0gcGFyc2VUeXBlTmFtZVdpdGhTY2hlbWEodG9FbmQhLnR5cGUsIHNjaGVtYSkudHlwZU5hbWU7XHJcblxyXG4gIGxldCBjb25zdHJhaW50ID0gYXNzb2NpYXRpb24ucmVmZXJlbnRpYWxDb25zdHJhaW50O1xyXG4gIGlmICghY29uc3RyYWludCkge1xyXG4gICAgLy8gVE9ETzogUmV2aXNpdCB0aGlzIGxhdGVyIC0gcmlnaHQgbm93IHdlIGp1c3QgaWdub3JlIG1hbnktbWFueSBhbmQgYXNzb2NzIHdpdGggbWlzc2luZyBjb25zdHJhaW50cy5cclxuXHJcbiAgICAvLyBUaGluayBhYm91dCBhZGRpbmcgdGhpcyBiYWNrIGxhdGVyLlxyXG4gICAgaWYgKGFzc29jaWF0aW9uLmVuZFswXS5tdWx0aXBsaWNpdHkgPT09IFwiKlwiICYmIGFzc29jaWF0aW9uLmVuZFsxXS5tdWx0aXBsaWNpdHkgPT09IFwiKlwiKSB7XHJcbiAgICAgIC8vIGlnbm9yZSBtYW55IHRvIG1hbnkgcmVsYXRpb25zIGZvciBub3dcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gRm9yIG5vdyBhc3N1bWUgaXQgd2lsbCBiZSBzZXQgbGF0ZXIgZGlyZWN0bHkgb24gdGhlIGNsaWVudC5cclxuICAgICAgLy8gb3RoZXIgYWx0ZXJuYXRpdmUgaXMgdG8gdGhyb3cgYW4gZXJyb3I6XHJcbiAgICAgIC8vIHRocm93IG5ldyBFcnJvcihcIkZvcmVpZ24gS2V5IEFzc29jaWF0aW9ucyBtdXN0IGJlIHR1cm5lZCBvbiBmb3IgdGhpcyBtb2RlbFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuXHJcbiAgbGV0IGNmZyA9IHtcclxuICAgIG5hbWVPblNlcnZlcjogY3NkbFByb3BlcnR5Lm5hbWUsXHJcbiAgICBlbnRpdHlUeXBlTmFtZTogZGF0YVR5cGUsXHJcbiAgICBpc1NjYWxhcjogaXNTY2FsYXIsXHJcbiAgICBhc3NvY2lhdGlvbk5hbWU6IGFzc29jaWF0aW9uLm5hbWUsXHJcbiAgfTtcclxuXHJcbiAgaWYgKGNvbnN0cmFpbnQpIHtcclxuICAgIGxldCBwcmluY2lwYWwgPSBjb25zdHJhaW50LnByaW5jaXBhbDtcclxuICAgIGxldCBkZXBlbmRlbnQgPSBjb25zdHJhaW50LmRlcGVuZGVudDtcclxuXHJcbiAgICBsZXQgcHJvcFJlZnMgPSBjb3JlLnRvQXJyYXkoZGVwZW5kZW50LnByb3BlcnR5UmVmKTtcclxuICAgIGxldCBma05hbWVzID0gcHJvcFJlZnMubWFwKGNvcmUucGx1Y2soXCJuYW1lXCIpKTtcclxuICAgIGlmIChjc2RsUHJvcGVydHkuZnJvbVJvbGUgPT09IHByaW5jaXBhbC5yb2xlKSB7XHJcbiAgICAgIChjZmcgYXMgYW55KS5pbnZGb3JlaWduS2V5TmFtZXNPblNlcnZlciA9IGZrTmFtZXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyB3aWxsIGJlIHVzZWQgbGF0ZXIgYnkgbnAuX3VwZGF0ZVxyXG4gICAgICAoY2ZnIGFzIGFueSkuZm9yZWlnbktleU5hbWVzT25TZXJ2ZXIgPSBma05hbWVzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbGV0IG5wID0gbmV3IE5hdmlnYXRpb25Qcm9wZXJ0eShjZmcpO1xyXG4gIGVudGl0eVR5cGUuX2FkZFByb3BlcnR5Q29yZShucCk7XHJcbiAgcmV0dXJuIG5wO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0NvbGxlY3Rpb24ocHJvcGVydHlUeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICByZXR1cm4gUlhfQ09MTEVDVElPTi50ZXN0KHByb3BlcnR5VHlwZSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzRW51bVR5cGUoY3NkbFByb3BlcnR5OiBhbnksIHNjaGVtYTogYW55KSB7XHJcbiAgaWYgKHNjaGVtYS5lbnVtVHlwZSkgcmV0dXJuIGlzRWRteEVudW1UeXBlKGNzZGxQcm9wZXJ0eSwgc2NoZW1hKTtcclxuICBlbHNlIGlmIChzY2hlbWEuZXh0ZW5zaW9ucykgcmV0dXJuIGlzT0RhdGFFbnVtVHlwZShjc2RsUHJvcGVydHksIHNjaGVtYSk7XHJcbiAgZWxzZSByZXR1cm4gZmFsc2U7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzRWRteEVudW1UeXBlKGNzZGxQcm9wZXJ0eTogYW55LCBzY2hlbWE6IGFueSkge1xyXG4gIGxldCBlbnVtVHlwZXMgPSBjb3JlLnRvQXJyYXkoc2NoZW1hLmVudW1UeXBlKTtcclxuICBsZXQgcHJvcGVydHlUeXBlID0gZ2V0Q29sbGVjdGlvblR5cGUoY3NkbFByb3BlcnR5LnR5cGUpIHx8IGNzZGxQcm9wZXJ0eS50eXBlO1xyXG4gIGxldCB0eXBlUGFydHMgPSBwcm9wZXJ0eVR5cGUuc3BsaXQoXCIuXCIpO1xyXG4gIGxldCBiYXNlVHlwZU5hbWUgPSB0eXBlUGFydHNbdHlwZVBhcnRzLmxlbmd0aCAtIDFdO1xyXG4gIHJldHVybiBlbnVtVHlwZXMuc29tZShmdW5jdGlvbiAoZW51bVR5cGUpIHtcclxuICAgIHJldHVybiBlbnVtVHlwZS5uYW1lID09PSBiYXNlVHlwZU5hbWU7XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzT0RhdGFFbnVtVHlwZShjc2RsUHJvcGVydHk6IGFueSwgc2NoZW1hOiBhbnkpIHtcclxuICBsZXQgZW51bVR5cGVzID0gc2NoZW1hLmV4dGVuc2lvbnMuZmlsdGVyKChleHQ6IGFueSkgPT4ge1xyXG4gICAgcmV0dXJuIGV4dC5uYW1lID09PSBcIkVudW1UeXBlXCI7XHJcbiAgfSk7XHJcbiAgbGV0IHByb3BlcnR5VHlwZSA9IGdldENvbGxlY3Rpb25UeXBlKGNzZGxQcm9wZXJ0eS50eXBlKSB8fCBjc2RsUHJvcGVydHkudHlwZTtcclxuICBsZXQgdHlwZVBhcnRzID0gcHJvcGVydHlUeXBlLnNwbGl0KFwiLlwiKTtcclxuICBsZXQgYmFzZVR5cGVOYW1lID0gdHlwZVBhcnRzW3R5cGVQYXJ0cy5sZW5ndGggLSAxXTtcclxuICByZXR1cm4gZW51bVR5cGVzLnNvbWUoKGVudW1UeXBlOiBhbnkpID0+IHtcclxuICAgIHJldHVybiBlbnVtVHlwZS5hdHRyaWJ1dGVzLnNvbWUoKGF0dHI6IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4gYXR0ci5uYW1lID09PSBcIk5hbWVcIiAmJiBhdHRyLnZhbHVlID09PSBiYXNlVHlwZU5hbWU7XHJcbiAgICB9KTtcclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gYWRkVmFsaWRhdG9ycyhkYXRhUHJvcGVydHk6IERhdGFQcm9wZXJ0eSkge1xyXG4gIGxldCB0eXBlVmFsaWRhdG9yOiBWYWxpZGF0b3I7XHJcbiAgaWYgKCFkYXRhUHJvcGVydHkuaXNOdWxsYWJsZSkge1xyXG4gICAgZGF0YVByb3BlcnR5LnZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3IucmVxdWlyZWQoKSk7XHJcbiAgfVxyXG5cclxuICBpZiAoZGF0YVByb3BlcnR5LmlzQ29tcGxleFByb3BlcnR5KSByZXR1cm47XHJcblxyXG4gIGlmIChkYXRhUHJvcGVydHkuZGF0YVR5cGUgPT09IERhdGFUeXBlLlN0cmluZykge1xyXG4gICAgaWYgKGRhdGFQcm9wZXJ0eS5tYXhMZW5ndGgpIHtcclxuICAgICAgbGV0IHZhbGlkYXRvckFyZ3MgPSB7IG1heExlbmd0aDogZGF0YVByb3BlcnR5Lm1heExlbmd0aCB9O1xyXG4gICAgICB0eXBlVmFsaWRhdG9yID0gVmFsaWRhdG9yLm1heExlbmd0aCh2YWxpZGF0b3JBcmdzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHR5cGVWYWxpZGF0b3IgPSBWYWxpZGF0b3Iuc3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgICAgbGV0IHZhbGlkYXRvckN0b3IgPSAoZGF0YVByb3BlcnR5LmRhdGFUeXBlIGFzIGFueSkudmFsaWRhdG9yQ3RvcjtcclxuICAgICAgaWYgKCF2YWxpZGF0b3JDdG9yKSByZXR1cm47XHJcbiAgICAgIHR5cGVWYWxpZGF0b3IgPSB2YWxpZGF0b3JDdG9yKCk7XHJcbiAgfVxyXG5cclxuICBkYXRhUHJvcGVydHkudmFsaWRhdG9ycy5wdXNoKHR5cGVWYWxpZGF0b3IpO1xyXG5cclxufVxyXG5cclxuZnVuY3Rpb24gaXNJZGVudGl0eVByb3BlcnR5KGNzZGxQcm9wZXJ0eTogYW55KSB7XHJcbiAgLy8gc2VlIGlmIHdlYiBhcGkgZmVlZFxyXG4gIGxldCBwcm9wTmFtZSA9IGNvcmUuYXJyYXlGaXJzdChPYmplY3Qua2V5cyhjc2RsUHJvcGVydHkpLCAocG4pID0+IHtcclxuICAgIHJldHVybiBwbi5pbmRleE9mKFwiU3RvcmVHZW5lcmF0ZWRQYXR0ZXJuXCIpID49IDA7XHJcbiAgfSk7XHJcbiAgaWYgKHByb3BOYW1lKSB7XHJcbiAgICByZXR1cm4gKGNzZGxQcm9wZXJ0eVtwcm9wTmFtZV0gPT09IFwiSWRlbnRpdHlcIik7XHJcbiAgfSBlbHNlIHtcclxuICAgIC8vIHNlZSBpZiBPZGF0YSBmZWVkXHJcbiAgICBsZXQgZXh0ZW5zaW9ucyA9IGNzZGxQcm9wZXJ0eS5leHRlbnNpb25zO1xyXG4gICAgaWYgKCFleHRlbnNpb25zKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGxldCBpZGVudGl0eUV4dG4gPSBjb3JlLmFycmF5Rmlyc3QoZXh0ZW5zaW9ucywgKGV4dGVuc2lvbikgPT4ge1xyXG4gICAgICByZXR1cm4gZXh0ZW5zaW9uLm5hbWUgPT09IFwiU3RvcmVHZW5lcmF0ZWRQYXR0ZXJuXCIgJiYgZXh0ZW5zaW9uLnZhbHVlID09PSBcIklkZW50aXR5XCI7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiAhIWlkZW50aXR5RXh0bjtcclxuICB9XHJcbn1cclxuXHJcbi8vIEZhc3QgdmVyc2lvblxyXG4vLyBucDogc2NoZW1hLmVudGl0eVR5cGVbXS5uYXZpZ2F0aW9uUHJvcGVydHkucmVsYXRpb25zaGlwIC0+IHNjaGVtYS5hc3NvY2lhdGlvblxyXG4vLyAgIG1hdGNoKCBzaG9ydE5hbWUobnAucmVsYXRpb25zaGlwKSA9PSBzY2hlbWEuYXNzb2NpYXRpb25bXS5uYW1lXHJcbi8vICAgICAgLS0+IGFzc29jaWF0aW9uX19cclxuXHJcbi8vIENvcnJlY3QgdmVyc2lvblxyXG4vLyBucDogc2NoZW1hLmVudGl0eVR5cGVbXS5uYXZpZ2F0aW9uUHJvcGVydHkucmVsYXRpb25zaGlwIC0+IHNjaGVtYS5hc3NvY2lhdGlvblxyXG4vLyAgIG1hdGNoKCBucC5yZWxhdGlvbnNoaXAgPT0gc2NoZW1hLmVudGl0eUNvbnRhaW5lclswXS5hc3NvY2lhdGlvblNldFtdLmFzc29jaWF0aW9uIClcclxuLy8gICAgICAtPiBhc3NvY2lhdGlvblNldC5uYW1lXHJcbi8vICAgbWF0Y2ggKCBhc3NvY2lhdGlvblNldC5uYW1lID09IHNjaGVtYS5hc3NvY2lhdGlvbltdLm5hbWUgKVxyXG4vLyAgICAgIC0+IGFzc29jaWF0aW9uXHJcblxyXG5mdW5jdGlvbiBnZXRBc3NvY2lhdGlvbihjc2RsTmF2UHJvcGVydHk6IGFueSwgY29udGFpbmluZ1NjaGVtYTogYW55LCBzY2hlbWFzOiBhbnlbXSkge1xyXG4gIGxldCBhc3NvY0Z1bGxOYW1lID0gcGFyc2VUeXBlTmFtZVdpdGhTY2hlbWEoY3NkbE5hdlByb3BlcnR5LnJlbGF0aW9uc2hpcCwgY29udGFpbmluZ1NjaGVtYSk7XHJcbiAgbGV0IGFzc29jTmFtZXNwYWNlID0gYXNzb2NGdWxsTmFtZS5uYW1lc3BhY2U7XHJcbiAgbGV0IGFzc29jU2NoZW1hID0gY29yZS5hcnJheUZpcnN0KHNjaGVtYXMsIChzY2hlbWEpID0+IHtcclxuICAgIHJldHVybiBzY2hlbWEubmFtZXNwYWNlID09PSBhc3NvY05hbWVzcGFjZTtcclxuICB9KTtcclxuICBpZiAoIWFzc29jU2NoZW1hKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgbGV0IGFzc29jTmFtZSA9IGFzc29jRnVsbE5hbWUuc2hvcnRUeXBlTmFtZTtcclxuICBsZXQgYXNzb2NzID0gYXNzb2NTY2hlbWEuYXNzb2NpYXRpb247XHJcbiAgaWYgKCFhc3NvY3MpIHJldHVybiBudWxsO1xyXG4gIGlmICghQXJyYXkuaXNBcnJheShhc3NvY3MpKSB7XHJcbiAgICBhc3NvY3MgPSBbYXNzb2NzXTtcclxuICB9XHJcbiAgbGV0IGFzc29jaWF0aW9uID0gY29yZS5hcnJheUZpcnN0KGFzc29jcywgKGFzc29jKSA9PiB7XHJcbiAgICByZXR1cm4gYXNzb2MubmFtZSA9PT0gYXNzb2NOYW1lO1xyXG4gIH0pO1xyXG4gIHJldHVybiBhc3NvY2lhdGlvbiBhcyBJQXNzb2NpYXRpb247XHJcbn1cclxuXHJcbi8vIHNjaGVtYSBpcyBvbmx5IG5lZWRlZCBmb3IgbmF2UHJvcGVydHkgdHlwZSBuYW1lXHJcbmZ1bmN0aW9uIHBhcnNlVHlwZU5hbWVXaXRoU2NoZW1hKGVudGl0eVR5cGVOYW1lOiBzdHJpbmcsIHNjaGVtYTogYW55KSB7XHJcbiAgbGV0IHJlc3VsdCA9IE1ldGFkYXRhU3RvcmUucGFyc2VUeXBlTmFtZShlbnRpdHlUeXBlTmFtZSk7XHJcbiAgaWYgKHNjaGVtYSAmJiBzY2hlbWEuY1NwYWNlT1NwYWNlTWFwcGluZykge1xyXG4gICAgbGV0IG5zID0gZ2V0TmFtZXNwYWNlRm9yKHJlc3VsdCEuc2hvcnRUeXBlTmFtZSwgc2NoZW1hKTtcclxuICAgIGlmIChucykge1xyXG4gICAgICByZXN1bHQgPSBNZXRhZGF0YVN0b3JlLm1ha2VUeXBlSGFzaChyZXN1bHQhLnNob3J0VHlwZU5hbWUsIG5zKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0Q29sbGVjdGlvblR5cGUocHJvcGVydHlUeXBlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIGNvbnN0IG1hdGNoID0gcHJvcGVydHlUeXBlLm1hdGNoKFJYX0NPTExFQ1RJT04pO1xyXG4gIHJldHVybiBtYXRjaCA/IG1hdGNoW1wiZ3JvdXBzXCJdLnR5cGUgOiBudWxsO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXROYW1lc3BhY2VGb3Ioc2hvcnROYW1lOiBzdHJpbmcsIHNjaGVtYTogYW55KSB7XHJcbiAgbGV0IG5zOiBzdHJpbmc7XHJcbiAgbGV0IG1hcHBpbmcgPSBzY2hlbWEuY1NwYWNlT1NwYWNlTWFwcGluZztcclxuICBpZiAobWFwcGluZykge1xyXG4gICAgbGV0IGZ1bGxOYW1lID0gbWFwcGluZ1tzY2hlbWEubmFtZXNwYWNlICsgXCIuXCIgKyBzaG9ydE5hbWVdO1xyXG4gICAgbnMgPSBmdWxsTmFtZSAmJiBmdWxsTmFtZS5zdWJzdHIoMCwgZnVsbE5hbWUubGVuZ3RoIC0gKHNob3J0TmFtZS5sZW5ndGggKyAxKSk7XHJcbiAgICBpZiAobnMpIHJldHVybiBucztcclxuICB9XHJcbiAgLy8gaWYgc2NoZW1hIGRvZXMgbm90IGFsc28gaGF2ZSBhbiBlbnRpdHlUeXBlIG5vZGUgdGhlblxyXG4gIC8vIHRoaXMgaXMgYW4gV2ViQXBpMiBPRGF0YSBzY2hlbWEgd2hpY2ggaXMgdXN1YWxseSBlcXVhbCB0byAnRGVmYXVsdCc7IHdoaWNoIGlzIHVzZWxlc3MuXHJcbiAgaWYgKHNjaGVtYS5lbnRpdHlUeXBlIHx8IHNjaGVtYS5uYW1lc3BhY2UgIT09ICdEZWZhdWx0Jykge1xyXG4gICAgcmV0dXJuIHNjaGVtYS5uYW1lc3BhY2U7XHJcbiAgfVxyXG4gIHJldHVybiBudWxsO1xyXG59XHJcblxyXG4vKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuZXhwb3J0IGNvbnN0IENzZGxNZXRhZGF0YVBhcnNlciA9IHtcclxuICBwYXJzZTogcGFyc2VcclxufTtcclxuIl19
|
|
385
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NkbC1tZXRhZGF0YS1wYXJzZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9icmVlemUtY2xpZW50LyIsInNvdXJjZXMiOlsic3JjL2NzZGwtbWV0YWRhdGEtcGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25JLE9BQU8sRUFBRSxRQUFRLEVBQUcsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQWN2QyxNQUFNLGFBQWEsR0FBSSxvQkFBb0IsQ0FBQztBQUU1QyxTQUFTLEtBQUssQ0FBQyxhQUE0QixFQUFFLE9BQVksRUFBRSxXQUFnQjtJQUV6RSxhQUFhLENBQUMsc0JBQXNCLEdBQUcsRUFBRSxDQUFDO0lBQzFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxNQUFXO1FBQ25DLElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFO1lBQzlCLHFDQUFxQztZQUNyQyx5RkFBeUY7WUFDekYsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUN0RCxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDaEIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLE9BQVk7Z0JBQ3JDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsQ0FBQyxDQUFDLENBQUM7WUFDSCxNQUFNLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDO1NBQ3JD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SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxZQUFvQjtJQUM3QyxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNqQyxDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsU0FBaUIsRUFBRSxNQUFXO0lBQ3JELElBQUksRUFBVSxDQUFDO0lBQ2YsSUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDO0lBQ3pDLElBQUksT0FBTyxFQUFFO1FBQ1gsSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsR0FBRyxHQUFHLFNBQVMsQ0FBQyxDQUFDO1FBQzNELEVBQUUsR0FBRyxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RSxJQUFJLEVBQUU7WUFBRSxPQUFPLEVBQUUsQ0FBQztLQUNuQjtJQUNELHVEQUF1RDtJQUN2RCx5RkFBeUY7SUFDekYsSUFBSSxNQUFNLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyxTQUFTLEtBQUssU0FBUyxFQUFFO1FBQ3ZELE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQztLQUN6QjtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELHdCQUF3QjtBQUN4QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUNoQyxLQUFLLEVBQUUsS0FBSztDQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb3JlIH0gZnJvbSAnLi9jb3JlJztcclxuaW1wb3J0IHsgTWV0YWRhdGFTdG9yZSwgRW50aXR5VHlwZSwgQ29tcGxleFR5cGUsIERhdGFQcm9wZXJ0eSwgTmF2aWdhdGlvblByb3BlcnR5LCBBdXRvR2VuZXJhdGVkS2V5VHlwZSB9IGZyb20gJy4vZW50aXR5LW1ldGFkYXRhJztcclxuaW1wb3J0IHsgRGF0YVR5cGUgIH0gZnJvbSAnLi9kYXRhLXR5cGUnO1xyXG5pbXBvcnQgeyBWYWxpZGF0b3IgfSBmcm9tICcuL3ZhbGlkYXRlJztcclxuXHJcbmludGVyZmFjZSBJQXNzb2NpYXRpb24ge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBlbmQ6IElFbmRbXTtcclxuICByZWZlcmVudGlhbENvbnN0cmFpbnQ6IGFueTtcclxufVxyXG5cclxuaW50ZXJmYWNlIElFbmQge1xyXG4gIG11bHRpcGxpY2l0eTogc3RyaW5nO1xyXG4gIHR5cGU6IHN0cmluZztcclxuICByb2xlOiBzdHJpbmc7XHJcbn1cclxuXHJcbmNvbnN0IFJYX0NPTExFQ1RJT04gPSAgL0NvbGxlY3Rpb25cXCgoLiopXFwpLztcclxuXHJcbmZ1bmN0aW9uIHBhcnNlKG1ldGFkYXRhU3RvcmU6IE1ldGFkYXRhU3RvcmUsIHNjaGVtYXM6IGFueSwgYWx0TWV0YWRhdGE6IGFueSkge1xyXG5cclxuICBtZXRhZGF0YVN0b3JlLl9lbnRpdHlUeXBlUmVzb3VyY2VNYXAgPSB7fTtcclxuICBzY2hlbWFzID0gY29yZS50b0FycmF5KHNjaGVtYXMpO1xyXG4gIHNjaGVtYXMuZm9yRWFjaChmdW5jdGlvbiAoc2NoZW1hOiBhbnkpIHtcclxuICAgIGlmIChzY2hlbWEuY1NwYWNlT1NwYWNlTWFwcGluZykge1xyXG4gICAgICAvLyBXZWIgYXBpIG9ubHkgLSBub3QgYXZhaWwgaW4gT0RhdGEuXHJcbiAgICAgIC8vIFRPRE8gdGhyb3cgaW5mb3JtYXRpdmUgZXJyb3IgaWYgYWxyZWFkeSBwYXJzZWQgYW5kIGNvbnZlcnRlZCB0byBtYXAgb24gYSBwcmV2aW91cyBwYXNzXHJcbiAgICAgIGxldCBtYXBwaW5ncyA9IEpTT04ucGFyc2Uoc2NoZW1hLmNTcGFjZU9TcGFjZU1hcHBpbmcpO1xyXG4gICAgICBsZXQgbmV3TWFwID0ge307XHJcbiAgICAgIG1hcHBpbmdzLmZvckVhY2goZnVuY3Rpb24gKG1hcHBpbmc6IGFueSkge1xyXG4gICAgICAgIG5ld01hcFttYXBwaW5nWzBdXSA9IG1hcHBpbmdbMV07XHJcbiAgICAgIH0pO1xyXG4gICAgICBzY2hlbWEuY1NwYWNlT1NwYWNlTWFwcGluZyA9IG5ld01hcDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2NoZW1hLmVudGl0eUNvbnRhaW5lcikge1xyXG4gICAgICBjb3JlLnRvQXJyYXkoc2NoZW1hLmVudGl0eUNvbnRhaW5lcikuZm9yRWFjaChmdW5jdGlvbiAoY29udGFpbmVyKSB7XHJcbiAgICAgICAgY29yZS50b0FycmF5KGNvbnRhaW5lci5lbnRpdHlTZXQpLmZvckVhY2goZnVuY3Rpb24gKGVudGl0eVNldCkge1xyXG4gICAgICAgICAgbGV0IGVudGl0eVR5cGVOYW1lID0gcGFyc2VUeXBlTmFtZVdpdGhTY2hlbWEoZW50aXR5U2V0LmVudGl0eVR5cGUsIHNjaGVtYSkudHlwZU5hbWU7XHJcbiAgICAgICAgICBtZXRhZGF0YVN0b3JlLnNldEVudGl0eVR5cGVGb3JSZXNvdXJjZU5hbWUoZW50aXR5U2V0Lm5hbWUsIGVudGl0eVR5cGVOYW1lKTtcclxuICAgICAgICAgIG1ldGFkYXRhU3RvcmUuX2VudGl0eVR5cGVSZXNvdXJjZU1hcFtlbnRpdHlUeXBlTmFtZV0gPSBlbnRpdHlTZXQubmFtZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcHJvY2VzcyBjb21wbGV4dHlwZXMgYmVmb3JlIGVudGl0eSB0eXBlcy5cclxuICAgIGlmIChzY2hlbWEuY29tcGxleFR5cGUpIHtcclxuICAgICAgY29yZS50b0FycmF5KHNjaGVtYS5jb21wbGV4VHlwZSkuZm9yRWFjaChmdW5jdGlvbiAoY3QpIHtcclxuICAgICAgICBwYXJzZUNzZGxDb21wbGV4VHlwZShjdCwgc2NoZW1hLCBtZXRhZGF0YVN0b3JlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoc2NoZW1hLmVudGl0eVR5cGUpIHtcclxuICAgICAgY29yZS50b0FycmF5KHNjaGVtYS5lbnRpdHlUeXBlKS5mb3JFYWNoKGZ1bmN0aW9uIChldCkge1xyXG4gICAgICAgIHBhcnNlQ3NkbEVudGl0eVR5cGUoZXQsIHNjaGVtYSwgc2NoZW1hcywgbWV0YWRhdGFTdG9yZSk7XHJcblxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgfSk7XHJcbiAgbGV0IGJhZE5hdlByb3BzID0gbWV0YWRhdGFTdG9yZS5nZXRJbmNvbXBsZXRlTmF2aWdhdGlvblByb3BlcnRpZXMoKTtcclxuICBpZiAoYmFkTmF2UHJvcHMubGVuZ3RoID4gMCkge1xyXG4gICAgbGV0IG1zZyA9IGJhZE5hdlByb3BzLm1hcChmdW5jdGlvbiAobnBhKSB7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG5wYSkpIHtcclxuICAgICAgICByZXR1cm4gbnBhLm1hcChmdW5jdGlvbiAobnApIHtcclxuICAgICAgICAgIHJldHVybiBucC5wYXJlbnRUeXBlLm5hbWUgKyBcIjpcIiArIG5wLm5hbWU7XHJcbiAgICAgICAgfSkuam9pbignLCAnKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnBhLnBhcmVudFR5cGUubmFtZSArIFwiOlwiICsgbnBhLm5hbWU7XHJcbiAgICB9KS5qb2luKCcsICcpO1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiSW5jb21wbGV0ZSBuYXZpZ2F0aW9uIHByb3BlcnRpZXM6IFwiICsgbXNnKTtcclxuICB9XHJcbiAgaWYgKGFsdE1ldGFkYXRhKSB7XHJcbiAgICBtZXRhZGF0YVN0b3JlLmltcG9ydE1ldGFkYXRhKGFsdE1ldGFkYXRhLCB0cnVlKTtcclxuICB9XHJcbiAgcmV0dXJuIG1ldGFkYXRhU3RvcmU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBhcnNlQ3NkbEVudGl0eVR5cGUoY3NkbEVudGl0eVR5cGU6IGFueSwgc2NoZW1hOiBhbnksIHNjaGVtYXM6IGFueSwgbWV0YWRhdGFTdG9yZTogTWV0YWRhdGFTdG9yZSkge1xyXG4gIGxldCBzaG9ydE5hbWUgPSBjc2RsRW50aXR5VHlwZS5uYW1lO1xyXG4gIGxldCBucyA9IGdldE5hbWVzcGFjZUZvcihzaG9ydE5hbWUsIHNjaGVtYSk7XHJcbiAgbGV0IGVudGl0eVR5cGUgPSBuZXcgRW50aXR5VHlwZSh7XHJcbiAgICBzaG9ydE5hbWU6IHNob3J0TmFtZSxcclxuICAgIG5hbWVzcGFjZTogbnMsXHJcbiAgICBpc0Fic3RyYWN0OiBjc2RsRW50aXR5VHlwZS5hYnN0cmFjdCAmJiBjc2RsRW50aXR5VHlwZS5hYnN0cmFjdCA9PT0gJ3RydWUnXHJcbiAgfSk7XHJcbiAgaWYgKGNzZGxFbnRpdHlUeXBlLmJhc2VUeXBlKSB7XHJcbiAgICBsZXQgYmFzZVR5cGVOYW1lID0gcGFyc2VUeXBlTmFtZVdpdGhTY2hlbWEoY3NkbEVudGl0eVR5cGUuYmFzZVR5cGUsIHNjaGVtYSkudHlwZU5hbWU7XHJcbiAgICBlbnRpdHlUeXBlLmJhc2VUeXBlTmFtZSA9IGJhc2VUeXBlTmFtZTtcclxuICAgIGxldCBiYXNlRW50aXR5VHlwZSA9IG1ldGFkYXRhU3RvcmUuX2dldFN0cnVjdHVyYWxUeXBlKGJhc2VUeXBlTmFtZSwgdHJ1ZSk7XHJcbiAgICBpZiAoYmFzZUVudGl0eVR5cGUpIHtcclxuICAgICAgY29tcGxldGVQYXJzZUNzZGxFbnRpdHlUeXBlKGVudGl0eVR5cGUsIGNzZGxFbnRpdHlUeXBlLCBzY2hlbWEsIHNjaGVtYXMsIG1ldGFkYXRhU3RvcmUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGRlZmVycmFscyA9IG1ldGFkYXRhU3RvcmUuX2RlZmVycmVkVHlwZXNbYmFzZVR5cGVOYW1lXTtcclxuICAgICAgaWYgKCFkZWZlcnJhbHMpIHtcclxuICAgICAgICBkZWZlcnJhbHMgPSBbXTtcclxuICAgICAgICBtZXRhZGF0YVN0b3JlLl9kZWZlcnJlZFR5cGVzW2Jhc2VUeXBlTmFtZV0gPSBkZWZlcnJhbHM7XHJcbiAgICAgIH1cclxuICAgICAgZGVmZXJyYWxzLnB1c2goeyBlbnRpdHlUeXBlOiBlbnRpdHlUeXBlLCBjc2RsRW50aXR5VHlwZTogY3NkbEVudGl0eVR5cGUgfSk7XHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbXBsZXRlUGFyc2VDc2RsRW50aXR5VHlwZShlbnRpdHlUeXBlLCBjc2RsRW50aXR5VHlwZSwgc2NoZW1hLCBzY2hlbWFzLCBtZXRhZGF0YVN0b3JlKTtcclxuICB9XHJcbiAgLy8gZW50aXR5VHlwZSBtYXkgb3IgbWF5IG5vdCBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIG1ldGFkYXRhU3RvcmUgYXQgdGhpcyBwb2ludC5cclxuICByZXR1cm4gZW50aXR5VHlwZTtcclxuXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNvbXBsZXRlUGFyc2VDc2RsRW50aXR5VHlwZShlbnRpdHlUeXBlOiBFbnRpdHlUeXBlLCBjc2RsRW50aXR5VHlwZTogYW55LCBzY2hlbWE6IGFueSwgc2NoZW1hczogYW55LCBtZXRhZGF0YVN0b3JlOiBNZXRhZGF0YVN0b3JlKSB7XHJcbiAgbGV0IGtleU5hbWVzT25TZXJ2ZXIgPSBjc2RsRW50aXR5VHlwZS5rZXkgPyBjb3JlLnRvQXJyYXkoY3NkbEVudGl0eVR5cGUua2V5LnByb3BlcnR5UmVmKS5tYXAoY29yZS5wbHVjayhcIm5hbWVcIikpIDogW107XHJcblxyXG4gIGNvcmUudG9BcnJheShjc2RsRW50aXR5VHlwZS5wcm9wZXJ0eSkuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xyXG4gICAgcGFyc2VDc2RsRGF0YVByb3BlcnR5KGVudGl0eVR5cGUsIHByb3AsIHNjaGVtYSwga2V5TmFtZXNPblNlcnZlcik7XHJcbiAgfSk7XHJcblxyXG4gIGNvcmUudG9BcnJheShjc2RsRW50aXR5VHlwZS5uYXZpZ2F0aW9uUHJvcGVydHkpLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcclxuICAgIHBhcnNlQ3NkbE5hdlByb3BlcnR5KGVudGl0eVR5cGUsIHByb3AsIHNjaGVtYSwgc2NoZW1hcyk7XHJcbiAgfSk7XHJcblxyXG4gIG1ldGFkYXRhU3RvcmUuYWRkRW50aXR5VHlwZShlbnRpdHlUeXBlKTtcclxuICBlbnRpdHlUeXBlLmRlZmF1bHRSZXNvdXJjZU5hbWUgPSBtZXRhZGF0YVN0b3JlLl9lbnRpdHlUeXBlUmVzb3VyY2VNYXBbZW50aXR5VHlwZS5uYW1lXTtcclxuXHJcbiAgbGV0IGRlZmVycmVkVHlwZXMgPSBtZXRhZGF0YVN0b3JlLl9kZWZlcnJlZFR5cGVzO1xyXG4gIGxldCBkZWZlcnJhbHMgPSBkZWZlcnJlZFR5cGVzW2VudGl0eVR5cGUubmFtZV07XHJcbiAgaWYgKGRlZmVycmFscykge1xyXG4gICAgZGVmZXJyYWxzLmZvckVhY2goZnVuY3Rpb24gKGQ6IGFueSkge1xyXG4gICAgICBjb21wbGV0ZVBhcnNlQ3NkbEVudGl0eVR5cGUoZC5lbnRpdHlUeXBlLCBkLmNzZGxFbnRpdHlUeXBlLCBzY2hlbWEsIHNjaGVtYXMsIG1ldGFkYXRhU3RvcmUpO1xyXG4gICAgfSk7XHJcbiAgICBkZWxldGUgZGVmZXJyZWRUeXBlc1tlbnRpdHlUeXBlLm5hbWVdO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBhcnNlQ3NkbENvbXBsZXhUeXBlKGNzZGxDb21wbGV4VHlwZTogYW55LCBzY2hlbWE6IGFueSwgbWV0YWRhdGFTdG9yZTogTWV0YWRhdGFTdG9yZSkge1xyXG4gIGxldCBzaG9ydE5hbWUgPSBjc2RsQ29tcGxleFR5cGUubmFtZTtcclxuICBsZXQgbnMgPSBnZXROYW1lc3BhY2VGb3Ioc2hvcnROYW1lLCBzY2hlbWEpO1xyXG4gIGxldCBjb21wbGV4VHlwZSA9IG5ldyBDb21wbGV4VHlwZSh7XHJcbiAgICBzaG9ydE5hbWU6IHNob3J0TmFtZSxcclxuICAgIG5hbWVzcGFjZTogbnNcclxuICB9KTtcclxuXHJcbiAgY29yZS50b0FycmF5KGNzZGxDb21wbGV4VHlwZS5wcm9wZXJ0eSkuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xyXG4gICAgcGFyc2VDc2RsRGF0YVByb3BlcnR5KGNvbXBsZXhUeXBlLCBwcm9wLCBzY2hlbWEpO1xyXG4gIH0pO1xyXG5cclxuICBtZXRhZGF0YVN0b3JlLmFkZEVudGl0eVR5cGUoY29tcGxleFR5cGUpO1xyXG4gIHJldHVybiBjb21wbGV4VHlwZTtcclxufVxyXG5cclxuZnVuY3Rpb24gcGFyc2VDc2RsRGF0YVByb3BlcnR5KHBhcmVudFR5cGU6IEVudGl0eVR5cGUgfCBDb21wbGV4VHlwZSwgY3NkbFByb3BlcnR5OiBhbnksIHNjaGVtYTogYW55LCBrZXlOYW1lc09uU2VydmVyPzogc3RyaW5nW10pIHtcclxuICBsZXQgZHA6IERhdGFQcm9wZXJ0eSB8IHVuZGVmaW5lZDtcclxuICBsZXQgdHlwZVBhcnRzID0gY3NkbFByb3BlcnR5LnR5cGUuc3BsaXQoXCIuXCIpO1xyXG4gIC8vIEJvdGggdGVzdHMgb24gdHlwZVBhcnRzIGFyZSBuZWNlc3NhcnkgYmVjYXVzZSBvZiBkaWZmZXJpbmcgbWV0YWRhdGEgY29udmVudGlvbnMgZm9yIE9EYXRhIGFuZCBFZG14IGZlZWRzLlxyXG4gIGlmICh0eXBlUGFydHNbMF0uZW5kc1dpdGgoXCJFZG1cIikgJiYgdHlwZVBhcnRzLmxlbmd0aCA9PT0gMikge1xyXG4gICAgZHAgPSBwYXJzZUNzZGxTaW1wbGVQcm9wZXJ0eShwYXJlbnRUeXBlLCBjc2RsUHJvcGVydHksIGtleU5hbWVzT25TZXJ2ZXIpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBpZiAoaXNFbnVtVHlwZShjc2RsUHJvcGVydHksIHNjaGVtYSkpIHtcclxuICAgICAgZHAgPSBwYXJzZUNzZGxTaW1wbGVQcm9wZXJ0eShwYXJlbnRUeXBlLCBjc2RsUHJvcGVydHksIGtleU5hbWVzT25TZXJ2ZXIpO1xyXG4gICAgICBpZiAoZHApIHtcclxuICAgICAgICBkcC5lbnVtVHlwZSA9IGNzZGxQcm9wZXJ0eS50eXBlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkcCA9IHBhcnNlQ3NkbENvbXBsZXhQcm9wZXJ0eShwYXJlbnRUeXBlLCBjc2RsUHJvcGVydHksIHNjaGVtYSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGlmIChkcCkge1xyXG4gICAgcGFyZW50VHlwZS5fYWRkUHJvcGVydHlDb3JlKGRwKTtcclxuICAgIGFkZFZhbGlkYXRvcnMoZHApO1xyXG4gIH1cclxuICByZXR1cm4gZHA7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBhcnNlQ3NkbFNpbXBsZVByb3BlcnR5KHBhcmVudFR5cGU6IEVudGl0eVR5cGUgfCBDb21wbGV4VHlwZSwgY3NkbFByb3BlcnR5OiBhbnksIGtleU5hbWVzT25TZXJ2ZXI/OiBzdHJpbmdbXSkge1xyXG4gIGxldCBpc0NvbGxlY3Rpb25UeXBlID0gaXNDb2xsZWN0aW9uKGNzZGxQcm9wZXJ0eS50eXBlKTtcclxuICBsZXQgcHJvcGVydHlUeXBlID0gZ2V0Q29sbGVjdGlvblR5cGUoY3NkbFByb3BlcnR5LnR5cGUpIHx8IGNzZGxQcm9wZXJ0eS50eXBlO1xyXG4gIGxldCBkYXRhVHlwZSA9IERhdGFUeXBlLmZyb21FZG1EYXRhVHlwZShwcm9wZXJ0eVR5cGUpO1xyXG4gIGlmIChkYXRhVHlwZSA9PSBudWxsKSB7XHJcbiAgICBwYXJlbnRUeXBlLndhcm5pbmdzLnB1c2goXCJVbmFibGUgdG8gcmVjb2duaXplIERhdGFUeXBlIGZvciBwcm9wZXJ0eTogXCIgKyBjc2RsUHJvcGVydHkubmFtZSArIFwiIERhdGVUeXBlOiBcIiArIGNzZGxQcm9wZXJ0eS50eXBlKTtcclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG4gIGxldCBpc051bGxhYmxlID0gY3NkbFByb3BlcnR5Lm51bGxhYmxlID09PSAndHJ1ZScgfHwgY3NkbFByb3BlcnR5Lm51bGxhYmxlID09IG51bGw7XHJcbiAgLy8gbGV0IGZpeGVkTGVuZ3RoID0gY3NkbFByb3BlcnR5LmZpeGVkTGVuZ3RoID8gY3NkbFByb3BlcnR5LmZpeGVkTGVuZ3RoID09PSB0cnVlIDogdW5kZWZpbmVkO1xyXG4gIGxldCBpc1BhcnRPZktleSA9IGtleU5hbWVzT25TZXJ2ZXIgIT0gbnVsbCAmJiBrZXlOYW1lc09uU2VydmVyLmluZGV4T2YoY3NkbFByb3BlcnR5Lm5hbWUpID49IDA7XHJcbiAgaWYgKGlzUGFydE9mS2V5ICYmIHBhcmVudFR5cGUgaW5zdGFuY2VvZiBFbnRpdHlUeXBlICYmIHBhcmVudFR5cGUuYXV0b0dlbmVyYXRlZEtleVR5cGUgPT09IEF1dG9HZW5lcmF0ZWRLZXlUeXBlLk5vbmUpIHtcclxuICAgIGlmIChpc0lkZW50aXR5UHJvcGVydHkoY3NkbFByb3BlcnR5KSkge1xyXG4gICAgICBwYXJlbnRUeXBlLmF1dG9HZW5lcmF0ZWRLZXlUeXBlID0gQXV0b0dlbmVyYXRlZEtleVR5cGUuSWRlbnRpdHk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIFRPRE86IG5pdCAtIGRvbid0IHNldCBtYXhMZW5ndGggaWYgbnVsbDtcclxuICBsZXQgbWF4TGVuZ3RoID0gY3NkbFByb3BlcnR5Lm1heExlbmd0aDtcclxuICBtYXhMZW5ndGggPSAobWF4TGVuZ3RoID09IG51bGwgfHwgbWF4TGVuZ3RoID09PSBcIk1heFwiKSA/IG51bGwgOiBwYXJzZUludChtYXhMZW5ndGgsIDEwKTtcclxuICAvLyBjYW4ndCBzZXQgdGhlIG5hbWUgdW50aWwgd2UgZ28gdGhydSBuYW1pbmdDb252ZW50aW9ucyBhbmQgdGhlc2UgbmVlZCB0aGUgZHAuXHJcblxyXG4gIGxldCBkcCA9IG5ldyBEYXRhUHJvcGVydHkoe1xyXG4gICAgbmFtZU9uU2VydmVyOiBjc2RsUHJvcGVydHkubmFtZSxcclxuICAgIGRhdGFUeXBlOiBkYXRhVHlwZSxcclxuICAgIGlzTnVsbGFibGU6IGlzTnVsbGFibGUsXHJcbiAgICBpc1BhcnRPZktleTogaXNQYXJ0T2ZLZXksXHJcbiAgICBpc1NjYWxhcjogIWlzQ29sbGVjdGlvblR5cGUsXHJcbiAgICBtYXhMZW5ndGg6IG1heExlbmd0aCxcclxuICAgIGRlZmF1bHRWYWx1ZTogY3NkbFByb3BlcnR5LmRlZmF1bHRWYWx1ZSxcclxuICAgIC8vIGZpeGVkTGVuZ3RoOiBmaXhlZExlbmd0aCxcclxuICAgIGNvbmN1cnJlbmN5TW9kZTogY3NkbFByb3BlcnR5LmNvbmN1cnJlbmN5TW9kZVxyXG4gIH0pO1xyXG5cclxuICBpZiAoZGF0YVR5cGUgPT09IERhdGFUeXBlLlVuZGVmaW5lZCkge1xyXG4gICAgZHAucmF3VHlwZU5hbWUgPSBjc2RsUHJvcGVydHkudHlwZTtcclxuICB9XHJcbiAgcmV0dXJuIGRwO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwYXJzZUNzZGxDb21wbGV4UHJvcGVydHkocGFyZW50VHlwZTogRW50aXR5VHlwZSB8IENvbXBsZXhUeXBlLCBjc2RsUHJvcGVydHk6IGFueSwgc2NoZW1hOiBhbnkpIHtcclxuXHJcbiAgLy8gQ29tcGxleCBwcm9wZXJ0aWVzIGFyZSBuZXZlciBudWxsYWJsZSAoIHBlciBFRiBzcGVjcylcclxuICAvLyBsZXQgaXNOdWxsYWJsZSA9IGNzZGxQcm9wZXJ0eS5udWxsYWJsZSA9PT0gJ3RydWUnIHx8IGNzZGxQcm9wZXJ0eS5udWxsYWJsZSA9PSBudWxsO1xyXG4gIC8vIGxldCBjb21wbGV4VHlwZU5hbWUgPSBjc2RsUHJvcGVydHkudHlwZS5zcGxpdChcIkVkbS5cIilbMV07XHJcbiAgbGV0IGlzQ29sbGVjdGlvblR5cGUgPSBpc0NvbGxlY3Rpb24oY3NkbFByb3BlcnR5LnR5cGUpO1xyXG4gIGxldCBwcm9wZXJ0eVR5cGUgPSBnZXRDb2xsZWN0aW9uVHlwZShjc2RsUHJvcGVydHkudHlwZSkgfHwgY3NkbFByb3BlcnR5LnR5cGU7XHJcbiAgbGV0IGNvbXBsZXhUeXBlTmFtZSA9IHBhcnNlVHlwZU5hbWVXaXRoU2NoZW1hKHByb3BlcnR5VHlwZSwgc2NoZW1hKS50eXBlTmFtZTtcclxuICAvLyBjYW4ndCBzZXQgdGhlIG5hbWUgdW50aWwgd2UgZ28gdGhydSBuYW1pbmdDb252ZW50aW9ucyBhbmQgdGhlc2UgbmVlZCB0aGUgZHAuXHJcbiAgbGV0IGRwID0gbmV3IERhdGFQcm9wZXJ0eSh7XHJcbiAgICBuYW1lT25TZXJ2ZXI6IGNzZGxQcm9wZXJ0eS5uYW1lLFxyXG4gICAgY29tcGxleFR5cGVOYW1lOiBjb21wbGV4VHlwZU5hbWUsXHJcbiAgICBpc051bGxhYmxlOiBmYWxzZSxcclxuICAgIGlzU2NhbGFyOiAhaXNDb2xsZWN0aW9uVHlwZVxyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gZHA7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBhcnNlQ3NkbE5hdlByb3BlcnR5KGVudGl0eVR5cGU6IEVudGl0eVR5cGUsIGNzZGxQcm9wZXJ0eTogYW55LCBzY2hlbWE6IGFueSwgc2NoZW1hczogYW55W10pIHtcclxuICBsZXQgYXNzb2NpYXRpb24gPSBnZXRBc3NvY2lhdGlvbihjc2RsUHJvcGVydHksIHNjaGVtYSwgc2NoZW1hcyk7XHJcbiAgaWYgKCFhc3NvY2lhdGlvbikge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIHJlc29sdmUgRm9yZWlnbiBLZXkgQXNzb2NpYXRpb246IFwiICsgY3NkbFByb3BlcnR5LnJlbGF0aW9uc2hpcCk7XHJcbiAgfVxyXG4gIGxldCB0b0VuZCA9IGNvcmUuYXJyYXlGaXJzdChhc3NvY2lhdGlvbi5lbmQsIChhc3NvY0VuZCkgPT4ge1xyXG4gICAgcmV0dXJuIGFzc29jRW5kLnJvbGUgPT09IGNzZGxQcm9wZXJ0eS50b1JvbGU7XHJcbiAgfSk7XHJcblxyXG4gIGxldCBpc1NjYWxhciA9IHRvRW5kIS5tdWx0aXBsaWNpdHkgIT09IFwiKlwiO1xyXG4gIGxldCBkYXRhVHlwZSA9IHBhcnNlVHlwZU5hbWVXaXRoU2NoZW1hKHRvRW5kIS50eXBlLCBzY2hlbWEpLnR5cGVOYW1lO1xyXG5cclxuICBsZXQgY29uc3RyYWludCA9IGFzc29jaWF0aW9uLnJlZmVyZW50aWFsQ29uc3RyYWludDtcclxuICBpZiAoIWNvbnN0cmFpbnQpIHtcclxuICAgIC8vIFRPRE86IFJldmlzaXQgdGhpcyBsYXRlciAtIHJpZ2h0IG5vdyB3ZSBqdXN0IGlnbm9yZSBtYW55LW1hbnkgYW5kIGFzc29jcyB3aXRoIG1pc3NpbmcgY29uc3RyYWludHMuXHJcblxyXG4gICAgLy8gVGhpbmsgYWJvdXQgYWRkaW5nIHRoaXMgYmFjayBsYXRlci5cclxuICAgIGlmIChhc3NvY2lhdGlvbi5lbmRbMF0ubXVsdGlwbGljaXR5ID09PSBcIipcIiAmJiBhc3NvY2lhdGlvbi5lbmRbMV0ubXVsdGlwbGljaXR5ID09PSBcIipcIikge1xyXG4gICAgICAvLyBpZ25vcmUgbWFueSB0byBtYW55IHJlbGF0aW9ucyBmb3Igbm93XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIEZvciBub3cgYXNzdW1lIGl0IHdpbGwgYmUgc2V0IGxhdGVyIGRpcmVjdGx5IG9uIHRoZSBjbGllbnQuXHJcbiAgICAgIC8vIG90aGVyIGFsdGVybmF0aXZlIGlzIHRvIHRocm93IGFuIGVycm9yOlxyXG4gICAgICAvLyB0aHJvdyBuZXcgRXJyb3IoXCJGb3JlaWduIEtleSBBc3NvY2lhdGlvbnMgbXVzdCBiZSB0dXJuZWQgb24gZm9yIHRoaXMgbW9kZWxcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGxldCBjZmcgPSB7XHJcbiAgICBuYW1lT25TZXJ2ZXI6IGNzZGxQcm9wZXJ0eS5uYW1lLFxyXG4gICAgZW50aXR5VHlwZU5hbWU6IGRhdGFUeXBlLFxyXG4gICAgaXNTY2FsYXI6IGlzU2NhbGFyLFxyXG4gICAgYXNzb2NpYXRpb25OYW1lOiBhc3NvY2lhdGlvbi5uYW1lLFxyXG4gIH07XHJcblxyXG4gIGlmIChjb25zdHJhaW50KSB7XHJcbiAgICBsZXQgcHJpbmNpcGFsID0gY29uc3RyYWludC5wcmluY2lwYWw7XHJcbiAgICBsZXQgZGVwZW5kZW50ID0gY29uc3RyYWludC5kZXBlbmRlbnQ7XHJcblxyXG4gICAgbGV0IHByb3BSZWZzID0gY29yZS50b0FycmF5KGRlcGVuZGVudC5wcm9wZXJ0eVJlZik7XHJcbiAgICBsZXQgZmtOYW1lcyA9IHByb3BSZWZzLm1hcChjb3JlLnBsdWNrKFwibmFtZVwiKSk7XHJcbiAgICBpZiAoY3NkbFByb3BlcnR5LmZyb21Sb2xlID09PSBwcmluY2lwYWwucm9sZSkge1xyXG4gICAgICAoY2ZnIGFzIGFueSkuaW52Rm9yZWlnbktleU5hbWVzT25TZXJ2ZXIgPSBma05hbWVzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gd2lsbCBiZSB1c2VkIGxhdGVyIGJ5IG5wLl91cGRhdGVcclxuICAgICAgKGNmZyBhcyBhbnkpLmZvcmVpZ25LZXlOYW1lc09uU2VydmVyID0gZmtOYW1lcztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxldCBucCA9IG5ldyBOYXZpZ2F0aW9uUHJvcGVydHkoY2ZnKTtcclxuICBlbnRpdHlUeXBlLl9hZGRQcm9wZXJ0eUNvcmUobnApO1xyXG4gIHJldHVybiBucDtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNDb2xsZWN0aW9uKHByb3BlcnR5VHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgcmV0dXJuIFJYX0NPTExFQ1RJT04udGVzdChwcm9wZXJ0eVR5cGUpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0VudW1UeXBlKGNzZGxQcm9wZXJ0eTogYW55LCBzY2hlbWE6IGFueSkge1xyXG4gIGlmIChzY2hlbWEuZW51bVR5cGUpIHJldHVybiBpc0VkbXhFbnVtVHlwZShjc2RsUHJvcGVydHksIHNjaGVtYSk7XHJcbiAgZWxzZSBpZiAoc2NoZW1hLmV4dGVuc2lvbnMpIHJldHVybiBpc09EYXRhRW51bVR5cGUoY3NkbFByb3BlcnR5LCBzY2hlbWEpO1xyXG4gIGVsc2UgcmV0dXJuIGZhbHNlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0VkbXhFbnVtVHlwZShjc2RsUHJvcGVydHk6IGFueSwgc2NoZW1hOiBhbnkpIHtcclxuICBsZXQgZW51bVR5cGVzID0gY29yZS50b0FycmF5KHNjaGVtYS5lbnVtVHlwZSk7XHJcbiAgbGV0IHByb3BlcnR5VHlwZSA9IGdldENvbGxlY3Rpb25UeXBlKGNzZGxQcm9wZXJ0eS50eXBlKSB8fCBjc2RsUHJvcGVydHkudHlwZTtcclxuICBsZXQgdHlwZVBhcnRzID0gcHJvcGVydHlUeXBlLnNwbGl0KFwiLlwiKTtcclxuICBsZXQgYmFzZVR5cGVOYW1lID0gdHlwZVBhcnRzW3R5cGVQYXJ0cy5sZW5ndGggLSAxXTtcclxuICByZXR1cm4gZW51bVR5cGVzLnNvbWUoZnVuY3Rpb24gKGVudW1UeXBlKSB7XHJcbiAgICByZXR1cm4gZW51bVR5cGUubmFtZSA9PT0gYmFzZVR5cGVOYW1lO1xyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc09EYXRhRW51bVR5cGUoY3NkbFByb3BlcnR5OiBhbnksIHNjaGVtYTogYW55KSB7XHJcbiAgbGV0IGVudW1UeXBlcyA9IHNjaGVtYS5leHRlbnNpb25zLmZpbHRlcigoZXh0OiBhbnkpID0+IHtcclxuICAgIHJldHVybiBleHQubmFtZSA9PT0gXCJFbnVtVHlwZVwiO1xyXG4gIH0pO1xyXG4gIGxldCBwcm9wZXJ0eVR5cGUgPSBnZXRDb2xsZWN0aW9uVHlwZShjc2RsUHJvcGVydHkudHlwZSkgfHwgY3NkbFByb3BlcnR5LnR5cGU7XHJcbiAgbGV0IHR5cGVQYXJ0cyA9IHByb3BlcnR5VHlwZS5zcGxpdChcIi5cIik7XHJcbiAgbGV0IGJhc2VUeXBlTmFtZSA9IHR5cGVQYXJ0c1t0eXBlUGFydHMubGVuZ3RoIC0gMV07XHJcbiAgcmV0dXJuIGVudW1UeXBlcy5zb21lKChlbnVtVHlwZTogYW55KSA9PiB7XHJcbiAgICByZXR1cm4gZW51bVR5cGUuYXR0cmlidXRlcy5zb21lKChhdHRyOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIGF0dHIubmFtZSA9PT0gXCJOYW1lXCIgJiYgYXR0ci52YWx1ZSA9PT0gYmFzZVR5cGVOYW1lO1xyXG4gICAgfSk7XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFkZFZhbGlkYXRvcnMoZGF0YVByb3BlcnR5OiBEYXRhUHJvcGVydHkpIHtcclxuICBsZXQgdHlwZVZhbGlkYXRvcjogVmFsaWRhdG9yO1xyXG4gIGlmICghZGF0YVByb3BlcnR5LmlzTnVsbGFibGUpIHtcclxuICAgIGRhdGFQcm9wZXJ0eS52YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9yLnJlcXVpcmVkKCkpO1xyXG4gIH1cclxuXHJcbiAgaWYgKGRhdGFQcm9wZXJ0eS5pc0NvbXBsZXhQcm9wZXJ0eSkgcmV0dXJuO1xyXG5cclxuICBpZiAoZGF0YVByb3BlcnR5LmRhdGFUeXBlID09PSBEYXRhVHlwZS5TdHJpbmcpIHtcclxuICAgIGlmIChkYXRhUHJvcGVydHkubWF4TGVuZ3RoKSB7XHJcbiAgICAgIGxldCB2YWxpZGF0b3JBcmdzID0geyBtYXhMZW5ndGg6IGRhdGFQcm9wZXJ0eS5tYXhMZW5ndGggfTtcclxuICAgICAgdHlwZVZhbGlkYXRvciA9IFZhbGlkYXRvci5tYXhMZW5ndGgodmFsaWRhdG9yQXJncyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0eXBlVmFsaWRhdG9yID0gVmFsaWRhdG9yLnN0cmluZygpO1xyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICAgIGxldCB2YWxpZGF0b3JDdG9yID0gKGRhdGFQcm9wZXJ0eS5kYXRhVHlwZSBhcyBhbnkpLnZhbGlkYXRvckN0b3I7XHJcbiAgICAgIGlmICghdmFsaWRhdG9yQ3RvcikgcmV0dXJuO1xyXG4gICAgICB0eXBlVmFsaWRhdG9yID0gdmFsaWRhdG9yQ3RvcigpO1xyXG4gIH1cclxuXHJcbiAgZGF0YVByb3BlcnR5LnZhbGlkYXRvcnMucHVzaCh0eXBlVmFsaWRhdG9yKTtcclxuXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzSWRlbnRpdHlQcm9wZXJ0eShjc2RsUHJvcGVydHk6IGFueSkge1xyXG4gIC8vIHNlZSBpZiB3ZWIgYXBpIGZlZWRcclxuICBsZXQgcHJvcE5hbWUgPSBjb3JlLmFycmF5Rmlyc3QoT2JqZWN0LmtleXMoY3NkbFByb3BlcnR5KSwgKHBuKSA9PiB7XHJcbiAgICByZXR1cm4gcG4uaW5kZXhPZihcIlN0b3JlR2VuZXJhdGVkUGF0dGVyblwiKSA+PSAwO1xyXG4gIH0pO1xyXG4gIGlmIChwcm9wTmFtZSkge1xyXG4gICAgcmV0dXJuIChjc2RsUHJvcGVydHlbcHJvcE5hbWVdID09PSBcIklkZW50aXR5XCIpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICAvLyBzZWUgaWYgT2RhdGEgZmVlZFxyXG4gICAgbGV0IGV4dGVuc2lvbnMgPSBjc2RsUHJvcGVydHkuZXh0ZW5zaW9ucztcclxuICAgIGlmICghZXh0ZW5zaW9ucykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBsZXQgaWRlbnRpdHlFeHRuID0gY29yZS5hcnJheUZpcnN0KGV4dGVuc2lvbnMsIChleHRlbnNpb24pID0+IHtcclxuICAgICAgcmV0dXJuIGV4dGVuc2lvbi5uYW1lID09PSBcIlN0b3JlR2VuZXJhdGVkUGF0dGVyblwiICYmIGV4dGVuc2lvbi52YWx1ZSA9PT0gXCJJZGVudGl0eVwiO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gISFpZGVudGl0eUV4dG47XHJcbiAgfVxyXG59XHJcblxyXG4vLyBGYXN0IHZlcnNpb25cclxuLy8gbnA6IHNjaGVtYS5lbnRpdHlUeXBlW10ubmF2aWdhdGlvblByb3BlcnR5LnJlbGF0aW9uc2hpcCAtPiBzY2hlbWEuYXNzb2NpYXRpb25cclxuLy8gICBtYXRjaCggc2hvcnROYW1lKG5wLnJlbGF0aW9uc2hpcCkgPT0gc2NoZW1hLmFzc29jaWF0aW9uW10ubmFtZVxyXG4vLyAgICAgIC0tPiBhc3NvY2lhdGlvbl9fXHJcblxyXG4vLyBDb3JyZWN0IHZlcnNpb25cclxuLy8gbnA6IHNjaGVtYS5lbnRpdHlUeXBlW10ubmF2aWdhdGlvblByb3BlcnR5LnJlbGF0aW9uc2hpcCAtPiBzY2hlbWEuYXNzb2NpYXRpb25cclxuLy8gICBtYXRjaCggbnAucmVsYXRpb25zaGlwID09IHNjaGVtYS5lbnRpdHlDb250YWluZXJbMF0uYXNzb2NpYXRpb25TZXRbXS5hc3NvY2lhdGlvbiApXHJcbi8vICAgICAgLT4gYXNzb2NpYXRpb25TZXQubmFtZVxyXG4vLyAgIG1hdGNoICggYXNzb2NpYXRpb25TZXQubmFtZSA9PSBzY2hlbWEuYXNzb2NpYXRpb25bXS5uYW1lIClcclxuLy8gICAgICAtPiBhc3NvY2lhdGlvblxyXG5cclxuZnVuY3Rpb24gZ2V0QXNzb2NpYXRpb24oY3NkbE5hdlByb3BlcnR5OiBhbnksIGNvbnRhaW5pbmdTY2hlbWE6IGFueSwgc2NoZW1hczogYW55W10pIHtcclxuICBsZXQgYXNzb2NGdWxsTmFtZSA9IHBhcnNlVHlwZU5hbWVXaXRoU2NoZW1hKGNzZGxOYXZQcm9wZXJ0eS5yZWxhdGlvbnNoaXAsIGNvbnRhaW5pbmdTY2hlbWEpO1xyXG4gIGxldCBhc3NvY05hbWVzcGFjZSA9IGFzc29jRnVsbE5hbWUubmFtZXNwYWNlO1xyXG4gIGxldCBhc3NvY1NjaGVtYSA9IGNvcmUuYXJyYXlGaXJzdChzY2hlbWFzLCAoc2NoZW1hKSA9PiB7XHJcbiAgICByZXR1cm4gc2NoZW1hLm5hbWVzcGFjZSA9PT0gYXNzb2NOYW1lc3BhY2U7XHJcbiAgfSk7XHJcbiAgaWYgKCFhc3NvY1NjaGVtYSkgcmV0dXJuIG51bGw7XHJcblxyXG4gIGxldCBhc3NvY05hbWUgPSBhc3NvY0Z1bGxOYW1lLnNob3J0VHlwZU5hbWU7XHJcbiAgbGV0IGFzc29jcyA9IGFzc29jU2NoZW1hLmFzc29jaWF0aW9uO1xyXG4gIGlmICghYXNzb2NzKSByZXR1cm4gbnVsbDtcclxuICBpZiAoIUFycmF5LmlzQXJyYXkoYXNzb2NzKSkge1xyXG4gICAgYXNzb2NzID0gW2Fzc29jc107XHJcbiAgfVxyXG4gIGxldCBhc3NvY2lhdGlvbiA9IGNvcmUuYXJyYXlGaXJzdChhc3NvY3MsIChhc3NvYykgPT4ge1xyXG4gICAgcmV0dXJuIGFzc29jLm5hbWUgPT09IGFzc29jTmFtZTtcclxuICB9KTtcclxuICByZXR1cm4gYXNzb2NpYXRpb24gYXMgSUFzc29jaWF0aW9uO1xyXG59XHJcblxyXG4vLyBzY2hlbWEgaXMgb25seSBuZWVkZWQgZm9yIG5hdlByb3BlcnR5IHR5cGUgbmFtZVxyXG5mdW5jdGlvbiBwYXJzZVR5cGVOYW1lV2l0aFNjaGVtYShlbnRpdHlUeXBlTmFtZTogc3RyaW5nLCBzY2hlbWE6IGFueSkge1xyXG4gIGxldCByZXN1bHQgPSBNZXRhZGF0YVN0b3JlLnBhcnNlVHlwZU5hbWUoZW50aXR5VHlwZU5hbWUpO1xyXG4gIGlmIChzY2hlbWEgJiYgc2NoZW1hLmNTcGFjZU9TcGFjZU1hcHBpbmcpIHtcclxuICAgIGxldCBucyA9IGdldE5hbWVzcGFjZUZvcihyZXN1bHQhLnNob3J0VHlwZU5hbWUsIHNjaGVtYSk7XHJcbiAgICBpZiAobnMpIHtcclxuICAgICAgcmVzdWx0ID0gTWV0YWRhdGFTdG9yZS5tYWtlVHlwZUhhc2gocmVzdWx0IS5zaG9ydFR5cGVOYW1lLCBucyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldENvbGxlY3Rpb25UeXBlKHByb3BlcnR5VHlwZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICBjb25zdCBtYXRjaCA9IHByb3BlcnR5VHlwZS5tYXRjaChSWF9DT0xMRUNUSU9OKTtcclxuICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsxXSA6IG51bGw7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldE5hbWVzcGFjZUZvcihzaG9ydE5hbWU6IHN0cmluZywgc2NoZW1hOiBhbnkpIHtcclxuICBsZXQgbnM6IHN0cmluZztcclxuICBsZXQgbWFwcGluZyA9IHNjaGVtYS5jU3BhY2VPU3BhY2VNYXBwaW5nO1xyXG4gIGlmIChtYXBwaW5nKSB7XHJcbiAgICBsZXQgZnVsbE5hbWUgPSBtYXBwaW5nW3NjaGVtYS5uYW1lc3BhY2UgKyBcIi5cIiArIHNob3J0TmFtZV07XHJcbiAgICBucyA9IGZ1bGxOYW1lICYmIGZ1bGxOYW1lLnN1YnN0cigwLCBmdWxsTmFtZS5sZW5ndGggLSAoc2hvcnROYW1lLmxlbmd0aCArIDEpKTtcclxuICAgIGlmIChucykgcmV0dXJuIG5zO1xyXG4gIH1cclxuICAvLyBpZiBzY2hlbWEgZG9lcyBub3QgYWxzbyBoYXZlIGFuIGVudGl0eVR5cGUgbm9kZSB0aGVuXHJcbiAgLy8gdGhpcyBpcyBhbiBXZWJBcGkyIE9EYXRhIHNjaGVtYSB3aGljaCBpcyB1c3VhbGx5IGVxdWFsIHRvICdEZWZhdWx0Jzsgd2hpY2ggaXMgdXNlbGVzcy5cclxuICBpZiAoc2NoZW1hLmVudGl0eVR5cGUgfHwgc2NoZW1hLm5hbWVzcGFjZSAhPT0gJ0RlZmF1bHQnKSB7XHJcbiAgICByZXR1cm4gc2NoZW1hLm5hbWVzcGFjZTtcclxuICB9XHJcbiAgcmV0dXJuIG51bGw7XHJcbn1cclxuXHJcbi8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG5leHBvcnQgY29uc3QgQ3NkbE1ldGFkYXRhUGFyc2VyID0ge1xyXG4gIHBhcnNlOiBwYXJzZVxyXG59O1xyXG4iXX0=
|
|
@@ -23,7 +23,8 @@ export function defaultPropertyInterceptor(property, newValue, rawAccessorFn) {
|
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
// exit if no change - extra cruft is because dateTimes don't compare cleanly.
|
|
26
|
-
if (newValue === oldValue || (
|
|
26
|
+
if (newValue === oldValue || (newValue === null && oldValue === undefined) ||
|
|
27
|
+
(dataType && dataType.normalize && newValue && oldValue && dataType.normalize(newValue) === dataType.normalize(oldValue))) {
|
|
27
28
|
return;
|
|
28
29
|
}
|
|
29
30
|
// CANNOT DO NEXT LINE because it has the possibility of creating a new property
|
|
@@ -456,4 +457,4 @@ function updateStateAndValidate(context) {
|
|
|
456
457
|
entityAspect._validateProperty(context.newValue, { entity: entityAspect.entity, property: property, propertyName: context.propertyName, oldValue: context.oldValue });
|
|
457
458
|
}
|
|
458
459
|
}
|
|
459
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1wcm9wZXJ0eS1pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2JyZWV6ZS1jbGllbnQvIiwic291cmNlcyI6WyJzcmMvZGVmYXVsdC1wcm9wZXJ0eS1pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBMkMsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3Qyx3QkFBd0I7QUFDeEIsTUFBTSxVQUFVLDBCQUEwQixDQUF5QixRQUF3QixFQUFFLFFBQWEsRUFBRSxhQUF1QjtJQUNqSSwrQ0FBK0M7SUFFL0MsSUFBSSxRQUFRLEtBQUssU0FBUztRQUFFLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxrRUFBa0U7SUFDL0csSUFBSSxRQUFRLEdBQUcsYUFBYSxFQUFFLENBQUM7SUFFL0IsSUFBSSxRQUFRLEdBQUksUUFBZ0IsQ0FBQyxRQUFRLENBQUM7SUFDMUMsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRTtRQUM5Qiw0RkFBNEY7UUFDNUYsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtZQUNqRCxRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUU7Z0JBQ2xDLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUN2QyxDQUFDLENBQUMsQ0FBQztTQUNKO2FB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Q0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0tBQzFIO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvcmUgfSBmcm9tICcuL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wbGV4VHlwZSwgRGF0YVByb3BlcnR5LCBOYXZpZ2F0aW9uUHJvcGVydHksIEVudGl0eVByb3BlcnR5IH0gZnJvbSAnLi9lbnRpdHktbWV0YWRhdGEnO1xyXG5pbXBvcnQgeyBFbnRpdHlLZXkgfSBmcm9tICcuL2VudGl0eS1rZXknO1xyXG5pbXBvcnQgeyBFbnRpdHlBc3BlY3QsIENvbXBsZXhBc3BlY3QsIEVudGl0eSwgU3RydWN0dXJhbE9iamVjdCB9IGZyb20gJy4vZW50aXR5LWFzcGVjdCc7XHJcbmltcG9ydCB7IEVudGl0eVN0YXRlIH0gZnJvbSAnLi9lbnRpdHktc3RhdGUnO1xyXG5pbXBvcnQgeyBFbnRpdHlBY3Rpb24gfSBmcm9tICcuL2VudGl0eS1hY3Rpb24nO1xyXG5pbXBvcnQgeyBFbnRpdHlRdWVyeSB9IGZyb20gJy4vZW50aXR5LXF1ZXJ5JztcclxuXHJcbi8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdFByb3BlcnR5SW50ZXJjZXB0b3IodGhpczogU3RydWN0dXJhbE9iamVjdCwgcHJvcGVydHk6IEVudGl0eVByb3BlcnR5LCBuZXdWYWx1ZTogYW55LCByYXdBY2Nlc3NvckZuOiBGdW5jdGlvbikge1xyXG4gIC8vICd0aGlzJyBpcyB0aGUgZW50aXR5IGl0c2VsZiBpbiB0aGlzIGNvbnRleHQuXHJcblxyXG4gIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSBuZXdWYWx1ZSA9IG51bGw7IC8vIHJlbW92ZT8gdG8gYWxsb3cgYXNzaWdubWVudCB0byB1bmRlZmluZWQgaW4gQmFiZWwgY29uc3RydWN0b3JzP1xyXG4gIGxldCBvbGRWYWx1ZSA9IHJhd0FjY2Vzc29yRm4oKTtcclxuXHJcbiAgbGV0IGRhdGFUeXBlID0gKHByb3BlcnR5IGFzIGFueSkuZGF0YVR5cGU7XHJcbiAgaWYgKGRhdGFUeXBlICYmIGRhdGFUeXBlLnBhcnNlKSB7XHJcbiAgICAvLyBhdHRlbXB0cyB0byBjb2VyY2UgYSB2YWx1ZSB0byB0aGUgY29ycmVjdCB0eXBlIC0gaWYgdGhpcyBmYWlscyByZXR1cm4gdGhlIHZhbHVlIHVuY2hhbmdlZFxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobmV3VmFsdWUpICYmICFwcm9wZXJ0eS5pc1NjYWxhcikge1xyXG4gICAgICBuZXdWYWx1ZSA9IG5ld1ZhbHVlLm1hcChmdW5jdGlvbiAobnYpIHtcclxuICAgICAgICByZXR1cm4gZGF0YVR5cGUucGFyc2UobnYsIHR5cGVvZiBudik7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3VmFsdWUgPSBkYXRhVHlwZS5wYXJzZShuZXdWYWx1ZSwgdHlwZW9mIG5ld1ZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGV4aXQgaWYgbm8gY2hhbmdlIC0gZXh0cmEgY3J1ZnQgaXMgYmVjYXVzZSBkYXRlVGltZXMgZG9uJ3QgY29tcGFyZSBjbGVhbmx5LlxyXG4gIGlmIChuZXdWYWx1ZSA9PT0gb2xkVmFsdWUgfHwgKGRhdGFUeXBlICYmIGRhdGFUeXBlLm5vcm1hbGl6ZSAmJiBuZXdWYWx1ZSAmJiBvbGRWYWx1ZSAmJiBkYXRhVHlwZS5ub3JtYWxpemUobmV3VmFsdWUpID09PSBkYXRhVHlwZS5ub3JtYWxpemUob2xkVmFsdWUpKSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgLy8gQ0FOTk9UIERPIE5FWFQgTElORSBiZWNhdXNlIGl0IGhhcyB0aGUgcG9zc2liaWxpdHkgb2YgY3JlYXRpbmcgYSBuZXcgcHJvcGVydHlcclxuICAvLyAnZW50aXR5QXNwZWN0JyBvbiAndGhpcycuICAtIE5vdCBwZXJtaXR0ZWQgYnkgSUUgaW5zaWRlIG9mIGEgZGVmaW5lZCBwcm9wZXJ0eSBvbiBhIHByb3RvdHlwZS5cclxuICAvLyBsZXQgZW50aXR5QXNwZWN0ID0gbmV3IEVudGl0eUFzcGVjdCh0aGlzKTtcclxuXHJcbiAgbGV0IHByb3BlcnR5TmFtZTogc3RyaW5nO1xyXG4gIGxldCBlbnRpdHlBc3BlY3QgPSAodGhpcyBhcyBhbnkpLmVudGl0eUFzcGVjdCBhcyBFbnRpdHlBc3BlY3Q7XHJcbiAgaWYgKGVudGl0eUFzcGVjdCkge1xyXG4gICAgcHJvcGVydHlOYW1lID0gcHJvcGVydHkubmFtZTtcclxuICB9IGVsc2Uge1xyXG4gICAgbGV0IGxvY2FsQXNwZWN0ID0gKHRoaXMgYXMgYW55KS5jb21wbGV4QXNwZWN0IGFzIENvbXBsZXhBc3BlY3Q7XHJcbiAgICBpZiAobG9jYWxBc3BlY3QpIHtcclxuICAgICAgZW50aXR5QXNwZWN0ID0gbG9jYWxBc3BlY3QuZ2V0RW50aXR5QXNwZWN0KCk7XHJcbiAgICAgIHByb3BlcnR5TmFtZSA9IGxvY2FsQXNwZWN0LmdldFByb3BlcnR5UGF0aChwcm9wZXJ0eS5uYW1lKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIGRvZXMgbm90IHlldCBoYXZlIGFuIEVudGl0eUFzcGVjdCBzbyBqdXN0IHNldCB0aGUgcHJvcFxyXG4gICAgICByYXdBY2Nlc3NvckZuKG5ld1ZhbHVlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTm90ZSB0aGF0IHdlIG5lZWQgdG8gaGFuZGxlIG11bHRpcGxlIHByb3BlcnRpZXMgaW4gcHJvY2Vzcywgbm90IGp1c3Qgb25lIGluIG9yZGVyIHRvIGF2b2lkIHJlY3Vyc2lvbi5cclxuICAvLyAoIGV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBudWxsIHByb3BhZ2F0aW9uIHdpdGggZmtzIHdoZXJlIG51bGwgLT4gMCBpbiBzb21lIGNhc2VzLilcclxuICAvLyAodGhpcyBtYXkgbm90IGJlIG5lZWRlZCBiZWNhdXNlIG9mIHRoZSBuZXdWYWx1ZSA9PT0gb2xkVmFsdWUgdGVzdCBhYm92ZSlcclxuICBsZXQgaW5Qcm9jZXNzID0gZW50aXR5QXNwZWN0Ll9pblByb2Nlc3MgPSBlbnRpdHlBc3BlY3QuX2luUHJvY2VzcyB8fCBbXTtcclxuICAvLyBjaGVjayBmb3IgcmVjdXJzaW9uXHJcbiAgaWYgKGluUHJvY2Vzcy5pbmRleE9mKHByb3BlcnR5KSA+PSAwKSByZXR1cm47XHJcbiAgaW5Qcm9jZXNzLnB1c2gocHJvcGVydHkpO1xyXG5cclxuICB0cnkge1xyXG5cclxuICAgIGxldCBjb250ZXh0OiBJQ29udGV4dCA9IHtcclxuICAgICAgcGFyZW50OiB0aGlzLFxyXG4gICAgICBwcm9wZXJ0eTogcHJvcGVydHksXHJcbiAgICAgIG5ld1ZhbHVlOiBuZXdWYWx1ZSxcclxuICAgICAgb2xkVmFsdWU6IG9sZFZhbHVlLFxyXG4gICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcclxuICAgICAgZW50aXR5QXNwZWN0OiBlbnRpdHlBc3BlY3RcclxuICAgIH07XHJcblxyXG4gICAgaWYgKChwcm9wZXJ0eSBhcyBhbnkpLmlzQ29tcGxleFByb3BlcnR5KSB7XHJcbiAgICAgIHNldERwVmFsdWVDb21wbGV4KGNvbnRleHQsIHJhd0FjY2Vzc29yRm4pO1xyXG4gICAgfSBlbHNlIGlmIChwcm9wZXJ0eS5pc0RhdGFQcm9wZXJ0eSkge1xyXG4gICAgICBzZXREcFZhbHVlU2ltcGxlKGNvbnRleHQsIHJhd0FjY2Vzc29yRm4pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2V0TnBWYWx1ZShjb250ZXh0LCByYXdBY2Nlc3NvckZuKTtcclxuICAgIH1cclxuXHJcbiAgICBwb3N0Q2hhbmdlRXZlbnRzKGNvbnRleHQpO1xyXG5cclxuICB9IGZpbmFsbHkge1xyXG4gICAgaW5Qcm9jZXNzLnBvcCgpO1xyXG4gIH1cclxufVxyXG5cclxuaW50ZXJmYWNlIElDb250ZXh0IHtcclxuICBwYXJlbnQ6IFN0cnVjdHVyYWxPYmplY3Q7XHJcbiAgcHJvcGVydHk6IEVudGl0eVByb3BlcnR5O1xyXG4gIHByb3BlcnR5TmFtZTogc3RyaW5nO1xyXG4gIGVudGl0eUFzcGVjdDogRW50aXR5QXNwZWN0O1xyXG4gIG9sZFZhbHVlOiBhbnk7XHJcbiAgbmV3VmFsdWU6IGFueTtcclxufVxyXG5cclxuZnVuY3Rpb24gc2V0RHBWYWx1ZVNpbXBsZShjb250ZXh0OiBJQ29udGV4dCwgcmF3QWNjZXNzb3JGbjogYW55KSB7XHJcbiAgbGV0IHBhcmVudCA9IGNvbnRleHQucGFyZW50O1xyXG4gIGxldCBwcm9wZXJ0eSA9IGNvbnRleHQucHJvcGVydHkgYXMgRGF0YVByb3BlcnR5O1xyXG4gIGxldCBlbnRpdHlBc3BlY3QgPSBjb250ZXh0LmVudGl0eUFzcGVjdDtcclxuICBsZXQgb2xkVmFsdWUgPSBjb250ZXh0Lm9sZFZhbHVlO1xyXG4gIGxldCBuZXdWYWx1ZSA9IGNvbnRleHQubmV3VmFsdWU7XHJcblxyXG4gIGxldCBlbnRpdHlNYW5hZ2VyID0gZW50aXR5QXNwZWN0LmVudGl0eU1hbmFnZXI7XHJcblxyXG4gIGlmICghcHJvcGVydHkuaXNTY2FsYXIpIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihcIk5vbnNjYWxhciBkYXRhIHByb3BlcnRpZXMgYXJlIHJlYWRvbmx5IC0gaXRlbXMgbWF5IGJlIGFkZGVkIG9yIHJlbW92ZWQgYnV0IHRoZSBjb2xsZWN0aW9uIG1heSBub3QgYmUgY2hhbmdlZC5cIik7XHJcbiAgfVxyXG5cclxuICAvLyBzdG9yZSBhbiBvcmlnaW5hbCB2YWx1ZSBmb3IgdGhpcyBwcm9wZXJ0eSBpZiBub3QgYWxyZWFkeSBzZXRcclxuICBpZiAoZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlLmlzVW5jaGFuZ2VkT3JNb2RpZmllZCgpKSB7XHJcbiAgICBsZXQgcHJvcE5hbWUgPSBwcm9wZXJ0eS5uYW1lO1xyXG4gICAgLy8gbG9jYWxBc3BlY3QgaXMgbm90IHRoZSBzYW1lIGFzIGVudGl0eUFzcGVjdCBmb3IgY29tcGxleCBwcm9wc1xyXG4gICAgbGV0IGxvY2FsQXNwZWN0ID0gRW50aXR5QXNwZWN0LmlzRW50aXR5KHBhcmVudCkgPyBwYXJlbnQuZW50aXR5QXNwZWN0IDogcGFyZW50LmNvbXBsZXhBc3BlY3Q7XHJcbiAgICBpZiAobG9jYWxBc3BlY3Qub3JpZ2luYWxWYWx1ZXNbcHJvcE5hbWVdID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgLy8gb3RoZXJ3aXNlIHRoaXMgZW50cnkgd2lsbCBiZSBza2lwcGVkIGR1cmluZyBzZXJpYWxpemF0aW9uXHJcbiAgICAgIGxvY2FsQXNwZWN0Lm9yaWdpbmFsVmFsdWVzW3Byb3BOYW1lXSA9IG9sZFZhbHVlICE9PSB1bmRlZmluZWQgPyBvbGRWYWx1ZSA6IHByb3BlcnR5LmRlZmF1bHRWYWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGlmIHdlIGFyZSBjaGFuZ2luZyB0aGUga2V5IHVwZGF0ZSBvdXIgaW50ZXJuYWwgZW50aXR5R3JvdXAgaW5kZXhlcy5cclxuICBpZiAocHJvcGVydHkuaXNQYXJ0T2ZLZXkgJiYgZW50aXR5TWFuYWdlciAmJiAhZW50aXR5TWFuYWdlci5pc0xvYWRpbmcpIHtcclxuICAgIC8vICdlbnRpdHlUeXBlJyBvbiB0aGUgbmV4dCBsaW5lIGJlIG51bGwgZm9yIGNvbXBsZXggcHJvcGVydGllcyBidXQgaXQgd2lsbCBvbmx5IGJlIHJlZidkIHdpdGhpbiB0aGlzXHJcbiAgICAvLyBmbiB3aGVuIHRoZSBwcm9wZXJ0eSBpcyBwYXJ0IG9mIHRoZSBrZXlcclxuICAgIGxldCBlbnRpdHlUeXBlID0gKHBhcmVudCBhcyBFbnRpdHkpLmVudGl0eVR5cGU7XHJcbiAgICBsZXQga2V5UHJvcHMgPSBlbnRpdHlUeXBlLmtleVByb3BlcnRpZXM7XHJcbiAgICBsZXQgdmFsdWVzID0ga2V5UHJvcHMubWFwKGZ1bmN0aW9uIChwKSB7XHJcbiAgICAgIGlmIChwID09PSBwcm9wZXJ0eSkge1xyXG4gICAgICAgIHJldHVybiBuZXdWYWx1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gcGFyZW50LmdldFByb3BlcnR5KHAubmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgbGV0IG5ld0tleSA9IG5ldyBFbnRpdHlLZXkoZW50aXR5VHlwZSwgdmFsdWVzKTtcclxuICAgIGlmIChlbnRpdHlNYW5hZ2VyLmdldEVudGl0eUJ5S2V5KG5ld0tleSkpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQW4gZW50aXR5IHdpdGggdGhpcyBrZXkgaXMgYWxyZWFkeSBpbiB0aGUgY2FjaGU6IFwiICsgbmV3S2V5LnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG4gICAgbGV0IG9sZEtleSA9IChwYXJlbnQgYXMgRW50aXR5KS5lbnRpdHlBc3BlY3QuZ2V0S2V5KCk7XHJcbiAgICBsZXQgZWcgPSBlbnRpdHlNYW5hZ2VyLl9maW5kRW50aXR5R3JvdXAoZW50aXR5VHlwZSk7XHJcbiAgICBlZy5fcmVwbGFjZUtleShvbGRLZXksIG5ld0tleSk7XHJcbiAgfVxyXG5cclxuICAvLyBwcm9jZXNzIHJlbGF0ZWQgdXBkYXRlcyAoIHRoZSBpbnZlcnNlIHJlbGF0aW9uc2hpcCkgZmlyc3Qgc28gdGhhdCBjb2xsZWN0aW9uIGR1cHMgY2hlY2sgd29ya3MgcHJvcGVybHkuXHJcbiAgLy8gdXBkYXRlIGludmVyc2UgcmVsYXRpb25zaGlwXHJcblxyXG4gIGxldCByZWxhdGVkTmF2UHJvcCA9IHByb3BlcnR5LnJlbGF0ZWROYXZpZ2F0aW9uUHJvcGVydHk7XHJcbiAgaWYgKHJlbGF0ZWROYXZQcm9wICYmIGVudGl0eU1hbmFnZXIpIHtcclxuICAgIC8vIEV4YW1wbGU6IGJpZGlyZWN0aW9uYWwgZmtEYXRhUHJvcGVydHk6IDEtPm46IG9yZGVyIC0+IG9yZGVyRGV0YWlsc1xyXG4gICAgLy8gb3JkZXJEZXRhaWwub3JkZXJJZCA8LSBuZXdPcmRlcklkIHx8IG51bGxcclxuICAgIC8vICAgID09PiBvcmRlckRldGFpbC5vcmRlciA9IGxvb2t1cE9yZGVyKG5ld09yZGVySWQpXHJcbiAgICAvLyAgICA9PT4gKHNlZSBzZXQgbmF2UHJvcCBhYm92ZSlcclxuICAgIC8vICAgICAgIGFuZFxyXG4gICAgLy8gRXhhbXBsZTogYmlkaXJlY3Rpb25hbCBma0RhdGFQcm9wZXJ0eTogMS0+MTogb3JkZXIgLT4gaW50ZXJuYXRpb25hbE9yZGVyXHJcbiAgICAvLyBpbnRlcm5hdGlvbmFsT3JkZXIub3JkZXJJZCA8LSBuZXdPcmRlcklkIHx8IG51bGxcclxuICAgIC8vICAgID09PiBpbnRlcm5hdGlvbmFsT3JkZXIub3JkZXIgPSBsb29rdXBPcmRlcihuZXdPcmRlcklkKVxyXG4gICAgLy8gICAgPT0+IChzZWUgc2V0IG5hdlByb3AgYWJvdmUpXHJcblxyXG4gICAgaWYgKG5ld1ZhbHVlICE9IG51bGwpIHtcclxuICAgICAgbGV0IHJlbGF0ZWRFbnRpdHk6IEVudGl0eTtcclxuICAgICAgbGV0IGtleTogRW50aXR5S2V5O1xyXG4gICAgICBpZiAocmVsYXRlZE5hdlByb3AuaW52Rm9yZWlnbktleU5hbWVzLmxlbmd0aCkge1xyXG4gICAgICAgIC8vIHByb3BlcnR5IGlzIHJlbGF0ZWQgYnkgZmllbGQgd2hpY2ggaXMgbm90IHRoZSBQS1xyXG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gbmV3IEVudGl0eVF1ZXJ5KHJlbGF0ZWROYXZQcm9wLmVudGl0eVR5cGUuZGVmYXVsdFJlc291cmNlTmFtZSkud2hlcmUocmVsYXRlZE5hdlByb3AuaW52Rm9yZWlnbktleU5hbWVzWzBdLCAnZXEnLCBuZXdWYWx1ZSk7XHJcbiAgICAgICAgY29uc3QgcXJlc3VsdCA9IGVudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5TG9jYWxseShxdWVyeSk7XHJcbiAgICAgICAgaWYgKHFyZXN1bHQubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICByZWxhdGVkRW50aXR5ID0gcXJlc3VsdFswXTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gcHJvcGVydHkgaXMgcmVsYXRlZCBieSB0aGUgUEtcclxuICAgICAgICBrZXkgPSBuZXcgRW50aXR5S2V5KHJlbGF0ZWROYXZQcm9wLmVudGl0eVR5cGUsIFtuZXdWYWx1ZV0pO1xyXG4gICAgICAgIHJlbGF0ZWRFbnRpdHkgPSBlbnRpdHlNYW5hZ2VyLmdldEVudGl0eUJ5S2V5KGtleSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChyZWxhdGVkRW50aXR5KSB7XHJcbiAgICAgICAgcGFyZW50LnNldFByb3BlcnR5KHJlbGF0ZWROYXZQcm9wLm5hbWUsIHJlbGF0ZWRFbnRpdHkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGl0IG1heSBub3QgaGF2ZSBiZWVuIGZldGNoZWQgeWV0IGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBhZGQgaXQgYXMgYW4gdW5hdHRhY2hlZENoaWxkLlxyXG4gICAgICAgIGlmIChrZXkpIHtcclxuICAgICAgICAgIC8vIFRPRE8gY3VycmVudGx5IF9saW5rUmVsYXRlZGVudGl0aWVzIG9ubHkgd29ya3Mgd2l0aCBQSyByZWxhdGlvbnMsIHNvIHdlIG9ubHkgYWRkIHRob3NlLlxyXG4gICAgICAgICAgZW50aXR5TWFuYWdlci5fdW5hdHRhY2hlZENoaWxkcmVuTWFwLmFkZENoaWxkKGtleSwgcmVsYXRlZE5hdlByb3AsIHBhcmVudCBhcyBFbnRpdHkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwYXJlbnQuc2V0UHJvcGVydHkocmVsYXRlZE5hdlByb3AubmFtZSwgbnVsbCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHBhcmVudC5zZXRQcm9wZXJ0eShyZWxhdGVkTmF2UHJvcC5uYW1lLCBudWxsKTtcclxuICAgIH1cclxuICB9IGVsc2UgaWYgKHByb3BlcnR5LmludmVyc2VOYXZpZ2F0aW9uUHJvcGVydHkgJiYgZW50aXR5TWFuYWdlciAmJiAhZW50aXR5TWFuYWdlci5faW5LZXlGaXh1cCkge1xyXG4gICAgLy8gRXhhbXBsZTogdW5pZGlyZWN0aW9uYWwgZmtEYXRhUHJvcGVydHk6IDEtPm46IHJlZ2lvbiAtPiB0ZXJyaXRvcmllc1xyXG4gICAgLy8gdGVycml0b3J5LnJlZ2lvbklkIDwtIG5ld1JlZ2lvbklkXHJcbiAgICAvLyAgICA9PT4gbG9va3VwUmVnaW9uKG5ld1JlZ2lvbklkKS50ZXJyaXRvcmllcy5wdXNoKHRlcnJpdG9yeSlcclxuICAgIC8vICAgICAgICAgICAgICAgIGFuZFxyXG4gICAgLy8gRXhhbXBsZTogdW5pZGlyZWN0aW9uYWwgZmtEYXRhUHJvcGVydHk6IDEtPjE6IG9yZGVyIC0+IGludGVybmF0aW9uYWxPcmRlclxyXG4gICAgLy8gaW50ZXJuYXRpb25hbE9yZGVyLm9yZGVySWQgPC0gbmV3T3JkZXJJZFxyXG4gICAgLy8gICAgPT0+IGxvb2t1cE9yZGVyKG5ld09yZGVySWQpLmludGVybmF0aW9uYWxPcmRlciA9IGludGVybmF0aW9uYWxPcmRlclxyXG4gICAgLy8gICAgICAgICAgICAgICAgYW5kXHJcbiAgICAvLyBFeGFtcGxlOiB1bmlkaXJlY3Rpb25hbCBma0RhdGFQcm9wZXJ0eTogMS0+bjogcmVnaW9uIC0+IHRlcnJpdG9yaWVzXHJcbiAgICAvLyB0ZXJyaXRvcnkucmVnaW9uSWQgPC0gbnVsbFxyXG4gICAgLy8gICAgPT0+IGxvb2t1cFJlZ2lvbih0ZXJyaXRvcnkub2xkUmVnaW9uSWQpLnRlcnJpdG9yaWVzLnJlbW92ZShvbGRUZXJyaXRvcnkpO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgYW5kXHJcbiAgICAvLyBFeGFtcGxlOiB1bmlkaXJlY3Rpb25hbCBma0RhdGFQcm9wZXJ0eTogMS0+MTogb3JkZXIgLT4gaW50ZXJuYXRpb25hbE9yZGVyXHJcbiAgICAvLyBpbnRlcm5hdGlvbmFsT3JkZXIub3JkZXJJZCA8LSBudWxsXHJcbiAgICAvLyAgICA9PT4gbG9va3VwT3JkZXIoaW50ZXJuYXRpb25hbE9yZGVyLm9sZE9yZGVySWQpLmludGVybmF0aW9uYWxPcmRlciA9IG51bGw7XHJcblxyXG4gICAgbGV0IGludk5hdlByb3AgPSBwcm9wZXJ0eS5pbnZlcnNlTmF2aWdhdGlvblByb3BlcnR5O1xyXG5cclxuICAgIGlmIChvbGRWYWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgIGxldCBrZXkgPSBuZXcgRW50aXR5S2V5KGludk5hdlByb3AucGFyZW50VHlwZSwgW29sZFZhbHVlXSk7XHJcbiAgICAgIGxldCByZWxhdGVkRW50aXR5ID0gZW50aXR5TWFuYWdlci5nZXRFbnRpdHlCeUtleShrZXkpO1xyXG4gICAgICBpZiAocmVsYXRlZEVudGl0eSkge1xyXG4gICAgICAgIGlmIChpbnZOYXZQcm9wLmlzU2NhbGFyKSB7XHJcbiAgICAgICAgICByZWxhdGVkRW50aXR5LnNldFByb3BlcnR5KGludk5hdlByb3AubmFtZSwgbnVsbCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIHJlbW92ZSAndGhpcycgZnJvbSBvbGQgcmVsYXRlZCBuYXYgcHJvcFxyXG4gICAgICAgICAgbGV0IHJlbGF0ZWRBcnJheSA9IHJlbGF0ZWRFbnRpdHkuZ2V0UHJvcGVydHkoaW52TmF2UHJvcC5uYW1lKTtcclxuICAgICAgICAgIC8vIGFyci5zcGxpY2UoYXJyLmluZGV4T2YodmFsdWVfdG9fcmVtb3ZlKSwgMSk7XHJcbiAgICAgICAgICByZWxhdGVkQXJyYXkuc3BsaWNlKHJlbGF0ZWRBcnJheS5pbmRleE9mKHBhcmVudCksIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChuZXdWYWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgIGxldCBrZXkgPSBuZXcgRW50aXR5S2V5KGludk5hdlByb3AucGFyZW50VHlwZSwgW25ld1ZhbHVlXSk7XHJcbiAgICAgIGxldCByZWxhdGVkRW50aXR5ID0gZW50aXR5TWFuYWdlci5nZXRFbnRpdHlCeUtleShrZXkpO1xyXG5cclxuICAgICAgaWYgKHJlbGF0ZWRFbnRpdHkpIHtcclxuICAgICAgICBpZiAoaW52TmF2UHJvcC5pc1NjYWxhcikge1xyXG4gICAgICAgICAgcmVsYXRlZEVudGl0eS5zZXRQcm9wZXJ0eShpbnZOYXZQcm9wLm5hbWUsIHBhcmVudCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlbGF0ZWRFbnRpdHkuZ2V0UHJvcGVydHkoaW52TmF2UHJvcC5uYW1lKS5wdXNoKHBhcmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGl0IG1heSBub3QgaGF2ZSBiZWVuIGZldGNoZWQgeWV0IGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBhZGQgaXQgYXMgYW4gdW5hdHRhY2hlZENoaWxkLlxyXG4gICAgICAgIGVudGl0eU1hbmFnZXIuX3VuYXR0YWNoZWRDaGlsZHJlbk1hcC5hZGRDaGlsZChrZXksIGludk5hdlByb3AsIHBhcmVudCBhcyBFbnRpdHkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcmF3QWNjZXNzb3JGbihuZXdWYWx1ZSk7XHJcblxyXG4gIHVwZGF0ZVN0YXRlQW5kVmFsaWRhdGUoY29udGV4dCk7XHJcblxyXG4gIC8vIGlmIChwcm9wZXJ0eS5pc1BhcnRPZktleSAmJiAoIXRoaXMuY29tcGxleEFzcGVjdCkpIHtcclxuICBpZiAocHJvcGVydHkuaXNQYXJ0T2ZLZXkpIHtcclxuICAgIC8vIHByb3BvZ2F0ZSBwayBjaGFuZ2UgdG8gYWxsIHJlbGF0ZWQgZW50aXRpZXM7XHJcbiAgICBsZXQgZW50aXR5VHlwZSA9IChwYXJlbnQgYXMgRW50aXR5KS5lbnRpdHlUeXBlO1xyXG4gICAgbGV0IHByb3BlcnR5SXggPSBlbnRpdHlUeXBlLmtleVByb3BlcnRpZXMuaW5kZXhPZihwcm9wZXJ0eSk7XHJcbiAgICAvLyB0aGlzIHBhcnQgaGFuZGxlcyBvcmRlci5vcmRlcklkID0+IG9yZGVyRGV0YWlsLm9yZGVySWRcclxuICAgIC8vIGJ1dCB3b24ndCBoYW5kbGUgcHJvZHVjdC5wcm9kdWN0SWQgPT4gb3JkZXJEZXRhaWwucHJvZHVjdElkIGJlY2F1c2UgcHJvZHVjdFxyXG4gICAgLy8gZG9lc24ndCBoYXZlIGFuIG9yZGVyRGV0YWlscyBwcm9wZXJ0eS5cclxuICAgIGVudGl0eVR5cGUubmF2aWdhdGlvblByb3BlcnRpZXMuZm9yRWFjaChmdW5jdGlvbiAobnApIHtcclxuICAgICAgbGV0IGludmVyc2VOcCA9IG5wLmludmVyc2U7XHJcbiAgICAgIGxldCBma05hbWVzID0gaW52ZXJzZU5wID8gaW52ZXJzZU5wLmZvcmVpZ25LZXlOYW1lcyA6IG5wLmludkZvcmVpZ25LZXlOYW1lcztcclxuXHJcbiAgICAgIGlmIChma05hbWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgICBsZXQgbnBWYWx1ZSA9IHBhcmVudC5nZXRQcm9wZXJ0eShucC5uYW1lKTtcclxuICAgICAgaWYgKCFucFZhbHVlKSByZXR1cm47XHJcbiAgICAgIGxldCBma05hbWUgPSBma05hbWVzW3Byb3BlcnR5SXhdO1xyXG4gICAgICBpZiAobnAuaXNTY2FsYXIpIHtcclxuICAgICAgICBucFZhbHVlLnNldFByb3BlcnR5KGZrTmFtZSwgbmV3VmFsdWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5wVmFsdWUuc2xpY2UoMCkuZm9yRWFjaChmdW5jdGlvbiAoaXY6IGFueSkge1xyXG4gICAgICAgICAgaXYuc2V0UHJvcGVydHkoZmtOYW1lLCBuZXdWYWx1ZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gdGhpcyBoYW5kbGVzIHVuaWRpcmVjdGlvbmFsIHByb2JsZW1zIG5vdCBjb3ZlcmVkIGFib3ZlLlxyXG4gICAgaWYgKGVudGl0eU1hbmFnZXIpIHtcclxuICAgICAgbGV0IGludmVyc2VGb3JlaWduS2V5UHJvcGVydGllcyA9IGVudGl0eVR5cGUuaW52ZXJzZUZvcmVpZ25LZXlQcm9wZXJ0aWVzO1xyXG4gICAgICBsZXQgYmFzZUVudGl0eVR5cGUgPSBlbnRpdHlUeXBlLmJhc2VFbnRpdHlUeXBlO1xyXG4gICAgICB3aGlsZSAoYmFzZUVudGl0eVR5cGUpIHtcclxuICAgICAgICBpbnZlcnNlRm9yZWlnbktleVByb3BlcnRpZXMgPSBpbnZlcnNlRm9yZWlnbktleVByb3BlcnRpZXMuY29uY2F0KGJhc2VFbnRpdHlUeXBlLmludmVyc2VGb3JlaWduS2V5UHJvcGVydGllcyk7XHJcbiAgICAgICAgYmFzZUVudGl0eVR5cGUgPSBiYXNlRW50aXR5VHlwZS5iYXNlRW50aXR5VHlwZTtcclxuICAgICAgfVxyXG4gICAgICBpbnZlcnNlRm9yZWlnbktleVByb3BlcnRpZXMuZm9yRWFjaCgoaW52RmtQcm9wKSA9PiB7XHJcbiAgICAgICAgaWYgKGludkZrUHJvcC5yZWxhdGVkTmF2aWdhdGlvblByb3BlcnR5IS5pbnZlcnNlID09IG51bGwpIHtcclxuICAgICAgICAgIC8vIHRoaXMgbmV4dCBzdGVwIG1heSBiZSBzbG93IC0gaXQgaXRlcmF0ZXMgb3ZlciBhbGwgb2YgdGhlIGVudGl0aWVzIGluIGEgZ3JvdXA7XHJcbiAgICAgICAgICAvLyBob3BlZnVsbHkgaXQgZG9lc24ndCBoYXBwZW4gb2Z0ZW4uXHJcbiAgICAgICAgICBlbnRpdHlNYW5hZ2VyIS5fdXBkYXRlRmtWYWwoaW52RmtQcm9wLCBvbGRWYWx1ZSwgbmV3VmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gaW5zdXJlIHRoYXQgY2FjaGVkIGtleSBpcyB1cGRhdGVkLlxyXG4gICAgZW50aXR5QXNwZWN0LmdldEtleSh0cnVlKTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNldERwVmFsdWVDb21wbGV4KGNvbnRleHQ6IElDb250ZXh0LCByYXdBY2Nlc3NvckZuOiBGdW5jdGlvbikge1xyXG4gIGxldCBwcm9wZXJ0eSA9IGNvbnRleHQucHJvcGVydHkgYXMgRGF0YVByb3BlcnR5O1xyXG4gIGxldCBvbGRWYWx1ZSA9IGNvbnRleHQub2xkVmFsdWU7XHJcbiAgbGV0IG5ld1ZhbHVlID0gY29udGV4dC5uZXdWYWx1ZTtcclxuXHJcbiAgLy8gVG8gZ2V0IGhlcmUgaXQgbXVzdCBiZSBhIENvbXBsZXhQcm9wZXJ0eVxyXG4gIC8vICdkYXRhVHlwZScgd2lsbCBiZSBhIGNvbXBsZXhUeXBlXHJcbiAgbGV0IGRhdGFUeXBlID0gcHJvcGVydHkuZGF0YVR5cGUgYXMgQ29tcGxleFR5cGU7XHJcbiAgaWYgKHByb3BlcnR5LmlzU2NhbGFyKSB7XHJcbiAgICBpZiAoIW5ld1ZhbHVlKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihjb3JlLmZvcm1hdFN0cmluZyhcIllvdSBjYW5ub3Qgc2V0IHRoZSAnJTEnIHByb3BlcnR5IHRvIG51bGwgYmVjYXVzZSBpdCdzIGRhdGF0eXBlIGlzIHRoZSBDb21wbGV4VHlwZTogJyUyJ1wiLCBwcm9wZXJ0eS5uYW1lLCBwcm9wZXJ0eS5kYXRhVHlwZS5uYW1lKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFvbGRWYWx1ZSkge1xyXG4gICAgICBsZXQgY3RvciA9IGRhdGFUeXBlLmdldEN0b3IoKTtcclxuICAgICAgb2xkVmFsdWUgPSBuZXcgY3RvcigpO1xyXG4gICAgICByYXdBY2Nlc3NvckZuKG9sZFZhbHVlKTtcclxuICAgIH1cclxuICAgIGRhdGFUeXBlLmRhdGFQcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24gKGRwKSB7XHJcbiAgICAgIGxldCBwbiA9IGRwLm5hbWU7XHJcbiAgICAgIGxldCBudiA9IG5ld1ZhbHVlLmdldFByb3BlcnR5KHBuKTtcclxuICAgICAgb2xkVmFsdWUuc2V0UHJvcGVydHkocG4sIG52KTtcclxuICAgIH0pO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoY29yZS5mb3JtYXRTdHJpbmcoXCJZb3UgY2Fubm90IHNldCB0aGUgbm9uLXNjYWxhciBjb21wbGV4IHByb3BlcnR5OiAnJTEnIG9uIHRoZSB0eXBlOiAnJTInLlwiICtcclxuICAgICAgICAgICAgXCJJbnN0ZWFkIGdldCB0aGUgcHJvcGVydHkgYW5kIHVzZSBhcnJheSBmdW5jdGlvbnMgbGlrZSAncHVzaCcgb3IgJ3NwbGljZScgdG8gY2hhbmdlIGl0cyBjb250ZW50cy5cIixcclxuICAgICAgICBwcm9wZXJ0eS5uYW1lLCBwcm9wZXJ0eS5wYXJlbnRUeXBlLm5hbWUpKTtcclxuICB9XHJcbn1cclxuXHJcblxyXG5mdW5jdGlvbiBzZXROcFZhbHVlKGNvbnRleHQ6IElDb250ZXh0LCByYXdBY2Nlc3NvckZuOiBGdW5jdGlvbikge1xyXG5cclxuICBsZXQgcGFyZW50ID0gY29udGV4dC5wYXJlbnQgYXMgRW50aXR5O1xyXG4gIGxldCBwcm9wZXJ0eSA9IGNvbnRleHQucHJvcGVydHkgYXMgTmF2aWdhdGlvblByb3BlcnR5O1xyXG4gIGxldCBlbnRpdHlBc3BlY3QgPSBjb250ZXh0LmVudGl0eUFzcGVjdDtcclxuICBsZXQgb2xkVmFsdWUgPSBjb250ZXh0Lm9sZFZhbHVlO1xyXG4gIGxldCBuZXdWYWx1ZSA9IGNvbnRleHQubmV3VmFsdWU7XHJcblxyXG4gIGlmICghcHJvcGVydHkuaXNTY2FsYXIpIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihcIk5vbnNjYWxhciBuYXZpZ2F0aW9uIHByb3BlcnRpZXMgYXJlIHJlYWRvbmx5IC0gZW50aXRpZXMgY2FuIGJlIGFkZGVkIG9yIHJlbW92ZWQgYnV0IHRoZSBjb2xsZWN0aW9uIG1heSBub3QgYmUgY2hhbmdlZC5cIik7XHJcbiAgfVxyXG5cclxuICBsZXQgZW50aXR5TWFuYWdlciA9IGVudGl0eUFzcGVjdC5lbnRpdHlNYW5hZ2VyO1xyXG4gIGxldCBpbnZlcnNlUHJvcCA9IHByb3BlcnR5LmludmVyc2U7XHJcblxyXG4gIC8vIG1hbmFnZSBhdHRhY2htZW50IC1cclxuICBpZiAobmV3VmFsdWUgIT0gbnVsbCkge1xyXG4gICAgaWYgKCFuZXdWYWx1ZS5lbnRpdHlBc3BlY3QpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IG5ld0FzcGVjdCA9IG5ld1ZhbHVlLmVudGl0eUFzcGVjdDtcclxuICAgIGlmIChlbnRpdHlNYW5hZ2VyKSB7XHJcbiAgICAgIGlmIChuZXdBc3BlY3QuZW50aXR5U3RhdGUuaXNEZXRhY2hlZCgpKSB7XHJcbiAgICAgICAgaWYgKCFlbnRpdHlNYW5hZ2VyLmlzTG9hZGluZykge1xyXG4gICAgICAgICAgZW50aXR5TWFuYWdlci5hdHRhY2hFbnRpdHkobmV3VmFsdWUsIEVudGl0eVN0YXRlLkFkZGVkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKG5ld0FzcGVjdC5lbnRpdHlNYW5hZ2VyICE9PSBlbnRpdHlNYW5hZ2VyKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBbiBFbnRpdHkgY2Fubm90IGJlIGF0dGFjaGVkIHRvIGFuIGVudGl0eSBpbiBhbm90aGVyIEVudGl0eU1hbmFnZXIuIE9uZSBvZiB0aGUgdHdvIGVudGl0aWVzIG11c3QgYmUgZGV0YWNoZWQgZmlyc3QuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKG5ld0FzcGVjdCAmJiBuZXdBc3BlY3QuZW50aXR5TWFuYWdlcikge1xyXG4gICAgICAgIGVudGl0eU1hbmFnZXIgPSBuZXdBc3BlY3QuZW50aXR5TWFuYWdlcjtcclxuICAgICAgICBpZiAoIWVudGl0eU1hbmFnZXIhLmlzTG9hZGluZykge1xyXG4gICAgICAgICAgZW50aXR5TWFuYWdlciEuYXR0YWNoRW50aXR5KGVudGl0eUFzcGVjdC5lbnRpdHkhLCBFbnRpdHlTdGF0ZS5BZGRlZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBwcm9jZXNzIHJlbGF0ZWQgdXBkYXRlcyAoIHRoZSBpbnZlcnNlIHJlbGF0aW9uc2hpcCkgZmlyc3Qgc28gdGhhdCBjb2xsZWN0aW9uIGR1cHMgY2hlY2sgd29ya3MgcHJvcGVybHkuXHJcbiAgLy8gdXBkYXRlIGludmVyc2UgcmVsYXRpb25zaGlwXHJcbiAgaWYgKGludmVyc2VQcm9wKSB7XHJcbiAgICAvLy9cclxuICAgIGlmIChpbnZlcnNlUHJvcC5pc1NjYWxhcikge1xyXG4gICAgICAvLyBFeGFtcGxlOiBiaWRpcmVjdGlvbmFsIG5hdlByb3BlcnR5OiAxLT4xOiBvcmRlciAtPiBpbnRlcm5hdGlvbmFsT3JkZXJcclxuICAgICAgLy8gb3JkZXIuaW50ZXJuYXRpb25hbE9yZGVyIDwtIGludGVybmF0aW9uYWxPcmRlciB8fCBudWxsXHJcbiAgICAgIC8vICAgID09PiAob2xkSW50ZXJuYXRpb25hbE9yZGVyLm9yZGVyID0gbnVsbClcclxuICAgICAgLy8gICAgPT0+IGludGVybmF0aW9uYWxPcmRlci5vcmRlciA9IG9yZGVyXHJcbiAgICAgIGlmIChvbGRWYWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgLy8gVE9ETzogbnVsbCAtPiBOdWxsRW50aXR5IGxhdGVyXHJcbiAgICAgICAgb2xkVmFsdWUuc2V0UHJvcGVydHkoaW52ZXJzZVByb3AubmFtZSwgbnVsbCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG5ld1ZhbHVlICE9IG51bGwpIHtcclxuICAgICAgICBuZXdWYWx1ZS5zZXRQcm9wZXJ0eShpbnZlcnNlUHJvcC5uYW1lLCBwYXJlbnQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBFeGFtcGxlOiBiaWRpcmVjdGlvbmFsIG5hdlByb3BlcnR5OiAxLT5uOiBvcmRlciAtPiBvcmRlckRldGFpbHNcclxuICAgICAgLy8gb3JkZXJEZXRhaWwub3JkZXIgPC0gbmV3T3JkZXIgfHwgbnVsbFxyXG4gICAgICAvLyAgICA9PT4gKG9sZE9yZGVyKS5vcmRlckRldGFpbHMucmVtb3ZlKG9yZGVyRGV0YWlsKVxyXG4gICAgICAvLyAgICA9PT4gb3JkZXIub3JkZXJEZXRhaWxzLnB1c2gobmV3T3JkZXIpXHJcbiAgICAgIGlmIChvbGRWYWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgbGV0IG9sZFNpYmxpbmdzID0gb2xkVmFsdWUuZ2V0UHJvcGVydHkoaW52ZXJzZVByb3AubmFtZSk7XHJcbiAgICAgICAgbGV0IGl4ID0gb2xkU2libGluZ3MuaW5kZXhPZihwYXJlbnQpO1xyXG4gICAgICAgIGlmIChpeCAhPT0gLTEpIHtcclxuICAgICAgICAgIG9sZFNpYmxpbmdzLnNwbGljZShpeCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChuZXdWYWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgbGV0IHNpYmxpbmdzID0gbmV3VmFsdWUuZ2V0UHJvcGVydHkoaW52ZXJzZVByb3AubmFtZSk7XHJcbiAgICAgICAgLy8gcmVjdXJzaW9uIGNoZWNrIGlmIGFscmVhZHkgaW4gdGhlIGNvbGxlY3Rpb24gaXMgcGVyZm9ybWVkIGJ5IHRoZSByZWxhdGlvbkFycmF5XHJcbiAgICAgICAgc2libGluZ3MucHVzaChwYXJlbnQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSBlbHNlIGlmIChwcm9wZXJ0eS5pbnZGb3JlaWduS2V5TmFtZXMgJiYgZW50aXR5TWFuYWdlciAmJiAhZW50aXR5TWFuYWdlci5faW5LZXlGaXh1cCkge1xyXG4gICAgbGV0IGludkZvcmVpZ25LZXlOYW1lcyA9IHByb3BlcnR5LmludkZvcmVpZ25LZXlOYW1lcztcclxuICAgIGlmIChuZXdWYWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgIC8vIEV4YW1wbGU6IHVuaWRpcmVjdGlvbmFsIG5hdlByb3BlcnR5OiAxLT4xOiBvcmRlciAtPiBpbnRlcm5hdGlvbmFsT3JkZXJcclxuICAgICAgLy8gb3JkZXIuSW50ZXJuYXRpb25hbE9yZGVyIDwtIGludGVybmF0aW9uYWxPcmRlclxyXG4gICAgICAvLyAgICA9PT4gaW50ZXJuYXRpb25hbE9yZGVyLm9yZGVySWQgPSBvcmRlcklkXHJcbiAgICAgIC8vICAgICAgYW5kXHJcbiAgICAgIC8vIEV4YW1wbGU6IHVuaWRpcmVjdGlvbmFsIG5hdlByb3BlcnR5OiAxLT5uOiBvcmRlciAtPiBvcmRlckRldGFpbHNcclxuICAgICAgLy8gb3JkZXJEZXRhaWwub3JkZXIgPC14eHggbmV3T3JkZXJcclxuICAgICAgLy8gICAgPT0+IENBTidUIEhBUFBFTiBiZWNhdXNlIGlmIHVuaWRpcmVjdGlvbmFsIGJlY2F1c2Ugb3JkZXJEZXRhaWwgd2lsbCBub3QgaGF2ZSBhbiBvcmRlciBwcm9wXHJcbiAgICAgIGxldCBwa1ZhbHVlcyA9IHBhcmVudC5lbnRpdHlBc3BlY3QuZ2V0S2V5KCkudmFsdWVzO1xyXG4gICAgICBpbnZGb3JlaWduS2V5TmFtZXMuZm9yRWFjaCggKGZrTmFtZSwgaSkgPT4ge1xyXG4gICAgICAgIG5ld1ZhbHVlIS5zZXRQcm9wZXJ0eShma05hbWUsIHBrVmFsdWVzW2ldKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBFeGFtcGxlOiB1bmlkaXJlY3Rpb25hbCBuYXZQcm9wZXJ0eTogMS0+MTogb3JkZXIgLT4gaW50ZXJuYXRpb25hbE9yZGVyXHJcbiAgICAgIC8vIG9yZGVyLmludGVybmF0aW9uYWxPcmRlciA8LSBudWxsXHJcbiAgICAgIC8vICAgID09PiAob2xkIGludGVybmF0aW9uYWxPcmRlcikub3JkZXJJZCA9IG51bGxcclxuICAgICAgLy8gICAgICAgIGFuZFxyXG4gICAgICAvLyBFeGFtcGxlOiB1bmlkaXJlY3Rpb25hbCBuYXZQcm9wZXJ0eTogMS0+bjogb3JkZXIgLT4gb3JkZXJEZXRhaWxzXHJcbiAgICAgIC8vIG9yZGVyRGV0YWlsLm9yZGVyIDwteHh4IG5ld09yZGVyXHJcbiAgICAgIC8vICAgID09PiBDQU4nVCBIQVBQRU4gYmVjYXVzZSBpZiB1bmlkaXJlY3Rpb25hbCBiZWNhdXNlIG9yZGVyRGV0YWlsIHdpbGwgbm90IGhhdmUgYW4gb3JkZXIgcHJvcFxyXG4gICAgICBpZiAob2xkVmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICAgIGludkZvcmVpZ25LZXlOYW1lcy5mb3JFYWNoKCAoZmtOYW1lKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZmtQcm9wID0gb2xkVmFsdWUuZW50aXR5VHlwZS5nZXRQcm9wZXJ0eShma05hbWUpO1xyXG4gICAgICAgICAgaWYgKCFma1Byb3AuaXNQYXJ0T2ZLZXkpIHtcclxuICAgICAgICAgICAgLy8gZG9uJ3QgdXBkYXRlIHdpdGggbnVsbCBpZiBmayBpcyBwYXJ0IG9mIHRoZSBrZXlcclxuICAgICAgICAgICAgb2xkVmFsdWUuc2V0UHJvcGVydHkoZmtOYW1lLCBudWxsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmF3QWNjZXNzb3JGbihuZXdWYWx1ZSk7XHJcblxyXG4gIHVwZGF0ZVN0YXRlQW5kVmFsaWRhdGUoY29udGV4dCk7XHJcblxyXG4gIC8vIHVwZGF0ZSBmayBkYXRhIHByb3BlcnR5IC0gdGhpcyBjYW4gb25seSBvY2N1ciBpZiB0aGlzIG5hdlByb3BlcnR5IGhhc1xyXG4gIC8vIGEgY29ycmVzcG9uZGluZyBmayBvbiB0aGlzIGVudGl0eS5cclxuICBpZiAocHJvcGVydHkucmVsYXRlZERhdGFQcm9wZXJ0aWVzKSB7XHJcbiAgICBsZXQgZW50aXR5U3RhdGUgPSBlbnRpdHlBc3BlY3QuZW50aXR5U3RhdGU7XHJcbiAgICAvLyBpZiBlaXRoZXIgc2lkZSBvZiBuYXYgcHJvcCBpcyBkZXRhY2hlZCBkb24ndCBjbGVhciBma3MuIE5vdGU6IG9sZFZhbHVlIGluIG5leHQgbGluZSBjYW5ub3QgYmUgbnVsbCBzbyBubyBjaGVjayBpcyBuZWVkZWQuXHJcbiAgICBpZiAobmV3VmFsdWUgPT0gbnVsbCAmJiAoZW50aXR5U3RhdGUuaXNEZXRhY2hlZCgpIHx8IG9sZFZhbHVlLmVudGl0eUFzcGVjdC5lbnRpdHlTdGF0ZS5pc0RldGFjaGVkKCkpKSByZXR1cm47XHJcbiAgICBpZiAoZW50aXR5U3RhdGUuaXNEZWxldGVkKCkpIHJldHVybjtcclxuXHJcbiAgICAvLyB3ZSBtYXkgaGF2ZSBpbnZlcnNlIHByb3BzIGluZGljYXRpbmcgdGhlIHJlbGF0ZWQgcHJvcCBvbiB0aGUgb3RoZXIgZW50aXR5LCBpZiBpdCBpcyBub3QgdGhlIG90aGVyIGVudGl0eSdzIFBLXHJcbiAgICBsZXQgaW52ZXJzZUtleVByb3BzID0gcHJvcGVydHkuaW52Rm9yZWlnbktleU5hbWVzO1xyXG4gICAgaWYgKCEoaW52ZXJzZUtleVByb3BzICYmIGludmVyc2VLZXlQcm9wcy5sZW5ndGgpKSB7XHJcbiAgICAgIC8vIG90aGVyd2lzZSwgdGhpcyBwcm9wIGlzIHJlbGF0ZWQgdG8gdGhlIG90aGVyIGVudGl0eSdzIFBLXHJcbiAgICAgIGludmVyc2VLZXlQcm9wcyA9IHByb3BlcnR5LmVudGl0eVR5cGUua2V5UHJvcGVydGllcy5tYXAoayA9PiBrLm5hbWUpO1xyXG4gICAgfVxyXG4gICAgaW52ZXJzZUtleVByb3BzLmZvckVhY2goZnVuY3Rpb24gKGtleVByb3AsIGkpIHtcclxuICAgICAgbGV0IHJlbGF0ZWREYXRhUHJvcCA9IHByb3BlcnR5LnJlbGF0ZWREYXRhUHJvcGVydGllc1tpXTtcclxuICAgICAgLy8gRG8gbm90IHRyYXNoIHJlbGF0ZWQgcHJvcGVydHkgaWYgaXQgaXMgcGFydCBvZiB0aGF0IGVudGl0eSdzIGtleVxyXG4gICAgICBpZiAobmV3VmFsdWUgfHwgIXJlbGF0ZWREYXRhUHJvcC5pc1BhcnRPZktleSkge1xyXG4gICAgICAgIGxldCByZWxhdGVkVmFsdWUgPSBuZXdWYWx1ZSA/IG5ld1ZhbHVlLmdldFByb3BlcnR5KGtleVByb3ApIDogcmVsYXRlZERhdGFQcm9wLmRlZmF1bHRWYWx1ZTtcclxuICAgICAgICBwYXJlbnQuc2V0UHJvcGVydHkocmVsYXRlZERhdGFQcm9wLm5hbWUsIHJlbGF0ZWRWYWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gcG9zdENoYW5nZUV2ZW50cyhjb250ZXh0OiBJQ29udGV4dCkge1xyXG4gIGxldCBlbnRpdHlBc3BlY3QgPSBjb250ZXh0LmVudGl0eUFzcGVjdDtcclxuXHJcbiAgbGV0IGVudGl0eU1hbmFnZXIgPSBlbnRpdHlBc3BlY3QuZW50aXR5TWFuYWdlcjtcclxuICBsZXQgZW50aXR5ID0gZW50aXR5QXNwZWN0LmVudGl0eTtcclxuXHJcbiAgbGV0IHByb3BDaGFuZ2VkQXJncyA9IHsgZW50aXR5OiBlbnRpdHkhLCBwYXJlbnQ6IGNvbnRleHQucGFyZW50LCBwcm9wZXJ0eTogY29udGV4dC5wcm9wZXJ0eSwgcHJvcGVydHlOYW1lOiBjb250ZXh0LnByb3BlcnR5TmFtZSwgb2xkVmFsdWU6IGNvbnRleHQub2xkVmFsdWUsIG5ld1ZhbHVlOiBjb250ZXh0Lm5ld1ZhbHVlIH07XHJcbiAgaWYgKGVudGl0eU1hbmFnZXIpIHtcclxuICAgIC8vIHByb3BlcnR5Q2hhbmdlZCB3aWxsIGJlIGZpcmVkIGR1cmluZyBsb2FkaW5nIGJ1dCB3ZSBvbmx5IHdhbnQgdG8gZmlyZSBpdCBvbmNlIHBlciBlbnRpdHksIG5vdCBvbmNlIHBlciBwcm9wZXJ0eS5cclxuICAgIC8vIHNvIHByb3BlcnR5Q2hhbmdlZCBpcyBmaXJlZCBpbiB0aGUgZW50aXR5TWFuYWdlciBtZXJnZUVudGl0eSBtZXRob2QgaWYgbm90IGZpcmVkIGhlcmUuXHJcbiAgICBpZiAoKCFlbnRpdHlNYW5hZ2VyLmlzTG9hZGluZykgJiYgKCFlbnRpdHlNYW5hZ2VyLmlzUmVqZWN0aW5nQ2hhbmdlcykpIHtcclxuICAgICAgZW50aXR5QXNwZWN0LnByb3BlcnR5Q2hhbmdlZC5wdWJsaXNoKHByb3BDaGFuZ2VkQXJncyk7XHJcbiAgICAgIC8vIGRvbid0IGZpcmUgZW50aXR5Q2hhbmdlZCBldmVudCBpZiBwcm9wZXJ0eUNoYW5nZWQgaXMgc3VwcHJlc3NlZC5cclxuICAgICAgZW50aXR5TWFuYWdlci5lbnRpdHlDaGFuZ2VkLnB1Ymxpc2goeyBlbnRpdHlBY3Rpb246IEVudGl0eUFjdGlvbi5Qcm9wZXJ0eUNoYW5nZSwgZW50aXR5OiBlbnRpdHksIGFyZ3M6IHByb3BDaGFuZ2VkQXJncyB9KTtcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgZW50aXR5QXNwZWN0LnByb3BlcnR5Q2hhbmdlZC5wdWJsaXNoKHByb3BDaGFuZ2VkQXJncyk7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB1cGRhdGVTdGF0ZUFuZFZhbGlkYXRlKGNvbnRleHQ6IElDb250ZXh0KSB7XHJcbiAgbGV0IGVudGl0eUFzcGVjdCA9IGNvbnRleHQuZW50aXR5QXNwZWN0O1xyXG4gIGxldCBlbnRpdHlNYW5hZ2VyID0gZW50aXR5QXNwZWN0LmVudGl0eU1hbmFnZXI7XHJcbiAgaWYgKGVudGl0eU1hbmFnZXIgPT0gbnVsbCB8fCBlbnRpdHlNYW5hZ2VyLmlzTG9hZGluZykgcmV0dXJuO1xyXG4gIGxldCBwcm9wZXJ0eSA9IGNvbnRleHQucHJvcGVydHk7XHJcblxyXG4gIGlmIChlbnRpdHlBc3BlY3QuZW50aXR5U3RhdGUuaXNVbmNoYW5nZWQoKSAmJiAhcHJvcGVydHkuaXNVbm1hcHBlZCkge1xyXG4gICAgZW50aXR5QXNwZWN0LnNldE1vZGlmaWVkKCk7XHJcbiAgfVxyXG5cclxuICBpZiAoZW50aXR5TWFuYWdlci52YWxpZGF0aW9uT3B0aW9ucy52YWxpZGF0ZU9uUHJvcGVydHlDaGFuZ2UpIHtcclxuICAgIC8vIGVudGl0eUFzcGVjdC5lbnRpdHkgaXMgTk9UIHRoZSBzYW1lIGFzIHBhcmVudCBpbiB0aGUgY29kZSBiZWxvdy4gSXQncyB1c2UgaXMgZGVsaWJlcmF0ZS5cclxuICAgIGVudGl0eUFzcGVjdC5fdmFsaWRhdGVQcm9wZXJ0eShjb250ZXh0Lm5ld1ZhbHVlLFxyXG4gICAgICAgIHsgZW50aXR5OiBlbnRpdHlBc3BlY3QuZW50aXR5LCBwcm9wZXJ0eTogcHJvcGVydHksIHByb3BlcnR5TmFtZTogY29udGV4dC5wcm9wZXJ0eU5hbWUsIG9sZFZhbHVlOiBjb250ZXh0Lm9sZFZhbHVlIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
460
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1wcm9wZXJ0eS1pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2JyZWV6ZS1jbGllbnQvIiwic291cmNlcyI6WyJzcmMvZGVmYXVsdC1wcm9wZXJ0eS1pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBMkMsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3Qyx3QkFBd0I7QUFDeEIsTUFBTSxVQUFVLDBCQUEwQixDQUF5QixRQUF3QixFQUFFLFFBQWEsRUFBRSxhQUF1QjtJQUNqSSwrQ0FBK0M7SUFFL0MsSUFBSSxRQUFRLEtBQUssU0FBUztRQUFFLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxrRUFBa0U7SUFDL0csSUFBSSxRQUFRLEdBQUcsYUFBYSxFQUFFLENBQUM7SUFFL0IsSUFBSSxRQUFRLEdBQUksUUFBZ0IsQ0FBQyxRQUFRLENBQUM7SUFDMUMsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRTtRQUM5Qiw0RkFBNEY7UUFDNUYsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtZQUNqRCxRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUU7Z0JBQ2xDLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUN2QyxDQUFDLENBQUMsQ0FBQztTQUNKO2FB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LENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0tBQzFIO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvcmUgfSBmcm9tICcuL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wbGV4VHlwZSwgRGF0YVByb3BlcnR5LCBOYXZpZ2F0aW9uUHJvcGVydHksIEVudGl0eVByb3BlcnR5IH0gZnJvbSAnLi9lbnRpdHktbWV0YWRhdGEnO1xyXG5pbXBvcnQgeyBFbnRpdHlLZXkgfSBmcm9tICcuL2VudGl0eS1rZXknO1xyXG5pbXBvcnQgeyBFbnRpdHlBc3BlY3QsIENvbXBsZXhBc3BlY3QsIEVudGl0eSwgU3RydWN0dXJhbE9iamVjdCB9IGZyb20gJy4vZW50aXR5LWFzcGVjdCc7XHJcbmltcG9ydCB7IEVudGl0eVN0YXRlIH0gZnJvbSAnLi9lbnRpdHktc3RhdGUnO1xyXG5pbXBvcnQgeyBFbnRpdHlBY3Rpb24gfSBmcm9tICcuL2VudGl0eS1hY3Rpb24nO1xyXG5pbXBvcnQgeyBFbnRpdHlRdWVyeSB9IGZyb20gJy4vZW50aXR5LXF1ZXJ5JztcclxuXHJcbi8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdFByb3BlcnR5SW50ZXJjZXB0b3IodGhpczogU3RydWN0dXJhbE9iamVjdCwgcHJvcGVydHk6IEVudGl0eVByb3BlcnR5LCBuZXdWYWx1ZTogYW55LCByYXdBY2Nlc3NvckZuOiBGdW5jdGlvbikge1xyXG4gIC8vICd0aGlzJyBpcyB0aGUgZW50aXR5IGl0c2VsZiBpbiB0aGlzIGNvbnRleHQuXHJcblxyXG4gIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSBuZXdWYWx1ZSA9IG51bGw7IC8vIHJlbW92ZT8gdG8gYWxsb3cgYXNzaWdubWVudCB0byB1bmRlZmluZWQgaW4gQmFiZWwgY29uc3RydWN0b3JzP1xyXG4gIGxldCBvbGRWYWx1ZSA9IHJhd0FjY2Vzc29yRm4oKTtcclxuXHJcbiAgbGV0IGRhdGFUeXBlID0gKHByb3BlcnR5IGFzIGFueSkuZGF0YVR5cGU7XHJcbiAgaWYgKGRhdGFUeXBlICYmIGRhdGFUeXBlLnBhcnNlKSB7XHJcbiAgICAvLyBhdHRlbXB0cyB0byBjb2VyY2UgYSB2YWx1ZSB0byB0aGUgY29ycmVjdCB0eXBlIC0gaWYgdGhpcyBmYWlscyByZXR1cm4gdGhlIHZhbHVlIHVuY2hhbmdlZFxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobmV3VmFsdWUpICYmICFwcm9wZXJ0eS5pc1NjYWxhcikge1xyXG4gICAgICBuZXdWYWx1ZSA9IG5ld1ZhbHVlLm1hcChmdW5jdGlvbiAobnYpIHtcclxuICAgICAgICByZXR1cm4gZGF0YVR5cGUucGFyc2UobnYsIHR5cGVvZiBudik7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3VmFsdWUgPSBkYXRhVHlwZS5wYXJzZShuZXdWYWx1ZSwgdHlwZW9mIG5ld1ZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGV4aXQgaWYgbm8gY2hhbmdlIC0gZXh0cmEgY3J1ZnQgaXMgYmVjYXVzZSBkYXRlVGltZXMgZG9uJ3QgY29tcGFyZSBjbGVhbmx5LlxyXG4gIGlmIChuZXdWYWx1ZSA9PT0gb2xkVmFsdWUgfHwgKG5ld1ZhbHVlID09PSBudWxsICYmIG9sZFZhbHVlID09PSB1bmRlZmluZWQpIHx8IFxyXG4gICAgKGRhdGFUeXBlICYmIGRhdGFUeXBlLm5vcm1hbGl6ZSAmJiBuZXdWYWx1ZSAmJiBvbGRWYWx1ZSAmJiBkYXRhVHlwZS5ub3JtYWxpemUobmV3VmFsdWUpID09PSBkYXRhVHlwZS5ub3JtYWxpemUob2xkVmFsdWUpKSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgLy8gQ0FOTk9UIERPIE5FWFQgTElORSBiZWNhdXNlIGl0IGhhcyB0aGUgcG9zc2liaWxpdHkgb2YgY3JlYXRpbmcgYSBuZXcgcHJvcGVydHlcclxuICAvLyAnZW50aXR5QXNwZWN0JyBvbiAndGhpcycuICAtIE5vdCBwZXJtaXR0ZWQgYnkgSUUgaW5zaWRlIG9mIGEgZGVmaW5lZCBwcm9wZXJ0eSBvbiBhIHByb3RvdHlwZS5cclxuICAvLyBsZXQgZW50aXR5QXNwZWN0ID0gbmV3IEVudGl0eUFzcGVjdCh0aGlzKTtcclxuXHJcbiAgbGV0IHByb3BlcnR5TmFtZTogc3RyaW5nO1xyXG4gIGxldCBlbnRpdHlBc3BlY3QgPSAodGhpcyBhcyBhbnkpLmVudGl0eUFzcGVjdCBhcyBFbnRpdHlBc3BlY3Q7XHJcbiAgaWYgKGVudGl0eUFzcGVjdCkge1xyXG4gICAgcHJvcGVydHlOYW1lID0gcHJvcGVydHkubmFtZTtcclxuICB9IGVsc2Uge1xyXG4gICAgbGV0IGxvY2FsQXNwZWN0ID0gKHRoaXMgYXMgYW55KS5jb21wbGV4QXNwZWN0IGFzIENvbXBsZXhBc3BlY3Q7XHJcbiAgICBpZiAobG9jYWxBc3BlY3QpIHtcclxuICAgICAgZW50aXR5QXNwZWN0ID0gbG9jYWxBc3BlY3QuZ2V0RW50aXR5QXNwZWN0KCk7XHJcbiAgICAgIHByb3BlcnR5TmFtZSA9IGxvY2FsQXNwZWN0LmdldFByb3BlcnR5UGF0aChwcm9wZXJ0eS5uYW1lKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIGRvZXMgbm90IHlldCBoYXZlIGFuIEVudGl0eUFzcGVjdCBzbyBqdXN0IHNldCB0aGUgcHJvcFxyXG4gICAgICByYXdBY2Nlc3NvckZuKG5ld1ZhbHVlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTm90ZSB0aGF0IHdlIG5lZWQgdG8gaGFuZGxlIG11bHRpcGxlIHByb3BlcnRpZXMgaW4gcHJvY2Vzcywgbm90IGp1c3Qgb25lIGluIG9yZGVyIHRvIGF2b2lkIHJlY3Vyc2lvbi5cclxuICAvLyAoIGV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBudWxsIHByb3BhZ2F0aW9uIHdpdGggZmtzIHdoZXJlIG51bGwgLT4gMCBpbiBzb21lIGNhc2VzLilcclxuICAvLyAodGhpcyBtYXkgbm90IGJlIG5lZWRlZCBiZWNhdXNlIG9mIHRoZSBuZXdWYWx1ZSA9PT0gb2xkVmFsdWUgdGVzdCBhYm92ZSlcclxuICBsZXQgaW5Qcm9jZXNzID0gZW50aXR5QXNwZWN0Ll9pblByb2Nlc3MgPSBlbnRpdHlBc3BlY3QuX2luUHJvY2VzcyB8fCBbXTtcclxuICAvLyBjaGVjayBmb3IgcmVjdXJzaW9uXHJcbiAgaWYgKGluUHJvY2Vzcy5pbmRleE9mKHByb3BlcnR5KSA+PSAwKSByZXR1cm47XHJcbiAgaW5Qcm9jZXNzLnB1c2gocHJvcGVydHkpO1xyXG5cclxuICB0cnkge1xyXG5cclxuICAgIGxldCBjb250ZXh0OiBJQ29udGV4dCA9IHtcclxuICAgICAgcGFyZW50OiB0aGlzLFxyXG4gICAgICBwcm9wZXJ0eTogcHJvcGVydHksXHJcbiAgICAgIG5ld1ZhbHVlOiBuZXdWYWx1ZSxcclxuICAgICAgb2xkVmFsdWU6IG9sZFZhbHVlLFxyXG4gICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcclxuICAgICAgZW50aXR5QXNwZWN0OiBlbnRpdHlBc3BlY3RcclxuICAgIH07XHJcblxyXG4gICAgaWYgKChwcm9wZXJ0eSBhcyBhbnkpLmlzQ29tcGxleFByb3BlcnR5KSB7XHJcbiAgICAgIHNldERwVmFsdWVDb21wbGV4KGNvbnRleHQsIHJhd0FjY2Vzc29yRm4pO1xyXG4gICAgfSBlbHNlIGlmIChwcm9wZXJ0eS5pc0RhdGFQcm9wZXJ0eSkge1xyXG4gICAgICBzZXREcFZhbHVlU2ltcGxlKGNvbnRleHQsIHJhd0FjY2Vzc29yRm4pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2V0TnBWYWx1ZShjb250ZXh0LCByYXdBY2Nlc3NvckZuKTtcclxuICAgIH1cclxuXHJcbiAgICBwb3N0Q2hhbmdlRXZlbnRzKGNvbnRleHQpO1xyXG5cclxuICB9IGZpbmFsbHkge1xyXG4gICAgaW5Qcm9jZXNzLnBvcCgpO1xyXG4gIH1cclxufVxyXG5cclxuaW50ZXJmYWNlIElDb250ZXh0IHtcclxuICBwYXJlbnQ6IFN0cnVjdHVyYWxPYmplY3Q7XHJcbiAgcHJvcGVydHk6IEVudGl0eVByb3BlcnR5O1xyXG4gIHByb3BlcnR5TmFtZTogc3RyaW5nO1xyXG4gIGVudGl0eUFzcGVjdDogRW50aXR5QXNwZWN0O1xyXG4gIG9sZFZhbHVlOiBhbnk7XHJcbiAgbmV3VmFsdWU6IGFueTtcclxufVxyXG5cclxuZnVuY3Rpb24gc2V0RHBWYWx1ZVNpbXBsZShjb250ZXh0OiBJQ29udGV4dCwgcmF3QWNjZXNzb3JGbjogYW55KSB7XHJcbiAgbGV0IHBhcmVudCA9IGNvbnRleHQucGFyZW50O1xyXG4gIGxldCBwcm9wZXJ0eSA9IGNvbnRleHQucHJvcGVydHkgYXMgRGF0YVByb3BlcnR5O1xyXG4gIGxldCBlbnRpdHlBc3BlY3QgPSBjb250ZXh0LmVudGl0eUFzcGVjdDtcclxuICBsZXQgb2xkVmFsdWUgPSBjb250ZXh0Lm9sZFZhbHVlO1xyXG4gIGxldCBuZXdWYWx1ZSA9IGNvbnRleHQubmV3VmFsdWU7XHJcblxyXG4gIGxldCBlbnRpdHlNYW5hZ2VyID0gZW50aXR5QXNwZWN0LmVudGl0eU1hbmFnZXI7XHJcblxyXG4gIGlmICghcHJvcGVydHkuaXNTY2FsYXIpIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihcIk5vbnNjYWxhciBkYXRhIHByb3BlcnRpZXMgYXJlIHJlYWRvbmx5IC0gaXRlbXMgbWF5IGJlIGFkZGVkIG9yIHJlbW92ZWQgYnV0IHRoZSBjb2xsZWN0aW9uIG1heSBub3QgYmUgY2hhbmdlZC5cIik7XHJcbiAgfVxyXG5cclxuICAvLyBzdG9yZSBhbiBvcmlnaW5hbCB2YWx1ZSBmb3IgdGhpcyBwcm9wZXJ0eSBpZiBub3QgYWxyZWFkeSBzZXRcclxuICBpZiAoZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlLmlzVW5jaGFuZ2VkT3JNb2RpZmllZCgpKSB7XHJcbiAgICBsZXQgcHJvcE5hbWUgPSBwcm9wZXJ0eS5uYW1lO1xyXG4gICAgLy8gbG9jYWxBc3BlY3QgaXMgbm90IHRoZSBzYW1lIGFzIGVudGl0eUFzcGVjdCBmb3IgY29tcGxleCBwcm9wc1xyXG4gICAgbGV0IGxvY2FsQXNwZWN0ID0gRW50aXR5QXNwZWN0LmlzRW50aXR5KHBhcmVudCkgPyBwYXJlbnQuZW50aXR5QXNwZWN0IDogcGFyZW50LmNvbXBsZXhBc3BlY3Q7XHJcbiAgICBpZiAobG9jYWxBc3BlY3Qub3JpZ2luYWxWYWx1ZXNbcHJvcE5hbWVdID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgLy8gb3RoZXJ3aXNlIHRoaXMgZW50cnkgd2lsbCBiZSBza2lwcGVkIGR1cmluZyBzZXJpYWxpemF0aW9uXHJcbiAgICAgIGxvY2FsQXNwZWN0Lm9yaWdpbmFsVmFsdWVzW3Byb3BOYW1lXSA9IG9sZFZhbHVlICE9PSB1bmRlZmluZWQgPyBvbGRWYWx1ZSA6IHByb3BlcnR5LmRlZmF1bHRWYWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGlmIHdlIGFyZSBjaGFuZ2luZyB0aGUga2V5IHVwZGF0ZSBvdXIgaW50ZXJuYWwgZW50aXR5R3JvdXAgaW5kZXhlcy5cclxuICBpZiAocHJvcGVydHkuaXNQYXJ0T2ZLZXkgJiYgZW50aXR5TWFuYWdlciAmJiAhZW50aXR5TWFuYWdlci5pc0xvYWRpbmcpIHtcclxuICAgIC8vICdlbnRpdHlUeXBlJyBvbiB0aGUgbmV4dCBsaW5lIGJlIG51bGwgZm9yIGNvbXBsZXggcHJvcGVydGllcyBidXQgaXQgd2lsbCBvbmx5IGJlIHJlZidkIHdpdGhpbiB0aGlzXHJcbiAgICAvLyBmbiB3aGVuIHRoZSBwcm9wZXJ0eSBpcyBwYXJ0IG9mIHRoZSBrZXlcclxuICAgIGxldCBlbnRpdHlUeXBlID0gKHBhcmVudCBhcyBFbnRpdHkpLmVudGl0eVR5cGU7XHJcbiAgICBsZXQga2V5UHJvcHMgPSBlbnRpdHlUeXBlLmtleVByb3BlcnRpZXM7XHJcbiAgICBsZXQgdmFsdWVzID0ga2V5UHJvcHMubWFwKGZ1bmN0aW9uIChwKSB7XHJcbiAgICAgIGlmIChwID09PSBwcm9wZXJ0eSkge1xyXG4gICAgICAgIHJldHVybiBuZXdWYWx1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gcGFyZW50LmdldFByb3BlcnR5KHAubmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgbGV0IG5ld0tleSA9IG5ldyBFbnRpdHlLZXkoZW50aXR5VHlwZSwgdmFsdWVzKTtcclxuICAgIGlmIChlbnRpdHlNYW5hZ2VyLmdldEVudGl0eUJ5S2V5KG5ld0tleSkpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQW4gZW50aXR5IHdpdGggdGhpcyBrZXkgaXMgYWxyZWFkeSBpbiB0aGUgY2FjaGU6IFwiICsgbmV3S2V5LnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG4gICAgbGV0IG9sZEtleSA9IChwYXJlbnQgYXMgRW50aXR5KS5lbnRpdHlBc3BlY3QuZ2V0S2V5KCk7XHJcbiAgICBsZXQgZWcgPSBlbnRpdHlNYW5hZ2VyLl9maW5kRW50aXR5R3JvdXAoZW50aXR5VHlwZSk7XHJcbiAgICBlZy5fcmVwbGFjZUtleShvbGRLZXksIG5ld0tleSk7XHJcbiAgfVxyXG5cclxuICAvLyBwcm9jZXNzIHJlbGF0ZWQgdXBkYXRlcyAoIHRoZSBpbnZlcnNlIHJlbGF0aW9uc2hpcCkgZmlyc3Qgc28gdGhhdCBjb2xsZWN0aW9uIGR1cHMgY2hlY2sgd29ya3MgcHJvcGVybHkuXHJcbiAgLy8gdXBkYXRlIGludmVyc2UgcmVsYXRpb25zaGlwXHJcblxyXG4gIGxldCByZWxhdGVkTmF2UHJvcCA9IHByb3BlcnR5LnJlbGF0ZWROYXZpZ2F0aW9uUHJvcGVydHk7XHJcbiAgaWYgKHJlbGF0ZWROYXZQcm9wICYmIGVudGl0eU1hbmFnZXIpIHtcclxuICAgIC8vIEV4YW1wbGU6IGJpZGlyZWN0aW9uYWwgZmtEYXRhUHJvcGVydHk6IDEtPm46IG9yZGVyIC0+IG9yZGVyRGV0YWlsc1xyXG4gICAgLy8gb3JkZXJEZXRhaWwub3JkZXJJZCA8LSBuZXdPcmRlcklkIHx8IG51bGxcclxuICAgIC8vICAgID09PiBvcmRlckRldGFpbC5vcmRlciA9IGxvb2t1cE9yZGVyKG5ld09yZGVySWQpXHJcbiAgICAvLyAgICA9PT4gKHNlZSBzZXQgbmF2UHJvcCBhYm92ZSlcclxuICAgIC8vICAgICAgIGFuZFxyXG4gICAgLy8gRXhhbXBsZTogYmlkaXJlY3Rpb25hbCBma0RhdGFQcm9wZXJ0eTogMS0+MTogb3JkZXIgLT4gaW50ZXJuYXRpb25hbE9yZGVyXHJcbiAgICAvLyBpbnRlcm5hdGlvbmFsT3JkZXIub3JkZXJJZCA8LSBuZXdPcmRlcklkIHx8IG51bGxcclxuICAgIC8vICAgID09PiBpbnRlcm5hdGlvbmFsT3JkZXIub3JkZXIgPSBsb29rdXBPcmRlcihuZXdPcmRlcklkKVxyXG4gICAgLy8gICAgPT0+IChzZWUgc2V0IG5hdlByb3AgYWJvdmUpXHJcblxyXG4gICAgaWYgKG5ld1ZhbHVlICE9IG51bGwpIHtcclxuICAgICAgbGV0IHJlbGF0ZWRFbnRpdHk6IEVudGl0eTtcclxuICAgICAgbGV0IGtleTogRW50aXR5S2V5O1xyXG4gICAgICBpZiAocmVsYXRlZE5hdlByb3AuaW52Rm9yZWlnbktleU5hbWVzLmxlbmd0aCkge1xyXG4gICAgICAgIC8vIHByb3BlcnR5IGlzIHJlbGF0ZWQgYnkgZmllbGQgd2hpY2ggaXMgbm90IHRoZSBQS1xyXG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gbmV3IEVudGl0eVF1ZXJ5KHJlbGF0ZWROYXZQcm9wLmVudGl0eVR5cGUuZGVmYXVsdFJlc291cmNlTmFtZSkud2hlcmUocmVsYXRlZE5hdlByb3AuaW52Rm9yZWlnbktleU5hbWVzWzBdLCAnZXEnLCBuZXdWYWx1ZSk7XHJcbiAgICAgICAgY29uc3QgcXJlc3VsdCA9IGVudGl0eU1hbmFnZXIuZXhlY3V0ZVF1ZXJ5TG9jYWxseShxdWVyeSk7XHJcbiAgICAgICAgaWYgKHFyZXN1bHQubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICByZWxhdGVkRW50aXR5ID0gcXJlc3VsdFswXTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gcHJvcGVydHkgaXMgcmVsYXRlZCBieSB0aGUgUEtcclxuICAgICAgICBrZXkgPSBuZXcgRW50aXR5S2V5KHJlbGF0ZWROYXZQcm9wLmVudGl0eVR5cGUsIFtuZXdWYWx1ZV0pO1xyXG4gICAgICAgIHJlbGF0ZWRFbnRpdHkgPSBlbnRpdHlNYW5hZ2VyLmdldEVudGl0eUJ5S2V5KGtleSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChyZWxhdGVkRW50aXR5KSB7XHJcbiAgICAgICAgcGFyZW50LnNldFByb3BlcnR5KHJlbGF0ZWROYXZQcm9wLm5hbWUsIHJlbGF0ZWRFbnRpdHkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGl0IG1heSBub3QgaGF2ZSBiZWVuIGZldGNoZWQgeWV0IGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBhZGQgaXQgYXMgYW4gdW5hdHRhY2hlZENoaWxkLlxyXG4gICAgICAgIGlmIChrZXkpIHtcclxuICAgICAgICAgIC8vIFRPRE8gY3VycmVudGx5IF9saW5rUmVsYXRlZGVudGl0aWVzIG9ubHkgd29ya3Mgd2l0aCBQSyByZWxhdGlvbnMsIHNvIHdlIG9ubHkgYWRkIHRob3NlLlxyXG4gICAgICAgICAgZW50aXR5TWFuYWdlci5fdW5hdHRhY2hlZENoaWxkcmVuTWFwLmFkZENoaWxkKGtleSwgcmVsYXRlZE5hdlByb3AsIHBhcmVudCBhcyBFbnRpdHkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwYXJlbnQuc2V0UHJvcGVydHkocmVsYXRlZE5hdlByb3AubmFtZSwgbnVsbCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHBhcmVudC5zZXRQcm9wZXJ0eShyZWxhdGVkTmF2UHJvcC5uYW1lLCBudWxsKTtcclxuICAgIH1cclxuICB9IGVsc2UgaWYgKHByb3BlcnR5LmludmVyc2VOYXZpZ2F0aW9uUHJvcGVydHkgJiYgZW50aXR5TWFuYWdlciAmJiAhZW50aXR5TWFuYWdlci5faW5LZXlGaXh1cCkge1xyXG4gICAgLy8gRXhhbXBsZTogdW5pZGlyZWN0aW9uYWwgZmtEYXRhUHJvcGVydHk6IDEtPm46IHJlZ2lvbiAtPiB0ZXJyaXRvcmllc1xyXG4gICAgLy8gdGVycml0b3J5LnJlZ2lvbklkIDwtIG5ld1JlZ2lvbklkXHJcbiAgICAvLyAgICA9PT4gbG9va3VwUmVnaW9uKG5ld1JlZ2lvbklkKS50ZXJyaXRvcmllcy5wdXNoKHRlcnJpdG9yeSlcclxuICAgIC8vICAgICAgICAgICAgICAgIGFuZFxyXG4gICAgLy8gRXhhbXBsZTogdW5pZGlyZWN0aW9uYWwgZmtEYXRhUHJvcGVydHk6IDEtPjE6IG9yZGVyIC0+IGludGVybmF0aW9uYWxPcmRlclxyXG4gICAgLy8gaW50ZXJuYXRpb25hbE9yZGVyLm9yZGVySWQgPC0gbmV3T3JkZXJJZFxyXG4gICAgLy8gICAgPT0+IGxvb2t1cE9yZGVyKG5ld09yZGVySWQpLmludGVybmF0aW9uYWxPcmRlciA9IGludGVybmF0aW9uYWxPcmRlclxyXG4gICAgLy8gICAgICAgICAgICAgICAgYW5kXHJcbiAgICAvLyBFeGFtcGxlOiB1bmlkaXJlY3Rpb25hbCBma0RhdGFQcm9wZXJ0eTogMS0+bjogcmVnaW9uIC0+IHRlcnJpdG9yaWVzXHJcbiAgICAvLyB0ZXJyaXRvcnkucmVnaW9uSWQgPC0gbnVsbFxyXG4gICAgLy8gICAgPT0+IGxvb2t1cFJlZ2lvbih0ZXJyaXRvcnkub2xkUmVnaW9uSWQpLnRlcnJpdG9yaWVzLnJlbW92ZShvbGRUZXJyaXRvcnkpO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgYW5kXHJcbiAgICAvLyBFeGFtcGxlOiB1bmlkaXJlY3Rpb25hbCBma0RhdGFQcm9wZXJ0eTogMS0+MTogb3JkZXIgLT4gaW50ZXJuYXRpb25hbE9yZGVyXHJcbiAgICAvLyBpbnRlcm5hdGlvbmFsT3JkZXIub3JkZXJJZCA8LSBudWxsXHJcbiAgICAvLyAgICA9PT4gbG9va3VwT3JkZXIoaW50ZXJuYXRpb25hbE9yZGVyLm9sZE9yZGVySWQpLmludGVybmF0aW9uYWxPcmRlciA9IG51bGw7XHJcblxyXG4gICAgbGV0IGludk5hdlByb3AgPSBwcm9wZXJ0eS5pbnZlcnNlTmF2aWdhdGlvblByb3BlcnR5O1xyXG5cclxuICAgIGlmIChvbGRWYWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgIGxldCBrZXkgPSBuZXcgRW50aXR5S2V5KGludk5hdlByb3AucGFyZW50VHlwZSwgW29sZFZhbHVlXSk7XHJcbiAgICAgIGxldCByZWxhdGVkRW50aXR5ID0gZW50aXR5TWFuYWdlci5nZXRFbnRpdHlCeUtleShrZXkpO1xyXG4gICAgICBpZiAocmVsYXRlZEVudGl0eSkge1xyXG4gICAgICAgIGlmIChpbnZOYXZQcm9wLmlzU2NhbGFyKSB7XHJcbiAgICAgICAgICByZWxhdGVkRW50aXR5LnNldFByb3BlcnR5KGludk5hdlByb3AubmFtZSwgbnVsbCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIHJlbW92ZSAndGhpcycgZnJvbSBvbGQgcmVsYXRlZCBuYXYgcHJvcFxyXG4gICAgICAgICAgbGV0IHJlbGF0ZWRBcnJheSA9IHJlbGF0ZWRFbnRpdHkuZ2V0UHJvcGVydHkoaW52TmF2UHJvcC5uYW1lKTtcclxuICAgICAgICAgIC8vIGFyci5zcGxpY2UoYXJyLmluZGV4T2YodmFsdWVfdG9fcmVtb3ZlKSwgMSk7XHJcbiAgICAgICAgICByZWxhdGVkQXJyYXkuc3BsaWNlKHJlbGF0ZWRBcnJheS5pbmRleE9mKHBhcmVudCksIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChuZXdWYWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgIGxldCBrZXkgPSBuZXcgRW50aXR5S2V5KGludk5hdlByb3AucGFyZW50VHlwZSwgW25ld1ZhbHVlXSk7XHJcbiAgICAgIGxldCByZWxhdGVkRW50aXR5ID0gZW50aXR5TWFuYWdlci5nZXRFbnRpdHlCeUtleShrZXkpO1xyXG5cclxuICAgICAgaWYgKHJlbGF0ZWRFbnRpdHkpIHtcclxuICAgICAgICBpZiAoaW52TmF2UHJvcC5pc1NjYWxhcikge1xyXG4gICAgICAgICAgcmVsYXRlZEVudGl0eS5zZXRQcm9wZXJ0eShpbnZOYXZQcm9wLm5hbWUsIHBhcmVudCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlbGF0ZWRFbnRpdHkuZ2V0UHJvcGVydHkoaW52TmF2UHJvcC5uYW1lKS5wdXNoKHBhcmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGl0IG1heSBub3QgaGF2ZSBiZWVuIGZldGNoZWQgeWV0IGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBhZGQgaXQgYXMgYW4gdW5hdHRhY2hlZENoaWxkLlxyXG4gICAgICAgIGVudGl0eU1hbmFnZXIuX3VuYXR0YWNoZWRDaGlsZHJlbk1hcC5hZGRDaGlsZChrZXksIGludk5hdlByb3AsIHBhcmVudCBhcyBFbnRpdHkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcmF3QWNjZXNzb3JGbihuZXdWYWx1ZSk7XHJcblxyXG4gIHVwZGF0ZVN0YXRlQW5kVmFsaWRhdGUoY29udGV4dCk7XHJcblxyXG4gIC8vIGlmIChwcm9wZXJ0eS5pc1BhcnRPZktleSAmJiAoIXRoaXMuY29tcGxleEFzcGVjdCkpIHtcclxuICBpZiAocHJvcGVydHkuaXNQYXJ0T2ZLZXkpIHtcclxuICAgIC8vIHByb3BvZ2F0ZSBwayBjaGFuZ2UgdG8gYWxsIHJlbGF0ZWQgZW50aXRpZXM7XHJcbiAgICBsZXQgZW50aXR5VHlwZSA9IChwYXJlbnQgYXMgRW50aXR5KS5lbnRpdHlUeXBlO1xyXG4gICAgbGV0IHByb3BlcnR5SXggPSBlbnRpdHlUeXBlLmtleVByb3BlcnRpZXMuaW5kZXhPZihwcm9wZXJ0eSk7XHJcbiAgICAvLyB0aGlzIHBhcnQgaGFuZGxlcyBvcmRlci5vcmRlcklkID0+IG9yZGVyRGV0YWlsLm9yZGVySWRcclxuICAgIC8vIGJ1dCB3b24ndCBoYW5kbGUgcHJvZHVjdC5wcm9kdWN0SWQgPT4gb3JkZXJEZXRhaWwucHJvZHVjdElkIGJlY2F1c2UgcHJvZHVjdFxyXG4gICAgLy8gZG9lc24ndCBoYXZlIGFuIG9yZGVyRGV0YWlscyBwcm9wZXJ0eS5cclxuICAgIGVudGl0eVR5cGUubmF2aWdhdGlvblByb3BlcnRpZXMuZm9yRWFjaChmdW5jdGlvbiAobnApIHtcclxuICAgICAgbGV0IGludmVyc2VOcCA9IG5wLmludmVyc2U7XHJcbiAgICAgIGxldCBma05hbWVzID0gaW52ZXJzZU5wID8gaW52ZXJzZU5wLmZvcmVpZ25LZXlOYW1lcyA6IG5wLmludkZvcmVpZ25LZXlOYW1lcztcclxuXHJcbiAgICAgIGlmIChma05hbWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgICBsZXQgbnBWYWx1ZSA9IHBhcmVudC5nZXRQcm9wZXJ0eShucC5uYW1lKTtcclxuICAgICAgaWYgKCFucFZhbHVlKSByZXR1cm47XHJcbiAgICAgIGxldCBma05hbWUgPSBma05hbWVzW3Byb3BlcnR5SXhdO1xyXG4gICAgICBpZiAobnAuaXNTY2FsYXIpIHtcclxuICAgICAgICBucFZhbHVlLnNldFByb3BlcnR5KGZrTmFtZSwgbmV3VmFsdWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5wVmFsdWUuc2xpY2UoMCkuZm9yRWFjaChmdW5jdGlvbiAoaXY6IGFueSkge1xyXG4gICAgICAgICAgaXYuc2V0UHJvcGVydHkoZmtOYW1lLCBuZXdWYWx1ZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gdGhpcyBoYW5kbGVzIHVuaWRpcmVjdGlvbmFsIHByb2JsZW1zIG5vdCBjb3ZlcmVkIGFib3ZlLlxyXG4gICAgaWYgKGVudGl0eU1hbmFnZXIpIHtcclxuICAgICAgbGV0IGludmVyc2VGb3JlaWduS2V5UHJvcGVydGllcyA9IGVudGl0eVR5cGUuaW52ZXJzZUZvcmVpZ25LZXlQcm9wZXJ0aWVzO1xyXG4gICAgICBsZXQgYmFzZUVudGl0eVR5cGUgPSBlbnRpdHlUeXBlLmJhc2VFbnRpdHlUeXBlO1xyXG4gICAgICB3aGlsZSAoYmFzZUVudGl0eVR5cGUpIHtcclxuICAgICAgICBpbnZlcnNlRm9yZWlnbktleVByb3BlcnRpZXMgPSBpbnZlcnNlRm9yZWlnbktleVByb3BlcnRpZXMuY29uY2F0KGJhc2VFbnRpdHlUeXBlLmludmVyc2VGb3JlaWduS2V5UHJvcGVydGllcyk7XHJcbiAgICAgICAgYmFzZUVudGl0eVR5cGUgPSBiYXNlRW50aXR5VHlwZS5iYXNlRW50aXR5VHlwZTtcclxuICAgICAgfVxyXG4gICAgICBpbnZlcnNlRm9yZWlnbktleVByb3BlcnRpZXMuZm9yRWFjaCgoaW52RmtQcm9wKSA9PiB7XHJcbiAgICAgICAgaWYgKGludkZrUHJvcC5yZWxhdGVkTmF2aWdhdGlvblByb3BlcnR5IS5pbnZlcnNlID09IG51bGwpIHtcclxuICAgICAgICAgIC8vIHRoaXMgbmV4dCBzdGVwIG1heSBiZSBzbG93IC0gaXQgaXRlcmF0ZXMgb3ZlciBhbGwgb2YgdGhlIGVudGl0aWVzIGluIGEgZ3JvdXA7XHJcbiAgICAgICAgICAvLyBob3BlZnVsbHkgaXQgZG9lc24ndCBoYXBwZW4gb2Z0ZW4uXHJcbiAgICAgICAgICBlbnRpdHlNYW5hZ2VyIS5fdXBkYXRlRmtWYWwoaW52RmtQcm9wLCBvbGRWYWx1ZSwgbmV3VmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gaW5zdXJlIHRoYXQgY2FjaGVkIGtleSBpcyB1cGRhdGVkLlxyXG4gICAgZW50aXR5QXNwZWN0LmdldEtleSh0cnVlKTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNldERwVmFsdWVDb21wbGV4KGNvbnRleHQ6IElDb250ZXh0LCByYXdBY2Nlc3NvckZuOiBGdW5jdGlvbikge1xyXG4gIGxldCBwcm9wZXJ0eSA9IGNvbnRleHQucHJvcGVydHkgYXMgRGF0YVByb3BlcnR5O1xyXG4gIGxldCBvbGRWYWx1ZSA9IGNvbnRleHQub2xkVmFsdWU7XHJcbiAgbGV0IG5ld1ZhbHVlID0gY29udGV4dC5uZXdWYWx1ZTtcclxuXHJcbiAgLy8gVG8gZ2V0IGhlcmUgaXQgbXVzdCBiZSBhIENvbXBsZXhQcm9wZXJ0eVxyXG4gIC8vICdkYXRhVHlwZScgd2lsbCBiZSBhIGNvbXBsZXhUeXBlXHJcbiAgbGV0IGRhdGFUeXBlID0gcHJvcGVydHkuZGF0YVR5cGUgYXMgQ29tcGxleFR5cGU7XHJcbiAgaWYgKHByb3BlcnR5LmlzU2NhbGFyKSB7XHJcbiAgICBpZiAoIW5ld1ZhbHVlKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihjb3JlLmZvcm1hdFN0cmluZyhcIllvdSBjYW5ub3Qgc2V0IHRoZSAnJTEnIHByb3BlcnR5IHRvIG51bGwgYmVjYXVzZSBpdCdzIGRhdGF0eXBlIGlzIHRoZSBDb21wbGV4VHlwZTogJyUyJ1wiLCBwcm9wZXJ0eS5uYW1lLCBwcm9wZXJ0eS5kYXRhVHlwZS5uYW1lKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFvbGRWYWx1ZSkge1xyXG4gICAgICBsZXQgY3RvciA9IGRhdGFUeXBlLmdldEN0b3IoKTtcclxuICAgICAgb2xkVmFsdWUgPSBuZXcgY3RvcigpO1xyXG4gICAgICByYXdBY2Nlc3NvckZuKG9sZFZhbHVlKTtcclxuICAgIH1cclxuICAgIGRhdGFUeXBlLmRhdGFQcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24gKGRwKSB7XHJcbiAgICAgIGxldCBwbiA9IGRwLm5hbWU7XHJcbiAgICAgIGxldCBudiA9IG5ld1ZhbHVlLmdldFByb3BlcnR5KHBuKTtcclxuICAgICAgb2xkVmFsdWUuc2V0UHJvcGVydHkocG4sIG52KTtcclxuICAgIH0pO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoY29yZS5mb3JtYXRTdHJpbmcoXCJZb3UgY2Fubm90IHNldCB0aGUgbm9uLXNjYWxhciBjb21wbGV4IHByb3BlcnR5OiAnJTEnIG9uIHRoZSB0eXBlOiAnJTInLlwiICtcclxuICAgICAgICAgICAgXCJJbnN0ZWFkIGdldCB0aGUgcHJvcGVydHkgYW5kIHVzZSBhcnJheSBmdW5jdGlvbnMgbGlrZSAncHVzaCcgb3IgJ3NwbGljZScgdG8gY2hhbmdlIGl0cyBjb250ZW50cy5cIixcclxuICAgICAgICBwcm9wZXJ0eS5uYW1lLCBwcm9wZXJ0eS5wYXJlbnRUeXBlLm5hbWUpKTtcclxuICB9XHJcbn1cclxuXHJcblxyXG5mdW5jdGlvbiBzZXROcFZhbHVlKGNvbnRleHQ6IElDb250ZXh0LCByYXdBY2Nlc3NvckZuOiBGdW5jdGlvbikge1xyXG5cclxuICBsZXQgcGFyZW50ID0gY29udGV4dC5wYXJlbnQgYXMgRW50aXR5O1xyXG4gIGxldCBwcm9wZXJ0eSA9IGNvbnRleHQucHJvcGVydHkgYXMgTmF2aWdhdGlvblByb3BlcnR5O1xyXG4gIGxldCBlbnRpdHlBc3BlY3QgPSBjb250ZXh0LmVudGl0eUFzcGVjdDtcclxuICBsZXQgb2xkVmFsdWUgPSBjb250ZXh0Lm9sZFZhbHVlO1xyXG4gIGxldCBuZXdWYWx1ZSA9IGNvbnRleHQubmV3VmFsdWU7XHJcblxyXG4gIGlmICghcHJvcGVydHkuaXNTY2FsYXIpIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihcIk5vbnNjYWxhciBuYXZpZ2F0aW9uIHByb3BlcnRpZXMgYXJlIHJlYWRvbmx5IC0gZW50aXRpZXMgY2FuIGJlIGFkZGVkIG9yIHJlbW92ZWQgYnV0IHRoZSBjb2xsZWN0aW9uIG1heSBub3QgYmUgY2hhbmdlZC5cIik7XHJcbiAgfVxyXG5cclxuICBsZXQgZW50aXR5TWFuYWdlciA9IGVudGl0eUFzcGVjdC5lbnRpdHlNYW5hZ2VyO1xyXG4gIGxldCBpbnZlcnNlUHJvcCA9IHByb3BlcnR5LmludmVyc2U7XHJcblxyXG4gIC8vIG1hbmFnZSBhdHRhY2htZW50IC1cclxuICBpZiAobmV3VmFsdWUgIT0gbnVsbCkge1xyXG4gICAgaWYgKCFuZXdWYWx1ZS5lbnRpdHlBc3BlY3QpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IG5ld0FzcGVjdCA9IG5ld1ZhbHVlLmVudGl0eUFzcGVjdDtcclxuICAgIGlmIChlbnRpdHlNYW5hZ2VyKSB7XHJcbiAgICAgIGlmIChuZXdBc3BlY3QuZW50aXR5U3RhdGUuaXNEZXRhY2hlZCgpKSB7XHJcbiAgICAgICAgaWYgKCFlbnRpdHlNYW5hZ2VyLmlzTG9hZGluZykge1xyXG4gICAgICAgICAgZW50aXR5TWFuYWdlci5hdHRhY2hFbnRpdHkobmV3VmFsdWUsIEVudGl0eVN0YXRlLkFkZGVkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKG5ld0FzcGVjdC5lbnRpdHlNYW5hZ2VyICE9PSBlbnRpdHlNYW5hZ2VyKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBbiBFbnRpdHkgY2Fubm90IGJlIGF0dGFjaGVkIHRvIGFuIGVudGl0eSBpbiBhbm90aGVyIEVudGl0eU1hbmFnZXIuIE9uZSBvZiB0aGUgdHdvIGVudGl0aWVzIG11c3QgYmUgZGV0YWNoZWQgZmlyc3QuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKG5ld0FzcGVjdCAmJiBuZXdBc3BlY3QuZW50aXR5TWFuYWdlcikge1xyXG4gICAgICAgIGVudGl0eU1hbmFnZXIgPSBuZXdBc3BlY3QuZW50aXR5TWFuYWdlcjtcclxuICAgICAgICBpZiAoIWVudGl0eU1hbmFnZXIhLmlzTG9hZGluZykge1xyXG4gICAgICAgICAgZW50aXR5TWFuYWdlciEuYXR0YWNoRW50aXR5KGVudGl0eUFzcGVjdC5lbnRpdHkhLCBFbnRpdHlTdGF0ZS5BZGRlZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBwcm9jZXNzIHJlbGF0ZWQgdXBkYXRlcyAoIHRoZSBpbnZlcnNlIHJlbGF0aW9uc2hpcCkgZmlyc3Qgc28gdGhhdCBjb2xsZWN0aW9uIGR1cHMgY2hlY2sgd29ya3MgcHJvcGVybHkuXHJcbiAgLy8gdXBkYXRlIGludmVyc2UgcmVsYXRpb25zaGlwXHJcbiAgaWYgKGludmVyc2VQcm9wKSB7XHJcbiAgICAvLy9cclxuICAgIGlmIChpbnZlcnNlUHJvcC5pc1NjYWxhcikge1xyXG4gICAgICAvLyBFeGFtcGxlOiBiaWRpcmVjdGlvbmFsIG5hdlByb3BlcnR5OiAxLT4xOiBvcmRlciAtPiBpbnRlcm5hdGlvbmFsT3JkZXJcclxuICAgICAgLy8gb3JkZXIuaW50ZXJuYXRpb25hbE9yZGVyIDwtIGludGVybmF0aW9uYWxPcmRlciB8fCBudWxsXHJcbiAgICAgIC8vICAgID09PiAob2xkSW50ZXJuYXRpb25hbE9yZGVyLm9yZGVyID0gbnVsbClcclxuICAgICAgLy8gICAgPT0+IGludGVybmF0aW9uYWxPcmRlci5vcmRlciA9IG9yZGVyXHJcbiAgICAgIGlmIChvbGRWYWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgLy8gVE9ETzogbnVsbCAtPiBOdWxsRW50aXR5IGxhdGVyXHJcbiAgICAgICAgb2xkVmFsdWUuc2V0UHJvcGVydHkoaW52ZXJzZVByb3AubmFtZSwgbnVsbCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG5ld1ZhbHVlICE9IG51bGwpIHtcclxuICAgICAgICBuZXdWYWx1ZS5zZXRQcm9wZXJ0eShpbnZlcnNlUHJvcC5uYW1lLCBwYXJlbnQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBFeGFtcGxlOiBiaWRpcmVjdGlvbmFsIG5hdlByb3BlcnR5OiAxLT5uOiBvcmRlciAtPiBvcmRlckRldGFpbHNcclxuICAgICAgLy8gb3JkZXJEZXRhaWwub3JkZXIgPC0gbmV3T3JkZXIgfHwgbnVsbFxyXG4gICAgICAvLyAgICA9PT4gKG9sZE9yZGVyKS5vcmRlckRldGFpbHMucmVtb3ZlKG9yZGVyRGV0YWlsKVxyXG4gICAgICAvLyAgICA9PT4gb3JkZXIub3JkZXJEZXRhaWxzLnB1c2gobmV3T3JkZXIpXHJcbiAgICAgIGlmIChvbGRWYWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgbGV0IG9sZFNpYmxpbmdzID0gb2xkVmFsdWUuZ2V0UHJvcGVydHkoaW52ZXJzZVByb3AubmFtZSk7XHJcbiAgICAgICAgbGV0IGl4ID0gb2xkU2libGluZ3MuaW5kZXhPZihwYXJlbnQpO1xyXG4gICAgICAgIGlmIChpeCAhPT0gLTEpIHtcclxuICAgICAgICAgIG9sZFNpYmxpbmdzLnNwbGljZShpeCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChuZXdWYWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgbGV0IHNpYmxpbmdzID0gbmV3VmFsdWUuZ2V0UHJvcGVydHkoaW52ZXJzZVByb3AubmFtZSk7XHJcbiAgICAgICAgLy8gcmVjdXJzaW9uIGNoZWNrIGlmIGFscmVhZHkgaW4gdGhlIGNvbGxlY3Rpb24gaXMgcGVyZm9ybWVkIGJ5IHRoZSByZWxhdGlvbkFycmF5XHJcbiAgICAgICAgc2libGluZ3MucHVzaChwYXJlbnQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSBlbHNlIGlmIChwcm9wZXJ0eS5pbnZGb3JlaWduS2V5TmFtZXMgJiYgZW50aXR5TWFuYWdlciAmJiAhZW50aXR5TWFuYWdlci5faW5LZXlGaXh1cCkge1xyXG4gICAgbGV0IGludkZvcmVpZ25LZXlOYW1lcyA9IHByb3BlcnR5LmludkZvcmVpZ25LZXlOYW1lcztcclxuICAgIGlmIChuZXdWYWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgIC8vIEV4YW1wbGU6IHVuaWRpcmVjdGlvbmFsIG5hdlByb3BlcnR5OiAxLT4xOiBvcmRlciAtPiBpbnRlcm5hdGlvbmFsT3JkZXJcclxuICAgICAgLy8gb3JkZXIuSW50ZXJuYXRpb25hbE9yZGVyIDwtIGludGVybmF0aW9uYWxPcmRlclxyXG4gICAgICAvLyAgICA9PT4gaW50ZXJuYXRpb25hbE9yZGVyLm9yZGVySWQgPSBvcmRlcklkXHJcbiAgICAgIC8vICAgICAgYW5kXHJcbiAgICAgIC8vIEV4YW1wbGU6IHVuaWRpcmVjdGlvbmFsIG5hdlByb3BlcnR5OiAxLT5uOiBvcmRlciAtPiBvcmRlckRldGFpbHNcclxuICAgICAgLy8gb3JkZXJEZXRhaWwub3JkZXIgPC14eHggbmV3T3JkZXJcclxuICAgICAgLy8gICAgPT0+IENBTidUIEhBUFBFTiBiZWNhdXNlIGlmIHVuaWRpcmVjdGlvbmFsIGJlY2F1c2Ugb3JkZXJEZXRhaWwgd2lsbCBub3QgaGF2ZSBhbiBvcmRlciBwcm9wXHJcbiAgICAgIGxldCBwa1ZhbHVlcyA9IHBhcmVudC5lbnRpdHlBc3BlY3QuZ2V0S2V5KCkudmFsdWVzO1xyXG4gICAgICBpbnZGb3JlaWduS2V5TmFtZXMuZm9yRWFjaCggKGZrTmFtZSwgaSkgPT4ge1xyXG4gICAgICAgIG5ld1ZhbHVlIS5zZXRQcm9wZXJ0eShma05hbWUsIHBrVmFsdWVzW2ldKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBFeGFtcGxlOiB1bmlkaXJlY3Rpb25hbCBuYXZQcm9wZXJ0eTogMS0+MTogb3JkZXIgLT4gaW50ZXJuYXRpb25hbE9yZGVyXHJcbiAgICAgIC8vIG9yZGVyLmludGVybmF0aW9uYWxPcmRlciA8LSBudWxsXHJcbiAgICAgIC8vICAgID09PiAob2xkIGludGVybmF0aW9uYWxPcmRlcikub3JkZXJJZCA9IG51bGxcclxuICAgICAgLy8gICAgICAgIGFuZFxyXG4gICAgICAvLyBFeGFtcGxlOiB1bmlkaXJlY3Rpb25hbCBuYXZQcm9wZXJ0eTogMS0+bjogb3JkZXIgLT4gb3JkZXJEZXRhaWxzXHJcbiAgICAgIC8vIG9yZGVyRGV0YWlsLm9yZGVyIDwteHh4IG5ld09yZGVyXHJcbiAgICAgIC8vICAgID09PiBDQU4nVCBIQVBQRU4gYmVjYXVzZSBpZiB1bmlkaXJlY3Rpb25hbCBiZWNhdXNlIG9yZGVyRGV0YWlsIHdpbGwgbm90IGhhdmUgYW4gb3JkZXIgcHJvcFxyXG4gICAgICBpZiAob2xkVmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICAgIGludkZvcmVpZ25LZXlOYW1lcy5mb3JFYWNoKCAoZmtOYW1lKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZmtQcm9wID0gb2xkVmFsdWUuZW50aXR5VHlwZS5nZXRQcm9wZXJ0eShma05hbWUpO1xyXG4gICAgICAgICAgaWYgKCFma1Byb3AuaXNQYXJ0T2ZLZXkpIHtcclxuICAgICAgICAgICAgLy8gZG9uJ3QgdXBkYXRlIHdpdGggbnVsbCBpZiBmayBpcyBwYXJ0IG9mIHRoZSBrZXlcclxuICAgICAgICAgICAgb2xkVmFsdWUuc2V0UHJvcGVydHkoZmtOYW1lLCBudWxsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmF3QWNjZXNzb3JGbihuZXdWYWx1ZSk7XHJcblxyXG4gIHVwZGF0ZVN0YXRlQW5kVmFsaWRhdGUoY29udGV4dCk7XHJcblxyXG4gIC8vIHVwZGF0ZSBmayBkYXRhIHByb3BlcnR5IC0gdGhpcyBjYW4gb25seSBvY2N1ciBpZiB0aGlzIG5hdlByb3BlcnR5IGhhc1xyXG4gIC8vIGEgY29ycmVzcG9uZGluZyBmayBvbiB0aGlzIGVudGl0eS5cclxuICBpZiAocHJvcGVydHkucmVsYXRlZERhdGFQcm9wZXJ0aWVzKSB7XHJcbiAgICBsZXQgZW50aXR5U3RhdGUgPSBlbnRpdHlBc3BlY3QuZW50aXR5U3RhdGU7XHJcbiAgICAvLyBpZiBlaXRoZXIgc2lkZSBvZiBuYXYgcHJvcCBpcyBkZXRhY2hlZCBkb24ndCBjbGVhciBma3MuIE5vdGU6IG9sZFZhbHVlIGluIG5leHQgbGluZSBjYW5ub3QgYmUgbnVsbCBzbyBubyBjaGVjayBpcyBuZWVkZWQuXHJcbiAgICBpZiAobmV3VmFsdWUgPT0gbnVsbCAmJiAoZW50aXR5U3RhdGUuaXNEZXRhY2hlZCgpIHx8IG9sZFZhbHVlLmVudGl0eUFzcGVjdC5lbnRpdHlTdGF0ZS5pc0RldGFjaGVkKCkpKSByZXR1cm47XHJcbiAgICBpZiAoZW50aXR5U3RhdGUuaXNEZWxldGVkKCkpIHJldHVybjtcclxuXHJcbiAgICAvLyB3ZSBtYXkgaGF2ZSBpbnZlcnNlIHByb3BzIGluZGljYXRpbmcgdGhlIHJlbGF0ZWQgcHJvcCBvbiB0aGUgb3RoZXIgZW50aXR5LCBpZiBpdCBpcyBub3QgdGhlIG90aGVyIGVudGl0eSdzIFBLXHJcbiAgICBsZXQgaW52ZXJzZUtleVByb3BzID0gcHJvcGVydHkuaW52Rm9yZWlnbktleU5hbWVzO1xyXG4gICAgaWYgKCEoaW52ZXJzZUtleVByb3BzICYmIGludmVyc2VLZXlQcm9wcy5sZW5ndGgpKSB7XHJcbiAgICAgIC8vIG90aGVyd2lzZSwgdGhpcyBwcm9wIGlzIHJlbGF0ZWQgdG8gdGhlIG90aGVyIGVudGl0eSdzIFBLXHJcbiAgICAgIGludmVyc2VLZXlQcm9wcyA9IHByb3BlcnR5LmVudGl0eVR5cGUua2V5UHJvcGVydGllcy5tYXAoayA9PiBrLm5hbWUpO1xyXG4gICAgfVxyXG4gICAgaW52ZXJzZUtleVByb3BzLmZvckVhY2goZnVuY3Rpb24gKGtleVByb3AsIGkpIHtcclxuICAgICAgbGV0IHJlbGF0ZWREYXRhUHJvcCA9IHByb3BlcnR5LnJlbGF0ZWREYXRhUHJvcGVydGllc1tpXTtcclxuICAgICAgLy8gRG8gbm90IHRyYXNoIHJlbGF0ZWQgcHJvcGVydHkgaWYgaXQgaXMgcGFydCBvZiB0aGF0IGVudGl0eSdzIGtleVxyXG4gICAgICBpZiAobmV3VmFsdWUgfHwgIXJlbGF0ZWREYXRhUHJvcC5pc1BhcnRPZktleSkge1xyXG4gICAgICAgIGxldCByZWxhdGVkVmFsdWUgPSBuZXdWYWx1ZSA/IG5ld1ZhbHVlLmdldFByb3BlcnR5KGtleVByb3ApIDogcmVsYXRlZERhdGFQcm9wLmRlZmF1bHRWYWx1ZTtcclxuICAgICAgICBwYXJlbnQuc2V0UHJvcGVydHkocmVsYXRlZERhdGFQcm9wLm5hbWUsIHJlbGF0ZWRWYWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gcG9zdENoYW5nZUV2ZW50cyhjb250ZXh0OiBJQ29udGV4dCkge1xyXG4gIGxldCBlbnRpdHlBc3BlY3QgPSBjb250ZXh0LmVudGl0eUFzcGVjdDtcclxuXHJcbiAgbGV0IGVudGl0eU1hbmFnZXIgPSBlbnRpdHlBc3BlY3QuZW50aXR5TWFuYWdlcjtcclxuICBsZXQgZW50aXR5ID0gZW50aXR5QXNwZWN0LmVudGl0eTtcclxuXHJcbiAgbGV0IHByb3BDaGFuZ2VkQXJncyA9IHsgZW50aXR5OiBlbnRpdHkhLCBwYXJlbnQ6IGNvbnRleHQucGFyZW50LCBwcm9wZXJ0eTogY29udGV4dC5wcm9wZXJ0eSwgcHJvcGVydHlOYW1lOiBjb250ZXh0LnByb3BlcnR5TmFtZSwgb2xkVmFsdWU6IGNvbnRleHQub2xkVmFsdWUsIG5ld1ZhbHVlOiBjb250ZXh0Lm5ld1ZhbHVlIH07XHJcbiAgaWYgKGVudGl0eU1hbmFnZXIpIHtcclxuICAgIC8vIHByb3BlcnR5Q2hhbmdlZCB3aWxsIGJlIGZpcmVkIGR1cmluZyBsb2FkaW5nIGJ1dCB3ZSBvbmx5IHdhbnQgdG8gZmlyZSBpdCBvbmNlIHBlciBlbnRpdHksIG5vdCBvbmNlIHBlciBwcm9wZXJ0eS5cclxuICAgIC8vIHNvIHByb3BlcnR5Q2hhbmdlZCBpcyBmaXJlZCBpbiB0aGUgZW50aXR5TWFuYWdlciBtZXJnZUVudGl0eSBtZXRob2QgaWYgbm90IGZpcmVkIGhlcmUuXHJcbiAgICBpZiAoKCFlbnRpdHlNYW5hZ2VyLmlzTG9hZGluZykgJiYgKCFlbnRpdHlNYW5hZ2VyLmlzUmVqZWN0aW5nQ2hhbmdlcykpIHtcclxuICAgICAgZW50aXR5QXNwZWN0LnByb3BlcnR5Q2hhbmdlZC5wdWJsaXNoKHByb3BDaGFuZ2VkQXJncyk7XHJcbiAgICAgIC8vIGRvbid0IGZpcmUgZW50aXR5Q2hhbmdlZCBldmVudCBpZiBwcm9wZXJ0eUNoYW5nZWQgaXMgc3VwcHJlc3NlZC5cclxuICAgICAgZW50aXR5TWFuYWdlci5lbnRpdHlDaGFuZ2VkLnB1Ymxpc2goeyBlbnRpdHlBY3Rpb246IEVudGl0eUFjdGlvbi5Qcm9wZXJ0eUNoYW5nZSwgZW50aXR5OiBlbnRpdHksIGFyZ3M6IHByb3BDaGFuZ2VkQXJncyB9KTtcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgZW50aXR5QXNwZWN0LnByb3BlcnR5Q2hhbmdlZC5wdWJsaXNoKHByb3BDaGFuZ2VkQXJncyk7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB1cGRhdGVTdGF0ZUFuZFZhbGlkYXRlKGNvbnRleHQ6IElDb250ZXh0KSB7XHJcbiAgbGV0IGVudGl0eUFzcGVjdCA9IGNvbnRleHQuZW50aXR5QXNwZWN0O1xyXG4gIGxldCBlbnRpdHlNYW5hZ2VyID0gZW50aXR5QXNwZWN0LmVudGl0eU1hbmFnZXI7XHJcbiAgaWYgKGVudGl0eU1hbmFnZXIgPT0gbnVsbCB8fCBlbnRpdHlNYW5hZ2VyLmlzTG9hZGluZykgcmV0dXJuO1xyXG4gIGxldCBwcm9wZXJ0eSA9IGNvbnRleHQucHJvcGVydHk7XHJcblxyXG4gIGlmIChlbnRpdHlBc3BlY3QuZW50aXR5U3RhdGUuaXNVbmNoYW5nZWQoKSAmJiAhcHJvcGVydHkuaXNVbm1hcHBlZCkge1xyXG4gICAgZW50aXR5QXNwZWN0LnNldE1vZGlmaWVkKCk7XHJcbiAgfVxyXG5cclxuICBpZiAoZW50aXR5TWFuYWdlci52YWxpZGF0aW9uT3B0aW9ucy52YWxpZGF0ZU9uUHJvcGVydHlDaGFuZ2UpIHtcclxuICAgIC8vIGVudGl0eUFzcGVjdC5lbnRpdHkgaXMgTk9UIHRoZSBzYW1lIGFzIHBhcmVudCBpbiB0aGUgY29kZSBiZWxvdy4gSXQncyB1c2UgaXMgZGVsaWJlcmF0ZS5cclxuICAgIGVudGl0eUFzcGVjdC5fdmFsaWRhdGVQcm9wZXJ0eShjb250ZXh0Lm5ld1ZhbHVlLFxyXG4gICAgICAgIHsgZW50aXR5OiBlbnRpdHlBc3BlY3QuZW50aXR5LCBwcm9wZXJ0eTogcHJvcGVydHksIHByb3BlcnR5TmFtZTogY29udGV4dC5wcm9wZXJ0eU5hbWUsIG9sZFZhbHVlOiBjb250ZXh0Lm9sZFZhbHVlIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
package/esm2015/src/enum.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright 2012-
|
|
2
|
+
* Copyright 2012-2023 IdeaBlade, Inc. All Rights Reserved.
|
|
3
3
|
* Use, reproduction, distribution, and modification of this code is subject to the terms and
|
|
4
4
|
* conditions of the IdeaBlade Breeze license, available at http://www.breezejs.com/license
|
|
5
5
|
*
|
|
@@ -138,4 +138,4 @@ export class BreezeEnum {
|
|
|
138
138
|
};
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2JyZWV6ZS1jbGllbnQvIiwic291cmNlcyI6WyJzcmMvZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXdDRTtBQUNGLE1BQU0sT0FBTyxVQUFVO0lBU3JCLE9BQU87SUFDUCxZQUFZLGFBQXNCO1FBQ2hDLElBQUksYUFBYSxFQUFFO1lBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDN0U7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxVQUFVO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBWTtRQUMxQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxjQUFjO1FBQ25CLElBQUksSUFBSSxDQUFDLHdCQUF3QjtZQUFFLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDO1FBQ3hFLElBQUksTUFBTSxHQUEwQyxFQUFFLENBQUM7UUFFdkQsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUM1QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3JCLElBQUksSUFBSSxZQUFZLFVBQVUsRUFBRTtvQkFDOUIsTUFBTSxDQUFDLElBQUksQ0FBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQzFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO2lCQUNqQjthQUNGO1NBQ0Y7UUFDRCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsTUFBTSxDQUFDO1FBQ3ZDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBZTtRQUM3QixJQUFJLENBQUMsQ0FBQyxHQUFHLFlBQVksVUFBVSxDQUFDLEVBQUU7WUFDaEMsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUdELE1BQU07SUFDTiwwRkFBMEY7SUFDMUYsNENBQTRDO0lBQzVDLGtEQUFrRDtJQUNsRCw4QkFBOEI7SUFDOUIsV0FBVztJQUNYLE1BQU07SUFDTiw4QkFBOEI7SUFDOUIsc0NBQXNDO0lBQ3RDLEtBQUs7SUFFTCwyQ0FBMkM7SUFDM0MsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLE1BQU07UUFDSixPQUFPO1lBQ0wsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSyxJQUFJLENBQUMsV0FBbUIsQ0FBQyxJQUFJO1lBQ2hFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNoQixDQUFDO0lBQ0osQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IDIwMTItMjAyMSBJZGVhQmxhZGUsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICBcclxuICogVXNlLCByZXByb2R1Y3Rpb24sIGRpc3RyaWJ1dGlvbiwgYW5kIG1vZGlmaWNhdGlvbiBvZiB0aGlzIGNvZGUgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIFxyXG4gKiBjb25kaXRpb25zIG9mIHRoZSBJZGVhQmxhZGUgQnJlZXplIGxpY2Vuc2UsIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmJyZWV6ZWpzLmNvbS9saWNlbnNlXHJcbiAqXHJcbiAqIEF1dGhvcjogSmF5IFRyYWJhbmRcclxuICovXHJcblxyXG4vKipcclxuQmFzZSBjbGFzcyBmb3IgYWxsIEJyZWV6ZSBlbnVtZXJhdGlvbnMsIHN1Y2ggYXMgRW50aXR5U3RhdGUsIERhdGFUeXBlLCBGZXRjaFN0cmF0ZWd5LCBNZXJnZVN0cmF0ZWd5IGV0Yy5cclxuQSBCcmVlemUgRW51bSBpcyBhIG5hbWVzcGFjZWQgc2V0IG9mIGNvbnN0YW50IHZhbHVlcy4gIEVhY2ggRW51bSBjb25zaXN0cyBvZiBhIGdyb3VwIG9mIHJlbGF0ZWQgY29uc3RhbnRzLCBjYWxsZWQgJ3N5bWJvbHMnLlxyXG5Vbmxpa2UgZW51bXMgaW4gc29tZSBvdGhlciBlbnZpcm9ubWVudHMsIGVhY2ggJ3N5bWJvbCcgY2FuIGhhdmUgYm90aCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzLlxyXG4+ICAgICBjbGFzcyBEYXlPZldlZWsgZXh0ZW5kcyBCcmVlemVFbnVtIHtcclxuPiAgICAgICBkYXlJbmRleDogbnVtYmVyO1xyXG4+ICAgICAgIGlzV2Vla2VuZD86IGJvb2xlYW47XHJcbj4gICAgICAgbmV4dERheSgpIHtcclxuPiAgICAgICAgIGxldCBuZXh0SW5kZXggPSAodGhpcy5kYXlJbmRleCArIDEpICUgNztcclxuPiAgICAgICAgIHJldHVybiBEYXlPZldlZWsuZ2V0U3ltYm9scygpW25leHRJbmRleF07XHJcbj4gICAgICAgfVxyXG4+XHJcbj4gICAgICAgc3RhdGljIE1vbmRheSA9IG5ldyBEYXlPZldlZWsoIHsgZGF5SW5kZXg6IDB9KTtcclxuPiAgICAgICBzdGF0aWMgVHVlc2RheSA9IG5ldyBEYXlPZldlZWsoIHsgZGF5SW5kZXg6IDEgfSk7XHJcbj4gICAgICAgc3RhdGljIFdlZG5lc2RheSA9IG5ldyBEYXlPZldlZWsoIHsgZGF5SW5kZXg6IDIgfSk7XHJcbj4gICAgICAgc3RhdGljIFRodXJzZGF5ID0gbmV3IERheU9mV2VlayggeyBkYXlJbmRleDogMyB9KTtcclxuPiAgICAgICBzdGF0aWMgRnJpZGF5ID0gbmV3IERheU9mV2VlayggeyBkYXlJbmRleDogNCB9KTtcclxuPiAgICAgICBzdGF0aWMgU2F0dXJkYXkgPSBuZXcgRGF5T2ZXZWVrKCB7IGRheUluZGV4OiA1LCBpc1dlZWtlbmQ6IHRydWUgfSk7XHJcbj4gICAgICAgc3RhdGljIFN1bmRheSA9IG5ldyBEYXlPZldlZWsoIHsgZGF5SW5kZXg6IDYsIGlzV2Vla2VuZDogdHJ1ZSB9KTtcclxuPiAgICAgfVxyXG4+XHJcbj4gICAgIGRlc2NyaWJlKFwiRGF5T2ZXZWVrXCIsICgpID0+IHtcclxuPiAgICAgICB0ZXN0KFwic2hvdWxkIHN1cHBvcnQgZnVsbCBlbnVtIGNhcGFiaWxpdGllc1wiLCBmdW5jdGlvbigpIHtcclxuPiAgICAgICAgIC8vIC8vIGN1c3RvbSBtZXRob2RzXHJcbj4gICAgICAgICBsZXQgZG93U3ltYm9scyA9IERheU9mV2Vlay5nZXRTeW1ib2xzKCk7XHJcbj4gICAgICAgICBleHBlY3QoZG93U3ltYm9scy5sZW5ndGgpLnRvQmUoNyk7XHJcbj4gICAgICAgICBleHBlY3QoRGF5T2ZXZWVrLk1vbmRheS5uZXh0RGF5KCkpLnRvQmUoRGF5T2ZXZWVrLlR1ZXNkYXkpO1xyXG4+ICAgICAgICAgZXhwZWN0KERheU9mV2Vlay5TdW5kYXkubmV4dERheSgpKS50b0JlKERheU9mV2Vlay5Nb25kYXkpO1xyXG4+ICAgICAgIC8vIC8vIGN1c3RvbSBwcm9wZXJ0aWVzXHJcbj4gICAgICAgICBleHBlY3QoRGF5T2ZXZWVrLlR1ZXNkYXkuaXNXZWVrZW5kKS50b0JlKHVuZGVmaW5lZCk7XHJcbj4gICAgICAgICBleHBlY3QoRGF5T2ZXZWVrLlNhdHVyZGF5LmlzV2Vla2VuZCkudG9CZSh0cnVlKTtcclxuPiAgICAgICAvLyAvLyBTdGFuZGFyZCBlbnVtIGNhcGFiaWxpdGllc1xyXG4+ICAgICAgICAgZXhwZWN0KERheU9mV2Vlay5UaHVyc2RheSBpbnN0YW5jZW9mIERheU9mV2VlaykudG9CZSh0cnVlKTtcclxuPiAgICAgICAgIGV4cGVjdChCcmVlemVFbnVtLmlzU3ltYm9sKERheU9mV2Vlay5XZWRuZXNkYXkpKS50b0JlKHRydWUpO1xyXG4+ICAgICAgICAgZXhwZWN0KERheU9mV2Vlay5jb250YWlucyhEYXlPZldlZWsuVGh1cnNkYXkpKS50b0JlKHRydWUpO1xyXG4+ICAgICAgICAgZXhwZWN0KERheU9mV2Vlay5GcmlkYXkudG9TdHJpbmcoKSkudG9CZShcIkZyaWRheVwiKTtcclxuPiAgICAgICB9KTtcclxuPiAgIH0pO1xyXG5Ob3RlIHRoYXQgd2UgaGF2ZSBFcnJvclsneCddID0gLi4uIGluIHNvbWUgcGxhY2VzIGluIHRoZSBjb2RlIHRvIHByZXZlbnQgVGVyc2VyIGZyb20gb3B0aW1pemluZyBvdXQgc29tZSBpbXBvcnRhbnQgY2FsbHMuXHJcbkBkeW5hbWljXHJcbiovXHJcbmV4cG9ydCBjbGFzcyBCcmVlemVFbnVtIHtcclxuICAvLyAvLyBUT0RPOiB0aGluayBhYm91dCBDb21wb3NpdGVFbnVtIChmbGFncyBpbXBsKS5cclxuICAvKiogVGhlIG5hbWUgb2YgdGhpcyBzeW1ib2wgKi9cclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgLyoqIFR5cGUgb2YgdGhlIGVudW07IHNldCBpbiBwcm90b3R5cGUgb2YgZWFjaCBlbnVtICovXHJcbiAgXyR0eXBlTmFtZTogc3RyaW5nO1xyXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gIHN0YXRpYyBfcmVzb2x2ZWROYW1lc0FuZFN5bWJvbHM6IHsgbmFtZTogc3RyaW5nLCBzeW1ib2w6IEJyZWV6ZUVudW0gfVtdO1xyXG5cclxuICAvKiogICovXHJcbiAgY29uc3RydWN0b3IocHJvcGVydGllc09iaj86IE9iamVjdCkge1xyXG4gICAgaWYgKHByb3BlcnRpZXNPYmopIHtcclxuICAgICAgT2JqZWN0LmtleXMocHJvcGVydGllc09iaikuZm9yRWFjaCgoa2V5KSA9PiB0aGlzW2tleV0gPSBwcm9wZXJ0aWVzT2JqW2tleV0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgUmV0dXJucyBhbGwgb2YgdGhlIHN5bWJvbHMgY29udGFpbmVkIHdpdGhpbiB0aGlzIEVudW0uXHJcbiAgPiAgICAgbGV0IHN5bWJvbHMgPSBEYXlPZldlZWsuZ2V0U3ltYm9scygpO1xyXG4gIEByZXR1cm4gQWxsIG9mIHRoZSBzeW1ib2xzIGNvbnRhaW5lZCB3aXRoaW4gdGhpcyBFbnVtLlxyXG4gICoqL1xyXG4gIHN0YXRpYyBnZXRTeW1ib2xzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZVN5bWJvbHMoKS5tYXAoa3MgPT4ga3Muc3ltYm9sKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybnMgdGhlIG5hbWVzIG9mIGFsbCBvZiB0aGUgc3ltYm9scyBjb250YWluZWQgd2l0aGluIHRoaXMgRW51bS5cclxuICA+ICAgICBsZXQgc3ltYm9scyA9IERheU9mV2Vlay5nZXROYW1lcygpO1xyXG4gIEByZXR1cm4gIEFsbCBvZiB0aGUgbmFtZXMgb2YgdGhlIHN5bWJvbHMgY29udGFpbmVkIHdpdGhpbiB0aGlzIEVudW0uXHJcbiAgKiovXHJcbiAgc3RhdGljIGdldE5hbWVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZVN5bWJvbHMoKS5tYXAoa3MgPT4ga3MubmFtZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBSZXR1cm5zIGFuIEVudW0gc3ltYm9sIGdpdmVuIGl0cyBuYW1lLlxyXG4gID4gICAgIGxldCBkYXlPZldlZWsgPSBEYXlPZldlZWsuZnJvbShcIlRodXJzZGF5XCIpO1xyXG4gID4gICAgIC8vIG5vd2RheU9mV2VlayA9PT0gRGF5T2ZXZWVrLlRodXJzZGF5XHJcbiAgQHBhcmFtIG5hbWUgLSBOYW1lIGZvciB3aGljaCBhbiBlbnVtIHN5bWJvbCBzaG91bGQgYmUgcmV0dXJuZWQuXHJcbiAgQHJldHVybiBUaGUgc3ltYm9sIHRoYXQgbWF0Y2hlcyB0aGUgbmFtZSBvciAndW5kZWZpbmVkJyBpZiBub3QgZm91bmQuXHJcbiAgKiovXHJcbiAgc3RhdGljIGZyb21OYW1lKG5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXNbbmFtZV07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBTZWFscyB0aGlzIGVudW0gc28gdGhhdCBubyBtb3JlIHN5bWJvbHMgbWF5IGJlIGFkZGVkIHRvIGl0LiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBhbGwgc3ltYm9sc1xyXG4gIGhhdmUgYWxyZWFkeSBiZWVuIGFkZGVkIHRvIHRoZSBFbnVtLiBUaGlzIG1ldGhvZCBhbHNvIHNldHMgdGhlICduYW1lJyBwcm9wZXJ0eSBvbiBlYWNoIG9mIHRoZSBzeW1ib2xzLlxyXG4gID4gICAgIERheU9mV2Vlay5yZXNvbHZlU3ltYm9scygpO1xyXG4gICoqL1xyXG4gIHN0YXRpYyByZXNvbHZlU3ltYm9scygpIHtcclxuICAgIGlmICh0aGlzLl9yZXNvbHZlZE5hbWVzQW5kU3ltYm9scykgcmV0dXJuIHRoaXMuX3Jlc29sdmVkTmFtZXNBbmRTeW1ib2xzO1xyXG4gICAgbGV0IHJlc3VsdDoge25hbWU6IHN0cmluZywgc3ltYm9sOiBCcmVlemVFbnVtIH1bXSA9IFtdO1xyXG5cclxuICAgIGZvciAobGV0IGtleSBpbiB0aGlzKSB7XHJcbiAgICAgIGlmICh0aGlzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICBsZXQgc3ltYiA9IHRoaXNba2V5XTtcclxuICAgICAgICBpZiAoc3ltYiBpbnN0YW5jZW9mIEJyZWV6ZUVudW0pIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKCB7IG5hbWU6IGtleSwgc3ltYm9sOiBzeW1iIH0pO1xyXG4gICAgICAgICAgdGhpc1trZXldID0gc3ltYjtcclxuICAgICAgICAgIHN5bWIubmFtZSA9IGtleTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuX3Jlc29sdmVkTmFtZXNBbmRTeW1ib2xzID0gcmVzdWx0O1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybnMgd2hldGhlciBhbiBFbnVtIGNvbnRhaW5zIGEgc3BlY2lmaWVkIHN5bWJvbC5cclxuICA+ICAgICBsZXQgc3ltYm9sID0gRGF5T2ZXZWVrLkZyaWRheTtcclxuICA+ICAgICBpZiAoRGF5T2ZXZWVrLmNvbnRhaW5zKHN5bWJvbCkpIHtcclxuICA+ICAgICAgICAgLy8gZG8gc29tZXRoaW5nXHJcbiAgPiAgICAgfVxyXG4gIEBwYXJhbSBzeW0gLSBPYmplY3Qgb3Igc3ltYm9sIHRvIHRlc3QuXHJcbiAgQHJldHVybiBXaGV0aGVyIHRoaXMgRW51bSBjb250YWlucyB0aGUgc3BlY2lmaWVkIHN5bWJvbC5cclxuICAqKi9cclxuICBzdGF0aWMgY29udGFpbnMoc3ltOiBCcmVlemVFbnVtKSB7XHJcbiAgICBpZiAoIShzeW0gaW5zdGFuY2VvZiBCcmVlemVFbnVtKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXNbc3ltLm5hbWVdICE9IG51bGw7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gLyoqXHJcbiAgLy8gQ2hlY2tzIGlmIGFuIG9iamVjdCBpcyBhbiBFbnVtICdzeW1ib2wnLiBVc2UgdGhlICdjb250YWlucycgbWV0aG9kIGluc3RlYWQgb2YgdGhpcyBvbmUgXHJcbiAgLy8gaWYgeW91IHdhbnQgdG8gdGVzdCBmb3IgYSBzcGVjaWZpYyBFbnVtLiBcclxuICAvLyA+ICAgICBpZiAoRW51bS5pc1N5bWJvbChEYXlPZldlZWsuV2VkbmVzZGF5KSkge1xyXG4gIC8vID4gICAgICAgLy8gZG8gc29tZXRoaW5nIC4uLlxyXG4gIC8vID4gICAgIH07XHJcbiAgLy8gKiovXHJcbiAgLy8gc3RhdGljIGlzU3ltYm9sKG9iajogYW55KSB7XHJcbiAgLy8gICByZXR1cm4gb2JqIGluc3RhbmNlb2YgQnJlZXplRW51bTtcclxuICAvLyB9O1xyXG5cclxuICAvKiogUmV0dXJucyB0aGUgc3RyaW5nIG5hbWUgb2YgdGhpcyBFbnVtICovXHJcbiAgdG9TdHJpbmcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJldHVybiBlbnVtIG5hbWUgYW5kIHN5bWJvbCBuYW1lICovXHJcbiAgdG9KU09OKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgXyR0eXBlTmFtZTogdGhpc1snXyR0eXBlTmFtZSddIHx8ICh0aGlzLmNvbnN0cnVjdG9yIGFzIGFueSkubmFtZSxcclxuICAgICAgbmFtZTogdGhpcy5uYW1lXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG4iXX0=
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2JyZWV6ZS1jbGllbnQvIiwic291cmNlcyI6WyJzcmMvZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXdDRTtBQUNGLE1BQU0sT0FBTyxVQUFVO0lBU3JCLE9BQU87SUFDUCxZQUFZLGFBQXNCO1FBQ2hDLElBQUksYUFBYSxFQUFFO1lBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDN0U7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxVQUFVO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBWTtRQUMxQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxjQUFjO1FBQ25CLElBQUksSUFBSSxDQUFDLHdCQUF3QjtZQUFFLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDO1FBQ3hFLElBQUksTUFBTSxHQUEwQyxFQUFFLENBQUM7UUFFdkQsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUM1QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3JCLElBQUksSUFBSSxZQUFZLFVBQVUsRUFBRTtvQkFDOUIsTUFBTSxDQUFDLElBQUksQ0FBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQzFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO2lCQUNqQjthQUNGO1NBQ0Y7UUFDRCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsTUFBTSxDQUFDO1FBQ3ZDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBZTtRQUM3QixJQUFJLENBQUMsQ0FBQyxHQUFHLFlBQVksVUFBVSxDQUFDLEVBQUU7WUFDaEMsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUdELE1BQU07SUFDTiwwRkFBMEY7SUFDMUYsNENBQTRDO0lBQzVDLGtEQUFrRDtJQUNsRCw4QkFBOEI7SUFDOUIsV0FBVztJQUNYLE1BQU07SUFDTiw4QkFBOEI7SUFDOUIsc0NBQXNDO0lBQ3RDLEtBQUs7SUFFTCwyQ0FBMkM7SUFDM0MsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLE1BQU07UUFDSixPQUFPO1lBQ0wsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSyxJQUFJLENBQUMsV0FBbUIsQ0FBQyxJQUFJO1lBQ2hFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNoQixDQUFDO0lBQ0osQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IDIwMTItMjAyMyBJZGVhQmxhZGUsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICBcclxuICogVXNlLCByZXByb2R1Y3Rpb24sIGRpc3RyaWJ1dGlvbiwgYW5kIG1vZGlmaWNhdGlvbiBvZiB0aGlzIGNvZGUgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIFxyXG4gKiBjb25kaXRpb25zIG9mIHRoZSBJZGVhQmxhZGUgQnJlZXplIGxpY2Vuc2UsIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmJyZWV6ZWpzLmNvbS9saWNlbnNlXHJcbiAqXHJcbiAqIEF1dGhvcjogSmF5IFRyYWJhbmRcclxuICovXHJcblxyXG4vKipcclxuQmFzZSBjbGFzcyBmb3IgYWxsIEJyZWV6ZSBlbnVtZXJhdGlvbnMsIHN1Y2ggYXMgRW50aXR5U3RhdGUsIERhdGFUeXBlLCBGZXRjaFN0cmF0ZWd5LCBNZXJnZVN0cmF0ZWd5IGV0Yy5cclxuQSBCcmVlemUgRW51bSBpcyBhIG5hbWVzcGFjZWQgc2V0IG9mIGNvbnN0YW50IHZhbHVlcy4gIEVhY2ggRW51bSBjb25zaXN0cyBvZiBhIGdyb3VwIG9mIHJlbGF0ZWQgY29uc3RhbnRzLCBjYWxsZWQgJ3N5bWJvbHMnLlxyXG5Vbmxpa2UgZW51bXMgaW4gc29tZSBvdGhlciBlbnZpcm9ubWVudHMsIGVhY2ggJ3N5bWJvbCcgY2FuIGhhdmUgYm90aCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzLlxyXG4+ICAgICBjbGFzcyBEYXlPZldlZWsgZXh0ZW5kcyBCcmVlemVFbnVtIHtcclxuPiAgICAgICBkYXlJbmRleDogbnVtYmVyO1xyXG4+ICAgICAgIGlzV2Vla2VuZD86IGJvb2xlYW47XHJcbj4gICAgICAgbmV4dERheSgpIHtcclxuPiAgICAgICAgIGxldCBuZXh0SW5kZXggPSAodGhpcy5kYXlJbmRleCArIDEpICUgNztcclxuPiAgICAgICAgIHJldHVybiBEYXlPZldlZWsuZ2V0U3ltYm9scygpW25leHRJbmRleF07XHJcbj4gICAgICAgfVxyXG4+XHJcbj4gICAgICAgc3RhdGljIE1vbmRheSA9IG5ldyBEYXlPZldlZWsoIHsgZGF5SW5kZXg6IDB9KTtcclxuPiAgICAgICBzdGF0aWMgVHVlc2RheSA9IG5ldyBEYXlPZldlZWsoIHsgZGF5SW5kZXg6IDEgfSk7XHJcbj4gICAgICAgc3RhdGljIFdlZG5lc2RheSA9IG5ldyBEYXlPZldlZWsoIHsgZGF5SW5kZXg6IDIgfSk7XHJcbj4gICAgICAgc3RhdGljIFRodXJzZGF5ID0gbmV3IERheU9mV2VlayggeyBkYXlJbmRleDogMyB9KTtcclxuPiAgICAgICBzdGF0aWMgRnJpZGF5ID0gbmV3IERheU9mV2VlayggeyBkYXlJbmRleDogNCB9KTtcclxuPiAgICAgICBzdGF0aWMgU2F0dXJkYXkgPSBuZXcgRGF5T2ZXZWVrKCB7IGRheUluZGV4OiA1LCBpc1dlZWtlbmQ6IHRydWUgfSk7XHJcbj4gICAgICAgc3RhdGljIFN1bmRheSA9IG5ldyBEYXlPZldlZWsoIHsgZGF5SW5kZXg6IDYsIGlzV2Vla2VuZDogdHJ1ZSB9KTtcclxuPiAgICAgfVxyXG4+XHJcbj4gICAgIGRlc2NyaWJlKFwiRGF5T2ZXZWVrXCIsICgpID0+IHtcclxuPiAgICAgICB0ZXN0KFwic2hvdWxkIHN1cHBvcnQgZnVsbCBlbnVtIGNhcGFiaWxpdGllc1wiLCBmdW5jdGlvbigpIHtcclxuPiAgICAgICAgIC8vIC8vIGN1c3RvbSBtZXRob2RzXHJcbj4gICAgICAgICBsZXQgZG93U3ltYm9scyA9IERheU9mV2Vlay5nZXRTeW1ib2xzKCk7XHJcbj4gICAgICAgICBleHBlY3QoZG93U3ltYm9scy5sZW5ndGgpLnRvQmUoNyk7XHJcbj4gICAgICAgICBleHBlY3QoRGF5T2ZXZWVrLk1vbmRheS5uZXh0RGF5KCkpLnRvQmUoRGF5T2ZXZWVrLlR1ZXNkYXkpO1xyXG4+ICAgICAgICAgZXhwZWN0KERheU9mV2Vlay5TdW5kYXkubmV4dERheSgpKS50b0JlKERheU9mV2Vlay5Nb25kYXkpO1xyXG4+ICAgICAgIC8vIC8vIGN1c3RvbSBwcm9wZXJ0aWVzXHJcbj4gICAgICAgICBleHBlY3QoRGF5T2ZXZWVrLlR1ZXNkYXkuaXNXZWVrZW5kKS50b0JlKHVuZGVmaW5lZCk7XHJcbj4gICAgICAgICBleHBlY3QoRGF5T2ZXZWVrLlNhdHVyZGF5LmlzV2Vla2VuZCkudG9CZSh0cnVlKTtcclxuPiAgICAgICAvLyAvLyBTdGFuZGFyZCBlbnVtIGNhcGFiaWxpdGllc1xyXG4+ICAgICAgICAgZXhwZWN0KERheU9mV2Vlay5UaHVyc2RheSBpbnN0YW5jZW9mIERheU9mV2VlaykudG9CZSh0cnVlKTtcclxuPiAgICAgICAgIGV4cGVjdChCcmVlemVFbnVtLmlzU3ltYm9sKERheU9mV2Vlay5XZWRuZXNkYXkpKS50b0JlKHRydWUpO1xyXG4+ICAgICAgICAgZXhwZWN0KERheU9mV2Vlay5jb250YWlucyhEYXlPZldlZWsuVGh1cnNkYXkpKS50b0JlKHRydWUpO1xyXG4+ICAgICAgICAgZXhwZWN0KERheU9mV2Vlay5GcmlkYXkudG9TdHJpbmcoKSkudG9CZShcIkZyaWRheVwiKTtcclxuPiAgICAgICB9KTtcclxuPiAgIH0pO1xyXG5Ob3RlIHRoYXQgd2UgaGF2ZSBFcnJvclsneCddID0gLi4uIGluIHNvbWUgcGxhY2VzIGluIHRoZSBjb2RlIHRvIHByZXZlbnQgVGVyc2VyIGZyb20gb3B0aW1pemluZyBvdXQgc29tZSBpbXBvcnRhbnQgY2FsbHMuXHJcbkBkeW5hbWljXHJcbiovXHJcbmV4cG9ydCBjbGFzcyBCcmVlemVFbnVtIHtcclxuICAvLyAvLyBUT0RPOiB0aGluayBhYm91dCBDb21wb3NpdGVFbnVtIChmbGFncyBpbXBsKS5cclxuICAvKiogVGhlIG5hbWUgb2YgdGhpcyBzeW1ib2wgKi9cclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgLyoqIFR5cGUgb2YgdGhlIGVudW07IHNldCBpbiBwcm90b3R5cGUgb2YgZWFjaCBlbnVtICovXHJcbiAgXyR0eXBlTmFtZTogc3RyaW5nO1xyXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gIHN0YXRpYyBfcmVzb2x2ZWROYW1lc0FuZFN5bWJvbHM6IHsgbmFtZTogc3RyaW5nLCBzeW1ib2w6IEJyZWV6ZUVudW0gfVtdO1xyXG5cclxuICAvKiogICovXHJcbiAgY29uc3RydWN0b3IocHJvcGVydGllc09iaj86IE9iamVjdCkge1xyXG4gICAgaWYgKHByb3BlcnRpZXNPYmopIHtcclxuICAgICAgT2JqZWN0LmtleXMocHJvcGVydGllc09iaikuZm9yRWFjaCgoa2V5KSA9PiB0aGlzW2tleV0gPSBwcm9wZXJ0aWVzT2JqW2tleV0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgUmV0dXJucyBhbGwgb2YgdGhlIHN5bWJvbHMgY29udGFpbmVkIHdpdGhpbiB0aGlzIEVudW0uXHJcbiAgPiAgICAgbGV0IHN5bWJvbHMgPSBEYXlPZldlZWsuZ2V0U3ltYm9scygpO1xyXG4gIEByZXR1cm4gQWxsIG9mIHRoZSBzeW1ib2xzIGNvbnRhaW5lZCB3aXRoaW4gdGhpcyBFbnVtLlxyXG4gICoqL1xyXG4gIHN0YXRpYyBnZXRTeW1ib2xzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZVN5bWJvbHMoKS5tYXAoa3MgPT4ga3Muc3ltYm9sKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybnMgdGhlIG5hbWVzIG9mIGFsbCBvZiB0aGUgc3ltYm9scyBjb250YWluZWQgd2l0aGluIHRoaXMgRW51bS5cclxuICA+ICAgICBsZXQgc3ltYm9scyA9IERheU9mV2Vlay5nZXROYW1lcygpO1xyXG4gIEByZXR1cm4gIEFsbCBvZiB0aGUgbmFtZXMgb2YgdGhlIHN5bWJvbHMgY29udGFpbmVkIHdpdGhpbiB0aGlzIEVudW0uXHJcbiAgKiovXHJcbiAgc3RhdGljIGdldE5hbWVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZVN5bWJvbHMoKS5tYXAoa3MgPT4ga3MubmFtZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBSZXR1cm5zIGFuIEVudW0gc3ltYm9sIGdpdmVuIGl0cyBuYW1lLlxyXG4gID4gICAgIGxldCBkYXlPZldlZWsgPSBEYXlPZldlZWsuZnJvbShcIlRodXJzZGF5XCIpO1xyXG4gID4gICAgIC8vIG5vd2RheU9mV2VlayA9PT0gRGF5T2ZXZWVrLlRodXJzZGF5XHJcbiAgQHBhcmFtIG5hbWUgLSBOYW1lIGZvciB3aGljaCBhbiBlbnVtIHN5bWJvbCBzaG91bGQgYmUgcmV0dXJuZWQuXHJcbiAgQHJldHVybiBUaGUgc3ltYm9sIHRoYXQgbWF0Y2hlcyB0aGUgbmFtZSBvciAndW5kZWZpbmVkJyBpZiBub3QgZm91bmQuXHJcbiAgKiovXHJcbiAgc3RhdGljIGZyb21OYW1lKG5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXNbbmFtZV07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBTZWFscyB0aGlzIGVudW0gc28gdGhhdCBubyBtb3JlIHN5bWJvbHMgbWF5IGJlIGFkZGVkIHRvIGl0LiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBhbGwgc3ltYm9sc1xyXG4gIGhhdmUgYWxyZWFkeSBiZWVuIGFkZGVkIHRvIHRoZSBFbnVtLiBUaGlzIG1ldGhvZCBhbHNvIHNldHMgdGhlICduYW1lJyBwcm9wZXJ0eSBvbiBlYWNoIG9mIHRoZSBzeW1ib2xzLlxyXG4gID4gICAgIERheU9mV2Vlay5yZXNvbHZlU3ltYm9scygpO1xyXG4gICoqL1xyXG4gIHN0YXRpYyByZXNvbHZlU3ltYm9scygpIHtcclxuICAgIGlmICh0aGlzLl9yZXNvbHZlZE5hbWVzQW5kU3ltYm9scykgcmV0dXJuIHRoaXMuX3Jlc29sdmVkTmFtZXNBbmRTeW1ib2xzO1xyXG4gICAgbGV0IHJlc3VsdDoge25hbWU6IHN0cmluZywgc3ltYm9sOiBCcmVlemVFbnVtIH1bXSA9IFtdO1xyXG5cclxuICAgIGZvciAobGV0IGtleSBpbiB0aGlzKSB7XHJcbiAgICAgIGlmICh0aGlzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICBsZXQgc3ltYiA9IHRoaXNba2V5XTtcclxuICAgICAgICBpZiAoc3ltYiBpbnN0YW5jZW9mIEJyZWV6ZUVudW0pIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKCB7IG5hbWU6IGtleSwgc3ltYm9sOiBzeW1iIH0pO1xyXG4gICAgICAgICAgdGhpc1trZXldID0gc3ltYjtcclxuICAgICAgICAgIHN5bWIubmFtZSA9IGtleTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuX3Jlc29sdmVkTmFtZXNBbmRTeW1ib2xzID0gcmVzdWx0O1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybnMgd2hldGhlciBhbiBFbnVtIGNvbnRhaW5zIGEgc3BlY2lmaWVkIHN5bWJvbC5cclxuICA+ICAgICBsZXQgc3ltYm9sID0gRGF5T2ZXZWVrLkZyaWRheTtcclxuICA+ICAgICBpZiAoRGF5T2ZXZWVrLmNvbnRhaW5zKHN5bWJvbCkpIHtcclxuICA+ICAgICAgICAgLy8gZG8gc29tZXRoaW5nXHJcbiAgPiAgICAgfVxyXG4gIEBwYXJhbSBzeW0gLSBPYmplY3Qgb3Igc3ltYm9sIHRvIHRlc3QuXHJcbiAgQHJldHVybiBXaGV0aGVyIHRoaXMgRW51bSBjb250YWlucyB0aGUgc3BlY2lmaWVkIHN5bWJvbC5cclxuICAqKi9cclxuICBzdGF0aWMgY29udGFpbnMoc3ltOiBCcmVlemVFbnVtKSB7XHJcbiAgICBpZiAoIShzeW0gaW5zdGFuY2VvZiBCcmVlemVFbnVtKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXNbc3ltLm5hbWVdICE9IG51bGw7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gLyoqXHJcbiAgLy8gQ2hlY2tzIGlmIGFuIG9iamVjdCBpcyBhbiBFbnVtICdzeW1ib2wnLiBVc2UgdGhlICdjb250YWlucycgbWV0aG9kIGluc3RlYWQgb2YgdGhpcyBvbmUgXHJcbiAgLy8gaWYgeW91IHdhbnQgdG8gdGVzdCBmb3IgYSBzcGVjaWZpYyBFbnVtLiBcclxuICAvLyA+ICAgICBpZiAoRW51bS5pc1N5bWJvbChEYXlPZldlZWsuV2VkbmVzZGF5KSkge1xyXG4gIC8vID4gICAgICAgLy8gZG8gc29tZXRoaW5nIC4uLlxyXG4gIC8vID4gICAgIH07XHJcbiAgLy8gKiovXHJcbiAgLy8gc3RhdGljIGlzU3ltYm9sKG9iajogYW55KSB7XHJcbiAgLy8gICByZXR1cm4gb2JqIGluc3RhbmNlb2YgQnJlZXplRW51bTtcclxuICAvLyB9O1xyXG5cclxuICAvKiogUmV0dXJucyB0aGUgc3RyaW5nIG5hbWUgb2YgdGhpcyBFbnVtICovXHJcbiAgdG9TdHJpbmcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJldHVybiBlbnVtIG5hbWUgYW5kIHN5bWJvbCBuYW1lICovXHJcbiAgdG9KU09OKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgXyR0eXBlTmFtZTogdGhpc1snXyR0eXBlTmFtZSddIHx8ICh0aGlzLmNvbnN0cnVjdG9yIGFzIGFueSkubmFtZSxcclxuICAgICAgbmFtZTogdGhpcy5uYW1lXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG4iXX0=
|
|
@@ -62,4 +62,4 @@ The default value whenever LocalQueryComparisonOptions are not specified. By def
|
|
|
62
62
|
**/
|
|
63
63
|
LocalQueryComparisonOptions.defaultInstance = new LocalQueryComparisonOptions(LocalQueryComparisonOptions.caseInsensitiveSQL);
|
|
64
64
|
LocalQueryComparisonOptions.prototype._$typeName = "LocalQueryComparisonOptions";
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtcXVlcnktY29tcGFyaXNvbi1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYnJlZXplLWNsaWVudC8iLCJzb3VyY2VzIjpbInNyYy9sb2NhbC1xdWVyeS1jb21wYXJpc29uLW9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM5QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQWVsQzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxPQUFPLDJCQUEyQjtJQVl0Qzs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNILFlBQVksVUFBNkM7UUFDdkQsWUFBWSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7YUFDekIsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRTthQUMxQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFTLEVBQUU7YUFDdEQsVUFBVSxDQUFDLG9DQUFvQyxDQUFDLENBQUMsU0FBUyxFQUFFO2FBQzVELFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQzVCO1FBQ0QsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFnQkQ7Ozs7Ozs7O09BUUc7SUFDSCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSwyQkFBMkIsQ0FBQyxDQUFDO0lBQzlELENBQUM7O0FBekJEOztHQUVHO0FBQ0ksOENBQWtCLEdBQUcsSUFBSSwyQkFBMkIsQ0FBQztJQUMxRCxJQUFJLEVBQUUsb0JBQW9CO0lBQzFCLGVBQWUsRUFBRSxLQUFLO0lBQ3RCLGtDQUFrQyxFQUFFLElBQUk7Q0FDekMsQ0FBQyxDQUFDO0FBRUg7O0dBRUc7QUFDSSwyQ0FBZSxHQUFHLElBQUksMkJBQTJCLENBQUMsMkJBQTJCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQWdCM0csMkJBQTJCLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvcmUgfSBmcm9tICcuL2NvcmUnO1xyXG5pbXBvcnQgeyBhc3NlcnRDb25maWcgfSBmcm9tICcuL2Fzc2VydC1wYXJhbSc7XHJcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcclxuXHJcblxyXG4vKiogQ29uZmlndXJhdGlvbiBpbmZvIHRvIGJlIHBhc3NlZCB0byB0aGUgW1tMb2NhbFF1ZXJ5Q29tcGFyaXNvbk9wdGlvbnNdXSBjb25zdHJ1Y3Rvci4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBMb2NhbFF1ZXJ5Q29tcGFyaXNvbk9wdGlvbnNDb25maWcge1xyXG4gIC8qKiBUaGUgbmFtZSBvZiB0aGlzIGNvbGxlY3Rpb24gb2YgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4gKi9cclxuICBuYW1lPzogc3RyaW5nO1xyXG4gIC8qKiBXaGV0aGVyIHByZWRpY2F0ZXMgdGhhdCBpbnZvbHZlIHN0cmluZ3Mgd2lsbCBiZSBpbnRlcnByZXRlZCBpbiBhIFwiY2FzZVNlbnNpdGl2ZVwiIG1hbm5lci4gRGVmYXVsdCBpcyAnZmFsc2UnLiAqL1xyXG4gIGlzQ2FzZVNlbnNpdGl2ZT86IGJvb2xlYW47XHJcbiAgLyogV2hldGhlciBvciBub3QgdG8gZW5mb3JjZSB0aGUgQU5TSSBTUUwgc3RhbmRhcmRcclxuICBvZiBwYWRkaW5nIHN0cmluZ3Mgb2YgdW5lcXVhbCBsZW5ndGhzIGJlZm9yZSBjb21wYXJpc29uIHdpdGggc3BhY2VzLiBOb3RlIHRoYXQgcGVyIHRoZSBzdGFuZGFyZCwgcGFkZGluZyBvbmx5IG9jY3VycyB3aXRoIGVxdWFsaXR5IGFuZFxyXG4gIGluZXF1YWxpdHkgcHJlZGljYXRlcywgYW5kIG5vdCB3aXRoIG9wZXJhdGlvbnMgbGlrZSAnc3RhcnRzV2l0aCcsICdlbmRzV2l0aCcgb3IgJ2NvbnRhaW5zJy4gIERlZmF1bHQgaXMgdHJ1ZS4gKi9cclxuICB1c2VzU3FsOTJDb21wbGlhbnRTdHJpbmdDb21wYXJpc29uPzogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqXHJcbkEgTG9jYWxRdWVyeUNvbXBhcmlzb25PcHRpb25zIGluc3RhbmNlIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgXCJjb21wYXJpc29uIHJ1bGVzXCIgdXNlZCB3aGVuIHBlcmZvcm1pbmcgXCJsb2NhbCBxdWVyaWVzXCIgaW4gb3JkZXJcclxudG8gbWF0Y2ggdGhlIHNlbWFudGljcyBvZiB0aGVzZSBzYW1lIHF1ZXJpZXMgd2hlbiBleGVjdXRlZCBhZ2FpbnN0IGEgcmVtb3RlIHNlcnZpY2UuICBUaGVzZSBvcHRpb25zIHNob3VsZCBiZSBzZXQgYmFzZWQgb24gdGhlXHJcbm1hbm5lciBpbiB3aGljaCB5b3VyIHJlbW90ZSBzZXJ2aWNlIGludGVycHJldHMgY2VydGFpbiBjb21wYXJpc29uIG9wZXJhdGlvbnMuXHJcblxyXG5UaGUgZGVmYXVsdCBMb2NhbFF1ZXJ5Q29tcGFyaXNvbk9wdGlvbnMgc3RpcHVsYXRlcyAnY2FzZUluc2Vuc2l0aXZlXCIgcXVlcmllcyB3aXRoIEFOU0kgU1FMIHJ1bGVzIHJlZ2FyZGluZyBjb21wYXJpc29ucyBvZiB1bmVxdWFsXHJcbmxlbmd0aCBzdHJpbmdzLlxyXG4qKi9cclxuZXhwb3J0IGNsYXNzIExvY2FsUXVlcnlDb21wYXJpc29uT3B0aW9ucyB7XHJcbiAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbiAgXyR0eXBlTmFtZTogc3RyaW5nOyAvLyBvbiBwcm90b3R5cGVcclxuICAvKiogVGhlIG5hbWUgZm9yIHRoaXMgaW5zdGFuY2UuICovXHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIC8qKiBXaGV0aGVyIHByZWRpY2F0ZXMgdGhhdCBpbnZvbHZlIHN0cmluZ3Mgd2lsbCBiZSBpbnRlcnByZXRlZCBpbiBhIFwiY2FzZVNlbnNpdGl2ZVwiIG1hbm5lci4gKGRlZmF1bHQgPSBmYWxzZSkuICAqL1xyXG4gIGlzQ2FzZVNlbnNpdGl2ZTogYm9vbGVhbjtcclxuICAvKiBXaGV0aGVyIG9yIG5vdCB0byBlbmZvcmNlIHRoZSBBTlNJIFNRTCBzdGFuZGFyZFxyXG4gIG9mIHBhZGRpbmcgc3RyaW5ncyBvZiB1bmVxdWFsIGxlbmd0aHMgYmVmb3JlIGNvbXBhcmlzb24gd2l0aCBzcGFjZXMuIE5vdGUgdGhhdCBwZXIgdGhlIHN0YW5kYXJkLCBwYWRkaW5nIG9ubHkgb2NjdXJzIHdpdGggZXF1YWxpdHkgYW5kXHJcbiAgaW5lcXVhbGl0eSBwcmVkaWNhdGVzLCBhbmQgbm90IHdpdGggb3BlcmF0aW9ucyBsaWtlICdzdGFydHNXaXRoJywgJ2VuZHNXaXRoJyBvciAnY29udGFpbnMnLiAgRGVmYXVsdCBpcyB0cnVlLiAqL1xyXG4gIHVzZXNTcWw5MkNvbXBsaWFudFN0cmluZ0NvbXBhcmlzb246IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gIExvY2FsUXVlcnlDb21wYXJpc29uT3B0aW9ucyBjb25zdHJ1Y3RvclxyXG4gID4gICAgICAvLyBjcmVhdGUgYSAnY2FzZVNlbnNpdGl2ZSAtIG5vbiBTUUwnIGluc3RhbmNlLlxyXG4gID4gICAgICB2YXIgbHFjbyA9IG5ldyBMb2NhbFF1ZXJ5Q29tcGFyaXNvbk9wdGlvbnMoe1xyXG4gID4gICAgICAgICAgICAgIG5hbWU6IFwiY2FzZVNlbnNpdGl2ZS1ub25TUUxcIlxyXG4gID4gICAgICAgICAgICAgIGlzQ2FzZVNlbnNpdGl2ZTogdHJ1ZTtcclxuICA+ICAgICAgICAgICAgICB1c2VzU3FsOTJDb21wbGlhbnRTdHJpbmdDb21wYXJpc29uOiBmYWxzZTtcclxuICA+ICAgICAgICAgIH0pO1xyXG4gID4gICAgICAvLyBlaXRoZXIgYXBwbHkgaXQgZ2xvYmFsbHlcclxuICA+ICAgICAgbHFjby5zZXRBc0RlZmF1bHQoKTtcclxuICA+ICAgICAgLy8gb3IgdG8gYSBzcGVjaWZpYyBNZXRhZGF0YVN0b3JlXHJcbiAgPiAgICAgIHZhciBtcyA9IG5ldyBNZXRhZGF0YVN0b3JlKHsgbG9jYWxRdWVyeUNvbXBhcmlzb25PcHRpb25zOiBscWNvIH0pO1xyXG4gID4gICAgICB2YXIgZW0gPSBuZXcgRW50aXR5TWFuYWdlciggeyBtZXRhZGF0YVN0b3JlOiBtcyB9KTtcclxuICBAcGFyYW0gY29uZmlnIC0gQSBjb25maWd1cmF0aW9uIG9iamVjdC5cclxuICAqKi9cclxuICBjb25zdHJ1Y3RvcihscWNvQ29uZmlnOiBMb2NhbFF1ZXJ5Q29tcGFyaXNvbk9wdGlvbnNDb25maWcpIHtcclxuICAgIGFzc2VydENvbmZpZyhscWNvQ29uZmlnIHx8IHt9KVxyXG4gICAgICAgIC53aGVyZVBhcmFtKFwibmFtZVwiKS5pc09wdGlvbmFsKCkuaXNTdHJpbmcoKVxyXG4gICAgICAgIC53aGVyZVBhcmFtKFwiaXNDYXNlU2Vuc2l0aXZlXCIpLmlzT3B0aW9uYWwoKS5pc0Jvb2xlYW4oKVxyXG4gICAgICAgIC53aGVyZVBhcmFtKFwidXNlc1NxbDkyQ29tcGxpYW50U3RyaW5nQ29tcGFyaXNvblwiKS5pc0Jvb2xlYW4oKVxyXG4gICAgICAgIC5hcHBseUFsbCh0aGlzKTtcclxuICAgIGlmICghdGhpcy5uYW1lKSB7XHJcbiAgICAgIHRoaXMubmFtZSA9IGNvcmUuZ2V0VXVpZCgpO1xyXG4gICAgfVxyXG4gICAgY29uZmlnLl9zdG9yZU9iamVjdCh0aGlzLCBcIkxvY2FsUXVlcnlDb21wYXJpc29uT3B0aW9uc1wiLCB0aGlzLm5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgQ2FzZSBpbnNlbnNpdGl2ZSBTUUwgY29tcGxpYW50IG9wdGlvbnMgLSB0aGlzIGlzIGFsc28gdGhlIGRlZmF1bHQgdW5sZXNzIG90aGVyd2lzZSBjaGFuZ2VkLlxyXG4gICoqL1xyXG4gIHN0YXRpYyBjYXNlSW5zZW5zaXRpdmVTUUwgPSBuZXcgTG9jYWxRdWVyeUNvbXBhcmlzb25PcHRpb25zKHtcclxuICAgIG5hbWU6IFwiY2FzZUluc2Vuc2l0aXZlU1FMXCIsXHJcbiAgICBpc0Nhc2VTZW5zaXRpdmU6IGZhbHNlLFxyXG4gICAgdXNlc1NxbDkyQ29tcGxpYW50U3RyaW5nQ29tcGFyaXNvbjogdHJ1ZVxyXG4gIH0pO1xyXG5cclxuICAvKipcclxuICBUaGUgZGVmYXVsdCB2YWx1ZSB3aGVuZXZlciBMb2NhbFF1ZXJ5Q29tcGFyaXNvbk9wdGlvbnMgYXJlIG5vdCBzcGVjaWZpZWQuIEJ5IGRlZmF1bHQgdGhpcyBpcyAnY2FzZUluc2Vuc2l0aXZlU1FMJy5cclxuICAqKi9cclxuICBzdGF0aWMgZGVmYXVsdEluc3RhbmNlID0gbmV3IExvY2FsUXVlcnlDb21wYXJpc29uT3B0aW9ucyhMb2NhbFF1ZXJ5Q29tcGFyaXNvbk9wdGlvbnMuY2FzZUluc2Vuc2l0aXZlU1FMKTtcclxuXHJcbiAgLyoqXHJcbiAgU2V0cyB0aGUgJ2RlZmF1bHRJbnN0YW5jZScgYnkgY3JlYXRpbmcgYSBjb3B5IG9mIHRoZSBjdXJyZW50ICdkZWZhdWx0SW5zdGFuY2UnIGFuZCB0aGVuIGFwcGx5aW5nIGFsbCBvZiB0aGUgcHJvcGVydGllcyBvZiB0aGUgY3VycmVudCBpbnN0YW5jZS5cclxuICBUaGUgY3VycmVudCBpbnN0YW5jZSBpcyByZXR1cm5lZCB1bmNoYW5nZWQuXHJcbiAgPiAgICAgdmFyIGxxY28gPSBuZXcgTG9jYWxRdWVyeUNvbXBhcmlzb25PcHRpb25zKHtcclxuICA+ICAgICAgICBpc0Nhc2VTZW5zaXRpdmU6IGZhbHNlO1xyXG4gID4gICAgICAgIHVzZXNTcWw5MkNvbXBsaWFudFN0cmluZ0NvbXBhcmlzb246IHRydWU7XHJcbiAgPiAgICAgfSk7XHJcbiAgPiAgICAgbHFjby5zZXRBc0RlZmF1bHQoKTtcclxuICAqKi9cclxuICBzZXRBc0RlZmF1bHQoKSB7XHJcbiAgICByZXR1cm4gY29yZS5zZXRBc0RlZmF1bHQodGhpcywgTG9jYWxRdWVyeUNvbXBhcmlzb25PcHRpb25zKTtcclxuICB9XHJcblxyXG59XHJcbkxvY2FsUXVlcnlDb21wYXJpc29uT3B0aW9ucy5wcm90b3R5cGUuXyR0eXBlTmFtZSA9IFwiTG9jYWxRdWVyeUNvbXBhcmlzb25PcHRpb25zXCI7XHJcbiJdfQ==
|
package/esm5/breeze-client.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Generated bundle index. Do not edit.
|
|
3
3
|
*/
|
|
4
|
-
export * from './
|
|
4
|
+
export * from './index';
|
|
5
5
|
export { Param as ɵb } from './src/assert-param';
|
|
6
6
|
export { qualifyTypeName as ɵc } from './src/entity-metadata';
|
|
7
7
|
export { BooleanQueryOp as ɵd } from './src/entity-query';
|
|
8
8
|
export { PredicateExpression as ɵa } from './src/predicate';
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlZXplLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2JyZWV6ZS1jbGllbnQvIiwic291cmNlcyI6WyJicmVlemUtY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUM7QUFFeEIsT0FBTyxFQUFDLEtBQUssSUFBSSxFQUFFLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsZUFBZSxJQUFJLEVBQUUsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBQyxjQUFjLElBQUksRUFBRSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFDLG1CQUFtQixJQUFJLEVBQUUsRUFBQyxNQUFNLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcblxuZXhwb3J0IHtQYXJhbSBhcyDJtWJ9IGZyb20gJy4vc3JjL2Fzc2VydC1wYXJhbSc7XG5leHBvcnQge3F1YWxpZnlUeXBlTmFtZSBhcyDJtWN9IGZyb20gJy4vc3JjL2VudGl0eS1tZXRhZGF0YSc7XG5leHBvcnQge0Jvb2xlYW5RdWVyeU9wIGFzIMm1ZH0gZnJvbSAnLi9zcmMvZW50aXR5LXF1ZXJ5JztcbmV4cG9ydCB7UHJlZGljYXRlRXhwcmVzc2lvbiBhcyDJtWF9IGZyb20gJy4vc3JjL3ByZWRpY2F0ZSc7Il19
|
package/esm5/src/array.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { makeRelationArray } from './relation-array';
|
|
2
2
|
export { makeComplexArray } from './complex-array';
|
|
3
3
|
export { makePrimitiveArray } from './primitive-array';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9icmVlemUtY2xpZW50LyIsInNvdXJjZXMiOlsic3JjL2FycmF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgbWFrZVJlbGF0aW9uQXJyYXkgfSBmcm9tICcuL3JlbGF0aW9uLWFycmF5JztcclxuZXhwb3J0IHsgbWFrZUNvbXBsZXhBcnJheSB9IGZyb20gJy4vY29tcGxleC1hcnJheSc7XHJcbmV4cG9ydCB7IG1ha2VQcmltaXRpdmVBcnJheSB9IGZyb20gJy4vcHJpbWl0aXZlLWFycmF5JztcclxuIl19
|