@pipeline-builder/pipeline-core 4.4.6 → 4.4.8
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/lib/cdk.js +1 -1
- package/lib/config/app-config.js +1 -1
- package/lib/config/aws-config-cdk.js +1 -1
- package/lib/config/config-types.d.ts +24 -14
- package/lib/config/config-types.js +1 -1
- package/lib/config/handler-constants.js +1 -1
- package/lib/config/infrastructure-config.js +8 -5
- package/lib/config/server-config.js +1 -1
- package/lib/config/service-client.js +1 -1
- package/lib/core/artifact-manager.js +1 -1
- package/lib/core/audit-correlation.js +1 -1
- package/lib/core/id-generator.js +1 -1
- package/lib/core/metadata-builder.js +1 -1
- package/lib/core/metadata-helpers.js +1 -1
- package/lib/core/network-types.js +1 -1
- package/lib/core/network.js +1 -1
- package/lib/core/pipeline-helpers.js +1 -1
- package/lib/core/pipeline-registration.js +1 -1
- package/lib/core/pipeline-types.js +1 -1
- package/lib/core/platform-tls.js +1 -1
- package/lib/core/plugin-contract.js +1 -1
- package/lib/core/plugin-lookup-envelope.js +1 -1
- package/lib/core/quota-exceeded.js +1 -1
- package/lib/core/role-types.js +1 -1
- package/lib/core/role.js +1 -1
- package/lib/core/runtime-check.js +1 -1
- package/lib/core/security-group-types.js +1 -1
- package/lib/core/security-group.js +1 -1
- package/lib/core/security-reports.js +1 -1
- package/lib/core/step-manifest.js +1 -1
- package/lib/core/synth-failure.js +1 -1
- package/lib/handlers/bundle/index.mjs +43 -0
- package/lib/handlers/platform-credential.js +1 -1
- package/lib/handlers/plugin-lookup-handler.js +1 -1
- package/lib/index.js +1 -1
- package/lib/pipeline/deploy-attribution.js +1 -1
- package/lib/pipeline/pipeline-builder.js +1 -1
- package/lib/pipeline/pipeline-configuration.js +1 -1
- package/lib/pipeline/plugin-lookup.js +18 -26
- package/lib/pipeline/plugin-spec.js +1 -1
- package/lib/pipeline/runtime-vuln-check-step.js +1 -1
- package/lib/pipeline/source-builder.js +1 -1
- package/lib/pipeline/source-types.js +1 -1
- package/lib/pipeline/stage-builder.js +1 -1
- package/lib/pipeline/step-manifest-recorder.js +1 -1
- package/lib/pipeline/step-types.js +1 -1
- package/lib/pipeline/structure-preview.js +1 -1
- package/lib/template/draft.js +1 -1
- package/lib/template/evaluator.js +1 -1
- package/lib/template/index.js +1 -1
- package/lib/template/plugin-resolver.js +1 -1
- package/lib/template/tokenizer.js +1 -1
- package/lib/template/topo-sort.js +1 -1
- package/lib/template/validate.js +1 -1
- package/lib/template/walker.js +1 -1
- package/package.json +8 -8
|
@@ -607,4 +607,4 @@ export function getComputeType(input = 'SMALL') {
|
|
|
607
607
|
export function unwrapSecret(value) {
|
|
608
608
|
return typeof value === 'string' ? value : value.unsafeUnwrap();
|
|
609
609
|
}
|
|
610
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL3BpcGVsaW5lLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFMUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxTQUFTLEVBQUUsV0FBVyxJQUFJLGNBQWMsRUFBRSxlQUFlLEVBQW9CLE1BQU0sMkJBQTJCLENBQUM7QUFDdEosT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckYsT0FBTyxFQUFvQixNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSx3QkFBd0IsRUFBRSwyQkFBMkIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9JLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0SCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFxQixNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSwyQkFBMkIsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9CQUFvQixDQUFD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QztBQUNsRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtZGF0YSc7XG5pbXBvcnQgeyBEdXJhdGlvbiwgU2VjcmV0VmFsdWUsIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlVHlwZSwgQnVpbGRTcGVjLCBDb21wdXRlVHlwZSBhcyBDREtDb21wdXRlVHlwZSwgTGludXhCdWlsZEltYWdlLCB0eXBlIElCdWlsZEltYWdlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZGVidWlsZCc7XG5pbXBvcnQgeyBTZWNyZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXInO1xuaW1wb3J0IHsgQ29kZUJ1aWxkU3RlcCwgTWFudWFsQXBwcm92YWxTdGVwLCBTaGVsbFN0ZXAgfSBmcm9tICdhd3MtY2RrLWxpYi9waXBlbGluZXMnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IHR5cGUgQXJ0aWZhY3RLZXkgfSBmcm9tICcuL2FydGlmYWN0LW1hbmFnZXIuanMnO1xuaW1wb3J0IHsgbWV0YWRhdGFGb3JTaGVsbFN0ZXAsIG1ldGFkYXRhRm9yQ29kZUJ1aWxkU3RlcCwgbWV0YWRhdGFGb3JCdWlsZEVudmlyb25tZW50LCBuZXR3b3JrQ29uZmlnRnJvbU1ldGFkYXRhIH0gZnJvbSAnLi9tZXRhZGF0YS1idWlsZGVyLmpzJztcbmltcG9ydCB7IFNURVBfQk9PVFNUUkFQX0NNRCwgZXh0cmFjdE1ldGFkYXRhRW52LCBtZXJnZSwgd3JhcENvbW1hbmRzRm9yRmFpbHVyZUJlaGF2aW9yIH0gZnJvbSAnLi9tZXRhZGF0YS1oZWxwZXJzLmpzJztcbmltcG9ydCB7IHJlc29sdmVOZXR3b3JrIH0gZnJvbSAnLi9uZXR3b3JrLmpzJztcbmltcG9ydCB7IFBsdWdpblR5cGUsIENvbXB1dGVUeXBlLCB0eXBlIE1ldGFEYXRhVHlwZSB9IGZyb20gJy4vcGlwZWxpbmUtdHlwZXMuanMnO1xuaW1wb3J0IHsgcGx1Z2luQXJ0aWZhY3RBbGlhcyB9IGZyb20gJy4vcGx1Z2luLWNvbnRyYWN0LmpzJztcbmltcG9ydCB7IFNFQ1VSSVRZX1JFUE9SVF9LRVlfRU5WLCBTRUNVUklUWV9SRVBPUlRfU0VDUkVUX0xFQUYsIFNFQ1VSSVRZX1JFUE9SVF9VUExPQURfRU5WIH0gZnJvbSAnLi9zZWN1cml0eS1yZXBvcnRzLmpzJztcbmltcG9ydCB7IFBMVUdJTl9JTUFHRV9SRVBPU0lUT1JZX1JFIH0gZnJvbSAnLi9zdGVwLW1hbmlmZXN0LmpzJztcbmltcG9ydCB7IENvbmZpZywgQ29yZUNvbnN0YW50cyB9IGZyb20gJy4uL2NvbmZpZy9hcHAtY29uZmlnLmpzJztcbmltcG9ydCB0eXBlIHsgQ29kZUJ1aWxkU3RlcE9wdGlvbnMsIFN0ZXBDdXN0b21pemF0aW9uIH0gZnJvbSAnLi4vcGlwZWxpbmUvc3RlcC10eXBlcy5qcyc7XG5pbXBvcnQgeyByZXNvbHZlUGx1Z2luVGVtcGxhdGVzIH0gZnJvbSAnLi4vdGVtcGxhdGUvcGx1Z2luLXJlc29sdmVyLmpzJztcblxuY29uc3QgbG9nID0gY3JlYXRlTG9nZ2VyKCdwaXBlbGluZS1oZWxwZXJzJyk7XG5cbi8qKlxuICogQnVpbGQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZyb20gcGx1Z2luIGNvbmZpZywgbWVyZ2VkIG1ldGFkYXRhLCBhbmQgY3VzdG9tIGVudi5cbiAqXG4gKiBNZXJnZSBvcmRlciAobGFzdCB3aW5zKTpcbiAqICAgMS4gcGx1Z2luLmVudiDigJQgcGx1Z2luIGRlZmF1bHQgZW52IHZhcnMgKGxvd2VzdCBwcmlvcml0eSlcbiAqICAgMi4gbm9uLW5hbWVzcGFjZWQgbWV0YWRhdGEga2V5cyDigJQgZS5nLiBQWVRIT05fVkVSU0lPTiwgV09SS0RJUlxuICogICAzLiBjdXN0b21FbnYg4oCUIHBlci1zdGVwIGN1c3RvbSBlbnYgdmFycyAoaGlnaGVzdCBwcmlvcml0eSlcbiAqL1xuZnVuY3Rpb24gYnVpbGRFbnYocGx1Z2luOiBQbHVnaW4sIG1ldGFkYXRhOiBNZXRhRGF0YVR5cGUsIGN1c3RvbUVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi4ocGx1Z2luLmVudiA/PyB7fSksXG4gICAgLi4uZXh0cmFjdE1ldGFkYXRhRW52KG1ldGFkYXRhKSxcbiAgICAuLi4oY3VzdG9tRW52ID8/IHt9KSxcbiAgfTtcbn1cblxuLyoqXG4gKiBCdWlsZCBib290c3RyYXAtcHJlZml4ZWQgaW5zdGFsbCBhbmQgYnVpbGQgY29tbWFuZHMgZnJvbSBwbHVnaW4gY29uZmlnLlxuICogRWFjaCBjb21tYW5kIGxpc3QgaXMgcHJlcGVuZGVkIHdpdGggYSBXT1JLRElSIGJvb3RzdHJhcCB0aGF0IGRlZmF1bHRzIHRvICcuLycuXG4gKiBXaGVuIGN1c3RvbSBjb21tYW5kcyBhcmUgcHJvdmlkZWQsIHRoZXkgYXJlIGluamVjdGVkIGJlZm9yZS9hZnRlciB0aGUgcGx1Z2luJ3MgY29tbWFuZHMuXG4gKiBCdWlsZCBjb21tYW5kcyBhcmUgb3B0aW9uYWxseSB3cmFwcGVkIGJ5IGZhaWx1cmVCZWhhdmlvciBsb2dpYy5cbiAqL1xuZnVuY3Rpb24gYnVpbGRDb21tYW5kcyhwbHVnaW46IFBsdWdpbiwgY3VzdG9tPzogU3RlcEN1c3RvbWl6YXRpb24sIGZhaWx1cmVCZWhhdmlvcj86ICdmYWlsJyB8ICd3YXJuJyB8ICdpZ25vcmUnKTogeyBpbnN0YWxsQ29tbWFuZHM6IHN0cmluZ1tdOyBjb21tYW5kczogc3RyaW5nW10gfSB7XG4gIGNvbnN0IHVzZXJDb21tYW5kcyA9IFtcbiAgICAuLi4oY3VzdG9tPy5wcmVDb21tYW5kcyA/PyBbXSksXG4gICAgLi4uKHBsdWdpbi5jb21tYW5kcz8ubGVuZ3RoID8gcGx1Z2luLmNvbW1hbmRzIDogW10pLFxuICAgIC4uLihjdXN0b20/LnBvc3RDb21tYW5kcyA/PyBbXSksXG4gIF07XG5cbiAgcmV0dXJuIHtcbiAgICBpbnN0YWxsQ29tbWFuZHM6IFtcbiAgICAgIFNURVBfQk9PVFNUUkFQX0NNRCxcbiAgICAgIC4uLihjdXN0b20/LnByZUluc3RhbGxDb21tYW5kcyA/PyBbXSksXG4gICAgICAuLi4ocGx1Z2luLmluc3RhbGxDb21tYW5kcyA/PyBbXSksXG4gICAgICAuLi4oY3VzdG9tPy5wb3N0SW5zdGFsbENvbW1hbmRzID8/IFtdKSxcbiAgICBdLFxuICAgIGNvbW1hbmRzOiBbU1RFUF9CT09UU1RSQVBfQ01ELCAuLi53cmFwQ29tbWFuZHNGb3JGYWlsdXJlQmVoYXZpb3IodXNlckNvbW1hbmRzLCBmYWlsdXJlQmVoYXZpb3IpXSxcbiAgfTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgcGxhaW4gZW52IHJlY29yZCB0byBDb2RlQnVpbGQncyBlbnZpcm9ubWVudFZhcmlhYmxlcyBmb3JtYXQgKFBMQUlOVEVYVCkuXG4gKi9cbmZ1bmN0aW9uIHRvQ29kZUJ1aWxkRW52VmFycyhlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBSZWNvcmQ8c3RyaW5nLCB7IHZhbHVlOiBzdHJpbmcgfT4ge1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIE9iamVjdC5lbnRyaWVzKGVudikubWFwKChbbmFtZSwgdmFsdWVdKSA9PiBbbmFtZSwgeyB2YWx1ZSB9XSksXG4gICk7XG59XG5cbi8qKlxuICogQnVpbGQgU0VDUkVUU19NQU5BR0VSLXR5cGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZyb20gcGx1Z2luIHNlY3JldCBkZWNsYXJhdGlvbnMuXG4gKiBVc2VzIG5hbWluZyBjb252ZW50aW9uOiBwaXBlbGluZS1idWlsZGVyL3tvcmdJZH0ve3NlY3JldE5hbWV9XG4gKiBFYWNoIG9yZyBtYW5hZ2VzIHRoZXNlIHNlY3JldHMgaW4gdGhlaXIgb3duIEFXUyBTZWNyZXRzIE1hbmFnZXIuXG4gKi9cbmNvbnN0IFZBTElEX1NFQ1JFVF9OQU1FID0gL15bYS16QS1aMC05L18rPS5ALV0rJC87XG5cbi8qKlxuICogU2VjcmV0cyBNYW5hZ2VyIGxlYWYgaG9sZGluZyB0aGUgb3JnJ3MgUkVHSVNUUlkgY3JlZGVudGlhbCDigJQgdGhlXG4gKiBgcmVnaXN0cnk6cHVzaGAtc2NvcGVkIHNlcnZpY2UtYWNjb3VudCBrZXkgQ29kZUJ1aWxkIHByZXNlbnRzIGFzIEJhc2ljIGF1dGggdG9cbiAqIHBpcGVsaW5lLWltYWdlLXJlZ2lzdHJ5LiBEZWxpYmVyYXRlbHkgTk9UIGBwbGF0Zm9ybWA6IHRoYXQgc2VjcmV0IGhvbGRzXG4gKiB0aGUgb3JnJ3MgZnVsbC1wcml2aWxlZ2UgYXV0b21hdGlvbiBjcmVkZW50aWFsLCBhbmQgYSBidWlsZCBjb250YWluZXIgaGFzIG5vXG4gKiBidXNpbmVzcyBiZWluZyBhYmxlIHRvIGNhbGwgdGhlIEFQSSB3aXRoIGl0LlxuICogUHJvdmlzaW9uZWQgYnkgYHBpcGVsaW5lLW1hbmFnZXIgaW5mcmEgc3RvcmUtdG9rZW4gLS1zY29wZSByZWdpc3RyeTpwdXNoYC5cbiAqL1xuY29uc3QgUkVHSVNUUllfQ1JFREVOVElBTF9TRUNSRVQgPSAncmVnaXN0cnktcHVzaCc7XG5cbmZ1bmN0aW9uIHRvU2VjcmV0RW52VmFycyhcbiAgc2VjcmV0czogQXJyYXk8eyBuYW1lOiBzdHJpbmc7IHJlcXVpcmVkOiBib29sZWFuIH0+LFxuICBvcmdJZDogc3RyaW5nLFxuKTogUmVjb3JkPHN0cmluZywgeyB2YWx1ZTogc3RyaW5nOyB0eXBlOiBCdWlsZEVudmlyb25tZW50VmFyaWFibGVUeXBlIH0+IHtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBzZWNyZXRzLm1hcCgoeyBuYW1lIH0pID0+IHtcbiAgICAgIGNvbnN0IHNlY3JldFBhdGggPSBDb3JlQ29uc3RhbnRzLnNlY3JldFBhdGgob3JnSWQsIG5hbWUpO1xuICAgICAgaWYgKCFWQUxJRF9TRUNSRVRfTkFNRS50ZXN0KHNlY3JldFBhdGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgU2VjcmV0IHBhdGggXCIke3NlY3JldFBhdGh9XCIgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzIGZvciBBV1MgU2VjcmV0cyBNYW5hZ2VyYCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gW1xuICAgICAgICBuYW1lLFxuICAgICAgICB7XG4gICAgICAgICAgdmFsdWU6IHNlY3JldFBhdGgsXG4gICAgICAgICAgdHlwZTogQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlVHlwZS5TRUNSRVRTX01BTkFHRVIsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH0pLFxuICApO1xufVxuXG4vKipcbiAqIEluLWNsdXN0ZXIgLyBsb2NhbCByZWdpc3RyeSBob3N0bmFtZXMgdGhhdCBBV1MgQ29kZUJ1aWxkIChvdXQtb2YtY2x1c3RlcilcbiAqIGNhbm5vdCByZXNvbHZlLiBCYWtpbmcgb25lIG9mIHRoZXNlIGludG8gYSBDb2RlQnVpbGQgaW1hZ2UgVVJJIGd1YXJhbnRlZXMgYVxuICogYEJVSUxEX0NPTlRBSU5FUl9VTkFCTEVfVE9fUFVMTF9JTUFHRWAgZmFpbHVyZSBhdCBidWlsZCB0aW1lLCBzbyB3ZSBmYWlsIHRoZVxuICogc3ludGggZmFzdCBpbnN0ZWFkIOKAlCB3aXRoIGEgbWVzc2FnZSB0aGF0IHNheXMgaG93IHRvIGZpeCBpdC5cbiAqL1xuY29uc3QgVU5SRUFDSEFCTEVfUFVMTF9IT1NUUyA9IG5ldyBTZXQoWydyZWdpc3RyeScsICdsb2NhbGhvc3QnLCAnMTI3LjAuMC4xJywgJzo6MScsICcwLjAuMC4wJ10pO1xuXG4vKiogS3ViZXJuZXRlcyAvIG1ETlMgc3VmZml4ZXMgdGhhdCBvbmx5IHJlc29sdmUgaW5zaWRlIHRoZSBjbHVzdGVyL0xBTi4gKi9cbmNvbnN0IFVOUkVBQ0hBQkxFX0hPU1RfU1VGRklYRVMgPSBbJy5zdmMnLCAnLnN2Yy5jbHVzdGVyLmxvY2FsJywgJy5sb2NhbCddO1xuXG4vKipcbiAqIFJlZHVjZSBhIHJlZ2lzdHJ5IGhvc3QgdmFsdWUgdG8gaXRzIGJhcmUgaG9zdG5hbWUgZm9yIHRoZSByZWFjaGFiaWxpdHkgY2hlY2s6XG4gKiBzdHJpcCBJUHY2IGJyYWNrZXRzIGFuZCBhbnkgYDpwb3J0YCBzdWZmaXggKGFuIG9wZXJhdG9yIG1heSBwdXQgaG9zdCtwb3J0IGluXG4gKiBvbmUgZmllbGQpLCBzbyBgcmVnaXN0cnk6NTAwMGAgLyBgWzo6MV06NTAwMGAgYXJlIHN0aWxsIHJlY29nbml6ZWQuXG4gKi9cbmZ1bmN0aW9uIGJhcmVIb3N0bmFtZShyYXdIb3N0OiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgaCA9IHJhd0hvc3QudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChoLnN0YXJ0c1dpdGgoJ1snKSkge1xuICAgIGNvbnN0IGVuZCA9IGguaW5kZXhPZignXScpO1xuICAgIGlmIChlbmQgIT09IC0xKSByZXR1cm4gaC5zbGljZSgxLCBlbmQpOyAvLyBbOjoxXTo1MDAwIC0+IDo6MVxuICB9XG4gIC8vIFN0cmlwIGEgdHJhaWxpbmcgOnBvcnQgb25seSBmb3Igbm9uLUlQdjYgdmFsdWVzIChJUHY2IGNvbnRhaW5zICc6Oicgb3IgPjEgJzonKS5cbiAgaWYgKGguaW5jbHVkZXMoJzonKSAmJiAoaC5tYXRjaCgvOi9nKT8ubGVuZ3RoID8/IDApID09PSAxKSBoID0gaC5zcGxpdCgnOicpWzBdO1xuICByZXR1cm4gaDtcbn1cblxuLyoqIFRydWUgd2hlbiBDb2RlQnVpbGQgKG91dC1vZi1jbHVzdGVyKSBjb3VsZCBub3QgcmVzb2x2ZSB0aGlzIHJlZ2lzdHJ5IGhvc3QuICovXG5mdW5jdGlvbiBpc1VucmVhY2hhYmxlUHVsbEhvc3QocmF3SG9zdDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGggPSBiYXJlSG9zdG5hbWUocmF3SG9zdCk7XG4gIGlmIChoID09PSAnJykgcmV0dXJuIHRydWU7IC8vIG5vIGhvc3Qg4oaSIG1hbGZvcm1lZCBVUklcbiAgaWYgKFVOUkVBQ0hBQkxFX1BVTExfSE9TVFMuaGFzKGgpKSByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIFVOUkVBQ0hBQkxFX0hPU1RfU1VGRklYRVMuc29tZSgocykgPT4gaC5lbmRzV2l0aChzKSk7XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgZXh0ZXJuYWwgKG91dC1vZi1jbHVzdGVyKSByZWdpc3RyeSBwdWxsIGhvc3QgKyBgOnBvcnRgIHN1ZmZpeCBmb3JcbiAqIGEgQ29kZUJ1aWxkIGltYWdlIFVSSSwgYW5kIGZhaWwgZmFzdCBpZiBpdCByZXNvbHZlZCB0byBhbiBpbi1jbHVzdGVyL2xvY2FsXG4gKiBkZWZhdWx0IHRoYXQgQ29kZUJ1aWxkIGNhbid0IHJlYWNoLlxuICpcbiAqIFByZWZlcnMgYHB1bGxIb3N0YC9gcHVsbFBvcnRgICh0aGUgcHVibGljIGVuZHBvaW50IENvZGVCdWlsZCBjYW4gcmVzb2x2ZSkgYW5kXG4gKiBmYWxscyBiYWNrIHRvIGBob3N0YC9gcG9ydGAgZm9yIHNpbmdsZS1ob3N0IGRlcGxveXMuIHBpcGVsaW5lLW1hbmFnZXIgYmFrZXNcbiAqIHRoZSByaWdodCBwdWxsIGhvc3QgaW50byB0aGUgc3ludGggYXV0b21hdGljYWxseSBmcm9tIHRoZSBwbGF0Zm9ybSBVUkwgaXRcbiAqIGRlcGxveXMgYWdhaW5zdCAoYHByb3BzLnJlZ2lzdHJ5YCk7IHRoaXMgZ3VhcmQgY2F0Y2hlcyB0aGUgY2FzZSB3aGVyZSBuZWl0aGVyXG4gKiB0aGF0IG5vciBgSU1BR0VfUkVHSVNUUllfUFVMTF9IT1NUYC9gUExBVEZPUk1fQkFTRV9VUkxgIHdhcyBzdXBwbGllZC5cbiAqXG4gKiBFc2NhcGUgaGF0Y2g6IGBBTExPV19JTkNMVVNURVJfUFVMTF9IT1NUPXRydWVgIChlLmcuIENvZGVCdWlsZCBpbiBhIFZQQyB3aG9zZVxuICogcHJpdmF0ZSBETlMgZ2VudWluZWx5IHJlc29sdmVzIHRoZSBpbi1jbHVzdGVyIG5hbWUpLlxuICovXG5mdW5jdGlvbiByZXNvbHZlRXh0ZXJuYWxQdWxsVGFyZ2V0KFxuICByZWdpc3RyeTogeyBob3N0Pzogc3RyaW5nOyBwb3J0PzogbnVtYmVyOyBwdWxsSG9zdD86IHN0cmluZzsgcHVsbFBvcnQ/OiBudW1iZXIgfSxcbik6IHsgaG9zdDogc3RyaW5nOyBwb3J0UGFydDogc3RyaW5nIH0ge1xuICBjb25zdCBob3N0ID0gcmVnaXN0cnkucHVsbEhvc3QgfHwgcmVnaXN0cnkuaG9zdCB8fCAnJztcbiAgY29uc3QgcG9ydCA9IHJlZ2lzdHJ5LnB1bGxQb3J0ID8/IHJlZ2lzdHJ5LnBvcnQ7XG4gIGlmIChwcm9jZXNzLmVudi5BTExPV19JTkNMVVNURVJfUFVMTF9IT1NUICE9PSAndHJ1ZScgJiYgaXNVbnJlYWNoYWJsZVB1bGxIb3N0KGhvc3QpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFJlZ2lzdHJ5IHB1bGwgaG9zdCByZXNvbHZlZCB0byAnJHtob3N0fScsIHdoaWNoIEFXUyBDb2RlQnVpbGQgY2Fubm90IHJlYWNoIOKAlCBpdCBpcyB0aGUgYCArXG4gICAgICAnaW4tY2x1c3Rlci9sb2NhbCBkZWZhdWx0LiBUaGUgc3ludGhlc2l6ZWQgcGlwZWxpbmUgd291bGQgZmFpbCBhdCBidWlsZCB0aW1lIHdpdGggJyArXG4gICAgICAnQlVJTERfQ09OVEFJTkVSX1VOQUJMRV9UT19QVUxMX0lNQUdFLiBTZXQgdGhlIHBsYXRmb3JtXFwncyBwdWJsaWMgaG9zdCB2aWEgJyArXG4gICAgICAnSU1BR0VfUkVHSVNUUllfUFVMTF9IT1NUIG9yIFBMQVRGT1JNX0JBU0VfVVJMIGJlZm9yZSBkZXBsb3lpbmcg4oCUIHBpcGVsaW5lLW1hbmFnZXIgYmFrZXMgJyArXG4gICAgICAndGhpcyBpbiBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIHBsYXRmb3JtIFVSTCBpdCBkZXBsb3lzIGFnYWluc3QuICcgK1xuICAgICAgJ1NldCBBTExPV19JTkNMVVNURVJfUFVMTF9IT1NUPXRydWUgdG8gYnlwYXNzIChpbi1WUEMgcHJpdmF0ZSBETlMpLicsXG4gICAgKTtcbiAgfVxuICBjb25zdCBwb3J0UGFydCA9IHBvcnQgJiYgcG9ydCAhPT0gODAgJiYgcG9ydCAhPT0gNDQzID8gYDoke3BvcnR9YCA6ICcnO1xuICByZXR1cm4geyBob3N0LCBwb3J0UGFydCB9O1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIENvZGVCdWlsZCBpbWFnZSB0byB1c2UgZm9yIGEgcGx1Z2luLlxuICpcbiAqIFN0cmF0ZWd5OlxuICogICAxLiBJZiB0aGUgcGx1Z2luIHNldHMgYGF3czpjZGs6Y29kZWJ1aWxkOmJ1aWxkZW52aXJvbm1lbnQ6YnVpbGRJbWFnZWBcbiAqICAgICAgZXhwbGljaXRseSBpbiBtZXRhZGF0YSwgdGhlIG1ldGFkYXRhLWJ1aWxkZXIgcGFzc3Rocm91Z2ggaGFuZGxlcyBpdFxuICogICAgICAodmlhIGBtZXRhZGF0YUZvckJ1aWxkRW52aXJvbm1lbnRgKS4gVGhpcyBmdW5jdGlvbiByZXR1cm5zXG4gKiAgICAgIGB1bmRlZmluZWRgIGFuZCB0aGUgbWV0YWRhdGEgd2lucy5cbiAqICAgMi4gT3RoZXJ3aXNlLCBpZiB0aGUgcGx1Z2luIGhhcyBhIGBuYW1lYCtgdmVyc2lvbmAgQU5EIHRoZSByZWdpc3RyeVxuICogICAgICBjb25maWcgaXMgcG9wdWxhdGVkLCBidWlsZCBhIGBMaW51eEJ1aWxkSW1hZ2UuZnJvbURvY2tlclJlZ2lzdHJ5KClgXG4gKiAgICAgIGltYWdlIHBvaW50aW5nIGF0IGA8cmVnaXN0cnktaG9zdD46PHBvcnQ+Lzxucz4vPG5hbWU+QDxpbWFnZURpZ2VzdD5gXG4gKiAgICAgIHdoZXJlIGA8bnM+YCBpcyBgc3lzdGVtYCBvciBgb3JnLTxvcmdJZD5gLiBQaW5uZWQgQlkgRElHRVNUIOKAlCB0aGUgb25lXG4gKiAgICAgIHRoZSBwbHVnaW4gc2VydmljZSB2ZXJpZmllZCBhZ2FpbnN0IGl0cyBzaWduaW5nIGtleSBiZWZvcmUgcmV0dXJuaW5nXG4gKiAgICAgIHRoaXMgcmVjb3JkIOKAlCBuZXZlciBieSB0aGUgbXV0YWJsZSBgOjx2ZXJzaW9uPmAgdGFnLCB3aGljaCBhbnlvbmVcbiAqICAgICAgaG9sZGluZyB0aGUgb3JnJ3MgcmVnaXN0cnkgcHVzaCBjcmVkZW50aWFsIGNvdWxkIHJlLXBvaW50LiBBIHBsdWdpblxuICogICAgICB0aGF0IG5lZWRzIGFuIGltYWdlIGJ1dCBjYXJyaWVzIG5vIGRpZ2VzdCBpcyByZWZ1c2VkICh0aHJvd3MpOiBydW5uaW5nXG4gKiAgICAgIGFuIHVudmVyaWZpZWQgaW1hZ2UgaXMgd29yc2UgdGhhbiBhIGZhaWxlZCBzeW50aC4gQ29kZUJ1aWxkIGF1dGhlbnRpY2F0ZXMgYnlcbiAqICAgICAgc2VuZGluZyB0aGUgcGVyLW9yZyBwbGF0Zm9ybSBTZWNyZXQgYXMgQmFzaWMgYXV0aCB0b1xuICogICAgICBgcGlwZWxpbmUtaW1hZ2UtcmVnaXN0cnlgJ3MgYC90b2tlbmAgZW5kcG9pbnQ7IHRoZSBKV1QgaW4gYHBhc3N3b3JkYFxuICogICAgICByZXNvbHZlcyB0byBhIHJlZ2lzdHJ5IHRva2VuIHNjb3BlZCB0byB0aGUgb3JnLlxuICogICAzLiBJZiBgbWV0YWRhdGFfb25seWAsIHJldHVybiBgdW5kZWZpbmVkYCBzbyBDb2RlQnVpbGQgdXNlcyBpdHMgZGVmYXVsdFxuICogICAgICAoYHN0YW5kYXJkOjcuMGApLlxuICpcbiAqIGBzY29wZWAgYW5kIGBvcmdJZGAgYXJlIHJlcXVpcmVkOiB0aGUgcGVyLW9yZyBwbGF0Zm9ybSBTZWNyZXQgaXMgbmFtZWRcbiAqIGBwaXBlbGluZS1idWlsZGVyLzxvcmdJZD4vcGxhdGZvcm1gLCBhbmQgYFNlY3JldC5mcm9tU2VjcmV0TmFtZVYyKClgXG4gKiBuZWVkcyBhIENvbnN0cnVjdCB0byBhbmNob3IgdGhlIGltcG9ydGVkIHNlY3JldCB0by5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQbHVnaW5JbWFnZShzY29wZTogQ29uc3RydWN0IHwgdW5kZWZpbmVkLCBwbHVnaW46IFBsdWdpbiwgb3JnSWQ/OiBzdHJpbmcpOiBJQnVpbGRJbWFnZSB8IHVuZGVmaW5lZCB7XG4gIC8vIGBtZXRhZGF0YV9vbmx5YCBwbHVnaW5zIGxlZ2l0aW1hdGVseSBoYXZlIG5vIGltYWdlIOKAlCB0aGVpciB3b3JrIHJ1bnNcbiAgLy8gaW4gdGhlIGRlZmF1bHQgQ29kZUJ1aWxkIGltYWdlLiBRdWlldCBza2lwLlxuICBpZiAocGx1Z2luLmJ1aWxkVHlwZSA9PT0gJ21ldGFkYXRhX29ubHknKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIC8vIGJ1aWxkX2ltYWdlIC8gcHJlYnVpbHQgcGx1Z2lucyBtdXN0IGhhdmUgbmFtZSArIHZlcnNpb24gKERCIGNvbnN0cmFpbnRcbiAgLy8gbWFrZXMgYm90aCBOT1QgTlVMTCkuIERlZmVuc2l2ZSBjaGVjayBpbiBjYXNlIGEgbWFsZm9ybWVkIHJvdyBzbGlwcyBpbi5cbiAgaWYgKCFwbHVnaW4ubmFtZSB8fCAhcGx1Z2luLnZlcnNpb24pIHtcbiAgICBsb2cud2FybihcbiAgICAgIGBQbHVnaW4gXCIke3BsdWdpbi5uYW1lfVwiIGhhcyBidWlsZFR5cGU9JHtwbHVnaW4uYnVpbGRUeXBlfSBidXQgbWlzc2luZyBuYW1lL3ZlcnNpb24g4oCUIGAgK1xuICAgICAgJ0NvZGVCdWlsZCB3aWxsIHJ1biBvbiBhd3MvY29kZWJ1aWxkL3N0YW5kYXJkOjguMCBhbmQgd29uXFwndCBoYXZlIHRoZSBwbHVnaW5cXCdzIGJha2VkIHRvb2xzLicsXG4gICAgKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLy8gTm8gZGlnZXN0IOKHkiB0aGUgcGx1Z2luIHNlcnZpY2UgbmV2ZXIgc2lnbmVkIGFuIGltYWdlIGZvciB0aGlzIHJvdyAob3IgdGhlXG4gIC8vIHJlY29yZCBkaWRuJ3QgY29tZSBmcm9tIGAvcGx1Z2lucy9sb29rdXBgKS4gRmFpbCB0aGUgc3ludGggcmF0aGVyIHRoYW4gZmFsbFxuICAvLyBiYWNrIHRvIHRoZSB0YWcuXG4gIGlmICghcGx1Z2luLmltYWdlRGlnZXN0IHx8ICEvXnNoYTI1NjpbMC05YS1mXXs2NH0kLy50ZXN0KHBsdWdpbi5pbWFnZURpZ2VzdCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgUGx1Z2luIFwiJHtwbHVnaW4ubmFtZX06JHtwbHVnaW4udmVyc2lvbn1cIiBoYXMgYnVpbGRUeXBlPSR7cGx1Z2luLmJ1aWxkVHlwZX0gYnV0IG5vIHNpZ25lZCBpbWFnZSBkaWdlc3QuIGAgK1xuICAgICAgJ1JlYnVpbGQgdGhlIHBsdWdpbiAocmUtdXBsb2FkIGl0KSBzbyB0aGUgcGxhdGZvcm0gY2FuIGJ1aWxkLCBzaWduIGFuZCByZWNvcmQgaXRzIGltYWdlLicsXG4gICAgKTtcbiAgfVxuXG4gIC8vIFRoZSByZXBvc2l0b3J5IGNvbWVzIGZyb20gbG9va3VwOiBgcHVibGljLzxwdWJsaXNoZXI+LzxuYW1lPmAgZm9yIGFcbiAgLy8gbGlzdGVkIHBsdWdpbiAodGhlIHJlYWQtb25seSBjb3B5IGV2ZXJ5IG9yZyBtYXkgcHVsbCksIGBvcmctPGlkPi88bmFtZT5gXG4gIC8vIGZvciB0aGUgb3JnJ3Mgb3duLiBOZXZlciBkZXJpdmVkIGhlcmUgZnJvbSB0aGUgcmVjb3JkJ3Mgb3duZXIg4oCUIGEgbGlzdGluZydzXG4gIC8vIGltYWdlIGRvZXNuJ3QgbGl2ZSBpbiBpdHMgcHVibGlzaGVyJ3MgbmFtZXNwYWNlLlxuICBjb25zdCByZXBvc2l0b3J5ID0gKHBsdWdpbiBhcyBQbHVnaW4gJiB7IGltYWdlUmVwb3NpdG9yeT86IHN0cmluZyB8IG51bGwgfSkuaW1hZ2VSZXBvc2l0b3J5O1xuICBpZiAoIXJlcG9zaXRvcnkgfHwgIVBMVUdJTl9JTUFHRV9SRVBPU0lUT1JZX1JFLnRlc3QocmVwb3NpdG9yeSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgUGx1Z2luIFwiJHtwbHVnaW4ubmFtZX06JHtwbHVnaW4udmVyc2lvbn1cIiBoYXMgbm8gaW1hZ2UgcmVwb3NpdG9yeSBmcm9tIHRoZSBwbHVnaW4gbG9va3VwLiBgICtcbiAgICAgICdSZXNvbHZlIHBsdWdpbnMgdGhyb3VnaCB0aGUgcGxhdGZvcm0gKGBwaXBlbGluZS1tYW5hZ2VyIHBpcGVsaW5lIHN5bnRoYCAvIHRoZSBsb29rdXAgY3VzdG9tIHJlc291cmNlKS4nLFxuICAgICk7XG4gIH1cblxuICBsZXQgcmVnaXN0cnk7XG4gIHRyeSB7XG4gICAgcmVnaXN0cnkgPSBDb25maWcuZ2V0KCdyZWdpc3RyeScpO1xuICB9IGNhdGNoIHtcbiAgICAvLyBDb25maWcgbmFtZXNwYWNlIG5vdCBsb2FkZWQgKGUuZy4sIHVuaXQgdGVzdHMgd2l0aG91dCBmdWxsIGNvbmZpZykuXG4gICAgbG9nLndhcm4oXG4gICAgICBgUGx1Z2luIFwiJHtwbHVnaW4ubmFtZX06JHtwbHVnaW4udmVyc2lvbn1cIiBuZWVkcyB0aGUgcmVnaXN0cnkgY29uZmlnIGJ1dCBpdCdzIG5vdCBsb2FkZWQg4oCUIGAgK1xuICAgICAgJ0NvZGVCdWlsZCB3aWxsIGZhbGwgYmFjayB0byBhd3MvY29kZWJ1aWxkL3N0YW5kYXJkOjguMC4gJyArXG4gICAgICAnU2V0IElNQUdFX1JFR0lTVFJZX0hPU1QgKyBJTUFHRV9SRUdJU1RSWV9QT1JUIGluIHBpcGVsaW5lLW1hbmFnZXJcXCdzIGVudmlyb25tZW50LicsXG4gICAgKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKCFyZWdpc3RyeT8uaG9zdCkge1xuICAgIGxvZy53YXJuKFxuICAgICAgYFBsdWdpbiBcIiR7cGx1Z2luLm5hbWV9OiR7cGx1Z2luLnZlcnNpb259XCIgbmVlZHMgSU1BR0VfUkVHSVNUUllfSE9TVCBidXQgaXQncyBlbXB0eSDigJQgYCArXG4gICAgICAnQ29kZUJ1aWxkIHdpbGwgZmFsbCBiYWNrIHRvIGF3cy9jb2RlYnVpbGQvc3RhbmRhcmQ6OC4wLiAnICtcbiAgICAgICdTZXQgSU1BR0VfUkVHSVNUUllfSE9TVCBpbiBwaXBlbGluZS1tYW5hZ2VyXFwncyBlbnZpcm9ubWVudCB0byB1c2UgdGhlIHBsdWdpbiBpbWFnZS4nLFxuICAgICk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBpZiAoIXNjb3BlKSB7XG4gICAgbG9nLndhcm4oYFBsdWdpbiBcIiR7cGx1Z2luLm5hbWV9XCIgaW1hZ2UgcmVzb2x1dGlvbiBza2lwcGVkOiBubyBjb25zdHJ1Y3Qgc2NvcGUgcHJvdmlkZWRgKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLy8gUGVyLW9yZyBhdXRoIHJlcXVpcmVzIG9yZ0lkIOKAlCB0aGUgU2VjcmV0IGlzIG5hbWVkIHBlciBvcmcuXG4gIGlmICghb3JnSWQpIHtcbiAgICBsb2cud2FybihcbiAgICAgIGBQbHVnaW4gXCIke3BsdWdpbi5uYW1lfVwiIGltYWdlIHJlc29sdXRpb24gc2tpcHBlZDogb3JnSWQgaXMgcmVxdWlyZWQgdG8gYCArXG4gICAgICAncmVzb2x2ZSB0aGUgcGVyLW9yZyBwbGF0Zm9ybSBTZWNyZXQgdXNlZCBmb3IgQ29kZUJ1aWxkIEJhc2ljIGF1dGguJyxcbiAgICApO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyBDb21wb3NlIHRoZSBpbWFnZSBVUkkgZnJvbSB0aGUgbG9va3VwJ3MgcmVwb3NpdG9yeSwgcGlubmVkIGJ5IGRpZ2VzdC5cbiAgLy8gVGhlIHRva2VuIHNlcnZpY2UgZ3JhbnRzIHB1bGwgb24gYHB1YmxpYy8qYCB0byBldmVyeSBhdXRoZW50aWNhdGVkXG4gIC8vIGlkZW50aXR5IGFuZCBvbiBgb3JnLTxpZD4vKmAgdG8gdGhhdCBvcmcgKGFuZCBpdHMgdGVhbXMpLlxuICAvLyBVc2UgdGhlIGV4dGVybmFsIHB1bGwgaG9zdC9wb3J0OiB0aGlzIGltYWdlIFVSSSBpcyBjb25zdW1lZCBieSBBV1NcbiAgLy8gQ29kZUJ1aWxkIChvdXQtb2YtY2x1c3RlciksIHdoaWNoIGNhbid0IHJlc29sdmUgdGhlIGluLWNsdXN0ZXJcbiAgLy8gYHJlZ2lzdHJ5OjUwMDBgIENsdXN0ZXJJUC4gRmFsbCBiYWNrIHRvIGBob3N0YC9gcG9ydGAgZm9yIHNpbmdsZS1ob3N0IC9cbiAgLy8gaW4tY2x1c3Rlci1vbmx5IGRlcGxveXMgd2hlcmUgbm8gc2VwYXJhdGUgcHVsbCBob3N0IGlzIGNvbmZpZ3VyZWQuXG4gIGNvbnN0IHsgaG9zdDogcHVsbEhvc3QsIHBvcnRQYXJ0IH0gPSByZXNvbHZlRXh0ZXJuYWxQdWxsVGFyZ2V0KHJlZ2lzdHJ5KTtcbiAgY29uc3QgaW1hZ2VVcmkgPSBgJHtwdWxsSG9zdH0ke3BvcnRQYXJ0fS8ke3JlcG9zaXRvcnl9QCR7cGx1Z2luLmltYWdlRGlnZXN0fWA7XG5cbiAgLy8gQ29kZUJ1aWxkIHJlYWRzIGBwaXBlbGluZS1idWlsZGVyLzxvcmdJZD4vcmVnaXN0cnktcHVzaGAgYW5kIHNlbmRzIGl0c1xuICAvLyBgdXNlcm5hbWVgL2BwYXNzd29yZGAgZmllbGRzIGFzIEhUVFAgQmFzaWMgdG8gdGhlIHJlZ2lzdHJ5LiBUaGUgcmVnaXN0cnlcbiAgLy8gY2hhbGxlbmdlcyB3aXRoIGEgQmVhcmVyIHJlYWxtIHBvaW50aW5nIGF0IHBpcGVsaW5lLWltYWdlLXJlZ2lzdHJ5J3NcbiAgLy8gYC90b2tlbmAgZW5kcG9pbnQ7IHRoZSBEb2NrZXIgY2xpZW50IGZvcndhcmRzIHRob3NlIGNyZWRzLCBpbWFnZS1yZWdpc3RyeVxuICAvLyBleGNoYW5nZXMgdGhlIG9wYXF1ZSBgcGJfc2Ff4oCmYCBrZXkgZm9yIGEgc2hvcnQtbGl2ZWQgdG9rZW4sIGFuZCBhIHJlZ2lzdHJ5XG4gIC8vIHRva2VuIHNjb3BlZCB0byB0aGUgb3JnIGlzIGlzc3VlZC5cbiAgLy9cbiAgLy8gVGhpcyBpcyB0aGUgUkVHSVNUUlktT05MWSBjcmVkZW50aWFsLCBub3QgdGhlIG9yZydzIGZ1bGwtcHJpdmlsZWdlXG4gIC8vIHBsYXRmb3JtIG9uZTogaXRzIGV4Y2hhbmdlZCB0b2tlbiBjYXJyaWVzIHRoZSBzaW5nbGUgYHJlZ2lzdHJ5OnB1c2hgIHNjb3BlXG4gIC8vIGFuZCBubyBBUEkgcGVybWlzc2lvbnMgYXQgYWxsLCBzbyBhIENvZGVCdWlsZCBqb2IgdGhhdCBsZWFrcyBpdCBjYW4gbW92ZVxuICAvLyBpbWFnZXMgaW5zaWRlIHRoaXMgb3JnJ3MgbmFtZXNwYWNlIGFuZCBub3RoaW5nIGVsc2UuIFRoZSBwbHVnaW4tbG9va3VwXG4gIC8vIExhbWJkYSBrZWVwcyByZWFkaW5nIGAuLi4vcGxhdGZvcm1gIOKAlCBpdCBjYWxscyB0aGUgb3JkaW5hcnkgQVBJLCB3aGljaCBub1xuICAvLyBzaW5nbGUgc2NvcGUgY292ZXJzLlxuICAvLyBQcm92aXNpb24gaXQgd2l0aDogcGlwZWxpbmUtbWFuYWdlciBpbmZyYSBzdG9yZS10b2tlbiAtLXNjb3BlIHJlZ2lzdHJ5OnB1c2hcbiAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZihzY29wZSk7XG4gIGNvbnN0IHNlY3JldE5hbWUgPSBDb3JlQ29uc3RhbnRzLnNlY3JldFBhdGgob3JnSWQsIFJFR0lTVFJZX0NSRURFTlRJQUxfU0VDUkVUKTtcbiAgLy8gQ0RLIGNvbnN0cnVjdCBJRHMgYWxsb3cgb25seSBbQS1aYS16MC05Xy1dOyBzYW5pdGl6ZSB0aGUgc2VjcmV0IG5hbWUuXG4gIGNvbnN0IHNlY3JldENvbnN0cnVjdElkID0gYFJlZ2lzdHJ5Q3JlZHNfJHtzZWNyZXROYW1lLnJlcGxhY2UoL1teQS1aYS16MC05Xy1dL2csICdfJyl9YDtcbiAgY29uc3QgY3JlZGVudGlhbHNTZWNyZXQgPSAoc3RhY2subm9kZS50cnlGaW5kQ2hpbGQoc2VjcmV0Q29uc3RydWN0SWQpIGFzIFNlY3JldCB8IHVuZGVmaW5lZClcbiAgICA/PyBTZWNyZXQuZnJvbVNlY3JldE5hbWVWMihzdGFjaywgc2VjcmV0Q29uc3RydWN0SWQsIHNlY3JldE5hbWUpO1xuXG4gIHJldHVybiBMaW51eEJ1aWxkSW1hZ2UuZnJvbURvY2tlclJlZ2lzdHJ5KGltYWdlVXJpLCB7XG4gICAgc2VjcmV0c01hbmFnZXJDcmVkZW50aWFsczogY3JlZGVudGlhbHNTZWNyZXQsXG4gIH0pO1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIGZhbGxiYWNrIENvZGVCdWlsZCBpbWFnZSBmb3Igc3RlcHMgd2l0aG91dCBhIHBsdWdpbi1iYWtlZCBvbmUuXG4gKlxuICogUmVhZHMgYGF3cy5jb2RlQnVpbGQuZGVmYXVsdEltYWdlYCAoZW52OiBgQ09ERUJVSUxEX0RFRkFVTFRfSU1BR0VgKS5cbiAqIERlZmF1bHQ6IGBwaXBlbGluZS1ib290c3RyYXA6MS4wYCDigJQgdGhlIGxvY2FsIHRhZyBidWlsdCBieVxuICogYGRlcGxveS9jb2RlYnVpbGQvYm9vdHN0cmFwL0RvY2tlcmZpbGVgLiBQaW5uZWQgYnlcbiAqIGBhd3MuY29kZUJ1aWxkLmRlZmF1bHRJbWFnZURpZ2VzdGAgKGVudjogYENPREVCVUlMRF9ERUZBVUxUX0lNQUdFX0RJR0VTVGApXG4gKiB3aGVuIHNldCwgdGhlIHNhbWUgd2F5IHBsdWdpbiBpbWFnZXMgYXJlIHBpbm5lZCBieSB0aGVpciBzaWduZWQgZGlnZXN0LlxuICpcbiAqIC0gQVdTIGN1cmF0ZWQgaW1hZ2UgKGBhd3MvY29kZWJ1aWxkLypgKTogdXNlIHRoZSBtYXRjaGluZyBgTGludXhCdWlsZEltYWdlYFxuICogICBjb25zdGFudCBzbyBDREsgZW1pdHMgYGltYWdlUHVsbENyZWRlbnRpYWxzVHlwZTogQ09ERUJVSUxEYC4gVXNpbmdcbiAqICAgYGZyb21Eb2NrZXJSZWdpc3RyeSgpYCBoZXJlIHdvdWxkIHNldCBTRVJWSUNFX1JPTEUgY3JlZGVudGlhbHMsIHdoaWNoXG4gKiAgIENGTiByZWplY3RzIHdpdGggXCJjYW5ub3QgdXNlIGEgQ29kZUJ1aWxkIGN1cmF0ZWQgaW1hZ2Ugd2l0aFxuICogICBpbWFnZVB1bGxDcmVkZW50aWFsc1R5cGUgU0VSVklDRV9ST0xFXCIuXG4gKiAtIEJhcmUgdGFnIChubyBgL2ApOiBhdXRvLXByZWZpeGVkIHRvXG4gKiAgIGA8cmVnaXN0cnktaG9zdD46PHBvcnQ+L2xpYnJhcnkvPHRhZz5gIHVzaW5nIHRoZSByZWdpc3RyeSBjb25maWcsXG4gKiAgIHdpdGggdGhlIHBlci1vcmcgcGxhdGZvcm0gU2VjcmV0IGFzIEJhc2ljIGF1dGgg4oCUIHNhbWUgcGF0aFxuICogICBgcmVzb2x2ZVBsdWdpbkltYWdlKClgIHVzZXMgZm9yIHBsdWdpbiBpbWFnZXMuIE5lZWRzIGBzY29wZWAgKyBgb3JnSWRgLlxuICogLSBGdWxseS1xdWFsaWZpZWQgcmVnaXN0cnkgVVJJIChjb250YWlucyBgL2ApOiB1c2VkIGFzLWlzLCBubyBhdXRoIHdpcmVkLlxuICogLSBNaXNzaW5nIHJlZ2lzdHJ5IGNvbmZpZyBvciBzY29wZS9vcmdJZCDihpIgZmFsbHMgYmFjayB0b1xuICogICBgYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo4LjBgIChhcyBhIENVUkFURUQgaW1hZ2UsIHNlZSBhYm92ZSksIHdpdGggYVxuICogICB3YXJuaW5nIHNvIHN5bnRoIGRlZ3JhZGVzIGdyYWNlZnVsbHkgb24gcGFydGlhbGx5IGNvbmZpZ3VyZWQgZW52cy5cbiAqL1xuY29uc3QgU1RBTkRBUkRfOF8wID0gJ2F3cy9jb2RlYnVpbGQvc3RhbmRhcmQ6OC4wJztcblxuLyoqXG4gKiBhd3MtY2RrLWxpYiAyLjI1OCBoYXMgbm8gYExpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF84XzBgIHN0YXRpYyB5ZXQsIHNvIHRoZVxuICogY3VyYXRlZCA4LjAgZmFsbGJhY2sgcmVzb2x2ZXMgdmlhIGBmcm9tQ29kZUJ1aWxkSW1hZ2VJZGAgKHN0aWxsIENPREVCVUlMRCBjcmVkcykuXG4gKi9cbmNvbnN0IGZhbGxiYWNrQnVpbGRJbWFnZSA9ICgpOiBJQnVpbGRJbWFnZSA9PiBMaW51eEJ1aWxkSW1hZ2UuZnJvbUNvZGVCdWlsZEltYWdlSWQoU1RBTkRBUkRfOF8wKTtcblxuLyoqXG4gKiBNYXAgQVdTIGN1cmF0ZWQgYGF3cy9jb2RlYnVpbGQvKmAgaW1hZ2Ugc3RyaW5ncyB0byB0aGUgbWF0Y2hpbmdcbiAqIGBMaW51eEJ1aWxkSW1hZ2VgIHN0YXRpYy4gRXh0ZW5kIHdoZW4gbmV3ZXIgc3RhbmRhcmQgaW1hZ2VzIHNoaXAuXG4gKiBSZXR1cm5zIGB1bmRlZmluZWRgIGZvciBub24tY3VyYXRlZCBzdHJpbmdzIOKAlCBjYWxsZXIgc2hvdWxkIHVzZVxuICogYGZyb21Eb2NrZXJSZWdpc3RyeSgpYCBmb3IgdGhvc2UuXG4gKi9cbmZ1bmN0aW9uIGN1cmF0ZWRMaW51eEJ1aWxkSW1hZ2UoaW1hZ2VJZDogc3RyaW5nKTogSUJ1aWxkSW1hZ2UgfCB1bmRlZmluZWQge1xuICBpZiAoIWltYWdlSWQuc3RhcnRzV2l0aCgnYXdzL2NvZGVidWlsZC8nKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgc3dpdGNoIChpbWFnZUlkKSB7XG4gICAgY2FzZSAnYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo2LjAnOiByZXR1cm4gTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzZfMDtcbiAgICBjYXNlICdhd3MvY29kZWJ1aWxkL3N0YW5kYXJkOjUuMCc6IHJldHVybiBMaW51eEJ1aWxkSW1hZ2UuU1RBTkRBUkRfNV8wO1xuICAgIC8vIE5ld2VyIGNvZGVuYW1lZCBpbWFnZXMgcm91dGUgdGhyb3VnaCBmcm9tQ29kZUJ1aWxkSW1hZ2VJZCwgd2hpY2hcbiAgICAvLyBDREsgYWxzbyBtYXJrcyBhcyBDT0RFQlVJTEQgY3JlZGVudGlhbHMgKGN1cmF0ZWQpLlxuICAgIGRlZmF1bHQ6IHJldHVybiBMaW51eEJ1aWxkSW1hZ2UuZnJvbUNvZGVCdWlsZEltYWdlSWQoaW1hZ2VJZCk7XG4gIH1cbn1cblxuLyoqIEEgcmVnaXN0cnkgbWFuaWZlc3QgZGlnZXN0IGFzIENvZGVCdWlsZCBhY2NlcHRzIGl0IGluIGFuIGltYWdlIHJlZmVyZW5jZS4gKi9cbmNvbnN0IElNQUdFX0RJR0VTVF9SRSA9IC9ec2hhMjU2OlswLTlhLWZdezY0fSQvO1xuXG4vKipcbiAqIFB1bGwgcmVmZXJlbmNlIGZvciB0aGUgY29uZmlndXJlZCBkZWZhdWx0IGltYWdlJ3MgYmFyZSBgPHJlcG8+Ojx0YWc+YDpcbiAqIGA8cmVwbz5APGRpZ2VzdD5gIHdoZW4gdGhlIGJvb3RzdHJhcCBkaWdlc3QgaXMgY29uZmlndXJlZCwgZWxzZSB0aGUgdGFnXG4gKiBpdHNlbGYgd2l0aCBhIGxvdWQgd2FybmluZy4gQSBkaWdlc3QgdGhhdCBpcyBzZXQgYnV0IG1hbGZvcm1lZCBmYWlscyB0aGVcbiAqIHN5bnRoIOKAlCBpdCBpcyBhIHR5cG8sIGFuZCBzaWxlbnRseSBmYWxsaW5nIGJhY2sgdG8gdGhlIHRhZyB3b3VsZCBoaWRlIGl0LlxuICovXG5mdW5jdGlvbiBwaW5uZWREZWZhdWx0SW1hZ2VSZWYoY29uZmlndXJlZDogc3RyaW5nLCBkaWdlc3Q6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghZGlnZXN0KSB7XG4gICAgbG9nLndhcm4oXG4gICAgICBgQ09ERUJVSUxEX0RFRkFVTFRfSU1BR0U9JyR7Y29uZmlndXJlZH0nIGlzIHB1bGxlZCBieSBpdHMgTVVUQUJMRSB0YWcg4oCUIENPREVCVUlMRF9ERUZBVUxUX0lNQUdFX0RJR0VTVCBpcyBub3Qgc2V0LiBgICtcbiAgICAgICdBbnlvbmUgaG9sZGluZyBhIHJlZ2lzdHJ5IHB1c2ggY3JlZGVudGlhbCBmb3IgbGlicmFyeS8gY291bGQgcmUtcG9pbnQgaXQuIFNldCBDT0RFQlVJTERfREVGQVVMVF9JTUFHRV9ESUdFU1QgJyArXG4gICAgICAndG8gdGhlIGRpZ2VzdCBkZXBsb3kvYmluL2J1aWxkLWNvZGVidWlsZC1ib290c3RyYXAuc2ggcHJpbnRzIGFmdGVyIHB1Ymxpc2hpbmcuJyxcbiAgICApO1xuICAgIHJldHVybiBjb25maWd1cmVkO1xuICB9XG4gIGlmICghSU1BR0VfRElHRVNUX1JFLnRlc3QoZGlnZXN0KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ09ERUJVSUxEX0RFRkFVTFRfSU1BR0VfRElHRVNUPScke2RpZ2VzdH0nIGlzIG5vdCBhIHNoYTI1NiBtYW5pZmVzdCBkaWdlc3QgKHNoYTI1Njo8NjQgaGV4PikuYCk7XG4gIH1cbiAgY29uc3QgcmVwbyA9IGNvbmZpZ3VyZWQucmVwbGFjZSgvQC4qJC8sICcnKS5yZXBsYWNlKC86W146L10rJC8sICcnKTtcbiAgcmV0dXJuIGAke3JlcG99QCR7ZGlnZXN0fWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRGVmYXVsdEJ1aWxkSW1hZ2Uoc2NvcGU/OiBDb25zdHJ1Y3QsIG9yZ0lkPzogc3RyaW5nKTogSUJ1aWxkSW1hZ2Uge1xuICBsZXQgY29uZmlndXJlZDogc3RyaW5nO1xuICBsZXQgZGlnZXN0ID0gJyc7XG4gIHRyeSB7XG4gICAgY29uc3QgY29kZUJ1aWxkID0gQ29uZmlnLmdldCgnYXdzJykuY29kZUJ1aWxkO1xuICAgIGNvbmZpZ3VyZWQgPSBjb2RlQnVpbGQuZGVmYXVsdEltYWdlO1xuICAgIGRpZ2VzdCA9IGNvZGVCdWlsZC5kZWZhdWx0SW1hZ2VEaWdlc3Q7XG4gIH0gY2F0Y2gge1xuICAgIGNvbmZpZ3VyZWQgPSBTVEFOREFSRF84XzA7XG4gIH1cblxuICAvLyBBV1MgY3VyYXRlZCBpbWFnZSDihpIgQ09ERUJVSUxEIGNyZWRlbnRpYWxzLiBNVVNUIGdvIHRocm91Z2ggdGhlXG4gIC8vIExpbnV4QnVpbGRJbWFnZSBjb25zdGFudHMsIG5vdCBmcm9tRG9ja2VyUmVnaXN0cnkoKS5cbiAgY29uc3QgY3VyYXRlZCA9IGN1cmF0ZWRMaW51eEJ1aWxkSW1hZ2UoY29uZmlndXJlZCk7XG4gIGlmIChjdXJhdGVkKSByZXR1cm4gY3VyYXRlZDtcblxuICAvLyBGdWxseS1xdWFsaWZpZWQgVVJJIOKAlCBvcGVyYXRvciBvd25zIGl0LiBObyByZWdpc3RyeS9TZWNyZXQgd2lyaW5nLiBBblxuICAvLyBvcGVyYXRvci1zdXBwbGllZCBkaWdlc3QgaXMgaG9ub3VyZWQ7IGEgdGFnLW9ubHkgVVJJIGlzIHdhcm5lZCBhYm91dC5cbiAgaWYgKGNvbmZpZ3VyZWQuaW5jbHVkZXMoJy8nKSkge1xuICAgIHJldHVybiBMaW51eEJ1aWxkSW1hZ2UuZnJvbURvY2tlclJlZ2lzdHJ5KFxuICAgICAgY29uZmlndXJlZC5pbmNsdWRlcygnQHNoYTI1NjonKSA/IGNvbmZpZ3VyZWQgOiBwaW5uZWREZWZhdWx0SW1hZ2VSZWYoY29uZmlndXJlZCwgZGlnZXN0KSxcbiAgICApO1xuICB9XG5cbiAgLy8gQmFyZSB0YWcg4oaSIGF1dG8tcHJlZml4IHdpdGggdGhlIHBsYXRmb3JtIHJlZ2lzdHJ5LCBtaXJyb3JpbmdcbiAgLy8gcmVzb2x2ZVBsdWdpbkltYWdlKCkuIEJhaWwgdG8gdGhlIGN1cmF0ZWQgc3RhbmRhcmQ6OC4wIGZhbGxiYWNrXG4gIC8vICh3aXRoIGEgd2FybmluZykgYXQgZWFjaCBtaXNzaW5nIHByZXJlcXVpc2l0ZSBzbyBzeW50aCBkZWdyYWRlc1xuICAvLyBncmFjZWZ1bGx5IG9uIHBhcnRpYWxseSBjb25maWd1cmVkIGVudmlyb25tZW50cyBpbnN0ZWFkIG9mIGZhaWxpbmcuXG4gIGxldCByZWdpc3RyeTtcbiAgdHJ5IHtcbiAgICByZWdpc3RyeSA9IENvbmZpZy5nZXQoJ3JlZ2lzdHJ5Jyk7XG4gIH0gY2F0Y2gge1xuICAgIGxvZy53YXJuKFxuICAgICAgYENPREVCVUlMRF9ERUZBVUxUX0lNQUdFPScke2NvbmZpZ3VyZWR9JyBpcyBhIGJhcmUgdGFnIGJ1dCByZWdpc3RyeSBjb25maWcgbm90IGxvYWRlZCDigJQgYCArXG4gICAgICBgZmFsbGluZyBiYWNrIHRvICR7U1RBTkRBUkRfOF8wfS4gU2V0IElNQUdFX1JFR0lTVFJZX0hPU1QgKyBJTUFHRV9SRUdJU1RSWV9QT1JULmAsXG4gICAgKTtcbiAgICByZXR1cm4gZmFsbGJhY2tCdWlsZEltYWdlKCk7XG4gIH1cbiAgaWYgKCFyZWdpc3RyeT8uaG9zdCkge1xuICAgIGxvZy53YXJuKFxuICAgICAgYENPREVCVUlMRF9ERUZBVUxUX0lNQUdFPScke2NvbmZpZ3VyZWR9JyBpcyBhIGJhcmUgdGFnIGJ1dCBJTUFHRV9SRUdJU1RSWV9IT1NUIGlzIGVtcHR5IOKAlCBgICtcbiAgICAgIGBmYWxsaW5nIGJhY2sgdG8gJHtTVEFOREFSRF84XzB9LmAsXG4gICAgKTtcbiAgICByZXR1cm4gZmFsbGJhY2tCdWlsZEltYWdlKCk7XG4gIH1cbiAgaWYgKCFzY29wZSB8fCAhb3JnSWQpIHtcbiAgICBsb2cud2FybihcbiAgICAgIGBDT0RFQlVJTERfREVGQVVMVF9JTUFHRT0nJHtjb25maWd1cmVkfScgbmVlZHMgc2NvcGUrb3JnSWQgZm9yIFNlY3JldCBhdXRoIOKAlCBgICtcbiAgICAgIGBmYWxsaW5nIGJhY2sgdG8gJHtTVEFOREFSRF84XzB9LiAoQ2FsbGVyIGRpZCBub3Qgc3VwcGx5IHRoZW0uKWAsXG4gICAgKTtcbiAgICByZXR1cm4gZmFsbGJhY2tCdWlsZEltYWdlKCk7XG4gIH1cblxuICAvLyBVc2UgdGhlIGV4dGVybmFsIHB1bGwgaG9zdC9wb3J0IChub3QgdGhlIGluLWNsdXN0ZXIgaG9zdCkg4oCUIHRoaXMgVVJJIGlzXG4gIC8vIGNvbnN1bWVkIGJ5IEFXUyBDb2RlQnVpbGQsIHdoaWNoIGNhbid0IHJlc29sdmUgdGhlIGByZWdpc3RyeTo1MDAwYCBDbHVzdGVySVAuXG4gIGNvbnN0IHsgaG9zdDogcHVsbEhvc3QsIHBvcnRQYXJ0IH0gPSByZXNvbHZlRXh0ZXJuYWxQdWxsVGFyZ2V0KHJlZ2lzdHJ5KTtcbiAgY29uc3QgaW1hZ2VVcmkgPSBgJHtwdWxsSG9zdH0ke3BvcnRQYXJ0fS9saWJyYXJ5LyR7cGlubmVkRGVmYXVsdEltYWdlUmVmKGNvbmZpZ3VyZWQsIGRpZ2VzdCl9YDtcblxuICAvLyBTYW1lIFNlY3JldCBhcyByZXNvbHZlUGx1Z2luSW1hZ2Ug4oCUIHRoZSBwZXItb3JnIFJFR0lTVFJZIGNyZWRlbnRpYWwsIHdoaWNoXG4gIC8vIENvZGVCdWlsZCBzZW5kcyBhcyBCYXNpYyBhdXRoIGFuZCBpbWFnZS1yZWdpc3RyeSBleGNoYW5nZXMgZm9yIGEgc2NvcGVkIHRva2VuLlxuICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcbiAgY29uc3Qgc2VjcmV0TmFtZSA9IENvcmVDb25zdGFudHMuc2VjcmV0UGF0aChvcmdJZCwgUkVHSVNUUllfQ1JFREVOVElBTF9TRUNSRVQpO1xuICBjb25zdCBzZWNyZXRDb25zdHJ1Y3RJZCA9IGBSZWdpc3RyeUNyZWRzXyR7c2VjcmV0TmFtZS5yZXBsYWNlKC9bXkEtWmEtejAtOV8tXS9nLCAnXycpfWA7XG4gIGNvbnN0IGNyZWRlbnRpYWxzU2VjcmV0ID0gKHN0YWNrLm5vZGUudHJ5RmluZENoaWxkKHNlY3JldENvbnN0cnVjdElkKSBhcyBTZWNyZXQgfCB1bmRlZmluZWQpXG4gICAgPz8gU2VjcmV0LmZyb21TZWNyZXROYW1lVjIoc3RhY2ssIHNlY3JldENvbnN0cnVjdElkLCBzZWNyZXROYW1lKTtcblxuICByZXR1cm4gTGludXhCdWlsZEltYWdlLmZyb21Eb2NrZXJSZWdpc3RyeShpbWFnZVVyaSwge1xuICAgIHNlY3JldHNNYW5hZ2VyQ3JlZGVudGlhbHM6IGNyZWRlbnRpYWxzU2VjcmV0LFxuICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBDb2RlQnVpbGQgc3RlcCBvciBTaGVsbCBzdGVwIGJhc2VkIG9uIHBsdWdpbiBjb25maWd1cmF0aW9uLlxuICpcbiAqIE1ldGFkYXRhIG1lcmdlIG9yZGVyIChsYXN0IHdpbnMpOlxuICogICAxLiBQbHVnaW4gbWV0YWRhdGEgKGZyb20gcGx1Z2luLm1ldGFkYXRhIGluIGRhdGFiYXNlKSDigJQgdGhlIHBsdWdpblxuICogICAgICBhdXRob3IncyBiYWtlZC1pbiBkZWZhdWx0c1xuICogICAyLiBTdGVwLWxldmVsIG1ldGFkYXRhIChmcm9tIG9wdGlvbnMubWV0YWRhdGEpIOKAlCB0aGUgcGlwZWxpbmUgYXV0aG9yJ3NcbiAqICAgICAgcGVyLXN0ZXAgb3ZlcnJpZGVzLCB3aGljaCBhcmUgbW9yZSBzcGVjaWZpYyBhbmQgbXVzdCB3aW5cbiAqXG4gKiBFbnZpcm9ubWVudCBtZXJnZSBvcmRlciAobGFzdCB3aW5zKTpcbiAqICAgMS4gUGx1Z2luIGVudiB2YXJzIChmcm9tIHBsdWdpbi5lbnYpXG4gKiAgIDIuIEN1c3RvbSBlbnYgdmFycyAoZnJvbSBvcHRpb25zLmVudilcbiAqICAgMy4gV09SS0RJUiBmcm9tIG1lcmdlZCBtZXRhZGF0YVxuICpcbiAqIENESyBwcm9wIHNwcmVhZCBvcmRlciAobGFzdCB3aW5zKTpcbiAqICAgcHJvZ3JhbW1hdGljIGRlZmF1bHRzIChpbnB1dCwgY29tbWFuZHMsIGVudiwgbmV0d29yaykg4oaSIG1ldGFkYXRhIG92ZXJyaWRlc1xuICpcbiAqIFRoaXMgbWVhbnMgbWV0YWRhdGEga2V5cyBsaWtlIGBhd3M6Y2RrOnBpcGVsaW5lczpjb2RlYnVpbGRzdGVwOmNvbW1hbmRzYFxuICogd2lsbCBvdmVycmlkZSB0aGUgcGx1Z2luLWRlcml2ZWQgY29tbWFuZHMgd2hlbiBleHBsaWNpdGx5IHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvZGVCdWlsZFN0ZXAob3B0aW9uczogQ29kZUJ1aWxkU3RlcE9wdGlvbnMpOiBTaGVsbFN0ZXAgfCBDb2RlQnVpbGRTdGVwIHwgTWFudWFsQXBwcm92YWxTdGVwIHtcbiAgY29uc3Qge1xuICAgIGlkLCBpbnB1dCwgbWV0YWRhdGEsIG5ldHdvcmssIHNjb3BlLFxuICAgIHByZUluc3RhbGxDb21tYW5kcywgcG9zdEluc3RhbGxDb21tYW5kcywgcHJlQ29tbWFuZHMsIHBvc3RDb21tYW5kcyxcbiAgICBlbnY6IGN1c3RvbUVudiwgYWRkaXRpb25hbElucHV0cywgdGltZW91dCwgZmFpbHVyZUJlaGF2aW9yLFxuICAgIGFydGlmYWN0TWFuYWdlciwgc3RhZ2VOYW1lLCBzdGFnZUFsaWFzLCBwbHVnaW5BbGlhcywgb3JnSWQsIHBpcGVsaW5lU2NvcGUsXG4gIH0gPSBvcHRpb25zO1xuXG4gIC8vIFJlc29sdmUge3sgLi4uIH19IHRlbXBsYXRlcyBpbiBwbHVnaW4gc3BlYyBmaWVsZHMgYWdhaW5zdCB0aGUgcGlwZWxpbmUgc2NvcGUuXG4gIC8vIEV2ZXJ5IGNhbGwgZ29lcyB0aHJvdWdoIHRoZSByZXNvbHZlciDigJQgcGx1Z2lucyB3aXRob3V0IHRlbXBsYXRlIHRva2VucyBhcmVcbiAgLy8gYSBuby1vcCBmYXN0IHBhdGggaW5zaWRlIHJlc29sdmVQbHVnaW5UZW1wbGF0ZXMoKS5cbiAgY29uc3QgcGx1Z2luID0gcmVzb2x2ZVBsdWdpblRlbXBsYXRlcyhvcHRpb25zLnBsdWdpbiwgcGlwZWxpbmVTY29wZSk7XG5cbiAgLy8gUGVyLXN0ZXAgbWV0YWRhdGEgKHRoZSBwaXBlbGluZSBhdXRob3IncyBvdmVycmlkZXMsIGUuZy4gSkFWQV9WRVJTSU9OPTI1KVxuICAvLyBtdXN0IHdpbiBvdmVyIHRoZSBwbHVnaW4ncyBjYXRhbG9nIGBtZXRhZGF0YWAgZGVmYXVsdHMsIHNvIGl0IGdvZXMgTEFTVC5cbiAgLy8gUmV2ZXJzaW5nIHRoZXNlIHNpbGVudGx5IGRyb3BwZWQgcGVyLXN0ZXAgb3ZlcnJpZGVzIGZvciBhbnkgcGx1Z2luIHRoYXRcbiAgLy8gc2hpcHMgbm9uLWVtcHR5IGNhdGFsb2cgbWV0YWRhdGEgKHBsdWdpbnMgdGhhdCBjYXJyeSBkZWZhdWx0cyB1bmRlciBgZW52YFxuICAvLyBpbnN0ZWFkIOKAlCBsaWtlIGphdmEtY29ycmV0dG8g4oCUIHdlcmUgdW5hZmZlY3RlZCwgd2hpY2ggbWFza2VkIHRoaXMpLlxuICBjb25zdCBtZXJnZWQgPSBtZXJnZShwbHVnaW4ubWV0YWRhdGEgPz8ge30sIG1ldGFkYXRhID8/IHt9KTtcblxuICAvLyBNYW51YWxBcHByb3ZhbFN0ZXA6IG5vIGNvbW1hbmRzLCBlbnYsIGNvbXB1dGUsIG9yIG5ldHdvcmsg4oCUIGp1c3QgaWQgKyBvcHRpb25hbCBjb21tZW50XG4gIGlmIChwbHVnaW4ucGx1Z2luVHlwZSA9PT0gUGx1Z2luVHlwZS5NQU5VQUxfQVBQUk9WQUxfU1RFUCkge1xuICAgIHJldHVybiBuZXcgTWFudWFsQXBwcm92YWxTdGVwKGlkLCB7XG4gICAgICBjb21tZW50OiB0eXBlb2YgbWVyZ2VkLkFQUFJPVkFMX0NPTU1FTlQgPT09ICdzdHJpbmcnID8gbWVyZ2VkLkFQUFJPVkFMX0NPTU1FTlQgOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gIH1cblxuICBsb2cuZGVidWcoJ1tDcmVhdGVDb2RlQnVpbGRTdGVwXSBCdWlsZGluZyBzdGVwIHdpdGggbWVyZ2VkIG1ldGFkYXRhJyk7XG5cbiAgLy8gV2FybiBhYm91dCByZXF1aXJlZCBzZWNyZXRzIHdpdGhvdXQgb3JnSWQgKGNhbid0IHJlc29sdmUpXG4gIGNvbnN0IHJlcXVpcmVkU2VjcmV0cyA9IHBsdWdpbi5zZWNyZXRzPy5maWx0ZXIocyA9PiBzLnJlcXVpcmVkKSA/PyBbXTtcbiAgaWYgKHJlcXVpcmVkU2VjcmV0cy5sZW5ndGggPiAwICYmICFvcmdJZCkge1xuICAgIGxvZy53YXJuKFxuICAgICAgYFBsdWdpbiBcIiR7cGx1Z2luLm5hbWV9XCIgZGVjbGFyZXMgJHtyZXF1aXJlZFNlY3JldHMubGVuZ3RofSByZXF1aXJlZCBzZWNyZXQocykgYnV0IG5vIG9yZ0lkIGlzIGF2YWlsYWJsZS4gYCArXG4gICAgICBgU2VjcmV0cyB3aWxsIG5vdCBiZSBpbmplY3RlZDogJHtyZXF1aXJlZFNlY3JldHMubWFwKHMgPT4gcy5uYW1lKS5qb2luKCcsICcpfWAsXG4gICAgKTtcbiAgfVxuXG4gIC8vIFJlc29sdmUgcGx1Z2luIHNlY3JldHMgYXMgU0VDUkVUU19NQU5BR0VSIGVudiB2YXJzIOKAlCBvbmx5IFJFUVVJUkVEIG9uZXMuXG4gIC8vIENvZGVCdWlsZCB0cmVhdHMgYSBTRUNSRVRTX01BTkFHRVIgZW52IHZhciBhcyBNQU5EQVRPUlk6IGl0IGZhaWxzIHRoZSBidWlsZFxuICAvLyBhdCBET1dOTE9BRF9TT1VSQ0UgKFwiUmVzb3VyY2VOb3RGb3VuZEV4Y2VwdGlvbjogY2FuJ3QgZmluZCB0aGUgc3BlY2lmaWVkXG4gIC8vIHNlY3JldFwiKSBpZiB0aGUgc2VjcmV0IGlzIGFic2VudC4gQXV0by13aXJpbmcgYW4gT1BUSU9OQUwgc2VjcmV0XG4gIC8vIChgcmVxdWlyZWQ6IGZhbHNlYCwgZS5nLiBOVkRfQVBJX0tFWSAvIFNFTUdSRVBfQVBQX1RPS0VOKSB0aGUgb3BlcmF0b3IgaGFzbid0XG4gIC8vIGNyZWF0ZWQgd291bGQgdGhlcmVmb3JlIGJyZWFrIGV2ZXJ5IGJ1aWxkIOKAlCB0aGUgZXhhY3Qgb3Bwb3NpdGUgb2YgXCJvcHRpb25hbFwiLlxuICAvLyBPcHRpb25hbCBzZWNyZXRzIGFyZSBsZWZ0IGZvciB0aGUgcGx1Z2luIHRvIHJlYWQgb25seSB3aGVyZSB0aGUgb3BlcmF0b3IgaGFzXG4gIC8vIHByb3Zpc2lvbmVkIHRoZW0gKG91dC1vZi1iYW5kIGVudi9zZWNyZXQpLCBub3QgZm9yY2UtaW5qZWN0ZWQgaGVyZS5cbiAgY29uc3Qgc2VjcmV0RW52VmFycyA9IChyZXF1aXJlZFNlY3JldHMubGVuZ3RoICYmIG9yZ0lkKVxuICAgID8gdG9TZWNyZXRFbnZWYXJzKHJlcXVpcmVkU2VjcmV0cywgb3JnSWQpXG4gICAgOiB7fTtcblxuICBjb25zdCBlbnYgPSBidWlsZEVudihwbHVnaW4sIG1lcmdlZCwgY3VzdG9tRW52KTtcblxuICAvLyBTZWN1cml0eS1yZXBvcnQgdXBsb2FkIChvcHQtaW4pOiBpbmplY3QgdGhlIG9yZydzIHJlcG9ydGluZzppbmdlc3Qtc2NvcGVkXG4gIC8vIGtleSDigJQgbmV2ZXIgdGhlIGZ1bGwgcGxhdGZvcm0gY3JlZGVudGlhbCDigJQgYXMgYSBTRUNSRVRTX01BTkFHRVIgdmFyaWFibGUuXG4gIC8vIENESyBncmFudHMgdGhlIHN0ZXAgcm9sZSByZWFkIG9uIGV4YWN0bHkgdGhhdCBzZWNyZXQuIFNlZSBjb3JlL3NlY3VyaXR5LXJlcG9ydHMudHMuXG4gIGNvbnN0IHJlcG9ydFVwbG9hZCA9IGVudltTRUNVUklUWV9SRVBPUlRfVVBMT0FEX0VOVl0gPT09ICd0cnVlJztcbiAgaWYgKHJlcG9ydFVwbG9hZCAmJiAhb3JnSWQpIHtcbiAgICBsb2cud2FybihgU3RlcCBcIiR7aWR9XCIgc2V0cyAke1NFQ1VSSVRZX1JFUE9SVF9VUExPQURfRU5WfT10cnVlIGJ1dCBubyBvcmdJZCBpcyBhdmFpbGFibGUg4oCUIHRoZSB1cGxvYWQga2V5IGNhbm5vdCBiZSBpbmplY3RlZCBhbmQgdGhlIHVwbG9hZCB3aWxsIGZhaWwuYCk7XG4gIH1cbiAgY29uc3QgcmVwb3J0S2V5RW52VmFyOiBSZWNvcmQ8c3RyaW5nLCB7IHZhbHVlOiBzdHJpbmc7IHR5cGU6IEJ1aWxkRW52aXJvbm1lbnRWYXJpYWJsZVR5cGUgfT4gPSByZXBvcnRVcGxvYWQgJiYgb3JnSWRcbiAgICA/IHtcbiAgICAgIFtTRUNVUklUWV9SRVBPUlRfS0VZX0VOVl06IHtcbiAgICAgICAgdmFsdWU6IGAke0NvcmVDb25zdGFudHMuc2VjcmV0UGF0aChvcmdJZCwgU0VDVVJJVFlfUkVQT1JUX1NFQ1JFVF9MRUFGKX06cGFzc3dvcmRgLFxuICAgICAgICB0eXBlOiBCdWlsZEVudmlyb25tZW50VmFyaWFibGVUeXBlLlNFQ1JFVFNfTUFOQUdFUixcbiAgICAgIH0sXG4gICAgfVxuICAgIDoge307XG5cbiAgLy8gQ29kZVBpcGVsaW5lIHJlc29sdmVkIHZhcmlhYmxlcyDigJQgbXVzdCBiZSBpbiBDb2RlQnVpbGRTdGVwLmVudiAoYWN0aW9uLWxldmVsKSxcbiAgLy8gbm90IGJ1aWxkRW52aXJvbm1lbnQuZW52aXJvbm1lbnRWYXJpYWJsZXMgKHByb2plY3QtbGV2ZWwpXG4gIGNvbnN0IGFjdGlvbkVudjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICBQSVBFTElORV9FWEVDVVRJT05fSUQ6ICcje2NvZGVwaXBlbGluZS5QaXBlbGluZUV4ZWN1dGlvbklkfScsXG4gIH07XG5cbiAgY29uc3Qgb3V0cHV0RGlyID0gcGx1Z2luLnByaW1hcnlPdXRwdXREaXJlY3Rvcnk7XG4gIGNvbnN0IGVuc3VyZU91dHB1dERpciA9IChvdXRwdXREaXIgJiYgIW91dHB1dERpci5pbmNsdWRlcygnKicpKVxuICAgID8gW2Bta2RpciAtcCBcIiR7b3V0cHV0RGlyfVwiICYmIHRvdWNoIFwiJHtvdXRwdXREaXJ9Ly5naXRrZWVwXCJgXVxuICAgIDogW107XG5cbiAgY29uc3QgeyBpbnN0YWxsQ29tbWFuZHMsIGNvbW1hbmRzIH0gPSBidWlsZENvbW1hbmRzKHBsdWdpbiwge1xuICAgIHByZUluc3RhbGxDb21tYW5kczogWy4uLmVuc3VyZU91dHB1dERpciwgLi4uKHByZUluc3RhbGxDb21tYW5kcyA/PyBbXSldLFxuICAgIHBvc3RJbnN0YWxsQ29tbWFuZHMsXG4gICAgcHJlQ29tbWFuZHMsXG4gICAgcG9zdENvbW1hbmRzLFxuICB9LCBmYWlsdXJlQmVoYXZpb3IpO1xuXG4gIGNvbnN0IHByb2dyYW1tYXRpYyA9IHsgaW5wdXQsIGluc3RhbGxDb21tYW5kcywgY29tbWFuZHMgfTtcblxuICAvLyBSZXNvbHZlIHRoZSBwbHVnaW4ncyBydW50aW1lIGltYWdlLiBDb2RlQnVpbGQgZGVmYXVsdHMgdG9cbiAgLy8gYGF3cy9jb2RlYnVpbGQvc3RhbmRhcmQ6Ny4wYCB3aGVuIG5vIGBidWlsZEltYWdlYCBpcyBzZXQg4oCUIHRoYXQncyB0aGVcbiAgLy8gQVdTLW1hbmFnZWQgVWJ1bnR1IGltYWdlIGFuZCBET0VTIE5PVCBoYXZlIGFueSBwbHVnaW4tYmFrZWQgdG9vbHNcbiAgLy8gKHBpcGVsaW5lLW1hbmFnZXIsIHNueWssIHRlcnJhZm9ybSwgZXRjLikuIFdpcmluZyB0aGUgcGx1Z2luJ3MgaW1hZ2VcbiAgLy8gaGVyZSBtZWFucyBDb2RlQnVpbGQgcHVsbHMgZnJvbSBvdXIgcHJpdmF0ZSByZWdpc3RyeSBhbmQgdGhlIHRvb2xzXG4gIC8vIGluc3RhbGxlZCBpbiB0aGUgcGx1Z2luJ3MgRG9ja2VyZmlsZSBhcmUgYWN0dWFsbHkgYXZhaWxhYmxlLlxuICBjb25zdCBwbHVnaW5CdWlsZEltYWdlID0gcmVzb2x2ZVBsdWdpbkltYWdlKHNjb3BlLCBwbHVnaW4sIG9yZ0lkKTtcblxuICAvLyBTaGVsbFN0ZXAgYnJhbmNoLlxuICAvLyBTaGVsbFN0ZXAgaXRzZWxmIGRvZXNuJ3QgYWNjZXB0IGBidWlsZEVudmlyb25tZW50YC9gYnVpbGRJbWFnZWAuIENES1xuICAvLyBwaXBlbGluZXMgd3JhcHMgU2hlbGxTdGVwcyBpbiBhIGRlZmF1bHQgQ29kZUJ1aWxkIGFjdGlvbiB0aGF0IHJ1bnMgb25cbiAgLy8gYGF3cy9jb2RlYnVpbGQvc3RhbmRhcmQ6Ny4wYCDigJQgd2hpY2ggd29uJ3QgaGF2ZSB0aGUgcGx1Z2luJ3MgdG9vbHMuXG4gIC8vXG4gIC8vIFNvIHdoZW4gYSBTSEVMTF9TVEVQIHBsdWdpbiBET0VTIGhhdmUgYW4gaW1hZ2UgKGJlY2F1c2UgaXRzIGF1dGhvclxuICAvLyBiYWtlZCB0b29scyBpbnRvIGEgRG9ja2VyZmlsZSksIHdlIFBST01PVEUgaXQgdG8gYSBDb2RlQnVpbGRTdGVwIHdpdGhcbiAgLy8gdGhlIHJlc29sdmVkIGltYWdlLiBUaGUgcGx1Z2luIGF1dGhvcidzIGludGVudCAoXCJ1c2UgbXkgYmFrZWQgdG9vbHNcIilcbiAgLy8gaXMgcHJlc2VydmVkIHdpdGhvdXQgZm9yY2luZyB0aGVtIHRvIGNoYW5nZSBwbHVnaW5UeXBlLlxuICAvL1xuICAvLyBXaGVuIHRoZSBwbHVnaW4gaGFzIG5vIGltYWdlIChvciByZWdpc3RyeSBpc24ndCBjb25maWd1cmVkKSwgd2Uga2VlcFxuICAvLyB0aGUgb3JpZ2luYWwgU2hlbGxTdGVwIOKAlCBpdCdzIGxpZ2h0ZXIgd2VpZ2h0IGFuZCB0aGUgZGVmYXVsdFxuICAvLyBDb2RlQnVpbGQgaW1hZ2UgaXMgZmluZS5cbiAgaWYgKHBsdWdpbi5wbHVnaW5UeXBlID09PSBQbHVnaW5UeXBlLlNIRUxMX1NURVApIHtcbiAgICBpZiAoIXBsdWdpbkJ1aWxkSW1hZ2UpIHtcbiAgICAgIHJldHVybiBuZXcgU2hlbGxTdGVwKGlkLCB7XG4gICAgICAgIC4uLnByb2dyYW1tYXRpYyxcbiAgICAgICAgZW52OiB7IC4uLmVudiwgLi4uYWN0aW9uRW52IH0sXG4gICAgICAgIC4uLm1ldGFkYXRhRm9yU2hlbGxTdGVwKG1lcmdlZCksXG4gICAgICB9KTtcbiAgICB9XG4gICAgbG9nLmRlYnVnKGBbQ3JlYXRlQ29kZUJ1aWxkU3RlcF0gU0hFTExfU1RFUCBwbHVnaW4gXCIke3BsdWdpbi5uYW1lfVwiIGhhcyBhIHJlZ2lzdHJ5IGltYWdlIOKAlCBwcm9tb3RpbmcgdG8gQ29kZUJ1aWxkU3RlcCBzbyB0aGUgcGx1Z2luIGltYWdlIGlzIGFjdHVhbGx5IHVzZWRgKTtcbiAgICAvLyBGYWxsIHRocm91Z2ggdG8gdGhlIENvZGVCdWlsZFN0ZXAgcGF0aCBiZWxvdy5cbiAgfVxuXG4gIGNvbnN0IGNvbXB1dGVUeXBlID0gZ2V0Q29tcHV0ZVR5cGUoXG4gICAgcGx1Z2luLmNvbXB1dGVUeXBlID8/IG9wdGlvbnMuZGVmYXVsdENvbXB1dGVUeXBlID8/ICdTTUFMTCcsXG4gICk7XG5cbiAgLy8gU3RlcCBuZXR3b3JrOiBleHBsaWNpdCBzdGVwIGNvbmZpZyB3aW5zLCBlbHNlIHRoaXMgc3RlcCdzIGBlYzI6bmV0d29ya2AgbWV0YWRhdGEuXG4gIGNvbnN0IHJlc29sdmVkTmV0d29yayA9IG5ldHdvcmsgPz8gbmV0d29ya0NvbmZpZ0Zyb21NZXRhZGF0YShtZXJnZWQpO1xuICBjb25zdCBuZXR3b3JrUHJvcHMgPSByZXNvbHZlZE5ldHdvcmtcbiAgICA/IHJlc29sdmVOZXR3b3JrKHNjb3BlLCBvcHRpb25zLnVuaXF1ZUlkLCByZXNvbHZlZE5ldHdvcmspXG4gICAgOiB7fTtcblxuICAvLyBNZXRhZGF0YSBzcHJlYWQgbGFzdCBzbyBpdCBjYW4gb3ZlcnJpZGUgcHJvZ3JhbW1hdGljIGRlZmF1bHRzLlxuICAvLyBOT1RFOiBDYWNoaW5nIGlzIHN1cHBvcnRlZCB2aWEgdHdvIG1ldGFkYXRhIHBhdGhzOlxuICAvLyAgIDEuIE1ldGFkYXRhS2V5cy5DQUNIRSAoJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVidWlsZHN0ZXA6Y2FjaGUnKSDigJQgcGFzc2VkIGRpcmVjdGx5XG4gIC8vICAgICAgYXMgdGhlIENvZGVCdWlsZFN0ZXAgYGNhY2hlYCBwcm9wIChleHBlY3RzIGEgY29kZWJ1aWxkLkNhY2hlIG9iamVjdCkuXG4gIC8vICAgMi4gTWV0YWRhdGFLZXlzLlBBUlRJQUxfQlVJTERfU1BFQyAoJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVidWlsZHN0ZXA6cGFydGlhbGJ1aWxkc3BlYycpXG4gIC8vICAgICAg4oCUIHBhc3NlZCBhcyBgcGFydGlhbEJ1aWxkU3BlY2AsIHdoaWNoIGNhbiBpbmNsdWRlIGEgYGNhY2hlOmAgc2VjdGlvbiBmb3JcbiAgLy8gICAgICBTMyBvciBsb2NhbCBjYWNoaW5nIChlLmcuLCBCdWlsZFNwZWMuZnJvbU9iamVjdCh7IGNhY2hlOiB7IHBhdGhzOiBbLi4uXSB9IH0pKS5cbiAgLy8gUGVyLXN0ZXAgYnVpbGRFbnZpcm9ubWVudCBvdmVycmlkZXMgZnJvbSBtZXRhZGF0YSAoYXdzOmNkazpjb2RlYnVpbGQ6YnVpbGRlbnZpcm9ubWVudDoqKS5cbiAgLy8gQSBtZXRhZGF0YS1wcm92aWRlZCBjb21wdXRlVHlwZSBpcyBhIHJhdyBwYXNzdGhyb3VnaCwgc28gbm9ybWFsaXplIGl0IHRocm91Z2hcbiAgLy8gZ2V0Q29tcHV0ZVR5cGUg4oCUIG90aGVyd2lzZSBhIGZyaWVuZGx5IHZhbHVlIGxpa2UgXCJMQVJHRVwiIHJlYWNoZXMgQ29kZUJ1aWxkIHZlcmJhdGltXG4gIC8vIGFuZCBmYWlscyB3aXRoIFwiSW52YWxpZCBjb21wdXRlIHR5cGUgcHJvdmlkZWRcIiAoaXQgbmVlZHMgQlVJTERfR0VORVJBTDFfTEFSR0UpLlxuICBjb25zdCByYXdNZXRhQnVpbGRFbnYgPSBtZXRhZGF0YUZvckJ1aWxkRW52aXJvbm1lbnQobWVyZ2VkKTtcbiAgY29uc3QgbWV0YUJ1aWxkRW52ID0gdHlwZW9mIHJhd01ldGFCdWlsZEVudi5jb21wdXRlVHlwZSA9PT0gJ3N0cmluZydcbiAgICA/IHsgLi4ucmF3TWV0YUJ1aWxkRW52LCBjb21wdXRlVHlwZTogZ2V0Q29tcHV0ZVR5cGUocmF3TWV0YUJ1aWxkRW52LmNvbXB1dGVUeXBlKSB9XG4gICAgOiByYXdNZXRhQnVpbGRFbnY7XG5cbiAgY29uc3Qgc3RlcCA9IG5ldyBDb2RlQnVpbGRTdGVwKGlkLCB7XG4gICAgLi4ucHJvZ3JhbW1hdGljLFxuICAgIC4uLm5ldHdvcmtQcm9wcyxcbiAgICAuLi4oYWRkaXRpb25hbElucHV0cyAmJiB7IGFkZGl0aW9uYWxJbnB1dHMgfSksXG4gICAgLi4uKHRpbWVvdXQgJiYgeyB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKHRpbWVvdXQpIH0pLFxuICAgIGVudjogYWN0aW9uRW52LFxuICAgIHByaW1hcnlPdXRwdXREaXJlY3Rvcnk6IHBsdWdpbi5wcmltYXJ5T3V0cHV0RGlyZWN0b3J5ID8/IHVuZGVmaW5lZCxcbiAgICAvLyBQaW4gdGhlIGJ1aWxkc3BlYyBzaGVsbCB0byBQT1NJWCAvYmluL3NoIHNvIGV4ZWN1dGlvbiBpcyBpZGVudGljYWwgdG9cbiAgICAvLyBDb2RlQnVpbGQncyBkZWZhdWx0IGFuZCBwb3J0YWJsZSBhY3Jvc3MgbWluaW1hbCBiYXNlIGltYWdlcyAobm8gYmFzaFxuICAgIC8vIGRlcGVuZGVuY3kpLiBQbHVnaW4gc3BlY3MgYXJlIGF1dGhvcmVkIFBPU0lYLWNsZWFuIHRvIG1hdGNoIOKAlCBubyBiYXNoLW9ubHlcbiAgICAvLyBgW1sgXV1gLCBhcnJheXMsIGByZWFkIC1yYSA8PDxgLCBvciBgc291cmNlYC9gbnZtIHVzZWAvYHNkayB1c2VgLiBBXG4gICAgLy8gcGx1Z2luLXN1cHBsaWVkIHBhcnRpYWxCdWlsZFNwZWMgKG5vbmUgdG9kYXkpIHdvdWxkIG92ZXJyaWRlIHRoaXMgdmlhIHRoZVxuICAgIC8vIG1ldGFkYXRhIHNwcmVhZCBiZWxvdyBhbmQgbXVzdCB0aGVuIHNldCBgZW52LnNoZWxsYCBpdHNlbGYuXG4gICAgcGFydGlhbEJ1aWxkU3BlYzogQnVpbGRTcGVjLmZyb21PYmplY3QoeyBlbnY6IHsgc2hlbGw6ICcvYmluL3NoJyB9IH0pLFxuICAgIGJ1aWxkRW52aXJvbm1lbnQ6IHtcbiAgICAgIGNvbXB1dGVUeXBlLFxuICAgICAgYnVpbGRJbWFnZTogcGx1Z2luQnVpbGRJbWFnZSA/PyByZXNvbHZlRGVmYXVsdEJ1aWxkSW1hZ2Uoc2NvcGUsIG9yZ0lkKSxcbiAgICAgIGVudmlyb25tZW50VmFyaWFibGVzOiB7XG4gICAgICAgIC4uLnRvQ29kZUJ1aWxkRW52VmFycyhlbnYpLFxuICAgICAgICAuLi5zZWNyZXRFbnZWYXJzLFxuICAgICAgICAuLi5yZXBvcnRLZXlFbnZWYXIsXG4gICAgICB9LFxuICAgICAgLi4ubWV0YUJ1aWxkRW52LFxuICAgIH0sXG4gICAgLi4ubWV0YWRhdGFGb3JDb2RlQnVpbGRTdGVwKG1lcmdlZCksXG4gIH0pO1xuXG4gIC8vIFJlZ2lzdGVyIHdpdGggYXJ0aWZhY3QgbWFuYWdlciBpZiBwcmltYXJ5T3V0cHV0RGlyZWN0b3J5IGlzIHNldFxuICBpZiAocGx1Z2luLnByaW1hcnlPdXRwdXREaXJlY3RvcnkgJiYgYXJ0aWZhY3RNYW5hZ2VyICYmIHN0YWdlTmFtZSkge1xuICAgIGNvbnN0IGFydGlmYWN0S2V5OiBBcnRpZmFjdEtleSA9IHtcbiAgICAgIHN0YWdlTmFtZSxcbiAgICAgIHN0YWdlQWxpYXM6IHN0YWdlQWxpYXMgPz8gYCR7c3RhZ2VOYW1lfS1hbGlhc2AsXG4gICAgICBwbHVnaW5OYW1lOiBwbHVnaW4ubmFtZSxcbiAgICAgIHBsdWdpbkFsaWFzOiBwbHVnaW5BbGlhcyA/PyBwbHVnaW5BcnRpZmFjdEFsaWFzKHBsdWdpbiksXG4gICAgICBvdXRwdXREaXJlY3Rvcnk6IHBsdWdpbi5wcmltYXJ5T3V0cHV0RGlyZWN0b3J5LFxuICAgIH07XG4gICAgYXJ0aWZhY3RNYW5hZ2VyLmFkZChhcnRpZmFjdEtleSwgc3RlcCk7XG4gIH1cblxuICByZXR1cm4gc3RlcDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IHN0cmluZyBvciBDb21wdXRlVHlwZSBlbnVtIHRvIENESyBDb21wdXRlVHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29tcHV0ZVR5cGUoaW5wdXQ6IHN0cmluZyB8IENES0NvbXB1dGVUeXBlID0gJ1NNQUxMJyk6IENES0NvbXB1dGVUeXBlIHtcbiAgLy8gSWYgYWxyZWFkeSBhIENESyBDb21wdXRlVHlwZSwgcmV0dXJuIGFzLWlzXG4gIGlmICh0eXBlb2YgaW5wdXQgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGlucHV0O1xuICB9XG5cbiAgLy8gQWxyZWFkeSBhIG5hdGl2ZSBDb2RlQnVpbGQgQ29tcHV0ZVR5cGUgKGUuZy4gXCJCVUlMRF9HRU5FUkFMMV9MQVJHRVwiKT8gQWNjZXB0IGFzLWlzXG4gIC8vIHNvIGJvdGggZnJpZW5kbHkgKExBUkdFKSBhbmQgbmF0aXZlIHZhbHVlcyByb3VuZC10cmlwIHdpdGhvdXQgZmFsbGluZyBiYWNrIHRvIFNNQUxMLlxuICBpZiAoKE9iamVjdC52YWx1ZXMoQ0RLQ29tcHV0ZVR5cGUpIGFzIHN0cmluZ1tdKS5pbmNsdWRlcyhpbnB1dCkpIHtcbiAgICByZXR1cm4gaW5wdXQgYXMgQ0RLQ29tcHV0ZVR5cGU7XG4gIH1cblxuICBjb25zdCBub3JtYWxpemVkID0gaW5wdXQudG9VcHBlckNhc2UoKSBhcyBDb21wdXRlVHlwZTtcblxuICBjb25zdCBtYXBwaW5nOiBSZWNvcmQ8Q29tcHV0ZVR5cGUsIENES0NvbXB1dGVUeXBlPiA9IHtcbiAgICBbQ29tcHV0ZVR5cGUuU01BTExdOiBDREtDb21wdXRlVHlwZS5TTUFMTCxcbiAgICBbQ29tcHV0ZVR5cGUuTUVESVVNXTogQ0RLQ29tcHV0ZVR5cGUuTUVESVVNLFxuICAgIFtDb21wdXRlVHlwZS5MQVJHRV06IENES0NvbXB1dGVUeXBlLkxBUkdFLFxuICAgIFtDb21wdXRlVHlwZS5YMl9MQVJHRV06IENES0NvbXB1dGVUeXBlLlgyX0xBUkdFLFxuICB9O1xuXG4gIGNvbnN0IHJlc3VsdCA9IG1hcHBpbmdbbm9ybWFsaXplZF07XG4gIGlmICghcmVzdWx0KSB7XG4gICAgbG9nLndhcm4oYFVua25vd24gY29tcHV0ZSB0eXBlIFwiJHtpbnB1dH1cIiwgZmFsbGluZyBiYWNrIHRvIFNNQUxMYCk7XG4gICAgcmV0dXJuIENES0NvbXB1dGVUeXBlLlNNQUxMO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogVW53cmFwIGEgU2VjcmV0VmFsdWUgfCBzdHJpbmcgaW50byBhIHBsYWluIHN0cmluZy5cbiAqIFdoZW4gYSBTZWNyZXRWYWx1ZSBpcyBwcm92aWRlZCAoZS5nLiBmcm9tIFNlY3JldHMgTWFuYWdlciksIGNhbGxzIHVuc2FmZVVud3JhcCgpXG4gKiB0byBleHRyYWN0IHRoZSB1bmRlcmx5aW5nIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW53cmFwU2VjcmV0KHZhbHVlOiBTZWNyZXRWYWx1ZSB8IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUgOiB2YWx1ZS51bnNhZmVVbndyYXAoKTtcbn1cbiJdfQ==
|
|
610
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtaGVscGVycy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvcmUvcGlwZWxpbmUtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0QsT0FBTyxFQUFFLDRCQUE0QixFQUFFLFNBQVMsRUFBRSxXQUFXLElBQUksY0FBYyxFQUFFLGVBQWUsRUFBb0IsTUFBTSwyQkFBMkIsQ0FBQztBQUN0SixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRixPQUFPLEVBQW9CLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLDJCQUEyQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0ksT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQXFCLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLDJCQUEyQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekgsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEUsT0FBTyxFQUFF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b3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9waXBlbGluZS1kYXRhJztcbmltcG9ydCB7IER1cmF0aW9uLCBTZWNyZXRWYWx1ZSwgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBCdWlsZEVudmlyb25tZW50VmFyaWFibGVUeXBlLCBCdWlsZFNwZWMsIENvbXB1dGVUeXBlIGFzIENES0NvbXB1dGVUeXBlLCBMaW51eEJ1aWxkSW1hZ2UsIHR5cGUgSUJ1aWxkSW1hZ2UgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkJztcbmltcG9ydCB7IFNlY3JldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlcic7XG5pbXBvcnQgeyBDb2RlQnVpbGRTdGVwLCBNYW51YWxBcHByb3ZhbFN0ZXAsIFNoZWxsU3RlcCB9IGZyb20gJ2F3cy1jZGstbGliL3BpcGVsaW5lcyc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgdHlwZSBBcnRpZmFjdEtleSB9IGZyb20gJy4vYXJ0aWZhY3QtbWFuYWdlci5qcyc7XG5pbXBvcnQgeyBtZXRhZGF0YUZvclNoZWxsU3RlcCwgbWV0YWRhdGFGb3JDb2RlQnVpbGRTdGVwLCBtZXRhZGF0YUZvckJ1aWxkRW52aXJvbm1lbnQsIG5ldHdvcmtDb25maWdGcm9tTWV0YWRhdGEgfSBmcm9tICcuL21ldGFkYXRhLWJ1aWxkZXIuanMnO1xuaW1wb3J0IHsgU1RFUF9CT09UU1RSQVBfQ01ELCBleHRyYWN0TWV0YWRhdGFFbnYsIG1lcmdlLCB3cmFwQ29tbWFuZHNGb3JGYWlsdXJlQmVoYXZpb3IgfSBmcm9tICcuL21ldGFkYXRhLWhlbHBlcnMuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZU5ldHdvcmsgfSBmcm9tICcuL25ldHdvcmsuanMnO1xuaW1wb3J0IHsgUGx1Z2luVHlwZSwgQ29tcHV0ZVR5cGUsIHR5cGUgTWV0YURhdGFUeXBlIH0gZnJvbSAnLi9waXBlbGluZS10eXBlcy5qcyc7XG5pbXBvcnQgeyBwbHVnaW5BcnRpZmFjdEFsaWFzIH0gZnJvbSAnLi9wbHVnaW4tY29udHJhY3QuanMnO1xuaW1wb3J0IHsgU0VDVVJJVFlfUkVQT1JUX0tFWV9FTlYsIFNFQ1VSSVRZX1JFUE9SVF9TRUNSRVRfTEVBRiwgU0VDVVJJVFlfUkVQT1JUX1VQTE9BRF9FTlYgfSBmcm9tICcuL3NlY3VyaXR5LXJlcG9ydHMuanMnO1xuaW1wb3J0IHsgUExVR0lOX0lNQUdFX1JFUE9TSVRPUllfUkUgfSBmcm9tICcuL3N0ZXAtbWFuaWZlc3QuanMnO1xuaW1wb3J0IHsgQ29uZmlnLCBDb3JlQ29uc3RhbnRzIH0gZnJvbSAnLi4vY29uZmlnL2FwcC1jb25maWcuanMnO1xuaW1wb3J0IHR5cGUgeyBDb2RlQnVpbGRTdGVwT3B0aW9ucywgU3RlcEN1c3RvbWl6YXRpb24gfSBmcm9tICcuLi9waXBlbGluZS9zdGVwLXR5cGVzLmpzJztcbmltcG9ydCB7IHJlc29sdmVQbHVnaW5UZW1wbGF0ZXMgfSBmcm9tICcuLi90ZW1wbGF0ZS9wbHVnaW4tcmVzb2x2ZXIuanMnO1xuXG5jb25zdCBsb2cgPSBjcmVhdGVMb2dnZXIoJ3BpcGVsaW5lLWhlbHBlcnMnKTtcblxuLyoqXG4gKiBCdWlsZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZnJvbSBwbHVnaW4gY29uZmlnLCBtZXJnZWQgbWV0YWRhdGEsIGFuZCBjdXN0b20gZW52LlxuICpcbiAqIE1lcmdlIG9yZGVyIChsYXN0IHdpbnMpOlxuICogICAxLiBwbHVnaW4uZW52IOKAlCBwbHVnaW4gZGVmYXVsdCBlbnYgdmFycyAobG93ZXN0IHByaW9yaXR5KVxuICogICAyLiBub24tbmFtZXNwYWNlZCBtZXRhZGF0YSBrZXlzIOKAlCBlLmcuIFBZVEhPTl9WRVJTSU9OLCBXT1JLRElSXG4gKiAgIDMuIGN1c3RvbUVudiDigJQgcGVyLXN0ZXAgY3VzdG9tIGVudiB2YXJzIChoaWdoZXN0IHByaW9yaXR5KVxuICovXG5mdW5jdGlvbiBidWlsZEVudihwbHVnaW46IFBsdWdpbiwgbWV0YWRhdGE6IE1ldGFEYXRhVHlwZSwgY3VzdG9tRW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICByZXR1cm4ge1xuICAgIC4uLihwbHVnaW4uZW52ID8/IHt9KSxcbiAgICAuLi5leHRyYWN0TWV0YWRhdGFFbnYobWV0YWRhdGEpLFxuICAgIC4uLihjdXN0b21FbnYgPz8ge30pLFxuICB9O1xufVxuXG4vKipcbiAqIEJ1aWxkIGJvb3RzdHJhcC1wcmVmaXhlZCBpbnN0YWxsIGFuZCBidWlsZCBjb21tYW5kcyBmcm9tIHBsdWdpbiBjb25maWcuXG4gKiBFYWNoIGNvbW1hbmQgbGlzdCBpcyBwcmVwZW5kZWQgd2l0aCBhIFdPUktESVIgYm9vdHN0cmFwIHRoYXQgZGVmYXVsdHMgdG8gJy4vJy5cbiAqIFdoZW4gY3VzdG9tIGNvbW1hbmRzIGFyZSBwcm92aWRlZCwgdGhleSBhcmUgaW5qZWN0ZWQgYmVmb3JlL2FmdGVyIHRoZSBwbHVnaW4ncyBjb21tYW5kcy5cbiAqIEJ1aWxkIGNvbW1hbmRzIGFyZSBvcHRpb25hbGx5IHdyYXBwZWQgYnkgZmFpbHVyZUJlaGF2aW9yIGxvZ2ljLlxuICovXG5mdW5jdGlvbiBidWlsZENvbW1hbmRzKHBsdWdpbjogUGx1Z2luLCBjdXN0b20/OiBTdGVwQ3VzdG9taXphdGlvbiwgZmFpbHVyZUJlaGF2aW9yPzogJ2ZhaWwnIHwgJ3dhcm4nIHwgJ2lnbm9yZScpOiB7IGluc3RhbGxDb21tYW5kczogc3RyaW5nW107IGNvbW1hbmRzOiBzdHJpbmdbXSB9IHtcbiAgY29uc3QgdXNlckNvbW1hbmRzID0gW1xuICAgIC4uLihjdXN0b20/LnByZUNvbW1hbmRzID8/IFtdKSxcbiAgICAuLi4ocGx1Z2luLmNvbW1hbmRzPy5sZW5ndGggPyBwbHVnaW4uY29tbWFuZHMgOiBbXSksXG4gICAgLi4uKGN1c3RvbT8ucG9zdENvbW1hbmRzID8/IFtdKSxcbiAgXTtcblxuICByZXR1cm4ge1xuICAgIGluc3RhbGxDb21tYW5kczogW1xuICAgICAgU1RFUF9CT09UU1RSQVBfQ01ELFxuICAgICAgLi4uKGN1c3RvbT8ucHJlSW5zdGFsbENvbW1hbmRzID8/IFtdKSxcbiAgICAgIC4uLihwbHVnaW4uaW5zdGFsbENvbW1hbmRzID8/IFtdKSxcbiAgICAgIC4uLihjdXN0b20/LnBvc3RJbnN0YWxsQ29tbWFuZHMgPz8gW10pLFxuICAgIF0sXG4gICAgY29tbWFuZHM6IFtTVEVQX0JPT1RTVFJBUF9DTUQsIC4uLndyYXBDb21tYW5kc0ZvckZhaWx1cmVCZWhhdmlvcih1c2VyQ29tbWFuZHMsIGZhaWx1cmVCZWhhdmlvcildLFxuICB9O1xufVxuXG4vKipcbiAqIENvbnZlcnQgYSBwbGFpbiBlbnYgcmVjb3JkIHRvIENvZGVCdWlsZCdzIGVudmlyb25tZW50VmFyaWFibGVzIGZvcm1hdCAoUExBSU5URVhUKS5cbiAqL1xuZnVuY3Rpb24gdG9Db2RlQnVpbGRFbnZWYXJzKGVudjogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IFJlY29yZDxzdHJpbmcsIHsgdmFsdWU6IHN0cmluZyB9PiB7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgT2JqZWN0LmVudHJpZXMoZW52KS5tYXAoKFtuYW1lLCB2YWx1ZV0pID0+IFtuYW1lLCB7IHZhbHVlIH1dKSxcbiAgKTtcbn1cblxuLyoqXG4gKiBCdWlsZCBTRUNSRVRTX01BTkFHRVItdHlwZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZnJvbSBwbHVnaW4gc2VjcmV0IGRlY2xhcmF0aW9ucy5cbiAqIFVzZXMgbmFtaW5nIGNvbnZlbnRpb246IHBpcGVsaW5lLWJ1aWxkZXIve29yZ0lkfS97c2VjcmV0TmFtZX1cbiAqIEVhY2ggb3JnIG1hbmFnZXMgdGhlc2Ugc2VjcmV0cyBpbiB0aGVpciBvd24gQVdTIFNlY3JldHMgTWFuYWdlci5cbiAqL1xuY29uc3QgVkFMSURfU0VDUkVUX05BTUUgPSAvXlthLXpBLVowLTkvXys9LkAtXSskLztcblxuLyoqXG4gKiBTZWNyZXRzIE1hbmFnZXIgbGVhZiBob2xkaW5nIHRoZSBvcmcncyBSRUdJU1RSWSBjcmVkZW50aWFsIOKAlCB0aGVcbiAqIGByZWdpc3RyeTpwdXNoYC1zY29wZWQgc2VydmljZS1hY2NvdW50IGtleSBDb2RlQnVpbGQgcHJlc2VudHMgYXMgQmFzaWMgYXV0aCB0b1xuICogcGlwZWxpbmUtaW1hZ2UtcmVnaXN0cnkuIERlbGliZXJhdGVseSBOT1QgYHBsYXRmb3JtYDogdGhhdCBzZWNyZXQgaG9sZHNcbiAqIHRoZSBvcmcncyBmdWxsLXByaXZpbGVnZSBhdXRvbWF0aW9uIGNyZWRlbnRpYWwsIGFuZCBhIGJ1aWxkIGNvbnRhaW5lciBoYXMgbm9cbiAqIGJ1c2luZXNzIGJlaW5nIGFibGUgdG8gY2FsbCB0aGUgQVBJIHdpdGggaXQuXG4gKiBQcm92aXNpb25lZCBieSBgcGlwZWxpbmUtbWFuYWdlciBpbmZyYSBzdG9yZS10b2tlbiAtLXNjb3BlIHJlZ2lzdHJ5OnB1c2hgLlxuICovXG5jb25zdCBSRUdJU1RSWV9DUkVERU5USUFMX1NFQ1JFVCA9ICdyZWdpc3RyeS1wdXNoJztcblxuZnVuY3Rpb24gdG9TZWNyZXRFbnZWYXJzKFxuICBzZWNyZXRzOiBBcnJheTx7IG5hbWU6IHN0cmluZzsgcmVxdWlyZWQ6IGJvb2xlYW4gfT4sXG4gIG9yZ0lkOiBzdHJpbmcsXG4pOiBSZWNvcmQ8c3RyaW5nLCB7IHZhbHVlOiBzdHJpbmc7IHR5cGU6IEJ1aWxkRW52aXJvbm1lbnRWYXJpYWJsZVR5cGUgfT4ge1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIHNlY3JldHMubWFwKCh7IG5hbWUgfSkgPT4ge1xuICAgICAgY29uc3Qgc2VjcmV0UGF0aCA9IENvcmVDb25zdGFudHMuc2VjcmV0UGF0aChvcmdJZCwgbmFtZSk7XG4gICAgICBpZiAoIVZBTElEX1NFQ1JFVF9OQU1FLnRlc3Qoc2VjcmV0UGF0aCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZWNyZXQgcGF0aCBcIiR7c2VjcmV0UGF0aH1cIiBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnMgZm9yIEFXUyBTZWNyZXRzIE1hbmFnZXJgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHtcbiAgICAgICAgICB2YWx1ZTogc2VjcmV0UGF0aCxcbiAgICAgICAgICB0eXBlOiBCdWlsZEVudmlyb25tZW50VmFyaWFibGVUeXBlLlNFQ1JFVFNfTUFOQUdFUixcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfSksXG4gICk7XG59XG5cbi8qKlxuICogSW4tY2x1c3RlciAvIGxvY2FsIHJlZ2lzdHJ5IGhvc3RuYW1lcyB0aGF0IEFXUyBDb2RlQnVpbGQgKG91dC1vZi1jbHVzdGVyKVxuICogY2Fubm90IHJlc29sdmUuIEJha2luZyBvbmUgb2YgdGhlc2UgaW50byBhIENvZGVCdWlsZCBpbWFnZSBVUkkgZ3VhcmFudGVlcyBhXG4gKiBgQlVJTERfQ09OVEFJTkVSX1VOQUJMRV9UT19QVUxMX0lNQUdFYCBmYWlsdXJlIGF0IGJ1aWxkIHRpbWUsIHNvIHdlIGZhaWwgdGhlXG4gKiBzeW50aCBmYXN0IGluc3RlYWQg4oCUIHdpdGggYSBtZXNzYWdlIHRoYXQgc2F5cyBob3cgdG8gZml4IGl0LlxuICovXG5jb25zdCBVTlJFQUNIQUJMRV9QVUxMX0hPU1RTID0gbmV3IFNldChbJ3JlZ2lzdHJ5JywgJ2xvY2FsaG9zdCcsICcxMjcuMC4wLjEnLCAnOjoxJywgJzAuMC4wLjAnXSk7XG5cbi8qKiBLdWJlcm5ldGVzIC8gbUROUyBzdWZmaXhlcyB0aGF0IG9ubHkgcmVzb2x2ZSBpbnNpZGUgdGhlIGNsdXN0ZXIvTEFOLiAqL1xuY29uc3QgVU5SRUFDSEFCTEVfSE9TVF9TVUZGSVhFUyA9IFsnLnN2YycsICcuc3ZjLmNsdXN0ZXIubG9jYWwnLCAnLmxvY2FsJ107XG5cbi8qKlxuICogUmVkdWNlIGEgcmVnaXN0cnkgaG9zdCB2YWx1ZSB0byBpdHMgYmFyZSBob3N0bmFtZSBmb3IgdGhlIHJlYWNoYWJpbGl0eSBjaGVjazpcbiAqIHN0cmlwIElQdjYgYnJhY2tldHMgYW5kIGFueSBgOnBvcnRgIHN1ZmZpeCAoYW4gb3BlcmF0b3IgbWF5IHB1dCBob3N0K3BvcnQgaW5cbiAqIG9uZSBmaWVsZCksIHNvIGByZWdpc3RyeTo1MDAwYCAvIGBbOjoxXTo1MDAwYCBhcmUgc3RpbGwgcmVjb2duaXplZC5cbiAqL1xuZnVuY3Rpb24gYmFyZUhvc3RuYW1lKHJhd0hvc3Q6IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCBoID0gcmF3SG9zdC50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgaWYgKGguc3RhcnRzV2l0aCgnWycpKSB7XG4gICAgY29uc3QgZW5kID0gaC5pbmRleE9mKCddJyk7XG4gICAgaWYgKGVuZCAhPT0gLTEpIHJldHVybiBoLnNsaWNlKDEsIGVuZCk7IC8vIFs6OjFdOjUwMDAgLT4gOjoxXG4gIH1cbiAgLy8gU3RyaXAgYSB0cmFpbGluZyA6cG9ydCBvbmx5IGZvciBub24tSVB2NiB2YWx1ZXMgKElQdjYgY29udGFpbnMgJzo6JyBvciA+MSAnOicpLlxuICBpZiAoaC5pbmNsdWRlcygnOicpICYmIChoLm1hdGNoKC86L2cpPy5sZW5ndGggPz8gMCkgPT09IDEpIGggPSBoLnNwbGl0KCc6JylbMF07XG4gIHJldHVybiBoO1xufVxuXG4vKiogVHJ1ZSB3aGVuIENvZGVCdWlsZCAob3V0LW9mLWNsdXN0ZXIpIGNvdWxkIG5vdCByZXNvbHZlIHRoaXMgcmVnaXN0cnkgaG9zdC4gKi9cbmZ1bmN0aW9uIGlzVW5yZWFjaGFibGVQdWxsSG9zdChyYXdIb3N0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgaCA9IGJhcmVIb3N0bmFtZShyYXdIb3N0KTtcbiAgaWYgKGggPT09ICcnKSByZXR1cm4gdHJ1ZTsgLy8gbm8gaG9zdCDihpIgbWFsZm9ybWVkIFVSSVxuICBpZiAoVU5SRUFDSEFCTEVfUFVMTF9IT1NUUy5oYXMoaCkpIHJldHVybiB0cnVlO1xuICByZXR1cm4gVU5SRUFDSEFCTEVfSE9TVF9TVUZGSVhFUy5zb21lKChzKSA9PiBoLmVuZHNXaXRoKHMpKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIHRoZSBleHRlcm5hbCAob3V0LW9mLWNsdXN0ZXIpIHJlZ2lzdHJ5IHB1bGwgaG9zdCArIGA6cG9ydGAgc3VmZml4IGZvclxuICogYSBDb2RlQnVpbGQgaW1hZ2UgVVJJLCBhbmQgZmFpbCBmYXN0IGlmIGl0IHJlc29sdmVkIHRvIGFuIGluLWNsdXN0ZXIvbG9jYWxcbiAqIGRlZmF1bHQgdGhhdCBDb2RlQnVpbGQgY2FuJ3QgcmVhY2guXG4gKlxuICogUHJlZmVycyBgcHVsbEhvc3RgL2BwdWxsUG9ydGAgKHRoZSBwdWJsaWMgZW5kcG9pbnQgQ29kZUJ1aWxkIGNhbiByZXNvbHZlKSBhbmRcbiAqIGZhbGxzIGJhY2sgdG8gYGhvc3RgL2Bwb3J0YCBmb3Igc2luZ2xlLWhvc3QgZGVwbG95cy4gcGlwZWxpbmUtbWFuYWdlciBiYWtlc1xuICogdGhlIHJpZ2h0IHB1bGwgaG9zdCBpbnRvIHRoZSBzeW50aCBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIHBsYXRmb3JtIFVSTCBpdFxuICogZGVwbG95cyBhZ2FpbnN0IChgcHJvcHMucmVnaXN0cnlgKTsgdGhpcyBndWFyZCBjYXRjaGVzIHRoZSBjYXNlIHdoZXJlIG5laXRoZXJcbiAqIHRoYXQgbm9yIGBJTUFHRV9SRUdJU1RSWV9QVUxMX0hPU1RgL2BQTEFURk9STV9CQVNFX1VSTGAgd2FzIHN1cHBsaWVkLlxuICpcbiAqIEVzY2FwZSBoYXRjaDogYEFMTE9XX0lOQ0xVU1RFUl9QVUxMX0hPU1Q9dHJ1ZWAgKGUuZy4gQ29kZUJ1aWxkIGluIGEgVlBDIHdob3NlXG4gKiBwcml2YXRlIEROUyBnZW51aW5lbHkgcmVzb2x2ZXMgdGhlIGluLWNsdXN0ZXIgbmFtZSkuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVFeHRlcm5hbFB1bGxUYXJnZXQoXG4gIHJlZ2lzdHJ5OiB7IGhvc3Q/OiBzdHJpbmc7IHBvcnQ/OiBudW1iZXI7IHB1bGxIb3N0Pzogc3RyaW5nOyBwdWxsUG9ydD86IG51bWJlciB9LFxuKTogeyBob3N0OiBzdHJpbmc7IHBvcnRQYXJ0OiBzdHJpbmcgfSB7XG4gIGNvbnN0IGhvc3QgPSByZWdpc3RyeS5wdWxsSG9zdCB8fCByZWdpc3RyeS5ob3N0IHx8ICcnO1xuICBjb25zdCBwb3J0ID0gcmVnaXN0cnkucHVsbFBvcnQgPz8gcmVnaXN0cnkucG9ydDtcbiAgaWYgKHByb2Nlc3MuZW52LkFMTE9XX0lOQ0xVU1RFUl9QVUxMX0hPU1QgIT09ICd0cnVlJyAmJiBpc1VucmVhY2hhYmxlUHVsbEhvc3QoaG9zdCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgUmVnaXN0cnkgcHVsbCBob3N0IHJlc29sdmVkIHRvICcke2hvc3R9Jywgd2hpY2ggQVdTIENvZGVCdWlsZCBjYW5ub3QgcmVhY2gg4oCUIGl0IGlzIHRoZSBgICtcbiAgICAgICdpbi1jbHVzdGVyL2xvY2FsIGRlZmF1bHQuIFRoZSBzeW50aGVzaXplZCBwaXBlbGluZSB3b3VsZCBmYWlsIGF0IGJ1aWxkIHRpbWUgd2l0aCAnICtcbiAgICAgICdCVUlMRF9DT05UQUlORVJfVU5BQkxFX1RPX1BVTExfSU1BR0UuIFNldCB0aGUgcGxhdGZvcm1cXCdzIHB1YmxpYyBob3N0IHZpYSAnICtcbiAgICAgICdJTUFHRV9SRUdJU1RSWV9QVUxMX0hPU1Qgb3IgUExBVEZPUk1fQkFTRV9VUkwgYmVmb3JlIGRlcGxveWluZyDigJQgcGlwZWxpbmUtbWFuYWdlciBiYWtlcyAnICtcbiAgICAgICd0aGlzIGluIGF1dG9tYXRpY2FsbHkgZnJvbSB0aGUgcGxhdGZvcm0gVVJMIGl0IGRlcGxveXMgYWdhaW5zdC4gJyArXG4gICAgICAnU2V0IEFMTE9XX0lOQ0xVU1RFUl9QVUxMX0hPU1Q9dHJ1ZSB0byBieXBhc3MgKGluLVZQQyBwcml2YXRlIEROUykuJyxcbiAgICApO1xuICB9XG4gIGNvbnN0IHBvcnRQYXJ0ID0gcG9ydCAmJiBwb3J0ICE9PSA4MCAmJiBwb3J0ICE9PSA0NDMgPyBgOiR7cG9ydH1gIDogJyc7XG4gIHJldHVybiB7IGhvc3QsIHBvcnRQYXJ0IH07XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgQ29kZUJ1aWxkIGltYWdlIHRvIHVzZSBmb3IgYSBwbHVnaW4uXG4gKlxuICogU3RyYXRlZ3k6XG4gKiAgIDEuIElmIHRoZSBwbHVnaW4gc2V0cyBgYXdzOmNkazpjb2RlYnVpbGQ6YnVpbGRlbnZpcm9ubWVudDpidWlsZEltYWdlYFxuICogICAgICBleHBsaWNpdGx5IGluIG1ldGFkYXRhLCB0aGUgbWV0YWRhdGEtYnVpbGRlciBwYXNzdGhyb3VnaCBoYW5kbGVzIGl0XG4gKiAgICAgICh2aWEgYG1ldGFkYXRhRm9yQnVpbGRFbnZpcm9ubWVudGApLiBUaGlzIGZ1bmN0aW9uIHJldHVybnNcbiAqICAgICAgYHVuZGVmaW5lZGAgYW5kIHRoZSBtZXRhZGF0YSB3aW5zLlxuICogICAyLiBPdGhlcndpc2UsIGlmIHRoZSBwbHVnaW4gaGFzIGEgYG5hbWVgK2B2ZXJzaW9uYCBBTkQgdGhlIHJlZ2lzdHJ5XG4gKiAgICAgIGNvbmZpZyBpcyBwb3B1bGF0ZWQsIGJ1aWxkIGEgYExpbnV4QnVpbGRJbWFnZS5mcm9tRG9ja2VyUmVnaXN0cnkoKWBcbiAqICAgICAgaW1hZ2UgcG9pbnRpbmcgYXQgYDxyZWdpc3RyeS1ob3N0Pjo8cG9ydD4vPG5zPi88bmFtZT5APGltYWdlRGlnZXN0PmBcbiAqICAgICAgd2hlcmUgYDxucz5gIGlzIGBzeXN0ZW1gIG9yIGBvcmctPG9yZ0lkPmAuIFBpbm5lZCBCWSBESUdFU1Qg4oCUIHRoZSBvbmVcbiAqICAgICAgdGhlIHBsdWdpbiBzZXJ2aWNlIHZlcmlmaWVkIGFnYWluc3QgaXRzIHNpZ25pbmcga2V5IGJlZm9yZSByZXR1cm5pbmdcbiAqICAgICAgdGhpcyByZWNvcmQg4oCUIG5ldmVyIGJ5IHRoZSBtdXRhYmxlIGA6PHZlcnNpb24+YCB0YWcsIHdoaWNoIGFueW9uZVxuICogICAgICBob2xkaW5nIHRoZSBvcmcncyByZWdpc3RyeSBwdXNoIGNyZWRlbnRpYWwgY291bGQgcmUtcG9pbnQuIEEgcGx1Z2luXG4gKiAgICAgIHRoYXQgbmVlZHMgYW4gaW1hZ2UgYnV0IGNhcnJpZXMgbm8gZGlnZXN0IGlzIHJlZnVzZWQgKHRocm93cyk6IHJ1bm5pbmdcbiAqICAgICAgYW4gdW52ZXJpZmllZCBpbWFnZSBpcyB3b3JzZSB0aGFuIGEgZmFpbGVkIHN5bnRoLiBDb2RlQnVpbGQgYXV0aGVudGljYXRlcyBieVxuICogICAgICBzZW5kaW5nIHRoZSBwZXItb3JnIHBsYXRmb3JtIFNlY3JldCBhcyBCYXNpYyBhdXRoIHRvXG4gKiAgICAgIGBwaXBlbGluZS1pbWFnZS1yZWdpc3RyeWAncyBgL3Rva2VuYCBlbmRwb2ludDsgdGhlIEpXVCBpbiBgcGFzc3dvcmRgXG4gKiAgICAgIHJlc29sdmVzIHRvIGEgcmVnaXN0cnkgdG9rZW4gc2NvcGVkIHRvIHRoZSBvcmcuXG4gKiAgIDMuIElmIGBtZXRhZGF0YV9vbmx5YCwgcmV0dXJuIGB1bmRlZmluZWRgIHNvIENvZGVCdWlsZCB1c2VzIGl0cyBkZWZhdWx0XG4gKiAgICAgIChgc3RhbmRhcmQ6Ny4wYCkuXG4gKlxuICogYHNjb3BlYCBhbmQgYG9yZ0lkYCBhcmUgcmVxdWlyZWQ6IHRoZSBwZXItb3JnIHBsYXRmb3JtIFNlY3JldCBpcyBuYW1lZFxuICogYHBpcGVsaW5lLWJ1aWxkZXIvPG9yZ0lkPi9wbGF0Zm9ybWAsIGFuZCBgU2VjcmV0LmZyb21TZWNyZXROYW1lVjIoKWBcbiAqIG5lZWRzIGEgQ29uc3RydWN0IHRvIGFuY2hvciB0aGUgaW1wb3J0ZWQgc2VjcmV0IHRvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVBsdWdpbkltYWdlKHNjb3BlOiBDb25zdHJ1Y3QgfCB1bmRlZmluZWQsIHBsdWdpbjogUGx1Z2luLCBvcmdJZD86IHN0cmluZyk6IElCdWlsZEltYWdlIHwgdW5kZWZpbmVkIHtcbiAgLy8gYG1ldGFkYXRhX29ubHlgIHBsdWdpbnMgbGVnaXRpbWF0ZWx5IGhhdmUgbm8gaW1hZ2Ug4oCUIHRoZWlyIHdvcmsgcnVuc1xuICAvLyBpbiB0aGUgZGVmYXVsdCBDb2RlQnVpbGQgaW1hZ2UuIFF1aWV0IHNraXAuXG4gIGlmIChwbHVnaW4uYnVpbGRUeXBlID09PSAnbWV0YWRhdGFfb25seScpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgLy8gYnVpbGRfaW1hZ2UgLyBwcmVidWlsdCBwbHVnaW5zIG11c3QgaGF2ZSBuYW1lICsgdmVyc2lvbiAoREIgY29uc3RyYWludFxuICAvLyBtYWtlcyBib3RoIE5PVCBOVUxMKS4gRGVmZW5zaXZlIGNoZWNrIGluIGNhc2UgYSBtYWxmb3JtZWQgcm93IHNsaXBzIGluLlxuICBpZiAoIXBsdWdpbi5uYW1lIHx8ICFwbHVnaW4udmVyc2lvbikge1xuICAgIGxvZy53YXJuKFxuICAgICAgYFBsdWdpbiBcIiR7cGx1Z2luLm5hbWV9XCIgaGFzIGJ1aWxkVHlwZT0ke3BsdWdpbi5idWlsZFR5cGV9IGJ1dCBtaXNzaW5nIG5hbWUvdmVyc2lvbiDigJQgYCArXG4gICAgICAnQ29kZUJ1aWxkIHdpbGwgcnVuIG9uIGF3cy9jb2RlYnVpbGQvc3RhbmRhcmQ6OC4wIGFuZCB3b25cXCd0IGhhdmUgdGhlIHBsdWdpblxcJ3MgYmFrZWQgdG9vbHMuJyxcbiAgICApO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyBObyBkaWdlc3Qg4oeSIHRoZSBwbHVnaW4gc2VydmljZSBuZXZlciBzaWduZWQgYW4gaW1hZ2UgZm9yIHRoaXMgcm93IChvciB0aGVcbiAgLy8gcmVjb3JkIGRpZG4ndCBjb21lIGZyb20gYC9wbHVnaW5zL2xvb2t1cGApLiBGYWlsIHRoZSBzeW50aCByYXRoZXIgdGhhbiBmYWxsXG4gIC8vIGJhY2sgdG8gdGhlIHRhZy5cbiAgaWYgKCFwbHVnaW4uaW1hZ2VEaWdlc3QgfHwgIS9ec2hhMjU2OlswLTlhLWZdezY0fSQvLnRlc3QocGx1Z2luLmltYWdlRGlnZXN0KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBQbHVnaW4gXCIke3BsdWdpbi5uYW1lfToke3BsdWdpbi52ZXJzaW9ufVwiIGhhcyBidWlsZFR5cGU9JHtwbHVnaW4uYnVpbGRUeXBlfSBidXQgbm8gc2lnbmVkIGltYWdlIGRpZ2VzdC4gYCArXG4gICAgICAnUmVidWlsZCB0aGUgcGx1Z2luIChyZS11cGxvYWQgaXQpIHNvIHRoZSBwbGF0Zm9ybSBjYW4gYnVpbGQsIHNpZ24gYW5kIHJlY29yZCBpdHMgaW1hZ2UuJyxcbiAgICApO1xuICB9XG5cbiAgLy8gVGhlIHJlcG9zaXRvcnkgY29tZXMgZnJvbSBsb29rdXA6IGBwdWJsaWMvPHB1Ymxpc2hlcj4vPG5hbWU+YCBmb3IgYVxuICAvLyBsaXN0ZWQgcGx1Z2luICh0aGUgcmVhZC1vbmx5IGNvcHkgZXZlcnkgb3JnIG1heSBwdWxsKSwgYG9yZy08aWQ+LzxuYW1lPmBcbiAgLy8gZm9yIHRoZSBvcmcncyBvd24uIE5ldmVyIGRlcml2ZWQgaGVyZSBmcm9tIHRoZSByZWNvcmQncyBvd25lciDigJQgYSBsaXN0aW5nJ3NcbiAgLy8gaW1hZ2UgZG9lc24ndCBsaXZlIGluIGl0cyBwdWJsaXNoZXIncyBuYW1lc3BhY2UuXG4gIGNvbnN0IHJlcG9zaXRvcnkgPSAocGx1Z2luIGFzIFBsdWdpbiAmIHsgaW1hZ2VSZXBvc2l0b3J5Pzogc3RyaW5nIHwgbnVsbCB9KS5pbWFnZVJlcG9zaXRvcnk7XG4gIGlmICghcmVwb3NpdG9yeSB8fCAhUExVR0lOX0lNQUdFX1JFUE9TSVRPUllfUkUudGVzdChyZXBvc2l0b3J5KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBQbHVnaW4gXCIke3BsdWdpbi5uYW1lfToke3BsdWdpbi52ZXJzaW9ufVwiIGhhcyBubyBpbWFnZSByZXBvc2l0b3J5IGZyb20gdGhlIHBsdWdpbiBsb29rdXAuIGAgK1xuICAgICAgJ1Jlc29sdmUgcGx1Z2lucyB0aHJvdWdoIHRoZSBwbGF0Zm9ybSAoYHBpcGVsaW5lLW1hbmFnZXIgcGlwZWxpbmUgc3ludGhgIC8gdGhlIGxvb2t1cCBjdXN0b20gcmVzb3VyY2UpLicsXG4gICAgKTtcbiAgfVxuXG4gIGxldCByZWdpc3RyeTtcbiAgdHJ5IHtcbiAgICByZWdpc3RyeSA9IENvbmZpZy5nZXQoJ3JlZ2lzdHJ5Jyk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIENvbmZpZyBuYW1lc3BhY2Ugbm90IGxvYWRlZCAoZS5nLiwgdW5pdCB0ZXN0cyB3aXRob3V0IGZ1bGwgY29uZmlnKS5cbiAgICBsb2cud2FybihcbiAgICAgIGBQbHVnaW4gXCIke3BsdWdpbi5uYW1lfToke3BsdWdpbi52ZXJzaW9ufVwiIG5lZWRzIHRoZSByZWdpc3RyeSBjb25maWcgYnV0IGl0J3Mgbm90IGxvYWRlZCDigJQgYCArXG4gICAgICAnQ29kZUJ1aWxkIHdpbGwgZmFsbCBiYWNrIHRvIGF3cy9jb2RlYnVpbGQvc3RhbmRhcmQ6OC4wLiAnICtcbiAgICAgICdTZXQgSU1BR0VfUkVHSVNUUllfSE9TVCArIElNQUdFX1JFR0lTVFJZX1BPUlQgaW4gcGlwZWxpbmUtbWFuYWdlclxcJ3MgZW52aXJvbm1lbnQuJyxcbiAgICApO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAoIXJlZ2lzdHJ5Py5ob3N0KSB7XG4gICAgbG9nLndhcm4oXG4gICAgICBgUGx1Z2luIFwiJHtwbHVnaW4ubmFtZX06JHtwbHVnaW4udmVyc2lvbn1cIiBuZWVkcyBJTUFHRV9SRUdJU1RSWV9IT1NUIGJ1dCBpdCdzIGVtcHR5IOKAlCBgICtcbiAgICAgICdDb2RlQnVpbGQgd2lsbCBmYWxsIGJhY2sgdG8gYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo4LjAuICcgK1xuICAgICAgJ1NldCBJTUFHRV9SRUdJU1RSWV9IT1NUIGluIHBpcGVsaW5lLW1hbmFnZXJcXCdzIGVudmlyb25tZW50IHRvIHVzZSB0aGUgcGx1Z2luIGltYWdlLicsXG4gICAgKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGlmICghc2NvcGUpIHtcbiAgICBsb2cud2FybihgUGx1Z2luIFwiJHtwbHVnaW4ubmFtZX1cIiBpbWFnZSByZXNvbHV0aW9uIHNraXBwZWQ6IG5vIGNvbnN0cnVjdCBzY29wZSBwcm92aWRlZGApO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyBQZXItb3JnIGF1dGggcmVxdWlyZXMgb3JnSWQg4oCUIHRoZSBTZWNyZXQgaXMgbmFtZWQgcGVyIG9yZy5cbiAgaWYgKCFvcmdJZCkge1xuICAgIGxvZy53YXJuKFxuICAgICAgYFBsdWdpbiBcIiR7cGx1Z2luLm5hbWV9XCIgaW1hZ2UgcmVzb2x1dGlvbiBza2lwcGVkOiBvcmdJZCBpcyByZXF1aXJlZCB0byBgICtcbiAgICAgICdyZXNvbHZlIHRoZSBwZXItb3JnIHBsYXRmb3JtIFNlY3JldCB1c2VkIGZvciBDb2RlQnVpbGQgQmFzaWMgYXV0aC4nLFxuICAgICk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIENvbXBvc2UgdGhlIGltYWdlIFVSSSBmcm9tIHRoZSBsb29rdXAncyByZXBvc2l0b3J5LCBwaW5uZWQgYnkgZGlnZXN0LlxuICAvLyBUaGUgdG9rZW4gc2VydmljZSBncmFudHMgcHVsbCBvbiBgcHVibGljLypgIHRvIGV2ZXJ5IGF1dGhlbnRpY2F0ZWRcbiAgLy8gaWRlbnRpdHkgYW5kIG9uIGBvcmctPGlkPi8qYCB0byB0aGF0IG9yZyAoYW5kIGl0cyB0ZWFtcykuXG4gIC8vIFVzZSB0aGUgZXh0ZXJuYWwgcHVsbCBob3N0L3BvcnQ6IHRoaXMgaW1hZ2UgVVJJIGlzIGNvbnN1bWVkIGJ5IEFXU1xuICAvLyBDb2RlQnVpbGQgKG91dC1vZi1jbHVzdGVyKSwgd2hpY2ggY2FuJ3QgcmVzb2x2ZSB0aGUgaW4tY2x1c3RlclxuICAvLyBgcmVnaXN0cnk6NTAwMGAgQ2x1c3RlcklQLiBGYWxsIGJhY2sgdG8gYGhvc3RgL2Bwb3J0YCBmb3Igc2luZ2xlLWhvc3QgL1xuICAvLyBpbi1jbHVzdGVyLW9ubHkgZGVwbG95cyB3aGVyZSBubyBzZXBhcmF0ZSBwdWxsIGhvc3QgaXMgY29uZmlndXJlZC5cbiAgY29uc3QgeyBob3N0OiBwdWxsSG9zdCwgcG9ydFBhcnQgfSA9IHJlc29sdmVFeHRlcm5hbFB1bGxUYXJnZXQocmVnaXN0cnkpO1xuICBjb25zdCBpbWFnZVVyaSA9IGAke3B1bGxIb3N0fSR7cG9ydFBhcnR9LyR7cmVwb3NpdG9yeX1AJHtwbHVnaW4uaW1hZ2VEaWdlc3R9YDtcblxuICAvLyBDb2RlQnVpbGQgcmVhZHMgYHBpcGVsaW5lLWJ1aWxkZXIvPG9yZ0lkPi9yZWdpc3RyeS1wdXNoYCBhbmQgc2VuZHMgaXRzXG4gIC8vIGB1c2VybmFtZWAvYHBhc3N3b3JkYCBmaWVsZHMgYXMgSFRUUCBCYXNpYyB0byB0aGUgcmVnaXN0cnkuIFRoZSByZWdpc3RyeVxuICAvLyBjaGFsbGVuZ2VzIHdpdGggYSBCZWFyZXIgcmVhbG0gcG9pbnRpbmcgYXQgcGlwZWxpbmUtaW1hZ2UtcmVnaXN0cnknc1xuICAvLyBgL3Rva2VuYCBlbmRwb2ludDsgdGhlIERvY2tlciBjbGllbnQgZm9yd2FyZHMgdGhvc2UgY3JlZHMsIGltYWdlLXJlZ2lzdHJ5XG4gIC8vIGV4Y2hhbmdlcyB0aGUgb3BhcXVlIGBwYl9zYV/igKZgIGtleSBmb3IgYSBzaG9ydC1saXZlZCB0b2tlbiwgYW5kIGEgcmVnaXN0cnlcbiAgLy8gdG9rZW4gc2NvcGVkIHRvIHRoZSBvcmcgaXMgaXNzdWVkLlxuICAvL1xuICAvLyBUaGlzIGlzIHRoZSBSRUdJU1RSWS1PTkxZIGNyZWRlbnRpYWwsIG5vdCB0aGUgb3JnJ3MgZnVsbC1wcml2aWxlZ2VcbiAgLy8gcGxhdGZvcm0gb25lOiBpdHMgZXhjaGFuZ2VkIHRva2VuIGNhcnJpZXMgdGhlIHNpbmdsZSBgcmVnaXN0cnk6cHVzaGAgc2NvcGVcbiAgLy8gYW5kIG5vIEFQSSBwZXJtaXNzaW9ucyBhdCBhbGwsIHNvIGEgQ29kZUJ1aWxkIGpvYiB0aGF0IGxlYWtzIGl0IGNhbiBtb3ZlXG4gIC8vIGltYWdlcyBpbnNpZGUgdGhpcyBvcmcncyBuYW1lc3BhY2UgYW5kIG5vdGhpbmcgZWxzZS4gVGhlIHBsdWdpbi1sb29rdXBcbiAgLy8gTGFtYmRhIGtlZXBzIHJlYWRpbmcgYC4uLi9wbGF0Zm9ybWAg4oCUIGl0IGNhbGxzIHRoZSBvcmRpbmFyeSBBUEksIHdoaWNoIG5vXG4gIC8vIHNpbmdsZSBzY29wZSBjb3ZlcnMuXG4gIC8vIFByb3Zpc2lvbiBpdCB3aXRoOiBwaXBlbGluZS1tYW5hZ2VyIGluZnJhIHN0b3JlLXRva2VuIC0tc2NvcGUgcmVnaXN0cnk6cHVzaFxuICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcbiAgY29uc3Qgc2VjcmV0TmFtZSA9IENvcmVDb25zdGFudHMuc2VjcmV0UGF0aChvcmdJZCwgUkVHSVNUUllfQ1JFREVOVElBTF9TRUNSRVQpO1xuICAvLyBDREsgY29uc3RydWN0IElEcyBhbGxvdyBvbmx5IFtBLVphLXowLTlfLV07IHNhbml0aXplIHRoZSBzZWNyZXQgbmFtZS5cbiAgY29uc3Qgc2VjcmV0Q29uc3RydWN0SWQgPSBgUmVnaXN0cnlDcmVkc18ke3NlY3JldE5hbWUucmVwbGFjZSgvW15BLVphLXowLTlfLV0vZywgJ18nKX1gO1xuICBjb25zdCBjcmVkZW50aWFsc1NlY3JldCA9IChzdGFjay5ub2RlLnRyeUZpbmRDaGlsZChzZWNyZXRDb25zdHJ1Y3RJZCkgYXMgU2VjcmV0IHwgdW5kZWZpbmVkKVxuICAgID8/IFNlY3JldC5mcm9tU2VjcmV0TmFtZVYyKHN0YWNrLCBzZWNyZXRDb25zdHJ1Y3RJZCwgc2VjcmV0TmFtZSk7XG5cbiAgcmV0dXJuIExpbnV4QnVpbGRJbWFnZS5mcm9tRG9ja2VyUmVnaXN0cnkoaW1hZ2VVcmksIHtcbiAgICBzZWNyZXRzTWFuYWdlckNyZWRlbnRpYWxzOiBjcmVkZW50aWFsc1NlY3JldCxcbiAgfSk7XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgZmFsbGJhY2sgQ29kZUJ1aWxkIGltYWdlIGZvciBzdGVwcyB3aXRob3V0IGEgcGx1Z2luLWJha2VkIG9uZS5cbiAqXG4gKiBSZWFkcyBgYXdzLmNvZGVCdWlsZC5kZWZhdWx0SW1hZ2VgIChlbnY6IGBDT0RFQlVJTERfREVGQVVMVF9JTUFHRWApLlxuICogRGVmYXVsdDogYHBpcGVsaW5lLWJvb3RzdHJhcDoxLjBgIOKAlCB0aGUgbG9jYWwgdGFnIGJ1aWx0IGJ5XG4gKiBgZGVwbG95L2NvZGVidWlsZC9ib290c3RyYXAvRG9ja2VyZmlsZWAuIFBpbm5lZCBieVxuICogYGF3cy5jb2RlQnVpbGQuZGVmYXVsdEltYWdlRGlnZXN0YCAoZW52OiBgQ09ERUJVSUxEX0RFRkFVTFRfSU1BR0VfRElHRVNUYClcbiAqIHdoZW4gc2V0LCB0aGUgc2FtZSB3YXkgcGx1Z2luIGltYWdlcyBhcmUgcGlubmVkIGJ5IHRoZWlyIHNpZ25lZCBkaWdlc3QuXG4gKlxuICogLSBBV1MgY3VyYXRlZCBpbWFnZSAoYGF3cy9jb2RlYnVpbGQvKmApOiB1c2UgdGhlIG1hdGNoaW5nIGBMaW51eEJ1aWxkSW1hZ2VgXG4gKiAgIGNvbnN0YW50IHNvIENESyBlbWl0cyBgaW1hZ2VQdWxsQ3JlZGVudGlhbHNUeXBlOiBDT0RFQlVJTERgLiBVc2luZ1xuICogICBgZnJvbURvY2tlclJlZ2lzdHJ5KClgIGhlcmUgd291bGQgc2V0IFNFUlZJQ0VfUk9MRSBjcmVkZW50aWFscywgd2hpY2hcbiAqICAgQ0ZOIHJlamVjdHMgd2l0aCBcImNhbm5vdCB1c2UgYSBDb2RlQnVpbGQgY3VyYXRlZCBpbWFnZSB3aXRoXG4gKiAgIGltYWdlUHVsbENyZWRlbnRpYWxzVHlwZSBTRVJWSUNFX1JPTEVcIi5cbiAqIC0gQmFyZSB0YWcgKG5vIGAvYCk6IGF1dG8tcHJlZml4ZWQgdG9cbiAqICAgYDxyZWdpc3RyeS1ob3N0Pjo8cG9ydD4vbGlicmFyeS88dGFnPmAgdXNpbmcgdGhlIHJlZ2lzdHJ5IGNvbmZpZyxcbiAqICAgd2l0aCB0aGUgcGVyLW9yZyBwbGF0Zm9ybSBTZWNyZXQgYXMgQmFzaWMgYXV0aCDigJQgc2FtZSBwYXRoXG4gKiAgIGByZXNvbHZlUGx1Z2luSW1hZ2UoKWAgdXNlcyBmb3IgcGx1Z2luIGltYWdlcy4gTmVlZHMgYHNjb3BlYCArIGBvcmdJZGAuXG4gKiAtIEZ1bGx5LXF1YWxpZmllZCByZWdpc3RyeSBVUkkgKGNvbnRhaW5zIGAvYCk6IHVzZWQgYXMtaXMsIG5vIGF1dGggd2lyZWQuXG4gKiAtIE1pc3NpbmcgcmVnaXN0cnkgY29uZmlnIG9yIHNjb3BlL29yZ0lkIOKGkiBmYWxscyBiYWNrIHRvXG4gKiAgIGBhd3MvY29kZWJ1aWxkL3N0YW5kYXJkOjguMGAgKGFzIGEgQ1VSQVRFRCBpbWFnZSwgc2VlIGFib3ZlKSwgd2l0aCBhXG4gKiAgIHdhcm5pbmcgc28gc3ludGggZGVncmFkZXMgZ3JhY2VmdWxseSBvbiBwYXJ0aWFsbHkgY29uZmlndXJlZCBlbnZzLlxuICovXG5jb25zdCBTVEFOREFSRF84XzAgPSAnYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo4LjAnO1xuXG4vKipcbiAqIGF3cy1jZGstbGliIDIuMjU4IGhhcyBubyBgTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzhfMGAgc3RhdGljIHlldCwgc28gdGhlXG4gKiBjdXJhdGVkIDguMCBmYWxsYmFjayByZXNvbHZlcyB2aWEgYGZyb21Db2RlQnVpbGRJbWFnZUlkYCAoc3RpbGwgQ09ERUJVSUxEIGNyZWRzKS5cbiAqL1xuY29uc3QgZmFsbGJhY2tCdWlsZEltYWdlID0gKCk6IElCdWlsZEltYWdlID0+IExpbnV4QnVpbGRJbWFnZS5mcm9tQ29kZUJ1aWxkSW1hZ2VJZChTVEFOREFSRF84XzApO1xuXG4vKipcbiAqIE1hcCBBV1MgY3VyYXRlZCBgYXdzL2NvZGVidWlsZC8qYCBpbWFnZSBzdHJpbmdzIHRvIHRoZSBtYXRjaGluZ1xuICogYExpbnV4QnVpbGRJbWFnZWAgc3RhdGljLiBFeHRlbmQgd2hlbiBuZXdlciBzdGFuZGFyZCBpbWFnZXMgc2hpcC5cbiAqIFJldHVybnMgYHVuZGVmaW5lZGAgZm9yIG5vbi1jdXJhdGVkIHN0cmluZ3Mg4oCUIGNhbGxlciBzaG91bGQgdXNlXG4gKiBgZnJvbURvY2tlclJlZ2lzdHJ5KClgIGZvciB0aG9zZS5cbiAqL1xuZnVuY3Rpb24gY3VyYXRlZExpbnV4QnVpbGRJbWFnZShpbWFnZUlkOiBzdHJpbmcpOiBJQnVpbGRJbWFnZSB8IHVuZGVmaW5lZCB7XG4gIGlmICghaW1hZ2VJZC5zdGFydHNXaXRoKCdhd3MvY29kZWJ1aWxkLycpKSByZXR1cm4gdW5kZWZpbmVkO1xuICBzd2l0Y2ggKGltYWdlSWQpIHtcbiAgICBjYXNlICdhd3MvY29kZWJ1aWxkL3N0YW5kYXJkOjYuMCc6IHJldHVybiBMaW51eEJ1aWxkSW1hZ2UuU1RBTkRBUkRfNl8wO1xuICAgIGNhc2UgJ2F3cy9jb2RlYnVpbGQvc3RhbmRhcmQ6NS4wJzogcmV0dXJuIExpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF81XzA7XG4gICAgLy8gTmV3ZXIgY29kZW5hbWVkIGltYWdlcyByb3V0ZSB0aHJvdWdoIGZyb21Db2RlQnVpbGRJbWFnZUlkLCB3aGljaFxuICAgIC8vIENESyBhbHNvIG1hcmtzIGFzIENPREVCVUlMRCBjcmVkZW50aWFscyAoY3VyYXRlZCkuXG4gICAgZGVmYXVsdDogcmV0dXJuIExpbnV4QnVpbGRJbWFnZS5mcm9tQ29kZUJ1aWxkSW1hZ2VJZChpbWFnZUlkKTtcbiAgfVxufVxuXG4vKiogQSByZWdpc3RyeSBtYW5pZmVzdCBkaWdlc3QgYXMgQ29kZUJ1aWxkIGFjY2VwdHMgaXQgaW4gYW4gaW1hZ2UgcmVmZXJlbmNlLiAqL1xuY29uc3QgSU1BR0VfRElHRVNUX1JFID0gL15zaGEyNTY6WzAtOWEtZl17NjR9JC87XG5cbi8qKlxuICogUHVsbCByZWZlcmVuY2UgZm9yIHRoZSBjb25maWd1cmVkIGRlZmF1bHQgaW1hZ2UncyBiYXJlIGA8cmVwbz46PHRhZz5gOlxuICogYDxyZXBvPkA8ZGlnZXN0PmAgd2hlbiB0aGUgYm9vdHN0cmFwIGRpZ2VzdCBpcyBjb25maWd1cmVkLCBlbHNlIHRoZSB0YWdcbiAqIGl0c2VsZiB3aXRoIGEgbG91ZCB3YXJuaW5nLiBBIGRpZ2VzdCB0aGF0IGlzIHNldCBidXQgbWFsZm9ybWVkIGZhaWxzIHRoZVxuICogc3ludGgg4oCUIGl0IGlzIGEgdHlwbywgYW5kIHNpbGVudGx5IGZhbGxpbmcgYmFjayB0byB0aGUgdGFnIHdvdWxkIGhpZGUgaXQuXG4gKi9cbmZ1bmN0aW9uIHBpbm5lZERlZmF1bHRJbWFnZVJlZihjb25maWd1cmVkOiBzdHJpbmcsIGRpZ2VzdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFkaWdlc3QpIHtcbiAgICBsb2cud2FybihcbiAgICAgIGBDT0RFQlVJTERfREVGQVVMVF9JTUFHRT0nJHtjb25maWd1cmVkfScgaXMgcHVsbGVkIGJ5IGl0cyBNVVRBQkxFIHRhZyDigJQgQ09ERUJVSUxEX0RFRkFVTFRfSU1BR0VfRElHRVNUIGlzIG5vdCBzZXQuIGAgK1xuICAgICAgJ0FueW9uZSBob2xkaW5nIGEgcmVnaXN0cnkgcHVzaCBjcmVkZW50aWFsIGZvciBsaWJyYXJ5LyBjb3VsZCByZS1wb2ludCBpdC4gU2V0IENPREVCVUlMRF9ERUZBVUxUX0lNQUdFX0RJR0VTVCAnICtcbiAgICAgICd0byB0aGUgZGlnZXN0IGRlcGxveS9iaW4vYnVpbGQtY29kZWJ1aWxkLWJvb3RzdHJhcC5zaCBwcmludHMgYWZ0ZXIgcHVibGlzaGluZy4nLFxuICAgICk7XG4gICAgcmV0dXJuIGNvbmZpZ3VyZWQ7XG4gIH1cbiAgaWYgKCFJTUFHRV9ESUdFU1RfUkUudGVzdChkaWdlc3QpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDT0RFQlVJTERfREVGQVVMVF9JTUFHRV9ESUdFU1Q9JyR7ZGlnZXN0fScgaXMgbm90IGEgc2hhMjU2IG1hbmlmZXN0IGRpZ2VzdCAoc2hhMjU2Ojw2NCBoZXg+KS5gKTtcbiAgfVxuICBjb25zdCByZXBvID0gY29uZmlndXJlZC5yZXBsYWNlKC9ALiokLywgJycpLnJlcGxhY2UoLzpbXjovXSskLywgJycpO1xuICByZXR1cm4gYCR7cmVwb31AJHtkaWdlc3R9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVEZWZhdWx0QnVpbGRJbWFnZShzY29wZT86IENvbnN0cnVjdCwgb3JnSWQ/OiBzdHJpbmcpOiBJQnVpbGRJbWFnZSB7XG4gIGxldCBjb25maWd1cmVkOiBzdHJpbmc7XG4gIGxldCBkaWdlc3QgPSAnJztcbiAgdHJ5IHtcbiAgICBjb25zdCBjb2RlQnVpbGQgPSBDb25maWcuZ2V0KCdhd3MnKS5jb2RlQnVpbGQ7XG4gICAgY29uZmlndXJlZCA9IGNvZGVCdWlsZC5kZWZhdWx0SW1hZ2U7XG4gICAgZGlnZXN0ID0gY29kZUJ1aWxkLmRlZmF1bHRJbWFnZURpZ2VzdDtcbiAgfSBjYXRjaCB7XG4gICAgY29uZmlndXJlZCA9IFNUQU5EQVJEXzhfMDtcbiAgfVxuXG4gIC8vIEFXUyBjdXJhdGVkIGltYWdlIOKGkiBDT0RFQlVJTEQgY3JlZGVudGlhbHMuIE1VU1QgZ28gdGhyb3VnaCB0aGVcbiAgLy8gTGludXhCdWlsZEltYWdlIGNvbnN0YW50cywgbm90IGZyb21Eb2NrZXJSZWdpc3RyeSgpLlxuICBjb25zdCBjdXJhdGVkID0gY3VyYXRlZExpbnV4QnVpbGRJbWFnZShjb25maWd1cmVkKTtcbiAgaWYgKGN1cmF0ZWQpIHJldHVybiBjdXJhdGVkO1xuXG4gIC8vIEZ1bGx5LXF1YWxpZmllZCBVUkkg4oCUIG9wZXJhdG9yIG93bnMgaXQuIE5vIHJlZ2lzdHJ5L1NlY3JldCB3aXJpbmcuIEFuXG4gIC8vIG9wZXJhdG9yLXN1cHBsaWVkIGRpZ2VzdCBpcyBob25vdXJlZDsgYSB0YWctb25seSBVUkkgaXMgd2FybmVkIGFib3V0LlxuICBpZiAoY29uZmlndXJlZC5pbmNsdWRlcygnLycpKSB7XG4gICAgcmV0dXJuIExpbnV4QnVpbGRJbWFnZS5mcm9tRG9ja2VyUmVnaXN0cnkoXG4gICAgICBjb25maWd1cmVkLmluY2x1ZGVzKCdAc2hhMjU2OicpID8gY29uZmlndXJlZCA6IHBpbm5lZERlZmF1bHRJbWFnZVJlZihjb25maWd1cmVkLCBkaWdlc3QpLFxuICAgICk7XG4gIH1cblxuICAvLyBCYXJlIHRhZyDihpIgYXV0by1wcmVmaXggd2l0aCB0aGUgcGxhdGZvcm0gcmVnaXN0cnksIG1pcnJvcmluZ1xuICAvLyByZXNvbHZlUGx1Z2luSW1hZ2UoKS4gQmFpbCB0byB0aGUgY3VyYXRlZCBzdGFuZGFyZDo4LjAgZmFsbGJhY2tcbiAgLy8gKHdpdGggYSB3YXJuaW5nKSBhdCBlYWNoIG1pc3NpbmcgcHJlcmVxdWlzaXRlIHNvIHN5bnRoIGRlZ3JhZGVzXG4gIC8vIGdyYWNlZnVsbHkgb24gcGFydGlhbGx5IGNvbmZpZ3VyZWQgZW52aXJvbm1lbnRzIGluc3RlYWQgb2YgZmFpbGluZy5cbiAgbGV0IHJlZ2lzdHJ5O1xuICB0cnkge1xuICAgIHJlZ2lzdHJ5ID0gQ29uZmlnLmdldCgncmVnaXN0cnknKTtcbiAgfSBjYXRjaCB7XG4gICAgbG9nLndhcm4oXG4gICAgICBgQ09ERUJVSUxEX0RFRkFVTFRfSU1BR0U9JyR7Y29uZmlndXJlZH0nIGlzIGEgYmFyZSB0YWcgYnV0IHJlZ2lzdHJ5IGNvbmZpZyBub3QgbG9hZGVkIOKAlCBgICtcbiAgICAgIGBmYWxsaW5nIGJhY2sgdG8gJHtTVEFOREFSRF84XzB9LiBTZXQgSU1BR0VfUkVHSVNUUllfSE9TVCArIElNQUdFX1JFR0lTVFJZX1BPUlQuYCxcbiAgICApO1xuICAgIHJldHVybiBmYWxsYmFja0J1aWxkSW1hZ2UoKTtcbiAgfVxuICBpZiAoIXJlZ2lzdHJ5Py5ob3N0KSB7XG4gICAgbG9nLndhcm4oXG4gICAgICBgQ09ERUJVSUxEX0RFRkFVTFRfSU1BR0U9JyR7Y29uZmlndXJlZH0nIGlzIGEgYmFyZSB0YWcgYnV0IElNQUdFX1JFR0lTVFJZX0hPU1QgaXMgZW1wdHkg4oCUIGAgK1xuICAgICAgYGZhbGxpbmcgYmFjayB0byAke1NUQU5EQVJEXzhfMH0uYCxcbiAgICApO1xuICAgIHJldHVybiBmYWxsYmFja0J1aWxkSW1hZ2UoKTtcbiAgfVxuICBpZiAoIXNjb3BlIHx8ICFvcmdJZCkge1xuICAgIGxvZy53YXJuKFxuICAgICAgYENPREVCVUlMRF9ERUZBVUxUX0lNQUdFPScke2NvbmZpZ3VyZWR9JyBuZWVkcyBzY29wZStvcmdJZCBmb3IgU2VjcmV0IGF1dGgg4oCUIGAgK1xuICAgICAgYGZhbGxpbmcgYmFjayB0byAke1NUQU5EQVJEXzhfMH0uIChDYWxsZXIgZGlkIG5vdCBzdXBwbHkgdGhlbS4pYCxcbiAgICApO1xuICAgIHJldHVybiBmYWxsYmFja0J1aWxkSW1hZ2UoKTtcbiAgfVxuXG4gIC8vIFVzZSB0aGUgZXh0ZXJuYWwgcHVsbCBob3N0L3BvcnQgKG5vdCB0aGUgaW4tY2x1c3RlciBob3N0KSDigJQgdGhpcyBVUkkgaXNcbiAgLy8gY29uc3VtZWQgYnkgQVdTIENvZGVCdWlsZCwgd2hpY2ggY2FuJ3QgcmVzb2x2ZSB0aGUgYHJlZ2lzdHJ5OjUwMDBgIENsdXN0ZXJJUC5cbiAgY29uc3QgeyBob3N0OiBwdWxsSG9zdCwgcG9ydFBhcnQgfSA9IHJlc29sdmVFeHRlcm5hbFB1bGxUYXJnZXQocmVnaXN0cnkpO1xuICBjb25zdCBpbWFnZVVyaSA9IGAke3B1bGxIb3N0fSR7cG9ydFBhcnR9L2xpYnJhcnkvJHtwaW5uZWREZWZhdWx0SW1hZ2VSZWYoY29uZmlndXJlZCwgZGlnZXN0KX1gO1xuXG4gIC8vIFNhbWUgU2VjcmV0IGFzIHJlc29sdmVQbHVnaW5JbWFnZSDigJQgdGhlIHBlci1vcmcgUkVHSVNUUlkgY3JlZGVudGlhbCwgd2hpY2hcbiAgLy8gQ29kZUJ1aWxkIHNlbmRzIGFzIEJhc2ljIGF1dGggYW5kIGltYWdlLXJlZ2lzdHJ5IGV4Y2hhbmdlcyBmb3IgYSBzY29wZWQgdG9rZW4uXG4gIGNvbnN0IHN0YWNrID0gU3RhY2sub2Yoc2NvcGUpO1xuICBjb25zdCBzZWNyZXROYW1lID0gQ29yZUNvbnN0YW50cy5zZWNyZXRQYXRoKG9yZ0lkLCBSRUdJU1RSWV9DUkVERU5USUFMX1NFQ1JFVCk7XG4gIGNvbnN0IHNlY3JldENvbnN0cnVjdElkID0gYFJlZ2lzdHJ5Q3JlZHNfJHtzZWNyZXROYW1lLnJlcGxhY2UoL1teQS1aYS16MC05Xy1dL2csICdfJyl9YDtcbiAgY29uc3QgY3JlZGVudGlhbHNTZWNyZXQgPSAoc3RhY2subm9kZS50cnlGaW5kQ2hpbGQoc2VjcmV0Q29uc3RydWN0SWQpIGFzIFNlY3JldCB8IHVuZGVmaW5lZClcbiAgICA/PyBTZWNyZXQuZnJvbVNlY3JldE5hbWVWMihzdGFjaywgc2VjcmV0Q29uc3RydWN0SWQsIHNlY3JldE5hbWUpO1xuXG4gIHJldHVybiBMaW51eEJ1aWxkSW1hZ2UuZnJvbURvY2tlclJlZ2lzdHJ5KGltYWdlVXJpLCB7XG4gICAgc2VjcmV0c01hbmFnZXJDcmVkZW50aWFsczogY3JlZGVudGlhbHNTZWNyZXQsXG4gIH0pO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIENvZGVCdWlsZCBzdGVwIG9yIFNoZWxsIHN0ZXAgYmFzZWQgb24gcGx1Z2luIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogTWV0YWRhdGEgbWVyZ2Ugb3JkZXIgKGxhc3Qgd2lucyk6XG4gKiAgIDEuIFBsdWdpbiBtZXRhZGF0YSAoZnJvbSBwbHVnaW4ubWV0YWRhdGEgaW4gZGF0YWJhc2UpIOKAlCB0aGUgcGx1Z2luXG4gKiAgICAgIGF1dGhvcidzIGJha2VkLWluIGRlZmF1bHRzXG4gKiAgIDIuIFN0ZXAtbGV2ZWwgbWV0YWRhdGEgKGZyb20gb3B0aW9ucy5tZXRhZGF0YSkg4oCUIHRoZSBwaXBlbGluZSBhdXRob3Inc1xuICogICAgICBwZXItc3RlcCBvdmVycmlkZXMsIHdoaWNoIGFyZSBtb3JlIHNwZWNpZmljIGFuZCBtdXN0IHdpblxuICpcbiAqIEVudmlyb25tZW50IG1lcmdlIG9yZGVyIChsYXN0IHdpbnMpOlxuICogICAxLiBQbHVnaW4gZW52IHZhcnMgKGZyb20gcGx1Z2luLmVudilcbiAqICAgMi4gQ3VzdG9tIGVudiB2YXJzIChmcm9tIG9wdGlvbnMuZW52KVxuICogICAzLiBXT1JLRElSIGZyb20gbWVyZ2VkIG1ldGFkYXRhXG4gKlxuICogQ0RLIHByb3Agc3ByZWFkIG9yZGVyIChsYXN0IHdpbnMpOlxuICogICBwcm9ncmFtbWF0aWMgZGVmYXVsdHMgKGlucHV0LCBjb21tYW5kcywgZW52LCBuZXR3b3JrKSDihpIgbWV0YWRhdGEgb3ZlcnJpZGVzXG4gKlxuICogVGhpcyBtZWFucyBtZXRhZGF0YSBrZXlzIGxpa2UgYGF3czpjZGs6cGlwZWxpbmVzOmNvZGVidWlsZHN0ZXA6Y29tbWFuZHNgXG4gKiB3aWxsIG92ZXJyaWRlIHRoZSBwbHVnaW4tZGVyaXZlZCBjb21tYW5kcyB3aGVuIGV4cGxpY2l0bHkgc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29kZUJ1aWxkU3RlcChvcHRpb25zOiBDb2RlQnVpbGRTdGVwT3B0aW9ucyk6IFNoZWxsU3RlcCB8IENvZGVCdWlsZFN0ZXAgfCBNYW51YWxBcHByb3ZhbFN0ZXAge1xuICBjb25zdCB7XG4gICAgaWQsIGlucHV0LCBtZXRhZGF0YSwgbmV0d29yaywgc2NvcGUsXG4gICAgcHJlSW5zdGFsbENvbW1hbmRzLCBwb3N0SW5zdGFsbENvbW1hbmRzLCBwcmVDb21tYW5kcywgcG9zdENvbW1hbmRzLFxuICAgIGVudjogY3VzdG9tRW52LCBhZGRpdGlvbmFsSW5wdXRzLCB0aW1lb3V0LCBmYWlsdXJlQmVoYXZpb3IsXG4gICAgYXJ0aWZhY3RNYW5hZ2VyLCBzdGFnZU5hbWUsIHN0YWdlQWxpYXMsIHBsdWdpbkFsaWFzLCBvcmdJZCwgcGlwZWxpbmVTY29wZSxcbiAgfSA9IG9wdGlvbnM7XG5cbiAgLy8gUmVzb2x2ZSB7eyAuLi4gfX0gdGVtcGxhdGVzIGluIHBsdWdpbiBzcGVjIGZpZWxkcyBhZ2FpbnN0IHRoZSBwaXBlbGluZSBzY29wZS5cbiAgLy8gRXZlcnkgY2FsbCBnb2VzIHRocm91Z2ggdGhlIHJlc29sdmVyIOKAlCBwbHVnaW5zIHdpdGhvdXQgdGVtcGxhdGUgdG9rZW5zIGFyZVxuICAvLyBhIG5vLW9wIGZhc3QgcGF0aCBpbnNpZGUgcmVzb2x2ZVBsdWdpblRlbXBsYXRlcygpLlxuICBjb25zdCBwbHVnaW4gPSByZXNvbHZlUGx1Z2luVGVtcGxhdGVzKG9wdGlvbnMucGx1Z2luLCBwaXBlbGluZVNjb3BlKTtcblxuICAvLyBQZXItc3RlcCBtZXRhZGF0YSAodGhlIHBpcGVsaW5lIGF1dGhvcidzIG92ZXJyaWRlcywgZS5nLiBKQVZBX1ZFUlNJT049MjUpXG4gIC8vIG11c3Qgd2luIG92ZXIgdGhlIHBsdWdpbidzIGNhdGFsb2cgYG1ldGFkYXRhYCBkZWZhdWx0cywgc28gaXQgZ29lcyBMQVNULlxuICAvLyBSZXZlcnNpbmcgdGhlc2Ugc2lsZW50bHkgZHJvcHBlZCBwZXItc3RlcCBvdmVycmlkZXMgZm9yIGFueSBwbHVnaW4gdGhhdFxuICAvLyBzaGlwcyBub24tZW1wdHkgY2F0YWxvZyBtZXRhZGF0YSAocGx1Z2lucyB0aGF0IGNhcnJ5IGRlZmF1bHRzIHVuZGVyIGBlbnZgXG4gIC8vIGluc3RlYWQg4oCUIGxpa2UgamF2YS1jb3JyZXR0byDigJQgd2VyZSB1bmFmZmVjdGVkLCB3aGljaCBtYXNrZWQgdGhpcykuXG4gIGNvbnN0IG1lcmdlZCA9IG1lcmdlKHBsdWdpbi5tZXRhZGF0YSA/PyB7fSwgbWV0YWRhdGEgPz8ge30pO1xuXG4gIC8vIE1hbnVhbEFwcHJvdmFsU3RlcDogbm8gY29tbWFuZHMsIGVudiwgY29tcHV0ZSwgb3IgbmV0d29yayDigJQganVzdCBpZCArIG9wdGlvbmFsIGNvbW1lbnRcbiAgaWYgKHBsdWdpbi5wbHVnaW5UeXBlID09PSBQbHVnaW5UeXBlLk1BTlVBTF9BUFBST1ZBTF9TVEVQKSB7XG4gICAgcmV0dXJuIG5ldyBNYW51YWxBcHByb3ZhbFN0ZXAoaWQsIHtcbiAgICAgIGNvbW1lbnQ6IHR5cGVvZiBtZXJnZWQuQVBQUk9WQUxfQ09NTUVOVCA9PT0gJ3N0cmluZycgPyBtZXJnZWQuQVBQUk9WQUxfQ09NTUVOVCA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIGxvZy5kZWJ1ZygnW0NyZWF0ZUNvZGVCdWlsZFN0ZXBdIEJ1aWxkaW5nIHN0ZXAgd2l0aCBtZXJnZWQgbWV0YWRhdGEnKTtcblxuICAvLyBXYXJuIGFib3V0IHJlcXVpcmVkIHNlY3JldHMgd2l0aG91dCBvcmdJZCAoY2FuJ3QgcmVzb2x2ZSlcbiAgY29uc3QgcmVxdWlyZWRTZWNyZXRzID0gcGx1Z2luLnNlY3JldHM/LmZpbHRlcihzID0+IHMucmVxdWlyZWQpID8/IFtdO1xuICBpZiAocmVxdWlyZWRTZWNyZXRzLmxlbmd0aCA+IDAgJiYgIW9yZ0lkKSB7XG4gICAgbG9nLndhcm4oXG4gICAgICBgUGx1Z2luIFwiJHtwbHVnaW4ubmFtZX1cIiBkZWNsYXJlcyAke3JlcXVpcmVkU2VjcmV0cy5sZW5ndGh9IHJlcXVpcmVkIHNlY3JldChzKSBidXQgbm8gb3JnSWQgaXMgYXZhaWxhYmxlLiBgICtcbiAgICAgIGBTZWNyZXRzIHdpbGwgbm90IGJlIGluamVjdGVkOiAke3JlcXVpcmVkU2VjcmV0cy5tYXAocyA9PiBzLm5hbWUpLmpvaW4oJywgJyl9YCxcbiAgICApO1xuICB9XG5cbiAgLy8gUmVzb2x2ZSBwbHVnaW4gc2VjcmV0cyBhcyBTRUNSRVRTX01BTkFHRVIgZW52IHZhcnMg4oCUIG9ubHkgUkVRVUlSRUQgb25lcy5cbiAgLy8gQ29kZUJ1aWxkIHRyZWF0cyBhIFNFQ1JFVFNfTUFOQUdFUiBlbnYgdmFyIGFzIE1BTkRBVE9SWTogaXQgZmFpbHMgdGhlIGJ1aWxkXG4gIC8vIGF0IERPV05MT0FEX1NPVVJDRSAoXCJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uOiBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWRcbiAgLy8gc2VjcmV0XCIpIGlmIHRoZSBzZWNyZXQgaXMgYWJzZW50LiBBdXRvLXdpcmluZyBhbiBPUFRJT05BTCBzZWNyZXRcbiAgLy8gKGByZXF1aXJlZDogZmFsc2VgLCBlLmcuIE5WRF9BUElfS0VZIC8gU0VNR1JFUF9BUFBfVE9LRU4pIHRoZSBvcGVyYXRvciBoYXNuJ3RcbiAgLy8gY3JlYXRlZCB3b3VsZCB0aGVyZWZvcmUgYnJlYWsgZXZlcnkgYnVpbGQg4oCUIHRoZSBleGFjdCBvcHBvc2l0ZSBvZiBcIm9wdGlvbmFsXCIuXG4gIC8vIE9wdGlvbmFsIHNlY3JldHMgYXJlIGxlZnQgZm9yIHRoZSBwbHVnaW4gdG8gcmVhZCBvbmx5IHdoZXJlIHRoZSBvcGVyYXRvciBoYXNcbiAgLy8gcHJvdmlzaW9uZWQgdGhlbSAob3V0LW9mLWJhbmQgZW52L3NlY3JldCksIG5vdCBmb3JjZS1pbmplY3RlZCBoZXJlLlxuICBjb25zdCBzZWNyZXRFbnZWYXJzID0gKHJlcXVpcmVkU2VjcmV0cy5sZW5ndGggJiYgb3JnSWQpXG4gICAgPyB0b1NlY3JldEVudlZhcnMocmVxdWlyZWRTZWNyZXRzLCBvcmdJZClcbiAgICA6IHt9O1xuXG4gIGNvbnN0IGVudiA9IGJ1aWxkRW52KHBsdWdpbiwgbWVyZ2VkLCBjdXN0b21FbnYpO1xuXG4gIC8vIFNlY3VyaXR5LXJlcG9ydCB1cGxvYWQgKG9wdC1pbik6IGluamVjdCB0aGUgb3JnJ3MgcmVwb3J0aW5nOmluZ2VzdC1zY29wZWRcbiAgLy8ga2V5IOKAlCBuZXZlciB0aGUgZnVsbCBwbGF0Zm9ybSBjcmVkZW50aWFsIOKAlCBhcyBhIFNFQ1JFVFNfTUFOQUdFUiB2YXJpYWJsZS5cbiAgLy8gQ0RLIGdyYW50cyB0aGUgc3RlcCByb2xlIHJlYWQgb24gZXhhY3RseSB0aGF0IHNlY3JldC4gU2VlIGNvcmUvc2VjdXJpdHktcmVwb3J0cy50cy5cbiAgY29uc3QgcmVwb3J0VXBsb2FkID0gZW52W1NFQ1VSSVRZX1JFUE9SVF9VUExPQURfRU5WXSA9PT0gJ3RydWUnO1xuICBpZiAocmVwb3J0VXBsb2FkICYmICFvcmdJZCkge1xuICAgIGxvZy53YXJuKGBTdGVwIFwiJHtpZH1cIiBzZXRzICR7U0VDVVJJVFlfUkVQT1JUX1VQTE9BRF9FTlZ9PXRydWUgYnV0IG5vIG9yZ0lkIGlzIGF2YWlsYWJsZSDigJQgdGhlIHVwbG9hZCBrZXkgY2Fubm90IGJlIGluamVjdGVkIGFuZCB0aGUgdXBsb2FkIHdpbGwgZmFpbC5gKTtcbiAgfVxuICBjb25zdCByZXBvcnRLZXlFbnZWYXI6IFJlY29yZDxzdHJpbmcsIHsgdmFsdWU6IHN0cmluZzsgdHlwZTogQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlVHlwZSB9PiA9IHJlcG9ydFVwbG9hZCAmJiBvcmdJZFxuICAgID8ge1xuICAgICAgW1NFQ1VSSVRZX1JFUE9SVF9LRVlfRU5WXToge1xuICAgICAgICB2YWx1ZTogYCR7Q29yZUNvbnN0YW50cy5zZWNyZXRQYXRoKG9yZ0lkLCBTRUNVUklUWV9SRVBPUlRfU0VDUkVUX0xFQUYpfTpwYXNzd29yZGAsXG4gICAgICAgIHR5cGU6IEJ1aWxkRW52aXJvbm1lbnRWYXJpYWJsZVR5cGUuU0VDUkVUU19NQU5BR0VSLFxuICAgICAgfSxcbiAgICB9XG4gICAgOiB7fTtcblxuICAvLyBDb2RlUGlwZWxpbmUgcmVzb2x2ZWQgdmFyaWFibGVzIOKAlCBtdXN0IGJlIGluIENvZGVCdWlsZFN0ZXAuZW52IChhY3Rpb24tbGV2ZWwpLFxuICAvLyBub3QgYnVpbGRFbnZpcm9ubWVudC5lbnZpcm9ubWVudFZhcmlhYmxlcyAocHJvamVjdC1sZXZlbClcbiAgY29uc3QgYWN0aW9uRW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIFBJUEVMSU5FX0VYRUNVVElPTl9JRDogJyN7Y29kZXBpcGVsaW5lLlBpcGVsaW5lRXhlY3V0aW9uSWR9JyxcbiAgfTtcblxuICBjb25zdCBvdXRwdXREaXIgPSBwbHVnaW4ucHJpbWFyeU91dHB1dERpcmVjdG9yeTtcbiAgY29uc3QgZW5zdXJlT3V0cHV0RGlyID0gKG91dHB1dERpciAmJiAhb3V0cHV0RGlyLmluY2x1ZGVzKCcqJykpXG4gICAgPyBbYG1rZGlyIC1wIFwiJHtvdXRwdXREaXJ9XCIgJiYgdG91Y2ggXCIke291dHB1dERpcn0vLmdpdGtlZXBcImBdXG4gICAgOiBbXTtcblxuICBjb25zdCB7IGluc3RhbGxDb21tYW5kcywgY29tbWFuZHMgfSA9IGJ1aWxkQ29tbWFuZHMocGx1Z2luLCB7XG4gICAgcHJlSW5zdGFsbENvbW1hbmRzOiBbLi4uZW5zdXJlT3V0cHV0RGlyLCAuLi4ocHJlSW5zdGFsbENvbW1hbmRzID8/IFtdKV0sXG4gICAgcG9zdEluc3RhbGxDb21tYW5kcyxcbiAgICBwcmVDb21tYW5kcyxcbiAgICBwb3N0Q29tbWFuZHMsXG4gIH0sIGZhaWx1cmVCZWhhdmlvcik7XG5cbiAgY29uc3QgcHJvZ3JhbW1hdGljID0geyBpbnB1dCwgaW5zdGFsbENvbW1hbmRzLCBjb21tYW5kcyB9O1xuXG4gIC8vIFJlc29sdmUgdGhlIHBsdWdpbidzIHJ1bnRpbWUgaW1hZ2UuIENvZGVCdWlsZCBkZWZhdWx0cyB0b1xuICAvLyBgYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo3LjBgIHdoZW4gbm8gYGJ1aWxkSW1hZ2VgIGlzIHNldCDigJQgdGhhdCdzIHRoZVxuICAvLyBBV1MtbWFuYWdlZCBVYnVudHUgaW1hZ2UgYW5kIERPRVMgTk9UIGhhdmUgYW55IHBsdWdpbi1iYWtlZCB0b29sc1xuICAvLyAocGlwZWxpbmUtbWFuYWdlciwgc255aywgdGVycmFmb3JtLCBldGMuKS4gV2lyaW5nIHRoZSBwbHVnaW4ncyBpbWFnZVxuICAvLyBoZXJlIG1lYW5zIENvZGVCdWlsZCBwdWxscyBmcm9tIG91ciBwcml2YXRlIHJlZ2lzdHJ5IGFuZCB0aGUgdG9vbHNcbiAgLy8gaW5zdGFsbGVkIGluIHRoZSBwbHVnaW4ncyBEb2NrZXJmaWxlIGFyZSBhY3R1YWxseSBhdmFpbGFibGUuXG4gIGNvbnN0IHBsdWdpbkJ1aWxkSW1hZ2UgPSByZXNvbHZlUGx1Z2luSW1hZ2Uoc2NvcGUsIHBsdWdpbiwgb3JnSWQpO1xuXG4gIC8vIFNoZWxsU3RlcCBicmFuY2guXG4gIC8vIFNoZWxsU3RlcCBpdHNlbGYgZG9lc24ndCBhY2NlcHQgYGJ1aWxkRW52aXJvbm1lbnRgL2BidWlsZEltYWdlYC4gQ0RLXG4gIC8vIHBpcGVsaW5lcyB3cmFwcyBTaGVsbFN0ZXBzIGluIGEgZGVmYXVsdCBDb2RlQnVpbGQgYWN0aW9uIHRoYXQgcnVucyBvblxuICAvLyBgYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo3LjBgIOKAlCB3aGljaCB3b24ndCBoYXZlIHRoZSBwbHVnaW4ncyB0b29scy5cbiAgLy9cbiAgLy8gU28gd2hlbiBhIFNIRUxMX1NURVAgcGx1Z2luIERPRVMgaGF2ZSBhbiBpbWFnZSAoYmVjYXVzZSBpdHMgYXV0aG9yXG4gIC8vIGJha2VkIHRvb2xzIGludG8gYSBEb2NrZXJmaWxlKSwgd2UgUFJPTU9URSBpdCB0byBhIENvZGVCdWlsZFN0ZXAgd2l0aFxuICAvLyB0aGUgcmVzb2x2ZWQgaW1hZ2UuIFRoZSBwbHVnaW4gYXV0aG9yJ3MgaW50ZW50IChcInVzZSBteSBiYWtlZCB0b29sc1wiKVxuICAvLyBpcyBwcmVzZXJ2ZWQgd2l0aG91dCBmb3JjaW5nIHRoZW0gdG8gY2hhbmdlIHBsdWdpblR5cGUuXG4gIC8vXG4gIC8vIFdoZW4gdGhlIHBsdWdpbiBoYXMgbm8gaW1hZ2UgKG9yIHJlZ2lzdHJ5IGlzbid0IGNvbmZpZ3VyZWQpLCB3ZSBrZWVwXG4gIC8vIHRoZSBvcmlnaW5hbCBTaGVsbFN0ZXAg4oCUIGl0J3MgbGlnaHRlciB3ZWlnaHQgYW5kIHRoZSBkZWZhdWx0XG4gIC8vIENvZGVCdWlsZCBpbWFnZSBpcyBmaW5lLlxuICBpZiAocGx1Z2luLnBsdWdpblR5cGUgPT09IFBsdWdpblR5cGUuU0hFTExfU1RFUCkge1xuICAgIGlmICghcGx1Z2luQnVpbGRJbWFnZSkge1xuICAgICAgcmV0dXJuIG5ldyBTaGVsbFN0ZXAoaWQsIHtcbiAgICAgICAgLi4ucHJvZ3JhbW1hdGljLFxuICAgICAgICBlbnY6IHsgLi4uZW52LCAuLi5hY3Rpb25FbnYgfSxcbiAgICAgICAgLi4ubWV0YWRhdGFGb3JTaGVsbFN0ZXAobWVyZ2VkKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsb2cuZGVidWcoYFtDcmVhdGVDb2RlQnVpbGRTdGVwXSBTSEVMTF9TVEVQIHBsdWdpbiBcIiR7cGx1Z2luLm5hbWV9XCIgaGFzIGEgcmVnaXN0cnkgaW1hZ2Ug4oCUIHByb21vdGluZyB0byBDb2RlQnVpbGRTdGVwIHNvIHRoZSBwbHVnaW4gaW1hZ2UgaXMgYWN0dWFsbHkgdXNlZGApO1xuICAgIC8vIEZhbGwgdGhyb3VnaCB0byB0aGUgQ29kZUJ1aWxkU3RlcCBwYXRoIGJlbG93LlxuICB9XG5cbiAgY29uc3QgY29tcHV0ZVR5cGUgPSBnZXRDb21wdXRlVHlwZShcbiAgICBwbHVnaW4uY29tcHV0ZVR5cGUgPz8gb3B0aW9ucy5kZWZhdWx0Q29tcHV0ZVR5cGUgPz8gJ1NNQUxMJyxcbiAgKTtcblxuICAvLyBTdGVwIG5ldHdvcms6IGV4cGxpY2l0IHN0ZXAgY29uZmlnIHdpbnMsIGVsc2UgdGhpcyBzdGVwJ3MgYGVjMjpuZXR3b3JrYCBtZXRhZGF0YS5cbiAgY29uc3QgcmVzb2x2ZWROZXR3b3JrID0gbmV0d29yayA/PyBuZXR3b3JrQ29uZmlnRnJvbU1ldGFkYXRhKG1lcmdlZCk7XG4gIGNvbnN0IG5ldHdvcmtQcm9wcyA9IHJlc29sdmVkTmV0d29ya1xuICAgID8gcmVzb2x2ZU5ldHdvcmsoc2NvcGUsIG9wdGlvbnMudW5pcXVlSWQsIHJlc29sdmVkTmV0d29yaylcbiAgICA6IHt9O1xuXG4gIC8vIE1ldGFkYXRhIHNwcmVhZCBsYXN0IHNvIGl0IGNhbiBvdmVycmlkZSBwcm9ncmFtbWF0aWMgZGVmYXVsdHMuXG4gIC8vIE5PVEU6IENhY2hpbmcgaXMgc3VwcG9ydGVkIHZpYSB0d28gbWV0YWRhdGEgcGF0aHM6XG4gIC8vICAgMS4gTWV0YWRhdGFLZXlzLkNBQ0hFICgnYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDpjYWNoZScpIOKAlCBwYXNzZWQgZGlyZWN0bHlcbiAgLy8gICAgICBhcyB0aGUgQ29kZUJ1aWxkU3RlcCBgY2FjaGVgIHByb3AgKGV4cGVjdHMgYSBjb2RlYnVpbGQuQ2FjaGUgb2JqZWN0KS5cbiAgLy8gICAyLiBNZXRhZGF0YUtleXMuUEFSVElBTF9CVUlMRF9TUEVDICgnYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDpwYXJ0aWFsYnVpbGRzcGVjJylcbiAgLy8gICAgICDigJQgcGFzc2VkIGFzIGBwYXJ0aWFsQnVpbGRTcGVjYCwgd2hpY2ggY2FuIGluY2x1ZGUgYSBgY2FjaGU6YCBzZWN0aW9uIGZvclxuICAvLyAgICAgIFMzIG9yIGxvY2FsIGNhY2hpbmcgKGUuZy4sIEJ1aWxkU3BlYy5mcm9tT2JqZWN0KHsgY2FjaGU6IHsgcGF0aHM6IFsuLi5dIH0gfSkpLlxuICAvLyBQZXItc3RlcCBidWlsZEVudmlyb25tZW50IG92ZXJyaWRlcyBmcm9tIG1ldGFkYXRhIChhd3M6Y2RrOmNvZGVidWlsZDpidWlsZGVudmlyb25tZW50OiopLlxuICAvLyBBIG1ldGFkYXRhLXByb3ZpZGVkIGNvbXB1dGVUeXBlIGlzIGEgcmF3IHBhc3N0aHJvdWdoLCBzbyBub3JtYWxpemUgaXQgdGhyb3VnaFxuICAvLyBnZXRDb21wdXRlVHlwZSDigJQgb3RoZXJ3aXNlIGEgZnJpZW5kbHkgdmFsdWUgbGlrZSBcIkxBUkdFXCIgcmVhY2hlcyBDb2RlQnVpbGQgdmVyYmF0aW1cbiAgLy8gYW5kIGZhaWxzIHdpdGggXCJJbnZhbGlkIGNvbXB1dGUgdHlwZSBwcm92aWRlZFwiIChpdCBuZWVkcyBCVUlMRF9HRU5FUkFMMV9MQVJHRSkuXG4gIGNvbnN0IHJhd01ldGFCdWlsZEVudiA9IG1ldGFkYXRhRm9yQnVpbGRFbnZpcm9ubWVudChtZXJnZWQpO1xuICBjb25zdCBtZXRhQnVpbGRFbnYgPSB0eXBlb2YgcmF3TWV0YUJ1aWxkRW52LmNvbXB1dGVUeXBlID09PSAnc3RyaW5nJ1xuICAgID8geyAuLi5yYXdNZXRhQnVpbGRFbnYsIGNvbXB1dGVUeXBlOiBnZXRDb21wdXRlVHlwZShyYXdNZXRhQnVpbGRFbnYuY29tcHV0ZVR5cGUpIH1cbiAgICA6IHJhd01ldGFCdWlsZEVudjtcblxuICBjb25zdCBzdGVwID0gbmV3IENvZGVCdWlsZFN0ZXAoaWQsIHtcbiAgICAuLi5wcm9ncmFtbWF0aWMsXG4gICAgLi4ubmV0d29ya1Byb3BzLFxuICAgIC4uLihhZGRpdGlvbmFsSW5wdXRzICYmIHsgYWRkaXRpb25hbElucHV0cyB9KSxcbiAgICAuLi4odGltZW91dCAmJiB7IHRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXModGltZW91dCkgfSksXG4gICAgZW52OiBhY3Rpb25FbnYsXG4gICAgcHJpbWFyeU91dHB1dERpcmVjdG9yeTogcGx1Z2luLnByaW1hcnlPdXRwdXREaXJlY3RvcnkgPz8gdW5kZWZpbmVkLFxuICAgIC8vIFBpbiB0aGUgYnVpbGRzcGVjIHNoZWxsIHRvIFBPU0lYIC9iaW4vc2ggc28gZXhlY3V0aW9uIGlzIGlkZW50aWNhbCB0b1xuICAgIC8vIENvZGVCdWlsZCdzIGRlZmF1bHQgYW5kIHBvcnRhYmxlIGFjcm9zcyBtaW5pbWFsIGJhc2UgaW1hZ2VzIChubyBiYXNoXG4gICAgLy8gZGVwZW5kZW5jeSkuIFBsdWdpbiBzcGVjcyBhcmUgYXV0aG9yZWQgUE9TSVgtY2xlYW4gdG8gbWF0Y2gg4oCUIG5vIGJhc2gtb25seVxuICAgIC8vIGBbWyBdXWAsIGFycmF5cywgYHJlYWQgLXJhIDw8PGAsIG9yIGBzb3VyY2VgL2Budm0gdXNlYC9gc2RrIHVzZWAuIEFcbiAgICAvLyBwbHVnaW4tc3VwcGxpZWQgcGFydGlhbEJ1aWxkU3BlYyAobm9uZSB0b2RheSkgd291bGQgb3ZlcnJpZGUgdGhpcyB2aWEgdGhlXG4gICAgLy8gbWV0YWRhdGEgc3ByZWFkIGJlbG93IGFuZCBtdXN0IHRoZW4gc2V0IGBlbnYuc2hlbGxgIGl0c2VsZi5cbiAgICBwYXJ0aWFsQnVpbGRTcGVjOiBCdWlsZFNwZWMuZnJvbU9iamVjdCh7IGVudjogeyBzaGVsbDogJy9iaW4vc2gnIH0gfSksXG4gICAgYnVpbGRFbnZpcm9ubWVudDoge1xuICAgICAgY29tcHV0ZVR5cGUsXG4gICAgICBidWlsZEltYWdlOiBwbHVnaW5CdWlsZEltYWdlID8/IHJlc29sdmVEZWZhdWx0QnVpbGRJbWFnZShzY29wZSwgb3JnSWQpLFxuICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXM6IHtcbiAgICAgICAgLi4udG9Db2RlQnVpbGRFbnZWYXJzKGVudiksXG4gICAgICAgIC4uLnNlY3JldEVudlZhcnMsXG4gICAgICAgIC4uLnJlcG9ydEtleUVudlZhcixcbiAgICAgIH0sXG4gICAgICAuLi5tZXRhQnVpbGRFbnYsXG4gICAgfSxcbiAgICAuLi5tZXRhZGF0YUZvckNvZGVCdWlsZFN0ZXAobWVyZ2VkKSxcbiAgfSk7XG5cbiAgLy8gUmVnaXN0ZXIgd2l0aCBhcnRpZmFjdCBtYW5hZ2VyIGlmIHByaW1hcnlPdXRwdXREaXJlY3RvcnkgaXMgc2V0XG4gIGlmIChwbHVnaW4ucHJpbWFyeU91dHB1dERpcmVjdG9yeSAmJiBhcnRpZmFjdE1hbmFnZXIgJiYgc3RhZ2VOYW1lKSB7XG4gICAgY29uc3QgYXJ0aWZhY3RLZXk6IEFydGlmYWN0S2V5ID0ge1xuICAgICAgc3RhZ2VOYW1lLFxuICAgICAgc3RhZ2VBbGlhczogc3RhZ2VBbGlhcyA/PyBgJHtzdGFnZU5hbWV9LWFsaWFzYCxcbiAgICAgIHBsdWdpbk5hbWU6IHBsdWdpbi5uYW1lLFxuICAgICAgcGx1Z2luQWxpYXM6IHBsdWdpbkFsaWFzID8/IHBsdWdpbkFydGlmYWN0QWxpYXMocGx1Z2luKSxcbiAgICAgIG91dHB1dERpcmVjdG9yeTogcGx1Z2luLnByaW1hcnlPdXRwdXREaXJlY3RvcnksXG4gICAgfTtcbiAgICBhcnRpZmFjdE1hbmFnZXIuYWRkKGFydGlmYWN0S2V5LCBzdGVwKTtcbiAgfVxuXG4gIHJldHVybiBzdGVwO1xufVxuXG4vKipcbiAqIENvbnZlcnQgc3RyaW5nIG9yIENvbXB1dGVUeXBlIGVudW0gdG8gQ0RLIENvbXB1dGVUeXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21wdXRlVHlwZShpbnB1dDogc3RyaW5nIHwgQ0RLQ29tcHV0ZVR5cGUgPSAnU01BTEwnKTogQ0RLQ29tcHV0ZVR5cGUge1xuICAvLyBJZiBhbHJlYWR5IGEgQ0RLIENvbXB1dGVUeXBlLCByZXR1cm4gYXMtaXNcbiAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gaW5wdXQ7XG4gIH1cblxuICAvLyBBbHJlYWR5IGEgbmF0aXZlIENvZGVCdWlsZCBDb21wdXRlVHlwZSAoZS5nLiBcIkJVSUxEX0dFTkVSQUwxX0xBUkdFXCIpPyBBY2NlcHQgYXMtaXNcbiAgLy8gc28gYm90aCBmcmllbmRseSAoTEFSR0UpIGFuZCBuYXRpdmUgdmFsdWVzIHJvdW5kLXRyaXAgd2l0aG91dCBmYWxsaW5nIGJhY2sgdG8gU01BTEwuXG4gIGlmICgoT2JqZWN0LnZhbHVlcyhDREtDb21wdXRlVHlwZSkgYXMgc3RyaW5nW10pLmluY2x1ZGVzKGlucHV0KSkge1xuICAgIHJldHVybiBpbnB1dCBhcyBDREtDb21wdXRlVHlwZTtcbiAgfVxuXG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBpbnB1dC50b1VwcGVyQ2FzZSgpIGFzIENvbXB1dGVUeXBlO1xuXG4gIGNvbnN0IG1hcHBpbmc6IFJlY29yZDxDb21wdXRlVHlwZSwgQ0RLQ29tcHV0ZVR5cGU+ID0ge1xuICAgIFtDb21wdXRlVHlwZS5TTUFMTF06IENES0NvbXB1dGVUeXBlLlNNQUxMLFxuICAgIFtDb21wdXRlVHlwZS5NRURJVU1dOiBDREtDb21wdXRlVHlwZS5NRURJVU0sXG4gICAgW0NvbXB1dGVUeXBlLkxBUkdFXTogQ0RLQ29tcHV0ZVR5cGUuTEFSR0UsXG4gICAgW0NvbXB1dGVUeXBlLlgyX0xBUkdFXTogQ0RLQ29tcHV0ZVR5cGUuWDJfTEFSR0UsXG4gIH07XG5cbiAgY29uc3QgcmVzdWx0ID0gbWFwcGluZ1tub3JtYWxpemVkXTtcbiAgaWYgKCFyZXN1bHQpIHtcbiAgICBsb2cud2FybihgVW5rbm93biBjb21wdXRlIHR5cGUgXCIke2lucHV0fVwiLCBmYWxsaW5nIGJhY2sgdG8gU01BTExgKTtcbiAgICByZXR1cm4gQ0RLQ29tcHV0ZVR5cGUuU01BTEw7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBVbndyYXAgYSBTZWNyZXRWYWx1ZSB8IHN0cmluZyBpbnRvIGEgcGxhaW4gc3RyaW5nLlxuICogV2hlbiBhIFNlY3JldFZhbHVlIGlzIHByb3ZpZGVkIChlLmcuIGZyb20gU2VjcmV0cyBNYW5hZ2VyKSwgY2FsbHMgdW5zYWZlVW53cmFwKClcbiAqIHRvIGV4dHJhY3QgdGhlIHVuZGVybHlpbmcgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBTZWNyZXQodmFsdWU6IFNlY3JldFZhbHVlIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6IHZhbHVlLnVuc2FmZVVud3JhcCgpO1xufVxuIl19
|
|
@@ -25,4 +25,4 @@ export const PIPELINE_REGISTRATION_CAPABILITY = 'pipeline_registry:write';
|
|
|
25
25
|
export const PIPELINE_REGISTRATION_SECRET_LEAF = 'pipeline-registry-write';
|
|
26
26
|
/** Env var the synth CodeBuild project carries the registration secret's NAME in. */
|
|
27
27
|
export const PIPELINE_REGISTRATION_SECRET_ENV = 'PIPELINE_REGISTRATION_SECRET_NAME';
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtcmVnaXN0cmF0aW9uLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29yZS9waXBlbGluZS1yZWdpc3RyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBRUgseUZBQXlGO0FBQ3pGLE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLHlCQUF5QixDQUFDO0FBRTFFLG1HQUFtRztBQUNuRyxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBRyx5QkFBeUIsQ0FBQztBQUUzRSxxRkFBcUY7QUFDckYsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsbUNBQW1DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBUaGUgY3JlZGVudGlhbCBhIHNlbGYtbXV0YXRpbmcgc3ludGggcmVnaXN0ZXJzIGl0cyBzdGVwIG1hbmlmZXN0IHdpdGhcbiAqIChgUE9TVCAvYXBpL3BpcGVsaW5lcy9yZWdpc3RyeWApLlxuICpcbiAqIE5vdCB0aGUgb3JnJ3MgYHBsYXRmb3JtYCBzZWNyZXQ6IHRoYXQga2V5IHJlYWRzIHBpcGVsaW5lcyBhbmQgcGx1Z2lucyBhbmRcbiAqIG5vdGhpbmcgZWxzZSAodGhlIFBpcGVsaW5lIEF1dG9tYXRpb24gUm9sZSkuIFJlZ2lzdHJhdGlvbiBuZWVkc1xuICogYHBpcGVsaW5lX3JlZ2lzdHJ5OndyaXRlYCwgd2hpY2ggb25seSB0aGUgYHBpcGVsaW5lLXJlZ2lzdGVyYCBzZXJ2aWNlIGFjY291bnRcbiAqIGhvbGRzIOKAlCBtaW50ZWQgYnkgYHBpcGVsaW5lLW1hbmFnZXIgaW5mcmEgc3RvcmUtdG9rZW4gLS1zY29wZVxuICogcGlwZWxpbmVfcmVnaXN0cnk6d3JpdGVgIGFuZCBzdG9yZWQgYXQgYDxwcmVmaXg+LzxvcmdJZD4vcGlwZWxpbmUtcmVnaXN0cnktd3JpdGVgLlxuICpcbiAqIFRoZSBzeW50aCBDb2RlQnVpbGQgcHJvamVjdCBnZXRzIHRoZSBzZWNyZXQncyBOQU1FIGFzIGEgcGxhaW4gdmFyaWFibGUsIG5ldmVyXG4gKiB0aGUgdmFsdWUgYXMgYSBTRUNSRVRTX01BTkFHRVIgb25lOiBDb2RlQnVpbGQgZmFpbHMgYSBidWlsZCBhdCBET1dOTE9BRF9TT1VSQ0VcbiAqIHdoZW4gYSBTRUNSRVRTX01BTkFHRVIgdmFyaWFibGUgbmFtZXMgYSBtaXNzaW5nIHNlY3JldCwgYW5kIGEgbWlzc2luZ1xuICogcmVnaXN0cmF0aW9uIGtleSBtdXN0IHNraXAgdGhlIHJlZ2lzdHJhdGlvbiAobG91ZGx5KSwgbm90IGJyZWFrIGV2ZXJ5IGJ1aWxkLlxuICogVGhlIHN5bnRoIHJlYWRzIHRoZSBzZWNyZXQgaXRzZWxmIHdpdGggdGhlIEFXUyBTREssIHNvIHRoZSBwcm9qZWN0IHJvbGUgaXNcbiAqIGdyYW50ZWQgYEdldFNlY3JldFZhbHVlYCBvbiBleGFjdGx5IHRoYXQgc2VjcmV0LlxuICpcbiAqIERlcGVuZGVuY3ktZnJlZSBzbyB0aGUgQ0xJIGFuZCB0aGUgc3ludGggc2hhcmUgdGhlIG5hbWVzLlxuICovXG5cbi8qKiBUaGUgY2FwYWJpbGl0eSB0aGUgcmVnaXN0cmF0aW9uIGtleSBjYXJyaWVzIChpdHMga2V5LXNjb3BlIG5hbWUgaW4gYHN0b3JlLXRva2VuYCkuICovXG5leHBvcnQgY29uc3QgUElQRUxJTkVfUkVHSVNUUkFUSU9OX0NBUEFCSUxJVFkgPSAncGlwZWxpbmVfcmVnaXN0cnk6d3JpdGUnO1xuXG4vKiogU2VjcmV0cyBNYW5hZ2VyIGxlYWYgb2YgdGhlIHJlZ2lzdHJhdGlvbiBrZXkgKGBzY29wZVNlY3JldExlYWYoJ3BpcGVsaW5lX3JlZ2lzdHJ5OndyaXRlJylgKS4gKi9cbmV4cG9ydCBjb25zdCBQSVBFTElORV9SRUdJU1RSQVRJT05fU0VDUkVUX0xFQUYgPSAncGlwZWxpbmUtcmVnaXN0cnktd3JpdGUnO1xuXG4vKiogRW52IHZhciB0aGUgc3ludGggQ29kZUJ1aWxkIHByb2plY3QgY2FycmllcyB0aGUgcmVnaXN0cmF0aW9uIHNlY3JldCdzIE5BTUUgaW4uICovXG5leHBvcnQgY29uc3QgUElQRUxJTkVfUkVHSVNUUkFUSU9OX1NFQ1JFVF9FTlYgPSAnUElQRUxJTkVfUkVHSVNUUkFUSU9OX1NFQ1JFVF9OQU1FJztcbiJdfQ==
|
|
@@ -35,4 +35,4 @@ export { MetadataKeys } from '@pipeline-builder/api-core';
|
|
|
35
35
|
* (metadataForCodePipeline, etc.) and should NOT be passed as CodeBuild environment variables.
|
|
36
36
|
*/
|
|
37
37
|
export const CDK_METADATA_PREFIX = 'aws:cdk:';
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtdHlwZXMuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL3BpcGVsaW5lLXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFHdEMsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFzQyxNQUFNLDRCQUE0QixDQUFDO0FBRXpHOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHO0lBQ3pCLElBQUksRUFBRSxNQUFNO0lBQ1osd0dBQXdHO0lBQ3hHLElBQUksRUFBRSxNQUFNO0lBQ1osZ0dBQWdHO0lBQ2hHLFFBQVEsRUFBRSxVQUFVO0NBQ1osQ0FBQztBQUlYOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE9BQU8sRUFBRSxZQUFZLEVBQW9CLE1BQU0sNEJBQTRCLENBQUM7QUFFNUU7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5cbi8vIFJlLWV4cG9ydCBzaGFyZWQgdHlwZXMgZnJvbSBhcGktY29yZSBmb3IgY29udmVuaWVuY2VcbmV4cG9ydCB7IENvbXB1dGVUeXBlLCBQbHVnaW5UeXBlLCB0eXBlIE1ldGFEYXRhVHlwZSwgdHlwZSBWaXNpYmlsaXR5IH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuXG4vKipcbiAqIFBpcGVsaW5lIHRyaWdnZXIgYmVoYXZpb3IuXG4gKlxuICogQHByb3BlcnR5IE5PTkUgLSBNYW51YWwgdHJpZ2dlciBvbmx5LCBwaXBlbGluZSBkb2VzIG5vdCBzdGFydCBhdXRvbWF0aWNhbGx5XG4gKiBAcHJvcGVydHkgQVVUTyAtIEF1dG9tYXRpYyB0cmlnZ2VyIG9uIHNvdXJjZSBjaGFuZ2VzIChTMy9HaXRIdWI6IHBvbGxpbmcsIENvZGVTdGFyOiBwdXNoLWJhc2VkIHdlYmhvb2spXG4gKi9cbmV4cG9ydCBjb25zdCBUcmlnZ2VyVHlwZSA9IHtcbiAgTk9ORTogJ05PTkUnLFxuICAvKiogQXV0b21hdGljIHRyaWdnZXIgb24gc291cmNlIGNoYW5nZXMuIFVzZXMgcG9sbGluZyBmb3IgUzMvR2l0SHViLCBwdXNoLWJhc2VkIHdlYmhvb2sgZm9yIENvZGVTdGFyLiAqL1xuICBBVVRPOiAnQVVUTycsXG4gIC8qKiBTY2hlZHVsZWQgdHJpZ2dlciB2aWEgRXZlbnRCcmlkZ2UgcnVsZS4gUmVxdWlyZXMgYSBjcm9uIGV4cHJlc3Npb24gaW4gdGhlIHNvdXJjZSBvcHRpb25zLiAqL1xuICBTQ0hFRFVMRTogJ1NDSEVEVUxFJyxcbn0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBUcmlnZ2VyVHlwZSA9ICh0eXBlb2YgVHJpZ2dlclR5cGUpW2tleW9mIHR5cGVvZiBUcmlnZ2VyVHlwZV07XG5cblxuLyoqXG4gKiBNZXRhZGF0YSBrZXkgY29uc3RhbnRzIOKAlCByZS1leHBvcnRlZCBmcm9tIGBAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZWAsIHdoaWNoXG4gKiBvd25zIHRoZSBzaW5nbGUgY2F0YWxvZyB0aGUgYnJvd3NlcidzIG1ldGFkYXRhIHBpY2tlciByZWFkcyBhcyB3ZWxsLiBJbXBvcnRpbmdcbiAqIGBNZXRhZGF0YUtleXNgIGZyb20gYEBwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWNvcmVgIGtlZXBzIHdvcmtpbmcuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG1ldGFkYXRhID0ge1xuICogICBbTWV0YWRhdGFLZXlzLlNFTEZfTVVUQVRJT05dOiB0cnVlLFxuICogICBbTWV0YWRhdGFLZXlzLlBVQkxJU0hfQVNTRVRTX0lOX1BBUkFMTEVMXTogdHJ1ZVxuICogfTtcbiAqIGBgYFxuICovXG5leHBvcnQgeyBNZXRhZGF0YUtleXMsIHR5cGUgTWV0YWRhdGFLZXkgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5cbi8qKlxuICogUHJlZml4IGZvciBBV1MgQ0RLIG1ldGFkYXRhIGtleXMuXG4gKiBLZXlzIHdpdGggdGhpcyBwcmVmaXggYXJlIGhhbmRsZWQgYnkgdGhlIG1ldGFkYXRhIGV4dHJhY3Rpb24gZnVuY3Rpb25zXG4gKiAobWV0YWRhdGFGb3JDb2RlUGlwZWxpbmUsIGV0Yy4pIGFuZCBzaG91bGQgTk9UIGJlIHBhc3NlZCBhcyBDb2RlQnVpbGQgZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICovXG5leHBvcnQgY29uc3QgQ0RLX01FVEFEQVRBX1BSRUZJWCA9ICdhd3M6Y2RrOic7Il19
|
package/lib/core/platform-tls.js
CHANGED
|
@@ -67,4 +67,4 @@ export function platformTlsVerify(env = process.env) {
|
|
|
67
67
|
return false;
|
|
68
68
|
return env.NODE_TLS_REJECT_UNAUTHORIZED !== '0';
|
|
69
69
|
}
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0tdGxzLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29yZS9wbGF0Zm9ybS10bHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV2Qzs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxvQkFBb0IsQ0FBQztBQUUzRCxpR0FBaUc7QUFDakcsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEdBQUcsR0FBc0IsT0FBTyxDQUFDLEdBQUc7SUFDbkUsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDaEQsSUFBSSxDQUFDLEdBQUc7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQyxFQUFFLENBQUM7UUFDakQsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLHNCQUFzQiwrRUFBK0UsQ0FBQyxDQUFDO0lBQzVILENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsR0FBRyxHQUFzQixPQUFPLENBQUMsR0FBRztJQUNqRSxNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzlCLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2xHLE9BQU8sQ0FBQyxHQUFHLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLHFCQUFxQixDQUFDO0FBRTdELCtGQUErRjtBQUMvRixNQUFNLFVBQVUsaUJBQWlCLENBQUMsR0FBRyxHQUFzQixPQUFPLENBQUMsR0FBRztJQUNwRSxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsdUJBQXVCLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMvRCxJQUFJLEdBQUcsS0FBSyxTQUFTLElBQUksR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLEtBQUssTUFBTSxJQUFJLEdBQUcsS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUN6RSxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsdUJBQXVCLG9DQUFvQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEgsQ0FBQztJQUNELElBQUksR0FBRyxLQUFLLE9BQU87UUFBRSxPQUFPLEtBQUssQ0FBQztJQUNsQyxPQUFPLEdBQUcsQ0FBQyw0QkFBNEIsS0FBSyxHQUFHLENBQUM7QUFDbEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyByb290Q2VydGlmaWNhdGVzIH0gZnJvbSAndGxzJztcblxuLyoqXG4gKiBUcnVzdGluZyBhIHBsYXRmb3JtIHRoYXQgcHJlc2VudHMgYSBjZXJ0aWZpY2F0ZSBmcm9tIGEgUFJJVkFURSBDQSwgd2l0aG91dFxuICogdHVybmluZyB2ZXJpZmljYXRpb24gb2ZmLlxuICpcbiAqIGBQTEFURk9STV9DQV9CVU5ETEVgIGhvbGRzIHRoZSBQRU0gdGV4dCBvZiB0aGUgQ0EgKGNoYWluKS4gU2V0IHdoZXJlXG4gKiBgcGlwZWxpbmUtbWFuYWdlciBwaXBlbGluZSBzeW50aC9kZXBsb3lgIHJ1bnMsIGl0IGlzICgxKSB0cnVzdGVkIGJ5IHRoZSBDTEknc1xuICogb3duIEFQSSBjbGllbnQsICgyKSBwcm9wYWdhdGVkIGJ5IHRoZSBzeW50aCBpbnRvIGV2ZXJ5IENvZGVCdWlsZCBzdGVwJ3NcbiAqIGVudmlyb25tZW50IOKAlCBzbyB0aGUgc2VsZi1tdXRhdGluZyBzeW50aCdzIHBsdWdpbiBsb29rdXAgdmVyaWZpZXMgYWdhaW5zdCBpdFxuICog4oCUIGFuZCAoMykgaW50byB0aGUgcGx1Z2luLWxvb2t1cCBMYW1iZGEncyBlbnZpcm9ubWVudC4gUEVNIHRleHQgcmF0aGVyIHRoYW4gYVxuICogcGF0aCBiZWNhdXNlIG5vbmUgb2YgdGhvc2UgdGhyZWUgc2hhcmUgYSBmaWxlc3lzdGVtLlxuICpcbiAqIERlcGVuZGVuY3ktZnJlZSBzbyB0aGUgcGx1Z2luLWxvb2t1cCBMYW1iZGEgY2FuIGJ1bmRsZSBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IFBMQVRGT1JNX0NBX0JVTkRMRV9FTlYgPSAnUExBVEZPUk1fQ0FfQlVORExFJztcblxuLyoqIFRoZSBjb25maWd1cmVkIGJ1bmRsZSAoUEVNIHRleHQpLCBvciB1bmRlZmluZWQuIFJlZnVzZXMgYSB2YWx1ZSB0aGF0IGhvbGRzIG5vIGNlcnRpZmljYXRlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBsYXRmb3JtQ2FCdW5kbGUoZW52OiBOb2RlSlMuUHJvY2Vzc0VudiA9IHByb2Nlc3MuZW52KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcGVtID0gZW52W1BMQVRGT1JNX0NBX0JVTkRMRV9FTlZdPy50cmltKCk7XG4gIGlmICghcGVtKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAoIXBlbS5pbmNsdWRlcygnLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7UExBVEZPUk1fQ0FfQlVORExFX0VOVn0gaXMgc2V0IGJ1dCBob2xkcyBubyBQRU0gY2VydGlmaWNhdGUgKGV4cGVjdGVkIFwiLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tXCIpYCk7XG4gIH1cbiAgcmV0dXJuIHBlbTtcbn1cblxuLyoqXG4gKiBUaGUgQ0EgbGlzdCBmb3IgYW4gYGh0dHBzLkFnZW50YCB3aGVuIGEgYnVuZGxlIGlzIGNvbmZpZ3VyZWQ6IE5vZGUncyByb290cyxcbiAqIHRoZSBgTk9ERV9FWFRSQV9DQV9DRVJUU2AgZmlsZSAoYW4gZXhwbGljaXQgYGNhYCByZXBsYWNlcyB0aGUgZGVmYXVsdCBzdG9yZSxcbiAqIHdoaWNoIGlzIHdoZXJlIE5vZGUgd291bGQgb3RoZXJ3aXNlIGhhdmUgcHV0IGl0KSBhbmQgdGhlIGJ1bmRsZS4gVW5kZWZpbmVkXG4gKiB3aGVuIG5vIGJ1bmRsZSBpcyBzZXQg4oCUIGtlZXAgTm9kZSdzIGRlZmF1bHQgc3RvcmUgdW50b3VjaGVkIHRoZW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwbGF0Zm9ybUNhTGlzdChlbnY6IE5vZGVKUy5Qcm9jZXNzRW52ID0gcHJvY2Vzcy5lbnYpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGJ1bmRsZSA9IHBsYXRmb3JtQ2FCdW5kbGUoZW52KTtcbiAgaWYgKCFidW5kbGUpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IGV4dHJhID0gZW52Lk5PREVfRVhUUkFfQ0FfQ0VSVFMgPyByZWFkRmlsZVN5bmMoZW52Lk5PREVfRVhUUkFfQ0FfQ0VSVFMsICd1dGY4JykgOiB1bmRlZmluZWQ7XG4gIHJldHVybiBbLi4ucm9vdENlcnRpZmljYXRlcywgLi4uKGV4dHJhID8gW2V4dHJhXSA6IFtdKSwgYnVuZGxlXTtcbn1cblxuLyoqXG4gKiBgUExBVEZPUk1fVExTX1ZFUklGWWAg4oCUIHRoZSBvbmUga25vYiBmb3Igd2hldGhlciB0aGUgcGlwZWxpbmUgdmVyaWZpZXMgdGhlXG4gKiBwbGF0Zm9ybSdzIGNlcnRpZmljYXRlLiBgdHJ1ZWAgKGRlZmF1bHQpIHZlcmlmaWVzOyBgZmFsc2VgIGlzIGZvciBhIGRldlxuICogcGxhdGZvcm0gb24gYSBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZSB3aXRoIG5vIENBIHRvIGhhbmQgb3V0IChwcmVmZXJcbiAqIHtAbGluayBQTEFURk9STV9DQV9CVU5ETEVfRU5WfSwgd2hpY2gga2VlcHMgdmVyaWZpY2F0aW9uIE9OKS5cbiAqXG4gKiBSZWFkIGF0IHN5bnRoIHRpbWUgYW5kIGNhcnJpZWQgaW50byB0aGUgcGlwZWxpbmUsIHdoZXJlIGBmYWxzZWA6XG4gKiAgIC0gYXBwZW5kcyBgLS1uby12ZXJpZnktc3NsYCB0byB0aGUgc2VsZi1tdXRhdGluZyBzeW50aCdzIGJvb3RzdHJhcCBjb21tYW5kLFxuICogICAtIHNldHMgYE5PREVfVExTX1JFSkVDVF9VTkFVVEhPUklaRUQ9MGAgKGFuZCB0aGlzIGtub2IpIG9uIGV2ZXJ5IENvZGVCdWlsZFxuICogICAgIHN0ZXAgYW5kIG9uIHRoZSBwbHVnaW4tbG9va3VwIExhbWJkYS5cbiAqIFRoZSBDTEkgc3RpbGwgcmVmdXNlcyBhbiB1bnZlcmlmaWVkIGNvbm5lY3Rpb24gdGhhdCBjYXJyaWVzIGNyZWRlbnRpYWxzIHdoZW5cbiAqIGBOT0RFX0VOVj1wcm9kdWN0aW9uYCwgc28gdGhlIGtub2IgY2Fubm90IHF1aWV0bHkgcmVhY2ggYSBwcm9kdWN0aW9uIHJ1bi5cbiAqXG4gKiBgTk9ERV9UTFNfUkVKRUNUX1VOQVVUSE9SSVpFRD0wYCBhbHJlYWR5IGluIHRoZSBzeW50aCdzIGVudmlyb25tZW50IG1lYW5zIHRoZVxuICogc2FtZSB0aGluZyDigJQgdGhlIG9wZXJhdG9yIGhhcyB0dXJuZWQgdmVyaWZpY2F0aW9uIG9mZiBmb3IgdGhpcyBwcm9jZXNzIOKAlCBzb1xuICogaXQgaXMgaG9ub3VyZWQgYXMgYGZhbHNlYCByYXRoZXIgdGhhbiBzaWxlbnRseSBpZ25vcmVkLlxuICovXG5leHBvcnQgY29uc3QgUExBVEZPUk1fVExTX1ZFUklGWV9FTlYgPSAnUExBVEZPUk1fVExTX1ZFUklGWSc7XG5cbi8qKiBXaGV0aGVyIHRoZSBwbGF0Zm9ybSBjZXJ0aWZpY2F0ZSBpcyB2ZXJpZmllZC4gUmVmdXNlcyBhIHZhbHVlIG90aGVyIHRoYW4gYHRydWVgL2BmYWxzZWAuICovXG5leHBvcnQgZnVuY3Rpb24gcGxhdGZvcm1UbHNWZXJpZnkoZW52OiBOb2RlSlMuUHJvY2Vzc0VudiA9IHByb2Nlc3MuZW52KTogYm9vbGVhbiB7XG4gIGNvbnN0IHJhdyA9IGVudltQTEFURk9STV9UTFNfVkVSSUZZX0VOVl0/LnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICBpZiAocmF3ICE9PSB1bmRlZmluZWQgJiYgcmF3ICE9PSAnJyAmJiByYXcgIT09ICd0cnVlJyAmJiByYXcgIT09ICdmYWxzZScpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7UExBVEZPUk1fVExTX1ZFUklGWV9FTlZ9IG11c3QgYmUgXCJ0cnVlXCIgb3IgXCJmYWxzZVwiIChnb3QgXCIke2VudltQTEFURk9STV9UTFNfVkVSSUZZX0VOVl19XCIpYCk7XG4gIH1cbiAgaWYgKHJhdyA9PT0gJ2ZhbHNlJykgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gZW52Lk5PREVfVExTX1JFSkVDVF9VTkFVVEhPUklaRUQgIT09ICcwJztcbn1cbiJdfQ==
|
|
@@ -226,4 +226,4 @@ export function pluginStepIdAlias(plugin) {
|
|
|
226
226
|
// `??`, not `||`: an explicit (even empty) alias keeps the id it always had.
|
|
227
227
|
return plugin.alias ?? (plugin.publisher ? `${sanitizePublisher(plugin.publisher)}-${plugin.name}` : plugin.name);
|
|
228
228
|
}
|
|
229
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWNvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvcmUvcGx1Z2luLWNvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFFSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFzQzlDLFNBQVMsUUFBUSxDQUFDLENBQVU7SUFDMUIsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBNEIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzdGLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUFDLEtBQXlCO0lBQzdELE9BQU8sS0FBSyxDQUNWLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFpQixFQUN0QyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQWlCLEVBQzNELFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBaUIsQ0FDekQsQ0FBQztBQUNKLENBQUM7QUFFRCxvRkFBb0Y7QUFDcEYsTUFBTSxVQUFVLHFCQUFxQixDQUFDLEtBQXlCO0lBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUscUJBQXFCLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUNoRixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLDhCQUE4QixDQUFDLGFBQWdEO0lBQzdGLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEQs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QUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3RELEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUM7S0FDdkQsQ0FBQztBQUNKLENBQUM7QUFFRCxnRkFBZ0Y7QUFDaEYsa0ZBQWtGO0FBQ2xGLGdGQUFnRjtBQUVoRjs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxNQUF5QjtJQUMzRCxJQUFJLE1BQU0sQ0FBQyxLQUFLO1FBQUUsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ3RDLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLFFBQVEsQ0FBQztBQUNuSCxDQUFDO0FBVUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFNBQWlCO0lBQ2pELE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLE1BQXlCO0lBQ3pELDZFQUE2RTtJQUM3RSxPQUFPLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUGx1Z2luIGNvbnRyYWN0IGVuZm9yY2VtZW50LiBBIHBsdWdpbiBzcGVjIGRlY2xhcmVzXG4gKiB0aGUgYHt7IHBpcGVsaW5lLm1ldGFkYXRhLlggfX1gIC8gYHt7IHBpcGVsaW5lLnZhcnMuWCB9fWAga2V5cyBhIHBpcGVsaW5lXG4gKiBtdXN0IHN1cHBseSAoYHJlcXVpcmVkTWV0YWRhdGFgIC8gYHJlcXVpcmVkVmFyc2ApIGFuZCB0aGUgY29lcmNpb24gdHlwZSBvZlxuICogZWFjaCAoYG1ldGFkYXRhVHlwZXNgIC8gYHZhcnNUeXBlc2ApLiBUaGUgdXBsb2FkIHZhbGlkYXRlcyB0aGUgc3BlYyBhZ2FpbnN0XG4gKiBpdHMgb3duIHRlbXBsYXRlczsgdGhpcyBtb2R1bGUgY2hlY2tzIGEgUElQRUxJTkUgYWdhaW5zdCB0aGUgY29udHJhY3RzIG9mXG4gKiB0aGUgcGx1Z2lucyBpdCByZWZlcmVuY2VzLlxuICpcbiAqIENESy1mcmVlOiBzaGFyZWQgYnkgdGhlIHBpcGVsaW5lIHNlcnZpY2UgKGNyZWF0ZSAvIHVwZGF0ZSDihpIgNDAwIGxpc3RpbmdcbiAqIGV2ZXJ5IHByb2JsZW0gcGVyIHN0ZXApIGFuZCB0aGUgc3ludGggKGZhaWwgZmFzdCBmb3IgYSBwaXBlbGluZSB0aGF0IG5ldmVyXG4gKiB3ZW50IHRocm91Z2ggdGhlIEFQSSwgZS5nLiBhIENMSS1hdXRob3JlZCBwcm9wcyBmaWxlKS5cbiAqXG4gKiBUaGUgY2hlY2tzIG1pcnJvciB0aGUgdGVtcGxhdGUgZXZhbHVhdG9yIChgdGVtcGxhdGUvZXZhbHVhdG9yLnRzYCkgZXhhY3RseSxcbiAqIHNvIFwicGFzc2VzIGhlcmVcIiBtZWFucyBcInJlc29sdmVzIGF0IHN5bnRoXCI6XG4gKiAgIC0gYSBrZXkgaXMgTUlTU0lORyB3aGVuIGFic2VudCwgbnVsbCBvciB0aGUgZW1wdHkgc3RyaW5nICh0aGUgZXZhbHVhdG9yXG4gKiAgICAgZmFsbHMgdG8gYHwgZGVmYXVsdDpgIG9yIGZhaWxzIGZvciBhbGwgdGhyZWUpO1xuICogICAtIGFuIG9iamVjdC9hcnJheSB2YWx1ZSBuZXZlciBpbnRlcnBvbGF0ZXM7XG4gKiAgIC0gYG51bWJlcmAgLyBgYm9vbGAgLyBganNvbmAgYWNjZXB0IHdoYXQgdGhlIGB8IG51bWJlcmAgLyBgfCBib29sYCAvXG4gKiAgICAgYHwganNvbmAgZmlsdGVycyBhY2NlcHQgYWZ0ZXIgc3RyaW5naWZpY2F0aW9uLlxuICovXG5cbmltcG9ydCB7IG1lcmdlIH0gZnJvbSAnLi9tZXRhZGF0YS1oZWxwZXJzLmpzJztcbmltcG9ydCB0eXBlIHsgTWV0YURhdGFUeXBlIH0gZnJvbSAnLi9waXBlbGluZS10eXBlcy5qcyc7XG5cbi8qKiBEZWNsYXJlZCBjb2VyY2lvbiB0eXBlIG9mIGEgY29udHJhY3Qga2V5LiAqL1xuZXhwb3J0IHR5cGUgQ29udHJhY3RWYWx1ZVR5cGUgPSAnc3RyaW5nJyB8ICdudW1iZXInIHwgJ2Jvb2wnIHwgJ2pzb24nO1xuXG4vKiogVGhlIGNvbnRyYWN0IGZpZWxkcyBvZiBhIHBsdWdpbiByZWNvcmQgKGFzIGBwbHVnaW5zYCBzdG9yZXMgdGhlbSkuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkNvbnRyYWN0IHtcbiAgcmVhZG9ubHkgcmVxdWlyZWRNZXRhZGF0YT86IHJlYWRvbmx5IHN0cmluZ1tdIHwgbnVsbDtcbiAgcmVhZG9ubHkgcmVxdWlyZWRWYXJzPzogcmVhZG9ubHkgc3RyaW5nW10gfCBudWxsO1xuICByZWFkb25seSBtZXRhZGF0YVR5cGVzPzogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgQ29udHJhY3RWYWx1ZVR5cGU+PiB8IG51bGw7XG4gIHJlYWRvbmx5IHZhcnNUeXBlcz86IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIENvbnRyYWN0VmFsdWVUeXBlPj4gfCBudWxsO1xufVxuXG4vKiogV2hhdCBge3sgcGlwZWxpbmUubWV0YWRhdGEuKiB9fWAgYW5kIGB7eyBwaXBlbGluZS52YXJzLiogfX1gIHJlc29sdmUgYWdhaW5zdC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJhY3RTY29wZSB7XG4gIHJlYWRvbmx5IG1ldGFkYXRhOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIHJlYWRvbmx5IHZhcnM6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+Pjtcbn1cblxuLyoqIE9uZSB1bm1ldCBjb250cmFjdCBrZXkuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyYWN0SXNzdWUge1xuICByZWFkb25seSBraW5kOiAnbWV0YWRhdGEnIHwgJ3ZhcnMnO1xuICByZWFkb25seSBrZXk6IHN0cmluZztcbiAgcmVhZG9ubHkgcHJvYmxlbTogJ21pc3NpbmcnIHwgJ3R5cGUnO1xuICAvKiogVGhlIGRlY2xhcmVkIHR5cGUsIGZvciBhIGB0eXBlYCBwcm9ibGVtLiAqL1xuICByZWFkb25seSBleHBlY3RlZD86IENvbnRyYWN0VmFsdWVUeXBlO1xuICByZWFkb25seSBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKiBUaGUgcGlwZWxpbmUtcHJvcHMgZmllbGRzIHRoZSBjb250cmFjdCBzY29wZSBpcyBidWlsdCBmcm9tIChCdWlsZGVyUHJvcHMgc3Vic2V0KS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJhY3RTY29wZVByb3BzIHtcbiAgcmVhZG9ubHkgZ2xvYmFsPzogdW5rbm93bjtcbiAgcmVhZG9ubHkgZGVmYXVsdHM/OiB1bmtub3duO1xuICByZWFkb25seSBzeW50aD86IHVua25vd247XG4gIHJlYWRvbmx5IHZhcnM/OiB1bmtub3duO1xufVxuXG5mdW5jdGlvbiBhc1JlY29yZCh2OiB1bmtub3duKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4gdiAmJiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodikgPyB2IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IDoge307XG59XG5cbi8qKlxuICogYHBpcGVsaW5lLm1ldGFkYXRhYCBhcyBzeW50aCBidWlsZHMgaXQ6IGBnbG9iYWxgIOKGkCBgZGVmYXVsdHMubWV0YWRhdGFgIOKGkFxuICogYHN5bnRoLm1ldGFkYXRhYCAobGFzdCB3aW5zKS4gVGhlIHNpbmdsZSBkZWZpbml0aW9uIOKAlCBgUGlwZWxpbmVDb25maWd1cmF0aW9uYFxuICogdXNlcyBpdCB0b28sIHNvIHRoZSBBUEkgY2hlY2sgYW5kIHRoZSBzeW50aCBzY29wZSBjYW5ub3QgZHJpZnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwaXBlbGluZVNjb3BlTWV0YWRhdGEocHJvcHM6IENvbnRyYWN0U2NvcGVQcm9wcyk6IE1ldGFEYXRhVHlwZSB7XG4gIHJldHVybiBtZXJnZShcbiAgICBhc1JlY29yZChwcm9wcy5nbG9iYWwpIGFzIE1ldGFEYXRhVHlwZSxcbiAgICBhc1JlY29yZChhc1JlY29yZChwcm9wcy5kZWZhdWx0cykubWV0YWRhdGEpIGFzIE1ldGFEYXRhVHlwZSxcbiAgICBhc1JlY29yZChhc1JlY29yZChwcm9wcy5zeW50aCkubWV0YWRhdGEpIGFzIE1ldGFEYXRhVHlwZSxcbiAgKTtcbn1cblxuLyoqIFRoZSBjb250cmFjdCBzY29wZSBvZiBhIHBpcGVsaW5lJ3MgcHJvcHMgKHNlZSB7QGxpbmsgcGlwZWxpbmVTY29wZU1ldGFkYXRhfSkuICovXG5leHBvcnQgZnVuY3Rpb24gcGlwZWxpbmVDb250cmFjdFNjb3BlKHByb3BzOiBDb250cmFjdFNjb3BlUHJvcHMpOiBDb250cmFjdFNjb3BlIHtcbiAgcmV0dXJuIHsgbWV0YWRhdGE6IHBpcGVsaW5lU2NvcGVNZXRhZGF0YShwcm9wcyksIHZhcnM6IGFzUmVjb3JkKHByb3BzLnZhcnMpIH07XG59XG5cbi8qKlxuICogVGhlIGNvbnRyYWN0IHNjb3BlIGluc2lkZSBhIHN5bnRoIHRlbXBsYXRlIHNjb3BlIChgeyBwaXBlbGluZTogeyBtZXRhZGF0YSxcbiAqIHZhcnMsIOKApiB9IH1gLCBzZWUgYFBpcGVsaW5lQ29uZmlndXJhdGlvbi5nZXRQaXBlbGluZVNjb3BlYCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb250cmFjdFNjb3BlRnJvbVRlbXBsYXRlU2NvcGUodGVtcGxhdGVTY29wZTogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KTogQ29udHJhY3RTY29wZSB7XG4gIGNvbnN0IHBpcGVsaW5lID0gYXNSZWNvcmQodGVtcGxhdGVTY29wZS5waXBlbGluZSk7XG4gIHJldHVybiB7IG1ldGFkYXRhOiBhc1JlY29yZChwaXBlbGluZS5tZXRhZGF0YSksIHZhcnM6IGFzUmVjb3JkKHBpcGVsaW5lLnZhcnMpIH07XG59XG5cbi8qKiBXb3VsZCB0aGUgZXZhbHVhdG9yIHRyZWF0IGB2YWx1ZWAgYXMgYWJzZW50IChtaXNzaW5nIC8gbnVsbCAvIGVtcHR5IHN0cmluZyk/ICovXG5mdW5jdGlvbiBpc01pc3NpbmcodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnO1xufVxuXG4vKipcbiAqIERvZXMgYHZhbHVlYCBzYXRpc2Z5IHRoZSBkZWNsYXJlZCBgdHlwZWAgb25jZSBpbnRlcnBvbGF0ZWQ/IE1pcnJvcnMgdGhlXG4gKiBldmFsdWF0b3IncyBgcmVzb2x2ZU9uZWAgKG9iamVjdHMgbmV2ZXIgaW50ZXJwb2xhdGUpIGFuZCBgYXBwbHlDb2VyY2lvbmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnRyYWN0VmFsdWVPZlR5cGUodmFsdWU6IHVua25vd24sIHR5cGU6IENvbnRyYWN0VmFsdWVUeXBlKTogYm9vbGVhbiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IHJhdyA9IFN0cmluZyh2YWx1ZSk7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBjYXNlICdudW1iZXInOlxuICAgICAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShOdW1iZXIocmF3KSk7XG4gICAgY2FzZSAnYm9vbCc6XG4gICAgICByZXR1cm4gWyd0cnVlJywgJzEnLCAneWVzJywgJ2ZhbHNlJywgJzAnLCAnbm8nLCAnJ10uaW5jbHVkZXMocmF3LnRyaW0oKS50b0xvd2VyQ2FzZSgpKTtcbiAgICBjYXNlICdqc29uJzpcbiAgICAgIHRyeSB7XG4gICAgICAgIEpTT04ucGFyc2UocmF3KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICB9XG59XG5cbi8qKiBBIHZhbHVlIHN0aWxsIGNhcnJ5aW5nIGB7eyDigKYgfX1gIGlzIHJlc29sdmVkIGxhdGVyIChwaXBlbGluZSBwYXNzIDEpLCBzbyBpdHMgdHlwZSBjYW4ndCBiZSBqdWRnZWQgeWV0LiAqL1xuZnVuY3Rpb24gaXNVbnJlc29sdmVkVGVtcGxhdGUodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUuaW5jbHVkZXMoJ3t7Jyk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrS2luZChcbiAga2luZDogJ21ldGFkYXRhJyB8ICd2YXJzJyxcbiAgcmVxdWlyZWQ6IHJlYWRvbmx5IHN0cmluZ1tdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgdHlwZXM6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIENvbnRyYWN0VmFsdWVUeXBlPj4gfCBudWxsIHwgdW5kZWZpbmVkLFxuICBzdXBwbGllZDogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+LFxuKTogQ29udHJhY3RJc3N1ZVtdIHtcbiAgY29uc3QgaXNzdWVzOiBDb250cmFjdElzc3VlW10gPSBbXTtcbiAgY29uc3Qgd2hlcmUgPSBraW5kID09PSAnbWV0YWRhdGEnID8gJ21ldGFkYXRhIChnbG9iYWwgLyBkZWZhdWx0cy5tZXRhZGF0YSAvIHN5bnRoLm1ldGFkYXRhKScgOiAndmFycyc7XG4gIGZvciAoY29uc3Qga2V5IG9mIG5ldyBTZXQocmVxdWlyZWQgPz8gW10pKSB7XG4gICAgaWYgKGlzTWlzc2luZyhzdXBwbGllZFtrZXldKSkge1xuICAgICAgaXNzdWVzLnB1c2goeyBraW5kLCBrZXksIHByb2JsZW06ICdtaXNzaW5nJywgbWVzc2FnZTogYHBpcGVsaW5lICR7d2hlcmV9IG11c3Qgc3VwcGx5ICcke2tleX0nYCB9KTtcbiAgICB9XG4gIH1cbiAgZm9yIChjb25zdCBba2V5LCBleHBlY3RlZF0gb2YgT2JqZWN0LmVudHJpZXModHlwZXMgPz8ge30pKSB7XG4gICAgY29uc3QgdmFsdWUgPSBzdXBwbGllZFtrZXldO1xuICAgIGlmIChpc01pc3NpbmcodmFsdWUpIHx8IGlzVW5yZXNvbHZlZFRlbXBsYXRlKHZhbHVlKSkgY29udGludWU7XG4gICAgaWYgKCFpc0NvbnRyYWN0VmFsdWVPZlR5cGUodmFsdWUsIGV4cGVjdGVkKSkge1xuICAgICAgY29uc3QgZ290ID0gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyA/IChBcnJheS5pc0FycmF5KHZhbHVlKSA/ICdhbiBhcnJheScgOiAnYW4gb2JqZWN0JykgOiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgICBpc3N1ZXMucHVzaCh7IGtpbmQsIGtleSwgcHJvYmxlbTogJ3R5cGUnLCBleHBlY3RlZCwgbWVzc2FnZTogYHBpcGVsaW5lICR7a2luZH0uJHtrZXl9IG11c3QgYmUgYSAke2V4cGVjdGVkfSwgZ290ICR7Z290fWAgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBpc3N1ZXM7XG59XG5cbi8qKlxuICogQ2hlY2sgb25lIHBsdWdpbidzIGNvbnRyYWN0IGFnYWluc3QgdGhlIHBpcGVsaW5lJ3Mgc2NvcGUuIFJldHVybnMgZXZlcnlcbiAqIGlzc3VlIChtaXNzaW5nIGtleXMgZmlyc3QsIHRoZW4gaWxsLXR5cGVkIG9uZXMsIG1ldGFkYXRhIGJlZm9yZSB2YXJzKTtcbiAqIGVtcHR5IHdoZW4gdGhlIGNvbnRyYWN0IGlzIG1ldC4gRGVjbGFyZWQgdHlwZXMgYXJlIGNoZWNrZWQgZm9yIGV2ZXJ5XG4gKiBTVVBQTElFRCBrZXksIHJlcXVpcmVkIG9yIG5vdCAoYW4gb3B0aW9uYWwga2V5IHdpdGggYSBgfCBkZWZhdWx0OmAgaXMgc3RpbGxcbiAqIGNvZXJjZWQgd2hlbiBpdCBpcyBzdXBwbGllZCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1BsdWdpbkNvbnRyYWN0KGNvbnRyYWN0OiBQbHVnaW5Db250cmFjdCwgc2NvcGU6IENvbnRyYWN0U2NvcGUpOiBDb250cmFjdElzc3VlW10ge1xuICByZXR1cm4gW1xuICAgIC4uLmNoZWNrS2luZCgnbWV0YWRhdGEnLCBjb250cmFjdC5yZXF1aXJlZE1ldGFkYXRhLCBjb250cmFjdC5tZXRhZGF0YVR5cGVzLCBzY29wZS5tZXRhZGF0YSksXG4gICAgLi4uY2hlY2tLaW5kKCd2YXJzJywgY29udHJhY3QucmVxdWlyZWRWYXJzLCBjb250cmFjdC52YXJzVHlwZXMsIHNjb3BlLnZhcnMpLFxuICBdO1xufVxuXG4vKipcbiAqIFN5bnRoLXRpbWUgZ3VhcmQ6IHRocm93IHdoZW4gYHBsdWdpbmAgKHJlc29sdmVkIGZvciBgc3RlcGApIGhhcyB1bm1ldFxuICogY29udHJhY3Qga2V5cy4gVGhlIEFQSSByZWZ1c2VzIHN1Y2ggYSBwaXBlbGluZSBhdCBjcmVhdGUvdXBkYXRlOyB0aGlzXG4gKiBjYXRjaGVzIG9uZSB0aGF0IHJlYWNoZWQgc3ludGggYW5vdGhlciB3YXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRQbHVnaW5Db250cmFjdChcbiAgcGx1Z2luOiBQbHVnaW5Db250cmFjdCAmIHsgcmVhZG9ubHkgbmFtZTogc3RyaW5nOyByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nIH0sXG4gIHNjb3BlOiBDb250cmFjdFNjb3BlLFxuICBzdGVwOiBzdHJpbmcsXG4pOiB2b2lkIHtcbiAgY29uc3QgaXNzdWVzID0gY2hlY2tQbHVnaW5Db250cmFjdChwbHVnaW4sIHNjb3BlKTtcbiAgaWYgKGlzc3Vlcy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBTdGVwIFwiJHtzdGVwfVwiIHVzZXMgcGx1Z2luIFwiJHtwbHVnaW4ubmFtZX0ke3BsdWdpbi52ZXJzaW9uID8gYEAke3BsdWdpbi52ZXJzaW9ufWAgOiAnJ31cIiB3aG9zZSBjb250cmFjdCBpcyBub3QgbWV0OlxcbmBcbiAgICArIGlzc3Vlcy5tYXAoKGkpID0+IGAgIOKAoiAke2kubWVzc2FnZX1gKS5qb2luKCdcXG4nKSxcbiAgKTtcbn1cblxuLyoqIEEgcGx1Z2luIHJlZmVyZW5jZSBpbiBwaXBlbGluZSBwcm9wcywgd2l0aCB3aGVyZSBpdCBzaXRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5TdGVwUmVmIHtcbiAgLyoqIEpTT04gcGF0aCBvZiB0aGUgc3RlcDogYHN5bnRoYCBvciBgc3RhZ2VzW2ldLnN0ZXBzW2pdYC4gKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xuICAvKiogSHVtYW4gbGFiZWw6IGBzeW50aGAgb3IgYDxzdGFnZU5hbWU+LzxhbGlhcyA/PyBuYW1lPmAuICovXG4gIHJlYWRvbmx5IGxhYmVsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqIFB1Ymxpc2hlciBoYW5kbGUgb2YgYW4gaW5zdGFsbGVkIGxpc3RpbmcuICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hlcj86IHN0cmluZztcbiAgcmVhZG9ubHkgYWxpYXM/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGZpbHRlcj86IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+Pjtcbn1cblxuZnVuY3Rpb24gdG9SZWYocmF3OiB1bmtub3duLCBwYXRoOiBzdHJpbmcsIGxhYmVsOiAobmFtZTogc3RyaW5nLCBhbGlhcz86IHN0cmluZywgcHVibGlzaGVyPzogc3RyaW5nKSA9PiBzdHJpbmcpOiBQbHVnaW5TdGVwUmVmIHwgbnVsbCB7XG4gIGNvbnN0IHIgPSBhc1JlY29yZChyYXcpO1xuICBpZiAodHlwZW9mIHIubmFtZSAhPT0gJ3N0cmluZycgfHwgci5uYW1lLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IGFsaWFzID0gdHlwZW9mIHIuYWxpYXMgPT09ICdzdHJpbmcnID8gci5hbGlhcyA6IHVuZGVmaW5lZDtcbiAgY29uc3QgcHVibGlzaGVyID0gdHlwZW9mIHIucHVibGlzaGVyID09PSAnc3RyaW5nJyAmJiByLnB1Ymxpc2hlci5sZW5ndGggPiAwID8gci5wdWJsaXNoZXIgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGZpbHRlciA9IHIuZmlsdGVyICYmIHR5cGVvZiByLmZpbHRlciA9PT0gJ29iamVjdCcgPyByLmZpbHRlciBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIHtcbiAgICBwYXRoLFxuICAgIGxhYmVsOiBsYWJlbChyLm5hbWUsIGFsaWFzLCBwdWJsaXNoZXIpLFxuICAgIG5hbWU6IHIubmFtZSxcbiAgICAuLi4ocHVibGlzaGVyID8geyBwdWJsaXNoZXIgfSA6IHt9KSxcbiAgICAuLi4oYWxpYXMgPyB7IGFsaWFzIH0gOiB7fSksXG4gICAgLi4uKGZpbHRlciA/IHsgZmlsdGVyIH0gOiB7fSksXG4gIH07XG59XG5cbi8qKlxuICogVEhFIHN0ZXAgbGFiZWw6IGBzeW50aGAgZm9yIHRoZSBzeW50aCBzdGVwLCBlbHNlXG4gKiBgPHN0YWdlTmFtZT4vPGFsaWFzID8/IFs8cHVibGlzaGVyPi9dbmFtZT5gLiBFdmVyeSBwZXItc3RlcCByZWNvcmQga2V5cyBvbiBpdCDigJRcbiAqIHRoZSBsb29rdXAgYGNvbnRleHQuc3RlcEtleXNgIHN5bnRoIHNlbmRzIChDTEkgcHJlLXJlc29sdmVyIGFuZCB0aGUgZGVwbG95LXRpbWVcbiAqIGN1c3RvbSByZXNvdXJjZSksIHRoZSBzdGVwIG1hbmlmZXN0LCB0aGUgcnVudGltZSBjaGVjaywgdGhlIGRlY2xhcmVkXG4gKiByZXNvbHV0aW9uIHJvd3MgYW5kIHRoZSBwaXBlbGluZSBzZWN1cml0eSB2aWV3IHRoYXQgam9pbnMgdGhlbS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBsdWdpblN0ZXBMYWJlbChzdGFnZU5hbWU6IHN0cmluZyB8IG51bGwsIHJlZjogUGx1Z2luUmVmSWRlbnRpdHkpOiBzdHJpbmcge1xuICBpZiAoc3RhZ2VOYW1lID09PSBudWxsKSByZXR1cm4gJ3N5bnRoJztcbiAgcmV0dXJuIGAke3N0YWdlTmFtZX0vJHtyZWYuYWxpYXMgPz8gKHJlZi5wdWJsaXNoZXIgPyBgJHtyZWYucHVibGlzaGVyfS8ke3JlZi5uYW1lfWAgOiByZWYubmFtZSl9YDtcbn1cblxuLyoqXG4gKiBFdmVyeSBwbHVnaW4gcmVmZXJlbmNlIGluIGEgcGlwZWxpbmUncyBwcm9wczogYHN5bnRoLnBsdWdpbmAsIHRoZW4gZWFjaFxuICogYHN0YWdlc1tdLnN0ZXBzW10ucGx1Z2luYCBpbiBvcmRlci4gT25lIGVudHJ5IHBlciBTVEVQIChub3QgZGUtZHVwbGljYXRlZCkg4oCUXG4gKiB0aGUgY29udHJhY3QgcmVzdWx0IGlzIHJlcG9ydGVkIHBlciBzdGVwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29sbGVjdFBsdWdpblN0ZXBzKHByb3BzOiB1bmtub3duKTogUGx1Z2luU3RlcFJlZltdIHtcbiAgY29uc3QgcCA9IGFzUmVjb3JkKHByb3BzKTtcbiAgY29uc3Qgb3V0OiBQbHVnaW5TdGVwUmVmW10gPSBbXTtcbiAgY29uc3Qgc3ludGggPSB0b1JlZihhc1JlY29yZChwLnN5bnRoKS5wbHVnaW4sICdzeW50aCcsIChuYW1lKSA9PiBwbHVnaW5TdGVwTGFiZWwobnVsbCwgeyBuYW1lIH0pKTtcbiAgaWYgKHN5bnRoKSBvdXQucHVzaChzeW50aCk7XG4gIGNvbnN0IHN0YWdlcyA9IEFycmF5LmlzQXJyYXkocC5zdGFnZXMpID8gcC5zdGFnZXMgOiBbXTtcbiAgc3RhZ2VzLmZvckVhY2goKHN0YWdlLCBpKSA9PiB7XG4gICAgY29uc3QgcyA9IGFzUmVjb3JkKHN0YWdlKTtcbiAgICBjb25zdCBzdGFnZU5hbWUgPSB0eXBlb2Ygcy5zdGFnZU5hbWUgPT09ICdzdHJpbmcnID8gcy5zdGFnZU5hbWUgOiBgc3RhZ2UgJHtpICsgMX1gO1xuICAgIGNvbnN0IHN0ZXBzID0gQXJyYXkuaXNBcnJheShzLnN0ZXBzKSA/IHMuc3RlcHMgOiBbXTtcbiAgICBzdGVwcy5mb3JFYWNoKChzdGVwLCBqKSA9PiB7XG4gICAgICBjb25zdCByZWYgPSB0b1JlZihhc1JlY29yZChzdGVwKS5wbHVnaW4sIGBzdGFnZXNbJHtpfV0uc3RlcHNbJHtqfV1gLFxuICAgICAgICAobmFtZSwgYWxpYXMsIHB1Ymxpc2hlcikgPT4gcGx1Z2luU3RlcExhYmVsKHN0YWdlTmFtZSwgeyBuYW1lLCBhbGlhcywgcHVibGlzaGVyIH0pKTtcbiAgICAgIGlmIChyZWYpIG91dC5wdXNoKHJlZik7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gb3V0O1xufVxuXG4vKipcbiAqIFRoZSBsb29rdXAgZmlsdGVyIHN5bnRoIHNlbmRzIGZvciBhIHJlZmVyZW5jZSAocGlwZWxpbmUtbWFuYWdlclxuICogYHJlc29sdmVQbHVnaW5zRm9yUHJvcHNgLCB0aGUgZGVwbG95LXRpbWUgY3VzdG9tIHJlc291cmNlLCB0aGUgcGlwZWxpbmVcbiAqIHNlcnZpY2UncyBjb250cmFjdCBjaGVjayk6IHRoZSByZWYncyBuYW1lIOKAlCBhbmQgaXRzIGBwdWJsaXNoZXJgLCB3aGljaFxuICogcm91dGVzIHRoZSBsb29rdXAgdG8gdGhhdCBwdWJsaXNoZXIncyBpbnN0YWxsZWQgbGlzdGluZyDigJQgb3ZlcmxhaWQgYnlcbiAqIGFuIGV4cGxpY2l0IGBmaWx0ZXJgICh3aG9zZSBgbmFtZWAgd2lucyksIGVsc2UgdGhlIGRlZmF1bHQgYWN0aXZlK2RlZmF1bHRcbiAqIHZlcnNpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwbHVnaW5Mb29rdXBGaWx0ZXIocmVmOiBQaWNrPFBsdWdpblN0ZXBSZWYsICduYW1lJyB8ICdmaWx0ZXInIHwgJ3B1Ymxpc2hlcic+KTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4ge1xuICAgIG5hbWU6IHJlZi5uYW1lLFxuICAgIC4uLihyZWYucHVibGlzaGVyID8geyBwdWJsaXNoZXI6IHJlZi5wdWJsaXNoZXIgfSA6IHt9KSxcbiAgICAuLi4ocmVmLmZpbHRlciA/PyB7IGlzQWN0aXZlOiB0cnVlLCBpc0RlZmF1bHQ6IHRydWUgfSksXG4gIH07XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZWZlcmVuY2UgaWRlbnRpdHkgKENESy1mcmVlOiB0aGUgQ0xJLCB0aGUgcGlwZWxpbmUgc2VydmljZSBhbmQgc3ludGggc2hhcmUgaXQpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFRoZSBwbHVnaW4tYWxpYXMgU0VHTUVOVCBvZiBhbiBhcnRpZmFjdCBrZXkg4oCUIGFuZCB0aGUgcmVzb2x2ZXIncyBjYWNoZSBrZXk6XG4gKiB0aGUgZXhwbGljaXQgYWxpYXMsIG9yIGAke25hbWV9LWFsaWFzYCB3aGVuIHRoZXJlIGlzIG5vbmVcbiAqIChgJHtwdWJsaXNoZXJ9LSR7bmFtZX0tYWxpYXNgIGZvciBhIHF1YWxpZmllZCByZWZlcmVuY2UpLiBUSEUgcnVsZSDigJQgdGhlIGZyb250ZW5kJ3MgYXJ0aWZhY3QgcGlja2VyXG4gKiAoYGZyb250ZW5kL3NyYy9saWIvYXJ0aWZhY3Qta2V5cy50c2ApLCB0aGUgQ0xJJ3MgcHJlLXJlc29sdmVyIGFuZFxuICogYFBsdWdpbkxvb2t1cC5ub3JtYWxpemVgIGFsbCBidWlsZCBrZXlzIHRoaXMgd2F5LlxuICpcbiAqIFRoZSBwbGFjZXMgdGhhdCBSRUdJU1RFUiBrZXlzIG11c3QgdXNlIGl0IHRvbzogYSBzdGFnZSBzdGVwIHJlZ2lzdGVyaW5nIHRoZVxuICogYmFyZSBuYW1lIChgbm9kZWpzLWJ1aWxkYCkgb3IgYSBzeW50aCBzdGVwIHN1ZmZpeGluZyBhbiBleHBsaWNpdCBhbGlhc1xuICogKGBteS1zeW50aC1hbGlhc2ApIHdvdWxkIGZhaWwgYW55IFVJLXBpY2tlZCBpbnB1dCBhcnRpZmFjdCB3aXRoIFwiTm8gYXJ0aWZhY3RcbiAqIHJlZ2lzdGVyZWRcIiwgYmVjYXVzZSB0aGUga2V5IGl0IGFza3MgZm9yIGlzIG5ldmVyIHRoZSBrZXkgdGhhdCB3YXMgc3RvcmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGx1Z2luQXJ0aWZhY3RBbGlhcyhwbHVnaW46IFBsdWdpblJlZklkZW50aXR5KTogc3RyaW5nIHtcbiAgaWYgKHBsdWdpbi5hbGlhcykgcmV0dXJuIHBsdWdpbi5hbGlhcztcbiAgcmV0dXJuIHBsdWdpbi5wdWJsaXNoZXIgPyBgJHtzYW5pdGl6ZVB1Ymxpc2hlcihwbHVnaW4ucHVibGlzaGVyKX0tJHtwbHVnaW4ubmFtZX0tYWxpYXNgIDogYCR7cGx1Z2luLm5hbWV9LWFsaWFzYDtcbn1cblxuLyoqIFRoZSBmaWVsZHMgb2YgYSBwbHVnaW4gUkVGRVJFTkNFIHRoYXQgaWRlbnRpZnkgaXQuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpblJlZklkZW50aXR5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBhbGlhcz86IHN0cmluZztcbiAgLyoqIFB1Ymxpc2hlciBoYW5kbGUgb2YgYW4gaW5zdGFsbGVkIGxpc3Rpbmc7IGFic2VudCBmb3IgYW4gdW5xdWFsaWZpZWQgcmVmZXJlbmNlLiAqL1xuICByZWFkb25seSBwdWJsaXNoZXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBwdWJsaXNoZXIgaGFuZGxlIGFzIGl0IG1heSBhcHBlYXIgaW4gYSBjb25zdHJ1Y3QgaWQgb3IgYSBrZXk6IG9ubHlcbiAqIGBbQS1aYS16MC05Xy1dYCAoaGFuZGxlcyBhbHJlYWR5IGFyZTsgdGhpcyBpcyB0aGUgZ3VhcmFudGVlKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplUHVibGlzaGVyKHB1Ymxpc2hlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHB1Ymxpc2hlci5yZXBsYWNlKC9bXkEtWmEtejAtOV8tXS9nLCAnLScpO1xufVxuXG4vKipcbiAqIFRoZSBjb25zdHJ1Y3QtaWQgc2VnbWVudCBvZiBhIHBsdWdpbiBzdGVwOiB0aGUgZXhwbGljaXQgYWxpYXMsIGVsc2VcbiAqIGA8cHVibGlzaGVyPi08bmFtZT5gIGZvciBhIHF1YWxpZmllZCByZWZlcmVuY2UsIGVsc2UgdGhlIGJhcmUgbmFtZSDigJQgc28gYVxuICogc3RlcCB1c2luZyBgYWNtZWAncyBgbGludGAgYW5kIG9uZSB1c2luZyB0aGUgb3JnJ3Mgb3duIGBsaW50YCBuZXZlciBjb2xsaWRlLFxuICogd2hpbGUgYW4gdW5xdWFsaWZpZWQgc3RlcCBrZWVwcyB0aGUgaWQgaXQgYWx3YXlzIGhhZCAocmVuYW1pbmcgaXQgd291bGQgbWFrZVxuICogQ2xvdWRGb3JtYXRpb24gcmVwbGFjZSBpdHMgQ29kZUJ1aWxkIHByb2plY3QpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGx1Z2luU3RlcElkQWxpYXMocGx1Z2luOiBQbHVnaW5SZWZJZGVudGl0eSk6IHN0cmluZyB7XG4gIC8vIGA/P2AsIG5vdCBgfHxgOiBhbiBleHBsaWNpdCAoZXZlbiBlbXB0eSkgYWxpYXMga2VlcHMgdGhlIGlkIGl0IGFsd2F5cyBoYWQuXG4gIHJldHVybiBwbHVnaW4uYWxpYXMgPz8gKHBsdWdpbi5wdWJsaXNoZXIgPyBgJHtzYW5pdGl6ZVB1Ymxpc2hlcihwbHVnaW4ucHVibGlzaGVyKX0tJHtwbHVnaW4ubmFtZX1gIDogcGx1Z2luLm5hbWUpO1xufVxuIl19
|
|
229
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWNvbnRyYWN0LmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29yZS9wbHVnaW4tY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUVILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQXNDOUMsU0FBUyxRQUFRLENBQUMsQ0FBVTtJQUMxQixPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUE0QixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDN0YsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQUMsS0FBeUI7SUFDN0QsT0FBTyxLQUFLLENBQ1YsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQWlCLEVBQ3RDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBaUIsRUFDM0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFpQixDQUN6RCxDQUFDO0FBQ0osQ0FBQztBQUVELG9GQUFvRjtBQUNwRixNQUFNLFVBQVUscUJBQXFCLENBQUMsS0FBeUI7SUFDN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQ2hGLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsOEJBQThCLENBQUMsYUFBZ0Q7SUFDN0YsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsRCxPQUFPLEVBQUUsUUFBUSxF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QUMsQ0FBQyxFQUFFLENBQUM7UUFDdEQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztLQUN2RCxDQUFDO0FBQ0osQ0FBQztBQUVELGdGQUFnRjtBQUNoRixrRkFBa0Y7QUFDbEYsZ0ZBQWdGO0FBRWhGOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFDLE1BQXlCO0lBQzNELElBQUksTUFBTSxDQUFDLEtBQUs7UUFBRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDdEMsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDO0FBQ25ILENBQUM7QUFVRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsU0FBaUI7SUFDakQsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsTUFBeUI7SUFDekQsNkVBQTZFO0lBQzdFLE9BQU8sTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBQbHVnaW4gY29udHJhY3QgZW5mb3JjZW1lbnQuIEEgcGx1Z2luIHNwZWMgZGVjbGFyZXNcbiAqIHRoZSBge3sgcGlwZWxpbmUubWV0YWRhdGEuWCB9fWAgLyBge3sgcGlwZWxpbmUudmFycy5YIH19YCBrZXlzIGEgcGlwZWxpbmVcbiAqIG11c3Qgc3VwcGx5IChgcmVxdWlyZWRNZXRhZGF0YWAgLyBgcmVxdWlyZWRWYXJzYCkgYW5kIHRoZSBjb2VyY2lvbiB0eXBlIG9mXG4gKiBlYWNoIChgbWV0YWRhdGFUeXBlc2AgLyBgdmFyc1R5cGVzYCkuIFRoZSB1cGxvYWQgdmFsaWRhdGVzIHRoZSBzcGVjIGFnYWluc3RcbiAqIGl0cyBvd24gdGVtcGxhdGVzOyB0aGlzIG1vZHVsZSBjaGVja3MgYSBQSVBFTElORSBhZ2FpbnN0IHRoZSBjb250cmFjdHMgb2ZcbiAqIHRoZSBwbHVnaW5zIGl0IHJlZmVyZW5jZXMuXG4gKlxuICogQ0RLLWZyZWU6IHNoYXJlZCBieSB0aGUgcGlwZWxpbmUgc2VydmljZSAoY3JlYXRlIC8gdXBkYXRlIOKGkiA0MDAgbGlzdGluZ1xuICogZXZlcnkgcHJvYmxlbSBwZXIgc3RlcCkgYW5kIHRoZSBzeW50aCAoZmFpbCBmYXN0IGZvciBhIHBpcGVsaW5lIHRoYXQgbmV2ZXJcbiAqIHdlbnQgdGhyb3VnaCB0aGUgQVBJLCBlLmcuIGEgQ0xJLWF1dGhvcmVkIHByb3BzIGZpbGUpLlxuICpcbiAqIFRoZSBjaGVja3MgbWlycm9yIHRoZSB0ZW1wbGF0ZSBldmFsdWF0b3IgKGB0ZW1wbGF0ZS9ldmFsdWF0b3IudHNgKSBleGFjdGx5LFxuICogc28gXCJwYXNzZXMgaGVyZVwiIG1lYW5zIFwicmVzb2x2ZXMgYXQgc3ludGhcIjpcbiAqICAgLSBhIGtleSBpcyBNSVNTSU5HIHdoZW4gYWJzZW50LCBudWxsIG9yIHRoZSBlbXB0eSBzdHJpbmcgKHRoZSBldmFsdWF0b3JcbiAqICAgICBmYWxscyB0byBgfCBkZWZhdWx0OmAgb3IgZmFpbHMgZm9yIGFsbCB0aHJlZSk7XG4gKiAgIC0gYW4gb2JqZWN0L2FycmF5IHZhbHVlIG5ldmVyIGludGVycG9sYXRlcztcbiAqICAgLSBgbnVtYmVyYCAvIGBib29sYCAvIGBqc29uYCBhY2NlcHQgd2hhdCB0aGUgYHwgbnVtYmVyYCAvIGB8IGJvb2xgIC9cbiAqICAgICBgfCBqc29uYCBmaWx0ZXJzIGFjY2VwdCBhZnRlciBzdHJpbmdpZmljYXRpb24uXG4gKi9cblxuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tICcuL21ldGFkYXRhLWhlbHBlcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBNZXRhRGF0YVR5cGUgfSBmcm9tICcuL3BpcGVsaW5lLXR5cGVzLmpzJztcblxuLyoqIERlY2xhcmVkIGNvZXJjaW9uIHR5cGUgb2YgYSBjb250cmFjdCBrZXkuICovXG5leHBvcnQgdHlwZSBDb250cmFjdFZhbHVlVHlwZSA9ICdzdHJpbmcnIHwgJ251bWJlcicgfCAnYm9vbCcgfCAnanNvbic7XG5cbi8qKiBUaGUgY29udHJhY3QgZmllbGRzIG9mIGEgcGx1Z2luIHJlY29yZCAoYXMgYHBsdWdpbnNgIHN0b3JlcyB0aGVtKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luQ29udHJhY3Qge1xuICByZWFkb25seSByZXF1aXJlZE1ldGFkYXRhPzogcmVhZG9ubHkgc3RyaW5nW10gfCBudWxsO1xuICByZWFkb25seSByZXF1aXJlZFZhcnM/OiByZWFkb25seSBzdHJpbmdbXSB8IG51bGw7XG4gIHJlYWRvbmx5IG1ldGFkYXRhVHlwZXM/OiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBDb250cmFjdFZhbHVlVHlwZT4+IHwgbnVsbDtcbiAgcmVhZG9ubHkgdmFyc1R5cGVzPzogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgQ29udHJhY3RWYWx1ZVR5cGU+PiB8IG51bGw7XG59XG5cbi8qKiBXaGF0IGB7eyBwaXBlbGluZS5tZXRhZGF0YS4qIH19YCBhbmQgYHt7IHBpcGVsaW5lLnZhcnMuKiB9fWAgcmVzb2x2ZSBhZ2FpbnN0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250cmFjdFNjb3BlIHtcbiAgcmVhZG9ubHkgbWV0YWRhdGE6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgcmVhZG9ubHkgdmFyczogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xufVxuXG4vKiogT25lIHVubWV0IGNvbnRyYWN0IGtleS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJhY3RJc3N1ZSB7XG4gIHJlYWRvbmx5IGtpbmQ6ICdtZXRhZGF0YScgfCAndmFycyc7XG4gIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuICByZWFkb25seSBwcm9ibGVtOiAnbWlzc2luZycgfCAndHlwZSc7XG4gIC8qKiBUaGUgZGVjbGFyZWQgdHlwZSwgZm9yIGEgYHR5cGVgIHByb2JsZW0uICovXG4gIHJlYWRvbmx5IGV4cGVjdGVkPzogQ29udHJhY3RWYWx1ZVR5cGU7XG4gIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqIFRoZSBwaXBlbGluZS1wcm9wcyBmaWVsZHMgdGhlIGNvbnRyYWN0IHNjb3BlIGlzIGJ1aWx0IGZyb20gKEJ1aWxkZXJQcm9wcyBzdWJzZXQpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250cmFjdFNjb3BlUHJvcHMge1xuICByZWFkb25seSBnbG9iYWw/OiB1bmtub3duO1xuICByZWFkb25seSBkZWZhdWx0cz86IHVua25vd247XG4gIHJlYWRvbmx5IHN5bnRoPzogdW5rbm93bjtcbiAgcmVhZG9ubHkgdmFycz86IHVua25vd247XG59XG5cbmZ1bmN0aW9uIGFzUmVjb3JkKHY6IHVua25vd24pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHJldHVybiB2ICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2KSA/IHYgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gOiB7fTtcbn1cblxuLyoqXG4gKiBgcGlwZWxpbmUubWV0YWRhdGFgIGFzIHN5bnRoIGJ1aWxkcyBpdDogYGdsb2JhbGAg4oaQIGBkZWZhdWx0cy5tZXRhZGF0YWAg4oaQXG4gKiBgc3ludGgubWV0YWRhdGFgIChsYXN0IHdpbnMpLiBUaGUgc2luZ2xlIGRlZmluaXRpb24g4oCUIGBQaXBlbGluZUNvbmZpZ3VyYXRpb25gXG4gKiB1c2VzIGl0IHRvbywgc28gdGhlIEFQSSBjaGVjayBhbmQgdGhlIHN5bnRoIHNjb3BlIGNhbm5vdCBkcmlmdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBpcGVsaW5lU2NvcGVNZXRhZGF0YShwcm9wczogQ29udHJhY3RTY29wZVByb3BzKTogTWV0YURhdGFUeXBlIHtcbiAgcmV0dXJuIG1lcmdlKFxuICAgIGFzUmVjb3JkKHByb3BzLmdsb2JhbCkgYXMgTWV0YURhdGFUeXBlLFxuICAgIGFzUmVjb3JkKGFzUmVjb3JkKHByb3BzLmRlZmF1bHRzKS5tZXRhZGF0YSkgYXMgTWV0YURhdGFUeXBlLFxuICAgIGFzUmVjb3JkKGFzUmVjb3JkKHByb3BzLnN5bnRoKS5tZXRhZGF0YSkgYXMgTWV0YURhdGFUeXBlLFxuICApO1xufVxuXG4vKiogVGhlIGNvbnRyYWN0IHNjb3BlIG9mIGEgcGlwZWxpbmUncyBwcm9wcyAoc2VlIHtAbGluayBwaXBlbGluZVNjb3BlTWV0YWRhdGF9KS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwaXBlbGluZUNvbnRyYWN0U2NvcGUocHJvcHM6IENvbnRyYWN0U2NvcGVQcm9wcyk6IENvbnRyYWN0U2NvcGUge1xuICByZXR1cm4geyBtZXRhZGF0YTogcGlwZWxpbmVTY29wZU1ldGFkYXRhKHByb3BzKSwgdmFyczogYXNSZWNvcmQocHJvcHMudmFycykgfTtcbn1cblxuLyoqXG4gKiBUaGUgY29udHJhY3Qgc2NvcGUgaW5zaWRlIGEgc3ludGggdGVtcGxhdGUgc2NvcGUgKGB7IHBpcGVsaW5lOiB7IG1ldGFkYXRhLFxuICogdmFycywg4oCmIH0gfWAsIHNlZSBgUGlwZWxpbmVDb25maWd1cmF0aW9uLmdldFBpcGVsaW5lU2NvcGVgKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnRyYWN0U2NvcGVGcm9tVGVtcGxhdGVTY29wZSh0ZW1wbGF0ZVNjb3BlOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4pOiBDb250cmFjdFNjb3BlIHtcbiAgY29uc3QgcGlwZWxpbmUgPSBhc1JlY29yZCh0ZW1wbGF0ZVNjb3BlLnBpcGVsaW5lKTtcbiAgcmV0dXJuIHsgbWV0YWRhdGE6IGFzUmVjb3JkKHBpcGVsaW5lLm1ldGFkYXRhKSwgdmFyczogYXNSZWNvcmQocGlwZWxpbmUudmFycykgfTtcbn1cblxuLyoqIFdvdWxkIHRoZSBldmFsdWF0b3IgdHJlYXQgYHZhbHVlYCBhcyBhYnNlbnQgKG1pc3NpbmcgLyBudWxsIC8gZW1wdHkgc3RyaW5nKT8gKi9cbmZ1bmN0aW9uIGlzTWlzc2luZyh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJyc7XG59XG5cbi8qKlxuICogRG9lcyBgdmFsdWVgIHNhdGlzZnkgdGhlIGRlY2xhcmVkIGB0eXBlYCBvbmNlIGludGVycG9sYXRlZD8gTWlycm9ycyB0aGVcbiAqIGV2YWx1YXRvcidzIGByZXNvbHZlT25lYCAob2JqZWN0cyBuZXZlciBpbnRlcnBvbGF0ZSkgYW5kIGBhcHBseUNvZXJjaW9uYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ29udHJhY3RWYWx1ZU9mVHlwZSh2YWx1ZTogdW5rbm93biwgdHlwZTogQ29udHJhY3RWYWx1ZVR5cGUpOiBib29sZWFuIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgcmF3ID0gU3RyaW5nKHZhbHVlKTtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIGNhc2UgJ251bWJlcic6XG4gICAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKE51bWJlcihyYXcpKTtcbiAgICBjYXNlICdib29sJzpcbiAgICAgIHJldHVybiBbJ3RydWUnLCAnMScsICd5ZXMnLCAnZmFsc2UnLCAnMCcsICdubycsICcnXS5pbmNsdWRlcyhyYXcudHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xuICAgIGNhc2UgJ2pzb24nOlxuICAgICAgdHJ5IHtcbiAgICAgICAgSlNPTi5wYXJzZShyYXcpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gIH1cbn1cblxuLyoqIEEgdmFsdWUgc3RpbGwgY2FycnlpbmcgYHt7IOKApiB9fWAgaXMgcmVzb2x2ZWQgbGF0ZXIgKHBpcGVsaW5lIHBhc3MgMSksIHNvIGl0cyB0eXBlIGNhbid0IGJlIGp1ZGdlZCB5ZXQuICovXG5mdW5jdGlvbiBpc1VucmVzb2x2ZWRUZW1wbGF0ZSh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5pbmNsdWRlcygne3snKTtcbn1cblxuZnVuY3Rpb24gY2hlY2tLaW5kKFxuICBraW5kOiAnbWV0YWRhdGEnIHwgJ3ZhcnMnLFxuICByZXF1aXJlZDogcmVhZG9ubHkgc3RyaW5nW10gfCBudWxsIHwgdW5kZWZpbmVkLFxuICB0eXBlczogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgQ29udHJhY3RWYWx1ZVR5cGU+PiB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHN1cHBsaWVkOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4sXG4pOiBDb250cmFjdElzc3VlW10ge1xuICBjb25zdCBpc3N1ZXM6IENvbnRyYWN0SXNzdWVbXSA9IFtdO1xuICBjb25zdCB3aGVyZSA9IGtpbmQgPT09ICdtZXRhZGF0YScgPyAnbWV0YWRhdGEgKGdsb2JhbCAvIGRlZmF1bHRzLm1ldGFkYXRhIC8gc3ludGgubWV0YWRhdGEpJyA6ICd2YXJzJztcbiAgZm9yIChjb25zdCBrZXkgb2YgbmV3IFNldChyZXF1aXJlZCA/PyBbXSkpIHtcbiAgICBpZiAoaXNNaXNzaW5nKHN1cHBsaWVkW2tleV0pKSB7XG4gICAgICBpc3N1ZXMucHVzaCh7IGtpbmQsIGtleSwgcHJvYmxlbTogJ21pc3NpbmcnLCBtZXNzYWdlOiBgcGlwZWxpbmUgJHt3aGVyZX0gbXVzdCBzdXBwbHkgJyR7a2V5fSdgIH0pO1xuICAgIH1cbiAgfVxuICBmb3IgKGNvbnN0IFtrZXksIGV4cGVjdGVkXSBvZiBPYmplY3QuZW50cmllcyh0eXBlcyA/PyB7fSkpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHN1cHBsaWVkW2tleV07XG4gICAgaWYgKGlzTWlzc2luZyh2YWx1ZSkgfHwgaXNVbnJlc29sdmVkVGVtcGxhdGUodmFsdWUpKSBjb250aW51ZTtcbiAgICBpZiAoIWlzQ29udHJhY3RWYWx1ZU9mVHlwZSh2YWx1ZSwgZXhwZWN0ZWQpKSB7XG4gICAgICBjb25zdCBnb3QgPSB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnID8gKEFycmF5LmlzQXJyYXkodmFsdWUpID8gJ2FuIGFycmF5JyA6ICdhbiBvYmplY3QnKSA6IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgIGlzc3Vlcy5wdXNoKHsga2luZCwga2V5LCBwcm9ibGVtOiAndHlwZScsIGV4cGVjdGVkLCBtZXNzYWdlOiBgcGlwZWxpbmUgJHtraW5kfS4ke2tleX0gbXVzdCBiZSBhICR7ZXhwZWN0ZWR9LCBnb3QgJHtnb3R9YCB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGlzc3Vlcztcbn1cblxuLyoqXG4gKiBDaGVjayBvbmUgcGx1Z2luJ3MgY29udHJhY3QgYWdhaW5zdCB0aGUgcGlwZWxpbmUncyBzY29wZS4gUmV0dXJucyBldmVyeVxuICogaXNzdWUgKG1pc3Npbmcga2V5cyBmaXJzdCwgdGhlbiBpbGwtdHlwZWQgb25lcywgbWV0YWRhdGEgYmVmb3JlIHZhcnMpO1xuICogZW1wdHkgd2hlbiB0aGUgY29udHJhY3QgaXMgbWV0LiBEZWNsYXJlZCB0eXBlcyBhcmUgY2hlY2tlZCBmb3IgZXZlcnlcbiAqIFNVUFBMSUVEIGtleSwgcmVxdWlyZWQgb3Igbm90IChhbiBvcHRpb25hbCBrZXkgd2l0aCBhIGB8IGRlZmF1bHQ6YCBpcyBzdGlsbFxuICogY29lcmNlZCB3aGVuIGl0IGlzIHN1cHBsaWVkKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUGx1Z2luQ29udHJhY3QoY29udHJhY3Q6IFBsdWdpbkNvbnRyYWN0LCBzY29wZTogQ29udHJhY3RTY29wZSk6IENvbnRyYWN0SXNzdWVbXSB7XG4gIHJldHVybiBbXG4gICAgLi4uY2hlY2tLaW5kKCdtZXRhZGF0YScsIGNvbnRyYWN0LnJlcXVpcmVkTWV0YWRhdGEsIGNvbnRyYWN0Lm1ldGFkYXRhVHlwZXMsIHNjb3BlLm1ldGFkYXRhKSxcbiAgICAuLi5jaGVja0tpbmQoJ3ZhcnMnLCBjb250cmFjdC5yZXF1aXJlZFZhcnMsIGNvbnRyYWN0LnZhcnNUeXBlcywgc2NvcGUudmFycyksXG4gIF07XG59XG5cbi8qKlxuICogU3ludGgtdGltZSBndWFyZDogdGhyb3cgd2hlbiBgcGx1Z2luYCAocmVzb2x2ZWQgZm9yIGBzdGVwYCkgaGFzIHVubWV0XG4gKiBjb250cmFjdCBrZXlzLiBUaGUgQVBJIHJlZnVzZXMgc3VjaCBhIHBpcGVsaW5lIGF0IGNyZWF0ZS91cGRhdGU7IHRoaXNcbiAqIGNhdGNoZXMgb25lIHRoYXQgcmVhY2hlZCBzeW50aCBhbm90aGVyIHdheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFBsdWdpbkNvbnRyYWN0KFxuICBwbHVnaW46IFBsdWdpbkNvbnRyYWN0ICYgeyByZWFkb25seSBuYW1lOiBzdHJpbmc7IHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmcgfSxcbiAgc2NvcGU6IENvbnRyYWN0U2NvcGUsXG4gIHN0ZXA6IHN0cmluZyxcbik6IHZvaWQge1xuICBjb25zdCBpc3N1ZXMgPSBjaGVja1BsdWdpbkNvbnRyYWN0KHBsdWdpbiwgc2NvcGUpO1xuICBpZiAoaXNzdWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYFN0ZXAgXCIke3N0ZXB9XCIgdXNlcyBwbHVnaW4gXCIke3BsdWdpbi5uYW1lfSR7cGx1Z2luLnZlcnNpb24gPyBgQCR7cGx1Z2luLnZlcnNpb259YCA6ICcnfVwiIHdob3NlIGNvbnRyYWN0IGlzIG5vdCBtZXQ6XFxuYFxuICAgICsgaXNzdWVzLm1hcCgoaSkgPT4gYCAg4oCiICR7aS5tZXNzYWdlfWApLmpvaW4oJ1xcbicpLFxuICApO1xufVxuXG4vKiogQSBwbHVnaW4gcmVmZXJlbmNlIGluIHBpcGVsaW5lIHByb3BzLCB3aXRoIHdoZXJlIGl0IHNpdHMuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpblN0ZXBSZWYge1xuICAvKiogSlNPTiBwYXRoIG9mIHRoZSBzdGVwOiBgc3ludGhgIG9yIGBzdGFnZXNbaV0uc3RlcHNbal1gLiAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG4gIC8qKiBIdW1hbiBsYWJlbDogYHN5bnRoYCBvciBgPHN0YWdlTmFtZT4vPGFsaWFzID8/IG5hbWU+YC4gKi9cbiAgcmVhZG9ubHkgbGFiZWw6IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKiogUHVibGlzaGVyIGhhbmRsZSBvZiBhbiBpbnN0YWxsZWQgbGlzdGluZy4gKi9cbiAgcmVhZG9ubHkgcHVibGlzaGVyPzogc3RyaW5nO1xuICByZWFkb25seSBhbGlhcz86IHN0cmluZztcbiAgcmVhZG9ubHkgZmlsdGVyPzogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xufVxuXG5mdW5jdGlvbiB0b1JlZihyYXc6IHVua25vd24sIHBhdGg6IHN0cmluZywgbGFiZWw6IChuYW1lOiBzdHJpbmcsIGFsaWFzPzogc3RyaW5nLCBwdWJsaXNoZXI/OiBzdHJpbmcpID0+IHN0cmluZyk6IFBsdWdpblN0ZXBSZWYgfCBudWxsIHtcbiAgY29uc3QgciA9IGFzUmVjb3JkKHJhdyk7XG4gIGlmICh0eXBlb2Ygci5uYW1lICE9PSAnc3RyaW5nJyB8fCByLm5hbWUubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcbiAgY29uc3QgYWxpYXMgPSB0eXBlb2Ygci5hbGlhcyA9PT0gJ3N0cmluZycgPyByLmFsaWFzIDogdW5kZWZpbmVkO1xuICBjb25zdCBwdWJsaXNoZXIgPSB0eXBlb2Ygci5wdWJsaXNoZXIgPT09ICdzdHJpbmcnICYmIHIucHVibGlzaGVyLmxlbmd0aCA+IDAgPyByLnB1Ymxpc2hlciA6IHVuZGVmaW5lZDtcbiAgY29uc3QgZmlsdGVyID0gci5maWx0ZXIgJiYgdHlwZW9mIHIuZmlsdGVyID09PSAnb2JqZWN0JyA/IHIuZmlsdGVyIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IDogdW5kZWZpbmVkO1xuICByZXR1cm4ge1xuICAgIHBhdGgsXG4gICAgbGFiZWw6IGxhYmVsKHIubmFtZSwgYWxpYXMsIHB1Ymxpc2hlciksXG4gICAgbmFtZTogci5uYW1lLFxuICAgIC4uLihwdWJsaXNoZXIgPyB7IHB1Ymxpc2hlciB9IDoge30pLFxuICAgIC4uLihhbGlhcyA/IHsgYWxpYXMgfSA6IHt9KSxcbiAgICAuLi4oZmlsdGVyID8geyBmaWx0ZXIgfSA6IHt9KSxcbiAgfTtcbn1cblxuLyoqXG4gKiBUSEUgc3RlcCBsYWJlbDogYHN5bnRoYCBmb3IgdGhlIHN5bnRoIHN0ZXAsIGVsc2VcbiAqIGA8c3RhZ2VOYW1lPi88YWxpYXMgPz8gWzxwdWJsaXNoZXI+L11uYW1lPmAuIEV2ZXJ5IHBlci1zdGVwIHJlY29yZCBrZXlzIG9uIGl0IOKAlFxuICogdGhlIGxvb2t1cCBgY29udGV4dC5zdGVwS2V5c2Agc3ludGggc2VuZHMgKENMSSBwcmUtcmVzb2x2ZXIgYW5kIHRoZSBkZXBsb3ktdGltZVxuICogY3VzdG9tIHJlc291cmNlKSwgdGhlIHN0ZXAgbWFuaWZlc3QsIHRoZSBydW50aW1lIGNoZWNrLCB0aGUgZGVjbGFyZWRcbiAqIHJlc29sdXRpb24gcm93cyBhbmQgdGhlIHBpcGVsaW5lIHNlY3VyaXR5IHZpZXcgdGhhdCBqb2lucyB0aGVtLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGx1Z2luU3RlcExhYmVsKHN0YWdlTmFtZTogc3RyaW5nIHwgbnVsbCwgcmVmOiBQbHVnaW5SZWZJZGVudGl0eSk6IHN0cmluZyB7XG4gIGlmIChzdGFnZU5hbWUgPT09IG51bGwpIHJldHVybiAnc3ludGgnO1xuICByZXR1cm4gYCR7c3RhZ2VOYW1lfS8ke3JlZi5hbGlhcyA/PyAocmVmLnB1Ymxpc2hlciA/IGAke3JlZi5wdWJsaXNoZXJ9LyR7cmVmLm5hbWV9YCA6IHJlZi5uYW1lKX1gO1xufVxuXG4vKipcbiAqIEV2ZXJ5IHBsdWdpbiByZWZlcmVuY2UgaW4gYSBwaXBlbGluZSdzIHByb3BzOiBgc3ludGgucGx1Z2luYCwgdGhlbiBlYWNoXG4gKiBgc3RhZ2VzW10uc3RlcHNbXS5wbHVnaW5gIGluIG9yZGVyLiBPbmUgZW50cnkgcGVyIFNURVAgKG5vdCBkZS1kdXBsaWNhdGVkKSDigJRcbiAqIHRoZSBjb250cmFjdCByZXN1bHQgaXMgcmVwb3J0ZWQgcGVyIHN0ZXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2xsZWN0UGx1Z2luU3RlcHMocHJvcHM6IHVua25vd24pOiBQbHVnaW5TdGVwUmVmW10ge1xuICBjb25zdCBwID0gYXNSZWNvcmQocHJvcHMpO1xuICBjb25zdCBvdXQ6IFBsdWdpblN0ZXBSZWZbXSA9IFtdO1xuICBjb25zdCBzeW50aCA9IHRvUmVmKGFzUmVjb3JkKHAuc3ludGgpLnBsdWdpbiwgJ3N5bnRoJywgKG5hbWUpID0+IHBsdWdpblN0ZXBMYWJlbChudWxsLCB7IG5hbWUgfSkpO1xuICBpZiAoc3ludGgpIG91dC5wdXNoKHN5bnRoKTtcbiAgY29uc3Qgc3RhZ2VzID0gQXJyYXkuaXNBcnJheShwLnN0YWdlcykgPyBwLnN0YWdlcyA6IFtdO1xuICBzdGFnZXMuZm9yRWFjaCgoc3RhZ2UsIGkpID0+IHtcbiAgICBjb25zdCBzID0gYXNSZWNvcmQoc3RhZ2UpO1xuICAgIGNvbnN0IHN0YWdlTmFtZSA9IHR5cGVvZiBzLnN0YWdlTmFtZSA9PT0gJ3N0cmluZycgPyBzLnN0YWdlTmFtZSA6IGBzdGFnZSAke2kgKyAxfWA7XG4gICAgY29uc3Qgc3RlcHMgPSBBcnJheS5pc0FycmF5KHMuc3RlcHMpID8gcy5zdGVwcyA6IFtdO1xuICAgIHN0ZXBzLmZvckVhY2goKHN0ZXAsIGopID0+IHtcbiAgICAgIGNvbnN0IHJlZiA9IHRvUmVmKGFzUmVjb3JkKHN0ZXApLnBsdWdpbiwgYHN0YWdlc1ske2l9XS5zdGVwc1ske2p9XWAsXG4gICAgICAgIChuYW1lLCBhbGlhcywgcHVibGlzaGVyKSA9PiBwbHVnaW5TdGVwTGFiZWwoc3RhZ2VOYW1lLCB7IG5hbWUsIGFsaWFzLCBwdWJsaXNoZXIgfSkpO1xuICAgICAgaWYgKHJlZikgb3V0LnB1c2gocmVmKTtcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBvdXQ7XG59XG5cbi8qKlxuICogVGhlIGxvb2t1cCBmaWx0ZXIgc3ludGggc2VuZHMgZm9yIGEgcmVmZXJlbmNlIChwaXBlbGluZS1tYW5hZ2VyXG4gKiBgcmVzb2x2ZVBsdWdpbnNGb3JQcm9wc2AsIHRoZSBkZXBsb3ktdGltZSBjdXN0b20gcmVzb3VyY2UsIHRoZSBwaXBlbGluZVxuICogc2VydmljZSdzIGNvbnRyYWN0IGNoZWNrKTogdGhlIHJlZidzIG5hbWUg4oCUIGFuZCBpdHMgYHB1Ymxpc2hlcmAsIHdoaWNoXG4gKiByb3V0ZXMgdGhlIGxvb2t1cCB0byB0aGF0IHB1Ymxpc2hlcidzIGluc3RhbGxlZCBsaXN0aW5nIOKAlCBvdmVybGFpZCBieVxuICogYW4gZXhwbGljaXQgYGZpbHRlcmAgKHdob3NlIGBuYW1lYCB3aW5zKSwgZWxzZSB0aGUgZGVmYXVsdCBhY3RpdmUrZGVmYXVsdFxuICogdmVyc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBsdWdpbkxvb2t1cEZpbHRlcihyZWY6IFBpY2s8UGx1Z2luU3RlcFJlZiwgJ25hbWUnIHwgJ2ZpbHRlcicgfCAncHVibGlzaGVyJz4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogcmVmLm5hbWUsXG4gICAgLi4uKHJlZi5wdWJsaXNoZXIgPyB7IHB1Ymxpc2hlcjogcmVmLnB1Ymxpc2hlciB9IDoge30pLFxuICAgIC4uLihyZWYuZmlsdGVyID8/IHsgaXNBY3RpdmU6IHRydWUsIGlzRGVmYXVsdDogdHJ1ZSB9KSxcbiAgfTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJlZmVyZW5jZSBpZGVudGl0eSAoQ0RLLWZyZWU6IHRoZSBDTEksIHRoZSBwaXBlbGluZSBzZXJ2aWNlIGFuZCBzeW50aCBzaGFyZSBpdClcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogVGhlIHBsdWdpbi1hbGlhcyBTRUdNRU5UIG9mIGFuIGFydGlmYWN0IGtleSDigJQgYW5kIHRoZSByZXNvbHZlcidzIGNhY2hlIGtleTpcbiAqIHRoZSBleHBsaWNpdCBhbGlhcywgb3IgYCR7bmFtZX0tYWxpYXNgIHdoZW4gdGhlcmUgaXMgbm9uZVxuICogKGAke3B1Ymxpc2hlcn0tJHtuYW1lfS1hbGlhc2AgZm9yIGEgcXVhbGlmaWVkIHJlZmVyZW5jZSkuIFRIRSBydWxlIOKAlCB0aGUgZnJvbnRlbmQncyBhcnRpZmFjdCBwaWNrZXJcbiAqIChgZnJvbnRlbmQvc3JjL2xpYi9hcnRpZmFjdC1rZXlzLnRzYCksIHRoZSBDTEkncyBwcmUtcmVzb2x2ZXIgYW5kXG4gKiBgUGx1Z2luTG9va3VwLm5vcm1hbGl6ZWAgYWxsIGJ1aWxkIGtleXMgdGhpcyB3YXkuXG4gKlxuICogVGhlIHBsYWNlcyB0aGF0IFJFR0lTVEVSIGtleXMgbXVzdCB1c2UgaXQgdG9vOiBhIHN0YWdlIHN0ZXAgcmVnaXN0ZXJpbmcgdGhlXG4gKiBiYXJlIG5hbWUgKGBub2RlanMtYnVpbGRgKSBvciBhIHN5bnRoIHN0ZXAgc3VmZml4aW5nIGFuIGV4cGxpY2l0IGFsaWFzXG4gKiAoYG15LXN5bnRoLWFsaWFzYCkgd291bGQgZmFpbCBhbnkgVUktcGlja2VkIGlucHV0IGFydGlmYWN0IHdpdGggXCJObyBhcnRpZmFjdFxuICogcmVnaXN0ZXJlZFwiLCBiZWNhdXNlIHRoZSBrZXkgaXQgYXNrcyBmb3IgaXMgbmV2ZXIgdGhlIGtleSB0aGF0IHdhcyBzdG9yZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwbHVnaW5BcnRpZmFjdEFsaWFzKHBsdWdpbjogUGx1Z2luUmVmSWRlbnRpdHkpOiBzdHJpbmcge1xuICBpZiAocGx1Z2luLmFsaWFzKSByZXR1cm4gcGx1Z2luLmFsaWFzO1xuICByZXR1cm4gcGx1Z2luLnB1Ymxpc2hlciA/IGAke3Nhbml0aXplUHVibGlzaGVyKHBsdWdpbi5wdWJsaXNoZXIpfS0ke3BsdWdpbi5uYW1lfS1hbGlhc2AgOiBgJHtwbHVnaW4ubmFtZX0tYWxpYXNgO1xufVxuXG4vKiogVGhlIGZpZWxkcyBvZiBhIHBsdWdpbiBSRUZFUkVOQ0UgdGhhdCBpZGVudGlmeSBpdC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luUmVmSWRlbnRpdHkge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFsaWFzPzogc3RyaW5nO1xuICAvKiogUHVibGlzaGVyIGhhbmRsZSBvZiBhbiBpbnN0YWxsZWQgbGlzdGluZzsgYWJzZW50IGZvciBhbiB1bnF1YWxpZmllZCByZWZlcmVuY2UuICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hlcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHB1Ymxpc2hlciBoYW5kbGUgYXMgaXQgbWF5IGFwcGVhciBpbiBhIGNvbnN0cnVjdCBpZCBvciBhIGtleTogb25seVxuICogYFtBLVphLXowLTlfLV1gIChoYW5kbGVzIGFscmVhZHkgYXJlOyB0aGlzIGlzIHRoZSBndWFyYW50ZWUpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2FuaXRpemVQdWJsaXNoZXIocHVibGlzaGVyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcHVibGlzaGVyLnJlcGxhY2UoL1teQS1aYS16MC05Xy1dL2csICctJyk7XG59XG5cbi8qKlxuICogVGhlIGNvbnN0cnVjdC1pZCBzZWdtZW50IG9mIGEgcGx1Z2luIHN0ZXA6IHRoZSBleHBsaWNpdCBhbGlhcywgZWxzZVxuICogYDxwdWJsaXNoZXI+LTxuYW1lPmAgZm9yIGEgcXVhbGlmaWVkIHJlZmVyZW5jZSwgZWxzZSB0aGUgYmFyZSBuYW1lIOKAlCBzbyBhXG4gKiBzdGVwIHVzaW5nIGBhY21lYCdzIGBsaW50YCBhbmQgb25lIHVzaW5nIHRoZSBvcmcncyBvd24gYGxpbnRgIG5ldmVyIGNvbGxpZGUsXG4gKiB3aGlsZSBhbiB1bnF1YWxpZmllZCBzdGVwIGtlZXBzIHRoZSBpZCBpdCBhbHdheXMgaGFkIChyZW5hbWluZyBpdCB3b3VsZCBtYWtlXG4gKiBDbG91ZEZvcm1hdGlvbiByZXBsYWNlIGl0cyBDb2RlQnVpbGQgcHJvamVjdCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwbHVnaW5TdGVwSWRBbGlhcyhwbHVnaW46IFBsdWdpblJlZklkZW50aXR5KTogc3RyaW5nIHtcbiAgLy8gYD8/YCwgbm90IGB8fGA6IGFuIGV4cGxpY2l0IChldmVuIGVtcHR5KSBhbGlhcyBrZWVwcyB0aGUgaWQgaXQgYWx3YXlzIGhhZC5cbiAgcmV0dXJuIHBsdWdpbi5hbGlhcyA/PyAocGx1Z2luLnB1Ymxpc2hlciA/IGAke3Nhbml0aXplUHVibGlzaGVyKHBsdWdpbi5wdWJsaXNoZXIpfS0ke3BsdWdpbi5uYW1lfWAgOiBwbHVnaW4ubmFtZSk7XG59XG4iXX0=
|
|
@@ -77,4 +77,4 @@ export function exactPinNotFoundMessage(label, pin, state) {
|
|
|
77
77
|
default: return `Plugin "${label}" version ${pin} does not exist (never published, or refused by its build's vulnerability scan)`;
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWxvb2t1cC1lbnZlbG9wZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL3BsdWdpbi1sb29rdXAtZW52ZWxvcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQU90Qyx5Q0FBeUM7QUFDekMsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQXFDLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFVcEg7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLElBQWE7SUFDeEMsSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRO1FBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzdFLE1BQU0sS0FBSyxHQUFJLElBQTJCLENBQUMsSUFBSSxDQUFDO0lBQ2hELE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQTZDLENBQUM7SUFDbEgsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUM7SUFDaEQsTUFBTSxNQUFNLEdBQUcsU0FBUyxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsSUFBSSxPQUFRLFNBQWdDLENBQUMsSUFBSSxLQUFLLFFBQVE7V0FDakgsU0FBOEIsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDbEQsQ0FBQyxDQUFDLFNBQW1CO1FBQ3JCLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDVCxNQUFNLFFBQVEsR0FBb0IsRUFBRSxDQUFDO0lBQ3JDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUN0QyxLQUFLLE1B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S0FBYSxFQUFFLEdBQVcsRUFBRSxLQUFpQztJQUNuRyxRQUFRLEtBQUssRUFBRSxDQUFDO1FBQ2QsS0FBSyxTQUFTLEVBQUUsT0FBTyxXQUFXLEtBQUssYUFBYSxHQUFHLHFDQUFxQyxDQUFDO1FBQzdGLEtBQUssVUFBVSxFQUFFLE9BQU8sV0FBVyxLQUFLLGFBQWEsR0FBRyxjQUFjLENBQUM7UUFDdkUsS0FBSyxRQUFRLEVBQUUsT0FBTyxXQUFXLEtBQUssYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNwRSxLQUFLLFNBQVMsRUFBRSxPQUFPLFdBQVcsS0FBSyxhQUFhLEdBQUcsaUJBQWlCLENBQUM7UUFDekUsU0FBUyxPQUFPLFdBQVcsS0FBSyxhQUFhLEdBQUcsaUZBQWlGLENBQUM7SUFDcEksQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9waXBlbGluZS1kYXRhJztcblxuLyoqIEhvdyBzZXJpb3VzIGEgbG9va3VwIHdhcm5pbmcgaXMgKHZ1bG5lcmFiaWxpdHkgc3RhdGUgaXMgZ3JhZGVkLCBuZXZlciByZWZ1c2VkKS4gKi9cbmV4cG9ydCB0eXBlIExvb2t1cFdhcm5pbmdTZXZlcml0eSA9ICdpbmZvJyB8ICd3YXJuaW5nJyB8ICdlcnJvcicgfCAnY3JpdGljYWwnO1xuXG4vKiogU2V2ZXJpdGllcywgbGVhc3QgdG8gbW9zdCBzZXJpb3VzLiAqL1xuZXhwb3J0IGNvbnN0IExPT0tVUF9XQVJOSU5HX1NFVkVSSVRJRVM6IHJlYWRvbmx5IExvb2t1cFdhcm5pbmdTZXZlcml0eVtdID0gWydpbmZvJywgJ3dhcm5pbmcnLCAnZXJyb3InLCAnY3JpdGljYWwnXTtcblxuLyoqIE9uZSB3YXJuaW5nIHJpZGluZyBiZXNpZGUgYSByZXNvbHZlZCBwbHVnaW4uICovXG5leHBvcnQgaW50ZXJmYWNlIExvb2t1cFdhcm5pbmcge1xuICByZWFkb25seSBjb2RlPzogc3RyaW5nO1xuICByZWFkb25seSBtZXNzYWdlOiBzdHJpbmc7XG4gIC8qKiBBYnNlbnQgb24gdGhlIHdpcmUg4oaSIGB3YXJuaW5nYC4gKi9cbiAgcmVhZG9ubHkgc2V2ZXJpdHk6IExvb2t1cFdhcm5pbmdTZXZlcml0eTtcbn1cblxuLyoqXG4gKiBVbndyYXAgYSBgL3BsdWdpbnMvbG9va3VwYCBhbnN3ZXIuIFRoZSBwbGF0Zm9ybSdzIHN1Y2Nlc3MgZW52ZWxvcGUgaXNcbiAqIGB7IHN1Y2Nlc3MsIHN0YXR1c0NvZGUsIGRhdGE6IHsgcGx1Z2luLCB3YXJuaW5ncyB9IH1gIChub3RlIHRoZSBkb3VibGVcbiAqIG5lc3Rpbmc6IGBkYXRhLnBsdWdpbmApOyBgeyBkYXRhOiBQbHVnaW4gfWAsIGB7IHBsdWdpbiB9YCBhbmQgYSBiYXJlIFBsdWdpblxuICogYXJlIHRvbGVyYXRlZCB0b28uIFJldHVybnMgdGhlIHBsdWdpbiAobnVsbCB3aGVuIGFic2VudCBvciBuYW1lbGVzcykgYW5kIHRoZVxuICogZ3JhZGVkIHdhcm5pbmdzIChsaWZlY3ljbGUsIHZ1bG5lcmFiaWxpdHksIGNvbXBsaWFuY2UpIHRoYXQgcmlkZSBiZXNpZGUgaXQuXG4gKlxuICogRGVwZW5kZW5jeS1mcmVlICh0eXBlLW9ubHkgaW1wb3J0cykgc28gdGhlIHBsdWdpbi1sb29rdXAgTGFtYmRhIGNhbiBidW5kbGUgaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBMb29rdXAoYm9keTogdW5rbm93bik6IHsgcGx1Z2luOiBQbHVnaW4gfCBudWxsOyB3YXJuaW5nczogTG9va3VwV2FybmluZ1tdIH0ge1xuICBpZiAoIWJvZHkgfHwgdHlwZW9mIGJvZHkgIT09ICdvYmplY3QnKSByZXR1cm4geyBwbHVnaW46IG51bGwsIHdhcm5pbmdzOiBbXSB9O1xuICBjb25zdCBpbm5lciA9IChib2R5IGFzIHsgZGF0YT86IHVua25vd24gfSkuZGF0YTtcbiAgY29uc3QgY29udGFpbmVyID0gKGlubmVyICYmIHR5cGVvZiBpbm5lciA9PT0gJ29iamVjdCcgPyBpbm5lciA6IGJvZHkpIGFzIHsgcGx1Z2luPzogdW5rbm93bjsgd2FybmluZ3M/OiB1bmtub3duIH07XG4gIGNvbnN0IGNhbmRpZGF0ZSA9IGNvbnRhaW5lci5wbHVnaW4gPz8gY29udGFpbmVyO1xuICBjb25zdCBwbHVnaW4gPSBjYW5kaWRhdGUgJiYgdHlwZW9mIGNhbmRpZGF0ZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIChjYW5kaWRhdGUgYXMgeyBuYW1lPzogdW5rbm93biB9KS5uYW1lID09PSAnc3RyaW5nJ1xuICAgICYmIChjYW5kaWRhdGUgYXMgeyBuYW1lOiBzdHJpbmcgfSkubmFtZS5sZW5ndGggPiAwXG4gICAgPyBjYW5kaWRhdGUgYXMgUGx1Z2luXG4gICAgOiBudWxsO1xuICBjb25zdCB3YXJuaW5nczogTG9va3VwV2FybmluZ1tdID0gW107XG4gIGlmIChBcnJheS5pc0FycmF5KGNvbnRhaW5lci53YXJuaW5ncykpIHtcbiAgICBmb3IgKGNvbnN0IHcgb2YgY29udGFpbmVyLndhcm5pbmdzKSB7XG4gICAgICBpZiAoIXcgfHwgdHlwZW9mIHcgIT09ICdvYmplY3QnKSBjb250aW51ZTtcbiAgICAgIGNvbnN0IHsgY29kZSwgbWVzc2FnZSwgc2V2ZXJpdHkgfSA9IHcgYXMgeyBjb2RlPzogdW5rbm93bjsgbWVzc2FnZT86IHVua25vd247IHNldmVyaXR5PzogdW5rbm93biB9O1xuICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlICE9PSAnc3RyaW5nJyB8fCBtZXNzYWdlLmxlbmd0aCA9PT0gMCkgY29udGludWU7XG4gICAgICB3YXJuaW5ncy5wdXNoKHtcbiAgICAgICAgLi4uKHR5cGVvZiBjb2RlID09PSAnc3RyaW5nJyA/IHsgY29kZSB9IDoge30pLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBzZXZlcml0eTogKExPT0tVUF9XQVJOSU5HX1NFVkVSSVRJRVMgYXMgcmVhZG9ubHkgdW5rbm93bltdKS5pbmNsdWRlcyhzZXZlcml0eSkgPyBzZXZlcml0eSBhcyBMb29rdXBXYXJuaW5nU2V2ZXJpdHkgOiAnd2FybmluZycsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgcGx1Z2luLCB3YXJuaW5ncyB9O1xufVxuXG4vKipcbiAqIE9uZSBsaW5lIHN1bW1hcml6aW5nIGdyYWRlZCB3YXJuaW5ncywgbW9zdCBzZXJpb3VzIGZpcnN0IOKAlFxuICogYDMgcGx1Z2luIHdhcm5pbmdzOiAxIGNyaXRpY2FsLCAyIGVycm9yYC4gTnVsbCB3aGVuIHRoZXJlIGFyZSBub25lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3VtbWFyaXplTG9va3VwV2FybmluZ3Mod2FybmluZ3M6IHJlYWRvbmx5IFBpY2s8TG9va3VwV2FybmluZywgJ3NldmVyaXR5Jz5bXSk6IHN0cmluZyB8IG51bGwge1xuICBpZiAod2FybmluZ3MubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcbiAgY29uc3QgcGFydHMgPSBbLi4uTE9PS1VQX1dBUk5JTkdfU0VWRVJJVElFU10ucmV2ZXJzZSgpXG4gICAgLm1hcCgoc2V2KSA9PiBbc2V2LCB3YXJuaW5ncy5maWx0ZXIoKHcpID0+IHcuc2V2ZXJpdHkgPT09IHNldikubGVuZ3RoXSBhcyBjb25zdClcbiAgICAuZmlsdGVyKChbLCBuXSkgPT4gbiA+IDApXG4gICAgLm1hcCgoW3Nldiwgbl0pID0+IGAke259ICR7c2V2fWApO1xuICByZXR1cm4gYCR7d2FybmluZ3MubGVuZ3RofSBwbHVnaW4gd2FybmluZyR7d2FybmluZ3MubGVuZ3RoID09PSAxID8gJycgOiAncyd9OiAke3BhcnRzLmpvaW4oJywgJyl9YDtcbn1cblxuLyoqIFdoeSBhIGxvb2t1cCBmb3VuZCBub3RoaW5nLCBhcyB0aGUgcGx1Z2luIHNlcnZpY2UncyA0MDQgYGRldGFpbHMuc3RhdGVgIHJlcG9ydHMgaXQuICovXG5leHBvcnQgdHlwZSBMb29rdXBOb3RGb3VuZFN0YXRlID0gJ2RlbGV0ZWQnIHwgJ2luYWN0aXZlJyB8ICd5YW5rZWQnIHwgJ21pc3NpbmcnO1xuXG5jb25zdCBOT1RfRk9VTkRfU1RBVEVTOiByZWFkb25seSBMb29rdXBOb3RGb3VuZFN0YXRlW10gPSBbJ2RlbGV0ZWQnLCAnaW5hY3RpdmUnLCAneWFua2VkJywgJ21pc3NpbmcnXTtcblxuLyoqXG4gKiBgZGV0YWlscy5zdGF0ZWAgb2YgYSByZWZ1c2VkIGxvb2t1cCwgcmVhZCBvZmYgZWl0aGVyIGFuIGF4aW9zLXN0eWxlIGVycm9yXG4gKiAoYGVyci5yZXNwb25zZS5kYXRhYCkgb3IgdGhlIHJlc3BvbnNlIGJvZHkgaXRzZWxmLiBOdWxsIHdoZW4gYWJzZW50L3Vua25vd24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb29rdXBOb3RGb3VuZFN0YXRlKGVyck9yQm9keTogdW5rbm93bik6IExvb2t1cE5vdEZvdW5kU3RhdGUgfCBudWxsIHtcbiAgaWYgKCFlcnJPckJvZHkgfHwgdHlwZW9mIGVyck9yQm9keSAhPT0gJ29iamVjdCcpIHJldHVybiBudWxsO1xuICBjb25zdCBkYXRhID0gKGVyck9yQm9keSBhcyB7IHJlc3BvbnNlPzogeyBkYXRhPzogdW5rbm93biB9IH0pLnJlc3BvbnNlPy5kYXRhID8/IGVyck9yQm9keTtcbiAgY29uc3QgZGV0YWlscyA9IGRhdGEgJiYgdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnID8gKGRhdGEgYXMgeyBkZXRhaWxzPzogdW5rbm93biB9KS5kZXRhaWxzIDogdW5kZWZpbmVkO1xuICBjb25zdCBzdGF0ZSA9IGRldGFpbHMgJiYgdHlwZW9mIGRldGFpbHMgPT09ICdvYmplY3QnID8gKGRldGFpbHMgYXMgeyBzdGF0ZT86IHVua25vd24gfSkuc3RhdGUgOiB1bmRlZmluZWQ7XG4gIHJldHVybiB0eXBlb2Ygc3RhdGUgPT09ICdzdHJpbmcnICYmIChOT1RfRk9VTkRfU1RBVEVTIGFzIHJlYWRvbmx5IHN0cmluZ1tdKS5pbmNsdWRlcyhzdGF0ZSkgPyBzdGF0ZSBhcyBMb29rdXBOb3RGb3VuZFN0YXRlIDogbnVsbDtcbn1cblxuLyoqXG4gKiBUaGUgbWVzc2FnZSBmb3IgYW4gZXhhY3QgdmVyc2lvbiBwaW4gdGhhdCBkaWQgbm90IHJlc29sdmUuIFNoYXJlZCBieSB0aGVcbiAqIENMSSdzIHByZS1yZXNvbHV0aW9uIGFuZCB0aGUgZGVwbG95LXRpbWUgTGFtYmRhJ3MgQ2xvdWRGb3JtYXRpb24gcmVhc29uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhhY3RQaW5Ob3RGb3VuZE1lc3NhZ2UobGFiZWw6IHN0cmluZywgcGluOiBzdHJpbmcsIHN0YXRlOiBMb29rdXBOb3RGb3VuZFN0YXRlIHwgbnVsbCk6IHN0cmluZyB7XG4gIHN3aXRjaCAoc3RhdGUpIHtcbiAgICBjYXNlICdkZWxldGVkJzogcmV0dXJuIGBQbHVnaW4gXCIke2xhYmVsfVwiIHZlcnNpb24gJHtwaW59IHdhcyBkZWxldGVkIGZyb20geW91ciBvcmdhbml6YXRpb25gO1xuICAgIGNhc2UgJ2luYWN0aXZlJzogcmV0dXJuIGBQbHVnaW4gXCIke2xhYmVsfVwiIHZlcnNpb24gJHtwaW59IGlzIGluYWN0aXZlYDtcbiAgICBjYXNlICd5YW5rZWQnOiByZXR1cm4gYFBsdWdpbiBcIiR7bGFiZWx9XCIgdmVyc2lvbiAke3Bpbn0gd2FzIHlhbmtlZGA7XG4gICAgY2FzZSAnbWlzc2luZyc6IHJldHVybiBgUGx1Z2luIFwiJHtsYWJlbH1cIiB2ZXJzaW9uICR7cGlufSBkb2VzIG5vdCBleGlzdGA7XG4gICAgZGVmYXVsdDogcmV0dXJuIGBQbHVnaW4gXCIke2xhYmVsfVwiIHZlcnNpb24gJHtwaW59IGRvZXMgbm90IGV4aXN0IChuZXZlciBwdWJsaXNoZWQsIG9yIHJlZnVzZWQgYnkgaXRzIGJ1aWxkJ3MgdnVsbmVyYWJpbGl0eSBzY2FuKWA7XG4gIH1cbn1cbiJdfQ==
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWxvb2t1cC1lbnZlbG9wZS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvcmUvcGx1Z2luLWxvb2t1cC1lbnZlbG9wZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBT3RDLHlDQUF5QztBQUN6QyxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBcUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztBQVVwSDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBYTtJQUN4QyxJQUFJLENBQUMsSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVE7UUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDN0UsTUFBTSxLQUFLLEdBQUksSUFBMkIsQ0FBQyxJQUFJLENBQUM7SUFDaEQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBNkMsQ0FBQztJQUNsSCxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQztJQUNoRCxNQUFNLE1BQU0sR0FBRyxTQUFTLElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxJQUFJLE9BQVEsU0FBZ0MsQ0FBQyxJQUFJLEtBQUssUUFBUTtXQUNqSCxTQUE4QixDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUNsRCxDQUFDLENBQUMsU0FBbUI7UUFDckIsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNULE1BQU0sUUFBUSxHQUFvQixFQUFFLENBQUM7SUFDckMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ3RDLEtBQUssTUFBTSxDQUFDLElBQUksU0FB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QUFFLEtBQWlDO0lBQ25HLFFBQVEsS0FBSyxFQUFFLENBQUM7UUFDZCxLQUFLLFNBQVMsRUFBRSxPQUFPLFdBQVcsS0FBSyxhQUFhLEdBQUcscUNBQXFDLENBQUM7UUFDN0YsS0FBSyxVQUFVLEVBQUUsT0FBTyxXQUFXLEtBQUssYUFBYSxHQUFHLGNBQWMsQ0FBQztRQUN2RSxLQUFLLFFBQVEsRUFBRSxPQUFPLFdBQVcsS0FBSyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ3BFLEtBQUssU0FBUyxFQUFFLE9BQU8sV0FBVyxLQUFLLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQztRQUN6RSxTQUFTLE9BQU8sV0FBVyxLQUFLLGFBQWEsR0FBRyxpRkFBaUYsQ0FBQztJQUNwSSxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWRhdGEnO1xuXG4vKiogSG93IHNlcmlvdXMgYSBsb29rdXAgd2FybmluZyBpcyAodnVsbmVyYWJpbGl0eSBzdGF0ZSBpcyBncmFkZWQsIG5ldmVyIHJlZnVzZWQpLiAqL1xuZXhwb3J0IHR5cGUgTG9va3VwV2FybmluZ1NldmVyaXR5ID0gJ2luZm8nIHwgJ3dhcm5pbmcnIHwgJ2Vycm9yJyB8ICdjcml0aWNhbCc7XG5cbi8qKiBTZXZlcml0aWVzLCBsZWFzdCB0byBtb3N0IHNlcmlvdXMuICovXG5leHBvcnQgY29uc3QgTE9PS1VQX1dBUk5JTkdfU0VWRVJJVElFUzogcmVhZG9ubHkgTG9va3VwV2FybmluZ1NldmVyaXR5W10gPSBbJ2luZm8nLCAnd2FybmluZycsICdlcnJvcicsICdjcml0aWNhbCddO1xuXG4vKiogT25lIHdhcm5pbmcgcmlkaW5nIGJlc2lkZSBhIHJlc29sdmVkIHBsdWdpbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9va3VwV2FybmluZyB7XG4gIHJlYWRvbmx5IGNvZGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZztcbiAgLyoqIEFic2VudCBvbiB0aGUgd2lyZSDihpIgYHdhcm5pbmdgLiAqL1xuICByZWFkb25seSBzZXZlcml0eTogTG9va3VwV2FybmluZ1NldmVyaXR5O1xufVxuXG4vKipcbiAqIFVud3JhcCBhIGAvcGx1Z2lucy9sb29rdXBgIGFuc3dlci4gVGhlIHBsYXRmb3JtJ3Mgc3VjY2VzcyBlbnZlbG9wZSBpc1xuICogYHsgc3VjY2Vzcywgc3RhdHVzQ29kZSwgZGF0YTogeyBwbHVnaW4sIHdhcm5pbmdzIH0gfWAgKG5vdGUgdGhlIGRvdWJsZVxuICogbmVzdGluZzogYGRhdGEucGx1Z2luYCk7IGB7IGRhdGE6IFBsdWdpbiB9YCwgYHsgcGx1Z2luIH1gIGFuZCBhIGJhcmUgUGx1Z2luXG4gKiBhcmUgdG9sZXJhdGVkIHRvby4gUmV0dXJucyB0aGUgcGx1Z2luIChudWxsIHdoZW4gYWJzZW50IG9yIG5hbWVsZXNzKSBhbmQgdGhlXG4gKiBncmFkZWQgd2FybmluZ3MgKGxpZmVjeWNsZSwgdnVsbmVyYWJpbGl0eSwgY29tcGxpYW5jZSkgdGhhdCByaWRlIGJlc2lkZSBpdC5cbiAqXG4gKiBEZXBlbmRlbmN5LWZyZWUgKHR5cGUtb25seSBpbXBvcnRzKSBzbyB0aGUgcGx1Z2luLWxvb2t1cCBMYW1iZGEgY2FuIGJ1bmRsZSBpdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVud3JhcExvb2t1cChib2R5OiB1bmtub3duKTogeyBwbHVnaW46IFBsdWdpbiB8IG51bGw7IHdhcm5pbmdzOiBMb29rdXBXYXJuaW5nW10gfSB7XG4gIGlmICghYm9keSB8fCB0eXBlb2YgYm9keSAhPT0gJ29iamVjdCcpIHJldHVybiB7IHBsdWdpbjogbnVsbCwgd2FybmluZ3M6IFtdIH07XG4gIGNvbnN0IGlubmVyID0gKGJvZHkgYXMgeyBkYXRhPzogdW5rbm93biB9KS5kYXRhO1xuICBjb25zdCBjb250YWluZXIgPSAoaW5uZXIgJiYgdHlwZW9mIGlubmVyID09PSAnb2JqZWN0JyA/IGlubmVyIDogYm9keSkgYXMgeyBwbHVnaW4/OiB1bmtub3duOyB3YXJuaW5ncz86IHVua25vd24gfTtcbiAgY29uc3QgY2FuZGlkYXRlID0gY29udGFpbmVyLnBsdWdpbiA/PyBjb250YWluZXI7XG4gIGNvbnN0IHBsdWdpbiA9IGNhbmRpZGF0ZSAmJiB0eXBlb2YgY2FuZGlkYXRlID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgKGNhbmRpZGF0ZSBhcyB7IG5hbWU/OiB1bmtub3duIH0pLm5hbWUgPT09ICdzdHJpbmcnXG4gICAgJiYgKGNhbmRpZGF0ZSBhcyB7IG5hbWU6IHN0cmluZyB9KS5uYW1lLmxlbmd0aCA+IDBcbiAgICA/IGNhbmRpZGF0ZSBhcyBQbHVnaW5cbiAgICA6IG51bGw7XG4gIGNvbnN0IHdhcm5pbmdzOiBMb29rdXBXYXJuaW5nW10gPSBbXTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY29udGFpbmVyLndhcm5pbmdzKSkge1xuICAgIGZvciAoY29uc3QgdyBvZiBjb250YWluZXIud2FybmluZ3MpIHtcbiAgICAgIGlmICghdyB8fCB0eXBlb2YgdyAhPT0gJ29iamVjdCcpIGNvbnRpbnVlO1xuICAgICAgY29uc3QgeyBjb2RlLCBtZXNzYWdlLCBzZXZlcml0eSB9ID0gdyBhcyB7IGNvZGU/OiB1bmtub3duOyBtZXNzYWdlPzogdW5rbm93bjsgc2V2ZXJpdHk/OiB1bmtub3duIH07XG4gICAgICBpZiAodHlwZW9mIG1lc3NhZ2UgIT09ICdzdHJpbmcnIHx8IG1lc3NhZ2UubGVuZ3RoID09PSAwKSBjb250aW51ZTtcbiAgICAgIHdhcm5pbmdzLnB1c2goe1xuICAgICAgICAuLi4odHlwZW9mIGNvZGUgPT09ICdzdHJpbmcnID8geyBjb2RlIH0gOiB7fSksXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIHNldmVyaXR5OiAoTE9PS1VQX1dBUk5JTkdfU0VWRVJJVElFUyBhcyByZWFkb25seSB1bmtub3duW10pLmluY2x1ZGVzKHNldmVyaXR5KSA/IHNldmVyaXR5IGFzIExvb2t1cFdhcm5pbmdTZXZlcml0eSA6ICd3YXJuaW5nJyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4geyBwbHVnaW4sIHdhcm5pbmdzIH07XG59XG5cbi8qKlxuICogT25lIGxpbmUgc3VtbWFyaXppbmcgZ3JhZGVkIHdhcm5pbmdzLCBtb3N0IHNlcmlvdXMgZmlyc3Qg4oCUXG4gKiBgMyBwbHVnaW4gd2FybmluZ3M6IDEgY3JpdGljYWwsIDIgZXJyb3JgLiBOdWxsIHdoZW4gdGhlcmUgYXJlIG5vbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdW1tYXJpemVMb29rdXBXYXJuaW5ncyh3YXJuaW5nczogcmVhZG9ubHkgUGljazxMb29rdXBXYXJuaW5nLCAnc2V2ZXJpdHknPltdKTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmICh3YXJuaW5ncy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuICBjb25zdCBwYXJ0cyA9IFsuLi5MT09LVVBfV0FSTklOR19TRVZFUklUSUVTXS5yZXZlcnNlKClcbiAgICAubWFwKChzZXYpID0+IFtzZXYsIHdhcm5pbmdzLmZpbHRlcigodykgPT4gdy5zZXZlcml0eSA9PT0gc2V2KS5sZW5ndGhdIGFzIGNvbnN0KVxuICAgIC5maWx0ZXIoKFssIG5dKSA9PiBuID4gMClcbiAgICAubWFwKChbc2V2LCBuXSkgPT4gYCR7bn0gJHtzZXZ9YCk7XG4gIHJldHVybiBgJHt3YXJuaW5ncy5sZW5ndGh9IHBsdWdpbiB3YXJuaW5nJHt3YXJuaW5ncy5sZW5ndGggPT09IDEgPyAnJyA6ICdzJ306ICR7cGFydHMuam9pbignLCAnKX1gO1xufVxuXG4vKiogV2h5IGEgbG9va3VwIGZvdW5kIG5vdGhpbmcsIGFzIHRoZSBwbHVnaW4gc2VydmljZSdzIDQwNCBgZGV0YWlscy5zdGF0ZWAgcmVwb3J0cyBpdC4gKi9cbmV4cG9ydCB0eXBlIExvb2t1cE5vdEZvdW5kU3RhdGUgPSAnZGVsZXRlZCcgfCAnaW5hY3RpdmUnIHwgJ3lhbmtlZCcgfCAnbWlzc2luZyc7XG5cbmNvbnN0IE5PVF9GT1VORF9TVEFURVM6IHJlYWRvbmx5IExvb2t1cE5vdEZvdW5kU3RhdGVbXSA9IFsnZGVsZXRlZCcsICdpbmFjdGl2ZScsICd5YW5rZWQnLCAnbWlzc2luZyddO1xuXG4vKipcbiAqIGBkZXRhaWxzLnN0YXRlYCBvZiBhIHJlZnVzZWQgbG9va3VwLCByZWFkIG9mZiBlaXRoZXIgYW4gYXhpb3Mtc3R5bGUgZXJyb3JcbiAqIChgZXJyLnJlc3BvbnNlLmRhdGFgKSBvciB0aGUgcmVzcG9uc2UgYm9keSBpdHNlbGYuIE51bGwgd2hlbiBhYnNlbnQvdW5rbm93bi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvb2t1cE5vdEZvdW5kU3RhdGUoZXJyT3JCb2R5OiB1bmtub3duKTogTG9va3VwTm90Rm91bmRTdGF0ZSB8IG51bGwge1xuICBpZiAoIWVyck9yQm9keSB8fCB0eXBlb2YgZXJyT3JCb2R5ICE9PSAnb2JqZWN0JykgcmV0dXJuIG51bGw7XG4gIGNvbnN0IGRhdGEgPSAoZXJyT3JCb2R5IGFzIHsgcmVzcG9uc2U/OiB7IGRhdGE/OiB1bmtub3duIH0gfSkucmVzcG9uc2U/LmRhdGEgPz8gZXJyT3JCb2R5O1xuICBjb25zdCBkZXRhaWxzID0gZGF0YSAmJiB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgPyAoZGF0YSBhcyB7IGRldGFpbHM/OiB1bmtub3duIH0pLmRldGFpbHMgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IHN0YXRlID0gZGV0YWlscyAmJiB0eXBlb2YgZGV0YWlscyA9PT0gJ29iamVjdCcgPyAoZGV0YWlscyBhcyB7IHN0YXRlPzogdW5rbm93biB9KS5zdGF0ZSA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIHR5cGVvZiBzdGF0ZSA9PT0gJ3N0cmluZycgJiYgKE5PVF9GT1VORF9TVEFURVMgYXMgcmVhZG9ubHkgc3RyaW5nW10pLmluY2x1ZGVzKHN0YXRlKSA/IHN0YXRlIGFzIExvb2t1cE5vdEZvdW5kU3RhdGUgOiBudWxsO1xufVxuXG4vKipcbiAqIFRoZSBtZXNzYWdlIGZvciBhbiBleGFjdCB2ZXJzaW9uIHBpbiB0aGF0IGRpZCBub3QgcmVzb2x2ZS4gU2hhcmVkIGJ5IHRoZVxuICogQ0xJJ3MgcHJlLXJlc29sdXRpb24gYW5kIHRoZSBkZXBsb3ktdGltZSBMYW1iZGEncyBDbG91ZEZvcm1hdGlvbiByZWFzb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleGFjdFBpbk5vdEZvdW5kTWVzc2FnZShsYWJlbDogc3RyaW5nLCBwaW46IHN0cmluZywgc3RhdGU6IExvb2t1cE5vdEZvdW5kU3RhdGUgfCBudWxsKTogc3RyaW5nIHtcbiAgc3dpdGNoIChzdGF0ZSkge1xuICAgIGNhc2UgJ2RlbGV0ZWQnOiByZXR1cm4gYFBsdWdpbiBcIiR7bGFiZWx9XCIgdmVyc2lvbiAke3Bpbn0gd2FzIGRlbGV0ZWQgZnJvbSB5b3VyIG9yZ2FuaXphdGlvbmA7XG4gICAgY2FzZSAnaW5hY3RpdmUnOiByZXR1cm4gYFBsdWdpbiBcIiR7bGFiZWx9XCIgdmVyc2lvbiAke3Bpbn0gaXMgaW5hY3RpdmVgO1xuICAgIGNhc2UgJ3lhbmtlZCc6IHJldHVybiBgUGx1Z2luIFwiJHtsYWJlbH1cIiB2ZXJzaW9uICR7cGlufSB3YXMgeWFua2VkYDtcbiAgICBjYXNlICdtaXNzaW5nJzogcmV0dXJuIGBQbHVnaW4gXCIke2xhYmVsfVwiIHZlcnNpb24gJHtwaW59IGRvZXMgbm90IGV4aXN0YDtcbiAgICBkZWZhdWx0OiByZXR1cm4gYFBsdWdpbiBcIiR7bGFiZWx9XCIgdmVyc2lvbiAke3Bpbn0gZG9lcyBub3QgZXhpc3QgKG5ldmVyIHB1Ymxpc2hlZCwgb3IgcmVmdXNlZCBieSBpdHMgYnVpbGQncyB2dWxuZXJhYmlsaXR5IHNjYW4pYDtcbiAgfVxufVxuIl19
|