Socket
Socket
Sign inDemoInstall

@angular-devkit/architect

Package Overview
Dependencies
Maintainers
2
Versions
718
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@angular-devkit/architect - npm Package Compare versions

Comparing version 0.8.0-beta.1 to 0.8.0-beta.2

4

package.json
{
"name": "@angular-devkit/architect",
"version": "0.8.0-beta.1",
"version": "0.8.0-beta.2",
"description": "Angular Build Facade",

@@ -8,3 +8,3 @@ "main": "src/index.js",

"dependencies": {
"@angular-devkit/core": "0.8.0-beta.1",
"@angular-devkit/core": "0.8.0-beta.2",
"rxjs": "^6.0.0"

@@ -11,0 +11,0 @@ },

@@ -97,4 +97,4 @@ /**

listProjectTargets(projectName: string): string[];
private _getProjectTargetMap(projectName);
private _getProjectTarget<T>(projectName, targetName);
private _getProjectTargetMap;
private _getProjectTarget;
getBuilderConfiguration<OptionsT>(targetSpec: TargetSpecifier): BuilderConfiguration<OptionsT>;

@@ -105,3 +105,3 @@ run<OptionsT>(builderConfig: BuilderConfiguration<OptionsT>, partialContext?: Partial<BuilderContext>): Observable<BuildEvent>;

getBuilder<OptionsT>(builderDescription: BuilderDescription, context: BuilderContext): Builder<OptionsT>;
private _loadJsonFile(path);
private _loadJsonFile;
}

@@ -202,2 +202,2 @@ "use strict";

exports.Architect = Architect;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl0ZWN0LmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9hcmNoaXRlY3Qvc3JjL2FyY2hpdGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOztBQUVILCtDQWE4QjtBQUM5QixvREFBbUU7QUFDbkUsK0JBQTREO0FBQzVELDhDQUFxRDtBQUVyRCw4QkFBc0MsU0FBUSxvQkFBYTtJQUN6RCxZQUFZLFdBQW1CO1FBQzdCLEtBQUssQ0FBQyxZQUFZLFdBQVcsb0NBQW9DLENBQUMsQ0FBQztJQUNyRSxDQUFDO0NBQ0Y7QUFKRCw0REFJQztBQUVELDZCQUFxQyxTQUFRLG9CQUFhO0lBQ3hELFlBQVksV0FBbUIsRUFBRSxVQUFrQjtRQUNqRCxLQUFLLENBQUMsV0FBVyxVQUFVLG9DQUFvQyxXQUFXLElBQUksQ0FBQyxDQUFDO0lBQ2xGLENBQUM7Q0FDRjtBQUpELDBEQUlDO0FBRUQsb0NBQTRDLFNBQVEsb0JBQWE7SUFDL0QsWUFBWSxXQUFtQixFQUFFLGlCQUF5QjtRQUN4RCxLQUFLLENBQUMsa0JBQWtCLGlCQUFpQixvQ0FBb0MsV0FBVyxJQUFJLENBQUMsQ0FBQztJQUNoRyxDQUFDO0NBQ0Y7QUFKRCx3RUFJQztBQUVELDREQUE0RDtBQUM1RCxzQ0FBOEMsU0FBUSxvQkFBYTtJQUNqRSxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLFlBQVksT0FBTyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3BELENBQUM7Q0FDRjtBQUpELDRFQUlDO0FBRUQsb0NBQTRDLFNBQVEsb0JBQWE7SUFDL0QsZ0JBQWdCLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNuRjtBQUZELHdFQUVDO0FBRUQsOEJBQXNDLFNBQVEsb0JBQWE7SUFDekQsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxXQUFXLE9BQU8sc0JBQXNCLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0Y7QUFK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Q0FBQztnQkFDckMsTUFBTSxJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBaUIsQ0FBQztZQUVyRSw2RUFBNkU7WUFDN0UsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLG9CQUFhLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakUsa0JBQWtCLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBaUMsQ0FBQztZQUU5RSwwQ0FBMEM7WUFDMUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUMvRSxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVoRCxNQUFNLENBQUMsT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxhQUFhLENBQUMsSUFBVTtRQUM5QixNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3BELGVBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLGdCQUFTLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDbkQsZUFBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsZ0JBQVMsQ0FBQyxHQUFHLEVBQUUsb0JBQWEsQ0FBQyxLQUFLLENBQXFCLENBQUMsQ0FDcEUsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXBQRCw4QkFvUEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7XG4gIEJhc2VFeGNlcHRpb24sXG4gIEpzb25PYmplY3QsXG4gIEpzb25QYXJzZU1vZGUsXG4gIFBhdGgsXG4gIGRpcm5hbWUsXG4gIGV4cGVyaW1lbnRhbCxcbiAgZ2V0U3lzdGVtUGF0aCxcbiAgam9pbixcbiAgbG9nZ2luZyxcbiAgbm9ybWFsaXplLFxuICBwYXJzZUpzb24sXG4gIHZpcnR1YWxGcyxcbn0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUnO1xuaW1wb3J0IHsgcmVzb2x2ZSBhcyBub2RlUmVzb2x2ZSB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlL25vZGUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZm9ya0pvaW4sIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb25jYXRNYXAsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgY2xhc3MgUHJvamVjdE5vdEZvdW5kRXhjZXB0aW9uIGV4dGVuZHMgQmFzZUV4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3ROYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgUHJvamVjdCAnJHtwcm9qZWN0TmFtZX0nIGNvdWxkIG5vdCBiZSBmb3VuZCBpbiBXb3Jrc3BhY2UuYCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRhcmdldE5vdEZvdW5kRXhjZXB0aW9uIGV4dGVuZHMgQmFzZUV4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3ROYW1lOiBzdHJpbmcsIHRhcmdldE5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKGBUYXJnZXQgJyR7dGFyZ2V0TmFtZX0nIGNvdWxkIG5vdCBiZSBmb3VuZCBpbiBwcm9qZWN0ICcke3Byb2plY3ROYW1lfScuYCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25Ob3RGb3VuZEV4Y2VwdGlvbiBleHRlbmRzIEJhc2VFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0TmFtZTogc3RyaW5nLCBjb25maWd1cmF0aW9uTmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoYENvbmZpZ3VyYXRpb24gJyR7Y29uZmlndXJhdGlvbk5hbWV9JyBjb3VsZCBub3QgYmUgZm91bmQgaW4gcHJvamVjdCAnJHtwcm9qZWN0TmFtZX0nLmApO1xuICB9XG59XG5cbi8vIFRPRE86IGJyZWFrIHRoaXMgZXhjZXB0aW9uIGFwYXJ0IGludG8gbW9yZSBncmFudWxhciBvbmVzLlxuZXhwb3J0IGNsYXNzIEJ1aWxkZXJDYW5ub3RCZVJlc29sdmVkRXhjZXB0aW9uIGV4dGVuZHMgQmFzZUV4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKGJ1aWxkZXI6IHN0cmluZykge1xuICAgIHN1cGVyKGBCdWlsZGVyICcke2J1aWxkZXJ9JyBjYW5ub3QgYmUgcmVzb2x2ZWQuYCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFyY2hpdGVjdE5vdFlldExvYWRlZEV4Y2VwdGlvbiBleHRlbmRzIEJhc2VFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoYEFyY2hpdGVjdCBuZWVkcyB0byBiZSBsb2FkZWQgYmVmb3JlIEFyY2hpdGVjdCBpcyB1c2VkLmApOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBCdWlsZGVyTm90Rm91bmRFeGNlcHRpb24gZXh0ZW5kcyBCYXNlRXhjZXB0aW9uIHtcbiAgY29uc3RydWN0b3IoYnVpbGRlcjogc3RyaW5nKSB7XG4gICAgc3VwZXIoYEJ1aWxkZXIgJHtidWlsZGVyfSBjb3VsZCBub3QgYmUgZm91bmQuYCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZGVyQ29udGV4dCB7XG4gIGxvZ2dlcjogbG9nZ2luZy5Mb2dnZXI7XG4gIGhvc3Q6IHZpcnR1YWxGcy5Ib3N0PHt9PjtcbiAgd29ya3NwYWNlOiBleHBlcmltZW50YWwud29ya3NwYWNlLldvcmtzcGFjZTtcbiAgYXJjaGl0ZWN0OiBBcmNoaXRlY3Q7XG59XG5cbi8vIFRPRE86IHVzZSBCdWlsZCBFdmVudCBQcm90b2NvbFxuLy8gaHR0cHM6Ly9kb2NzLmJhemVsLmJ1aWxkL3ZlcnNpb25zL21hc3Rlci9idWlsZC1ldmVudC1wcm90b2NvbC5odG1sXG4vLyBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlYXBpcy9nb29nbGVhcGlzL3RyZWUvbWFzdGVyL2dvb2dsZS9kZXZ0b29scy9idWlsZC92MVxuZXhwb3J0IGludGVyZmFjZSBCdWlsZEV2ZW50IHtcbiAgc3VjY2VzczogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZGVyPE9wdGlvbnNUPiB7XG4gIHJ1bihidWlsZGVyQ29uZmlnOiBCdWlsZGVyQ29uZmlndXJhdGlvbjxQYXJ0aWFsPE9wdGlvbnNUPj4pOiBPYnNlcnZhYmxlPEJ1aWxkRXZlbnQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkZXJQYXRoc01hcCB7XG4gIGJ1aWxkZXJzOiB7IFtrOiBzdHJpbmddOiBCdWlsZGVyUGF0aHMgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZGVyUGF0aHMge1xuICBjbGFzczogUGF0aDtcbiAgc2NoZW1hOiBQYXRoO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkZXJEZXNjcmlwdGlvbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgc2NoZW1hOiBKc29uT2JqZWN0O1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkZXJDb25zdHJ1Y3RvcjxPcHRpb25zVD4ge1xuICBuZXcoY29udGV4dDogQnVpbGRlckNvbnRleHQpOiBCdWlsZGVyPE9wdGlvbnNUPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZGVyQ29uZmlndXJhdGlvbjxPcHRpb25zVCA9IHt9PiB7XG4gIHJvb3Q6IFBhdGg7XG4gIHNvdXJjZVJvb3Q/OiBQYXRoO1xuICBwcm9qZWN0VHlwZTogc3RyaW5nO1xuICBidWlsZGVyOiBzdHJpbmc7XG4gIG9wdGlvbnM6IE9wdGlvbnNUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldFNwZWNpZmllcjxPcHRpb25zVCA9IHt9PiB7XG4gIHByb2plY3Q6IHN0cmluZztcbiAgdGFyZ2V0OiBzdHJpbmc7XG4gIGNvbmZpZ3VyYXRpb24/OiBzdHJpbmc7XG4gIG92ZXJyaWRlcz86IFBhcnRpYWw8T3B0aW9uc1Q+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldE1hcCB7XG4gIFtrOiBzdHJpbmddOiBUYXJnZXQ7XG59XG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgVGFyZ2V0T3B0aW9uczxUID0gSnNvbk9iamVjdD4gPSBUO1xuZXhwb3J0IGRlY2xhcmUgdHlwZSBUYXJnZXRDb25maWd1cmF0aW9uPFQgPSBKc29uT2JqZWN0PiA9IFBhcnRpYWw8VD47XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0PFQgPSBKc29uT2JqZWN0PiB7XG4gIGJ1aWxkZXI6IHN0cmluZztcbiAgb3B0aW9uczogVGFyZ2V0T3B0aW9uczxUPjtcbiAgY29uZmlndXJhdGlvbnM/OiB7IFtrOiBzdHJpbmddOiBUYXJnZXRDb25maWd1cmF0aW9uPFQ+IH07XG59XG5cbmV4cG9ydCBjbGFzcyBBcmNoaXRlY3Qge1xuICBwcml2YXRlIHJlYWRvbmx5IF90YXJnZXRzU2NoZW1hUGF0aCA9IGpvaW4obm9ybWFsaXplKF9fZGlybmFtZSksICd0YXJnZXRzLXNjaGVtYS5qc29uJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2J1aWxkZXJzU2NoZW1hUGF0aCA9IGpvaW4obm9ybWFsaXplKF9fZGlybmFtZSksICdidWlsZGVycy1zY2hlbWEuanNvbicpO1xuICBwcml2YXRlIF90YXJnZXRzU2NoZW1hOiBKc29uT2JqZWN0O1xuICBwcml2YXRlIF9idWlsZGVyc1NjaGVtYTogSnNvbk9iamVjdDtcbiAgcHJpdmF0ZSBfYXJjaGl0ZWN0U2NoZW1hc0xvYWRlZCA9IGZhbHNlO1xuICBwcml2YXRlIF90YXJnZXRNYXBNYXAgPSBuZXcgTWFwPHN0cmluZywgVGFyZ2V0TWFwPigpO1xuICBwcml2YXRlIF9idWlsZGVyUGF0aHNNYXAgPSBuZXcgTWFwPHN0cmluZywgQnVpbGRlclBhdGhzPigpO1xuICBwcml2YXRlIF9idWlsZGVyRGVzY3JpcHRpb25NYXAgPSBuZXcgTWFwPHN0cmluZywgQnVpbGRlckRlc2NyaXB0aW9uPigpO1xuICBwcml2YXRlIF9idWlsZGVyQ29uc3RydWN0b3JNYXAgPSBuZXcgTWFwPHN0cmluZywgQnVpbGRlckNvbnN0cnVjdG9yPHt9Pj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF93b3Jrc3BhY2U6IGV4cGVyaW1lbnRhbC53b3Jrc3BhY2UuV29ya3NwYWNlKSB7IH1cblxuICBsb2FkQXJjaGl0ZWN0KCkge1xuICAgIGlmICh0aGlzLl9hcmNoaXRlY3RTY2hlbWFzTG9hZGVkKSB7XG4gICAgICByZXR1cm4gb2YodGhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmb3JrSm9pbihcbiAgICAgICAgdGhpcy5fbG9hZEpzb25GaWxlKHRoaXMuX3RhcmdldHNTY2hlbWFQYXRoKSxcbiAgICAgICAgdGhpcy5fbG9hZEpzb25GaWxlKHRoaXMuX2J1aWxkZXJzU2NoZW1hUGF0aCksXG4gICAgICApLnBpcGUoXG4gICAgICAgIGNvbmNhdE1hcCgoW3RhcmdldHNTY2hlbWEsIGJ1aWxkZXJzU2NoZW1hXSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3RhcmdldHNTY2hlbWEgPSB0YXJnZXRzU2NoZW1hO1xuICAgICAgICAgIHRoaXMuX2J1aWxkZXJzU2NoZW1hID0gYnVpbGRlcnNTY2hlbWE7XG4gICAgICAgICAgdGhpcy5fYXJjaGl0ZWN0U2NoZW1hc0xvYWRlZCA9IHRydWU7XG5cbiAgICAgICAgICAvLyBWYWxpZGF0ZSBhbmQgY2FjaGUgYWxsIHByb2plY3QgdGFyZ2V0IG1hcHMuXG4gICAgICAgICAgcmV0dXJuIGZvcmtKb2luKFxuICAgICAgICAgICAgLi4udGhpcy5fd29ya3NwYWNlLmxpc3RQcm9qZWN0TmFtZXMoKS5tYXAocHJvamVjdE5hbWUgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB1bnZhbGlkYXRlZFRhcmdldE1hcCA9IHRoaXMuX3dvcmtzcGFjZS5nZXRQcm9qZWN0VGFyZ2V0cyhwcm9qZWN0TmFtZSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dvcmtzcGFjZS52YWxpZGF0ZUFnYWluc3RTY2hlbWE8VGFyZ2V0TWFwPihcbiAgICAgICAgICAgICAgICB1bnZhbGlkYXRlZFRhcmdldE1hcCwgdGhpcy5fdGFyZ2V0c1NjaGVtYSkucGlwZShcbiAgICAgICAgICAgICAgICAgIHRhcCh0YXJnZXRNYXAgPT4gdGhpcy5fdGFyZ2V0TWFwTWFwLnNldChwcm9qZWN0TmFtZSwgdGFyZ2V0TWFwKSksXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgICAgbWFwKCgpID0+IHRoaXMpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBsaXN0UHJvamVjdFRhcmdldHMocHJvamVjdE5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5fZ2V0UHJvamVjdFRhcmdldE1hcChwcm9qZWN0TmFtZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UHJvamVjdFRhcmdldE1hcChwcm9qZWN0TmFtZTogc3RyaW5nKTogVGFyZ2V0TWFwIHtcbiAgICBpZiAoIXRoaXMuX3RhcmdldE1hcE1hcC5oYXMocHJvamVjdE5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgUHJvamVjdE5vdEZvdW5kRXhjZXB0aW9uKHByb2plY3ROYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fdGFyZ2V0TWFwTWFwLmdldChwcm9qZWN0TmFtZSkgYXMgVGFyZ2V0TWFwO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UHJvamVjdFRhcmdldDxUID0ge30+KHByb2plY3ROYW1lOiBzdHJpbmcsIHRhcmdldE5hbWU6IHN0cmluZyk6IFRhcmdldDxUPiB7XG4gICAgY29uc3QgdGFyZ2V0TWFwID0gdGhpcy5fZ2V0UHJvamVjdFRhcmdldE1hcChwcm9qZWN0TmFtZSk7XG5cbiAgICBjb25zdCB0YXJnZXQgPSB0YXJnZXRNYXBbdGFyZ2V0TmFtZV0gYXMge30gYXMgVGFyZ2V0PFQ+O1xuXG4gICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgIHRocm93IG5ldyBUYXJnZXROb3RGb3VuZEV4Y2VwdGlvbihwcm9qZWN0TmFtZSwgdGFyZ2V0TmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGdldEJ1aWxkZXJDb25maWd1cmF0aW9uPE9wdGlvbnNUPih0YXJnZXRTcGVjOiBUYXJnZXRTcGVjaWZpZXIpOiBCdWlsZGVyQ29uZmlndXJhdGlvbjxPcHRpb25zVD4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHByb2plY3Q6IHByb2plY3ROYW1lLFxuICAgICAgdGFyZ2V0OiB0YXJnZXROYW1lLFxuICAgICAgY29uZmlndXJhdGlvbjogY29uZmlndXJhdGlvbk5hbWUsXG4gICAgICBvdmVycmlkZXMsXG4gICAgfSA9IHRhcmdldFNwZWM7XG5cbiAgICBjb25zdCBwcm9qZWN0ID0gdGhpcy5fd29ya3NwYWNlLmdldFByb2plY3QocHJvamVjdE5hbWUpO1xuICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuX2dldFByb2plY3RUYXJnZXQocHJvamVjdE5hbWUsIHRhcmdldE5hbWUpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0YXJnZXQub3B0aW9ucztcbiAgICBsZXQgY29uZmlndXJhdGlvbjogVGFyZ2V0Q29uZmlndXJhdGlvbiA9IHt9O1xuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb25OYW1lKSB7XG4gICAgICBpZiAoIXRhcmdldC5jb25maWd1cmF0aW9ucykge1xuICAgICAgICB0aHJvdyBuZXcgQ29uZmlndXJhdGlvbk5vdEZvdW5kRXhjZXB0aW9uKHByb2plY3ROYW1lLCBjb25maWd1cmF0aW9uTmFtZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbmZpZ3VyYXRpb24gPSB0YXJnZXQuY29uZmlndXJhdGlvbnNbY29uZmlndXJhdGlvbk5hbWVdO1xuXG4gICAgICBpZiAoIWNvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IENvbmZpZ3VyYXRpb25Ob3RGb3VuZEV4Y2VwdGlvbihwcm9qZWN0TmFtZSwgY29uZmlndXJhdGlvbk5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGJ1aWxkZXJDb25maWd1cmF0aW9uOiBCdWlsZGVyQ29uZmlndXJhdGlvbjxPcHRpb25zVD4gPSB7XG4gICAgICByb290OiBwcm9qZWN0LnJvb3QgYXMgUGF0aCxcbiAgICAgIHNvdXJjZVJvb3Q6IHByb2plY3Quc291cmNlUm9vdCBhcyBQYXRoIHwgdW5kZWZpbmVkLFxuICAgICAgcHJvamVjdFR5cGU6IHByb2plY3QucHJvamVjdFR5cGUsXG4gICAgICBidWlsZGVyOiB0YXJnZXQuYnVpbGRlcixcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgLi4uY29uZmlndXJhdGlvbixcbiAgICAgICAgLi4ub3ZlcnJpZGVzIGFzIHt9LFxuICAgICAgfSBhcyBPcHRpb25zVCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGJ1aWxkZXJDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcnVuPE9wdGlvbnNUPihcbiAgICBidWlsZGVyQ29uZmlnOiBCdWlsZGVyQ29uZmlndXJhdGlvbjxPcHRpb25zVD4sXG4gICAgcGFydGlhbENvbnRleHQ6IFBhcnRpYWw8QnVpbGRlckNvbnRleHQ+ID0ge30sXG4gICk6IE9ic2VydmFibGU8QnVpbGRFdmVudD4ge1xuICAgIGNvbnN0IGNvbnRleHQ6IEJ1aWxkZXJDb250ZXh0ID0ge1xuICAgICAgbG9nZ2VyOiBuZXcgbG9nZ2luZy5OdWxsTG9nZ2VyKCksXG4gICAgICBhcmNoaXRlY3Q6IHRoaXMsXG4gICAgICBob3N0OiB0aGlzLl93b3Jrc3BhY2UuaG9zdCxcbiAgICAgIHdvcmtzcGFjZTogdGhpcy5fd29ya3NwYWNlLFxuICAgICAgLi4ucGFydGlhbENvbnRleHQsXG4gICAgfTtcblxuICAgIGxldCBidWlsZGVyRGVzY3JpcHRpb246IEJ1aWxkZXJEZXNjcmlwdGlvbjtcblxuICAgIHJldHVybiB0aGlzLmdldEJ1aWxkZXJEZXNjcmlwdGlvbihidWlsZGVyQ29uZmlnKS5waXBlKFxuICAgICAgdGFwKGRlc2NyaXB0aW9uID0+IGJ1aWxkZXJEZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uKSxcbiAgICAgIGNvbmNhdE1hcCgoKSA9PiB0aGlzLnZhbGlkYXRlQnVpbGRlck9wdGlvbnMoYnVpbGRlckNvbmZpZywgYnVpbGRlckRlc2NyaXB0aW9uKSksXG4gICAgICB0YXAodmFsaWRhdGVkQnVpbGRlckNvbmZpZyA9PiBidWlsZGVyQ29uZmlnID0gdmFsaWRhdGVkQnVpbGRlckNvbmZpZyksXG4gICAgICBtYXAoKCkgPT4gdGhpcy5nZXRCdWlsZGVyKGJ1aWxkZXJEZXNjcmlwdGlvbiwgY29udGV4dCkpLFxuICAgICAgY29uY2F0TWFwKGJ1aWxkZXIgPT4gYnVpbGRlci5ydW4oYnVpbGRlckNvbmZpZykpLFxuICAgICk7XG4gIH1cblxuICBnZXRCdWlsZGVyRGVzY3JpcHRpb248T3B0aW9uc1Q+KFxuICAgIGJ1aWxkZXJDb25maWc6IEJ1aWxkZXJDb25maWd1cmF0aW9uPE9wdGlvbnNUPixcbiAgKTogT2JzZXJ2YWJsZTxCdWlsZGVyRGVzY3JpcHRpb24+IHtcbiAgICAvLyBDaGVjayBjYWNoZSBmb3IgdGhpcyBidWlsZGVyIGRlc2NyaXB0aW9uLlxuICAgIGlmICh0aGlzLl9idWlsZGVyRGVzY3JpcHRpb25NYXAuaGFzKGJ1aWxkZXJDb25maWcuYnVpbGRlcikpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLl9idWlsZGVyRGVzY3JpcHRpb25NYXAuZ2V0KGJ1aWxkZXJDb25maWcuYnVpbGRlcikgYXMgQnVpbGRlckRlc2NyaXB0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9icykgPT4ge1xuICAgICAgLy8gVE9ETzogdGhpcyBwcm9iYWJseSBuZWVkcyB0byBiZSBtb3JlIGxpa2UgTm9kZU1vZHVsZXNFbmdpbmVIb3N0LlxuICAgICAgY29uc3QgYmFzZWRpciA9IGdldFN5c3RlbVBhdGgodGhpcy5fd29ya3NwYWNlLnJvb3QpO1xuICAgICAgY29uc3QgW3BrZywgYnVpbGRlck5hbWVdID0gYnVpbGRlckNvbmZpZy5idWlsZGVyLnNwbGl0KCc6Jyk7XG4gICAgICBjb25zdCBwa2dKc29uUGF0aCA9IG5vZGVSZXNvbHZlKHBrZywgeyBiYXNlZGlyLCByZXNvbHZlUGFja2FnZUpzb246IHRydWUsIGNoZWNrTG9jYWw6IHRydWUgfSk7XG4gICAgICBsZXQgYnVpbGRlcnNKc29uUGF0aDogUGF0aDtcbiAgICAgIGxldCBidWlsZGVyUGF0aHM6IEJ1aWxkZXJQYXRocztcblxuICAgICAgLy8gUmVhZCB0aGUgYGJ1aWxkZXJzYCBlbnRyeSBvZiBwYWNrYWdlLmpzb24uXG4gICAgICByZXR1cm4gdGhpcy5fbG9hZEpzb25GaWxlKG5vcm1hbGl6ZShwa2dKc29uUGF0aCkpLnBpcGUoXG4gICAgICAgIGNvbmNhdE1hcCgocGtnSnNvbjogSnNvbk9iamVjdCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHBrZ0pzb25CdWlsZGVyc2VudHJ5ID0gcGtnSnNvblsnYnVpbGRlcnMnXSBhcyBzdHJpbmc7XG4gICAgICAgICAgaWYgKCFwa2dKc29uQnVpbGRlcnNlbnRyeSkge1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IobmV3IEJ1aWxkZXJDYW5ub3RCZVJlc29sdmVkRXhjZXB0aW9uKGJ1aWxkZXJDb25maWcuYnVpbGRlcikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJ1aWxkZXJzSnNvblBhdGggPSBqb2luKGRpcm5hbWUobm9ybWFsaXplKHBrZ0pzb25QYXRoKSksIHBrZ0pzb25CdWlsZGVyc2VudHJ5KTtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9sb2FkSnNvbkZpbGUoYnVpbGRlcnNKc29uUGF0aCk7XG4gICAgICAgIH0pLFxuICAgICAgICAvLyBWYWxpZGF0ZSBidWlsZGVycyBqc29uLlxuICAgICAgICBjb25jYXRNYXAoKGJ1aWxkZXJQYXRoc01hcCkgPT4gdGhpcy5fd29ya3NwYWNlLnZhbGlkYXRlQWdhaW5zdFNjaGVtYTxCdWlsZGVyUGF0aHNNYXA+KFxuICAgICAgICAgIGJ1aWxkZXJQYXRoc01hcCwgdGhpcy5fYnVpbGRlcnNTY2hlbWEpKSxcbiAgICAgICAgY29uY2F0TWFwKChidWlsZGVyUGF0aHNNYXApID0+IHtcbiAgICAgICAgICBidWlsZGVyUGF0aHMgPSBidWlsZGVyUGF0aHNNYXAuYnVpbGRlcnNbYnVpbGRlck5hbWVdO1xuXG4gICAgICAgICAgaWYgKCFidWlsZGVyUGF0aHMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKG5ldyBCdWlsZGVyQ2Fubm90QmVSZXNvbHZlZEV4Y2VwdGlvbihidWlsZGVyQ29uZmlnLmJ1aWxkZXIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBSZXNvbHZlIHBhdGhzIGluIHRoZSBidWlsZGVyIHBhdGhzLlxuICAgICAgICAgIGNvbnN0IGJ1aWxkZXJKc29uRGlyID0gZGlybmFtZShidWlsZGVyc0pzb25QYXRoKTtcbiAgICAgICAgICBidWlsZGVyUGF0aHMuc2NoZW1hID0gam9pbihidWlsZGVySnNvbkRpciwgYnVpbGRlclBhdGhzLnNjaGVtYSk7XG4gICAgICAgICAgYnVpbGRlclBhdGhzLmNsYXNzID0gam9pbihidWlsZGVySnNvbkRpciwgYnVpbGRlclBhdGhzLmNsYXNzKTtcblxuICAgICAgICAgIC8vIFNhdmUgdGhlIGJ1aWxkZXIgcGF0aHMgc28gdGhhdCB3ZSBjYW4gbGF6aWx5IGxvYWQgdGhlIGJ1aWxkZXIuXG4gICAgICAgICAgdGhpcy5fYnVpbGRlclBhdGhzTWFwLnNldChidWlsZGVyQ29uZmlnLmJ1aWxkZXIsIGJ1aWxkZXJQYXRocyk7XG5cbiAgICAgICAgICAvLyBMb2FkIHRoZSBzY2hlbWEuXG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2xvYWRKc29uRmlsZShidWlsZGVyUGF0aHMuc2NoZW1hKTtcbiAgICAgICAgfSksXG4gICAgICAgIG1hcChidWlsZGVyU2NoZW1hID0+IHtcbiAgICAgICAgICBjb25zdCBidWlsZGVyRGVzY3JpcHRpb24gPSB7XG4gICAgICAgICAgICBuYW1lOiBidWlsZGVyQ29uZmlnLmJ1aWxkZXIsXG4gICAgICAgICAgICBzY2hlbWE6IGJ1aWxkZXJTY2hlbWEsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogYnVpbGRlclBhdGhzLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICAvLyBTYXZlIHRvIGNhY2hlIGJlZm9yZSByZXR1cm5pbmcuXG4gICAgICAgICAgdGhpcy5fYnVpbGRlckRlc2NyaXB0aW9uTWFwLnNldChidWlsZGVyRGVzY3JpcHRpb24ubmFtZSwgYnVpbGRlckRlc2NyaXB0aW9uKTtcblxuICAgICAgICAgIHJldHVybiBidWlsZGVyRGVzY3JpcHRpb247XG4gICAgICAgIH0pLFxuICAgICAgKS5zdWJzY3JpYmUob2JzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRlQnVpbGRlck9wdGlvbnM8T3B0aW9uc1Q+KFxuICAgIGJ1aWxkZXJDb25maWc6IEJ1aWxkZXJDb25maWd1cmF0aW9uPE9wdGlvbnNUPiwgYnVpbGRlckRlc2NyaXB0aW9uOiBCdWlsZGVyRGVzY3JpcHRpb24sXG4gICk6IE9ic2VydmFibGU8QnVpbGRlckNvbmZpZ3VyYXRpb248T3B0aW9uc1Q+PiB7XG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzcGFjZS52YWxpZGF0ZUFnYWluc3RTY2hlbWE8T3B0aW9uc1Q+KFxuICAgICAgYnVpbGRlckNvbmZpZy5vcHRpb25zLCBidWlsZGVyRGVzY3JpcHRpb24uc2NoZW1hLFxuICAgICkucGlwZShcbiAgICAgIG1hcCh2YWxpZGF0ZWRPcHRpb25zID0+IHtcbiAgICAgICAgYnVpbGRlckNvbmZpZy5vcHRpb25zID0gdmFsaWRhdGVkT3B0aW9ucztcblxuICAgICAgICByZXR1cm4gYnVpbGRlckNvbmZpZztcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBnZXRCdWlsZGVyPE9wdGlvbnNUPihcbiAgICBidWlsZGVyRGVzY3JpcHRpb246IEJ1aWxkZXJEZXNjcmlwdGlvbiwgY29udGV4dDogQnVpbGRlckNvbnRleHQsXG4gICk6IEJ1aWxkZXI8T3B0aW9uc1Q+IHtcbiAgICBjb25zdCBuYW1lID0gYnVpbGRlckRlc2NyaXB0aW9uLm5hbWU7XG4gICAgbGV0IGJ1aWxkZXJDb25zdHJ1Y3RvcjogQnVpbGRlckNvbnN0cnVjdG9yPE9wdGlvbnNUPjtcblxuICAgIC8vIENoZWNrIGNhY2hlIGZvciB0aGlzIGJ1aWxkZXIuXG4gICAgaWYgKHRoaXMuX2J1aWxkZXJDb25zdHJ1Y3Rvck1hcC5oYXMobmFtZSkpIHtcbiAgICAgIGJ1aWxkZXJDb25zdHJ1Y3RvciA9IHRoaXMuX2J1aWxkZXJDb25zdHJ1Y3Rvck1hcC5nZXQobmFtZSkgYXMgQnVpbGRlckNvbnN0cnVjdG9yPE9wdGlvbnNUPjtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLl9idWlsZGVyUGF0aHNNYXAuaGFzKG5hbWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZGVyTm90Rm91bmRFeGNlcHRpb24obmFtZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJ1aWxkZXJQYXRocyA9IHRoaXMuX2J1aWxkZXJQYXRoc01hcC5nZXQobmFtZSkgYXMgQnVpbGRlclBhdGhzO1xuXG4gICAgICAvLyBUT0RPOiBzdXBwb3J0IG1vcmUgdGhhbiB0aGUgZGVmYXVsdCBleHBvcnQsIG1heWJlIHZpYSBidWlsZGVyI2ltcG9ydC1uYW1lLlxuICAgICAgY29uc3QgYnVpbGRlck1vZHVsZSA9IHJlcXVpcmUoZ2V0U3lzdGVtUGF0aChidWlsZGVyUGF0aHMuY2xhc3MpKTtcbiAgICAgIGJ1aWxkZXJDb25zdHJ1Y3RvciA9IGJ1aWxkZXJNb2R1bGVbJ2RlZmF1bHQnXSBhcyBCdWlsZGVyQ29uc3RydWN0b3I8T3B0aW9uc1Q+O1xuXG4gICAgICAvLyBTYXZlIGJ1aWxkZXIgdG8gY2FjaGUgYmVmb3JlIHJldHVybmluZy5cbiAgICAgIHRoaXMuX2J1aWxkZXJDb25zdHJ1Y3Rvck1hcC5zZXQoYnVpbGRlckRlc2NyaXB0aW9uLm5hbWUsIGJ1aWxkZXJDb25zdHJ1Y3Rvcik7XG4gICAgfVxuXG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBidWlsZGVyQ29uc3RydWN0b3IoY29udGV4dCk7XG5cbiAgICByZXR1cm4gYnVpbGRlcjtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWRKc29uRmlsZShwYXRoOiBQYXRoKTogT2JzZXJ2YWJsZTxKc29uT2JqZWN0PiB7XG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzcGFjZS5ob3N0LnJlYWQobm9ybWFsaXplKHBhdGgpKS5waXBlKFxuICAgICAgbWFwKGJ1ZmZlciA9PiB2aXJ0dWFsRnMuZmlsZUJ1ZmZlclRvU3RyaW5nKGJ1ZmZlcikpLFxuICAgICAgbWFwKHN0ciA9PiBwYXJzZUpzb24oc3RyLCBKc29uUGFyc2VNb2RlLkxvb3NlKSBhcyB7fSBhcyBKc29uT2JqZWN0KSxcbiAgICApO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl0ZWN0LmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9hcmNoaXRlY3Qvc3JjL2FyY2hpdGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOztBQUVILCtDQWE4QjtBQUM5QixvREFBbUU7QUFDbkUsK0JBQTREO0FBQzVELDhDQUFxRDtBQUVyRCw4QkFBc0MsU0FBUSxvQkFBYTtJQUN6RCxZQUFZLFdBQW1CO1FBQzdCLEtBQUssQ0FBQyxZQUFZLFdBQVcsb0NBQW9DLENBQUMsQ0FBQztJQUNyRSxDQUFDO0NBQ0Y7QUFKRCw0REFJQztBQUVELDZCQUFxQyxTQUFRLG9CQUFhO0lBQ3hELFlBQVksV0FBbUIsRUFBRSxVQUFrQjtRQUNqRCxLQUFLLENBQUMsV0FBVyxVQUFVLG9DQUFvQyxXQUFXLElBQUksQ0FBQyxDQUFDO0lBQ2xGLENBQUM7Q0FDRjtBQUpELDBEQUlDO0FBRUQsb0NBQTRDLFNBQVEsb0JBQWE7SUFDL0QsWUFBWSxXQUFtQixFQUFFLGlCQUF5QjtRQUN4RCxLQUFLLENBQUMsa0JBQWtCLGlCQUFpQixvQ0FBb0MsV0FBVyxJQUFJLENBQUMsQ0FBQztJQUNoRyxDQUFDO0NBQ0Y7QUFKRCx3RUFJQztBQUVELDREQUE0RDtBQUM1RCxzQ0FBOEMsU0FBUSxvQkFBYTtJQUNqRSxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLFlBQVksT0FBTyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3BELENBQUM7Q0FDRjtBQUpELDRFQUlDO0FBRUQsb0NBQTRDLFNBQVEsb0JBQWE7SUFDL0QsZ0JBQWdCLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNuRjtBQUZELHdFQUVDO0FBRUQsOEJBQXNDLFNBQVEsb0JBQWE7SUFDekQsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxXQUFXLE9BQU8sc0JBQXNCLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0Y7QUFK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UUFFaEQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxJQUFVO1FBQzlCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3BELGVBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLGdCQUFTLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDbkQsZUFBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsZ0JBQVMsQ0FBQyxHQUFHLEVBQUUsb0JBQWEsQ0FBQyxLQUFLLENBQXFCLENBQUMsQ0FDcEUsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXBQRCw4QkFvUEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7XG4gIEJhc2VFeGNlcHRpb24sXG4gIEpzb25PYmplY3QsXG4gIEpzb25QYXJzZU1vZGUsXG4gIFBhdGgsXG4gIGRpcm5hbWUsXG4gIGV4cGVyaW1lbnRhbCxcbiAgZ2V0U3lzdGVtUGF0aCxcbiAgam9pbixcbiAgbG9nZ2luZyxcbiAgbm9ybWFsaXplLFxuICBwYXJzZUpzb24sXG4gIHZpcnR1YWxGcyxcbn0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUnO1xuaW1wb3J0IHsgcmVzb2x2ZSBhcyBub2RlUmVzb2x2ZSB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlL25vZGUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZm9ya0pvaW4sIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb25jYXRNYXAsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgY2xhc3MgUHJvamVjdE5vdEZvdW5kRXhjZXB0aW9uIGV4dGVuZHMgQmFzZUV4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3ROYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgUHJvamVjdCAnJHtwcm9qZWN0TmFtZX0nIGNvdWxkIG5vdCBiZSBmb3VuZCBpbiBXb3Jrc3BhY2UuYCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRhcmdldE5vdEZvdW5kRXhjZXB0aW9uIGV4dGVuZHMgQmFzZUV4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3ROYW1lOiBzdHJpbmcsIHRhcmdldE5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKGBUYXJnZXQgJyR7dGFyZ2V0TmFtZX0nIGNvdWxkIG5vdCBiZSBmb3VuZCBpbiBwcm9qZWN0ICcke3Byb2plY3ROYW1lfScuYCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25Ob3RGb3VuZEV4Y2VwdGlvbiBleHRlbmRzIEJhc2VFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0TmFtZTogc3RyaW5nLCBjb25maWd1cmF0aW9uTmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoYENvbmZpZ3VyYXRpb24gJyR7Y29uZmlndXJhdGlvbk5hbWV9JyBjb3VsZCBub3QgYmUgZm91bmQgaW4gcHJvamVjdCAnJHtwcm9qZWN0TmFtZX0nLmApO1xuICB9XG59XG5cbi8vIFRPRE86IGJyZWFrIHRoaXMgZXhjZXB0aW9uIGFwYXJ0IGludG8gbW9yZSBncmFudWxhciBvbmVzLlxuZXhwb3J0IGNsYXNzIEJ1aWxkZXJDYW5ub3RCZVJlc29sdmVkRXhjZXB0aW9uIGV4dGVuZHMgQmFzZUV4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKGJ1aWxkZXI6IHN0cmluZykge1xuICAgIHN1cGVyKGBCdWlsZGVyICcke2J1aWxkZXJ9JyBjYW5ub3QgYmUgcmVzb2x2ZWQuYCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFyY2hpdGVjdE5vdFlldExvYWRlZEV4Y2VwdGlvbiBleHRlbmRzIEJhc2VFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoYEFyY2hpdGVjdCBuZWVkcyB0byBiZSBsb2FkZWQgYmVmb3JlIEFyY2hpdGVjdCBpcyB1c2VkLmApOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBCdWlsZGVyTm90Rm91bmRFeGNlcHRpb24gZXh0ZW5kcyBCYXNlRXhjZXB0aW9uIHtcbiAgY29uc3RydWN0b3IoYnVpbGRlcjogc3RyaW5nKSB7XG4gICAgc3VwZXIoYEJ1aWxkZXIgJHtidWlsZGVyfSBjb3VsZCBub3QgYmUgZm91bmQuYCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZGVyQ29udGV4dCB7XG4gIGxvZ2dlcjogbG9nZ2luZy5Mb2dnZXI7XG4gIGhvc3Q6IHZpcnR1YWxGcy5Ib3N0PHt9PjtcbiAgd29ya3NwYWNlOiBleHBlcmltZW50YWwud29ya3NwYWNlLldvcmtzcGFjZTtcbiAgYXJjaGl0ZWN0OiBBcmNoaXRlY3Q7XG59XG5cbi8vIFRPRE86IHVzZSBCdWlsZCBFdmVudCBQcm90b2NvbFxuLy8gaHR0cHM6Ly9kb2NzLmJhemVsLmJ1aWxkL3ZlcnNpb25zL21hc3Rlci9idWlsZC1ldmVudC1wcm90b2NvbC5odG1sXG4vLyBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlYXBpcy9nb29nbGVhcGlzL3RyZWUvbWFzdGVyL2dvb2dsZS9kZXZ0b29scy9idWlsZC92MVxuZXhwb3J0IGludGVyZmFjZSBCdWlsZEV2ZW50IHtcbiAgc3VjY2VzczogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZGVyPE9wdGlvbnNUPiB7XG4gIHJ1bihidWlsZGVyQ29uZmlnOiBCdWlsZGVyQ29uZmlndXJhdGlvbjxQYXJ0aWFsPE9wdGlvbnNUPj4pOiBPYnNlcnZhYmxlPEJ1aWxkRXZlbnQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkZXJQYXRoc01hcCB7XG4gIGJ1aWxkZXJzOiB7IFtrOiBzdHJpbmddOiBCdWlsZGVyUGF0aHMgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZGVyUGF0aHMge1xuICBjbGFzczogUGF0aDtcbiAgc2NoZW1hOiBQYXRoO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkZXJEZXNjcmlwdGlvbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgc2NoZW1hOiBKc29uT2JqZWN0O1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkZXJDb25zdHJ1Y3RvcjxPcHRpb25zVD4ge1xuICBuZXcoY29udGV4dDogQnVpbGRlckNvbnRleHQpOiBCdWlsZGVyPE9wdGlvbnNUPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZGVyQ29uZmlndXJhdGlvbjxPcHRpb25zVCA9IHt9PiB7XG4gIHJvb3Q6IFBhdGg7XG4gIHNvdXJjZVJvb3Q/OiBQYXRoO1xuICBwcm9qZWN0VHlwZTogc3RyaW5nO1xuICBidWlsZGVyOiBzdHJpbmc7XG4gIG9wdGlvbnM6IE9wdGlvbnNUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldFNwZWNpZmllcjxPcHRpb25zVCA9IHt9PiB7XG4gIHByb2plY3Q6IHN0cmluZztcbiAgdGFyZ2V0OiBzdHJpbmc7XG4gIGNvbmZpZ3VyYXRpb24/OiBzdHJpbmc7XG4gIG92ZXJyaWRlcz86IFBhcnRpYWw8T3B0aW9uc1Q+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldE1hcCB7XG4gIFtrOiBzdHJpbmddOiBUYXJnZXQ7XG59XG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgVGFyZ2V0T3B0aW9uczxUID0gSnNvbk9iamVjdD4gPSBUO1xuZXhwb3J0IGRlY2xhcmUgdHlwZSBUYXJnZXRDb25maWd1cmF0aW9uPFQgPSBKc29uT2JqZWN0PiA9IFBhcnRpYWw8VD47XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0PFQgPSBKc29uT2JqZWN0PiB7XG4gIGJ1aWxkZXI6IHN0cmluZztcbiAgb3B0aW9uczogVGFyZ2V0T3B0aW9uczxUPjtcbiAgY29uZmlndXJhdGlvbnM/OiB7IFtrOiBzdHJpbmddOiBUYXJnZXRDb25maWd1cmF0aW9uPFQ+IH07XG59XG5cbmV4cG9ydCBjbGFzcyBBcmNoaXRlY3Qge1xuICBwcml2YXRlIHJlYWRvbmx5IF90YXJnZXRzU2NoZW1hUGF0aCA9IGpvaW4obm9ybWFsaXplKF9fZGlybmFtZSksICd0YXJnZXRzLXNjaGVtYS5qc29uJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2J1aWxkZXJzU2NoZW1hUGF0aCA9IGpvaW4obm9ybWFsaXplKF9fZGlybmFtZSksICdidWlsZGVycy1zY2hlbWEuanNvbicpO1xuICBwcml2YXRlIF90YXJnZXRzU2NoZW1hOiBKc29uT2JqZWN0O1xuICBwcml2YXRlIF9idWlsZGVyc1NjaGVtYTogSnNvbk9iamVjdDtcbiAgcHJpdmF0ZSBfYXJjaGl0ZWN0U2NoZW1hc0xvYWRlZCA9IGZhbHNlO1xuICBwcml2YXRlIF90YXJnZXRNYXBNYXAgPSBuZXcgTWFwPHN0cmluZywgVGFyZ2V0TWFwPigpO1xuICBwcml2YXRlIF9idWlsZGVyUGF0aHNNYXAgPSBuZXcgTWFwPHN0cmluZywgQnVpbGRlclBhdGhzPigpO1xuICBwcml2YXRlIF9idWlsZGVyRGVzY3JpcHRpb25NYXAgPSBuZXcgTWFwPHN0cmluZywgQnVpbGRlckRlc2NyaXB0aW9uPigpO1xuICBwcml2YXRlIF9idWlsZGVyQ29uc3RydWN0b3JNYXAgPSBuZXcgTWFwPHN0cmluZywgQnVpbGRlckNvbnN0cnVjdG9yPHt9Pj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF93b3Jrc3BhY2U6IGV4cGVyaW1lbnRhbC53b3Jrc3BhY2UuV29ya3NwYWNlKSB7IH1cblxuICBsb2FkQXJjaGl0ZWN0KCkge1xuICAgIGlmICh0aGlzLl9hcmNoaXRlY3RTY2hlbWFzTG9hZGVkKSB7XG4gICAgICByZXR1cm4gb2YodGhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmb3JrSm9pbihcbiAgICAgICAgdGhpcy5fbG9hZEpzb25GaWxlKHRoaXMuX3RhcmdldHNTY2hlbWFQYXRoKSxcbiAgICAgICAgdGhpcy5fbG9hZEpzb25GaWxlKHRoaXMuX2J1aWxkZXJzU2NoZW1hUGF0aCksXG4gICAgICApLnBpcGUoXG4gICAgICAgIGNvbmNhdE1hcCgoW3RhcmdldHNTY2hlbWEsIGJ1aWxkZXJzU2NoZW1hXSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3RhcmdldHNTY2hlbWEgPSB0YXJnZXRzU2NoZW1hO1xuICAgICAgICAgIHRoaXMuX2J1aWxkZXJzU2NoZW1hID0gYnVpbGRlcnNTY2hlbWE7XG4gICAgICAgICAgdGhpcy5fYXJjaGl0ZWN0U2NoZW1hc0xvYWRlZCA9IHRydWU7XG5cbiAgICAgICAgICAvLyBWYWxpZGF0ZSBhbmQgY2FjaGUgYWxsIHByb2plY3QgdGFyZ2V0IG1hcHMuXG4gICAgICAgICAgcmV0dXJuIGZvcmtKb2luKFxuICAgICAgICAgICAgLi4udGhpcy5fd29ya3NwYWNlLmxpc3RQcm9qZWN0TmFtZXMoKS5tYXAocHJvamVjdE5hbWUgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB1bnZhbGlkYXRlZFRhcmdldE1hcCA9IHRoaXMuX3dvcmtzcGFjZS5nZXRQcm9qZWN0VGFyZ2V0cyhwcm9qZWN0TmFtZSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dvcmtzcGFjZS52YWxpZGF0ZUFnYWluc3RTY2hlbWE8VGFyZ2V0TWFwPihcbiAgICAgICAgICAgICAgICB1bnZhbGlkYXRlZFRhcmdldE1hcCwgdGhpcy5fdGFyZ2V0c1NjaGVtYSkucGlwZShcbiAgICAgICAgICAgICAgICAgIHRhcCh0YXJnZXRNYXAgPT4gdGhpcy5fdGFyZ2V0TWFwTWFwLnNldChwcm9qZWN0TmFtZSwgdGFyZ2V0TWFwKSksXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgICAgbWFwKCgpID0+IHRoaXMpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBsaXN0UHJvamVjdFRhcmdldHMocHJvamVjdE5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5fZ2V0UHJvamVjdFRhcmdldE1hcChwcm9qZWN0TmFtZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UHJvamVjdFRhcmdldE1hcChwcm9qZWN0TmFtZTogc3RyaW5nKTogVGFyZ2V0TWFwIHtcbiAgICBpZiAoIXRoaXMuX3RhcmdldE1hcE1hcC5oYXMocHJvamVjdE5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgUHJvamVjdE5vdEZvdW5kRXhjZXB0aW9uKHByb2plY3ROYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fdGFyZ2V0TWFwTWFwLmdldChwcm9qZWN0TmFtZSkgYXMgVGFyZ2V0TWFwO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UHJvamVjdFRhcmdldDxUID0ge30+KHByb2plY3ROYW1lOiBzdHJpbmcsIHRhcmdldE5hbWU6IHN0cmluZyk6IFRhcmdldDxUPiB7XG4gICAgY29uc3QgdGFyZ2V0TWFwID0gdGhpcy5fZ2V0UHJvamVjdFRhcmdldE1hcChwcm9qZWN0TmFtZSk7XG5cbiAgICBjb25zdCB0YXJnZXQgPSB0YXJnZXRNYXBbdGFyZ2V0TmFtZV0gYXMge30gYXMgVGFyZ2V0PFQ+O1xuXG4gICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgIHRocm93IG5ldyBUYXJnZXROb3RGb3VuZEV4Y2VwdGlvbihwcm9qZWN0TmFtZSwgdGFyZ2V0TmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGdldEJ1aWxkZXJDb25maWd1cmF0aW9uPE9wdGlvbnNUPih0YXJnZXRTcGVjOiBUYXJnZXRTcGVjaWZpZXIpOiBCdWlsZGVyQ29uZmlndXJhdGlvbjxPcHRpb25zVD4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHByb2plY3Q6IHByb2plY3ROYW1lLFxuICAgICAgdGFyZ2V0OiB0YXJnZXROYW1lLFxuICAgICAgY29uZmlndXJhdGlvbjogY29uZmlndXJhdGlvbk5hbWUsXG4gICAgICBvdmVycmlkZXMsXG4gICAgfSA9IHRhcmdldFNwZWM7XG5cbiAgICBjb25zdCBwcm9qZWN0ID0gdGhpcy5fd29ya3NwYWNlLmdldFByb2plY3QocHJvamVjdE5hbWUpO1xuICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuX2dldFByb2plY3RUYXJnZXQocHJvamVjdE5hbWUsIHRhcmdldE5hbWUpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0YXJnZXQub3B0aW9ucztcbiAgICBsZXQgY29uZmlndXJhdGlvbjogVGFyZ2V0Q29uZmlndXJhdGlvbiA9IHt9O1xuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb25OYW1lKSB7XG4gICAgICBpZiAoIXRhcmdldC5jb25maWd1cmF0aW9ucykge1xuICAgICAgICB0aHJvdyBuZXcgQ29uZmlndXJhdGlvbk5vdEZvdW5kRXhjZXB0aW9uKHByb2plY3ROYW1lLCBjb25maWd1cmF0aW9uTmFtZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbmZpZ3VyYXRpb24gPSB0YXJnZXQuY29uZmlndXJhdGlvbnNbY29uZmlndXJhdGlvbk5hbWVdO1xuXG4gICAgICBpZiAoIWNvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IENvbmZpZ3VyYXRpb25Ob3RGb3VuZEV4Y2VwdGlvbihwcm9qZWN0TmFtZSwgY29uZmlndXJhdGlvbk5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGJ1aWxkZXJDb25maWd1cmF0aW9uOiBCdWlsZGVyQ29uZmlndXJhdGlvbjxPcHRpb25zVD4gPSB7XG4gICAgICByb290OiBwcm9qZWN0LnJvb3QgYXMgUGF0aCxcbiAgICAgIHNvdXJjZVJvb3Q6IHByb2plY3Quc291cmNlUm9vdCBhcyBQYXRoIHwgdW5kZWZpbmVkLFxuICAgICAgcHJvamVjdFR5cGU6IHByb2plY3QucHJvamVjdFR5cGUsXG4gICAgICBidWlsZGVyOiB0YXJnZXQuYnVpbGRlcixcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgLi4uY29uZmlndXJhdGlvbixcbiAgICAgICAgLi4ub3ZlcnJpZGVzIGFzIHt9LFxuICAgICAgfSBhcyBPcHRpb25zVCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGJ1aWxkZXJDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcnVuPE9wdGlvbnNUPihcbiAgICBidWlsZGVyQ29uZmlnOiBCdWlsZGVyQ29uZmlndXJhdGlvbjxPcHRpb25zVD4sXG4gICAgcGFydGlhbENvbnRleHQ6IFBhcnRpYWw8QnVpbGRlckNvbnRleHQ+ID0ge30sXG4gICk6IE9ic2VydmFibGU8QnVpbGRFdmVudD4ge1xuICAgIGNvbnN0IGNvbnRleHQ6IEJ1aWxkZXJDb250ZXh0ID0ge1xuICAgICAgbG9nZ2VyOiBuZXcgbG9nZ2luZy5OdWxsTG9nZ2VyKCksXG4gICAgICBhcmNoaXRlY3Q6IHRoaXMsXG4gICAgICBob3N0OiB0aGlzLl93b3Jrc3BhY2UuaG9zdCxcbiAgICAgIHdvcmtzcGFjZTogdGhpcy5fd29ya3NwYWNlLFxuICAgICAgLi4ucGFydGlhbENvbnRleHQsXG4gICAgfTtcblxuICAgIGxldCBidWlsZGVyRGVzY3JpcHRpb246IEJ1aWxkZXJEZXNjcmlwdGlvbjtcblxuICAgIHJldHVybiB0aGlzLmdldEJ1aWxkZXJEZXNjcmlwdGlvbihidWlsZGVyQ29uZmlnKS5waXBlKFxuICAgICAgdGFwKGRlc2NyaXB0aW9uID0+IGJ1aWxkZXJEZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uKSxcbiAgICAgIGNvbmNhdE1hcCgoKSA9PiB0aGlzLnZhbGlkYXRlQnVpbGRlck9wdGlvbnMoYnVpbGRlckNvbmZpZywgYnVpbGRlckRlc2NyaXB0aW9uKSksXG4gICAgICB0YXAodmFsaWRhdGVkQnVpbGRlckNvbmZpZyA9PiBidWlsZGVyQ29uZmlnID0gdmFsaWRhdGVkQnVpbGRlckNvbmZpZyksXG4gICAgICBtYXAoKCkgPT4gdGhpcy5nZXRCdWlsZGVyKGJ1aWxkZXJEZXNjcmlwdGlvbiwgY29udGV4dCkpLFxuICAgICAgY29uY2F0TWFwKGJ1aWxkZXIgPT4gYnVpbGRlci5ydW4oYnVpbGRlckNvbmZpZykpLFxuICAgICk7XG4gIH1cblxuICBnZXRCdWlsZGVyRGVzY3JpcHRpb248T3B0aW9uc1Q+KFxuICAgIGJ1aWxkZXJDb25maWc6IEJ1aWxkZXJDb25maWd1cmF0aW9uPE9wdGlvbnNUPixcbiAgKTogT2JzZXJ2YWJsZTxCdWlsZGVyRGVzY3JpcHRpb24+IHtcbiAgICAvLyBDaGVjayBjYWNoZSBmb3IgdGhpcyBidWlsZGVyIGRlc2NyaXB0aW9uLlxuICAgIGlmICh0aGlzLl9idWlsZGVyRGVzY3JpcHRpb25NYXAuaGFzKGJ1aWxkZXJDb25maWcuYnVpbGRlcikpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLl9idWlsZGVyRGVzY3JpcHRpb25NYXAuZ2V0KGJ1aWxkZXJDb25maWcuYnVpbGRlcikgYXMgQnVpbGRlckRlc2NyaXB0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9icykgPT4ge1xuICAgICAgLy8gVE9ETzogdGhpcyBwcm9iYWJseSBuZWVkcyB0byBiZSBtb3JlIGxpa2UgTm9kZU1vZHVsZXNFbmdpbmVIb3N0LlxuICAgICAgY29uc3QgYmFzZWRpciA9IGdldFN5c3RlbVBhdGgodGhpcy5fd29ya3NwYWNlLnJvb3QpO1xuICAgICAgY29uc3QgW3BrZywgYnVpbGRlck5hbWVdID0gYnVpbGRlckNvbmZpZy5idWlsZGVyLnNwbGl0KCc6Jyk7XG4gICAgICBjb25zdCBwa2dKc29uUGF0aCA9IG5vZGVSZXNvbHZlKHBrZywgeyBiYXNlZGlyLCByZXNvbHZlUGFja2FnZUpzb246IHRydWUsIGNoZWNrTG9jYWw6IHRydWUgfSk7XG4gICAgICBsZXQgYnVpbGRlcnNKc29uUGF0aDogUGF0aDtcbiAgICAgIGxldCBidWlsZGVyUGF0aHM6IEJ1aWxkZXJQYXRocztcblxuICAgICAgLy8gUmVhZCB0aGUgYGJ1aWxkZXJzYCBlbnRyeSBvZiBwYWNrYWdlLmpzb24uXG4gICAgICByZXR1cm4gdGhpcy5fbG9hZEpzb25GaWxlKG5vcm1hbGl6ZShwa2dKc29uUGF0aCkpLnBpcGUoXG4gICAgICAgIGNvbmNhdE1hcCgocGtnSnNvbjogSnNvbk9iamVjdCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHBrZ0pzb25CdWlsZGVyc2VudHJ5ID0gcGtnSnNvblsnYnVpbGRlcnMnXSBhcyBzdHJpbmc7XG4gICAgICAgICAgaWYgKCFwa2dKc29uQnVpbGRlcnNlbnRyeSkge1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IobmV3IEJ1aWxkZXJDYW5ub3RCZVJlc29sdmVkRXhjZXB0aW9uKGJ1aWxkZXJDb25maWcuYnVpbGRlcikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJ1aWxkZXJzSnNvblBhdGggPSBqb2luKGRpcm5hbWUobm9ybWFsaXplKHBrZ0pzb25QYXRoKSksIHBrZ0pzb25CdWlsZGVyc2VudHJ5KTtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9sb2FkSnNvbkZpbGUoYnVpbGRlcnNKc29uUGF0aCk7XG4gICAgICAgIH0pLFxuICAgICAgICAvLyBWYWxpZGF0ZSBidWlsZGVycyBqc29uLlxuICAgICAgICBjb25jYXRNYXAoKGJ1aWxkZXJQYXRoc01hcCkgPT4gdGhpcy5fd29ya3NwYWNlLnZhbGlkYXRlQWdhaW5zdFNjaGVtYTxCdWlsZGVyUGF0aHNNYXA+KFxuICAgICAgICAgIGJ1aWxkZXJQYXRoc01hcCwgdGhpcy5fYnVpbGRlcnNTY2hlbWEpKSxcbiAgICAgICAgY29uY2F0TWFwKChidWlsZGVyUGF0aHNNYXApID0+IHtcbiAgICAgICAgICBidWlsZGVyUGF0aHMgPSBidWlsZGVyUGF0aHNNYXAuYnVpbGRlcnNbYnVpbGRlck5hbWVdO1xuXG4gICAgICAgICAgaWYgKCFidWlsZGVyUGF0aHMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKG5ldyBCdWlsZGVyQ2Fubm90QmVSZXNvbHZlZEV4Y2VwdGlvbihidWlsZGVyQ29uZmlnLmJ1aWxkZXIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBSZXNvbHZlIHBhdGhzIGluIHRoZSBidWlsZGVyIHBhdGhzLlxuICAgICAgICAgIGNvbnN0IGJ1aWxkZXJKc29uRGlyID0gZGlybmFtZShidWlsZGVyc0pzb25QYXRoKTtcbiAgICAgICAgICBidWlsZGVyUGF0aHMuc2NoZW1hID0gam9pbihidWlsZGVySnNvbkRpciwgYnVpbGRlclBhdGhzLnNjaGVtYSk7XG4gICAgICAgICAgYnVpbGRlclBhdGhzLmNsYXNzID0gam9pbihidWlsZGVySnNvbkRpciwgYnVpbGRlclBhdGhzLmNsYXNzKTtcblxuICAgICAgICAgIC8vIFNhdmUgdGhlIGJ1aWxkZXIgcGF0aHMgc28gdGhhdCB3ZSBjYW4gbGF6aWx5IGxvYWQgdGhlIGJ1aWxkZXIuXG4gICAgICAgICAgdGhpcy5fYnVpbGRlclBhdGhzTWFwLnNldChidWlsZGVyQ29uZmlnLmJ1aWxkZXIsIGJ1aWxkZXJQYXRocyk7XG5cbiAgICAgICAgICAvLyBMb2FkIHRoZSBzY2hlbWEuXG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2xvYWRKc29uRmlsZShidWlsZGVyUGF0aHMuc2NoZW1hKTtcbiAgICAgICAgfSksXG4gICAgICAgIG1hcChidWlsZGVyU2NoZW1hID0+IHtcbiAgICAgICAgICBjb25zdCBidWlsZGVyRGVzY3JpcHRpb24gPSB7XG4gICAgICAgICAgICBuYW1lOiBidWlsZGVyQ29uZmlnLmJ1aWxkZXIsXG4gICAgICAgICAgICBzY2hlbWE6IGJ1aWxkZXJTY2hlbWEsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogYnVpbGRlclBhdGhzLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICAvLyBTYXZlIHRvIGNhY2hlIGJlZm9yZSByZXR1cm5pbmcuXG4gICAgICAgICAgdGhpcy5fYnVpbGRlckRlc2NyaXB0aW9uTWFwLnNldChidWlsZGVyRGVzY3JpcHRpb24ubmFtZSwgYnVpbGRlckRlc2NyaXB0aW9uKTtcblxuICAgICAgICAgIHJldHVybiBidWlsZGVyRGVzY3JpcHRpb247XG4gICAgICAgIH0pLFxuICAgICAgKS5zdWJzY3JpYmUob2JzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRlQnVpbGRlck9wdGlvbnM8T3B0aW9uc1Q+KFxuICAgIGJ1aWxkZXJDb25maWc6IEJ1aWxkZXJDb25maWd1cmF0aW9uPE9wdGlvbnNUPiwgYnVpbGRlckRlc2NyaXB0aW9uOiBCdWlsZGVyRGVzY3JpcHRpb24sXG4gICk6IE9ic2VydmFibGU8QnVpbGRlckNvbmZpZ3VyYXRpb248T3B0aW9uc1Q+PiB7XG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzcGFjZS52YWxpZGF0ZUFnYWluc3RTY2hlbWE8T3B0aW9uc1Q+KFxuICAgICAgYnVpbGRlckNvbmZpZy5vcHRpb25zLCBidWlsZGVyRGVzY3JpcHRpb24uc2NoZW1hLFxuICAgICkucGlwZShcbiAgICAgIG1hcCh2YWxpZGF0ZWRPcHRpb25zID0+IHtcbiAgICAgICAgYnVpbGRlckNvbmZpZy5vcHRpb25zID0gdmFsaWRhdGVkT3B0aW9ucztcblxuICAgICAgICByZXR1cm4gYnVpbGRlckNvbmZpZztcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBnZXRCdWlsZGVyPE9wdGlvbnNUPihcbiAgICBidWlsZGVyRGVzY3JpcHRpb246IEJ1aWxkZXJEZXNjcmlwdGlvbiwgY29udGV4dDogQnVpbGRlckNvbnRleHQsXG4gICk6IEJ1aWxkZXI8T3B0aW9uc1Q+IHtcbiAgICBjb25zdCBuYW1lID0gYnVpbGRlckRlc2NyaXB0aW9uLm5hbWU7XG4gICAgbGV0IGJ1aWxkZXJDb25zdHJ1Y3RvcjogQnVpbGRlckNvbnN0cnVjdG9yPE9wdGlvbnNUPjtcblxuICAgIC8vIENoZWNrIGNhY2hlIGZvciB0aGlzIGJ1aWxkZXIuXG4gICAgaWYgKHRoaXMuX2J1aWxkZXJDb25zdHJ1Y3Rvck1hcC5oYXMobmFtZSkpIHtcbiAgICAgIGJ1aWxkZXJDb25zdHJ1Y3RvciA9IHRoaXMuX2J1aWxkZXJDb25zdHJ1Y3Rvck1hcC5nZXQobmFtZSkgYXMgQnVpbGRlckNvbnN0cnVjdG9yPE9wdGlvbnNUPjtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLl9idWlsZGVyUGF0aHNNYXAuaGFzKG5hbWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZGVyTm90Rm91bmRFeGNlcHRpb24obmFtZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJ1aWxkZXJQYXRocyA9IHRoaXMuX2J1aWxkZXJQYXRoc01hcC5nZXQobmFtZSkgYXMgQnVpbGRlclBhdGhzO1xuXG4gICAgICAvLyBUT0RPOiBzdXBwb3J0IG1vcmUgdGhhbiB0aGUgZGVmYXVsdCBleHBvcnQsIG1heWJlIHZpYSBidWlsZGVyI2ltcG9ydC1uYW1lLlxuICAgICAgY29uc3QgYnVpbGRlck1vZHVsZSA9IHJlcXVpcmUoZ2V0U3lzdGVtUGF0aChidWlsZGVyUGF0aHMuY2xhc3MpKTtcbiAgICAgIGJ1aWxkZXJDb25zdHJ1Y3RvciA9IGJ1aWxkZXJNb2R1bGVbJ2RlZmF1bHQnXSBhcyBCdWlsZGVyQ29uc3RydWN0b3I8T3B0aW9uc1Q+O1xuXG4gICAgICAvLyBTYXZlIGJ1aWxkZXIgdG8gY2FjaGUgYmVmb3JlIHJldHVybmluZy5cbiAgICAgIHRoaXMuX2J1aWxkZXJDb25zdHJ1Y3Rvck1hcC5zZXQoYnVpbGRlckRlc2NyaXB0aW9uLm5hbWUsIGJ1aWxkZXJDb25zdHJ1Y3Rvcik7XG4gICAgfVxuXG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBidWlsZGVyQ29uc3RydWN0b3IoY29udGV4dCk7XG5cbiAgICByZXR1cm4gYnVpbGRlcjtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWRKc29uRmlsZShwYXRoOiBQYXRoKTogT2JzZXJ2YWJsZTxKc29uT2JqZWN0PiB7XG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzcGFjZS5ob3N0LnJlYWQobm9ybWFsaXplKHBhdGgpKS5waXBlKFxuICAgICAgbWFwKGJ1ZmZlciA9PiB2aXJ0dWFsRnMuZmlsZUJ1ZmZlclRvU3RyaW5nKGJ1ZmZlcikpLFxuICAgICAgbWFwKHN0ciA9PiBwYXJzZUpzb24oc3RyLCBKc29uUGFyc2VNb2RlLkxvb3NlKSBhcyB7fSBhcyBKc29uT2JqZWN0KSxcbiAgICApO1xuICB9XG59XG4iXX0=

@@ -28,2 +28,2 @@ "use strict";

exports.default = BrowserTarget;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2FyY2hpdGVjdC90ZXN0L2Jyb3dzZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7QUFFSCwrQkFBa0M7QUFJbEMsTUFBTSxpQkFBaUIsR0FBZTtJQUNwQyxPQUFPLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFFRixNQUFNLGNBQWMsR0FBZTtJQUNqQyxPQUFPLEVBQUUsS0FBSztDQUNmLENBQUM7QUFPRjtJQUNFLEdBQUcsQ0FBQyxjQUFtRTtRQUNyRSxNQUFNLENBQUMsSUFBSSxpQkFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUM1QixHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3pCLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUM1QixHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFURCxnQ0FTQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQnVpbGRFdmVudCwgQnVpbGRlciwgQnVpbGRlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi9zcmMnO1xuXG5cbmNvbnN0IHN1Y2Nlc3NCdWlsZEV2ZW50OiBCdWlsZEV2ZW50ID0ge1xuICBzdWNjZXNzOiB0cnVlLFxufTtcblxuY29uc3QgZmFpbEJ1aWxkRXZlbnQ6IEJ1aWxkRXZlbnQgPSB7XG4gIHN1Y2Nlc3M6IGZhbHNlLFxufTtcblxuZXhwb3J0IGludGVyZmFjZSBCcm93c2VyVGFyZ2V0T3B0aW9ucyB7XG4gIGJyb3dzZXJPcHRpb246IG51bWJlcjtcbiAgb3B0aW9uYWxCcm93c2VyT3B0aW9uOiBib29sZWFuO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCcm93c2VyVGFyZ2V0IGltcGxlbWVudHMgQnVpbGRlcjxCcm93c2VyVGFyZ2V0T3B0aW9ucz4ge1xuICBydW4oX2Jyb3dzZXJDb25maWc6IEJ1aWxkZXJDb25maWd1cmF0aW9uPFBhcnRpYWw8QnJvd3NlclRhcmdldE9wdGlvbnM+Pik6IE9ic2VydmFibGU8QnVpbGRFdmVudD4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShvYnMgPT4ge1xuICAgICAgb2JzLm5leHQoc3VjY2Vzc0J1aWxkRXZlbnQpO1xuICAgICAgb2JzLm5leHQoZmFpbEJ1aWxkRXZlbnQpO1xuICAgICAgb2JzLm5leHQoc3VjY2Vzc0J1aWxkRXZlbnQpO1xuICAgICAgb2JzLmNvbXBsZXRlKCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2FyY2hpdGVjdC90ZXN0L2Jyb3dzZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7QUFFSCwrQkFBa0M7QUFJbEMsTUFBTSxpQkFBaUIsR0FBZTtJQUNwQyxPQUFPLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFFRixNQUFNLGNBQWMsR0FBZTtJQUNqQyxPQUFPLEVBQUUsS0FBSztDQUNmLENBQUM7QUFPRjtJQUNFLEdBQUcsQ0FBQyxjQUFtRTtRQUNyRSxPQUFPLElBQUksaUJBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMxQixHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDNUIsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN6QixHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDNUIsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBVEQsZ0NBU0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJ1aWxkRXZlbnQsIEJ1aWxkZXIsIEJ1aWxkZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vc3JjJztcblxuXG5jb25zdCBzdWNjZXNzQnVpbGRFdmVudDogQnVpbGRFdmVudCA9IHtcbiAgc3VjY2VzczogdHJ1ZSxcbn07XG5cbmNvbnN0IGZhaWxCdWlsZEV2ZW50OiBCdWlsZEV2ZW50ID0ge1xuICBzdWNjZXNzOiBmYWxzZSxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnJvd3NlclRhcmdldE9wdGlvbnMge1xuICBicm93c2VyT3B0aW9uOiBudW1iZXI7XG4gIG9wdGlvbmFsQnJvd3Nlck9wdGlvbjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnJvd3NlclRhcmdldCBpbXBsZW1lbnRzIEJ1aWxkZXI8QnJvd3NlclRhcmdldE9wdGlvbnM+IHtcbiAgcnVuKF9icm93c2VyQ29uZmlnOiBCdWlsZGVyQ29uZmlndXJhdGlvbjxQYXJ0aWFsPEJyb3dzZXJUYXJnZXRPcHRpb25zPj4pOiBPYnNlcnZhYmxlPEJ1aWxkRXZlbnQ+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUob2JzID0+IHtcbiAgICAgIG9icy5uZXh0KHN1Y2Nlc3NCdWlsZEV2ZW50KTtcbiAgICAgIG9icy5uZXh0KGZhaWxCdWlsZEV2ZW50KTtcbiAgICAgIG9icy5uZXh0KHN1Y2Nlc3NCdWlsZEV2ZW50KTtcbiAgICAgIG9icy5jb21wbGV0ZSgpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=

@@ -59,2 +59,2 @@ "use strict";

exports.request = request;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYXJjaGl0ZWN0L3Rlc3RpbmcvcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOzs7Ozs7R0FNRztBQUNILDZCQUE2QjtBQUM3QiwrQkFBK0I7QUFDL0IsMkJBQTJCO0FBRTNCLGlCQUF3QixHQUFXLEVBQUUsT0FBTyxHQUFHLEVBQUU7SUFDL0MsTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3JDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsTUFBTSxPQUFPLEdBQXdCO1lBQ25DLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUTtZQUNwQixRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVE7WUFDcEIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO1lBQ1osSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO1lBQ1osSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO1lBQ1osT0FBTyxrQkFBSSxRQUFRLEVBQUUsV0FBVyxJQUFLLE9BQU8sQ0FBRTtTQUMvQyxDQUFDO1FBRUYsbUJBQW1CLEdBQXlCO1lBQzFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLCtDQUErQztnQkFDL0MsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNiLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxlQUFlLEdBQUcsMEJBQTBCLEdBQUcsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbkYsQ0FBQztZQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNOLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3hCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDZCxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRTtvQkFDckIsSUFBSSxJQUFJLEtBQUssQ0FBQztnQkFDaEIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFO29CQUNqQixJQUFJLENBQUM7d0JBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNoQixDQUFDO29CQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7d0JBQ2IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNkLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztRQUVELEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQztZQUMzQixPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDL0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUExQ0QsMEJBMENDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0ICogYXMgaHR0cCBmcm9tICdodHRwJztcbmltcG9ydCAqIGFzIGh0dHBzIGZyb20gJ2h0dHBzJztcbmltcG9ydCAqIGFzIFVybCBmcm9tICd1cmwnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVxdWVzdCh1cmw6IHN0cmluZywgaGVhZGVycyA9IHt9KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCB1ID0gVXJsLnBhcnNlKHVybCk7XG4gICAgY29uc3Qgb3B0aW9uczogaHR0cC5SZXF1ZXN0T3B0aW9ucyA9IHtcbiAgICAgIGhvc3RuYW1lOiB1Lmhvc3RuYW1lLFxuICAgICAgcHJvdG9jb2w6IHUucHJvdG9jb2wsXG4gICAgICBob3N0OiB1Lmhvc3QsXG4gICAgICBwb3J0OiB1LnBvcnQsXG4gICAgICBwYXRoOiB1LnBhdGgsXG4gICAgICBoZWFkZXJzOiB7ICdBY2NlcHQnOiAndGV4dC9odG1sJywgLi4uaGVhZGVycyB9LFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBfY2FsbGJhY2socmVzOiBodHRwLkluY29taW5nTWVzc2FnZSkge1xuICAgICAgaWYgKCFyZXMuc3RhdHVzQ29kZSB8fCByZXMuc3RhdHVzQ29kZSA+PSA0MDApIHtcbiAgICAgICAgLy8gQ29uc3VtZSB0aGUgcmVzdCBvZiB0aGUgZGF0YSB0byBmcmVlIG1lbW9yeS5cbiAgICAgICAgcmVzLnJlc3VtZSgpO1xuICAgICAgICByZWplY3QobmV3IEVycm9yKGBSZXF1ZXN0aW5nIFwiJHt1cmx9XCIgcmV0dXJuZWQgc3RhdHVzIGNvZGUgJHtyZXMuc3RhdHVzQ29kZX0uYCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzLnNldEVuY29kaW5nKCd1dGY4Jyk7XG4gICAgICAgIGxldCBkYXRhID0gJyc7XG4gICAgICAgIHJlcy5vbignZGF0YScsIGNodW5rID0+IHtcbiAgICAgICAgICBkYXRhICs9IGNodW5rO1xuICAgICAgICB9KTtcbiAgICAgICAgcmVzLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh1LnByb3RvY29sID09ICdodHRwczonKSB7XG4gICAgICBvcHRpb25zLmFnZW50ID0gbmV3IGh0dHBzLkFnZW50KHsgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZSB9KTtcbiAgICAgIGh0dHBzLmdldChvcHRpb25zLCBfY2FsbGJhY2spO1xuICAgIH0gZWxzZSBpZiAodS5wcm90b2NvbCA9PSAnaHR0cDonKSB7XG4gICAgICBodHRwLmdldChvcHRpb25zLCBfY2FsbGJhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcHJvdG9jb2w6ICR7SlNPTi5zdHJpbmdpZnkodS5wcm90b2NvbCl9LmApO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYXJjaGl0ZWN0L3Rlc3RpbmcvcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOzs7Ozs7R0FNRztBQUNILDZCQUE2QjtBQUM3QiwrQkFBK0I7QUFDL0IsMkJBQTJCO0FBRTNCLGlCQUF3QixHQUFXLEVBQUUsT0FBTyxHQUFHLEVBQUU7SUFDL0MsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLE1BQU0sT0FBTyxHQUF3QjtZQUNuQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVE7WUFDcEIsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRO1lBQ3BCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtZQUNaLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtZQUNaLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtZQUNaLE9BQU8sa0JBQUksUUFBUSxFQUFFLFdBQVcsSUFBSyxPQUFPLENBQUU7U0FDL0MsQ0FBQztRQUVGLG1CQUFtQixHQUF5QjtZQUMxQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUcsRUFBRTtnQkFDNUMsK0NBQStDO2dCQUMvQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLGVBQWUsR0FBRywwQkFBMEIsR0FBRyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUNsRjtpQkFBTTtnQkFDTCxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN4QixJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ2QsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUU7b0JBQ3JCLElBQUksSUFBSSxLQUFLLENBQUM7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDO2dCQUNILEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRTtvQkFDakIsSUFBSTt3QkFDRixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQ2Y7b0JBQUMsT0FBTyxHQUFHLEVBQUU7d0JBQ1osTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUNiO2dCQUNILENBQUMsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLENBQUMsUUFBUSxJQUFJLFFBQVEsRUFBRTtZQUMxQixPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDL0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDL0I7YUFBTSxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksT0FBTyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQzlCO2FBQU07WUFDTCxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckU7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUExQ0QsMEJBMENDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0ICogYXMgaHR0cCBmcm9tICdodHRwJztcbmltcG9ydCAqIGFzIGh0dHBzIGZyb20gJ2h0dHBzJztcbmltcG9ydCAqIGFzIFVybCBmcm9tICd1cmwnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVxdWVzdCh1cmw6IHN0cmluZywgaGVhZGVycyA9IHt9KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCB1ID0gVXJsLnBhcnNlKHVybCk7XG4gICAgY29uc3Qgb3B0aW9uczogaHR0cC5SZXF1ZXN0T3B0aW9ucyA9IHtcbiAgICAgIGhvc3RuYW1lOiB1Lmhvc3RuYW1lLFxuICAgICAgcHJvdG9jb2w6IHUucHJvdG9jb2wsXG4gICAgICBob3N0OiB1Lmhvc3QsXG4gICAgICBwb3J0OiB1LnBvcnQsXG4gICAgICBwYXRoOiB1LnBhdGgsXG4gICAgICBoZWFkZXJzOiB7ICdBY2NlcHQnOiAndGV4dC9odG1sJywgLi4uaGVhZGVycyB9LFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBfY2FsbGJhY2socmVzOiBodHRwLkluY29taW5nTWVzc2FnZSkge1xuICAgICAgaWYgKCFyZXMuc3RhdHVzQ29kZSB8fCByZXMuc3RhdHVzQ29kZSA+PSA0MDApIHtcbiAgICAgICAgLy8gQ29uc3VtZSB0aGUgcmVzdCBvZiB0aGUgZGF0YSB0byBmcmVlIG1lbW9yeS5cbiAgICAgICAgcmVzLnJlc3VtZSgpO1xuICAgICAgICByZWplY3QobmV3IEVycm9yKGBSZXF1ZXN0aW5nIFwiJHt1cmx9XCIgcmV0dXJuZWQgc3RhdHVzIGNvZGUgJHtyZXMuc3RhdHVzQ29kZX0uYCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzLnNldEVuY29kaW5nKCd1dGY4Jyk7XG4gICAgICAgIGxldCBkYXRhID0gJyc7XG4gICAgICAgIHJlcy5vbignZGF0YScsIGNodW5rID0+IHtcbiAgICAgICAgICBkYXRhICs9IGNodW5rO1xuICAgICAgICB9KTtcbiAgICAgICAgcmVzLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh1LnByb3RvY29sID09ICdodHRwczonKSB7XG4gICAgICBvcHRpb25zLmFnZW50ID0gbmV3IGh0dHBzLkFnZW50KHsgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZSB9KTtcbiAgICAgIGh0dHBzLmdldChvcHRpb25zLCBfY2FsbGJhY2spO1xuICAgIH0gZWxzZSBpZiAodS5wcm90b2NvbCA9PSAnaHR0cDonKSB7XG4gICAgICBodHRwLmdldChvcHRpb25zLCBfY2FsbGJhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcHJvdG9jb2w6ICR7SlNPTi5zdHJpbmdpZnkodS5wcm90b2NvbCl9LmApO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=

@@ -32,2 +32,2 @@ "use strict";

exports.runTargetSpec = runTargetSpec;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLXRhcmdldC1zcGVjLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9hcmNoaXRlY3QvdGVzdGluZy9ydW4tdGFyZ2V0LXNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7QUFFSCwrQ0FBd0U7QUFDeEUsK0JBQTREO0FBQzVELDhDQUE2RTtBQUM3RSxnQ0FBZ0U7QUFHbkQsUUFBQSxjQUFjLEdBQUcsS0FBSyxDQUFDO0FBRXBDLHVCQUNFLElBQXFCLEVBQ3JCLFVBQTJCLEVBQzNCLFNBQVMsR0FBRyxFQUFFLEVBQ2QsT0FBTyxHQUFHLHNCQUFjLEVBQ3hCLFNBQXlCLElBQUksY0FBTyxDQUFDLFVBQVUsRUFBRTtJQUVqRCxVQUFVLHFCQUFRLFVBQVUsSUFBRSxTQUFTLEdBQUUsQ0FBQztJQUMxQyxNQUFNLGFBQWEsR0FBRyxnQkFBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2hELE1BQU0sU0FBUyxHQUFHLElBQUksbUJBQVksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUUxRSwrQ0FBK0M7SUFDL0Msb0RBQW9EO0lBQ3BELElBQUksVUFBVSxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMzQixNQUFNLHFCQUFxQixHQUFHLElBQUksaUJBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNqRCxVQUFVLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBRUgsbUVBQW1FO0lBQ25FLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQ3ZFLHFCQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLGVBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUNsRCxxQkFBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQ2pGLG9CQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FDN0IsQ0FBQztJQUVGLGlFQUFpRTtJQUNqRSxNQUFNLFFBQVEsR0FBRyxZQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUNsQyxxQkFBUyxDQUFDLHFCQUFxQixDQUFDLEVBQ2hDLHVCQUFXLENBQUMsaUJBQVUsQ0FBQywwQkFBMEIsT0FBTyxZQUFZLENBQUMsQ0FBQyxDQUN2RSxDQUFDO0lBRUYsTUFBTSxDQUFDLFlBQUssQ0FDVixRQUFRLEVBQ1IsYUFBYSxDQUNkLENBQUM7QUFDSixDQUFDO0FBbkNELHNDQW1DQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgZXhwZXJpbWVudGFsLCBsb2dnaW5nLCBub3JtYWxpemUgfSBmcm9tICdAYW5ndWxhci1kZXZraXQvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBtZXJnZSwgdGhyb3dFcnJvciwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbmNhdE1hcCwgY29uY2F0TWFwVG8sIGZpbmFsaXplLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBcmNoaXRlY3QsIEJ1aWxkRXZlbnQsIFRhcmdldFNwZWNpZmllciB9IGZyb20gJy4uL3NyYyc7XG5pbXBvcnQgeyBUZXN0UHJvamVjdEhvc3QgfSBmcm9tICcuL3Rlc3QtcHJvamVjdC1ob3N0JztcblxuZXhwb3J0IGNvbnN0IERlZmF1bHRUaW1lb3V0ID0gNDUwMDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBydW5UYXJnZXRTcGVjKFxuICBob3N0OiBUZXN0UHJvamVjdEhvc3QsXG4gIHRhcmdldFNwZWM6IFRhcmdldFNwZWNpZmllcixcbiAgb3ZlcnJpZGVzID0ge30sXG4gIHRpbWVvdXQgPSBEZWZhdWx0VGltZW91dCxcbiAgbG9nZ2VyOiBsb2dnaW5nLkxvZ2dlciA9IG5ldyBsb2dnaW5nLk51bGxMb2dnZXIoKSxcbik6IE9ic2VydmFibGU8QnVpbGRFdmVudD4ge1xuICB0YXJnZXRTcGVjID0geyAuLi50YXJnZXRTcGVjLCBvdmVycmlkZXMgfTtcbiAgY29uc3Qgd29ya3NwYWNlRmlsZSA9IG5vcm1hbGl6ZSgnYW5ndWxhci5qc29uJyk7XG4gIGNvbnN0IHdvcmtzcGFjZSA9IG5ldyBleHBlcmltZW50YWwud29ya3NwYWNlLldvcmtzcGFjZShob3N0LnJvb3QoKSwgaG9zdCk7XG5cbiAgLy8gRW1pdCB3aGVuIHJ1bkFyY2hpdGVjdCQgY29tcGxldGVzIG9yIGVycm9ycy5cbiAgLy8gVE9ETzogVGhlcmUgbXVzdCBiZSBhIGJldHRlciB3YXkgb2YgZG9pbmcgdGhpcy4uLlxuICBsZXQgZmluYWxpemVDQiA9ICgpID0+IHsgfTtcbiAgY29uc3QgcnVuQXJjaGl0ZWN0RmluYWxpemUkID0gbmV3IE9ic2VydmFibGUob2JzID0+IHtcbiAgICBmaW5hbGl6ZUNCID0gKCkgPT4gb2JzLm5leHQoKTtcbiAgfSk7XG5cbiAgLy8gTG9hZCB0aGUgd29ya3NwYWNlIGZyb20gdGhlIHJvb3Qgb2YgdGhlIGhvc3QsIHRoZW4gcnVuIGEgdGFyZ2V0LlxuICBjb25zdCBydW5BcmNoaXRlY3QkID0gd29ya3NwYWNlLmxvYWRXb3Jrc3BhY2VGcm9tSG9zdCh3b3Jrc3BhY2VGaWxlKS5waXBlKFxuICAgIGNvbmNhdE1hcCh3cyA9PiBuZXcgQXJjaGl0ZWN0KHdzKS5sb2FkQXJjaGl0ZWN0KCkpLFxuICAgIGNvbmNhdE1hcChhcmNoID0+IGFyY2gucnVuKGFyY2guZ2V0QnVpbGRlckNvbmZpZ3VyYXRpb24odGFyZ2V0U3BlYyksIHsgbG9nZ2VyIH0pKSxcbiAgICBmaW5hbGl6ZSgoKSA9PiBmaW5hbGl6ZUNCKCkpLFxuICApO1xuXG4gIC8vIEVycm9yIG91dCBhZnRlciB0aGUgdGltZW91dCBpZiBydW5BcmNoaXRlY3QkIGhhc24ndCBmaW5hbGl6ZWQuXG4gIGNvbnN0IHRpbWVvdXQkID0gdGltZXIodGltZW91dCkucGlwZShcbiAgICB0YWtlVW50aWwocnVuQXJjaGl0ZWN0RmluYWxpemUkKSxcbiAgICBjb25jYXRNYXBUbyh0aHJvd0Vycm9yKGBydW5UYXJnZXRTcGVjIHRpbWVvdXQgKCR7dGltZW91dH0pIHJlYWNoZWQuYCkpLFxuICApO1xuXG4gIHJldHVybiBtZXJnZShcbiAgICB0aW1lb3V0JCxcbiAgICBydW5BcmNoaXRlY3QkLFxuICApO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLXRhcmdldC1zcGVjLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9hcmNoaXRlY3QvdGVzdGluZy9ydW4tdGFyZ2V0LXNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7QUFFSCwrQ0FBd0U7QUFDeEUsK0JBQTREO0FBQzVELDhDQUE2RTtBQUM3RSxnQ0FBZ0U7QUFHbkQsUUFBQSxjQUFjLEdBQUcsS0FBSyxDQUFDO0FBRXBDLHVCQUNFLElBQXFCLEVBQ3JCLFVBQTJCLEVBQzNCLFNBQVMsR0FBRyxFQUFFLEVBQ2QsT0FBTyxHQUFHLHNCQUFjLEVBQ3hCLFNBQXlCLElBQUksY0FBTyxDQUFDLFVBQVUsRUFBRTtJQUVqRCxVQUFVLHFCQUFRLFVBQVUsSUFBRSxTQUFTLEdBQUUsQ0FBQztJQUMxQyxNQUFNLGFBQWEsR0FBRyxnQkFBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2hELE1BQU0sU0FBUyxHQUFHLElBQUksbUJBQVksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUUxRSwrQ0FBK0M7SUFDL0Msb0RBQW9EO0lBQ3BELElBQUksVUFBVSxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMzQixNQUFNLHFCQUFxQixHQUFHLElBQUksaUJBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNqRCxVQUFVLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBRUgsbUVBQW1FO0lBQ25FLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQ3ZFLHFCQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLGVBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUNsRCxxQkFBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQ2pGLG9CQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FDN0IsQ0FBQztJQUVGLGlFQUFpRTtJQUNqRSxNQUFNLFFBQVEsR0FBRyxZQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUNsQyxxQkFBUyxDQUFDLHFCQUFxQixDQUFDLEVBQ2hDLHVCQUFXLENBQUMsaUJBQVUsQ0FBQywwQkFBMEIsT0FBTyxZQUFZLENBQUMsQ0FBQyxDQUN2RSxDQUFDO0lBRUYsT0FBTyxZQUFLLENBQ1YsUUFBUSxFQUNSLGFBQWEsQ0FDZCxDQUFDO0FBQ0osQ0FBQztBQW5DRCxzQ0FtQ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IGV4cGVyaW1lbnRhbCwgbG9nZ2luZywgbm9ybWFsaXplIH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgbWVyZ2UsIHRocm93RXJyb3IsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb25jYXRNYXAsIGNvbmNhdE1hcFRvLCBmaW5hbGl6ZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXJjaGl0ZWN0LCBCdWlsZEV2ZW50LCBUYXJnZXRTcGVjaWZpZXIgfSBmcm9tICcuLi9zcmMnO1xuaW1wb3J0IHsgVGVzdFByb2plY3RIb3N0IH0gZnJvbSAnLi90ZXN0LXByb2plY3QtaG9zdCc7XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0VGltZW91dCA9IDQ1MDAwO1xuXG5leHBvcnQgZnVuY3Rpb24gcnVuVGFyZ2V0U3BlYyhcbiAgaG9zdDogVGVzdFByb2plY3RIb3N0LFxuICB0YXJnZXRTcGVjOiBUYXJnZXRTcGVjaWZpZXIsXG4gIG92ZXJyaWRlcyA9IHt9LFxuICB0aW1lb3V0ID0gRGVmYXVsdFRpbWVvdXQsXG4gIGxvZ2dlcjogbG9nZ2luZy5Mb2dnZXIgPSBuZXcgbG9nZ2luZy5OdWxsTG9nZ2VyKCksXG4pOiBPYnNlcnZhYmxlPEJ1aWxkRXZlbnQ+IHtcbiAgdGFyZ2V0U3BlYyA9IHsgLi4udGFyZ2V0U3BlYywgb3ZlcnJpZGVzIH07XG4gIGNvbnN0IHdvcmtzcGFjZUZpbGUgPSBub3JtYWxpemUoJ2FuZ3VsYXIuanNvbicpO1xuICBjb25zdCB3b3Jrc3BhY2UgPSBuZXcgZXhwZXJpbWVudGFsLndvcmtzcGFjZS5Xb3Jrc3BhY2UoaG9zdC5yb290KCksIGhvc3QpO1xuXG4gIC8vIEVtaXQgd2hlbiBydW5BcmNoaXRlY3QkIGNvbXBsZXRlcyBvciBlcnJvcnMuXG4gIC8vIFRPRE86IFRoZXJlIG11c3QgYmUgYSBiZXR0ZXIgd2F5IG9mIGRvaW5nIHRoaXMuLi5cbiAgbGV0IGZpbmFsaXplQ0IgPSAoKSA9PiB7IH07XG4gIGNvbnN0IHJ1bkFyY2hpdGVjdEZpbmFsaXplJCA9IG5ldyBPYnNlcnZhYmxlKG9icyA9PiB7XG4gICAgZmluYWxpemVDQiA9ICgpID0+IG9icy5uZXh0KCk7XG4gIH0pO1xuXG4gIC8vIExvYWQgdGhlIHdvcmtzcGFjZSBmcm9tIHRoZSByb290IG9mIHRoZSBob3N0LCB0aGVuIHJ1biBhIHRhcmdldC5cbiAgY29uc3QgcnVuQXJjaGl0ZWN0JCA9IHdvcmtzcGFjZS5sb2FkV29ya3NwYWNlRnJvbUhvc3Qod29ya3NwYWNlRmlsZSkucGlwZShcbiAgICBjb25jYXRNYXAod3MgPT4gbmV3IEFyY2hpdGVjdCh3cykubG9hZEFyY2hpdGVjdCgpKSxcbiAgICBjb25jYXRNYXAoYXJjaCA9PiBhcmNoLnJ1bihhcmNoLmdldEJ1aWxkZXJDb25maWd1cmF0aW9uKHRhcmdldFNwZWMpLCB7IGxvZ2dlciB9KSksXG4gICAgZmluYWxpemUoKCkgPT4gZmluYWxpemVDQigpKSxcbiAgKTtcblxuICAvLyBFcnJvciBvdXQgYWZ0ZXIgdGhlIHRpbWVvdXQgaWYgcnVuQXJjaGl0ZWN0JCBoYXNuJ3QgZmluYWxpemVkLlxuICBjb25zdCB0aW1lb3V0JCA9IHRpbWVyKHRpbWVvdXQpLnBpcGUoXG4gICAgdGFrZVVudGlsKHJ1bkFyY2hpdGVjdEZpbmFsaXplJCksXG4gICAgY29uY2F0TWFwVG8odGhyb3dFcnJvcihgcnVuVGFyZ2V0U3BlYyB0aW1lb3V0ICgke3RpbWVvdXR9KSByZWFjaGVkLmApKSxcbiAgKTtcblxuICByZXR1cm4gbWVyZ2UoXG4gICAgdGltZW91dCQsXG4gICAgcnVuQXJjaGl0ZWN0JCxcbiAgKTtcbn1cbiJdfQ==

@@ -28,2 +28,2 @@ "use strict";

exports.TestLogger = TestLogger;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1sb2dnZXIuanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2FyY2hpdGVjdC90ZXN0aW5nL3Rlc3QtbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7O0FBRUgsK0NBQStDO0FBRy9DLGdCQUF3QixTQUFRLGNBQU8sQ0FBQyxNQUFNO0lBRTVDLFlBQVksSUFBWSxFQUFFLFNBQWdDLElBQUk7UUFDNUQsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUZkLG1CQUFjLEdBQXVCLEVBQUUsQ0FBQztRQUc5QyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFlO1FBQ3RCLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsSUFBSSxDQUFDLEVBQVU7UUFDYixNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztDQUNGO0FBbEJELGdDQWtCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgbG9nZ2luZyB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcblxuXG5leHBvcnQgY2xhc3MgVGVzdExvZ2dlciBleHRlbmRzIGxvZ2dpbmcuTG9nZ2VyIHtcbiAgcHJpdmF0ZSBfbGF0ZXN0RW50cmllczogbG9nZ2luZy5Mb2dFbnRyeVtdID0gW107XG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgcGFyZW50OiBsb2dnaW5nLkxvZ2dlciB8IG51bGwgPSBudWxsKSB7XG4gICAgc3VwZXIobmFtZSwgcGFyZW50KTtcbiAgICB0aGlzLnN1YnNjcmliZSgoZW50cnkpID0+IHRoaXMuX2xhdGVzdEVudHJpZXMucHVzaChlbnRyeSkpO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5fbGF0ZXN0RW50cmllcyA9IFtdO1xuICB9XG5cbiAgaW5jbHVkZXMobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xhdGVzdEVudHJpZXMuc29tZSgoZW50cnkpID0+IGVudHJ5Lm1lc3NhZ2UuaW5jbHVkZXMobWVzc2FnZSkpO1xuICB9XG5cbiAgdGVzdChyZTogUmVnRXhwKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xhdGVzdEVudHJpZXMuc29tZSgoZW50cnkpID0+IHJlLnRlc3QoZW50cnkubWVzc2FnZSkpO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1sb2dnZXIuanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2FyY2hpdGVjdC90ZXN0aW5nL3Rlc3QtbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7O0FBRUgsK0NBQStDO0FBRy9DLGdCQUF3QixTQUFRLGNBQU8sQ0FBQyxNQUFNO0lBRTVDLFlBQVksSUFBWSxFQUFFLFNBQWdDLElBQUk7UUFDNUQsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUZkLG1CQUFjLEdBQXVCLEVBQUUsQ0FBQztRQUc5QyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFlO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELElBQUksQ0FBQyxFQUFVO1FBQ2IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0NBQ0Y7QUFsQkQsZ0NBa0JDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBsb2dnaW5nIH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUnO1xuXG5cbmV4cG9ydCBjbGFzcyBUZXN0TG9nZ2VyIGV4dGVuZHMgbG9nZ2luZy5Mb2dnZXIge1xuICBwcml2YXRlIF9sYXRlc3RFbnRyaWVzOiBsb2dnaW5nLkxvZ0VudHJ5W10gPSBbXTtcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBwYXJlbnQ6IGxvZ2dpbmcuTG9nZ2VyIHwgbnVsbCA9IG51bGwpIHtcbiAgICBzdXBlcihuYW1lLCBwYXJlbnQpO1xuICAgIHRoaXMuc3Vic2NyaWJlKChlbnRyeSkgPT4gdGhpcy5fbGF0ZXN0RW50cmllcy5wdXNoKGVudHJ5KSk7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLl9sYXRlc3RFbnRyaWVzID0gW107XG4gIH1cblxuICBpbmNsdWRlcyhtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5fbGF0ZXN0RW50cmllcy5zb21lKChlbnRyeSkgPT4gZW50cnkubWVzc2FnZS5pbmNsdWRlcyhtZXNzYWdlKSk7XG4gIH1cblxuICB0ZXN0KHJlOiBSZWdFeHApIHtcbiAgICByZXR1cm4gdGhpcy5fbGF0ZXN0RW50cmllcy5zb21lKChlbnRyeSkgPT4gcmUudGVzdChlbnRyeS5tZXNzYWdlKSk7XG4gIH1cbn1cbiJdfQ==

@@ -1,2 +0,1 @@

/// <reference types="node" />
/**

@@ -9,2 +8,3 @@ * @license

*/
/// <reference types="node" />
import { Path, virtualFs } from '@angular-devkit/core';

@@ -28,9 +28,5 @@ import { NodeJsSyncHost } from '@angular-devkit/core/node';

appendToFile(path: string, str: string): void;
fileMatchExists(dir: string, regex: RegExp): (string & {
__PRIVATE_DEVKIT_PATH: void;
} & {
__PRIVATE_DEVKIT_PATH_FRAGMENT: void;
}) | undefined;
fileMatchExists(dir: string, regex: RegExp): import("../../core/src/virtual-fs/path").PathFragment | undefined;
copyFile(from: string, to: string): void;
private findUniqueFolderPath();
private findUniqueFolderPath;
}

