payload 2.5.0 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/styles.css +1 -1
- package/dist/admin/components/elements/DocumentFields/index.d.ts.map +1 -1
- package/dist/admin/components/elements/DocumentFields/index.js +5 -2
- package/dist/admin/components/elements/DocumentHeader/Tabs/Tab/index.d.ts.map +1 -1
- package/dist/admin/components/elements/DocumentHeader/Tabs/Tab/index.js +3 -3
- package/dist/admin/components/elements/EditUpload/index.scss +6 -0
- package/dist/admin/components/elements/Header/index.scss +4 -0
- package/dist/admin/components/elements/ListDrawer/DrawerContent.js +2 -2
- package/dist/admin/components/elements/Popup/PopupButtonList/index.scss +9 -2
- package/dist/admin/components/elements/Popup/index.scss +20 -2
- package/dist/admin/components/elements/WhereBuilder/Condition/Relationship/index.js +2 -2
- package/dist/admin/components/forms/Form/buildStateFromSchema/iterateFields.js +3 -3
- package/dist/admin/components/forms/Form/fieldReducer.js +3 -3
- package/dist/admin/components/forms/RenderFields/index.scss +1 -0
- package/dist/admin/components/forms/field-types/JSON/index.d.ts.map +1 -1
- package/dist/admin/components/forms/field-types/JSON/index.js +17 -9
- package/dist/admin/components/forms/field-types/Text/Input.d.ts +3 -0
- package/dist/admin/components/forms/field-types/Text/Input.d.ts.map +1 -1
- package/dist/admin/components/forms/field-types/Text/Input.js +33 -5
- package/dist/admin/components/forms/field-types/Text/index.d.ts.map +1 -1
- package/dist/admin/components/forms/field-types/Text/index.js +48 -5
- package/dist/admin/components/forms/field-types/Text/index.scss +4 -2
- package/dist/admin/components/forms/withCondition/WatchCondition.js +3 -3
- package/dist/admin/components/modals/LeaveWithoutSaving/index.d.ts.map +1 -1
- package/dist/admin/components/modals/LeaveWithoutSaving/index.js +10 -2
- package/dist/admin/components/templates/Default/index.scss +5 -0
- package/dist/admin/components/views/API/index.d.ts.map +1 -1
- package/dist/admin/components/views/API/index.js +4 -1
- package/dist/admin/components/views/Account/index.d.ts.map +1 -1
- package/dist/admin/components/views/Account/index.js +3 -4
- package/dist/admin/components/views/Global/Default.d.ts.map +1 -1
- package/dist/admin/components/views/Global/Default.js +4 -1
- package/dist/admin/components/views/Global/index.js +2 -2
- package/dist/admin/components/views/LivePreview/index.d.ts.map +1 -1
- package/dist/admin/components/views/LivePreview/index.js +4 -1
- package/dist/admin/components/views/Version/Version.d.ts.map +1 -1
- package/dist/admin/components/views/Version/Version.js +4 -1
- package/dist/admin/components/views/Versions/index.d.ts.map +1 -1
- package/dist/admin/components/views/Versions/index.js +4 -1
- package/dist/admin/components/views/collections/Edit/Default.d.ts.map +1 -1
- package/dist/admin/components/views/collections/Edit/Default.js +4 -1
- package/dist/admin/components/views/collections/Edit/formatFields.js +2 -2
- package/dist/admin/components/views/collections/Edit/index.js +2 -2
- package/dist/admin/components/views/collections/List/index.d.ts.map +1 -1
- package/dist/admin/components/views/collections/List/index.js +4 -1
- package/dist/admin/hooks/useTitle.d.ts.map +1 -1
- package/dist/admin/hooks/useTitle.js +9 -2
- package/dist/auth/graphql/resolvers/access.d.ts.map +1 -1
- package/dist/auth/graphql/resolvers/access.js +3 -3
- package/dist/auth/graphql/resolvers/forgotPassword.d.ts.map +1 -1
- package/dist/auth/graphql/resolvers/forgotPassword.js +3 -3
- package/dist/auth/graphql/resolvers/init.d.ts.map +1 -1
- package/dist/auth/graphql/resolvers/init.js +3 -3
- package/dist/auth/graphql/resolvers/login.d.ts.map +1 -1
- package/dist/auth/graphql/resolvers/login.js +3 -3
- package/dist/auth/graphql/resolvers/logout.d.ts.map +1 -1
- package/dist/auth/graphql/resolvers/logout.js +3 -3
- package/dist/auth/graphql/resolvers/me.d.ts.map +1 -1
- package/dist/auth/graphql/resolvers/me.js +3 -3
- package/dist/auth/graphql/resolvers/refresh.d.ts.map +1 -1
- package/dist/auth/graphql/resolvers/refresh.js +3 -3
- package/dist/auth/graphql/resolvers/resetPassword.d.ts.map +1 -1
- package/dist/auth/graphql/resolvers/resetPassword.js +8 -5
- package/dist/auth/graphql/resolvers/unlock.d.ts.map +1 -1
- package/dist/auth/graphql/resolvers/unlock.js +3 -3
- package/dist/auth/graphql/resolvers/verifyEmail.d.ts.map +1 -1
- package/dist/auth/graphql/resolvers/verifyEmail.js +8 -5
- package/dist/auth/operations/local/login.d.ts.map +1 -1
- package/dist/auth/operations/local/login.js +9 -5
- package/dist/auth/strategies/local/incrementLoginAttempts.js +2 -2
- package/dist/collections/graphql/resolvers/create.d.ts.map +1 -1
- package/dist/collections/graphql/resolvers/create.js +7 -6
- package/dist/collections/graphql/resolvers/delete.d.ts.map +1 -1
- package/dist/collections/graphql/resolvers/delete.js +10 -5
- package/dist/collections/graphql/resolvers/docAccess.js +3 -3
- package/dist/collections/graphql/resolvers/find.d.ts.map +1 -1
- package/dist/collections/graphql/resolvers/find.js +10 -5
- package/dist/collections/graphql/resolvers/findByID.d.ts.map +1 -1
- package/dist/collections/graphql/resolvers/findByID.js +10 -6
- package/dist/collections/graphql/resolvers/findVersionByID.d.ts.map +1 -1
- package/dist/collections/graphql/resolvers/findVersionByID.js +10 -5
- package/dist/collections/graphql/resolvers/findVersions.d.ts.map +1 -1
- package/dist/collections/graphql/resolvers/findVersions.js +10 -5
- package/dist/collections/graphql/resolvers/restoreVersion.js +3 -3
- package/dist/collections/graphql/resolvers/update.d.ts.map +1 -1
- package/dist/collections/graphql/resolvers/update.js +10 -5
- package/dist/collections/operations/local/create.d.ts.map +1 -1
- package/dist/collections/operations/local/create.js +8 -5
- package/dist/collections/operations/local/delete.d.ts.map +1 -1
- package/dist/collections/operations/local/delete.js +8 -5
- package/dist/collections/operations/local/find.d.ts.map +1 -1
- package/dist/collections/operations/local/find.js +8 -12
- package/dist/collections/operations/local/findByID.d.ts.map +1 -1
- package/dist/collections/operations/local/findByID.js +8 -12
- package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
- package/dist/collections/operations/local/findVersionByID.js +8 -12
- package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
- package/dist/collections/operations/local/findVersions.js +8 -5
- package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
- package/dist/collections/operations/local/restoreVersion.js +7 -3
- package/dist/collections/operations/local/update.d.ts.map +1 -1
- package/dist/collections/operations/local/update.js +7 -4
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +2 -1
- package/dist/config/types.d.ts +4 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +1 -1
- package/dist/database/migrations/migrate.d.ts.map +1 -1
- package/dist/database/migrations/migrate.js +11 -11
- package/dist/database/migrations/migrateDown.d.ts.map +1 -1
- package/dist/database/migrations/migrateDown.js +11 -9
- package/dist/database/migrations/migrateRefresh.d.ts.map +1 -1
- package/dist/database/migrations/migrateRefresh.js +16 -15
- package/dist/database/migrations/migrateReset.d.ts.map +1 -1
- package/dist/database/migrations/migrateReset.js +11 -9
- package/dist/database/migrations/migrationTemplate.d.ts +1 -1
- package/dist/database/migrations/migrationTemplate.d.ts.map +1 -1
- package/dist/database/migrations/migrationTemplate.js +3 -3
- package/dist/database/migrations/migrationsCollection.d.ts.map +1 -1
- package/dist/database/migrations/migrationsCollection.js +4 -3
- package/dist/database/types.d.ts +8 -6
- package/dist/database/types.d.ts.map +1 -1
- package/dist/express/middleware/index.js +3 -3
- package/dist/fields/config/schema.d.ts.map +1 -1
- package/dist/fields/config/schema.js +12 -2
- package/dist/fields/config/types.d.ts +15 -1
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/config/types.js +1 -1
- package/dist/fields/hooks/beforeChange/promise.js +3 -3
- package/dist/fields/validations.d.ts.map +1 -1
- package/dist/fields/validations.js +33 -11
- package/dist/globals/graphql/resolvers/docAccess.js +3 -3
- package/dist/globals/graphql/resolvers/findOne.js +3 -3
- package/dist/globals/graphql/resolvers/findVersionByID.js +3 -3
- package/dist/globals/graphql/resolvers/findVersions.js +3 -3
- package/dist/globals/graphql/resolvers/restoreVersion.js +3 -3
- package/dist/globals/graphql/resolvers/update.js +3 -3
- package/dist/globals/operations/local/findOne.d.ts.map +1 -1
- package/dist/globals/operations/local/findOne.js +5 -3
- package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
- package/dist/globals/operations/local/findVersionByID.js +6 -3
- package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
- package/dist/globals/operations/local/findVersions.js +6 -3
- package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
- package/dist/globals/operations/local/restoreVersion.js +6 -3
- package/dist/globals/operations/local/update.d.ts.map +1 -1
- package/dist/globals/operations/local/update.js +6 -3
- package/dist/graphql/registerSchema.d.ts.map +1 -1
- package/dist/graphql/registerSchema.js +2 -3
- package/dist/graphql/schema/buildMutationInputType.d.ts.map +1 -1
- package/dist/graphql/schema/buildMutationInputType.js +2 -2
- package/dist/graphql/schema/buildObjectType.d.ts.map +1 -1
- package/dist/graphql/schema/buildObjectType.js +13 -10
- package/dist/graphql/utilities/wrapCustomResolver.d.ts.map +1 -1
- package/dist/graphql/utilities/wrapCustomResolver.js +3 -3
- package/dist/localization/middleware.d.ts +1 -5
- package/dist/localization/middleware.d.ts.map +1 -1
- package/dist/localization/middleware.js +36 -40
- package/dist/payload.d.ts +0 -1
- package/dist/payload.d.ts.map +1 -1
- package/dist/payload.js +1 -1
- package/dist/translations/defaultOptions.js +3 -1
- package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
- package/dist/utilities/configToJSONSchema.js +14 -1
- package/dist/utilities/initTransaction.d.ts.map +1 -1
- package/dist/utilities/initTransaction.js +4 -2
- package/dist/utilities/isValidID.d.ts.map +1 -1
- package/dist/utilities/isValidID.js +11 -2
- package/dist/utilities/isolateObjectProperty.d.ts +5 -0
- package/dist/utilities/isolateObjectProperty.d.ts.map +1 -0
- package/dist/utilities/isolateObjectProperty.js +38 -0
- package/dist/versions/buildCollectionFields.js +13 -13
- package/package.json +4 -4
- package/dist/utilities/isolateTransactionID.d.ts +0 -6
- package/dist/utilities/isolateTransactionID.d.ts.map +0 -1
- package/dist/utilities/isolateTransactionID.js +0 -38
|
@@ -380,7 +380,7 @@ function buildObjectType({ name, baseFields = {}, fields, forceNullable, parentN
|
|
|
380
380
|
tabs: (objectTypeConfig, field)=>field.tabs.reduce((tabSchema, tab)=>{
|
|
381
381
|
if ((0, _types.tabHasName)(tab)) {
|
|
382
382
|
const interfaceName = tab?.interfaceName || (0, _combineParentName.default)(parentName, (0, _formatLabels.toWords)(tab.name, true));
|
|
383
|
-
if (!payload.types.
|
|
383
|
+
if (!payload.types.groupTypes[interfaceName]) {
|
|
384
384
|
const objectType = buildObjectType({
|
|
385
385
|
name: interfaceName,
|
|
386
386
|
fields: tab.fields,
|
|
@@ -389,15 +389,18 @@ function buildObjectType({ name, baseFields = {}, fields, forceNullable, parentN
|
|
|
389
389
|
payload
|
|
390
390
|
});
|
|
391
391
|
if (Object.keys(objectType.getFields()).length) {
|
|
392
|
-
|
|
393
|
-
...tabSchema,
|
|
394
|
-
[tab.name]: {
|
|
395
|
-
type: objectType
|
|
396
|
-
}
|
|
397
|
-
};
|
|
392
|
+
payload.types.groupTypes[interfaceName] = objectType;
|
|
398
393
|
}
|
|
399
394
|
}
|
|
400
|
-
|
|
395
|
+
if (!payload.types.groupTypes[interfaceName]) {
|
|
396
|
+
return tabSchema;
|
|
397
|
+
}
|
|
398
|
+
return {
|
|
399
|
+
...tabSchema,
|
|
400
|
+
[tab.name]: {
|
|
401
|
+
type: payload.types.groupTypes[interfaceName]
|
|
402
|
+
}
|
|
403
|
+
};
|
|
401
404
|
}
|
|
402
405
|
return {
|
|
403
406
|
...tabSchema,
|
|
@@ -411,7 +414,7 @@ function buildObjectType({ name, baseFields = {}, fields, forceNullable, parentN
|
|
|
411
414
|
text: (objectTypeConfig, field)=>({
|
|
412
415
|
...objectTypeConfig,
|
|
413
416
|
[field.name]: {
|
|
414
|
-
type: (0, _withNullableType.default)(field, _graphql.GraphQLString, forceNullable)
|
|
417
|
+
type: (0, _withNullableType.default)(field, field.hasMany === true ? new _graphql.GraphQLList(_graphql.GraphQLString) : _graphql.GraphQLString, forceNullable)
|
|
415
418
|
}
|
|
416
419
|
}),
|
|
417
420
|
textarea: (objectTypeConfig, field)=>({
|
|
@@ -499,4 +502,4 @@ function buildObjectType({ name, baseFields = {}, fields, forceNullable, parentN
|
|
|
499
502
|
}
|
|
500
503
|
const _default = buildObjectType;
|
|
501
504
|
|
|
502
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ncmFwaHFsL3NjaGVtYS9idWlsZE9iamVjdFR5cGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVzZS1iZWZvcmUtZGVmaW5lICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXN5bnRheCAqL1xuaW1wb3J0IHR5cGUgeyBHcmFwaFFMRmllbGRDb25maWcsIEdyYXBoUUxUeXBlIH0gZnJvbSAnZ3JhcGhxbCdcblxuaW1wb3J0IHtcbiAgR3JhcGhRTEJvb2xlYW4sXG4gIEdyYXBoUUxFbnVtVHlwZSxcbiAgR3JhcGhRTEZsb2F0LFxuICBHcmFwaFFMSW50LFxuICBHcmFwaFFMTGlzdCxcbiAgR3JhcGhRTE5vbk51bGwsXG4gIEdyYXBoUUxPYmplY3RUeXBlLFxuICBHcmFwaFFMU3RyaW5nLFxuICBHcmFwaFFMVW5pb25UeXBlLFxufSBmcm9tICdncmFwaHFsJ1xuaW1wb3J0IHsgRGF0ZVRpbWVSZXNvbHZlciwgRW1haWxBZGRyZXNzUmVzb2x2ZXIgfSBmcm9tICdncmFwaHFsLXNjYWxhcnMnXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11c2UtYmVmb3JlLWRlZmluZSAqL1xuaW1wb3J0IHsgR3JhcGhRTEpTT04gfSBmcm9tICdncmFwaHFsLXR5cGUtanNvbidcblxuaW1wb3J0IHR5cGUgeyBSaWNoVGV4dEFkYXB0ZXIgfSBmcm9tICcuLi8uLi9hZG1pbi9jb21wb25lbnRzL2Zvcm1zL2ZpZWxkLXR5cGVzL1JpY2hUZXh0L3R5cGVzJ1xuaW1wb3J0IHR5cGUge1xuICBBcnJheUZpZWxkLFxuICBCbG9ja0ZpZWxkLFxuICBDaGVja2JveEZpZWxkLFxuICBDb2RlRmllbGQsXG4gIENvbGxhcHNpYmxlRmllbGQsXG4gIERhdGVGaWVsZCxcbiAgRW1haWxGaWVsZCxcbiAgRmllbGQsXG4gIEdyb3VwRmllbGQsXG4gIEpTT05GaWVsZCxcbiAgTnVtYmVyRmllbGQsXG4gIFBvaW50RmllbGQsXG4gIFJhZGlvRmllbGQsXG4gIFJlbGF0aW9uc2hpcEZpZWxkLFxuICBSaWNoVGV4dEZpZWxkLFxuICBSb3dGaWVsZCxcbiAgU2VsZWN0RmllbGQsXG4gIFRhYnNGaWVsZCxcbiAgVGV4dEZpZWxkLFxuICBUZXh0YXJlYUZpZWxkLFxuICBVcGxvYWRGaWVsZCxcbn0gZnJvbSAnLi4vLi4vZmllbGRzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZCB9IGZyb20gJy4uLy4uL3BheWxvYWQnXG5cbmltcG9ydCB7IHRhYkhhc05hbWUgfSBmcm9tICcuLi8uLi9maWVsZHMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHsgdG9Xb3JkcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9mb3JtYXRMYWJlbHMnXG5pbXBvcnQgY29tYmluZVBhcmVudE5hbWUgZnJvbSAnLi4vdXRpbGl0aWVzL2NvbWJpbmVQYXJlbnROYW1lJ1xuaW1wb3J0IGZvcm1hdE5hbWUgZnJvbSAnLi4vdXRpbGl0aWVzL2Zvcm1hdE5hbWUnXG5pbXBvcnQgZm9ybWF0T3B0aW9ucyBmcm9tICcuLi91dGlsaXRpZXMvZm9ybWF0T3B0aW9ucydcbmltcG9ydCBidWlsZFdoZXJlSW5wdXRUeXBlIGZyb20gJy4vYnVpbGRXaGVyZUlucHV0VHlwZSdcbmltcG9ydCBpc0ZpZWxkTnVsbGFibGUgZnJvbSAnLi9pc0ZpZWxkTnVsbGFibGUnXG5pbXBvcnQgd2l0aE51bGxhYmxlVHlwZSBmcm9tICcuL3dpdGhOdWxsYWJsZVR5cGUnXG5cbnR5cGUgTG9jYWxlSW5wdXRUeXBlID0ge1xuICBmYWxsYmFja0xvY2FsZToge1xuICAgIHR5cGU6IEdyYXBoUUxUeXBlXG4gIH1cbiAgbG9jYWxlOiB7XG4gICAgdHlwZTogR3JhcGhRTFR5cGVcbiAgfVxuICB3aGVyZToge1xuICAgIHR5cGU6IEdyYXBoUUxUeXBlXG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgT2JqZWN0VHlwZUNvbmZpZyA9IHtcbiAgW3BhdGg6IHN0cmluZ106IEdyYXBoUUxGaWVsZENvbmZpZzxhbnksIGFueT5cbn1cblxudHlwZSBBcmdzID0ge1xuICBiYXNlRmllbGRzPzogT2JqZWN0VHlwZUNvbmZpZ1xuICBmaWVsZHM6IEZpZWxkW11cbiAgZm9yY2VOdWxsYWJsZT86IGJvb2xlYW5cbiAgbmFtZTogc3RyaW5nXG4gIHBhcmVudE5hbWU6IHN0cmluZ1xuICBwYXlsb2FkOiBQYXlsb2FkXG59XG5cbmZ1bmN0aW9uIGJ1aWxkT2JqZWN0VHlwZSh7XG4gIG5hbWUsXG4gIGJhc2VGaWVsZHMgPSB7fSxcbiAgZmllbGRzLFxuICBmb3JjZU51bGxhYmxlLFxuICBwYXJlbnROYW1lLFxuICBwYXlsb2FkLFxufTogQXJncyk6IEdyYXBoUUxPYmplY3RUeXBlIHtcbiAgY29uc3QgZmllbGRUb1NjaGVtYU1hcCA9IHtcbiAgICBhcnJheTogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBBcnJheUZpZWxkKSA9PiB7XG4gICAgICBjb25zdCBpbnRlcmZhY2VOYW1lID1cbiAgICAgICAgZmllbGQ/LmludGVyZmFjZU5hbWUgfHwgY29tYmluZVBhcmVudE5hbWUocGFyZW50TmFtZSwgdG9Xb3JkcyhmaWVsZC5uYW1lLCB0cnVlKSlcblxuICAgICAgaWYgKCFwYXlsb2FkLnR5cGVzLmFycmF5VHlwZXNbaW50ZXJmYWNlTmFtZV0pIHtcbiAgICAgICAgY29uc3Qgb2JqZWN0VHlwZSA9IGJ1aWxkT2JqZWN0VHlwZSh7XG4gICAgICAgICAgbmFtZTogaW50ZXJmYWNlTmFtZSxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBmb3JjZU51bGxhYmxlOiBpc0ZpZWxkTnVsbGFibGUoZmllbGQsIGZvcmNlTnVsbGFibGUpLFxuICAgICAgICAgIHBhcmVudE5hbWU6IGludGVyZmFjZU5hbWUsXG4gICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoT2JqZWN0LmtleXMob2JqZWN0VHlwZS5nZXRGaWVsZHMoKSkubGVuZ3RoKSB7XG4gICAgICAgICAgcGF5bG9hZC50eXBlcy5hcnJheVR5cGVzW2ludGVyZmFjZU5hbWVdID0gb2JqZWN0VHlwZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghcGF5bG9hZC50eXBlcy5hcnJheVR5cGVzW2ludGVyZmFjZU5hbWVdKSB7XG4gICAgICAgIHJldHVybiBvYmplY3RUeXBlQ29uZmlnXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFycmF5VHlwZSA9IG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwocGF5bG9hZC50eXBlcy5hcnJheVR5cGVzW2ludGVyZmFjZU5hbWVdKSlcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIGFycmF5VHlwZSkgfSxcbiAgICAgIH1cbiAgICB9LFxuICAgIGJsb2NrczogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBCbG9ja0ZpZWxkKSA9PiB7XG4gICAgICBjb25zdCBibG9ja1R5cGVzOiBHcmFwaFFMT2JqZWN0VHlwZTxhbnksIGFueT5bXSA9IGZpZWxkLmJsb2Nrcy5yZWR1Y2UoKGFjYywgYmxvY2spID0+IHtcbiAgICAgICAgaWYgKCFwYXlsb2FkLnR5cGVzLmJsb2NrVHlwZXNbYmxvY2suc2x1Z10pIHtcbiAgICAgICAgICBjb25zdCBpbnRlcmZhY2VOYW1lID1cbiAgICAgICAgICAgIGJsb2NrPy5pbnRlcmZhY2VOYW1lIHx8IGJsb2NrPy5ncmFwaFFMPy5zaW5ndWxhck5hbWUgfHwgdG9Xb3JkcyhibG9jay5zbHVnLCB0cnVlKVxuXG4gICAgICAgICAgY29uc3Qgb2JqZWN0VHlwZSA9IGJ1aWxkT2JqZWN0VHlwZSh7XG4gICAgICAgICAgICBuYW1lOiBpbnRlcmZhY2VOYW1lLFxuICAgICAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAgICAgIC4uLmJsb2NrLmZpZWxkcyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdibG9ja1R5cGUnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBmb3JjZU51bGxhYmxlLFxuICAgICAgICAgICAgcGFyZW50TmFtZTogaW50ZXJmYWNlTmFtZSxcbiAgICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhvYmplY3RUeXBlLmdldEZpZWxkcygpKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHBheWxvYWQudHlwZXMuYmxvY2tUeXBlc1tibG9jay5zbHVnXSA9IG9iamVjdFR5cGVcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGF5bG9hZC50eXBlcy5ibG9ja1R5cGVzW2Jsb2NrLnNsdWddKSB7XG4gICAgICAgICAgYWNjLnB1c2gocGF5bG9hZC50eXBlcy5ibG9ja1R5cGVzW2Jsb2NrLnNsdWddKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjY1xuICAgICAgfSwgW10pXG5cbiAgICAgIGlmIChibG9ja1R5cGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gb2JqZWN0VHlwZUNvbmZpZ1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmdWxsTmFtZSA9IGNvbWJpbmVQYXJlbnROYW1lKHBhcmVudE5hbWUsIHRvV29yZHMoZmllbGQubmFtZSwgdHJ1ZSkpXG5cbiAgICAgIGNvbnN0IHR5cGUgPSBuZXcgR3JhcGhRTExpc3QoXG4gICAgICAgIG5ldyBHcmFwaFFMTm9uTnVsbChcbiAgICAgICAgICBuZXcgR3JhcGhRTFVuaW9uVHlwZSh7XG4gICAgICAgICAgICBuYW1lOiBmdWxsTmFtZSxcbiAgICAgICAgICAgIHJlc29sdmVUeXBlOiAoZGF0YSkgPT4gcGF5bG9hZC50eXBlcy5ibG9ja1R5cGVzW2RhdGEuYmxvY2tUeXBlXS5uYW1lLFxuICAgICAgICAgICAgdHlwZXM6IGJsb2NrVHlwZXMsXG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgICApXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm9iamVjdFR5cGVDb25maWcsXG4gICAgICAgIFtmaWVsZC5uYW1lXTogeyB0eXBlOiB3aXRoTnVsbGFibGVUeXBlKGZpZWxkLCB0eXBlKSB9LFxuICAgICAgfVxuICAgIH0sXG4gICAgY2hlY2tib3g6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogQ2hlY2tib3hGaWVsZCkgPT4gKHtcbiAgICAgIC4uLm9iamVjdFR5cGVDb25maWcsXG4gICAgICBbZmllbGQubmFtZV06IHsgdHlwZTogd2l0aE51bGxhYmxlVHlwZShmaWVsZCwgR3JhcGhRTEJvb2xlYW4sIGZvcmNlTnVsbGFibGUpIH0sXG4gICAgfSksXG4gICAgY29kZTogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBDb2RlRmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIEdyYXBoUUxTdHJpbmcsIGZvcmNlTnVsbGFibGUpIH0sXG4gICAgfSksXG4gICAgY29sbGFwc2libGU6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogQ29sbGFwc2libGVGaWVsZCkgPT5cbiAgICAgIGZpZWxkLmZpZWxkcy5yZWR1Y2UoKG9iamVjdFR5cGVDb25maWdXaXRoQ29sbGFwc2libGVGaWVsZHMsIHN1YkZpZWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IGFkZFN1YkZpZWxkID0gZmllbGRUb1NjaGVtYU1hcFtzdWJGaWVsZC50eXBlXVxuICAgICAgICBpZiAoYWRkU3ViRmllbGQpIHJldHVybiBhZGRTdWJGaWVsZChvYmplY3RUeXBlQ29uZmlnV2l0aENvbGxhcHNpYmxlRmllbGRzLCBzdWJGaWVsZClcbiAgICAgICAgcmV0dXJuIG9iamVjdFR5cGVDb25maWdXaXRoQ29sbGFwc2libGVGaWVsZHNcbiAgICAgIH0sIG9iamVjdFR5cGVDb25maWcpLFxuICAgIGRhdGU6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogRGF0ZUZpZWxkKSA9PiAoe1xuICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgIFtmaWVsZC5uYW1lXTogeyB0eXBlOiB3aXRoTnVsbGFibGVUeXBlKGZpZWxkLCBEYXRlVGltZVJlc29sdmVyLCBmb3JjZU51bGxhYmxlKSB9LFxuICAgIH0pLFxuICAgIGVtYWlsOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IEVtYWlsRmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIEVtYWlsQWRkcmVzc1Jlc29sdmVyLCBmb3JjZU51bGxhYmxlKSB9LFxuICAgIH0pLFxuICAgIGdyb3VwOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IEdyb3VwRmllbGQpID0+IHtcbiAgICAgIGNvbnN0IGludGVyZmFjZU5hbWUgPVxuICAgICAgICBmaWVsZD8uaW50ZXJmYWNlTmFtZSB8fCBjb21iaW5lUGFyZW50TmFtZShwYXJlbnROYW1lLCB0b1dvcmRzKGZpZWxkLm5hbWUsIHRydWUpKVxuXG4gICAgICBpZiAoIXBheWxvYWQudHlwZXMuZ3JvdXBUeXBlc1tpbnRlcmZhY2VOYW1lXSkge1xuICAgICAgICBjb25zdCBvYmplY3RUeXBlID0gYnVpbGRPYmplY3RUeXBlKHtcbiAgICAgICAgICBuYW1lOiBpbnRlcmZhY2VOYW1lLFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIGZvcmNlTnVsbGFibGU6IGlzRmllbGROdWxsYWJsZShmaWVsZCwgZm9yY2VOdWxsYWJsZSksXG4gICAgICAgICAgcGFyZW50TmFtZTogaW50ZXJmYWNlTmFtZSxcbiAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhvYmplY3RUeXBlLmdldEZpZWxkcygpKS5sZW5ndGgpIHtcbiAgICAgICAgICBwYXlsb2FkLnR5cGVzLmdyb3VwVHlwZXNbaW50ZXJmYWNlTmFtZV0gPSBvYmplY3RUeXBlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFwYXlsb2FkLnR5cGVzLmdyb3VwVHlwZXNbaW50ZXJmYWNlTmFtZV0pIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdFR5cGVDb25maWdcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHBheWxvYWQudHlwZXMuZ3JvdXBUeXBlc1tpbnRlcmZhY2VOYW1lXSB9LFxuICAgICAgfVxuICAgIH0sXG4gICAganNvbjogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBKU09ORmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIEdyYXBoUUxKU09OLCBmb3JjZU51bGxhYmxlKSB9LFxuICAgIH0pLFxuICAgIG51bWJlcjogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBOdW1iZXJGaWVsZCkgPT4ge1xuICAgICAgY29uc3QgdHlwZSA9IGZpZWxkPy5uYW1lID09PSAnaWQnID8gR3JhcGhRTEludCA6IEdyYXBoUUxGbG9hdFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgICAgW2ZpZWxkLm5hbWVdOiB7XG4gICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlVHlwZShcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgZmllbGQ/Lmhhc01hbnkgPT09IHRydWUgPyBuZXcgR3JhcGhRTExpc3QodHlwZSkgOiB0eXBlLFxuICAgICAgICAgICAgZm9yY2VOdWxsYWJsZSxcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH0sXG4gICAgcG9pbnQ6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogUG9pbnRGaWVsZCkgPT4gKHtcbiAgICAgIC4uLm9iamVjdFR5cGVDb25maWcsXG4gICAgICBbZmllbGQubmFtZV06IHtcbiAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlVHlwZShcbiAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICBuZXcgR3JhcGhRTExpc3QobmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxGbG9hdCkpLFxuICAgICAgICAgIGZvcmNlTnVsbGFibGUsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgIH0pLFxuICAgIHJhZGlvOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFJhZGlvRmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7XG4gICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgbmV3IEdyYXBoUUxFbnVtVHlwZSh7XG4gICAgICAgICAgICBuYW1lOiBjb21iaW5lUGFyZW50TmFtZShwYXJlbnROYW1lLCBmaWVsZC5uYW1lKSxcbiAgICAgICAgICAgIHZhbHVlczogZm9ybWF0T3B0aW9ucyhmaWVsZCksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgZm9yY2VOdWxsYWJsZSxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgcmVsYXRpb25zaGlwOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFJlbGF0aW9uc2hpcEZpZWxkKSA9PiB7XG4gICAgICBjb25zdCB7IHJlbGF0aW9uVG8gfSA9IGZpZWxkXG4gICAgICBjb25zdCBpc1JlbGF0ZWRUb01hbnlDb2xsZWN0aW9ucyA9IEFycmF5LmlzQXJyYXkocmVsYXRpb25UbylcbiAgICAgIGNvbnN0IGhhc01hbnlWYWx1ZXMgPSBmaWVsZC5oYXNNYW55XG4gICAgICBjb25zdCByZWxhdGlvbnNoaXBOYW1lID0gY29tYmluZVBhcmVudE5hbWUocGFyZW50TmFtZSwgdG9Xb3JkcyhmaWVsZC5uYW1lLCB0cnVlKSlcblxuICAgICAgbGV0IHR5cGVcbiAgICAgIGxldCByZWxhdGlvblRvVHlwZSA9IG51bGxcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVsYXRpb25UbykpIHtcbiAgICAgICAgcmVsYXRpb25Ub1R5cGUgPSBuZXcgR3JhcGhRTEVudW1UeXBlKHtcbiAgICAgICAgICBuYW1lOiBgJHtyZWxhdGlvbnNoaXBOYW1lfV9SZWxhdGlvblRvYCxcbiAgICAgICAgICB2YWx1ZXM6IHJlbGF0aW9uVG8ucmVkdWNlKFxuICAgICAgICAgICAgKHJlbGF0aW9ucywgcmVsYXRpb24pID0+ICh7XG4gICAgICAgICAgICAgIC4uLnJlbGF0aW9ucyxcbiAgICAgICAgICAgICAgW2Zvcm1hdE5hbWUocmVsYXRpb24pXToge1xuICAgICAgICAgICAgICAgIHZhbHVlOiByZWxhdGlvbixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgKSxcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCB0eXBlcyA9IHJlbGF0aW9uVG8ubWFwKChyZWxhdGlvbikgPT4gcGF5bG9hZC5jb2xsZWN0aW9uc1tyZWxhdGlvbl0uZ3JhcGhRTC50eXBlKVxuXG4gICAgICAgIHR5cGUgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICAgICAgICAgIG5hbWU6IGAke3JlbGF0aW9uc2hpcE5hbWV9X1JlbGF0aW9uc2hpcGAsXG4gICAgICAgICAgZmllbGRzOiB7XG4gICAgICAgICAgICByZWxhdGlvblRvOiB7XG4gICAgICAgICAgICAgIHR5cGU6IHJlbGF0aW9uVG9UeXBlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMVW5pb25UeXBlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiByZWxhdGlvbnNoaXBOYW1lLFxuICAgICAgICAgICAgICAgIGFzeW5jIHJlc29sdmVUeXBlKGRhdGEsIHsgcmVxIH0pIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBwYXlsb2FkLmNvbGxlY3Rpb25zW2RhdGEuY29sbGVjdGlvbl0uZ3JhcGhRTC50eXBlLm5hbWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHR5cGVzLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIDsoeyB0eXBlIH0gPSBwYXlsb2FkLmNvbGxlY3Rpb25zW3JlbGF0aW9uVG9dLmdyYXBoUUwpXG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSByZWxhdGlvbnNoaXBUeXBlIGlzIHVuZGVmaW5lZCBhdCB0aGlzIHBvaW50LFxuICAgICAgLy8gaXQgY2FuIGJlIGFzc3VtZWQgdGhhdCB0aGlzIGJsb2NrVHlwZSBjYW4gaGF2ZSBhIHJlbGF0aW9uc2hpcFxuICAgICAgLy8gdG8gaXRzZWxmLiBUaGVyZWZvcmUsIHdlIHNldCB0aGUgcmVsYXRpb25zaGlwVHlwZSBlcXVhbCB0byB0aGUgYmxvY2tUeXBlXG4gICAgICAvLyB0aGF0IGlzIGN1cnJlbnRseSBiZWluZyBjcmVhdGVkLlxuXG4gICAgICB0eXBlID0gdHlwZSB8fCBuZXdseUNyZWF0ZWRCbG9ja1R5cGVcblxuICAgICAgY29uc3QgcmVsYXRpb25zaGlwQXJnczoge1xuICAgICAgICBmYWxsYmFja0xvY2FsZT86IHVua25vd25cbiAgICAgICAgbGltaXQ/OiB1bmtub3duXG4gICAgICAgIGxvY2FsZT86IHVua25vd25cbiAgICAgICAgcGFnZT86IHVua25vd25cbiAgICAgICAgd2hlcmU/OiB1bmtub3duXG4gICAgICB9ID0ge31cblxuICAgICAgaWYgKHBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICByZWxhdGlvbnNoaXBBcmdzLmxvY2FsZSA9IHtcbiAgICAgICAgICB0eXBlOiBwYXlsb2FkLnR5cGVzLmxvY2FsZUlucHV0VHlwZSxcbiAgICAgICAgfVxuXG4gICAgICAgIHJlbGF0aW9uc2hpcEFyZ3MuZmFsbGJhY2tMb2NhbGUgPSB7XG4gICAgICAgICAgdHlwZTogcGF5bG9hZC50eXBlcy5mYWxsYmFja0xvY2FsZUlucHV0VHlwZSxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCByZWxhdGlvbnNoaXAgPSB7XG4gICAgICAgIGFyZ3M6IHJlbGF0aW9uc2hpcEFyZ3MsXG4gICAgICAgIGV4dGVuc2lvbnM6IHsgY29tcGxleGl0eTogMTAgfSxcbiAgICAgICAgYXN5bmMgcmVzb2x2ZShwYXJlbnQsIGFyZ3MsIGNvbnRleHQpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcmVudFtmaWVsZC5uYW1lXVxuICAgICAgICAgIGNvbnN0IGxvY2FsZSA9IGFyZ3MubG9jYWxlIHx8IGNvbnRleHQucmVxLmxvY2FsZVxuICAgICAgICAgIGNvbnN0IGZhbGxiYWNrTG9jYWxlID0gYXJncy5mYWxsYmFja0xvY2FsZSB8fCBjb250ZXh0LnJlcS5mYWxsYmFja0xvY2FsZVxuICAgICAgICAgIGxldCByZWxhdGVkQ29sbGVjdGlvblNsdWcgPSBmaWVsZC5yZWxhdGlvblRvXG5cbiAgICAgICAgICBpZiAoaGFzTWFueVZhbHVlcykge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IFtdXG4gICAgICAgICAgICBjb25zdCByZXN1bHRQcm9taXNlcyA9IFtdXG5cbiAgICAgICAgICAgIGNvbnN0IGNyZWF0ZVBvcHVsYXRpb25Qcm9taXNlID0gYXN5bmMgKHJlbGF0ZWREb2MsIGkpID0+IHtcbiAgICAgICAgICAgICAgbGV0IGlkID0gcmVsYXRlZERvY1xuICAgICAgICAgICAgICBsZXQgY29sbGVjdGlvblNsdWcgPSBmaWVsZC5yZWxhdGlvblRvXG5cbiAgICAgICAgICAgICAgaWYgKGlzUmVsYXRlZFRvTWFueUNvbGxlY3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvblNsdWcgPSByZWxhdGVkRG9jLnJlbGF0aW9uVG9cbiAgICAgICAgICAgICAgICBpZCA9IHJlbGF0ZWREb2MudmFsdWVcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvbnRleHQucmVxLnBheWxvYWREYXRhTG9hZGVyLmxvYWQoXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoW1xuICAgICAgICAgICAgICAgICAgY29udGV4dC5yZXEudHJhbnNhY3Rpb25JRCxcbiAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgICAgIGZhbGxiYWNrTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNSZWxhdGVkVG9NYW55Q29sbGVjdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgIHJlc3VsdHNbaV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uVG86IGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcmVzdWx0c1tpXSA9IHJlc3VsdFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgocmVsYXRlZERvYywgaSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc3VsdFByb21pc2VzLnB1c2goY3JlYXRlUG9wdWxhdGlvblByb21pc2UocmVsYXRlZERvYywgaSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHJlc3VsdFByb21pc2VzKVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHNcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgaWQgPSB2YWx1ZVxuICAgICAgICAgIGlmIChpc1JlbGF0ZWRUb01hbnlDb2xsZWN0aW9ucyAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgaWQgPSB2YWx1ZS52YWx1ZVxuICAgICAgICAgICAgcmVsYXRlZENvbGxlY3Rpb25TbHVnID0gdmFsdWUucmVsYXRpb25Ub1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpZCkge1xuICAgICAgICAgICAgY29uc3QgcmVsYXRlZERvY3VtZW50ID0gYXdhaXQgY29udGV4dC5yZXEucGF5bG9hZERhdGFMb2FkZXIubG9hZChcbiAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoW1xuICAgICAgICAgICAgICAgIGNvbnRleHQucmVxLnRyYW5zYWN0aW9uSUQsXG4gICAgICAgICAgICAgICAgcmVsYXRlZENvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgICAgZmFsbGJhY2tMb2NhbGUsXG4gICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICBpZiAocmVsYXRlZERvY3VtZW50KSB7XG4gICAgICAgICAgICAgIGlmIChpc1JlbGF0ZWRUb01hbnlDb2xsZWN0aW9ucykge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICByZWxhdGlvblRvOiByZWxhdGVkQ29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAuLi5yZWxhdGVkRG9jdW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb246IHJlbGF0ZWRDb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHJlbGF0ZWREb2N1bWVudFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgaGFzTWFueVZhbHVlcyA/IG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwodHlwZSkpIDogdHlwZSxcbiAgICAgICAgICBmb3JjZU51bGxhYmxlLFxuICAgICAgICApLFxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgICBbZmllbGQubmFtZV06IHJlbGF0aW9uc2hpcCxcbiAgICAgIH1cbiAgICB9LFxuICAgIHJpY2hUZXh0OiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFJpY2hUZXh0RmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7XG4gICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICBkZXB0aDoge1xuICAgICAgICAgICAgdHlwZTogR3JhcGhRTEludCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBhc3luYyByZXNvbHZlKHBhcmVudCwgYXJncywgY29udGV4dCkge1xuICAgICAgICAgIGxldCBkZXB0aCA9IHBheWxvYWQuY29uZmlnLmRlZmF1bHREZXB0aFxuICAgICAgICAgIGlmICh0eXBlb2YgYXJncy5kZXB0aCAhPT0gJ3VuZGVmaW5lZCcpIGRlcHRoID0gYXJncy5kZXB0aFxuICAgICAgICAgIGNvbnN0IGVkaXRvcjogUmljaFRleHRBZGFwdGVyID0gZmllbGQ/LmVkaXRvclxuXG4gICAgICAgICAgLy8gUmljaFRleHQgZmllbGRzIGhhdmUgdGhlaXIgb3duIGRlcHRoIGFyZ3VtZW50IGluIEdyYXBoUUwuXG4gICAgICAgICAgLy8gVGhpcyBpcyB3aHkgdGhlIHBvcHVsYXRpb25Qcm9taXNlICh3aGljaCBwb3B1bGF0ZXMgcmljaHRleHQgZmllbGRzIGxpa2UgdXBsb2FkcyBhbmQgcmVsYXRpb25zaGlwcylcbiAgICAgICAgICAvLyBpcyBydW4gaGVyZSBhZ2Fpbiwgd2l0aCB0aGUgcHJvdmlkZWQgZGVwdGguXG4gICAgICAgICAgLy8gSW4gdGhlIGdyYXBocWwgZmluZC50cyByZXNvbHZlciwgdGhlIGRlcHRoIGlzIHRoZW4gaGFyZC1jb2RlZCB0byAwLlxuICAgICAgICAgIC8vIEVmZmVjdGl2ZWx5LCB0aGlzIG1lYW5zIHRoYXQgdGhlIHBvcHVsYXRpb25Qcm9taXNlIGZvciBHcmFwaFFMIGlzIG9ubHkgcnVuIGhlcmUsIGFuZCBub3QgaW4gdGhlIGZpbmQudHMgcmVzb2x2ZXIgLyBub3JtYWwgcG9wdWxhdGlvbiBwcm9taXNlLlxuICAgICAgICAgIGlmIChlZGl0b3I/LnBvcHVsYXRpb25Qcm9taXNlKSB7XG4gICAgICAgICAgICBhd2FpdCBlZGl0b3I/LnBvcHVsYXRpb25Qcm9taXNlKHtcbiAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgZGVwdGgsXG4gICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICBmaW5kTWFueTogZmFsc2UsXG4gICAgICAgICAgICAgIGZsYXR0ZW5Mb2NhbGVzOiBmYWxzZSxcbiAgICAgICAgICAgICAgb3ZlcnJpZGVBY2Nlc3M6IGZhbHNlLFxuICAgICAgICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXM6IFtdLFxuICAgICAgICAgICAgICByZXE6IGNvbnRleHQucmVxLFxuICAgICAgICAgICAgICBzaG93SGlkZGVuRmllbGRzOiBmYWxzZSxcbiAgICAgICAgICAgICAgc2libGluZ0RvYzogcGFyZW50LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcGFyZW50W2ZpZWxkLm5hbWVdXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIEdyYXBoUUxKU09OLCBmb3JjZU51bGxhYmxlKSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgcm93OiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFJvd0ZpZWxkKSA9PlxuICAgICAgZmllbGQuZmllbGRzLnJlZHVjZSgob2JqZWN0VHlwZUNvbmZpZ1dpdGhSb3dGaWVsZHMsIHN1YkZpZWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IGFkZFN1YkZpZWxkID0gZmllbGRUb1NjaGVtYU1hcFtzdWJGaWVsZC50eXBlXVxuICAgICAgICBpZiAoYWRkU3ViRmllbGQpIHJldHVybiBhZGRTdWJGaWVsZChvYmplY3RUeXBlQ29uZmlnV2l0aFJvd0ZpZWxkcywgc3ViRmllbGQpXG4gICAgICAgIHJldHVybiBvYmplY3RUeXBlQ29uZmlnV2l0aFJvd0ZpZWxkc1xuICAgICAgfSwgb2JqZWN0VHlwZUNvbmZpZyksXG4gICAgc2VsZWN0OiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFNlbGVjdEZpZWxkKSA9PiB7XG4gICAgICBjb25zdCBmdWxsTmFtZSA9IGNvbWJpbmVQYXJlbnROYW1lKHBhcmVudE5hbWUsIGZpZWxkLm5hbWUpXG5cbiAgICAgIGxldCB0eXBlOiBHcmFwaFFMVHlwZSA9IG5ldyBHcmFwaFFMRW51bVR5cGUoe1xuICAgICAgICBuYW1lOiBmdWxsTmFtZSxcbiAgICAgICAgdmFsdWVzOiBmb3JtYXRPcHRpb25zKGZpZWxkKSxcbiAgICAgIH0pXG5cbiAgICAgIHR5cGUgPSBmaWVsZC5oYXNNYW55ID8gbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbCh0eXBlKSkgOiB0eXBlXG4gICAgICB0eXBlID0gd2l0aE51bGxhYmxlVHlwZShmaWVsZCwgdHlwZSwgZm9yY2VOdWxsYWJsZSlcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGUgfSxcbiAgICAgIH1cbiAgICB9LFxuICAgIHRhYnM6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogVGFic0ZpZWxkKSA9PlxuICAgICAgZmllbGQudGFicy5yZWR1Y2UoKHRhYlNjaGVtYSwgdGFiKSA9PiB7XG4gICAgICAgIGlmICh0YWJIYXNOYW1lKHRhYikpIHtcbiAgICAgICAgICBjb25zdCBpbnRlcmZhY2VOYW1lID1cbiAgICAgICAgICAgIHRhYj8uaW50ZXJmYWNlTmFtZSB8fCBjb21iaW5lUGFyZW50TmFtZShwYXJlbnROYW1lLCB0b1dvcmRzKHRhYi5uYW1lLCB0cnVlKSlcblxuICAgICAgICAgIGlmICghcGF5bG9hZC50eXBlcy50YWJUeXBlc1tpbnRlcmZhY2VOYW1lXSkge1xuICAgICAgICAgICAgY29uc3Qgb2JqZWN0VHlwZSA9IGJ1aWxkT2JqZWN0VHlwZSh7XG4gICAgICAgICAgICAgIG5hbWU6IGludGVyZmFjZU5hbWUsXG4gICAgICAgICAgICAgIGZpZWxkczogdGFiLmZpZWxkcyxcbiAgICAgICAgICAgICAgZm9yY2VOdWxsYWJsZSxcbiAgICAgICAgICAgICAgcGFyZW50TmFtZTogaW50ZXJmYWNlTmFtZSxcbiAgICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhvYmplY3RUeXBlLmdldEZpZWxkcygpKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi50YWJTY2hlbWEsXG4gICAgICAgICAgICAgICAgW3RhYi5uYW1lXTogeyB0eXBlOiBvYmplY3RUeXBlIH0sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdGFiU2NoZW1hXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnRhYlNjaGVtYSxcbiAgICAgICAgICAuLi50YWIuZmllbGRzLnJlZHVjZSgoc3ViRmllbGRTY2hlbWEsIHN1YkZpZWxkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhZGRTdWJGaWVsZCA9IGZpZWxkVG9TY2hlbWFNYXBbc3ViRmllbGQudHlwZV1cbiAgICAgICAgICAgIGlmIChhZGRTdWJGaWVsZCkgcmV0dXJuIGFkZFN1YkZpZWxkKHN1YkZpZWxkU2NoZW1hLCBzdWJGaWVsZClcbiAgICAgICAgICAgIHJldHVybiBzdWJGaWVsZFNjaGVtYVxuICAgICAgICAgIH0sIHRhYlNjaGVtYSksXG4gICAgICAgIH1cbiAgICAgIH0sIG9iamVjdFR5cGVDb25maWcpLFxuICAgIHRleHQ6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogVGV4dEZpZWxkKSA9PiAoe1xuICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgIFtmaWVsZC5uYW1lXTogeyB0eXBlOiB3aXRoTnVsbGFibGVUeXBlKGZpZWxkLCBHcmFwaFFMU3RyaW5nLCBmb3JjZU51bGxhYmxlKSB9LFxuICAgIH0pLFxuICAgIHRleHRhcmVhOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFRleHRhcmVhRmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIEdyYXBoUUxTdHJpbmcsIGZvcmNlTnVsbGFibGUpIH0sXG4gICAgfSksXG4gICAgdXBsb2FkOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFVwbG9hZEZpZWxkKSA9PiB7XG4gICAgICBjb25zdCB7IHJlbGF0aW9uVG8gfSA9IGZpZWxkXG5cbiAgICAgIGNvbnN0IHVwbG9hZE5hbWUgPSBjb21iaW5lUGFyZW50TmFtZShwYXJlbnROYW1lLCB0b1dvcmRzKGZpZWxkLm5hbWUsIHRydWUpKVxuXG4gICAgICAvLyBJZiB0aGUgcmVsYXRpb25zaGlwVHlwZSBpcyB1bmRlZmluZWQgYXQgdGhpcyBwb2ludCxcbiAgICAgIC8vIGl0IGNhbiBiZSBhc3N1bWVkIHRoYXQgdGhpcyBibG9ja1R5cGUgY2FuIGhhdmUgYSByZWxhdGlvbnNoaXBcbiAgICAgIC8vIHRvIGl0c2VsZi4gVGhlcmVmb3JlLCB3ZSBzZXQgdGhlIHJlbGF0aW9uc2hpcFR5cGUgZXF1YWwgdG8gdGhlIGJsb2NrVHlwZVxuICAgICAgLy8gdGhhdCBpcyBjdXJyZW50bHkgYmVpbmcgY3JlYXRlZC5cblxuICAgICAgY29uc3QgdHlwZSA9IHdpdGhOdWxsYWJsZVR5cGUoXG4gICAgICAgIGZpZWxkLFxuICAgICAgICBwYXlsb2FkLmNvbGxlY3Rpb25zW3JlbGF0aW9uVG9dLmdyYXBoUUwudHlwZSB8fCBuZXdseUNyZWF0ZWRCbG9ja1R5cGUsXG4gICAgICAgIGZvcmNlTnVsbGFibGUsXG4gICAgICApXG5cbiAgICAgIGNvbnN0IHVwbG9hZEFyZ3MgPSB7fSBhcyBMb2NhbGVJbnB1dFR5cGVcblxuICAgICAgaWYgKHBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICB1cGxvYWRBcmdzLmxvY2FsZSA9IHtcbiAgICAgICAgICB0eXBlOiBwYXlsb2FkLnR5cGVzLmxvY2FsZUlucHV0VHlwZSxcbiAgICAgICAgfVxuXG4gICAgICAgIHVwbG9hZEFyZ3MuZmFsbGJhY2tMb2NhbGUgPSB7XG4gICAgICAgICAgdHlwZTogcGF5bG9hZC50eXBlcy5mYWxsYmFja0xvY2FsZUlucHV0VHlwZSxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCByZWxhdGVkQ29sbGVjdGlvblNsdWcgPSBmaWVsZC5yZWxhdGlvblRvXG5cbiAgICAgIGNvbnN0IHVwbG9hZCA9IHtcbiAgICAgICAgYXJnczogdXBsb2FkQXJncyxcbiAgICAgICAgZXh0ZW5zaW9uczogeyBjb21wbGV4aXR5OiAyMCB9LFxuICAgICAgICBhc3luYyByZXNvbHZlKHBhcmVudCwgYXJncywgY29udGV4dCkge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFyZW50W2ZpZWxkLm5hbWVdXG4gICAgICAgICAgY29uc3QgbG9jYWxlID0gYXJncy5sb2NhbGUgfHwgY29udGV4dC5yZXEubG9jYWxlXG4gICAgICAgICAgY29uc3QgZmFsbGJhY2tMb2NhbGUgPSBhcmdzLmZhbGxiYWNrTG9jYWxlIHx8IGNvbnRleHQucmVxLmZhbGxiYWNrTG9jYWxlXG4gICAgICAgICAgY29uc3QgaWQgPSB2YWx1ZVxuXG4gICAgICAgICAgaWYgKGlkKSB7XG4gICAgICAgICAgICBjb25zdCByZWxhdGVkRG9jdW1lbnQgPSBhd2FpdCBjb250ZXh0LnJlcS5wYXlsb2FkRGF0YUxvYWRlci5sb2FkKFxuICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShbXG4gICAgICAgICAgICAgICAgY29udGV4dC5yZXEudHJhbnNhY3Rpb25JRCxcbiAgICAgICAgICAgICAgICByZWxhdGVkQ29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgICBmYWxsYmFja0xvY2FsZSxcbiAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICApXG5cbiAgICAgICAgICAgIHJldHVybiByZWxhdGVkRG9jdW1lbnQgfHwgbnVsbFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGUsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHdoZXJlRmllbGRzID0gcGF5bG9hZC5jb2xsZWN0aW9uc1tyZWxhdGlvblRvXS5jb25maWcuZmllbGRzXG5cbiAgICAgIHVwbG9hZC5hcmdzLndoZXJlID0ge1xuICAgICAgICB0eXBlOiBidWlsZFdoZXJlSW5wdXRUeXBlKHtcbiAgICAgICAgICBuYW1lOiB1cGxvYWROYW1lLFxuICAgICAgICAgIGZpZWxkczogd2hlcmVGaWVsZHMsXG4gICAgICAgICAgcGFyZW50TmFtZTogdXBsb2FkTmFtZSxcbiAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICB9KSxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgICAgW2ZpZWxkLm5hbWVdOiB1cGxvYWQsXG4gICAgICB9XG4gICAgfSxcbiAgfVxuXG4gIGNvbnN0IG9iamVjdFNjaGVtYSA9IHtcbiAgICBuYW1lLFxuICAgIGZpZWxkczogKCkgPT5cbiAgICAgIGZpZWxkcy5yZWR1Y2UoKG9iamVjdFR5cGVDb25maWcsIGZpZWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkU2NoZW1hID0gZmllbGRUb1NjaGVtYU1hcFtmaWVsZC50eXBlXVxuXG4gICAgICAgIGlmICh0eXBlb2YgZmllbGRTY2hlbWEgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gb2JqZWN0VHlwZUNvbmZpZ1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgICAgIC4uLmZpZWxkU2NoZW1hKG9iamVjdFR5cGVDb25maWcsIGZpZWxkKSxcbiAgICAgICAgfVxuICAgICAgfSwgYmFzZUZpZWxkcyksXG4gIH1cblxuICBjb25zdCBuZXdseUNyZWF0ZWRCbG9ja1R5cGUgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUob2JqZWN0U2NoZW1hKVxuXG4gIHJldHVybiBuZXdseUNyZWF0ZWRCbG9ja1R5cGVcbn1cblxuZXhwb3J0IGRlZmF1bHQgYnVpbGRPYmplY3RUeXBlXG4iXSwibmFtZXMiOlsiYnVpbGRPYmplY3RUeXBlIiwibmFtZSIsImJhc2VGaWVsZHMiLCJmaWVsZHMiLCJmb3JjZU51bGxhYmxlIiwicGFyZW50TmFtZSIsInBheWxvYWQiLCJmaWVsZFRvU2NoZW1hTWFwIiwiYXJyYXkiLCJvYmplY3RUeXBlQ29uZmlnIiwiZmllbGQiLCJpbnRlcmZhY2VOYW1lIiwiY29tYmluZVBhcmVudE5hbWUiLCJ0b1dvcmRzIiwidHlwZXMiLCJhcnJheVR5cGVzIiwib2JqZWN0VHlwZSIsImlzRmllbGROdWxsYWJsZSIsIk9iamVjdCIsImtleXMiLCJnZXRGaWVsZHMiLCJsZW5ndGgiLCJhcnJheVR5cGUiLCJHcmFwaFFMTGlzdCIsIkdyYXBoUUxOb25OdWxsIiwidHlwZSIsIndpdGhOdWxsYWJsZVR5cGUiLCJibG9ja3MiLCJibG9ja1R5cGVzIiwicmVkdWNlIiwiYWNjIiwiYmxvY2siLCJzbHVnIiwiZ3JhcGhRTCIsInNpbmd1bGFyTmFtZSIsInB1c2giLCJmdWxsTmFtZSIsIkdyYXBoUUxVbmlvblR5cGUiLCJyZXNvbHZlVHlwZSIsImRhdGEiLCJibG9ja1R5cGUiLCJjaGVja2JveCIsIkdyYXBoUUxCb29sZWFuIiwiY29kZSIsIkdyYXBoUUxTdHJpbmciLCJjb2xsYXBzaWJsZSIsIm9iamVjdFR5cGVDb25maWdXaXRoQ29sbGFwc2libGVGaWVsZHMiLCJzdWJGaWVsZCIsImFkZFN1YkZpZWxkIiwiZGF0ZSIsIkRhdGVUaW1lUmVzb2x2ZXIiLCJlbWFpbCIsIkVtYWlsQWRkcmVzc1Jlc29sdmVyIiwiZ3JvdXAiLCJncm91cFR5cGVzIiwianNvbiIsIkdyYXBoUUxKU09OIiwibnVtYmVyIiwiR3JhcGhRTEludCIsIkdyYXBoUUxGbG9hdCIsImhhc01hbnkiLCJwb2ludCIsInJhZGlvIiwiR3JhcGhRTEVudW1UeXBlIiwidmFsdWVzIiwiZm9ybWF0T3B0aW9ucyIsInJlbGF0aW9uc2hpcCIsInJlbGF0aW9uVG8iLCJpc1JlbGF0ZWRUb01hbnlDb2xsZWN0aW9ucyIsIkFycmF5IiwiaXNBcnJheSIsImhhc01hbnlWYWx1ZXMiLCJyZWxhdGlvbnNoaXBOYW1lIiwicmVsYXRpb25Ub1R5cGUiLCJyZWxhdGlvbnMiLCJyZWxhdGlvbiIsImZvcm1hdE5hbWUiLCJ2YWx1ZSIsIm1hcCIsImNvbGxlY3Rpb25zIiwiR3JhcGhRTE9iamVjdFR5cGUiLCJyZXEiLCJjb2xsZWN0aW9uIiwibmV3bHlDcmVhdGVkQmxvY2tUeXBlIiwicmVsYXRpb25zaGlwQXJncyIsImNvbmZpZyIsImxvY2FsaXphdGlvbiIsImxvY2FsZSIsImxvY2FsZUlucHV0VHlwZSIsImZhbGxiYWNrTG9jYWxlIiwiZmFsbGJhY2tMb2NhbGVJbnB1dFR5cGUiLCJhcmdzIiwiZXh0ZW5zaW9ucyIsImNvbXBsZXhpdHkiLCJyZXNvbHZlIiwicGFyZW50IiwiY29udGV4dCIsInJlbGF0ZWRDb2xsZWN0aW9uU2x1ZyIsInJlc3VsdHMiLCJyZXN1bHRQcm9taXNlcyIsImNyZWF0ZVBvcHVsYXRpb25Qcm9taXNlIiwicmVsYXRlZERvYyIsImkiLCJpZCIsImNvbGxlY3Rpb25TbHVnIiwicmVzdWx0IiwicGF5bG9hZERhdGFMb2FkZXIiLCJsb2FkIiwiSlNPTiIsInN0cmluZ2lmeSIsInRyYW5zYWN0aW9uSUQiLCJmb3JFYWNoIiwiUHJvbWlzZSIsImFsbCIsInJlbGF0ZWREb2N1bWVudCIsInJpY2hUZXh0IiwiZGVwdGgiLCJkZWZhdWx0RGVwdGgiLCJlZGl0b3IiLCJwb3B1bGF0aW9uUHJvbWlzZSIsImZpbmRNYW55IiwiZmxhdHRlbkxvY2FsZXMiLCJvdmVycmlkZUFjY2VzcyIsInBvcHVsYXRpb25Qcm9taXNlcyIsInNob3dIaWRkZW5GaWVsZHMiLCJzaWJsaW5nRG9jIiwicm93Iiwib2JqZWN0VHlwZUNvbmZpZ1dpdGhSb3dGaWVsZHMiLCJzZWxlY3QiLCJ0YWJzIiwidGFiU2NoZW1hIiwidGFiIiwidGFiSGFzTmFtZSIsInRhYlR5cGVzIiwic3ViRmllbGRTY2hlbWEiLCJ0ZXh0IiwidGV4dGFyZWEiLCJ1cGxvYWQiLCJ1cGxvYWROYW1lIiwidXBsb2FkQXJncyIsIndoZXJlRmllbGRzIiwid2hlcmUiLCJidWlsZFdoZXJlSW5wdXRUeXBlIiwib2JqZWN0U2NoZW1hIiwiZmllbGRTY2hlbWEiXSwibWFwcGluZ3MiOiJBQUFBLDBEQUEwRCxHQUMxRCxtQ0FBbUMsR0FDbkMsdUNBQXVDOzs7OytCQXVvQnZDOzs7ZUFBQTs7O3lCQTFuQk87Z0NBQ2dEO2lDQUUzQjt1QkE0QkQ7OEJBQ0g7MEVBQ007bUVBQ1A7c0VBQ0c7NEVBQ007d0VBQ0o7eUVBQ0M7Ozs7OztBQTJCN0IsU0FBU0EsZ0JBQWdCLEVBQ3ZCQyxJQUFJLEVBQ0pDLGFBQWEsQ0FBQyxDQUFDLEVBQ2ZDLE1BQU0sRUFDTkMsYUFBYSxFQUNiQyxVQUFVLEVBQ1ZDLE9BQU8sRUFDRjtJQUNMLE1BQU1DLG1CQUFtQjtRQUN2QkMsT0FBTyxDQUFDQyxrQkFBb0NDO1lBQzFDLE1BQU1DLGdCQUNKRCxPQUFPQyxpQkFBaUJDLElBQUFBLDBCQUFpQixFQUFDUCxZQUFZUSxJQUFBQSxxQkFBTyxFQUFDSCxNQUFNVCxJQUFJLEVBQUU7WUFFNUUsSUFBSSxDQUFDSyxRQUFRUSxLQUFLLENBQUNDLFVBQVUsQ0FBQ0osY0FBYyxFQUFFO2dCQUM1QyxNQUFNSyxhQUFhaEIsZ0JBQWdCO29CQUNqQ0MsTUFBTVU7b0JBQ05SLFFBQVFPLE1BQU1QLE1BQU07b0JBQ3BCQyxlQUFlYSxJQUFBQSx3QkFBZSxFQUFDUCxPQUFPTjtvQkFDdENDLFlBQVlNO29CQUNaTDtnQkFDRjtnQkFFQSxJQUFJWSxPQUFPQyxJQUFJLENBQUNILFdBQVdJLFNBQVMsSUFBSUMsTUFBTSxFQUFFO29CQUM5Q2YsUUFBUVEsS0FBSyxDQUFDQyxVQUFVLENBQUNKLGNBQWMsR0FBR0s7Z0JBQzVDO1lBQ0Y7WUFFQSxJQUFJLENBQUNWLFFBQVFRLEtBQUssQ0FBQ0MsVUFBVSxDQUFDSixjQUFjLEVBQUU7Z0JBQzVDLE9BQU9GO1lBQ1Q7WUFFQSxNQUFNYSxZQUFZLElBQUlDLG9CQUFXLENBQUMsSUFBSUMsdUJBQWMsQ0FBQ2xCLFFBQVFRLEtBQUssQ0FBQ0MsVUFBVSxDQUFDSixjQUFjO1lBRTVGLE9BQU87Z0JBQ0wsR0FBR0YsZ0JBQWdCO2dCQUNuQixDQUFDQyxNQUFNVCxJQUFJLENBQUMsRUFBRTtvQkFBRXdCLE1BQU1DLElBQUFBLHlCQUFnQixFQUFDaEIsT0FBT1k7Z0JBQVc7WUFDM0Q7UUFDRjtRQUNBSyxRQUFRLENBQUNsQixrQkFBb0NDO1lBQzNDLE1BQU1rQixhQUE0Q2xCLE1BQU1pQixNQUFNLENBQUNFLE1BQU0sQ0FBQyxDQUFDQyxLQUFLQztnQkFDMUUsSUFBSSxDQUFDekIsUUFBUVEsS0FBSyxDQUFDYyxVQUFVLENBQUNHLE1BQU1DLElBQUksQ0FBQyxFQUFFO29CQUN6QyxNQUFNckIsZ0JBQ0pvQixPQUFPcEIsaUJBQWlCb0IsT0FBT0UsU0FBU0MsZ0JBQWdCckIsSUFBQUEscUJBQU8sRUFBQ2tCLE1BQU1DLElBQUksRUFBRTtvQkFFOUUsTUFBTWhCLGFBQWFoQixnQkFBZ0I7d0JBQ2pDQyxNQUFNVTt3QkFDTlIsUUFBUTsrQkFDSDRCLE1BQU01QixNQUFNOzRCQUNmO2dDQUNFRixNQUFNO2dDQUNOd0IsTUFBTTs0QkFDUjt5QkFDRDt3QkFDRHJCO3dCQUNBQyxZQUFZTTt3QkFDWkw7b0JBQ0Y7b0JBRUEsSUFBSVksT0FBT0MsSUFBSSxDQUFDSCxXQUFXSSxTQUFTLElBQUlDLE1BQU0sRUFBRTt3QkFDOUNmLFFBQVFRLEtBQUssQ0FBQ2MsVUFBVSxDQUFDRyxNQUFNQyxJQUFJLENBQUMsR0FBR2hCO29CQUN6QztnQkFDRjtnQkFFQSxJQUFJVixRQUFRUSxLQUFLLENBQUNjLFVBQVUsQ0FBQ0csTUFBTUMsSUFBSSxDQUFDLEVBQUU7b0JBQ3hDRixJQUFJSyxJQUFJLENBQUM3QixRQUFRUSxLQUFLLENBQUNjLFVBQVUsQ0FBQ0csTUFBTUMsSUFBSSxDQUFDO2dCQUMvQztnQkFFQSxPQUFPRjtZQUNULEdBQUcsRUFBRTtZQUVMLElBQUlGLFdBQVdQLE1BQU0sS0FBSyxHQUFHO2dCQUMzQixPQUFPWjtZQUNUO1lBRUEsTUFBTTJCLFdBQVd4QixJQUFBQSwwQkFBaUIsRUFBQ1AsWUFBWVEsSUFBQUEscUJBQU8sRUFBQ0gsTUFBTVQsSUFBSSxFQUFFO1lBRW5FLE1BQU13QixPQUFPLElBQUlGLG9CQUFXLENBQzFCLElBQUlDLHVCQUFjLENBQ2hCLElBQUlhLHlCQUFnQixDQUFDO2dCQUNuQnBDLE1BQU1tQztnQkFDTkUsYUFBYSxDQUFDQyxPQUFTakMsUUFBUVEsS0FBSyxDQUFDYyxVQUFVLENBQUNXLEtBQUtDLFNBQVMsQ0FBQyxDQUFDdkMsSUFBSTtnQkFDcEVhLE9BQU9jO1lBQ1Q7WUFJSixPQUFPO2dCQUNMLEdBQUduQixnQkFBZ0I7Z0JBQ25CLENBQUNDLE1BQU1ULElBQUksQ0FBQyxFQUFFO29CQUFFd0IsTUFBTUMsSUFBQUEseUJBQWdCLEVBQUNoQixPQUFPZTtnQkFBTTtZQUN0RDtRQUNGO1FBQ0FnQixVQUFVLENBQUNoQyxrQkFBb0NDLFFBQTBCLENBQUE7Z0JBQ3ZFLEdBQUdELGdCQUFnQjtnQkFDbkIsQ0FBQ0MsTUFBTVQsSUFBSSxDQUFDLEVBQUU7b0JBQUV3QixNQUFNQyxJQUFBQSx5QkFBZ0IsRUFBQ2hCLE9BQU9nQyx1QkFBYyxFQUFFdEM7Z0JBQWU7WUFDL0UsQ0FBQTtRQUNBdUMsTUFBTSxDQUFDbEMsa0JBQW9DQyxRQUFzQixDQUFBO2dCQUMvRCxHQUFHRCxnQkFBZ0I7Z0JBQ25CLENBQUNDLE1BQU1ULElBQUksQ0FBQyxFQUFFO29CQUFFd0IsTUFBTUMsSUFBQUEseUJBQWdCLEVBQUNoQixPQUFPa0Msc0JBQWEsRUFBRXhDO2dCQUFlO1lBQzlFLENBQUE7UUFDQXlDLGFBQWEsQ0FBQ3BDLGtCQUFvQ0MsUUFDaERBLE1BQU1QLE1BQU0sQ0FBQzBCLE1BQU0sQ0FBQyxDQUFDaUIsdUNBQXVDQztnQkFDMUQsTUFBTUMsY0FBY3pDLGdCQUFnQixDQUFDd0MsU0FBU3RCLElBQUksQ0FBQztnQkFDbkQsSUFBSXVCLGFBQWEsT0FBT0EsWUFBWUYsdUNBQXVDQztnQkFDM0UsT0FBT0Q7WUFDVCxHQUFHckM7UUFDTHdDLE1BQU0sQ0FBQ3hDLGtCQUFvQ0MsUUFBc0IsQ0FBQTtnQkFDL0QsR0FBR0QsZ0JBQWdCO2dCQUNuQixDQUFDQyxNQUFNVCxJQUFJLENBQUMsRUFBRTtvQkFBRXdCLE1BQU1DLElBQUFBLHlCQUFnQixFQUFDaEIsT0FBT3dDLGdDQUFnQixFQUFFOUM7Z0JBQWU7WUFDakYsQ0FBQTtRQUNBK0MsT0FBTyxDQUFDMUMsa0JBQW9DQyxRQUF1QixDQUFBO2dCQUNqRSxHQUFHRCxnQkFBZ0I7Z0JBQ25CLENBQUNDLE1BQU1ULElBQUksQ0FBQyxFQUFFO29CQUFFd0IsTUFBTUMsSUFBQUEseUJBQWdCLEVBQUNoQixPQUFPMEMsb0NBQW9CLEVBQUVoRDtnQkFBZTtZQUNyRixDQUFBO1FBQ0FpRCxPQUFPLENBQUM1QyxrQkFBb0NDO1lBQzFDLE1BQU1DLGdCQUNKRCxPQUFPQyxpQkFBaUJDLElBQUFBLDBCQUFpQixFQUFDUCxZQUFZUSxJQUFBQSxxQkFBTyxFQUFDSCxNQUFNVCxJQUFJLEVBQUU7WUFFNUUsSUFBSSxDQUFDSyxRQUFRUSxLQUFLLENBQUN3QyxVQUFVLENBQUMzQyxjQUFjLEVBQUU7Z0JBQzVDLE1BQU1LLGFBQWFoQixnQkFBZ0I7b0JBQ2pDQyxNQUFNVTtvQkFDTlIsUUFBUU8sTUFBTVAsTUFBTTtvQkFDcEJDLGVBQWVhLElBQUFBLHdCQUFlLEVBQUNQLE9BQU9OO29CQUN0Q0MsWUFBWU07b0JBQ1pMO2dCQUNGO2dCQUVBLElBQUlZLE9BQU9DLElBQUksQ0FBQ0gsV0FBV0ksU0FBUyxJQUFJQyxNQUFNLEVBQUU7b0JBQzlDZixRQUFRUSxLQUFLLENBQUN3QyxVQUFVLENBQUMzQyxjQUFjLEdBQUdLO2dCQUM1QztZQUNGO1lBRUEsSUFBSSxDQUFDVixRQUFRUSxLQUFLLENBQUN3QyxVQUFVLENBQUMzQyxjQUFjLEVBQUU7Z0JBQzVDLE9BQU9GO1lBQ1Q7WUFFQSxPQUFPO2dCQUNMLEdBQUdBLGdCQUFnQjtnQkFDbkIsQ0FBQ0MsTUFBTVQsSUFBSSxDQUFDLEVBQUU7b0JBQUV3QixNQUFNbkIsUUFBUVEsS0FBSyxDQUFDd0MsVUFBVSxDQUFDM0MsY0FBYztnQkFBQztZQUNoRTtRQUNGO1FBQ0E0QyxNQUFNLENBQUM5QyxrQkFBb0NDLFFBQXNCLENBQUE7Z0JBQy9ELEdBQUdELGdCQUFnQjtnQkFDbkIsQ0FBQ0MsTUFBTVQsSUFBSSxDQUFDLEVBQUU7b0JBQUV3QixNQUFNQyxJQUFBQSx5QkFBZ0IsRUFBQ2hCLE9BQU84Qyw0QkFBVyxFQUFFcEQ7Z0JBQWU7WUFDNUUsQ0FBQTtRQUNBcUQsUUFBUSxDQUFDaEQsa0JBQW9DQztZQUMzQyxNQUFNZSxPQUFPZixPQUFPVCxTQUFTLE9BQU95RCxtQkFBVSxHQUFHQyxxQkFBWTtZQUM3RCxPQUFPO2dCQUNMLEdBQUdsRCxnQkFBZ0I7Z0JBQ25CLENBQUNDLE1BQU1ULElBQUksQ0FBQyxFQUFFO29CQUNad0IsTUFBTUMsSUFBQUEseUJBQWdCLEVBQ3BCaEIsT0FDQUEsT0FBT2tELFlBQVksT0FBTyxJQUFJckMsb0JBQVcsQ0FBQ0UsUUFBUUEsTUFDbERyQjtnQkFFSjtZQUNGO1FBQ0Y7UUFDQXlELE9BQU8sQ0FBQ3BELGtCQUFvQ0MsUUFBdUIsQ0FBQTtnQkFDakUsR0FBR0QsZ0JBQWdCO2dCQUNuQixDQUFDQyxNQUFNVCxJQUFJLENBQUMsRUFBRTtvQkFDWndCLE1BQU1DLElBQUFBLHlCQUFnQixFQUNwQmhCLE9BQ0EsSUFBSWEsb0JBQVcsQ0FBQyxJQUFJQyx1QkFBYyxDQUFDbUMscUJBQVksSUFDL0N2RDtnQkFFSjtZQUNGLENBQUE7UUFDQTBELE9BQU8sQ0FBQ3JELGtCQUFvQ0MsUUFBdUIsQ0FBQTtnQkFDakUsR0FBR0QsZ0JBQWdCO2dCQUNuQixDQUFDQyxNQUFNVCxJQUFJLENBQUMsRUFBRTtvQkFDWndCLE1BQU1DLElBQUFBLHlCQUFnQixFQUNwQmhCLE9BQ0EsSUFBSXFELHdCQUFlLENBQUM7d0JBQ2xCOUQsTUFBTVcsSUFBQUEsMEJBQWlCLEVBQUNQLFlBQVlLLE1BQU1ULElBQUk7d0JBQzlDK0QsUUFBUUMsSUFBQUEsc0JBQWEsRUFBQ3ZEO29CQUN4QixJQUNBTjtnQkFFSjtZQUNGLENBQUE7UUFDQThELGNBQWMsQ0FBQ3pELGtCQUFvQ0M7WUFDakQsTUFBTSxFQUFFeUQsVUFBVSxFQUFFLEdBQUd6RDtZQUN2QixNQUFNMEQsNkJBQTZCQyxNQUFNQyxPQUFPLENBQUNIO1lBQ2pELE1BQU1JLGdCQUFnQjdELE1BQU1rRCxPQUFPO1lBQ25DLE1BQU1ZLG1CQUFtQjVELElBQUFBLDBCQUFpQixFQUFDUCxZQUFZUSxJQUFBQSxxQkFBTyxFQUFDSCxNQUFNVCxJQUFJLEVBQUU7WUFFM0UsSUFBSXdCO1lBQ0osSUFBSWdELGlCQUFpQjtZQUVyQixJQUFJSixNQUFNQyxPQUFPLENBQUNILGFBQWE7Z0JBQzdCTSxpQkFBaUIsSUFBSVYsd0JBQWUsQ0FBQztvQkFDbkM5RCxNQUFNLENBQUMsRUFBRXVFLGlCQUFpQixXQUFXLENBQUM7b0JBQ3RDUixRQUFRRyxXQUFXdEMsTUFBTSxDQUN2QixDQUFDNkMsV0FBV0MsV0FBYyxDQUFBOzRCQUN4QixHQUFHRCxTQUFTOzRCQUNaLENBQUNFLElBQUFBLG1CQUFVLEVBQUNELFVBQVUsRUFBRTtnQ0FDdEJFLE9BQU9GOzRCQUNUO3dCQUNGLENBQUEsR0FDQSxDQUFDO2dCQUVMO2dCQUVBLE1BQU03RCxRQUFRcUQsV0FBV1csR0FBRyxDQUFDLENBQUNILFdBQWFyRSxRQUFReUUsV0FBVyxDQUFDSixTQUFTLENBQUMxQyxPQUFPLENBQUNSLElBQUk7Z0JBRXJGQSxPQUFPLElBQUl1RCwwQkFBaUIsQ0FBQztvQkFDM0IvRSxNQUFNLENBQUMsRUFBRXVFLGlCQUFpQixhQUFhLENBQUM7b0JBQ3hDckUsUUFBUTt3QkFDTmdFLFlBQVk7NEJBQ1YxQyxNQUFNZ0Q7d0JBQ1I7d0JBQ0FJLE9BQU87NEJBQ0xwRCxNQUFNLElBQUlZLHlCQUFnQixDQUFDO2dDQUN6QnBDLE1BQU11RTtnQ0FDTixNQUFNbEMsYUFBWUMsSUFBSSxFQUFFLEVBQUUwQyxHQUFHLEVBQUU7b0NBQzdCLE9BQU8zRSxRQUFReUUsV0FBVyxDQUFDeEMsS0FBSzJDLFVBQVUsQ0FBQyxDQUFDakQsT0FBTyxDQUFDUixJQUFJLENBQUN4QixJQUFJO2dDQUMvRDtnQ0FDQWE7NEJBQ0Y7d0JBQ0Y7b0JBQ0Y7Z0JBQ0Y7WUFDRixPQUFPO2dCQUNILENBQUEsRUFBRVcsSUFBSSxFQUFFLEdBQUduQixRQUFReUUsV0FBVyxDQUFDWixXQUFXLENBQUNsQyxPQUFPLEFBQUQ7WUFDckQ7WUFFQSxzREFBc0Q7WUFDdEQsZ0VBQWdFO1lBQ2hFLDJFQUEyRTtZQUMzRSxtQ0FBbUM7WUFFbkNSLE9BQU9BLFFBQVEwRDtZQUVmLE1BQU1DLG1CQU1GLENBQUM7WUFFTCxJQUFJOUUsUUFBUStFLE1BQU0sQ0FBQ0MsWUFBWSxFQUFFO2dCQUMvQkYsaUJBQWlCRyxNQUFNLEdBQUc7b0JBQ3hCOUQsTUFBTW5CLFFBQVFRLEtBQUssQ0FBQzBFLGVBQWU7Z0JBQ3JDO2dCQUVBSixpQkFBaUJLLGNBQWMsR0FBRztvQkFDaENoRSxNQUFNbkIsUUFBUVEsS0FBSyxDQUFDNEUsdUJBQXVCO2dCQUM3QztZQUNGO1lBRUEsTUFBTXhCLGVBQWU7Z0JBQ25CeUIsTUFBTVA7Z0JBQ05RLFlBQVk7b0JBQUVDLFlBQVk7Z0JBQUc7Z0JBQzdCLE1BQU1DLFNBQVFDLE1BQU0sRUFBRUosSUFBSSxFQUFFSyxPQUFPO29CQUNqQyxNQUFNbkIsUUFBUWtCLE1BQU0sQ0FBQ3JGLE1BQU1ULElBQUksQ0FBQztvQkFDaEMsTUFBTXNGLFNBQVNJLEtBQUtKLE1BQU0sSUFBSVMsUUFBUWYsR0FBRyxDQUFDTSxNQUFNO29CQUNoRCxNQUFNRSxpQkFBaUJFLEtBQUtGLGNBQWMsSUFBSU8sUUFBUWYsR0FBRyxDQUFDUSxjQUFjO29CQUN4RSxJQUFJUSx3QkFBd0J2RixNQUFNeUQsVUFBVTtvQkFFNUMsSUFBSUksZUFBZTt3QkFDakIsTUFBTTJCLFVBQVUsRUFBRTt3QkFDbEIsTUFBTUMsaUJBQWlCLEVBQUU7d0JBRXpCLE1BQU1DLDBCQUEwQixPQUFPQyxZQUFZQzs0QkFDakQsSUFBSUMsS0FBS0Y7NEJBQ1QsSUFBSUcsaUJBQWlCOUYsTUFBTXlELFVBQVU7NEJBRXJDLElBQUlDLDRCQUE0QjtnQ0FDOUJvQyxpQkFBaUJILFdBQVdsQyxVQUFVO2dDQUN0Q29DLEtBQUtGLFdBQVd4QixLQUFLOzRCQUN2Qjs0QkFFQSxNQUFNNEIsU0FBUyxNQUFNVCxRQUFRZixHQUFHLENBQUN5QixpQkFBaUIsQ0FBQ0MsSUFBSSxDQUNyREMsS0FBS0MsU0FBUyxDQUFDO2dDQUNiYixRQUFRZixHQUFHLENBQUM2QixhQUFhO2dDQUN6Qk47Z0NBQ0FEO2dDQUNBO2dDQUNBO2dDQUNBaEI7Z0NBQ0FFO2dDQUNBO2dDQUNBOzZCQUNEOzRCQUdILElBQUlnQixRQUFRO2dDQUNWLElBQUlyQyw0QkFBNEI7b0NBQzlCOEIsT0FBTyxDQUFDSSxFQUFFLEdBQUc7d0NBQ1huQyxZQUFZcUM7d0NBQ1ozQixPQUFPOzRDQUNMLEdBQUc0QixNQUFNOzRDQUNUdkIsWUFBWXNCO3dDQUNkO29DQUNGO2dDQUNGLE9BQU87b0NBQ0xOLE9BQU8sQ0FBQ0ksRUFBRSxHQUFHRztnQ0FDZjs0QkFDRjt3QkFDRjt3QkFFQSxJQUFJNUIsT0FBTzs0QkFDVEEsTUFBTWtDLE9BQU8sQ0FBQyxDQUFDVixZQUFZQztnQ0FDekJILGVBQWVoRSxJQUFJLENBQUNpRSx3QkFBd0JDLFlBQVlDOzRCQUMxRDt3QkFDRjt3QkFFQSxNQUFNVSxRQUFRQyxHQUFHLENBQUNkO3dCQUNsQixPQUFPRDtvQkFDVDtvQkFFQSxJQUFJSyxLQUFLMUI7b0JBQ1QsSUFBSVQsOEJBQThCUyxPQUFPO3dCQUN2QzBCLEtBQUsxQixNQUFNQSxLQUFLO3dCQUNoQm9CLHdCQUF3QnBCLE1BQU1WLFVBQVU7b0JBQzFDO29CQUVBLElBQUlvQyxJQUFJO3dCQUNOLE1BQU1XLGtCQUFrQixNQUFNbEIsUUFBUWYsR0FBRyxDQUFDeUIsaUJBQWlCLENBQUNDLElBQUksQ0FDOURDLEtBQUtDLFNBQVMsQ0FBQzs0QkFDYmIsUUFBUWYsR0FBRyxDQUFDNkIsYUFBYTs0QkFDekJiOzRCQUNBTTs0QkFDQTs0QkFDQTs0QkFDQWhCOzRCQUNBRTs0QkFDQTs0QkFDQTt5QkFDRDt3QkFHSCxJQUFJeUIsaUJBQWlCOzRCQUNuQixJQUFJOUMsNEJBQTRCO2dDQUM5QixPQUFPO29DQUNMRCxZQUFZOEI7b0NBQ1pwQixPQUFPO3dDQUNMLEdBQUdxQyxlQUFlO3dDQUNsQmhDLFlBQVllO29DQUNkO2dDQUNGOzRCQUNGOzRCQUVBLE9BQU9pQjt3QkFDVDt3QkFFQSxPQUFPO29CQUNUO29CQUVBLE9BQU87Z0JBQ1Q7Z0JBQ0F6RixNQUFNQyxJQUFBQSx5QkFBZ0IsRUFDcEJoQixPQUNBNkQsZ0JBQWdCLElBQUloRCxvQkFBVyxDQUFDLElBQUlDLHVCQUFjLENBQUNDLFNBQVNBLE1BQzVEckI7WUFFSjtZQUVBLE9BQU87Z0JBQ0wsR0FBR0ssZ0JBQWdCO2dCQUNuQixDQUFDQyxNQUFNVCxJQUFJLENBQUMsRUFBRWlFO1lBQ2hCO1FBQ0Y7UUFDQWlELFVBQVUsQ0FBQzFHLGtCQUFvQ0MsUUFBMEIsQ0FBQTtnQkFDdkUsR0FBR0QsZ0JBQWdCO2dCQUNuQixDQUFDQyxNQUFNVCxJQUFJLENBQUMsRUFBRTtvQkFDWjBGLE1BQU07d0JBQ0p5QixPQUFPOzRCQUNMM0YsTUFBTWlDLG1CQUFVO3dCQUNsQjtvQkFDRjtvQkFDQSxNQUFNb0MsU0FBUUMsTUFBTSxFQUFFSixJQUFJLEVBQUVLLE9BQU87d0JBQ2pDLElBQUlvQixRQUFROUcsUUFBUStFLE1BQU0sQ0FBQ2dDLFlBQVk7d0JBQ3ZDLElBQUksT0FBTzFCLEtBQUt5QixLQUFLLEtBQUssYUFBYUEsUUFBUXpCLEtBQUt5QixLQUFLO3dCQUN6RCxNQUFNRSxTQUEwQjVHLE9BQU80Rzt3QkFFdkMsNERBQTREO3dCQUM1RCxxR0FBcUc7d0JBQ3JHLDhDQUE4Qzt3QkFDOUMsc0VBQXNFO3dCQUN0RSxnSkFBZ0o7d0JBQ2hKLElBQUlBLFFBQVFDLG1CQUFtQjs0QkFDN0IsTUFBTUQsUUFBUUMsa0JBQWtCO2dDQUM5QnZCO2dDQUNBb0I7Z0NBQ0ExRztnQ0FDQThHLFVBQVU7Z0NBQ1ZDLGdCQUFnQjtnQ0FDaEJDLGdCQUFnQjtnQ0FDaEJDLG9CQUFvQixFQUFFO2dDQUN0QjFDLEtBQUtlLFFBQVFmLEdBQUc7Z0NBQ2hCMkMsa0JBQWtCO2dDQUNsQkMsWUFBWTlCOzRCQUNkO3dCQUNGO3dCQUVBLE9BQU9BLE1BQU0sQ0FBQ3JGLE1BQU1ULElBQUksQ0FBQztvQkFDM0I7b0JBQ0F3QixNQUFNQyxJQUFBQSx5QkFBZ0IsRUFBQ2hCLE9BQU84Qyw0QkFBVyxFQUFFcEQ7Z0JBQzdDO1lBQ0YsQ0FBQTtRQUNBMEgsS0FBSyxDQUFDckgsa0JBQW9DQyxRQUN4Q0EsTUFBTVAsTUFBTSxDQUFDMEIsTUFBTSxDQUFDLENBQUNrRywrQkFBK0JoRjtnQkFDbEQsTUFBTUMsY0FBY3pDLGdCQUFnQixDQUFDd0MsU0FBU3RCLElBQUksQ0FBQztnQkFDbkQsSUFBSXVCLGFBQWEsT0FBT0EsWUFBWStFLCtCQUErQmhGO2dCQUNuRSxPQUFPZ0Y7WUFDVCxHQUFHdEg7UUFDTHVILFFBQVEsQ0FBQ3ZILGtCQUFvQ0M7WUFDM0MsTUFBTTBCLFdBQVd4QixJQUFBQSwwQkFBaUIsRUFBQ1AsWUFBWUssTUFBTVQsSUFBSTtZQUV6RCxJQUFJd0IsT0FBb0IsSUFBSXNDLHdCQUFlLENBQUM7Z0JBQzFDOUQsTUFBTW1DO2dCQUNONEIsUUFBUUMsSUFBQUEsc0JBQWEsRUFBQ3ZEO1lBQ3hCO1lBRUFlLE9BQU9mLE1BQU1rRCxPQUFPLEdBQUcsSUFBSXJDLG9CQUFXLENBQUMsSUFBSUMsdUJBQWMsQ0FBQ0MsU0FBU0E7WUFDbkVBLE9BQU9DLElBQUFBLHlCQUFnQixFQUFDaEIsT0FBT2UsTUFBTXJCO1lBRXJDLE9BQU87Z0JBQ0wsR0FBR0ssZ0JBQWdCO2dCQUNuQixDQUFDQyxNQUFNVCxJQUFJLENBQUMsRUFBRTtvQkFBRXdCO2dCQUFLO1lBQ3ZCO1FBQ0Y7UUFDQXdHLE1BQU0sQ0FBQ3hILGtCQUFvQ0MsUUFDekNBLE1BQU11SCxJQUFJLENBQUNwRyxNQUFNLENBQUMsQ0FBQ3FHLFdBQVdDO2dCQUM1QixJQUFJQyxJQUFBQSxpQkFBVSxFQUFDRCxNQUFNO29CQUNuQixNQUFNeEgsZ0JBQ0p3SCxLQUFLeEgsaUJBQWlCQyxJQUFBQSwwQkFBaUIsRUFBQ1AsWUFBWVEsSUFBQUEscUJBQU8sRUFBQ3NILElBQUlsSSxJQUFJLEVBQUU7b0JBRXhFLElBQUksQ0FBQ0ssUUFBUVEsS0FBSyxDQUFDdUgsUUFBUSxDQUFDMUgsY0FBYyxFQUFFO3dCQUMxQyxNQUFNSyxhQUFhaEIsZ0JBQWdCOzRCQUNqQ0MsTUFBTVU7NEJBQ05SLFFBQVFnSSxJQUFJaEksTUFBTTs0QkFDbEJDOzRCQUNBQyxZQUFZTTs0QkFDWkw7d0JBQ0Y7d0JBRUEsSUFBSVksT0FBT0MsSUFBSSxDQUFDSCxXQUFXSSxTQUFTLElBQUlDLE1BQU0sRUFBRTs0QkFDOUMsT0FBTztnQ0FDTCxHQUFHNkcsU0FBUztnQ0FDWixDQUFDQyxJQUFJbEksSUFBSSxDQUFDLEVBQUU7b0NBQUV3QixNQUFNVDtnQ0FBVzs0QkFDakM7d0JBQ0Y7b0JBQ0Y7b0JBRUEsT0FBT2tIO2dCQUNUO2dCQUVBLE9BQU87b0JBQ0wsR0FBR0EsU0FBUztvQkFDWixHQUFHQyxJQUFJaEksTUFBTSxDQUFDMEIsTUFBTSxDQUFDLENBQUN5RyxnQkFBZ0J2Rjt3QkFDcEMsTUFBTUMsY0FBY3pDLGdCQUFnQixDQUFDd0MsU0FBU3RCLElBQUksQ0FBQzt3QkFDbkQsSUFBSXVCLGFBQWEsT0FBT0EsWUFBWXNGLGdCQUFnQnZGO3dCQUNwRCxPQUFPdUY7b0JBQ1QsR0FBR0osVUFBVTtnQkFDZjtZQUNGLEdBQUd6SDtRQUNMOEgsTUFBTSxDQUFDOUgsa0JBQW9DQyxRQUFzQixDQUFBO2dCQUMvRCxHQUFHRCxnQkFBZ0I7Z0JBQ25CLENBQUNDLE1BQU1ULElBQUksQ0FBQyxFQUFFO29CQUFFd0IsTUFBTUMsSUFBQUEseUJBQWdCLEVBQUNoQixPQUFPa0Msc0JBQWEsRUFBRXhDO2dCQUFlO1lBQzlFLENBQUE7UUFDQW9JLFVBQVUsQ0FBQy9ILGtCQUFvQ0MsUUFBMEIsQ0FBQTtnQkFDdkUsR0FBR0QsZ0JBQWdCO2dCQUNuQixDQUFDQyxNQUFNVCxJQUFJLENBQUMsRUFBRTtvQkFBRXdCLE1BQU1DLElBQUFBLHlCQUFnQixFQUFDaEIsT0FBT2tDLHNCQUFhLEVBQUV4QztnQkFBZTtZQUM5RSxDQUFBO1FBQ0FxSSxRQUFRLENBQUNoSSxrQkFBb0NDO1lBQzNDLE1BQU0sRUFBRXlELFVBQVUsRUFBRSxHQUFHekQ7WUFFdkIsTUFBTWdJLGFBQWE5SCxJQUFBQSwwQkFBaUIsRUFBQ1AsWUFBWVEsSUFBQUEscUJBQU8sRUFBQ0gsTUFBTVQsSUFBSSxFQUFFO1lBRXJFLHNEQUFzRDtZQUN0RCxnRUFBZ0U7WUFDaEUsMkVBQTJFO1lBQzNFLG1DQUFtQztZQUVuQyxNQUFNd0IsT0FBT0MsSUFBQUEseUJBQWdCLEVBQzNCaEIsT0FDQUosUUFBUXlFLFdBQVcsQ0FBQ1osV0FBVyxDQUFDbEMsT0FBTyxDQUFDUixJQUFJLElBQUkwRCx1QkFDaEQvRTtZQUdGLE1BQU11SSxhQUFhLENBQUM7WUFFcEIsSUFBSXJJLFFBQVErRSxNQUFNLENBQUNDLFlBQVksRUFBRTtnQkFDL0JxRCxXQUFXcEQsTUFBTSxHQUFHO29CQUNsQjlELE1BQU1uQixRQUFRUSxLQUFLLENBQUMwRSxlQUFlO2dCQUNyQztnQkFFQW1ELFdBQVdsRCxjQUFjLEdBQUc7b0JBQzFCaEUsTUFBTW5CLFFBQVFRLEtBQUssQ0FBQzRFLHVCQUF1QjtnQkFDN0M7WUFDRjtZQUVBLE1BQU1PLHdCQUF3QnZGLE1BQU15RCxVQUFVO1lBRTlDLE1BQU1zRSxTQUFTO2dCQUNiOUMsTUFBTWdEO2dCQUNOL0MsWUFBWTtvQkFBRUMsWUFBWTtnQkFBRztnQkFDN0IsTUFBTUMsU0FBUUMsTUFBTSxFQUFFSixJQUFJLEVBQUVLLE9BQU87b0JBQ2pDLE1BQU1uQixRQUFRa0IsTUFBTSxDQUFDckYsTUFBTVQsSUFBSSxDQUFDO29CQUNoQyxNQUFNc0YsU0FBU0ksS0FBS0osTUFBTSxJQUFJUyxRQUFRZixHQUFHLENBQUNNLE1BQU07b0JBQ2hELE1BQU1FLGlCQUFpQkUsS0FBS0YsY0FBYyxJQUFJTyxRQUFRZixHQUFHLENBQUNRLGNBQWM7b0JBQ3hFLE1BQU1jLEtBQUsxQjtvQkFFWCxJQUFJMEIsSUFBSTt3QkFDTixNQUFNVyxrQkFBa0IsTUFBTWxCLFFBQVFmLEdBQUcsQ0FBQ3lCLGlCQUFpQixDQUFDQyxJQUFJLENBQzlEQyxLQUFLQyxTQUFTLENBQUM7NEJBQ2JiLFFBQVFmLEdBQUcsQ0FBQzZCLGFBQWE7NEJBQ3pCYjs0QkFDQU07NEJBQ0E7NEJBQ0E7NEJBQ0FoQjs0QkFDQUU7NEJBQ0E7NEJBQ0E7eUJBQ0Q7d0JBR0gsT0FBT3lCLG1CQUFtQjtvQkFDNUI7b0JBRUEsT0FBTztnQkFDVDtnQkFDQXpGO1lBQ0Y7WUFFQSxNQUFNbUgsY0FBY3RJLFFBQVF5RSxXQUFXLENBQUNaLFdBQVcsQ0FBQ2tCLE1BQU0sQ0FBQ2xGLE1BQU07WUFFakVzSSxPQUFPOUMsSUFBSSxDQUFDa0QsS0FBSyxHQUFHO2dCQUNsQnBILE1BQU1xSCxJQUFBQSw0QkFBbUIsRUFBQztvQkFDeEI3SSxNQUFNeUk7b0JBQ052SSxRQUFReUk7b0JBQ1J2SSxZQUFZcUk7b0JBQ1pwSTtnQkFDRjtZQUNGO1lBRUEsT0FBTztnQkFDTCxHQUFHRyxnQkFBZ0I7Z0JBQ25CLENBQUNDLE1BQU1ULElBQUksQ0FBQyxFQUFFd0k7WUFDaEI7UUFDRjtJQUNGO0lBRUEsTUFBTU0sZUFBZTtRQUNuQjlJO1FBQ0FFLFFBQVEsSUFDTkEsT0FBTzBCLE1BQU0sQ0FBQyxDQUFDcEIsa0JBQWtCQztnQkFDL0IsTUFBTXNJLGNBQWN6SSxnQkFBZ0IsQ0FBQ0csTUFBTWUsSUFBSSxDQUFDO2dCQUVoRCxJQUFJLE9BQU91SCxnQkFBZ0IsWUFBWTtvQkFDckMsT0FBT3ZJO2dCQUNUO2dCQUVBLE9BQU87b0JBQ0wsR0FBR0EsZ0JBQWdCO29CQUNuQixHQUFHdUksWUFBWXZJLGtCQUFrQkMsTUFBTTtnQkFDekM7WUFDRixHQUFHUjtJQUNQO0lBRUEsTUFBTWlGLHdCQUF3QixJQUFJSCwwQkFBaUIsQ0FBQytEO0lBRXBELE9BQU81RDtBQUNUO01BRUEsV0FBZW5GIn0=
|
|
505
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ncmFwaHFsL3NjaGVtYS9idWlsZE9iamVjdFR5cGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVzZS1iZWZvcmUtZGVmaW5lICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXN5bnRheCAqL1xuaW1wb3J0IHR5cGUgeyBHcmFwaFFMRmllbGRDb25maWcsIEdyYXBoUUxUeXBlIH0gZnJvbSAnZ3JhcGhxbCdcblxuaW1wb3J0IHtcbiAgR3JhcGhRTEJvb2xlYW4sXG4gIEdyYXBoUUxFbnVtVHlwZSxcbiAgR3JhcGhRTEZsb2F0LFxuICBHcmFwaFFMSW50LFxuICBHcmFwaFFMTGlzdCxcbiAgR3JhcGhRTE5vbk51bGwsXG4gIEdyYXBoUUxPYmplY3RUeXBlLFxuICBHcmFwaFFMU3RyaW5nLFxuICBHcmFwaFFMVW5pb25UeXBlLFxufSBmcm9tICdncmFwaHFsJ1xuaW1wb3J0IHsgRGF0ZVRpbWVSZXNvbHZlciwgRW1haWxBZGRyZXNzUmVzb2x2ZXIgfSBmcm9tICdncmFwaHFsLXNjYWxhcnMnXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11c2UtYmVmb3JlLWRlZmluZSAqL1xuaW1wb3J0IHsgR3JhcGhRTEpTT04gfSBmcm9tICdncmFwaHFsLXR5cGUtanNvbidcblxuaW1wb3J0IHR5cGUgeyBSaWNoVGV4dEFkYXB0ZXIgfSBmcm9tICcuLi8uLi9hZG1pbi9jb21wb25lbnRzL2Zvcm1zL2ZpZWxkLXR5cGVzL1JpY2hUZXh0L3R5cGVzJ1xuaW1wb3J0IHR5cGUge1xuICBBcnJheUZpZWxkLFxuICBCbG9ja0ZpZWxkLFxuICBDaGVja2JveEZpZWxkLFxuICBDb2RlRmllbGQsXG4gIENvbGxhcHNpYmxlRmllbGQsXG4gIERhdGVGaWVsZCxcbiAgRW1haWxGaWVsZCxcbiAgRmllbGQsXG4gIEdyb3VwRmllbGQsXG4gIEpTT05GaWVsZCxcbiAgTnVtYmVyRmllbGQsXG4gIFBvaW50RmllbGQsXG4gIFJhZGlvRmllbGQsXG4gIFJlbGF0aW9uc2hpcEZpZWxkLFxuICBSaWNoVGV4dEZpZWxkLFxuICBSb3dGaWVsZCxcbiAgU2VsZWN0RmllbGQsXG4gIFRhYnNGaWVsZCxcbiAgVGV4dEZpZWxkLFxuICBUZXh0YXJlYUZpZWxkLFxuICBVcGxvYWRGaWVsZCxcbn0gZnJvbSAnLi4vLi4vZmllbGRzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZCB9IGZyb20gJy4uLy4uL3BheWxvYWQnXG5cbmltcG9ydCB7IHRhYkhhc05hbWUgfSBmcm9tICcuLi8uLi9maWVsZHMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHsgdG9Xb3JkcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9mb3JtYXRMYWJlbHMnXG5pbXBvcnQgY29tYmluZVBhcmVudE5hbWUgZnJvbSAnLi4vdXRpbGl0aWVzL2NvbWJpbmVQYXJlbnROYW1lJ1xuaW1wb3J0IGZvcm1hdE5hbWUgZnJvbSAnLi4vdXRpbGl0aWVzL2Zvcm1hdE5hbWUnXG5pbXBvcnQgZm9ybWF0T3B0aW9ucyBmcm9tICcuLi91dGlsaXRpZXMvZm9ybWF0T3B0aW9ucydcbmltcG9ydCBidWlsZFdoZXJlSW5wdXRUeXBlIGZyb20gJy4vYnVpbGRXaGVyZUlucHV0VHlwZSdcbmltcG9ydCBpc0ZpZWxkTnVsbGFibGUgZnJvbSAnLi9pc0ZpZWxkTnVsbGFibGUnXG5pbXBvcnQgd2l0aE51bGxhYmxlVHlwZSBmcm9tICcuL3dpdGhOdWxsYWJsZVR5cGUnXG5cbnR5cGUgTG9jYWxlSW5wdXRUeXBlID0ge1xuICBmYWxsYmFja0xvY2FsZToge1xuICAgIHR5cGU6IEdyYXBoUUxUeXBlXG4gIH1cbiAgbG9jYWxlOiB7XG4gICAgdHlwZTogR3JhcGhRTFR5cGVcbiAgfVxuICB3aGVyZToge1xuICAgIHR5cGU6IEdyYXBoUUxUeXBlXG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgT2JqZWN0VHlwZUNvbmZpZyA9IHtcbiAgW3BhdGg6IHN0cmluZ106IEdyYXBoUUxGaWVsZENvbmZpZzxhbnksIGFueT5cbn1cblxudHlwZSBBcmdzID0ge1xuICBiYXNlRmllbGRzPzogT2JqZWN0VHlwZUNvbmZpZ1xuICBmaWVsZHM6IEZpZWxkW11cbiAgZm9yY2VOdWxsYWJsZT86IGJvb2xlYW5cbiAgbmFtZTogc3RyaW5nXG4gIHBhcmVudE5hbWU6IHN0cmluZ1xuICBwYXlsb2FkOiBQYXlsb2FkXG59XG5cbmZ1bmN0aW9uIGJ1aWxkT2JqZWN0VHlwZSh7XG4gIG5hbWUsXG4gIGJhc2VGaWVsZHMgPSB7fSxcbiAgZmllbGRzLFxuICBmb3JjZU51bGxhYmxlLFxuICBwYXJlbnROYW1lLFxuICBwYXlsb2FkLFxufTogQXJncyk6IEdyYXBoUUxPYmplY3RUeXBlIHtcbiAgY29uc3QgZmllbGRUb1NjaGVtYU1hcCA9IHtcbiAgICBhcnJheTogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBBcnJheUZpZWxkKSA9PiB7XG4gICAgICBjb25zdCBpbnRlcmZhY2VOYW1lID1cbiAgICAgICAgZmllbGQ/LmludGVyZmFjZU5hbWUgfHwgY29tYmluZVBhcmVudE5hbWUocGFyZW50TmFtZSwgdG9Xb3JkcyhmaWVsZC5uYW1lLCB0cnVlKSlcblxuICAgICAgaWYgKCFwYXlsb2FkLnR5cGVzLmFycmF5VHlwZXNbaW50ZXJmYWNlTmFtZV0pIHtcbiAgICAgICAgY29uc3Qgb2JqZWN0VHlwZSA9IGJ1aWxkT2JqZWN0VHlwZSh7XG4gICAgICAgICAgbmFtZTogaW50ZXJmYWNlTmFtZSxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBmb3JjZU51bGxhYmxlOiBpc0ZpZWxkTnVsbGFibGUoZmllbGQsIGZvcmNlTnVsbGFibGUpLFxuICAgICAgICAgIHBhcmVudE5hbWU6IGludGVyZmFjZU5hbWUsXG4gICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoT2JqZWN0LmtleXMob2JqZWN0VHlwZS5nZXRGaWVsZHMoKSkubGVuZ3RoKSB7XG4gICAgICAgICAgcGF5bG9hZC50eXBlcy5hcnJheVR5cGVzW2ludGVyZmFjZU5hbWVdID0gb2JqZWN0VHlwZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghcGF5bG9hZC50eXBlcy5hcnJheVR5cGVzW2ludGVyZmFjZU5hbWVdKSB7XG4gICAgICAgIHJldHVybiBvYmplY3RUeXBlQ29uZmlnXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFycmF5VHlwZSA9IG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwocGF5bG9hZC50eXBlcy5hcnJheVR5cGVzW2ludGVyZmFjZU5hbWVdKSlcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIGFycmF5VHlwZSkgfSxcbiAgICAgIH1cbiAgICB9LFxuICAgIGJsb2NrczogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBCbG9ja0ZpZWxkKSA9PiB7XG4gICAgICBjb25zdCBibG9ja1R5cGVzOiBHcmFwaFFMT2JqZWN0VHlwZTxhbnksIGFueT5bXSA9IGZpZWxkLmJsb2Nrcy5yZWR1Y2UoKGFjYywgYmxvY2spID0+IHtcbiAgICAgICAgaWYgKCFwYXlsb2FkLnR5cGVzLmJsb2NrVHlwZXNbYmxvY2suc2x1Z10pIHtcbiAgICAgICAgICBjb25zdCBpbnRlcmZhY2VOYW1lID1cbiAgICAgICAgICAgIGJsb2NrPy5pbnRlcmZhY2VOYW1lIHx8IGJsb2NrPy5ncmFwaFFMPy5zaW5ndWxhck5hbWUgfHwgdG9Xb3JkcyhibG9jay5zbHVnLCB0cnVlKVxuXG4gICAgICAgICAgY29uc3Qgb2JqZWN0VHlwZSA9IGJ1aWxkT2JqZWN0VHlwZSh7XG4gICAgICAgICAgICBuYW1lOiBpbnRlcmZhY2VOYW1lLFxuICAgICAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAgICAgIC4uLmJsb2NrLmZpZWxkcyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdibG9ja1R5cGUnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBmb3JjZU51bGxhYmxlLFxuICAgICAgICAgICAgcGFyZW50TmFtZTogaW50ZXJmYWNlTmFtZSxcbiAgICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhvYmplY3RUeXBlLmdldEZpZWxkcygpKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHBheWxvYWQudHlwZXMuYmxvY2tUeXBlc1tibG9jay5zbHVnXSA9IG9iamVjdFR5cGVcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGF5bG9hZC50eXBlcy5ibG9ja1R5cGVzW2Jsb2NrLnNsdWddKSB7XG4gICAgICAgICAgYWNjLnB1c2gocGF5bG9hZC50eXBlcy5ibG9ja1R5cGVzW2Jsb2NrLnNsdWddKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjY1xuICAgICAgfSwgW10pXG5cbiAgICAgIGlmIChibG9ja1R5cGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gb2JqZWN0VHlwZUNvbmZpZ1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmdWxsTmFtZSA9IGNvbWJpbmVQYXJlbnROYW1lKHBhcmVudE5hbWUsIHRvV29yZHMoZmllbGQubmFtZSwgdHJ1ZSkpXG5cbiAgICAgIGNvbnN0IHR5cGUgPSBuZXcgR3JhcGhRTExpc3QoXG4gICAgICAgIG5ldyBHcmFwaFFMTm9uTnVsbChcbiAgICAgICAgICBuZXcgR3JhcGhRTFVuaW9uVHlwZSh7XG4gICAgICAgICAgICBuYW1lOiBmdWxsTmFtZSxcbiAgICAgICAgICAgIHJlc29sdmVUeXBlOiAoZGF0YSkgPT4gcGF5bG9hZC50eXBlcy5ibG9ja1R5cGVzW2RhdGEuYmxvY2tUeXBlXS5uYW1lLFxuICAgICAgICAgICAgdHlwZXM6IGJsb2NrVHlwZXMsXG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgICApXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm9iamVjdFR5cGVDb25maWcsXG4gICAgICAgIFtmaWVsZC5uYW1lXTogeyB0eXBlOiB3aXRoTnVsbGFibGVUeXBlKGZpZWxkLCB0eXBlKSB9LFxuICAgICAgfVxuICAgIH0sXG4gICAgY2hlY2tib3g6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogQ2hlY2tib3hGaWVsZCkgPT4gKHtcbiAgICAgIC4uLm9iamVjdFR5cGVDb25maWcsXG4gICAgICBbZmllbGQubmFtZV06IHsgdHlwZTogd2l0aE51bGxhYmxlVHlwZShmaWVsZCwgR3JhcGhRTEJvb2xlYW4sIGZvcmNlTnVsbGFibGUpIH0sXG4gICAgfSksXG4gICAgY29kZTogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBDb2RlRmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIEdyYXBoUUxTdHJpbmcsIGZvcmNlTnVsbGFibGUpIH0sXG4gICAgfSksXG4gICAgY29sbGFwc2libGU6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogQ29sbGFwc2libGVGaWVsZCkgPT5cbiAgICAgIGZpZWxkLmZpZWxkcy5yZWR1Y2UoKG9iamVjdFR5cGVDb25maWdXaXRoQ29sbGFwc2libGVGaWVsZHMsIHN1YkZpZWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IGFkZFN1YkZpZWxkID0gZmllbGRUb1NjaGVtYU1hcFtzdWJGaWVsZC50eXBlXVxuICAgICAgICBpZiAoYWRkU3ViRmllbGQpIHJldHVybiBhZGRTdWJGaWVsZChvYmplY3RUeXBlQ29uZmlnV2l0aENvbGxhcHNpYmxlRmllbGRzLCBzdWJGaWVsZClcbiAgICAgICAgcmV0dXJuIG9iamVjdFR5cGVDb25maWdXaXRoQ29sbGFwc2libGVGaWVsZHNcbiAgICAgIH0sIG9iamVjdFR5cGVDb25maWcpLFxuICAgIGRhdGU6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogRGF0ZUZpZWxkKSA9PiAoe1xuICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgIFtmaWVsZC5uYW1lXTogeyB0eXBlOiB3aXRoTnVsbGFibGVUeXBlKGZpZWxkLCBEYXRlVGltZVJlc29sdmVyLCBmb3JjZU51bGxhYmxlKSB9LFxuICAgIH0pLFxuICAgIGVtYWlsOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IEVtYWlsRmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIEVtYWlsQWRkcmVzc1Jlc29sdmVyLCBmb3JjZU51bGxhYmxlKSB9LFxuICAgIH0pLFxuICAgIGdyb3VwOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IEdyb3VwRmllbGQpID0+IHtcbiAgICAgIGNvbnN0IGludGVyZmFjZU5hbWUgPVxuICAgICAgICBmaWVsZD8uaW50ZXJmYWNlTmFtZSB8fCBjb21iaW5lUGFyZW50TmFtZShwYXJlbnROYW1lLCB0b1dvcmRzKGZpZWxkLm5hbWUsIHRydWUpKVxuXG4gICAgICBpZiAoIXBheWxvYWQudHlwZXMuZ3JvdXBUeXBlc1tpbnRlcmZhY2VOYW1lXSkge1xuICAgICAgICBjb25zdCBvYmplY3RUeXBlID0gYnVpbGRPYmplY3RUeXBlKHtcbiAgICAgICAgICBuYW1lOiBpbnRlcmZhY2VOYW1lLFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIGZvcmNlTnVsbGFibGU6IGlzRmllbGROdWxsYWJsZShmaWVsZCwgZm9yY2VOdWxsYWJsZSksXG4gICAgICAgICAgcGFyZW50TmFtZTogaW50ZXJmYWNlTmFtZSxcbiAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhvYmplY3RUeXBlLmdldEZpZWxkcygpKS5sZW5ndGgpIHtcbiAgICAgICAgICBwYXlsb2FkLnR5cGVzLmdyb3VwVHlwZXNbaW50ZXJmYWNlTmFtZV0gPSBvYmplY3RUeXBlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFwYXlsb2FkLnR5cGVzLmdyb3VwVHlwZXNbaW50ZXJmYWNlTmFtZV0pIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdFR5cGVDb25maWdcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHBheWxvYWQudHlwZXMuZ3JvdXBUeXBlc1tpbnRlcmZhY2VOYW1lXSB9LFxuICAgICAgfVxuICAgIH0sXG4gICAganNvbjogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBKU09ORmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIEdyYXBoUUxKU09OLCBmb3JjZU51bGxhYmxlKSB9LFxuICAgIH0pLFxuICAgIG51bWJlcjogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBOdW1iZXJGaWVsZCkgPT4ge1xuICAgICAgY29uc3QgdHlwZSA9IGZpZWxkPy5uYW1lID09PSAnaWQnID8gR3JhcGhRTEludCA6IEdyYXBoUUxGbG9hdFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgICAgW2ZpZWxkLm5hbWVdOiB7XG4gICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlVHlwZShcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgZmllbGQ/Lmhhc01hbnkgPT09IHRydWUgPyBuZXcgR3JhcGhRTExpc3QodHlwZSkgOiB0eXBlLFxuICAgICAgICAgICAgZm9yY2VOdWxsYWJsZSxcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH0sXG4gICAgcG9pbnQ6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogUG9pbnRGaWVsZCkgPT4gKHtcbiAgICAgIC4uLm9iamVjdFR5cGVDb25maWcsXG4gICAgICBbZmllbGQubmFtZV06IHtcbiAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlVHlwZShcbiAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICBuZXcgR3JhcGhRTExpc3QobmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxGbG9hdCkpLFxuICAgICAgICAgIGZvcmNlTnVsbGFibGUsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgIH0pLFxuICAgIHJhZGlvOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFJhZGlvRmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7XG4gICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgbmV3IEdyYXBoUUxFbnVtVHlwZSh7XG4gICAgICAgICAgICBuYW1lOiBjb21iaW5lUGFyZW50TmFtZShwYXJlbnROYW1lLCBmaWVsZC5uYW1lKSxcbiAgICAgICAgICAgIHZhbHVlczogZm9ybWF0T3B0aW9ucyhmaWVsZCksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgZm9yY2VOdWxsYWJsZSxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgcmVsYXRpb25zaGlwOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFJlbGF0aW9uc2hpcEZpZWxkKSA9PiB7XG4gICAgICBjb25zdCB7IHJlbGF0aW9uVG8gfSA9IGZpZWxkXG4gICAgICBjb25zdCBpc1JlbGF0ZWRUb01hbnlDb2xsZWN0aW9ucyA9IEFycmF5LmlzQXJyYXkocmVsYXRpb25UbylcbiAgICAgIGNvbnN0IGhhc01hbnlWYWx1ZXMgPSBmaWVsZC5oYXNNYW55XG4gICAgICBjb25zdCByZWxhdGlvbnNoaXBOYW1lID0gY29tYmluZVBhcmVudE5hbWUocGFyZW50TmFtZSwgdG9Xb3JkcyhmaWVsZC5uYW1lLCB0cnVlKSlcblxuICAgICAgbGV0IHR5cGVcbiAgICAgIGxldCByZWxhdGlvblRvVHlwZSA9IG51bGxcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVsYXRpb25UbykpIHtcbiAgICAgICAgcmVsYXRpb25Ub1R5cGUgPSBuZXcgR3JhcGhRTEVudW1UeXBlKHtcbiAgICAgICAgICBuYW1lOiBgJHtyZWxhdGlvbnNoaXBOYW1lfV9SZWxhdGlvblRvYCxcbiAgICAgICAgICB2YWx1ZXM6IHJlbGF0aW9uVG8ucmVkdWNlKFxuICAgICAgICAgICAgKHJlbGF0aW9ucywgcmVsYXRpb24pID0+ICh7XG4gICAgICAgICAgICAgIC4uLnJlbGF0aW9ucyxcbiAgICAgICAgICAgICAgW2Zvcm1hdE5hbWUocmVsYXRpb24pXToge1xuICAgICAgICAgICAgICAgIHZhbHVlOiByZWxhdGlvbixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgKSxcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCB0eXBlcyA9IHJlbGF0aW9uVG8ubWFwKChyZWxhdGlvbikgPT4gcGF5bG9hZC5jb2xsZWN0aW9uc1tyZWxhdGlvbl0uZ3JhcGhRTC50eXBlKVxuXG4gICAgICAgIHR5cGUgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICAgICAgICAgIG5hbWU6IGAke3JlbGF0aW9uc2hpcE5hbWV9X1JlbGF0aW9uc2hpcGAsXG4gICAgICAgICAgZmllbGRzOiB7XG4gICAgICAgICAgICByZWxhdGlvblRvOiB7XG4gICAgICAgICAgICAgIHR5cGU6IHJlbGF0aW9uVG9UeXBlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMVW5pb25UeXBlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiByZWxhdGlvbnNoaXBOYW1lLFxuICAgICAgICAgICAgICAgIGFzeW5jIHJlc29sdmVUeXBlKGRhdGEsIHsgcmVxIH0pIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBwYXlsb2FkLmNvbGxlY3Rpb25zW2RhdGEuY29sbGVjdGlvbl0uZ3JhcGhRTC50eXBlLm5hbWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHR5cGVzLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIDsoeyB0eXBlIH0gPSBwYXlsb2FkLmNvbGxlY3Rpb25zW3JlbGF0aW9uVG9dLmdyYXBoUUwpXG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSByZWxhdGlvbnNoaXBUeXBlIGlzIHVuZGVmaW5lZCBhdCB0aGlzIHBvaW50LFxuICAgICAgLy8gaXQgY2FuIGJlIGFzc3VtZWQgdGhhdCB0aGlzIGJsb2NrVHlwZSBjYW4gaGF2ZSBhIHJlbGF0aW9uc2hpcFxuICAgICAgLy8gdG8gaXRzZWxmLiBUaGVyZWZvcmUsIHdlIHNldCB0aGUgcmVsYXRpb25zaGlwVHlwZSBlcXVhbCB0byB0aGUgYmxvY2tUeXBlXG4gICAgICAvLyB0aGF0IGlzIGN1cnJlbnRseSBiZWluZyBjcmVhdGVkLlxuXG4gICAgICB0eXBlID0gdHlwZSB8fCBuZXdseUNyZWF0ZWRCbG9ja1R5cGVcblxuICAgICAgY29uc3QgcmVsYXRpb25zaGlwQXJnczoge1xuICAgICAgICBmYWxsYmFja0xvY2FsZT86IHVua25vd25cbiAgICAgICAgbGltaXQ/OiB1bmtub3duXG4gICAgICAgIGxvY2FsZT86IHVua25vd25cbiAgICAgICAgcGFnZT86IHVua25vd25cbiAgICAgICAgd2hlcmU/OiB1bmtub3duXG4gICAgICB9ID0ge31cblxuICAgICAgaWYgKHBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICByZWxhdGlvbnNoaXBBcmdzLmxvY2FsZSA9IHtcbiAgICAgICAgICB0eXBlOiBwYXlsb2FkLnR5cGVzLmxvY2FsZUlucHV0VHlwZSxcbiAgICAgICAgfVxuXG4gICAgICAgIHJlbGF0aW9uc2hpcEFyZ3MuZmFsbGJhY2tMb2NhbGUgPSB7XG4gICAgICAgICAgdHlwZTogcGF5bG9hZC50eXBlcy5mYWxsYmFja0xvY2FsZUlucHV0VHlwZSxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCByZWxhdGlvbnNoaXAgPSB7XG4gICAgICAgIGFyZ3M6IHJlbGF0aW9uc2hpcEFyZ3MsXG4gICAgICAgIGV4dGVuc2lvbnM6IHsgY29tcGxleGl0eTogMTAgfSxcbiAgICAgICAgYXN5bmMgcmVzb2x2ZShwYXJlbnQsIGFyZ3MsIGNvbnRleHQpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcmVudFtmaWVsZC5uYW1lXVxuICAgICAgICAgIGNvbnN0IGxvY2FsZSA9IGFyZ3MubG9jYWxlIHx8IGNvbnRleHQucmVxLmxvY2FsZVxuICAgICAgICAgIGNvbnN0IGZhbGxiYWNrTG9jYWxlID0gYXJncy5mYWxsYmFja0xvY2FsZSB8fCBjb250ZXh0LnJlcS5mYWxsYmFja0xvY2FsZVxuICAgICAgICAgIGxldCByZWxhdGVkQ29sbGVjdGlvblNsdWcgPSBmaWVsZC5yZWxhdGlvblRvXG5cbiAgICAgICAgICBpZiAoaGFzTWFueVZhbHVlcykge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IFtdXG4gICAgICAgICAgICBjb25zdCByZXN1bHRQcm9taXNlcyA9IFtdXG5cbiAgICAgICAgICAgIGNvbnN0IGNyZWF0ZVBvcHVsYXRpb25Qcm9taXNlID0gYXN5bmMgKHJlbGF0ZWREb2MsIGkpID0+IHtcbiAgICAgICAgICAgICAgbGV0IGlkID0gcmVsYXRlZERvY1xuICAgICAgICAgICAgICBsZXQgY29sbGVjdGlvblNsdWcgPSBmaWVsZC5yZWxhdGlvblRvXG5cbiAgICAgICAgICAgICAgaWYgKGlzUmVsYXRlZFRvTWFueUNvbGxlY3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvblNsdWcgPSByZWxhdGVkRG9jLnJlbGF0aW9uVG9cbiAgICAgICAgICAgICAgICBpZCA9IHJlbGF0ZWREb2MudmFsdWVcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvbnRleHQucmVxLnBheWxvYWREYXRhTG9hZGVyLmxvYWQoXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoW1xuICAgICAgICAgICAgICAgICAgY29udGV4dC5yZXEudHJhbnNhY3Rpb25JRCxcbiAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgICAgIGZhbGxiYWNrTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNSZWxhdGVkVG9NYW55Q29sbGVjdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgIHJlc3VsdHNbaV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uVG86IGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcmVzdWx0c1tpXSA9IHJlc3VsdFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgocmVsYXRlZERvYywgaSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc3VsdFByb21pc2VzLnB1c2goY3JlYXRlUG9wdWxhdGlvblByb21pc2UocmVsYXRlZERvYywgaSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHJlc3VsdFByb21pc2VzKVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHNcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgaWQgPSB2YWx1ZVxuICAgICAgICAgIGlmIChpc1JlbGF0ZWRUb01hbnlDb2xsZWN0aW9ucyAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgaWQgPSB2YWx1ZS52YWx1ZVxuICAgICAgICAgICAgcmVsYXRlZENvbGxlY3Rpb25TbHVnID0gdmFsdWUucmVsYXRpb25Ub1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpZCkge1xuICAgICAgICAgICAgY29uc3QgcmVsYXRlZERvY3VtZW50ID0gYXdhaXQgY29udGV4dC5yZXEucGF5bG9hZERhdGFMb2FkZXIubG9hZChcbiAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoW1xuICAgICAgICAgICAgICAgIGNvbnRleHQucmVxLnRyYW5zYWN0aW9uSUQsXG4gICAgICAgICAgICAgICAgcmVsYXRlZENvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgICAgZmFsbGJhY2tMb2NhbGUsXG4gICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICBpZiAocmVsYXRlZERvY3VtZW50KSB7XG4gICAgICAgICAgICAgIGlmIChpc1JlbGF0ZWRUb01hbnlDb2xsZWN0aW9ucykge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICByZWxhdGlvblRvOiByZWxhdGVkQ29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAuLi5yZWxhdGVkRG9jdW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb246IHJlbGF0ZWRDb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHJlbGF0ZWREb2N1bWVudFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgaGFzTWFueVZhbHVlcyA/IG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwodHlwZSkpIDogdHlwZSxcbiAgICAgICAgICBmb3JjZU51bGxhYmxlLFxuICAgICAgICApLFxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgICBbZmllbGQubmFtZV06IHJlbGF0aW9uc2hpcCxcbiAgICAgIH1cbiAgICB9LFxuICAgIHJpY2hUZXh0OiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFJpY2hUZXh0RmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7XG4gICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICBkZXB0aDoge1xuICAgICAgICAgICAgdHlwZTogR3JhcGhRTEludCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBhc3luYyByZXNvbHZlKHBhcmVudCwgYXJncywgY29udGV4dCkge1xuICAgICAgICAgIGxldCBkZXB0aCA9IHBheWxvYWQuY29uZmlnLmRlZmF1bHREZXB0aFxuICAgICAgICAgIGlmICh0eXBlb2YgYXJncy5kZXB0aCAhPT0gJ3VuZGVmaW5lZCcpIGRlcHRoID0gYXJncy5kZXB0aFxuICAgICAgICAgIGNvbnN0IGVkaXRvcjogUmljaFRleHRBZGFwdGVyID0gZmllbGQ/LmVkaXRvclxuXG4gICAgICAgICAgLy8gUmljaFRleHQgZmllbGRzIGhhdmUgdGhlaXIgb3duIGRlcHRoIGFyZ3VtZW50IGluIEdyYXBoUUwuXG4gICAgICAgICAgLy8gVGhpcyBpcyB3aHkgdGhlIHBvcHVsYXRpb25Qcm9taXNlICh3aGljaCBwb3B1bGF0ZXMgcmljaHRleHQgZmllbGRzIGxpa2UgdXBsb2FkcyBhbmQgcmVsYXRpb25zaGlwcylcbiAgICAgICAgICAvLyBpcyBydW4gaGVyZSBhZ2Fpbiwgd2l0aCB0aGUgcHJvdmlkZWQgZGVwdGguXG4gICAgICAgICAgLy8gSW4gdGhlIGdyYXBocWwgZmluZC50cyByZXNvbHZlciwgdGhlIGRlcHRoIGlzIHRoZW4gaGFyZC1jb2RlZCB0byAwLlxuICAgICAgICAgIC8vIEVmZmVjdGl2ZWx5LCB0aGlzIG1lYW5zIHRoYXQgdGhlIHBvcHVsYXRpb25Qcm9taXNlIGZvciBHcmFwaFFMIGlzIG9ubHkgcnVuIGhlcmUsIGFuZCBub3QgaW4gdGhlIGZpbmQudHMgcmVzb2x2ZXIgLyBub3JtYWwgcG9wdWxhdGlvbiBwcm9taXNlLlxuICAgICAgICAgIGlmIChlZGl0b3I/LnBvcHVsYXRpb25Qcm9taXNlKSB7XG4gICAgICAgICAgICBhd2FpdCBlZGl0b3I/LnBvcHVsYXRpb25Qcm9taXNlKHtcbiAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgZGVwdGgsXG4gICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICBmaW5kTWFueTogZmFsc2UsXG4gICAgICAgICAgICAgIGZsYXR0ZW5Mb2NhbGVzOiBmYWxzZSxcbiAgICAgICAgICAgICAgb3ZlcnJpZGVBY2Nlc3M6IGZhbHNlLFxuICAgICAgICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXM6IFtdLFxuICAgICAgICAgICAgICByZXE6IGNvbnRleHQucmVxLFxuICAgICAgICAgICAgICBzaG93SGlkZGVuRmllbGRzOiBmYWxzZSxcbiAgICAgICAgICAgICAgc2libGluZ0RvYzogcGFyZW50LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcGFyZW50W2ZpZWxkLm5hbWVdXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIEdyYXBoUUxKU09OLCBmb3JjZU51bGxhYmxlKSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgcm93OiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFJvd0ZpZWxkKSA9PlxuICAgICAgZmllbGQuZmllbGRzLnJlZHVjZSgob2JqZWN0VHlwZUNvbmZpZ1dpdGhSb3dGaWVsZHMsIHN1YkZpZWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IGFkZFN1YkZpZWxkID0gZmllbGRUb1NjaGVtYU1hcFtzdWJGaWVsZC50eXBlXVxuICAgICAgICBpZiAoYWRkU3ViRmllbGQpIHJldHVybiBhZGRTdWJGaWVsZChvYmplY3RUeXBlQ29uZmlnV2l0aFJvd0ZpZWxkcywgc3ViRmllbGQpXG4gICAgICAgIHJldHVybiBvYmplY3RUeXBlQ29uZmlnV2l0aFJvd0ZpZWxkc1xuICAgICAgfSwgb2JqZWN0VHlwZUNvbmZpZyksXG4gICAgc2VsZWN0OiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFNlbGVjdEZpZWxkKSA9PiB7XG4gICAgICBjb25zdCBmdWxsTmFtZSA9IGNvbWJpbmVQYXJlbnROYW1lKHBhcmVudE5hbWUsIGZpZWxkLm5hbWUpXG5cbiAgICAgIGxldCB0eXBlOiBHcmFwaFFMVHlwZSA9IG5ldyBHcmFwaFFMRW51bVR5cGUoe1xuICAgICAgICBuYW1lOiBmdWxsTmFtZSxcbiAgICAgICAgdmFsdWVzOiBmb3JtYXRPcHRpb25zKGZpZWxkKSxcbiAgICAgIH0pXG5cbiAgICAgIHR5cGUgPSBmaWVsZC5oYXNNYW55ID8gbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbCh0eXBlKSkgOiB0eXBlXG4gICAgICB0eXBlID0gd2l0aE51bGxhYmxlVHlwZShmaWVsZCwgdHlwZSwgZm9yY2VOdWxsYWJsZSlcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGUgfSxcbiAgICAgIH1cbiAgICB9LFxuICAgIHRhYnM6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogVGFic0ZpZWxkKSA9PlxuICAgICAgZmllbGQudGFicy5yZWR1Y2UoKHRhYlNjaGVtYSwgdGFiKSA9PiB7XG4gICAgICAgIGlmICh0YWJIYXNOYW1lKHRhYikpIHtcbiAgICAgICAgICBjb25zdCBpbnRlcmZhY2VOYW1lID1cbiAgICAgICAgICAgIHRhYj8uaW50ZXJmYWNlTmFtZSB8fCBjb21iaW5lUGFyZW50TmFtZShwYXJlbnROYW1lLCB0b1dvcmRzKHRhYi5uYW1lLCB0cnVlKSlcblxuICAgICAgICAgIGlmICghcGF5bG9hZC50eXBlcy5ncm91cFR5cGVzW2ludGVyZmFjZU5hbWVdKSB7XG4gICAgICAgICAgICBjb25zdCBvYmplY3RUeXBlID0gYnVpbGRPYmplY3RUeXBlKHtcbiAgICAgICAgICAgICAgbmFtZTogaW50ZXJmYWNlTmFtZSxcbiAgICAgICAgICAgICAgZmllbGRzOiB0YWIuZmllbGRzLFxuICAgICAgICAgICAgICBmb3JjZU51bGxhYmxlLFxuICAgICAgICAgICAgICBwYXJlbnROYW1lOiBpbnRlcmZhY2VOYW1lLFxuICAgICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKG9iamVjdFR5cGUuZ2V0RmllbGRzKCkpLmxlbmd0aCkge1xuICAgICAgICAgICAgICBwYXlsb2FkLnR5cGVzLmdyb3VwVHlwZXNbaW50ZXJmYWNlTmFtZV0gPSBvYmplY3RUeXBlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFwYXlsb2FkLnR5cGVzLmdyb3VwVHlwZXNbaW50ZXJmYWNlTmFtZV0pIHtcbiAgICAgICAgICAgIHJldHVybiB0YWJTY2hlbWFcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udGFiU2NoZW1hLFxuICAgICAgICAgICAgW3RhYi5uYW1lXTogeyB0eXBlOiBwYXlsb2FkLnR5cGVzLmdyb3VwVHlwZXNbaW50ZXJmYWNlTmFtZV0gfSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnRhYlNjaGVtYSxcbiAgICAgICAgICAuLi50YWIuZmllbGRzLnJlZHVjZSgoc3ViRmllbGRTY2hlbWEsIHN1YkZpZWxkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhZGRTdWJGaWVsZCA9IGZpZWxkVG9TY2hlbWFNYXBbc3ViRmllbGQudHlwZV1cbiAgICAgICAgICAgIGlmIChhZGRTdWJGaWVsZCkgcmV0dXJuIGFkZFN1YkZpZWxkKHN1YkZpZWxkU2NoZW1hLCBzdWJGaWVsZClcbiAgICAgICAgICAgIHJldHVybiBzdWJGaWVsZFNjaGVtYVxuICAgICAgICAgIH0sIHRhYlNjaGVtYSksXG4gICAgICAgIH1cbiAgICAgIH0sIG9iamVjdFR5cGVDb25maWcpLFxuICAgIHRleHQ6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogVGV4dEZpZWxkKSA9PiAoe1xuICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgIFtmaWVsZC5uYW1lXToge1xuICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVUeXBlKFxuICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgIGZpZWxkLmhhc01hbnkgPT09IHRydWUgPyBuZXcgR3JhcGhRTExpc3QoR3JhcGhRTFN0cmluZykgOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgICAgIGZvcmNlTnVsbGFibGUsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgIH0pLFxuICAgIHRleHRhcmVhOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFRleHRhcmVhRmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIEdyYXBoUUxTdHJpbmcsIGZvcmNlTnVsbGFibGUpIH0sXG4gICAgfSksXG4gICAgdXBsb2FkOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFVwbG9hZEZpZWxkKSA9PiB7XG4gICAgICBjb25zdCB7IHJlbGF0aW9uVG8gfSA9IGZpZWxkXG5cbiAgICAgIGNvbnN0IHVwbG9hZE5hbWUgPSBjb21iaW5lUGFyZW50TmFtZShwYXJlbnROYW1lLCB0b1dvcmRzKGZpZWxkLm5hbWUsIHRydWUpKVxuXG4gICAgICAvLyBJZiB0aGUgcmVsYXRpb25zaGlwVHlwZSBpcyB1bmRlZmluZWQgYXQgdGhpcyBwb2ludCxcbiAgICAgIC8vIGl0IGNhbiBiZSBhc3N1bWVkIHRoYXQgdGhpcyBibG9ja1R5cGUgY2FuIGhhdmUgYSByZWxhdGlvbnNoaXBcbiAgICAgIC8vIHRvIGl0c2VsZi4gVGhlcmVmb3JlLCB3ZSBzZXQgdGhlIHJlbGF0aW9uc2hpcFR5cGUgZXF1YWwgdG8gdGhlIGJsb2NrVHlwZVxuICAgICAgLy8gdGhhdCBpcyBjdXJyZW50bHkgYmVpbmcgY3JlYXRlZC5cblxuICAgICAgY29uc3QgdHlwZSA9IHdpdGhOdWxsYWJsZVR5cGUoXG4gICAgICAgIGZpZWxkLFxuICAgICAgICBwYXlsb2FkLmNvbGxlY3Rpb25zW3JlbGF0aW9uVG9dLmdyYXBoUUwudHlwZSB8fCBuZXdseUNyZWF0ZWRCbG9ja1R5cGUsXG4gICAgICAgIGZvcmNlTnVsbGFibGUsXG4gICAgICApXG5cbiAgICAgIGNvbnN0IHVwbG9hZEFyZ3MgPSB7fSBhcyBMb2NhbGVJbnB1dFR5cGVcblxuICAgICAgaWYgKHBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICB1cGxvYWRBcmdzLmxvY2FsZSA9IHtcbiAgICAgICAgICB0eXBlOiBwYXlsb2FkLnR5cGVzLmxvY2FsZUlucHV0VHlwZSxcbiAgICAgICAgfVxuXG4gICAgICAgIHVwbG9hZEFyZ3MuZmFsbGJhY2tMb2NhbGUgPSB7XG4gICAgICAgICAgdHlwZTogcGF5bG9hZC50eXBlcy5mYWxsYmFja0xvY2FsZUlucHV0VHlwZSxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCByZWxhdGVkQ29sbGVjdGlvblNsdWcgPSBmaWVsZC5yZWxhdGlvblRvXG5cbiAgICAgIGNvbnN0IHVwbG9hZCA9IHtcbiAgICAgICAgYXJnczogdXBsb2FkQXJncyxcbiAgICAgICAgZXh0ZW5zaW9uczogeyBjb21wbGV4aXR5OiAyMCB9LFxuICAgICAgICBhc3luYyByZXNvbHZlKHBhcmVudCwgYXJncywgY29udGV4dCkge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFyZW50W2ZpZWxkLm5hbWVdXG4gICAgICAgICAgY29uc3QgbG9jYWxlID0gYXJncy5sb2NhbGUgfHwgY29udGV4dC5yZXEubG9jYWxlXG4gICAgICAgICAgY29uc3QgZmFsbGJhY2tMb2NhbGUgPSBhcmdzLmZhbGxiYWNrTG9jYWxlIHx8IGNvbnRleHQucmVxLmZhbGxiYWNrTG9jYWxlXG4gICAgICAgICAgY29uc3QgaWQgPSB2YWx1ZVxuXG4gICAgICAgICAgaWYgKGlkKSB7XG4gICAgICAgICAgICBjb25zdCByZWxhdGVkRG9jdW1lbnQgPSBhd2FpdCBjb250ZXh0LnJlcS5wYXlsb2FkRGF0YUxvYWRlci5sb2FkKFxuICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShbXG4gICAgICAgICAgICAgICAgY29udGV4dC5yZXEudHJhbnNhY3Rpb25JRCxcbiAgICAgICAgICAgICAgICByZWxhdGVkQ29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgICBmYWxsYmFja0xvY2FsZSxcbiAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICApXG5cbiAgICAgICAgICAgIHJldHVybiByZWxhdGVkRG9jdW1lbnQgfHwgbnVsbFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGUsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHdoZXJlRmllbGRzID0gcGF5bG9hZC5jb2xsZWN0aW9uc1tyZWxhdGlvblRvXS5jb25maWcuZmllbGRzXG5cbiAgICAgIHVwbG9hZC5hcmdzLndoZXJlID0ge1xuICAgICAgICB0eXBlOiBidWlsZFdoZXJlSW5wdXRUeXBlKHtcbiAgICAgICAgICBuYW1lOiB1cGxvYWROYW1lLFxuICAgICAgICAgIGZpZWxkczogd2hlcmVGaWVsZHMsXG4gICAgICAgICAgcGFyZW50TmFtZTogdXBsb2FkTmFtZSxcbiAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICB9KSxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgICAgW2ZpZWxkLm5hbWVdOiB1cGxvYWQsXG4gICAgICB9XG4gICAgfSxcbiAgfVxuXG4gIGNvbnN0IG9iamVjdFNjaGVtYSA9IHtcbiAgICBuYW1lLFxuICAgIGZpZWxkczogKCkgPT5cbiAgICAgIGZpZWxkcy5yZWR1Y2UoKG9iamVjdFR5cGVDb25maWcsIGZpZWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkU2NoZW1hID0gZmllbGRUb1NjaGVtYU1hcFtmaWVsZC50eXBlXVxuXG4gICAgICAgIGlmICh0eXBlb2YgZmllbGRTY2hlbWEgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gb2JqZWN0VHlwZUNvbmZpZ1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgICAgIC4uLmZpZWxkU2NoZW1hKG9iamVjdFR5cGVDb25maWcsIGZpZWxkKSxcbiAgICAgICAgfVxuICAgICAgfSwgYmFzZUZpZWxkcyksXG4gIH1cblxuICBjb25zdCBuZXdseUNyZWF0ZWRCbG9ja1R5cGUgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUob2JqZWN0U2NoZW1hKVxuXG4gIHJldHVybiBuZXdseUNyZWF0ZWRCbG9ja1R5cGVcbn1cblxuZXhwb3J0IGRlZmF1bHQgYnVpbGRPYmplY3RUeXBlXG4iXSwibmFtZXMiOlsiYnVpbGRPYmplY3RUeXBlIiwibmFtZSIsImJhc2VGaWVsZHMiLCJmaWVsZHMiLCJmb3JjZU51bGxhYmxlIiwicGFyZW50TmFtZSIsInBheWxvYWQiLCJmaWVsZFRvU2NoZW1hTWFwIiwiYXJyYXkiLCJvYmplY3RUeXBlQ29uZmlnIiwiZmllbGQiLCJpbnRlcmZhY2VOYW1lIiwiY29tYmluZVBhcmVudE5hbWUiLCJ0b1dvcmRzIiwidHlwZXMiLCJhcnJheVR5cGVzIiwib2JqZWN0VHlwZSIsImlzRmllbGROdWxsYWJsZSIsIk9iamVjdCIsImtleXMiLCJnZXRGaWVsZHMiLCJsZW5ndGgiLCJhcnJheVR5cGUiLCJHcmFwaFFMTGlzdCIsIkdyYXBoUUxOb25OdWxsIiwidHlwZSIsIndpdGhOdWxsYWJsZVR5cGUiLCJibG9ja3MiLCJibG9ja1R5cGVzIiwicmVkdWNlIiwiYWNjIiwiYmxvY2siLCJzbHVnIiwiZ3JhcGhRTCIsInNpbmd1bGFyTmFtZSIsInB1c2giLCJmdWxsTmFtZSIsIkdyYXBoUUxVbmlvblR5cGUiLCJyZXNvbHZlVHlwZSIsImRhdGEiLCJibG9ja1R5cGUiLCJjaGVja2JveCIsIkdyYXBoUUxCb29sZWFuIiwiY29kZSIsIkdyYXBoUUxTdHJpbmciLCJjb2xsYXBzaWJsZSIsIm9iamVjdFR5cGVDb25maWdXaXRoQ29sbGFwc2libGVGaWVsZHMiLCJzdWJGaWVsZCIsImFkZFN1YkZpZWxkIiwiZGF0ZSIsIkRhdGVUaW1lUmVzb2x2ZXIiLCJlbWFpbCIsIkVtYWlsQWRkcmVzc1Jlc29sdmVyIiwiZ3JvdXAiLCJncm91cFR5cGVzIiwianNvbiIsIkdyYXBoUUxKU09OIiwibnVtYmVyIiwiR3JhcGhRTEludCIsIkdyYXBoUUxGbG9hdCIsImhhc01hbnkiLCJwb2ludCIsInJhZGlvIiwiR3JhcGhRTEVudW1UeXBlIiwidmFsdWVzIiwiZm9ybWF0T3B0aW9ucyIsInJlbGF0aW9uc2hpcCIsInJlbGF0aW9uVG8iLCJpc1JlbGF0ZWRUb01hbnlDb2xsZWN0aW9ucyIsIkFycmF5IiwiaXNBcnJheSIsImhhc01hbnlWYWx1ZXMiLCJyZWxhdGlvbnNoaXBOYW1lIiwicmVsYXRpb25Ub1R5cGUiLCJyZWxhdGlvbnMiLCJyZWxhdGlvbiIsImZvcm1hdE5hbWUiLCJ2YWx1ZSIsIm1hcCIsImNvbGxlY3Rpb25zIiwiR3JhcGhRTE9iamVjdFR5cGUiLCJyZXEiLCJjb2xsZWN0aW9uIiwibmV3bHlDcmVhdGVkQmxvY2tUeXBlIiwicmVsYXRpb25zaGlwQXJncyIsImNvbmZpZyIsImxvY2FsaXphdGlvbiIsImxvY2FsZSIsImxvY2FsZUlucHV0VHlwZSIsImZhbGxiYWNrTG9jYWxlIiwiZmFsbGJhY2tMb2NhbGVJbnB1dFR5cGUiLCJhcmdzIiwiZXh0ZW5zaW9ucyIsImNvbXBsZXhpdHkiLCJyZXNvbHZlIiwicGFyZW50IiwiY29udGV4dCIsInJlbGF0ZWRDb2xsZWN0aW9uU2x1ZyIsInJlc3VsdHMiLCJyZXN1bHRQcm9taXNlcyIsImNyZWF0ZVBvcHVsYXRpb25Qcm9taXNlIiwicmVsYXRlZERvYyIsImkiLCJpZCIsImNvbGxlY3Rpb25TbHVnIiwicmVzdWx0IiwicGF5bG9hZERhdGFMb2FkZXIiLCJsb2FkIiwiSlNPTiIsInN0cmluZ2lmeSIsInRyYW5zYWN0aW9uSUQiLCJmb3JFYWNoIiwiUHJvbWlzZSIsImFsbCIsInJlbGF0ZWREb2N1bWVudCIsInJpY2hUZXh0IiwiZGVwdGgiLCJkZWZhdWx0RGVwdGgiLCJlZGl0b3IiLCJwb3B1bGF0aW9uUHJvbWlzZSIsImZpbmRNYW55IiwiZmxhdHRlbkxvY2FsZXMiLCJvdmVycmlkZUFjY2VzcyIsInBvcHVsYXRpb25Qcm9taXNlcyIsInNob3dIaWRkZW5GaWVsZHMiLCJzaWJsaW5nRG9jIiwicm93Iiwib2JqZWN0VHlwZUNvbmZpZ1dpdGhSb3dGaWVsZHMiLCJzZWxlY3QiLCJ0YWJzIiwidGFiU2NoZW1hIiwidGFiIiwidGFiSGFzTmFtZSIsInN1YkZpZWxkU2NoZW1hIiwidGV4dCIsInRleHRhcmVhIiwidXBsb2FkIiwidXBsb2FkTmFtZSIsInVwbG9hZEFyZ3MiLCJ3aGVyZUZpZWxkcyIsIndoZXJlIiwiYnVpbGRXaGVyZUlucHV0VHlwZSIsIm9iamVjdFNjaGVtYSIsImZpZWxkU2NoZW1hIl0sIm1hcHBpbmdzIjoiQUFBQSwwREFBMEQsR0FDMUQsbUNBQW1DLEdBQ25DLHVDQUF1Qzs7OzsrQkFpcEJ2Qzs7O2VBQUE7Ozt5QkFwb0JPO2dDQUNnRDtpQ0FFM0I7dUJBNEJEOzhCQUNIOzBFQUNNO21FQUNQO3NFQUNHOzRFQUNNO3dFQUNKO3lFQUNDOzs7Ozs7QUEyQjdCLFNBQVNBLGdCQUFnQixFQUN2QkMsSUFBSSxFQUNKQyxhQUFhLENBQUMsQ0FBQyxFQUNmQyxNQUFNLEVBQ05DLGFBQWEsRUFDYkMsVUFBVSxFQUNWQyxPQUFPLEVBQ0Y7SUFDTCxNQUFNQyxtQkFBbUI7UUFDdkJDLE9BQU8sQ0FBQ0Msa0JBQW9DQztZQUMxQyxNQUFNQyxnQkFDSkQsT0FBT0MsaUJBQWlCQyxJQUFBQSwwQkFBaUIsRUFBQ1AsWUFBWVEsSUFBQUEscUJBQU8sRUFBQ0gsTUFBTVQsSUFBSSxFQUFFO1lBRTVFLElBQUksQ0FBQ0ssUUFBUVEsS0FBSyxDQUFDQyxVQUFVLENBQUNKLGNBQWMsRUFBRTtnQkFDNUMsTUFBTUssYUFBYWhCLGdCQUFnQjtvQkFDakNDLE1BQU1VO29CQUNOUixRQUFRTyxNQUFNUCxNQUFNO29CQUNwQkMsZUFBZWEsSUFBQUEsd0JBQWUsRUFBQ1AsT0FBT047b0JBQ3RDQyxZQUFZTTtvQkFDWkw7Z0JBQ0Y7Z0JBRUEsSUFBSVksT0FBT0MsSUFBSSxDQUFDSCxXQUFXSSxTQUFTLElBQUlDLE1BQU0sRUFBRTtvQkFDOUNmLFFBQVFRLEtBQUssQ0FBQ0MsVUFBVSxDQUFDSixjQUFjLEdBQUdLO2dCQUM1QztZQUNGO1lBRUEsSUFBSSxDQUFDVixRQUFRUSxLQUFLLENBQUNDLFVBQVUsQ0FBQ0osY0FBYyxFQUFFO2dCQUM1QyxP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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrapCustomResolver.d.ts","sourceRoot":"","sources":["../../../src/graphql/utilities/wrapCustomResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"wrapCustomResolver.d.ts","sourceRoot":"","sources":["../../../src/graphql/utilities/wrapCustomResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAwB,MAAM,yBAAyB,CAAA;AAEvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAIzD,KAAK,cAAc,GAAG;IAAE,GAAG,EAAE,cAAc,CAAA;CAAE,CAAA;AAe7C,wBAAgB,gBAAgB,CAAC,OAAO,EACtC,MAAM,EAAE,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,GAC1D,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAOrD"}
|
|
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "wrapCustomFields", {
|
|
|
8
8
|
return wrapCustomFields;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const
|
|
11
|
+
const _isolateObjectProperty = /*#__PURE__*/ _interop_require_default(require("../../utilities/isolateObjectProperty"));
|
|
12
12
|
function _interop_require_default(obj) {
|
|
13
13
|
return obj && obj.__esModule ? obj : {
|
|
14
14
|
default: obj
|
|
@@ -18,7 +18,7 @@ function wrapCustomResolver(resolver) {
|
|
|
18
18
|
return (source, args, context, info)=>{
|
|
19
19
|
return resolver(source, args, {
|
|
20
20
|
...context,
|
|
21
|
-
req: (0,
|
|
21
|
+
req: (0, _isolateObjectProperty.default)(context.req, 'transactionID')
|
|
22
22
|
}, info);
|
|
23
23
|
};
|
|
24
24
|
}
|
|
@@ -31,4 +31,4 @@ function wrapCustomFields(fields) {
|
|
|
31
31
|
return fields;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ncmFwaHFsL3V0aWxpdGllcy93cmFwQ3VzdG9tUmVzb2x2ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBPYmpNYXAgfSBmcm9tICdncmFwaHFsL2pzdXRpbHMvT2JqTWFwJ1xuaW1wb3J0IHR5cGUgeyBHcmFwaFFMRmllbGRDb25maWcsIEdyYXBoUUxGaWVsZFJlc29sdmVyIH0gZnJvbSAnZ3JhcGhxbC90eXBlL2RlZmluaXRpb24nXG5cbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QgfSBmcm9tICcuLi8uLi9leHByZXNzL3R5cGVzJ1xuXG5pbXBvcnQgaXNvbGF0ZU9iamVjdFByb3BlcnR5IGZyb20gJy4uLy4uL3V0aWxpdGllcy9pc29sYXRlT2JqZWN0UHJvcGVydHknXG5cbnR5cGUgUGF5bG9hZENvbnRleHQgPSB7IHJlcTogUGF5bG9hZFJlcXVlc3QgfVxuXG5mdW5jdGlvbiB3cmFwQ3VzdG9tUmVzb2x2ZXI8VFNvdXJjZSwgVEFyZ3MsIFRSZXN1bHQ+KFxuICByZXNvbHZlcjogR3JhcGhRTEZpZWxkUmVzb2x2ZXI8VFNvdXJjZSwgUGF5bG9hZENvbnRleHQsIFRBcmdzLCBUUmVzdWx0Pixcbik6IEdyYXBoUUxGaWVsZFJlc29sdmVyPFRTb3VyY2UsIFBheWxvYWRDb250ZXh0LCBUQXJncywgVFJlc3VsdD4ge1xuICByZXR1cm4gKHNvdXJjZSwgYXJncywgY29udGV4dCwgaW5mbykgPT4ge1xuICAgIHJldHVybiByZXNvbHZlcihcbiAgICAgIHNvdXJjZSxcbiAgICAgIGFyZ3MsXG4gICAgICB7IC4uLmNvbnRleHQsIHJlcTogaXNvbGF0ZU9iamVjdFByb3BlcnR5KGNvbnRleHQucmVxLCAndHJhbnNhY3Rpb25JRCcpIH0sXG4gICAgICBpbmZvLFxuICAgIClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JhcEN1c3RvbUZpZWxkczxUU291cmNlPihcbiAgZmllbGRzOiBPYmpNYXA8R3JhcGhRTEZpZWxkQ29uZmlnPFRTb3VyY2UsIFBheWxvYWRDb250ZXh0Pj4sXG4pOiBPYmpNYXA8R3JhcGhRTEZpZWxkQ29uZmlnPFRTb3VyY2UsIFBheWxvYWRDb250ZXh0Pj4ge1xuICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZHMpIHtcbiAgICBpZiAoZmllbGRzW2tleV0ucmVzb2x2ZSkge1xuICAgICAgZmllbGRzW2tleV0ucmVzb2x2ZSA9IHdyYXBDdXN0b21SZXNvbHZlcihmaWVsZHNba2V5XS5yZXNvbHZlKVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmllbGRzXG59XG4iXSwibmFtZXMiOlsid3JhcEN1c3RvbUZpZWxkcyIsIndyYXBDdXN0b21SZXNvbHZlciIsInJlc29sdmVyIiwic291cmNlIiwiYXJncyIsImNvbnRleHQiLCJpbmZvIiwicmVxIiwiaXNvbGF0ZU9iamVjdFByb3BlcnR5IiwiZmllbGRzIiwia2V5IiwicmVzb2x2ZSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFzQmdCQTs7O2VBQUFBOzs7OEVBakJrQjs7Ozs7O0FBSWxDLFNBQVNDLG1CQUNQQyxRQUF1RTtJQUV2RSxPQUFPLENBQUNDLFFBQVFDLE1BQU1DLFNBQVNDO1FBQzdCLE9BQU9KLFNBQ0xDLFFBQ0FDLE1BQ0E7WUFBRSxHQUFHQyxPQUFPO1lBQUVFLEtBQUtDLElBQUFBLDhCQUFxQixFQUFDSCxRQUFRRSxHQUFHLEVBQUU7UUFBaUIsR0FDdkVEO0lBRUo7QUFDRjtBQUVPLFNBQVNOLGlCQUNkUyxNQUEyRDtJQUUzRCxJQUFLLE1BQU1DLE9BQU9ELE9BQVE7UUFDeEIsSUFBSUEsTUFBTSxDQUFDQyxJQUFJLENBQUNDLE9BQU8sRUFBRTtZQUN2QkYsTUFBTSxDQUFDQyxJQUFJLENBQUNDLE9BQU8sR0FBR1YsbUJBQW1CUSxNQUFNLENBQUNDLElBQUksQ0FBQ0MsT0FBTztRQUM5RDtJQUNGO0lBQ0EsT0FBT0Y7QUFDVCJ9
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import type { SanitizedLocalizationConfig } from '../config/types';
|
|
2
1
|
/**
|
|
3
2
|
* sets request locale
|
|
4
|
-
*
|
|
5
|
-
* @param localization
|
|
6
|
-
* @returns {Function}
|
|
7
3
|
*/
|
|
8
|
-
export default function localizationMiddleware(
|
|
4
|
+
export default function localizationMiddleware(req: any, res: any, next: any): void;
|
|
9
5
|
//# sourceMappingURL=middleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/localization/middleware.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/localization/middleware.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,GAAG,KAAA,EAAE,GAAG,KAAA,EAAE,IAAI,KAAA,QAkC5D"}
|
|
@@ -1,51 +1,47 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* sets request locale
|
|
3
|
+
*/ "use strict";
|
|
2
4
|
Object.defineProperty(exports, "__esModule", {
|
|
3
5
|
value: true
|
|
4
6
|
});
|
|
5
|
-
Object.defineProperty(exports,
|
|
6
|
-
* sets request locale
|
|
7
|
-
*
|
|
8
|
-
* @param localization
|
|
9
|
-
* @returns {Function}
|
|
10
|
-
*/ "default", {
|
|
7
|
+
Object.defineProperty(exports, "default", {
|
|
11
8
|
enumerable: true,
|
|
12
9
|
get: function() {
|
|
13
10
|
return localizationMiddleware;
|
|
14
11
|
}
|
|
15
12
|
});
|
|
16
|
-
function localizationMiddleware(
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (requestedLocale === '*' || requestedLocale === 'all') {
|
|
37
|
-
requestedLocale = 'all';
|
|
38
|
-
}
|
|
39
|
-
if (validLocales.find((locale)=>locale === requestedLocale)) {
|
|
40
|
-
req.locale = requestedLocale;
|
|
41
|
-
}
|
|
42
|
-
if (validFallbackLocales.find((locale)=>locale === requestedFallbackLocale)) {
|
|
43
|
-
req.fallbackLocale = requestedFallbackLocale;
|
|
44
|
-
}
|
|
13
|
+
function localizationMiddleware(req, res, next) {
|
|
14
|
+
const localization = req.payload.config.localization;
|
|
15
|
+
if (!localization) {
|
|
16
|
+
next();
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const validLocales = [
|
|
20
|
+
...localization.localeCodes,
|
|
21
|
+
'all'
|
|
22
|
+
];
|
|
23
|
+
const validFallbackLocales = [
|
|
24
|
+
...localization.localeCodes,
|
|
25
|
+
'null'
|
|
26
|
+
];
|
|
27
|
+
let requestedLocale = req.query.locale || localization.defaultLocale;
|
|
28
|
+
let requestedFallbackLocale = req.query['fallback-locale'];
|
|
29
|
+
if (req.body) {
|
|
30
|
+
if (req.body.locale) requestedLocale = req.body.locale;
|
|
31
|
+
if (req.body['fallback-locale']) {
|
|
32
|
+
requestedFallbackLocale = req.body['fallback-locale'];
|
|
45
33
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
34
|
+
}
|
|
35
|
+
if (requestedFallbackLocale === 'none') requestedFallbackLocale = 'null';
|
|
36
|
+
if (requestedLocale === '*' || requestedLocale === 'all') {
|
|
37
|
+
requestedLocale = 'all';
|
|
38
|
+
}
|
|
39
|
+
req.fallbackLocale = validFallbackLocales.find((locale)=>locale === requestedFallbackLocale);
|
|
40
|
+
req.locale = validLocales.find((locale)=>locale === requestedLocale);
|
|
41
|
+
if (!req.fallbackLocale) {
|
|
42
|
+
req.fallbackLocale = localization.locales.find(({ code })=>req.locale === code)?.fallbackLocale || localization.defaultLocale;
|
|
43
|
+
}
|
|
44
|
+
next();
|
|
49
45
|
}
|
|
50
46
|
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2NhbGl6YXRpb24vbWlkZGxld2FyZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHNldHMgcmVxdWVzdCBsb2NhbGVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbG9jYWxpemF0aW9uTWlkZGxld2FyZShyZXEsIHJlcywgbmV4dCkge1xuICBjb25zdCBsb2NhbGl6YXRpb24gPSByZXEucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uXG4gIGlmICghbG9jYWxpemF0aW9uKSB7XG4gICAgbmV4dCgpXG4gICAgcmV0dXJuXG4gIH1cblxuICBjb25zdCB2YWxpZExvY2FsZXMgPSBbLi4ubG9jYWxpemF0aW9uLmxvY2FsZUNvZGVzLCAnYWxsJ11cbiAgY29uc3QgdmFsaWRGYWxsYmFja0xvY2FsZXMgPSBbLi4ubG9jYWxpemF0aW9uLmxvY2FsZUNvZGVzLCAnbnVsbCddXG5cbiAgbGV0IHJlcXVlc3RlZExvY2FsZSA9IHJlcS5xdWVyeS5sb2NhbGUgfHwgbG9jYWxpemF0aW9uLmRlZmF1bHRMb2NhbGVcbiAgbGV0IHJlcXVlc3RlZEZhbGxiYWNrTG9jYWxlID0gcmVxLnF1ZXJ5WydmYWxsYmFjay1sb2NhbGUnXVxuXG4gIGlmIChyZXEuYm9keSkge1xuICAgIGlmIChyZXEuYm9keS5sb2NhbGUpIHJlcXVlc3RlZExvY2FsZSA9IHJlcS5ib2R5LmxvY2FsZVxuICAgIGlmIChyZXEuYm9keVsnZmFsbGJhY2stbG9jYWxlJ10pIHtcbiAgICAgIHJlcXVlc3RlZEZhbGxiYWNrTG9jYWxlID0gcmVxLmJvZHlbJ2ZhbGxiYWNrLWxvY2FsZSddXG4gICAgfVxuICB9XG5cbiAgaWYgKHJlcXVlc3RlZEZhbGxiYWNrTG9jYWxlID09PSAnbm9uZScpIHJlcXVlc3RlZEZhbGxiYWNrTG9jYWxlID0gJ251bGwnXG4gIGlmIChyZXF1ZXN0ZWRMb2NhbGUgPT09ICcqJyB8fCByZXF1ZXN0ZWRMb2NhbGUgPT09ICdhbGwnKSB7XG4gICAgcmVxdWVzdGVkTG9jYWxlID0gJ2FsbCdcbiAgfVxuICByZXEuZmFsbGJhY2tMb2NhbGUgPSB2YWxpZEZhbGxiYWNrTG9jYWxlcy5maW5kKChsb2NhbGUpID0+IGxvY2FsZSA9PT0gcmVxdWVzdGVkRmFsbGJhY2tMb2NhbGUpXG5cbiAgcmVxLmxvY2FsZSA9IHZhbGlkTG9jYWxlcy5maW5kKChsb2NhbGUpID0+IGxvY2FsZSA9PT0gcmVxdWVzdGVkTG9jYWxlKVxuXG4gIGlmICghcmVxLmZhbGxiYWNrTG9jYWxlKSB7XG4gICAgcmVxLmZhbGxiYWNrTG9jYWxlID1cbiAgICAgIGxvY2FsaXphdGlvbi5sb2NhbGVzLmZpbmQoKHsgY29kZSB9KSA9PiByZXEubG9jYWxlID09PSBjb2RlKT8uZmFsbGJhY2tMb2NhbGUgfHxcbiAgICAgIGxvY2FsaXphdGlvbi5kZWZhdWx0TG9jYWxlXG4gIH1cbiAgbmV4dCgpXG59XG4iXSwibmFtZXMiOlsibG9jYWxpemF0aW9uTWlkZGxld2FyZSIsInJlcSIsInJlcyIsIm5leHQiLCJsb2NhbGl6YXRpb24iLCJwYXlsb2FkIiwiY29uZmlnIiwidmFsaWRMb2NhbGVzIiwibG9jYWxlQ29kZXMiLCJ2YWxpZEZhbGxiYWNrTG9jYWxlcyIsInJlcXVlc3RlZExvY2FsZSIsInF1ZXJ5IiwibG9jYWxlIiwiZGVmYXVsdExvY2FsZSIsInJlcXVlc3RlZEZhbGxiYWNrTG9jYWxlIiwiYm9keSIsImZhbGxiYWNrTG9jYWxlIiwiZmluZCIsImxvY2FsZXMiLCJjb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Q0FFQzs7OzsrQkFDRDs7O2VBQXdCQTs7O0FBQVQsU0FBU0EsdUJBQXVCQyxHQUFHLEVBQUVDLEdBQUcsRUFBRUMsSUFBSTtJQUMzRCxNQUFNQyxlQUFlSCxJQUFJSSxPQUFPLENBQUNDLE1BQU0sQ0FBQ0YsWUFBWTtJQUNwRCxJQUFJLENBQUNBLGNBQWM7UUFDakJEO1FBQ0E7SUFDRjtJQUVBLE1BQU1JLGVBQWU7V0FBSUgsYUFBYUksV0FBVztRQUFFO0tBQU07SUFDekQsTUFBTUMsdUJBQXVCO1dBQUlMLGFBQWFJLFdBQVc7UUFBRTtLQUFPO0lBRWxFLElBQUlFLGtCQUFrQlQsSUFBSVUsS0FBSyxDQUFDQyxNQUFNLElBQUlSLGFBQWFTLGFBQWE7SUFDcEUsSUFBSUMsMEJBQTBCYixJQUFJVSxLQUFLLENBQUMsa0JBQWtCO0lBRTFELElBQUlWLElBQUljLElBQUksRUFBRTtRQUNaLElBQUlkLElBQUljLElBQUksQ0FBQ0gsTUFBTSxFQUFFRixrQkFBa0JULElBQUljLElBQUksQ0FBQ0gsTUFBTTtRQUN0RCxJQUFJWCxJQUFJYyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDL0JELDBCQUEwQmIsSUFBSWMsSUFBSSxDQUFDLGtCQUFrQjtRQUN2RDtJQUNGO0lBRUEsSUFBSUQsNEJBQTRCLFFBQVFBLDBCQUEwQjtJQUNsRSxJQUFJSixvQkFBb0IsT0FBT0Esb0JBQW9CLE9BQU87UUFDeERBLGtCQUFrQjtJQUNwQjtJQUNBVCxJQUFJZSxjQUFjLEdBQUdQLHFCQUFxQlEsSUFBSSxDQUFDLENBQUNMLFNBQVdBLFdBQVdFO0lBRXRFYixJQUFJVyxNQUFNLEdBQUdMLGFBQWFVLElBQUksQ0FBQyxDQUFDTCxTQUFXQSxXQUFXRjtJQUV0RCxJQUFJLENBQUNULElBQUllLGNBQWMsRUFBRTtRQUN2QmYsSUFBSWUsY0FBYyxHQUNoQlosYUFBYWMsT0FBTyxDQUFDRCxJQUFJLENBQUMsQ0FBQyxFQUFFRSxJQUFJLEVBQUUsR0FBS2xCLElBQUlXLE1BQU0sS0FBS08sT0FBT0gsa0JBQzlEWixhQUFhUyxhQUFhO0lBQzlCO0lBQ0FWO0FBQ0YifQ==
|
package/dist/payload.d.ts
CHANGED
|
@@ -143,7 +143,6 @@ export declare class BasePayload<TGeneratedTypes extends GeneratedTypes> {
|
|
|
143
143
|
fallbackLocaleInputType?: any;
|
|
144
144
|
groupTypes: any;
|
|
145
145
|
localeInputType?: any;
|
|
146
|
-
tabTypes: any;
|
|
147
146
|
};
|
|
148
147
|
unlock: <T extends keyof TGeneratedTypes["collections"]>(options: UnlockOptions<T>) => Promise<boolean>;
|
|
149
148
|
updateGlobal: <T extends keyof TGeneratedTypes["globals"]>(options: UpdateGlobalOptions<T>) => Promise<TGeneratedTypes["globals"][T]>;
|
package/dist/payload.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../src/payload.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../src/payload.ts"],"names":[],"mappings":"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"}
|
package/dist/payload.js
CHANGED
|
@@ -264,4 +264,4 @@ const getPayload = async (options)=>{
|
|
|
264
264
|
return cached.payload;
|
|
265
265
|
};
|
|
266
266
|
|
|
267
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXlsb2FkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRXhwcmVzcywgUm91dGVyIH0gZnJvbSAnZXhwcmVzcydcbmltcG9ydCB0eXBlIHsgRXhlY3V0aW9uUmVzdWx0LCBHcmFwaFFMU2NoZW1hLCBWYWxpZGF0aW9uUnVsZSB9IGZyb20gJ2dyYXBocWwnXG4vLyBAdHMtZXhwZWN0LWVycm9yIC8vIFRPRE8gRml4IHRoaXMgLSBtb2R1bGVSZXNvbHV0aW9uIDE2IGJyZWFrcyB0aGlzIGltcG9ydFxuaW1wb3J0IHR5cGUgeyBPcGVyYXRpb25BcmdzLCBSZXF1ZXN0IGFzIGdyYXBoUUxSZXF1ZXN0IH0gZnJvbSAnZ3JhcGhxbC1odHRwL2xpYi9oYW5kbGVyJ1xuaW1wb3J0IHR5cGUgeyBTZW5kTWFpbE9wdGlvbnMgfSBmcm9tICdub2RlbWFpbGVyJ1xuaW1wb3J0IHR5cGUgcGlubyBmcm9tICdwaW5vJ1xuXG5pbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0bydcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5cbmltcG9ydCB0eXBlIHsgRGF0YWJhc2VBZGFwdGVyLCBHZW5lcmF0ZWRUeXBlcyB9IGZyb20gJy4vJyAvLyBNdXN0IGltcG9ydCBmcm9tIFBheWxvYWQgdG8gc3VwcG9ydCBkZWNsYXJlIG1vZHVsZVxuaW1wb3J0IHR5cGUgeyBSZXN1bHQgYXMgRm9yZ290UGFzc3dvcmRSZXN1bHQgfSBmcm9tICcuL2F1dGgvb3BlcmF0aW9ucy9mb3Jnb3RQYXNzd29yZCdcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBGb3Jnb3RQYXNzd29yZE9wdGlvbnMgfSBmcm9tICcuL2F1dGgvb3BlcmF0aW9ucy9sb2NhbC9mb3Jnb3RQYXNzd29yZCdcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBMb2dpbk9wdGlvbnMgfSBmcm9tICcuL2F1dGgvb3BlcmF0aW9ucy9sb2NhbC9sb2dpbidcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBSZXNldFBhc3N3b3JkT3B0aW9ucyB9IGZyb20gJy4vYXV0aC9vcGVyYXRpb25zL2xvY2FsL3Jlc2V0UGFzc3dvcmQnXG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgVW5sb2NrT3B0aW9ucyB9IGZyb20gJy4vYXV0aC9vcGVyYXRpb25zL2xvY2FsL3VubG9jaydcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBWZXJpZnlFbWFpbE9wdGlvbnMgfSBmcm9tICcuL2F1dGgvb3BlcmF0aW9ucy9sb2NhbC92ZXJpZnlFbWFpbCdcbmltcG9ydCB0eXBlIHsgUmVzdWx0IGFzIExvZ2luUmVzdWx0IH0gZnJvbSAnLi9hdXRoL29wZXJhdGlvbnMvbG9naW4nXG5pbXBvcnQgdHlwZSB7IFJlc3VsdCBhcyBSZXNldFBhc3N3b3JkUmVzdWx0IH0gZnJvbSAnLi9hdXRoL29wZXJhdGlvbnMvcmVzZXRQYXNzd29yZCdcbmltcG9ydCB0eXBlIHsgQnVsa09wZXJhdGlvblJlc3VsdCwgQ29sbGVjdGlvbiB9IGZyb20gJy4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIENyZWF0ZU9wdGlvbnMgfSBmcm9tICcuL2NvbGxlY3Rpb25zL29wZXJhdGlvbnMvbG9jYWwvY3JlYXRlJ1xuaW1wb3J0IHR5cGUge1xuICBCeUlET3B0aW9ucyBhcyBEZWxldGVCeUlET3B0aW9ucyxcbiAgTWFueU9wdGlvbnMgYXMgRGVsZXRlTWFueU9wdGlvbnMsXG4gIE9wdGlvbnMgYXMgRGVsZXRlT3B0aW9ucyxcbn0gZnJvbSAnLi9jb2xsZWN0aW9ucy9vcGVyYXRpb25zL2xvY2FsL2RlbGV0ZSdcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBGaW5kT3B0aW9ucyB9IGZyb20gJy4vY29sbGVjdGlvbnMvb3BlcmF0aW9ucy9sb2NhbC9maW5kJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIEZpbmRCeUlET3B0aW9ucyB9IGZyb20gJy4vY29sbGVjdGlvbnMvb3BlcmF0aW9ucy9sb2NhbC9maW5kQnlJRCdcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBGaW5kVmVyc2lvbkJ5SURPcHRpb25zIH0gZnJvbSAnLi9jb2xsZWN0aW9ucy9vcGVyYXRpb25zL2xvY2FsL2ZpbmRWZXJzaW9uQnlJRCdcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBGaW5kVmVyc2lvbnNPcHRpb25zIH0gZnJvbSAnLi9jb2xsZWN0aW9ucy9vcGVyYXRpb25zL2xvY2FsL2ZpbmRWZXJzaW9ucydcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBSZXN0b3JlVmVyc2lvbk9wdGlvbnMgfSBmcm9tICcuL2NvbGxlY3Rpb25zL29wZXJhdGlvbnMvbG9jYWwvcmVzdG9yZVZlcnNpb24nXG5pbXBvcnQgdHlwZSB7XG4gIEJ5SURPcHRpb25zIGFzIFVwZGF0ZUJ5SURPcHRpb25zLFxuICBNYW55T3B0aW9ucyBhcyBVcGRhdGVNYW55T3B0aW9ucyxcbiAgT3B0aW9ucyBhcyBVcGRhdGVPcHRpb25zLFxufSBmcm9tICcuL2NvbGxlY3Rpb25zL29wZXJhdGlvbnMvbG9jYWwvdXBkYXRlJ1xuaW1wb3J0IHR5cGUgeyBFbWFpbE9wdGlvbnMsIEluaXRPcHRpb25zLCBTYW5pdGl6ZWRDb25maWcgfSBmcm9tICcuL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGFnaW5hdGVkRG9jcyB9IGZyb20gJy4vZGF0YWJhc2UvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEJ1aWxkRW1haWxSZXN1bHQgfSBmcm9tICcuL2VtYWlsL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkQXV0aGVudGljYXRlIH0gZnJvbSAnLi9leHByZXNzL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJ1xuaW1wb3J0IHR5cGUgeyBFcnJvckhhbmRsZXIgfSBmcm9tICcuL2V4cHJlc3MvbWlkZGxld2FyZS9lcnJvckhhbmRsZXInXG5pbXBvcnQgdHlwZSB7IEdsb2JhbHMgfSBmcm9tICcuL2dsb2JhbHMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIEZpbmRHbG9iYWxPcHRpb25zIH0gZnJvbSAnLi9nbG9iYWxzL29wZXJhdGlvbnMvbG9jYWwvZmluZE9uZSdcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBGaW5kR2xvYmFsVmVyc2lvbkJ5SURPcHRpb25zIH0gZnJvbSAnLi9nbG9iYWxzL29wZXJhdGlvbnMvbG9jYWwvZmluZFZlcnNpb25CeUlEJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIEZpbmRHbG9iYWxWZXJzaW9uc09wdGlvbnMgfSBmcm9tICcuL2dsb2JhbHMvb3BlcmF0aW9ucy9sb2NhbC9maW5kVmVyc2lvbnMnXG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgUmVzdG9yZUdsb2JhbFZlcnNpb25PcHRpb25zIH0gZnJvbSAnLi9nbG9iYWxzL29wZXJhdGlvbnMvbG9jYWwvcmVzdG9yZVZlcnNpb24nXG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgVXBkYXRlR2xvYmFsT3B0aW9ucyB9IGZyb20gJy4vZ2xvYmFscy9vcGVyYXRpb25zL2xvY2FsL3VwZGF0ZSdcbmltcG9ydCB0eXBlIHsgVHlwZVdpdGhWZXJzaW9uIH0gZnJvbSAnLi92ZXJzaW9ucy90eXBlcydcblxuaW1wb3J0IHsgZGVjcnlwdCwgZW5jcnlwdCB9IGZyb20gJy4vYXV0aC9jcnlwdG8nXG5pbXBvcnQgbG9jYWxPcGVyYXRpb25zIGZyb20gJy4vY29sbGVjdGlvbnMvb3BlcmF0aW9ucy9sb2NhbCdcbmltcG9ydCBmaW5kQ29uZmlnIGZyb20gJy4vY29uZmlnL2ZpbmQnXG5pbXBvcnQgYnVpbGRFbWFpbCBmcm9tICcuL2VtYWlsL2J1aWxkJ1xuaW1wb3J0IHsgZGVmYXVsdHMgYXMgZW1haWxEZWZhdWx0cyB9IGZyb20gJy4vZW1haWwvZGVmYXVsdHMnXG5pbXBvcnQgc2VuZEVtYWlsIGZyb20gJy4vZW1haWwvc2VuZEVtYWlsJ1xuaW1wb3J0IGxvY2FsR2xvYmFsT3BlcmF0aW9ucyBmcm9tICcuL2dsb2JhbHMvb3BlcmF0aW9ucy9sb2NhbCdcbmltcG9ydCByZWdpc3RlckdyYXBoUUxTY2hlbWEgZnJvbSAnLi9ncmFwaHFsL3JlZ2lzdGVyU2NoZW1hJ1xuaW1wb3J0IExvZ2dlciBmcm9tICcuL3V0aWxpdGllcy9sb2dnZXInXG5pbXBvcnQgeyBzZXJ2ZXJJbml0IGFzIHNlcnZlckluaXRUZWxlbWV0cnkgfSBmcm9tICcuL3V0aWxpdGllcy90ZWxlbWV0cnkvZXZlbnRzL3NlcnZlckluaXQnXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFBheWxvYWRcbiAqL1xuZXhwb3J0IGNsYXNzIEJhc2VQYXlsb2FkPFRHZW5lcmF0ZWRUeXBlcyBleHRlbmRzIEdlbmVyYXRlZFR5cGVzPiB7XG4gIE11dGF0aW9uOiB7IGZpZWxkczogeyBba2V5OiBzdHJpbmddOiBhbnkgfTsgbmFtZTogc3RyaW5nIH0gPSB7IG5hbWU6ICdNdXRhdGlvbicsIGZpZWxkczoge30gfVxuXG4gIFF1ZXJ5OiB7IGZpZWxkczogeyBba2V5OiBzdHJpbmddOiBhbnkgfTsgbmFtZTogc3RyaW5nIH0gPSB7IG5hbWU6ICdRdWVyeScsIGZpZWxkczoge30gfVxuXG4gIGF1dGhlbnRpY2F0ZTogUGF5bG9hZEF1dGhlbnRpY2F0ZVxuXG4gIGNvbGxlY3Rpb25zOiB7XG4gICAgW3NsdWc6IG51bWJlciB8IHN0cmluZyB8IHN5bWJvbF06IENvbGxlY3Rpb25cbiAgfSA9IHt9XG5cbiAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWdcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFBlcmZvcm1zIGNyZWF0ZSBvcGVyYXRpb25cbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnMgY3JlYXRlZCBkb2N1bWVudFxuICAgKi9cbiAgY3JlYXRlID0gYXN5bmMgPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ10+KFxuICAgIG9wdGlvbnM6IENyZWF0ZU9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8VEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddW1RdPiA9PiB7XG4gICAgY29uc3QgeyBjcmVhdGUgfSA9IGxvY2FsT3BlcmF0aW9uc1xuICAgIHJldHVybiBjcmVhdGU8VD4odGhpcywgb3B0aW9ucylcbiAgfVxuXG4gIGRiOiBEYXRhYmFzZUFkYXB0ZXJcblxuICBkZWNyeXB0ID0gZGVjcnlwdFxuXG4gIGVtYWlsOiBCdWlsZEVtYWlsUmVzdWx0XG5cbiAgZW1haWxPcHRpb25zOiBFbWFpbE9wdGlvbnNcblxuICBlbmNyeXB0ID0gZW5jcnlwdFxuXG4gIGVycm9ySGFuZGxlcjogRXJyb3JIYW5kbGVyXG5cbiAgZXhwcmVzcz86IEV4cHJlc3NcblxuICBleHRlbnNpb25zOiAoYXJnczoge1xuICAgIGFyZ3M6IE9wZXJhdGlvbkFyZ3M8YW55PlxuICAgIHJlcTogZ3JhcGhRTFJlcXVlc3Q8dW5rbm93biwgdW5rbm93bj5cbiAgICByZXN1bHQ6IEV4ZWN1dGlvblJlc3VsdFxuICB9KSA9PiBQcm9taXNlPGFueT5cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZpbmQgZG9jdW1lbnRzIHdpdGggY3JpdGVyaWFcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnMgZG9jdW1lbnRzIHNhdGlzZnlpbmcgcXVlcnlcbiAgICovXG4gIGZpbmQgPSBhc3luYyA8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogRmluZE9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8UGFnaW5hdGVkRG9jczxUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVF0+PiA9PiB7XG4gICAgY29uc3QgeyBmaW5kIH0gPSBsb2NhbE9wZXJhdGlvbnNcbiAgICByZXR1cm4gZmluZDxUPih0aGlzLCBvcHRpb25zKVxuICB9XG5cbiAgZmluZEJ5SUQgPSBhc3luYyA8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogRmluZEJ5SURPcHRpb25zPFQ+LFxuICApOiBQcm9taXNlPFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXVtUXT4gPT4ge1xuICAgIGNvbnN0IHsgZmluZEJ5SUQgfSA9IGxvY2FsT3BlcmF0aW9uc1xuICAgIHJldHVybiBmaW5kQnlJRDxUPih0aGlzLCBvcHRpb25zKVxuICB9XG5cbiAgZmluZEdsb2JhbCA9IGFzeW5jIDxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydnbG9iYWxzJ10+KFxuICAgIG9wdGlvbnM6IEZpbmRHbG9iYWxPcHRpb25zPFQ+LFxuICApOiBQcm9taXNlPFRHZW5lcmF0ZWRUeXBlc1snZ2xvYmFscyddW1RdPiA9PiB7XG4gICAgY29uc3QgeyBmaW5kT25lIH0gPSBsb2NhbEdsb2JhbE9wZXJhdGlvbnNcbiAgICByZXR1cm4gZmluZE9uZTxUPih0aGlzLCBvcHRpb25zKVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBGaW5kIGdsb2JhbCB2ZXJzaW9uIGJ5IElEXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqIEByZXR1cm5zIGdsb2JhbCB2ZXJzaW9uIHdpdGggc3BlY2lmaWVkIElEXG4gICAqL1xuICBmaW5kR2xvYmFsVmVyc2lvbkJ5SUQgPSBhc3luYyA8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snZ2xvYmFscyddPihcbiAgICBvcHRpb25zOiBGaW5kR2xvYmFsVmVyc2lvbkJ5SURPcHRpb25zPFQ+LFxuICApOiBQcm9taXNlPFR5cGVXaXRoVmVyc2lvbjxUR2VuZXJhdGVkVHlwZXNbJ2dsb2JhbHMnXVtUXT4+ID0+IHtcbiAgICBjb25zdCB7IGZpbmRWZXJzaW9uQnlJRCB9ID0gbG9jYWxHbG9iYWxPcGVyYXRpb25zXG4gICAgcmV0dXJuIGZpbmRWZXJzaW9uQnlJRDxUPih0aGlzLCBvcHRpb25zKVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBGaW5kIGdsb2JhbCB2ZXJzaW9ucyB3aXRoIGNyaXRlcmlhXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqIEByZXR1cm5zIHZlcnNpb25zIHNhdGlzZnlpbmcgcXVlcnlcbiAgICovXG4gIGZpbmRHbG9iYWxWZXJzaW9ucyA9IGFzeW5jIDxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydnbG9iYWxzJ10+KFxuICAgIG9wdGlvbnM6IEZpbmRHbG9iYWxWZXJzaW9uc09wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8UGFnaW5hdGVkRG9jczxUeXBlV2l0aFZlcnNpb248VEdlbmVyYXRlZFR5cGVzWydnbG9iYWxzJ11bVF0+Pj4gPT4ge1xuICAgIGNvbnN0IHsgZmluZFZlcnNpb25zIH0gPSBsb2NhbEdsb2JhbE9wZXJhdGlvbnNcbiAgICByZXR1cm4gZmluZFZlcnNpb25zPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZpbmQgdmVyc2lvbiBieSBJRFxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiBAcmV0dXJucyB2ZXJzaW9uIHdpdGggc3BlY2lmaWVkIElEXG4gICAqL1xuICBmaW5kVmVyc2lvbkJ5SUQgPSBhc3luYyA8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogRmluZFZlcnNpb25CeUlET3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxUeXBlV2l0aFZlcnNpb248VEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddW1RdPj4gPT4ge1xuICAgIGNvbnN0IHsgZmluZFZlcnNpb25CeUlEIH0gPSBsb2NhbE9wZXJhdGlvbnNcbiAgICByZXR1cm4gZmluZFZlcnNpb25CeUlEPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZpbmQgdmVyc2lvbnMgd2l0aCBjcml0ZXJpYVxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiBAcmV0dXJucyB2ZXJzaW9ucyBzYXRpc2Z5aW5nIHF1ZXJ5XG4gICAqL1xuICBmaW5kVmVyc2lvbnMgPSBhc3luYyA8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogRmluZFZlcnNpb25zT3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxQYWdpbmF0ZWREb2NzPFR5cGVXaXRoVmVyc2lvbjxUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVF0+Pj4gPT4ge1xuICAgIGNvbnN0IHsgZmluZFZlcnNpb25zIH0gPSBsb2NhbE9wZXJhdGlvbnNcbiAgICByZXR1cm4gZmluZFZlcnNpb25zPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICBmb3Jnb3RQYXNzd29yZCA9IGFzeW5jIDxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddPihcbiAgICBvcHRpb25zOiBGb3Jnb3RQYXNzd29yZE9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8Rm9yZ290UGFzc3dvcmRSZXN1bHQ+ID0+IHtcbiAgICBjb25zdCB7IGZvcmdvdFBhc3N3b3JkIH0gPSBsb2NhbE9wZXJhdGlvbnMuYXV0aFxuICAgIHJldHVybiBmb3Jnb3RQYXNzd29yZDxUPih0aGlzLCBvcHRpb25zKVxuICB9XG5cbiAgZ2V0QVBJVVJMID0gKCk6IHN0cmluZyA9PiBgJHt0aGlzLmNvbmZpZy5zZXJ2ZXJVUkx9JHt0aGlzLmNvbmZpZy5yb3V0ZXMuYXBpfWBcblxuICBnZXRBZG1pblVSTCA9ICgpOiBzdHJpbmcgPT4gYCR7dGhpcy5jb25maWcuc2VydmVyVVJMfSR7dGhpcy5jb25maWcucm91dGVzLmFkbWlufWBcblxuICBnbG9iYWxzOiBHbG9iYWxzXG5cbiAgbG9jYWw6IGJvb2xlYW5cblxuICBsb2dnZXI6IHBpbm8uTG9nZ2VyXG5cbiAgbG9naW4gPSBhc3luYyA8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogTG9naW5PcHRpb25zPFQ+LFxuICApOiBQcm9taXNlPExvZ2luUmVzdWx0ICYgeyB1c2VyOiBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVF0gfT4gPT4ge1xuICAgIGNvbnN0IHsgbG9naW4gfSA9IGxvY2FsT3BlcmF0aW9ucy5hdXRoXG4gICAgcmV0dXJuIGxvZ2luPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZpbmQgZG9jdW1lbnQgYnkgSURcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnMgZG9jdW1lbnQgd2l0aCBzcGVjaWZpZWQgSURcbiAgICovXG5cbiAgcmVzZXRQYXNzd29yZCA9IGFzeW5jIDxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddPihcbiAgICBvcHRpb25zOiBSZXNldFBhc3N3b3JkT3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxSZXNldFBhc3N3b3JkUmVzdWx0PiA9PiB7XG4gICAgY29uc3QgeyByZXNldFBhc3N3b3JkIH0gPSBsb2NhbE9wZXJhdGlvbnMuYXV0aFxuICAgIHJldHVybiByZXNldFBhc3N3b3JkPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlc3RvcmUgZ2xvYmFsIHZlcnNpb24gYnkgSURcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnMgdmVyc2lvbiB3aXRoIHNwZWNpZmllZCBJRFxuICAgKi9cbiAgcmVzdG9yZUdsb2JhbFZlcnNpb24gPSBhc3luYyA8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snZ2xvYmFscyddPihcbiAgICBvcHRpb25zOiBSZXN0b3JlR2xvYmFsVmVyc2lvbk9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8VEdlbmVyYXRlZFR5cGVzWydnbG9iYWxzJ11bVF0+ID0+IHtcbiAgICBjb25zdCB7IHJlc3RvcmVWZXJzaW9uIH0gPSBsb2NhbEdsb2JhbE9wZXJhdGlvbnNcbiAgICByZXR1cm4gcmVzdG9yZVZlcnNpb248VD4odGhpcywgb3B0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVzdG9yZSB2ZXJzaW9uIGJ5IElEXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqIEByZXR1cm5zIHZlcnNpb24gd2l0aCBzcGVjaWZpZWQgSURcbiAgICovXG4gIHJlc3RvcmVWZXJzaW9uID0gYXN5bmMgPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ10+KFxuICAgIG9wdGlvbnM6IFJlc3RvcmVWZXJzaW9uT3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVF0+ID0+IHtcbiAgICBjb25zdCB7IHJlc3RvcmVWZXJzaW9uIH0gPSBsb2NhbE9wZXJhdGlvbnNcbiAgICByZXR1cm4gcmVzdG9yZVZlcnNpb248VD4odGhpcywgb3B0aW9ucylcbiAgfVxuXG4gIHJvdXRlcj86IFJvdXRlclxuXG4gIHNjaGVtYTogR3JhcGhRTFNjaGVtYVxuXG4gIHNlY3JldDogc3RyaW5nXG5cbiAgc2VuZEVtYWlsOiAobWVzc2FnZTogU2VuZE1haWxPcHRpb25zKSA9PiBQcm9taXNlPHVua25vd24+XG5cbiAgdHlwZXM6IHtcbiAgICBhcnJheVR5cGVzOiBhbnlcbiAgICBibG9ja0lucHV0VHlwZXM6IGFueVxuICAgIGJsb2NrVHlwZXM6IGFueVxuICAgIGZhbGxiYWNrTG9jYWxlSW5wdXRUeXBlPzogYW55XG4gICAgZ3JvdXBUeXBlczogYW55XG4gICAgbG9jYWxlSW5wdXRUeXBlPzogYW55XG4gICAgdGFiVHlwZXM6IGFueVxuICB9XG5cbiAgdW5sb2NrID0gYXN5bmMgPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ10+KFxuICAgIG9wdGlvbnM6IFVubG9ja09wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgIGNvbnN0IHsgdW5sb2NrIH0gPSBsb2NhbE9wZXJhdGlvbnMuYXV0aFxuICAgIHJldHVybiB1bmxvY2sodGhpcywgb3B0aW9ucylcbiAgfVxuXG4gIHVwZGF0ZUdsb2JhbCA9IGFzeW5jIDxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydnbG9iYWxzJ10+KFxuICAgIG9wdGlvbnM6IFVwZGF0ZUdsb2JhbE9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8VEdlbmVyYXRlZFR5cGVzWydnbG9iYWxzJ11bVF0+ID0+IHtcbiAgICBjb25zdCB7IHVwZGF0ZSB9ID0gbG9jYWxHbG9iYWxPcGVyYXRpb25zXG4gICAgcmV0dXJuIHVwZGF0ZTxUPih0aGlzLCBvcHRpb25zKVxuICB9XG5cbiAgdmFsaWRhdGlvblJ1bGVzOiAoYXJnczogT3BlcmF0aW9uQXJnczxhbnk+KSA9PiBWYWxpZGF0aW9uUnVsZVtdXG5cbiAgdmVyaWZ5RW1haWwgPSBhc3luYyA8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogVmVyaWZ5RW1haWxPcHRpb25zPFQ+LFxuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICBjb25zdCB7IHZlcmlmeUVtYWlsIH0gPSBsb2NhbE9wZXJhdGlvbnMuYXV0aFxuICAgIHJldHVybiB2ZXJpZnlFbWFpbCh0aGlzLCBvcHRpb25zKVxuICB9XG5cbiAgdmVyc2lvbnM6IHtcbiAgICBbc2x1Zzogc3RyaW5nXTogYW55IC8vIFRPRE86IFR5cGUgdGhpc1xuICB9ID0ge31cblxuICBkZWxldGU8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogRGVsZXRlT3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxCdWxrT3BlcmF0aW9uUmVzdWx0PFQ+IHwgVEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddW1RdPiB7XG4gICAgY29uc3QgeyBkZWxldGVMb2NhbCB9ID0gbG9jYWxPcGVyYXRpb25zXG4gICAgcmV0dXJuIGRlbGV0ZUxvY2FsPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIGRlbGV0ZSBvbmUgb3IgbW9yZSBkb2N1bWVudHNcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnMgVXBkYXRlZCBkb2N1bWVudChzKVxuICAgKi9cbiAgZGVsZXRlPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ10+KFxuICAgIG9wdGlvbnM6IERlbGV0ZUJ5SURPcHRpb25zPFQ+LFxuICApOiBQcm9taXNlPFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXVtUXT5cblxuICBkZWxldGU8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogRGVsZXRlTWFueU9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8QnVsa09wZXJhdGlvblJlc3VsdDxUPj5cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemVzIFBheWxvYWRcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICovXG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgLy8gVE9ETzogVHlwZVNjcmlwdCBoYWxsdWNpbmF0aW5nIGFnYWluLiBmaXggbGF0ZXJcbiAgYXN5bmMgaW5pdChvcHRpb25zOiBJbml0T3B0aW9ucyk6IFByb21pc2U8UGF5bG9hZD4ge1xuICAgIHRoaXMubG9nZ2VyID0gTG9nZ2VyKCdwYXlsb2FkJywgb3B0aW9ucy5sb2dnZXJPcHRpb25zLCBvcHRpb25zLmxvZ2dlckRlc3RpbmF0aW9uKVxuXG4gICAgaWYgKCFvcHRpb25zLnNlY3JldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvcjogbWlzc2luZyBzZWNyZXQga2V5LiBBIHNlY3JldCBrZXkgaXMgbmVlZGVkIHRvIHNlY3VyZSBQYXlsb2FkLicpXG4gICAgfVxuXG4gICAgdGhpcy5zZWNyZXQgPSBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKG9wdGlvbnMuc2VjcmV0KS5kaWdlc3QoJ2hleCcpLnNsaWNlKDAsIDMyKVxuXG4gICAgdGhpcy5sb2NhbCA9IG9wdGlvbnMubG9jYWxcblxuICAgIGlmIChvcHRpb25zLmNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcgPSBhd2FpdCBvcHRpb25zLmNvbmZpZ1xuICAgICAgY29uc3QgY29uZmlnUGF0aCA9IGZpbmRDb25maWcoKVxuXG4gICAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgICAgLi4udGhpcy5jb25maWcsXG4gICAgICAgIHBhdGhzOiB7XG4gICAgICAgICAgY29uZmlnOiBjb25maWdQYXRoLFxuICAgICAgICAgIGNvbmZpZ0RpcjogcGF0aC5kaXJuYW1lKGNvbmZpZ1BhdGgpLFxuICAgICAgICAgIHJhd0NvbmZpZzogY29uZmlnUGF0aCxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXMsIGdsb2JhbC1yZXF1aXJlXG4gICAgICBjb25zdCBsb2FkQ29uZmlnID0gcmVxdWlyZSgnLi9jb25maWcvbG9hZCcpLmRlZmF1bHRcbiAgICAgIHRoaXMuY29uZmlnID0gYXdhaXQgbG9hZENvbmZpZyh0aGlzLmxvZ2dlcilcbiAgICB9XG5cbiAgICB0aGlzLmdsb2JhbHMgPSB7XG4gICAgICBjb25maWc6IHRoaXMuY29uZmlnLmdsb2JhbHMsXG4gICAgfVxuICAgIHRoaXMuY29uZmlnLmNvbGxlY3Rpb25zLmZvckVhY2goKGNvbGxlY3Rpb24pID0+IHtcbiAgICAgIHRoaXMuY29sbGVjdGlvbnNbY29sbGVjdGlvbi5zbHVnXSA9IHtcbiAgICAgICAgY29uZmlnOiBjb2xsZWN0aW9uLFxuICAgICAgfVxuICAgIH0pXG5cbiAgICB0aGlzLmRiID0gdGhpcy5jb25maWcuZGIoeyBwYXlsb2FkOiB0aGlzIH0pXG4gICAgdGhpcy5kYi5wYXlsb2FkID0gdGhpc1xuXG4gICAgaWYgKHRoaXMuZGI/LmluaXQpIHtcbiAgICAgIGF3YWl0IHRoaXMuZGIuaW5pdCh0aGlzKVxuICAgIH1cblxuICAgIGlmICghb3B0aW9ucy5kaXNhYmxlREJDb25uZWN0ICYmIHRoaXMuZGIuY29ubmVjdCkge1xuICAgICAgYXdhaXQgdGhpcy5kYi5jb25uZWN0KHRoaXMpXG4gICAgfVxuXG4gICAgdGhpcy5sb2dnZXIuaW5mbygnU3RhcnRpbmcgUGF5bG9hZC4uLicpXG5cbiAgICAvLyBDb25maWd1cmUgZW1haWwgc2VydmljZVxuICAgIGNvbnN0IGVtYWlsT3B0aW9ucyA9IG9wdGlvbnMuZW1haWwgPyB7IC4uLm9wdGlvbnMuZW1haWwgfSA6IHRoaXMuY29uZmlnLmVtYWlsXG4gICAgaWYgKG9wdGlvbnMuZW1haWwgJiYgdGhpcy5jb25maWcuZW1haWwpIHtcbiAgICAgIHRoaXMubG9nZ2VyLndhcm4oXG4gICAgICAgICdFbWFpbCBvcHRpb25zIHByb3ZpZGVkIGluIGJvdGggaW5pdCBvcHRpb25zIGFuZCBjb25maWcuIFVzaW5nIGluaXQgb3B0aW9ucy4nLFxuICAgICAgKVxuICAgIH1cblxuICAgIHRoaXMuZW1haWxPcHRpb25zID0gZW1haWxPcHRpb25zID8/IGVtYWlsRGVmYXVsdHNcbiAgICB0aGlzLmVtYWlsID0gYnVpbGRFbWFpbCh0aGlzLmVtYWlsT3B0aW9ucywgdGhpcy5sb2dnZXIpXG4gICAgdGhpcy5zZW5kRW1haWwgPSBzZW5kRW1haWwuYmluZCh0aGlzKVxuXG4gICAgaWYgKCF0aGlzLmNvbmZpZy5ncmFwaFFMLmRpc2FibGUpIHtcbiAgICAgIHJlZ2lzdGVyR3JhcGhRTFNjaGVtYSh0aGlzKVxuICAgIH1cblxuICAgIHNlcnZlckluaXRUZWxlbWV0cnkodGhpcylcblxuICAgIGlmICghb3B0aW9ucy5kaXNhYmxlT25Jbml0KSB7XG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnMub25Jbml0ID09PSAnZnVuY3Rpb24nKSBhd2FpdCBvcHRpb25zLm9uSW5pdCh0aGlzKVxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbmZpZy5vbkluaXQgPT09ICdmdW5jdGlvbicpIGF3YWl0IHRoaXMuY29uZmlnLm9uSW5pdCh0aGlzKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICB1cGRhdGU8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogVXBkYXRlTWFueU9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8QnVsa09wZXJhdGlvblJlc3VsdDxUPj5cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBvbmUgb3IgbW9yZSBkb2N1bWVudHNcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnMgVXBkYXRlZCBkb2N1bWVudChzKVxuICAgKi9cbiAgdXBkYXRlPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ10+KFxuICAgIG9wdGlvbnM6IFVwZGF0ZUJ5SURPcHRpb25zPFQ+LFxuICApOiBQcm9taXNlPFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXVtUXT5cblxuICB1cGRhdGU8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogVXBkYXRlT3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxCdWxrT3BlcmF0aW9uUmVzdWx0PFQ+IHwgVEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddW1RdPiB7XG4gICAgY29uc3QgeyB1cGRhdGUgfSA9IGxvY2FsT3BlcmF0aW9uc1xuICAgIHJldHVybiB1cGRhdGU8VD4odGhpcywgb3B0aW9ucylcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBQYXlsb2FkID0gQmFzZVBheWxvYWQ8R2VuZXJhdGVkVHlwZXM+XG5cbmxldCBjYWNoZWQgPSBnbG9iYWwuX3BheWxvYWRcblxuaWYgKCFjYWNoZWQpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW11bHRpLWFzc2lnblxuICBjYWNoZWQgPSBnbG9iYWwuX3BheWxvYWQgPSB7IHBheWxvYWQ6IG51bGwsIHByb21pc2U6IG51bGwgfVxufVxuXG5leHBvcnQgY29uc3QgZ2V0UGF5bG9hZCA9IGFzeW5jIChvcHRpb25zOiBJbml0T3B0aW9ucyk6IFByb21pc2U8UGF5bG9hZD4gPT4ge1xuICBpZiAoY2FjaGVkLnBheWxvYWQpIHtcbiAgICByZXR1cm4gY2FjaGVkLnBheWxvYWRcbiAgfVxuXG4gIGlmICghY2FjaGVkLnByb21pc2UpIHtcbiAgICBjYWNoZWQucHJvbWlzZSA9IG5ldyBCYXNlUGF5bG9hZDxHZW5lcmF0ZWRUeXBlcz4oKS5pbml0KG9wdGlvbnMpXG4gIH1cblxuICB0cnkge1xuICAgIGNhY2hlZC5wYXlsb2FkID0gYXdhaXQgY2FjaGVkLnByb21pc2VcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNhY2hlZC5wcm9taXNlID0gbnVsbFxuICAgIHRocm93IGVcbiAgfVxuXG4gIHJldHVybiBjYWNoZWQucGF5bG9hZFxufVxuIl0sIm5hbWVzIjpbIkJhc2VQYXlsb2FkIiwiZ2V0UGF5bG9hZCIsIk11dGF0aW9uIiwibmFtZSIsImZpZWxkcyIsIlF1ZXJ5IiwiYXV0aGVudGljYXRlIiwiY29sbGVjdGlvbnMiLCJjb25maWciLCJjcmVhdGUiLCJvcHRpb25zIiwibG9jYWxPcGVyYXRpb25zIiwiZGIiLCJkZWNyeXB0IiwiZW1haWwiLCJlbWFpbE9wdGlvbnMiLCJlbmNyeXB0IiwiZXJyb3JIYW5kbGVyIiwiZXhwcmVzcyIsImV4dGVuc2lvbnMiLCJmaW5kIiwiZmluZEJ5SUQiLCJmaW5kR2xvYmFsIiwiZmluZE9uZSIsImxvY2FsR2xvYmFsT3BlcmF0aW9ucyIsImZpbmRHbG9iYWxWZXJzaW9uQnlJRCIsImZpbmRWZXJzaW9uQnlJRCIsImZpbmRHbG9iYWxWZXJzaW9ucyIsImZpbmRWZXJzaW9ucyIsImZvcmdvdFBhc3N3b3JkIiwiYXV0aCIsImdldEFQSVVSTCIsInNlcnZlclVSTCIsInJvdXRlcyIsImFwaSIsImdldEFkbWluVVJMIiwiYWRtaW4iLCJnbG9iYWxzIiwibG9jYWwiLCJsb2dnZXIiLCJsb2dpbiIsInJlc2V0UGFzc3dvcmQiLCJyZXN0b3JlR2xvYmFsVmVyc2lvbiIsInJlc3RvcmVWZXJzaW9uIiwicm91dGVyIiwic2NoZW1hIiwic2VjcmV0Iiwic2VuZEVtYWlsIiwidHlwZXMiLCJ1bmxvY2siLCJ1cGRhdGVHbG9iYWwiLCJ1cGRhdGUiLCJ2YWxpZGF0aW9uUnVsZXMiLCJ2ZXJpZnlFbWFpbCIsInZlcnNpb25zIiwiZGVsZXRlIiwiZGVsZXRlTG9jYWwiLCJpbml0IiwiTG9nZ2VyIiwibG9nZ2VyT3B0aW9ucyIsImxvZ2dlckRlc3RpbmF0aW9uIiwiRXJyb3IiLCJjcnlwdG8iLCJjcmVhdGVIYXNoIiwiZGlnZXN0Iiwic2xpY2UiLCJjb25maWdQYXRoIiwiZmluZENvbmZpZyIsInBhdGhzIiwiY29uZmlnRGlyIiwicGF0aCIsImRpcm5hbWUiLCJyYXdDb25maWciLCJsb2FkQ29uZmlnIiwicmVxdWlyZSIsImRlZmF1bHQiLCJmb3JFYWNoIiwiY29sbGVjdGlvbiIsInNsdWciLCJwYXlsb2FkIiwiZGlzYWJsZURCQ29ubmVjdCIsImNvbm5lY3QiLCJpbmZvIiwid2FybiIsImVtYWlsRGVmYXVsdHMiLCJidWlsZEVtYWlsIiwiYmluZCIsImdyYXBoUUwiLCJkaXNhYmxlIiwicmVnaXN0ZXJHcmFwaFFMU2NoZW1hIiwic2VydmVySW5pdFRlbGVtZXRyeSIsImRpc2FibGVPbkluaXQiLCJvbkluaXQiLCJjYWNoZWQiLCJnbG9iYWwiLCJfcGF5bG9hZCIsInByb21pc2UiLCJlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQStEYUEsV0FBVztlQUFYQTs7SUFxV0FDLFVBQVU7ZUFBVkE7OzsrREE3Wk07NkRBQ0Y7eUJBeUNnQjs4REFDTDs2REFDTDs4REFDQTswQkFDbUI7a0VBQ3BCOytEQUNZO3VFQUNBOytEQUNmOzRCQUMrQjs7Ozs7O0FBSzNDLE1BQU1EO0lBQ1hFLFdBQTZEO1FBQUVDLE1BQU07UUFBWUMsUUFB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
|
|
267
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXlsb2FkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRXhwcmVzcywgUm91dGVyIH0gZnJvbSAnZXhwcmVzcydcbmltcG9ydCB0eXBlIHsgRXhlY3V0aW9uUmVzdWx0LCBHcmFwaFFMU2NoZW1hLCBWYWxpZGF0aW9uUnVsZSB9IGZyb20gJ2dyYXBocWwnXG4vLyBAdHMtZXhwZWN0LWVycm9yIC8vIFRPRE8gRml4IHRoaXMgLSBtb2R1bGVSZXNvbHV0aW9uIDE2IGJyZWFrcyB0aGlzIGltcG9ydFxuaW1wb3J0IHR5cGUgeyBPcGVyYXRpb25BcmdzLCBSZXF1ZXN0IGFzIGdyYXBoUUxSZXF1ZXN0IH0gZnJvbSAnZ3JhcGhxbC1odHRwL2xpYi9oYW5kbGVyJ1xuaW1wb3J0IHR5cGUgeyBTZW5kTWFpbE9wdGlvbnMgfSBmcm9tICdub2RlbWFpbGVyJ1xuaW1wb3J0IHR5cGUgcGlubyBmcm9tICdwaW5vJ1xuXG5pbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0bydcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5cbmltcG9ydCB0eXBlIHsgRGF0YWJhc2VBZGFwdGVyLCBHZW5lcmF0ZWRUeXBlcyB9IGZyb20gJy4vJyAvLyBNdXN0IGltcG9ydCBmcm9tIFBheWxvYWQgdG8gc3VwcG9ydCBkZWNsYXJlIG1vZHVsZVxuaW1wb3J0IHR5cGUgeyBSZXN1bHQgYXMgRm9yZ290UGFzc3dvcmRSZXN1bHQgfSBmcm9tICcuL2F1dGgvb3BlcmF0aW9ucy9mb3Jnb3RQYXNzd29yZCdcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBGb3Jnb3RQYXNzd29yZE9wdGlvbnMgfSBmcm9tICcuL2F1dGgvb3BlcmF0aW9ucy9sb2NhbC9mb3Jnb3RQYXNzd29yZCdcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBMb2dpbk9wdGlvbnMgfSBmcm9tICcuL2F1dGgvb3BlcmF0aW9ucy9sb2NhbC9sb2dpbidcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBSZXNldFBhc3N3b3JkT3B0aW9ucyB9IGZyb20gJy4vYXV0aC9vcGVyYXRpb25zL2xvY2FsL3Jlc2V0UGFzc3dvcmQnXG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgVW5sb2NrT3B0aW9ucyB9IGZyb20gJy4vYXV0aC9vcGVyYXRpb25zL2xvY2FsL3VubG9jaydcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBWZXJpZnlFbWFpbE9wdGlvbnMgfSBmcm9tICcuL2F1dGgvb3BlcmF0aW9ucy9sb2NhbC92ZXJpZnlFbWFpbCdcbmltcG9ydCB0eXBlIHsgUmVzdWx0IGFzIExvZ2luUmVzdWx0IH0gZnJvbSAnLi9hdXRoL29wZXJhdGlvbnMvbG9naW4nXG5pbXBvcnQgdHlwZSB7IFJlc3VsdCBhcyBSZXNldFBhc3N3b3JkUmVzdWx0IH0gZnJvbSAnLi9hdXRoL29wZXJhdGlvbnMvcmVzZXRQYXNzd29yZCdcbmltcG9ydCB0eXBlIHsgQnVsa09wZXJhdGlvblJlc3VsdCwgQ29sbGVjdGlvbiB9IGZyb20gJy4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIENyZWF0ZU9wdGlvbnMgfSBmcm9tICcuL2NvbGxlY3Rpb25zL29wZXJhdGlvbnMvbG9jYWwvY3JlYXRlJ1xuaW1wb3J0IHR5cGUge1xuICBCeUlET3B0aW9ucyBhcyBEZWxldGVCeUlET3B0aW9ucyxcbiAgTWFueU9wdGlvbnMgYXMgRGVsZXRlTWFueU9wdGlvbnMsXG4gIE9wdGlvbnMgYXMgRGVsZXRlT3B0aW9ucyxcbn0gZnJvbSAnLi9jb2xsZWN0aW9ucy9vcGVyYXRpb25zL2xvY2FsL2RlbGV0ZSdcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBGaW5kT3B0aW9ucyB9IGZyb20gJy4vY29sbGVjdGlvbnMvb3BlcmF0aW9ucy9sb2NhbC9maW5kJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIEZpbmRCeUlET3B0aW9ucyB9IGZyb20gJy4vY29sbGVjdGlvbnMvb3BlcmF0aW9ucy9sb2NhbC9maW5kQnlJRCdcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBGaW5kVmVyc2lvbkJ5SURPcHRpb25zIH0gZnJvbSAnLi9jb2xsZWN0aW9ucy9vcGVyYXRpb25zL2xvY2FsL2ZpbmRWZXJzaW9uQnlJRCdcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBGaW5kVmVyc2lvbnNPcHRpb25zIH0gZnJvbSAnLi9jb2xsZWN0aW9ucy9vcGVyYXRpb25zL2xvY2FsL2ZpbmRWZXJzaW9ucydcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBSZXN0b3JlVmVyc2lvbk9wdGlvbnMgfSBmcm9tICcuL2NvbGxlY3Rpb25zL29wZXJhdGlvbnMvbG9jYWwvcmVzdG9yZVZlcnNpb24nXG5pbXBvcnQgdHlwZSB7XG4gIEJ5SURPcHRpb25zIGFzIFVwZGF0ZUJ5SURPcHRpb25zLFxuICBNYW55T3B0aW9ucyBhcyBVcGRhdGVNYW55T3B0aW9ucyxcbiAgT3B0aW9ucyBhcyBVcGRhdGVPcHRpb25zLFxufSBmcm9tICcuL2NvbGxlY3Rpb25zL29wZXJhdGlvbnMvbG9jYWwvdXBkYXRlJ1xuaW1wb3J0IHR5cGUgeyBFbWFpbE9wdGlvbnMsIEluaXRPcHRpb25zLCBTYW5pdGl6ZWRDb25maWcgfSBmcm9tICcuL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGFnaW5hdGVkRG9jcyB9IGZyb20gJy4vZGF0YWJhc2UvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEJ1aWxkRW1haWxSZXN1bHQgfSBmcm9tICcuL2VtYWlsL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkQXV0aGVudGljYXRlIH0gZnJvbSAnLi9leHByZXNzL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJ1xuaW1wb3J0IHR5cGUgeyBFcnJvckhhbmRsZXIgfSBmcm9tICcuL2V4cHJlc3MvbWlkZGxld2FyZS9lcnJvckhhbmRsZXInXG5pbXBvcnQgdHlwZSB7IEdsb2JhbHMgfSBmcm9tICcuL2dsb2JhbHMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIEZpbmRHbG9iYWxPcHRpb25zIH0gZnJvbSAnLi9nbG9iYWxzL29wZXJhdGlvbnMvbG9jYWwvZmluZE9uZSdcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBGaW5kR2xvYmFsVmVyc2lvbkJ5SURPcHRpb25zIH0gZnJvbSAnLi9nbG9iYWxzL29wZXJhdGlvbnMvbG9jYWwvZmluZFZlcnNpb25CeUlEJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIEZpbmRHbG9iYWxWZXJzaW9uc09wdGlvbnMgfSBmcm9tICcuL2dsb2JhbHMvb3BlcmF0aW9ucy9sb2NhbC9maW5kVmVyc2lvbnMnXG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgUmVzdG9yZUdsb2JhbFZlcnNpb25PcHRpb25zIH0gZnJvbSAnLi9nbG9iYWxzL29wZXJhdGlvbnMvbG9jYWwvcmVzdG9yZVZlcnNpb24nXG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgVXBkYXRlR2xvYmFsT3B0aW9ucyB9IGZyb20gJy4vZ2xvYmFscy9vcGVyYXRpb25zL2xvY2FsL3VwZGF0ZSdcbmltcG9ydCB0eXBlIHsgVHlwZVdpdGhWZXJzaW9uIH0gZnJvbSAnLi92ZXJzaW9ucy90eXBlcydcblxuaW1wb3J0IHsgZGVjcnlwdCwgZW5jcnlwdCB9IGZyb20gJy4vYXV0aC9jcnlwdG8nXG5pbXBvcnQgbG9jYWxPcGVyYXRpb25zIGZyb20gJy4vY29sbGVjdGlvbnMvb3BlcmF0aW9ucy9sb2NhbCdcbmltcG9ydCBmaW5kQ29uZmlnIGZyb20gJy4vY29uZmlnL2ZpbmQnXG5pbXBvcnQgYnVpbGRFbWFpbCBmcm9tICcuL2VtYWlsL2J1aWxkJ1xuaW1wb3J0IHsgZGVmYXVsdHMgYXMgZW1haWxEZWZhdWx0cyB9IGZyb20gJy4vZW1haWwvZGVmYXVsdHMnXG5pbXBvcnQgc2VuZEVtYWlsIGZyb20gJy4vZW1haWwvc2VuZEVtYWlsJ1xuaW1wb3J0IGxvY2FsR2xvYmFsT3BlcmF0aW9ucyBmcm9tICcuL2dsb2JhbHMvb3BlcmF0aW9ucy9sb2NhbCdcbmltcG9ydCByZWdpc3RlckdyYXBoUUxTY2hlbWEgZnJvbSAnLi9ncmFwaHFsL3JlZ2lzdGVyU2NoZW1hJ1xuaW1wb3J0IExvZ2dlciBmcm9tICcuL3V0aWxpdGllcy9sb2dnZXInXG5pbXBvcnQgeyBzZXJ2ZXJJbml0IGFzIHNlcnZlckluaXRUZWxlbWV0cnkgfSBmcm9tICcuL3V0aWxpdGllcy90ZWxlbWV0cnkvZXZlbnRzL3NlcnZlckluaXQnXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFBheWxvYWRcbiAqL1xuZXhwb3J0IGNsYXNzIEJhc2VQYXlsb2FkPFRHZW5lcmF0ZWRUeXBlcyBleHRlbmRzIEdlbmVyYXRlZFR5cGVzPiB7XG4gIE11dGF0aW9uOiB7IGZpZWxkczogeyBba2V5OiBzdHJpbmddOiBhbnkgfTsgbmFtZTogc3RyaW5nIH0gPSB7IG5hbWU6ICdNdXRhdGlvbicsIGZpZWxkczoge30gfVxuXG4gIFF1ZXJ5OiB7IGZpZWxkczogeyBba2V5OiBzdHJpbmddOiBhbnkgfTsgbmFtZTogc3RyaW5nIH0gPSB7IG5hbWU6ICdRdWVyeScsIGZpZWxkczoge30gfVxuXG4gIGF1dGhlbnRpY2F0ZTogUGF5bG9hZEF1dGhlbnRpY2F0ZVxuXG4gIGNvbGxlY3Rpb25zOiB7XG4gICAgW3NsdWc6IG51bWJlciB8IHN0cmluZyB8IHN5bWJvbF06IENvbGxlY3Rpb25cbiAgfSA9IHt9XG5cbiAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWdcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFBlcmZvcm1zIGNyZWF0ZSBvcGVyYXRpb25cbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnMgY3JlYXRlZCBkb2N1bWVudFxuICAgKi9cbiAgY3JlYXRlID0gYXN5bmMgPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ10+KFxuICAgIG9wdGlvbnM6IENyZWF0ZU9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8VEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddW1RdPiA9PiB7XG4gICAgY29uc3QgeyBjcmVhdGUgfSA9IGxvY2FsT3BlcmF0aW9uc1xuICAgIHJldHVybiBjcmVhdGU8VD4odGhpcywgb3B0aW9ucylcbiAgfVxuXG4gIGRiOiBEYXRhYmFzZUFkYXB0ZXJcblxuICBkZWNyeXB0ID0gZGVjcnlwdFxuXG4gIGVtYWlsOiBCdWlsZEVtYWlsUmVzdWx0XG5cbiAgZW1haWxPcHRpb25zOiBFbWFpbE9wdGlvbnNcblxuICBlbmNyeXB0ID0gZW5jcnlwdFxuXG4gIGVycm9ySGFuZGxlcjogRXJyb3JIYW5kbGVyXG5cbiAgZXhwcmVzcz86IEV4cHJlc3NcblxuICBleHRlbnNpb25zOiAoYXJnczoge1xuICAgIGFyZ3M6IE9wZXJhdGlvbkFyZ3M8YW55PlxuICAgIHJlcTogZ3JhcGhRTFJlcXVlc3Q8dW5rbm93biwgdW5rbm93bj5cbiAgICByZXN1bHQ6IEV4ZWN1dGlvblJlc3VsdFxuICB9KSA9PiBQcm9taXNlPGFueT5cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZpbmQgZG9jdW1lbnRzIHdpdGggY3JpdGVyaWFcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnMgZG9jdW1lbnRzIHNhdGlzZnlpbmcgcXVlcnlcbiAgICovXG4gIGZpbmQgPSBhc3luYyA8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogRmluZE9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8UGFnaW5hdGVkRG9jczxUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVF0+PiA9PiB7XG4gICAgY29uc3QgeyBmaW5kIH0gPSBsb2NhbE9wZXJhdGlvbnNcbiAgICByZXR1cm4gZmluZDxUPih0aGlzLCBvcHRpb25zKVxuICB9XG5cbiAgZmluZEJ5SUQgPSBhc3luYyA8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogRmluZEJ5SURPcHRpb25zPFQ+LFxuICApOiBQcm9taXNlPFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXVtUXT4gPT4ge1xuICAgIGNvbnN0IHsgZmluZEJ5SUQgfSA9IGxvY2FsT3BlcmF0aW9uc1xuICAgIHJldHVybiBmaW5kQnlJRDxUPih0aGlzLCBvcHRpb25zKVxuICB9XG5cbiAgZmluZEdsb2JhbCA9IGFzeW5jIDxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydnbG9iYWxzJ10+KFxuICAgIG9wdGlvbnM6IEZpbmRHbG9iYWxPcHRpb25zPFQ+LFxuICApOiBQcm9taXNlPFRHZW5lcmF0ZWRUeXBlc1snZ2xvYmFscyddW1RdPiA9PiB7XG4gICAgY29uc3QgeyBmaW5kT25lIH0gPSBsb2NhbEdsb2JhbE9wZXJhdGlvbnNcbiAgICByZXR1cm4gZmluZE9uZTxUPih0aGlzLCBvcHRpb25zKVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBGaW5kIGdsb2JhbCB2ZXJzaW9uIGJ5IElEXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqIEByZXR1cm5zIGdsb2JhbCB2ZXJzaW9uIHdpdGggc3BlY2lmaWVkIElEXG4gICAqL1xuICBmaW5kR2xvYmFsVmVyc2lvbkJ5SUQgPSBhc3luYyA8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snZ2xvYmFscyddPihcbiAgICBvcHRpb25zOiBGaW5kR2xvYmFsVmVyc2lvbkJ5SURPcHRpb25zPFQ+LFxuICApOiBQcm9taXNlPFR5cGVXaXRoVmVyc2lvbjxUR2VuZXJhdGVkVHlwZXNbJ2dsb2JhbHMnXVtUXT4+ID0+IHtcbiAgICBjb25zdCB7IGZpbmRWZXJzaW9uQnlJRCB9ID0gbG9jYWxHbG9iYWxPcGVyYXRpb25zXG4gICAgcmV0dXJuIGZpbmRWZXJzaW9uQnlJRDxUPih0aGlzLCBvcHRpb25zKVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBGaW5kIGdsb2JhbCB2ZXJzaW9ucyB3aXRoIGNyaXRlcmlhXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqIEByZXR1cm5zIHZlcnNpb25zIHNhdGlzZnlpbmcgcXVlcnlcbiAgICovXG4gIGZpbmRHbG9iYWxWZXJzaW9ucyA9IGFzeW5jIDxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydnbG9iYWxzJ10+KFxuICAgIG9wdGlvbnM6IEZpbmRHbG9iYWxWZXJzaW9uc09wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8UGFnaW5hdGVkRG9jczxUeXBlV2l0aFZlcnNpb248VEdlbmVyYXRlZFR5cGVzWydnbG9iYWxzJ11bVF0+Pj4gPT4ge1xuICAgIGNvbnN0IHsgZmluZFZlcnNpb25zIH0gPSBsb2NhbEdsb2JhbE9wZXJhdGlvbnNcbiAgICByZXR1cm4gZmluZFZlcnNpb25zPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZpbmQgdmVyc2lvbiBieSBJRFxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiBAcmV0dXJucyB2ZXJzaW9uIHdpdGggc3BlY2lmaWVkIElEXG4gICAqL1xuICBmaW5kVmVyc2lvbkJ5SUQgPSBhc3luYyA8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogRmluZFZlcnNpb25CeUlET3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxUeXBlV2l0aFZlcnNpb248VEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddW1RdPj4gPT4ge1xuICAgIGNvbnN0IHsgZmluZFZlcnNpb25CeUlEIH0gPSBsb2NhbE9wZXJhdGlvbnNcbiAgICByZXR1cm4gZmluZFZlcnNpb25CeUlEPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZpbmQgdmVyc2lvbnMgd2l0aCBjcml0ZXJpYVxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiBAcmV0dXJucyB2ZXJzaW9ucyBzYXRpc2Z5aW5nIHF1ZXJ5XG4gICAqL1xuICBmaW5kVmVyc2lvbnMgPSBhc3luYyA8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogRmluZFZlcnNpb25zT3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxQYWdpbmF0ZWREb2NzPFR5cGVXaXRoVmVyc2lvbjxUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVF0+Pj4gPT4ge1xuICAgIGNvbnN0IHsgZmluZFZlcnNpb25zIH0gPSBsb2NhbE9wZXJhdGlvbnNcbiAgICByZXR1cm4gZmluZFZlcnNpb25zPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICBmb3Jnb3RQYXNzd29yZCA9IGFzeW5jIDxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddPihcbiAgICBvcHRpb25zOiBGb3Jnb3RQYXNzd29yZE9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8Rm9yZ290UGFzc3dvcmRSZXN1bHQ+ID0+IHtcbiAgICBjb25zdCB7IGZvcmdvdFBhc3N3b3JkIH0gPSBsb2NhbE9wZXJhdGlvbnMuYXV0aFxuICAgIHJldHVybiBmb3Jnb3RQYXNzd29yZDxUPih0aGlzLCBvcHRpb25zKVxuICB9XG5cbiAgZ2V0QVBJVVJMID0gKCk6IHN0cmluZyA9PiBgJHt0aGlzLmNvbmZpZy5zZXJ2ZXJVUkx9JHt0aGlzLmNvbmZpZy5yb3V0ZXMuYXBpfWBcblxuICBnZXRBZG1pblVSTCA9ICgpOiBzdHJpbmcgPT4gYCR7dGhpcy5jb25maWcuc2VydmVyVVJMfSR7dGhpcy5jb25maWcucm91dGVzLmFkbWlufWBcblxuICBnbG9iYWxzOiBHbG9iYWxzXG5cbiAgbG9jYWw6IGJvb2xlYW5cblxuICBsb2dnZXI6IHBpbm8uTG9nZ2VyXG5cbiAgbG9naW4gPSBhc3luYyA8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogTG9naW5PcHRpb25zPFQ+LFxuICApOiBQcm9taXNlPExvZ2luUmVzdWx0ICYgeyB1c2VyOiBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVF0gfT4gPT4ge1xuICAgIGNvbnN0IHsgbG9naW4gfSA9IGxvY2FsT3BlcmF0aW9ucy5hdXRoXG4gICAgcmV0dXJuIGxvZ2luPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZpbmQgZG9jdW1lbnQgYnkgSURcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnMgZG9jdW1lbnQgd2l0aCBzcGVjaWZpZWQgSURcbiAgICovXG5cbiAgcmVzZXRQYXNzd29yZCA9IGFzeW5jIDxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddPihcbiAgICBvcHRpb25zOiBSZXNldFBhc3N3b3JkT3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxSZXNldFBhc3N3b3JkUmVzdWx0PiA9PiB7XG4gICAgY29uc3QgeyByZXNldFBhc3N3b3JkIH0gPSBsb2NhbE9wZXJhdGlvbnMuYXV0aFxuICAgIHJldHVybiByZXNldFBhc3N3b3JkPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlc3RvcmUgZ2xvYmFsIHZlcnNpb24gYnkgSURcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnMgdmVyc2lvbiB3aXRoIHNwZWNpZmllZCBJRFxuICAgKi9cbiAgcmVzdG9yZUdsb2JhbFZlcnNpb24gPSBhc3luYyA8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snZ2xvYmFscyddPihcbiAgICBvcHRpb25zOiBSZXN0b3JlR2xvYmFsVmVyc2lvbk9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8VEdlbmVyYXRlZFR5cGVzWydnbG9iYWxzJ11bVF0+ID0+IHtcbiAgICBjb25zdCB7IHJlc3RvcmVWZXJzaW9uIH0gPSBsb2NhbEdsb2JhbE9wZXJhdGlvbnNcbiAgICByZXR1cm4gcmVzdG9yZVZlcnNpb248VD4odGhpcywgb3B0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVzdG9yZSB2ZXJzaW9uIGJ5IElEXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqIEByZXR1cm5zIHZlcnNpb24gd2l0aCBzcGVjaWZpZWQgSURcbiAgICovXG4gIHJlc3RvcmVWZXJzaW9uID0gYXN5bmMgPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ10+KFxuICAgIG9wdGlvbnM6IFJlc3RvcmVWZXJzaW9uT3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVF0+ID0+IHtcbiAgICBjb25zdCB7IHJlc3RvcmVWZXJzaW9uIH0gPSBsb2NhbE9wZXJhdGlvbnNcbiAgICByZXR1cm4gcmVzdG9yZVZlcnNpb248VD4odGhpcywgb3B0aW9ucylcbiAgfVxuXG4gIHJvdXRlcj86IFJvdXRlclxuXG4gIHNjaGVtYTogR3JhcGhRTFNjaGVtYVxuXG4gIHNlY3JldDogc3RyaW5nXG5cbiAgc2VuZEVtYWlsOiAobWVzc2FnZTogU2VuZE1haWxPcHRpb25zKSA9PiBQcm9taXNlPHVua25vd24+XG5cbiAgdHlwZXM6IHtcbiAgICBhcnJheVR5cGVzOiBhbnlcbiAgICBibG9ja0lucHV0VHlwZXM6IGFueVxuICAgIGJsb2NrVHlwZXM6IGFueVxuICAgIGZhbGxiYWNrTG9jYWxlSW5wdXRUeXBlPzogYW55XG4gICAgZ3JvdXBUeXBlczogYW55XG4gICAgbG9jYWxlSW5wdXRUeXBlPzogYW55XG4gIH1cblxuICB1bmxvY2sgPSBhc3luYyA8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogVW5sb2NrT3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgY29uc3QgeyB1bmxvY2sgfSA9IGxvY2FsT3BlcmF0aW9ucy5hdXRoXG4gICAgcmV0dXJuIHVubG9jayh0aGlzLCBvcHRpb25zKVxuICB9XG5cbiAgdXBkYXRlR2xvYmFsID0gYXN5bmMgPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2dsb2JhbHMnXT4oXG4gICAgb3B0aW9uczogVXBkYXRlR2xvYmFsT3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxUR2VuZXJhdGVkVHlwZXNbJ2dsb2JhbHMnXVtUXT4gPT4ge1xuICAgIGNvbnN0IHsgdXBkYXRlIH0gPSBsb2NhbEdsb2JhbE9wZXJhdGlvbnNcbiAgICByZXR1cm4gdXBkYXRlPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICB2YWxpZGF0aW9uUnVsZXM6IChhcmdzOiBPcGVyYXRpb25BcmdzPGFueT4pID0+IFZhbGlkYXRpb25SdWxlW11cblxuICB2ZXJpZnlFbWFpbCA9IGFzeW5jIDxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddPihcbiAgICBvcHRpb25zOiBWZXJpZnlFbWFpbE9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgIGNvbnN0IHsgdmVyaWZ5RW1haWwgfSA9IGxvY2FsT3BlcmF0aW9ucy5hdXRoXG4gICAgcmV0dXJuIHZlcmlmeUVtYWlsKHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICB2ZXJzaW9uczoge1xuICAgIFtzbHVnOiBzdHJpbmddOiBhbnkgLy8gVE9ETzogVHlwZSB0aGlzXG4gIH0gPSB7fVxuXG4gIGRlbGV0ZTxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddPihcbiAgICBvcHRpb25zOiBEZWxldGVPcHRpb25zPFQ+LFxuICApOiBQcm9taXNlPEJ1bGtPcGVyYXRpb25SZXN1bHQ8VD4gfCBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVF0+IHtcbiAgICBjb25zdCB7IGRlbGV0ZUxvY2FsIH0gPSBsb2NhbE9wZXJhdGlvbnNcbiAgICByZXR1cm4gZGVsZXRlTG9jYWw8VD4odGhpcywgb3B0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gZGVsZXRlIG9uZSBvciBtb3JlIGRvY3VtZW50c1xuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiBAcmV0dXJucyBVcGRhdGVkIGRvY3VtZW50KHMpXG4gICAqL1xuICBkZWxldGU8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogRGVsZXRlQnlJRE9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8VEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddW1RdPlxuXG4gIGRlbGV0ZTxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddPihcbiAgICBvcHRpb25zOiBEZWxldGVNYW55T3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxCdWxrT3BlcmF0aW9uUmVzdWx0PFQ+PlxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZXMgUGF5bG9hZFxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKi9cbiAgLy8gQHRzLWV4cGVjdC1lcnJvciAvLyBUT0RPOiBUeXBlU2NyaXB0IGhhbGx1Y2luYXRpbmcgYWdhaW4uIGZpeCBsYXRlclxuICBhc3luYyBpbml0KG9wdGlvbnM6IEluaXRPcHRpb25zKTogUHJvbWlzZTxQYXlsb2FkPiB7XG4gICAgdGhpcy5sb2dnZXIgPSBMb2dnZXIoJ3BheWxvYWQnLCBvcHRpb25zLmxvZ2dlck9wdGlvbnMsIG9wdGlvbnMubG9nZ2VyRGVzdGluYXRpb24pXG5cbiAgICBpZiAoIW9wdGlvbnMuc2VjcmV0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yOiBtaXNzaW5nIHNlY3JldCBrZXkuIEEgc2VjcmV0IGtleSBpcyBuZWVkZWQgdG8gc2VjdXJlIFBheWxvYWQuJylcbiAgICB9XG5cbiAgICB0aGlzLnNlY3JldCA9IGNyeXB0by5jcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUob3B0aW9ucy5zZWNyZXQpLmRpZ2VzdCgnaGV4Jykuc2xpY2UoMCwgMzIpXG5cbiAgICB0aGlzLmxvY2FsID0gb3B0aW9ucy5sb2NhbFxuXG4gICAgaWYgKG9wdGlvbnMuY29uZmlnKSB7XG4gICAgICB0aGlzLmNvbmZpZyA9IGF3YWl0IG9wdGlvbnMuY29uZmlnXG4gICAgICBjb25zdCBjb25maWdQYXRoID0gZmluZENvbmZpZygpXG5cbiAgICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgICAuLi50aGlzLmNvbmZpZyxcbiAgICAgICAgcGF0aHM6IHtcbiAgICAgICAgICBjb25maWc6IGNvbmZpZ1BhdGgsXG4gICAgICAgICAgY29uZmlnRGlyOiBwYXRoLmRpcm5hbWUoY29uZmlnUGF0aCksXG4gICAgICAgICAgcmF3Q29uZmlnOiBjb25maWdQYXRoLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlcywgZ2xvYmFsLXJlcXVpcmVcbiAgICAgIGNvbnN0IGxvYWRDb25maWcgPSByZXF1aXJlKCcuL2NvbmZpZy9sb2FkJykuZGVmYXVsdFxuICAgICAgdGhpcy5jb25maWcgPSBhd2FpdCBsb2FkQ29uZmlnKHRoaXMubG9nZ2VyKVxuICAgIH1cblxuICAgIHRoaXMuZ2xvYmFscyA9IHtcbiAgICAgIGNvbmZpZzogdGhpcy5jb25maWcuZ2xvYmFscyxcbiAgICB9XG4gICAgdGhpcy5jb25maWcuY29sbGVjdGlvbnMuZm9yRWFjaCgoY29sbGVjdGlvbikgPT4ge1xuICAgICAgdGhpcy5jb2xsZWN0aW9uc1tjb2xsZWN0aW9uLnNsdWddID0ge1xuICAgICAgICBjb25maWc6IGNvbGxlY3Rpb24sXG4gICAgICB9XG4gICAgfSlcblxuICAgIHRoaXMuZGIgPSB0aGlzLmNvbmZpZy5kYih7IHBheWxvYWQ6IHRoaXMgfSlcbiAgICB0aGlzLmRiLnBheWxvYWQgPSB0aGlzXG5cbiAgICBpZiAodGhpcy5kYj8uaW5pdCkge1xuICAgICAgYXdhaXQgdGhpcy5kYi5pbml0KHRoaXMpXG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLmRpc2FibGVEQkNvbm5lY3QgJiYgdGhpcy5kYi5jb25uZWN0KSB7XG4gICAgICBhd2FpdCB0aGlzLmRiLmNvbm5lY3QodGhpcylcbiAgICB9XG5cbiAgICB0aGlzLmxvZ2dlci5pbmZvKCdTdGFydGluZyBQYXlsb2FkLi4uJylcblxuICAgIC8vIENvbmZpZ3VyZSBlbWFpbCBzZXJ2aWNlXG4gICAgY29uc3QgZW1haWxPcHRpb25zID0gb3B0aW9ucy5lbWFpbCA/IHsgLi4ub3B0aW9ucy5lbWFpbCB9IDogdGhpcy5jb25maWcuZW1haWxcbiAgICBpZiAob3B0aW9ucy5lbWFpbCAmJiB0aGlzLmNvbmZpZy5lbWFpbCkge1xuICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgJ0VtYWlsIG9wdGlvbnMgcHJvdmlkZWQgaW4gYm90aCBpbml0IG9wdGlvbnMgYW5kIGNvbmZpZy4gVXNpbmcgaW5pdCBvcHRpb25zLicsXG4gICAgICApXG4gICAgfVxuXG4gICAgdGhpcy5lbWFpbE9wdGlvbnMgPSBlbWFpbE9wdGlvbnMgPz8gZW1haWxEZWZhdWx0c1xuICAgIHRoaXMuZW1haWwgPSBidWlsZEVtYWlsKHRoaXMuZW1haWxPcHRpb25zLCB0aGlzLmxvZ2dlcilcbiAgICB0aGlzLnNlbmRFbWFpbCA9IHNlbmRFbWFpbC5iaW5kKHRoaXMpXG5cbiAgICBpZiAoIXRoaXMuY29uZmlnLmdyYXBoUUwuZGlzYWJsZSkge1xuICAgICAgcmVnaXN0ZXJHcmFwaFFMU2NoZW1hKHRoaXMpXG4gICAgfVxuXG4gICAgc2VydmVySW5pdFRlbGVtZXRyeSh0aGlzKVxuXG4gICAgaWYgKCFvcHRpb25zLmRpc2FibGVPbkluaXQpIHtcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5vbkluaXQgPT09ICdmdW5jdGlvbicpIGF3YWl0IG9wdGlvbnMub25Jbml0KHRoaXMpXG4gICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmlnLm9uSW5pdCA9PT0gJ2Z1bmN0aW9uJykgYXdhaXQgdGhpcy5jb25maWcub25Jbml0KHRoaXMpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHVwZGF0ZTxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddPihcbiAgICBvcHRpb25zOiBVcGRhdGVNYW55T3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxCdWxrT3BlcmF0aW9uUmVzdWx0PFQ+PlxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIG9uZSBvciBtb3JlIGRvY3VtZW50c1xuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiBAcmV0dXJucyBVcGRhdGVkIGRvY3VtZW50KHMpXG4gICAqL1xuICB1cGRhdGU8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogVXBkYXRlQnlJRE9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8VEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddW1RdPlxuXG4gIHVwZGF0ZTxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddPihcbiAgICBvcHRpb25zOiBVcGRhdGVPcHRpb25zPFQ+LFxuICApOiBQcm9taXNlPEJ1bGtPcGVyYXRpb25SZXN1bHQ8VD4gfCBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVF0+IHtcbiAgICBjb25zdCB7IHVwZGF0ZSB9ID0gbG9jYWxPcGVyYXRpb25zXG4gICAgcmV0dXJuIHVwZGF0ZTxUPih0aGlzLCBvcHRpb25zKVxuICB9XG59XG5cbmV4cG9ydCB0eXBlIFBheWxvYWQgPSBCYXNlUGF5bG9hZDxHZW5lcmF0ZWRUeXBlcz5cblxubGV0IGNhY2hlZCA9IGdsb2JhbC5fcGF5bG9hZFxuXG5pZiAoIWNhY2hlZCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbXVsdGktYXNzaWduXG4gIGNhY2hlZCA9IGdsb2JhbC5fcGF5bG9hZCA9IHsgcGF5bG9hZDogbnVsbCwgcHJvbWlzZTogbnVsbCB9XG59XG5cbmV4cG9ydCBjb25zdCBnZXRQYXlsb2FkID0gYXN5bmMgKG9wdGlvbnM6IEluaXRPcHRpb25zKTogUHJvbWlzZTxQYXlsb2FkPiA9PiB7XG4gIGlmIChjYWNoZWQucGF5bG9hZCkge1xuICAgIHJldHVybiBjYWNoZWQucGF5bG9hZFxuICB9XG5cbiAgaWYgKCFjYWNoZWQucHJvbWlzZSkge1xuICAgIGNhY2hlZC5wcm9taXNlID0gbmV3IEJhc2VQYXlsb2FkPEdlbmVyYXRlZFR5cGVzPigpLmluaXQob3B0aW9ucylcbiAgfVxuXG4gIHRyeSB7XG4gICAgY2FjaGVkLnBheWxvYWQgPSBhd2FpdCBjYWNoZWQucHJvbWlzZVxuICB9IGNhdGNoIChlKSB7XG4gICAgY2FjaGVkLnByb21pc2UgPSBudWxsXG4gICAgdGhyb3cgZVxuICB9XG5cbiAgcmV0dXJuIGNhY2hlZC5wYXlsb2FkXG59XG4iXSwibmFtZXMiOlsiQmFzZVBheWxvYWQiLCJnZXRQYXlsb2FkIiwiTXV0YXRpb24iLCJuYW1lIiwiZmllbGRzIiwiUXVlcnkiLCJhdXRoZW50aWNhdGUiLCJjb2xsZWN0aW9ucyIsImNvbmZpZyIsImNyZWF0ZSIsIm9wdGlvbnMiLCJsb2NhbE9wZXJhdGlvbnMiLCJkYiIsImRlY3J5cHQiLCJlbWFpbCIsImVtYWlsT3B0aW9ucyIsImVuY3J5cHQiLCJlcnJvckhhbmRsZXIiLCJleHByZXNzIiwiZXh0ZW5zaW9ucyIsImZpbmQiLCJmaW5kQnlJRCIsImZpbmRHbG9iYWwiLCJmaW5kT25lIiwibG9jYWxHbG9iYWxPcGVyYXRpb25zIiwiZmluZEdsb2JhbFZlcnNpb25CeUlEIiwiZmluZFZlcnNpb25CeUlEIiwiZmluZEdsb2JhbFZlcnNpb25zIiwiZmluZFZlcnNpb25zIiwiZm9yZ290UGFzc3dvcmQiLCJhdXRoIiwiZ2V0QVBJVVJMIiwic2VydmVyVVJMIiwicm91dGVzIiwiYXBpIiwiZ2V0QWRtaW5VUkwiLCJhZG1pbiIsImdsb2JhbHMiLCJsb2NhbCIsImxvZ2dlciIsImxvZ2luIiwicmVzZXRQYXNzd29yZCIsInJlc3RvcmVHbG9iYWxWZXJzaW9uIiwicmVzdG9yZVZlcnNpb24iLCJyb3V0ZXIiLCJzY2hlbWEiLCJzZWNyZXQiLCJzZW5kRW1haWwiLCJ0eXBlcyIsInVubG9jayIsInVwZGF0ZUdsb2JhbCIsInVwZGF0ZSIsInZhbGlkYXRpb25SdWxlcyIsInZlcmlmeUVtYWlsIiwidmVyc2lvbnMiLCJkZWxldGUiLCJkZWxldGVMb2NhbCIsImluaXQiLCJMb2dnZXIiLCJsb2dnZXJPcHRpb25zIiwibG9nZ2VyRGVzdGluYXRpb24iLCJFcnJvciIsImNyeXB0byIsImNyZWF0ZUhhc2giLCJkaWdlc3QiLCJzbGljZSIsImNvbmZpZ1BhdGgiLCJmaW5kQ29uZmlnIiwicGF0aHMiLCJjb25maWdEaXIiLCJwYXRoIiwiZGlybmFtZSIsInJhd0NvbmZpZyIsImxvYWRDb25maWciLCJyZXF1aXJlIiwiZGVmYXVsdCIsImZvckVhY2giLCJjb2xsZWN0aW9uIiwic2x1ZyIsInBheWxvYWQiLCJkaXNhYmxlREJDb25uZWN0IiwiY29ubmVjdCIsImluZm8iLCJ3YXJuIiwiZW1haWxEZWZhdWx0cyIsImJ1aWxkRW1haWwiLCJiaW5kIiwiZ3JhcGhRTCIsImRpc2FibGUiLCJyZWdpc3RlckdyYXBoUUxTY2hlbWEiLCJzZXJ2ZXJJbml0VGVsZW1ldHJ5IiwiZGlzYWJsZU9uSW5pdCIsIm9uSW5pdCIsImNhY2hlZCIsImdsb2JhbCIsIl9wYXlsb2FkIiwicHJvbWlzZSIsImUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBK0RhQSxXQUFXO2VBQVhBOztJQW9XQUMsVUFBVTtlQUFWQTs7OytEQTVaTTs2REFDRjt5QkF5Q2dCOzhEQUNMOzZEQUNMOzhEQUNBOzBCQUNtQjtrRUFDcEI7K0RBQ1k7dUVBQ0E7K0RBQ2Y7NEJBQytCOzs7Ozs7QUFLM0MsTUFBTUQ7SUFDWEUsV0FBNkQ7UUFBRUMsTUFBTTtRQUFZQyxRQUFRLENBQUM7SUFBRSxFQUFDO0lB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
|