From c0d0e5154a05ede26db29a9e35b5f993d9d18783 Mon Sep 17 00:00:00 2001 From: Phil Kunz Date: Tue, 7 Jun 2016 22:27:10 +0200 Subject: [PATCH] fix tagging logic --- dist/npmci.build.docker.d.ts | 4 ++-- dist/npmci.build.docker.js | 19 +++++++++++++------ ts/npmci.build.docker.ts | 16 ++++++++++++---- 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/dist/npmci.build.docker.d.ts b/dist/npmci.build.docker.d.ts index 1503d1e..e6903c7 100644 --- a/dist/npmci.build.docker.d.ts +++ b/dist/npmci.build.docker.d.ts @@ -3,7 +3,7 @@ export declare let readDockerfiles: () => any; export declare let sortDockerfiles: (sortableArrayArg: Dockerfile[]) => any; export declare let mapDockerfiles: (sortedArray: Dockerfile[]) => any; export declare let buildDockerfiles: (sortedArrayArg: Dockerfile[]) => any; -export declare let pushDockerfiles: (sortedArrayArg: Dockerfile[], regsitryArg?: string) => any; +export declare let pushDockerfiles: (sortedArrayArg: Dockerfile[]) => any; export declare let pullDockerfileImages: (sortableArrayArg: Dockerfile[], registryArg?: string) => any; export declare let testDockerfiles: (sortedArrayArg: Dockerfile[]) => any; export declare let releaseDockerfiles: (sortedArrayArg: Dockerfile[], registryArg?: any) => any; @@ -26,7 +26,7 @@ export declare class Dockerfile { read?: boolean; }); build(): any; - push(registryArg: string): any; + push(stageArg: any): any; pull(registryArg: string): void; test(): void; getId(): string; diff --git a/dist/npmci.build.docker.js b/dist/npmci.build.docker.js index 5cd1536..460eb77 100644 --- a/dist/npmci.build.docker.js +++ b/dist/npmci.build.docker.js @@ -83,11 +83,10 @@ exports.buildDockerfiles = function (sortedArrayArg) { done.resolve(sortedArrayArg); return done.promise; }; -exports.pushDockerfiles = function (sortedArrayArg, regsitryArg) { - if (regsitryArg === void 0) { regsitryArg = "registry.gitlab.com"; } +exports.pushDockerfiles = function (sortedArrayArg) { var done = plugins.q.defer(); sortedArrayArg.forEach(function (dockerfileArg) { - dockerfileArg.push(regsitryArg); + dockerfileArg.push(NpmciEnv.buildStage); }); done.resolve(sortedArrayArg); return done.promise; @@ -145,10 +144,18 @@ var Dockerfile = (function () { return done.promise; }; ; - Dockerfile.prototype.push = function (registryArg) { + Dockerfile.prototype.push = function (stageArg) { var done = plugins.q.defer(); var pushTag; - NpmciEnv.buildStage == "test" ? pushTag = this.testTag : pushTag = this.releaseTag; + switch (stageArg) { + case "release": + pushTag = this.releaseTag; + break; + case "test": + default: + pushTag = this.testTag; + break; + } npmci_bash_1.bashBare("docker tag " + this.buildTag + " " + pushTag); npmci_bash_1.bashBare("docker push " + pushTag); done.resolve(); @@ -223,4 +230,4 @@ exports.cleanTagsArrayFunction = function (dockerfileArrayArg, trackingArrayArg) return cleanTagsArray; }; -//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLmJ1aWxkLmRvY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsSUFBWSxPQUFPLFdBQU0saUJBQWlCLENBQUMsQ0FBQTtBQUMzQyxJQUFZLEtBQUssV0FBTSxlQUFlLENBQUMsQ0FBQTtBQUN2QyxJQUFZLFFBQVEsV0FBTSxhQUFhLENBQUMsQ0FBQTtBQUN4QywyQkFBdUIsY0FBYyxDQUFDLENBQUE7QUFFM0IsYUFBSyxHQUFHO0lBQ2YsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3Qix1QkFBZSxFQUFFO1NBQ1osSUFBSSxDQUFDLHVCQUFlLENBQUM7U0FDckIsSUFBSSxDQUFDLHNCQUFjLENBQUM7U0FDcEIsSUFBSSxDQUFDLHdCQUFnQixDQUFDO1NBQ3RCLElBQUksQ0FBQyx1QkFBZSxDQUFDO1NBQ3JCLElBQUksQ0FBQztRQUNGLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDLENBQUMsQ0FBQztJQUNQLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUMsQ0FBQTtBQUVVLHVCQUFlLEdBQUc7SUFDekIsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixJQUFJLG9CQUFvQixHQUFnQixFQUFFLENBQUE7SUFDMUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDO1NBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFTLElBQUksRUFBQyxHQUFHLEVBQUMsRUFBRTtRQUMzQyxJQUFJLFlBQVksR0FBRyxJQUFJLFVBQVUsQ0FBQztZQUM5QixRQUFRLEVBQUMsSUFBSSxDQUFDLElBQUk7WUFDbEIsSUFBSSxFQUFDLElBQUk7U0FDWixDQUFDLENBQUM7UUFDSCxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEMsRUFBRSxDQUFDLElBQUksRUFBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixDQUFDLEVBQUM7UUFDRSxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdkMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNULE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUMsQ0FBQTtBQUVVLHVCQUFlLEdBQUcsVUFBUyxnQkFBNkI7SUFDL0QsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixJQUFJLFdBQVcsR0FBZ0IsRUFBRSxDQUFDO0lBQ2xDLElBQUksaUJBQWlCLEdBQUcsOEJBQXNCLENBQUMsZ0JBQWdCLEVBQUMsV0FBVyxDQUFDLENBQUM7SUFDN0UsSUFBSSxxQkFBcUIsR0FBVSxDQUFDLENBQUM7SUFDckMsSUFBSSxjQUFjLEdBQUc7UUFDakIsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFVBQUMsYUFBYTtZQUNuQyxJQUFJLFNBQVMsR0FBRyw4QkFBc0IsQ0FBQyxnQkFBZ0IsRUFBQyxXQUFXLENBQUMsQ0FBQztZQUNyRSxFQUFFLENBQUEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQztnQkFDN0YsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBQUEsQ0FBQztZQUNGLEVBQUUsQ0FBQSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDO2dCQUN6RCxhQUFhLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO1lBQ2pELENBQUM7WUFBQSxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUEsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUM7WUFDOUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEMscUJBQXFCLEVBQUUsQ0FBQztZQUN4QixjQUFjLEVBQUUsQ0FBQztRQUNyQixDQUFDO1FBQUEsQ0FBQztJQUNOLENBQUMsQ0FBQTtJQUNELGNBQWMsRUFBRSxDQUFDO0lBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUMsQ0FBQztBQUVTLHNCQUFjLEdBQUcsVUFBUyxXQUF3QjtJQUN6RCxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBQyxhQUFhO1FBQzlCLEVBQUUsQ0FBQSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBLENBQUM7WUFDdEMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFDLFNBQW9CO2dCQUNyQyxFQUFFLENBQUEsQ0FBQyxTQUFTLENBQUMsUUFBUSxJQUFJLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQSxDQUFDO29CQUM5QyxhQUFhLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDO2dCQUNsRCxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUE7UUFDTixDQUFDO1FBQUEsQ0FBQztJQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMxQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUN4QixDQUFDLENBQUE7QUFFVSx3QkFBZ0IsR0FBRyxVQUFDLGNBQTJCO0lBQ3RELElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFTLGFBQWE7UUFDekMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzFCLENBQUMsQ0FBQyxDQUFBO0lBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM3QixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUN4QixDQUFDLENBQUE7QUFFVSx1QkFBZSxHQUFHLFVBQVMsY0FBMkIsRUFBQyxXQUFtQztJQUFuQywyQkFBbUMsR0FBbkMsbUNBQW1DO0lBQ2pHLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFTLGFBQWE7UUFDekMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNILElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDeEIsQ0FBQyxDQUFBO0FBRVUsNEJBQW9CLEdBQUcsVUFBQyxnQkFBNkIsRUFBQyxXQUFtQztJQUFuQywyQkFBbUMsR0FBbkMsbUNBQW1DO0lBQ2hHLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFVBQUMsYUFBYTtRQUNuQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQy9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUMsQ0FBQTtBQUVVLHVCQUFlLEdBQUcsVUFBQyxjQUEyQjtJQUNyRCxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLGNBQWMsQ0FBQyxPQUFPLENBQUMsVUFBUyxhQUFhO1FBQ3pDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDLENBQUMsQ0FBQztJQUNILElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDeEIsQ0FBQyxDQUFDO0FBRVMsMEJBQWtCLEdBQUcsVUFBQyxjQUEyQixFQUFFLFdBQXFDO0lBQXJDLDJCQUFxQyxHQUFyQyxjQUFjLFFBQVEsQ0FBQyxjQUFjO0lBQzlGLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDOUIsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFTLGFBQWE7UUFDekMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNILElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDeEIsQ0FBQyxDQUFBO0FBRUQ7SUFhSSxvQkFBWSxPQUFvRTtRQUM1RSxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDMUQsSUFBSSxDQUFDLE9BQU8sR0FBRyx5QkFBaUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLGlCQUFTLENBQUMscUJBQXFCLEVBQUMsSUFBSSxDQUFDLElBQUksRUFBQyxJQUFJLENBQUMsT0FBTyxFQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlFLElBQUksQ0FBQyxVQUFVLEdBQUcsaUJBQVMsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFDLElBQUksQ0FBQyxJQUFJLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDbEQsRUFBRSxDQUFBLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQztZQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNoRyxDQUFDO1FBQUEsQ0FBQztRQUNGLElBQUksQ0FBQyxTQUFTLEdBQUcsdUJBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQztJQUN6QyxDQUFDOztJQUNELDBCQUFLLEdBQUw7UUFDSSxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdCLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLDhCQUE4QixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2RSxxQkFBUSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDN0UsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDZixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDOztJQUNELHlCQUFJLEdBQUosVUFBSyxXQUFrQjtRQUNuQixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdCLElBQUksT0FBTyxDQUFDO1FBQ1osUUFBUSxDQUFDLFVBQVUsSUFBSSxNQUFNLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbkYscUJBQVEsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDeEQscUJBQVEsQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUNELHlCQUFJLEdBQUosVUFBSyxXQUFrQjtRQUNuQixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzNCLHFCQUFRLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLHFCQUFRLENBQUMsYUFBYSxHQUFHLE9BQU8sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVELENBQUM7O0lBQ0QseUJBQUksR0FBSjtRQUNJLElBQUksUUFBUSxHQUFVLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDM0YsSUFBSSxjQUFjLEdBQVcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9FLEVBQUUsQ0FBQSxDQUFDLGNBQWMsQ0FBQyxDQUFBLENBQUM7WUFDZixxQkFBUSxDQUFDLHlDQUF5QyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsb0JBQW9CLENBQUMsQ0FBQztZQUMzRixxQkFBUSxDQUFDLFlBQVksR0FBRyxRQUFRLEdBQUcsMkNBQTJDLENBQUMsQ0FBQztZQUNoRixxQkFBUSxDQUFDLHFEQUFxRCxDQUFDLENBQUM7WUFDaEUscUJBQVEsQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1lBQy9ELHFCQUFRLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztZQUMzQyxxQkFBUSxDQUFDLHFDQUFxQyxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ0osT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ3RHLENBQUM7SUFDTCxDQUFDOztJQUNELDBCQUFLLEdBQUw7UUFDSSxJQUFJLFdBQVcsR0FBRyxxQkFBUSxDQUFDLG1EQUFtRCxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRyxNQUFNLENBQUMsV0FBVyxDQUFDO0lBQ3ZCLENBQUM7O0lBQ0wsaUJBQUM7QUFBRCxDQXBFQSxBQW9FQyxJQUFBO0FBcEVZLGtCQUFVLGFBb0V0QixDQUFBO0FBRVUseUJBQWlCLEdBQUcsVUFBUyxpQkFBd0I7SUFDNUQsSUFBSSxhQUFvQixDQUFDO0lBQ3pCLElBQUksWUFBWSxHQUFHLDhCQUE4QixDQUFDO0lBQ2xELElBQUksZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzVELEVBQUUsQ0FBQSxDQUFDLGdCQUFnQixJQUFJLGdCQUFnQixDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQSxDQUFDO1FBQ2pELGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDSixhQUFhLEdBQUcsUUFBUSxDQUFDO0lBQzdCLENBQUM7SUFDRCxNQUFNLENBQUMsYUFBYSxDQUFDO0FBQ3pCLENBQUMsQ0FBQTtBQUVVLHVCQUFlLEdBQUcsVUFBUyxvQkFBMkI7SUFDN0QsSUFBSSxjQUFjLEdBQUcsK0JBQStCLENBQUE7SUFDcEQsSUFBSSxnQkFBZ0IsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUE7SUFDaEUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLENBQUMsQ0FBQTtBQUVVLGlCQUFTLEdBQUcsVUFBUyxXQUFrQixFQUFDLE9BQWMsRUFBQyxVQUFpQixFQUFDLFNBQWlCO0lBQ2pHLElBQUksU0FBZ0IsQ0FBQztJQUNyQixJQUFJLFFBQVEsR0FBRyxXQUFXLENBQUM7SUFDM0IsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDO0lBQ25CLElBQUksT0FBTyxHQUFHLFVBQVUsQ0FBQztJQUN6QixFQUFFLENBQUEsQ0FBQyxTQUFTLENBQUMsQ0FBQSxDQUFDO1FBQ1YsT0FBTyxHQUFHLFVBQVUsR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFDO0lBQzNDLENBQUM7SUFBQSxDQUFDO0lBQ0YsU0FBUyxHQUFHLFFBQVEsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUM7SUFDbEQsTUFBTSxDQUFDLFNBQVMsQ0FBQztBQUNyQixDQUFDLENBQUM7QUFFUyw4QkFBc0IsR0FBRyxVQUFTLGtCQUErQixFQUFDLGdCQUE2QjtJQUN0RyxJQUFJLGNBQWMsR0FBWSxFQUFFLENBQUM7SUFDakMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLFVBQVMsYUFBYTtRQUM3QyxFQUFFLENBQUEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDO1lBQzlDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQUM7QUFDMUIsQ0FBQyxDQUFBIiwiZmlsZSI6Im5wbWNpLmJ1aWxkLmRvY2tlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBsdWdpbnMgZnJvbSBcIi4vbnBtY2kucGx1Z2luc1wiO1xyXG5pbXBvcnQgKiBhcyBwYXRocyBmcm9tIFwiLi9ucG1jaS5wYXRoc1wiO1xyXG5pbXBvcnQgKiBhcyBOcG1jaUVudiBmcm9tIFwiLi9ucG1jaS5lbnZcIjtcclxuaW1wb3J0IHtiYXNoQmFyZX0gZnJvbSBcIi4vbnBtY2kuYmFzaFwiO1xyXG5cclxuZXhwb3J0IGxldCBidWlsZCA9IGZ1bmN0aW9uKCl7XHJcbiAgICBsZXQgZG9uZSA9IHBsdWdpbnMucS5kZWZlcigpO1xyXG4gICAgcmVhZERvY2tlcmZpbGVzKClcclxuICAgICAgICAudGhlbihzb3J0RG9ja2VyZmlsZXMpXHJcbiAgICAgICAgLnRoZW4obWFwRG9ja2VyZmlsZXMpXHJcbiAgICAgICAgLnRoZW4oYnVpbGREb2NrZXJmaWxlcylcclxuICAgICAgICAudGhlbihwdXNoRG9ja2VyZmlsZXMpXHJcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICBkb25lLnJlc29sdmUoKTtcclxuICAgICAgICB9KTtcclxuICAgIHJldHVybiBkb25lLnByb21pc2U7XHJcbn1cclxuXHJcbmV4cG9ydCBsZXQgcmVhZERvY2tlcmZpbGVzID0gZnVuY3Rpb24oKXtcclxuICAgIGxldCBkb25lID0gcGx1Z2lucy5xLmRlZmVyKCk7XHJcbiAgICBsZXQgcmVhZERvY2tlcmZpbGVzQXJyYXk6RG9ja2VyZmlsZVtdID0gW11cclxuICAgIHBsdWdpbnMuZ3VscC5zcmMoXCIuL0RvY2tlcmZpbGUqXCIpXHJcbiAgICAgICAgLnBpcGUocGx1Z2lucy50aHJvdWdoMi5vYmooZnVuY3Rpb24oZmlsZSxlbmMsY2Ipe1xyXG4gICAgICAgICAgICBsZXQgbXlEb2NrZXJmaWxlID0gbmV3IERvY2tlcmZpbGUoe1xyXG4gICAgICAgICAgICAgICAgZmlsZVBhdGg6ZmlsZS5wYXRoLFxyXG4gICAgICAgICAgICAgICAgcmVhZDp0cnVlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZWFkRG9ja2VyZmlsZXNBcnJheS5wdXNoKG15RG9ja2VyZmlsZSk7XHJcbiAgICAgICAgICAgIGNiKG51bGwsZmlsZSk7XHJcbiAgICAgICAgIH0sZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgIGRvbmUucmVzb2x2ZShyZWFkRG9ja2VyZmlsZXNBcnJheSk7XHJcbiAgICAgICAgIH0pKTtcclxuICAgIHJldHVybiBkb25lLnByb21pc2U7XHJcbn1cclxuXHJcbmV4cG9ydCBsZXQgc29ydERvY2tlcmZpbGVzID0gZnVuY3Rpb24oc29ydGFibGVBcnJheUFyZzpEb2NrZXJmaWxlW10pe1xyXG4gICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcclxuICAgIGxldCBzb3J0ZWRBcnJheTpEb2NrZXJmaWxlW10gPSBbXTtcclxuICAgIGxldCBjbGVhblRhZ3NPcmlnaW5hbCA9IGNsZWFuVGFnc0FycmF5RnVuY3Rpb24oc29ydGFibGVBcnJheUFyZyxzb3J0ZWRBcnJheSk7XHJcbiAgICBsZXQgc29ydGVyRnVuY3Rpb25Db3VudGVyOm51bWJlciA9IDA7XHJcbiAgICBsZXQgc29ydGVyRnVuY3Rpb24gPSBmdW5jdGlvbigpe1xyXG4gICAgICAgIHNvcnRhYmxlQXJyYXlBcmcuZm9yRWFjaCgoZG9ja2VyZmlsZUFyZyk9PntcclxuICAgICAgICAgICAgbGV0IGNsZWFuVGFncyA9IGNsZWFuVGFnc0FycmF5RnVuY3Rpb24oc29ydGFibGVBcnJheUFyZyxzb3J0ZWRBcnJheSk7XHJcbiAgICAgICAgICAgIGlmKGNsZWFuVGFncy5pbmRleE9mKGRvY2tlcmZpbGVBcmcuYmFzZUltYWdlKSA9PSAtMSAmJiBzb3J0ZWRBcnJheS5pbmRleE9mKGRvY2tlcmZpbGVBcmcpID09IC0xKXtcclxuICAgICAgICAgICAgICAgIHNvcnRlZEFycmF5LnB1c2goZG9ja2VyZmlsZUFyZyk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGlmKGNsZWFuVGFnc09yaWdpbmFsLmluZGV4T2YoZG9ja2VyZmlsZUFyZy5iYXNlSW1hZ2UpICE9IC0xKXtcclxuICAgICAgICAgICAgICAgIGRvY2tlcmZpbGVBcmcubG9jYWxCYXNlSW1hZ2VEZXBlbmRlbnQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmKHNvcnRhYmxlQXJyYXlBcmcubGVuZ3RoID09IHNvcnRlZEFycmF5Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgIGRvbmUucmVzb2x2ZShzb3J0ZWRBcnJheSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzb3J0ZXJGdW5jdGlvbkNvdW50ZXIgPCAxMCkge1xyXG4gICAgICAgICAgICBzb3J0ZXJGdW5jdGlvbkNvdW50ZXIrKztcclxuICAgICAgICAgICAgc29ydGVyRnVuY3Rpb24oKTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG4gICAgc29ydGVyRnVuY3Rpb24oKTtcclxuICAgIHJldHVybiBkb25lLnByb21pc2U7XHJcbn07XHJcblxyXG5leHBvcnQgbGV0IG1hcERvY2tlcmZpbGVzID0gZnVuY3Rpb24oc29ydGVkQXJyYXk6RG9ja2VyZmlsZVtdKXtcclxuICAgIGxldCBkb25lID0gcGx1Z2lucy5xLmRlZmVyKCk7XHJcbiAgICBzb3J0ZWRBcnJheS5mb3JFYWNoKChkb2NrZXJmaWxlQXJnKSA9PiB7XHJcbiAgICAgICAgaWYoZG9ja2VyZmlsZUFyZy5sb2NhbEJhc2VJbWFnZURlcGVuZGVudCl7XHJcbiAgICAgICAgICAgIHNvcnRlZEFycmF5LmZvckVhY2goKGRvY2tmaWxlMjpEb2NrZXJmaWxlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZihkb2NrZmlsZTIuY2xlYW5UYWcgPT0gZG9ja2VyZmlsZUFyZy5iYXNlSW1hZ2Upe1xyXG4gICAgICAgICAgICAgICAgICAgIGRvY2tlcmZpbGVBcmcubG9jYWxCYXNlRG9ja2VyZmlsZSA9IGRvY2tmaWxlMjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9O1xyXG4gICAgfSk7XHJcbiAgICBkb25lLnJlc29sdmUoc29ydGVkQXJyYXkpO1xyXG4gICAgcmV0dXJuIGRvbmUucHJvbWlzZTtcclxufVxyXG5cclxuZXhwb3J0IGxldCBidWlsZERvY2tlcmZpbGVzID0gKHNvcnRlZEFycmF5QXJnOkRvY2tlcmZpbGVbXSkgPT4ge1xyXG4gICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcclxuICAgIHNvcnRlZEFycmF5QXJnLmZvckVhY2goZnVuY3Rpb24oZG9ja2VyZmlsZUFyZyl7XHJcbiAgICAgICAgZG9ja2VyZmlsZUFyZy5idWlsZCgpO1xyXG4gICAgfSlcclxuICAgIGRvbmUucmVzb2x2ZShzb3J0ZWRBcnJheUFyZyk7XHJcbiAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xyXG59XHJcblxyXG5leHBvcnQgbGV0IHB1c2hEb2NrZXJmaWxlcyA9IGZ1bmN0aW9uKHNvcnRlZEFycmF5QXJnOkRvY2tlcmZpbGVbXSxyZWdzaXRyeUFyZyA9IFwicmVnaXN0cnkuZ2l0bGFiLmNvbVwiKXtcclxuICAgIGxldCBkb25lID0gcGx1Z2lucy5xLmRlZmVyKCk7XHJcbiAgICBzb3J0ZWRBcnJheUFyZy5mb3JFYWNoKGZ1bmN0aW9uKGRvY2tlcmZpbGVBcmcpe1xyXG4gICAgICAgIGRvY2tlcmZpbGVBcmcucHVzaChyZWdzaXRyeUFyZyk7XHJcbiAgICB9KTtcclxuICAgIGRvbmUucmVzb2x2ZShzb3J0ZWRBcnJheUFyZyk7XHJcbiAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xyXG59XHJcblxyXG5leHBvcnQgbGV0IHB1bGxEb2NrZXJmaWxlSW1hZ2VzID0gKHNvcnRhYmxlQXJyYXlBcmc6RG9ja2VyZmlsZVtdLHJlZ2lzdHJ5QXJnID0gXCJyZWdpc3RyeS5naXRsYWIuY29tXCIpID0+IHtcclxuICAgIGxldCBkb25lID0gcGx1Z2lucy5xLmRlZmVyKCk7XHJcbiAgICBzb3J0YWJsZUFycmF5QXJnLmZvckVhY2goKGRvY2tlcmZpbGVBcmcpID0+IHtcclxuICAgICAgICBkb2NrZXJmaWxlQXJnLnB1bGwocmVnaXN0cnlBcmcpO1xyXG4gICAgfSk7XHJcbiAgICBkb25lLnJlc29sdmUoc29ydGFibGVBcnJheUFyZyk7XHJcbiAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xyXG59XHJcblxyXG5leHBvcnQgbGV0IHRlc3REb2NrZXJmaWxlcyA9IChzb3J0ZWRBcnJheUFyZzpEb2NrZXJmaWxlW10pID0+IHtcclxuICAgIGxldCBkb25lID0gcGx1Z2lucy5xLmRlZmVyKCk7XHJcbiAgICBzb3J0ZWRBcnJheUFyZy5mb3JFYWNoKGZ1bmN0aW9uKGRvY2tlcmZpbGVBcmcpe1xyXG4gICAgICAgIGRvY2tlcmZpbGVBcmcudGVzdCgpO1xyXG4gICAgfSk7XHJcbiAgICBkb25lLnJlc29sdmUoc29ydGVkQXJyYXlBcmcpO1xyXG4gICAgcmV0dXJuIGRvbmUucHJvbWlzZTtcclxufTtcclxuXHJcbmV4cG9ydCBsZXQgcmVsZWFzZURvY2tlcmZpbGVzID0gKHNvcnRlZEFycmF5QXJnOkRvY2tlcmZpbGVbXSwgcmVnaXN0cnlBcmcgPSBOcG1jaUVudi5kb2NrZXJSZWdpc3RyeSkgPT4ge1xyXG4gICAgIGxldCBkb25lID0gcGx1Z2lucy5xLmRlZmVyKCk7XHJcbiAgICBzb3J0ZWRBcnJheUFyZy5mb3JFYWNoKGZ1bmN0aW9uKGRvY2tlcmZpbGVBcmcpe1xyXG4gICAgICAgIGRvY2tlcmZpbGVBcmcucHVzaChyZWdpc3RyeUFyZyk7XHJcbiAgICB9KTtcclxuICAgIGRvbmUucmVzb2x2ZShzb3J0ZWRBcnJheUFyZyk7XHJcbiAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRG9ja2VyZmlsZSB7XHJcbiAgICBmaWxlUGF0aDpzdHJpbmc7XHJcbiAgICByZXBvOnN0cmluZztcclxuICAgIHZlcnNpb246c3RyaW5nO1xyXG4gICAgY2xlYW5UYWc6c3RyaW5nO1xyXG4gICAgYnVpbGRUYWc6c3RyaW5nO1xyXG4gICAgdGVzdFRhZzpzdHJpbmc7XHJcbiAgICByZWxlYXNlVGFnOnN0cmluZztcclxuICAgIGNvbnRhaW5lck5hbWU6c3RyaW5nXHJcbiAgICBjb250ZW50OnN0cmluZztcclxuICAgIGJhc2VJbWFnZTpzdHJpbmc7XHJcbiAgICBsb2NhbEJhc2VJbWFnZURlcGVuZGVudDpib29sZWFuO1xyXG4gICAgbG9jYWxCYXNlRG9ja2VyZmlsZTpEb2NrZXJmaWxlO1xyXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczp7ZmlsZVBhdGg/OnN0cmluZyxmaWxlQ29udGVudHM/OnN0cmluZ3xCdWZmZXIscmVhZD86Ym9vbGVhbn0pe1xyXG4gICAgICAgIHRoaXMuZmlsZVBhdGggPSBvcHRpb25zLmZpbGVQYXRoO1xyXG4gICAgICAgIHRoaXMucmVwbyA9IE5wbWNpRW52LnJlcG8udXNlciArIFwiL1wiICsgTnBtY2lFbnYucmVwby5yZXBvO1xyXG4gICAgICAgIHRoaXMudmVyc2lvbiA9IGRvY2tlckZpbGVWZXJzaW9uKHBsdWdpbnMucGF0aC5wYXJzZShvcHRpb25zLmZpbGVQYXRoKS5iYXNlKTtcclxuICAgICAgICB0aGlzLmNsZWFuVGFnID0gdGhpcy5yZXBvICsgXCI6XCIgKyB0aGlzLnZlcnNpb247XHJcbiAgICAgICAgdGhpcy5idWlsZFRhZyA9IHRoaXMuY2xlYW5UYWc7XHJcbiAgICAgICAgdGhpcy50ZXN0VGFnID0gZG9ja2VyVGFnKFwicmVnaXN0cnkuZ2l0bGFiLmNvbVwiLHRoaXMucmVwbyx0aGlzLnZlcnNpb24sXCJ0ZXN0XCIpO1xyXG4gICAgICAgIHRoaXMucmVsZWFzZVRhZyA9IGRvY2tlclRhZyhOcG1jaUVudi5kb2NrZXJSZWdpc3RyeSx0aGlzLnJlcG8sdGhpcy52ZXJzaW9uKTtcclxuICAgICAgICB0aGlzLmNvbnRhaW5lck5hbWUgPSBcImRvY2tlcmZpbGUtXCIgKyB0aGlzLnZlcnNpb247XHJcbiAgICAgICAgaWYob3B0aW9ucy5maWxlUGF0aCAmJiBvcHRpb25zLnJlYWQpe1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQgPSBwbHVnaW5zLnNtYXJ0ZmlsZS5sb2NhbC50b1N0cmluZ1N5bmMocGx1Z2lucy5wYXRoLnJlc29sdmUob3B0aW9ucy5maWxlUGF0aCkpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5iYXNlSW1hZ2UgPSBkb2NrZXJCYXNlSW1hZ2UodGhpcy5jb250ZW50KTtcclxuICAgICAgICB0aGlzLmxvY2FsQmFzZUltYWdlRGVwZW5kZW50ID0gZmFsc2U7XHJcbiAgICB9O1xyXG4gICAgYnVpbGQoKXtcclxuICAgICAgICBsZXQgZG9uZSA9IHBsdWdpbnMucS5kZWZlcigpO1xyXG4gICAgICAgIHBsdWdpbnMuYmVhdXR5bG9nLmluZm8oXCJub3cgYnVpbGRpbmcgRG9ja2VyZmlsZSBmb3IgXCIgKyB0aGlzLmNsZWFuVGFnKTtcclxuICAgICAgICBiYXNoQmFyZShcImRvY2tlciBidWlsZCAtdCBcIiArIHRoaXMuYnVpbGRUYWcgKyBcIiAtZiBcIiArIHRoaXMuZmlsZVBhdGggKyBcIiAuXCIpO1xyXG4gICAgICAgIE5wbWNpRW52LmRvY2tlckZpbGVzQnVpbHQucHVzaCh0aGlzKTtcclxuICAgICAgICBkb25lLnJlc29sdmUoKTtcclxuICAgICAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xyXG4gICAgfTtcclxuICAgIHB1c2gocmVnaXN0cnlBcmc6c3RyaW5nKXtcclxuICAgICAgICBsZXQgZG9uZSA9IHBsdWdpbnMucS5kZWZlcigpO1xyXG4gICAgICAgIGxldCBwdXNoVGFnO1xyXG4gICAgICAgIE5wbWNpRW52LmJ1aWxkU3RhZ2UgPT0gXCJ0ZXN0XCIgPyBwdXNoVGFnID0gdGhpcy50ZXN0VGFnIDogcHVzaFRhZyA9IHRoaXMucmVsZWFzZVRhZztcclxuICAgICAgICBiYXNoQmFyZShcImRvY2tlciB0YWcgXCIgKyB0aGlzLmJ1aWxkVGFnICsgXCIgXCIgKyBwdXNoVGFnKTtcclxuICAgICAgICBiYXNoQmFyZShcImRvY2tlciBwdXNoIFwiICsgcHVzaFRhZyk7XHJcbiAgICAgICAgZG9uZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgcmV0dXJuIGRvbmUucHJvbWlzZTtcclxuICAgIH1cclxuICAgIHB1bGwocmVnaXN0cnlBcmc6c3RyaW5nKXtcclxuICAgICAgICBsZXQgcHVsbFRhZyA9IHRoaXMudGVzdFRhZztcclxuICAgICAgICBiYXNoQmFyZShcImRvY2tlciBwdWxsIFwiICsgcHVsbFRhZyk7XHJcbiAgICAgICAgYmFzaEJhcmUoXCJkb2NrZXIgdGFnIFwiICsgcHVsbFRhZyArIFwiIFwiICsgdGhpcy5idWlsZFRhZyk7XHJcbiAgICB9O1xyXG4gICAgdGVzdCgpe1xyXG4gICAgICAgIGxldCB0ZXN0RmlsZTpzdHJpbmcgPSBwbHVnaW5zLnBhdGguam9pbihwYXRocy5OcG1jaVRlc3REaXIsXCJ0ZXN0X1wiICsgdGhpcy52ZXJzaW9uICsgXCIuc2hcIik7XHJcbiAgICAgICAgbGV0IHRlc3RGaWxlRXhpc3RzOmJvb2xlYW4gPSBwbHVnaW5zLnNtYXJ0ZmlsZS5jaGVja3MuZmlsZUV4aXN0c1N5bmModGVzdEZpbGUpO1xyXG4gICAgICAgIGlmKHRlc3RGaWxlRXhpc3RzKXtcclxuICAgICAgICAgICAgYmFzaEJhcmUoXCJkb2NrZXIgcnVuIC0tbmFtZSBucG1jaV90ZXN0X2NvbnRhaW5lciBcIiArIHRoaXMuYnVpbGRUYWcgKyBcIiBta2RpciAvbnBtY2lfdGVzdFwiKTtcclxuICAgICAgICAgICAgYmFzaEJhcmUoXCJkb2NrZXIgY3AgXCIgKyB0ZXN0RmlsZSArIFwiIG5wbWNpX3Rlc3RfY29udGFpbmVyOi9ucG1jaV90ZXN0L3Rlc3Quc2hcIik7XHJcbiAgICAgICAgICAgIGJhc2hCYXJlKFwiZG9ja2VyIGNvbW1pdCBucG1jaV90ZXN0X2NvbnRhaW5lciBucG1jaV90ZXN0X2ltYWdlXCIpO1xyXG4gICAgICAgICAgICBiYXNoQmFyZShcImRvY2tlciBydW4gbnBtY2lfdGVzdF9pbWFnZSBzaCAvbnBtY2lfdGVzdC90ZXN0LnNoXCIpO1xyXG4gICAgICAgICAgICBiYXNoQmFyZShcImRvY2tlciBybSBucG1jaV90ZXN0X2NvbnRhaW5lclwiKTtcclxuICAgICAgICAgICAgYmFzaEJhcmUoXCJkb2NrZXIgcm1pIC0tZm9yY2UgbnBtY2lfdGVzdF9pbWFnZVwiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBwbHVnaW5zLmJlYXV0eWxvZy53YXJuKFwic2tpcHBpbmcgdGVzdHMgZm9yIFwiICsgdGhpcy5jbGVhblRhZyArIFwiIGJlY2F1c2Ugbm8gdGVzdGZpbGUgd2FzIGZvdW5kIVwiKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgZ2V0SWQoKXtcclxuICAgICAgICBsZXQgY29udGFpbmVySWQgPSBiYXNoQmFyZShcImRvY2tlciBpbnNwZWN0IC0tdHlwZT1pbWFnZSAtLWZvcm1hdD1cXFwie3suSWR9fVxcXCIgXCIgKyB0aGlzLmJ1aWxkVGFnKTtcclxuICAgICAgICByZXR1cm4gY29udGFpbmVySWQ7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgbGV0IGRvY2tlckZpbGVWZXJzaW9uID0gZnVuY3Rpb24oZG9ja2VyZmlsZU5hbWVBcmc6c3RyaW5nKTpzdHJpbmd7XHJcbiAgICBsZXQgdmVyc2lvblN0cmluZzpzdHJpbmc7XHJcbiAgICBsZXQgdmVyc2lvblJlZ2V4ID0gL0RvY2tlcmZpbGVfKFthLXpBLVowLTlcXC5dKikkLztcclxuICAgIGxldCByZWdleFJlc3VsdEFycmF5ID0gdmVyc2lvblJlZ2V4LmV4ZWMoZG9ja2VyZmlsZU5hbWVBcmcpO1xyXG4gICAgaWYocmVnZXhSZXN1bHRBcnJheSAmJiByZWdleFJlc3VsdEFycmF5Lmxlbmd0aCA9PSAyKXtcclxuICAgICAgICB2ZXJzaW9uU3RyaW5nID0gcmVnZXhSZXN1bHRBcnJheVsxXTsgICAgICAgIFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICB2ZXJzaW9uU3RyaW5nID0gXCJsYXRlc3RcIjtcclxuICAgIH1cclxuICAgIHJldHVybiB2ZXJzaW9uU3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgbGV0IGRvY2tlckJhc2VJbWFnZSA9IGZ1bmN0aW9uKGRvY2tlcmZpbGVDb250ZW50QXJnOnN0cmluZyl7XHJcbiAgICBsZXQgYmFzZUltYWdlUmVnZXggPSAvRlJPTVxccyhbYS16QS16MC05XFwvXFwtXFw6XSopXFxuPy9cclxuICAgIGxldCByZWdleFJlc3VsdEFycmF5ID0gYmFzZUltYWdlUmVnZXguZXhlYyhkb2NrZXJmaWxlQ29udGVudEFyZylcclxuICAgIHJldHVybiByZWdleFJlc3VsdEFycmF5WzFdO1xyXG59XHJcblxyXG5leHBvcnQgbGV0IGRvY2tlclRhZyA9IGZ1bmN0aW9uKHJlZ2lzdHJ5QXJnOnN0cmluZyxyZXBvQXJnOnN0cmluZyx2ZXJzaW9uQXJnOnN0cmluZyxzdWZmaXhBcmc/OnN0cmluZyk6c3RyaW5ne1xyXG4gICAgbGV0IHRhZ1N0cmluZzpzdHJpbmc7XHJcbiAgICBsZXQgcmVnaXN0cnkgPSByZWdpc3RyeUFyZztcclxuICAgIGxldCByZXBvID0gcmVwb0FyZztcclxuICAgIGxldCB2ZXJzaW9uID0gdmVyc2lvbkFyZztcclxuICAgIGlmKHN1ZmZpeEFyZyl7XHJcbiAgICAgICAgdmVyc2lvbiA9IHZlcnNpb25BcmcgKyBcIl9cIiArIHN1ZmZpeEFyZztcclxuICAgIH07XHJcbiAgICB0YWdTdHJpbmcgPSByZWdpc3RyeSArIFwiL1wiICsgcmVwbyArIFwiOlwiICsgdmVyc2lvbjtcclxuICAgIHJldHVybiB0YWdTdHJpbmc7XHJcbn07XHJcblxyXG5leHBvcnQgbGV0IGNsZWFuVGFnc0FycmF5RnVuY3Rpb24gPSBmdW5jdGlvbihkb2NrZXJmaWxlQXJyYXlBcmc6RG9ja2VyZmlsZVtdLHRyYWNraW5nQXJyYXlBcmc6RG9ja2VyZmlsZVtdKTpzdHJpbmdbXXtcclxuICAgIGxldCBjbGVhblRhZ3NBcnJheTpzdHJpbmdbXSA9IFtdO1xyXG4gICAgZG9ja2VyZmlsZUFycmF5QXJnLmZvckVhY2goZnVuY3Rpb24oZG9ja2VyZmlsZUFyZyl7XHJcbiAgICAgICAgaWYodHJhY2tpbmdBcnJheUFyZy5pbmRleE9mKGRvY2tlcmZpbGVBcmcpID09IC0xKXtcclxuICAgICAgICAgICAgY2xlYW5UYWdzQXJyYXkucHVzaChkb2NrZXJmaWxlQXJnLmNsZWFuVGFnKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBjbGVhblRhZ3NBcnJheTtcclxufSJdfQ== +//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxDQUFDLGNBQWMsQ0FBQztBQUMxQixDQUFDLENBQUEiLCJmaWxlIjoibnBtY2kuYnVpbGQuZG9ja2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGx1Z2lucyBmcm9tIFwiLi9ucG1jaS5wbHVnaW5zXCI7XHJcbmltcG9ydCAqIGFzIHBhdGhzIGZyb20gXCIuL25wbWNpLnBhdGhzXCI7XHJcbmltcG9ydCAqIGFzIE5wbWNpRW52IGZyb20gXCIuL25wbWNpLmVudlwiO1xyXG5pbXBvcnQge2Jhc2hCYXJlfSBmcm9tIFwiLi9ucG1jaS5iYXNoXCI7XHJcblxyXG5leHBvcnQgbGV0IGJ1aWxkID0gZnVuY3Rpb24oKXtcclxuICAgIGxldCBkb25lID0gcGx1Z2lucy5xLmRlZmVyKCk7XHJcbiAgICByZWFkRG9ja2VyZmlsZXMoKVxyXG4gICAgICAgIC50aGVuKHNvcnREb2NrZXJmaWxlcylcclxuICAgICAgICAudGhlbihtYXBEb2NrZXJmaWxlcylcclxuICAgICAgICAudGhlbihidWlsZERvY2tlcmZpbGVzKVxyXG4gICAgICAgIC50aGVuKHB1c2hEb2NrZXJmaWxlcylcclxuICAgICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIGRvbmUucmVzb2x2ZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgcmV0dXJuIGRvbmUucHJvbWlzZTtcclxufVxyXG5cclxuZXhwb3J0IGxldCByZWFkRG9ja2VyZmlsZXMgPSBmdW5jdGlvbigpe1xyXG4gICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcclxuICAgIGxldCByZWFkRG9ja2VyZmlsZXNBcnJheTpEb2NrZXJmaWxlW10gPSBbXVxyXG4gICAgcGx1Z2lucy5ndWxwLnNyYyhcIi4vRG9ja2VyZmlsZSpcIilcclxuICAgICAgICAucGlwZShwbHVnaW5zLnRocm91Z2gyLm9iaihmdW5jdGlvbihmaWxlLGVuYyxjYil7XHJcbiAgICAgICAgICAgIGxldCBteURvY2tlcmZpbGUgPSBuZXcgRG9ja2VyZmlsZSh7XHJcbiAgICAgICAgICAgICAgICBmaWxlUGF0aDpmaWxlLnBhdGgsXHJcbiAgICAgICAgICAgICAgICByZWFkOnRydWVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJlYWREb2NrZXJmaWxlc0FycmF5LnB1c2gobXlEb2NrZXJmaWxlKTtcclxuICAgICAgICAgICAgY2IobnVsbCxmaWxlKTtcclxuICAgICAgICAgfSxmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgZG9uZS5yZXNvbHZlKHJlYWREb2NrZXJmaWxlc0FycmF5KTtcclxuICAgICAgICAgfSkpO1xyXG4gICAgcmV0dXJuIGRvbmUucHJvbWlzZTtcclxufVxyXG5cclxuZXhwb3J0IGxldCBzb3J0RG9ja2VyZmlsZXMgPSBmdW5jdGlvbihzb3J0YWJsZUFycmF5QXJnOkRvY2tlcmZpbGVbXSl7XHJcbiAgICBsZXQgZG9uZSA9IHBsdWdpbnMucS5kZWZlcigpO1xyXG4gICAgbGV0IHNvcnRlZEFycmF5OkRvY2tlcmZpbGVbXSA9IFtdO1xyXG4gICAgbGV0IGNsZWFuVGFnc09yaWdpbmFsID0gY2xlYW5UYWdzQXJyYXlGdW5jdGlvbihzb3J0YWJsZUFycmF5QXJnLHNvcnRlZEFycmF5KTtcclxuICAgIGxldCBzb3J0ZXJGdW5jdGlvbkNvdW50ZXI6bnVtYmVyID0gMDtcclxuICAgIGxldCBzb3J0ZXJGdW5jdGlvbiA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgc29ydGFibGVBcnJheUFyZy5mb3JFYWNoKChkb2NrZXJmaWxlQXJnKT0+e1xyXG4gICAgICAgICAgICBsZXQgY2xlYW5UYWdzID0gY2xlYW5UYWdzQXJyYXlGdW5jdGlvbihzb3J0YWJsZUFycmF5QXJnLHNvcnRlZEFycmF5KTtcclxuICAgICAgICAgICAgaWYoY2xlYW5UYWdzLmluZGV4T2YoZG9ja2VyZmlsZUFyZy5iYXNlSW1hZ2UpID09IC0xICYmIHNvcnRlZEFycmF5LmluZGV4T2YoZG9ja2VyZmlsZUFyZykgPT0gLTEpe1xyXG4gICAgICAgICAgICAgICAgc29ydGVkQXJyYXkucHVzaChkb2NrZXJmaWxlQXJnKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgaWYoY2xlYW5UYWdzT3JpZ2luYWwuaW5kZXhPZihkb2NrZXJmaWxlQXJnLmJhc2VJbWFnZSkgIT0gLTEpe1xyXG4gICAgICAgICAgICAgICAgZG9ja2VyZmlsZUFyZy5sb2NhbEJhc2VJbWFnZURlcGVuZGVudCA9IHRydWU7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYoc29ydGFibGVBcnJheUFyZy5sZW5ndGggPT0gc29ydGVkQXJyYXkubGVuZ3RoKXtcclxuICAgICAgICAgICAgZG9uZS5yZXNvbHZlKHNvcnRlZEFycmF5KTtcclxuICAgICAgICB9IGVsc2UgaWYgKHNvcnRlckZ1bmN0aW9uQ291bnRlciA8IDEwKSB7XHJcbiAgICAgICAgICAgIHNvcnRlckZ1bmN0aW9uQ291bnRlcisrO1xyXG4gICAgICAgICAgICBzb3J0ZXJGdW5jdGlvbigpO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICBzb3J0ZXJGdW5jdGlvbigpO1xyXG4gICAgcmV0dXJuIGRvbmUucHJvbWlzZTtcclxufTtcclxuXHJcbmV4cG9ydCBsZXQgbWFwRG9ja2VyZmlsZXMgPSBmdW5jdGlvbihzb3J0ZWRBcnJheTpEb2NrZXJmaWxlW10pe1xyXG4gICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcclxuICAgIHNvcnRlZEFycmF5LmZvckVhY2goKGRvY2tlcmZpbGVBcmcpID0+IHtcclxuICAgICAgICBpZihkb2NrZXJmaWxlQXJnLmxvY2FsQmFzZUltYWdlRGVwZW5kZW50KXtcclxuICAgICAgICAgICAgc29ydGVkQXJyYXkuZm9yRWFjaCgoZG9ja2ZpbGUyOkRvY2tlcmZpbGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmKGRvY2tmaWxlMi5jbGVhblRhZyA9PSBkb2NrZXJmaWxlQXJnLmJhc2VJbWFnZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgZG9ja2VyZmlsZUFyZy5sb2NhbEJhc2VEb2NrZXJmaWxlID0gZG9ja2ZpbGUyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH07XHJcbiAgICB9KTtcclxuICAgIGRvbmUucmVzb2x2ZShzb3J0ZWRBcnJheSk7XHJcbiAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xyXG59XHJcblxyXG5leHBvcnQgbGV0IGJ1aWxkRG9ja2VyZmlsZXMgPSAoc29ydGVkQXJyYXlBcmc6RG9ja2VyZmlsZVtdKSA9PiB7XHJcbiAgICBsZXQgZG9uZSA9IHBsdWdpbnMucS5kZWZlcigpO1xyXG4gICAgc29ydGVkQXJyYXlBcmcuZm9yRWFjaChmdW5jdGlvbihkb2NrZXJmaWxlQXJnKXtcclxuICAgICAgICBkb2NrZXJmaWxlQXJnLmJ1aWxkKCk7XHJcbiAgICB9KVxyXG4gICAgZG9uZS5yZXNvbHZlKHNvcnRlZEFycmF5QXJnKTtcclxuICAgIHJldHVybiBkb25lLnByb21pc2U7XHJcbn1cclxuXHJcbmV4cG9ydCBsZXQgcHVzaERvY2tlcmZpbGVzID0gZnVuY3Rpb24oc29ydGVkQXJyYXlBcmc6RG9ja2VyZmlsZVtdKXtcclxuICAgIGxldCBkb25lID0gcGx1Z2lucy5xLmRlZmVyKCk7XHJcbiAgICBzb3J0ZWRBcnJheUFyZy5mb3JFYWNoKGZ1bmN0aW9uKGRvY2tlcmZpbGVBcmcpe1xyXG4gICAgICAgIGRvY2tlcmZpbGVBcmcucHVzaChOcG1jaUVudi5idWlsZFN0YWdlKTtcclxuICAgIH0pO1xyXG4gICAgZG9uZS5yZXNvbHZlKHNvcnRlZEFycmF5QXJnKTtcclxuICAgIHJldHVybiBkb25lLnByb21pc2U7XHJcbn1cclxuXHJcbmV4cG9ydCBsZXQgcHVsbERvY2tlcmZpbGVJbWFnZXMgPSAoc29ydGFibGVBcnJheUFyZzpEb2NrZXJmaWxlW10scmVnaXN0cnlBcmcgPSBcInJlZ2lzdHJ5LmdpdGxhYi5jb21cIikgPT4ge1xyXG4gICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcclxuICAgIHNvcnRhYmxlQXJyYXlBcmcuZm9yRWFjaCgoZG9ja2VyZmlsZUFyZykgPT4ge1xyXG4gICAgICAgIGRvY2tlcmZpbGVBcmcucHVsbChyZWdpc3RyeUFyZyk7XHJcbiAgICB9KTtcclxuICAgIGRvbmUucmVzb2x2ZShzb3J0YWJsZUFycmF5QXJnKTtcclxuICAgIHJldHVybiBkb25lLnByb21pc2U7XHJcbn1cclxuXHJcbmV4cG9ydCBsZXQgdGVzdERvY2tlcmZpbGVzID0gKHNvcnRlZEFycmF5QXJnOkRvY2tlcmZpbGVbXSkgPT4ge1xyXG4gICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcclxuICAgIHNvcnRlZEFycmF5QXJnLmZvckVhY2goZnVuY3Rpb24oZG9ja2VyZmlsZUFyZyl7XHJcbiAgICAgICAgZG9ja2VyZmlsZUFyZy50ZXN0KCk7XHJcbiAgICB9KTtcclxuICAgIGRvbmUucmVzb2x2ZShzb3J0ZWRBcnJheUFyZyk7XHJcbiAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xyXG59O1xyXG5cclxuZXhwb3J0IGxldCByZWxlYXNlRG9ja2VyZmlsZXMgPSAoc29ydGVkQXJyYXlBcmc6RG9ja2VyZmlsZVtdLCByZWdpc3RyeUFyZyA9IE5wbWNpRW52LmRvY2tlclJlZ2lzdHJ5KSA9PiB7XHJcbiAgICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcclxuICAgIHNvcnRlZEFycmF5QXJnLmZvckVhY2goZnVuY3Rpb24oZG9ja2VyZmlsZUFyZyl7XHJcbiAgICAgICAgZG9ja2VyZmlsZUFyZy5wdXNoKHJlZ2lzdHJ5QXJnKTtcclxuICAgIH0pO1xyXG4gICAgZG9uZS5yZXNvbHZlKHNvcnRlZEFycmF5QXJnKTtcclxuICAgIHJldHVybiBkb25lLnByb21pc2U7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEb2NrZXJmaWxlIHtcclxuICAgIGZpbGVQYXRoOnN0cmluZztcclxuICAgIHJlcG86c3RyaW5nO1xyXG4gICAgdmVyc2lvbjpzdHJpbmc7XHJcbiAgICBjbGVhblRhZzpzdHJpbmc7XHJcbiAgICBidWlsZFRhZzpzdHJpbmc7XHJcbiAgICB0ZXN0VGFnOnN0cmluZztcclxuICAgIHJlbGVhc2VUYWc6c3RyaW5nO1xyXG4gICAgY29udGFpbmVyTmFtZTpzdHJpbmdcclxuICAgIGNvbnRlbnQ6c3RyaW5nO1xyXG4gICAgYmFzZUltYWdlOnN0cmluZztcclxuICAgIGxvY2FsQmFzZUltYWdlRGVwZW5kZW50OmJvb2xlYW47XHJcbiAgICBsb2NhbEJhc2VEb2NrZXJmaWxlOkRvY2tlcmZpbGU7XHJcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOntmaWxlUGF0aD86c3RyaW5nLGZpbGVDb250ZW50cz86c3RyaW5nfEJ1ZmZlcixyZWFkPzpib29sZWFufSl7XHJcbiAgICAgICAgdGhpcy5maWxlUGF0aCA9IG9wdGlvbnMuZmlsZVBhdGg7XHJcbiAgICAgICAgdGhpcy5yZXBvID0gTnBtY2lFbnYucmVwby51c2VyICsgXCIvXCIgKyBOcG1jaUVudi5yZXBvLnJlcG87XHJcbiAgICAgICAgdGhpcy52ZXJzaW9uID0gZG9ja2VyRmlsZVZlcnNpb24ocGx1Z2lucy5wYXRoLnBhcnNlKG9wdGlvbnMuZmlsZVBhdGgpLmJhc2UpO1xyXG4gICAgICAgIHRoaXMuY2xlYW5UYWcgPSB0aGlzLnJlcG8gKyBcIjpcIiArIHRoaXMudmVyc2lvbjtcclxuICAgICAgICB0aGlzLmJ1aWxkVGFnID0gdGhpcy5jbGVhblRhZztcclxuICAgICAgICB0aGlzLnRlc3RUYWcgPSBkb2NrZXJUYWcoXCJyZWdpc3RyeS5naXRsYWIuY29tXCIsdGhpcy5yZXBvLHRoaXMudmVyc2lvbixcInRlc3RcIik7XHJcbiAgICAgICAgdGhpcy5yZWxlYXNlVGFnID0gZG9ja2VyVGFnKE5wbWNpRW52LmRvY2tlclJlZ2lzdHJ5LHRoaXMucmVwbyx0aGlzLnZlcnNpb24pO1xyXG4gICAgICAgIHRoaXMuY29udGFpbmVyTmFtZSA9IFwiZG9ja2VyZmlsZS1cIiArIHRoaXMudmVyc2lvbjtcclxuICAgICAgICBpZihvcHRpb25zLmZpbGVQYXRoICYmIG9wdGlvbnMucmVhZCl7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGVudCA9IHBsdWdpbnMuc21hcnRmaWxlLmxvY2FsLnRvU3RyaW5nU3luYyhwbHVnaW5zLnBhdGgucmVzb2x2ZShvcHRpb25zLmZpbGVQYXRoKSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmJhc2VJbWFnZSA9IGRvY2tlckJhc2VJbWFnZSh0aGlzLmNvbnRlbnQpO1xyXG4gICAgICAgIHRoaXMubG9jYWxCYXNlSW1hZ2VEZXBlbmRlbnQgPSBmYWxzZTtcclxuICAgIH07XHJcbiAgICBidWlsZCgpe1xyXG4gICAgICAgIGxldCBkb25lID0gcGx1Z2lucy5xLmRlZmVyKCk7XHJcbiAgICAgICAgcGx1Z2lucy5iZWF1dHlsb2cuaW5mbyhcIm5vdyBidWlsZGluZyBEb2NrZXJmaWxlIGZvciBcIiArIHRoaXMuY2xlYW5UYWcpO1xyXG4gICAgICAgIGJhc2hCYXJlKFwiZG9ja2VyIGJ1aWxkIC10IFwiICsgdGhpcy5idWlsZFRhZyArIFwiIC1mIFwiICsgdGhpcy5maWxlUGF0aCArIFwiIC5cIik7XHJcbiAgICAgICAgTnBtY2lFbnYuZG9ja2VyRmlsZXNCdWlsdC5wdXNoKHRoaXMpO1xyXG4gICAgICAgIGRvbmUucmVzb2x2ZSgpO1xyXG4gICAgICAgIHJldHVybiBkb25lLnByb21pc2U7XHJcbiAgICB9O1xyXG4gICAgcHVzaChzdGFnZUFyZyl7XHJcbiAgICAgICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcclxuICAgICAgICBsZXQgcHVzaFRhZztcclxuICAgICAgICBzd2l0Y2ggKHN0YWdlQXJnKXtcclxuICAgICAgICAgICAgY2FzZSBcInJlbGVhc2VcIjpcclxuICAgICAgICAgICAgICAgIHB1c2hUYWcgPSB0aGlzLnJlbGVhc2VUYWc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcInRlc3RcIjpcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHB1c2hUYWcgPSB0aGlzLnRlc3RUYWc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgYmFzaEJhcmUoXCJkb2NrZXIgdGFnIFwiICsgdGhpcy5idWlsZFRhZyArIFwiIFwiICsgcHVzaFRhZyk7XHJcbiAgICAgICAgYmFzaEJhcmUoXCJkb2NrZXIgcHVzaCBcIiArIHB1c2hUYWcpO1xyXG4gICAgICAgIGRvbmUucmVzb2x2ZSgpO1xyXG4gICAgICAgIHJldHVybiBkb25lLnByb21pc2U7XHJcbiAgICB9XHJcbiAgICBwdWxsKHJlZ2lzdHJ5QXJnOnN0cmluZyl7XHJcbiAgICAgICAgbGV0IHB1bGxUYWcgPSB0aGlzLnRlc3RUYWc7XHJcbiAgICAgICAgYmFzaEJhcmUoXCJkb2NrZXIgcHVsbCBcIiArIHB1bGxUYWcpO1xyXG4gICAgICAgIGJhc2hCYXJlKFwiZG9ja2VyIHRhZyBcIiArIHB1bGxUYWcgKyBcIiBcIiArIHRoaXMuYnVpbGRUYWcpO1xyXG4gICAgfTtcclxuICAgIHRlc3QoKXtcclxuICAgICAgICBsZXQgdGVzdEZpbGU6c3RyaW5nID0gcGx1Z2lucy5wYXRoLmpvaW4ocGF0aHMuTnBtY2lUZXN0RGlyLFwidGVzdF9cIiArIHRoaXMudmVyc2lvbiArIFwiLnNoXCIpO1xyXG4gICAgICAgIGxldCB0ZXN0RmlsZUV4aXN0czpib29sZWFuID0gcGx1Z2lucy5zbWFydGZpbGUuY2hlY2tzLmZpbGVFeGlzdHNTeW5jKHRlc3RGaWxlKTtcclxuICAgICAgICBpZih0ZXN0RmlsZUV4aXN0cyl7XHJcbiAgICAgICAgICAgIGJhc2hCYXJlKFwiZG9ja2VyIHJ1biAtLW5hbWUgbnBtY2lfdGVzdF9jb250YWluZXIgXCIgKyB0aGlzLmJ1aWxkVGFnICsgXCIgbWtkaXIgL25wbWNpX3Rlc3RcIik7XHJcbiAgICAgICAgICAgIGJhc2hCYXJlKFwiZG9ja2VyIGNwIFwiICsgdGVzdEZpbGUgKyBcIiBucG1jaV90ZXN0X2NvbnRhaW5lcjovbnBtY2lfdGVzdC90ZXN0LnNoXCIpO1xyXG4gICAgICAgICAgICBiYXNoQmFyZShcImRvY2tlciBjb21taXQgbnBtY2lfdGVzdF9jb250YWluZXIgbnBtY2lfdGVzdF9pbWFnZVwiKTtcclxuICAgICAgICAgICAgYmFzaEJhcmUoXCJkb2NrZXIgcnVuIG5wbWNpX3Rlc3RfaW1hZ2Ugc2ggL25wbWNpX3Rlc3QvdGVzdC5zaFwiKTtcclxuICAgICAgICAgICAgYmFzaEJhcmUoXCJkb2NrZXIgcm0gbnBtY2lfdGVzdF9jb250YWluZXJcIik7XHJcbiAgICAgICAgICAgIGJhc2hCYXJlKFwiZG9ja2VyIHJtaSAtLWZvcmNlIG5wbWNpX3Rlc3RfaW1hZ2VcIik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcGx1Z2lucy5iZWF1dHlsb2cud2FybihcInNraXBwaW5nIHRlc3RzIGZvciBcIiArIHRoaXMuY2xlYW5UYWcgKyBcIiBiZWNhdXNlIG5vIHRlc3RmaWxlIHdhcyBmb3VuZCFcIik7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGdldElkKCl7XHJcbiAgICAgICAgbGV0IGNvbnRhaW5lcklkID0gYmFzaEJhcmUoXCJkb2NrZXIgaW5zcGVjdCAtLXR5cGU9aW1hZ2UgLS1mb3JtYXQ9XFxcInt7LklkfX1cXFwiIFwiICsgdGhpcy5idWlsZFRhZyk7XHJcbiAgICAgICAgcmV0dXJuIGNvbnRhaW5lcklkO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGxldCBkb2NrZXJGaWxlVmVyc2lvbiA9IGZ1bmN0aW9uKGRvY2tlcmZpbGVOYW1lQXJnOnN0cmluZyk6c3RyaW5ne1xyXG4gICAgbGV0IHZlcnNpb25TdHJpbmc6c3RyaW5nO1xyXG4gICAgbGV0IHZlcnNpb25SZWdleCA9IC9Eb2NrZXJmaWxlXyhbYS16QS1aMC05XFwuXSopJC87XHJcbiAgICBsZXQgcmVnZXhSZXN1bHRBcnJheSA9IHZlcnNpb25SZWdleC5leGVjKGRvY2tlcmZpbGVOYW1lQXJnKTtcclxuICAgIGlmKHJlZ2V4UmVzdWx0QXJyYXkgJiYgcmVnZXhSZXN1bHRBcnJheS5sZW5ndGggPT0gMil7XHJcbiAgICAgICAgdmVyc2lvblN0cmluZyA9IHJlZ2V4UmVzdWx0QXJyYXlbMV07ICAgICAgICBcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmVyc2lvblN0cmluZyA9IFwibGF0ZXN0XCI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmVyc2lvblN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGxldCBkb2NrZXJCYXNlSW1hZ2UgPSBmdW5jdGlvbihkb2NrZXJmaWxlQ29udGVudEFyZzpzdHJpbmcpe1xyXG4gICAgbGV0IGJhc2VJbWFnZVJlZ2V4ID0gL0ZST01cXHMoW2EtekEtejAtOVxcL1xcLVxcOl0qKVxcbj8vXHJcbiAgICBsZXQgcmVnZXhSZXN1bHRBcnJheSA9IGJhc2VJbWFnZVJlZ2V4LmV4ZWMoZG9ja2VyZmlsZUNvbnRlbnRBcmcpXHJcbiAgICByZXR1cm4gcmVnZXhSZXN1bHRBcnJheVsxXTtcclxufVxyXG5cclxuZXhwb3J0IGxldCBkb2NrZXJUYWcgPSBmdW5jdGlvbihyZWdpc3RyeUFyZzpzdHJpbmcscmVwb0FyZzpzdHJpbmcsdmVyc2lvbkFyZzpzdHJpbmcsc3VmZml4QXJnPzpzdHJpbmcpOnN0cmluZ3tcclxuICAgIGxldCB0YWdTdHJpbmc6c3RyaW5nO1xyXG4gICAgbGV0IHJlZ2lzdHJ5ID0gcmVnaXN0cnlBcmc7XHJcbiAgICBsZXQgcmVwbyA9IHJlcG9Bcmc7XHJcbiAgICBsZXQgdmVyc2lvbiA9IHZlcnNpb25Bcmc7XHJcbiAgICBpZihzdWZmaXhBcmcpe1xyXG4gICAgICAgIHZlcnNpb24gPSB2ZXJzaW9uQXJnICsgXCJfXCIgKyBzdWZmaXhBcmc7XHJcbiAgICB9O1xyXG4gICAgdGFnU3RyaW5nID0gcmVnaXN0cnkgKyBcIi9cIiArIHJlcG8gKyBcIjpcIiArIHZlcnNpb247XHJcbiAgICByZXR1cm4gdGFnU3RyaW5nO1xyXG59O1xyXG5cclxuZXhwb3J0IGxldCBjbGVhblRhZ3NBcnJheUZ1bmN0aW9uID0gZnVuY3Rpb24oZG9ja2VyZmlsZUFycmF5QXJnOkRvY2tlcmZpbGVbXSx0cmFja2luZ0FycmF5QXJnOkRvY2tlcmZpbGVbXSk6c3RyaW5nW117XHJcbiAgICBsZXQgY2xlYW5UYWdzQXJyYXk6c3RyaW5nW10gPSBbXTtcclxuICAgIGRvY2tlcmZpbGVBcnJheUFyZy5mb3JFYWNoKGZ1bmN0aW9uKGRvY2tlcmZpbGVBcmcpe1xyXG4gICAgICAgIGlmKHRyYWNraW5nQXJyYXlBcmcuaW5kZXhPZihkb2NrZXJmaWxlQXJnKSA9PSAtMSl7XHJcbiAgICAgICAgICAgIGNsZWFuVGFnc0FycmF5LnB1c2goZG9ja2VyZmlsZUFyZy5jbGVhblRhZyk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY2xlYW5UYWdzQXJyYXk7XHJcbn0iXX0= diff --git a/ts/npmci.build.docker.ts b/ts/npmci.build.docker.ts index 2ee2773..cb002d5 100644 --- a/ts/npmci.build.docker.ts +++ b/ts/npmci.build.docker.ts @@ -83,10 +83,10 @@ export let buildDockerfiles = (sortedArrayArg:Dockerfile[]) => { return done.promise; } -export let pushDockerfiles = function(sortedArrayArg:Dockerfile[],regsitryArg = "registry.gitlab.com"){ +export let pushDockerfiles = function(sortedArrayArg:Dockerfile[]){ let done = plugins.q.defer(); sortedArrayArg.forEach(function(dockerfileArg){ - dockerfileArg.push(regsitryArg); + dockerfileArg.push(NpmciEnv.buildStage); }); done.resolve(sortedArrayArg); return done.promise; @@ -155,10 +155,18 @@ export class Dockerfile { done.resolve(); return done.promise; }; - push(registryArg:string){ + push(stageArg){ let done = plugins.q.defer(); let pushTag; - NpmciEnv.buildStage == "test" ? pushTag = this.testTag : pushTag = this.releaseTag; + switch (stageArg){ + case "release": + pushTag = this.releaseTag; + break; + case "test": + default: + pushTag = this.testTag; + break; + } bashBare("docker tag " + this.buildTag + " " + pushTag); bashBare("docker push " + pushTag); done.resolve();