@@ -104,2 +104,2 @@ "use strict";

exports.TestProjectHost = TestProjectHost;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1wcm9qZWN0LWhvc3QuanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2FyY2hpdGVjdC90ZXN0aW5nL3Rlc3QtcHJvamVjdC1ob3N0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7O0FBRUgsK0NBUThCO0FBQzlCLG9EQUEyRDtBQUUzRCwrQkFBbUQ7QUFDbkQsOENBQXVGO0FBR3ZGLHFCQUE2QixTQUFRLHFCQUFjO0lBSWpELFlBQXNCLGFBQW1CO1FBQ3ZDLEtBQUssRUFBRSxDQUFDO1FBRFksa0JBQWEsR0FBYixhQUFhLENBQU07UUFIakMsaUJBQVksR0FBZ0IsSUFBSSxDQUFDO1FBQ2pDLG9CQUFlLEdBQTZDLElBQUksQ0FBQztJQUl6RSxDQUFDO0lBRUQsSUFBSTtRQUNGLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxVQUFVO1FBQ1IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLE1BQU0sSUFBSSxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVELFVBQVU7UUFDUixNQUFNLGFBQWEsR0FBRyxDQUFDLElBQVUsRUFBb0IsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSTtRQUMxRSxtQ0FBbUM7UUFDbkMscUJBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFD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LENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQzlFLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFoSUQsMENBZ0lDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1xuICBQYXRoLFxuICBiYXNlbmFtZSxcbiAgZGlybmFtZSxcbiAgam9pbixcbiAgbm9ybWFsaXplLFxuICByZWxhdGl2ZSxcbiAgdmlydHVhbEZzLFxufSBmcm9tICdAYW5ndWxhci1kZXZraXQvY29yZSc7XG5pbXBvcnQgeyBOb2RlSnNTeW5jSG9zdCB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlL25vZGUnO1xuaW1wb3J0IHsgU3RhdHMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSwgZnJvbSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbmNhdE1hcCwgZGVsYXksIGZpbmFsaXplLCBtYXAsIG1lcmdlTWFwLCByZXRyeSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5cbmV4cG9ydCBjbGFzcyBUZXN0UHJvamVjdEhvc3QgZXh0ZW5kcyBOb2RlSnNTeW5jSG9zdCB7XG4gIHByaXZhdGUgX2N1cnJlbnRSb290OiBQYXRoIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3Njb3BlZFN5bmNIb3N0OiB2aXJ0dWFsRnMuU3luY0RlbGVnYXRlSG9zdDxTdGF0cz4gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX3RlbXBsYXRlUm9vdDogUGF0aCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICByb290KCk6IFBhdGgge1xuICAgIGlmICh0aGlzLl9jdXJyZW50Um9vdCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUZXN0UHJvamVjdEhvc3QgbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgdXNlZC4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFJvb3Q7XG4gIH1cblxuICBzY29wZWRTeW5jKCk6IHZpcnR1YWxGcy5TeW5jRGVsZWdhdGVIb3N0PFN0YXRzPiB7XG4gICAgaWYgKHRoaXMuX2N1cnJlbnRSb290ID09PSBudWxsIHx8IHRoaXMuX3Njb3BlZFN5bmNIb3N0ID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Rlc3RQcm9qZWN0SG9zdCBtdXN0IGJlIGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyB1c2VkLicpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zY29wZWRTeW5jSG9zdDtcbiAgfVxuXG4gIGluaXRpYWxpemUoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgcmVjdXJzaXZlTGlzdCA9IChwYXRoOiBQYXRoKTogT2JzZXJ2YWJsZTxQYXRoPiA9PiB0aGlzLmxpc3QocGF0aCkucGlwZShcbiAgICAgIC8vIEVtaXQgZWFjaCBmcmFnbWVudCBpbmRpdmlkdWFsbHkuXG4gICAgICBjb25jYXRNYXAoZnJhZ21lbnRzID0+IGZyb20oZnJhZ21lbnRzKSksXG4gICAgICAvLyBKb2luIHRoZSBwYXRoIHdpdGggZnJhZ21lbnQuXG4gICAgICBtYXAoZnJhZ21lbnQgPT4gam9pbihwYXRoLCBmcmFnbWVudCkpLFxuICAgICAgLy8gRW1pdCBkaXJlY3RvcnkgY29udGVudCBwYXRocyBpbnN0ZWFkIG9mIHRoZSBkaXJlY3RvcnkgcGF0aC5cbiAgICAgIG1lcmdlTWFwKHBhdGggPT4gdGhpcy5pc0RpcmVjdG9yeShwYXRoKS5waXBlKFxuICAgICAgICBjb25jYXRNYXAoaXNEaXIgPT4gaXNEaXIgPyByZWN1cnNpdmVMaXN0KHBhdGgpIDogb2YocGF0aCkpLFxuICAgICAgKSksXG4gICAgKTtcblxuICAgIC8vIEZpbmQgYSB1bmlxdWUgZm9sZGVyIHRoYXQgd2UgY2FuIHdyaXRlIHRvIHRvIHVzZSBhcyBjdXJyZW50IHJvb3QuXG4gICAgcmV0dXJuIHRoaXMuZmluZFVuaXF1ZUZvbGRlclBhdGgoKS5waXBlKFxuICAgICAgLy8gU2F2ZSB0aGUgcGF0aCBhbmQgY3JlYXRlIGEgc2NvcGVkIGhvc3QgZm9yIGl0LlxuICAgICAgdGFwKG5ld0ZvbGRlclBhdGggPT4ge1xuICAgICAgICB0aGlzLl9jdXJyZW50Um9vdCA9IG5ld0ZvbGRlclBhdGg7XG4gICAgICAgIHRoaXMuX3Njb3BlZFN5bmNIb3N0ID0gbmV3IHZpcnR1YWxGcy5TeW5jRGVsZWdhdGVIb3N0KFxuICAgICAgICAgIG5ldyB2aXJ0dWFsRnMuU2NvcGVkSG9zdCh0aGlzLCB0aGlzLnJvb3QoKSkpO1xuICAgICAgfSksXG4gICAgICAvLyBMaXN0IGFsbCBmaWxlcyBpbiByb290LlxuICAgICAgY29uY2F0TWFwKCgpID0+IHJlY3Vyc2l2ZUxpc3QodGhpcy5fdGVtcGxhdGVSb290KSksXG4gICAgICAvLyBDb3B5IHRoZW0gb3ZlciB0byB0aGUgY3VycmVudCByb290LlxuICAgICAgY29uY2F0TWFwKGZyb20gPT4ge1xuICAgICAgICBjb25zdCB0byA9IGpvaW4odGhpcy5yb290KCksIHJlbGF0aXZlKHRoaXMuX3RlbXBsYXRlUm9vdCwgZnJvbSkpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnJlYWQoZnJvbSkucGlwZShcbiAgICAgICAgICBjb25jYXRNYXAoYnVmZmVyID0+IHRoaXMud3JpdGUodG8sIGJ1ZmZlcikpLFxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgICBtYXAoKCkgPT4geyB9KSxcbiAgICApO1xuICB9XG5cbiAgcmVzdG9yZSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fY3VycmVudFJvb3QgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBFTVBUWTtcbiAgICB9XG5cbiAgICAvLyBEZWxldGUgdGhlIGN1cnJlbnQgcm9vdCBhbmQgY2xlYXIgdGhlIHZhcmlhYmxlcy5cbiAgICAvLyBXYWl0IDUwbXMgYW5kIHJldHJ5IHVwIHRvIDEwIHRpbWVzLCB0byBnaXZlIHRpbWUgZm9yIGZpbGUgbG9ja3MgdG8gY2xlYXIuXG4gICAgcmV0dXJuIHRoaXMuZXhpc3RzKHRoaXMucm9vdCgpKS5waXBlKFxuICAgICAgZGVsYXkoNTApLFxuICAgICAgY29uY2F0TWFwKGV4aXN0cyA9PiBleGlzdHMgPyB0aGlzLmRlbGV0ZSh0aGlzLnJvb3QoKSkgOiBFTVBUWSksXG4gICAgICByZXRyeSgxMCksXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRSb290ID0gbnVsbDtcbiAgICAgICAgdGhpcy5fc2NvcGVkU3luY0hvc3QgPSBudWxsO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHdyaXRlTXVsdGlwbGVGaWxlcyhmaWxlczogeyBbcGF0aDogc3RyaW5nXTogc3RyaW5nIHwgQXJyYXlCdWZmZXJMaWtlIHwgQnVmZmVyIH0pOiB2b2lkIHtcbiAgICBPYmplY3Qua2V5cyhmaWxlcykuZm9yRWFjaChmaWxlTmFtZSA9PiB7XG4gICAgICBsZXQgY29udGVudCA9IGZpbGVzW2ZpbGVOYW1lXTtcbiAgICAgIGlmICh0eXBlb2YgY29udGVudCA9PSAnc3RyaW5nJykge1xuICAgICAgICBjb250ZW50ID0gdmlydHVhbEZzLnN0cmluZ1RvRmlsZUJ1ZmZlcihjb250ZW50KTtcbiAgICAgIH0gZWxzZSBpZiAoY29udGVudCBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgICBjb250ZW50ID0gY29udGVudC5idWZmZXIuc2xpY2UoXG4gICAgICAgICAgY29udGVudC5ieXRlT2Zmc2V0LFxuICAgICAgICAgIGNvbnRlbnQuYnl0ZU9mZnNldCArIGNvbnRlbnQuYnl0ZUxlbmd0aCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zY29wZWRTeW5jKCkud3JpdGUoXG4gICAgICAgIG5vcm1hbGl6ZShmaWxlTmFtZSksXG4gICAgICAgIGNvbnRlbnQsXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcmVwbGFjZUluRmlsZShwYXRoOiBzdHJpbmcsIG1hdGNoOiBSZWdFeHAgfCBzdHJpbmcsIHJlcGxhY2VtZW50OiBzdHJpbmcpIHtcbiAgICBjb25zdCBjb250ZW50ID0gdmlydHVhbEZzLmZpbGVCdWZmZXJUb1N0cmluZyh0aGlzLnNjb3BlZFN5bmMoKS5yZWFkKG5vcm1hbGl6ZShwYXRoKSkpO1xuICAgIHRoaXMuc2NvcGVkU3luYygpLndyaXRlKG5vcm1hbGl6ZShwYXRoKSxcbiAgICAgIHZpcnR1YWxGcy5zdHJpbmdUb0ZpbGVCdWZmZXIoY29udGVudC5yZXBsYWNlKG1hdGNoLCByZXBsYWNlbWVudCkpKTtcbiAgfVxuXG4gIGFwcGVuZFRvRmlsZShwYXRoOiBzdHJpbmcsIHN0cjogc3RyaW5nKSB7XG4gICAgY29uc3QgY29udGVudCA9IHZpcnR1YWxGcy5maWxlQnVmZmVyVG9TdHJpbmcodGhpcy5zY29wZWRTeW5jKCkucmVhZChub3JtYWxpemUocGF0aCkpKTtcbiAgICB0aGlzLnNjb3BlZFN5bmMoKS53cml0ZShub3JtYWxpemUocGF0aCksXG4gICAgICB2aXJ0dWFsRnMuc3RyaW5nVG9GaWxlQnVmZmVyKGNvbnRlbnQuY29uY2F0KHN0cikpKTtcbiAgfVxuXG4gIGZpbGVNYXRjaEV4aXN0cyhkaXI6IHN0cmluZywgcmVnZXg6IFJlZ0V4cCkge1xuICAgIGNvbnN0IFtmaWxlTmFtZV0gPSB0aGlzLnNjb3BlZFN5bmMoKS5saXN0KG5vcm1hbGl6ZShkaXIpKS5maWx0ZXIobmFtZSA9PiBuYW1lLm1hdGNoKHJlZ2V4KSk7XG5cbiAgICByZXR1cm4gZmlsZU5hbWUgfHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgY29weUZpbGUoZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKSB7XG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuc2NvcGVkU3luYygpLnJlYWQobm9ybWFsaXplKGZyb20pKTtcbiAgICB0aGlzLnNjb3BlZFN5bmMoKS53cml0ZShub3JtYWxpemUodG8pLCBjb250ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZFVuaXF1ZUZvbGRlclBhdGgoKTogT2JzZXJ2YWJsZTxQYXRoPiB7XG4gICAgLy8gMTEgY2hhcmFjdGVyIGFscGhhbnVtZXJpYyBzdHJpbmcuXG4gICAgY29uc3QgcmFuZG9tU3RyaW5nID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMik7XG4gICAgY29uc3QgbmV3Rm9sZGVyTmFtZSA9IGB0ZXN0LXByb2plY3QtaG9zdC0ke2Jhc2VuYW1lKHRoaXMuX3RlbXBsYXRlUm9vdCl9LSR7cmFuZG9tU3RyaW5nfWA7XG4gICAgY29uc3QgbmV3Rm9sZGVyUGF0aCA9IGpvaW4oZGlybmFtZSh0aGlzLl90ZW1wbGF0ZVJvb3QpLCBuZXdGb2xkZXJOYW1lKTtcblxuICAgIHJldHVybiB0aGlzLmV4aXN0cyhuZXdGb2xkZXJQYXRoKS5waXBlKFxuICAgICAgY29uY2F0TWFwKGV4aXN0cyA9PiBleGlzdHMgPyB0aGlzLmZpbmRVbmlxdWVGb2xkZXJQYXRoKCkgOiBvZihuZXdGb2xkZXJQYXRoKSksXG4gICAgKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1wcm9qZWN0LWhvc3QuanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2FyY2hpdGVjdC90ZXN0aW5nL3Rlc3QtcHJvamVjdC1ob3N0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7O0FBRUgsK0NBUThCO0FBQzlCLG9EQUEyRDtBQUUzRCwrQkFBbUQ7QUFDbkQsOENBQXVGO0FBR3ZGLHFCQUE2QixTQUFRLHFCQUFjO0lBSWpELFlBQXNCLGFBQW1CO1FBQ3ZDLEtBQUssRUFBRSxDQUFDO1FBRFksa0JBQWEsR0FBYixhQUFhLENBQU07UUFIakMsaUJBQVksR0FBZ0IsSUFBSSxDQUFDO1FBQ2pDLG9CQUFlLEdBQTZDLElBQUksQ0FBQztJQUl6RSxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLEVBQUU7WUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1NBQzNFO1FBRUQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLElBQUksRUFBRTtZQUMvRCxNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7U0FDM0U7UUFFRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVELFVBQVU7UUFDUixNQUFNLGFBQWEsR0FBRyxDQUFDLElBQVUsRUFBb0IsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSTtRQUMxRSxtQ0FBbUM7UUFDbkMscUJBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFdBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2QywrQkFBK0I7UUFDL0IsZUFBRyxDQUFDLFFBQVEs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QyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRTVGLE9BQU8sUUFBUSxJQUFJLFNBQVMsQ0FBQztJQUMvQixDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVksRUFBRSxFQUFVO1FBQy9CLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsZ0JBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLG9DQUFvQztRQUNwQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RCxNQUFNLGFBQWEsR0FBRyxxQkFBcUIsZUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxRixNQUFNLGFBQWEsR0FBRyxXQUFJLENBQUMsY0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUV2RSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUNwQyxxQkFBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQzlFLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFoSUQsMENBZ0lDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1xuICBQYXRoLFxuICBiYXNlbmFtZSxcbiAgZGlybmFtZSxcbiAgam9pbixcbiAgbm9ybWFsaXplLFxuICByZWxhdGl2ZSxcbiAgdmlydHVhbEZzLFxufSBmcm9tICdAYW5ndWxhci1kZXZraXQvY29yZSc7XG5pbXBvcnQgeyBOb2RlSnNTeW5jSG9zdCB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlL25vZGUnO1xuaW1wb3J0IHsgU3RhdHMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSwgZnJvbSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbmNhdE1hcCwgZGVsYXksIGZpbmFsaXplLCBtYXAsIG1lcmdlTWFwLCByZXRyeSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5cbmV4cG9ydCBjbGFzcyBUZXN0UHJvamVjdEhvc3QgZXh0ZW5kcyBOb2RlSnNTeW5jSG9zdCB7XG4gIHByaXZhdGUgX2N1cnJlbnRSb290OiBQYXRoIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3Njb3BlZFN5bmNIb3N0OiB2aXJ0dWFsRnMuU3luY0RlbGVnYXRlSG9zdDxTdGF0cz4gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX3RlbXBsYXRlUm9vdDogUGF0aCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICByb290KCk6IFBhdGgge1xuICAgIGlmICh0aGlzLl9jdXJyZW50Um9vdCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUZXN0UHJvamVjdEhvc3QgbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgdXNlZC4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFJvb3Q7XG4gIH1cblxuICBzY29wZWRTeW5jKCk6IHZpcnR1YWxGcy5TeW5jRGVsZWdhdGVIb3N0PFN0YXRzPiB7XG4gICAgaWYgKHRoaXMuX2N1cnJlbnRSb290ID09PSBudWxsIHx8IHRoaXMuX3Njb3BlZFN5bmNIb3N0ID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Rlc3RQcm9qZWN0SG9zdCBtdXN0IGJlIGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyB1c2VkLicpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zY29wZWRTeW5jSG9zdDtcbiAgfVxuXG4gIGluaXRpYWxpemUoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgcmVjdXJzaXZlTGlzdCA9IChwYXRoOiBQYXRoKTogT2JzZXJ2YWJsZTxQYXRoPiA9PiB0aGlzLmxpc3QocGF0aCkucGlwZShcbiAgICAgIC8vIEVtaXQgZWFjaCBmcmFnbWVudCBpbmRpdmlkdWFsbHkuXG4gICAgICBjb25jYXRNYXAoZnJhZ21lbnRzID0+IGZyb20oZnJhZ21lbnRzKSksXG4gICAgICAvLyBKb2luIHRoZSBwYXRoIHdpdGggZnJhZ21lbnQuXG4gICAgICBtYXAoZnJhZ21lbnQgPT4gam9pbihwYXRoLCBmcmFnbWVudCkpLFxuICAgICAgLy8gRW1pdCBkaXJlY3RvcnkgY29udGVudCBwYXRocyBpbnN0ZWFkIG9mIHRoZSBkaXJlY3RvcnkgcGF0aC5cbiAgICAgIG1lcmdlTWFwKHBhdGggPT4gdGhpcy5pc0RpcmVjdG9yeShwYXRoKS5waXBlKFxuICAgICAgICBjb25jYXRNYXAoaXNEaXIgPT4gaXNEaXIgPyByZWN1cnNpdmVMaXN0KHBhdGgpIDogb2YocGF0aCkpLFxuICAgICAgKSksXG4gICAgKTtcblxuICAgIC8vIEZpbmQgYSB1bmlxdWUgZm9sZGVyIHRoYXQgd2UgY2FuIHdyaXRlIHRvIHRvIHVzZSBhcyBjdXJyZW50IHJvb3QuXG4gICAgcmV0dXJuIHRoaXMuZmluZFVuaXF1ZUZvbGRlclBhdGgoKS5waXBlKFxuICAgICAgLy8gU2F2ZSB0aGUgcGF0aCBhbmQgY3JlYXRlIGEgc2NvcGVkIGhvc3QgZm9yIGl0LlxuICAgICAgdGFwKG5ld0ZvbGRlclBhdGggPT4ge1xuICAgICAgICB0aGlzLl9jdXJyZW50Um9vdCA9IG5ld0ZvbGRlclBhdGg7XG4gICAgICAgIHRoaXMuX3Njb3BlZFN5bmNIb3N0ID0gbmV3IHZpcnR1YWxGcy5TeW5jRGVsZWdhdGVIb3N0KFxuICAgICAgICAgIG5ldyB2aXJ0dWFsRnMuU2NvcGVkSG9zdCh0aGlzLCB0aGlzLnJvb3QoKSkpO1xuICAgICAgfSksXG4gICAgICAvLyBMaXN0IGFsbCBmaWxlcyBpbiByb290LlxuICAgICAgY29uY2F0TWFwKCgpID0+IHJlY3Vyc2l2ZUxpc3QodGhpcy5fdGVtcGxhdGVSb290KSksXG4gICAgICAvLyBDb3B5IHRoZW0gb3ZlciB0byB0aGUgY3VycmVudCByb290LlxuICAgICAgY29uY2F0TWFwKGZyb20gPT4ge1xuICAgICAgICBjb25zdCB0byA9IGpvaW4odGhpcy5yb290KCksIHJlbGF0aXZlKHRoaXMuX3RlbXBsYXRlUm9vdCwgZnJvbSkpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnJlYWQoZnJvbSkucGlwZShcbiAgICAgICAgICBjb25jYXRNYXAoYnVmZmVyID0+IHRoaXMud3JpdGUodG8sIGJ1ZmZlcikpLFxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgICBtYXAoKCkgPT4geyB9KSxcbiAgICApO1xuICB9XG5cbiAgcmVzdG9yZSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fY3VycmVudFJvb3QgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBFTVBUWTtcbiAgICB9XG5cbiAgICAvLyBEZWxldGUgdGhlIGN1cnJlbnQgcm9vdCBhbmQgY2xlYXIgdGhlIHZhcmlhYmxlcy5cbiAgICAvLyBXYWl0IDUwbXMgYW5kIHJldHJ5IHVwIHRvIDEwIHRpbWVzLCB0byBnaXZlIHRpbWUgZm9yIGZpbGUgbG9ja3MgdG8gY2xlYXIuXG4gICAgcmV0dXJuIHRoaXMuZXhpc3RzKHRoaXMucm9vdCgpKS5waXBlKFxuICAgICAgZGVsYXkoNTApLFxuICAgICAgY29uY2F0TWFwKGV4aXN0cyA9PiBleGlzdHMgPyB0aGlzLmRlbGV0ZSh0aGlzLnJvb3QoKSkgOiBFTVBUWSksXG4gICAgICByZXRyeSgxMCksXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRSb290ID0gbnVsbDtcbiAgICAgICAgdGhpcy5fc2NvcGVkU3luY0hvc3QgPSBudWxsO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHdyaXRlTXVsdGlwbGVGaWxlcyhmaWxlczogeyBbcGF0aDogc3RyaW5nXTogc3RyaW5nIHwgQXJyYXlCdWZmZXJMaWtlIHwgQnVmZmVyIH0pOiB2b2lkIHtcbiAgICBPYmplY3Qua2V5cyhmaWxlcykuZm9yRWFjaChmaWxlTmFtZSA9PiB7XG4gICAgICBsZXQgY29udGVudCA9IGZpbGVzW2ZpbGVOYW1lXTtcbiAgICAgIGlmICh0eXBlb2YgY29udGVudCA9PSAnc3RyaW5nJykge1xuICAgICAgICBjb250ZW50ID0gdmlydHVhbEZzLnN0cmluZ1RvRmlsZUJ1ZmZlcihjb250ZW50KTtcbiAgICAgIH0gZWxzZSBpZiAoY29udGVudCBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgICBjb250ZW50ID0gY29udGVudC5idWZmZXIuc2xpY2UoXG4gICAgICAgICAgY29udGVudC5ieXRlT2Zmc2V0LFxuICAgICAgICAgIGNvbnRlbnQuYnl0ZU9mZnNldCArIGNvbnRlbnQuYnl0ZUxlbmd0aCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zY29wZWRTeW5jKCkud3JpdGUoXG4gICAgICAgIG5vcm1hbGl6ZShmaWxlTmFtZSksXG4gICAgICAgIGNvbnRlbnQsXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcmVwbGFjZUluRmlsZShwYXRoOiBzdHJpbmcsIG1hdGNoOiBSZWdFeHAgfCBzdHJpbmcsIHJlcGxhY2VtZW50OiBzdHJpbmcpIHtcbiAgICBjb25zdCBjb250ZW50ID0gdmlydHVhbEZzLmZpbGVCdWZmZXJUb1N0cmluZyh0aGlzLnNjb3BlZFN5bmMoKS5yZWFkKG5vcm1hbGl6ZShwYXRoKSkpO1xuICAgIHRoaXMuc2NvcGVkU3luYygpLndyaXRlKG5vcm1hbGl6ZShwYXRoKSxcbiAgICAgIHZpcnR1YWxGcy5zdHJpbmdUb0ZpbGVCdWZmZXIoY29udGVudC5yZXBsYWNlKG1hdGNoLCByZXBsYWNlbWVudCkpKTtcbiAgfVxuXG4gIGFwcGVuZFRvRmlsZShwYXRoOiBzdHJpbmcsIHN0cjogc3RyaW5nKSB7XG4gICAgY29uc3QgY29udGVudCA9IHZpcnR1YWxGcy5maWxlQnVmZmVyVG9TdHJpbmcodGhpcy5zY29wZWRTeW5jKCkucmVhZChub3JtYWxpemUocGF0aCkpKTtcbiAgICB0aGlzLnNjb3BlZFN5bmMoKS53cml0ZShub3JtYWxpemUocGF0aCksXG4gICAgICB2aXJ0dWFsRnMuc3RyaW5nVG9GaWxlQnVmZmVyKGNvbnRlbnQuY29uY2F0KHN0cikpKTtcbiAgfVxuXG4gIGZpbGVNYXRjaEV4aXN0cyhkaXI6IHN0cmluZywgcmVnZXg6IFJlZ0V4cCkge1xuICAgIGNvbnN0IFtmaWxlTmFtZV0gPSB0aGlzLnNjb3BlZFN5bmMoKS5saXN0KG5vcm1hbGl6ZShkaXIpKS5maWx0ZXIobmFtZSA9PiBuYW1lLm1hdGNoKHJlZ2V4KSk7XG5cbiAgICByZXR1cm4gZmlsZU5hbWUgfHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgY29weUZpbGUoZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKSB7XG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuc2NvcGVkU3luYygpLnJlYWQobm9ybWFsaXplKGZyb20pKTtcbiAgICB0aGlzLnNjb3BlZFN5bmMoKS53cml0ZShub3JtYWxpemUodG8pLCBjb250ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZFVuaXF1ZUZvbGRlclBhdGgoKTogT2JzZXJ2YWJsZTxQYXRoPiB7XG4gICAgLy8gMTEgY2hhcmFjdGVyIGFscGhhbnVtZXJpYyBzdHJpbmcuXG4gICAgY29uc3QgcmFuZG9tU3RyaW5nID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMik7XG4gICAgY29uc3QgbmV3Rm9sZGVyTmFtZSA9IGB0ZXN0LXByb2plY3QtaG9zdC0ke2Jhc2VuYW1lKHRoaXMuX3RlbXBsYXRlUm9vdCl9LSR7cmFuZG9tU3RyaW5nfWA7XG4gICAgY29uc3QgbmV3Rm9sZGVyUGF0aCA9IGpvaW4oZGlybmFtZSh0aGlzLl90ZW1wbGF0ZVJvb3QpLCBuZXdGb2xkZXJOYW1lKTtcblxuICAgIHJldHVybiB0aGlzLmV4aXN0cyhuZXdGb2xkZXJQYXRoKS5waXBlKFxuICAgICAgY29uY2F0TWFwKGV4aXN0cyA9PiBleGlzdHMgPyB0aGlzLmZpbmRVbmlxdWVGb2xkZXJQYXRoKCkgOiBvZihuZXdGb2xkZXJQYXRoKSksXG4gICAgKTtcbiAgfVxufVxuIl19
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc