aws-delivlib 14.3.65 → 14.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/auto-build.js CHANGED
@@ -17,6 +17,7 @@ class AutoBuild extends constructs_1.Construct {
17
17
  buildSpec: props.buildSpec,
18
18
  ssmSessionPermissions: true,
19
19
  });
20
+ this.project.role.addManagedPolicy(aws_cdk_lib_1.aws_iam.ManagedPolicy.fromAwsManagedPolicyName('AmazonElasticContainerRegistryPublicReadOnly'));
20
21
  const publicLogs = props.publicLogs !== undefined ? props.publicLogs : false;
21
22
  const githubToken = props.repo.tokenSecretArn ? aws_cdk_lib_1.SecretValue.secretsManager(props.repo.tokenSecretArn) : undefined;
22
23
  if (publicLogs) {
@@ -36,4 +37,4 @@ class AutoBuild extends constructs_1.Construct {
36
37
  }
37
38
  }
38
39
  exports.AutoBuild = AutoBuild;
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1idWlsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF1dG8tYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBSXFCO0FBQ3JCLDJDQUF1QztBQUN2QywyQ0FBNEU7QUEwRjVFLE1BQWEsU0FBVSxTQUFRLHNCQUFTO0lBT3RDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUI7O1FBQzdELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLDJCQUFTLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDcEQsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLFdBQVcsRUFBRSwwQkFBMEIsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUM5RCxNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsTUFBQSxLQUFLLENBQUMsT0FBTyxtQ0FBSSxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JILFdBQVcsRUFBRSxJQUFBLGtDQUFzQixFQUFDLE1BQUEsS0FBSyxDQUFDLFdBQVcsbUNBQUksRUFBRSxDQUFDO1lBQzVELEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVc7WUFDN0IsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLHFCQUFxQixFQUFFLElBQUk7U0FDNUIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM3RSxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMseUJBQVcsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRWxILElBQUksVUFBVSxFQUFFO1lBQ2QsSUFBSSxxQkFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLEVBQUU7Z0JBQzVELFFBQVEsRUFBRTtvQkFDUixhQUFhLEVBQUUsa0ZBQWtGO29CQUNqRyxlQUFlLEVBQUUsT0FBTztpQkFDekI7Z0JBQ0QsVUFBVSxFQUFFO29CQUNWLG9CQUFvQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVztvQkFDOUMsc0JBQXNCLEVBQUUsQ0FBQyxNQUFBLEtBQUssQ0FBQyw2QkFBNkIsbUNBQUksSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO29CQUNoRixnQkFBZ0IsRUFBRSxDQUFDLE1BQUEsS0FBSyxDQUFDLG1CQUFtQixtQ0FBSSxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUU7b0JBQ2hFLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO2lCQUM5RTthQUNGLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztDQUNGO0FBdENELDhCQXNDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNlY3JldFZhbHVlLFxuICBhd3NfY29kZWJ1aWxkIGFzIGNvZGVidWlsZCxcbiAgYXdzX3NhbSBhcyBzZXJ2ZXJsZXNzLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEJ1aWxkRW52aXJvbm1lbnRQcm9wcywgY3JlYXRlQnVpbGRFbnZpcm9ubWVudCB9IGZyb20gJy4vYnVpbGQtZW52JztcbmltcG9ydCB7IElSZXBvIH0gZnJvbSAnLi9yZXBvJztcblxuZXhwb3J0IGludGVyZmFjZSBBdXRvQnVpbGRPcHRpb25zIHtcbiAgLyoqXG4gICAqIEJ1aWxkIGVudmlyb25tZW50LlxuICAgKiBAZGVmYXVsdCAtIHNlZSBkZWZhdWx0cyBpbiBgQnVpbGRFbnZpcm9ubWVudFByb3BzYFxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiBCdWlsZEVudmlyb25tZW50UHJvcHM7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBDb2RlQnVpbGQgcHJvamVjdC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIG5hbWUgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgQ2xvdWRGb3JtYXRpb24uXG4gICAqL1xuICByZWFkb25seSBwcm9qZWN0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogTWFrZSBidWlsZCBsb2dzIHB1YmxpYyBhbmQgcHVibGlzaGVzIGEgbGluayB0byBHaXRIdWIgUFIgZGlzY3Vzc2lvbi5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vamxob29kL2dpdGh1Yi1jb2RlYnVpbGQtbG9nc1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljTG9ncz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZSB0aGUgcHJvamVjdCB0byByZXNwb25kIHRvIHdlYmhvb2tzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSB3ZWJob29rPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBwdWJsaXNoIGEgbGluayB0byBidWlsZCBsb2dzIHdoZW4gYnVpbGQgaXMgc3VjY2Vzc2Z1bC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vamxob29kL2dpdGh1Yi1jb2RlYnVpbGQtbG9ncyNhcHAtcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBwdWJsaWNMb2dzT25TdWNjZXNzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkZWxldGUgcHJldmlvdXNseSBwdWJsaXNoZWQgbGlua3MgdG8gYnVpbGQgbG9nc1xuICAgKiBiZWZvcmUgcG9zdGluZyBhIG5ldyBvbmUuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2psaG9vZC9naXRodWItY29kZWJ1aWxkLWxvZ3MjYXBwLXBhcmFtZXRlcnNcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlUHJldmlvdXNQdWJsaWNMb2dzTGlua3M/OiBib29sZWFuO1xuXG4gIC8qIHRzbGludDpkaXNhYmxlOm1heC1saW5lLWxlbmd0aCAqL1xuICAvKipcbiAgICogQnVpbGQgc3BlYyBmaWxlIHRvIHVzZSBmb3IgQXV0b0J1aWxkXG4gICAqXG4gICAqIEBkZWZhdWx0IEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtY29kZWJ1aWxkLXByb2plY3Qtc291cmNlLmh0bWwjY2ZuLWNvZGVidWlsZC1wcm9qZWN0LXNvdXJjZS1idWlsZHNwZWNcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkU3BlYz86IGNvZGVidWlsZC5CdWlsZFNwZWM7XG4gIC8qIHRzbGludDplbmFibGU6bWF4LWxpbmUtbGVuZ3RoICovXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b0J1aWxkUHJvcHMgZXh0ZW5kcyBBdXRvQnVpbGRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSByZXBvc2l0b3J5IHRvIG1vbml0b3IuXG4gICAqXG4gICAqIE11c3QgYmUgYSBHaXRIdWIgcmVwb3NpdG9yeSBmb3IgYHB1YmxpY0xvZ3NgIHRvIGhhdmUgYW55IGVmZmVjdC5cbiAgICovXG4gIHJlYWRvbmx5IHJlcG86IElSZXBvO1xuXG4gIC8qKlxuICAgKiBUaGUgc3BlY2lmaWMgYnJhbmNoIHRvIGJlIGNvbnNpZGVyZWQgZm9yIGF1dG8tYnVpbGRzLlxuICAgKlxuICAgKiBTcGVjaWZ5IGF0IG1vc3Qgb25lIG9mIGBicmFuY2hgIGFuZCBgYnJhbmNoZXNgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFueSAmIGFsbCBicmFuY2hlcy5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBicmFuY2hlc2AgaW5zdGVhZC5cbiAgICovXG4gIHJlYWRvbmx5IGJyYW5jaD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNwZWNpZmljIGJyYW5jaCB0byBiZSBjb25zaWRlcmVkIGZvciBhdXRvLWJ1aWxkcy5cbiAgICpcbiAgICogU3BlY2lmeSBhdCBtb3N0IG9uZSBvZiBgYnJhbmNoYCBhbmQgYGJyYW5jaGVzYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhbnkgJiBhbGwgYnJhbmNoZXMuXG4gICAqL1xuICByZWFkb25seSBicmFuY2hlcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgQXV0b0J1aWxkIGV4dGVuZHMgQ29uc3RydWN0IHtcblxuICAvKipcbiAgICogVGhlIHVuZGVybHlpbmcgYENvZGVCdWlsZGAgcHJvamVjdC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjb2RlYnVpbGQuUHJvamVjdDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQXV0b0J1aWxkUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5wcm9qZWN0ID0gbmV3IGNvZGVidWlsZC5Qcm9qZWN0KHRoaXMsICdQcm9qZWN0Jywge1xuICAgICAgcHJvamVjdE5hbWU6IHByb3BzLnByb2plY3ROYW1lLFxuICAgICAgZGVzY3JpcHRpb246IGBBdXRvbWF0aWMgUFIgYnVpbGQgZm9yICR7cHJvcHMucmVwby5kZXNjcmliZSgpfWAsXG4gICAgICBzb3VyY2U6IHByb3BzLnJlcG8uY3JlYXRlQnVpbGRTb3VyY2UodGhpcywgcHJvcHMud2ViaG9vayA/PyB0cnVlLCB7IGJyYW5jaDogcHJvcHMuYnJhbmNoLCBicmFuY2hlczogcHJvcHMuYnJhbmNoZXMgfSksXG4gICAgICBlbnZpcm9ubWVudDogY3JlYXRlQnVpbGRFbnZpcm9ubWVudChwcm9wcy5lbnZpcm9ubWVudCA/PyB7fSksXG4gICAgICBiYWRnZTogcHJvcHMucmVwby5hbGxvd3NCYWRnZSxcbiAgICAgIGJ1aWxkU3BlYzogcHJvcHMuYnVpbGRTcGVjLFxuICAgICAgc3NtU2Vzc2lvblBlcm1pc3Npb25zOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcHVibGljTG9ncyA9IHByb3BzLnB1YmxpY0xvZ3MgIT09IHVuZGVmaW5lZCA/IHByb3BzLnB1YmxpY0xvZ3MgOiBmYWxzZTtcbiAgICBjb25zdCBnaXRodWJUb2tlbiA9IHByb3BzLnJlcG8udG9rZW5TZWNyZXRBcm4gPyBTZWNyZXRWYWx1ZS5zZWNyZXRzTWFuYWdlcihwcm9wcy5yZXBvLnRva2VuU2VjcmV0QXJuKSA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChwdWJsaWNMb2dzKSB7XG4gICAgICBuZXcgc2VydmVybGVzcy5DZm5BcHBsaWNhdGlvbih0aGlzLCAnR2l0SHViQ29kZUJ1aWxkTG9nc1NBUicsIHtcbiAgICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgICBhcHBsaWNhdGlvbklkOiAnYXJuOmF3czpzZXJ2ZXJsZXNzcmVwbzp1cy1lYXN0LTE6Mjc3MTg3NzA5NjE1OmFwcGxpY2F0aW9ucy9naXRodWItY29kZWJ1aWxkLWxvZ3MnLFxuICAgICAgICAgIHNlbWFudGljVmVyc2lvbjogJzEuNC4wJyxcbiAgICAgICAgfSxcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIENvZGVCdWlsZFByb2plY3ROYW1lOiB0aGlzLnByb2plY3QucHJvamVjdE5hbWUsXG4gICAgICAgICAgRGVsZXRlUHJldmlvdXNDb21tZW50czogKHByb3BzLmRlbGV0ZVByZXZpb3VzUHVibGljTG9nc0xpbmtzID8/IHRydWUpLnRvU3RyaW5nKCksXG4gICAgICAgICAgQ29tbWVudE9uU3VjY2VzczogKHByb3BzLnB1YmxpY0xvZ3NPblN1Y2Nlc3MgPz8gdHJ1ZSkudG9TdHJpbmcoKSxcbiAgICAgICAgICAuLi5naXRodWJUb2tlbiA/IHsgR2l0SHViT0F1dGhUb2tlbjogZ2l0aHViVG9rZW4udW5zYWZlVW53cmFwKCkgfSA6IHVuZGVmaW5lZCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1idWlsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF1dG8tYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBS3FCO0FBQ3JCLDJDQUF1QztBQUN2QywyQ0FBNEU7QUEwRjVFLE1BQWEsU0FBVSxTQUFRLHNCQUFTO0lBT3RDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUI7O1FBQzdELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLDJCQUFTLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDcEQsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLFdBQVcsRUFBRSwwQkFBMEIsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUM5RCxNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsTUFBQSxLQUFLLENBQUMsT0FBTyxtQ0FBSSxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JILFdBQVcsRUFBRSxJQUFBLGtDQUFzQixFQUFDLE1BQUEsS0FBSyxDQUFDLFdBQVcsbUNBQUksRUFBRSxDQUFDO1lBQzVELEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVc7WUFDN0IsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLHFCQUFxQixFQUFFLElBQUk7U0FDNUIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFLLENBQUMsZ0JBQWdCLENBQUMscUJBQUcsQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMsOENBQThDLENBQUMsQ0FBQyxDQUFDO1FBRWhJLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDN0UsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLHlCQUFXLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUVsSCxJQUFJLFVBQVUsRUFBRTtZQUNkLElBQUkscUJBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLHdCQUF3QixFQUFFO2dCQUM1RCxRQUFRLEVBQUU7b0JBQ1IsYUFBYSxFQUFFLGtGQUFrRjtvQkFDakcsZUFBZSxFQUFFLE9BQU87aUJBQ3pCO2dCQUNELFVBQVUsRUFBRTtvQkFDVixvQkFBb0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVc7b0JBQzlDLHNCQUFzQixFQUFFLENBQUMsTUFBQSxLQUFLLENBQUMsNkJBQTZCLG1DQUFJLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRTtvQkFDaEYsZ0JBQWdCLEVBQUUsQ0FBQyxNQUFBLEtBQUssQ0FBQyxtQkFBbUIsbUNBQUksSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO29CQUNoRSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztpQkFDOUU7YUFDRixDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7Q0FDRjtBQXZDRCw4QkF1Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTZWNyZXRWYWx1ZSxcbiAgYXdzX2NvZGVidWlsZCBhcyBjb2RlYnVpbGQsXG4gIGF3c19pYW0gYXMgaWFtLFxuICBhd3Nfc2FtIGFzIHNlcnZlcmxlc3MsXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQnVpbGRFbnZpcm9ubWVudFByb3BzLCBjcmVhdGVCdWlsZEVudmlyb25tZW50IH0gZnJvbSAnLi9idWlsZC1lbnYnO1xuaW1wb3J0IHsgSVJlcG8gfSBmcm9tICcuL3JlcG8nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9CdWlsZE9wdGlvbnMge1xuICAvKipcbiAgICogQnVpbGQgZW52aXJvbm1lbnQuXG4gICAqIEBkZWZhdWx0IC0gc2VlIGRlZmF1bHRzIGluIGBCdWlsZEVudmlyb25tZW50UHJvcHNgXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudD86IEJ1aWxkRW52aXJvbm1lbnRQcm9wcztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIENvZGVCdWlsZCBwcm9qZWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbmFtZSB3aWxsIGJlIGdlbmVyYXRlZCBieSBDbG91ZEZvcm1hdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHByb2plY3ROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNYWtlIGJ1aWxkIGxvZ3MgcHVibGljIGFuZCBwdWJsaXNoZXMgYSBsaW5rIHRvIEdpdEh1YiBQUiBkaXNjdXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qbGhvb2QvZ2l0aHViLWNvZGVidWlsZC1sb2dzXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBwdWJsaWNMb2dzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29uZmlndXJlIHRoZSBwcm9qZWN0IHRvIHJlc3BvbmQgdG8gd2ViaG9va3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHdlYmhvb2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHB1Ymxpc2ggYSBsaW5rIHRvIGJ1aWxkIGxvZ3Mgd2hlbiBidWlsZCBpcyBzdWNjZXNzZnVsLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qbGhvb2QvZ2l0aHViLWNvZGVidWlsZC1sb2dzI2FwcC1wYXJhbWV0ZXJzXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpY0xvZ3NPblN1Y2Nlc3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRlbGV0ZSBwcmV2aW91c2x5IHB1Ymxpc2hlZCBsaW5rcyB0byBidWlsZCBsb2dzXG4gICAqIGJlZm9yZSBwb3N0aW5nIGEgbmV3IG9uZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vamxob29kL2dpdGh1Yi1jb2RlYnVpbGQtbG9ncyNhcHAtcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBkZWxldGVQcmV2aW91c1B1YmxpY0xvZ3NMaW5rcz86IGJvb2xlYW47XG5cbiAgLyogdHNsaW50OmRpc2FibGU6bWF4LWxpbmUtbGVuZ3RoICovXG4gIC8qKlxuICAgKiBCdWlsZCBzcGVjIGZpbGUgdG8gdXNlIGZvciBBdXRvQnVpbGRcbiAgICpcbiAgICogQGRlZmF1bHQgQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1jb2RlYnVpbGQtcHJvamVjdC1zb3VyY2UuaHRtbCNjZm4tY29kZWJ1aWxkLXByb2plY3Qtc291cmNlLWJ1aWxkc3BlY1xuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRTcGVjPzogY29kZWJ1aWxkLkJ1aWxkU3BlYztcbiAgLyogdHNsaW50OmVuYWJsZTptYXgtbGluZS1sZW5ndGggKi9cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRvQnVpbGRQcm9wcyBleHRlbmRzIEF1dG9CdWlsZE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnkgdG8gbW9uaXRvci5cbiAgICpcbiAgICogTXVzdCBiZSBhIEdpdEh1YiByZXBvc2l0b3J5IGZvciBgcHVibGljTG9nc2AgdG8gaGF2ZSBhbnkgZWZmZWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwbzogSVJlcG87XG5cbiAgLyoqXG4gICAqIFRoZSBzcGVjaWZpYyBicmFuY2ggdG8gYmUgY29uc2lkZXJlZCBmb3IgYXV0by1idWlsZHMuXG4gICAqXG4gICAqIFNwZWNpZnkgYXQgbW9zdCBvbmUgb2YgYGJyYW5jaGAgYW5kIGBicmFuY2hlc2AuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYW55ICYgYWxsIGJyYW5jaGVzLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYGJyYW5jaGVzYCBpbnN0ZWFkLlxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3BlY2lmaWMgYnJhbmNoIHRvIGJlIGNvbnNpZGVyZWQgZm9yIGF1dG8tYnVpbGRzLlxuICAgKlxuICAgKiBTcGVjaWZ5IGF0IG1vc3Qgb25lIG9mIGBicmFuY2hgIGFuZCBgYnJhbmNoZXNgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFueSAmIGFsbCBicmFuY2hlcy5cbiAgICovXG4gIHJlYWRvbmx5IGJyYW5jaGVzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBBdXRvQnVpbGQgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuXG4gIC8qKlxuICAgKiBUaGUgdW5kZXJseWluZyBgQ29kZUJ1aWxkYCBwcm9qZWN0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IGNvZGVidWlsZC5Qcm9qZWN0O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBdXRvQnVpbGRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnByb2plY3QgPSBuZXcgY29kZWJ1aWxkLlByb2plY3QodGhpcywgJ1Byb2plY3QnLCB7XG4gICAgICBwcm9qZWN0TmFtZTogcHJvcHMucHJvamVjdE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogYEF1dG9tYXRpYyBQUiBidWlsZCBmb3IgJHtwcm9wcy5yZXBvLmRlc2NyaWJlKCl9YCxcbiAgICAgIHNvdXJjZTogcHJvcHMucmVwby5jcmVhdGVCdWlsZFNvdXJjZSh0aGlzLCBwcm9wcy53ZWJob29rID8/IHRydWUsIHsgYnJhbmNoOiBwcm9wcy5icmFuY2gsIGJyYW5jaGVzOiBwcm9wcy5icmFuY2hlcyB9KSxcbiAgICAgIGVudmlyb25tZW50OiBjcmVhdGVCdWlsZEVudmlyb25tZW50KHByb3BzLmVudmlyb25tZW50ID8/IHt9KSxcbiAgICAgIGJhZGdlOiBwcm9wcy5yZXBvLmFsbG93c0JhZGdlLFxuICAgICAgYnVpbGRTcGVjOiBwcm9wcy5idWlsZFNwZWMsXG4gICAgICBzc21TZXNzaW9uUGVybWlzc2lvbnM6IHRydWUsXG4gICAgfSk7XG4gICAgdGhpcy5wcm9qZWN0LnJvbGUhLmFkZE1hbmFnZWRQb2xpY3koaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKCdBbWF6b25FbGFzdGljQ29udGFpbmVyUmVnaXN0cnlQdWJsaWNSZWFkT25seScpKTtcblxuICAgIGNvbnN0IHB1YmxpY0xvZ3MgPSBwcm9wcy5wdWJsaWNMb2dzICE9PSB1bmRlZmluZWQgPyBwcm9wcy5wdWJsaWNMb2dzIDogZmFsc2U7XG4gICAgY29uc3QgZ2l0aHViVG9rZW4gPSBwcm9wcy5yZXBvLnRva2VuU2VjcmV0QXJuID8gU2VjcmV0VmFsdWUuc2VjcmV0c01hbmFnZXIocHJvcHMucmVwby50b2tlblNlY3JldEFybikgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAocHVibGljTG9ncykge1xuICAgICAgbmV3IHNlcnZlcmxlc3MuQ2ZuQXBwbGljYXRpb24odGhpcywgJ0dpdEh1YkNvZGVCdWlsZExvZ3NTQVInLCB7XG4gICAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgICAgYXBwbGljYXRpb25JZDogJ2Fybjphd3M6c2VydmVybGVzc3JlcG86dXMtZWFzdC0xOjI3NzE4NzcwOTYxNTphcHBsaWNhdGlvbnMvZ2l0aHViLWNvZGVidWlsZC1sb2dzJyxcbiAgICAgICAgICBzZW1hbnRpY1ZlcnNpb246ICcxLjQuMCcsXG4gICAgICAgIH0sXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBDb2RlQnVpbGRQcm9qZWN0TmFtZTogdGhpcy5wcm9qZWN0LnByb2plY3ROYW1lLFxuICAgICAgICAgIERlbGV0ZVByZXZpb3VzQ29tbWVudHM6IChwcm9wcy5kZWxldGVQcmV2aW91c1B1YmxpY0xvZ3NMaW5rcyA/PyB0cnVlKS50b1N0cmluZygpLFxuICAgICAgICAgIENvbW1lbnRPblN1Y2Nlc3M6IChwcm9wcy5wdWJsaWNMb2dzT25TdWNjZXNzID8/IHRydWUpLnRvU3RyaW5nKCksXG4gICAgICAgICAgLi4uZ2l0aHViVG9rZW4gPyB7IEdpdEh1Yk9BdXRoVG9rZW46IGdpdGh1YlRva2VuLnVuc2FmZVVud3JhcCgpIH0gOiB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
package/lib/build-env.js CHANGED
@@ -7,7 +7,7 @@ function createBuildEnvironment(props) {
7
7
  computeType: props.computeType || aws_cdk_lib_1.aws_codebuild.ComputeType.SMALL,
8
8
  privileged: props.privileged,
9
9
  environmentVariables: renderEnvironmentVariables({ ...props.environment, ...props.env }),
10
- buildImage: props.buildImage || aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.fromDockerRegistry('jsii/superchain:1-buster-slim'),
10
+ buildImage: props.buildImage || aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.fromDockerRegistry('public.ecr.aws/jsii/superchain:1-buster-slim-node18'),
11
11
  };
12
12
  return environment;
13
13
  }
@@ -22,4 +22,4 @@ function renderEnvironmentVariables(env) {
22
22
  }
23
23
  return out;
24
24
  }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYnVpbGQtZW52LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFzRDtBQVd0RCxTQUFnQixzQkFBc0IsQ0FBQyxLQUE0QjtJQUNqRSxNQUFNLFdBQVcsR0FBNEI7UUFDM0MsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksMkJBQU0sQ0FBQyxXQUFXLENBQUMsS0FBSztRQUMxRCxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7UUFDNUIsb0JBQW9CLEVBQUUsMEJBQTBCLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDeEYsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLElBQUksMkJBQU0sQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsK0JBQStCLENBQUM7S0FDM0csQ0FBQztJQUVGLE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFURCx3REFTQztBQUVELFNBQVMsMEJBQTBCLENBQUMsR0FBK0I7SUFDakUsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNSLE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0lBRUQsTUFBTSxHQUFHLEdBQXVELEVBQUcsQ0FBQztJQUNwRSxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUM5QyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQztLQUN0QjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF3c19jb2RlYnVpbGQgYXMgY2J1aWxkIH0gZnJvbSAnYXdzLWNkay1saWInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkRW52aXJvbm1lbnRQcm9wcyB7XG4gIGNvbXB1dGVUeXBlPzogY2J1aWxkLkNvbXB1dGVUeXBlO1xuICBwcml2aWxlZ2VkPzogYm9vbGVhbjtcbiAgLyoqIEBkZXByZWNhdGVkICovXG4gIGVudj86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIGVudmlyb25tZW50PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgYnVpbGRJbWFnZT86IGNidWlsZC5JQnVpbGRJbWFnZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUJ1aWxkRW52aXJvbm1lbnQocHJvcHM6IEJ1aWxkRW52aXJvbm1lbnRQcm9wcykge1xuICBjb25zdCBlbnZpcm9ubWVudDogY2J1aWxkLkJ1aWxkRW52aXJvbm1lbnQgPSB7XG4gICAgY29tcHV0ZVR5cGU6IHByb3BzLmNvbXB1dGVUeXBlIHx8IGNidWlsZC5Db21wdXRlVHlwZS5TTUFMTCxcbiAgICBwcml2aWxlZ2VkOiBwcm9wcy5wcml2aWxlZ2VkLFxuICAgIGVudmlyb25tZW50VmFyaWFibGVzOiByZW5kZXJFbnZpcm9ubWVudFZhcmlhYmxlcyh7IC4uLnByb3BzLmVudmlyb25tZW50LCAuLi5wcm9wcy5lbnYgfSksXG4gICAgYnVpbGRJbWFnZTogcHJvcHMuYnVpbGRJbWFnZSB8fCBjYnVpbGQuTGludXhCdWlsZEltYWdlLmZyb21Eb2NrZXJSZWdpc3RyeSgnanNpaS9zdXBlcmNoYWluOjEtYnVzdGVyLXNsaW0nKSxcbiAgfTtcblxuICByZXR1cm4gZW52aXJvbm1lbnQ7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckVudmlyb25tZW50VmFyaWFibGVzKGVudj86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgaWYgKCFlbnYpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3Qgb3V0OiB7IFtrZXk6IHN0cmluZ106IGNidWlsZC5CdWlsZEVudmlyb25tZW50VmFyaWFibGUgfSA9IHsgfTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZW52KSkge1xuICAgIG91dFtrZXldID0geyB2YWx1ZSB9O1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iXX0=
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYnVpbGQtZW52LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFzRDtBQVd0RCxTQUFnQixzQkFBc0IsQ0FBQyxLQUE0QjtJQUNqRSxNQUFNLFdBQVcsR0FBNEI7UUFDM0MsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksMkJBQU0sQ0FBQyxXQUFXLENBQUMsS0FBSztRQUMxRCxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7UUFDNUIsb0JBQW9CLEVBQUUsMEJBQTBCLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDeEYsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLElBQUksMkJBQU0sQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMscURBQXFELENBQUM7S0FDakksQ0FBQztJQUVGLE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFURCx3REFTQztBQUVELFNBQVMsMEJBQTBCLENBQUMsR0FBK0I7SUFDakUsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNSLE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0lBRUQsTUFBTSxHQUFHLEdBQXVELEVBQUcsQ0FBQztJQUNwRSxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUM5QyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQztLQUN0QjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF3c19jb2RlYnVpbGQgYXMgY2J1aWxkIH0gZnJvbSAnYXdzLWNkay1saWInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkRW52aXJvbm1lbnRQcm9wcyB7XG4gIGNvbXB1dGVUeXBlPzogY2J1aWxkLkNvbXB1dGVUeXBlO1xuICBwcml2aWxlZ2VkPzogYm9vbGVhbjtcbiAgLyoqIEBkZXByZWNhdGVkICovXG4gIGVudj86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIGVudmlyb25tZW50PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgYnVpbGRJbWFnZT86IGNidWlsZC5JQnVpbGRJbWFnZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUJ1aWxkRW52aXJvbm1lbnQocHJvcHM6IEJ1aWxkRW52aXJvbm1lbnRQcm9wcykge1xuICBjb25zdCBlbnZpcm9ubWVudDogY2J1aWxkLkJ1aWxkRW52aXJvbm1lbnQgPSB7XG4gICAgY29tcHV0ZVR5cGU6IHByb3BzLmNvbXB1dGVUeXBlIHx8IGNidWlsZC5Db21wdXRlVHlwZS5TTUFMTCxcbiAgICBwcml2aWxlZ2VkOiBwcm9wcy5wcml2aWxlZ2VkLFxuICAgIGVudmlyb25tZW50VmFyaWFibGVzOiByZW5kZXJFbnZpcm9ubWVudFZhcmlhYmxlcyh7IC4uLnByb3BzLmVudmlyb25tZW50LCAuLi5wcm9wcy5lbnYgfSksXG4gICAgYnVpbGRJbWFnZTogcHJvcHMuYnVpbGRJbWFnZSB8fCBjYnVpbGQuTGludXhCdWlsZEltYWdlLmZyb21Eb2NrZXJSZWdpc3RyeSgncHVibGljLmVjci5hd3MvanNpaS9zdXBlcmNoYWluOjEtYnVzdGVyLXNsaW0tbm9kZTE4JyksXG4gIH07XG5cbiAgcmV0dXJuIGVudmlyb25tZW50O1xufVxuXG5mdW5jdGlvbiByZW5kZXJFbnZpcm9ubWVudFZhcmlhYmxlcyhlbnY/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gIGlmICghZW52KSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IG91dDogeyBba2V5OiBzdHJpbmddOiBjYnVpbGQuQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlIH0gPSB7IH07XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGVudikpIHtcbiAgICBvdXRba2V5XSA9IHsgdmFsdWUgfTtcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIl19
package/lib/pipeline.js CHANGED
@@ -72,6 +72,7 @@ class Pipeline extends constructs_1.Construct {
72
72
  ssmSessionPermissions: true,
73
73
  });
74
74
  this.buildRole = this.buildProject.role;
75
+ this.buildRole.addManagedPolicy(aws_cdk_lib_1.aws_iam.ManagedPolicy.fromAwsManagedPolicyName('AmazonElasticContainerRegistryPublicReadOnly'));
75
76
  const buildStage = this.getOrCreateStage('Build');
76
77
  const buildOutput = new aws_cdk_lib_1.aws_codepipeline.Artifact();
77
78
  buildStage.addAction(new aws_cdk_lib_1.aws_codepipeline_actions.CodeBuildAction({
@@ -341,4 +342,4 @@ class Pipeline extends constructs_1.Construct {
341
342
  }
342
343
  }
343
344
  exports.Pipeline = Pipeline;
344
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwaXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQVdxQjtBQUNyQiwyQ0FBbUQ7QUFFbkQsNkNBQTJEO0FBQzNELDJDQUFxRDtBQUNyRCxxQ0FBK0M7QUFDL0MsMkRBQXVEO0FBQ3ZELHFEQUFpRDtBQUNqRCx5REFBcUQ7QUFDckQseURBQTJDO0FBQzNDLGlEQUF3RTtBQUV4RSxpQ0FBbUQ7QUFDbkQsMkNBQXdEO0FBQ3hELGlDQUFvRDtBQUVwRCxNQUFNLGtCQUFrQixHQUFHLFNBQVMsQ0FBQztBQUNyQyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUM7QUFDL0IsTUFBTSxnQkFBZ0IsR0FBRyxjQUFjLENBQUM7QUFDeEMsTUFBTSxtQkFBbUIsR0FBRyxVQUFVLENBQUM7QUF3SnZDOztHQUVHO0FBQ0gsTUFBYSxRQUFTLFNBQVEsc0JBQVM7SUErQnJDLFlBQVksTUFBaUIsRUFBRSxJQUFZLEVBQUUsS0FBb0I7O1FBQy9ELEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFWZCxXQUFNLEdBQXlDLEVBQUcsQ0FBQztRQVl6RCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFFN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLDhCQUFTLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7WUFDNUQsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyx3QkFBd0IsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMs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QztJQUNmLENBQUM7SUFFTyw2QkFBNkIsQ0FBQyxLQUF1QjtRQUMzRCxPQUFPLElBQUEsd0JBQWlCLEVBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FDRjtBQXZYRCw0QkF1WEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEdXJhdGlvbixcbiAgYXdzX2Nsb3Vkd2F0Y2ggYXMgY2xvdWR3YXRjaCxcbiAgYXdzX2NvZGVidWlsZCBhcyBjYnVpbGQsXG4gIGF3c19jb2RlcGlwZWxpbmUgYXMgY3BpcGVsaW5lLFxuICBhd3NfY29kZXBpcGVsaW5lX2FjdGlvbnMgYXMgY3BpcGVsaW5lX2FjdGlvbnMsXG4gIGF3c19ldmVudHMgYXMgZXZlbnRzLFxuICBhd3NfZXZlbnRzX3RhcmdldHMgYXMgZXZlbnRzX3RhcmdldHMsXG4gIGF3c19pYW0gYXMgaWFtLCBhd3NfczMgYXMgczMsXG4gIGF3c19zbnMgYXMgc25zLFxuICBhd3Nfc25zX3N1YnNjcmlwdGlvbnMgYXMgc25zX3N1YnMsXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCwgSUNvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5pbXBvcnQgeyBBdXRvQnVpbGQsIEF1dG9CdWlsZE9wdGlvbnMgfSBmcm9tICcuL2F1dG8tYnVpbGQnO1xuaW1wb3J0IHsgY3JlYXRlQnVpbGRFbnZpcm9ubWVudCB9IGZyb20gJy4vYnVpbGQtZW52JztcbmltcG9ydCB7IENhbmFyeSwgQ2FuYXJ5UHJvcHMgfSBmcm9tICcuL2NhbmFyeSc7XG5pbXBvcnQgeyBDaGFuZ2VDb250cm9sbGVyIH0gZnJvbSAnLi9jaGFuZ2UtY29udHJvbGxlcic7XG5pbXBvcnQgeyBDaGltZU5vdGlmaWVyIH0gZnJvbSAnLi9jaGltZS1ub3RpZmllcic7XG5pbXBvcnQgeyBQaXBlbGluZVdhdGNoZXIgfSBmcm9tICcuL3BpcGVsaW5lLXdhdGNoZXInO1xuaW1wb3J0ICogYXMgcHVibGlzaGluZyBmcm9tICcuL3B1Ymxpc2hpbmcnO1xuaW1wb3J0IHsgQXV0b0J1bXAsIEF1dG9NZXJnZUJhY2ssIEF1dG9CdW1wUHJvcHMgfSBmcm9tICcuL3B1bGwtcmVxdWVzdCc7XG5pbXBvcnQgeyBBdXRvTWVyZ2VCYWNrUGlwZWxpbmVPcHRpb25zIH0gZnJvbSAnLi9wdWxsLXJlcXVlc3QvbWVyZ2UtYmFjayc7XG5pbXBvcnQgeyBJUmVwbywgV3JpdGFibGVHaXRIdWJSZXBvIH0gZnJvbSAnLi9yZXBvJztcbmltcG9ydCB7IFNoZWxsYWJsZSwgU2hlbGxhYmxlUHJvcHMgfSBmcm9tICcuL3NoZWxsYWJsZSc7XG5pbXBvcnQgeyBkZXRlcm1pbmVSdW5PcmRlciwgZmxhdE1hcCB9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IFBVQkxJU0hfU1RBR0VfTkFNRSA9ICdQdWJsaXNoJztcbmNvbnN0IFRFU1RfU1RBR0VfTkFNRSA9ICdUZXN0JztcbmNvbnN0IE1FVFJJQ19OQU1FU1BBQ0UgPSAnQ0RLL0RlbGl2bGliJztcbmNvbnN0IEZBSUxVUkVfTUVUUklDX05BTUUgPSAnRmFpbHVyZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lUHJvcHMge1xuICAvKipcbiAgICogVGhlIHNvdXJjZSByZXBvc2l0b3J5IHRvIGJ1aWxkIChlLmcuIEdpdEh1YlJlcG8pLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwbzogSVJlcG87XG5cbiAgLyoqXG4gICAqIEEgZGlzcGxheSBuYW1lIGZvciB0aGlzIHBpcGVsaW5lLlxuICAgKi9cbiAgcmVhZG9ubHkgdGl0bGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcGh5c2ljYWwgbmFtZSBmb3IgdGhpcyBwaXBlbGluZS5cbiAgICogQGRlZmF1bHQgLSBhIG5ldyBuYW1lIHdpbGwgYmUgZ2VuZXJhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcGlwZWxpbmVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCcmFuY2ggdG8gYnVpbGQuXG4gICAqIEBkZWZhdWx0IG1hc3RlclxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbWFpbCB0byBzZW5kIGZhaWx1cmUgbm90aWZpY2F0aW9ucy5cbiAgICogQGRlZmF1bHQgLSBObyBlbWFpbCBub3RpZmljYXRpb25zXG4gICAqL1xuICByZWFkb25seSBub3RpZmljYXRpb25FbWFpbD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGltYWdlIHVzZWQgZm9yIHRoZSBidWlsZHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGpzaWkvc3VwZXJjaGFpbiAoc2VlIGRvY3MpXG4gICAqL1xuICByZWFkb25seSBidWlsZEltYWdlPzogY2J1aWxkLklCdWlsZEltYWdlO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgQ29kZUJ1aWxkIHByb2plY3QgdGhhdCB3aWxsIGJlIHBhcnQgb2YgdGhpcyBwaXBlbGluZS5cbiAgICogQGRlZmF1bHQgLSBgJHtwaXBlbGluZU5hbWV9LUJ1aWxkYCwgaWYgYHBpcGVsaW5lTmFtZWAgcHJvcGVydHkgaXMgc3BlY2lmaWVkOyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCwgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRQcm9qZWN0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgY29tcHV0ZSB0byB1c2UgZm9yIHRoaXMgYnVpbGQuXG4gICAqIFNlZSB0aGUge0BsaW5rIENvbXB1dGVUeXBlfSBlbnVtIGZvciB0aGUgcG9zc2libGUgdmFsdWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0YWtlbiBmcm9tIHtAbGluayAjYnVpbGRJbWFnZSNkZWZhdWx0Q29tcHV0ZVR5cGV9XG4gICAqL1xuICByZWFkb25seSBjb21wdXRlVHlwZT86IGNidWlsZC5Db21wdXRlVHlwZTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGhvdyB0aGUgcHJvamVjdCBidWlsZHMgRG9ja2VyIGltYWdlcy4gU3BlY2lmeSB0cnVlIHRvIGVuYWJsZVxuICAgKiBydW5uaW5nIHRoZSBEb2NrZXIgZGFlbW9uIGluc2lkZSBhIERvY2tlciBjb250YWluZXIuIFRoaXMgdmFsdWUgbXVzdCBiZVxuICAgKiBzZXQgdG8gdHJ1ZSBvbmx5IGlmIHRoaXMgYnVpbGQgcHJvamVjdCB3aWxsIGJlIHVzZWQgdG8gYnVpbGQgRG9ja2VyXG4gICAqIGltYWdlcywgYW5kIHRoZSBzcGVjaWZpZWQgYnVpbGQgZW52aXJvbm1lbnQgaW1hZ2UgaXMgbm90IG9uZSBwcm92aWRlZCBieVxuICAgKiBBV1MgQ29kZUJ1aWxkIHdpdGggRG9ja2VyIHN1cHBvcnQuIE90aGVyd2lzZSwgYWxsIGFzc29jaWF0ZWQgYnVpbGRzIHRoYXRcbiAgICogYXR0ZW1wdCB0byBpbnRlcmFjdCB3aXRoIHRoZSBEb2NrZXIgZGFlbW9uIHdpbGwgZmFpbC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHByaXZpbGVnZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gcGFzcyB0byBidWlsZFxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBidWlsZHNwZWMsIGFzIGFuIGFsdGVybmF0aXZlIHRvIGEgYnVpbGRzcGVjLnltbCBmaWxlXG4gICAqL1xuICByZWFkb25seSBidWlsZFNwZWM/OiBjYnVpbGQuQnVpbGRTcGVjO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byByZS1ydW4gdGhlIHBpcGVsaW5lIGFmdGVyIHlvdSd2ZSB1cGRhdGVkIGl0LlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSByZXN0YXJ0RXhlY3V0aW9uT25VcGRhdGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIGNvbmN1cnJlbmN5IGxpbWl0IHRlc3QgYW5kIHB1Ymxpc2ggc3RhZ2VzLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgaWYgdGhpcyB2YWx1ZSBpcyAyLCB0aGVuIG9ubHkgdHdvIGFjdGlvbnMgd2lsbCBleGVjdXRlIGNvbmN1cnJlbnRseS5cbiAgICogSWYgdGhpcyB2YWx1ZSBpcyAxLCB0aGUgcGlwZWxpbmUgd2lsbCBub3QgaGF2ZSBhbnkgY29uY3VycmVudCBleGVjdXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbGltaXRcbiAgICovXG4gIHJlYWRvbmx5IGNvbmN1cnJlbmN5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGRlZmF1bHQgZHJ5UnVuIGZvciBhbGwgcHVibGlzaGluZyBzdGVwc1xuICAgKlxuICAgKiAoQ2FuIHN0aWxsIGJlIGNoYW5nZWQgd2hlbiBhZGRpbmcgYSBzdGVwKS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgYnVpbGQgY29tbWl0cyB0aGF0IGFyZSBwdXNoZWQgdG8gdGhpcyByZXBvc2l0b3J5LCBpbmNsdWRpbmcgUFIgYnVpbGRzIG9uIGdpdGh1Yi5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9CdWlsZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGF1dG8tYnVpbGRcbiAgICpcbiAgICogQGRlZmF1bHQgLSAnYXV0b0J1aWxkT3B0aW9ucy5wdWJsaWNMb2dzJyB3aWxsIGJlIHNldCB0byBpdHMgZGVmYXVsdC4gJ2F1dG9CdWlsZE9wdGlvbnMuYnVpbGRzcGVjJyB3aWxsIGJlIGNvbmZpZ3VyZWQgdG8gbWF0Y2ggd2l0aCB0aGVcbiAgICogJ2J1aWxkU3BlYycgcHJvcGVydHkuXG4gICAqL1xuICByZWFkb25seSBhdXRvQnVpbGRPcHRpb25zPzogQXV0b0J1aWxkT3B0aW9ucztcblxuICAvKipcbiAgICogUG9zdCBhIG5vdGlmaWNhdGlvbiB0byB0aGUgZ2l2ZW4gQ2hpbWUgd2ViaG9va3MgaWYgdGhlIHBpcGVsaW5lIGZhaWxzXG4gICAqIEBkZWZhdWx0IC0gbm8gQ2hpbWUgbm90aWZpY2F0aW9ucyBvbiBwaXBlbGluZSBmYWlsdXJlXG4gICAqIEBkZXByZWNhdGVkIC0gdXNlIGBub3RpZnlPbkZhaWx1cmUoKWAgaW5zdGVhZCBpbiBjb21iaW5hdGlvbiB3aXRoIGBQaXBlbGluZU5vdGlmaWNhdGlvbi5jaGltZSgpYC5cbiAgICovXG4gIHJlYWRvbmx5IGNoaW1lRmFpbHVyZVdlYmhvb2tzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBDaGltZSBtZXNzYWdlIHRvIHBvc3RcbiAgICpcbiAgICogQGRlZmF1bHQgLSBBIGRlZmF1bHQgbWVzc2FnZVxuICAgKi9cbiAgcmVhZG9ubHkgY2hpbWVNZXNzYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCdWlsZCB0aW1lb3V0XG4gICAqXG4gICAqIEhvdyBsb25nIHRoZSBidWlsZCBjYW4gdGFrZSBhdCBtYXhpbXVtIChiZWZvcmUgZmFpbGluZyB3aXRoIGFuIGVycm9yKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEdXJhdGlvbi5ob3Vycyg4KVxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRUaW1lb3V0PzogRHVyYXRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVOb3RpZmljYXRpb25CaW5kT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHBpcGVsaW5lOiBQaXBlbGluZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUGlwZWxpbmVOb3RpZmljYXRpb24ge1xuICBiaW5kKHBpcGVsaW5lOiBQaXBlbGluZU5vdGlmaWNhdGlvbkJpbmRPcHRpb25zKTogdm9pZDtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBjb25maWd1cmluZyBhbiBhdXRvIGJ1bXAgZm9yIHRoaXMgcGlwZWxpbmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b0J1bXBPcHRpb25zIGV4dGVuZHMgT21pdDxBdXRvQnVtcFByb3BzLCAncmVwbyc+IHtcbn1cblxuLyoqXG4gKiBEZWZpbmVzIGEgZGVsaXZsaWIgQ0kvQ0QgcGlwZWxpbmUuXG4gKi9cbmV4cG9ydCBjbGFzcyBQaXBlbGluZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyBidWlsZFJvbGU/OiBpYW0uSVJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBmYWlsdXJlQWxhcm06IGNsb3Vkd2F0Y2guQWxhcm07XG4gIHB1YmxpYyByZWFkb25seSBidWlsZE91dHB1dDogY3BpcGVsaW5lLkFydGlmYWN0O1xuICBwdWJsaWMgcmVhZG9ubHkgc291cmNlQXJ0aWZhY3Q6IGNwaXBlbGluZS5BcnRpZmFjdDtcblxuICAvKipcbiAgICogVGhlIHByaW1hcnkgQ29kZUJ1aWxkIHByb2plY3Qgb2YgdGhpcyBwaXBlbGluZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBidWlsZFByb2plY3Q6IGNidWlsZC5JUHJvamVjdDtcblxuICAvKipcbiAgICogVGhlIGF1dG8gYnVpbGQgcHJvamVjdC4gdW5kZWZpbmVkIGlmICdhdXRvQnVpbGQnIGlzIGRpc2FibGVkIGZvciB0aGlzIHBpcGVsaW5lLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF1dG9CdWlsZFByb2plY3Q/OiBjYnVpbGQuUHJvamVjdDtcblxuICAvKlxuICAgKiBUaGUgdW5kZXJseWluZyBDb2RlUGlwZWxpbmUgUGlwZWxpbmUgb2JqZWN0IHRoYXQgbW9kZWxzIHRoaXMgcGlwZWxpbmUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGlwZWxpbmU6IGNwaXBlbGluZS5QaXBlbGluZTtcbiAgcHJpdmF0ZSByZWFkb25seSBicmFuY2g6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBub3RpZnk/OiBzbnMuVG9waWM7XG4gIHByaXZhdGUgc3RhZ2VzOiB7IFtuYW1lOiBzdHJpbmddOiBjcGlwZWxpbmUuSVN0YWdlIH0gPSB7IH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjb25jdXJyZW5jeT86IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSByZXBvOiBJUmVwbztcbiAgcHJpdmF0ZSByZWFkb25seSBkcnlSdW46IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgYnVpbGRFbnZpcm9ubWVudDogY2J1aWxkLkJ1aWxkRW52aXJvbm1lbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgYnVpbGRTcGVjPzogY2J1aWxkLkJ1aWxkU3BlYztcbiAgcHJpdmF0ZSBmaXJzdFB1Ymxpc2hTdGFnZU5hbWU/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBDb25zdHJ1Y3QsIG5hbWU6IHN0cmluZywgcHJvcHM6IFBpcGVsaW5lUHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIG5hbWUpO1xuXG4gICAgdGhpcy5jb25jdXJyZW5jeSA9IHByb3BzLmNvbmN1cnJlbmN5O1xuICAgIHRoaXMucmVwbyA9IHByb3BzLnJlcG87XG4gICAgdGhpcy5kcnlSdW4gPSAhIXByb3BzLmRyeVJ1bjtcblxuICAgIHRoaXMucGlwZWxpbmUgPSBuZXcgY3BpcGVsaW5lLlBpcGVsaW5lKHRoaXMsICdCdWlsZFBpcGVsaW5lJywge1xuICAgICAgcGlwZWxpbmVOYW1lOiBwcm9wcy5waXBlbGluZU5hbWUsXG4gICAgICByZXN0YXJ0RXhlY3V0aW9uT25VcGRhdGU6IHByb3BzLnJlc3RhcnRFeGVjdXRpb25PblVwZGF0ZSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IHByb3BzLnJlc3RhcnRFeGVjdXRpb25PblVwZGF0ZSxcbiAgICB9KTtcblxuICAgIHRoaXMuYnJhbmNoID0gcHJvcHMuYnJhbmNoIHx8ICdtYXN0ZXInO1xuICAgIHRoaXMuc291cmNlQXJ0aWZhY3QgPSBwcm9wcy5yZXBvLmNyZWF0ZVNvdXJjZVN0YWdlKHRoaXMucGlwZWxpbmUsIHRoaXMuYnJhbmNoKTtcblxuICAgIHRoaXMuYnVpbGRFbnZpcm9ubWVudCA9IGNyZWF0ZUJ1aWxkRW52aXJvbm1lbnQocHJvcHMpO1xuICAgIHRoaXMuYnVpbGRTcGVjID0gcHJvcHMuYnVpbGRTcGVjO1xuXG4gICAgbGV0IGJ1aWxkUHJvamVjdE5hbWUgPSBwcm9wcy5idWlsZFByb2plY3ROYW1lO1xuICAgIGlmIChidWlsZFByb2plY3ROYW1lID09PSB1bmRlZmluZWQgJiYgcHJvcHMucGlwZWxpbmVOYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGJ1aWxkUHJvamVjdE5hbWUgPSBgJHtwcm9wcy5waXBlbGluZU5hbWV9LUJ1aWxkYDtcbiAgICB9XG4gICAgdGhpcy5idWlsZFByb2plY3QgPSBuZXcgY2J1aWxkLlBpcGVsaW5lUHJvamVjdCh0aGlzLCAnQnVpbGRQcm9qZWN0Jywge1xuICAgICAgcHJvamVjdE5hbWU6IGJ1aWxkUHJvamVjdE5hbWUsXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5idWlsZEVudmlyb25tZW50LFxuICAgICAgYnVpbGRTcGVjOiB0aGlzLmJ1aWxkU3BlYyxcbiAgICAgIHRpbWVvdXQ6IHByb3BzLmJ1aWxkVGltZW91dCA/PyBEdXJhdGlvbi5ob3Vycyg4KSxcbiAgICAgIHNzbVNlc3Npb25QZXJtaXNzaW9uczogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHRoaXMuYnVpbGRSb2xlID0gdGhpcy5idWlsZFByb2plY3Qucm9sZTtcblxuICAgIGNvbnN0IGJ1aWxkU3RhZ2UgPSB0aGlzLmdldE9yQ3JlYXRlU3RhZ2UoJ0J1aWxkJyk7XG4gICAgY29uc3QgYnVpbGRPdXRwdXQgPSBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCk7XG4gICAgYnVpbGRTdGFnZS5hZGRBY3Rpb24obmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbih7XG4gICAgICBhY3Rpb25OYW1lOiAnQnVpbGQnLFxuICAgICAgcHJvamVjdDogdGhpcy5idWlsZFByb2plY3QsXG4gICAgICBpbnB1dDogdGhpcy5zb3VyY2VBcnRpZmFjdCxcbiAgICAgIG91dHB1dHM6IFtidWlsZE91dHB1dF0sXG4gICAgfSkpO1xuICAgIHRoaXMuYnVpbGRPdXRwdXQgPSBidWlsZE91dHB1dDtcblxuICAgIGlmIChwcm9wcy5ub3RpZmljYXRpb25FbWFpbCkge1xuICAgICAgdGhpcy5ub3RpZnkgPSBuZXcgc25zLlRvcGljKHRoaXMsICdOb3RpZmljYXRpb25zVG9waWMnKTtcbiAgICAgIHRoaXMubm90aWZ5LmFkZFN1YnNjcmlwdGlvbihuZXcgc25zX3N1YnMuRW1haWxTdWJzY3JpcHRpb24ocHJvcHMubm90aWZpY2F0aW9uRW1haWwpKTtcbiAgICB9XG5cbiAgICAvLyBhZGQgYSBmYWlsdXJlIGFsYXJtIGZvciB0aGUgZW50aXJlIHBpcGVsaW5lLlxuICAgIHRoaXMuZmFpbHVyZUFsYXJtID0gdGhpcy5hZGRGYWlsdXJlQWxhcm0ocHJvcHMudGl0bGUpO1xuXG4gICAgLy8gZW1pdCBhbiBTTlMgbm90aWZpY2F0aW9uIGV2ZXJ5IHRpbWUgYnVpbGQgZmFpbHMuXG4gICAgdGhpcy5hZGRCdWlsZEZhaWx1cmVOb3RpZmljYXRpb24odGhpcy5idWlsZFByb2plY3QsIGAke3Byb3BzLnRpdGxlfSBidWlsZCBmYWlsZWRgKTtcblxuICAgIC8vIEFsc28gZW1pdCB0byBDaGltZSB3ZWJob29rcyBpZiBjb25maWd1cmVkXG4gICAgaWYgKHByb3BzLmNoaW1lRmFpbHVyZVdlYmhvb2tzKSB7XG4gICAgICBuZXcgQ2hpbWVOb3RpZmllcih0aGlzLCAnQ2hpbWVOb3RpZmllcicsIHtcbiAgICAgICAgcGlwZWxpbmU6IHRoaXMucGlwZWxpbmUsXG4gICAgICAgIG1lc3NhZ2U6IHByb3BzLmNoaW1lTWVzc2FnZSxcbiAgICAgICAgd2ViaG9va1VybHM6IHByb3BzLmNoaW1lRmFpbHVyZVdlYmhvb2tzLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmF1dG9CdWlsZCkge1xuICAgICAgdGhpcy5hdXRvQnVpbGRQcm9qZWN0ID0gdGhpcy5hdXRvQnVpbGQocHJvcHMuYXV0b0J1aWxkT3B0aW9ucykucHJvamVjdDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbm90aWZ5T25GYWlsdXJlKG5vdGlmaWNhdGlvbjogSVBpcGVsaW5lTm90aWZpY2F0aW9uKSB7XG4gICAgbm90aWZpY2F0aW9uLmJpbmQoe1xuICAgICAgcGlwZWxpbmU6IHRoaXMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIGFjdGlvbiB0byBydW4gYSBzaGVsbCBzY3JpcHQgdG8gdGhlIHBpcGVsaW5lXG4gICAqXG4gICAqIEByZXR1cm4gVGhlIFNoZWxsYWJsZSBhbmQgdGhlIEFjdGlvbiBhZGRlZCB0byB0aGUgcGlwZWxpbmUuXG4gICAqL1xuICBwdWJsaWMgYWRkU2hlbGxhYmxlKHN0YWdlTmFtZTogc3RyaW5nLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRTaGVsbGFibGVPcHRpb25zKToge1xuICAgIHNoZWxsYWJsZTogU2hlbGxhYmxlOyBhY3Rpb246IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbjt9IHtcbiAgICBjb25zdCBzdGFnZSA9IHRoaXMuZ2V0T3JDcmVhdGVTdGFnZShzdGFnZU5hbWUpO1xuXG4gICAgY29uc3Qgc2ggPSBuZXcgU2hlbGxhYmxlKHRoaXMsIGlkLCBvcHRpb25zKTtcbiAgICBjb25zdCBhY3Rpb24gPSBzaC5hZGRUb1BpcGVsaW5lKFxuICAgICAgc3RhZ2UsXG4gICAgICBvcHRpb25zLmFjdGlvbk5hbWUgfHwgYEFjdGlvbiR7aWR9YCxcbiAgICAgIG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCB0aGlzLmJ1aWxkT3V0cHV0LFxuICAgICAgdGhpcy5kZXRlcm1pbmVSdW5PcmRlckZvck5ld0FjdGlvbihzdGFnZSkpO1xuXG4gICAgaWYgKG9wdGlvbnMuZmFpbHVyZU5vdGlmaWNhdGlvbikge1xuICAgICAgdGhpcy5hZGRCdWlsZEZhaWx1cmVOb3RpZmljYXRpb24oc2gucHJvamVjdCwgb3B0aW9ucy5mYWlsdXJlTm90aWZpY2F0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBzaGVsbGFibGU6IHNoLCBhY3Rpb24gfTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUZXN0KGlkOiBzdHJpbmcsIHByb3BzOiBTaGVsbGFibGVQcm9wcyk6IHtzaGVsbGFibGU6IFNoZWxsYWJsZTsgYWN0aW9uOiBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb259IHtcbiAgICByZXR1cm4gdGhpcy5hZGRTaGVsbGFibGUoVEVTVF9TVEFHRV9OQU1FLCBpZCwge1xuICAgICAgYWN0aW9uTmFtZTogYFRlc3Qke2lkfWAsXG4gICAgICBmYWlsdXJlTm90aWZpY2F0aW9uOiBgVGVzdCAke2lkfSBmYWlsZWRgLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVuaWVuY2UvZGlzY292ZXJ5IG1ldGhvZCB0aGF0IGRlZmluZXMgYSBjYW5hcnkgdGVzdCBpbiB5b3VyIGFjY291bnQuXG4gICAqIEBwYXJhbSBpZCB0aGUgY29uc3RydWN0IGlkXG4gICAqIEBwYXJhbSBwcm9wcyBjYW5hcnkgb3B0aW9uc1xuICAgKi9cbiAgcHVibGljIGFkZENhbmFyeShpZDogc3RyaW5nLCBwcm9wczogQ2FuYXJ5UHJvcHMpIHtcbiAgICByZXR1cm4gbmV3IENhbmFyeSh0aGlzLCBgQ2FuYXJ5JHtpZH1gLCBwcm9wcyk7XG4gIH1cblxuICBwdWJsaWMgYWRkUHVibGlzaChwdWJsaXNoZXI6IElQdWJsaXNoZXIsIG9wdGlvbnM6IEFkZFB1Ymxpc2hPcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBwdWJsaXNoU3RhZ2VOYW1lID0gb3B0aW9ucy5zdGFnZU5hbWUgPz8gUFVCTElTSF9TVEFHRV9OQU1FO1xuICAgIGlmICghdGhpcy5maXJzdFB1Ymxpc2hTdGFnZU5hbWUpIHtcbiAgICAgIHRoaXMuZmlyc3RQdWJsaXNoU3RhZ2VOYW1lID0gcHVibGlzaFN0YWdlTmFtZTtcbiAgICB9XG4gICAgY29uc3Qgc3RhZ2UgPSB0aGlzLmdldE9yQ3JlYXRlU3RhZ2UocHVibGlzaFN0YWdlTmFtZSk7XG5cbiAgICBwdWJsaXNoZXIuYWRkVG9QaXBlbGluZShzdGFnZSwgYCR7cHVibGlzaGVyLm5vZGUuaWR9UHVibGlzaGAsIHtcbiAgICAgIGlucHV0QXJ0aWZhY3Q6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCB0aGlzLmJ1aWxkT3V0cHV0LFxuICAgICAgcnVuT3JkZXI6IHRoaXMuZGV0ZXJtaW5lUnVuT3JkZXJGb3JOZXdBY3Rpb24oc3RhZ2UpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjaGFuZ2UgY29udHJvbCBwb2xpY3kgdG8gYmxvY2sgdHJhbnNpdGlvbnMgaW50byB0aGUgcHVibGlzaCBzdGFnZSBkdXJpbmcgY2VydGFpbiB0aW1lIHdpbmRvd3MuXG4gICAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGUgY2hhbmdlIGNvbnRyb2wgcG9saWN5LlxuICAgKi9cbiAgcHVibGljIGFkZENoYW5nZUNvbnRyb2wob3B0aW9uczogQWRkQ2hhbmdlQ29udHJvbE9wdGlvbnMgPSB7IH0pOiBDaGFuZ2VDb250cm9sbGVyIHtcbiAgICBjb25zdCBwdWJsaXNoU3RhZ2UgPSB0aGlzLmdldFN0YWdlKHRoaXMuZmlyc3RQdWJsaXNoU3RhZ2VOYW1lID8/IFBVQkxJU0hfU1RBR0VfTkFNRSk7XG4gICAgaWYgKCFwdWJsaXNoU3RhZ2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhpcyBwaXBlbGluZSBkb2VzIG5vdCBoYXZlIGEgJHtQVUJMSVNIX1NUQUdFX05BTUV9IHN0YWdlIHlldC4gQWRkIG9uZSBmaXJzdC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IENoYW5nZUNvbnRyb2xsZXIodGhpcywgJ0NoYW5nZUNvbnRyb2xsZXInLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgcGlwZWxpbmVTdGFnZTogcHVibGlzaFN0YWdlLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHB1Ymxpc2hUb05wbShvcHRpb25zOiBwdWJsaXNoaW5nLlB1Ymxpc2hUb05wbVByb2plY3RQcm9wcyAmIEFkZFB1Ymxpc2hPcHRpb25zKSB7XG4gICAgdGhpcy5hZGRQdWJsaXNoKG5ldyBwdWJsaXNoaW5nLlB1Ymxpc2hUb05wbVByb2plY3QodGhpcywgJ05wbScsIHtcbiAgICAgIGRyeVJ1bjogdGhpcy5kcnlSdW4sXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pLCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBwdWJsaXNoVG9NYXZlbihvcHRpb25zOiBwdWJsaXNoaW5nLlB1Ymxpc2hUb01hdmVuUHJvamVjdFByb3BzICYgQWRkUHVibGlzaE9wdGlvbnMpIHtcbiAgICB0aGlzLmFkZFB1Ymxpc2gobmV3IHB1Ymxpc2hpbmcuUHVibGlzaFRvTWF2ZW5Qcm9qZWN0KHRoaXMsICdNYXZlbicsIHtcbiAgICAgIGRyeVJ1bjogdGhpcy5kcnlSdW4sXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pLCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBwdWJsaXNoVG9OdUdldChvcHRpb25zOiBwdWJsaXNoaW5nLlB1Ymxpc2hUb051R2V0UHJvamVjdFByb3BzICYgQWRkUHVibGlzaE9wdGlvbnMpIHtcbiAgICB0aGlzLmFkZFB1Ymxpc2gobmV3IHB1Ymxpc2hpbmcuUHVibGlzaFRvTnVHZXRQcm9qZWN0KHRoaXMsICdOdUdldCcsIHtcbiAgICAgIGRyeVJ1bjogdGhpcy5kcnlSdW4sXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pLCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBwdWJsaXNoVG9HaXRIdWJQYWdlcyhvcHRpb25zOiBwdWJsaXNoaW5nLlB1Ymxpc2hEb2NzVG9HaXRIdWJQcm9qZWN0UHJvcHMgJiBBZGRQdWJsaXNoT3B0aW9ucykge1xuICAgIHRoaXMuYWRkUHVibGlzaChuZXcgcHVibGlzaGluZy5QdWJsaXNoRG9jc1RvR2l0SHViUHJvamVjdCh0aGlzLCAnR2l0SHViUGFnZXMnLCB7XG4gICAgICBkcnlSdW46IHRoaXMuZHJ5UnVuLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KSwgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgcHVibGlzaFRvR2l0SHViKG9wdGlvbnM6IHB1Ymxpc2hpbmcuUHVibGlzaFRvR2l0SHViUHJvcHMgJiBBZGRQdWJsaXNoT3B0aW9ucykge1xuICAgIHRoaXMuYWRkUHVibGlzaChuZXcgcHVibGlzaGluZy5QdWJsaXNoVG9HaXRIdWIodGhpcywgJ0dpdEh1YicsIHtcbiAgICAgIGRyeVJ1bjogdGhpcy5kcnlSdW4sXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pLCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBwdWJsaXNoVG9QeVBJKG9wdGlvbnM6IHB1Ymxpc2hpbmcuUHVibGlzaFRvUHlQaVByb3BzICYgQWRkUHVibGlzaE9wdGlvbnMpIHtcbiAgICB0aGlzLmFkZFB1Ymxpc2gobmV3IHB1Ymxpc2hpbmcuUHVibGlzaFRvUHlQaSh0aGlzLCAnUHlQSScsIHtcbiAgICAgIGRyeVJ1bjogdGhpcy5kcnlSdW4sXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pLCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBwdWJsaXNoVG9TMyhpZDogc3RyaW5nLCBvcHRpb25zOiBwdWJsaXNoaW5nLlB1Ymxpc2hUb1MzUHJvcHMgJiBBZGRQdWJsaXNoT3B0aW9ucykge1xuICAgIHRoaXMuYWRkUHVibGlzaChuZXcgcHVibGlzaGluZy5QdWJsaXNoVG9TMyh0aGlzLCBpZCwge1xuICAgICAgZHJ5UnVuOiB0aGlzLmRyeVJ1bixcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSksIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFB1Ymxpc2ggR29sYW5nIGNvZGUgZnJvbSBgZ29gIGRpcmVjdG9yeSBpbiBidWlsZCBhcnRpZmFjdCB0byBhIEdpdEh1YiByZXBvc2l0b3J5LlxuICAgKi9cbiAgcHVibGljIHB1Ymxpc2hUb0dvbGFuZyhvcHRpb25zOiBwdWJsaXNoaW5nLlB1Ymxpc2hUb0dvbGFuZ1Byb3BzKSB7XG4gICAgdGhpcy5hZGRQdWJsaXNoKG5ldyBwdWJsaXNoaW5nLlB1Ymxpc2hUb0dvbGFuZyh0aGlzLCAnR29sYW5nJywge1xuICAgICAgZHJ5UnVuOiB0aGlzLmRyeVJ1bixcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgYXV0b21hdGljIGJ1bXBzIGZvciB0aGUgc291cmNlIHJlcG8uXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIGF1dG8gYnVtcCAoc2VlIEF1dG9CdW1wT3B0aW9ucyBmb3IgZGVzY3JpcHRpb24gb2YgZGVmYXVsdHMpXG4gICAqL1xuICBwdWJsaWMgYXV0b0J1bXAob3B0aW9ucz86IEF1dG9CdW1wT3B0aW9ucyk6IEF1dG9CdW1wIHtcbiAgICBpZiAoIVdyaXRhYmxlR2l0SHViUmVwby5pc1dyaXRhYmxlR2l0SHViUmVwbyh0aGlzLnJlcG8pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wicmVwb1wiIG11c3QgYmUgYSBXcml0YWJsZUdpdEh1YlJlcG8gaW4gb3JkZXIgdG8gZW5hYmxlIGF1dG8tYnVtcCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGF1dG9CdW1wID0gbmV3IEF1dG9CdW1wKHRoaXMsICdBdXRvQnVtcCcsIHtcbiAgICAgIHJlcG86IHRoaXMucmVwbyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXV0b0J1bXA7XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyBhdXRvbWF0aWMgbWVyZ2UgYmFja3MgZm9yIHRoZSBzb3VyY2UgcmVwby5cbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgYXV0byBidW1wIChzZWUgQXV0b01lcmdlQmFja1BpcGVsaW5lT3B0aW9ucyBmb3IgZGVzY3JpcHRpb24gb2YgZGVmYXVsdHMpXG4gICAqL1xuICBwdWJsaWMgYXV0b01lcmdlQmFjayhvcHRpb25zPzogQXV0b01lcmdlQmFja1BpcGVsaW5lT3B0aW9ucykge1xuICAgIGlmICghV3JpdGFibGVHaXRIdWJSZXBvLmlzV3JpdGFibGVHaXRIdWJSZXBvKHRoaXMucmVwbykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignXCJyZXBvXCIgbXVzdCBiZSBhIFdyaXRhYmxlR2l0SHViUmVwbyBpbiBvcmRlciB0byBlbmFibGUgYXV0by1tZXJnZS1iYWNrJyk7XG4gICAgfVxuXG4gICAgY29uc3QgbWVyZ2VCYWNrID0gbmV3IEF1dG9NZXJnZUJhY2sodGhpcywgJ01lcmdlQmFjaycsIHtcbiAgICAgIHJlcG86IHRoaXMucmVwbyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICBpZiAob3B0aW9ucz8uc3RhZ2UpIHtcblxuICAgICAgY29uc3QgYWZ0ZXJTdGFnZSA9IHRoaXMuZ2V0U3RhZ2Uob3B0aW9ucy5zdGFnZS5hZnRlcik7XG5cbiAgICAgIGlmICghYWZ0ZXJTdGFnZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCdvcHRpb25zLnN0YWdlLmFmdGVyJyBtdXN0IGJlIGNvbmZpZ3VyZWQgdG8gYW4gZXhpc3Rpbmcgc3RhZ2U6ICR7b3B0aW9ucy5zdGFnZS5hZnRlcn1gKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3RhZ2UgPSB0aGlzLmdldE9yQ3JlYXRlU3RhZ2Uob3B0aW9ucy5zdGFnZS5uYW1lID8/ICdNZXJnZUJhY2snLCB7IGp1c3RBZnRlcjogYWZ0ZXJTdGFnZSB9KTtcbiAgICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgICAgYWN0aW9uTmFtZTogJ0NyZWF0ZU1lcmdlQmFja1B1bGxSZXF1ZXN0JyxcbiAgICAgICAgcHJvamVjdDogbWVyZ2VCYWNrLnByLnByb2plY3QsXG4gICAgICAgIGlucHV0OiB0aGlzLnNvdXJjZUFydGlmYWN0LFxuICAgICAgfSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIGF1dG9tYXRpYyBidWlsZHMgb2YgcHVsbCByZXF1ZXN0cyBpbiB0aGUgR2l0aHViIHJlcG9zaXRvcnkgYW5kIHBvc3RzIHRoZVxuICAgKiByZXN1bHRzIGJhY2sgYXMgYSBjb21tZW50IHdpdGggYSBwdWJsaWMgbGluayB0byB0aGUgYnVpbGQgbG9ncy5cbiAgICovXG4gIHB1YmxpYyBhdXRvQnVpbGQob3B0aW9uczogQXV0b0J1aWxkT3B0aW9ucyA9IHsgfSk6IEF1dG9CdWlsZCB7XG4gICAgcmV0dXJuIG5ldyBBdXRvQnVpbGQodGhpcywgJ0F1dG9CdWlsZCcsIHtcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLmJ1aWxkRW52aXJvbm1lbnQsXG4gICAgICByZXBvOiB0aGlzLnJlcG8sXG4gICAgICBidWlsZFNwZWM6IG9wdGlvbnMuYnVpbGRTcGVjIHx8IHRoaXMuYnVpbGRTcGVjLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbWV0cmljIHRoYXQgdHJhY2tzIHBpcGVsaW5lIGZhaWx1cmVzLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0ZhaWx1cmVzKG9wdGlvbnM6IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IGNsb3Vkd2F0Y2guTWV0cmljKHtcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDX05BTUVTUEFDRSxcbiAgICAgIG1ldHJpY05hbWU6IEZBSUxVUkVfTUVUUklDX05BTUUsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgIFBpcGVsaW5lOiB0aGlzLnBpcGVsaW5lLnBpcGVsaW5lTmFtZSxcbiAgICAgIH0sXG4gICAgICBzdGF0aXN0aWM6ICdTdW0nLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbWV0cmljcyB0aGF0IHRyYWNrIGZhaWx1cmUgb2YgZWFjaCBhY3Rpb24gd2l0aGluIHRoZSBwaXBlbGluZS5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNBY3Rpb25GYWlsdXJlcyhvcHRpb25zOiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpY1tdIHtcbiAgICByZXR1cm4gZmxhdE1hcCh0aGlzLnBpcGVsaW5lLnN0YWdlcywgc3RhZ2UgPT4gc3RhZ2UuYWN0aW9ucy5tYXAoYWN0aW9uID0+IHtcbiAgICAgIHJldHVybiBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgICBuYW1lc3BhY2U6IE1FVFJJQ19OQU1FU1BBQ0UsXG4gICAgICAgIG1ldHJpY05hbWU6IEZBSUxVUkVfTUVUUklDX05BTUUsXG4gICAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgICBQaXBlbGluZTogdGhpcy5waXBlbGluZS5waXBlbGluZU5hbWUsXG4gICAgICAgICAgQWN0aW9uOiBhY3Rpb24uYWN0aW9uUHJvcGVydGllcy5hY3Rpb25OYW1lLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0aXN0aWM6ICdTdW0nLFxuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgcHVibGljIGFkZE1hbnVhbEFwcHJvdmFsVG9TdGFnZShzdGFnZU5hbWU6IHN0cmluZywgcHJvcHM/OiBjcGlwZWxpbmVfYWN0aW9ucy5NYW51YWxBcHByb3ZhbEFjdGlvblByb3BzKSB7XG4gICAgY29uc3Qgc3RhZ2UgPSB0aGlzLmdldE9yQ3JlYXRlU3RhZ2Uoc3RhZ2VOYW1lKTtcbiAgICBzdGFnZS5hZGRBY3Rpb24obmV3IGNwaXBlbGluZV9hY3Rpb25zLk1hbnVhbEFwcHJvdmFsQWN0aW9uKHByb3BzID8/IHtcbiAgICAgIGFjdGlvbk5hbWU6ICdNYW51YWxBcHByb3ZhbEFjdGlvbicsXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRGYWlsdXJlQWxhcm0odGl0bGU/OiBzdHJpbmcpOiBjbG91ZHdhdGNoLkFsYXJtIHtcbiAgICByZXR1cm4gbmV3IFBpcGVsaW5lV2F0Y2hlcih0aGlzLCAnUGlwZWxpbmVXYXRjaGVyJywge1xuICAgICAgcGlwZWxpbmU6IHRoaXMucGlwZWxpbmUsXG4gICAgICBtZXRyaWNOYW1lc3BhY2U6IE1FVFJJQ19OQU1FU1BBQ0UsXG4gICAgICBmYWlsdXJlTWV0cmljTmFtZTogRkFJTFVSRV9NRVRSSUNfTkFNRSxcbiAgICAgIHRpdGxlLFxuICAgIH0pLmFsYXJtO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRCdWlsZEZhaWx1cmVOb3RpZmljYXRpb24oYnVpbGRQcm9qZWN0OiBjYnVpbGQuSVByb2plY3QsIG1lc3NhZ2U6IHN0cmluZykge1xuICAgIGlmICghdGhpcy5ub3RpZnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBidWlsZFByb2plY3Qub25CdWlsZEZhaWxlZCgnT25CdWlsZEZhaWxlZCcpLmFkZFRhcmdldChuZXcgZXZlbnRzX3RhcmdldHMuU25zVG9waWModGhpcy5ub3RpZnksIHtcbiAgICAgIG1lc3NhZ2U6IGV2ZW50cy5SdWxlVGFyZ2V0SW5wdXQuZnJvbVRleHQobWVzc2FnZSksXG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHRoZSBzdGFnZSBvciB1bmRlZmluZWQgaWYgdGhlIHN0YWdlIGRvZXNuJ3QgZXhpc3RcbiAgICovXG4gIHByaXZhdGUgZ2V0U3RhZ2Uoc3RhZ2VOYW1lOiBzdHJpbmcpOiBjcGlwZWxpbmUuSVN0YWdlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zdGFnZXNbc3RhZ2VOYW1lXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3JDcmVhdGVTdGFnZShzdGFnZU5hbWU6IHN0cmluZywgcGxhY2VtZW50PzogY3BpcGVsaW5lLlN0YWdlUGxhY2VtZW50KTogY3BpcGVsaW5lLklTdGFnZSB7XG4gICAgLy8gb3RoZXJ3aXNlLCBncm91cCBhbGwgYWN0aW9ucyBzbyB0aGV5IHJ1biBjb25jdXJyZW50bHkuXG4gICAgbGV0IHN0YWdlID0gdGhpcy5nZXRTdGFnZShzdGFnZU5hbWUpO1xuICAgIGlmICghc3RhZ2UpIHtcbiAgICAgIHN0YWdlID0gdGhpcy5waXBlbGluZS5hZGRTdGFnZSh7XG4gICAgICAgIHN0YWdlTmFtZSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgfSk7XG4gICAgICB0aGlzLnN0YWdlc1tzdGFnZU5hbWVdID0gc3RhZ2U7XG4gICAgfVxuICAgIHJldHVybiBzdGFnZTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZXJtaW5lUnVuT3JkZXJGb3JOZXdBY3Rpb24oc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBkZXRlcm1pbmVSdW5PcmRlcihzdGFnZS5hY3Rpb25zLmxlbmd0aCwgdGhpcy5jb25jdXJyZW5jeSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUHVibGlzaGVyIGV4dGVuZHMgSUNvbnN0cnVjdCB7XG4gIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFRvUGlwZWxpbmVPcHRpb25zKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRUb1BpcGVsaW5lT3B0aW9ucyB7XG4gIGlucHV0QXJ0aWZhY3Q/OiBjcGlwZWxpbmUuQXJ0aWZhY3Q7XG4gIHJ1bk9yZGVyPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZENoYW5nZUNvbnRyb2xPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBidWNrZXQgaW4gd2hpY2ggdGhlIENoYW5nZUNvbnRyb2wgaUNhbCBkb2N1bWVudCB3aWxsIGJlIHN0b3JlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYSBuZXcgYnVja2V0IHdpbGwgYmUgcHJvdmlzaW9uZWQuXG4gICAqL1xuICBjaGFuZ2VDb250cm9sQnVja2V0PzogczMuSUJ1Y2tldDtcblxuICAvKipcbiAgICogVGhlIGtleSBpbiB3aGljaCB0aGUgaUNhbCBmaWxsZSB3aWxsIGJlIHN0b3JlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgJ2NoYW5nZS1jb250cm9sLmljYWwnXG4gICAqL1xuICBjaGFuZ2VDb250cm9sT2JqZWN0S2V5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTY2hlZHVsZSB0byBydW4gdGhlIGNoYW5nZSBjb250cm9sbGVyIG9uXG4gICAqXG4gICAqIEBkZWZhdWx0IHJhdGUoMTUgbWludXRlcylcbiAgICovXG4gIHNjaGVkdWxlRXhwcmVzc2lvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRQdWJsaXNoT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgaW5wdXQgYXJ0aWZhY3QgdG8gdXNlXG4gICAqXG4gICAqIEBkZWZhdWx0IEJ1aWxkIG91dHB1dCBhcnRpZmFjdFxuICAgKi9cbiAgaW5wdXRBcnRpZmFjdD86IGNwaXBlbGluZS5BcnRpZmFjdDtcblxuICAvKipcbiAgICogU3RhZ2UgbmFtZSB0byBhZGQgcHVibGlzaGluZyBqb2IgdG9cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhpcyB3aWxsIGJlIHRoZSBzdGFnZSBuYW1lIGAnUHVibGlzaCdgLCBidXQgaWYgeW91IHdhbnQgdG9cbiAgICogc2VwYXJhdGUgb3V0IHRoZSBwdWJsaXNoaW5nIGFjdGlvbnMgaW50byBkaWZmZXJlbnQgc3RhZ2VzIChpbiBvcmRlciB0b1xuICAgKiBibG9jay91bmJsb2NrIHRoZW0gc2VwYXJhdGVseSBmb3IgZXhhbXBsZSkgeW91IGNhbiBjaGFuZ2UgdGhpcy5cbiAgICpcbiAgICogU3RhZ2VzIGFwcGVhciBpbiB0aGUgcGlwZWxpbmUgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIHJlZmVyZW5jZWQgZm9yXG4gICAqIHRoZSBmaXJzdCB0aW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIlB1Ymxpc2hcIlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2VOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZFNoZWxsYWJsZU9wdGlvbnMgZXh0ZW5kcyBTaGVsbGFibGVQcm9wcyB7XG4gIC8qKlxuICAgKiBTdHJpbmcgdG8gdXNlIGFzIGFjdGlvbiBuYW1lXG4gICAqXG4gICAqIEBkZWZhdWx0IElkXG4gICAqL1xuICBhY3Rpb25OYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNZXNzYWdlIHRvIHVzZSBhcyBmYWlsdXJlIG5vdGlmaWNhdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBub3RpZmljYXRpb25cbiAgICovXG4gIGZhaWx1cmVOb3RpZmljYXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnB1dCBhcnRpZmFjdCB0byB1c2VcbiAgICpcbiAgICogQGRlZmF1bHQgQnVpbGQgb3V0cHV0IGFydGlmYWN0XG4gICAqL1xuICBpbnB1dEFydGlmYWN0PzogY3BpcGVsaW5lLkFydGlmYWN0O1xufVxuIl19
345
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwaXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQVdxQjtBQUNyQiwyQ0FBbUQ7QUFFbkQsNkNBQTJEO0FBQzNELDJDQUFxRDtBQUNyRCxxQ0FBK0M7QUFDL0MsMkRBQXVEO0FBQ3ZELHFEQUFpRDtBQUNqRCx5REFBcUQ7QUFDckQseURBQTJDO0FBQzNDLGlEQUF3RTtBQUV4RSxpQ0FBbUQ7QUFDbkQsMkNBQXdEO0FBQ3hELGlDQUFvRDtBQUVwRCxNQUFNLGtCQUFrQixHQUFHLFNBQVMsQ0FBQztBQUNyQyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUM7QUFDL0IsTUFBTSxnQkFBZ0IsR0FBRyxjQUFjLENBQUM7QUFDeEMsTUFBTSxtQkFBbUIsR0FBRyxVQUFVLENBQUM7QUF3SnZDOztHQUVHO0FBQ0gsTUFBYSxRQUFTLFNBQVEsc0JBQVM7SUErQnJDLFlBQVksTUFBaUIsRUFBRSxJQUFZLEVBQUUsS0FBb0I7O1FBQy9ELEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFWZCxXQUFNLEdBQXlDLEVBQUcsQ0FBQztRQVl6RCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFFN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLDhCQUFTLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7WUFDNUQsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyx3QkFBd0IsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLHdCQUF3QjtTQUMvRyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUvRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBQSxrQ0FBc0IsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFFakMsSUFBSSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7UUFDOUMsSUFBSSxnQkFBZ0IsS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUU7WUFDdEUsZ0JBQWdCLEdBQUcsR0FBRyxLQUFLLENBQUMsWUFBWSxRQUFRLENBQUM7U0FDbEQ7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksMkJBQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUNuRSxXQUFXLEVBQUUsZ0JBQWdCO1lBQzdCLFdBQVcsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQ2xDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixPQUFPLEVBQUUsTUFBQSxLQUFLLENBQUMsWUFBWSxtQ0FBSSxzQkFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDaEQscUJBQXFCLEVBQUUsSUFBSTtTQUM1QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxTQUFVLENBQUMsZ0JBQWdCLENBQUMscUJBQUcsQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMsOENBQThDLENBQUMsQ0FBQyxDQUFDO1FBRTdILE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsRCxNQUFNLFdBQVcsR0FBRyxJQUFJLDhCQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDN0MsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLHNDQUFpQixDQUFDLGVBQWUsQ0FBQztZQUN6RCxVQUFVLEVBQUUsT0FBTztZQUNuQixPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDMUIsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQzFCLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQztTQUN2QixDQUFDLENBQUMsQ0FBQztRQUNKLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBRS9CLElBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFO1lBQzNCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxxQkFBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLG1DQUFRLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztTQUN0RjtRQUVELCtDQUErQztRQUMvQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXRELG1EQUFtRDtRQUNuRCxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFLLGVBQWUsQ0FBQyxDQUFDO1FBRW5GLDRDQUE0QztRQUM1QyxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsRUFBRTtZQUM5QixJQUFJLDhCQUFhLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRTtnQkFDdkMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixPQUFPLEVBQUUsS0FBSyxDQUFDLFlBQVk7Z0JBQzNCLFdBQVcsRUFBRSxLQUFLLENBQUMsb0JBQW9CO2FBQ3hDLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFO1lBQ25CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQztTQUN4RTtJQUNILENBQUM7SUFFTSxlQUFlLENBQUMsWUFBbUM7UUFDeEQsWUFBWSxDQUFDLElBQUksQ0FBQztZQUNoQixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksWUFBWSxDQUFDLFNBQWlCLEVBQUUsRUFBVSxFQUFFLE9BQTRCO1FBRTdFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUvQyxNQUFNLEVBQUUsR0FBRyxJQUFJLHFCQUFTLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM1QyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsYUFBYSxDQUM3QixLQUFLLEVBQ0wsT0FBTyxDQUFDLFVBQVUsSUFBSSxTQUFTLEVBQUUsRUFBRSxFQUNuQyxPQUFPLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQ3pDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRTdDLElBQUksT0FBTyxDQUFDLG1CQUFtQixFQUFFO1lBQy9CLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQzNFO1FBRUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVNLE9BQU8sQ0FBQyxFQUFVLEVBQUUsS0FBcUI7UUFDOUMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxFQUFFLEVBQUU7WUFDNUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ3ZCLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxTQUFTO1lBQ3hDLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksU0FBUyxDQUFDLEVBQVUsRUFBRSxLQUFrQjtRQUM3QyxPQUFPLElBQUksZUFBTSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTSxVQUFVLENBQUMsU0FBcUIsRUFBRSxVQUE2QixFQUFFOztRQUN0RSxNQUFNLGdCQUFnQixHQUFHLE1BQUEsT0FBTyxDQUFDLFNBQVMsbUNBQUksa0JBQWtCLENBQUM7UUFDakUsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUMvQixJQUFJLENBQUMscUJBQXFCLEdBQUcsZ0JBQWdCLENBQUM7U0FDL0M7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUV0RCxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUU7WUFDNUQsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFdBQVc7WUFDeEQsUUFBUSxFQUFFLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxLQUFLLENBQUM7U0FDcEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGdCQUFnQixDQUFDLFVBQW1DLEVBQUc7O1FBQzVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBQSxJQUFJLENBQUMscUJBQXFCLG1DQUFJLGtCQUFrQixDQUFDLENBQUM7UUFDckYsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxrQkFBa0IsNEJBQTRCLENBQUMsQ0FBQztTQUNsRztRQUVELE9BQU8sSUFBSSxvQ0FBZ0IsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7WUFDcEQsR0FBRyxPQUFPO1lBQ1YsYUFBYSxFQUFFLFlBQVk7U0FDNUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFlBQVksQ0FBQyxPQUFnRTtRQUNsRixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7WUFDOUQsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLEdBQUcsT0FBTztTQUNYLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNmLENBQUM7SUFFTSxjQUFjLENBQUMsT0FBa0U7UUFDdEYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFO1lBQ2xFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixHQUFHLE9BQU87U0FDWCxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDZixDQUFDO0lBRU0sY0FBYyxDQUFDLE9BQWtFO1FBQ3RGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRTtZQUNsRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsR0FBRyxPQUFPO1NBQ1gsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUVNLG9CQUFvQixDQUFDLE9BQXVFO1FBQ2pHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUMsMEJBQTBCLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUM3RSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsR0FBRyxPQUFPO1NBQ1gsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUVNLGVBQWUsQ0FBQyxPQUE0RDtRQUNqRixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQzdELE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixHQUFHLE9BQU87U0FDWCxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDZixDQUFDO0lBRU0sYUFBYSxDQUFDLE9BQTBEO1FBQzdFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDekQsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLEdBQUcsT0FBTztTQUNYLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNmLENBQUM7SUFFTSxXQUFXLENBQUMsRUFBVSxFQUFFLE9BQXdEO1FBQ3JGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDbkQsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLEdBQUcsT0FBTztTQUNYLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNmLENBQUM7SUFFRDs7T0FFRztJQUNJLGVBQWUsQ0FBQyxPQUF3QztRQUM3RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQzdELE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixHQUFHLE9BQU87U0FDWCxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRDs7O09BR0c7SUFDSSxRQUFRLENBQUMsT0FBeUI7UUFDdkMsSUFBSSxDQUFDLHlCQUFrQixDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLGtFQUFrRSxDQUFDLENBQUM7U0FDckY7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLHVCQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUM5QyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7UUFFSCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksYUFBYSxDQUFDLE9BQXNDOztRQUN6RCxJQUFJLENBQUMseUJBQWtCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3ZELE1BQU0sSUFBSSxLQUFLLENBQUMsd0VBQXdFLENBQUMsQ0FBQztTQUMzRjtRQUVELE1BQU0sU0FBUyxHQUFHLElBQUksNEJBQWEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQ3JELElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztRQUVILElBQUksT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLEtBQUssRUFBRTtZQUVsQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFdEQsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDZixNQUFNLElBQUksS0FBSyxDQUFDLGtFQUFrRSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDMUc7WUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBQSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksbUNBQUksV0FBVyxFQUFFLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDbEcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLHNDQUFpQixDQUFDLGVBQWUsQ0FBQztnQkFDcEQsVUFBVSxFQUFFLDRCQUE0QjtnQkFDeEMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTztnQkFDN0IsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjO2FBQzNCLENBQUMsQ0FBQyxDQUFDO1NBQ0w7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksU0FBUyxDQUFDLFVBQTRCLEVBQUc7UUFDOUMsT0FBTyxJQUFJLHNCQUFTLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtZQUN0QyxXQUFXLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUNsQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUztZQUM5QyxHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxjQUFjLENBQUMsT0FBaUM7UUFDckQsT0FBTyxJQUFJLDRCQUFVLENBQUMsTUFBTSxDQUFDO1lBQzNCLFNBQVMsRUFBRSxnQkFBZ0I7WUFDM0IsVUFBVSxFQUFFLG1CQUFtQjtZQUMvQixhQUFhLEVBQUU7Z0JBQ2IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWTthQUNyQztZQUNELFNBQVMsRUFBRSxLQUFLO1lBQ2hCLEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLG9CQUFvQixDQUFDLE9BQWlDO1FBQzNELE9BQU8sSUFBQSxjQUFPLEVBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN2RSxPQUFPLElBQUksNEJBQVUsQ0FBQyxNQUFNLENBQUM7Z0JBQzNCLFNBQVMsRUFBRSxnQkFBZ0I7Z0JBQzNCLFVBQVUsRUFBRSxtQkFBbUI7Z0JBQy9CLGFBQWEsRUFBRTtvQkFDYixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZO29CQUNwQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFVBQVU7aUJBQzNDO2dCQUNELFNBQVMsRUFBRSxLQUFLO2dCQUNoQixHQUFHLE9BQU87YUFDWCxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVNLHdCQUF3QixDQUFDLFNBQWlCLEVBQUUsS0FBbUQ7UUFDcEcsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9DLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxzQ0FBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLGFBQUwsS0FBSyxjQUFMLEtBQUssR0FBSTtZQUNsRSxVQUFVLEVBQUUsc0JBQXNCO1NBQ25DLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVPLGVBQWUsQ0FBQyxLQUFjO1FBQ3BDLE9BQU8sSUFBSSxrQ0FBZSxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUNsRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsZUFBZSxFQUFFLGdCQUFnQjtZQUNqQyxpQkFBaUIsRUFBRSxtQkFBbUI7WUFDdEMsS0FBSztTQUNOLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDWCxDQUFDO0lBRU8sMkJBQTJCLENBQUMsWUFBNkIsRUFBRSxPQUFlO1FBQ2hGLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hCLE9BQU87U0FDUjtRQUVELFlBQVksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksZ0NBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUM3RixPQUFPLEVBQUUsd0JBQU0sQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztTQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRDs7T0FFRztJQUNLLFFBQVEsQ0FBQyxTQUFpQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVPLGdCQUFnQixDQUFDLFNBQWlCLEVBQUUsU0FBb0M7UUFDOUUseURBQXlEO1FBQ3pELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztnQkFDN0IsU0FBUztnQkFDVCxTQUFTO2FBQ1YsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUM7U0FDaEM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyw2QkFBNkIsQ0FBQyxLQUF1QjtRQUMzRCxPQUFPLElBQUEsd0JBQWlCLEVBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FDRjtBQXhYRCw0QkF3WEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEdXJhdGlvbixcbiAgYXdzX2Nsb3Vkd2F0Y2ggYXMgY2xvdWR3YXRjaCxcbiAgYXdzX2NvZGVidWlsZCBhcyBjYnVpbGQsXG4gIGF3c19jb2RlcGlwZWxpbmUgYXMgY3BpcGVsaW5lLFxuICBhd3NfY29kZXBpcGVsaW5lX2FjdGlvbnMgYXMgY3BpcGVsaW5lX2FjdGlvbnMsXG4gIGF3c19ldmVudHMgYXMgZXZlbnRzLFxuICBhd3NfZXZlbnRzX3RhcmdldHMgYXMgZXZlbnRzX3RhcmdldHMsXG4gIGF3c19pYW0gYXMgaWFtLCBhd3NfczMgYXMgczMsXG4gIGF3c19zbnMgYXMgc25zLFxuICBhd3Nfc25zX3N1YnNjcmlwdGlvbnMgYXMgc25zX3N1YnMsXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCwgSUNvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5pbXBvcnQgeyBBdXRvQnVpbGQsIEF1dG9CdWlsZE9wdGlvbnMgfSBmcm9tICcuL2F1dG8tYnVpbGQnO1xuaW1wb3J0IHsgY3JlYXRlQnVpbGRFbnZpcm9ubWVudCB9IGZyb20gJy4vYnVpbGQtZW52JztcbmltcG9ydCB7IENhbmFyeSwgQ2FuYXJ5UHJvcHMgfSBmcm9tICcuL2NhbmFyeSc7XG5pbXBvcnQgeyBDaGFuZ2VDb250cm9sbGVyIH0gZnJvbSAnLi9jaGFuZ2UtY29udHJvbGxlcic7XG5pbXBvcnQgeyBDaGltZU5vdGlmaWVyIH0gZnJvbSAnLi9jaGltZS1ub3RpZmllcic7XG5pbXBvcnQgeyBQaXBlbGluZVdhdGNoZXIgfSBmcm9tICcuL3BpcGVsaW5lLXdhdGNoZXInO1xuaW1wb3J0ICogYXMgcHVibGlzaGluZyBmcm9tICcuL3B1Ymxpc2hpbmcnO1xuaW1wb3J0IHsgQXV0b0J1bXAsIEF1dG9NZXJnZUJhY2ssIEF1dG9CdW1wUHJvcHMgfSBmcm9tICcuL3B1bGwtcmVxdWVzdCc7XG5pbXBvcnQgeyBBdXRvTWVyZ2VCYWNrUGlwZWxpbmVPcHRpb25zIH0gZnJvbSAnLi9wdWxsLXJlcXVlc3QvbWVyZ2UtYmFjayc7XG5pbXBvcnQgeyBJUmVwbywgV3JpdGFibGVHaXRIdWJSZXBvIH0gZnJvbSAnLi9yZXBvJztcbmltcG9ydCB7IFNoZWxsYWJsZSwgU2hlbGxhYmxlUHJvcHMgfSBmcm9tICcuL3NoZWxsYWJsZSc7XG5pbXBvcnQgeyBkZXRlcm1pbmVSdW5PcmRlciwgZmxhdE1hcCB9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IFBVQkxJU0hfU1RBR0VfTkFNRSA9ICdQdWJsaXNoJztcbmNvbnN0IFRFU1RfU1RBR0VfTkFNRSA9ICdUZXN0JztcbmNvbnN0IE1FVFJJQ19OQU1FU1BBQ0UgPSAnQ0RLL0RlbGl2bGliJztcbmNvbnN0IEZBSUxVUkVfTUVUUklDX05BTUUgPSAnRmFpbHVyZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lUHJvcHMge1xuICAvKipcbiAgICogVGhlIHNvdXJjZSByZXBvc2l0b3J5IHRvIGJ1aWxkIChlLmcuIEdpdEh1YlJlcG8pLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwbzogSVJlcG87XG5cbiAgLyoqXG4gICAqIEEgZGlzcGxheSBuYW1lIGZvciB0aGlzIHBpcGVsaW5lLlxuICAgKi9cbiAgcmVhZG9ubHkgdGl0bGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcGh5c2ljYWwgbmFtZSBmb3IgdGhpcyBwaXBlbGluZS5cbiAgICogQGRlZmF1bHQgLSBhIG5ldyBuYW1lIHdpbGwgYmUgZ2VuZXJhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcGlwZWxpbmVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCcmFuY2ggdG8gYnVpbGQuXG4gICAqIEBkZWZhdWx0IG1hc3RlclxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbWFpbCB0byBzZW5kIGZhaWx1cmUgbm90aWZpY2F0aW9ucy5cbiAgICogQGRlZmF1bHQgLSBObyBlbWFpbCBub3RpZmljYXRpb25zXG4gICAqL1xuICByZWFkb25seSBub3RpZmljYXRpb25FbWFpbD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGltYWdlIHVzZWQgZm9yIHRoZSBidWlsZHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGpzaWkvc3VwZXJjaGFpbiAoc2VlIGRvY3MpXG4gICAqL1xuICByZWFkb25seSBidWlsZEltYWdlPzogY2J1aWxkLklCdWlsZEltYWdlO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgQ29kZUJ1aWxkIHByb2plY3QgdGhhdCB3aWxsIGJlIHBhcnQgb2YgdGhpcyBwaXBlbGluZS5cbiAgICogQGRlZmF1bHQgLSBgJHtwaXBlbGluZU5hbWV9LUJ1aWxkYCwgaWYgYHBpcGVsaW5lTmFtZWAgcHJvcGVydHkgaXMgc3BlY2lmaWVkOyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCwgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRQcm9qZWN0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgY29tcHV0ZSB0byB1c2UgZm9yIHRoaXMgYnVpbGQuXG4gICAqIFNlZSB0aGUge0BsaW5rIENvbXB1dGVUeXBlfSBlbnVtIGZvciB0aGUgcG9zc2libGUgdmFsdWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0YWtlbiBmcm9tIHtAbGluayAjYnVpbGRJbWFnZSNkZWZhdWx0Q29tcHV0ZVR5cGV9XG4gICAqL1xuICByZWFkb25seSBjb21wdXRlVHlwZT86IGNidWlsZC5Db21wdXRlVHlwZTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGhvdyB0aGUgcHJvamVjdCBidWlsZHMgRG9ja2VyIGltYWdlcy4gU3BlY2lmeSB0cnVlIHRvIGVuYWJsZVxuICAgKiBydW5uaW5nIHRoZSBEb2NrZXIgZGFlbW9uIGluc2lkZSBhIERvY2tlciBjb250YWluZXIuIFRoaXMgdmFsdWUgbXVzdCBiZVxuICAgKiBzZXQgdG8gdHJ1ZSBvbmx5IGlmIHRoaXMgYnVpbGQgcHJvamVjdCB3aWxsIGJlIHVzZWQgdG8gYnVpbGQgRG9ja2VyXG4gICAqIGltYWdlcywgYW5kIHRoZSBzcGVjaWZpZWQgYnVpbGQgZW52aXJvbm1lbnQgaW1hZ2UgaXMgbm90IG9uZSBwcm92aWRlZCBieVxuICAgKiBBV1MgQ29kZUJ1aWxkIHdpdGggRG9ja2VyIHN1cHBvcnQuIE90aGVyd2lzZSwgYWxsIGFzc29jaWF0ZWQgYnVpbGRzIHRoYXRcbiAgICogYXR0ZW1wdCB0byBpbnRlcmFjdCB3aXRoIHRoZSBEb2NrZXIgZGFlbW9uIHdpbGwgZmFpbC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHByaXZpbGVnZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gcGFzcyB0byBidWlsZFxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBidWlsZHNwZWMsIGFzIGFuIGFsdGVybmF0aXZlIHRvIGEgYnVpbGRzcGVjLnltbCBmaWxlXG4gICAqL1xuICByZWFkb25seSBidWlsZFNwZWM/OiBjYnVpbGQuQnVpbGRTcGVjO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byByZS1ydW4gdGhlIHBpcGVsaW5lIGFmdGVyIHlvdSd2ZSB1cGRhdGVkIGl0LlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSByZXN0YXJ0RXhlY3V0aW9uT25VcGRhdGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIGNvbmN1cnJlbmN5IGxpbWl0IHRlc3QgYW5kIHB1Ymxpc2ggc3RhZ2VzLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgaWYgdGhpcyB2YWx1ZSBpcyAyLCB0aGVuIG9ubHkgdHdvIGFjdGlvbnMgd2lsbCBleGVjdXRlIGNvbmN1cnJlbnRseS5cbiAgICogSWYgdGhpcyB2YWx1ZSBpcyAxLCB0aGUgcGlwZWxpbmUgd2lsbCBub3QgaGF2ZSBhbnkgY29uY3VycmVudCBleGVjdXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbGltaXRcbiAgICovXG4gIHJlYWRvbmx5IGNvbmN1cnJlbmN5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGRlZmF1bHQgZHJ5UnVuIGZvciBhbGwgcHVibGlzaGluZyBzdGVwc1xuICAgKlxuICAgKiAoQ2FuIHN0aWxsIGJlIGNoYW5nZWQgd2hlbiBhZGRpbmcgYSBzdGVwKS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgYnVpbGQgY29tbWl0cyB0aGF0IGFyZSBwdXNoZWQgdG8gdGhpcyByZXBvc2l0b3J5LCBpbmNsdWRpbmcgUFIgYnVpbGRzIG9uIGdpdGh1Yi5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9CdWlsZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGF1dG8tYnVpbGRcbiAgICpcbiAgICogQGRlZmF1bHQgLSAnYXV0b0J1aWxkT3B0aW9ucy5wdWJsaWNMb2dzJyB3aWxsIGJlIHNldCB0byBpdHMgZGVmYXVsdC4gJ2F1dG9CdWlsZE9wdGlvbnMuYnVpbGRzcGVjJyB3aWxsIGJlIGNvbmZpZ3VyZWQgdG8gbWF0Y2ggd2l0aCB0aGVcbiAgICogJ2J1aWxkU3BlYycgcHJvcGVydHkuXG4gICAqL1xuICByZWFkb25seSBhdXRvQnVpbGRPcHRpb25zPzogQXV0b0J1aWxkT3B0aW9ucztcblxuICAvKipcbiAgICogUG9zdCBhIG5vdGlmaWNhdGlvbiB0byB0aGUgZ2l2ZW4gQ2hpbWUgd2ViaG9va3MgaWYgdGhlIHBpcGVsaW5lIGZhaWxzXG4gICAqIEBkZWZhdWx0IC0gbm8gQ2hpbWUgbm90aWZpY2F0aW9ucyBvbiBwaXBlbGluZSBmYWlsdXJlXG4gICAqIEBkZXByZWNhdGVkIC0gdXNlIGBub3RpZnlPbkZhaWx1cmUoKWAgaW5zdGVhZCBpbiBjb21iaW5hdGlvbiB3aXRoIGBQaXBlbGluZU5vdGlmaWNhdGlvbi5jaGltZSgpYC5cbiAgICovXG4gIHJlYWRvbmx5IGNoaW1lRmFpbHVyZVdlYmhvb2tzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBDaGltZSBtZXNzYWdlIHRvIHBvc3RcbiAgICpcbiAgICogQGRlZmF1bHQgLSBBIGRlZmF1bHQgbWVzc2FnZVxuICAgKi9cbiAgcmVhZG9ubHkgY2hpbWVNZXNzYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCdWlsZCB0aW1lb3V0XG4gICAqXG4gICAqIEhvdyBsb25nIHRoZSBidWlsZCBjYW4gdGFrZSBhdCBtYXhpbXVtIChiZWZvcmUgZmFpbGluZyB3aXRoIGFuIGVycm9yKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEdXJhdGlvbi5ob3Vycyg4KVxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRUaW1lb3V0PzogRHVyYXRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVOb3RpZmljYXRpb25CaW5kT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHBpcGVsaW5lOiBQaXBlbGluZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUGlwZWxpbmVOb3RpZmljYXRpb24ge1xuICBiaW5kKHBpcGVsaW5lOiBQaXBlbGluZU5vdGlmaWNhdGlvbkJpbmRPcHRpb25zKTogdm9pZDtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBjb25maWd1cmluZyBhbiBhdXRvIGJ1bXAgZm9yIHRoaXMgcGlwZWxpbmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b0J1bXBPcHRpb25zIGV4dGVuZHMgT21pdDxBdXRvQnVtcFByb3BzLCAncmVwbyc+IHtcbn1cblxuLyoqXG4gKiBEZWZpbmVzIGEgZGVsaXZsaWIgQ0kvQ0QgcGlwZWxpbmUuXG4gKi9cbmV4cG9ydCBjbGFzcyBQaXBlbGluZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyBidWlsZFJvbGU/OiBpYW0uSVJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBmYWlsdXJlQWxhcm06IGNsb3Vkd2F0Y2guQWxhcm07XG4gIHB1YmxpYyByZWFkb25seSBidWlsZE91dHB1dDogY3BpcGVsaW5lLkFydGlmYWN0O1xuICBwdWJsaWMgcmVhZG9ubHkgc291cmNlQXJ0aWZhY3Q6IGNwaXBlbGluZS5BcnRpZmFjdDtcblxuICAvKipcbiAgICogVGhlIHByaW1hcnkgQ29kZUJ1aWxkIHByb2plY3Qgb2YgdGhpcyBwaXBlbGluZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBidWlsZFByb2plY3Q6IGNidWlsZC5JUHJvamVjdDtcblxuICAvKipcbiAgICogVGhlIGF1dG8gYnVpbGQgcHJvamVjdC4gdW5kZWZpbmVkIGlmICdhdXRvQnVpbGQnIGlzIGRpc2FibGVkIGZvciB0aGlzIHBpcGVsaW5lLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF1dG9CdWlsZFByb2plY3Q/OiBjYnVpbGQuUHJvamVjdDtcblxuICAvKlxuICAgKiBUaGUgdW5kZXJseWluZyBDb2RlUGlwZWxpbmUgUGlwZWxpbmUgb2JqZWN0IHRoYXQgbW9kZWxzIHRoaXMgcGlwZWxpbmUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGlwZWxpbmU6IGNwaXBlbGluZS5QaXBlbGluZTtcbiAgcHJpdmF0ZSByZWFkb25seSBicmFuY2g6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBub3RpZnk/OiBzbnMuVG9waWM7XG4gIHByaXZhdGUgc3RhZ2VzOiB7IFtuYW1lOiBzdHJpbmddOiBjcGlwZWxpbmUuSVN0YWdlIH0gPSB7IH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjb25jdXJyZW5jeT86IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSByZXBvOiBJUmVwbztcbiAgcHJpdmF0ZSByZWFkb25seSBkcnlSdW46IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgYnVpbGRFbnZpcm9ubWVudDogY2J1aWxkLkJ1aWxkRW52aXJvbm1lbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgYnVpbGRTcGVjPzogY2J1aWxkLkJ1aWxkU3BlYztcbiAgcHJpdmF0ZSBmaXJzdFB1Ymxpc2hTdGFnZU5hbWU/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBDb25zdHJ1Y3QsIG5hbWU6IHN0cmluZywgcHJvcHM6IFBpcGVsaW5lUHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIG5hbWUpO1xuXG4gICAgdGhpcy5jb25jdXJyZW5jeSA9IHByb3BzLmNvbmN1cnJlbmN5O1xuICAgIHRoaXMucmVwbyA9IHByb3BzLnJlcG87XG4gICAgdGhpcy5kcnlSdW4gPSAhIXByb3BzLmRyeVJ1bjtcblxuICAgIHRoaXMucGlwZWxpbmUgPSBuZXcgY3BpcGVsaW5lLlBpcGVsaW5lKHRoaXMsICdCdWlsZFBpcGVsaW5lJywge1xuICAgICAgcGlwZWxpbmVOYW1lOiBwcm9wcy5waXBlbGluZU5hbWUsXG4gICAgICByZXN0YXJ0RXhlY3V0aW9uT25VcGRhdGU6IHByb3BzLnJlc3RhcnRFeGVjdXRpb25PblVwZGF0ZSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IHByb3BzLnJlc3RhcnRFeGVjdXRpb25PblVwZGF0ZSxcbiAgICB9KTtcblxuICAgIHRoaXMuYnJhbmNoID0gcHJvcHMuYnJhbmNoIHx8ICdtYXN0ZXInO1xuICAgIHRoaXMuc291cmNlQXJ0aWZhY3QgPSBwcm9wcy5yZXBvLmNyZWF0ZVNvdXJjZVN0YWdlKHRoaXMucGlwZWxpbmUsIHRoaXMuYnJhbmNoKTtcblxuICAgIHRoaXMuYnVpbGRFbnZpcm9ubWVudCA9IGNyZWF0ZUJ1aWxkRW52aXJvbm1lbnQocHJvcHMpO1xuICAgIHRoaXMuYnVpbGRTcGVjID0gcHJvcHMuYnVpbGRTcGVjO1xuXG4gICAgbGV0IGJ1aWxkUHJvamVjdE5hbWUgPSBwcm9wcy5idWlsZFByb2plY3ROYW1lO1xuICAgIGlmIChidWlsZFByb2plY3ROYW1lID09PSB1bmRlZmluZWQgJiYgcHJvcHMucGlwZWxpbmVOYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGJ1aWxkUHJvamVjdE5hbWUgPSBgJHtwcm9wcy5waXBlbGluZU5hbWV9LUJ1aWxkYDtcbiAgICB9XG4gICAgdGhpcy5idWlsZFByb2plY3QgPSBuZXcgY2J1aWxkLlBpcGVsaW5lUHJvamVjdCh0aGlzLCAnQnVpbGRQcm9qZWN0Jywge1xuICAgICAgcHJvamVjdE5hbWU6IGJ1aWxkUHJvamVjdE5hbWUsXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5idWlsZEVudmlyb25tZW50LFxuICAgICAgYnVpbGRTcGVjOiB0aGlzLmJ1aWxkU3BlYyxcbiAgICAgIHRpbWVvdXQ6IHByb3BzLmJ1aWxkVGltZW91dCA/PyBEdXJhdGlvbi5ob3Vycyg4KSxcbiAgICAgIHNzbVNlc3Npb25QZXJtaXNzaW9uczogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHRoaXMuYnVpbGRSb2xlID0gdGhpcy5idWlsZFByb2plY3Qucm9sZTtcbiAgICB0aGlzLmJ1aWxkUm9sZSEuYWRkTWFuYWdlZFBvbGljeShpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoJ0FtYXpvbkVsYXN0aWNDb250YWluZXJSZWdpc3RyeVB1YmxpY1JlYWRPbmx5JykpO1xuXG4gICAgY29uc3QgYnVpbGRTdGFnZSA9IHRoaXMuZ2V0T3JDcmVhdGVTdGFnZSgnQnVpbGQnKTtcbiAgICBjb25zdCBidWlsZE91dHB1dCA9IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKTtcbiAgICBidWlsZFN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6ICdCdWlsZCcsXG4gICAgICBwcm9qZWN0OiB0aGlzLmJ1aWxkUHJvamVjdCxcbiAgICAgIGlucHV0OiB0aGlzLnNvdXJjZUFydGlmYWN0LFxuICAgICAgb3V0cHV0czogW2J1aWxkT3V0cHV0XSxcbiAgICB9KSk7XG4gICAgdGhpcy5idWlsZE91dHB1dCA9IGJ1aWxkT3V0cHV0O1xuXG4gICAgaWYgKHByb3BzLm5vdGlmaWNhdGlvbkVtYWlsKSB7XG4gICAgICB0aGlzLm5vdGlmeSA9IG5ldyBzbnMuVG9waWModGhpcywgJ05vdGlmaWNhdGlvbnNUb3BpYycpO1xuICAgICAgdGhpcy5ub3RpZnkuYWRkU3Vic2NyaXB0aW9uKG5ldyBzbnNfc3Vicy5FbWFpbFN1YnNjcmlwdGlvbihwcm9wcy5ub3RpZmljYXRpb25FbWFpbCkpO1xuICAgIH1cblxuICAgIC8vIGFkZCBhIGZhaWx1cmUgYWxhcm0gZm9yIHRoZSBlbnRpcmUgcGlwZWxpbmUuXG4gICAgdGhpcy5mYWlsdXJlQWxhcm0gPSB0aGlzLmFkZEZhaWx1cmVBbGFybShwcm9wcy50aXRsZSk7XG5cbiAgICAvLyBlbWl0IGFuIFNOUyBub3RpZmljYXRpb24gZXZlcnkgdGltZSBidWlsZCBmYWlscy5cbiAgICB0aGlzLmFkZEJ1aWxkRmFpbHVyZU5vdGlmaWNhdGlvbih0aGlzLmJ1aWxkUHJvamVjdCwgYCR7cHJvcHMudGl0bGV9IGJ1aWxkIGZhaWxlZGApO1xuXG4gICAgLy8gQWxzbyBlbWl0IHRvIENoaW1lIHdlYmhvb2tzIGlmIGNvbmZpZ3VyZWRcbiAgICBpZiAocHJvcHMuY2hpbWVGYWlsdXJlV2ViaG9va3MpIHtcbiAgICAgIG5ldyBDaGltZU5vdGlmaWVyKHRoaXMsICdDaGltZU5vdGlmaWVyJywge1xuICAgICAgICBwaXBlbGluZTogdGhpcy5waXBlbGluZSxcbiAgICAgICAgbWVzc2FnZTogcHJvcHMuY2hpbWVNZXNzYWdlLFxuICAgICAgICB3ZWJob29rVXJsczogcHJvcHMuY2hpbWVGYWlsdXJlV2ViaG9va3MsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuYXV0b0J1aWxkKSB7XG4gICAgICB0aGlzLmF1dG9CdWlsZFByb2plY3QgPSB0aGlzLmF1dG9CdWlsZChwcm9wcy5hdXRvQnVpbGRPcHRpb25zKS5wcm9qZWN0O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBub3RpZnlPbkZhaWx1cmUobm90aWZpY2F0aW9uOiBJUGlwZWxpbmVOb3RpZmljYXRpb24pIHtcbiAgICBub3RpZmljYXRpb24uYmluZCh7XG4gICAgICBwaXBlbGluZTogdGhpcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gYWN0aW9uIHRvIHJ1biBhIHNoZWxsIHNjcmlwdCB0byB0aGUgcGlwZWxpbmVcbiAgICpcbiAgICogQHJldHVybiBUaGUgU2hlbGxhYmxlIGFuZCB0aGUgQWN0aW9uIGFkZGVkIHRvIHRoZSBwaXBlbGluZS5cbiAgICovXG4gIHB1YmxpYyBhZGRTaGVsbGFibGUoc3RhZ2VOYW1lOiBzdHJpbmcsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFNoZWxsYWJsZU9wdGlvbnMpOiB7XG4gICAgc2hlbGxhYmxlOiBTaGVsbGFibGU7IGFjdGlvbjogY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uO30ge1xuICAgIGNvbnN0IHN0YWdlID0gdGhpcy5nZXRPckNyZWF0ZVN0YWdlKHN0YWdlTmFtZSk7XG5cbiAgICBjb25zdCBzaCA9IG5ldyBTaGVsbGFibGUodGhpcywgaWQsIG9wdGlvbnMpO1xuICAgIGNvbnN0IGFjdGlvbiA9IHNoLmFkZFRvUGlwZWxpbmUoXG4gICAgICBzdGFnZSxcbiAgICAgIG9wdGlvbnMuYWN0aW9uTmFtZSB8fCBgQWN0aW9uJHtpZH1gLFxuICAgICAgb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IHRoaXMuYnVpbGRPdXRwdXQsXG4gICAgICB0aGlzLmRldGVybWluZVJ1bk9yZGVyRm9yTmV3QWN0aW9uKHN0YWdlKSk7XG5cbiAgICBpZiAob3B0aW9ucy5mYWlsdXJlTm90aWZpY2F0aW9uKSB7XG4gICAgICB0aGlzLmFkZEJ1aWxkRmFpbHVyZU5vdGlmaWNhdGlvbihzaC5wcm9qZWN0LCBvcHRpb25zLmZhaWx1cmVOb3RpZmljYXRpb24pO1xuICAgIH1cblxuICAgIHJldHVybiB7IHNoZWxsYWJsZTogc2gsIGFjdGlvbiB9O1xuICB9XG5cbiAgcHVibGljIGFkZFRlc3QoaWQ6IHN0cmluZywgcHJvcHM6IFNoZWxsYWJsZVByb3BzKToge3NoZWxsYWJsZTogU2hlbGxhYmxlOyBhY3Rpb246IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbn0ge1xuICAgIHJldHVybiB0aGlzLmFkZFNoZWxsYWJsZShURVNUX1NUQUdFX05BTUUsIGlkLCB7XG4gICAgICBhY3Rpb25OYW1lOiBgVGVzdCR7aWR9YCxcbiAgICAgIGZhaWx1cmVOb3RpZmljYXRpb246IGBUZXN0ICR7aWR9IGZhaWxlZGAsXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZW5pZW5jZS9kaXNjb3ZlcnkgbWV0aG9kIHRoYXQgZGVmaW5lcyBhIGNhbmFyeSB0ZXN0IGluIHlvdXIgYWNjb3VudC5cbiAgICogQHBhcmFtIGlkIHRoZSBjb25zdHJ1Y3QgaWRcbiAgICogQHBhcmFtIHByb3BzIGNhbmFyeSBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgYWRkQ2FuYXJ5KGlkOiBzdHJpbmcsIHByb3BzOiBDYW5hcnlQcm9wcykge1xuICAgIHJldHVybiBuZXcgQ2FuYXJ5KHRoaXMsIGBDYW5hcnkke2lkfWAsIHByb3BzKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRQdWJsaXNoKHB1Ymxpc2hlcjogSVB1Ymxpc2hlciwgb3B0aW9uczogQWRkUHVibGlzaE9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHB1Ymxpc2hTdGFnZU5hbWUgPSBvcHRpb25zLnN0YWdlTmFtZSA/PyBQVUJMSVNIX1NUQUdFX05BTUU7XG4gICAgaWYgKCF0aGlzLmZpcnN0UHVibGlzaFN0YWdlTmFtZSkge1xuICAgICAgdGhpcy5maXJzdFB1Ymxpc2hTdGFnZU5hbWUgPSBwdWJsaXNoU3RhZ2VOYW1lO1xuICAgIH1cbiAgICBjb25zdCBzdGFnZSA9IHRoaXMuZ2V0T3JDcmVhdGVTdGFnZShwdWJsaXNoU3RhZ2VOYW1lKTtcblxuICAgIHB1Ymxpc2hlci5hZGRUb1BpcGVsaW5lKHN0YWdlLCBgJHtwdWJsaXNoZXIubm9kZS5pZH1QdWJsaXNoYCwge1xuICAgICAgaW5wdXRBcnRpZmFjdDogb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IHRoaXMuYnVpbGRPdXRwdXQsXG4gICAgICBydW5PcmRlcjogdGhpcy5kZXRlcm1pbmVSdW5PcmRlckZvck5ld0FjdGlvbihzdGFnZSksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGNoYW5nZSBjb250cm9sIHBvbGljeSB0byBibG9jayB0cmFuc2l0aW9ucyBpbnRvIHRoZSBwdWJsaXNoIHN0YWdlIGR1cmluZyBjZXJ0YWluIHRpbWUgd2luZG93cy5cbiAgICogQHBhcmFtIG9wdGlvbnMgdGhlIG9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSBjaGFuZ2UgY29udHJvbCBwb2xpY3kuXG4gICAqL1xuICBwdWJsaWMgYWRkQ2hhbmdlQ29udHJvbChvcHRpb25zOiBBZGRDaGFuZ2VDb250cm9sT3B0aW9ucyA9IHsgfSk6IENoYW5nZUNvbnRyb2xsZXIge1xuICAgIGNvbnN0IHB1Ymxpc2hTdGFnZSA9IHRoaXMuZ2V0U3RhZ2UodGhpcy5maXJzdFB1Ymxpc2hTdGFnZU5hbWUgPz8gUFVCTElTSF9TVEFHRV9OQU1FKTtcbiAgICBpZiAoIXB1Ymxpc2hTdGFnZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGlzIHBpcGVsaW5lIGRvZXMgbm90IGhhdmUgYSAke1BVQkxJU0hfU1RBR0VfTkFNRX0gc3RhZ2UgeWV0LiBBZGQgb25lIGZpcnN0LmApO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgQ2hhbmdlQ29udHJvbGxlcih0aGlzLCAnQ2hhbmdlQ29udHJvbGxlcicsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBwaXBlbGluZVN0YWdlOiBwdWJsaXNoU3RhZ2UsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcHVibGlzaFRvTnBtKG9wdGlvbnM6IHB1Ymxpc2hpbmcuUHVibGlzaFRvTnBtUHJvamVjdFByb3BzICYgQWRkUHVibGlzaE9wdGlvbnMpIHtcbiAgICB0aGlzLmFkZFB1Ymxpc2gobmV3IHB1Ymxpc2hpbmcuUHVibGlzaFRvTnBtUHJvamVjdCh0aGlzLCAnTnBtJywge1xuICAgICAgZHJ5UnVuOiB0aGlzLmRyeVJ1bixcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSksIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIHB1Ymxpc2hUb01hdmVuKG9wdGlvbnM6IHB1Ymxpc2hpbmcuUHVibGlzaFRvTWF2ZW5Qcm9qZWN0UHJvcHMgJiBBZGRQdWJsaXNoT3B0aW9ucykge1xuICAgIHRoaXMuYWRkUHVibGlzaChuZXcgcHVibGlzaGluZy5QdWJsaXNoVG9NYXZlblByb2plY3QodGhpcywgJ01hdmVuJywge1xuICAgICAgZHJ5UnVuOiB0aGlzLmRyeVJ1bixcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSksIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIHB1Ymxpc2hUb051R2V0KG9wdGlvbnM6IHB1Ymxpc2hpbmcuUHVibGlzaFRvTnVHZXRQcm9qZWN0UHJvcHMgJiBBZGRQdWJsaXNoT3B0aW9ucykge1xuICAgIHRoaXMuYWRkUHVibGlzaChuZXcgcHVibGlzaGluZy5QdWJsaXNoVG9OdUdldFByb2plY3QodGhpcywgJ051R2V0Jywge1xuICAgICAgZHJ5UnVuOiB0aGlzLmRyeVJ1bixcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSksIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIHB1Ymxpc2hUb0dpdEh1YlBhZ2VzKG9wdGlvbnM6IHB1Ymxpc2hpbmcuUHVibGlzaERvY3NUb0dpdEh1YlByb2plY3RQcm9wcyAmIEFkZFB1Ymxpc2hPcHRpb25zKSB7XG4gICAgdGhpcy5hZGRQdWJsaXNoKG5ldyBwdWJsaXNoaW5nLlB1Ymxpc2hEb2NzVG9HaXRIdWJQcm9qZWN0KHRoaXMsICdHaXRIdWJQYWdlcycsIHtcbiAgICAgIGRyeVJ1bjogdGhpcy5kcnlSdW4sXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pLCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBwdWJsaXNoVG9HaXRIdWIob3B0aW9uczogcHVibGlzaGluZy5QdWJsaXNoVG9HaXRIdWJQcm9wcyAmIEFkZFB1Ymxpc2hPcHRpb25zKSB7XG4gICAgdGhpcy5hZGRQdWJsaXNoKG5ldyBwdWJsaXNoaW5nLlB1Ymxpc2hUb0dpdEh1Yih0aGlzLCAnR2l0SHViJywge1xuICAgICAgZHJ5UnVuOiB0aGlzLmRyeVJ1bixcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSksIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIHB1Ymxpc2hUb1B5UEkob3B0aW9uczogcHVibGlzaGluZy5QdWJsaXNoVG9QeVBpUHJvcHMgJiBBZGRQdWJsaXNoT3B0aW9ucykge1xuICAgIHRoaXMuYWRkUHVibGlzaChuZXcgcHVibGlzaGluZy5QdWJsaXNoVG9QeVBpKHRoaXMsICdQeVBJJywge1xuICAgICAgZHJ5UnVuOiB0aGlzLmRyeVJ1bixcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSksIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIHB1Ymxpc2hUb1MzKGlkOiBzdHJpbmcsIG9wdGlvbnM6IHB1Ymxpc2hpbmcuUHVibGlzaFRvUzNQcm9wcyAmIEFkZFB1Ymxpc2hPcHRpb25zKSB7XG4gICAgdGhpcy5hZGRQdWJsaXNoKG5ldyBwdWJsaXNoaW5nLlB1Ymxpc2hUb1MzKHRoaXMsIGlkLCB7XG4gICAgICBkcnlSdW46IHRoaXMuZHJ5UnVuLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KSwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogUHVibGlzaCBHb2xhbmcgY29kZSBmcm9tIGBnb2AgZGlyZWN0b3J5IGluIGJ1aWxkIGFydGlmYWN0IHRvIGEgR2l0SHViIHJlcG9zaXRvcnkuXG4gICAqL1xuICBwdWJsaWMgcHVibGlzaFRvR29sYW5nKG9wdGlvbnM6IHB1Ymxpc2hpbmcuUHVibGlzaFRvR29sYW5nUHJvcHMpIHtcbiAgICB0aGlzLmFkZFB1Ymxpc2gobmV3IHB1Ymxpc2hpbmcuUHVibGlzaFRvR29sYW5nKHRoaXMsICdHb2xhbmcnLCB7XG4gICAgICBkcnlSdW46IHRoaXMuZHJ5UnVuLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyBhdXRvbWF0aWMgYnVtcHMgZm9yIHRoZSBzb3VyY2UgcmVwby5cbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgYXV0byBidW1wIChzZWUgQXV0b0J1bXBPcHRpb25zIGZvciBkZXNjcmlwdGlvbiBvZiBkZWZhdWx0cylcbiAgICovXG4gIHB1YmxpYyBhdXRvQnVtcChvcHRpb25zPzogQXV0b0J1bXBPcHRpb25zKTogQXV0b0J1bXAge1xuICAgIGlmICghV3JpdGFibGVHaXRIdWJSZXBvLmlzV3JpdGFibGVHaXRIdWJSZXBvKHRoaXMucmVwbykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignXCJyZXBvXCIgbXVzdCBiZSBhIFdyaXRhYmxlR2l0SHViUmVwbyBpbiBvcmRlciB0byBlbmFibGUgYXV0by1idW1wJyk7XG4gICAgfVxuXG4gICAgY29uc3QgYXV0b0J1bXAgPSBuZXcgQXV0b0J1bXAodGhpcywgJ0F1dG9CdW1wJywge1xuICAgICAgcmVwbzogdGhpcy5yZXBvLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcblxuICAgIHJldHVybiBhdXRvQnVtcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIGF1dG9tYXRpYyBtZXJnZSBiYWNrcyBmb3IgdGhlIHNvdXJjZSByZXBvLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBhdXRvIGJ1bXAgKHNlZSBBdXRvTWVyZ2VCYWNrUGlwZWxpbmVPcHRpb25zIGZvciBkZXNjcmlwdGlvbiBvZiBkZWZhdWx0cylcbiAgICovXG4gIHB1YmxpYyBhdXRvTWVyZ2VCYWNrKG9wdGlvbnM/OiBBdXRvTWVyZ2VCYWNrUGlwZWxpbmVPcHRpb25zKSB7XG4gICAgaWYgKCFXcml0YWJsZUdpdEh1YlJlcG8uaXNXcml0YWJsZUdpdEh1YlJlcG8odGhpcy5yZXBvKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdcInJlcG9cIiBtdXN0IGJlIGEgV3JpdGFibGVHaXRIdWJSZXBvIGluIG9yZGVyIHRvIGVuYWJsZSBhdXRvLW1lcmdlLWJhY2snKTtcbiAgICB9XG5cbiAgICBjb25zdCBtZXJnZUJhY2sgPSBuZXcgQXV0b01lcmdlQmFjayh0aGlzLCAnTWVyZ2VCYWNrJywge1xuICAgICAgcmVwbzogdGhpcy5yZXBvLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcblxuICAgIGlmIChvcHRpb25zPy5zdGFnZSkge1xuXG4gICAgICBjb25zdCBhZnRlclN0YWdlID0gdGhpcy5nZXRTdGFnZShvcHRpb25zLnN0YWdlLmFmdGVyKTtcblxuICAgICAgaWYgKCFhZnRlclN0YWdlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJ29wdGlvbnMuc3RhZ2UuYWZ0ZXInIG11c3QgYmUgY29uZmlndXJlZCB0byBhbiBleGlzdGluZyBzdGFnZTogJHtvcHRpb25zLnN0YWdlLmFmdGVyfWApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzdGFnZSA9IHRoaXMuZ2V0T3JDcmVhdGVTdGFnZShvcHRpb25zLnN0YWdlLm5hbWUgPz8gJ01lcmdlQmFjaycsIHsganVzdEFmdGVyOiBhZnRlclN0YWdlIH0pO1xuICAgICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgICBhY3Rpb25OYW1lOiAnQ3JlYXRlTWVyZ2VCYWNrUHVsbFJlcXVlc3QnLFxuICAgICAgICBwcm9qZWN0OiBtZXJnZUJhY2sucHIucHJvamVjdCxcbiAgICAgICAgaW5wdXQ6IHRoaXMuc291cmNlQXJ0aWZhY3QsXG4gICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgYXV0b21hdGljIGJ1aWxkcyBvZiBwdWxsIHJlcXVlc3RzIGluIHRoZSBHaXRodWIgcmVwb3NpdG9yeSBhbmQgcG9zdHMgdGhlXG4gICAqIHJlc3VsdHMgYmFjayBhcyBhIGNvbW1lbnQgd2l0aCBhIHB1YmxpYyBsaW5rIHRvIHRoZSBidWlsZCBsb2dzLlxuICAgKi9cbiAgcHVibGljIGF1dG9CdWlsZChvcHRpb25zOiBBdXRvQnVpbGRPcHRpb25zID0geyB9KTogQXV0b0J1aWxkIHtcbiAgICByZXR1cm4gbmV3IEF1dG9CdWlsZCh0aGlzLCAnQXV0b0J1aWxkJywge1xuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuYnVpbGRFbnZpcm9ubWVudCxcbiAgICAgIHJlcG86IHRoaXMucmVwbyxcbiAgICAgIGJ1aWxkU3BlYzogb3B0aW9ucy5idWlsZFNwZWMgfHwgdGhpcy5idWlsZFNwZWMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBtZXRyaWMgdGhhdCB0cmFja3MgcGlwZWxpbmUgZmFpbHVyZXMuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljRmFpbHVyZXMob3B0aW9uczogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWMge1xuICAgIHJldHVybiBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNfTkFNRVNQQUNFLFxuICAgICAgbWV0cmljTmFtZTogRkFJTFVSRV9NRVRSSUNfTkFNRSxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgUGlwZWxpbmU6IHRoaXMucGlwZWxpbmUucGlwZWxpbmVOYW1lLFxuICAgICAgfSxcbiAgICAgIHN0YXRpc3RpYzogJ1N1bScsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBtZXRyaWNzIHRoYXQgdHJhY2sgZmFpbHVyZSBvZiBlYWNoIGFjdGlvbiB3aXRoaW4gdGhlIHBpcGVsaW5lLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0FjdGlvbkZhaWx1cmVzKG9wdGlvbnM6IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljW10ge1xuICAgIHJldHVybiBmbGF0TWFwKHRoaXMucGlwZWxpbmUuc3RhZ2VzLCBzdGFnZSA9PiBzdGFnZS5hY3Rpb25zLm1hcChhY3Rpb24gPT4ge1xuICAgICAgcmV0dXJuIG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICAgIG5hbWVzcGFjZTogTUVUUklDX05BTUVTUEFDRSxcbiAgICAgICAgbWV0cmljTmFtZTogRkFJTFVSRV9NRVRSSUNfTkFNRSxcbiAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgIFBpcGVsaW5lOiB0aGlzLnBpcGVsaW5lLnBpcGVsaW5lTmFtZSxcbiAgICAgICAgICBBY3Rpb246IGFjdGlvbi5hY3Rpb25Qcm9wZXJ0aWVzLmFjdGlvbk5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXRpc3RpYzogJ1N1bScsXG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBwdWJsaWMgYWRkTWFudWFsQXBwcm92YWxUb1N0YWdlKHN0YWdlTmFtZTogc3RyaW5nLCBwcm9wcz86IGNwaXBlbGluZV9hY3Rpb25zLk1hbnVhbEFwcHJvdmFsQWN0aW9uUHJvcHMpIHtcbiAgICBjb25zdCBzdGFnZSA9IHRoaXMuZ2V0T3JDcmVhdGVTdGFnZShzdGFnZU5hbWUpO1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuTWFudWFsQXBwcm92YWxBY3Rpb24ocHJvcHMgPz8ge1xuICAgICAgYWN0aW9uTmFtZTogJ01hbnVhbEFwcHJvdmFsQWN0aW9uJyxcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGFkZEZhaWx1cmVBbGFybSh0aXRsZT86IHN0cmluZyk6IGNsb3Vkd2F0Y2guQWxhcm0ge1xuICAgIHJldHVybiBuZXcgUGlwZWxpbmVXYXRjaGVyKHRoaXMsICdQaXBlbGluZVdhdGNoZXInLCB7XG4gICAgICBwaXBlbGluZTogdGhpcy5waXBlbGluZSxcbiAgICAgIG1ldHJpY05hbWVzcGFjZTogTUVUUklDX05BTUVTUEFDRSxcbiAgICAgIGZhaWx1cmVNZXRyaWNOYW1lOiBGQUlMVVJFX01FVFJJQ19OQU1FLFxuICAgICAgdGl0bGUsXG4gICAgfSkuYWxhcm07XG4gIH1cblxuICBwcml2YXRlIGFkZEJ1aWxkRmFpbHVyZU5vdGlmaWNhdGlvbihidWlsZFByb2plY3Q6IGNidWlsZC5JUHJvamVjdCwgbWVzc2FnZTogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLm5vdGlmeSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGJ1aWxkUHJvamVjdC5vbkJ1aWxkRmFpbGVkKCdPbkJ1aWxkRmFpbGVkJykuYWRkVGFyZ2V0KG5ldyBldmVudHNfdGFyZ2V0cy5TbnNUb3BpYyh0aGlzLm5vdGlmeSwge1xuICAgICAgbWVzc2FnZTogZXZlbnRzLlJ1bGVUYXJnZXRJbnB1dC5mcm9tVGV4dChtZXNzYWdlKSxcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgdGhlIHN0YWdlIG9yIHVuZGVmaW5lZCBpZiB0aGUgc3RhZ2UgZG9lc24ndCBleGlzdFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTdGFnZShzdGFnZU5hbWU6IHN0cmluZyk6IGNwaXBlbGluZS5JU3RhZ2UgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnN0YWdlc1tzdGFnZU5hbWVdO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPckNyZWF0ZVN0YWdlKHN0YWdlTmFtZTogc3RyaW5nLCBwbGFjZW1lbnQ/OiBjcGlwZWxpbmUuU3RhZ2VQbGFjZW1lbnQpOiBjcGlwZWxpbmUuSVN0YWdlIHtcbiAgICAvLyBvdGhlcndpc2UsIGdyb3VwIGFsbCBhY3Rpb25zIHNvIHRoZXkgcnVuIGNvbmN1cnJlbnRseS5cbiAgICBsZXQgc3RhZ2UgPSB0aGlzLmdldFN0YWdlKHN0YWdlTmFtZSk7XG4gICAgaWYgKCFzdGFnZSkge1xuICAgICAgc3RhZ2UgPSB0aGlzLnBpcGVsaW5lLmFkZFN0YWdlKHtcbiAgICAgICAgc3RhZ2VOYW1lLFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuc3RhZ2VzW3N0YWdlTmFtZV0gPSBzdGFnZTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YWdlO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXRlcm1pbmVSdW5PcmRlckZvck5ld0FjdGlvbihzdGFnZTogY3BpcGVsaW5lLklTdGFnZSk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGRldGVybWluZVJ1bk9yZGVyKHN0YWdlLmFjdGlvbnMubGVuZ3RoLCB0aGlzLmNvbmN1cnJlbmN5KTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQdWJsaXNoZXIgZXh0ZW5kcyBJQ29uc3RydWN0IHtcbiAgYWRkVG9QaXBlbGluZShzdGFnZTogY3BpcGVsaW5lLklTdGFnZSwgaWQ6IHN0cmluZywgb3B0aW9uczogQWRkVG9QaXBlbGluZU9wdGlvbnMpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZFRvUGlwZWxpbmVPcHRpb25zIHtcbiAgaW5wdXRBcnRpZmFjdD86IGNwaXBlbGluZS5BcnRpZmFjdDtcbiAgcnVuT3JkZXI/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkQ2hhbmdlQ29udHJvbE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGJ1Y2tldCBpbiB3aGljaCB0aGUgQ2hhbmdlQ29udHJvbCBpQ2FsIGRvY3VtZW50IHdpbGwgYmUgc3RvcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBhIG5ldyBidWNrZXQgd2lsbCBiZSBwcm92aXNpb25lZC5cbiAgICovXG4gIGNoYW5nZUNvbnRyb2xCdWNrZXQ/OiBzMy5JQnVja2V0O1xuXG4gIC8qKlxuICAgKiBUaGUga2V5IGluIHdoaWNoIHRoZSBpQ2FsIGZpbGxlIHdpbGwgYmUgc3RvcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnY2hhbmdlLWNvbnRyb2wuaWNhbCdcbiAgICovXG4gIGNoYW5nZUNvbnRyb2xPYmplY3RLZXk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNjaGVkdWxlIHRvIHJ1biB0aGUgY2hhbmdlIGNvbnRyb2xsZXIgb25cbiAgICpcbiAgICogQGRlZmF1bHQgcmF0ZSgxNSBtaW51dGVzKVxuICAgKi9cbiAgc2NoZWR1bGVFeHByZXNzaW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZFB1Ymxpc2hPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBpbnB1dCBhcnRpZmFjdCB0byB1c2VcbiAgICpcbiAgICogQGRlZmF1bHQgQnVpbGQgb3V0cHV0IGFydGlmYWN0XG4gICAqL1xuICBpbnB1dEFydGlmYWN0PzogY3BpcGVsaW5lLkFydGlmYWN0O1xuXG4gIC8qKlxuICAgKiBTdGFnZSBuYW1lIHRvIGFkZCBwdWJsaXNoaW5nIGpvYiB0b1xuICAgKlxuICAgKiBCeSBkZWZhdWx0LCB0aGlzIHdpbGwgYmUgdGhlIHN0YWdlIG5hbWUgYCdQdWJsaXNoJ2AsIGJ1dCBpZiB5b3Ugd2FudCB0b1xuICAgKiBzZXBhcmF0ZSBvdXQgdGhlIHB1Ymxpc2hpbmcgYWN0aW9ucyBpbnRvIGRpZmZlcmVudCBzdGFnZXMgKGluIG9yZGVyIHRvXG4gICAqIGJsb2NrL3VuYmxvY2sgdGhlbSBzZXBhcmF0ZWx5IGZvciBleGFtcGxlKSB5b3UgY2FuIGNoYW5nZSB0aGlzLlxuICAgKlxuICAgKiBTdGFnZXMgYXBwZWFyIGluIHRoZSBwaXBlbGluZSBpbiB0aGUgb3JkZXIgdGhleSBhcmUgcmVmZXJlbmNlZCBmb3JcbiAgICogdGhlIGZpcnN0IHRpbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiUHVibGlzaFwiXG4gICAqL1xuICByZWFkb25seSBzdGFnZU5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkU2hlbGxhYmxlT3B0aW9ucyBleHRlbmRzIFNoZWxsYWJsZVByb3BzIHtcbiAgLyoqXG4gICAqIFN0cmluZyB0byB1c2UgYXMgYWN0aW9uIG5hbWVcbiAgICpcbiAgICogQGRlZmF1bHQgSWRcbiAgICovXG4gIGFjdGlvbk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1lc3NhZ2UgdG8gdXNlIGFzIGZhaWx1cmUgbm90aWZpY2F0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIG5vdGlmaWNhdGlvblxuICAgKi9cbiAgZmFpbHVyZU5vdGlmaWNhdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGlucHV0IGFydGlmYWN0IHRvIHVzZVxuICAgKlxuICAgKiBAZGVmYXVsdCBCdWlsZCBvdXRwdXQgYXJ0aWZhY3RcbiAgICovXG4gIGlucHV0QXJ0aWZhY3Q/OiBjcGlwZWxpbmUuQXJ0aWZhY3Q7XG59XG4iXX0=
package/lib/publishing.js CHANGED
@@ -53,7 +53,7 @@ class PublishToMavenProject extends constructs_1.Construct {
53
53
  super(parent, id);
54
54
  const forReal = props.dryRun === undefined ? 'false' : (!props.dryRun).toString();
55
55
  const shellable = new shellable_1.Shellable(this, 'Default', {
56
- platform: new shellable_1.LinuxPlatform((_a = props.buildImage) !== null && _a !== void 0 ? _a : aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.fromDockerRegistry('jsii/superchain:1-buster-slim')),
56
+ platform: new shellable_1.LinuxPlatform((_a = props.buildImage) !== null && _a !== void 0 ? _a : aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.fromDockerRegistry('public.ecr.aws/jsii/superchain:1-buster-slim-node18')),
57
57
  scriptDirectory: path.join(__dirname, 'publishing', 'maven'),
58
58
  entrypoint: 'publish.sh',
59
59
  environment: {
@@ -91,7 +91,7 @@ class PublishToNpmProject extends constructs_1.Construct {
91
91
  const forReal = props.dryRun === undefined ? 'false' : (!props.dryRun).toString();
92
92
  const access = (_a = props.access) !== null && _a !== void 0 ? _a : NpmAccess.PUBLIC;
93
93
  const shellable = new shellable_1.Shellable(this, 'Default', {
94
- platform: new shellable_1.LinuxPlatform(aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.STANDARD_6_0),
94
+ platform: new shellable_1.LinuxPlatform(aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.STANDARD_7_0),
95
95
  scriptDirectory: path.join(__dirname, 'publishing', 'npm'),
96
96
  entrypoint: 'publish.sh',
97
97
  environment: {
@@ -137,7 +137,7 @@ class PublishToNuGetProject extends constructs_1.Construct {
137
137
  }
138
138
  environment.NUGET_SECRET_ID = props.nugetApiKeySecret.secretArn;
139
139
  const shellable = new shellable_1.Shellable(this, 'Default', {
140
- platform: new shellable_1.LinuxPlatform((_a = props.buildImage) !== null && _a !== void 0 ? _a : aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.fromDockerRegistry('jsii/superchain:1-buster-slim')),
140
+ platform: new shellable_1.LinuxPlatform((_a = props.buildImage) !== null && _a !== void 0 ? _a : aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.fromDockerRegistry('public.ecr.aws/jsii/superchain:1-buster-slim-node18')),
141
141
  scriptDirectory: path.join(__dirname, 'publishing', 'nuget'),
142
142
  entrypoint: 'publish.sh',
143
143
  environment,
@@ -178,7 +178,7 @@ class PublishDocsToGitHubProject extends constructs_1.Construct {
178
178
  super(parent, id);
179
179
  const forReal = props.dryRun === undefined ? 'false' : (!props.dryRun).toString();
180
180
  const shellable = new shellable_1.Shellable(this, 'Default', {
181
- platform: new shellable_1.LinuxPlatform(aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.STANDARD_6_0),
181
+ platform: new shellable_1.LinuxPlatform(aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.STANDARD_7_0),
182
182
  scriptDirectory: path.join(__dirname, 'publishing', 'docs'),
183
183
  entrypoint: 'publish.sh',
184
184
  environment: {
@@ -218,7 +218,7 @@ class PublishToGitHub extends constructs_1.Construct {
218
218
  throw new Error('both `releaseNotesFileName` and `changelogFileName` cannot be specified; use one or the other');
219
219
  }
220
220
  const shellable = new shellable_1.Shellable(this, 'Default', {
221
- platform: new shellable_1.LinuxPlatform(aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.STANDARD_6_0),
221
+ platform: new shellable_1.LinuxPlatform(aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.STANDARD_7_0),
222
222
  scriptDirectory: path.join(__dirname, 'publishing', 'github'),
223
223
  entrypoint: 'publish.sh',
224
224
  environment: (0, util_1.noUndefined)({
@@ -260,7 +260,7 @@ class PublishToS3 extends constructs_1.Construct {
260
260
  super(scope, id);
261
261
  const forReal = props.dryRun === undefined ? 'false' : (!props.dryRun).toString();
262
262
  const shellable = new shellable_1.Shellable(this, 'Default', {
263
- platform: new shellable_1.LinuxPlatform(aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.STANDARD_6_0),
263
+ platform: new shellable_1.LinuxPlatform(aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.STANDARD_7_0),
264
264
  scriptDirectory: path.join(__dirname, 'publishing', 's3'),
265
265
  entrypoint: 'publish.sh',
266
266
  environment: {
@@ -291,7 +291,7 @@ class PublishToPyPi extends constructs_1.Construct {
291
291
  super(scope, id);
292
292
  const forReal = props.dryRun === undefined ? 'false' : (!props.dryRun).toString();
293
293
  const shellable = new shellable_1.Shellable(this, 'Default', {
294
- platform: new shellable_1.LinuxPlatform(aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.STANDARD_6_0),
294
+ platform: new shellable_1.LinuxPlatform(aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.STANDARD_7_0),
295
295
  scriptDirectory: path.join(__dirname, 'publishing', 'pypi'),
296
296
  entrypoint: 'publish.sh',
297
297
  environment: {
@@ -324,7 +324,7 @@ class PublishToGolang extends constructs_1.Construct {
324
324
  super(scope, id);
325
325
  const dryRun = (_a = props.dryRun) !== null && _a !== void 0 ? _a : false;
326
326
  const shellable = new shellable_1.Shellable(this, 'Default', {
327
- platform: new shellable_1.LinuxPlatform(aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.STANDARD_6_0),
327
+ platform: new shellable_1.LinuxPlatform(aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.STANDARD_7_0),
328
328
  scriptDirectory: path.join(__dirname, 'publishing', 'golang'),
329
329
  entrypoint: 'publish.sh',
330
330
  environment: {
@@ -353,4 +353,4 @@ class PublishToGolang extends constructs_1.Construct {
353
353
  }
354
354
  }
355
355
  exports.PublishToGolang = PublishToGolang;
356
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInB1Ymxpc2hpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0IsNkNBT3FCO0FBQ3JCLDJDQUF1QztBQUd2QywyREFBNkM7QUFHN0MsMkNBQXVEO0FBQ3ZELGlDQUFxQztBQUVyQzs7R0FFRztBQUNILElBQVksU0FVWDtBQVZELFdBQVksU0FBUztJQUNuQjs7T0FFRztJQUNILDhCQUFpQixDQUFBO0lBRWpCOztPQUVHO0lBQ0gsc0NBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQVZXLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBVXBCO0FBeUNEOztHQUVHO0FBQ0gsTUFBYSxxQkFBc0IsU0FBUSxzQkFBUztJQUlsRCxZQUFZLE1BQWlCLEVBQUUsRUFBVSxFQUFFLEtBQWlDOztRQUMxRSxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWxCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFbEYsTUFBTSxTQUFTLEdBQUcsSUFBSSxxQkFBUyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDL0MsUUFBUSxFQUFFLElBQUkseUJBQWEsQ0FBQyxNQUFBLEtBQUssQ0FBQyxVQUFVLG1DQUFJLDJCQUFNLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLCtCQUErQixDQUFDLENBQUM7WUFDM0gsZUFBZSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxPQUFPLENBQUM7WUFDNUQsVUFBVSxFQUFFLFlBQVk7WUFDeEIsV0FBVyxFQUFFO2dCQUNYLGtCQUFrQixFQUFFLEtBQUssQ0FB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UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO0lBQ25DLENBQUM7SUFFTSxhQUFhLENBQUMsS0FBdUIsRUFBRSxFQUFVLEVBQUUsT0FBNkI7UUFDckYsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLHNDQUFpQixDQUFDLGVBQWUsQ0FBQztZQUNwRCxVQUFVLEVBQUUsRUFBRTtZQUNkLEtBQUssRUFBRSxPQUFPLENBQUMsYUFBYSxJQUFJLElBQUksOEJBQVMsQ0FBQyxRQUFRLEVBQUU7WUFDeEQsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQzFCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7Q0FDRjtBQXhDRCwwQ0F3Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtcbiAgU3RhY2ssXG4gIGF3c19jb2RlYnVpbGQgYXMgY2J1aWxkLFxuICBhd3NfY29kZXBpcGVsaW5lIGFzIGNwaXBlbGluZSxcbiAgYXdzX2NvZGVwaXBlbGluZV9hY3Rpb25zIGFzIGNwaXBlbGluZV9hY3Rpb25zLFxuICBhd3NfaWFtIGFzIGlhbSxcbiAgYXdzX3MzIGFzIHMzLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElDb2RlU2lnbmluZ0NlcnRpZmljYXRlIH0gZnJvbSAnLi9jb2RlLXNpZ25pbmcnO1xuaW1wb3J0IHsgT3BlblBHUEtleVBhaXIgfSBmcm9tICcuL29wZW4tcGdwLWtleS1wYWlyJztcbmltcG9ydCAqIGFzIHBlcm1pc3Npb25zIGZyb20gJy4vcGVybWlzc2lvbnMnO1xuaW1wb3J0IHsgQWRkVG9QaXBlbGluZU9wdGlvbnMsIElQdWJsaXNoZXIgfSBmcm9tICcuL3BpcGVsaW5lJztcbmltcG9ydCB7IFdyaXRhYmxlR2l0SHViUmVwbyB9IGZyb20gJy4vcmVwbyc7XG5pbXBvcnQgeyBMaW51eFBsYXRmb3JtLCBTaGVsbGFibGUgfSBmcm9tICcuL3NoZWxsYWJsZSc7XG5pbXBvcnQgeyBub1VuZGVmaW5lZCB9IGZyb20gJy4vdXRpbCc7XG5cbi8qKlxuICogVHlwZSBvZiBhY2Nlc3MgcGVybWlzc2lvbnMgdG8gcmVxdWVzdCBmcm9tIG5wbWpzLlxuICovXG5leHBvcnQgZW51bSBOcG1BY2Nlc3Mge1xuICAvKipcbiAgICogTm8gYWNjZXNzIHJlc3RyaWN0aW9uLiBOb3RlIHRoYXQgdW5zY29wZWQgcGFja2FnZXMgbXVzdCBhbHdheXMgYmUgcHVibGljLlxuICAgKi9cbiAgUFVCTElDID0gJ3B1YmxpYycsXG5cbiAgLyoqXG4gICAqIExpbWl0IGFjY2VzcyB0byB3aGl0ZWxpc3RlZCBucG1qcyB1c2Vycy5cbiAgICovXG4gIFJFU1RSSUNURUQgPSAncmVzdHJpY3RlZCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGlzaFRvTWF2ZW5Qcm9qZWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIHNpZ25pbmcga2V5IGl0c2VsZlxuICAgKi9cbiAgc2lnbmluZ0tleTogT3BlblBHUEtleVBhaXI7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgc29uYXR5cGUgc3RhZ2luZyBwcm9maWxlIChlLmcuIFwiNjhhMDUzNjMwODMxNzRcIikuXG4gICAqL1xuICBzdGFnaW5nUHJvZmlsZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElkZW50aWZpZXIgb2YgdGhlIHNlY3JldCB0aGF0IGNvbnRhaW5zIHRoZSBNYXZlbiBsb2dpblxuICAgKi9cbiAgbWF2ZW5Mb2dpblNlY3JldDogcGVybWlzc2lvbnMuRXh0ZXJuYWxTZWNyZXQ7XG5cbiAgLyoqXG4gICAqIElmIHRydWUgKGRlZmF1bHQpIHBlcmZvcm1zIGEgZHJ5LXJ1biBvbmx5IGluc3RlYWQgb2YgYWN0dWFsbHkgcHVibGlzaGluZy5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIE1hdmVuIHB1Ymxpc2hpbmcgZW5kcG9pbnQgdG8gYmUgdXNlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJodHRwczovL29zcy5zb25hdHlwZS5vcmdcIlxuICAgKi9cbiAgbWF2ZW5FbmRwb2ludD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGJ1aWxkIGltYWdlIHRvIGRvIHRoZSBwdWJsaXNoaW5nIGluXG4gICAqXG4gICAqIE5lZWRzIHRvIGhhdmUgTWF2ZW4gcHJlaW5zdGFsbGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBMYXRlc3Qgc3VwZXJjaGFpblxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRJbWFnZT86IGNidWlsZC5JQnVpbGRJbWFnZTtcbn1cblxuLyoqXG4gKiBDb2RlQnVpbGQgcHJvamVjdCB0aGF0IHdpbGwgcHVibGlzaCBhbGwgcGFja2FnZXMgaW4gYSByZWxlYXNlIGJ1bmRsZSB0byBNYXZlblxuICovXG5leHBvcnQgY2xhc3MgUHVibGlzaFRvTWF2ZW5Qcm9qZWN0IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVB1Ymxpc2hlciB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hUb01hdmVuUHJvamVjdFByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG5cbiAgICBjb25zdCBmb3JSZWFsID0gcHJvcHMuZHJ5UnVuID09PSB1bmRlZmluZWQgPyAnZmFsc2UnIDogKCFwcm9wcy5kcnlSdW4pLnRvU3RyaW5nKCk7XG5cbiAgICBjb25zdCBzaGVsbGFibGUgPSBuZXcgU2hlbGxhYmxlKHRoaXMsICdEZWZhdWx0Jywge1xuICAgICAgcGxhdGZvcm06IG5ldyBMaW51eFBsYXRmb3JtKHByb3BzLmJ1aWxkSW1hZ2UgPz8gY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5mcm9tRG9ja2VyUmVnaXN0cnkoJ2pzaWkvc3VwZXJjaGFpbjoxLWJ1c3Rlci1zbGltJykpLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICdtYXZlbicpLFxuICAgICAgZW50cnlwb2ludDogJ3B1Ymxpc2guc2gnLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgU1RBR0lOR19QUk9GSUxFX0lEOiBwcm9wcy5zdGFnaW5nUHJvZmlsZUlkLFxuICAgICAgICBTSUdOSU5HX0tFWV9BUk46IHByb3BzLnNpZ25pbmdLZXkuY3JlZGVudGlhbC5zZWNyZXRBcm4sXG4gICAgICAgIEZPUl9SRUFMOiBmb3JSZWFsLFxuICAgICAgICBNQVZFTl9MT0dJTl9TRUNSRVQ6IHByb3BzLm1hdmVuTG9naW5TZWNyZXQuc2VjcmV0QXJuLFxuICAgICAgICBNQVZFTl9FTkRQT0lOVDogcHJvcHMubWF2ZW5FbmRwb2ludCB8fCAnaHR0cHM6Ly9vc3Muc29uYXR5cGUub3JnJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIHBlcm1pc3Npb25zLmdyYW50U2VjcmV0UmVhZChwcm9wcy5tYXZlbkxvZ2luU2VjcmV0LCBzaGVsbGFibGUucm9sZSk7XG4gICAgICBwcm9wcy5zaWduaW5nS2V5LmdyYW50UmVhZChzaGVsbGFibGUucm9sZSk7XG4gICAgfVxuXG4gICAgdGhpcy5yb2xlID0gc2hlbGxhYmxlLnJvbGU7XG4gICAgdGhpcy5wcm9qZWN0ID0gc2hlbGxhYmxlLnByb2plY3Q7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9QaXBlbGluZShzdGFnZTogY3BpcGVsaW5lLklTdGFnZSwgaWQ6IHN0cmluZywgb3B0aW9uczogQWRkVG9QaXBlbGluZU9wdGlvbnMpOiB2b2lkIHtcbiAgICBzdGFnZS5hZGRBY3Rpb24obmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbih7XG4gICAgICBhY3Rpb25OYW1lOiBpZCxcbiAgICAgIGlucHV0OiBvcHRpb25zLmlucHV0QXJ0aWZhY3QgfHwgbmV3IGNwaXBlbGluZS5BcnRpZmFjdCgpLFxuICAgICAgcnVuT3JkZXI6IG9wdGlvbnMucnVuT3JkZXIsXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgfSkpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGlzaFRvTnBtUHJvamVjdFByb3BzIHtcbiAgLyoqXG4gICAqIElkZW50aWZpZXIgb2YgdGhlIHNlY3JldCB0aGF0IGNvbnRhaW5zIHRoZSBOUE0gdG9rZW5cbiAgICovXG4gIG5wbVRva2VuU2VjcmV0OiBwZXJtaXNzaW9ucy5FeHRlcm5hbFNlY3JldDtcblxuICAvKipcbiAgICogSWYgYHRydWVgIChkZWZhdWx0KSB3aWxsIG9ubHkgcGVyZm9ybSBhIGRyeS1ydW4gYnV0IHdpbGwgbm90IGFjdHVhbGx5IHB1Ymxpc2guXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIG5wbSBkaXN0LXRhZyB0byB1c2Ugd2hlbiBwdWJsaXNoaW5nIGFydGlmYWN0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBucG0gZGVmYXVsdCBiZWhhdmlvciAoXCJsYXRlc3RcIiB1bmxlc3MgZGlzdCB0YWcgaXMgc3BlY2lmaWVkIGluIHBhY2thZ2UuanNvbilcbiAgICovXG4gIGRpc3RUYWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIG5wbSAtLWFjY2VzcyBwdWJsaWN8cmVzdHJpY3RlZFxuICAgKlxuICAgKiBTZWUgaHR0cHM6Ly9kb2NzLm5wbWpzLmNvbS9jbGktY29tbWFuZHMvcHVibGlzaCM6fjp0ZXh0PVRlbGxzJTIwdGhlXG4gICAqXG4gICAqIFRlbGxzIHRoZSByZWdpc3RyeSB3aGV0aGVyIHRoaXMgcGFja2FnZSBzaG91bGQgYmUgcHVibGlzaGVkIGFzIHB1YmxpYyBvciByZXN0cmljdGVkLlxuICAgKiBPbmx5IGFwcGxpZXMgdG8gc2NvcGVkIHBhY2thZ2VzLCB3aGljaCBkZWZhdWx0IHRvIHJlc3RyaWN0ZWQuXG4gICAqIElmIHlvdSBkb27igJl0IGhhdmUgYSBwYWlkIGFjY291bnQsIHlvdSBtdXN0IHB1Ymxpc2ggd2l0aCAtLWFjY2VzcyBwdWJsaWMgdG8gcHVibGlzaCBzY29wZWQgcGFja2FnZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5wbUFjY2Vzcy5QVUJMSUNcbiAgICovXG4gIGFjY2Vzcz86IE5wbUFjY2Vzcztcbn1cblxuLyoqXG4gKiBDb2RlQnVpbGQgcHJvamVjdCB0aGF0IHdpbGwgcHVibGlzaCBhbGwgcGFja2FnZXMgaW4gYSByZWxlYXNlIGJ1bmRsZSB0byBOUE1cbiAqL1xuZXhwb3J0IGNsYXNzIFB1Ymxpc2hUb05wbVByb2plY3QgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJUHVibGlzaGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU/OiBpYW0uSVJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hUb05wbVByb2plY3RQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgaWQpO1xuXG4gICAgY29uc3QgZm9yUmVhbCA9IHByb3BzLmRyeVJ1biA9PT0gdW5kZWZpbmVkID8gJ2ZhbHNlJyA6ICghcHJvcHMuZHJ5UnVuKS50b1N0cmluZygpO1xuXG4gICAgY29uc3QgYWNjZXNzID0gcHJvcHMuYWNjZXNzID8/IE5wbUFjY2Vzcy5QVUJMSUM7XG5cbiAgICBjb25zdCBzaGVsbGFibGUgPSBuZXcgU2hlbGxhYmxlKHRoaXMsICdEZWZhdWx0Jywge1xuICAgICAgcGxhdGZvcm06IG5ldyBMaW51eFBsYXRmb3JtKGNidWlsZC5MaW51eEJ1aWxkSW1hZ2UuU1RBTkRBUkRfNl8wKSxcbiAgICAgIHNjcmlwdERpcmVjdG9yeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3B1Ymxpc2hpbmcnLCAnbnBtJyksXG4gICAgICBlbnRyeXBvaW50OiAncHVibGlzaC5zaCcsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBGT1JfUkVBTDogZm9yUmVhbCxcbiAgICAgICAgTlBNX1RPS0VOX1NFQ1JFVDogcHJvcHMubnBtVG9rZW5TZWNyZXQuc2VjcmV0QXJuLFxuICAgICAgICBESVNUVEFHOiBwcm9wcy5kaXN0VGFnIHx8ICcnLFxuICAgICAgICBBQ0NFU1M6IGFjY2VzcyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIHBlcm1pc3Npb25zLmdyYW50U2VjcmV0UmVhZChwcm9wcy5ucG1Ub2tlblNlY3JldCwgc2hlbGxhYmxlLnJvbGUpO1xuICAgIH1cblxuICAgIHRoaXMucm9sZSA9IHNoZWxsYWJsZS5yb2xlO1xuICAgIHRoaXMucHJvamVjdCA9IHNoZWxsYWJsZS5wcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFRvUGlwZWxpbmVPcHRpb25zKTogdm9pZCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogaWQsXG4gICAgICBpbnB1dDogb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKSxcbiAgICAgIHJ1bk9yZGVyOiBvcHRpb25zLnJ1bk9yZGVyLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgIH0pKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hUb051R2V0UHJvamVjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBTZWNyZXRzTWFuYWdlciBzZWNyZXQgd2hpY2ggc3RvcmVzIHRoZSBOdWdldCBBUEkga2V5LlxuICAgKi9cbiAgbnVnZXRBcGlLZXlTZWNyZXQ6IHBlcm1pc3Npb25zLkV4dGVybmFsU2VjcmV0O1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgKGRlZmF1bHQpIHdpbGwgb25seSBwZXJmb3JtIGEgZHJ5LXJ1biBidXQgd2lsbCBub3QgYWN0dWFsbHkgcHVibGlzaC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBjb2RlIHNpZ25pbmcgY2VydGlmaWNhdGUgdG8gdXNlIHRvIHNpZ24gYXNzZW1ibGllcy5cbiAgICogQGRlZmF1bHQgTm8gc2lnbmluZ1xuICAgKi9cbiAgY29kZVNpZ24/OiBJQ29kZVNpZ25pbmdDZXJ0aWZpY2F0ZTtcblxuICAvKipcbiAgICogVGhlIGJ1aWxkIGltYWdlIHRvIGRvIHRoZSBwdWJsaXNoaW5nIGluXG4gICAqXG4gICAqIE5lZWRzIHRvIGhhdmUgTnVHZXQgcHJlaW5zdGFsbGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBMYXRlc3Qgc3VwZXJjaGFpblxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRJbWFnZT86IGNidWlsZC5JQnVpbGRJbWFnZTtcbn1cblxuLyoqXG4gKiBDb2RlQnVpbGQgcHJvamVjdCB0aGF0IHdpbGwgcHVibGlzaCBhbGwgcGFja2FnZXMgaW4gYSByZWxlYXNlIGJ1bmRsZSB0byBOdUdldFxuICovXG5leHBvcnQgY2xhc3MgUHVibGlzaFRvTnVHZXRQcm9qZWN0IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVB1Ymxpc2hlciB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hUb051R2V0UHJvamVjdFByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG5cbiAgICBjb25zdCBlbnZpcm9ubWVudDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuXG4gICAgZW52aXJvbm1lbnQuRk9SX1JFQUwgPSBwcm9wcy5kcnlSdW4gPT09IHVuZGVmaW5lZCA/ICdmYWxzZScgOiAoIXByb3BzLmRyeVJ1bikudG9TdHJpbmcoKTtcblxuICAgIGlmIChwcm9wcy5udWdldEFwaUtleVNlY3JldC5hc3N1bWVSb2xlQXJuKSB7XG4gICAgICBlbnZpcm9ubWVudC5OVUdFVF9ST0xFX0FSTiA9IHByb3BzLm51Z2V0QXBpS2V5U2VjcmV0LmFzc3VtZVJvbGVBcm47XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLm51Z2V0QXBpS2V5U2VjcmV0LnJlZ2lvbikge1xuICAgICAgZW52aXJvbm1lbnQuTlVHRVRfU0VDUkVUX1JFR0lPTiA9IHByb3BzLm51Z2V0QXBpS2V5U2VjcmV0LnJlZ2lvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgZW52aXJvbm1lbnQuTlVHRVRfU0VDUkVUX1JFR0lPTiA9IFN0YWNrLm9mKHRoaXMpLnJlZ2lvbjtcbiAgICB9XG5cbiAgICBlbnZpcm9ubWVudC5OVUdFVF9TRUNSRVRfSUQgPSBwcm9wcy5udWdldEFwaUtleVNlY3JldC5zZWNyZXRBcm47XG5cbiAgICBjb25zdCBzaGVsbGFibGUgPSBuZXcgU2hlbGxhYmxlKHRoaXMsICdEZWZhdWx0Jywge1xuICAgICAgcGxhdGZvcm06IG5ldyBMaW51eFBsYXRmb3JtKHByb3BzLmJ1aWxkSW1hZ2UgPz8gY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5mcm9tRG9ja2VyUmVnaXN0cnkoJ2pzaWkvc3VwZXJjaGFpbjoxLWJ1c3Rlci1zbGltJykpLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICdudWdldCcpLFxuICAgICAgZW50cnlwb2ludDogJ3B1Ymxpc2guc2gnLFxuICAgICAgZW52aXJvbm1lbnQsXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMuY29kZVNpZ24pIHtcbiAgICAgIGVudmlyb25tZW50LkNPREVfU0lHTklOR19TRUNSRVRfSUQgPSBwcm9wcy5jb2RlU2lnbi5jcmVkZW50aWFsLnNlY3JldEFybjtcbiAgICAgIGVudmlyb25tZW50LkNPREVfU0lHTklOR19QQVJBTUVURVJfTkFNRSA9IHByb3BzLmNvZGVTaWduLnByaW5jaXBhbC5wYXJhbWV0ZXJOYW1lO1xuICAgIH1cblxuICAgIGlmIChzaGVsbGFibGUucm9sZSkge1xuICAgICAgaWYgKHByb3BzLm51Z2V0QXBpS2V5U2VjcmV0LmFzc3VtZVJvbGVBcm4pIHtcbiAgICAgICAgcGVybWlzc2lvbnMuZ3JhbnRBc3N1bWVSb2xlKHByb3BzLm51Z2V0QXBpS2V5U2VjcmV0LmFzc3VtZVJvbGVBcm4sIHNoZWxsYWJsZS5yb2xlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlcm1pc3Npb25zLmdyYW50U2VjcmV0UmVhZChwcm9wcy5udWdldEFwaUtleVNlY3JldCwgc2hlbGxhYmxlLnJvbGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvcHMuY29kZVNpZ24pIHtcbiAgICAgICAgcHJvcHMuY29kZVNpZ24uZ3JhbnREZWNyeXB0KHNoZWxsYWJsZS5yb2xlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoRG9jc1RvR2l0SHViUHJvamVjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSByZXBvc2l0b3J5IHRvIHB1Ymxpc2ggdG9cbiAgICovXG4gIGdpdGh1YlJlcG86IFdyaXRhYmxlR2l0SHViUmVwbztcblxuICAvKipcbiAgICogSWYgYHRydWVgIChkZWZhdWx0KSB3aWxsIG9ubHkgcGVyZm9ybSBhIGRyeS1ydW4gYnV0IHdpbGwgbm90IGFjdHVhbGx5IHB1Ymxpc2guXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBidWlsZCBtYW5pZmVzdCBKU09OIGZpbGUgKG11c3QgaW5jbHVkZSBcIm5hbWVcIiBhbmQgXCJ2ZXJzaW9uXCIgZmllbGRzKS5cbiAgICogUmVsYXRpdmUgdG8gdGhlIGFydGlmYWN0cyByb290LlxuICAgKiBAZGVmYXVsdCBcIi4vYnVpbGQuanNvblwiXG4gICAqL1xuICBidWlsZE1hbmlmZXN0RmlsZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdpdEh1YiBQYWdlcyBicmFuY2ggdG8gcHVzaCB0by5cbiAgICogQGRlZmF1bHQgZ2gtcGFnZXNcbiAgICovXG4gIGJyYW5jaD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb2RlQnVpbGQgcHJvamVjdCB0aGF0IHdpbGwgcHVibGlzaCBhbGwgcGFja2FnZXMgaW4gYSByZWxlYXNlIGJ1bmRsZSB0byBOdUdldFxuICovXG5leHBvcnQgY2xhc3MgUHVibGlzaERvY3NUb0dpdEh1YlByb2plY3QgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJUHVibGlzaGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcbiAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IGNidWlsZC5Qcm9qZWN0O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGlzaERvY3NUb0dpdEh1YlByb2plY3RQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgaWQpO1xuXG4gICAgY29uc3QgZm9yUmVhbCA9IHByb3BzLmRyeVJ1biA9PT0gdW5kZWZpbmVkID8gJ2ZhbHNlJyA6ICghcHJvcHMuZHJ5UnVuKS50b1N0cmluZygpO1xuXG4gICAgY29uc3Qgc2hlbGxhYmxlID0gbmV3IFNoZWxsYWJsZSh0aGlzLCAnRGVmYXVsdCcsIHtcbiAgICAgIHBsYXRmb3JtOiBuZXcgTGludXhQbGF0Zm9ybShjYnVpbGQuTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzZfMCksXG4gICAgICBzY3JpcHREaXJlY3Rvcnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICdwdWJsaXNoaW5nJywgJ2RvY3MnKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIC8vIE11c3QgYmUgU1NIIGJlY2F1c2Ugd2UgdXNlIGFuIFNTSCBrZXkgdG8gYXV0aGVudGljYXRlXG4gICAgICAgIEdJVEhVQl9SRVBPOiBwcm9wcy5naXRodWJSZXBvLnJlcG9zaXRvcnlVcmxTc2gsXG4gICAgICAgIEdJVEhVQl9QQUdFU19CUkFOQ0g6IHByb3BzLmJyYW5jaCB8fCAnZ2gtcGFnZXMnLFxuICAgICAgICBTU0hfS0VZX1NFQ1JFVDogcHJvcHMuZ2l0aHViUmVwby5zc2hLZXlTZWNyZXQuc2VjcmV0QXJuLFxuICAgICAgICBGT1JfUkVBTDogZm9yUmVhbCxcbiAgICAgICAgQ09NTUlUX1VTRVJOQU1FOiBwcm9wcy5naXRodWJSZXBvLmNvbW1pdFVzZXJuYW1lLFxuICAgICAgICBDT01NSVRfRU1BSUw6IHByb3BzLmdpdGh1YlJlcG8uY29tbWl0RW1haWwsXG4gICAgICAgIEJVSUxEX01BTklGRVNUOiBwcm9wcy5idWlsZE1hbmlmZXN0RmlsZU5hbWUgfHwgJy4vYnVpbGQuanNvbicsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKHNoZWxsYWJsZS5yb2xlKSB7XG4gICAgICBwZXJtaXNzaW9ucy5ncmFudFNlY3JldFJlYWQocHJvcHMuZ2l0aHViUmVwby5zc2hLZXlTZWNyZXQsIHNoZWxsYWJsZS5yb2xlKTtcbiAgICB9XG5cbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoVG9HaXRIdWJQcm9wcyB7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgKGRlZmF1bHQpIHdpbGwgb25seSBwZXJmb3JtIGEgZHJ5LXJ1biBidXQgd2lsbCBub3QgYWN0dWFsbHkgcHVibGlzaC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnkgdG8gY3JlYXRlIGEgcmVsZWFzZSBpbi5cbiAgICovXG4gIGdpdGh1YlJlcG86IFdyaXRhYmxlR2l0SHViUmVwbztcblxuICAvKipcbiAgICogVGhlIHNpZ25pZ24ga2V5IHRvIHVzZSB0byBjcmVhdGUgYSBHUEcgc2lnbmF0dXJlIG9mIHRoZSBhcnRpZmFjdC5cbiAgICovXG4gIHNpZ25pbmdLZXk6IE9wZW5QR1BLZXlQYWlyO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYnVpbGQgbWFuaWZlc3QgSlNPTiBmaWxlIChtdXN0IGluY2x1ZGUgXCJuYW1lXCIgYW5kIFwidmVyc2lvblwiIGZpZWxkcykuXG4gICAqIFJlbGF0aXZlIHRvIHRoZSBhcnRpZmFjdHMgcm9vdC5cbiAgICogQGRlZmF1bHQgXCIuL2J1aWxkLmpzb25cIlxuICAgKi9cbiAgYnVpbGRNYW5pZmVzdEZpbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY2hhbmdlbG9nIG1hcmtkb3duIGZpbGUsIHVzZWQgdG8gY3JlYXRlIHJlbGVhc2Ugbm90ZXMuXG4gICAqIFJlbGF0aXZlIHRvIHRoZSBhcnRpZmFjdHMgcm9vdC5cbiAgICogQGRlZmF1bHQgXCIuL0NIQU5HRUxPRy5tZFwiXG4gICAqL1xuICBjaGFuZ2Vsb2dGaWxlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHJlbGVhc2Ugbm90ZXMgZmlsZSwgY29udGFpbmluZyB0aGUgY29tcGxldGVkIHJlbGVhc2Ugbm90ZXNcbiAgICogZm9yIHRoZSBjdXJyZW50IHJlbGVhc2UuXG4gICAqIFJlbGF0aXZlIHRvIHRoZSBhcnRpZmFjdHMgcm9vdC5cbiAgICogTk9URSAtIElmIHRoaXMgdmFsdWUgaXMgc2V0IGFuZCBwb2ludHMgdG8gYSB2YWxpZCBmaWxlLCB0aGUgZmlsZSBpbiBpdHMgZW50aXJldHlcbiAgICogd2lsbCBiZSByZWFkIGFuZCB1c2VkIGZvciB0aGUgcmVsZWFzZSBub3Rlcy4gVGhlIHZhbHVlIG9mIGBjaGFuZ2Vsb2dGaWxlTmFtZWAgd2lsbFxuICAgKiBiZSBpZ25vcmVkLlxuICAgKiBAZGVmYXVsdCBcIi4vUkVMRUFTRV9OT1RFUy5tZFwiXG4gICAqL1xuICByZWxlYXNlTm90ZXNGaWxlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBpbnB1dCBhcnRpZmFjdHMgdG8gcHVibGlzaCBiaW5hcmllcyBmcm9tIHRvIEdpdEh1YiByZWxlYXNlXG4gICAqL1xuICBhZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHM/OiBjcGlwZWxpbmUuQXJ0aWZhY3RbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBzaWduIHRoZSBhZGRpdGlvbmFsIGFydGlmYWN0c1xuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBzaWduQWRkaXRpb25hbEFydGlmYWN0cz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBQdWJsaXNoVG9HaXRIdWIgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJUHVibGlzaGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcbiAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IGNidWlsZC5Qcm9qZWN0O1xuICBwcml2YXRlIHJlYWRvbmx5IGFkZGl0aW9uYWxJbnB1dEFydGlmYWN0cz86IGNwaXBlbGluZS5BcnRpZmFjdFtdO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGlzaFRvR2l0SHViUHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIGNvbnN0IGZvclJlYWwgPSBwcm9wcy5kcnlSdW4gPT09IHVuZGVmaW5lZCA/ICdmYWxzZScgOiAoIXByb3BzLmRyeVJ1bikudG9TdHJpbmcoKTtcbiAgICB0aGlzLmFkZGl0aW9uYWxJbnB1dEFydGlmYWN0cyA9IHByb3BzLmFkZGl0aW9uYWxJbnB1dEFydGlmYWN0cztcblxuICAgIC8vIFRoZSByZWxlYXNlIG5vdGVzLCBpZiBzZXQgYW5kIGEgdmFsaWQgZmlsZSwgb3ZlcnJpZGVzIGFueSB1c2FnZXMgb2YgdGhlIGNoYW5nZWxvZy5cbiAgICBpZiAocHJvcHMuY2hhbmdlbG9nRmlsZU5hbWUgJiYgcHJvcHMucmVsZWFzZU5vdGVzRmlsZU5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYm90aCBgcmVsZWFzZU5vdGVzRmlsZU5hbWVgIGFuZCBgY2hhbmdlbG9nRmlsZU5hbWVgIGNhbm5vdCBiZSBzcGVjaWZpZWQ7IHVzZSBvbmUgb3IgdGhlIG90aGVyJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2hlbGxhYmxlID0gbmV3IFNoZWxsYWJsZSh0aGlzLCAnRGVmYXVsdCcsIHtcbiAgICAgIHBsYXRmb3JtOiBuZXcgTGludXhQbGF0Zm9ybShjYnVpbGQuTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzZfMCksXG4gICAgICBzY3JpcHREaXJlY3Rvcnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICdwdWJsaXNoaW5nJywgJ2dpdGh1YicpLFxuICAgICAgZW50cnlwb2ludDogJ3B1Ymxpc2guc2gnLFxuICAgICAgZW52aXJvbm1lbnQ6IG5vVW5kZWZpbmVkKHtcbiAgICAgICAgQlVJTERfTUFOSUZFU1Q6IHByb3BzLmJ1aWxkTWFuaWZlc3RGaWxlTmFtZSB8fCAnLi9idWlsZC5qc29uJyxcbiAgICAgICAgQ0hBTkdFTE9HOiBwcm9wcy5jaGFuZ2Vsb2dGaWxlTmFtZSB8fCAnLi9DSEFOR0VMT0cubWQnLFxuICAgICAgICBSRUxFQVNFX05PVEVTOiBwcm9wcy5yZWxlYXNlTm90ZXNGaWxlTmFtZSB8fCAnLi9SRUxFQVNFX05PVEVTLm1kJyxcbiAgICAgICAgU0lHTklOR19LRVlfQVJOOiBwcm9wcy5zaWduaW5nS2V5LmNyZWRlbnRpYWwuc2VjcmV0QXJuLFxuICAgICAgICBHSVRIVUJfT1dORVI6IHByb3BzLmdpdGh1YlJlcG8ub3duZXIsXG4gICAgICAgIEdJVEhVQl9SRVBPOiBwcm9wcy5naXRodWJSZXBvLnJlcG8sXG4gICAgICAgIEZPUl9SRUFMOiBmb3JSZWFsLFxuICAgICAgICAvLyBUcmFuc21pdCB0aGUgbmFtZXMgb2YgdGhlIHNlY29uZGFyeSBzb3VyY2VzIHRvIHRoZSBzaGVsbCBzY3JpcHQgKGZvciBlYXNpZXIgaXRlcmF0aW9uKVxuICAgICAgICBTRUNPTkRBUllfU09VUkNFX05BTUVTOiBwcm9wcy5hZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHMgPyBwcm9wcy5hZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHMubWFwKGEgPT4gYS5hcnRpZmFjdE5hbWUpLmpvaW4oJyAnKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgU0lHTl9BRERJVElPTkFMX0FSVElGQUNUUzogcHJvcHMuYWRkaXRpb25hbElucHV0QXJ0aWZhY3RzICYmIHByb3BzLnNpZ25BZGRpdGlvbmFsQXJ0aWZhY3RzICE9PSBmYWxzZSA/ICd0cnVlJyA6IHVuZGVmaW5lZCxcbiAgICAgIH0pLFxuICAgICAgZW52aXJvbm1lbnRTZWNyZXRzOiB7XG4gICAgICAgIEdJVEhVQl9UT0tFTjogcHJvcHMuZ2l0aHViUmVwby50b2tlblNlY3JldEFybixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBhbGxvdyBzY3JpcHQgdG8gcmVhZCB0aGUgc2lnbmluZyBrZXlcbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIHByb3BzLnNpZ25pbmdLZXkuZ3JhbnRSZWFkKHNoZWxsYWJsZS5yb2xlKTtcbiAgICB9XG5cbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBleHRyYUlucHV0czogdGhpcy5hZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHMsXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoVG9TM1Byb3BzIHtcbiAgYnVja2V0OiBzMy5JQnVja2V0O1xuXG4gIC8qKlxuICAgKiBNYWtlIGZpbGVzIHB1YmxpY2x5IHJlYWRhYmxlXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBwdWJsaWM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgKGRlZmF1bHQpIHdpbGwgb25seSBwZXJmb3JtIGEgZHJ5LXJ1biBidXQgd2lsbCBub3QgYWN0dWFsbHkgcHVibGlzaC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFB1Ymxpc2hUb1MzIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVB1Ymxpc2hlciB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY2J1aWxkLlByb2plY3Q7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hUb1MzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgZm9yUmVhbCA9IHByb3BzLmRyeVJ1biA9PT0gdW5kZWZpbmVkID8gJ2ZhbHNlJyA6ICghcHJvcHMuZHJ5UnVuKS50b1N0cmluZygpO1xuXG4gICAgY29uc3Qgc2hlbGxhYmxlID0gbmV3IFNoZWxsYWJsZSh0aGlzLCAnRGVmYXVsdCcsIHtcbiAgICAgIHBsYXRmb3JtOiBuZXcgTGludXhQbGF0Zm9ybShjYnVpbGQuTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzZfMCksXG4gICAgICBzY3JpcHREaXJlY3Rvcnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICdwdWJsaXNoaW5nJywgJ3MzJyksXG4gICAgICBlbnRyeXBvaW50OiAncHVibGlzaC5zaCcsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBCVUNLRVRfVVJMOiBgczM6Ly8ke3Byb3BzLmJ1Y2tldC5idWNrZXROYW1lfWAsXG4gICAgICAgIENIQU5HRUxPRzogcHJvcHMucHVibGljID8gJ3RydWUnIDogJ2ZhbHNlJyxcbiAgICAgICAgRk9SX1JFQUw6IGZvclJlYWwsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gQWxsb3cgc2NyaXB0IHRvIHdyaXRlIHRvIGJ1Y2tldFxuICAgIGlmIChzaGVsbGFibGUucm9sZSkge1xuICAgICAgcHJvcHMuYnVja2V0LmdyYW50UmVhZFdyaXRlKHNoZWxsYWJsZS5yb2xlKTtcbiAgICB9XG5cbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoVG9QeVBpUHJvcHMge1xuICAvKipcbiAgICogSWRlbnRpZmllciBvZiB0aGUgc2VjcmV0IHRoYXQgY29udGFpbnMgdGhlIFB5UEkgY3JlZGVudGlhbHMgdW5kZXJcbiAgICogXCJ1c2VybmFtZVwiIGFuZCBcInBhc3N3b3JkXCIga2V5cy5cbiAgICovXG4gIGxvZ2luU2VjcmV0OiBwZXJtaXNzaW9ucy5FeHRlcm5hbFNlY3JldDtcblxuICAvKipcbiAgICogSWYgYHRydWVgIChkZWZhdWx0KSB3aWxsIG9ubHkgcGVyZm9ybSBhIGRyeS1ydW4gYnV0IHdpbGwgbm90IGFjdHVhbGx5IHB1Ymxpc2guXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGRyeVJ1bj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBQdWJsaXNoVG9QeVBpIGV4dGVuZHMgQ29uc3RydWN0IHtcblxuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY2J1aWxkLlByb2plY3Q7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hUb1B5UGlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBmb3JSZWFsID0gcHJvcHMuZHJ5UnVuID09PSB1bmRlZmluZWQgPyAnZmFsc2UnIDogKCFwcm9wcy5kcnlSdW4pLnRvU3RyaW5nKCk7XG5cbiAgICBjb25zdCBzaGVsbGFibGUgPSBuZXcgU2hlbGxhYmxlKHRoaXMsICdEZWZhdWx0Jywge1xuICAgICAgcGxhdGZvcm06IG5ldyBMaW51eFBsYXRmb3JtKGNidWlsZC5MaW51eEJ1aWxkSW1hZ2UuU1RBTkRBUkRfNl8wKSxcbiAgICAgIHNjcmlwdERpcmVjdG9yeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3B1Ymxpc2hpbmcnLCAncHlwaScpLFxuICAgICAgZW50cnlwb2ludDogJ3B1Ymxpc2guc2gnLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgRk9SX1JFQUw6IGZvclJlYWwsXG4gICAgICAgIFBZUElfQ1JFREVOVElBTFNfU0VDUkVUX0lEOiBwcm9wcy5sb2dpblNlY3JldC5zZWNyZXRBcm4sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKHNoZWxsYWJsZS5yb2xlKSB7XG4gICAgICBwZXJtaXNzaW9ucy5ncmFudFNlY3JldFJlYWQocHJvcHMubG9naW5TZWNyZXQsIHNoZWxsYWJsZS5yb2xlKTtcbiAgICB9XG5cbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wcyBmb3IgR28gcHVibGlzaGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoVG9Hb2xhbmdQcm9wcyB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIG9mIHRoZSBzZWNyZXQgdGhhdCBjb250YWlucyB0aGUgR2l0SHViIHBlcnNvbmFsIGFjY2VzcyB0b2tlblxuICAgKiB1c2VkIHRvIHB1c2ggdGhlIGdvIGNvZGUgdG8gdGhlIGdpdGh1YiByZXBvc2l0b3J5IGRlZmluZWQgYnkgaXQncyBuYW1lLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2dpdGh1Yi9hdXRoZW50aWNhdGluZy10by1naXRodWIvY3JlYXRpbmctYS1wZXJzb25hbC1hY2Nlc3MtdG9rZW5cbiAgICovXG4gIHJlYWRvbmx5IGdpdGh1YlRva2VuU2VjcmV0OiBwZXJtaXNzaW9ucy5FeHRlcm5hbFNlY3JldDtcblxuICAvKipcbiAgICogVXNlcm5hbWUgdG8gcGVyZm9ybSB0aGUgY29tbWl0IHdpdGguXG4gICAqL1xuICByZWFkb25seSBnaXRVc2VyTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbWFpbCB0byBwZXJmb3JtIHRoZSBjb21taXQgd2l0aC5cbiAgICovXG4gIHJlYWRvbmx5IGdpdFVzZXJFbWFpbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZXQgdG8gXCJ0cnVlXCIgZm9yIGEgZHJ5IHJ1bi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE1vZHVsZSB2ZXJzaW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHRzIHRvIHRoZSB2YWx1ZSBpbiB0aGUgJ3ZlcnNpb24nIGZpbGUgb2YgdGhlIG1vZHVsZVxuICAgKiBkaXJlY3RvcnkuIEZhaWxzIGlmIGl0IGRvZXNuJ3QgZXhpc3QuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCcmFuY2ggdG8gcHVzaCB0by5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJtYWluXCJcbiAgICovXG4gIHJlYWRvbmx5IGdpdEJyYW5jaD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNvbW1pdCBtZXNzYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcImNob3JlKHJlbGVhc2UpOiAkVkVSU0lPTlwiXG4gICAqL1xuICByZWFkb25seSBnaXRDb21taXRNZXNzYWdlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFB1c2hlcyBhIGRpcmVjdG9yeSBvZiBnb2xhbmcgbW9kdWxlcyB0byBhIEdpdEh1YiByZXBvc2l0b3J5LlxuICovXG5leHBvcnQgY2xhc3MgUHVibGlzaFRvR29sYW5nIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IGNidWlsZC5Qcm9qZWN0O1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZTogaWFtLklSb2xlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQdWJsaXNoVG9Hb2xhbmdQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBkcnlSdW4gPSBwcm9wcy5kcnlSdW4gPz8gZmFsc2U7XG5cbiAgICBjb25zdCBzaGVsbGFibGUgPSBuZXcgU2hlbGxhYmxlKHRoaXMsICdEZWZhdWx0Jywge1xuICAgICAgcGxhdGZvcm06IG5ldyBMaW51eFBsYXRmb3JtKGNidWlsZC5MaW51eEJ1aWxkSW1hZ2UuU1RBTkRBUkRfNl8wKSxcbiAgICAgIHNjcmlwdERpcmVjdG9yeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3B1Ymxpc2hpbmcnLCAnZ29sYW5nJyksXG4gICAgICBlbnRyeXBvaW50OiAncHVibGlzaC5zaCcsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBEUllSVU46IGRyeVJ1biA/ICd0cnVlJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgR0lUSFVCX1RPS0VOX1NFQ1JFVDogcHJvcHMuZ2l0aHViVG9rZW5TZWNyZXQuc2VjcmV0QXJuLFxuICAgICAgICBWRVJTSU9OOiBwcm9wcy52ZXJzaW9uLFxuICAgICAgICBHSVRfQlJBTkNIOiBwcm9wcy5naXRCcmFuY2gsXG4gICAgICAgIEdJVF9VU0VSX05BTUU6IHByb3BzLmdpdFVzZXJOYW1lLFxuICAgICAgICBHSVRfVVNFUl9FTUFJTDogcHJvcHMuZ2l0VXNlckVtYWlsLFxuICAgICAgICBHSVRfQ09NTUlUX01FU1NBR0U6IHByb3BzLmdpdENvbW1pdE1lc3NhZ2UsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKHNoZWxsYWJsZS5yb2xlKSB7XG4gICAgICBwZXJtaXNzaW9ucy5ncmFudFNlY3JldFJlYWQocHJvcHMuZ2l0aHViVG9rZW5TZWNyZXQsIHNoZWxsYWJsZS5yb2xlKTtcbiAgICB9XG5cbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cbiJdfQ==
356
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInB1Ymxpc2hpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0IsNkNBT3FCO0FBQ3JCLDJDQUF1QztBQUd2QywyREFBNkM7QUFHN0MsMkNBQXVEO0FBQ3ZELGlDQUFxQztBQUVyQzs7R0FFRztBQUNILElBQVksU0FVWDtBQVZELFdBQVksU0FBUztJQUNuQjs7T0FFRztJQUNILDhCQUFpQixDQUFBO0lBRWpCOztPQUVHO0lBQ0gsc0NBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQVZXLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBVXBCO0FBeUNEOztHQUVHO0FBQ0gsTUFBYSxxQkFBc0IsU0FBUSxzQkFBUztJQUlsRCxZQUFZLE1BQWlCLEVBQUUsRUFBVSxFQUFFLEtBQWlDOztRQUMxRSxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWxCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFbEYsTUFBTSxTQUFTLEdBQUcsSUFBSSxxQkFBUyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDL0MsUUFBUSxFQUFFLElBQUkseUJBQWEsQ0FBQyxNQUFBLEtBQUssQ0FBQyxVQUFVLG1DQUFJLDJCQUFNLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLHFEQUFxRCxDQUFDLENBQUM7WUFDakosZUFBZSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxPQUFPLENBQUM7WUFDNUQsVUFBVSxFQUFFLFlBQVk7WUFDeEIsV0FBVyxFQUFFO2dCQUNYLGtCQUFrQixFQUFFLEtBQUssQ0FB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UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO0lBQ25DLENBQUM7SUFFTSxhQUFhLENBQUMsS0FBdUIsRUFBRSxFQUFVLEVBQUUsT0FBNkI7UUFDckYsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLHNDQUFpQixDQUFDLGVBQWUsQ0FBQztZQUNwRCxVQUFVLEVBQUUsRUFBRTtZQUNkLEtBQUssRUFBRSxPQUFPLENBQUMsYUFBYSxJQUFJLElBQUksOEJBQVMsQ0FBQyxRQUFRLEVBQUU7WUFDeEQsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQzFCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7Q0FDRjtBQXhDRCwwQ0F3Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtcbiAgU3RhY2ssXG4gIGF3c19jb2RlYnVpbGQgYXMgY2J1aWxkLFxuICBhd3NfY29kZXBpcGVsaW5lIGFzIGNwaXBlbGluZSxcbiAgYXdzX2NvZGVwaXBlbGluZV9hY3Rpb25zIGFzIGNwaXBlbGluZV9hY3Rpb25zLFxuICBhd3NfaWFtIGFzIGlhbSxcbiAgYXdzX3MzIGFzIHMzLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElDb2RlU2lnbmluZ0NlcnRpZmljYXRlIH0gZnJvbSAnLi9jb2RlLXNpZ25pbmcnO1xuaW1wb3J0IHsgT3BlblBHUEtleVBhaXIgfSBmcm9tICcuL29wZW4tcGdwLWtleS1wYWlyJztcbmltcG9ydCAqIGFzIHBlcm1pc3Npb25zIGZyb20gJy4vcGVybWlzc2lvbnMnO1xuaW1wb3J0IHsgQWRkVG9QaXBlbGluZU9wdGlvbnMsIElQdWJsaXNoZXIgfSBmcm9tICcuL3BpcGVsaW5lJztcbmltcG9ydCB7IFdyaXRhYmxlR2l0SHViUmVwbyB9IGZyb20gJy4vcmVwbyc7XG5pbXBvcnQgeyBMaW51eFBsYXRmb3JtLCBTaGVsbGFibGUgfSBmcm9tICcuL3NoZWxsYWJsZSc7XG5pbXBvcnQgeyBub1VuZGVmaW5lZCB9IGZyb20gJy4vdXRpbCc7XG5cbi8qKlxuICogVHlwZSBvZiBhY2Nlc3MgcGVybWlzc2lvbnMgdG8gcmVxdWVzdCBmcm9tIG5wbWpzLlxuICovXG5leHBvcnQgZW51bSBOcG1BY2Nlc3Mge1xuICAvKipcbiAgICogTm8gYWNjZXNzIHJlc3RyaWN0aW9uLiBOb3RlIHRoYXQgdW5zY29wZWQgcGFja2FnZXMgbXVzdCBhbHdheXMgYmUgcHVibGljLlxuICAgKi9cbiAgUFVCTElDID0gJ3B1YmxpYycsXG5cbiAgLyoqXG4gICAqIExpbWl0IGFjY2VzcyB0byB3aGl0ZWxpc3RlZCBucG1qcyB1c2Vycy5cbiAgICovXG4gIFJFU1RSSUNURUQgPSAncmVzdHJpY3RlZCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGlzaFRvTWF2ZW5Qcm9qZWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIHNpZ25pbmcga2V5IGl0c2VsZlxuICAgKi9cbiAgc2lnbmluZ0tleTogT3BlblBHUEtleVBhaXI7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgc29uYXR5cGUgc3RhZ2luZyBwcm9maWxlIChlLmcuIFwiNjhhMDUzNjMwODMxNzRcIikuXG4gICAqL1xuICBzdGFnaW5nUHJvZmlsZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElkZW50aWZpZXIgb2YgdGhlIHNlY3JldCB0aGF0IGNvbnRhaW5zIHRoZSBNYXZlbiBsb2dpblxuICAgKi9cbiAgbWF2ZW5Mb2dpblNlY3JldDogcGVybWlzc2lvbnMuRXh0ZXJuYWxTZWNyZXQ7XG5cbiAgLyoqXG4gICAqIElmIHRydWUgKGRlZmF1bHQpIHBlcmZvcm1zIGEgZHJ5LXJ1biBvbmx5IGluc3RlYWQgb2YgYWN0dWFsbHkgcHVibGlzaGluZy5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIE1hdmVuIHB1Ymxpc2hpbmcgZW5kcG9pbnQgdG8gYmUgdXNlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJodHRwczovL29zcy5zb25hdHlwZS5vcmdcIlxuICAgKi9cbiAgbWF2ZW5FbmRwb2ludD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGJ1aWxkIGltYWdlIHRvIGRvIHRoZSBwdWJsaXNoaW5nIGluXG4gICAqXG4gICAqIE5lZWRzIHRvIGhhdmUgTWF2ZW4gcHJlaW5zdGFsbGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBMYXRlc3Qgc3VwZXJjaGFpblxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRJbWFnZT86IGNidWlsZC5JQnVpbGRJbWFnZTtcbn1cblxuLyoqXG4gKiBDb2RlQnVpbGQgcHJvamVjdCB0aGF0IHdpbGwgcHVibGlzaCBhbGwgcGFja2FnZXMgaW4gYSByZWxlYXNlIGJ1bmRsZSB0byBNYXZlblxuICovXG5leHBvcnQgY2xhc3MgUHVibGlzaFRvTWF2ZW5Qcm9qZWN0IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVB1Ymxpc2hlciB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hUb01hdmVuUHJvamVjdFByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG5cbiAgICBjb25zdCBmb3JSZWFsID0gcHJvcHMuZHJ5UnVuID09PSB1bmRlZmluZWQgPyAnZmFsc2UnIDogKCFwcm9wcy5kcnlSdW4pLnRvU3RyaW5nKCk7XG5cbiAgICBjb25zdCBzaGVsbGFibGUgPSBuZXcgU2hlbGxhYmxlKHRoaXMsICdEZWZhdWx0Jywge1xuICAgICAgcGxhdGZvcm06IG5ldyBMaW51eFBsYXRmb3JtKHByb3BzLmJ1aWxkSW1hZ2UgPz8gY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5mcm9tRG9ja2VyUmVnaXN0cnkoJ3B1YmxpYy5lY3IuYXdzL2pzaWkvc3VwZXJjaGFpbjoxLWJ1c3Rlci1zbGltLW5vZGUxOCcpKSxcbiAgICAgIHNjcmlwdERpcmVjdG9yeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3B1Ymxpc2hpbmcnLCAnbWF2ZW4nKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIFNUQUdJTkdfUFJPRklMRV9JRDogcHJvcHMuc3RhZ2luZ1Byb2ZpbGVJZCxcbiAgICAgICAgU0lHTklOR19LRVlfQVJOOiBwcm9wcy5zaWduaW5nS2V5LmNyZWRlbnRpYWwuc2VjcmV0QXJuLFxuICAgICAgICBGT1JfUkVBTDogZm9yUmVhbCxcbiAgICAgICAgTUFWRU5fTE9HSU5fU0VDUkVUOiBwcm9wcy5tYXZlbkxvZ2luU2VjcmV0LnNlY3JldEFybixcbiAgICAgICAgTUFWRU5fRU5EUE9JTlQ6IHByb3BzLm1hdmVuRW5kcG9pbnQgfHwgJ2h0dHBzOi8vb3NzLnNvbmF0eXBlLm9yZycsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKHNoZWxsYWJsZS5yb2xlKSB7XG4gICAgICBwZXJtaXNzaW9ucy5ncmFudFNlY3JldFJlYWQocHJvcHMubWF2ZW5Mb2dpblNlY3JldCwgc2hlbGxhYmxlLnJvbGUpO1xuICAgICAgcHJvcHMuc2lnbmluZ0tleS5ncmFudFJlYWQoc2hlbGxhYmxlLnJvbGUpO1xuICAgIH1cblxuICAgIHRoaXMucm9sZSA9IHNoZWxsYWJsZS5yb2xlO1xuICAgIHRoaXMucHJvamVjdCA9IHNoZWxsYWJsZS5wcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFRvUGlwZWxpbmVPcHRpb25zKTogdm9pZCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogaWQsXG4gICAgICBpbnB1dDogb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKSxcbiAgICAgIHJ1bk9yZGVyOiBvcHRpb25zLnJ1bk9yZGVyLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgIH0pKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hUb05wbVByb2plY3RQcm9wcyB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIG9mIHRoZSBzZWNyZXQgdGhhdCBjb250YWlucyB0aGUgTlBNIHRva2VuXG4gICAqL1xuICBucG1Ub2tlblNlY3JldDogcGVybWlzc2lvbnMuRXh0ZXJuYWxTZWNyZXQ7XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCAoZGVmYXVsdCkgd2lsbCBvbmx5IHBlcmZvcm0gYSBkcnktcnVuIGJ1dCB3aWxsIG5vdCBhY3R1YWxseSBwdWJsaXNoLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBkcnlSdW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBucG0gZGlzdC10YWcgdG8gdXNlIHdoZW4gcHVibGlzaGluZyBhcnRpZmFjdHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbnBtIGRlZmF1bHQgYmVoYXZpb3IgKFwibGF0ZXN0XCIgdW5sZXNzIGRpc3QgdGFnIGlzIHNwZWNpZmllZCBpbiBwYWNrYWdlLmpzb24pXG4gICAqL1xuICBkaXN0VGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBucG0gLS1hY2Nlc3MgcHVibGljfHJlc3RyaWN0ZWRcbiAgICpcbiAgICogU2VlIGh0dHBzOi8vZG9jcy5ucG1qcy5jb20vY2xpLWNvbW1hbmRzL3B1Ymxpc2gjOn46dGV4dD1UZWxscyUyMHRoZVxuICAgKlxuICAgKiBUZWxscyB0aGUgcmVnaXN0cnkgd2hldGhlciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHB1Ymxpc2hlZCBhcyBwdWJsaWMgb3IgcmVzdHJpY3RlZC5cbiAgICogT25seSBhcHBsaWVzIHRvIHNjb3BlZCBwYWNrYWdlcywgd2hpY2ggZGVmYXVsdCB0byByZXN0cmljdGVkLlxuICAgKiBJZiB5b3UgZG9u4oCZdCBoYXZlIGEgcGFpZCBhY2NvdW50LCB5b3UgbXVzdCBwdWJsaXNoIHdpdGggLS1hY2Nlc3MgcHVibGljIHRvIHB1Ymxpc2ggc2NvcGVkIHBhY2thZ2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOcG1BY2Nlc3MuUFVCTElDXG4gICAqL1xuICBhY2Nlc3M/OiBOcG1BY2Nlc3M7XG59XG5cbi8qKlxuICogQ29kZUJ1aWxkIHByb2plY3QgdGhhdCB3aWxsIHB1Ymxpc2ggYWxsIHBhY2thZ2VzIGluIGEgcmVsZWFzZSBidW5kbGUgdG8gTlBNXG4gKi9cbmV4cG9ydCBjbGFzcyBQdWJsaXNoVG9OcG1Qcm9qZWN0IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVB1Ymxpc2hlciB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY2J1aWxkLlByb2plY3Q7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQdWJsaXNoVG9OcG1Qcm9qZWN0UHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIGNvbnN0IGZvclJlYWwgPSBwcm9wcy5kcnlSdW4gPT09IHVuZGVmaW5lZCA/ICdmYWxzZScgOiAoIXByb3BzLmRyeVJ1bikudG9TdHJpbmcoKTtcblxuICAgIGNvbnN0IGFjY2VzcyA9IHByb3BzLmFjY2VzcyA/PyBOcG1BY2Nlc3MuUFVCTElDO1xuXG4gICAgY29uc3Qgc2hlbGxhYmxlID0gbmV3IFNoZWxsYWJsZSh0aGlzLCAnRGVmYXVsdCcsIHtcbiAgICAgIHBsYXRmb3JtOiBuZXcgTGludXhQbGF0Zm9ybShjYnVpbGQuTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzdfMCksXG4gICAgICBzY3JpcHREaXJlY3Rvcnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICdwdWJsaXNoaW5nJywgJ25wbScpLFxuICAgICAgZW50cnlwb2ludDogJ3B1Ymxpc2guc2gnLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgRk9SX1JFQUw6IGZvclJlYWwsXG4gICAgICAgIE5QTV9UT0tFTl9TRUNSRVQ6IHByb3BzLm5wbVRva2VuU2VjcmV0LnNlY3JldEFybixcbiAgICAgICAgRElTVFRBRzogcHJvcHMuZGlzdFRhZyB8fCAnJyxcbiAgICAgICAgQUNDRVNTOiBhY2Nlc3MsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKHNoZWxsYWJsZS5yb2xlKSB7XG4gICAgICBwZXJtaXNzaW9ucy5ncmFudFNlY3JldFJlYWQocHJvcHMubnBtVG9rZW5TZWNyZXQsIHNoZWxsYWJsZS5yb2xlKTtcbiAgICB9XG5cbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoVG9OdUdldFByb2plY3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgU2VjcmV0c01hbmFnZXIgc2VjcmV0IHdoaWNoIHN0b3JlcyB0aGUgTnVnZXQgQVBJIGtleS5cbiAgICovXG4gIG51Z2V0QXBpS2V5U2VjcmV0OiBwZXJtaXNzaW9ucy5FeHRlcm5hbFNlY3JldDtcblxuICAvKipcbiAgICogSWYgYHRydWVgIChkZWZhdWx0KSB3aWxsIG9ubHkgcGVyZm9ybSBhIGRyeS1ydW4gYnV0IHdpbGwgbm90IGFjdHVhbGx5IHB1Ymxpc2guXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgY29kZSBzaWduaW5nIGNlcnRpZmljYXRlIHRvIHVzZSB0byBzaWduIGFzc2VtYmxpZXMuXG4gICAqIEBkZWZhdWx0IE5vIHNpZ25pbmdcbiAgICovXG4gIGNvZGVTaWduPzogSUNvZGVTaWduaW5nQ2VydGlmaWNhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSBidWlsZCBpbWFnZSB0byBkbyB0aGUgcHVibGlzaGluZyBpblxuICAgKlxuICAgKiBOZWVkcyB0byBoYXZlIE51R2V0IHByZWluc3RhbGxlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgTGF0ZXN0IHN1cGVyY2hhaW5cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkSW1hZ2U/OiBjYnVpbGQuSUJ1aWxkSW1hZ2U7XG59XG5cbi8qKlxuICogQ29kZUJ1aWxkIHByb2plY3QgdGhhdCB3aWxsIHB1Ymxpc2ggYWxsIHBhY2thZ2VzIGluIGEgcmVsZWFzZSBidW5kbGUgdG8gTnVHZXRcbiAqL1xuZXhwb3J0IGNsYXNzIFB1Ymxpc2hUb051R2V0UHJvamVjdCBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElQdWJsaXNoZXIge1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZTogaWFtLklSb2xlO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY2J1aWxkLlByb2plY3Q7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQdWJsaXNoVG9OdUdldFByb2plY3RQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgaWQpO1xuXG4gICAgY29uc3QgZW52aXJvbm1lbnQ6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcblxuICAgIGVudmlyb25tZW50LkZPUl9SRUFMID0gcHJvcHMuZHJ5UnVuID09PSB1bmRlZmluZWQgPyAnZmFsc2UnIDogKCFwcm9wcy5kcnlSdW4pLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAocHJvcHMubnVnZXRBcGlLZXlTZWNyZXQuYXNzdW1lUm9sZUFybikge1xuICAgICAgZW52aXJvbm1lbnQuTlVHRVRfUk9MRV9BUk4gPSBwcm9wcy5udWdldEFwaUtleVNlY3JldC5hc3N1bWVSb2xlQXJuO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5udWdldEFwaUtleVNlY3JldC5yZWdpb24pIHtcbiAgICAgIGVudmlyb25tZW50Lk5VR0VUX1NFQ1JFVF9SRUdJT04gPSBwcm9wcy5udWdldEFwaUtleVNlY3JldC5yZWdpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIGVudmlyb25tZW50Lk5VR0VUX1NFQ1JFVF9SRUdJT04gPSBTdGFjay5vZih0aGlzKS5yZWdpb247XG4gICAgfVxuXG4gICAgZW52aXJvbm1lbnQuTlVHRVRfU0VDUkVUX0lEID0gcHJvcHMubnVnZXRBcGlLZXlTZWNyZXQuc2VjcmV0QXJuO1xuXG4gICAgY29uc3Qgc2hlbGxhYmxlID0gbmV3IFNoZWxsYWJsZSh0aGlzLCAnRGVmYXVsdCcsIHtcbiAgICAgIHBsYXRmb3JtOiBuZXcgTGludXhQbGF0Zm9ybShwcm9wcy5idWlsZEltYWdlID8/IGNidWlsZC5MaW51eEJ1aWxkSW1hZ2UuZnJvbURvY2tlclJlZ2lzdHJ5KCdwdWJsaWMuZWNyLmF3cy9qc2lpL3N1cGVyY2hhaW46MS1idXN0ZXItc2xpbS1ub2RlMTgnKSksXG4gICAgICBzY3JpcHREaXJlY3Rvcnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICdwdWJsaXNoaW5nJywgJ251Z2V0JyksXG4gICAgICBlbnRyeXBvaW50OiAncHVibGlzaC5zaCcsXG4gICAgICBlbnZpcm9ubWVudCxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5jb2RlU2lnbikge1xuICAgICAgZW52aXJvbm1lbnQuQ09ERV9TSUdOSU5HX1NFQ1JFVF9JRCA9IHByb3BzLmNvZGVTaWduLmNyZWRlbnRpYWwuc2VjcmV0QXJuO1xuICAgICAgZW52aXJvbm1lbnQuQ09ERV9TSUdOSU5HX1BBUkFNRVRFUl9OQU1FID0gcHJvcHMuY29kZVNpZ24ucHJpbmNpcGFsLnBhcmFtZXRlck5hbWU7XG4gICAgfVxuXG4gICAgaWYgKHNoZWxsYWJsZS5yb2xlKSB7XG4gICAgICBpZiAocHJvcHMubnVnZXRBcGlLZXlTZWNyZXQuYXNzdW1lUm9sZUFybikge1xuICAgICAgICBwZXJtaXNzaW9ucy5ncmFudEFzc3VtZVJvbGUocHJvcHMubnVnZXRBcGlLZXlTZWNyZXQuYXNzdW1lUm9sZUFybiwgc2hlbGxhYmxlLnJvbGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVybWlzc2lvbnMuZ3JhbnRTZWNyZXRSZWFkKHByb3BzLm51Z2V0QXBpS2V5U2VjcmV0LCBzaGVsbGFibGUucm9sZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9wcy5jb2RlU2lnbikge1xuICAgICAgICBwcm9wcy5jb2RlU2lnbi5ncmFudERlY3J5cHQoc2hlbGxhYmxlLnJvbGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucm9sZSA9IHNoZWxsYWJsZS5yb2xlO1xuICAgIHRoaXMucHJvamVjdCA9IHNoZWxsYWJsZS5wcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFRvUGlwZWxpbmVPcHRpb25zKTogdm9pZCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogaWQsXG4gICAgICBpbnB1dDogb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKSxcbiAgICAgIHJ1bk9yZGVyOiBvcHRpb25zLnJ1bk9yZGVyLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgIH0pKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hEb2NzVG9HaXRIdWJQcm9qZWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnkgdG8gcHVibGlzaCB0b1xuICAgKi9cbiAgZ2l0aHViUmVwbzogV3JpdGFibGVHaXRIdWJSZXBvO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgKGRlZmF1bHQpIHdpbGwgb25seSBwZXJmb3JtIGEgZHJ5LXJ1biBidXQgd2lsbCBub3QgYWN0dWFsbHkgcHVibGlzaC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGJ1aWxkIG1hbmlmZXN0IEpTT04gZmlsZSAobXVzdCBpbmNsdWRlIFwibmFtZVwiIGFuZCBcInZlcnNpb25cIiBmaWVsZHMpLlxuICAgKiBSZWxhdGl2ZSB0byB0aGUgYXJ0aWZhY3RzIHJvb3QuXG4gICAqIEBkZWZhdWx0IFwiLi9idWlsZC5qc29uXCJcbiAgICovXG4gIGJ1aWxkTWFuaWZlc3RGaWxlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogR2l0SHViIFBhZ2VzIGJyYW5jaCB0byBwdXNoIHRvLlxuICAgKiBAZGVmYXVsdCBnaC1wYWdlc1xuICAgKi9cbiAgYnJhbmNoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvZGVCdWlsZCBwcm9qZWN0IHRoYXQgd2lsbCBwdWJsaXNoIGFsbCBwYWNrYWdlcyBpbiBhIHJlbGVhc2UgYnVuZGxlIHRvIE51R2V0XG4gKi9cbmV4cG9ydCBjbGFzcyBQdWJsaXNoRG9jc1RvR2l0SHViUHJvamVjdCBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElQdWJsaXNoZXIge1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZTogaWFtLklSb2xlO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY2J1aWxkLlByb2plY3Q7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQdWJsaXNoRG9jc1RvR2l0SHViUHJvamVjdFByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG5cbiAgICBjb25zdCBmb3JSZWFsID0gcHJvcHMuZHJ5UnVuID09PSB1bmRlZmluZWQgPyAnZmFsc2UnIDogKCFwcm9wcy5kcnlSdW4pLnRvU3RyaW5nKCk7XG5cbiAgICBjb25zdCBzaGVsbGFibGUgPSBuZXcgU2hlbGxhYmxlKHRoaXMsICdEZWZhdWx0Jywge1xuICAgICAgcGxhdGZvcm06IG5ldyBMaW51eFBsYXRmb3JtKGNidWlsZC5MaW51eEJ1aWxkSW1hZ2UuU1RBTkRBUkRfN18wKSxcbiAgICAgIHNjcmlwdERpcmVjdG9yeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3B1Ymxpc2hpbmcnLCAnZG9jcycpLFxuICAgICAgZW50cnlwb2ludDogJ3B1Ymxpc2guc2gnLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgLy8gTXVzdCBiZSBTU0ggYmVjYXVzZSB3ZSB1c2UgYW4gU1NIIGtleSB0byBhdXRoZW50aWNhdGVcbiAgICAgICAgR0lUSFVCX1JFUE86IHByb3BzLmdpdGh1YlJlcG8ucmVwb3NpdG9yeVVybFNzaCxcbiAgICAgICAgR0lUSFVCX1BBR0VTX0JSQU5DSDogcHJvcHMuYnJhbmNoIHx8ICdnaC1wYWdlcycsXG4gICAgICAgIFNTSF9LRVlfU0VDUkVUOiBwcm9wcy5naXRodWJSZXBvLnNzaEtleVNlY3JldC5zZWNyZXRBcm4sXG4gICAgICAgIEZPUl9SRUFMOiBmb3JSZWFsLFxuICAgICAgICBDT01NSVRfVVNFUk5BTUU6IHByb3BzLmdpdGh1YlJlcG8uY29tbWl0VXNlcm5hbWUsXG4gICAgICAgIENPTU1JVF9FTUFJTDogcHJvcHMuZ2l0aHViUmVwby5jb21taXRFbWFpbCxcbiAgICAgICAgQlVJTERfTUFOSUZFU1Q6IHByb3BzLmJ1aWxkTWFuaWZlc3RGaWxlTmFtZSB8fCAnLi9idWlsZC5qc29uJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIHBlcm1pc3Npb25zLmdyYW50U2VjcmV0UmVhZChwcm9wcy5naXRodWJSZXBvLnNzaEtleVNlY3JldCwgc2hlbGxhYmxlLnJvbGUpO1xuICAgIH1cblxuICAgIHRoaXMucm9sZSA9IHNoZWxsYWJsZS5yb2xlO1xuICAgIHRoaXMucHJvamVjdCA9IHNoZWxsYWJsZS5wcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFRvUGlwZWxpbmVPcHRpb25zKTogdm9pZCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogaWQsXG4gICAgICBpbnB1dDogb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKSxcbiAgICAgIHJ1bk9yZGVyOiBvcHRpb25zLnJ1bk9yZGVyLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgIH0pKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hUb0dpdEh1YlByb3BzIHtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCAoZGVmYXVsdCkgd2lsbCBvbmx5IHBlcmZvcm0gYSBkcnktcnVuIGJ1dCB3aWxsIG5vdCBhY3R1YWxseSBwdWJsaXNoLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBkcnlSdW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVwb3NpdG9yeSB0byBjcmVhdGUgYSByZWxlYXNlIGluLlxuICAgKi9cbiAgZ2l0aHViUmVwbzogV3JpdGFibGVHaXRIdWJSZXBvO1xuXG4gIC8qKlxuICAgKiBUaGUgc2lnbmlnbiBrZXkgdG8gdXNlIHRvIGNyZWF0ZSBhIEdQRyBzaWduYXR1cmUgb2YgdGhlIGFydGlmYWN0LlxuICAgKi9cbiAgc2lnbmluZ0tleTogT3BlblBHUEtleVBhaXI7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBidWlsZCBtYW5pZmVzdCBKU09OIGZpbGUgKG11c3QgaW5jbHVkZSBcIm5hbWVcIiBhbmQgXCJ2ZXJzaW9uXCIgZmllbGRzKS5cbiAgICogUmVsYXRpdmUgdG8gdGhlIGFydGlmYWN0cyByb290LlxuICAgKiBAZGVmYXVsdCBcIi4vYnVpbGQuanNvblwiXG4gICAqL1xuICBidWlsZE1hbmlmZXN0RmlsZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBjaGFuZ2Vsb2cgbWFya2Rvd24gZmlsZSwgdXNlZCB0byBjcmVhdGUgcmVsZWFzZSBub3Rlcy5cbiAgICogUmVsYXRpdmUgdG8gdGhlIGFydGlmYWN0cyByb290LlxuICAgKiBAZGVmYXVsdCBcIi4vQ0hBTkdFTE9HLm1kXCJcbiAgICovXG4gIGNoYW5nZWxvZ0ZpbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcmVsZWFzZSBub3RlcyBmaWxlLCBjb250YWluaW5nIHRoZSBjb21wbGV0ZWQgcmVsZWFzZSBub3Rlc1xuICAgKiBmb3IgdGhlIGN1cnJlbnQgcmVsZWFzZS5cbiAgICogUmVsYXRpdmUgdG8gdGhlIGFydGlmYWN0cyByb290LlxuICAgKiBOT1RFIC0gSWYgdGhpcyB2YWx1ZSBpcyBzZXQgYW5kIHBvaW50cyB0byBhIHZhbGlkIGZpbGUsIHRoZSBmaWxlIGluIGl0cyBlbnRpcmV0eVxuICAgKiB3aWxsIGJlIHJlYWQgYW5kIHVzZWQgZm9yIHRoZSByZWxlYXNlIG5vdGVzLiBUaGUgdmFsdWUgb2YgYGNoYW5nZWxvZ0ZpbGVOYW1lYCB3aWxsXG4gICAqIGJlIGlnbm9yZWQuXG4gICAqIEBkZWZhdWx0IFwiLi9SRUxFQVNFX05PVEVTLm1kXCJcbiAgICovXG4gIHJlbGVhc2VOb3Rlc0ZpbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGlucHV0IGFydGlmYWN0cyB0byBwdWJsaXNoIGJpbmFyaWVzIGZyb20gdG8gR2l0SHViIHJlbGVhc2VcbiAgICovXG4gIGFkZGl0aW9uYWxJbnB1dEFydGlmYWN0cz86IGNwaXBlbGluZS5BcnRpZmFjdFtdO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNpZ24gdGhlIGFkZGl0aW9uYWwgYXJ0aWZhY3RzXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHNpZ25BZGRpdGlvbmFsQXJ0aWZhY3RzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFB1Ymxpc2hUb0dpdEh1YiBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElQdWJsaXNoZXIge1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZTogaWFtLklSb2xlO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY2J1aWxkLlByb2plY3Q7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWRkaXRpb25hbElucHV0QXJ0aWZhY3RzPzogY3BpcGVsaW5lLkFydGlmYWN0W107XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQdWJsaXNoVG9HaXRIdWJQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgaWQpO1xuXG4gICAgY29uc3QgZm9yUmVhbCA9IHByb3BzLmRyeVJ1biA9PT0gdW5kZWZpbmVkID8gJ2ZhbHNlJyA6ICghcHJvcHMuZHJ5UnVuKS50b1N0cmluZygpO1xuICAgIHRoaXMuYWRkaXRpb25hbElucHV0QXJ0aWZhY3RzID0gcHJvcHMuYWRkaXRpb25hbElucHV0QXJ0aWZhY3RzO1xuXG4gICAgLy8gVGhlIHJlbGVhc2Ugbm90ZXMsIGlmIHNldCBhbmQgYSB2YWxpZCBmaWxlLCBvdmVycmlkZXMgYW55IHVzYWdlcyBvZiB0aGUgY2hhbmdlbG9nLlxuICAgIGlmIChwcm9wcy5jaGFuZ2Vsb2dGaWxlTmFtZSAmJiBwcm9wcy5yZWxlYXNlTm90ZXNGaWxlTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdib3RoIGByZWxlYXNlTm90ZXNGaWxlTmFtZWAgYW5kIGBjaGFuZ2Vsb2dGaWxlTmFtZWAgY2Fubm90IGJlIHNwZWNpZmllZDsgdXNlIG9uZSBvciB0aGUgb3RoZXInKTtcbiAgICB9XG5cbiAgICBjb25zdCBzaGVsbGFibGUgPSBuZXcgU2hlbGxhYmxlKHRoaXMsICdEZWZhdWx0Jywge1xuICAgICAgcGxhdGZvcm06IG5ldyBMaW51eFBsYXRmb3JtKGNidWlsZC5MaW51eEJ1aWxkSW1hZ2UuU1RBTkRBUkRfN18wKSxcbiAgICAgIHNjcmlwdERpcmVjdG9yeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3B1Ymxpc2hpbmcnLCAnZ2l0aHViJyksXG4gICAgICBlbnRyeXBvaW50OiAncHVibGlzaC5zaCcsXG4gICAgICBlbnZpcm9ubWVudDogbm9VbmRlZmluZWQoe1xuICAgICAgICBCVUlMRF9NQU5JRkVTVDogcHJvcHMuYnVpbGRNYW5pZmVzdEZpbGVOYW1lIHx8ICcuL2J1aWxkLmpzb24nLFxuICAgICAgICBDSEFOR0VMT0c6IHByb3BzLmNoYW5nZWxvZ0ZpbGVOYW1lIHx8ICcuL0NIQU5HRUxPRy5tZCcsXG4gICAgICAgIFJFTEVBU0VfTk9URVM6IHByb3BzLnJlbGVhc2VOb3Rlc0ZpbGVOYW1lIHx8ICcuL1JFTEVBU0VfTk9URVMubWQnLFxuICAgICAgICBTSUdOSU5HX0tFWV9BUk46IHByb3BzLnNpZ25pbmdLZXkuY3JlZGVudGlhbC5zZWNyZXRBcm4sXG4gICAgICAgIEdJVEhVQl9PV05FUjogcHJvcHMuZ2l0aHViUmVwby5vd25lcixcbiAgICAgICAgR0lUSFVCX1JFUE86IHByb3BzLmdpdGh1YlJlcG8ucmVwbyxcbiAgICAgICAgRk9SX1JFQUw6IGZvclJlYWwsXG4gICAgICAgIC8vIFRyYW5zbWl0IHRoZSBuYW1lcyBvZiB0aGUgc2Vjb25kYXJ5IHNvdXJjZXMgdG8gdGhlIHNoZWxsIHNjcmlwdCAoZm9yIGVhc2llciBpdGVyYXRpb24pXG4gICAgICAgIFNFQ09OREFSWV9TT1VSQ0VfTkFNRVM6IHByb3BzLmFkZGl0aW9uYWxJbnB1dEFydGlmYWN0cyA/IHByb3BzLmFkZGl0aW9uYWxJbnB1dEFydGlmYWN0cy5tYXAoYSA9PiBhLmFydGlmYWN0TmFtZSkuam9pbignICcpIDogdW5kZWZpbmVkLFxuICAgICAgICBTSUdOX0FERElUSU9OQUxfQVJUSUZBQ1RTOiBwcm9wcy5hZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHMgJiYgcHJvcHMuc2lnbkFkZGl0aW9uYWxBcnRpZmFjdHMgIT09IGZhbHNlID8gJ3RydWUnIDogdW5kZWZpbmVkLFxuICAgICAgfSksXG4gICAgICBlbnZpcm9ubWVudFNlY3JldHM6IHtcbiAgICAgICAgR0lUSFVCX1RPS0VOOiBwcm9wcy5naXRodWJSZXBvLnRva2VuU2VjcmV0QXJuLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIGFsbG93IHNjcmlwdCB0byByZWFkIHRoZSBzaWduaW5nIGtleVxuICAgIGlmIChzaGVsbGFibGUucm9sZSkge1xuICAgICAgcHJvcHMuc2lnbmluZ0tleS5ncmFudFJlYWQoc2hlbGxhYmxlLnJvbGUpO1xuICAgIH1cblxuICAgIHRoaXMucm9sZSA9IHNoZWxsYWJsZS5yb2xlO1xuICAgIHRoaXMucHJvamVjdCA9IHNoZWxsYWJsZS5wcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFRvUGlwZWxpbmVPcHRpb25zKTogdm9pZCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogaWQsXG4gICAgICBpbnB1dDogb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKSxcbiAgICAgIGV4dHJhSW5wdXRzOiB0aGlzLmFkZGl0aW9uYWxJbnB1dEFydGlmYWN0cyxcbiAgICAgIHJ1bk9yZGVyOiBvcHRpb25zLnJ1bk9yZGVyLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgIH0pKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hUb1MzUHJvcHMge1xuICBidWNrZXQ6IHMzLklCdWNrZXQ7XG5cbiAgLyoqXG4gICAqIE1ha2UgZmlsZXMgcHVibGljbHkgcmVhZGFibGVcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHB1YmxpYz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCAoZGVmYXVsdCkgd2lsbCBvbmx5IHBlcmZvcm0gYSBkcnktcnVuIGJ1dCB3aWxsIG5vdCBhY3R1YWxseSBwdWJsaXNoLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBkcnlSdW4/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgUHVibGlzaFRvUzMgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJUHVibGlzaGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU/OiBpYW0uSVJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGlzaFRvUzNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBmb3JSZWFsID0gcHJvcHMuZHJ5UnVuID09PSB1bmRlZmluZWQgPyAnZmFsc2UnIDogKCFwcm9wcy5kcnlSdW4pLnRvU3RyaW5nKCk7XG5cbiAgICBjb25zdCBzaGVsbGFibGUgPSBuZXcgU2hlbGxhYmxlKHRoaXMsICdEZWZhdWx0Jywge1xuICAgICAgcGxhdGZvcm06IG5ldyBMaW51eFBsYXRmb3JtKGNidWlsZC5MaW51eEJ1aWxkSW1hZ2UuU1RBTkRBUkRfN18wKSxcbiAgICAgIHNjcmlwdERpcmVjdG9yeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3B1Ymxpc2hpbmcnLCAnczMnKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIEJVQ0tFVF9VUkw6IGBzMzovLyR7cHJvcHMuYnVja2V0LmJ1Y2tldE5hbWV9YCxcbiAgICAgICAgQ0hBTkdFTE9HOiBwcm9wcy5wdWJsaWMgPyAndHJ1ZScgOiAnZmFsc2UnLFxuICAgICAgICBGT1JfUkVBTDogZm9yUmVhbCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBBbGxvdyBzY3JpcHQgdG8gd3JpdGUgdG8gYnVja2V0XG4gICAgaWYgKHNoZWxsYWJsZS5yb2xlKSB7XG4gICAgICBwcm9wcy5idWNrZXQuZ3JhbnRSZWFkV3JpdGUoc2hlbGxhYmxlLnJvbGUpO1xuICAgIH1cblxuICAgIHRoaXMucm9sZSA9IHNoZWxsYWJsZS5yb2xlO1xuICAgIHRoaXMucHJvamVjdCA9IHNoZWxsYWJsZS5wcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFRvUGlwZWxpbmVPcHRpb25zKTogdm9pZCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogaWQsXG4gICAgICBpbnB1dDogb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKSxcbiAgICAgIHJ1bk9yZGVyOiBvcHRpb25zLnJ1bk9yZGVyLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgIH0pKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hUb1B5UGlQcm9wcyB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIG9mIHRoZSBzZWNyZXQgdGhhdCBjb250YWlucyB0aGUgUHlQSSBjcmVkZW50aWFscyB1bmRlclxuICAgKiBcInVzZXJuYW1lXCIgYW5kIFwicGFzc3dvcmRcIiBrZXlzLlxuICAgKi9cbiAgbG9naW5TZWNyZXQ6IHBlcm1pc3Npb25zLkV4dGVybmFsU2VjcmV0O1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgKGRlZmF1bHQpIHdpbGwgb25seSBwZXJmb3JtIGEgZHJ5LXJ1biBidXQgd2lsbCBub3QgYWN0dWFsbHkgcHVibGlzaC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFB1Ymxpc2hUb1B5UGkgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuXG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGlzaFRvUHlQaVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGZvclJlYWwgPSBwcm9wcy5kcnlSdW4gPT09IHVuZGVmaW5lZCA/ICdmYWxzZScgOiAoIXByb3BzLmRyeVJ1bikudG9TdHJpbmcoKTtcblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0oY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF83XzApLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICdweXBpJyksXG4gICAgICBlbnRyeXBvaW50OiAncHVibGlzaC5zaCcsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBGT1JfUkVBTDogZm9yUmVhbCxcbiAgICAgICAgUFlQSV9DUkVERU5USUFMU19TRUNSRVRfSUQ6IHByb3BzLmxvZ2luU2VjcmV0LnNlY3JldEFybixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIHBlcm1pc3Npb25zLmdyYW50U2VjcmV0UmVhZChwcm9wcy5sb2dpblNlY3JldCwgc2hlbGxhYmxlLnJvbGUpO1xuICAgIH1cblxuICAgIHRoaXMucm9sZSA9IHNoZWxsYWJsZS5yb2xlO1xuICAgIHRoaXMucHJvamVjdCA9IHNoZWxsYWJsZS5wcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFRvUGlwZWxpbmVPcHRpb25zKTogdm9pZCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogaWQsXG4gICAgICBpbnB1dDogb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKSxcbiAgICAgIHJ1bk9yZGVyOiBvcHRpb25zLnJ1bk9yZGVyLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgIH0pKTtcbiAgfVxufVxuXG4vKipcbiAqIFByb3BzIGZvciBHbyBwdWJsaXNoaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hUb0dvbGFuZ1Byb3BzIHtcbiAgLyoqXG4gICAqIElkZW50aWZpZXIgb2YgdGhlIHNlY3JldCB0aGF0IGNvbnRhaW5zIHRoZSBHaXRIdWIgcGVyc29uYWwgYWNjZXNzIHRva2VuXG4gICAqIHVzZWQgdG8gcHVzaCB0aGUgZ28gY29kZSB0byB0aGUgZ2l0aHViIHJlcG9zaXRvcnkgZGVmaW5lZCBieSBpdCdzIG5hbWUuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vZ2l0aHViL2F1dGhlbnRpY2F0aW5nLXRvLWdpdGh1Yi9jcmVhdGluZy1hLXBlcnNvbmFsLWFjY2Vzcy10b2tlblxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViVG9rZW5TZWNyZXQ6IHBlcm1pc3Npb25zLkV4dGVybmFsU2VjcmV0O1xuXG4gIC8qKlxuICAgKiBVc2VybmFtZSB0byBwZXJmb3JtIHRoZSBjb21taXQgd2l0aC5cbiAgICovXG4gIHJlYWRvbmx5IGdpdFVzZXJOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVtYWlsIHRvIHBlcmZvcm0gdGhlIGNvbW1pdCB3aXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0VXNlckVtYWlsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNldCB0byBcInRydWVcIiBmb3IgYSBkcnkgcnVuLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZHJ5UnVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTW9kdWxlIHZlcnNpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdHMgdG8gdGhlIHZhbHVlIGluIHRoZSAndmVyc2lvbicgZmlsZSBvZiB0aGUgbW9kdWxlXG4gICAqIGRpcmVjdG9yeS4gRmFpbHMgaWYgaXQgZG9lc24ndCBleGlzdC5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJyYW5jaCB0byBwdXNoIHRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIm1haW5cIlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0QnJhbmNoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY29tbWl0IG1lc3NhZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiY2hvcmUocmVsZWFzZSk6ICRWRVJTSU9OXCJcbiAgICovXG4gIHJlYWRvbmx5IGdpdENvbW1pdE1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHVzaGVzIGEgZGlyZWN0b3J5IG9mIGdvbGFuZyBtb2R1bGVzIHRvIGEgR2l0SHViIHJlcG9zaXRvcnkuXG4gKi9cbmV4cG9ydCBjbGFzcyBQdWJsaXNoVG9Hb2xhbmcgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY2J1aWxkLlByb2plY3Q7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hUb0dvbGFuZ1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGRyeVJ1biA9IHByb3BzLmRyeVJ1biA/PyBmYWxzZTtcblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0oY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF83XzApLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICdnb2xhbmcnKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIERSWVJVTjogZHJ5UnVuID8gJ3RydWUnIDogdW5kZWZpbmVkLFxuICAgICAgICBHSVRIVUJfVE9LRU5fU0VDUkVUOiBwcm9wcy5naXRodWJUb2tlblNlY3JldC5zZWNyZXRBcm4sXG4gICAgICAgIFZFUlNJT046IHByb3BzLnZlcnNpb24sXG4gICAgICAgIEdJVF9CUkFOQ0g6IHByb3BzLmdpdEJyYW5jaCxcbiAgICAgICAgR0lUX1VTRVJfTkFNRTogcHJvcHMuZ2l0VXNlck5hbWUsXG4gICAgICAgIEdJVF9VU0VSX0VNQUlMOiBwcm9wcy5naXRVc2VyRW1haWwsXG4gICAgICAgIEdJVF9DT01NSVRfTUVTU0FHRTogcHJvcHMuZ2l0Q29tbWl0TWVzc2FnZSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIHBlcm1pc3Npb25zLmdyYW50U2VjcmV0UmVhZChwcm9wcy5naXRodWJUb2tlblNlY3JldCwgc2hlbGxhYmxlLnJvbGUpO1xuICAgIH1cblxuICAgIHRoaXMucm9sZSA9IHNoZWxsYWJsZS5yb2xlO1xuICAgIHRoaXMucHJvamVjdCA9IHNoZWxsYWJsZS5wcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFRvUGlwZWxpbmVPcHRpb25zKTogdm9pZCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogaWQsXG4gICAgICBpbnB1dDogb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKSxcbiAgICAgIHJ1bk9yZGVyOiBvcHRpb25zLnJ1bk9yZGVyLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgIH0pKTtcbiAgfVxufVxuIl19
@@ -97,11 +97,12 @@ class AutoPullRequest extends constructs_1.Construct {
97
97
  }),
98
98
  ssmSessionPermissions: true,
99
99
  });
100
- if (this.project.role) {
101
- permissions.grantSecretRead(sshKeySecret, this.project.role);
102
- if (needsGitHubTokenSecret) {
103
- permissions.grantSecretRead({ secretArn: props.repo.tokenSecretArn }, this.project.role);
104
- }
100
+ // Always exists as the project is not a reference
101
+ const projectRole = this.project.role;
102
+ projectRole.addManagedPolicy(aws_cdk_lib_1.aws_iam.ManagedPolicy.fromAwsManagedPolicyName('AmazonElasticContainerRegistryPublicReadOnly'));
103
+ permissions.grantSecretRead(sshKeySecret, projectRole);
104
+ if (needsGitHubTokenSecret) {
105
+ permissions.grantSecretRead({ secretArn: props.repo.tokenSecretArn }, projectRole);
105
106
  }
106
107
  if (props.scheduleExpression) {
107
108
  const schedule = aws_cdk_lib_1.aws_events.Schedule.expression(props.scheduleExpression);
@@ -226,4 +227,4 @@ class AutoPullRequest extends constructs_1.Construct {
226
227
  }
227
228
  }
228
229
  exports.AutoPullRequest = AutoPullRequest;
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQU1xQjtBQUNyQiwyQ0FBdUM7QUFDdkMsNENBQTZFO0FBQzdFLDREQUE4QztBQTJMOUM7O0dBRUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsc0JBQVM7SUFrQjVDLFlBQVksTUFBaUIsRUFBRSxFQUFVLEVBQUUsS0FBMkI7O1FBQ3BFLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFBLE1BQUEsS0FBSyxDQUFDLElBQUksMENBQUUsSUFBSSxtQ0FBSSxRQUFRLENBQUM7UUFDL0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFBLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxtQ0FBSSxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBQSxLQUFLLENBQUMsT0FBTyxtQ0FBSSxFQUFFLENBQUM7UUFFbkMsS0FBSyxNQUFNLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMxQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUU7Z0JBQ2hGLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxVQUFVLHFDQUFxQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQzNGO1NBQ0Y7UUFFRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUM3QyxNQUFNLFdBQVcsR0FBRyxLQUFLLENB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LENBQUMsVUFBVSxDQUFDLDJCQUEyQixFQUFFLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN2RztRQUVELE9BQU8sUUFBUSxDQUFDO0lBRWxCLENBQUM7SUFFTyxVQUFVLENBQUMsR0FBVyxFQUFFLE9BQWUsRUFBRSxPQUFZO1FBQzNELE9BQU87WUFDTCxhQUFhO1lBQ2IsT0FBTztZQUNQLCtDQUErQztZQUMvQywyQ0FBMkM7WUFDM0MsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRTtZQUMvQyxnQ0FBZ0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLEVBQUU7U0FDdEYsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDZCxDQUFDO0lBRU8sYUFBYSxDQUFDLEdBQVcsRUFBRSxPQUFlO1FBQ2hELE9BQU87WUFDTCxhQUFhO1lBQ2IsT0FBTztZQUNQLCtDQUErQztZQUMvQywyQ0FBMkM7WUFDM0MsMEJBQTBCLEdBQUcsR0FBRztTQUNqQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNkLENBQUM7Q0FFRjtBQTdRRCwwQ0E2UUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEdXJhdGlvbixcbiAgYXdzX2Nsb3Vkd2F0Y2ggYXMgY2xvdWR3YXRjaCxcbiAgYXdzX2NvZGVidWlsZCBhcyBjYnVpbGQsXG4gIGF3c19ldmVudHMgYXMgZXZlbnRzLFxuICBhd3NfZXZlbnRzX3RhcmdldHMgYXMgZXZlbnRzX3RhcmdldHMsXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQnVpbGRFbnZpcm9ubWVudFByb3BzLCBjcmVhdGVCdWlsZEVudmlyb25tZW50IH0gZnJvbSAnLi4vYnVpbGQtZW52JztcbmltcG9ydCAqIGFzIHBlcm1pc3Npb25zIGZyb20gJy4uL3Blcm1pc3Npb25zJztcbmltcG9ydCB7IFdyaXRhYmxlR2l0SHViUmVwbyB9IGZyb20gJy4uL3JlcG8nO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgUHVsbCBSZXF1ZXN0IEpvYi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRvUHVsbFJlcXVlc3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBiYXNlIGJyYW5jaCBvZiB0aGUgUFIuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdtYXN0ZXInXG4gICAqL1xuICBiYXNlPzogQmFzZTtcblxuICAvKipcbiAgICogVHJ1ZSBpZiB5b3Ugb25seSB3YW50IHRvIHB1c2ggdGhlIGhlYWQgYnJhbmNoIHdpdGhvdXQgY3JlYXRpbmcgYSBQUi5cbiAgICogVXNlZnVsIHdoZW4gdXNlZCBhbG9uZyB3aXRoICdjb21taXRzJyB0byBleGVjdXRlIGEgY29tbWl0LWFuZC1wdXNoIGF1dG9tYXRpY2FsbHkuXG4gICAqXG4gICAqIC8vIFRPRE86IENvbnNpZGVyIG1vdmluZyB0aGlzIGZ1bmN0aW9uYWxpdHkgdG8gYSBzZXBhcmF0ZSBjb25zdHJ1Y3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBwdXNoT25seT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRpdGxlIG9mIHRoZSBQUi5cbiAgICpcbiAgICogQGRlZmF1bHQgYE1lcmdlICR7aGVhZH0gdG8gJHtiYXNlfWBcbiAgICovXG4gIHRpdGxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCb2R5IHRoZSBQUi4gTm90ZSB0aGF0IHRoZSBib2R5IGlzIHVwZGF0ZWQgcG9zdCBQUiBjcmVhdGlvbixcbiAgICogdGhpcyBtZWFucyB5b3UgY2FuIHVzZSB0aGUgJFBSX05VTUJFUiBlbnYgdmFyaWFibGUgdG8gcmVmZXIgdG8gdGhlIFBSIGl0c2VsZi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBib2R5LlxuICAgKi9cbiAgYm9keT86IHN0cmluZztcblxuICAvKipcbiAgICogTGFiZWxzIGFwcGxpZWQgdG8gdGhlIFBSLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGxhYmVscy5cbiAgICovXG4gIGxhYmVscz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBCdWlsZCBlbnZpcm9ubWVudCBmb3IgdGhlIENvZGVCdWlsZCBqb2IuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgYnVpbGQ/OiBCdWlsZEVudmlyb25tZW50UHJvcHM7XG5cbiAgLyoqXG4gICAqIEdpdCBjbG9uZSBkZXB0aC5cbiAgICpcbiAgICogQGRlZmF1bHQgMCAoY2xvbmVzIHRoZSBlbnRpcmUgcmVwb3NpdG9yeSByZXZpc2lvbnMpXG4gICAqL1xuICBjbG9uZURlcHRoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBLZXkgdmFsdWUgcGFpcnMgb2YgdmFyaWFibGVzIHRvIGV4cG9ydC4gVGhlc2UgdmFyaWFibGVzIHdpbGwgYmUgYXZhaWxhYmxlIGZvciBkeW5hbWljIGV2YWx1YXRpb24gaW4gYW55XG4gICAqIHN1YnNlcXVlbnQgY29tbWFuZC5cbiAgICpcbiAgICogS2V5IC0gVmFyaWFibGUgbmFtZSAoZS5nIFZFUlNJT04pXG4gICAqIFZhbHVlIC0gQ29tbWFuZCB0aGF0IGV2YWx1YXRlcyB0byB0aGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxlIChlLmcgJ2dpdCBkZXNjcmliZScpXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqXG4gICAqIENvbmZpZ3VyZSBhbiBleHBvcnQgaW4gdGhlIGZvcm0gb2Y6XG4gICAqXG4gICAqIHsgJ1ZFUlNJT04nOiAnZ2l0IGRlc2NyaWJlJyB9XG4gICAqXG4gICAqIFVzZSB0aGUgJFZFUlNJT04gdmFyaWFibGUgaW4gdGhlIFBSIHRpdGxlOiAnY2hvcmUocmVsZWFzZSk6ICRWRVJTSU9OJ1xuICAgKlxuICAgKiBOb3RlIHRoYXQgdGhlc2UgZXhwb3J0cyBhcmUgZXhlY3V0ZWQgYWZ0ZXIgdGhlIGBjb21tYW5kc2AgZXhlY3V0aW9uLFxuICAgKiBzbyB0aGV5IGhhdmUgYWNjZXNzIHRvIHRoZSBhcnRpZmFjdHMgc2FpZCBjb21tYW5kcyBwcm9kdWNlIChlLmcgdmVyc2lvbiBidW1wKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBleHBvcnRzXG4gICAqL1xuICBleHBvcnRzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGhlIHNjaGVkdWxlIHRvIHByb2R1Y2UgYW4gYXV0b21hdGljIFBSLlxuICAgKlxuICAgKiBUaGUgZXhwcmVzc2lvbiBjYW4gYmUgb25lIG9mOlxuICAgKlxuICAgKiAgLSBjcm9uIGV4cHJlc3Npb24sIHN1Y2ggYXMgXCJjcm9uKDAgMTIgKiAqID8gKilcIiB3aWxsIHRyaWdnZXIgZXZlcnkgZGF5IGF0IDEycG0gVVRDXG4gICAqICAtIHJhdGUgZXhwcmVzc2lvbiwgc3VjaCBhcyBcInJhdGUoMSBkYXkpXCIgd2lsbCB0cmlnZ2VyIGV2ZXJ5IDI0IGhvdXJzIGZyb20gdGhlIHRpbWUgb2YgZGVwbG95bWVudFxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZFdhdGNoL2xhdGVzdC9ldmVudHMvU2NoZWR1bGVkRXZlbnRzLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBzY2hlZHVsZSwgc2hvdWxkIGJlIHRyaWdnZXJlZCBtYW51YWxseS5cbiAgICovXG4gIHNjaGVkdWxlRXhwcmVzc2lvbj86IHN0cmluZztcblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9QdWxsUmVxdWVzdFByb3BzIGV4dGVuZHMgQXV0b1B1bGxSZXF1ZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgcmVwb3NpdG9yeSB0byBjcmVhdGUgYSBQUiBpbi5cbiAgICovXG4gIHJlcG86IFdyaXRhYmxlR2l0SHViUmVwbztcblxuICAvKipcbiAgICogQSBzZXQgb2YgY29tbWFuZHMgdG8gcnVuIGFnYWluc3QgdGhlIGhlYWQgYnJhbmNoLlxuICAgKiBVc2VmdWwgZm9yIHRoaW5ncyBsaWtlIHZlcnNpb24gYnVtcHMgb3IgYW55IGF1dG8tZ2VuZXJhdGVkIGNvbW1pdHMuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB5b3UgY2Fubm90IHVzZSBleHBvcnQga2V5cyBpbiB0aGVzZSBjb21tYW5kcyAoU2VlIGBleHBvcnRzYCBwcm9wZXJ0eSlcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjb21tYW5kcy5cbiAgICovXG4gIGNvbW1hbmRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBoZWFkIGJyYW5jaCBvZiB0aGUgUFIuXG4gICAqL1xuICBoZWFkOiBIZWFkO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhpdCBjb2RlIG9mIHRoaXMgY29tbWFuZCBkZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRvIHByb2NlZWQgd2l0aCB0aGVcbiAgICogUFIgY3JlYXRpb24uIElmIGNvbmZpZ3VyZWQsIHRoaXMgY29tbWFuZCBpcyB0aGUgZmlyc3Qgb25lIHRvIHJ1biwgYW5kIGlmIGl0IGZhaWxzLCBhbGxcbiAgICogb3RoZXIgY29tbWFuZHMgd2lsbCBiZSBza2lwcGVkLlxuICAgKlxuICAgKiBUaGlzIGNvbW1hbmQgaXMgdGhlIGZpcnN0IHRvIGV4ZWN1dGUsIGFuZCBzaG91bGQgbm90IGFzc3VtZSBhbnkgcHJlLWV4aXN0aW5nIHN0YXRlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGNvbmRpdGlvblxuICAgKi9cbiAgY29uZGl0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZiBhbnkgUFIgbGFiZWxlZCB3aXRoIHRoZSBnaXZlbiBsYWJlbHMgaXMgc3RpbGwgb3Blbiwgbm8gbmV3IFBSIHdpbGwgYmUgY3JlYXRlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRvbid0IGxvb2sgYXQgb3BlbiBQUnNcbiAgICovXG4gIHJlYWRvbmx5IHNraXBJZk9wZW5QcnNXaXRoTGFiZWxzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIHN0cmluZyBmb3IgdGhlIENvZGVCdWlsZCBwcm9qZWN0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IHByb2plY3REZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjb25maWd1cmluZyB0aGUgYmFzZSBicmFuY2ggb2YgdGhlIFBSLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2Uge1xuXG4gIC8qKlxuICAgKiBCcmFuY2ggbmFtZS5cbiAgICpcbiAgICogVGhpcyBicmFuY2ggbXVzdCBleGlzdC5cbiAgICpcbiAgICogQGRlZmF1bHQgJ21hc3RlcidcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY29uZmlndXJpbmcgdGhlIGhlYWQgYnJhbmNoIG9mIHRoZSBQUi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIZWFkIHtcblxuICAvKipcbiAgICogQnJhbmNoIG5hbWUuXG4gICAqXG4gICAqIFRoaXMgYnJhbmNoIHdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2Vzbid0IGV4aXN0LlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIHNoYSBvZiB0aGUgYnJhbmNoLlxuICAgKlxuICAgKiBJZiB0aGUgZ2l2ZW4gYnJhbmNoIGFscmVhZHkgZXhpc3RzLCB0aGlzIHNoYSB3aWxsIGJlIGF1dG8tbWVyZ2VkIG9udG8gaXQuIE5vdGUgdGhhdCBpbiBzdWNoIGEgY2FzZSxcbiAgICogdGhlIFBSIGNyZWF0aW9uIG1pZ2h0IGZhaWwgaW4gY2FzZSB0aGVyZSBhcmUgbWVyZ2UgY29uZmxpY3RzLlxuICAgKlxuICAgKiBJZiB0aGUgZ2l2ZW4gYnJhbmNoIGRvZXNuJ3QgZXhpc3QsIHRoZSBuZXdseSBjcmVhdGVkIGJyYW5jaCB3aWxsIGJlIGJhc2VkIG9mIHRoaXMgaGFzaC5cbiAgICpcbiAgICogTm90ZSB0aGF0IGR5bmFtaWMgZXhwb3J0cyBhcmUgbm90IGFsbG93ZWQgZm9yIHRoaXMgcHJvcGVydHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGJhc2UgYnJhbmNoIG9mIHRoZSBwci5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgQ29kZUJ1aWxkIGpvYiB0aGF0LCB3aGVuIHRyaWdnZXJlZCwgb3BlbnMgYSBHaXRIdWIgUHVsbCBSZXF1ZXN0LlxuICovXG5leHBvcnQgY2xhc3MgQXV0b1B1bGxSZXF1ZXN0IGV4dGVuZHMgQ29uc3RydWN0IHtcblxuICAvKipcbiAgICogQ2xvdWRXYXRjaCBhbGFybSB0aGF0IHdpbGwgYmUgdHJpZ2dlcmVkIGlmIHRoZSBqb2IgZmFpbHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYWxhcm06IGNsb3Vkd2F0Y2guQWxhcm07XG5cbiAgLyoqXG4gICAqIFRoZSBDb2RlQnVpbGQgcHJvamVjdCB0aGlzIGNvbnN0cnVjdCBjcmVhdGVzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IGNidWlsZC5JUHJvamVjdDtcblxuICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBBdXRvUHVsbFJlcXVlc3RQcm9wcztcblxuICBwcml2YXRlIHJlYWRvbmx5IGJhc2VCcmFuY2g6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBoZWFkU291cmNlOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXhwb3J0czogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEF1dG9QdWxsUmVxdWVzdFByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICB0aGlzLmJhc2VCcmFuY2ggPSBwcm9wcy5iYXNlPy5uYW1lID8/ICdtYXN0ZXInO1xuICAgIHRoaXMuaGVhZFNvdXJjZSA9IHByb3BzLmhlYWQuc291cmNlID8/IHRoaXMuYmFzZUJyYW5jaDtcbiAgICB0aGlzLmV4cG9ydHMgPSBwcm9wcy5leHBvcnRzID8/IHt9O1xuXG4gICAgZm9yIChjb25zdCBleCBvZiBPYmplY3Qua2V5cyh0aGlzLmV4cG9ydHMpKSB7XG4gICAgICBpZiAodGhpcy5oZWFkU291cmNlLmluY2x1ZGVzKGBcXCR7JHtleH19YCkgfHwgdGhpcy5oZWFkU291cmNlLmluY2x1ZGVzKGBcXCQke2V4fWApKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaGVhZCBzb3VyY2UgKCR7dGhpcy5oZWFkU291cmNlfSkgY2Fubm90IGNvbnRhaW4gZHluYW1pYyBleHBvcnRzOiAke2V4fWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHNzaEtleVNlY3JldCA9IHByb3BzLnJlcG8uc3NoS2V5U2VjcmV0O1xuICAgIGNvbnN0IGNvbW1pdEVtYWlsID0gcHJvcHMucmVwby5jb21taXRFbWFpbDtcbiAgICBjb25zdCBjb21taXRVc2VybmFtZSA9IHByb3BzLnJlcG8uY29tbWl0VXNlcm5hbWU7XG4gICAgY29uc3QgY2xvbmVEZXB0aCA9IHByb3BzLmNsb25lRGVwdGggPT09IHVuZGVmaW5lZCA/IDAgOiBwcm9wcy5jbG9uZURlcHRoO1xuXG4gICAgY29uc3QgbmVlZHNHaXRIdWJUb2tlblNlY3JldCA9ICF0aGlzLnByb3BzLnB1c2hPbmx5IHx8ICEhdGhpcy5wcm9wcy5za2lwSWZPcGVuUHJzV2l0aExhYmVscztcblxuICAgIGxldCBjb21tYW5kczogc3RyaW5nW10gPSBbXG5cbiAgICAgIC4uLnRoaXMuY29uZmlndXJlU3NoQWNjZXNzKCksXG5cbiAgICAgIC8vIHdoZW4gdGhlIGpvYiBpcyB0cmlnZ2VyZWQgYXMgYSBDb2RlUGlwZWxpbmUgYWN0aW9uLCB0aGUgd29ya2luZyBkaXJlY3RvcnlcbiAgICAgIC8vIGlzIHBvcHVsYXRlZCB3aXRoIHRoZSBvdXRwdXQgYXJ0aWZhY3Qgb2YgdGhlIENvZGVDb21taXRTb3VyY2VBY3Rpb24sIHdoaWNoIGRvZXNuJ3QgaW5jbHVkZVxuICAgICAgLy8gdGhlIC5naXQgZGlyZWN0b3J5IGluIHRoZSB6aXBwZWQgczMgYXJjaGl2ZS4gKFllYWgsIGZ1biBzdHVmZikuXG4gICAgICAvLyBzZWUgaHR0cHM6Ly9pdG5leHQuaW8vaG93LXRvLWFjY2Vzcy1naXQtbWV0YWRhdGEtaW4tY29kZWJ1aWxkLXdoZW4tdXNpbmctY29kZXBpcGVsaW5lLWNvZGVjb21taXQtY2VhY2YyYzVjMWRjXG4gICAgICAuLi50aGlzLmNsb25lSWZOZWVkZWQoKSxcbiAgICBdO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuY29uZGl0aW9uKSB7XG4gICAgICAvLyB0aGVyZSdzIG5vIHdheSB0byBzdG9wIGEgQnVpbGRTcGVjIGV4ZWN1dGlvbiBoYWxmd2F5IHRocm91Z2ggd2l0aG91dCB0aHJvd2luZyBhbiBlcnJvci4gQmVsaWV2ZSBtZSwgSVxuICAgICAgLy8gY2hlY2tlZCB0aGUgY29kZS4gSW5zdGVhZCB3ZSBkZWZpbmUgYSB2YXJpYWJsZSB0aGF0IHdlIHdpbGwgc3dpdGNoIGFsbCBvdGhlciBsaW5lcyBvbi9vZmYuXG4gICAgICBjb21tYW5kcy5wdXNoKGAke3RoaXMucHJvcHMuY29uZGl0aW9ufSBgICtcbiAgICAgICcmJiB7IGVjaG8gXFwnU2tpcCBjb25kaXRpb24gaXMgbWV0LCBza2lwcGluZy4uLlxcJyAmJiBleHBvcnQgU0tJUD10cnVlOyB9ICcgK1xuICAgICAgJ3x8IHsgZWNobyBcXCdTa2lwIGNvbmRpdGlvbiBpcyBub3QgbWV0LCBjb250aW51aW5nLi4uXFwnICYmIGV4cG9ydCBTS0lQPWZhbHNlOyB9Jyk7XG4gICAgfVxuXG4gICAgLy8gcmVhZCB0aGUgdG9rZW5cbiAgICBpZiAobmVlZHNHaXRIdWJUb2tlblNlY3JldCkge1xuICAgICAgY29tbWFuZHMucHVzaChgZXhwb3J0IEdJVEhVQl9UT0tFTj0kKGF3cyBzZWNyZXRzbWFuYWdlciBnZXQtc2VjcmV0LXZhbHVlIC0tc2VjcmV0LWlkIFwiJHt0aGlzLnByb3BzLnJlcG8udG9rZW5TZWNyZXRBcm59XCIgLS1vdXRwdXQ9dGV4dCAtLXF1ZXJ5PVNlY3JldFN0cmluZylgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm9wcy5za2lwSWZPcGVuUHJzV2l0aExhYmVscykge1xuICAgICAgY29tbWFuZHMucHVzaCguLi50aGlzLnNraXBJZk9wZW5QcnModGhpcy5wcm9wcy5za2lwSWZPcGVuUHJzV2l0aExhYmVscykpO1xuICAgIH1cblxuICAgIGNvbW1hbmRzLnB1c2goXG4gICAgICAuLi50aGlzLmNyZWF0ZUhlYWQoKSxcbiAgICAgIC4uLnRoaXMucHVzaEhlYWQoKSxcbiAgICApO1xuXG4gICAgaWYgKCF0aGlzLnByb3BzLnB1c2hPbmx5KSB7XG4gICAgICBjb21tYW5kcy5wdXNoKC4uLnRoaXMuY3JlYXRlUHVsbFJlcXVlc3QoKSk7XG4gICAgfVxuXG4gICAgLy8gdG9nZ2xlIGFsbCBjb21tYW5kcyBhY2NvcmRpbmcgdG8gdGhlIFNLSVAgdmFyaWFibGUuXG4gICAgY29tbWFuZHMgPSBjb21tYW5kcy5tYXAoKGNvbW1hbmQ6IHN0cmluZykgPT4gYCRTS0lQIHx8IHsgJHtjb21tYW5kfSA7IH1gKTtcblxuICAgIC8vIGludGlhbGx5IGFsbCBjb21tYW5kcyBhcmUgZW5hYmxlZC5cbiAgICBjb21tYW5kcy51bnNoaWZ0KCdleHBvcnQgU0tJUD1mYWxzZScpO1xuXG4gICAgdGhpcy5wcm9qZWN0ID0gbmV3IGNidWlsZC5Qcm9qZWN0KHRoaXMsICdQdWxsUmVxdWVzdCcsIHtcbiAgICAgIHNvdXJjZTogcHJvcHMucmVwby5jcmVhdGVCdWlsZFNvdXJjZSh0aGlzLCBmYWxzZSwgeyBjbG9uZURlcHRoIH0pLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLnByb2plY3REZXNjcmlwdGlvbixcbiAgICAgIGVudmlyb25tZW50OiBjcmVhdGVCdWlsZEVudmlyb25tZW50KHByb3BzLmJ1aWxkID8/IHt9KSxcbiAgICAgIGJ1aWxkU3BlYzogY2J1aWxkLkJ1aWxkU3BlYy5mcm9tT2JqZWN0KHtcbiAgICAgICAgdmVyc2lvbjogJzAuMicsXG4gICAgICAgIHBoYXNlczoge1xuICAgICAgICAgIHByZV9idWlsZDoge1xuICAgICAgICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgICAgICAgYGdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5lbWFpbCBcIiR7Y29tbWl0RW1haWx9XCJgLFxuICAgICAgICAgICAgICBgZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLm5hbWUgXCIke2NvbW1pdFVzZXJuYW1lfVwiYCxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBidWlsZDogeyBjb21tYW5kcyB9LFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgICBzc21TZXNzaW9uUGVybWlzc2lvbnM6IHRydWUsXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5wcm9qZWN0LnJvbGUpIHtcbiAgICAgIHBlcm1pc3Npb25zLmdyYW50U2VjcmV0UmVhZChzc2hLZXlTZWNyZXQsIHRoaXMucHJvamVjdC5yb2xlKTtcblxuICAgICAgaWYgKG5lZWRzR2l0SHViVG9rZW5TZWNyZXQpIHtcbiAgICAgICAgcGVybWlzc2lvbnMuZ3JhbnRTZWNyZXRSZWFkKHsgc2VjcmV0QXJuOiBwcm9wcy5yZXBvLnRva2VuU2VjcmV0QXJuIH0sIHRoaXMucHJvamVjdC5yb2xlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvcHMuc2NoZWR1bGVFeHByZXNzaW9uKSB7XG4gICAgICBjb25zdCBzY2hlZHVsZSA9IGV2ZW50cy5TY2hlZHVsZS5leHByZXNzaW9uKHByb3BzLnNjaGVkdWxlRXhwcmVzc2lvbik7XG4gICAgICBuZXcgZXZlbnRzLlJ1bGUodGhpcywgJ1NjaGVkdWxlcicsIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdTY2hlZHVsZXMgYW4gYXV0b21hdGljIFB1bGwgUmVxdWVzdCBmb3IgdGhpcyByZXBvc2l0b3J5JyxcbiAgICAgICAgc2NoZWR1bGUsXG4gICAgICAgIHRhcmdldHM6IFtuZXcgZXZlbnRzX3RhcmdldHMuQ29kZUJ1aWxkUHJvamVjdCh0aGlzLnByb2plY3QpXSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuYWxhcm0gPSB0aGlzLnByb2plY3QubWV0cmljRmFpbGVkQnVpbGRzKHsgcGVyaW9kOiBEdXJhdGlvbi5zZWNvbmRzKDMwMCkgfSkuY3JlYXRlQWxhcm0odGhpcywgJ0F1dG9QdWxsUmVxdWVzdEZhaWxlZEFsYXJtJywge1xuICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDEsXG4gICAgICB0cmVhdE1pc3NpbmdEYXRhOiBjbG91ZHdhdGNoLlRyZWF0TWlzc2luZ0RhdGEuSUdOT1JFLFxuICAgIH0pO1xuICB9XG4gIHByaXZhdGUgY3JlYXRlSGVhZCgpOiBzdHJpbmdbXSB7XG5cbiAgICByZXR1cm4gW1xuICAgICAgLy8gY2hlY2sgaWYgaGVhZCBicmFuY2ggZXhpc3RzXG4gICAgICBgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBvcmlnaW4vJHt0aGlzLnByb3BzLmhlYWQubmFtZX0gYCArXG5cbiAgICAgIC8vIGNoZWNrb3V0IGFuZCBtZXJnZSBpZiBpdCBkb2VzICh0aGlzIG1pZ2h0IGZhaWwgZHVlIHRvIG1lcmdlIGNvbmZsaWN0cylcbiAgICAgIGAmJiB7IGdpdCBjaGVja291dCAke3RoaXMucHJvcHMuaGVhZC5uYW1lfSAmJiBnaXQgbWVyZ2UgJHt0aGlzLmhlYWRTb3VyY2V9ICYmICR7dGhpcy5ydW5Db21tYW5kcygpfTsgIH0gYCArXG5cbiAgICAgIC8vIGNyZWF0ZSBpZiBpdCBkb2VzbnQuIHdlIGluaXRpYWxseSB1c2UgJ3RlbXAnIHRvIGFsbG93IHVzaW5nIGV4cG9ydHMgaW4gdGhlIGhlYWQgYnJhbmNoIG5hbWUuIChlLmcgYnVtcC8kVkVSU0lPTilcbiAgICAgIGB8fCB7IGdpdCBjaGVja291dCAke3RoaXMuaGVhZFNvdXJjZX0gJiYgZ2l0IGNoZWNrb3V0IC1iIHRlbXAgJiYgJHt0aGlzLnJ1bkNvbW1hbmRzKCl9ICYmIGdpdCBicmFuY2ggLU0gJHt0aGlzLnByb3BzLmhlYWQubmFtZX07IH1gLFxuXG4gICAgXTtcblxuICB9XG5cbiAgcHJpdmF0ZSBjbG9uZUlmTmVlZGVkKCk6IHN0cmluZ1tdIHtcblxuICAgIHJldHVybiBbXG4gICAgICAvLyBjaGVjayBpZiAuZ2l0IGV4aXN0XG4gICAgICAnbHMgLmdpdCAnICtcblxuICAgICAgLy8gYWxsIGdvb2RcbiAgICAgICcmJiB7IGVjaG8gXCIuZ2l0IGRpcmVjdG9yeSBleGlzdHNcIjsgIH0gJyArXG5cbiAgICAgIC8vIGNsb25lIGlmIGl0IGRvZXNuJ3RcbiAgICAgIGB8fCB7IGVjaG8gXCIuZ2l0IGRpcmVjdG9yeSBkb2Vzbm90IGV4aXN0IC0gY2xvbmluZy4uLlwiICYmIGdpdCBpbml0IC4gJiYgZ2l0IHJlbW90ZSBhZGQgb3JpZ2luIGdpdEBnaXRodWIuY29tOiR7dGhpcy5wcm9wcy5yZXBvLm93bmVyfS8ke3RoaXMucHJvcHMucmVwby5yZXBvfS5naXQgJiYgZ2l0IGZldGNoICYmIGdpdCByZXNldCAtLWhhcmQgb3JpZ2luLyR7dGhpcy5iYXNlQnJhbmNofSAmJiBnaXQgYnJhbmNoIC1NICR7dGhpcy5iYXNlQnJhbmNofSAmJiBnaXQgY2xlYW4gLWZxZHg7IH1gLFxuXG4gICAgXTtcblxuICB9XG5cbiAgcHJpdmF0ZSBydW5Db21tYW5kcygpOiBzdHJpbmcge1xuXG4gICAgY29uc3QgdXNlckNvbW1hbmRzID0gdGhpcy5wcm9wcy5jb21tYW5kcyA/PyBbXTtcbiAgICBjb25zdCBleHBvcnRzID0gT2JqZWN0LmVudHJpZXModGhpcy5leHBvcnRzKS5tYXAoZW50cnkgPT4gYGV4cG9ydCAke2VudHJ5WzBdfT0kKCR7ZW50cnlbMV19KWApO1xuXG4gICAgcmV0dXJuIFtcblxuICAgICAgLi4udXNlckNvbW1hbmRzLFxuXG4gICAgICAvLyBleHBvcnRzIHNob3VsZCBiZSBleGVjdXRlZCBpbW1lZGlhdGVseSBhZnRlciB0aGUgdXNlciBjb21tYW5kcyAobm90IGJlZm9yZSlcbiAgICAgIC8vIGJlY2F1c2UgdGhleSBtaWdodCBuZWVkIGFjY2VzcyB0byBhcnRpZmFjdHMgcHJvZHVjZWQgYnkgdGhlbSAoZS5nIHZlcnNpb24gZmlsZSkuXG4gICAgICAuLi5leHBvcnRzLFxuXG4gICAgICAnZWNobyBGaW5pc2hlZCBydW5uaW5nIHVzZXIgY29tbWFuZHMnLFxuICAgIF0uam9pbignICYmICcpO1xuXG4gIH1cblxuICBwcml2YXRlIGNvbmZpZ3VyZVNzaEFjY2VzcygpOiBzdHJpbmdbXSB7XG5cbiAgICByZXR1cm4gW1xuICAgICAgJ2F3cyBzZWNyZXRzbWFuYWdlciBnZXQtc2VjcmV0LXZhbHVlICdcbiAgICAgICAgKyBgLS1zZWNyZXQtaWQgXCIke3RoaXMucHJvcHMucmVwby5zc2hLZXlTZWNyZXQuc2VjcmV0QXJufVwiIGBcbiAgICAgICAgKyAnLS1vdXRwdXQ9dGV4dCAtLXF1ZXJ5PVNlY3JldFN0cmluZyA+IH4vLnNzaC9pZF9yc2EnLFxuICAgICAgJ21rZGlyIC1wIH4vLnNzaCcsXG4gICAgICAnY2htb2QgMDYwMCB+Ly5zc2gvaWRfcnNhIH4vLnNzaC9jb25maWcnLFxuICAgICAgJ3NzaC1rZXlzY2FuIC10IHJzYSBnaXRodWIuY29tID4+IH4vLnNzaC9rbm93bl9ob3N0cycsXG4gICAgXTtcblxuICB9XG5cbiAgcHJpdmF0ZSBwdXNoSGVhZCgpOiBzdHJpbmdbXSB7XG4gICAgLy8gV2Ugd2lsbCBkbyBub3RoaW5nIGFuZCBzZXQgYFNLSVA9dHJ1ZWAgaWYgdGhlIGhlYWQgcmVmIGlzIGFuIGFuY2VzdG9yIG9mIHRoZSBiYXNlIGJyYW5jaCAobm8gUFIgY291bGQgYmUgY3JlYXRlZClcbiAgICByZXR1cm4gW1xuICAgICAgYGdpdCBtZXJnZS1iYXNlIC0taXMtYW5jZXN0b3IgJHt0aGlzLnByb3BzLmhlYWQubmFtZX0gb3JpZ2luLyR7dGhpcy5iYXNlQnJhbmNofWBcbiAgICAgICAgKyBgICYmIHsgZWNobyBcIlNraXBwaW5nOiAke3RoaXMucHJvcHMuaGVhZC5uYW1lfSBpcyBhbiBhbmNlc3RvciBvZiBvcmlnaW4vJHt0aGlzLmJhc2VCcmFuY2h9XCI7IGV4cG9ydCBTS0lQPXRydWU7IH1gXG4gICAgICAgICsgYCB8fCB7IGVjaG8gXCJQdXNoaW5nOiAke3RoaXMucHJvcHMuaGVhZC5uYW1lfSBpcyBhaGVhZCBvZiBvcmlnaW4vJHt0aGlzLmJhc2VCcmFuY2h9XCI7IGV4cG9ydCBTS0lQPWZhbHNlOyB9YCxcbiAgICAgIGBnaXQgcmVtb3RlIGFkZCBvcmlnaW5fc3NoICR7dGhpcy5wcm9wcy5yZXBvLnJlcG9zaXRvcnlVcmxTc2h9YCxcbiAgICAgIC8vIE5lZWQgYC0tYXRvbWljYCwgb3RoZXJ3aXNlIGBnaXQgcHVzaGAgbWlnaHQgc3VjY2Vzc2Z1bGx5IHB1c2ggdGhlIHRhZ3MgYnV0IG5vdCB0byBgbWFpbmAuXG4gICAgICBgZ2l0IHB1c2ggLS1hdG9taWMgLS1mb2xsb3ctdGFncyBvcmlnaW5fc3NoICR7dGhpcy5wcm9wcy5oZWFkLm5hbWV9OiR7dGhpcy5wcm9wcy5oZWFkLm5hbWV9YCxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBza2lwSWZPcGVuUHJzKGxhYmVsczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgZmlsdGVycyA9IFtcbiAgICAgIGByZXBvOiR7dGhpcy5wcm9wcy5yZXBvLm93bmVyfS8ke3RoaXMucHJvcHMucmVwby5yZXBvfWAsXG4gICAgICAnaXM6cHInLFxuICAgICAgJ2lzOm9wZW4nLFxuICAgICAgLi4ubGFiZWxzLm1hcChsID0+IGBsYWJlbDoke2x9YCksXG4gICAgXTtcblxuICAgIHJldHVybiBbXG4gICAgICBgJHt0aGlzLmdpdGh1YkN1cmxHZXQoYC9zZWFyY2gvaXNzdWVzP3E9JHtlbmNvZGVVUklDb21wb25lbnQoZmlsdGVycy5qb2luKCcgJykpfWAsICctbyBzZWFyY2guanNvbicpfWAsXG4gICAgICAnbm9kZSAtZSBcXCdwcm9jZXNzLmV4aXRDb2RlID0gcmVxdWlyZShcIi4vc2VhcmNoLmpzb25cIikudG90YWxfY291bnRcXCcnXG4gICAgICAgICsgYCB8fCB7IGVjaG8gXCJGb3VuZCBvcGVuIFBScyB3aXRoIGxhYmVsICR7bGFiZWxzfSwgc2tpcHBpbmcgUFIuXCI7IGV4cG9ydCBTS0lQPXRydWU7IH1gLFxuICAgIF07XG4gIH1cblxuXG4gIHByaXZhdGUgY3JlYXRlUHVsbFJlcXVlc3QoKTogc3RyaW5nW10ge1xuXG4gICAgY29uc3QgaGVhZCA9IHRoaXMucHJvcHMuaGVhZC5uYW1lO1xuICAgIGNvbnN0IGJhc2UgPSB0aGlzLmJhc2VCcmFuY2g7XG5cbiAgICBpZiAoaGVhZCA9PT0gYmFzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBIZWFkIGJyYW5jaCAoXCIke2Jhc2V9XCIpIGlzIHRoZSBzYW1lIGFzIHRoZSBiYXNlIGJyYW5jaCAoXCIke2hlYWR9XCIpYCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvcHMgPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHRpdGxlID0gcHJvcHMudGl0bGUgPz8gYE1lcmdlICR7aGVhZH0gdG8gJHtiYXNlfWA7XG4gICAgY29uc3QgYm9keSA9IHRoaXMucHJvcHMuYm9keSA/PyAnJztcblxuICAgIGNvbnN0IGNyZWF0ZVJlcXVlc3QgPSB7IHRpdGxlLCBiYXNlLCBoZWFkIH07XG5cbiAgICBjb25zdCBjb21tYW5kcyA9IFtdO1xuXG4gICAgLy8gY3JlYXRlIHRoZSBQUlxuICAgIGNvbW1hbmRzLnB1c2goYCR7dGhpcy5naXRodWJDdXJsKCcvcHVsbHMnLCAnLVggUE9TVCAtbyBwci5qc29uJywgY3JlYXRlUmVxdWVzdCl9ICYmIGV4cG9ydCBQUl9OVU1CRVI9JChub2RlIC1wICdyZXF1aXJlKFwiLi9wci5qc29uXCIpLm51bWJlcicpYCk7XG5cbiAgICAvLyB1cGRhdGUgdGhlIGJvZHlcbiAgICBjb21tYW5kcy5wdXNoKHRoaXMuZ2l0aHViQ3VybCgnL3B1bGxzLyRQUl9OVU1CRVInLCAnLVggUEFUQ0gnLCB7IGJvZHk6IGJvZHkgfSkpO1xuXG4gICAgaWYgKHRoaXMucHJvcHMubGFiZWxzICYmIHRoaXMucHJvcHMubGFiZWxzLmxlbmd0aCA+IDApIHtcbiAgICAvLyBhcHBseSBsYWJlbHMuXG4gICAgICBjb21tYW5kcy5wdXNoKHRoaXMuZ2l0aHViQ3VybCgnL2lzc3Vlcy8kUFJfTlVNQkVSL2xhYmVscycsICctWCBQT1NUJywgeyBsYWJlbHM6IHRoaXMucHJvcHMubGFiZWxzIH0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tbWFuZHM7XG5cbiAgfVxuXG4gIHByaXZhdGUgZ2l0aHViQ3VybCh1cmk6IHN0cmluZywgY29tbWFuZDogc3RyaW5nLCByZXF1ZXN0OiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBbXG4gICAgICAnY3VybCAtLWZhaWwnLFxuICAgICAgY29tbWFuZCxcbiAgICAgICctLWhlYWRlciBcIkF1dGhvcml6YXRpb246IHRva2VuICRHSVRIVUJfVE9LRU5cIicsXG4gICAgICAnLS1oZWFkZXIgXCJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb25cIicsXG4gICAgICBgLWQgJHtKU09OLnN0cmluZ2lmeShKU09OLnN0cmluZ2lmeShyZXF1ZXN0KSl9YCxcbiAgICAgIGBodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zLyR7dGhpcy5wcm9wcy5yZXBvLm93bmVyfS8ke3RoaXMucHJvcHMucmVwby5yZXBvfSR7dXJpfWAsXG4gICAgXS5qb2luKCcgJyk7XG4gIH1cblxuICBwcml2YXRlIGdpdGh1YkN1cmxHZXQodXJpOiBzdHJpbmcsIGNvbW1hbmQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFtcbiAgICAgICdjdXJsIC0tZmFpbCcsXG4gICAgICBjb21tYW5kLFxuICAgICAgJy0taGVhZGVyIFwiQXV0aG9yaXphdGlvbjogdG9rZW4gJEdJVEhVQl9UT0tFTlwiJyxcbiAgICAgICctLWhlYWRlciBcIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvblwiJyxcbiAgICAgIGAnaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbSR7dXJpfSdgLFxuICAgIF0uam9pbignICcpO1xuICB9XG5cbn1cblxuIl19
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQU9xQjtBQUNyQiwyQ0FBdUM7QUFDdkMsNENBQTZFO0FBQzdFLDREQUE4QztBQTJMOUM7O0dBRUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsc0JBQVM7SUFrQjVDLFlBQVksTUFBaUIsRUFBRSxFQUFVLEVBQUUsS0FBMkI7O1FBQ3BFLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFBLE1BQUEsS0FBSyxDQUFDLElBQUksMENBQUUsSUFBSSxtQ0FBSSxRQUFRLENBQUM7UUFDL0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFBLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxtQ0FBSSxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBQSxLQUFLLENBQUMsT0FBTyxtQ0FBSSxFQUFFLENBQUM7UUFFbkMsS0FBSyxNQUFNLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMxQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUU7Z0JBQ2hGLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxVQUFVLHFDQUFxQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQzNGO1NBQ0Y7UUFFRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUM3QyxNQUFNLFdBQVcsR0FBRyxLQUFLLENB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QU0sR0FBRyxDQUFDLEVBQUU7WUFDdkQsZ0JBQWdCO1lBQ2QsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLDJCQUEyQixFQUFFLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN2RztRQUVELE9BQU8sUUFBUSxDQUFDO0lBRWxCLENBQUM7SUFFTyxVQUFVLENBQUMsR0FBVyxFQUFFLE9BQWUsRUFBRSxPQUFZO1FBQzNELE9BQU87WUFDTCxhQUFhO1lBQ2IsT0FBTztZQUNQLCtDQUErQztZQUMvQywyQ0FBMkM7WUFDM0MsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRTtZQUMvQyxnQ0FBZ0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLEVBQUU7U0FDdEYsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDZCxDQUFDO0lBRU8sYUFBYSxDQUFDLEdBQVcsRUFBRSxPQUFlO1FBQ2hELE9BQU87WUFDTCxhQUFhO1lBQ2IsT0FBTztZQUNQLCtDQUErQztZQUMvQywyQ0FBMkM7WUFDM0MsMEJBQTBCLEdBQUcsR0FBRztTQUNqQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNkLENBQUM7Q0FFRjtBQTdRRCwwQ0E2UUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEdXJhdGlvbixcbiAgYXdzX2Nsb3Vkd2F0Y2ggYXMgY2xvdWR3YXRjaCxcbiAgYXdzX2NvZGVidWlsZCBhcyBjYnVpbGQsXG4gIGF3c19ldmVudHMgYXMgZXZlbnRzLFxuICBhd3NfZXZlbnRzX3RhcmdldHMgYXMgZXZlbnRzX3RhcmdldHMsXG4gIGF3c19pYW0gYXMgaWFtLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEJ1aWxkRW52aXJvbm1lbnRQcm9wcywgY3JlYXRlQnVpbGRFbnZpcm9ubWVudCB9IGZyb20gJy4uL2J1aWxkLWVudic7XG5pbXBvcnQgKiBhcyBwZXJtaXNzaW9ucyBmcm9tICcuLi9wZXJtaXNzaW9ucyc7XG5pbXBvcnQgeyBXcml0YWJsZUdpdEh1YlJlcG8gfSBmcm9tICcuLi9yZXBvJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIFB1bGwgUmVxdWVzdCBKb2IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b1B1bGxSZXF1ZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgYmFzZSBicmFuY2ggb2YgdGhlIFBSLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnbWFzdGVyJ1xuICAgKi9cbiAgYmFzZT86IEJhc2U7XG5cbiAgLyoqXG4gICAqIFRydWUgaWYgeW91IG9ubHkgd2FudCB0byBwdXNoIHRoZSBoZWFkIGJyYW5jaCB3aXRob3V0IGNyZWF0aW5nIGEgUFIuXG4gICAqIFVzZWZ1bCB3aGVuIHVzZWQgYWxvbmcgd2l0aCAnY29tbWl0cycgdG8gZXhlY3V0ZSBhIGNvbW1pdC1hbmQtcHVzaCBhdXRvbWF0aWNhbGx5LlxuICAgKlxuICAgKiAvLyBUT0RPOiBDb25zaWRlciBtb3ZpbmcgdGhpcyBmdW5jdGlvbmFsaXR5IHRvIGEgc2VwYXJhdGUgY29uc3RydWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHVzaE9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaXRsZSBvZiB0aGUgUFIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBNZXJnZSAke2hlYWR9IHRvICR7YmFzZX1gXG4gICAqL1xuICB0aXRsZT86IHN0cmluZztcblxuICAvKipcbiAgICogQm9keSB0aGUgUFIuIE5vdGUgdGhhdCB0aGUgYm9keSBpcyB1cGRhdGVkIHBvc3QgUFIgY3JlYXRpb24sXG4gICAqIHRoaXMgbWVhbnMgeW91IGNhbiB1c2UgdGhlICRQUl9OVU1CRVIgZW52IHZhcmlhYmxlIHRvIHJlZmVyIHRvIHRoZSBQUiBpdHNlbGYuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gYm9keS5cbiAgICovXG4gIGJvZHk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExhYmVscyBhcHBsaWVkIHRvIHRoZSBQUi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBsYWJlbHMuXG4gICAqL1xuICBsYWJlbHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQnVpbGQgZW52aXJvbm1lbnQgZm9yIHRoZSBDb2RlQnVpbGQgam9iLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIGJ1aWxkPzogQnVpbGRFbnZpcm9ubWVudFByb3BzO1xuXG4gIC8qKlxuICAgKiBHaXQgY2xvbmUgZGVwdGguXG4gICAqXG4gICAqIEBkZWZhdWx0IDAgKGNsb25lcyB0aGUgZW50aXJlIHJlcG9zaXRvcnkgcmV2aXNpb25zKVxuICAgKi9cbiAgY2xvbmVEZXB0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogS2V5IHZhbHVlIHBhaXJzIG9mIHZhcmlhYmxlcyB0byBleHBvcnQuIFRoZXNlIHZhcmlhYmxlcyB3aWxsIGJlIGF2YWlsYWJsZSBmb3IgZHluYW1pYyBldmFsdWF0aW9uIGluIGFueVxuICAgKiBzdWJzZXF1ZW50IGNvbW1hbmQuXG4gICAqXG4gICAqIEtleSAtIFZhcmlhYmxlIG5hbWUgKGUuZyBWRVJTSU9OKVxuICAgKiBWYWx1ZSAtIENvbW1hbmQgdGhhdCBldmFsdWF0ZXMgdG8gdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSAoZS5nICdnaXQgZGVzY3JpYmUnKVxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKlxuICAgKiBDb25maWd1cmUgYW4gZXhwb3J0IGluIHRoZSBmb3JtIG9mOlxuICAgKlxuICAgKiB7ICdWRVJTSU9OJzogJ2dpdCBkZXNjcmliZScgfVxuICAgKlxuICAgKiBVc2UgdGhlICRWRVJTSU9OIHZhcmlhYmxlIGluIHRoZSBQUiB0aXRsZTogJ2Nob3JlKHJlbGVhc2UpOiAkVkVSU0lPTidcbiAgICpcbiAgICogTm90ZSB0aGF0IHRoZXNlIGV4cG9ydHMgYXJlIGV4ZWN1dGVkIGFmdGVyIHRoZSBgY29tbWFuZHNgIGV4ZWN1dGlvbixcbiAgICogc28gdGhleSBoYXZlIGFjY2VzcyB0byB0aGUgYXJ0aWZhY3RzIHNhaWQgY29tbWFuZHMgcHJvZHVjZSAoZS5nIHZlcnNpb24gYnVtcCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZXhwb3J0c1xuICAgKi9cbiAgZXhwb3J0cz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBzY2hlZHVsZSB0byBwcm9kdWNlIGFuIGF1dG9tYXRpYyBQUi5cbiAgICpcbiAgICogVGhlIGV4cHJlc3Npb24gY2FuIGJlIG9uZSBvZjpcbiAgICpcbiAgICogIC0gY3JvbiBleHByZXNzaW9uLCBzdWNoIGFzIFwiY3JvbigwIDEyICogKiA/ICopXCIgd2lsbCB0cmlnZ2VyIGV2ZXJ5IGRheSBhdCAxMnBtIFVUQ1xuICAgKiAgLSByYXRlIGV4cHJlc3Npb24sIHN1Y2ggYXMgXCJyYXRlKDEgZGF5KVwiIHdpbGwgdHJpZ2dlciBldmVyeSAyNCBob3VycyBmcm9tIHRoZSB0aW1lIG9mIGRlcGxveW1lbnRcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRXYXRjaC9sYXRlc3QvZXZlbnRzL1NjaGVkdWxlZEV2ZW50cy5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc2NoZWR1bGUsIHNob3VsZCBiZSB0cmlnZ2VyZWQgbWFudWFsbHkuXG4gICAqL1xuICBzY2hlZHVsZUV4cHJlc3Npb24/OiBzdHJpbmc7XG5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRvUHVsbFJlcXVlc3RQcm9wcyBleHRlbmRzIEF1dG9QdWxsUmVxdWVzdE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnkgdG8gY3JlYXRlIGEgUFIgaW4uXG4gICAqL1xuICByZXBvOiBXcml0YWJsZUdpdEh1YlJlcG87XG5cbiAgLyoqXG4gICAqIEEgc2V0IG9mIGNvbW1hbmRzIHRvIHJ1biBhZ2FpbnN0IHRoZSBoZWFkIGJyYW5jaC5cbiAgICogVXNlZnVsIGZvciB0aGluZ3MgbGlrZSB2ZXJzaW9uIGJ1bXBzIG9yIGFueSBhdXRvLWdlbmVyYXRlZCBjb21taXRzLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgeW91IGNhbm5vdCB1c2UgZXhwb3J0IGtleXMgaW4gdGhlc2UgY29tbWFuZHMgKFNlZSBgZXhwb3J0c2AgcHJvcGVydHkpXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gY29tbWFuZHMuXG4gICAqL1xuICBjb21tYW5kcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgaGVhZCBicmFuY2ggb2YgdGhlIFBSLlxuICAgKi9cbiAgaGVhZDogSGVhZDtcblxuICAvKipcbiAgICogVGhlIGV4aXQgY29kZSBvZiB0aGlzIGNvbW1hbmQgZGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0byBwcm9jZWVkIHdpdGggdGhlXG4gICAqIFBSIGNyZWF0aW9uLiBJZiBjb25maWd1cmVkLCB0aGlzIGNvbW1hbmQgaXMgdGhlIGZpcnN0IG9uZSB0byBydW4sIGFuZCBpZiBpdCBmYWlscywgYWxsXG4gICAqIG90aGVyIGNvbW1hbmRzIHdpbGwgYmUgc2tpcHBlZC5cbiAgICpcbiAgICogVGhpcyBjb21tYW5kIGlzIHRoZSBmaXJzdCB0byBleGVjdXRlLCBhbmQgc2hvdWxkIG5vdCBhc3N1bWUgYW55IHByZS1leGlzdGluZyBzdGF0ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjb25kaXRpb25cbiAgICovXG4gIGNvbmRpdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogSWYgYW55IFBSIGxhYmVsZWQgd2l0aCB0aGUgZ2l2ZW4gbGFiZWxzIGlzIHN0aWxsIG9wZW4sIG5vIG5ldyBQUiB3aWxsIGJlIGNyZWF0ZWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBkb24ndCBsb29rIGF0IG9wZW4gUFJzXG4gICAqL1xuICByZWFkb25seSBza2lwSWZPcGVuUHJzV2l0aExhYmVscz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBzdHJpbmcgZm9yIHRoZSBDb2RlQnVpbGQgcHJvamVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBwcm9qZWN0RGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY29uZmlndXJpbmcgdGhlIGJhc2UgYnJhbmNoIG9mIHRoZSBQUi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlIHtcblxuICAvKipcbiAgICogQnJhbmNoIG5hbWUuXG4gICAqXG4gICAqIFRoaXMgYnJhbmNoIG11c3QgZXhpc3QuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdtYXN0ZXInXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBoZWFkIGJyYW5jaCBvZiB0aGUgUFIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZCB7XG5cbiAgLyoqXG4gICAqIEJyYW5jaCBuYW1lLlxuICAgKlxuICAgKiBUaGlzIGJyYW5jaCB3aWxsIGJlIGNyZWF0ZWQgaWYgaXQgZG9lc24ndCBleGlzdC5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSBzaGEgb2YgdGhlIGJyYW5jaC5cbiAgICpcbiAgICogSWYgdGhlIGdpdmVuIGJyYW5jaCBhbHJlYWR5IGV4aXN0cywgdGhpcyBzaGEgd2lsbCBiZSBhdXRvLW1lcmdlZCBvbnRvIGl0LiBOb3RlIHRoYXQgaW4gc3VjaCBhIGNhc2UsXG4gICAqIHRoZSBQUiBjcmVhdGlvbiBtaWdodCBmYWlsIGluIGNhc2UgdGhlcmUgYXJlIG1lcmdlIGNvbmZsaWN0cy5cbiAgICpcbiAgICogSWYgdGhlIGdpdmVuIGJyYW5jaCBkb2Vzbid0IGV4aXN0LCB0aGUgbmV3bHkgY3JlYXRlZCBicmFuY2ggd2lsbCBiZSBiYXNlZCBvZiB0aGlzIGhhc2guXG4gICAqXG4gICAqIE5vdGUgdGhhdCBkeW5hbWljIGV4cG9ydHMgYXJlIG5vdCBhbGxvd2VkIGZvciB0aGlzIHByb3BlcnR5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBiYXNlIGJyYW5jaCBvZiB0aGUgcHIuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2U/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIENvZGVCdWlsZCBqb2IgdGhhdCwgd2hlbiB0cmlnZ2VyZWQsIG9wZW5zIGEgR2l0SHViIFB1bGwgUmVxdWVzdC5cbiAqL1xuZXhwb3J0IGNsYXNzIEF1dG9QdWxsUmVxdWVzdCBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgLyoqXG4gICAqIENsb3VkV2F0Y2ggYWxhcm0gdGhhdCB3aWxsIGJlIHRyaWdnZXJlZCBpZiB0aGUgam9iIGZhaWxzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFsYXJtOiBjbG91ZHdhdGNoLkFsYXJtO1xuXG4gIC8qKlxuICAgKiBUaGUgQ29kZUJ1aWxkIHByb2plY3QgdGhpcyBjb25zdHJ1Y3QgY3JlYXRlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuSVByb2plY3Q7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm9wczogQXV0b1B1bGxSZXF1ZXN0UHJvcHM7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBiYXNlQnJhbmNoOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGVhZFNvdXJjZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGV4cG9ydHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBdXRvUHVsbFJlcXVlc3RQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgaWQpO1xuXG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgdGhpcy5iYXNlQnJhbmNoID0gcHJvcHMuYmFzZT8ubmFtZSA/PyAnbWFzdGVyJztcbiAgICB0aGlzLmhlYWRTb3VyY2UgPSBwcm9wcy5oZWFkLnNvdXJjZSA/PyB0aGlzLmJhc2VCcmFuY2g7XG4gICAgdGhpcy5leHBvcnRzID0gcHJvcHMuZXhwb3J0cyA/PyB7fTtcblxuICAgIGZvciAoY29uc3QgZXggb2YgT2JqZWN0LmtleXModGhpcy5leHBvcnRzKSkge1xuICAgICAgaWYgKHRoaXMuaGVhZFNvdXJjZS5pbmNsdWRlcyhgXFwkeyR7ZXh9fWApIHx8IHRoaXMuaGVhZFNvdXJjZS5pbmNsdWRlcyhgXFwkJHtleH1gKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGhlYWQgc291cmNlICgke3RoaXMuaGVhZFNvdXJjZX0pIGNhbm5vdCBjb250YWluIGR5bmFtaWMgZXhwb3J0czogJHtleH1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzc2hLZXlTZWNyZXQgPSBwcm9wcy5yZXBvLnNzaEtleVNlY3JldDtcbiAgICBjb25zdCBjb21taXRFbWFpbCA9IHByb3BzLnJlcG8uY29tbWl0RW1haWw7XG4gICAgY29uc3QgY29tbWl0VXNlcm5hbWUgPSBwcm9wcy5yZXBvLmNvbW1pdFVzZXJuYW1lO1xuICAgIGNvbnN0IGNsb25lRGVwdGggPSBwcm9wcy5jbG9uZURlcHRoID09PSB1bmRlZmluZWQgPyAwIDogcHJvcHMuY2xvbmVEZXB0aDtcblxuICAgIGNvbnN0IG5lZWRzR2l0SHViVG9rZW5TZWNyZXQgPSAhdGhpcy5wcm9wcy5wdXNoT25seSB8fCAhIXRoaXMucHJvcHMuc2tpcElmT3BlblByc1dpdGhMYWJlbHM7XG5cbiAgICBsZXQgY29tbWFuZHM6IHN0cmluZ1tdID0gW1xuXG4gICAgICAuLi50aGlzLmNvbmZpZ3VyZVNzaEFjY2VzcygpLFxuXG4gICAgICAvLyB3aGVuIHRoZSBqb2IgaXMgdHJpZ2dlcmVkIGFzIGEgQ29kZVBpcGVsaW5lIGFjdGlvbiwgdGhlIHdvcmtpbmcgZGlyZWN0b3J5XG4gICAgICAvLyBpcyBwb3B1bGF0ZWQgd2l0aCB0aGUgb3V0cHV0IGFydGlmYWN0IG9mIHRoZSBDb2RlQ29tbWl0U291cmNlQWN0aW9uLCB3aGljaCBkb2Vzbid0IGluY2x1ZGVcbiAgICAgIC8vIHRoZSAuZ2l0IGRpcmVjdG9yeSBpbiB0aGUgemlwcGVkIHMzIGFyY2hpdmUuIChZZWFoLCBmdW4gc3R1ZmYpLlxuICAgICAgLy8gc2VlIGh0dHBzOi8vaXRuZXh0LmlvL2hvdy10by1hY2Nlc3MtZ2l0LW1ldGFkYXRhLWluLWNvZGVidWlsZC13aGVuLXVzaW5nLWNvZGVwaXBlbGluZS1jb2RlY29tbWl0LWNlYWNmMmM1YzFkY1xuICAgICAgLi4udGhpcy5jbG9uZUlmTmVlZGVkKCksXG4gICAgXTtcblxuICAgIGlmICh0aGlzLnByb3BzLmNvbmRpdGlvbikge1xuICAgICAgLy8gdGhlcmUncyBubyB3YXkgdG8gc3RvcCBhIEJ1aWxkU3BlYyBleGVjdXRpb24gaGFsZndheSB0aHJvdWdoIHdpdGhvdXQgdGhyb3dpbmcgYW4gZXJyb3IuIEJlbGlldmUgbWUsIElcbiAgICAgIC8vIGNoZWNrZWQgdGhlIGNvZGUuIEluc3RlYWQgd2UgZGVmaW5lIGEgdmFyaWFibGUgdGhhdCB3ZSB3aWxsIHN3aXRjaCBhbGwgb3RoZXIgbGluZXMgb24vb2ZmLlxuICAgICAgY29tbWFuZHMucHVzaChgJHt0aGlzLnByb3BzLmNvbmRpdGlvbn0gYCArXG4gICAgICAnJiYgeyBlY2hvIFxcJ1NraXAgY29uZGl0aW9uIGlzIG1ldCwgc2tpcHBpbmcuLi5cXCcgJiYgZXhwb3J0IFNLSVA9dHJ1ZTsgfSAnICtcbiAgICAgICd8fCB7IGVjaG8gXFwnU2tpcCBjb25kaXRpb24gaXMgbm90IG1ldCwgY29udGludWluZy4uLlxcJyAmJiBleHBvcnQgU0tJUD1mYWxzZTsgfScpO1xuICAgIH1cblxuICAgIC8vIHJlYWQgdGhlIHRva2VuXG4gICAgaWYgKG5lZWRzR2l0SHViVG9rZW5TZWNyZXQpIHtcbiAgICAgIGNvbW1hbmRzLnB1c2goYGV4cG9ydCBHSVRIVUJfVE9LRU49JChhd3Mgc2VjcmV0c21hbmFnZXIgZ2V0LXNlY3JldC12YWx1ZSAtLXNlY3JldC1pZCBcIiR7dGhpcy5wcm9wcy5yZXBvLnRva2VuU2VjcmV0QXJufVwiIC0tb3V0cHV0PXRleHQgLS1xdWVyeT1TZWNyZXRTdHJpbmcpYCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvcHMuc2tpcElmT3BlblByc1dpdGhMYWJlbHMpIHtcbiAgICAgIGNvbW1hbmRzLnB1c2goLi4udGhpcy5za2lwSWZPcGVuUHJzKHRoaXMucHJvcHMuc2tpcElmT3BlblByc1dpdGhMYWJlbHMpKTtcbiAgICB9XG5cbiAgICBjb21tYW5kcy5wdXNoKFxuICAgICAgLi4udGhpcy5jcmVhdGVIZWFkKCksXG4gICAgICAuLi50aGlzLnB1c2hIZWFkKCksXG4gICAgKTtcblxuICAgIGlmICghdGhpcy5wcm9wcy5wdXNoT25seSkge1xuICAgICAgY29tbWFuZHMucHVzaCguLi50aGlzLmNyZWF0ZVB1bGxSZXF1ZXN0KCkpO1xuICAgIH1cblxuICAgIC8vIHRvZ2dsZSBhbGwgY29tbWFuZHMgYWNjb3JkaW5nIHRvIHRoZSBTS0lQIHZhcmlhYmxlLlxuICAgIGNvbW1hbmRzID0gY29tbWFuZHMubWFwKChjb21tYW5kOiBzdHJpbmcpID0+IGAkU0tJUCB8fCB7ICR7Y29tbWFuZH0gOyB9YCk7XG5cbiAgICAvLyBpbnRpYWxseSBhbGwgY29tbWFuZHMgYXJlIGVuYWJsZWQuXG4gICAgY29tbWFuZHMudW5zaGlmdCgnZXhwb3J0IFNLSVA9ZmFsc2UnKTtcblxuICAgIHRoaXMucHJvamVjdCA9IG5ldyBjYnVpbGQuUHJvamVjdCh0aGlzLCAnUHVsbFJlcXVlc3QnLCB7XG4gICAgICBzb3VyY2U6IHByb3BzLnJlcG8uY3JlYXRlQnVpbGRTb3VyY2UodGhpcywgZmFsc2UsIHsgY2xvbmVEZXB0aCB9KSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5wcm9qZWN0RGVzY3JpcHRpb24sXG4gICAgICBlbnZpcm9ubWVudDogY3JlYXRlQnVpbGRFbnZpcm9ubWVudChwcm9wcy5idWlsZCA/PyB7fSksXG4gICAgICBidWlsZFNwZWM6IGNidWlsZC5CdWlsZFNwZWMuZnJvbU9iamVjdCh7XG4gICAgICAgIHZlcnNpb246ICcwLjInLFxuICAgICAgICBwaGFzZXM6IHtcbiAgICAgICAgICBwcmVfYnVpbGQ6IHtcbiAgICAgICAgICAgIGNvbW1hbmRzOiBbXG4gICAgICAgICAgICAgIGBnaXQgY29uZmlnIC0tZ2xvYmFsIHVzZXIuZW1haWwgXCIke2NvbW1pdEVtYWlsfVwiYCxcbiAgICAgICAgICAgICAgYGdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5uYW1lIFwiJHtjb21taXRVc2VybmFtZX1cImAsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYnVpbGQ6IHsgY29tbWFuZHMgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgc3NtU2Vzc2lvblBlcm1pc3Npb25zOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgLy8gQWx3YXlzIGV4aXN0cyBhcyB0aGUgcHJvamVjdCBpcyBub3QgYSByZWZlcmVuY2VcbiAgICBjb25zdCBwcm9qZWN0Um9sZSA9IHRoaXMucHJvamVjdC5yb2xlITtcbiAgICBwcm9qZWN0Um9sZS5hZGRNYW5hZ2VkUG9saWN5KGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnQW1hem9uRWxhc3RpY0NvbnRhaW5lclJlZ2lzdHJ5UHVibGljUmVhZE9ubHknKSk7XG4gICAgcGVybWlzc2lvbnMuZ3JhbnRTZWNyZXRSZWFkKHNzaEtleVNlY3JldCwgcHJvamVjdFJvbGUpO1xuICAgIGlmIChuZWVkc0dpdEh1YlRva2VuU2VjcmV0KSB7XG4gICAgICBwZXJtaXNzaW9ucy5ncmFudFNlY3JldFJlYWQoeyBzZWNyZXRBcm46IHByb3BzLnJlcG8udG9rZW5TZWNyZXRBcm4gfSwgcHJvamVjdFJvbGUpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5zY2hlZHVsZUV4cHJlc3Npb24pIHtcbiAgICAgIGNvbnN0IHNjaGVkdWxlID0gZXZlbnRzLlNjaGVkdWxlLmV4cHJlc3Npb24ocHJvcHMuc2NoZWR1bGVFeHByZXNzaW9uKTtcbiAgICAgIG5ldyBldmVudHMuUnVsZSh0aGlzLCAnU2NoZWR1bGVyJywge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ1NjaGVkdWxlcyBhbiBhdXRvbWF0aWMgUHVsbCBSZXF1ZXN0IGZvciB0aGlzIHJlcG9zaXRvcnknLFxuICAgICAgICBzY2hlZHVsZSxcbiAgICAgICAgdGFyZ2V0czogW25ldyBldmVudHNfdGFyZ2V0cy5Db2RlQnVpbGRQcm9qZWN0KHRoaXMucHJvamVjdCldLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5hbGFybSA9IHRoaXMucHJvamVjdC5tZXRyaWNGYWlsZWRCdWlsZHMoeyBwZXJpb2Q6IER1cmF0aW9uLnNlY29uZHMoMzAwKSB9KS5jcmVhdGVBbGFybSh0aGlzLCAnQXV0b1B1bGxSZXF1ZXN0RmFpbGVkQWxhcm0nLCB7XG4gICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IGNsb3Vkd2F0Y2guVHJlYXRNaXNzaW5nRGF0YS5JR05PUkUsXG4gICAgfSk7XG4gIH1cbiAgcHJpdmF0ZSBjcmVhdGVIZWFkKCk6IHN0cmluZ1tdIHtcblxuICAgIHJldHVybiBbXG4gICAgICAvLyBjaGVjayBpZiBoZWFkIGJyYW5jaCBleGlzdHNcbiAgICAgIGBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IG9yaWdpbi8ke3RoaXMucHJvcHMuaGVhZC5uYW1lfSBgICtcblxuICAgICAgLy8gY2hlY2tvdXQgYW5kIG1lcmdlIGlmIGl0IGRvZXMgKHRoaXMgbWlnaHQgZmFpbCBkdWUgdG8gbWVyZ2UgY29uZmxpY3RzKVxuICAgICAgYCYmIHsgZ2l0IGNoZWNrb3V0ICR7dGhpcy5wcm9wcy5oZWFkLm5hbWV9ICYmIGdpdCBtZXJnZSAke3RoaXMuaGVhZFNvdXJjZX0gJiYgJHt0aGlzLnJ1bkNvbW1hbmRzKCl9OyAgfSBgICtcblxuICAgICAgLy8gY3JlYXRlIGlmIGl0IGRvZXNudC4gd2UgaW5pdGlhbGx5IHVzZSAndGVtcCcgdG8gYWxsb3cgdXNpbmcgZXhwb3J0cyBpbiB0aGUgaGVhZCBicmFuY2ggbmFtZS4gKGUuZyBidW1wLyRWRVJTSU9OKVxuICAgICAgYHx8IHsgZ2l0IGNoZWNrb3V0ICR7dGhpcy5oZWFkU291cmNlfSAmJiBnaXQgY2hlY2tvdXQgLWIgdGVtcCAmJiAke3RoaXMucnVuQ29tbWFuZHMoKX0gJiYgZ2l0IGJyYW5jaCAtTSAke3RoaXMucHJvcHMuaGVhZC5uYW1lfTsgfWAsXG5cbiAgICBdO1xuXG4gIH1cblxuICBwcml2YXRlIGNsb25lSWZOZWVkZWQoKTogc3RyaW5nW10ge1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIC8vIGNoZWNrIGlmIC5naXQgZXhpc3RcbiAgICAgICdscyAuZ2l0ICcgK1xuXG4gICAgICAvLyBhbGwgZ29vZFxuICAgICAgJyYmIHsgZWNobyBcIi5naXQgZGlyZWN0b3J5IGV4aXN0c1wiOyAgfSAnICtcblxuICAgICAgLy8gY2xvbmUgaWYgaXQgZG9lc24ndFxuICAgICAgYHx8IHsgZWNobyBcIi5naXQgZGlyZWN0b3J5IGRvZXNub3QgZXhpc3QgLSBjbG9uaW5nLi4uXCIgJiYgZ2l0IGluaXQgLiAmJiBnaXQgcmVtb3RlIGFkZCBvcmlnaW4gZ2l0QGdpdGh1Yi5jb206JHt0aGlzLnByb3BzLnJlcG8ub3duZXJ9LyR7dGhpcy5wcm9wcy5yZXBvLnJlcG99LmdpdCAmJiBnaXQgZmV0Y2ggJiYgZ2l0IHJlc2V0IC0taGFyZCBvcmlnaW4vJHt0aGlzLmJhc2VCcmFuY2h9ICYmIGdpdCBicmFuY2ggLU0gJHt0aGlzLmJhc2VCcmFuY2h9ICYmIGdpdCBjbGVhbiAtZnFkeDsgfWAsXG5cbiAgICBdO1xuXG4gIH1cblxuICBwcml2YXRlIHJ1bkNvbW1hbmRzKCk6IHN0cmluZyB7XG5cbiAgICBjb25zdCB1c2VyQ29tbWFuZHMgPSB0aGlzLnByb3BzLmNvbW1hbmRzID8/IFtdO1xuICAgIGNvbnN0IGV4cG9ydHMgPSBPYmplY3QuZW50cmllcyh0aGlzLmV4cG9ydHMpLm1hcChlbnRyeSA9PiBgZXhwb3J0ICR7ZW50cnlbMF19PSQoJHtlbnRyeVsxXX0pYCk7XG5cbiAgICByZXR1cm4gW1xuXG4gICAgICAuLi51c2VyQ29tbWFuZHMsXG5cbiAgICAgIC8vIGV4cG9ydHMgc2hvdWxkIGJlIGV4ZWN1dGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSB1c2VyIGNvbW1hbmRzIChub3QgYmVmb3JlKVxuICAgICAgLy8gYmVjYXVzZSB0aGV5IG1pZ2h0IG5lZWQgYWNjZXNzIHRvIGFydGlmYWN0cyBwcm9kdWNlZCBieSB0aGVtIChlLmcgdmVyc2lvbiBmaWxlKS5cbiAgICAgIC4uLmV4cG9ydHMsXG5cbiAgICAgICdlY2hvIEZpbmlzaGVkIHJ1bm5pbmcgdXNlciBjb21tYW5kcycsXG4gICAgXS5qb2luKCcgJiYgJyk7XG5cbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlU3NoQWNjZXNzKCk6IHN0cmluZ1tdIHtcblxuICAgIHJldHVybiBbXG4gICAgICAnYXdzIHNlY3JldHNtYW5hZ2VyIGdldC1zZWNyZXQtdmFsdWUgJ1xuICAgICAgICArIGAtLXNlY3JldC1pZCBcIiR7dGhpcy5wcm9wcy5yZXBvLnNzaEtleVNlY3JldC5zZWNyZXRBcm59XCIgYFxuICAgICAgICArICctLW91dHB1dD10ZXh0IC0tcXVlcnk9U2VjcmV0U3RyaW5nID4gfi8uc3NoL2lkX3JzYScsXG4gICAgICAnbWtkaXIgLXAgfi8uc3NoJyxcbiAgICAgICdjaG1vZCAwNjAwIH4vLnNzaC9pZF9yc2Egfi8uc3NoL2NvbmZpZycsXG4gICAgICAnc3NoLWtleXNjYW4gLXQgcnNhIGdpdGh1Yi5jb20gPj4gfi8uc3NoL2tub3duX2hvc3RzJyxcbiAgICBdO1xuXG4gIH1cblxuICBwcml2YXRlIHB1c2hIZWFkKCk6IHN0cmluZ1tdIHtcbiAgICAvLyBXZSB3aWxsIGRvIG5vdGhpbmcgYW5kIHNldCBgU0tJUD10cnVlYCBpZiB0aGUgaGVhZCByZWYgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIGJhc2UgYnJhbmNoIChubyBQUiBjb3VsZCBiZSBjcmVhdGVkKVxuICAgIHJldHVybiBbXG4gICAgICBgZ2l0IG1lcmdlLWJhc2UgLS1pcy1hbmNlc3RvciAke3RoaXMucHJvcHMuaGVhZC5uYW1lfSBvcmlnaW4vJHt0aGlzLmJhc2VCcmFuY2h9YFxuICAgICAgICArIGAgJiYgeyBlY2hvIFwiU2tpcHBpbmc6ICR7dGhpcy5wcm9wcy5oZWFkLm5hbWV9IGlzIGFuIGFuY2VzdG9yIG9mIG9yaWdpbi8ke3RoaXMuYmFzZUJyYW5jaH1cIjsgZXhwb3J0IFNLSVA9dHJ1ZTsgfWBcbiAgICAgICAgKyBgIHx8IHsgZWNobyBcIlB1c2hpbmc6ICR7dGhpcy5wcm9wcy5oZWFkLm5hbWV9IGlzIGFoZWFkIG9mIG9yaWdpbi8ke3RoaXMuYmFzZUJyYW5jaH1cIjsgZXhwb3J0IFNLSVA9ZmFsc2U7IH1gLFxuICAgICAgYGdpdCByZW1vdGUgYWRkIG9yaWdpbl9zc2ggJHt0aGlzLnByb3BzLnJlcG8ucmVwb3NpdG9yeVVybFNzaH1gLFxuICAgICAgLy8gTmVlZCBgLS1hdG9taWNgLCBvdGhlcndpc2UgYGdpdCBwdXNoYCBtaWdodCBzdWNjZXNzZnVsbHkgcHVzaCB0aGUgdGFncyBidXQgbm90IHRvIGBtYWluYC5cbiAgICAgIGBnaXQgcHVzaCAtLWF0b21pYyAtLWZvbGxvdy10YWdzIG9yaWdpbl9zc2ggJHt0aGlzLnByb3BzLmhlYWQubmFtZX06JHt0aGlzLnByb3BzLmhlYWQubmFtZX1gLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHNraXBJZk9wZW5QcnMobGFiZWxzOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBmaWx0ZXJzID0gW1xuICAgICAgYHJlcG86JHt0aGlzLnByb3BzLnJlcG8ub3duZXJ9LyR7dGhpcy5wcm9wcy5yZXBvLnJlcG99YCxcbiAgICAgICdpczpwcicsXG4gICAgICAnaXM6b3BlbicsXG4gICAgICAuLi5sYWJlbHMubWFwKGwgPT4gYGxhYmVsOiR7bH1gKSxcbiAgICBdO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIGAke3RoaXMuZ2l0aHViQ3VybEdldChgL3NlYXJjaC9pc3N1ZXM/cT0ke2VuY29kZVVSSUNvbXBvbmVudChmaWx0ZXJzLmpvaW4oJyAnKSl9YCwgJy1vIHNlYXJjaC5qc29uJyl9YCxcbiAgICAgICdub2RlIC1lIFxcJ3Byb2Nlc3MuZXhpdENvZGUgPSByZXF1aXJlKFwiLi9zZWFyY2guanNvblwiKS50b3RhbF9jb3VudFxcJydcbiAgICAgICAgKyBgIHx8IHsgZWNobyBcIkZvdW5kIG9wZW4gUFJzIHdpdGggbGFiZWwgJHtsYWJlbHN9LCBza2lwcGluZyBQUi5cIjsgZXhwb3J0IFNLSVA9dHJ1ZTsgfWAsXG4gICAgXTtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBjcmVhdGVQdWxsUmVxdWVzdCgpOiBzdHJpbmdbXSB7XG5cbiAgICBjb25zdCBoZWFkID0gdGhpcy5wcm9wcy5oZWFkLm5hbWU7XG4gICAgY29uc3QgYmFzZSA9IHRoaXMuYmFzZUJyYW5jaDtcblxuICAgIGlmIChoZWFkID09PSBiYXNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEhlYWQgYnJhbmNoIChcIiR7YmFzZX1cIikgaXMgdGhlIHNhbWUgYXMgdGhlIGJhc2UgYnJhbmNoIChcIiR7aGVhZH1cIilgKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9wcyA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgdGl0bGUgPSBwcm9wcy50aXRsZSA/PyBgTWVyZ2UgJHtoZWFkfSB0byAke2Jhc2V9YDtcbiAgICBjb25zdCBib2R5ID0gdGhpcy5wcm9wcy5ib2R5ID8/ICcnO1xuXG4gICAgY29uc3QgY3JlYXRlUmVxdWVzdCA9IHsgdGl0bGUsIGJhc2UsIGhlYWQgfTtcblxuICAgIGNvbnN0IGNvbW1hbmRzID0gW107XG5cbiAgICAvLyBjcmVhdGUgdGhlIFBSXG4gICAgY29tbWFuZHMucHVzaChgJHt0aGlzLmdpdGh1YkN1cmwoJy9wdWxscycsICctWCBQT1NUIC1vIHByLmpzb24nLCBjcmVhdGVSZXF1ZXN0KX0gJiYgZXhwb3J0IFBSX05VTUJFUj0kKG5vZGUgLXAgJ3JlcXVpcmUoXCIuL3ByLmpzb25cIikubnVtYmVyJylgKTtcblxuICAgIC8vIHVwZGF0ZSB0aGUgYm9keVxuICAgIGNvbW1hbmRzLnB1c2godGhpcy5naXRodWJDdXJsKCcvcHVsbHMvJFBSX05VTUJFUicsICctWCBQQVRDSCcsIHsgYm9keTogYm9keSB9KSk7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5sYWJlbHMgJiYgdGhpcy5wcm9wcy5sYWJlbHMubGVuZ3RoID4gMCkge1xuICAgIC8vIGFwcGx5IGxhYmVscy5cbiAgICAgIGNvbW1hbmRzLnB1c2godGhpcy5naXRodWJDdXJsKCcvaXNzdWVzLyRQUl9OVU1CRVIvbGFiZWxzJywgJy1YIFBPU1QnLCB7IGxhYmVsczogdGhpcy5wcm9wcy5sYWJlbHMgfSkpO1xuICAgIH1cblxuICAgIHJldHVybiBjb21tYW5kcztcblxuICB9XG5cbiAgcHJpdmF0ZSBnaXRodWJDdXJsKHVyaTogc3RyaW5nLCBjb21tYW5kOiBzdHJpbmcsIHJlcXVlc3Q6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFtcbiAgICAgICdjdXJsIC0tZmFpbCcsXG4gICAgICBjb21tYW5kLFxuICAgICAgJy0taGVhZGVyIFwiQXV0aG9yaXphdGlvbjogdG9rZW4gJEdJVEhVQl9UT0tFTlwiJyxcbiAgICAgICctLWhlYWRlciBcIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvblwiJyxcbiAgICAgIGAtZCAke0pTT04uc3RyaW5naWZ5KEpTT04uc3RyaW5naWZ5KHJlcXVlc3QpKX1gLFxuICAgICAgYGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvJHt0aGlzLnByb3BzLnJlcG8ub3duZXJ9LyR7dGhpcy5wcm9wcy5yZXBvLnJlcG99JHt1cml9YCxcbiAgICBdLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2l0aHViQ3VybEdldCh1cmk6IHN0cmluZywgY29tbWFuZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ2N1cmwgLS1mYWlsJyxcbiAgICAgIGNvbW1hbmQsXG4gICAgICAnLS1oZWFkZXIgXCJBdXRob3JpemF0aW9uOiB0b2tlbiAkR0lUSFVCX1RPS0VOXCInLFxuICAgICAgJy0taGVhZGVyIFwiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXCInLFxuICAgICAgYCdodHRwczovL2FwaS5naXRodWIuY29tJHt1cml9J2AsXG4gICAgXS5qb2luKCcgJyk7XG4gIH1cblxufVxuXG4iXX0=
@@ -27,7 +27,7 @@ class EcrMirror extends constructs_1.Construct {
27
27
  this._project = new aws_cdk_lib_1.aws_codebuild.Project(this, 'EcrPushImages', {
28
28
  environment: {
29
29
  privileged: true,
30
- buildImage: aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.fromDockerRegistry('jsii/superchain:1-buster-slim', {
30
+ buildImage: aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.fromDockerRegistry('public.ecr.aws/jsii/superchain:1-buster-slim-node18', {
31
31
  secretsManagerCredentials: props.dockerHubCredentials.secret,
32
32
  }),
33
33
  },
@@ -161,4 +161,4 @@ class EcrMirrorAspect {
161
161
  }
162
162
  }
163
163
  exports.EcrMirrorAspect = EcrMirrorAspect;
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNyLW1pcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImVjci1taXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBVXFCO0FBQ3JCLDJDQUFtRDtBQStEbkQ7OztHQUdHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsc0JBQVM7SUFNdEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFxQjtRQUM3RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBTEYsV0FBTSxHQUFnQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2hELGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQU1qRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUU7WUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1NBQ2xFO1FBRUQsTUFBTSxXQUFXLEdBQUcsR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLFlBQVksbUJBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxnQkFBZ0IsQ0FBQztRQUNqRyxNQUFNLFFBQVEsR0FBYSxFQUFFLENBQUM7UUFDOUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQWtCLENBQUM7UUFFM0MsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEdBQVcsRUFBRSxJQUEwQixFQUFFLEVBQUU7O1lBQ3ZFLE9BQU8sR0FBRyxLQUFLLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxHQUFHLElBQUksTUFBQSxJQUFJLENBQUMsWUFBWSxtQ0FBSSxZQUFZLEVBQUUsQ0FBQztRQUN2RyxDQUFDLENBQUM7UUFFRixNQUFNLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFD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LENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQy9DLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxXQUF1RCxDQUFDO2dCQUMvRSxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDMUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLFdBQVcsRUFBRTtvQkFDZixVQUFVLENBQUMsV0FBVyxHQUFHO3dCQUN2QixHQUFHLEdBQUc7d0JBQ04sS0FBSyxFQUFFLDJCQUFTLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPO3FCQUM3RSxDQUFDO29CQUNGLFdBQVcsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ2pDLHFCQUFHLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUM3QzthQUNGO1NBQ0Y7SUFDSCxDQUFDO0NBQ0Y7QUF0QkQsMENBc0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSUFzcGVjdCwgTGF6eSwgU3RhY2ssIFRva2VuLFxuICBhd3NfZWNyIGFzIGVjcixcbiAgYXdzX2NvZGVidWlsZCBhcyBjb2RlYnVpbGQsXG4gIGF3c19ldmVudHMgYXMgZXZlbnRzLFxuICBhd3NfZXZlbnRzX3RhcmdldHMgYXMgdGFyZ2V0cyxcbiAgYXdzX2lhbSBhcyBpYW0sXG4gIGF3c19zM19hc3NldHMgYXMgczNBc3NldHMsXG4gIGF3c19zZWNyZXRzbWFuYWdlciBhcyBzbSxcbiAgY3VzdG9tX3Jlc291cmNlcyBhcyBjcixcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0LCBJQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBNaXJyb3JTb3VyY2UgfSBmcm9tICcuL21pcnJvci1zb3VyY2UnO1xuXG4vKipcbiAqIEF1dGhlbnRpY2F0aW9uIGRldGFpbHMgZm9yIERvY2tlckh1Yi5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jb2RlYnVpbGQvbGF0ZXN0L3VzZXJndWlkZS9idWlsZC1zcGVjLXJlZi5odG1sI2J1aWxkLXNwZWMuZW52LnNlY3JldHMtbWFuYWdlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIERvY2tlckh1YkNyZWRlbnRpYWxzIHtcblxuICAvKipcbiAgICogVGhlIHNlY3JldCB0aGF0IGNvbnRhaW5zIHRoZSB1c2VybmFtZSBhbmQgcGFzc3dvcmQgZm9yIERvY2tlcmh1YlxuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0OiBzbS5JU2VjcmV0O1xuXG4gIC8qKlxuICAgKiBUaGUgc2VjcmV0IGtleSB0aGF0IGNvbnRhaW5zIHRoZSB1c2VybmFtZSBpbiB0aGUgc3BlY2lmaWVkIHNlY3JldC5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJuYW1lS2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzZWNyZXQga2V5IHRoYXQgY29udGFpbnMgdGhlIHBhc3N3b3JkIGluIHRoZSBzcGVjaWZpZWQgc2VjcmV0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGFzc3dvcmRLZXk6IHN0cmluZztcblxuICAvKipcbiAgICogVmVyc2lvbiBzdGFnZSBvZiB0aGUgc2VjcmV0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAnQVdTQ1VSUkVOVCdcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb25TdGFnZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGluaXRpYWxpemUgRWNyUmVnaXN0cnlTeW5jXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWNyTWlycm9yUHJvcHMge1xuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgaW1hZ2VzIHRvIGtlZXAgc3luYydlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZXM6IE1pcnJvclNvdXJjZVtdO1xuXG4gIC8qKlxuICAgKiBDcmVkZW50aWFscyB0byBzaWduaW5nIGludG8gRG9ja2VyaHViLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9ja2VySHViQ3JlZGVudGlhbHM6IERvY2tlckh1YkNyZWRlbnRpYWxzO1xuXG4gIC8qKlxuICAgKiBTeW5jIGpvYiBydW5zIG9uIGEgc2NoZWR1bGUuXG4gICAqIFRocm93cyBhbiBlcnJvciBpZiBuZWl0aGVyIHRoaXMgbm9yIGBhdXRvU3RhcnRgIGFyZSBzcGVjaWZpZWQuXG4gICAqIEBkZWZhdWx0IC0gZG9lcyBub3QgcnVuIG9uIHNjaGVkdWxlXG4gICAqL1xuICByZWFkb25seSBzY2hlZHVsZT86IGV2ZW50cy5TY2hlZHVsZTtcblxuICAvKipcbiAgICogU3RhcnQgdGhlIHN5bmMgam9iIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBkZXBsb3ltZW50LlxuICAgKiBUaGlzIGluamVjdHMgYSBjdXN0b20gcmVzb3VyY2UgdGhhdCBpcyBleGVjdXRlZCBhcyBwYXJ0IG9mIHRoZSBkZXBsb3ltZW50LlxuICAgKiBUaHJvd3MgYW4gZXJyb3IgaWYgbmVpdGhlciB0aGlzIG5vciBgc2NoZWR1bGVgIGFyZSBzcGVjaWZpZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhdXRvU3RhcnQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFN5bmNocm9uaXplIGltYWdlcyBmcm9tIERvY2tlckh1YiB0byBhbiBFQ1IgcmVnaXN0cnkgaW4gdGhlIEFXUyBhY2NvdW50LlxuICogVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIHRvIHdvcmthcm91bmQgRG9ja2VySHViJ3MgdGhyb3R0bGluZyBvbiBwdWxscyBhbmQgdXNlIEVDUiBpbnN0ZWFkLlxuICovXG5leHBvcnQgY2xhc3MgRWNyTWlycm9yIGV4dGVuZHMgQ29uc3RydWN0IHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9yZXBvczogTWFwPHN0cmluZywgZWNyLlJlcG9zaXRvcnk+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZXBvVGFnc1NlZW4gPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcHJvamVjdDogY29kZWJ1aWxkLlByb2plY3Q7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEVjck1pcnJvclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGlmICghcHJvcHMuc2NoZWR1bGUgJiYgIXByb3BzLmF1dG9TdGFydCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFaXRoZXIgc2NoZWR1bGUgb3IgYXV0b1N0YXJ0IG11c3QgYmUgcHJvdmlkZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBlY3JSZWdpc3RyeSA9IGAke1N0YWNrLm9mKHNjb3BlKS5hY2NvdW50fS5ka3IuZWNyLiR7U3RhY2sub2Yoc2NvcGUpLnJlZ2lvbn0uYW1hem9uYXdzLmNvbWA7XG4gICAgY29uc3QgY29tbWFuZHM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgYXNzZXRzID0gbmV3IEFycmF5PHMzQXNzZXRzLkFzc2V0PigpO1xuXG4gICAgY29uc3QgY29kZUJ1aWxkU2VjcmV0VmFsdWUgPSAoa2V5OiBzdHJpbmcsIGF1dGg6IERvY2tlckh1YkNyZWRlbnRpYWxzKSA9PiB7XG4gICAgICByZXR1cm4gYCR7cHJvcHMuZG9ja2VySHViQ3JlZGVudGlhbHMuc2VjcmV0LnNlY3JldE5hbWV9OiR7a2V5fToke2F1dGgudmVyc2lvblN0YWdlID8/ICdBV1NDVVJSRU5UJ31gO1xuICAgIH07XG5cbiAgICBjb25zdCB1c2VybmFtZSA9IGNvZGVCdWlsZFNlY3JldFZhbHVlKHByb3BzLmRvY2tlckh1YkNyZWRlbnRpYWxzLnVzZXJuYW1lS2V5LCBwcm9wcy5kb2NrZXJIdWJDcmVkZW50aWFscyk7XG4gICAgY29uc3QgcGFzc3dvcmQgPSBjb2RlQnVpbGRTZWNyZXRWYWx1ZShwcm9wcy5kb2NrZXJIdWJDcmVkZW50aWFscy5wYXNzd29yZEtleSwgcHJvcHMuZG9ja2VySHViQ3JlZGVudGlhbHMpO1xuXG4gICAgdGhpcy5fcHJvamVjdCA9IG5ldyBjb2RlYnVpbGQuUHJvamVjdCh0aGlzLCAnRWNyUHVzaEltYWdlcycsIHtcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIHByaXZpbGVnZWQ6IHRydWUsXG4gICAgICAgIGJ1aWxkSW1hZ2U6IGNvZGVidWlsZC5MaW51eEJ1aWxkSW1hZ2UuZnJvbURvY2tlclJlZ2lzdHJ5KCdqc2lpL3N1cGVyY2hhaW46MS1idXN0ZXItc2xpbScsIHtcbiAgICAgICAgICBzZWNyZXRzTWFuYWdlckNyZWRlbnRpYWxzOiBwcm9wcy5kb2NrZXJIdWJDcmVkZW50aWFscy5zZWNyZXQsXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICAgIGVudmlyb25tZW50VmFyaWFibGVzOiB7XG4gICAgICAgIC8vIERvY2tlckh1YiBjcmVkZW50aWFscyB0byBhdm9pZCB0aHJvdHRsaW5nXG4gICAgICAgIERPQ0tFUkhVQl9VU0VSTkFNRTogeyB2YWx1ZTogdXNlcm5hbWUsIHR5cGU6IGNvZGVidWlsZC5CdWlsZEVudmlyb25tZW50VmFyaWFibGVUeXBlLlNFQ1JFVFNfTUFOQUdFUiB9LFxuICAgICAgICBET0NLRVJIVUJfUEFTU1dPUkQ6IHsgdmFsdWU6IHBhc3N3b3JkLCB0eXBlOiBjb2RlYnVpbGQuQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlVHlwZS5TRUNSRVRTX01BTkFHRVIgfSxcbiAgICAgIH0sXG4gICAgICBidWlsZFNwZWM6IGNvZGVidWlsZC5CdWlsZFNwZWMuZnJvbU9iamVjdChMYXp5LmFueSh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmVyc2lvbjogJzAuMicsXG4gICAgICAgICAgICBwaGFzZXM6IHtcbiAgICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBjb21tYW5kczogW1xuXG4gICAgICAgICAgICAgICAgICAvLyBzdGFydCB0aGUgZG9ja2VyIGRhZW1vblxuICAgICAgICAgICAgICAgICAgJ25vaHVwIC91c3IvYmluL2RvY2tlcmQgLS1ob3N0PXVuaXg6Ly8vdmFyL3J1bi9kb2NrZXIuc29jayAtLWhvc3Q9dGNwOi8vMTI3LjAuMC4xOjIzNzUgLS1zdG9yYWdlLWRyaXZlcj1vdmVybGF5MiYnLFxuICAgICAgICAgICAgICAgICAgJ3RpbWVvdXQgMTUgc2ggLWMgXCJ1bnRpbCBkb2NrZXIgaW5mbzsgZG8gZWNobyAuOyBzbGVlcCAxOyBkb25lXCInLFxuXG4gICAgICAgICAgICAgICAgICAvLyBsb2dpbiB0byBkb2NrZXJodWIgc28gd2Ugd29uJ3QgZ2V0IHRocm90dGxlZFxuICAgICAgICAgICAgICAgICAgJ2RvY2tlciBsb2dpbiAtdSAke0RPQ0tFUkhVQl9VU0VSTkFNRX0gLXAgJHtET0NLRVJIVUJfUEFTU1dPUkR9JyxcblxuICAgICAgICAgICAgICAgICAgLy8gbG9naW4gdG8gZWNyIHNvIHdlIGNhbiBwdXNoIHRvIGl0XG4gICAgICAgICAgICAgICAgICBgYXdzIGVjciBnZXQtbG9naW4tcGFzc3dvcmQgfCBkb2NrZXIgbG9naW4gLS11c2VybmFtZSBBV1MgLS1wYXNzd29yZC1zdGRpbiAke2VjclJlZ2lzdHJ5fWAsXG5cbiAgICAgICAgICAgICAgICAgIC8vIGxvZ2luIHRvIGVjci1wdWJsaWMgc28gd2UgY2FuIHB1bGwgZnJvbSBpdCB3aXRoIGltcHJvdmVkIHJhdGUgbGltaXRzXG4gICAgICAgICAgICAgICAgICAnYXdzIGVjci1wdWJsaWMgZ2V0LWxvZ2luLXBhc3N3b3JkIC0tcmVnaW9uIHVzLWVhc3QtMSB8IGRvY2tlciBsb2dpbiAtLXVzZXJuYW1lIEFXUyAtLXBhc3N3b3JkLXN0ZGluIHB1YmxpYy5lY3IuYXdzJyxcblxuICAgICAgICAgICAgICAgICAgLi4uY29tbWFuZHMsXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgIH0pKSxcbiAgICAgIHNzbVNlc3Npb25QZXJtaXNzaW9uczogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIEVuc3VyZSB0aGUgcnVubmVyIGhhcyBQVUxMIGFjY2VzcyB0byBFQ1ItUHVibGljLlxuICAgIHRoaXMuX3Byb2plY3Qucm9sZSEuYWRkTWFuYWdlZFBvbGljeShpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoJ0FtYXpvbkVsYXN0aWNDb250YWluZXJSZWdpc3RyeVB1YmxpY1JlYWRPbmx5JykpO1xuXG4gICAgZm9yIChjb25zdCBpbWFnZSBvZiBwcm9wcy5zb3VyY2VzKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpbWFnZS5iaW5kKHtcbiAgICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICAgIGVjclJlZ2lzdHJ5LFxuICAgICAgICBzeW5jSm9iOiB0aGlzLl9wcm9qZWN0LFxuICAgICAgfSk7XG4gICAgICBjb21tYW5kcy5wdXNoKC4uLnJlc3VsdC5jb21tYW5kcyk7XG5cbiAgICAgIGNvbnN0IHJlcG9UYWcgPSBgJHtyZXN1bHQucmVwb3NpdG9yeU5hbWV9OiR7cmVzdWx0LnRhZ31gO1xuICAgICAgaWYgKHRoaXMuX3JlcG9UYWdzU2Vlbi5oYXMocmVwb1RhZykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXJyb3Igc291cmNlIHdpdGggcmVwb3NpdG9yeSBuYW1lIFske3Jlc3VsdC5yZXBvc2l0b3J5TmFtZX1dIGFuZCB0YWcgWyR7cmVzdWx0LnRhZ31dIGFscmVhZHkgZXhpc3RzLmApO1xuICAgICAgfVxuICAgICAgdGhpcy5fcmVwb1RhZ3NTZWVuLmFkZChyZXBvVGFnKTtcblxuICAgICAgdGhpcy5jcmVhdGVNaXJyb3JSZXBvKHJlc3VsdC5yZXBvc2l0b3J5TmFtZSk7XG5cbiAgICAgIGNvbnN0IGVjckltYWdlVXJpID0gYCR7ZWNyUmVnaXN0cnl9LyR7cmVzdWx0LnJlcG9zaXRvcnlOYW1lfToke3Jlc3VsdC50YWd9YDtcbiAgICAgIGNvbW1hbmRzLnB1c2goYGRvY2tlciBwdXNoICR7ZWNySW1hZ2VVcml9YCk7XG5cbiAgICAgIC8vIGNsZWFuIGFmdGVyIGVhY2ggcHVzaCBzbyB0aGF0IHdlIGRvbid0IGZpbGx1cCBkaXNrIHNwYWNlXG4gICAgICAvLyBwb3NzaWJseSBmYWlsaW5nIHRoZSBuZXh0IHB1bGwuXG4gICAgICBjb21tYW5kcy5wdXNoKCdkb2NrZXIgaW1hZ2UgcHJ1bmUgLS1hbGwgLS1mb3JjZScpO1xuICAgIH1cblxuICAgIC8vIENvZGVCdWlsZCBuZWVkcyB0byByZWFkIHRoZSBzZWNyZXQgdG8gcmVzb2x2ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICBwcm9wcy5kb2NrZXJIdWJDcmVkZW50aWFscy5zZWNyZXQuZ3JhbnRSZWFkKHRoaXMuX3Byb2plY3QpO1xuXG4gICAgZWNyLkF1dGhvcml6YXRpb25Ub2tlbi5ncmFudFJlYWQodGhpcy5fcHJvamVjdCk7XG4gICAgdGhpcy5fcmVwb3MuZm9yRWFjaCgociwgXykgPT4gci5ncmFudFB1bGxQdXNoKHRoaXMuX3Byb2plY3QpKTtcblxuICAgIC8vIHRoaXMgcHJvamVjdCBuZWVkcyB0byBkb3dubG9hZCB0aGUgYXNzZXRzIHNvIGl0IGNhbiBidWlsZCB0aGVtXG4gICAgYXNzZXRzLmZvckVhY2goYSA9PiBhLmdyYW50UmVhZCh0aGlzLl9wcm9qZWN0KSk7XG5cbiAgICBpZiAocHJvcHMuYXV0b1N0YXJ0KSB7XG4gICAgICBuZXcgY3IuQXdzQ3VzdG9tUmVzb3VyY2UodGhpcywgJ0J1aWxkRXhlY3V0aW9uJywge1xuICAgICAgICBwb2xpY3k6IGNyLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TZGtDYWxscyh7IHJlc291cmNlczogW3RoaXMuX3Byb2plY3QucHJvamVjdEFybl0gfSksXG4gICAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgICAgYWN0aW9uOiAnc3RhcnRCdWlsZCcsXG4gICAgICAgICAgc2VydmljZTogJ0NvZGVCdWlsZCcsXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgcHJvamVjdE5hbWU6IHRoaXMuX3Byb2plY3QucHJvamVjdE5hbWUsXG4gICAgICAgICAgICAvLyB0byB0aWdnZXIgdGhlIGJ1aWxkIG9uIGV2ZXJ5IHVwZGF0ZVxuICAgICAgICAgICAgaWRlbXBvdGVuY3lUb2tlbjogYCR7RGF0ZS5ub3coKX1gLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBjci5QaHlzaWNhbFJlc291cmNlSWQub2YoJ0VjclJlZ2lzdHJ5RXhlY3V0aW9uJyksXG5cbiAgICAgICAgICAvLyBuZWVkIHNpbmNlIHRoZSBkZWZhdWx0IHJlcG9uc2UgaWYgZ3JlYXRlciB0aGFuIHRoZSA0ayBsaW1pdCBmb3IgY3VzdG9tIHJlc291cmNlcy5cbiAgICAgICAgICBvdXRwdXRQYXRoczogWydidWlsZC5pZCddLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnNjaGVkdWxlKSB7XG4gICAgICBuZXcgZXZlbnRzLlJ1bGUodGhpcywgJ1NjaGVkdWxlZFRyaWdnZXInLCB7XG4gICAgICAgIHNjaGVkdWxlOiBwcm9wcy5zY2hlZHVsZSxcbiAgICAgICAgdGFyZ2V0czogW25ldyB0YXJnZXRzLkNvZGVCdWlsZFByb2plY3QodGhpcy5fcHJvamVjdCldLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVNaXJyb3JSZXBvKGVjclJlcG9zaXRvcnlOYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5fcmVwb3MuZ2V0KGVjclJlcG9zaXRvcnlOYW1lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcG9zaXRvcnkgPSBuZXcgZWNyLlJlcG9zaXRvcnkodGhpcywgYFJlcG8ke2VjclJlcG9zaXRvcnlOYW1lfWAsIHtcbiAgICAgIHJlcG9zaXRvcnlOYW1lOiBlY3JSZXBvc2l0b3J5TmFtZSxcbiAgICB9KTtcbiAgICB0aGlzLl9yZXBvcy5zZXQoZWNyUmVwb3NpdG9yeU5hbWUsIHJlcG9zaXRvcnkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdGFyZ2V0IEVDUiByZXBvc2l0b3J5IGZvciB0aGUgZ2l2ZW4gcmVwb3NpdG9yeSBuYW1lIGFuZCB0YWcuXG4gICAqIEBwYXJhbSByZXBvc2l0b3J5TmFtZSBUaGUgRUNSIHJlcG9zaXRvcnkgd2l0aCB0aGlzIG5hbWVcbiAgICogQHBhcmFtIHRhZyB0aGUgdGFnIGZvciB0aGUgcmVwb3NpdG9yeSwgZGVmYXVsdHMgdG8gJ2xhdGVzdCdcbiAgICovXG4gIHB1YmxpYyBlY3JSZXBvc2l0b3J5KHJlcG9zaXRvcnlOYW1lOiBzdHJpbmcpOiBlY3IuSVJlcG9zaXRvcnkgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9yZXBvcy5nZXQocmVwb3NpdG9yeU5hbWUpO1xuICB9XG59O1xuXG4vKipcbiAqIEFuIGFzcGVjdCB0aGF0IHdhbGtzIHRocm91Z2ggdGhlIGNvbnN0cnVjdCB0cmVlIGFuZCByZXBsYWNlcyBDb2RlQnVpbGQgam9icyB3aXRoIERvY2tlciBpbWFnZXNcbiAqIHdpdGggRUNSIGVxdWl2YWxlbnRzIGZvdW5kIGluIHRoZSBFY3JNaXJyb3IuXG4gKi9cbmV4cG9ydCBjbGFzcyBFY3JNaXJyb3JBc3BlY3QgaW1wbGVtZW50cyBJQXNwZWN0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBtaXJyb3I6IEVjck1pcnJvcikge31cblxuICBwdWJsaWMgdmlzaXQoY29uc3RydWN0OiBJQ29uc3RydWN0KSB7XG4gICAgaWYgKGNvbnN0cnVjdCBpbnN0YW5jZW9mIGNvZGVidWlsZC5Qcm9qZWN0KSB7XG4gICAgICBjb25zdCBjZm5wcm9qZWN0ID0gY29uc3RydWN0Lm5vZGUuZGVmYXVsdENoaWxkIGFzIGNvZGVidWlsZC5DZm5Qcm9qZWN0O1xuICAgICAgaWYgKCFUb2tlbi5pc1VucmVzb2x2ZWQoY2ZucHJvamVjdC5lbnZpcm9ubWVudCkpIHtcbiAgICAgICAgY29uc3QgZW52ID0gY2ZucHJvamVjdC5lbnZpcm9ubWVudCBhcyBjb2RlYnVpbGQuQ2ZuUHJvamVjdC5FbnZpcm9ubWVudFByb3BlcnR5O1xuICAgICAgICBjb25zdCBpbWFnZU5hbWUgPSBlbnYuaW1hZ2Uuc3BsaXQoJzonKVswXTtcbiAgICAgICAgY29uc3QgdGFnID0gZW52LmltYWdlLnNwbGl0KCc6JylbMV07XG4gICAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gdGhpcy5taXJyb3IuZWNyUmVwb3NpdG9yeShpbWFnZU5hbWUpO1xuICAgICAgICBpZiAocmVwbGFjZW1lbnQpIHtcbiAgICAgICAgICBjZm5wcm9qZWN0LmVudmlyb25tZW50ID0ge1xuICAgICAgICAgICAgLi4uZW52LFxuICAgICAgICAgICAgaW1hZ2U6IGNvZGVidWlsZC5MaW51eEJ1aWxkSW1hZ2UuZnJvbUVjclJlcG9zaXRvcnkocmVwbGFjZW1lbnQsIHRhZykuaW1hZ2VJZCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJlcGxhY2VtZW50LmdyYW50UHVsbChjb25zdHJ1Y3QpO1xuICAgICAgICAgIGVjci5BdXRob3JpemF0aW9uVG9rZW4uZ3JhbnRSZWFkKGNvbnN0cnVjdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNyLW1pcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImVjci1taXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBVXFCO0FBQ3JCLDJDQUFtRDtBQStEbkQ7OztHQUdHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsc0JBQVM7SUFNdEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFxQjtRQUM3RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBTEYsV0FBTSxHQUFnQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2hELGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQU1qRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUU7WUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1NBQ2xFO1FBRUQsTUFBTSxXQUFXLEdBQUcsR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLFlBQVksbUJBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxnQkFBZ0IsQ0FBQztRQUNqRyxNQUFNLFFBQVEsR0FBYSxFQUFFLENBQUM7UUFDOUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQWtCLENBQUM7UUFFM0MsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEdBQVcsRUFBRSxJQUEwQixFQUFFLEVBQUU7O1lBQ3ZFLE9BQU8sR0FBRyxLQUFLLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxHQUFHLElBQUksTUFBQSxJQUFJLENBQUMsWUFBWSxtQ0FBSSxZQUFZLEVBQUUsQ0FBQztRQUN2RyxDQUFDLENBQUM7UUFFRixNQUFNLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFD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LENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQy9DLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxXQUF1RCxDQUFDO2dCQUMvRSxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDMUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLFdBQVcsRUFBRTtvQkFDZixVQUFVLENBQUMsV0FBVyxHQUFHO3dCQUN2QixHQUFHLEdBQUc7d0JBQ04sS0FBSyxFQUFFLDJCQUFTLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPO3FCQUM3RSxDQUFDO29CQUNGLFdBQVcsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ2pDLHFCQUFHLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUM3QzthQUNGO1NBQ0Y7SUFDSCxDQUFDO0NBQ0Y7QUF0QkQsMENBc0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSUFzcGVjdCwgTGF6eSwgU3RhY2ssIFRva2VuLFxuICBhd3NfZWNyIGFzIGVjcixcbiAgYXdzX2NvZGVidWlsZCBhcyBjb2RlYnVpbGQsXG4gIGF3c19ldmVudHMgYXMgZXZlbnRzLFxuICBhd3NfZXZlbnRzX3RhcmdldHMgYXMgdGFyZ2V0cyxcbiAgYXdzX2lhbSBhcyBpYW0sXG4gIGF3c19zM19hc3NldHMgYXMgczNBc3NldHMsXG4gIGF3c19zZWNyZXRzbWFuYWdlciBhcyBzbSxcbiAgY3VzdG9tX3Jlc291cmNlcyBhcyBjcixcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0LCBJQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBNaXJyb3JTb3VyY2UgfSBmcm9tICcuL21pcnJvci1zb3VyY2UnO1xuXG4vKipcbiAqIEF1dGhlbnRpY2F0aW9uIGRldGFpbHMgZm9yIERvY2tlckh1Yi5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jb2RlYnVpbGQvbGF0ZXN0L3VzZXJndWlkZS9idWlsZC1zcGVjLXJlZi5odG1sI2J1aWxkLXNwZWMuZW52LnNlY3JldHMtbWFuYWdlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIERvY2tlckh1YkNyZWRlbnRpYWxzIHtcblxuICAvKipcbiAgICogVGhlIHNlY3JldCB0aGF0IGNvbnRhaW5zIHRoZSB1c2VybmFtZSBhbmQgcGFzc3dvcmQgZm9yIERvY2tlcmh1YlxuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0OiBzbS5JU2VjcmV0O1xuXG4gIC8qKlxuICAgKiBUaGUgc2VjcmV0IGtleSB0aGF0IGNvbnRhaW5zIHRoZSB1c2VybmFtZSBpbiB0aGUgc3BlY2lmaWVkIHNlY3JldC5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJuYW1lS2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzZWNyZXQga2V5IHRoYXQgY29udGFpbnMgdGhlIHBhc3N3b3JkIGluIHRoZSBzcGVjaWZpZWQgc2VjcmV0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGFzc3dvcmRLZXk6IHN0cmluZztcblxuICAvKipcbiAgICogVmVyc2lvbiBzdGFnZSBvZiB0aGUgc2VjcmV0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAnQVdTQ1VSUkVOVCdcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb25TdGFnZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGluaXRpYWxpemUgRWNyUmVnaXN0cnlTeW5jXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWNyTWlycm9yUHJvcHMge1xuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgaW1hZ2VzIHRvIGtlZXAgc3luYydlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZXM6IE1pcnJvclNvdXJjZVtdO1xuXG4gIC8qKlxuICAgKiBDcmVkZW50aWFscyB0byBzaWduaW5nIGludG8gRG9ja2VyaHViLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9ja2VySHViQ3JlZGVudGlhbHM6IERvY2tlckh1YkNyZWRlbnRpYWxzO1xuXG4gIC8qKlxuICAgKiBTeW5jIGpvYiBydW5zIG9uIGEgc2NoZWR1bGUuXG4gICAqIFRocm93cyBhbiBlcnJvciBpZiBuZWl0aGVyIHRoaXMgbm9yIGBhdXRvU3RhcnRgIGFyZSBzcGVjaWZpZWQuXG4gICAqIEBkZWZhdWx0IC0gZG9lcyBub3QgcnVuIG9uIHNjaGVkdWxlXG4gICAqL1xuICByZWFkb25seSBzY2hlZHVsZT86IGV2ZW50cy5TY2hlZHVsZTtcblxuICAvKipcbiAgICogU3RhcnQgdGhlIHN5bmMgam9iIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBkZXBsb3ltZW50LlxuICAgKiBUaGlzIGluamVjdHMgYSBjdXN0b20gcmVzb3VyY2UgdGhhdCBpcyBleGVjdXRlZCBhcyBwYXJ0IG9mIHRoZSBkZXBsb3ltZW50LlxuICAgKiBUaHJvd3MgYW4gZXJyb3IgaWYgbmVpdGhlciB0aGlzIG5vciBgc2NoZWR1bGVgIGFyZSBzcGVjaWZpZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhdXRvU3RhcnQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFN5bmNocm9uaXplIGltYWdlcyBmcm9tIERvY2tlckh1YiB0byBhbiBFQ1IgcmVnaXN0cnkgaW4gdGhlIEFXUyBhY2NvdW50LlxuICogVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIHRvIHdvcmthcm91bmQgRG9ja2VySHViJ3MgdGhyb3R0bGluZyBvbiBwdWxscyBhbmQgdXNlIEVDUiBpbnN0ZWFkLlxuICovXG5leHBvcnQgY2xhc3MgRWNyTWlycm9yIGV4dGVuZHMgQ29uc3RydWN0IHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9yZXBvczogTWFwPHN0cmluZywgZWNyLlJlcG9zaXRvcnk+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZXBvVGFnc1NlZW4gPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcHJvamVjdDogY29kZWJ1aWxkLlByb2plY3Q7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEVjck1pcnJvclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGlmICghcHJvcHMuc2NoZWR1bGUgJiYgIXByb3BzLmF1dG9TdGFydCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFaXRoZXIgc2NoZWR1bGUgb3IgYXV0b1N0YXJ0IG11c3QgYmUgcHJvdmlkZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBlY3JSZWdpc3RyeSA9IGAke1N0YWNrLm9mKHNjb3BlKS5hY2NvdW50fS5ka3IuZWNyLiR7U3RhY2sub2Yoc2NvcGUpLnJlZ2lvbn0uYW1hem9uYXdzLmNvbWA7XG4gICAgY29uc3QgY29tbWFuZHM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgYXNzZXRzID0gbmV3IEFycmF5PHMzQXNzZXRzLkFzc2V0PigpO1xuXG4gICAgY29uc3QgY29kZUJ1aWxkU2VjcmV0VmFsdWUgPSAoa2V5OiBzdHJpbmcsIGF1dGg6IERvY2tlckh1YkNyZWRlbnRpYWxzKSA9PiB7XG4gICAgICByZXR1cm4gYCR7cHJvcHMuZG9ja2VySHViQ3JlZGVudGlhbHMuc2VjcmV0LnNlY3JldE5hbWV9OiR7a2V5fToke2F1dGgudmVyc2lvblN0YWdlID8/ICdBV1NDVVJSRU5UJ31gO1xuICAgIH07XG5cbiAgICBjb25zdCB1c2VybmFtZSA9IGNvZGVCdWlsZFNlY3JldFZhbHVlKHByb3BzLmRvY2tlckh1YkNyZWRlbnRpYWxzLnVzZXJuYW1lS2V5LCBwcm9wcy5kb2NrZXJIdWJDcmVkZW50aWFscyk7XG4gICAgY29uc3QgcGFzc3dvcmQgPSBjb2RlQnVpbGRTZWNyZXRWYWx1ZShwcm9wcy5kb2NrZXJIdWJDcmVkZW50aWFscy5wYXNzd29yZEtleSwgcHJvcHMuZG9ja2VySHViQ3JlZGVudGlhbHMpO1xuXG4gICAgdGhpcy5fcHJvamVjdCA9IG5ldyBjb2RlYnVpbGQuUHJvamVjdCh0aGlzLCAnRWNyUHVzaEltYWdlcycsIHtcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIHByaXZpbGVnZWQ6IHRydWUsXG4gICAgICAgIGJ1aWxkSW1hZ2U6IGNvZGVidWlsZC5MaW51eEJ1aWxkSW1hZ2UuZnJvbURvY2tlclJlZ2lzdHJ5KCdwdWJsaWMuZWNyLmF3cy9qc2lpL3N1cGVyY2hhaW46MS1idXN0ZXItc2xpbS1ub2RlMTgnLCB7XG4gICAgICAgICAgc2VjcmV0c01hbmFnZXJDcmVkZW50aWFsczogcHJvcHMuZG9ja2VySHViQ3JlZGVudGlhbHMuc2VjcmV0LFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgICBlbnZpcm9ubWVudFZhcmlhYmxlczoge1xuICAgICAgICAvLyBEb2NrZXJIdWIgY3JlZGVudGlhbHMgdG8gYXZvaWQgdGhyb3R0bGluZ1xuICAgICAgICBET0NLRVJIVUJfVVNFUk5BTUU6IHsgdmFsdWU6IHVzZXJuYW1lLCB0eXBlOiBjb2RlYnVpbGQuQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlVHlwZS5TRUNSRVRTX01BTkFHRVIgfSxcbiAgICAgICAgRE9DS0VSSFVCX1BBU1NXT1JEOiB7IHZhbHVlOiBwYXNzd29yZCwgdHlwZTogY29kZWJ1aWxkLkJ1aWxkRW52aXJvbm1lbnRWYXJpYWJsZVR5cGUuU0VDUkVUU19NQU5BR0VSIH0sXG4gICAgICB9LFxuICAgICAgYnVpbGRTcGVjOiBjb2RlYnVpbGQuQnVpbGRTcGVjLmZyb21PYmplY3QoTGF6eS5hbnkoe1xuICAgICAgICBwcm9kdWNlOiAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZlcnNpb246ICcwLjInLFxuICAgICAgICAgICAgcGhhc2VzOiB7XG4gICAgICAgICAgICAgIGJ1aWxkOiB7XG4gICAgICAgICAgICAgICAgY29tbWFuZHM6IFtcblxuICAgICAgICAgICAgICAgICAgLy8gc3RhcnQgdGhlIGRvY2tlciBkYWVtb25cbiAgICAgICAgICAgICAgICAgICdub2h1cCAvdXNyL2Jpbi9kb2NrZXJkIC0taG9zdD11bml4Oi8vL3Zhci9ydW4vZG9ja2VyLnNvY2sgLS1ob3N0PXRjcDovLzEyNy4wLjAuMToyMzc1IC0tc3RvcmFnZS1kcml2ZXI9b3ZlcmxheTImJyxcbiAgICAgICAgICAgICAgICAgICd0aW1lb3V0IDE1IHNoIC1jIFwidW50aWwgZG9ja2VyIGluZm87IGRvIGVjaG8gLjsgc2xlZXAgMTsgZG9uZVwiJyxcblxuICAgICAgICAgICAgICAgICAgLy8gbG9naW4gdG8gZG9ja2VyaHViIHNvIHdlIHdvbid0IGdldCB0aHJvdHRsZWRcbiAgICAgICAgICAgICAgICAgICdkb2NrZXIgbG9naW4gLXUgJHtET0NLRVJIVUJfVVNFUk5BTUV9IC1wICR7RE9DS0VSSFVCX1BBU1NXT1JEfScsXG5cbiAgICAgICAgICAgICAgICAgIC8vIGxvZ2luIHRvIGVjciBzbyB3ZSBjYW4gcHVzaCB0byBpdFxuICAgICAgICAgICAgICAgICAgYGF3cyBlY3IgZ2V0LWxvZ2luLXBhc3N3b3JkIHwgZG9ja2VyIGxvZ2luIC0tdXNlcm5hbWUgQVdTIC0tcGFzc3dvcmQtc3RkaW4gJHtlY3JSZWdpc3RyeX1gLFxuXG4gICAgICAgICAgICAgICAgICAvLyBsb2dpbiB0byBlY3ItcHVibGljIHNvIHdlIGNhbiBwdWxsIGZyb20gaXQgd2l0aCBpbXByb3ZlZCByYXRlIGxpbWl0c1xuICAgICAgICAgICAgICAgICAgJ2F3cyBlY3ItcHVibGljIGdldC1sb2dpbi1wYXNzd29yZCAtLXJlZ2lvbiB1cy1lYXN0LTEgfCBkb2NrZXIgbG9naW4gLS11c2VybmFtZSBBV1MgLS1wYXNzd29yZC1zdGRpbiBwdWJsaWMuZWNyLmF3cycsXG5cbiAgICAgICAgICAgICAgICAgIC4uLmNvbW1hbmRzLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICB9KSksXG4gICAgICBzc21TZXNzaW9uUGVybWlzc2lvbnM6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyBFbnN1cmUgdGhlIHJ1bm5lciBoYXMgUFVMTCBhY2Nlc3MgdG8gRUNSLVB1YmxpYy5cbiAgICB0aGlzLl9wcm9qZWN0LnJvbGUhLmFkZE1hbmFnZWRQb2xpY3koaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKCdBbWF6b25FbGFzdGljQ29udGFpbmVyUmVnaXN0cnlQdWJsaWNSZWFkT25seScpKTtcblxuICAgIGZvciAoY29uc3QgaW1hZ2Ugb2YgcHJvcHMuc291cmNlcykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaW1hZ2UuYmluZCh7XG4gICAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgICBlY3JSZWdpc3RyeSxcbiAgICAgICAgc3luY0pvYjogdGhpcy5fcHJvamVjdCxcbiAgICAgIH0pO1xuICAgICAgY29tbWFuZHMucHVzaCguLi5yZXN1bHQuY29tbWFuZHMpO1xuXG4gICAgICBjb25zdCByZXBvVGFnID0gYCR7cmVzdWx0LnJlcG9zaXRvcnlOYW1lfToke3Jlc3VsdC50YWd9YDtcbiAgICAgIGlmICh0aGlzLl9yZXBvVGFnc1NlZW4uaGFzKHJlcG9UYWcpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTWlycm9yIHNvdXJjZSB3aXRoIHJlcG9zaXRvcnkgbmFtZSBbJHtyZXN1bHQucmVwb3NpdG9yeU5hbWV9XSBhbmQgdGFnIFske3Jlc3VsdC50YWd9XSBhbHJlYWR5IGV4aXN0cy5gKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3JlcG9UYWdzU2Vlbi5hZGQocmVwb1RhZyk7XG5cbiAgICAgIHRoaXMuY3JlYXRlTWlycm9yUmVwbyhyZXN1bHQucmVwb3NpdG9yeU5hbWUpO1xuXG4gICAgICBjb25zdCBlY3JJbWFnZVVyaSA9IGAke2VjclJlZ2lzdHJ5fS8ke3Jlc3VsdC5yZXBvc2l0b3J5TmFtZX06JHtyZXN1bHQudGFnfWA7XG4gICAgICBjb21tYW5kcy5wdXNoKGBkb2NrZXIgcHVzaCAke2VjckltYWdlVXJpfWApO1xuXG4gICAgICAvLyBjbGVhbiBhZnRlciBlYWNoIHB1c2ggc28gdGhhdCB3ZSBkb24ndCBmaWxsdXAgZGlzayBzcGFjZVxuICAgICAgLy8gcG9zc2libHkgZmFpbGluZyB0aGUgbmV4dCBwdWxsLlxuICAgICAgY29tbWFuZHMucHVzaCgnZG9ja2VyIGltYWdlIHBydW5lIC0tYWxsIC0tZm9yY2UnKTtcbiAgICB9XG5cbiAgICAvLyBDb2RlQnVpbGQgbmVlZHMgdG8gcmVhZCB0aGUgc2VjcmV0IHRvIHJlc29sdmUgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAgcHJvcHMuZG9ja2VySHViQ3JlZGVudGlhbHMuc2VjcmV0LmdyYW50UmVhZCh0aGlzLl9wcm9qZWN0KTtcblxuICAgIGVjci5BdXRob3JpemF0aW9uVG9rZW4uZ3JhbnRSZWFkKHRoaXMuX3Byb2plY3QpO1xuICAgIHRoaXMuX3JlcG9zLmZvckVhY2goKHIsIF8pID0+IHIuZ3JhbnRQdWxsUHVzaCh0aGlzLl9wcm9qZWN0KSk7XG5cbiAgICAvLyB0aGlzIHByb2plY3QgbmVlZHMgdG8gZG93bmxvYWQgdGhlIGFzc2V0cyBzbyBpdCBjYW4gYnVpbGQgdGhlbVxuICAgIGFzc2V0cy5mb3JFYWNoKGEgPT4gYS5ncmFudFJlYWQodGhpcy5fcHJvamVjdCkpO1xuXG4gICAgaWYgKHByb3BzLmF1dG9TdGFydCkge1xuICAgICAgbmV3IGNyLkF3c0N1c3RvbVJlc291cmNlKHRoaXMsICdCdWlsZEV4ZWN1dGlvbicsIHtcbiAgICAgICAgcG9saWN5OiBjci5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU2RrQ2FsbHMoeyByZXNvdXJjZXM6IFt0aGlzLl9wcm9qZWN0LnByb2plY3RBcm5dIH0pLFxuICAgICAgICBvblVwZGF0ZToge1xuICAgICAgICAgIGFjdGlvbjogJ3N0YXJ0QnVpbGQnLFxuICAgICAgICAgIHNlcnZpY2U6ICdDb2RlQnVpbGQnLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgIHByb2plY3ROYW1lOiB0aGlzLl9wcm9qZWN0LnByb2plY3ROYW1lLFxuICAgICAgICAgICAgLy8gdG8gdGlnZ2VyIHRoZSBidWlsZCBvbiBldmVyeSB1cGRhdGVcbiAgICAgICAgICAgIGlkZW1wb3RlbmN5VG9rZW46IGAke0RhdGUubm93KCl9YCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3IuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKCdFY3JSZWdpc3RyeUV4ZWN1dGlvbicpLFxuXG4gICAgICAgICAgLy8gbmVlZCBzaW5jZSB0aGUgZGVmYXVsdCByZXBvbnNlIGlmIGdyZWF0ZXIgdGhhbiB0aGUgNGsgbGltaXQgZm9yIGN1c3RvbSByZXNvdXJjZXMuXG4gICAgICAgICAgb3V0cHV0UGF0aHM6IFsnYnVpbGQuaWQnXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5zY2hlZHVsZSkge1xuICAgICAgbmV3IGV2ZW50cy5SdWxlKHRoaXMsICdTY2hlZHVsZWRUcmlnZ2VyJywge1xuICAgICAgICBzY2hlZHVsZTogcHJvcHMuc2NoZWR1bGUsXG4gICAgICAgIHRhcmdldHM6IFtuZXcgdGFyZ2V0cy5Db2RlQnVpbGRQcm9qZWN0KHRoaXMuX3Byb2plY3QpXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTWlycm9yUmVwbyhlY3JSZXBvc2l0b3J5TmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuX3JlcG9zLmdldChlY3JSZXBvc2l0b3J5TmFtZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZXBvc2l0b3J5ID0gbmV3IGVjci5SZXBvc2l0b3J5KHRoaXMsIGBSZXBvJHtlY3JSZXBvc2l0b3J5TmFtZX1gLCB7XG4gICAgICByZXBvc2l0b3J5TmFtZTogZWNyUmVwb3NpdG9yeU5hbWUsXG4gICAgfSk7XG4gICAgdGhpcy5fcmVwb3Muc2V0KGVjclJlcG9zaXRvcnlOYW1lLCByZXBvc2l0b3J5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHRhcmdldCBFQ1IgcmVwb3NpdG9yeSBmb3IgdGhlIGdpdmVuIHJlcG9zaXRvcnkgbmFtZSBhbmQgdGFnLlxuICAgKiBAcGFyYW0gcmVwb3NpdG9yeU5hbWUgVGhlIEVDUiByZXBvc2l0b3J5IHdpdGggdGhpcyBuYW1lXG4gICAqIEBwYXJhbSB0YWcgdGhlIHRhZyBmb3IgdGhlIHJlcG9zaXRvcnksIGRlZmF1bHRzIHRvICdsYXRlc3QnXG4gICAqL1xuICBwdWJsaWMgZWNyUmVwb3NpdG9yeShyZXBvc2l0b3J5TmFtZTogc3RyaW5nKTogZWNyLklSZXBvc2l0b3J5IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcmVwb3MuZ2V0KHJlcG9zaXRvcnlOYW1lKTtcbiAgfVxufTtcblxuLyoqXG4gKiBBbiBhc3BlY3QgdGhhdCB3YWxrcyB0aHJvdWdoIHRoZSBjb25zdHJ1Y3QgdHJlZSBhbmQgcmVwbGFjZXMgQ29kZUJ1aWxkIGpvYnMgd2l0aCBEb2NrZXIgaW1hZ2VzXG4gKiB3aXRoIEVDUiBlcXVpdmFsZW50cyBmb3VuZCBpbiB0aGUgRWNyTWlycm9yLlxuICovXG5leHBvcnQgY2xhc3MgRWNyTWlycm9yQXNwZWN0IGltcGxlbWVudHMgSUFzcGVjdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbWlycm9yOiBFY3JNaXJyb3IpIHt9XG5cbiAgcHVibGljIHZpc2l0KGNvbnN0cnVjdDogSUNvbnN0cnVjdCkge1xuICAgIGlmIChjb25zdHJ1Y3QgaW5zdGFuY2VvZiBjb2RlYnVpbGQuUHJvamVjdCkge1xuICAgICAgY29uc3QgY2ZucHJvamVjdCA9IGNvbnN0cnVjdC5ub2RlLmRlZmF1bHRDaGlsZCBhcyBjb2RlYnVpbGQuQ2ZuUHJvamVjdDtcbiAgICAgIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKGNmbnByb2plY3QuZW52aXJvbm1lbnQpKSB7XG4gICAgICAgIGNvbnN0IGVudiA9IGNmbnByb2plY3QuZW52aXJvbm1lbnQgYXMgY29kZWJ1aWxkLkNmblByb2plY3QuRW52aXJvbm1lbnRQcm9wZXJ0eTtcbiAgICAgICAgY29uc3QgaW1hZ2VOYW1lID0gZW52LmltYWdlLnNwbGl0KCc6JylbMF07XG4gICAgICAgIGNvbnN0IHRhZyA9IGVudi5pbWFnZS5zcGxpdCgnOicpWzFdO1xuICAgICAgICBjb25zdCByZXBsYWNlbWVudCA9IHRoaXMubWlycm9yLmVjclJlcG9zaXRvcnkoaW1hZ2VOYW1lKTtcbiAgICAgICAgaWYgKHJlcGxhY2VtZW50KSB7XG4gICAgICAgICAgY2ZucHJvamVjdC5lbnZpcm9ubWVudCA9IHtcbiAgICAgICAgICAgIC4uLmVudixcbiAgICAgICAgICAgIGltYWdlOiBjb2RlYnVpbGQuTGludXhCdWlsZEltYWdlLmZyb21FY3JSZXBvc2l0b3J5KHJlcGxhY2VtZW50LCB0YWcpLmltYWdlSWQsXG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXBsYWNlbWVudC5ncmFudFB1bGwoY29uc3RydWN0KTtcbiAgICAgICAgICBlY3IuQXV0aG9yaXphdGlvblRva2VuLmdyYW50UmVhZChjb25zdHJ1Y3QpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -32,7 +32,7 @@ class MirrorSource {
32
32
  if (image.includes(':')) {
33
33
  throw new Error('image must not include tag');
34
34
  }
35
- // simulates DockerHub by perfixing library/ to official images
35
+ // simulates DockerHub by prefixing library/ to official images
36
36
  const repositoryName = image.includes('/') ? image : `library/${image}`;
37
37
  super(repositoryName, tag, undefined, ecrRepositoryName);
38
38
  }
@@ -107,4 +107,4 @@ class MirrorSource {
107
107
  }
108
108
  }
109
109
  exports.MirrorSource = MirrorSource;
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlycm9yLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1pcnJvci1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBR3FCO0FBc0RyQjs7R0FFRztBQUNILE1BQXNCLFlBQVk7SUFFaEM7Ozs7Ozs7OztPQVNHO0lBQ0ksTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFhLEVBQUUsTUFBYyxRQUFRO1FBQy9ELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxlQUFlLENBQUMsS0FBYSxFQUFFLE1BQWMsUUFBUSxFQUFFLG9CQUE0QixLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxFQUFFO1FBQy9JLE1BQU0scUJBQXNCLFNBQVEsWUFBWTtZQUM5QztnQkFDRSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztpQkFDL0M7Z0JBQ0QsK0RBQStEO2dCQUMvRCxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxFQUFFLENBQUM7Z0JBQ3hFLEtBQUssQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBQzNELENBQUM7WUFFTSxJQUFJLENBQUMsT0FBZ0M7Z0JBQzFDLE1BQU0sV0FBVyxHQUFHLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNuRixPQUFPO29CQUNMLFFBQVEs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LEVBQ3RCLEdBQVcsRUFDWCxTQUFrQixFQUNsQixvQkFBb0IsY0FBYztRQUhsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBUTtRQUN0QixRQUFHLEdBQUgsR0FBRyxDQUFRO1FBQ1gsY0FBUyxHQUFULFNBQVMsQ0FBUztRQUNsQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWlCO0lBRXZELENBQUM7Q0FNRjtBQW5IRCxvQ0FtSEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhd3NfY29kZWJ1aWxkIGFzIGNvZGVidWlsZCxcbiAgYXdzX3MzX2Fzc2V0cyBhcyBzM0Fzc2V0cyxcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWlycm9yU291cmNlQmluZE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHRhcmdldCBFQ1IgcmVnaXN0cnlcbiAgICovXG4gIHJlYWRvbmx5IGVjclJlZ2lzdHJ5OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc2NvcGUgdG8gYXR0YWNoIGFueSBjb25zdHJ1Y3RzIHRoYXQgbWF5IGFsc28gYmUgbmVlZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2NvcGU6IENvbnN0cnVjdDtcblxuICAvKipcbiAgICogVGhlIENvZGVCdWlsZCBwcm9qZWN0IHRoYXQgd2lsbCBydW4gdGhlIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIERvY2tlckh1YiBhbmQgRUNSLlxuICAgKiBAZGVmYXVsdCAtIGVpdGhlciBubyBzeW5jIGpvYiBpcyBwcmVzZW50IG9yIGl0J3Mgbm90IGRlZmluZWQgeWV0LlxuICAgKi9cbiAgcmVhZG9ubHkgc3luY0pvYj86IGNvZGVidWlsZC5JUHJvamVjdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNaXJyb3JTb3VyY2VDb25maWcge1xuICAvKipcbiAgICogVGhlIGNvbW1hbmRzIHRvIHJ1biB0byByZXRyaWV2ZSB0aGUgZG9ja2VyIGltYWdlLlxuICAgKiBlLmcuIFsnZG9ja2VyIHB1bGwgPGltYWdlLWlkPiddXG4gICAqL1xuICByZWFkb25seSBjb21tYW5kczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB0YXJnZXQgRUNSIHJlcG9zaXRvcnkuXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFnIHRvIGJlIHVzZSBmb3IgdGhlIHRhcmdldCBFQ1IgaW1hZ2UuXG4gICAqL1xuICByZWFkb25seSB0YWc6IHN0cmluZztcbn1cblxuLyoqIEFkZGl0aW9uYWwgb3B0aW9ucyB3aGVuIGNvbmZpZ3VyaW5nIGEgTWlycm9yIFNvdXJjZSBmcm9tIGEgbG9jYWwgZGlyZWN0b3J5ICovXG5leHBvcnQgaW50ZXJmYWNlIE1pcnJvclNvdXJjZURpcmVjdG9yeU9wdGlvbnMge1xuICAvKipcbiAgICogVGFnIG9mIHRoZSBidWlsdCBpbWFnZS5cbiAgICogQGRlZmF1bHQgJ2xhdGVzdCdcbiAgICovXG4gIHJlYWRvbmx5IHRhZz86IHN0cmluZztcblxuICAvKipcbiAgICogQnVpbGQgYXJncyB0byBwYXNzIHRvIHRoZSBgZG9ja2VyIGJ1aWxkYCBjb21tYW5kLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGJ1aWxkIGFyZ3MgYXJlIHBhc3NlZFxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRBcmdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBTb3VyY2Ugb2YgdGhlIGltYWdlLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTWlycm9yU291cmNlIHtcblxuICAvKipcbiAgICogQ29uZmlndXJlIGFuIGltYWdlIGZyb20gRG9ja2VySHViLlxuICAgKlxuICAgKiBAcGFyYW0gaW1hZ2UgZS5nIGpzaWkvc3VwZXJjaGFpblxuICAgKiBAcGFyYW0gdGFnIG9wdGlvbmFsLCBkZWZhdWx0cyB0byAnbGF0ZXN0J1xuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBUaGlzIG1ldGhvZCdzIG5hbWUgaW5hY2N1cmF0ZWx5IGV4cHJlc3NlcyB0aGF0IHRoZSBpbWFnZSBjb21lc1xuICAgKiBmcm9tIERvY2tlckh1Yiwgd2hlbiBhbnkgcHVibGljbHktYWNjZXNzaWJsZSByZXBvc2l0b3J5IGNhbiBiZSB1c2VkLiBQcmVmZXJcbiAgICogdXNpbmcgYGZyb21JbWFnZU5hbWUoc3RyaW5nLCBzdHJpbmc/KWAgaW5zdGVhZCwgd2hpY2ggaXMgbW9yZSBhcHRseSBuYW1lZC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbURvY2tlckh1YihpbWFnZTogc3RyaW5nLCB0YWc6IHN0cmluZyA9ICdsYXRlc3QnKTogTWlycm9yU291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tUHVibGljSW1hZ2UoaW1hZ2UsIHRhZyk7XG4gIH1cblxuICAvKipcbiAgICogQ29uZmlndXJlIGFuIGltYWdlIGZyb20gRG9ja2VySHViIG9yIGEgcmVwb3NpdG9yeS1xdWFsaWZpZWQgaW1hZ2UgbmFtZS5cbiAgICpcbiAgICogQHBhcmFtIGltYWdlIGUuZyBwdWJsaWMuZWNyLmF3cy9qc2lpL3N1cGVyY2hhaW5cbiAgICogQHBhcmFtIHRhZyBvcHRpb25hbCwgZGVmYXVsdHMgdG8gJ2xhdGVzdCdcbiAgICogQHBhcmFtIGVjclJlcG9zaXRvcnlOYW1lIHRoZSBuYW1lIG9mIHRoZSBFQ1IgUmVwb3NpdG9yeSB0byB1c2UgKGUuZzoganNpaS9zdXBlcmNoYWluKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tUHVibGljSW1hZ2UoaW1hZ2U6IHN0cmluZywgdGFnOiBzdHJpbmcgPSAnbGF0ZXN0JywgZWNyUmVwb3NpdG9yeU5hbWU6IHN0cmluZyA9IGltYWdlLmluY2x1ZGVzKCcvJykgPyBpbWFnZSA6IGBsaWJyYXJ5LyR7aW1hZ2V9YCk6IE1pcnJvclNvdXJjZSB7XG4gICAgY2xhc3MgRG9ja2VySHViTWlycm9yU291cmNlIGV4dGVuZHMgTWlycm9yU291cmNlIHtcbiAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBpZiAoaW1hZ2UuaW5jbHVkZXMoJzonKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignaW1hZ2UgbXVzdCBub3QgaW5jbHVkZSB0YWcnKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBzaW11bGF0ZXMgRG9ja2VySHViIGJ5IHBlcmZpeGluZyBsaWJyYXJ5LyB0byBvZmZpY2lhbCBpbWFnZXNcbiAgICAgICAgY29uc3QgcmVwb3NpdG9yeU5hbWUgPSBpbWFnZS5pbmNsdWRlcygnLycpID8gaW1hZ2UgOiBgbGlicmFyeS8ke2ltYWdlfWA7XG4gICAgICAgIHN1cGVyKHJlcG9zaXRvcnlOYW1lLCB0YWcsIHVuZGVmaW5lZCwgZWNyUmVwb3NpdG9yeU5hbWUpO1xuICAgICAgfVxuXG4gICAgICBwdWJsaWMgYmluZChvcHRpb25zOiBNaXJyb3JTb3VyY2VCaW5kT3B0aW9ucyk6IE1pcnJvclNvdXJjZUNvbmZpZyB7XG4gICAgICAgIGNvbnN0IGVjckltYWdlVXJpID0gYCR7b3B0aW9ucy5lY3JSZWdpc3RyeX0vJHt0aGlzLmVjclJlcG9zaXRvcnlOYW1lfToke3RoaXMudGFnfWA7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgICAgIGBkb2NrZXIgcHVsbCAke3RoaXMucmVwb3NpdG9yeU5hbWV9OiR7dGhpcy50YWd9YCxcbiAgICAgICAgICAgIGBkb2NrZXIgdGFnICR7dGhpcy5yZXBvc2l0b3J5TmFtZX06JHt0aGlzLnRhZ30gJHtlY3JJbWFnZVVyaX1gLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVwb3NpdG9yeU5hbWU6IHRoaXMuZWNyUmVwb3NpdG9yeU5hbWUsXG4gICAgICAgICAgdGFnOiB0aGlzLnRhZyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERvY2tlckh1Yk1pcnJvclNvdXJjZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERFUFJFQ0FURURcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGZyb21EaXIoKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tRGlyZWN0b3J5KGRpcmVjdG9yeTogc3RyaW5nLCByZXBvc2l0b3J5TmFtZTogc3RyaW5nLCB0YWc/OiBzdHJpbmcpOiBNaXJyb3JTb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLmZyb21EaXIoZGlyZWN0b3J5LCByZXBvc2l0b3J5TmFtZSwgeyB0YWcgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ29uZmlndXJlIGFuIGltYWdlIGZyb20gYSBsb2NhbCBkaXJlY3RvcnkuXG4gICAqXG4gICAqIEBwYXJhbSBkaXJlY3RvcnkgUGF0aCB0byBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgRG9ja2VyZmlsZS5cbiAgICogQHBhcmFtIHJlcG9zaXRvcnlOYW1lIFJlcG9zaXRvcnkgbmFtZSBvZiB0aGUgYnVpbHQgaW1hZ2UuXG4gICAqIEBwYXJhbSBvcHRpb25zIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21EaXIoZGlyZWN0b3J5OiBzdHJpbmcsIHJlcG9zaXRvcnlOYW1lOiBzdHJpbmcsIG9wdHM6IE1pcnJvclNvdXJjZURpcmVjdG9yeU9wdGlvbnMgPSB7fSk6IE1pcnJvclNvdXJjZSB7XG4gICAgY2xhc3MgRGlyZWN0b3J5TWlycm9yU291cmNlIGV4dGVuZHMgTWlycm9yU291cmNlIHtcbiAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihyZXBvc2l0b3J5TmFtZSwgb3B0cy50YWcgPz8gJ2xhdGVzdCcsIGRpcmVjdG9yeSk7XG4gICAgICB9XG5cbiAgICAgIHB1YmxpYyBiaW5kKG9wdGlvbnM6IE1pcnJvclNvdXJjZUJpbmRPcHRpb25zKTogTWlycm9yU291cmNlQ29uZmlnIHtcbiAgICAgICAgY29uc3QgYXNzZXQgPSBuZXcgczNBc3NldHMuQXNzZXQob3B0aW9ucy5zY29wZSwgYEJ1aWxkQ29udGV4dCR7dGhpcy5kaXJlY3Rvcnl9JHtKU09OLnN0cmluZ2lmeShvcHRzLmJ1aWxkQXJncyA/PyB7fSl9YCwgeyBwYXRoOiB0aGlzLmRpcmVjdG9yeSEgfSk7XG4gICAgICAgIGlmIChvcHRpb25zLnN5bmNKb2IpIHtcbiAgICAgICAgICBhc3NldC5ncmFudFJlYWQob3B0aW9ucy5zeW5jSm9iKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlY3JJbWFnZVVyaSA9IGAke29wdGlvbnMuZWNyUmVnaXN0cnl9LyR7dGhpcy5lY3JSZXBvc2l0b3J5TmFtZX06JHt0aGlzLnRhZ31gO1xuICAgICAgICBjb25zdCBjbWRGbGFncyA9IFtdO1xuICAgICAgICBjbWRGbGFncy5wdXNoKCctLXB1bGwnKTtcbiAgICAgICAgY21kRmxhZ3MucHVzaCgnLXQnLCBlY3JJbWFnZVVyaSk7XG5cbiAgICAgICAgaWYgKG9wdHMuYnVpbGRBcmdzKSB7XG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMob3B0cy5idWlsZEFyZ3MpLmZvckVhY2goKFtrLCB2XSkgPT4gY21kRmxhZ3MucHVzaCgnLS1idWlsZC1hcmcnLCBgJHtrfT0ke3Z9YCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgemlwRmlsZSA9IGAke3RoaXMucmVwb3NpdG9yeU5hbWV9LnppcGA7XG4gICAgICAgIGNvbnN0IHRtcERpciA9IHRoaXMucmVwb3NpdG9yeU5hbWU7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb21tYW5kczogW1xuICAgICAgICAgICAgYHJtIC1yZiAke3ppcEZpbGV9ICR7dG1wRGlyfWAsXG4gICAgICAgICAgICBgYXdzIHMzIGNwICR7YXNzZXQuczNPYmplY3RVcmx9ICR7emlwRmlsZX1gLFxuICAgICAgICAgICAgYHVuemlwICR7emlwRmlsZX0gLWQgJHt0bXBEaXJ9YCxcbiAgICAgICAgICAgIGBkb2NrZXIgYnVpbGQgJHtjbWRGbGFncy5qb2luKCcgJyl9ICR7dG1wRGlyfWAsXG4gICAgICAgICAgXSxcbiAgICAgICAgICByZXBvc2l0b3J5TmFtZTogdGhpcy5lY3JSZXBvc2l0b3J5TmFtZSxcbiAgICAgICAgICB0YWc6IHRoaXMudGFnLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3IERpcmVjdG9yeU1pcnJvclNvdXJjZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVwb3NpdG9yeU5hbWU6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGFnOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRpcmVjdG9yeT86IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZWNyUmVwb3NpdG9yeU5hbWUgPSByZXBvc2l0b3J5TmFtZSxcbiAgKSB7XG4gIH1cblxuICAvKipcbiAgICogQmluZCB0aGUgc291cmNlIHdpdGggdGhlIEVjck1pcnJvciBjb25zdHJ1Y3QuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYmluZChvcHRpb25zOiBNaXJyb3JTb3VyY2VCaW5kT3B0aW9ucyk6IE1pcnJvclNvdXJjZUNvbmZpZztcbn1cbiJdfQ==
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlycm9yLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1pcnJvci1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBR3FCO0FBc0RyQjs7R0FFRztBQUNILE1BQXNCLFlBQVk7SUFFaEM7Ozs7Ozs7OztPQVNHO0lBQ0ksTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFhLEVBQUUsTUFBYyxRQUFRO1FBQy9ELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxlQUFlLENBQUMsS0FBYSxFQUFFLE1BQWMsUUFBUSxFQUFFLG9CQUE0QixLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxFQUFFO1FBQy9JLE1BQU0scUJBQXNCLFNBQVEsWUFBWTtZQUM5QztnQkFDRSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztpQkFDL0M7Z0JBQ0QsK0RBQStEO2dCQUMvRCxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxFQUFFLENBQUM7Z0JBQ3hFLEtBQUssQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBQzNELENBQUM7WUFFTSxJQUFJLENBQUMsT0FBZ0M7Z0JBQzFDLE1BQU0sV0FBVyxHQUFHLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNuRixPQUFPO29CQUNMLFFBQVEs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LEVBQ3RCLEdBQVcsRUFDWCxTQUFrQixFQUNsQixvQkFBb0IsY0FBYztRQUhsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBUTtRQUN0QixRQUFHLEdBQUgsR0FBRyxDQUFRO1FBQ1gsY0FBUyxHQUFULFNBQVMsQ0FBUztRQUNsQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWlCO0lBRXZELENBQUM7Q0FNRjtBQW5IRCxvQ0FtSEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhd3NfY29kZWJ1aWxkIGFzIGNvZGVidWlsZCxcbiAgYXdzX3MzX2Fzc2V0cyBhcyBzM0Fzc2V0cyxcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWlycm9yU291cmNlQmluZE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHRhcmdldCBFQ1IgcmVnaXN0cnlcbiAgICovXG4gIHJlYWRvbmx5IGVjclJlZ2lzdHJ5OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc2NvcGUgdG8gYXR0YWNoIGFueSBjb25zdHJ1Y3RzIHRoYXQgbWF5IGFsc28gYmUgbmVlZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2NvcGU6IENvbnN0cnVjdDtcblxuICAvKipcbiAgICogVGhlIENvZGVCdWlsZCBwcm9qZWN0IHRoYXQgd2lsbCBydW4gdGhlIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIERvY2tlckh1YiBhbmQgRUNSLlxuICAgKiBAZGVmYXVsdCAtIGVpdGhlciBubyBzeW5jIGpvYiBpcyBwcmVzZW50IG9yIGl0J3Mgbm90IGRlZmluZWQgeWV0LlxuICAgKi9cbiAgcmVhZG9ubHkgc3luY0pvYj86IGNvZGVidWlsZC5JUHJvamVjdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNaXJyb3JTb3VyY2VDb25maWcge1xuICAvKipcbiAgICogVGhlIGNvbW1hbmRzIHRvIHJ1biB0byByZXRyaWV2ZSB0aGUgZG9ja2VyIGltYWdlLlxuICAgKiBlLmcuIFsnZG9ja2VyIHB1bGwgPGltYWdlLWlkPiddXG4gICAqL1xuICByZWFkb25seSBjb21tYW5kczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB0YXJnZXQgRUNSIHJlcG9zaXRvcnkuXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFnIHRvIGJlIHVzZSBmb3IgdGhlIHRhcmdldCBFQ1IgaW1hZ2UuXG4gICAqL1xuICByZWFkb25seSB0YWc6IHN0cmluZztcbn1cblxuLyoqIEFkZGl0aW9uYWwgb3B0aW9ucyB3aGVuIGNvbmZpZ3VyaW5nIGEgTWlycm9yIFNvdXJjZSBmcm9tIGEgbG9jYWwgZGlyZWN0b3J5ICovXG5leHBvcnQgaW50ZXJmYWNlIE1pcnJvclNvdXJjZURpcmVjdG9yeU9wdGlvbnMge1xuICAvKipcbiAgICogVGFnIG9mIHRoZSBidWlsdCBpbWFnZS5cbiAgICogQGRlZmF1bHQgJ2xhdGVzdCdcbiAgICovXG4gIHJlYWRvbmx5IHRhZz86IHN0cmluZztcblxuICAvKipcbiAgICogQnVpbGQgYXJncyB0byBwYXNzIHRvIHRoZSBgZG9ja2VyIGJ1aWxkYCBjb21tYW5kLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGJ1aWxkIGFyZ3MgYXJlIHBhc3NlZFxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRBcmdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBTb3VyY2Ugb2YgdGhlIGltYWdlLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTWlycm9yU291cmNlIHtcblxuICAvKipcbiAgICogQ29uZmlndXJlIGFuIGltYWdlIGZyb20gRG9ja2VySHViLlxuICAgKlxuICAgKiBAcGFyYW0gaW1hZ2UgZS5nIGpzaWkvc3VwZXJjaGFpblxuICAgKiBAcGFyYW0gdGFnIG9wdGlvbmFsLCBkZWZhdWx0cyB0byAnbGF0ZXN0J1xuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBUaGlzIG1ldGhvZCdzIG5hbWUgaW5hY2N1cmF0ZWx5IGV4cHJlc3NlcyB0aGF0IHRoZSBpbWFnZSBjb21lc1xuICAgKiBmcm9tIERvY2tlckh1Yiwgd2hlbiBhbnkgcHVibGljbHktYWNjZXNzaWJsZSByZXBvc2l0b3J5IGNhbiBiZSB1c2VkLiBQcmVmZXJcbiAgICogdXNpbmcgYGZyb21JbWFnZU5hbWUoc3RyaW5nLCBzdHJpbmc/KWAgaW5zdGVhZCwgd2hpY2ggaXMgbW9yZSBhcHRseSBuYW1lZC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbURvY2tlckh1YihpbWFnZTogc3RyaW5nLCB0YWc6IHN0cmluZyA9ICdsYXRlc3QnKTogTWlycm9yU291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tUHVibGljSW1hZ2UoaW1hZ2UsIHRhZyk7XG4gIH1cblxuICAvKipcbiAgICogQ29uZmlndXJlIGFuIGltYWdlIGZyb20gRG9ja2VySHViIG9yIGEgcmVwb3NpdG9yeS1xdWFsaWZpZWQgaW1hZ2UgbmFtZS5cbiAgICpcbiAgICogQHBhcmFtIGltYWdlIGUuZyBwdWJsaWMuZWNyLmF3cy9qc2lpL3N1cGVyY2hhaW5cbiAgICogQHBhcmFtIHRhZyBvcHRpb25hbCwgZGVmYXVsdHMgdG8gJ2xhdGVzdCdcbiAgICogQHBhcmFtIGVjclJlcG9zaXRvcnlOYW1lIHRoZSBuYW1lIG9mIHRoZSBFQ1IgUmVwb3NpdG9yeSB0byB1c2UgKGUuZzoganNpaS9zdXBlcmNoYWluKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tUHVibGljSW1hZ2UoaW1hZ2U6IHN0cmluZywgdGFnOiBzdHJpbmcgPSAnbGF0ZXN0JywgZWNyUmVwb3NpdG9yeU5hbWU6IHN0cmluZyA9IGltYWdlLmluY2x1ZGVzKCcvJykgPyBpbWFnZSA6IGBsaWJyYXJ5LyR7aW1hZ2V9YCk6IE1pcnJvclNvdXJjZSB7XG4gICAgY2xhc3MgRG9ja2VySHViTWlycm9yU291cmNlIGV4dGVuZHMgTWlycm9yU291cmNlIHtcbiAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBpZiAoaW1hZ2UuaW5jbHVkZXMoJzonKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignaW1hZ2UgbXVzdCBub3QgaW5jbHVkZSB0YWcnKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBzaW11bGF0ZXMgRG9ja2VySHViIGJ5IHByZWZpeGluZyBsaWJyYXJ5LyB0byBvZmZpY2lhbCBpbWFnZXNcbiAgICAgICAgY29uc3QgcmVwb3NpdG9yeU5hbWUgPSBpbWFnZS5pbmNsdWRlcygnLycpID8gaW1hZ2UgOiBgbGlicmFyeS8ke2ltYWdlfWA7XG4gICAgICAgIHN1cGVyKHJlcG9zaXRvcnlOYW1lLCB0YWcsIHVuZGVmaW5lZCwgZWNyUmVwb3NpdG9yeU5hbWUpO1xuICAgICAgfVxuXG4gICAgICBwdWJsaWMgYmluZChvcHRpb25zOiBNaXJyb3JTb3VyY2VCaW5kT3B0aW9ucyk6IE1pcnJvclNvdXJjZUNvbmZpZyB7XG4gICAgICAgIGNvbnN0IGVjckltYWdlVXJpID0gYCR7b3B0aW9ucy5lY3JSZWdpc3RyeX0vJHt0aGlzLmVjclJlcG9zaXRvcnlOYW1lfToke3RoaXMudGFnfWA7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgICAgIGBkb2NrZXIgcHVsbCAke3RoaXMucmVwb3NpdG9yeU5hbWV9OiR7dGhpcy50YWd9YCxcbiAgICAgICAgICAgIGBkb2NrZXIgdGFnICR7dGhpcy5yZXBvc2l0b3J5TmFtZX06JHt0aGlzLnRhZ30gJHtlY3JJbWFnZVVyaX1gLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVwb3NpdG9yeU5hbWU6IHRoaXMuZWNyUmVwb3NpdG9yeU5hbWUsXG4gICAgICAgICAgdGFnOiB0aGlzLnRhZyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERvY2tlckh1Yk1pcnJvclNvdXJjZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERFUFJFQ0FURURcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGZyb21EaXIoKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tRGlyZWN0b3J5KGRpcmVjdG9yeTogc3RyaW5nLCByZXBvc2l0b3J5TmFtZTogc3RyaW5nLCB0YWc/OiBzdHJpbmcpOiBNaXJyb3JTb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLmZyb21EaXIoZGlyZWN0b3J5LCByZXBvc2l0b3J5TmFtZSwgeyB0YWcgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ29uZmlndXJlIGFuIGltYWdlIGZyb20gYSBsb2NhbCBkaXJlY3RvcnkuXG4gICAqXG4gICAqIEBwYXJhbSBkaXJlY3RvcnkgUGF0aCB0byBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgRG9ja2VyZmlsZS5cbiAgICogQHBhcmFtIHJlcG9zaXRvcnlOYW1lIFJlcG9zaXRvcnkgbmFtZSBvZiB0aGUgYnVpbHQgaW1hZ2UuXG4gICAqIEBwYXJhbSBvcHRpb25zIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21EaXIoZGlyZWN0b3J5OiBzdHJpbmcsIHJlcG9zaXRvcnlOYW1lOiBzdHJpbmcsIG9wdHM6IE1pcnJvclNvdXJjZURpcmVjdG9yeU9wdGlvbnMgPSB7fSk6IE1pcnJvclNvdXJjZSB7XG4gICAgY2xhc3MgRGlyZWN0b3J5TWlycm9yU291cmNlIGV4dGVuZHMgTWlycm9yU291cmNlIHtcbiAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihyZXBvc2l0b3J5TmFtZSwgb3B0cy50YWcgPz8gJ2xhdGVzdCcsIGRpcmVjdG9yeSk7XG4gICAgICB9XG5cbiAgICAgIHB1YmxpYyBiaW5kKG9wdGlvbnM6IE1pcnJvclNvdXJjZUJpbmRPcHRpb25zKTogTWlycm9yU291cmNlQ29uZmlnIHtcbiAgICAgICAgY29uc3QgYXNzZXQgPSBuZXcgczNBc3NldHMuQXNzZXQob3B0aW9ucy5zY29wZSwgYEJ1aWxkQ29udGV4dCR7dGhpcy5kaXJlY3Rvcnl9JHtKU09OLnN0cmluZ2lmeShvcHRzLmJ1aWxkQXJncyA/PyB7fSl9YCwgeyBwYXRoOiB0aGlzLmRpcmVjdG9yeSEgfSk7XG4gICAgICAgIGlmIChvcHRpb25zLnN5bmNKb2IpIHtcbiAgICAgICAgICBhc3NldC5ncmFudFJlYWQob3B0aW9ucy5zeW5jSm9iKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlY3JJbWFnZVVyaSA9IGAke29wdGlvbnMuZWNyUmVnaXN0cnl9LyR7dGhpcy5lY3JSZXBvc2l0b3J5TmFtZX06JHt0aGlzLnRhZ31gO1xuICAgICAgICBjb25zdCBjbWRGbGFncyA9IFtdO1xuICAgICAgICBjbWRGbGFncy5wdXNoKCctLXB1bGwnKTtcbiAgICAgICAgY21kRmxhZ3MucHVzaCgnLXQnLCBlY3JJbWFnZVVyaSk7XG5cbiAgICAgICAgaWYgKG9wdHMuYnVpbGRBcmdzKSB7XG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMob3B0cy5idWlsZEFyZ3MpLmZvckVhY2goKFtrLCB2XSkgPT4gY21kRmxhZ3MucHVzaCgnLS1idWlsZC1hcmcnLCBgJHtrfT0ke3Z9YCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgemlwRmlsZSA9IGAke3RoaXMucmVwb3NpdG9yeU5hbWV9LnppcGA7XG4gICAgICAgIGNvbnN0IHRtcERpciA9IHRoaXMucmVwb3NpdG9yeU5hbWU7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb21tYW5kczogW1xuICAgICAgICAgICAgYHJtIC1yZiAke3ppcEZpbGV9ICR7dG1wRGlyfWAsXG4gICAgICAgICAgICBgYXdzIHMzIGNwICR7YXNzZXQuczNPYmplY3RVcmx9ICR7emlwRmlsZX1gLFxuICAgICAgICAgICAgYHVuemlwICR7emlwRmlsZX0gLWQgJHt0bXBEaXJ9YCxcbiAgICAgICAgICAgIGBkb2NrZXIgYnVpbGQgJHtjbWRGbGFncy5qb2luKCcgJyl9ICR7dG1wRGlyfWAsXG4gICAgICAgICAgXSxcbiAgICAgICAgICByZXBvc2l0b3J5TmFtZTogdGhpcy5lY3JSZXBvc2l0b3J5TmFtZSxcbiAgICAgICAgICB0YWc6IHRoaXMudGFnLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3IERpcmVjdG9yeU1pcnJvclNvdXJjZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVwb3NpdG9yeU5hbWU6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGFnOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRpcmVjdG9yeT86IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZWNyUmVwb3NpdG9yeU5hbWUgPSByZXBvc2l0b3J5TmFtZSxcbiAgKSB7XG4gIH1cblxuICAvKipcbiAgICogQmluZCB0aGUgc291cmNlIHdpdGggdGhlIEVjck1pcnJvciBjb25zdHJ1Y3QuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYmluZChvcHRpb25zOiBNaXJyb3JTb3VyY2VCaW5kT3B0aW9ucyk6IE1pcnJvclNvdXJjZUNvbmZpZztcbn1cbiJdfQ==
package/lib/shellable.js CHANGED
@@ -89,6 +89,7 @@ class Shellable extends constructs_1.Construct {
89
89
  ssmSessionPermissions: true,
90
90
  });
91
91
  this.role = this.project.role; // not undefined, as it's a new Project
92
+ this.role.addManagedPolicy(aws_cdk_lib_1.aws_iam.ManagedPolicy.fromAwsManagedPolicyName('AmazonElasticContainerRegistryPublicReadOnly'));
92
93
  asset.grantRead(this.role);
93
94
  // Grant read access to secrets
94
95
  Object.entries((_b = props.environmentSecrets) !== null && _b !== void 0 ? _b : {}).forEach(([name, secretArn]) => {
@@ -168,7 +169,7 @@ class ShellPlatform {
168
169
  */
169
170
  static get LinuxUbuntu() {
170
171
  // Cannot be static member because of initialization order
171
- return new LinuxPlatform(aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.STANDARD_6_0);
172
+ return new LinuxPlatform(aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.STANDARD_7_0);
172
173
  }
173
174
  /**
174
175
  * Return a default Windows platform
@@ -191,7 +192,9 @@ class LinuxPlatform extends ShellPlatform {
191
192
  this.platformType = PlatformType.Linux;
192
193
  }
193
194
  installCommands() {
194
- return undefined;
195
+ return [
196
+ 'command -v yarn > /dev/null || npm install --global yarn',
197
+ ];
195
198
  }
196
199
  prebuildCommands(assumeRole, useRegionalStsEndpoints) {
197
200
  var _a;
@@ -282,4 +285,4 @@ class WindowsPlatform extends ShellPlatform {
282
285
  }
283
286
  }
284
287
  exports.WindowsPlatform = WindowsPlatform;
285
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGxhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hlbGxhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3Qiw2Q0FLcUI7QUFDckIsMkNBQXVDO0FBQ3ZDLDZDQUF5QztBQUN6QyxpQ0FBb0Q7QUFFcEQsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQUM7QUFDekMsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDO0FBaVBuQzs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFhLFNBQVUsU0FBUSxzQkFBUztJQWN0QyxZQUFZLE1BQWlCLEVBQUUsRUFBVSxFQUFtQixLQUFxQjs7UUFDL0UsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUR3QyxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUcvRSxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLElBQUksYUFBYSxDQUFDLFdBQVcsQ0FBQztRQUU1RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLFVBQVUsRUFBRSxDQUFDLENBQUM7U0FDL0Q7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLDJCQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUN0RCxJQUFJLEVBQUUsS0FBSyxDQUFDLGVBQWU7U0FDNUIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsTUFBQSxLQUFLLENBQUMsaUJBQWlCLG1DQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FB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LENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFsQ0QsMENBa0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7XG4gIER1cmF0aW9uLFxuICBhd3NfY2xvdWR3YXRjaCBhcyBjbG91ZHdhdGNoLCBhd3NfY29kZWJ1aWxkIGFzIGNidWlsZCxcbiAgYXdzX2NvZGVwaXBlbGluZSBhcyBjcGlwZWxpbmUsIGF3c19jb2RlcGlwZWxpbmVfYWN0aW9ucyBhcyBjcGlwZWxpbmVfYWN0aW9ucyxcbiAgYXdzX2lhbSBhcyBpYW0sIGF3c19zM19hc3NldHMgYXMgYXNzZXRzLCBhd3Nfc2VjcmV0c21hbmFnZXIsIGF3c19zc20sXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQnVpbGRTcGVjIH0gZnJvbSAnLi9idWlsZC1zcGVjJztcbmltcG9ydCB7IHJlbmRlckVudmlyb25tZW50VmFyaWFibGVzIH0gZnJvbSAnLi91dGlsJztcblxuY29uc3QgUzNfQlVDS0VUX0VOViA9ICdTQ1JJUFRfUzNfQlVDS0VUJztcbmNvbnN0IFMzX0tFWV9FTlYgPSAnU0NSSVBUX1MzX0tFWSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hlbGxhYmxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBmb3IgdGhlIENvZGVCdWlsZCBQcm9qZWN0XG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogU291cmNlIGZvciB0aGUgQ29kZUJ1aWxkIHByb2plY3RcbiAgICpcbiAgICogQGRlZmF1bHQgbm8gc291cmNlXG4gICAqL1xuICBzb3VyY2U/OiBjYnVpbGQuSVNvdXJjZTtcblxuICAvKipcbiAgICogV2hhdCBwbGF0Zm9ybSB0byB1cyB0byBydW4gdGhlIHNjcmlwdHMgb25cbiAgICpcbiAgICogQGRlZmF1bHQgU2hlbGxQbGF0Zm9ybS5MaW51eFVidW50dVxuICAgKi9cbiAgcGxhdGZvcm0/OiBTaGVsbFBsYXRmb3JtO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIGFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAqL1xuICBlbnZpcm9ubWVudD86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgdW5kZWZpbmVkIH07XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IHZhcmlhYmxlcyB3aXRoIHNlY3JldHMgbWFuYWdlciB2YWx1ZXMuIFRoZSB2YWx1ZXMgbXVzdCBiZSBjb21wbGV0ZSBTZWNyZXQgTWFuYWdlciBBUk5zLlxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBhZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgKi9cbiAgZW52aXJvbm1lbnRTZWNyZXRzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgdmFyaWFibGVzIHdpdGggU1NNIHBhcmFtZXRlciB2YWx1ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAqL1xuICBlbnZpcm9ubWVudFBhcmFtZXRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBUaGUgY29tcHV0ZSB0eXBlIHRvIHVzZSBmb3IgdGhlIGJ1aWxkIGNvbnRhaW5lci5cbiAgICpcbiAgICogTm90ZSB0aGF0IG5vdCBhbGwgY29tYmluYXRpb25zIGFyZSBhdmFpbGFibGUuIEZvciBleGFtcGxlLFxuICAgKiBXaW5kb3dzIGltYWdlcyBjYW5ub3QgYmUgcnVuIG9uIENvbXB1dGVUeXBlLlNtYWxsLlxuICAgKlxuICAgKiBAZGVmYXVsdCBDb21wdXRlVHlwZS5NZWRpdW1cbiAgICovXG4gIGNvbXB1dGVUeXBlPzogY2J1aWxkLkNvbXB1dGVUeXBlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaG93IHRoZSBwcm9qZWN0IGJ1aWxkcyBEb2NrZXIgaW1hZ2VzLiBTcGVjaWZ5IHRydWUgdG8gZW5hYmxlXG4gICAqIHJ1bm5pbmcgdGhlIERvY2tlciBkYWVtb24gaW5zaWRlIGEgRG9ja2VyIGNvbnRhaW5lci4gVGhpcyB2YWx1ZSBtdXN0IGJlXG4gICAqIHNldCB0byB0cnVlIG9ubHkgaWYgdGhpcyBidWlsZCBwcm9qZWN0IHdpbGwgYmUgdXNlZCB0byBidWlsZCBEb2NrZXJcbiAgICogaW1hZ2VzLCBhbmQgdGhlIHNwZWNpZmllZCBidWlsZCBlbnZpcm9ubWVudCBpbWFnZSBpcyBub3Qgb25lIHByb3ZpZGVkIGJ5XG4gICAqIEFXUyBDb2RlQnVpbGQgd2l0aCBEb2NrZXIgc3VwcG9ydC4gT3RoZXJ3aXNlLCBhbGwgYXNzb2NpYXRlZCBidWlsZHMgdGhhdFxuICAgKiBhdHRlbXB0IHRvIGludGVyYWN0IHdpdGggdGhlIERvY2tlciBkYWVtb24gd2lsbCBmYWlsLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcHJpdmlsZWdlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIGZvciB0aGUgYnVpbGQgcHJvamVjdC5cbiAgICpcbiAgICogQGRlZmF1bHQgYSBuYW1lIGlzIGdlbmVyYXRlZCBieSBDbG91ZEZvcm1hdGlvbi5cbiAgICovXG4gIGJ1aWxkUHJvamVjdE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiBSZWdpb25hbCBBV1MgU1RTIGVuZHBvaW50cyBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkXG4gICAqIG9mIHRoZSBnbG9iYWwgZW5kcG9pbnQuIFNwZWNpZnkgdHJ1ZSB0byB1c2UgUmVnaW9uYWwgQVdTIFNUUyBlbmRwb2ludHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICB1c2VSZWdpb25hbFN0c0VuZHBvaW50cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENhbiBiZSB1c2VkIHRvIHJ1biB0aGlzIGJ1aWxkIHVzaW5nIGEgc3BlY2lmaWMgSUFNIHJvbGUuIFRoaXMgY2FuIGJlIHVzZWQsXG4gICAqIGZvciBleGFtcGxlLCB0byBleGVjdXRlIGluIHRoZSBjb250ZXh0IG9mIGFub3RoZXIgYWNjb3VudCAoZS5nLiB0byBydW5cbiAgICogdGVzdHMgaW4gaXNvbGF0aW9uKS5cbiAgICovXG4gIGFzc3VtZVJvbGU/OiBBc3N1bWVSb2xlO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGJ1aWxkc3BlYyAoZm9yIGFydGlmYWN0cyBldGMuKVxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBhZGRpdGlvbmFsIGJ1aWxkc3BlY1xuICAgKi9cbiAgYnVpbGRTcGVjPzogQnVpbGRTcGVjO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZW91dCBvZiB0aGUgYnVpbGQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRoZSBDb2RlQnVpbGQgZGVmYXVsdCAoMSBob3VyKVxuICAgKi9cbiAgdGltZW91dD86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBBbGFybSBwZXJpb2QuXG4gICAqXG4gICAqIEBkZWZhdWx0IDMwMCBzZWNvbmRzICg1IG1pbnV0ZXMpXG4gICAqL1xuICBhbGFybVBlcmlvZD86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBBbGFybSB0aHJlc2hvbGQuXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIGFsYXJtVGhyZXNob2xkPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBbGFybSBldmFsdWF0aW9uIHBlcmlvZHMuXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIGFsYXJtRXZhbHVhdGlvblBlcmlvZHM/OiBudW1iZXI7XG5cbiAgc2Vjb25kYXJ5QXJ0aWZhY3ROYW1lcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDbGFyaWZ5IHdoZXRoZXIgdGhpcyBTaGVsbGFibGUgcHJvZHVjZXMgYW55IGFydGlmYWN0c1xuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBwcm9kdWNlc0FydGlmYWN0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE5hbWVzcGFjZSB0byB1c2Ugd2hlbiBhZGRpbmcgYXMgYW4gYWN0aW9uIHRvIHRoZSBwaXBlbGluZVxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBuYW1lc3BhY2VcbiAgICovXG4gIHJlYWRvbmx5IGFjdGlvbk5hbWVzcGFjZT86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0IGZyb20gdGhlIHBpcGVsaW5lIGFjdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICovXG4gIHJlYWRvbmx5IHBpcGVsaW5lRW52aXJvbm1lbnRWYXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHVzZWQgdG8gY3JlYXRlIGEgU2hlbGxhYmxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2hlbGxhYmxlUHJvcHMgZXh0ZW5kcyBTaGVsbGFibGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIERpcmVjdG9yeSB3aXRoIHRoZSBzY3JpcHRzLlxuICAgKlxuICAgKiBUaGUgd2hvbGUgZGlyZWN0b3J5IHdpbGwgYmUgdXBsb2FkZWQuXG4gICAqL1xuICBzY3JpcHREaXJlY3Rvcnk6IHN0cmluZztcblxuICAvKipcbiAgICogRmlsZW5hbWUgb2YgdGhlIGluaXRpYWwgc2NyaXB0IHRvIHN0YXJ0LCByZWxhdGl2ZSB0byBzY3JpcHREaXJlY3RvcnkuXG4gICAqL1xuICBlbnRyeXBvaW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIGVudHJ5cG9pbnQgc2NyaXB0LlxuICAgKlxuICAgKiAoTk9URTogbm90IG5hbWVkICdhcmd1bWVudHMnIGJlY2F1c2UgdGhhdCdzIGEgcmVzZXJ2ZWQgaWRlbnRpZmllciBpbiBKYXZhU2NyaXB0KVxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBhcmd1bWVudHNcbiAgICovXG4gIHJlYWRvbmx5IGFyZ3M/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBc3N1bWVSb2xlIHtcbiAgLyoqXG4gICAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgcm9sZSB0byBhc3N1bWUuXG4gICAqL1xuICByb2xlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBhc3N1bWVkIHJvbGUgc2Vzc2lvbi5cbiAgICpcbiAgICogVXNlICB0aGUgIHJvbGUgIHNlc3Npb24gbmFtZSB0byB1bmlxdWVseSBpZGVudGlmeSBhIHNlc3Npb24gd2hlbiB0aGUgc2FtZVxuICAgKiByb2xlIGlzIGFzc3VtZWQgYnkgZGlmZmVyZW50IHByaW5jaXBhbHMgb3IgZm9yIGRpZmZlcmVudCByZWFzb25zLiBJblxuICAgKiBjcm9zcy1hY2NvdW50IHNjZW5hcmlvcywgdGhlIHJvbGUgc2Vzc2lvbiBuYW1lIGlzIHZpc2libGUgdG8sIGFuZCBjYW4gYmVcbiAgICogbG9nZ2VkIGJ5IHRoZSBhY2NvdW50IHRoYXQgb3ducyB0aGUgcm9sZS4gIFRoZSByb2xlIHNlc3Npb24gbmFtZSBpcyBhbHNvXG4gICAqIHVzZWQgaW4gdGhlIEFSTiBvZiB0aGUgYXNzdW1lZCByb2xlIHByaW5jaXBhbC4gVGhpcyBtZWFucyB0aGF0IHN1YnNlcXVlbnRcbiAgICogY3Jvc3MtYWNjb3VudCBBUEkgcmVxdWVzdHMgdXNpbmcgdGhlIHRlbS0gcG9yYXJ5IHNlY3VyaXR5IGNyZWRlbnRpYWxzIHdpbGxcbiAgICogZXhwb3NlIHRoZSByb2xlIHNlc3Npb24gbmFtZSB0byB0aGUgZXh0ZXJuYWwgYWNjb3VudCBpbiB0aGVpciBDbG91ZFRyYWlsXG4gICAqIGxvZ3MuXG4gICAqXG4gICAqIFRoZSByZWdleCB1c2VkIHRvIHZhbGlkYXRlIHRoaXMgcGFyYW1ldGVyIGlzIGEgc3RyaW5nIG9mIGNoYXJhY3RlcnNcbiAgICogY29uc2lzdGluZyAgb2YgdXBwZXItIGFuZCBsb3dlci1jYXNlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIHdpdGggbm9cbiAgICogc3BhY2VzLiBZb3UgY2FuIGFsc28gaW5jbHVkZSB1bmRlcnNjb3JlcyBvciBhbnkgb2YgdGhlIGZvbGxvd2luZ1xuICAgKiBjaGFyYWN0ZXJzOiA9LC5ALVxuICAgKi9cbiAgc2Vzc2lvbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQSAgdW5pcXVlICBpZGVudGlmaWVyICB0aGF0ICBpcyAgdXNlZCBieSB0aGlyZCBwYXJ0aWVzIHdoZW4gYXNzdW1pbmcgcm9sZXNcbiAgICogaW4gdGhlaXIgY3VzdG9tZXJzJyBhY2NvdW50cy4gRm9yIGVhY2ggIHJvbGUgIHRoYXQgIHRoZSAgdGhpcmQgcGFydHkgY2FuXG4gICAqIGFzc3VtZSwgdGhleSBzaG91bGQgaW5zdHJ1Y3QgdGhlaXIgY3VzdG9tZXJzIHRvIGVuc3VyZSB0aGUgcm9sZSdzIHRydXN0XG4gICAqIHBvbGljeSBjaGVja3MgZm9yIHRoZSBleHRlcm5hbCBJRCB0aGF0IHRoZSB0aGlyZCAgcGFydHkgZ2VuZXJhdGVkLiAgRWFjaFxuICAgKiB0aW1lIHRoZSB0aGlyZCBwYXJ0eSBhc3N1bWVzIHRoZSByb2xlLCB0aGV5IHNob3VsZCBwYXNzIHRoZSBjdXN0b21lcidzXG4gICAqIGV4dGVybmFsIElELiBUaGUgZXh0ZXJuYWwgSUQgaXMgdXNlZnVsIGluICBvcmRlciB0byAgaGVscCAgdGhpcmQgIHBhcnRpZXNcbiAgICogYmluZCBhIHJvbGUgdG8gdGhlIGN1c3RvbWVyIHdobyBjcmVhdGVkIGl0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGVcbiAgICogZXh0ZXJuYWwgSUQsIHNlZSBIb3cgdG8gVXNlIGFuIEV4dGVyLSBuYWwgIElEICBXaGVuIEdyYW50aW5nIEFjY2VzcyB0byBZb3VyXG4gICAqIEFXUyBSZXNvdXJjZXMgdG8gYSBUaGlyZCBQYXJ0eSBpbiB0aGUgSUFNIFVzZXIgR3VpZGUgLlxuICAgKlxuICAgKiBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgc3RyaW5nIG9mIGNoYXJhY3RlcnMgY29uc2lzdGluZyAgb2YgdXBwZXItIGFuZFxuICAgKiBsb3dlci1jYXNlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIHdpdGggbm8gc3BhY2VzLiBZb3UgY2FuIGFsc28gaW5jbHVkZVxuICAgKiB1bmRlcnNjb3JlcyBvciAgYW55ICBvZiAgdGhlICBmb2xsb3dpbmcgY2hhcmFjdGVyczogPSwuQDovLVxuICAgKi9cbiAgZXh0ZXJuYWxJZD86IHN0cmluZztcblxuICAvKipcbiAgICogV2hlbiBhIHByb2ZpZSBuYW1lIGlzIGNvbmZpZ3VyZWQsIGFuIGFzc3VtZWQgcm9sZSBjb25maWd1cmF0aW9uIHdpbGwgYmUgY3JlYXRlZFxuICAgKiBpbiB0aGUgc2hhcmVkIGF3cyBjb25maWd1cmF0aW9uIGZpbGUgKH4vLmF3cy9jb25maWcpLiBUaGlzIGlzIGluIGNvbnRyYXJ5IG9mIHNpbXBseSBpbnZva2luZ1xuICAgKiBhbiBgc3RzIGFzc3VtZS1yb2xlYCBjb21tYW5kIHRoYXQgY3JlYXRlcyBhIHNlc3Npb24gd2l0aCBhIGZpeGVkIGV4cGlyeSBkYXRlLlxuICAgKlxuICAgKiBVc2luZyBhIHByb2ZpbGUgd2lsbCBkZWxlZ2F0ZSBjcmVkZW50aWFsIHJlZnJlc2hpbmcgdG8gdGhlIFNESy9DTEkuXG4gICAqIFRoaXMgaXMgbmVlZGVkIHRvIHN1cHBvcnQgbG9uZyBydW5uaW5nIHNlc3Npb25zIHRoYXQgbmVlZHMgc2Vzc2lvbnMgdGhhdCBhcmUgbG9uZ2VyIHRoYW5cbiAgICogdGhlIHNlc3Npb24gZHVyYXRpb24gdGhhdCBjYW4gYmUgY29uZmlndXJlZCB3aXRoIGEgYHN0cyBhc3N1bWUtcm9sZWAuXG4gICAqXG4gICAqIFRoZSBhcHBsaWNhdGlvbiBjb2RlIHdpbGwgYWNjZXNzIHRvIHRoaXMgcHJvZmlsZSBpbiB0aGUgYEFXU19QUk9GSUxFYCBlbnYgdmFyaWFibGUuXG4gICAqXG4gICAqIE9ubHkgcmVsZXZhbnQgaWYgYHJlZnJlc2hgIGlzIHNwZWNpZmllZC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2xpL2xhdGVzdC91c2VyZ3VpZGUvY2xpLWNvbmZpZ3VyZS1maWxlcy5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0ICdsb25nLXJ1bm5pbmctcHJvZmlsZSdcbiAgICovXG4gIHByb2ZpbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoaXMgaWYgeW91IGhhdmUgYSBsb25nIHJ1bm5pbmcgZXhlY3V0aW9uIHRoYXQgbmVlZHMgbG9uZyBydW5uaW5nIHNlc3Npb25zLlxuICAgKiBUaGlzIHdpbGwgY3JlYXRlIGEgcHJvZmlsZSBhbmQgdXNlIGl0IHRvIGRlbGVnYXRlIGNyZWRlbnRpYWwgcmVmcmVzaGluZyB0byB0aGUgU0RLL0NMSVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVmcmVzaD86IGJvb2xlYW47XG5cbn1cblxuLyoqXG4gKiBBIENvZGVCdWlsZCBwcm9qZWN0IHRoYXQgcnVucyBhcmJpdHJhcnkgc2NyaXB0cy5cbiAqXG4gKiBUaGUgc2NyaXB0cyB0byBiZSBydW4gYXJlIHNwZWNpZmllZCBieSBzdXBwbHlpbmcgYSBkaXJlY3RvcnkuXG4gKiBBbGwgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeSBhcmUgdXBsb2FkZWQsIHRoZW4gdGhlIHNjcmlwdCBkZXNpZ25hdGVkXG4gKiBhcyB0aGUgZW50cnkgcG9pbnQgaXMgc3RhcnRlZC5cbiAqXG4gKiBUaGUgc2NyaXB0IGlzIGV4ZWN1dGVkIGluIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGJ1aWxkIHByb2plY3Qnc1xuICogaW5wdXQgaXMgc3RvcmVkLiBUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBzY3JpcHQgZmlsZXMgYXJlIHN0b3JlZFxuICogaXMgaW4gdGhlICRTQ1JJUFRfRElSIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICpcbiAqIFN1cHBvcnRzIGJvdGggV2luZG93cyBhbmQgTGludXggY29tcHV0ZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTaGVsbGFibGUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY2J1aWxkLlByb2plY3Q7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIENsb3VkV2F0Y2ggYWxhcm0gdGhhdCB3aWxsIGJlIHRyaWdnZXJlZCBpZiB0aGlzIGFjdGlvbiBmYWlscy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhbGFybTogY2xvdWR3YXRjaC5BbGFybTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtOiBTaGVsbFBsYXRmb3JtO1xuICBwcml2YXRlIHJlYWRvbmx5IGJ1aWxkU3BlYzogQnVpbGRTcGVjO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgb3V0cHV0QXJ0aWZhY3ROYW1lPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBTaGVsbGFibGVQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgaWQpO1xuXG4gICAgdGhpcy5wbGF0Zm9ybSA9IHByb3BzLnBsYXRmb3JtIHx8IFNoZWxsUGxhdGZvcm0uTGludXhVYnVudHU7XG5cbiAgICBjb25zdCBlbnRyeXBvaW50ID0gcGF0aC5qb2luKHByb3BzLnNjcmlwdERpcmVjdG9yeSwgcHJvcHMuZW50cnlwb2ludCk7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGVudHJ5cG9pbnQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIHRlc3QgZW50cnlwb2ludDogJHtlbnRyeXBvaW50fWApO1xuICAgIH1cblxuICAgIGNvbnN0IGFzc2V0ID0gbmV3IGFzc2V0cy5Bc3NldCh0aGlzLCAnU2NyaXB0RGlyZWN0b3J5Jywge1xuICAgICAgcGF0aDogcHJvcHMuc2NyaXB0RGlyZWN0b3J5LFxuICAgIH0pO1xuXG4gICAgdGhpcy5vdXRwdXRBcnRpZmFjdE5hbWUgPSAocHJvcHMucHJvZHVjZXNBcnRpZmFjdHMgPz8gdHJ1ZSkgPyBgQXJ0aWZhY3RfJHt0aGlzLm5vZGUuYWRkcn1gIDogdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLm91dHB1dEFydGlmYWN0TmFtZSAmJiB0aGlzLm91dHB1dEFydGlmYWN0TmFtZS5sZW5ndGggPiAxMDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgV2hvb3BzLCB0b28gbG9uZzogJHt0aGlzLm91dHB1dEFydGlmYWN0TmFtZX1gKTtcbiAgICB9XG5cbiAgICB0aGlzLmJ1aWxkU3BlYyA9IEJ1aWxkU3BlYy5zaW1wbGUoe1xuICAgICAgaW5zdGFsbDogdGhpcy5wbGF0Zm9ybS5pbnN0YWxsQ29tbWFuZHMoKSxcbiAgICAgIHByZUJ1aWxkOiB0aGlzLnBsYXRmb3JtLnByZWJ1aWxkQ29tbWFuZHMocHJvcHMuYXNzdW1lUm9sZSwgcHJvcHMudXNlUmVnaW9uYWxTdHNFbmRwb2ludHMpLFxuICAgICAgYnVpbGQ6IHRoaXMucGxhdGZvcm0uYnVpbGRDb21tYW5kcyhwcm9wcy5lbnRyeXBvaW50LCBwcm9wcy5hcmdzKSxcbiAgICB9KS5tZXJnZShwcm9wcy5idWlsZFNwZWMgfHwgQnVpbGRTcGVjLmVtcHR5KCkpO1xuXG4gICAgY29uc3QgZW52aXJvbm1lbnRTZWNyZXRzQXNTZWNyZXROYW1lcyA9IHRoaXMuY29udmVydEVudmlyb25tZW50U2VjcmV0QXJuc1RvU2VjcmV0TmFtZXMocHJvcHMuZW52aXJvbm1lbnRTZWNyZXRzKTtcblxuICAgIHRoaXMucHJvamVjdCA9IG5ldyBjYnVpbGQuUHJvamVjdCh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBwcm9qZWN0TmFtZTogcHJvcHMuYnVpbGRQcm9qZWN0TmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIHNvdXJjZTogcHJvcHMuc291cmNlLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgYnVpbGRJbWFnZTogdGhpcy5wbGF0Zm9ybS5idWlsZEltYWdlLFxuICAgICAgICBjb21wdXRlVHlwZTogcHJvcHMuY29tcHV0ZVR5cGUgfHwgY2J1aWxkLkNvbXB1dGVUeXBlLk1FRElVTSxcbiAgICAgICAgcHJpdmlsZWdlZDogcHJvcHMucHJpdmlsZWdlZCxcbiAgICAgIH0sXG4gICAgICBlbnZpcm9ubWVudFZhcmlhYmxlczoge1xuICAgICAgICBbUzNfQlVDS0VUX0VOVl06IHsgdmFsdWU6IGFzc2V0LnMzQnVja2V0TmFtZSB9LFxuICAgICAgICBbUzNfS0VZX0VOVl06IHsgdmFsdWU6IGFzc2V0LnMzT2JqZWN0S2V5IH0sXG4gICAgICAgIC4uLnJlbmRlckVudmlyb25tZW50VmFyaWFibGVzKHByb3BzLmVudmlyb25tZW50KSxcbiAgICAgICAgLi4ucmVuZGVyRW52aXJvbm1lbnRWYXJpYWJsZXMoZW52aXJvbm1lbnRTZWNyZXRzQXNTZWNyZXROYW1lcywgY2J1aWxkLkJ1aWxkRW52aXJvbm1lbnRWYXJpYWJsZVR5cGUuU0VDUkVUU19NQU5BR0VSKSxcbiAgICAgICAgLi4ucmVuZGVyRW52aXJvbm1lbnRWYXJpYWJsZXMocHJvcHMuZW52aXJvbm1lbnRQYXJhbWV0ZXJzLCBjYnVpbGQuQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlVHlwZS5QQVJBTUVURVJfU1RPUkUpLFxuICAgICAgfSxcbiAgICAgIHRpbWVvdXQ6IHByb3BzLnRpbWVvdXQsXG4gICAgICBidWlsZFNwZWM6IGNidWlsZC5CdWlsZFNwZWMuZnJvbU9iamVjdCh0aGlzLmJ1aWxkU3BlYy5yZW5kZXIoeyBwcmltYXJ5QXJ0aWZhY3ROYW1lOiB0aGlzLm91dHB1dEFydGlmYWN0TmFtZSB9KSksXG4gICAgICBzc21TZXNzaW9uUGVybWlzc2lvbnM6IHRydWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLnJvbGUgPSB0aGlzLnByb2plY3Qucm9sZSE7IC8vIG5vdCB1bmRlZmluZWQsIGFzIGl0J3MgYSBuZXcgUHJvamVjdFxuICAgIGFzc2V0LmdyYW50UmVhZCh0aGlzLnJvbGUpO1xuXG4gICAgLy8gR3JhbnQgcmVhZCBhY2Nlc3MgdG8gc2VjcmV0c1xuICAgIE9iamVjdC5lbnRyaWVzKHByb3BzLmVudmlyb25tZW50U2VjcmV0cyA/PyB7fSkuZm9yRWFjaCgoW25hbWUsIHNlY3JldEFybl0pID0+IHtcbiAgICAgIGNvbnN0IHNlY3JldCA9IGF3c19zZWNyZXRzbWFuYWdlci5TZWNyZXQuZnJvbVNlY3JldENvbXBsZXRlQXJuKHRoaXMsIGAke25hbWV9U2VjcmV0YCwgc2VjcmV0QXJuKTtcbiAgICAgIHNlY3JldC5ncmFudFJlYWQodGhpcy5yb2xlKTtcbiAgICB9KTtcblxuICAgIC8vIEdyYW50IHJlYWQgYWNjZXNzIHRvIHBhcmFtZXRlcnNcbiAgICBPYmplY3QuZW50cmllcyhwcm9wcy5lbnZpcm9ubWVudFBhcmFtZXRlcnMgPz8ge30pLmZvckVhY2goKFtuYW1lLCBwYXJhbWV0ZXJOYW1lXSkgPT4ge1xuICAgICAgY29uc3QgcGFyYW1ldGVyID0gYXdzX3NzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUodGhpcywgYCR7bmFtZX1QYXJhbWV0ZXJgLCBwYXJhbWV0ZXJOYW1lKTtcbiAgICAgIHBhcmFtZXRlci5ncmFudFJlYWQodGhpcy5yb2xlKTtcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5hc3N1bWVSb2xlKSB7XG4gICAgICB0aGlzLnJvbGUuYWRkVG9QcmluY2lwYWxQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbJ3N0czpBc3N1bWVSb2xlJ10sXG4gICAgICAgIHJlc291cmNlczogW3Byb3BzLmFzc3VtZVJvbGUucm9sZUFybl0sXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgdGhpcy5hbGFybSA9IG5ldyBjbG91ZHdhdGNoLkFsYXJtKHRoaXMsICdBbGFybScsIHtcbiAgICAgIG1ldHJpYzogdGhpcy5wcm9qZWN0Lm1ldHJpY0ZhaWxlZEJ1aWxkcyh7IHBlcmlvZDogcHJvcHMuYWxhcm1QZXJpb2QgfHwgRHVyYXRpb24uc2Vjb25kcygzMDApIH0pLFxuICAgICAgdGhyZXNob2xkOiBwcm9wcy5hbGFybVRocmVzaG9sZCB8fCAxLFxuICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBjbG91ZHdhdGNoLkNvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IHByb3BzLmFsYXJtRXZhbHVhdGlvblBlcmlvZHMgfHwgMSxcbiAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IGNsb3Vkd2F0Y2guVHJlYXRNaXNzaW5nRGF0YS5JR05PUkUsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9QaXBlbGluZShzdGFnZTogY3BpcGVsaW5lLklTdGFnZSwgbmFtZTogc3RyaW5nLCBpbnB1dEFydGlmYWN0OiBjcGlwZWxpbmUuQXJ0aWZhY3QsIHJ1bk9yZGVyPzogbnVtYmVyKTpcbiAgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uIHtcbiAgICBjb25zdCBjb2RlQnVpbGRBY3Rpb24gPSBuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IG5hbWUsXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgICBydW5PcmRlcixcbiAgICAgIGlucHV0OiBpbnB1dEFydGlmYWN0LFxuICAgICAgdmFyaWFibGVzTmFtZXNwYWNlOiB0aGlzLnByb3BzLmFjdGlvbk5hbWVzcGFjZSxcbiAgICAgIGVudmlyb25tZW50VmFyaWFibGVzOiB0aGlzLnByb3BzLnBpcGVsaW5lRW52aXJvbm1lbnRWYXJzXG4gICAgICAgID8gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHRoaXMucHJvcHMucGlwZWxpbmVFbnZpcm9ubWVudFZhcnMpXG4gICAgICAgICAgLm1hcCgoW2ssIHZdKSA9PiAoW2ssIHsgdHlwZTogY2J1aWxkLkJ1aWxkRW52aXJvbm1lbnRWYXJpYWJsZVR5cGUuUExBSU5URVhULCB2YWx1ZTogdiB9XSBhcyBjb25zdCkpKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIG91dHB1dHM6IHRoaXMub3V0cHV0QXJ0aWZhY3ROYW1lXG4gICAgICAgID8gW3RoaXMub3V0cHV0QXJ0aWZhY3ROYW1lLCAuLi50aGlzLmJ1aWxkU3BlYy5hZGRpdGlvbmFsQXJ0aWZhY3ROYW1lcyA/PyBbXV0ubWFwKG4gPT4gbmV3IGNwaXBlbGluZS5BcnRpZmFjdChuKSlcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKGNvZGVCdWlsZEFjdGlvbik7XG4gICAgcmV0dXJuIGNvZGVCdWlsZEFjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY29udHJhY3Qgb2YgYGVudmlyb25tZW50U2VjcmV0c2AgaXMgdGhhdCB0aGUgdmFsdWVzIGFyZSBjb21wbGV0ZSBTZWNyZXQgQVJOcztcbiAgICogaG93ZXZlciwgdGhlIENvZGVCdWlsZCBjb25zdHJ1Y3QgZXhwZWN0cyBzZWNyZXQgbmFtZXMgYXMgdGhlIGlucHV0cyBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICAgKiBUaGlzIG1ldGhvZCBjb252ZXJ0cyB0aGUgZW52aXJvbm1lbnQgc2VjcmV0cyBmcm9tIEFSTnMgdG8gbmFtZXMuXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRFbnZpcm9ubWVudFNlY3JldEFybnNUb1NlY3JldE5hbWVzKGVudmlyb25tZW50U2VjcmV0cz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICBpZiAoIWVudmlyb25tZW50U2VjcmV0cykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBvdXQ6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7IH07XG4gICAgT2JqZWN0LmVudHJpZXMoZW52aXJvbm1lbnRTZWNyZXRzID8/IHt9KS5mb3JFYWNoKChbbmFtZSwgc2VjcmV0QXJuXSkgPT4ge1xuICAgICAgY29uc3Qgc2VjcmV0ID0gYXdzX3NlY3JldHNtYW5hZ2VyLlNlY3JldC5mcm9tU2VjcmV0Q29tcGxldGVBcm4odGhpcywgYCR7bmFtZX1TZWNyZXRGcm9tQXJuYCwgc2VjcmV0QXJuKTtcbiAgICAgIG91dFtuYW1lXSA9IHNlY3JldC5zZWNyZXROYW1lO1xuICAgIH0pO1xuICAgIHJldHVybiBvdXQ7XG4gIH1cbn1cblxuLyoqXG4gKiBQbGF0Zm9ybSBhcmNoZXR5cGVcbiAqL1xuZXhwb3J0IGVudW0gUGxhdGZvcm1UeXBlIHtcbiAgTGludXggPSAnTGludXgnLFxuICBXaW5kb3dzID0gJ1dpbmRvd3MnXG59XG5cbi8qKlxuICogVGhlIHBsYXRmb3JtIHR5cGUgdG8gcnVuIHRoZSBzY3JpcHRzIG9uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTaGVsbFBsYXRmb3JtIHtcbiAgLyoqXG4gICAqIFJldHVybiBhIGRlZmF1bHQgVWJ1bnR1IExpbnV4IHBsYXRmb3JtXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBMaW51eFVidW50dSgpOiBTaGVsbFBsYXRmb3JtIHtcbiAgICAvLyBDYW5ub3QgYmUgc3RhdGljIG1lbWJlciBiZWNhdXNlIG9mIGluaXRpYWxpemF0aW9uIG9yZGVyXG4gICAgcmV0dXJuIG5ldyBMaW51eFBsYXRmb3JtKGNidWlsZC5MaW51eEJ1aWxkSW1hZ2UuU1RBTkRBUkRfNl8wKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBkZWZhdWx0IFdpbmRvd3MgcGxhdGZvcm1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IFdpbmRvd3MoKTogU2hlbGxQbGF0Zm9ybSB7XG4gICAgLy8gQ2Fubm90IGJlIHN0YXRpYyBtZW1iZXIgYmVjYXVzZSBvZiBpbml0aWFsaXphdGlvbiBvcmRlclxuICAgIHJldHVybiBuZXcgV2luZG93c1BsYXRmb3JtKGNidWlsZC5XaW5kb3dzQnVpbGRJbWFnZS5XSU5fU0VSVkVSX0NPUkVfMjAxOV9CQVNFKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBidWlsZEltYWdlOiBjYnVpbGQuSUJ1aWxkSW1hZ2UpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRybiBjb21tYW5kcyB0byBwcmVwYXJlIHRoZSBob3N0IGZvciB0aGUgc2hlbGxhYmxlLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGluc3RhbGxDb21tYW5kcygpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogUmV0dXJuIGNvbW1hbmRzIHRvIGRvd25sb2FkIHRoZSBzY3JpcHQgYnVuZGxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcHJlYnVpbGRDb21tYW5kcyhhc3N1bWVSb2xlPzogQXNzdW1lUm9sZSwgdXNlUmVnaW9uYWxTdHNFbmRwb2ludHM/OiBib29sZWFuKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFJldHVybiBjb21tYW5kcyB0byBzdGFydCB0aGUgZW50cnlwb2ludCBzY3JpcHRcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBidWlsZENvbW1hbmRzKGVudHJ5cG9pbnQ6IHN0cmluZywgYXJncz86IHN0cmluZ1tdKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFR5cGUgb2YgcGxhdGZvcm1cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXQgcGxhdGZvcm1UeXBlKCk6IFBsYXRmb3JtVHlwZTtcbn1cblxuLyoqXG4gKiBBIExpbnV4IFBsYXRmb3JtXG4gKi9cbmV4cG9ydCBjbGFzcyBMaW51eFBsYXRmb3JtIGV4dGVuZHMgU2hlbGxQbGF0Zm9ybSB7XG4gIHB1YmxpYyByZWFkb25seSBwbGF0Zm9ybVR5cGUgPSBQbGF0Zm9ybVR5cGUuTGludXg7XG5cbiAgcHVibGljIGluc3RhbGxDb21tYW5kcygpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBwcmVidWlsZENvbW1hbmRzKGFzc3VtZVJvbGU/OiBBc3N1bWVSb2xlLCB1c2VSZWdpb25hbFN0c0VuZHBvaW50cz86IGJvb2xlYW4pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgbGluZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIC8vIEJldHRlciBlY2hvIHRoZSBsb2NhdGlvbiBoZXJlOyBpZiB0aGlzIGZhaWxzLCB0aGUgZXJyb3IgbWVzc2FnZSBvbmx5IGNvbnRhaW5zXG4gICAgLy8gdGhlIHVuZXhwYW5kZWQgdmFyaWFibGVzIGJ5IGRlZmF1bHQuIEl0IG1pZ2h0IGZhaWwgaWYgeW91J3JlIHJ1bm5pbmcgYW4gb2xkXG4gICAgLy8gZGVmaW5pdGlvbiBvZiB0aGUgQ29kZUJ1aWxkIHByb2plY3QtLXRoZSBwZXJtaXNzaW9ucyB3aWxsIGhhdmUgYmVlbiBjaGFuZ2VkXG4gICAgLy8gdG8gb25seSBhbGxvdyBkb3dubG9hZGluZyB0aGUgdmVyeSBsYXRlc3QgdmVyc2lvbi5cbiAgICBsaW5lcy5wdXNoKGBlY2hvIFwiRG93bmxvYWRpbmcgc2NyaXB0cyBmcm9tIHMzOi8vXFwkeyR7UzNfQlVDS0VUX0VOVn19L1xcJHske1MzX0tFWV9FTlZ9fVwiYCk7XG4gICAgbGluZXMucHVzaChgYXdzIHMzIGNwIHMzOi8vXFwkeyR7UzNfQlVDS0VUX0VOVn19L1xcJHske1MzX0tFWV9FTlZ9fSAvdG1wYCk7XG4gICAgbGluZXMucHVzaCgnbWtkaXIgLXAgL3RtcC9zY3JpcHRkaXInKTtcbiAgICBsaW5lcy5wdXNoKGB1bnppcCAvdG1wLyQoYmFzZW5hbWUgXFwkJHtTM19LRVlfRU5WfSkgLWQgL3RtcC9zY3JpcHRkaXJgKTtcblxuICAgIGlmIChhc3N1bWVSb2xlKSB7XG5cbiAgICAgIGlmIChhc3N1bWVSb2xlLnJlZnJlc2gpIHtcblxuICAgICAgICBjb25zdCBhd3NIb21lID0gJ34vLmF3cyc7XG5cbiAgICAgICAgY29uc3QgcHJvZmlsZU5hbWUgPSBhc3N1bWVSb2xlLnByb2ZpbGVOYW1lID8/ICdsb25nLXJ1bm5pbmctcHJvZmlsZSc7XG5cbiAgICAgICAgbGluZXMucHVzaChgbWtkaXIgLXAgJHthd3NIb21lfWApO1xuICAgICAgICBsaW5lcy5wdXNoKGB0b3VjaCAke2F3c0hvbWV9L2NyZWRlbnRpYWxzYCk7XG4gICAgICAgIGxpbmVzLnB1c2goYGNvbmZpZz0ke2F3c0hvbWV9L2NvbmZpZ2ApO1xuICAgICAgICBsaW5lcy5wdXNoKGBlY2hvIFtwcm9maWxlICR7cHJvZmlsZU5hbWV9XT4+ICRcXHtjb25maWdcXH1gKTtcbiAgICAgICAgbGluZXMucHVzaCgnZWNobyBjcmVkZW50aWFsX3NvdXJjZSA9IEVjc0NvbnRhaW5lciA+PiAkXFx7Y29uZmlnXFx9Jyk7XG4gICAgICAgIGxpbmVzLnB1c2goYGVjaG8gcm9sZV9zZXNzaW9uX25hbWUgPSAke2Fzc3VtZVJvbGUuc2Vzc2lvbk5hbWV9ID4+ICRcXHtjb25maWdcXH1gKTtcbiAgICAgICAgbGluZXMucHVzaChgZWNobyByb2xlX2FybiA9ICR7YXNzdW1lUm9sZS5yb2xlQXJufSA+PiAkY29uZmlnYCk7XG5cbiAgICAgICAgaWYgKGFzc3VtZVJvbGUuZXh0ZXJuYWxJZCkge1xuICAgICAgICAgIGxpbmVzLnB1c2goYGVjaG8gZXh0ZXJuYWxfaWQgPSAke2Fzc3VtZVJvbGUuZXh0ZXJuYWxJZH0gPj4gJGNvbmZpZ2ApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbGV0IHRoZSBhcHBsaWNhdGlvbiBjb2RlIGtub3cgd2hpY2ggcm9sZSBpcyBiZWluZyB1c2VkLlxuICAgICAgICBsaW5lcy5wdXNoKGBleHBvcnQgQVdTX1BST0ZJTEU9JHtwcm9maWxlTmFtZX1gKTtcblxuICAgICAgICAvLyBmb3JjZSB0aGUgQVdTIFNESyBmb3IgSmF2YVNjcmlwdCB0byBhY3R1YWxseSBsb2FkIHRoZSBjb25maWcgZmlsZSAoZG8gYXV0b21hdGljYWxseSBzbyB1c2VycyBkb24ndCBmb3JnZXQpXG4gICAgICAgIGxpbmVzLnB1c2goJ2V4cG9ydCBBV1NfU0RLX0xPQURfQ09ORklHPTEnKTtcblxuICAgICAgfSBlbHNlIHtcblxuICAgICAgICBjb25zdCBleHRlcm5hbElkID0gYXNzdW1lUm9sZS5leHRlcm5hbElkID8gYC0tZXh0ZXJuYWwtaWQgXCIke2Fzc3VtZVJvbGUuZXh0ZXJuYWxJZH1cImAgOiAnJztcbiAgICAgICAgY29uc3QgU3RzRW5kcG9pbnRzID0gdXNlUmVnaW9uYWxTdHNFbmRwb2ludHMgPyAncmVnaW9uYWwnIDogJ2xlZ2FjeSc7XG5cbiAgICAgICAgbGluZXMucHVzaCgnY3JlZHM9JChta3RlbXAgLWQpL2NyZWRzLmpzb24nKTtcbiAgICAgICAgbGluZXMucHVzaChgQVdTX1NUU19SRUdJT05BTF9FTkRQT0lOVFM9JHtTdHNFbmRwb2ludHN9IGF3cyBzdHMgYXNzdW1lLXJvbGUgLS1yb2xlLWFybiBcIiR7YXNzdW1lUm9sZS5yb2xlQXJufVwiIC0tcm9sZS1zZXNzaW9uLW5hbWUgXCIke2Fzc3VtZVJvbGUuc2Vzc2lvbk5hbWV9XCIgJHtleHRlcm5hbElkfSA+ICRjcmVkc2ApO1xuICAgICAgICBsaW5lcy5wdXNoKCdleHBvcnQgQVdTX0FDQ0VTU19LRVlfSUQ9XCIkKGNhdCAke2NyZWRzfSB8IGdyZXAgXCJBY2Nlc3NLZXlJZFwiIHwgY3V0IC1kXFwnXCJcXCcgLWYgNClcIicpO1xuICAgICAgICBsaW5lcy5wdXNoKCdleHBvcnQgQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZPVwiJChjYXQgJHtjcmVkc30gfCBncmVwIFwiU2VjcmV0QWNjZXNzS2V5XCIgfCBjdXQgLWRcXCdcIlxcJyAtZiA0KVwiJyk7XG4gICAgICAgIGxpbmVzLnB1c2goJ2V4cG9ydCBBV1NfU0VTU0lPTl9UT0tFTj1cIiQoY2F0ICR7Y3JlZHN9IHwgZ3JlcCBcIlNlc3Npb25Ub2tlblwiIHwgY3V0IC1kXFwnXCJcXCcgLWYgNClcIicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsaW5lcztcbiAgfVxuXG4gIHB1YmxpYyBidWlsZENvbW1hbmRzKGVudHJ5cG9pbnQ6IHN0cmluZywgYXJncz86IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnZXhwb3J0IFNDUklQVF9ESVI9L3RtcC9zY3JpcHRkaXInLFxuICAgICAgYGVjaG8gXCJSdW5uaW5nICR7ZW50cnlwb2ludH1cImAsXG4gICAgICBgL2Jpbi9iYXNoIC90bXAvc2NyaXB0ZGlyLyR7ZW50cnlwb2ludH0gJHsoYXJncyA/PyBbXSkuam9pbignICcpfWAudHJpbVJpZ2h0KCksXG4gICAgXTtcbiAgfVxufVxuXG4vKipcbiAqIEEgV2luZG93cyBQbGF0Zm9ybVxuICovXG5leHBvcnQgY2xhc3MgV2luZG93c1BsYXRmb3JtIGV4dGVuZHMgU2hlbGxQbGF0Zm9ybSB7XG4gIHB1YmxpYyByZWFkb25seSBwbGF0Zm9ybVR5cGUgPSBQbGF0Zm9ybVR5cGUuV2luZG93cztcblxuICBwdWJsaWMgaW5zdGFsbENvbW1hbmRzKCk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gW1xuICAgICAgLy8gVXBkYXRlIHRoZSBpbWFnZSdzIG5vZGVqcyB0byB0aGUgbGF0ZXN0IExUUyByZWxlYXNlLlxuICAgICAgJ0ltcG9ydC1Nb2R1bGUgXCJDOlxcXFxQcm9ncmFtRGF0YVxcXFxjaG9jb2xhdGV5XFxcXGhlbHBlcnNcXFxcY2hvY29sYXRleVByb2ZpbGUucHNtMVwiJyxcbiAgICAgICdDOlxcXFxQcm9ncmFtRGF0YVxcXFxjaG9jb2xhdGV5XFxcXGJpblxcXFxjaG9jby5leGUgdXBncmFkZSBub2RlanMtbHRzIC15JyxcbiAgICBdO1xuICB9XG5cbiAgcHVibGljIHByZWJ1aWxkQ29tbWFuZHMoYXNzdW1lUm9sZT86IEFzc3VtZVJvbGUsIF91c2VSZWdpb25hbFN0c0VuZHBvaW50cz86IGJvb2xlYW4pOiBzdHJpbmdbXSB7XG4gICAgaWYgKGFzc3VtZVJvbGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYXNzdW1lUm9sZSBpcyBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3M6IGh0dHBzOi8vZ2l0aHViLmNvbS9jZGtsYWJzL2F3cy1kZWxpdmxpYi9pc3N1ZXMvNTcnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW1xuICAgICAgLy8gV291bGQgbG92ZSB0byBkbyBkb3dubG9hZGluZyBoZXJlIGFuZCBleGVjdXRpbmcgaW4gdGhlIG5leHQgc3RlcCxcbiAgICAgIC8vIGJ1dCBJIGRvbid0IGtub3cgaG93IHRvIHByb3BhZ2F0ZSB0aGUgdmFsdWUgb2YgJFRFTVBESVIuXG4gICAgICAvL1xuICAgICAgLy8gUHVudGluZyBmb3Igc29tZW9uZSB3aG8ga25vd3MgUG93ZXJTaGVsbCB3ZWxsIGVub3VnaC5cbiAgICBdO1xuICB9XG5cbiAgcHVibGljIGJ1aWxkQ29tbWFuZHMoZW50cnlwb2ludDogc3RyaW5nLCBhcmdzPzogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICdTZXQtVmFyaWFibGUgLU5hbWUgVEVNUERJUiAtVmFsdWUgKE5ldy1UZW1wb3JhcnlGaWxlKS5EaXJlY3RvcnlOYW1lJyxcbiAgICAgIGBhd3MgczMgY3AgczM6Ly8kZW52OiR7UzNfQlVDS0VUX0VOVn0vJGVudjoke1MzX0tFWV9FTlZ9ICRURU1QRElSXFxcXHNjcmlwdHMuemlwYCxcbiAgICAgICdOZXctSXRlbSAtSXRlbVR5cGUgRGlyZWN0b3J5IC1QYXRoICRURU1QRElSXFxcXHNjcmlwdGRpcicsXG4gICAgICAnRXhwYW5kLUFyY2hpdmUgLVBhdGggJFRFTVBESVIvc2NyaXB0cy56aXAgLURlc3RpbmF0aW9uUGF0aCAkVEVNUERJUlxcXFxzY3JpcHRkaXInLFxuICAgICAgJyRlbnY6U0NSSVBUX0RJUiA9IFwiJFRFTVBESVJcXFxcc2NyaXB0ZGlyXCInLFxuICAgICAgYCYgJFRFTVBESVJcXFxcc2NyaXB0ZGlyXFxcXCR7ZW50cnlwb2ludH0gJHsoYXJncyA/PyBbXSkuam9pbignICcpfWAudHJpbVJpZ2h0KCksXG4gICAgXTtcbiAgfVxufVxuIl19
288
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGxhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hlbGxhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3Qiw2Q0FLcUI7QUFDckIsMkNBQXVDO0FBQ3ZDLDZDQUF5QztBQUN6QyxpQ0FBb0Q7QUFFcEQsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQUM7QUFDekMsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDO0FBaVBuQzs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFhLFNBQVUsU0FBUSxzQkFBUztJQWN0QyxZQUFZLE1BQWlCLEVBQUUsRUFBVSxFQUFtQixLQUFxQjs7UUFDL0UsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUR3QyxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUcvRSxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLElBQUksYUFBYSxDQUFDLFdBQVcsQ0FBQztRQUU1RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLFVBQVUsRUFBRSxDQUFDLENBQUM7U0FDL0Q7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLDJCQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUN0RCxJQUFJLEVBQUUsS0FBSyxDQUFDLGVBQWU7U0FDNUIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsTUFBQSxLQUFLLENBQUMsaUJBQWlCLG1DQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FB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VUFBVSxJQUFJLENBQUMsSUFBSSxhQUFKLElBQUksY0FBSixJQUFJLEdBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFO1NBQzdFLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFsQ0QsMENBa0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7XG4gIER1cmF0aW9uLFxuICBhd3NfY2xvdWR3YXRjaCBhcyBjbG91ZHdhdGNoLCBhd3NfY29kZWJ1aWxkIGFzIGNidWlsZCxcbiAgYXdzX2NvZGVwaXBlbGluZSBhcyBjcGlwZWxpbmUsIGF3c19jb2RlcGlwZWxpbmVfYWN0aW9ucyBhcyBjcGlwZWxpbmVfYWN0aW9ucyxcbiAgYXdzX2lhbSBhcyBpYW0sIGF3c19zM19hc3NldHMgYXMgYXNzZXRzLCBhd3Nfc2VjcmV0c21hbmFnZXIsIGF3c19zc20sXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQnVpbGRTcGVjIH0gZnJvbSAnLi9idWlsZC1zcGVjJztcbmltcG9ydCB7IHJlbmRlckVudmlyb25tZW50VmFyaWFibGVzIH0gZnJvbSAnLi91dGlsJztcblxuY29uc3QgUzNfQlVDS0VUX0VOViA9ICdTQ1JJUFRfUzNfQlVDS0VUJztcbmNvbnN0IFMzX0tFWV9FTlYgPSAnU0NSSVBUX1MzX0tFWSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hlbGxhYmxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBmb3IgdGhlIENvZGVCdWlsZCBQcm9qZWN0XG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogU291cmNlIGZvciB0aGUgQ29kZUJ1aWxkIHByb2plY3RcbiAgICpcbiAgICogQGRlZmF1bHQgbm8gc291cmNlXG4gICAqL1xuICBzb3VyY2U/OiBjYnVpbGQuSVNvdXJjZTtcblxuICAvKipcbiAgICogV2hhdCBwbGF0Zm9ybSB0byB1cyB0byBydW4gdGhlIHNjcmlwdHMgb25cbiAgICpcbiAgICogQGRlZmF1bHQgU2hlbGxQbGF0Zm9ybS5MaW51eFVidW50dVxuICAgKi9cbiAgcGxhdGZvcm0/OiBTaGVsbFBsYXRmb3JtO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIGFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAqL1xuICBlbnZpcm9ubWVudD86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgdW5kZWZpbmVkIH07XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IHZhcmlhYmxlcyB3aXRoIHNlY3JldHMgbWFuYWdlciB2YWx1ZXMuIFRoZSB2YWx1ZXMgbXVzdCBiZSBjb21wbGV0ZSBTZWNyZXQgTWFuYWdlciBBUk5zLlxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBhZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgKi9cbiAgZW52aXJvbm1lbnRTZWNyZXRzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgdmFyaWFibGVzIHdpdGggU1NNIHBhcmFtZXRlciB2YWx1ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAqL1xuICBlbnZpcm9ubWVudFBhcmFtZXRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBUaGUgY29tcHV0ZSB0eXBlIHRvIHVzZSBmb3IgdGhlIGJ1aWxkIGNvbnRhaW5lci5cbiAgICpcbiAgICogTm90ZSB0aGF0IG5vdCBhbGwgY29tYmluYXRpb25zIGFyZSBhdmFpbGFibGUuIEZvciBleGFtcGxlLFxuICAgKiBXaW5kb3dzIGltYWdlcyBjYW5ub3QgYmUgcnVuIG9uIENvbXB1dGVUeXBlLlNtYWxsLlxuICAgKlxuICAgKiBAZGVmYXVsdCBDb21wdXRlVHlwZS5NZWRpdW1cbiAgICovXG4gIGNvbXB1dGVUeXBlPzogY2J1aWxkLkNvbXB1dGVUeXBlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaG93IHRoZSBwcm9qZWN0IGJ1aWxkcyBEb2NrZXIgaW1hZ2VzLiBTcGVjaWZ5IHRydWUgdG8gZW5hYmxlXG4gICAqIHJ1bm5pbmcgdGhlIERvY2tlciBkYWVtb24gaW5zaWRlIGEgRG9ja2VyIGNvbnRhaW5lci4gVGhpcyB2YWx1ZSBtdXN0IGJlXG4gICAqIHNldCB0byB0cnVlIG9ubHkgaWYgdGhpcyBidWlsZCBwcm9qZWN0IHdpbGwgYmUgdXNlZCB0byBidWlsZCBEb2NrZXJcbiAgICogaW1hZ2VzLCBhbmQgdGhlIHNwZWNpZmllZCBidWlsZCBlbnZpcm9ubWVudCBpbWFnZSBpcyBub3Qgb25lIHByb3ZpZGVkIGJ5XG4gICAqIEFXUyBDb2RlQnVpbGQgd2l0aCBEb2NrZXIgc3VwcG9ydC4gT3RoZXJ3aXNlLCBhbGwgYXNzb2NpYXRlZCBidWlsZHMgdGhhdFxuICAgKiBhdHRlbXB0IHRvIGludGVyYWN0IHdpdGggdGhlIERvY2tlciBkYWVtb24gd2lsbCBmYWlsLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcHJpdmlsZWdlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIGZvciB0aGUgYnVpbGQgcHJvamVjdC5cbiAgICpcbiAgICogQGRlZmF1bHQgYSBuYW1lIGlzIGdlbmVyYXRlZCBieSBDbG91ZEZvcm1hdGlvbi5cbiAgICovXG4gIGJ1aWxkUHJvamVjdE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiBSZWdpb25hbCBBV1MgU1RTIGVuZHBvaW50cyBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkXG4gICAqIG9mIHRoZSBnbG9iYWwgZW5kcG9pbnQuIFNwZWNpZnkgdHJ1ZSB0byB1c2UgUmVnaW9uYWwgQVdTIFNUUyBlbmRwb2ludHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICB1c2VSZWdpb25hbFN0c0VuZHBvaW50cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENhbiBiZSB1c2VkIHRvIHJ1biB0aGlzIGJ1aWxkIHVzaW5nIGEgc3BlY2lmaWMgSUFNIHJvbGUuIFRoaXMgY2FuIGJlIHVzZWQsXG4gICAqIGZvciBleGFtcGxlLCB0byBleGVjdXRlIGluIHRoZSBjb250ZXh0IG9mIGFub3RoZXIgYWNjb3VudCAoZS5nLiB0byBydW5cbiAgICogdGVzdHMgaW4gaXNvbGF0aW9uKS5cbiAgICovXG4gIGFzc3VtZVJvbGU/OiBBc3N1bWVSb2xlO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGJ1aWxkc3BlYyAoZm9yIGFydGlmYWN0cyBldGMuKVxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBhZGRpdGlvbmFsIGJ1aWxkc3BlY1xuICAgKi9cbiAgYnVpbGRTcGVjPzogQnVpbGRTcGVjO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZW91dCBvZiB0aGUgYnVpbGQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRoZSBDb2RlQnVpbGQgZGVmYXVsdCAoMSBob3VyKVxuICAgKi9cbiAgdGltZW91dD86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBBbGFybSBwZXJpb2QuXG4gICAqXG4gICAqIEBkZWZhdWx0IDMwMCBzZWNvbmRzICg1IG1pbnV0ZXMpXG4gICAqL1xuICBhbGFybVBlcmlvZD86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBBbGFybSB0aHJlc2hvbGQuXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIGFsYXJtVGhyZXNob2xkPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBbGFybSBldmFsdWF0aW9uIHBlcmlvZHMuXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIGFsYXJtRXZhbHVhdGlvblBlcmlvZHM/OiBudW1iZXI7XG5cbiAgc2Vjb25kYXJ5QXJ0aWZhY3ROYW1lcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDbGFyaWZ5IHdoZXRoZXIgdGhpcyBTaGVsbGFibGUgcHJvZHVjZXMgYW55IGFydGlmYWN0c1xuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBwcm9kdWNlc0FydGlmYWN0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE5hbWVzcGFjZSB0byB1c2Ugd2hlbiBhZGRpbmcgYXMgYW4gYWN0aW9uIHRvIHRoZSBwaXBlbGluZVxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBuYW1lc3BhY2VcbiAgICovXG4gIHJlYWRvbmx5IGFjdGlvbk5hbWVzcGFjZT86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0IGZyb20gdGhlIHBpcGVsaW5lIGFjdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICovXG4gIHJlYWRvbmx5IHBpcGVsaW5lRW52aXJvbm1lbnRWYXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHVzZWQgdG8gY3JlYXRlIGEgU2hlbGxhYmxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2hlbGxhYmxlUHJvcHMgZXh0ZW5kcyBTaGVsbGFibGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIERpcmVjdG9yeSB3aXRoIHRoZSBzY3JpcHRzLlxuICAgKlxuICAgKiBUaGUgd2hvbGUgZGlyZWN0b3J5IHdpbGwgYmUgdXBsb2FkZWQuXG4gICAqL1xuICBzY3JpcHREaXJlY3Rvcnk6IHN0cmluZztcblxuICAvKipcbiAgICogRmlsZW5hbWUgb2YgdGhlIGluaXRpYWwgc2NyaXB0IHRvIHN0YXJ0LCByZWxhdGl2ZSB0byBzY3JpcHREaXJlY3RvcnkuXG4gICAqL1xuICBlbnRyeXBvaW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIGVudHJ5cG9pbnQgc2NyaXB0LlxuICAgKlxuICAgKiAoTk9URTogbm90IG5hbWVkICdhcmd1bWVudHMnIGJlY2F1c2UgdGhhdCdzIGEgcmVzZXJ2ZWQgaWRlbnRpZmllciBpbiBKYXZhU2NyaXB0KVxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBhcmd1bWVudHNcbiAgICovXG4gIHJlYWRvbmx5IGFyZ3M/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBc3N1bWVSb2xlIHtcbiAgLyoqXG4gICAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgcm9sZSB0byBhc3N1bWUuXG4gICAqL1xuICByb2xlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBhc3N1bWVkIHJvbGUgc2Vzc2lvbi5cbiAgICpcbiAgICogVXNlICB0aGUgIHJvbGUgIHNlc3Npb24gbmFtZSB0byB1bmlxdWVseSBpZGVudGlmeSBhIHNlc3Npb24gd2hlbiB0aGUgc2FtZVxuICAgKiByb2xlIGlzIGFzc3VtZWQgYnkgZGlmZmVyZW50IHByaW5jaXBhbHMgb3IgZm9yIGRpZmZlcmVudCByZWFzb25zLiBJblxuICAgKiBjcm9zcy1hY2NvdW50IHNjZW5hcmlvcywgdGhlIHJvbGUgc2Vzc2lvbiBuYW1lIGlzIHZpc2libGUgdG8sIGFuZCBjYW4gYmVcbiAgICogbG9nZ2VkIGJ5IHRoZSBhY2NvdW50IHRoYXQgb3ducyB0aGUgcm9sZS4gIFRoZSByb2xlIHNlc3Npb24gbmFtZSBpcyBhbHNvXG4gICAqIHVzZWQgaW4gdGhlIEFSTiBvZiB0aGUgYXNzdW1lZCByb2xlIHByaW5jaXBhbC4gVGhpcyBtZWFucyB0aGF0IHN1YnNlcXVlbnRcbiAgICogY3Jvc3MtYWNjb3VudCBBUEkgcmVxdWVzdHMgdXNpbmcgdGhlIHRlbS0gcG9yYXJ5IHNlY3VyaXR5IGNyZWRlbnRpYWxzIHdpbGxcbiAgICogZXhwb3NlIHRoZSByb2xlIHNlc3Npb24gbmFtZSB0byB0aGUgZXh0ZXJuYWwgYWNjb3VudCBpbiB0aGVpciBDbG91ZFRyYWlsXG4gICAqIGxvZ3MuXG4gICAqXG4gICAqIFRoZSByZWdleCB1c2VkIHRvIHZhbGlkYXRlIHRoaXMgcGFyYW1ldGVyIGlzIGEgc3RyaW5nIG9mIGNoYXJhY3RlcnNcbiAgICogY29uc2lzdGluZyAgb2YgdXBwZXItIGFuZCBsb3dlci1jYXNlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIHdpdGggbm9cbiAgICogc3BhY2VzLiBZb3UgY2FuIGFsc28gaW5jbHVkZSB1bmRlcnNjb3JlcyBvciBhbnkgb2YgdGhlIGZvbGxvd2luZ1xuICAgKiBjaGFyYWN0ZXJzOiA9LC5ALVxuICAgKi9cbiAgc2Vzc2lvbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQSAgdW5pcXVlICBpZGVudGlmaWVyICB0aGF0ICBpcyAgdXNlZCBieSB0aGlyZCBwYXJ0aWVzIHdoZW4gYXNzdW1pbmcgcm9sZXNcbiAgICogaW4gdGhlaXIgY3VzdG9tZXJzJyBhY2NvdW50cy4gRm9yIGVhY2ggIHJvbGUgIHRoYXQgIHRoZSAgdGhpcmQgcGFydHkgY2FuXG4gICAqIGFzc3VtZSwgdGhleSBzaG91bGQgaW5zdHJ1Y3QgdGhlaXIgY3VzdG9tZXJzIHRvIGVuc3VyZSB0aGUgcm9sZSdzIHRydXN0XG4gICAqIHBvbGljeSBjaGVja3MgZm9yIHRoZSBleHRlcm5hbCBJRCB0aGF0IHRoZSB0aGlyZCAgcGFydHkgZ2VuZXJhdGVkLiAgRWFjaFxuICAgKiB0aW1lIHRoZSB0aGlyZCBwYXJ0eSBhc3N1bWVzIHRoZSByb2xlLCB0aGV5IHNob3VsZCBwYXNzIHRoZSBjdXN0b21lcidzXG4gICAqIGV4dGVybmFsIElELiBUaGUgZXh0ZXJuYWwgSUQgaXMgdXNlZnVsIGluICBvcmRlciB0byAgaGVscCAgdGhpcmQgIHBhcnRpZXNcbiAgICogYmluZCBhIHJvbGUgdG8gdGhlIGN1c3RvbWVyIHdobyBjcmVhdGVkIGl0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGVcbiAgICogZXh0ZXJuYWwgSUQsIHNlZSBIb3cgdG8gVXNlIGFuIEV4dGVyLSBuYWwgIElEICBXaGVuIEdyYW50aW5nIEFjY2VzcyB0byBZb3VyXG4gICAqIEFXUyBSZXNvdXJjZXMgdG8gYSBUaGlyZCBQYXJ0eSBpbiB0aGUgSUFNIFVzZXIgR3VpZGUgLlxuICAgKlxuICAgKiBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgc3RyaW5nIG9mIGNoYXJhY3RlcnMgY29uc2lzdGluZyAgb2YgdXBwZXItIGFuZFxuICAgKiBsb3dlci1jYXNlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIHdpdGggbm8gc3BhY2VzLiBZb3UgY2FuIGFsc28gaW5jbHVkZVxuICAgKiB1bmRlcnNjb3JlcyBvciAgYW55ICBvZiAgdGhlICBmb2xsb3dpbmcgY2hhcmFjdGVyczogPSwuQDovLVxuICAgKi9cbiAgZXh0ZXJuYWxJZD86IHN0cmluZztcblxuICAvKipcbiAgICogV2hlbiBhIHByb2ZpZSBuYW1lIGlzIGNvbmZpZ3VyZWQsIGFuIGFzc3VtZWQgcm9sZSBjb25maWd1cmF0aW9uIHdpbGwgYmUgY3JlYXRlZFxuICAgKiBpbiB0aGUgc2hhcmVkIGF3cyBjb25maWd1cmF0aW9uIGZpbGUgKH4vLmF3cy9jb25maWcpLiBUaGlzIGlzIGluIGNvbnRyYXJ5IG9mIHNpbXBseSBpbnZva2luZ1xuICAgKiBhbiBgc3RzIGFzc3VtZS1yb2xlYCBjb21tYW5kIHRoYXQgY3JlYXRlcyBhIHNlc3Npb24gd2l0aCBhIGZpeGVkIGV4cGlyeSBkYXRlLlxuICAgKlxuICAgKiBVc2luZyBhIHByb2ZpbGUgd2lsbCBkZWxlZ2F0ZSBjcmVkZW50aWFsIHJlZnJlc2hpbmcgdG8gdGhlIFNESy9DTEkuXG4gICAqIFRoaXMgaXMgbmVlZGVkIHRvIHN1cHBvcnQgbG9uZyBydW5uaW5nIHNlc3Npb25zIHRoYXQgbmVlZHMgc2Vzc2lvbnMgdGhhdCBhcmUgbG9uZ2VyIHRoYW5cbiAgICogdGhlIHNlc3Npb24gZHVyYXRpb24gdGhhdCBjYW4gYmUgY29uZmlndXJlZCB3aXRoIGEgYHN0cyBhc3N1bWUtcm9sZWAuXG4gICAqXG4gICAqIFRoZSBhcHBsaWNhdGlvbiBjb2RlIHdpbGwgYWNjZXNzIHRvIHRoaXMgcHJvZmlsZSBpbiB0aGUgYEFXU19QUk9GSUxFYCBlbnYgdmFyaWFibGUuXG4gICAqXG4gICAqIE9ubHkgcmVsZXZhbnQgaWYgYHJlZnJlc2hgIGlzIHNwZWNpZmllZC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2xpL2xhdGVzdC91c2VyZ3VpZGUvY2xpLWNvbmZpZ3VyZS1maWxlcy5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0ICdsb25nLXJ1bm5pbmctcHJvZmlsZSdcbiAgICovXG4gIHByb2ZpbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoaXMgaWYgeW91IGhhdmUgYSBsb25nIHJ1bm5pbmcgZXhlY3V0aW9uIHRoYXQgbmVlZHMgbG9uZyBydW5uaW5nIHNlc3Npb25zLlxuICAgKiBUaGlzIHdpbGwgY3JlYXRlIGEgcHJvZmlsZSBhbmQgdXNlIGl0IHRvIGRlbGVnYXRlIGNyZWRlbnRpYWwgcmVmcmVzaGluZyB0byB0aGUgU0RLL0NMSVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVmcmVzaD86IGJvb2xlYW47XG5cbn1cblxuLyoqXG4gKiBBIENvZGVCdWlsZCBwcm9qZWN0IHRoYXQgcnVucyBhcmJpdHJhcnkgc2NyaXB0cy5cbiAqXG4gKiBUaGUgc2NyaXB0cyB0byBiZSBydW4gYXJlIHNwZWNpZmllZCBieSBzdXBwbHlpbmcgYSBkaXJlY3RvcnkuXG4gKiBBbGwgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeSBhcmUgdXBsb2FkZWQsIHRoZW4gdGhlIHNjcmlwdCBkZXNpZ25hdGVkXG4gKiBhcyB0aGUgZW50cnkgcG9pbnQgaXMgc3RhcnRlZC5cbiAqXG4gKiBUaGUgc2NyaXB0IGlzIGV4ZWN1dGVkIGluIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGJ1aWxkIHByb2plY3Qnc1xuICogaW5wdXQgaXMgc3RvcmVkLiBUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBzY3JpcHQgZmlsZXMgYXJlIHN0b3JlZFxuICogaXMgaW4gdGhlICRTQ1JJUFRfRElSIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICpcbiAqIFN1cHBvcnRzIGJvdGggV2luZG93cyBhbmQgTGludXggY29tcHV0ZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTaGVsbGFibGUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY2J1aWxkLlByb2plY3Q7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIENsb3VkV2F0Y2ggYWxhcm0gdGhhdCB3aWxsIGJlIHRyaWdnZXJlZCBpZiB0aGlzIGFjdGlvbiBmYWlscy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhbGFybTogY2xvdWR3YXRjaC5BbGFybTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtOiBTaGVsbFBsYXRmb3JtO1xuICBwcml2YXRlIHJlYWRvbmx5IGJ1aWxkU3BlYzogQnVpbGRTcGVjO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgb3V0cHV0QXJ0aWZhY3ROYW1lPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBTaGVsbGFibGVQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgaWQpO1xuXG4gICAgdGhpcy5wbGF0Zm9ybSA9IHByb3BzLnBsYXRmb3JtIHx8IFNoZWxsUGxhdGZvcm0uTGludXhVYnVudHU7XG5cbiAgICBjb25zdCBlbnRyeXBvaW50ID0gcGF0aC5qb2luKHByb3BzLnNjcmlwdERpcmVjdG9yeSwgcHJvcHMuZW50cnlwb2ludCk7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGVudHJ5cG9pbnQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIHRlc3QgZW50cnlwb2ludDogJHtlbnRyeXBvaW50fWApO1xuICAgIH1cblxuICAgIGNvbnN0IGFzc2V0ID0gbmV3IGFzc2V0cy5Bc3NldCh0aGlzLCAnU2NyaXB0RGlyZWN0b3J5Jywge1xuICAgICAgcGF0aDogcHJvcHMuc2NyaXB0RGlyZWN0b3J5LFxuICAgIH0pO1xuXG4gICAgdGhpcy5vdXRwdXRBcnRpZmFjdE5hbWUgPSAocHJvcHMucHJvZHVjZXNBcnRpZmFjdHMgPz8gdHJ1ZSkgPyBgQXJ0aWZhY3RfJHt0aGlzLm5vZGUuYWRkcn1gIDogdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLm91dHB1dEFydGlmYWN0TmFtZSAmJiB0aGlzLm91dHB1dEFydGlmYWN0TmFtZS5sZW5ndGggPiAxMDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgV2hvb3BzLCB0b28gbG9uZzogJHt0aGlzLm91dHB1dEFydGlmYWN0TmFtZX1gKTtcbiAgICB9XG5cbiAgICB0aGlzLmJ1aWxkU3BlYyA9IEJ1aWxkU3BlYy5zaW1wbGUoe1xuICAgICAgaW5zdGFsbDogdGhpcy5wbGF0Zm9ybS5pbnN0YWxsQ29tbWFuZHMoKSxcbiAgICAgIHByZUJ1aWxkOiB0aGlzLnBsYXRmb3JtLnByZWJ1aWxkQ29tbWFuZHMocHJvcHMuYXNzdW1lUm9sZSwgcHJvcHMudXNlUmVnaW9uYWxTdHNFbmRwb2ludHMpLFxuICAgICAgYnVpbGQ6IHRoaXMucGxhdGZvcm0uYnVpbGRDb21tYW5kcyhwcm9wcy5lbnRyeXBvaW50LCBwcm9wcy5hcmdzKSxcbiAgICB9KS5tZXJnZShwcm9wcy5idWlsZFNwZWMgfHwgQnVpbGRTcGVjLmVtcHR5KCkpO1xuXG4gICAgY29uc3QgZW52aXJvbm1lbnRTZWNyZXRzQXNTZWNyZXROYW1lcyA9IHRoaXMuY29udmVydEVudmlyb25tZW50U2VjcmV0QXJuc1RvU2VjcmV0TmFtZXMocHJvcHMuZW52aXJvbm1lbnRTZWNyZXRzKTtcblxuICAgIHRoaXMucHJvamVjdCA9IG5ldyBjYnVpbGQuUHJvamVjdCh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBwcm9qZWN0TmFtZTogcHJvcHMuYnVpbGRQcm9qZWN0TmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIHNvdXJjZTogcHJvcHMuc291cmNlLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgYnVpbGRJbWFnZTogdGhpcy5wbGF0Zm9ybS5idWlsZEltYWdlLFxuICAgICAgICBjb21wdXRlVHlwZTogcHJvcHMuY29tcHV0ZVR5cGUgfHwgY2J1aWxkLkNvbXB1dGVUeXBlLk1FRElVTSxcbiAgICAgICAgcHJpdmlsZWdlZDogcHJvcHMucHJpdmlsZWdlZCxcbiAgICAgIH0sXG4gICAgICBlbnZpcm9ubWVudFZhcmlhYmxlczoge1xuICAgICAgICBbUzNfQlVDS0VUX0VOVl06IHsgdmFsdWU6IGFzc2V0LnMzQnVja2V0TmFtZSB9LFxuICAgICAgICBbUzNfS0VZX0VOVl06IHsgdmFsdWU6IGFzc2V0LnMzT2JqZWN0S2V5IH0sXG4gICAgICAgIC4uLnJlbmRlckVudmlyb25tZW50VmFyaWFibGVzKHByb3BzLmVudmlyb25tZW50KSxcbiAgICAgICAgLi4ucmVuZGVyRW52aXJvbm1lbnRWYXJpYWJsZXMoZW52aXJvbm1lbnRTZWNyZXRzQXNTZWNyZXROYW1lcywgY2J1aWxkLkJ1aWxkRW52aXJvbm1lbnRWYXJpYWJsZVR5cGUuU0VDUkVUU19NQU5BR0VSKSxcbiAgICAgICAgLi4ucmVuZGVyRW52aXJvbm1lbnRWYXJpYWJsZXMocHJvcHMuZW52aXJvbm1lbnRQYXJhbWV0ZXJzLCBjYnVpbGQuQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlVHlwZS5QQVJBTUVURVJfU1RPUkUpLFxuICAgICAgfSxcbiAgICAgIHRpbWVvdXQ6IHByb3BzLnRpbWVvdXQsXG4gICAgICBidWlsZFNwZWM6IGNidWlsZC5CdWlsZFNwZWMuZnJvbU9iamVjdCh0aGlzLmJ1aWxkU3BlYy5yZW5kZXIoeyBwcmltYXJ5QXJ0aWZhY3ROYW1lOiB0aGlzLm91dHB1dEFydGlmYWN0TmFtZSB9KSksXG4gICAgICBzc21TZXNzaW9uUGVybWlzc2lvbnM6IHRydWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLnJvbGUgPSB0aGlzLnByb2plY3Qucm9sZSE7IC8vIG5vdCB1bmRlZmluZWQsIGFzIGl0J3MgYSBuZXcgUHJvamVjdFxuICAgIHRoaXMucm9sZS5hZGRNYW5hZ2VkUG9saWN5KGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnQW1hem9uRWxhc3RpY0NvbnRhaW5lclJlZ2lzdHJ5UHVibGljUmVhZE9ubHknKSk7XG4gICAgYXNzZXQuZ3JhbnRSZWFkKHRoaXMucm9sZSk7XG5cbiAgICAvLyBHcmFudCByZWFkIGFjY2VzcyB0byBzZWNyZXRzXG4gICAgT2JqZWN0LmVudHJpZXMocHJvcHMuZW52aXJvbm1lbnRTZWNyZXRzID8/IHt9KS5mb3JFYWNoKChbbmFtZSwgc2VjcmV0QXJuXSkgPT4ge1xuICAgICAgY29uc3Qgc2VjcmV0ID0gYXdzX3NlY3JldHNtYW5hZ2VyLlNlY3JldC5mcm9tU2VjcmV0Q29tcGxldGVBcm4odGhpcywgYCR7bmFtZX1TZWNyZXRgLCBzZWNyZXRBcm4pO1xuICAgICAgc2VjcmV0LmdyYW50UmVhZCh0aGlzLnJvbGUpO1xuICAgIH0pO1xuXG4gICAgLy8gR3JhbnQgcmVhZCBhY2Nlc3MgdG8gcGFyYW1ldGVyc1xuICAgIE9iamVjdC5lbnRyaWVzKHByb3BzLmVudmlyb25tZW50UGFyYW1ldGVycyA/PyB7fSkuZm9yRWFjaCgoW25hbWUsIHBhcmFtZXRlck5hbWVdKSA9PiB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXIgPSBhd3Nfc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZSh0aGlzLCBgJHtuYW1lfVBhcmFtZXRlcmAsIHBhcmFtZXRlck5hbWUpO1xuICAgICAgcGFyYW1ldGVyLmdyYW50UmVhZCh0aGlzLnJvbGUpO1xuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLmFzc3VtZVJvbGUpIHtcbiAgICAgIHRoaXMucm9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFsnc3RzOkFzc3VtZVJvbGUnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbcHJvcHMuYXNzdW1lUm9sZS5yb2xlQXJuXSxcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICB0aGlzLmFsYXJtID0gbmV3IGNsb3Vkd2F0Y2guQWxhcm0odGhpcywgJ0FsYXJtJywge1xuICAgICAgbWV0cmljOiB0aGlzLnByb2plY3QubWV0cmljRmFpbGVkQnVpbGRzKHsgcGVyaW9kOiBwcm9wcy5hbGFybVBlcmlvZCB8fCBEdXJhdGlvbi5zZWNvbmRzKDMwMCkgfSksXG4gICAgICB0aHJlc2hvbGQ6IHByb3BzLmFsYXJtVGhyZXNob2xkIHx8IDEsXG4gICAgICBjb21wYXJpc29uT3BlcmF0b3I6IGNsb3Vkd2F0Y2guQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgICBldmFsdWF0aW9uUGVyaW9kczogcHJvcHMuYWxhcm1FdmFsdWF0aW9uUGVyaW9kcyB8fCAxLFxuICAgICAgdHJlYXRNaXNzaW5nRGF0YTogY2xvdWR3YXRjaC5UcmVhdE1pc3NpbmdEYXRhLklHTk9SRSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBuYW1lOiBzdHJpbmcsIGlucHV0QXJ0aWZhY3Q6IGNwaXBlbGluZS5BcnRpZmFjdCwgcnVuT3JkZXI/OiBudW1iZXIpOlxuICBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24ge1xuICAgIGNvbnN0IGNvZGVCdWlsZEFjdGlvbiA9IG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogbmFtZSxcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICAgIHJ1bk9yZGVyLFxuICAgICAgaW5wdXQ6IGlucHV0QXJ0aWZhY3QsXG4gICAgICB2YXJpYWJsZXNOYW1lc3BhY2U6IHRoaXMucHJvcHMuYWN0aW9uTmFtZXNwYWNlLFxuICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXM6IHRoaXMucHJvcHMucGlwZWxpbmVFbnZpcm9ubWVudFZhcnNcbiAgICAgICAgPyBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModGhpcy5wcm9wcy5waXBlbGluZUVudmlyb25tZW50VmFycylcbiAgICAgICAgICAubWFwKChbaywgdl0pID0+IChbaywgeyB0eXBlOiBjYnVpbGQuQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlVHlwZS5QTEFJTlRFWFQsIHZhbHVlOiB2IH1dIGFzIGNvbnN0KSkpXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgb3V0cHV0czogdGhpcy5vdXRwdXRBcnRpZmFjdE5hbWVcbiAgICAgICAgPyBbdGhpcy5vdXRwdXRBcnRpZmFjdE5hbWUsIC4uLnRoaXMuYnVpbGRTcGVjLmFkZGl0aW9uYWxBcnRpZmFjdE5hbWVzID8/IFtdXS5tYXAobiA9PiBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KG4pKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgICBzdGFnZS5hZGRBY3Rpb24oY29kZUJ1aWxkQWN0aW9uKTtcbiAgICByZXR1cm4gY29kZUJ1aWxkQWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb250cmFjdCBvZiBgZW52aXJvbm1lbnRTZWNyZXRzYCBpcyB0aGF0IHRoZSB2YWx1ZXMgYXJlIGNvbXBsZXRlIFNlY3JldCBBUk5zO1xuICAgKiBob3dldmVyLCB0aGUgQ29kZUJ1aWxkIGNvbnN0cnVjdCBleHBlY3RzIHNlY3JldCBuYW1lcyBhcyB0aGUgaW5wdXRzIGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAqIFRoaXMgbWV0aG9kIGNvbnZlcnRzIHRoZSBlbnZpcm9ubWVudCBzZWNyZXRzIGZyb20gQVJOcyB0byBuYW1lcy5cbiAgICovXG4gIHByaXZhdGUgY29udmVydEVudmlyb25tZW50U2VjcmV0QXJuc1RvU2VjcmV0TmFtZXMoZW52aXJvbm1lbnRTZWNyZXRzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgIGlmICghZW52aXJvbm1lbnRTZWNyZXRzKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IG91dDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHsgfTtcbiAgICBPYmplY3QuZW50cmllcyhlbnZpcm9ubWVudFNlY3JldHMgPz8ge30pLmZvckVhY2goKFtuYW1lLCBzZWNyZXRBcm5dKSA9PiB7XG4gICAgICBjb25zdCBzZWNyZXQgPSBhd3Nfc2VjcmV0c21hbmFnZXIuU2VjcmV0LmZyb21TZWNyZXRDb21wbGV0ZUFybih0aGlzLCBgJHtuYW1lfVNlY3JldEZyb21Bcm5gLCBzZWNyZXRBcm4pO1xuICAgICAgb3V0W25hbWVdID0gc2VjcmV0LnNlY3JldE5hbWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIG91dDtcbiAgfVxufVxuXG4vKipcbiAqIFBsYXRmb3JtIGFyY2hldHlwZVxuICovXG5leHBvcnQgZW51bSBQbGF0Zm9ybVR5cGUge1xuICBMaW51eCA9ICdMaW51eCcsXG4gIFdpbmRvd3MgPSAnV2luZG93cydcbn1cblxuLyoqXG4gKiBUaGUgcGxhdGZvcm0gdHlwZSB0byBydW4gdGhlIHNjcmlwdHMgb25cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNoZWxsUGxhdGZvcm0ge1xuICAvKipcbiAgICogUmV0dXJuIGEgZGVmYXVsdCBVYnVudHUgTGludXggcGxhdGZvcm1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IExpbnV4VWJ1bnR1KCk6IFNoZWxsUGxhdGZvcm0ge1xuICAgIC8vIENhbm5vdCBiZSBzdGF0aWMgbWVtYmVyIGJlY2F1c2Ugb2YgaW5pdGlhbGl6YXRpb24gb3JkZXJcbiAgICByZXR1cm4gbmV3IExpbnV4UGxhdGZvcm0oY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF83XzApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIGRlZmF1bHQgV2luZG93cyBwbGF0Zm9ybVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQgV2luZG93cygpOiBTaGVsbFBsYXRmb3JtIHtcbiAgICAvLyBDYW5ub3QgYmUgc3RhdGljIG1lbWJlciBiZWNhdXNlIG9mIGluaXRpYWxpemF0aW9uIG9yZGVyXG4gICAgcmV0dXJuIG5ldyBXaW5kb3dzUGxhdGZvcm0oY2J1aWxkLldpbmRvd3NCdWlsZEltYWdlLldJTl9TRVJWRVJfQ09SRV8yMDE5X0JBU0UpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGJ1aWxkSW1hZ2U6IGNidWlsZC5JQnVpbGRJbWFnZSkge1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJuIGNvbW1hbmRzIHRvIHByZXBhcmUgdGhlIGhvc3QgZm9yIHRoZSBzaGVsbGFibGUuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaW5zdGFsbENvbW1hbmRzKCk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gY29tbWFuZHMgdG8gZG93bmxvYWQgdGhlIHNjcmlwdCBidW5kbGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBwcmVidWlsZENvbW1hbmRzKGFzc3VtZVJvbGU/OiBBc3N1bWVSb2xlLCB1c2VSZWdpb25hbFN0c0VuZHBvaW50cz86IGJvb2xlYW4pOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUmV0dXJuIGNvbW1hbmRzIHRvIHN0YXJ0IHRoZSBlbnRyeXBvaW50IHNjcmlwdFxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGJ1aWxkQ29tbWFuZHMoZW50cnlwb2ludDogc3RyaW5nLCBhcmdzPzogc3RyaW5nW10pOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVHlwZSBvZiBwbGF0Zm9ybVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldCBwbGF0Zm9ybVR5cGUoKTogUGxhdGZvcm1UeXBlO1xufVxuXG4vKipcbiAqIEEgTGludXggUGxhdGZvcm1cbiAqL1xuZXhwb3J0IGNsYXNzIExpbnV4UGxhdGZvcm0gZXh0ZW5kcyBTaGVsbFBsYXRmb3JtIHtcbiAgcHVibGljIHJlYWRvbmx5IHBsYXRmb3JtVHlwZSA9IFBsYXRmb3JtVHlwZS5MaW51eDtcblxuICBwdWJsaWMgaW5zdGFsbENvbW1hbmRzKCk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ2NvbW1hbmQgLXYgeWFybiA+IC9kZXYvbnVsbCB8fCBucG0gaW5zdGFsbCAtLWdsb2JhbCB5YXJuJyxcbiAgICBdO1xuICB9XG5cbiAgcHVibGljIHByZWJ1aWxkQ29tbWFuZHMoYXNzdW1lUm9sZT86IEFzc3VtZVJvbGUsIHVzZVJlZ2lvbmFsU3RzRW5kcG9pbnRzPzogYm9vbGVhbik6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBsaW5lcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgLy8gQmV0dGVyIGVjaG8gdGhlIGxvY2F0aW9uIGhlcmU7IGlmIHRoaXMgZmFpbHMsIHRoZSBlcnJvciBtZXNzYWdlIG9ubHkgY29udGFpbnNcbiAgICAvLyB0aGUgdW5leHBhbmRlZCB2YXJpYWJsZXMgYnkgZGVmYXVsdC4gSXQgbWlnaHQgZmFpbCBpZiB5b3UncmUgcnVubmluZyBhbiBvbGRcbiAgICAvLyBkZWZpbml0aW9uIG9mIHRoZSBDb2RlQnVpbGQgcHJvamVjdC0tdGhlIHBlcm1pc3Npb25zIHdpbGwgaGF2ZSBiZWVuIGNoYW5nZWRcbiAgICAvLyB0byBvbmx5IGFsbG93IGRvd25sb2FkaW5nIHRoZSB2ZXJ5IGxhdGVzdCB2ZXJzaW9uLlxuICAgIGxpbmVzLnB1c2goYGVjaG8gXCJEb3dubG9hZGluZyBzY3JpcHRzIGZyb20gczM6Ly9cXCR7JHtTM19CVUNLRVRfRU5WfX0vXFwkeyR7UzNfS0VZX0VOVn19XCJgKTtcbiAgICBsaW5lcy5wdXNoKGBhd3MgczMgY3AgczM6Ly9cXCR7JHtTM19CVUNLRVRfRU5WfX0vXFwkeyR7UzNfS0VZX0VOVn19IC90bXBgKTtcbiAgICBsaW5lcy5wdXNoKCdta2RpciAtcCAvdG1wL3NjcmlwdGRpcicpO1xuICAgIGxpbmVzLnB1c2goYHVuemlwIC90bXAvJChiYXNlbmFtZSBcXCQke1MzX0tFWV9FTlZ9KSAtZCAvdG1wL3NjcmlwdGRpcmApO1xuXG4gICAgaWYgKGFzc3VtZVJvbGUpIHtcblxuICAgICAgaWYgKGFzc3VtZVJvbGUucmVmcmVzaCkge1xuXG4gICAgICAgIGNvbnN0IGF3c0hvbWUgPSAnfi8uYXdzJztcblxuICAgICAgICBjb25zdCBwcm9maWxlTmFtZSA9IGFzc3VtZVJvbGUucHJvZmlsZU5hbWUgPz8gJ2xvbmctcnVubmluZy1wcm9maWxlJztcblxuICAgICAgICBsaW5lcy5wdXNoKGBta2RpciAtcCAke2F3c0hvbWV9YCk7XG4gICAgICAgIGxpbmVzLnB1c2goYHRvdWNoICR7YXdzSG9tZX0vY3JlZGVudGlhbHNgKTtcbiAgICAgICAgbGluZXMucHVzaChgY29uZmlnPSR7YXdzSG9tZX0vY29uZmlnYCk7XG4gICAgICAgIGxpbmVzLnB1c2goYGVjaG8gW3Byb2ZpbGUgJHtwcm9maWxlTmFtZX1dPj4gJFxce2NvbmZpZ1xcfWApO1xuICAgICAgICBsaW5lcy5wdXNoKCdlY2hvIGNyZWRlbnRpYWxfc291cmNlID0gRWNzQ29udGFpbmVyID4+ICRcXHtjb25maWdcXH0nKTtcbiAgICAgICAgbGluZXMucHVzaChgZWNobyByb2xlX3Nlc3Npb25fbmFtZSA9ICR7YXNzdW1lUm9sZS5zZXNzaW9uTmFtZX0gPj4gJFxce2NvbmZpZ1xcfWApO1xuICAgICAgICBsaW5lcy5wdXNoKGBlY2hvIHJvbGVfYXJuID0gJHthc3N1bWVSb2xlLnJvbGVBcm59ID4+ICRjb25maWdgKTtcblxuICAgICAgICBpZiAoYXNzdW1lUm9sZS5leHRlcm5hbElkKSB7XG4gICAgICAgICAgbGluZXMucHVzaChgZWNobyBleHRlcm5hbF9pZCA9ICR7YXNzdW1lUm9sZS5leHRlcm5hbElkfSA+PiAkY29uZmlnYCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBsZXQgdGhlIGFwcGxpY2F0aW9uIGNvZGUga25vdyB3aGljaCByb2xlIGlzIGJlaW5nIHVzZWQuXG4gICAgICAgIGxpbmVzLnB1c2goYGV4cG9ydCBBV1NfUFJPRklMRT0ke3Byb2ZpbGVOYW1lfWApO1xuXG4gICAgICAgIC8vIGZvcmNlIHRoZSBBV1MgU0RLIGZvciBKYXZhU2NyaXB0IHRvIGFjdHVhbGx5IGxvYWQgdGhlIGNvbmZpZyBmaWxlIChkbyBhdXRvbWF0aWNhbGx5IHNvIHVzZXJzIGRvbid0IGZvcmdldClcbiAgICAgICAgbGluZXMucHVzaCgnZXhwb3J0IEFXU19TREtfTE9BRF9DT05GSUc9MScpO1xuXG4gICAgICB9IGVsc2Uge1xuXG4gICAgICAgIGNvbnN0IGV4dGVybmFsSWQgPSBhc3N1bWVSb2xlLmV4dGVybmFsSWQgPyBgLS1leHRlcm5hbC1pZCBcIiR7YXNzdW1lUm9sZS5leHRlcm5hbElkfVwiYCA6ICcnO1xuICAgICAgICBjb25zdCBTdHNFbmRwb2ludHMgPSB1c2VSZWdpb25hbFN0c0VuZHBvaW50cyA/ICdyZWdpb25hbCcgOiAnbGVnYWN5JztcblxuICAgICAgICBsaW5lcy5wdXNoKCdjcmVkcz0kKG1rdGVtcCAtZCkvY3JlZHMuanNvbicpO1xuICAgICAgICBsaW5lcy5wdXNoKGBBV1NfU1RTX1JFR0lPTkFMX0VORFBPSU5UUz0ke1N0c0VuZHBvaW50c30gYXdzIHN0cyBhc3N1bWUtcm9sZSAtLXJvbGUtYXJuIFwiJHthc3N1bWVSb2xlLnJvbGVBcm59XCIgLS1yb2xlLXNlc3Npb24tbmFtZSBcIiR7YXNzdW1lUm9sZS5zZXNzaW9uTmFtZX1cIiAke2V4dGVybmFsSWR9ID4gJGNyZWRzYCk7XG4gICAgICAgIGxpbmVzLnB1c2goJ2V4cG9ydCBBV1NfQUNDRVNTX0tFWV9JRD1cIiQoY2F0ICR7Y3JlZHN9IHwgZ3JlcCBcIkFjY2Vzc0tleUlkXCIgfCBjdXQgLWRcXCdcIlxcJyAtZiA0KVwiJyk7XG4gICAgICAgIGxpbmVzLnB1c2goJ2V4cG9ydCBBV1NfU0VDUkVUX0FDQ0VTU19LRVk9XCIkKGNhdCAke2NyZWRzfSB8IGdyZXAgXCJTZWNyZXRBY2Nlc3NLZXlcIiB8IGN1dCAtZFxcJ1wiXFwnIC1mIDQpXCInKTtcbiAgICAgICAgbGluZXMucHVzaCgnZXhwb3J0IEFXU19TRVNTSU9OX1RPS0VOPVwiJChjYXQgJHtjcmVkc30gfCBncmVwIFwiU2Vzc2lvblRva2VuXCIgfCBjdXQgLWRcXCdcIlxcJyAtZiA0KVwiJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbmVzO1xuICB9XG5cbiAgcHVibGljIGJ1aWxkQ29tbWFuZHMoZW50cnlwb2ludDogc3RyaW5nLCBhcmdzPzogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICdleHBvcnQgU0NSSVBUX0RJUj0vdG1wL3NjcmlwdGRpcicsXG4gICAgICBgZWNobyBcIlJ1bm5pbmcgJHtlbnRyeXBvaW50fVwiYCxcbiAgICAgIGAvYmluL2Jhc2ggL3RtcC9zY3JpcHRkaXIvJHtlbnRyeXBvaW50fSAkeyhhcmdzID8/IFtdKS5qb2luKCcgJyl9YC50cmltUmlnaHQoKSxcbiAgICBdO1xuICB9XG59XG5cbi8qKlxuICogQSBXaW5kb3dzIFBsYXRmb3JtXG4gKi9cbmV4cG9ydCBjbGFzcyBXaW5kb3dzUGxhdGZvcm0gZXh0ZW5kcyBTaGVsbFBsYXRmb3JtIHtcbiAgcHVibGljIHJlYWRvbmx5IHBsYXRmb3JtVHlwZSA9IFBsYXRmb3JtVHlwZS5XaW5kb3dzO1xuXG4gIHB1YmxpYyBpbnN0YWxsQ29tbWFuZHMoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBbXG4gICAgICAvLyBVcGRhdGUgdGhlIGltYWdlJ3Mgbm9kZWpzIHRvIHRoZSBsYXRlc3QgTFRTIHJlbGVhc2UuXG4gICAgICAnSW1wb3J0LU1vZHVsZSBcIkM6XFxcXFByb2dyYW1EYXRhXFxcXGNob2NvbGF0ZXlcXFxcaGVscGVyc1xcXFxjaG9jb2xhdGV5UHJvZmlsZS5wc20xXCInLFxuICAgICAgJ0M6XFxcXFByb2dyYW1EYXRhXFxcXGNob2NvbGF0ZXlcXFxcYmluXFxcXGNob2NvLmV4ZSB1cGdyYWRlIG5vZGVqcy1sdHMgLXknLFxuICAgIF07XG4gIH1cblxuICBwdWJsaWMgcHJlYnVpbGRDb21tYW5kcyhhc3N1bWVSb2xlPzogQXNzdW1lUm9sZSwgX3VzZVJlZ2lvbmFsU3RzRW5kcG9pbnRzPzogYm9vbGVhbik6IHN0cmluZ1tdIHtcbiAgICBpZiAoYXNzdW1lUm9sZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhc3N1bWVSb2xlIGlzIG5vdCBzdXBwb3J0ZWQgb24gV2luZG93czogaHR0cHM6Ly9naXRodWIuY29tL2Nka2xhYnMvYXdzLWRlbGl2bGliL2lzc3Vlcy81NycpO1xuICAgIH1cblxuICAgIHJldHVybiBbXG4gICAgICAvLyBXb3VsZCBsb3ZlIHRvIGRvIGRvd25sb2FkaW5nIGhlcmUgYW5kIGV4ZWN1dGluZyBpbiB0aGUgbmV4dCBzdGVwLFxuICAgICAgLy8gYnV0IEkgZG9uJ3Qga25vdyBob3cgdG8gcHJvcGFnYXRlIHRoZSB2YWx1ZSBvZiAkVEVNUERJUi5cbiAgICAgIC8vXG4gICAgICAvLyBQdW50aW5nIGZvciBzb21lb25lIHdobyBrbm93cyBQb3dlclNoZWxsIHdlbGwgZW5vdWdoLlxuICAgIF07XG4gIH1cblxuICBwdWJsaWMgYnVpbGRDb21tYW5kcyhlbnRyeXBvaW50OiBzdHJpbmcsIGFyZ3M/OiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ1NldC1WYXJpYWJsZSAtTmFtZSBURU1QRElSIC1WYWx1ZSAoTmV3LVRlbXBvcmFyeUZpbGUpLkRpcmVjdG9yeU5hbWUnLFxuICAgICAgYGF3cyBzMyBjcCBzMzovLyRlbnY6JHtTM19CVUNLRVRfRU5WfS8kZW52OiR7UzNfS0VZX0VOVn0gJFRFTVBESVJcXFxcc2NyaXB0cy56aXBgLFxuICAgICAgJ05ldy1JdGVtIC1JdGVtVHlwZSBEaXJlY3RvcnkgLVBhdGggJFRFTVBESVJcXFxcc2NyaXB0ZGlyJyxcbiAgICAgICdFeHBhbmQtQXJjaGl2ZSAtUGF0aCAkVEVNUERJUi9zY3JpcHRzLnppcCAtRGVzdGluYXRpb25QYXRoICRURU1QRElSXFxcXHNjcmlwdGRpcicsXG4gICAgICAnJGVudjpTQ1JJUFRfRElSID0gXCIkVEVNUERJUlxcXFxzY3JpcHRkaXJcIicsXG4gICAgICBgJiAkVEVNUERJUlxcXFxzY3JpcHRkaXJcXFxcJHtlbnRyeXBvaW50fSAkeyhhcmdzID8/IFtdKS5qb2luKCcgJyl9YC50cmltUmlnaHQoKSxcbiAgICBdO1xuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -47,8 +47,8 @@
47
47
  "@typescript-eslint/eslint-plugin": "^5",
48
48
  "@typescript-eslint/parser": "^5",
49
49
  "adm-zip": "^0.5.10",
50
- "aws-cdk": "^2.82.0",
51
- "aws-cdk-lib": "^2.54.0",
50
+ "aws-cdk": "^2.76.0",
51
+ "aws-cdk-lib": "^2.76.0",
52
52
  "aws-sdk": "^2.1391.0",
53
53
  "aws-sdk-mock": "^5.8.0",
54
54
  "constructs": "^10.1.31",
@@ -74,7 +74,7 @@
74
74
  "typescript": "~4.9.5"
75
75
  },
76
76
  "peerDependencies": {
77
- "aws-cdk-lib": "^2.51.0",
77
+ "aws-cdk-lib": "^2.76.0",
78
78
  "constructs": "^10.1.31"
79
79
  },
80
80
  "dependencies": {
@@ -91,7 +91,7 @@
91
91
  },
92
92
  "main": "lib/index.js",
93
93
  "license": "Apache-2.0",
94
- "version": "14.3.65",
94
+ "version": "14.4.0",
95
95
  "jest": {
96
96
  "testMatch": [
97
97
  "**/lib/__tests__/**/?(*.)+(spec|test).js?(x)"