@datagrok-libraries/utils 0.0.10 → 0.0.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/spe.js DELETED
@@ -1,151 +0,0 @@
1
- import { calculateEuclideanDistance, calcDistanceMatrix, fillRandomMatrix, vectorAdd, randomInt } from './operations';
2
- /**
3
- * Implements stochastic proximity embedding.
4
- *
5
- * @export
6
- * @class SPEBase
7
- * @link doi:10.1016/S1093-3263(03)00155-4
8
- */
9
- export class SPEBase {
10
- /**
11
- * Creates an instance of SPEBase.
12
- * @param {Options} [options] Options to pass to the constructor.
13
- * @memberof SPEBase
14
- */
15
- constructor(options) {
16
- var _a, _b, _c, _d, _e, _f, _g;
17
- this.steps = (_a = options === null || options === void 0 ? void 0 : options.steps) !== null && _a !== void 0 ? _a : 0;
18
- this.cycles = (_b = options === null || options === void 0 ? void 0 : options.cycles) !== null && _b !== void 0 ? _b : 1e6;
19
- // Select a cutoff distance {cutoff} and ...
20
- this.cutoff = (_c = options === null || options === void 0 ? void 0 : options.cutoff) !== null && _c !== void 0 ? _c : 0;
21
- // ... an initial learning rate {lambda} > 0
22
- this.lambda = (_d = options === null || options === void 0 ? void 0 : options.lambda) !== null && _d !== void 0 ? _d : 2.0;
23
- this.dlambda = (_e = options === null || options === void 0 ? void 0 : options.dlambda) !== null && _e !== void 0 ? _e : 0.01;
24
- this.lambda2 = this.lambda / 2.;
25
- this.dlambda2 = this.dlambda / 2.;
26
- this.epsilon = (_f = options === null || options === void 0 ? void 0 : options.epsilon) !== null && _f !== void 0 ? _f : 1e-10;
27
- // eslint-disable-next-line brace-style
28
- this.distanceFunction = (_g = options === null || options === void 0 ? void 0 : options.distance) !== null && _g !== void 0 ? _g : calculateEuclideanDistance;
29
- this.distance = [];
30
- }
31
- /**
32
- * Initializes distance matrix.
33
- *
34
- * @protected
35
- * @param {Vectors} vectors Input vectors to calculate distance between.
36
- * @memberof SPEBase
37
- */
38
- initDistance(vectors) {
39
- this.distance = calcDistanceMatrix(vectors, this.distanceFunction);
40
- }
41
- /**
42
- * Calculates distance between the two vectors given.
43
- *
44
- * @param {Vectors} vectors Set of vectors to calculate distances between.
45
- * @param {number} index1 Index of the first vector of the pair.
46
- * @param {number} index2 Index of the second vector of the pair.
47
- * @return {number} Distance between these two vectors.
48
- */
49
- calcDistance(vectors, index1, index2) {
50
- return this.distance[index1][index2];
51
- }
52
- /**
53
- * Embeds the vectors given into a two-dimensional space.
54
- *
55
- * @param {Vectors} vectors D-dimensional coordinates.
56
- * @return {Coordinates} SPE coordinates in D space.
57
- */
58
- embed(vectors) {
59
- const nItems = vectors.length;
60
- const areaWidth = 40;
61
- // Initialize the D-dimensional coordinates of the N points.
62
- const coordinates = fillRandomMatrix(nItems, SPEBase.dimension, areaWidth);
63
- let lambda2 = this.lambda2;
64
- if (this.steps == 0) {
65
- this.steps = vectors.length - 1;
66
- }
67
- this.initDistance(vectors);
68
- for (let cycle = 0; cycle < this.cycles; ++cycle) {
69
- for (let step = 0; step < this.steps; ++step) {
70
- // Select two points, i and j, at random, ...
71
- const i = randomInt(nItems);
72
- let j = randomInt(nItems);
73
- while (i == j)
74
- j = randomInt(nItems);
75
- const rowi = coordinates[i];
76
- const rowj = coordinates[j];
77
- // ... retrieve (or evaluate) their proximity in the input space, rij and ...
78
- const r = this.calcDistance(vectors, i, j);
79
- // ... compute their Euclidean distance on the D-dimensional map, dij.
80
- const d = calculateEuclideanDistance(rowi, rowj);
81
- // If rij <= rc, or if rij > rc and dij < rij ...
82
- if ((this.cutoff == 0) || (r <= this.cutoff) || (d < r)) {
83
- const multiplier = lambda2 * (r - d) / (d + this.epsilon);
84
- // ... update the coordinates xi and xj.
85
- const diffIJ = vectorAdd(rowi, rowj, -1);
86
- coordinates[i] = vectorAdd(rowi, diffIJ, multiplier);
87
- coordinates[j] = vectorAdd(rowj, diffIJ, -multiplier);
88
- }
89
- }
90
- // Decrease the learning rate {lambda} by a prescribed {dlambda}.
91
- lambda2 -= this.dlambda2;
92
- if (lambda2 <= 0.) {
93
- break;
94
- }
95
- }
96
- return coordinates;
97
- }
98
- }
99
- SPEBase.dimension = 2;
100
- /**
101
- * Implements modified stochastic proximity embedding.
102
- *
103
- * @export
104
- * @class PSPEBase
105
- * @link doi:10.1016/S1093-3263(03)00155-4
106
- */
107
- export class PSPEBase extends SPEBase {
108
- /**
109
- * Embeds the vectors given into a two-dimensional space using a modified update rule.
110
- *
111
- * @param {Vectors} vectors D-dimensional coordinates.
112
- * @return {Coordinates} SPE coordinates in D space.
113
- */
114
- embed(vectors) {
115
- const nItems = vectors.length;
116
- const areaWidth = 40;
117
- // Initialize the D-dimensional coordinates of the N points.
118
- const coordinates = fillRandomMatrix(nItems, PSPEBase.dimension, areaWidth);
119
- let lambda = this.lambda;
120
- this.initDistance(vectors);
121
- for (let cycle = 0; cycle < this.cycles; ++cycle) {
122
- // Select a point, i, at random (pivot).
123
- const i = randomInt(nItems);
124
- const rowi = coordinates[i];
125
- // For every point j != i ...
126
- for (let j = 0; j < nItems; ++j) {
127
- if (i == j)
128
- continue;
129
- const rowj = coordinates[j];
130
- // ... retrieve (or evaluate) its proximity to i in the input space, rij ...
131
- const r = this.calcDistance(vectors, i, j);
132
- // ... and compute their Euclidean distance on the D-dimensional map, dij.
133
- const d = calculateEuclideanDistance(rowi, rowj);
134
- // If rij <= rc, or if rij > rc and dij < rij ...
135
- if ((this.cutoff == 0) || (r <= this.cutoff) || (d < r)) {
136
- const multiplier = lambda * (r - d) / (d + this.epsilon);
137
- const diffIJ = vectorAdd(rowi, rowj, -1);
138
- // ... update the coordinates xj.
139
- coordinates[j] = vectorAdd(rowj, diffIJ, -multiplier);
140
- }
141
- }
142
- // Decrease the learning rate {lambda} by a prescribed {dlambda}.
143
- lambda -= this.dlambda;
144
- if (lambda <= 0.) {
145
- break;
146
- }
147
- }
148
- return coordinates;
149
- }
150
- }
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3BlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQywwQkFBMEIsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRXBIOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxPQUFPO0lBYWxCOzs7O09BSUc7SUFDSCxZQUFZLE9BQWlCOztRQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLEtBQUssbUNBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsTUFBTSxtQ0FBSSxHQUFHLENBQUM7UUFDckMsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsTUFBTSxtQ0FBSSxDQUFDLENBQUM7UUFDbkMsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsTUFBTSxtQ0FBSSxHQUFHLENBQUM7UUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxPQUFPLG1DQUFJLElBQUksQ0FBQztRQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUMsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBQyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxPQUFPLG1DQUFJLEtBQUssQ0FBQztRQUN6Qyx1Q0FBdUM7UUFDdkMsSUFB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QUE0RTtnQkFDNUUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMzQywwRUFBMEU7Z0JBQzFFLE1BQU0sQ0FBQyxHQUFHLDBCQUEwQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDakQsaURBQWlEO2dCQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7b0JBQ3ZELE1BQU0sVUFBVSxHQUFHLE1BQU0sR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ2pELE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3pDLGlDQUFpQztvQkFDakMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQ3ZEO2FBQ0Y7WUFDRCxpRUFBaUU7WUFDakUsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDdkIsSUFBSSxNQUFNLElBQUksRUFBRSxFQUFFO2dCQUNoQixNQUFNO2FBQ1A7U0FDRjtRQUNELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7T3B0aW9ucywgQ29vcmRpbmF0ZXMsIFZlY3RvcnMsIERpc3RhbmNlTWV0cmljfSBmcm9tICcuL3R5cGVfZGVjbGFyYXRpb25zJztcbmltcG9ydCB7Y2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UsIGNhbGNEaXN0YW5jZU1hdHJpeCwgZmlsbFJhbmRvbU1hdHJpeCwgdmVjdG9yQWRkLCByYW5kb21JbnR9IGZyb20gJy4vb3BlcmF0aW9ucyc7XG5cbi8qKlxuICogSW1wbGVtZW50cyBzdG9jaGFzdGljIHByb3hpbWl0eSBlbWJlZGRpbmcuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIFNQRUJhc2VcbiAqIEBsaW5rIGRvaToxMC4xMDE2L1MxMDkzLTMyNjMoMDMpMDAxNTUtNFxuICovXG5leHBvcnQgY2xhc3MgU1BFQmFzZSB7XG4gIHByb3RlY3RlZCBzdGF0aWMgZGltZW5zaW9uID0gMjtcbiAgcHJvdGVjdGVkIHN0ZXBzOiBudW1iZXI7XG4gIHByb3RlY3RlZCBjeWNsZXM6IG51bWJlcjtcbiAgcHJvdGVjdGVkIGN1dG9mZjogbnVtYmVyO1xuICBwcm90ZWN0ZWQgbGFtYmRhOiBudW1iZXI7XG4gIHByb3RlY3RlZCBkbGFtYmRhOiBudW1iZXI7XG4gIHByb3RlY3RlZCBsYW1iZGEyOiBudW1iZXI7XG4gIHByb3RlY3RlZCBkbGFtYmRhMjogbnVtYmVyO1xuICBwcm90ZWN0ZWQgZXBzaWxvbjogbnVtYmVyO1xuICBwcm90ZWN0ZWQgZGlzdGFuY2VGdW5jdGlvbjogRGlzdGFuY2VNZXRyaWM7XG4gIHByb3RlY3RlZCBkaXN0YW5jZTogQ29vcmRpbmF0ZXM7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgU1BFQmFzZS5cbiAgICogQHBhcmFtIHtPcHRpb25zfSBbb3B0aW9uc10gT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICogQG1lbWJlcm9mIFNQRUJhc2VcbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBPcHRpb25zKSB7XG4gICAgdGhpcy5zdGVwcyA9IG9wdGlvbnM/LnN0ZXBzID8/IDA7XG4gICAgdGhpcy5jeWNsZXMgPSBvcHRpb25zPy5jeWNsZXMgPz8gMWU2O1xuICAgIC8vIFNlbGVjdCBhIGN1dG9mZiBkaXN0YW5jZSB7Y3V0b2ZmfSBhbmQgLi4uXG4gICAgdGhpcy5jdXRvZmYgPSBvcHRpb25zPy5jdXRvZmYgPz8gMDtcbiAgICAvLyAuLi4gYW4gaW5pdGlhbCBsZWFybmluZyByYXRlIHtsYW1iZGF9ID4gMFxuICAgIHRoaXMubGFtYmRhID0gb3B0aW9ucz8ubGFtYmRhID8/IDIuMDtcbiAgICB0aGlzLmRsYW1iZGEgPSBvcHRpb25zPy5kbGFtYmRhID8/IDAuMDE7XG4gICAgdGhpcy5sYW1iZGEyID0gdGhpcy5sYW1iZGEvMi47XG4gICAgdGhpcy5kbGFtYmRhMiA9IHRoaXMuZGxhbWJkYS8yLjtcbiAgICB0aGlzLmVwc2lsb24gPSBvcHRpb25zPy5lcHNpbG9uID8/IDFlLTEwO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBicmFjZS1zdHlsZVxuICAgIHRoaXMuZGlzdGFuY2VGdW5jdGlvbiA9IG9wdGlvbnM/LmRpc3RhbmNlID8/IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlO1xuICAgIHRoaXMuZGlzdGFuY2UgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyBkaXN0YW5jZSBtYXRyaXguXG4gICAqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICogQHBhcmFtIHtWZWN0b3JzfSB2ZWN0b3JzIElucHV0IHZlY3RvcnMgdG8gY2FsY3VsYXRlIGRpc3RhbmNlIGJldHdlZW4uXG4gICAqIEBtZW1iZXJvZiBTUEVCYXNlXG4gICAqL1xuICBwcm90ZWN0ZWQgaW5pdERpc3RhbmNlKHZlY3RvcnM6IFZlY3RvcnMpIHtcbiAgICB0aGlzLmRpc3RhbmNlID0gY2FsY0Rpc3RhbmNlTWF0cml4KHZlY3RvcnMsIHRoaXMuZGlzdGFuY2VGdW5jdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyBkaXN0YW5jZSBiZXR3ZWVuIHRoZSB0d28gdmVjdG9ycyBnaXZlbi5cbiAgICogXG4gICAqIEBwYXJhbSB7VmVjdG9yc30gdmVjdG9ycyBTZXQgb2YgdmVjdG9ycyB0byBjYWxjdWxhdGUgZGlzdGFuY2VzIGJldHdlZW4uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleDEgSW5kZXggb2YgdGhlIGZpcnN0IHZlY3RvciBvZiB0aGUgcGFpci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4MiBJbmRleCBvZiB0aGUgc2Vjb25kIHZlY3RvciBvZiB0aGUgcGFpci5cbiAgICogQHJldHVybiB7bnVtYmVyfSBEaXN0YW5jZSBiZXR3ZWVuIHRoZXNlIHR3byB2ZWN0b3JzLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNhbGNEaXN0YW5jZSh2ZWN0b3JzOiBWZWN0b3JzLCBpbmRleDE6IG51bWJlciwgaW5kZXgyOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmRpc3RhbmNlW2luZGV4MV1baW5kZXgyXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWJlZHMgdGhlIHZlY3RvcnMgZ2l2ZW4gaW50byBhIHR3by1kaW1lbnNpb25hbCBzcGFjZS5cbiAgICogXG4gICAqIEBwYXJhbSB7VmVjdG9yc30gdmVjdG9ycyBELWRpbWVuc2lvbmFsIGNvb3JkaW5hdGVzLlxuICAgKiBAcmV0dXJuIHtDb29yZGluYXRlc30gU1BFIGNvb3JkaW5hdGVzIGluIEQgc3BhY2UuXG4gICAqL1xuICBwdWJsaWMgZW1iZWQodmVjdG9yczogVmVjdG9ycyk6IENvb3JkaW5hdGVzIHtcbiAgICBjb25zdCBuSXRlbXMgPSB2ZWN0b3JzLmxlbmd0aDtcbiAgICBjb25zdCBhcmVhV2lkdGggPSA0MDtcbiAgICAvLyBJbml0aWFsaXplIHRoZSBELWRpbWVuc2lvbmFsIGNvb3JkaW5hdGVzIG9mIHRoZSBOIHBvaW50cy5cbiAgICBjb25zdCBjb29yZGluYXRlcyA9IGZpbGxSYW5kb21NYXRyaXgobkl0ZW1zLCBTUEVCYXNlLmRpbWVuc2lvbiwgYXJlYVdpZHRoKTtcblxuICAgIGxldCBsYW1iZGEyID0gdGhpcy5sYW1iZGEyO1xuXG4gICAgaWYgKHRoaXMuc3RlcHMgPT0gMCkge1xuICAgICAgdGhpcy5zdGVwcyA9IHZlY3RvcnMubGVuZ3RoLTE7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0RGlzdGFuY2UodmVjdG9ycyk7XG5cbiAgICBmb3IgKGxldCBjeWNsZSA9IDA7IGN5Y2xlIDwgdGhpcy5jeWNsZXM7ICsrY3ljbGUpIHtcbiAgICAgIGZvciAobGV0IHN0ZXAgPSAwOyBzdGVwIDwgdGhpcy5zdGVwczsgKytzdGVwKSB7XG4gICAgICAgIC8vIFNlbGVjdCB0d28gcG9pbnRzLCBpIGFuZCBqLCBhdCByYW5kb20sIC4uLlxuICAgICAgICBjb25zdCBpID0gcmFuZG9tSW50KG5JdGVtcyk7IGxldCBqID0gcmFuZG9tSW50KG5JdGVtcyk7XG4gICAgICAgIHdoaWxlIChpID09IGopIGogPSByYW5kb21JbnQobkl0ZW1zKTtcblxuICAgICAgICBjb25zdCByb3dpID0gY29vcmRpbmF0ZXNbaV07IGNvbnN0IHJvd2ogPSBjb29yZGluYXRlc1tqXTtcblxuICAgICAgICAvLyAuLi4gcmV0cmlldmUgKG9yIGV2YWx1YXRlKSB0aGVpciBwcm94aW1pdHkgaW4gdGhlIGlucHV0IHNwYWNlLCByaWogYW5kIC4uLlxuICAgICAgICBjb25zdCByID0gdGhpcy5jYWxjRGlzdGFuY2UodmVjdG9ycywgaSwgaik7XG4gICAgICAgIC8vIC4uLiBjb21wdXRlIHRoZWlyIEV1Y2xpZGVhbiBkaXN0YW5jZSBvbiB0aGUgRC1kaW1lbnNpb25hbCBtYXAsIGRpai5cbiAgICAgICAgY29uc3QgZCA9IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlKHJvd2ksIHJvd2opO1xuXG4gICAgICAgIC8vIElmIHJpaiA8PSByYywgb3IgaWYgcmlqID4gcmMgYW5kIGRpaiA8IHJpaiAuLi5cbiAgICAgICAgaWYgKCh0aGlzLmN1dG9mZiA9PSAwKSB8fCAociA8PSB0aGlzLmN1dG9mZikgfHwgKGQgPCByKSkge1xuICAgICAgICAgIGNvbnN0IG11bHRpcGxpZXIgPSBsYW1iZGEyKihyLWQpLyhkK3RoaXMuZXBzaWxvbik7XG4gICAgICAgICAgLy8gLi4uIHVwZGF0ZSB0aGUgY29vcmRpbmF0ZXMgeGkgYW5kIHhqLlxuICAgICAgICAgIGNvbnN0IGRpZmZJSiA9IHZlY3RvckFkZChyb3dpLCByb3dqLCAtMSk7XG4gICAgICAgICAgY29vcmRpbmF0ZXNbaV0gPSB2ZWN0b3JBZGQocm93aSwgZGlmZklKLCBtdWx0aXBsaWVyKTtcbiAgICAgICAgICBjb29yZGluYXRlc1tqXSA9IHZlY3RvckFkZChyb3dqLCBkaWZmSUosIC1tdWx0aXBsaWVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gRGVjcmVhc2UgdGhlIGxlYXJuaW5nIHJhdGUge2xhbWJkYX0gYnkgYSBwcmVzY3JpYmVkIHtkbGFtYmRhfS5cbiAgICAgIGxhbWJkYTIgLT0gdGhpcy5kbGFtYmRhMjtcbiAgICAgIGlmIChsYW1iZGEyIDw9IDAuKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29vcmRpbmF0ZXM7XG4gIH1cbn1cblxuLyoqXG4gKiBJbXBsZW1lbnRzIG1vZGlmaWVkIHN0b2NoYXN0aWMgcHJveGltaXR5IGVtYmVkZGluZy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgUFNQRUJhc2VcbiAqIEBsaW5rIGRvaToxMC4xMDE2L1MxMDkzLTMyNjMoMDMpMDAxNTUtNFxuICovXG4gZXhwb3J0IGNsYXNzIFBTUEVCYXNlIGV4dGVuZHMgU1BFQmFzZSB7XG4gIC8qKlxuICAgKiBFbWJlZHMgdGhlIHZlY3RvcnMgZ2l2ZW4gaW50byBhIHR3by1kaW1lbnNpb25hbCBzcGFjZSB1c2luZyBhIG1vZGlmaWVkIHVwZGF0ZSBydWxlLlxuICAgKiBcbiAgICogQHBhcmFtIHtWZWN0b3JzfSB2ZWN0b3JzIEQtZGltZW5zaW9uYWwgY29vcmRpbmF0ZXMuXG4gICAqIEByZXR1cm4ge0Nvb3JkaW5hdGVzfSBTUEUgY29vcmRpbmF0ZXMgaW4gRCBzcGFjZS5cbiAgICovXG4gIHB1YmxpYyBlbWJlZCh2ZWN0b3JzOiBWZWN0b3JzKTogQ29vcmRpbmF0ZXMge1xuICAgIGNvbnN0IG5JdGVtcyA9IHZlY3RvcnMubGVuZ3RoO1xuICAgIGNvbnN0IGFyZWFXaWR0aCA9IDQwO1xuICAgIC8vICBJbml0aWFsaXplIHRoZSBELWRpbWVuc2lvbmFsIGNvb3JkaW5hdGVzIG9mIHRoZSBOIHBvaW50cy5cbiAgICBjb25zdCBjb29yZGluYXRlcyA9IGZpbGxSYW5kb21NYXRyaXgobkl0ZW1zLCBQU1BFQmFzZS5kaW1lbnNpb24sIGFyZWFXaWR0aCk7XG4gICAgbGV0IGxhbWJkYSA9IHRoaXMubGFtYmRhO1xuXG4gICAgdGhpcy5pbml0RGlzdGFuY2UodmVjdG9ycyk7XG5cbiAgICBmb3IgKGxldCBjeWNsZSA9IDA7IGN5Y2xlIDwgdGhpcy5jeWNsZXM7ICsrY3ljbGUpIHtcbiAgICAgIC8vIFNlbGVjdCBhIHBvaW50LCBpLCBhdCByYW5kb20gKHBpdm90KS5cbiAgICAgIGNvbnN0IGk6IG51bWJlciA9IHJhbmRvbUludChuSXRlbXMpO1xuICAgICAgY29uc3Qgcm93aSA9IGNvb3JkaW5hdGVzW2ldO1xuXG4gICAgICAvLyBGb3IgZXZlcnkgcG9pbnQgaiAhPSBpIC4uLlxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBuSXRlbXM7ICsraikge1xuICAgICAgICBpZiAoaSA9PSBqKSBjb250aW51ZTtcbiAgICAgICAgY29uc3Qgcm93aiA9IGNvb3JkaW5hdGVzW2pdO1xuICAgICAgICAvLyAuLi4gcmV0cmlldmUgKG9yIGV2YWx1YXRlKSBpdHMgcHJveGltaXR5IHRvIGkgaW4gdGhlIGlucHV0IHNwYWNlLCByaWogLi4uXG4gICAgICAgIGNvbnN0IHIgPSB0aGlzLmNhbGNEaXN0YW5jZSh2ZWN0b3JzLCBpLCBqKTtcbiAgICAgICAgLy8gLi4uIGFuZCBjb21wdXRlIHRoZWlyIEV1Y2xpZGVhbiBkaXN0YW5jZSBvbiB0aGUgRC1kaW1lbnNpb25hbCBtYXAsIGRpai5cbiAgICAgICAgY29uc3QgZCA9IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlKHJvd2ksIHJvd2opO1xuICAgICAgICAvLyBJZiByaWogPD0gcmMsIG9yIGlmIHJpaiA+IHJjIGFuZCBkaWogPCByaWogLi4uXG4gICAgICAgIGlmICgodGhpcy5jdXRvZmYgPT0gMCkgfHwgKHIgPD0gdGhpcy5jdXRvZmYpIHx8IChkIDwgcikpIHtcbiAgICAgICAgICBjb25zdCBtdWx0aXBsaWVyID0gbGFtYmRhKihyLWQpLyhkK3RoaXMuZXBzaWxvbik7XG4gICAgICAgICAgY29uc3QgZGlmZklKID0gdmVjdG9yQWRkKHJvd2ksIHJvd2osIC0xKTtcbiAgICAgICAgICAvLyAuLi4gdXBkYXRlIHRoZSBjb29yZGluYXRlcyB4ai5cbiAgICAgICAgICBjb29yZGluYXRlc1tqXSA9IHZlY3RvckFkZChyb3dqLCBkaWZmSUosIC1tdWx0aXBsaWVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gRGVjcmVhc2UgdGhlIGxlYXJuaW5nIHJhdGUge2xhbWJkYX0gYnkgYSBwcmVzY3JpYmVkIHtkbGFtYmRhfS5cbiAgICAgIGxhbWJkYSAtPSB0aGlzLmRsYW1iZGE7XG4gICAgICBpZiAobGFtYmRhIDw9IDAuKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29vcmRpbmF0ZXM7XG4gIH1cbn1cbiJdfQ==
@@ -1,33 +0,0 @@
1
- import { DistanceMetric } from './type_declarations';
2
- /**
3
- * Unified class implementing the different string measures.
4
- *
5
- * @export
6
- * @class Measurer
7
- */
8
- export declare class Measurer {
9
- protected method: string;
10
- static receipt: {
11
- [name: string]: DistanceMetric;
12
- };
13
- /**
14
- * Creates an instance of Measurer.
15
- * @param {string} method Method to calculate distance between strings.
16
- * @memberof Measurer
17
- */
18
- constructor(method: string);
19
- /**
20
- * Returns custom string distance function specified.
21
- * @return {DistanceMetric} Callback of the measure chosen.
22
- */
23
- getMeasure(): DistanceMetric;
24
- /**
25
- * Returns available string distance metrics.
26
- *
27
- * @readonly
28
- * @type {string[]}
29
- * @memberof Measurer
30
- */
31
- static get availableMeasures(): string[];
32
- }
33
- //# sourceMappingURL=string-measure.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"string-measure.d.ts","sourceRoot":"","sources":["string-measure.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAGnD;;;;;GAKG;AACH,qBAAa,QAAQ;IACjB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,OAAc,OAAO,EAAE;QAAC,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAAA;KAAC,CAGrD;IAEF;;;;OAIG;gBACS,MAAM,EAAE,MAAM;IAK1B;;;OAGG;IACI,UAAU,IAAI,cAAc;IAInC;;;;;;OAMG;IACH,WAAkB,iBAAiB,IAAK,MAAM,EAAE,CAO/C;CAEJ"}
@@ -1,46 +0,0 @@
1
- import * as fl from 'fastest-levenshtein';
2
- import { jaroWinkler } from 'jaro-winkler-typescript';
3
- import { assert } from './operations';
4
- /**
5
- * Unified class implementing the different string measures.
6
- *
7
- * @export
8
- * @class Measurer
9
- */
10
- export class Measurer {
11
- /**
12
- * Creates an instance of Measurer.
13
- * @param {string} method Method to calculate distance between strings.
14
- * @memberof Measurer
15
- */
16
- constructor(method) {
17
- assert(Measurer.availableMeasures.includes(method), 'The ${method} was not found.');
18
- this.method = method;
19
- }
20
- /**
21
- * Returns custom string distance function specified.
22
- * @return {DistanceMetric} Callback of the measure chosen.
23
- */
24
- getMeasure() {
25
- return Measurer.receipt[this.method];
26
- }
27
- /**
28
- * Returns available string distance metrics.
29
- *
30
- * @readonly
31
- * @type {string[]}
32
- * @memberof Measurer
33
- */
34
- static get availableMeasures() {
35
- let keys = [];
36
- for (let key in Measurer.receipt) {
37
- keys.push(key);
38
- }
39
- return keys;
40
- }
41
- }
42
- Measurer.receipt = {
43
- 'Levenshtein': fl.distance,
44
- 'Jaro-Winkler': jaroWinkler,
45
- };
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLW1lYXN1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdHJpbmctbWVhc3VyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUdwRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRXBDOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7SUFPakI7Ozs7T0FJRztJQUNILFlBQVksTUFBYztRQUN4QixNQUFNLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSw4QkFBOEIsQ0FBQyxDQUFBO1FBQ25GLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxVQUFVO1FBQ2YsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxLQUFLLGlCQUFpQjtRQUNqQyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7UUFFZCxLQUFLLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUU7WUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNoQjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7QUFyQ2EsZ0JBQU8sR0FBcUM7SUFDeEQsYUFBYSxFQUFFLEVBQUUsQ0FBQyxRQUFRO0lBQzFCLGNBQWMsRUFBRSxXQUFXO0NBQzVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmbCBmcm9tICdmYXN0ZXN0LWxldmVuc2h0ZWluJztcbmltcG9ydCB7amFyb1dpbmtsZXJ9IGZyb20gJ2phcm8td2lua2xlci10eXBlc2NyaXB0JztcblxuaW1wb3J0IHtEaXN0YW5jZU1ldHJpY30gZnJvbSAnLi90eXBlX2RlY2xhcmF0aW9ucyc7XG5pbXBvcnQge2Fzc2VydH0gZnJvbSAnLi9vcGVyYXRpb25zJztcblxuLyoqXG4gKiBVbmlmaWVkIGNsYXNzIGltcGxlbWVudGluZyB0aGUgZGlmZmVyZW50IHN0cmluZyBtZWFzdXJlcy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgTWVhc3VyZXJcbiAqL1xuZXhwb3J0IGNsYXNzIE1lYXN1cmVyIHtcbiAgICBwcm90ZWN0ZWQgbWV0aG9kOiBzdHJpbmc7XG4gICAgcHVibGljIHN0YXRpYyByZWNlaXB0OiB7W25hbWU6IHN0cmluZ106IERpc3RhbmNlTWV0cmljfSA9IHtcbiAgICAgICdMZXZlbnNodGVpbic6IGZsLmRpc3RhbmNlLFxuICAgICAgJ0phcm8tV2lua2xlcic6IGphcm9XaW5rbGVyLFxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIE1lYXN1cmVyLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgTWV0aG9kIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZSBiZXR3ZWVuIHN0cmluZ3MuXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgY29uc3RydWN0b3IobWV0aG9kOiBzdHJpbmcpIHtcbiAgICAgIGFzc2VydChNZWFzdXJlci5hdmFpbGFibGVNZWFzdXJlcy5pbmNsdWRlcyhtZXRob2QpLCAnVGhlICR7bWV0aG9kfSB3YXMgbm90IGZvdW5kLicpXG4gICAgICB0aGlzLm1ldGhvZCA9IG1ldGhvZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGN1c3RvbSBzdHJpbmcgZGlzdGFuY2UgZnVuY3Rpb24gc3BlY2lmaWVkLlxuICAgICAqIEByZXR1cm4ge0Rpc3RhbmNlTWV0cmljfSBDYWxsYmFjayBvZiB0aGUgbWVhc3VyZSBjaG9zZW4uXG4gICAgICovXG4gICAgcHVibGljIGdldE1lYXN1cmUoKTogRGlzdGFuY2VNZXRyaWMge1xuICAgICAgcmV0dXJuIE1lYXN1cmVyLnJlY2VpcHRbdGhpcy5tZXRob2RdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYXZhaWxhYmxlIHN0cmluZyBkaXN0YW5jZSBtZXRyaWNzLlxuICAgICAqXG4gICAgICogQHJlYWRvbmx5XG4gICAgICogQHR5cGUge3N0cmluZ1tdfVxuICAgICAqIEBtZW1iZXJvZiBNZWFzdXJlclxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IGF2YWlsYWJsZU1lYXN1cmVzKCkgOiBzdHJpbmdbXSB7XG4gICAgICBsZXQga2V5cyA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBrZXkgaW4gTWVhc3VyZXIucmVjZWlwdCkge1xuICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBrZXlzO1xuICAgIH1cbiAgICBcbn1cbiJdfQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["test-utils.ts"],"names":[],"mappings":"AAOA,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,gBAOtD;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAIzD;AAaD,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAC,CAkBrE;AAED,wBAAsB,cAAc,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC;IAAC,OAAO,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,GAAG,CAAA;CAAC,CAAC,CA8BvF"}
package/src/test-utils.js DELETED
@@ -1,81 +0,0 @@
1
- import * as path from "path";
2
- import * as os from "os";
3
- import * as fs from "fs";
4
- // @ts-ignore
5
- import * as yaml from 'js-yaml';
6
- const fetch = require('node-fetch');
7
- export async function getToken(url, key) {
8
- let response = await fetch(`${url}/users/login/dev/${key}`, { method: 'POST' });
9
- let json = await response.json();
10
- if (json.isSuccess == true)
11
- return json.token;
12
- else
13
- throw 'Unable to login to server. Check your dev key';
14
- }
15
- export async function getWebUrl(url, token) {
16
- let response = await fetch(`${url}/admin/plugins/admin/settings`, { headers: { Authorization: token } });
17
- let json = await response.json();
18
- return json.settings.webRoot;
19
- }
20
- const grokDir = path.join(os.homedir(), '.grok');
21
- const confPath = path.join(grokDir, 'config.yaml');
22
- function mapURL(conf) {
23
- let urls = {};
24
- for (let server in conf.servers) {
25
- urls[conf['servers'][server]['url']] = conf['servers'][server];
26
- }
27
- return urls;
28
- }
29
- export function getDevKey(hostKey) {
30
- let config = yaml.load(fs.readFileSync(confPath, 'utf8'));
31
- let host = hostKey == '' ? config.default : hostKey;
32
- host = host.trim();
33
- let urls = mapURL(config);
34
- let key = '';
35
- let url = '';
36
- try {
37
- let url = new URL(host).href;
38
- if (url.endsWith('/'))
39
- url = url.slice(0, -1);
40
- if (url in urls)
41
- key = config['servers'][urls[url]]['key'];
42
- }
43
- catch (error) {
44
- if (config['servers'][host] == null)
45
- throw `Unknown server alias. Please add it to ${confPath}`;
46
- url = config['servers'][host]['url'];
47
- key = config['servers'][host]['key'];
48
- }
49
- return { url, key };
50
- }
51
- export async function getBrowserPage(puppeteer) {
52
- var _a;
53
- let url = (_a = process.env.HOST) !== null && _a !== void 0 ? _a : '';
54
- let cfg = getDevKey(url);
55
- url = cfg.url;
56
- let key = cfg.key;
57
- let token = await getToken(url, key);
58
- url = await getWebUrl(url, token);
59
- console.log(`Using web root: ${url}`);
60
- let browser = await puppeteer.launch({
61
- args: ['--disable-dev-shm-usage', '--disable-features=site-per-process'],
62
- ignoreHTTPSErrors: true,
63
- });
64
- let page = await browser.newPage();
65
- await page.goto(`${url}/oauth/`);
66
- await page.setCookie({ name: 'auth', value: token });
67
- await page.evaluate((token) => {
68
- window.localStorage.setItem('auth', token);
69
- }, token);
70
- await page.goto(url);
71
- try {
72
- await page.waitForSelector('.grok-preloader');
73
- console.log('got preloader');
74
- await page.waitForFunction(() => document.querySelector('.grok-preloader') == null, { timeout: 100000 });
75
- }
76
- catch (error) {
77
- throw error;
78
- }
79
- return { browser, page };
80
- }
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsYUFBYTtBQUNiLE9BQU8sS0FBSyxJQUFJLE1BQU0sU0FBUyxDQUFDO0FBQ2hDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUVwQyxNQUFNLENBQUMsS0FBSyxVQUFVLFFBQVEsQ0FBQyxHQUFXLEVBQUUsR0FBVztJQUNyRCxJQUFJLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLEdBQUcsb0JBQW9CLEdBQUcsRUFBRSxFQUFFLEVBQUMsTUFBTSxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUM7SUFDOUUsSUFBSSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakMsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUk7UUFDeEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDOztRQUVsQixNQUFNLCtDQUErQyxDQUFDO0FBQzFELENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLFNBQVMsQ0FBQyxHQUFXLEVBQUUsS0FBYTtJQUN4RCxJQUFJLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLEdBQUcsK0JBQStCLEVBQUUsRUFBQyxPQUFPLEVBQUUsRUFBQyxhQUFhLEVBQUUsS0FBSyxFQUFDLEVBQUMsQ0FBQyxDQUFDO0lBQ3JHLElBQUksSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7QUFDL0IsQ0FBQztBQUVELE1BQU0sT0FBTyxHQUFHLElBQUks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QUMseUJBQXlCLEVBQUUscUNBQXFDLENBQUM7UUFDeEUsaUJBQWlCLEVBQUUsSUFBSTtLQUN4QixDQUFDLENBQUM7SUFFSCxJQUFJLElBQUksR0FBRyxNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7SUFDbkQsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7UUFDakMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNWLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQixJQUFJO1FBQ0YsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDOUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM3QixNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDO0tBQ3hHO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxNQUFNLEtBQUssQ0FBQztLQUNiO0lBQ0QsT0FBTyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0ICogYXMgb3MgZnJvbSBcIm9zXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCAqIGFzIHlhbWwgZnJvbSAnanMteWFtbCc7XG5jb25zdCBmZXRjaCA9IHJlcXVpcmUoJ25vZGUtZmV0Y2gnKTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFRva2VuKHVybDogc3RyaW5nLCBrZXk6IHN0cmluZykge1xuICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHt1cmx9L3VzZXJzL2xvZ2luL2Rldi8ke2tleX1gLCB7bWV0aG9kOiAnUE9TVCd9KTtcbiAgbGV0IGpzb24gPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gIGlmIChqc29uLmlzU3VjY2VzcyA9PSB0cnVlKVxuICAgIHJldHVybiBqc29uLnRva2VuO1xuICBlbHNlXG4gICAgdGhyb3cgJ1VuYWJsZSB0byBsb2dpbiB0byBzZXJ2ZXIuIENoZWNrIHlvdXIgZGV2IGtleSc7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRXZWJVcmwodXJsOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcpIHtcbiAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7dXJsfS9hZG1pbi9wbHVnaW5zL2FkbWluL3NldHRpbmdzYCwge2hlYWRlcnM6IHtBdXRob3JpemF0aW9uOiB0b2tlbn19KTtcbiAgbGV0IGpzb24gPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gIHJldHVybiBqc29uLnNldHRpbmdzLndlYlJvb3Q7XG59XG5cbmNvbnN0IGdyb2tEaXIgPSBwYXRoLmpvaW4ob3MuaG9tZWRpcigpLCAnLmdyb2snKTtcbmNvbnN0IGNvbmZQYXRoID0gcGF0aC5qb2luKGdyb2tEaXIsICdjb25maWcueWFtbCcpO1xuXG5mdW5jdGlvbiBtYXBVUkwoY29uZjogQ29uZmlnKTogSW5kZXhhYmxlIHtcbiAgbGV0IHVybHM6IEluZGV4YWJsZSA9IHt9O1xuICBmb3IgKGxldCBzZXJ2ZXIgaW4gY29uZi5zZXJ2ZXJzKSB7XG4gICAgdXJsc1tjb25mWydzZXJ2ZXJzJ11bc2VydmVyXVsndXJsJ11dID0gY29uZlsnc2VydmVycyddW3NlcnZlcl07XG4gIH1cbiAgcmV0dXJuIHVybHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXZLZXkoaG9zdEtleTogc3RyaW5nKToge3VybDogc3RyaW5nLCBrZXk6IHN0cmluZ30ge1xuICBsZXQgY29uZmlnID0geWFtbC5sb2FkKGZzLnJlYWRGaWxlU3luYyhjb25mUGF0aCwgJ3V0ZjgnKSkgYXMgYW55O1xuICBsZXQgaG9zdCA9IGhvc3RLZXkgPT0gJycgPyBjb25maWcuZGVmYXVsdCA6IGhvc3RLZXk7XG4gIGhvc3QgPSBob3N0LnRyaW0oKTtcbiAgbGV0IHVybHMgPSBtYXBVUkwoY29uZmlnKTtcbiAgbGV0IGtleSA9ICcnO1xuICBsZXQgdXJsID0gJyc7XG4gIHRyeSB7XG4gICAgbGV0IHVybCA9IG5ldyBVUkwoaG9zdCkuaHJlZjtcbiAgICBpZiAodXJsLmVuZHNXaXRoKCcvJykpIHVybCA9IHVybC5zbGljZSgwLCAtMSk7XG4gICAgaWYgKHVybCBpbiB1cmxzKSBrZXkgPSBjb25maWdbJ3NlcnZlcnMnXVt1cmxzW3VybF1dWydrZXknXTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoY29uZmlnWydzZXJ2ZXJzJ11baG9zdF0gPT0gbnVsbClcbiAgICAgIHRocm93IGBVbmtub3duIHNlcnZlciBhbGlhcy4gUGxlYXNlIGFkZCBpdCB0byAke2NvbmZQYXRofWA7XG4gICAgdXJsID0gY29uZmlnWydzZXJ2ZXJzJ11baG9zdF1bJ3VybCddO1xuICAgIGtleSA9IGNvbmZpZ1snc2VydmVycyddW2hvc3RdWydrZXknXTtcbiAgfVxuICByZXR1cm4ge3VybCwga2V5fTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEJyb3dzZXJQYWdlKHB1cHBldGVlcjogYW55KTogUHJvbWlzZTx7YnJvd3NlcjogYW55LCBwYWdlOiBhbnl9PiB7XG4gIGxldCB1cmw6c3RyaW5nID0gcHJvY2Vzcy5lbnYuSE9TVCA/PyAnJztcbiAgbGV0IGNmZyA9IGdldERldktleSh1cmwpO1xuICB1cmwgPSBjZmcudXJsO1xuXG4gIGxldCBrZXkgPSBjZmcua2V5O1xuICBsZXQgdG9rZW4gPSBhd2FpdCBnZXRUb2tlbih1cmwsIGtleSk7XG4gIHVybCA9IGF3YWl0IGdldFdlYlVybCh1cmwsIHRva2VuKTtcbiAgY29uc29sZS5sb2coYFVzaW5nIHdlYiByb290OiAke3VybH1gKTtcblxuICBsZXQgYnJvd3NlciA9IGF3YWl0IHB1cHBldGVlci5sYXVuY2goe1xuICAgIGFyZ3M6IFsnLS1kaXNhYmxlLWRldi1zaG0tdXNhZ2UnLCAnLS1kaXNhYmxlLWZlYXR1cmVzPXNpdGUtcGVyLXByb2Nlc3MnXSxcbiAgICBpZ25vcmVIVFRQU0Vycm9yczogdHJ1ZSxcbiAgfSk7XG5cbiAgbGV0IHBhZ2UgPSBhd2FpdCBicm93c2VyLm5ld1BhZ2UoKTtcbiAgYXdhaXQgcGFnZS5nb3RvKGAke3VybH0vb2F1dGgvYCk7XG4gIGF3YWl0IHBhZ2Uuc2V0Q29va2llKHtuYW1lOiAnYXV0aCcsIHZhbHVlOiB0b2tlbn0pO1xuICBhd2FpdCBwYWdlLmV2YWx1YXRlKCh0b2tlbjogYW55KSA9PiB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCdhdXRoJywgdG9rZW4pO1xuICB9LCB0b2tlbik7XG4gIGF3YWl0IHBhZ2UuZ290byh1cmwpO1xuICB0cnkge1xuICAgIGF3YWl0IHBhZ2Uud2FpdEZvclNlbGVjdG9yKCcuZ3Jvay1wcmVsb2FkZXInKTtcbiAgICBjb25zb2xlLmxvZygnZ290IHByZWxvYWRlcicpO1xuICAgIGF3YWl0IHBhZ2Uud2FpdEZvckZ1bmN0aW9uKCgpID0+IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5ncm9rLXByZWxvYWRlcicpID09IG51bGwsIHt0aW1lb3V0OiAxMDAwMDB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuICByZXR1cm4ge2Jyb3dzZXIsIHBhZ2V9O1xufVxuXG5cbmludGVyZmFjZSBDb25maWcge1xuICBzZXJ2ZXJzOiB7XG4gICAgW2FsaWFzOiBzdHJpbmddOiB7XG4gICAgICB1cmw6IHN0cmluZyxcbiAgICAgIGtleTogc3RyaW5nXG4gICAgfVxuICB9LFxuICBkZWZhdWx0OiBzdHJpbmcsXG59XG5cbmludGVyZmFjZSBJbmRleGFibGUgeyBba2V5OiBzdHJpbmddOiBhbnkgfVxuIl19