@datagrok-libraries/utils 0.0.5 → 0.0.9
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/package.json +7 -3
- package/src/bit-array.d.ts +82 -0
- package/src/bit-array.d.ts.map +1 -0
- package/src/bit-array.js +18 -8
- package/src/operations.d.ts +66 -0
- package/src/operations.d.ts.map +1 -0
- package/src/reduce-dimensionality.d.ts +38 -0
- package/src/reduce-dimensionality.d.ts.map +1 -0
- package/src/reduce-dimensionality.js +36 -36
- package/src/sequence-encoder.d.ts +59 -0
- package/src/sequence-encoder.d.ts.map +1 -0
- package/src/sequence-encoder.js +9 -8
- package/src/spe.d.ts +68 -0
- package/src/spe.d.ts.map +1 -0
- package/src/spe.js +1 -1
- package/src/string-measure.d.ts +33 -0
- package/src/string-measure.d.ts.map +1 -0
- package/src/string-measure.js +9 -9
- package/src/string-utils.d.ts +2 -0
- package/src/string-utils.d.ts.map +1 -0
- package/src/table-validation.d.ts +2 -0
- package/src/table-validation.d.ts.map +1 -0
- package/src/table-validation.js +1 -1
- package/src/test-utils.d.ts +11 -0
- package/src/test-utils.d.ts.map +1 -0
- package/src/test-utils.js +2 -1
- package/src/{type_declarations.ts → type_declarations.d.ts} +13 -11
- package/src/type_declarations.d.ts.map +1 -0
- package/tsconfig.json +2 -2
- package/src/bit-array.ts +0 -756
- package/src/operations.ts +0 -160
- package/src/reduce-dimensionality.ts +0 -272
- package/src/sequence-encoder.ts +0 -131
- package/src/spe.ts +0 -172
- package/src/string-measure.ts +0 -54
- package/src/string-utils.ts +0 -8
- package/src/table-validation.ts +0 -67
- package/src/test-utils.ts +0 -97
|
@@ -4,7 +4,8 @@ import { Vector } from './type_declarations';
|
|
|
4
4
|
import { calcDistanceMatrix, transposeMatrix } from './operations';
|
|
5
5
|
import { SPEBase, PSPEBase } from './spe';
|
|
6
6
|
import { Measurer } from './string-measure';
|
|
7
|
-
|
|
7
|
+
import { AlignedSequenceEncoder } from './sequence-encoder';
|
|
8
|
+
import { assert } from './operations';
|
|
8
9
|
/**
|
|
9
10
|
* Abstract dimensionality reducer.
|
|
10
11
|
*
|
|
@@ -59,8 +60,6 @@ class TSNEReducer extends Reducer {
|
|
|
59
60
|
* @extends {Reducer}
|
|
60
61
|
*/
|
|
61
62
|
class UMAPReducer extends Reducer {
|
|
62
|
-
/* protected encoder: AlignedSequenceEncoder;
|
|
63
|
-
protected distanceMatrix: Matrix;*/
|
|
64
63
|
/**
|
|
65
64
|
* Creates an instance of UMAPReducer.
|
|
66
65
|
* @param {Options} options Options to pass to the constructor.
|
|
@@ -68,40 +67,43 @@ class UMAPReducer extends Reducer {
|
|
|
68
67
|
*/
|
|
69
68
|
constructor(options) {
|
|
70
69
|
super(options);
|
|
70
|
+
assert('distanceFn' in options);
|
|
71
|
+
this.encoder = new AlignedSequenceEncoder();
|
|
72
|
+
this.distanceFn = options.distanceFn;
|
|
73
|
+
this.vectors = [];
|
|
74
|
+
options.distanceFn = this._encodedDistance.bind(this);
|
|
71
75
|
this.reducer = new umj.UMAP(options);
|
|
72
|
-
/* this.encoder = new AlignedSequenceEncoder();
|
|
73
|
-
this.distanceMatrix = calcDistanceMatrix(this.data, options.distanceFn);
|
|
74
|
-
this.distanceFn = options.distanceFn;*/
|
|
75
76
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
77
|
+
/**
|
|
78
|
+
* Custom distance wrapper to have numeric inputs instead of string ones.
|
|
79
|
+
*
|
|
80
|
+
* @protected
|
|
81
|
+
* @param {number[]} a The first item.
|
|
82
|
+
* @param {number[]} b The first item.
|
|
83
|
+
* @return {number} Distance metric.
|
|
84
|
+
* @memberof UMAPReducer
|
|
85
|
+
*/
|
|
86
|
+
_encodedDistance(a, b) {
|
|
87
|
+
return this.distanceFn(this.data[a[0]], this.data[b[0]]);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Encodes the input data as a vector of indices.
|
|
91
|
+
*
|
|
92
|
+
* @protected
|
|
93
|
+
* @memberof UMAPReducer
|
|
94
|
+
*/
|
|
95
|
+
_encode() {
|
|
87
96
|
for (let i = 0; i < this.data.length; ++i) {
|
|
88
|
-
|
|
89
|
-
vectors.push(encoded);
|
|
97
|
+
this.vectors.push([i]);
|
|
90
98
|
}
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
protected _calcDistance() {
|
|
95
|
-
const nItems = this.data.length;
|
|
96
|
-
const vectors = this.encode();
|
|
97
|
-
|
|
98
|
-
}*/
|
|
99
|
+
}
|
|
99
100
|
/**
|
|
100
101
|
* Embeds the data given into the two-dimensional space using UMAP method.
|
|
101
102
|
* @return {Coordinates} Cartesian coordinate of this embedding.
|
|
102
103
|
*/
|
|
103
104
|
transform() {
|
|
104
|
-
|
|
105
|
+
this._encode();
|
|
106
|
+
const embedding = this.reducer.fit(this.vectors);
|
|
105
107
|
function arrayCast2Coordinates(data) {
|
|
106
108
|
return new Array(data.length).fill(0).map((_, i) => (Vector.from(data[i])));
|
|
107
109
|
}
|
|
@@ -173,10 +175,7 @@ export class DimensionalityReducer {
|
|
|
173
175
|
*/
|
|
174
176
|
constructor(data, method, metric, options) {
|
|
175
177
|
var _a;
|
|
176
|
-
|
|
177
|
-
if (!this.availableMethods.includes(method)) {
|
|
178
|
-
throw new Error('The method "' + method + '" is not supported');
|
|
179
|
-
}
|
|
178
|
+
assert(DimensionalityReducer.availableMethods.includes(method), `The method '${method}' is not supported`);
|
|
180
179
|
this.measurer = new Measurer(metric);
|
|
181
180
|
const measure = this.measurer.getMeasure();
|
|
182
181
|
if (method == 'UMAP') {
|
|
@@ -187,7 +186,7 @@ export class DimensionalityReducer {
|
|
|
187
186
|
...options
|
|
188
187
|
});
|
|
189
188
|
}
|
|
190
|
-
else if (method == '
|
|
189
|
+
else if (method == 't-SNE') {
|
|
191
190
|
this.reducer = new TSNEReducer({
|
|
192
191
|
...{ data: data },
|
|
193
192
|
...{ distance: measure },
|
|
@@ -226,8 +225,9 @@ export class DimensionalityReducer {
|
|
|
226
225
|
* @readonly
|
|
227
226
|
* @memberof DimensionalityReducer
|
|
228
227
|
*/
|
|
229
|
-
get availableMethods() {
|
|
230
|
-
return
|
|
228
|
+
static get availableMethods() {
|
|
229
|
+
return DimensionalityReducer.methods;
|
|
231
230
|
}
|
|
232
231
|
}
|
|
233
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdWNlLWRpbWVuc2lvbmFsaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicmVkdWNlLWRpbWVuc2lvbmFsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxHQUFHLE1BQU0sU0FBUyxDQUFDO0FBQy9CLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFbkMsT0FBTyxFQUF1QyxNQUFNLEVBQWtCLE1BQU0scUJBQXFCLENBQUM7QUFDbEcsT0FBTyxFQUFDLGtCQUFrQixFQUFFLGVBQWUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNqRSxPQUFPLEVBQUMsT0FBTyxFQUFFLFFBQVEsRUFBQyxNQUFNLE9BQU8sQ0FBQztBQUN4QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsNERBQTREO0FBRTVEOzs7OztHQUtHO0FBQ0gsTUFBZSxPQUFPO0lBR3BCOzs7O09BSUc7SUFDSCxZQUFZLE9BQWdCO1FBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztJQUMzQixDQUFDO0NBVUY7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sV0FBWSxTQUFRLE9BQU87SUFLL0I7Ozs7T0FJRztJQUNILFlBQVksT0FBZ0I7O1FBQzFCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLFVBQVUsU0FBRyxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsVUFBVSxtQ0FBSSxHQUFHLENBQUM7UUFDN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7O09BR0c7SUFDSSxTQUFTO1FBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUV4RSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRTtZQUN4QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsaURBQWlEO1NBQ3ZFO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BDLENBQUM7Q0FDRjtBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxXQUFZLFNBQVEsT0FBTztJQUVqQzt5Q0FDcUM7SUFFbkM7Ozs7T0FJRztJQUNILFlBQVksT0FBZ0I7UUFDMUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekM7O21EQUUyQztJQUN6QyxDQUFDO0lBRUg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FzQks7SUFFSDs7O09BR0c7SUFDSSxTQUFTO1FBQ2QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTlDLFNBQVMscUJBQXFCLENBQUMsSUFBZ0I7WUFDN0MsT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUUsQ0FBQztRQUNELE9BQU8scUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUMsQ0FBQztDQUNGO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVcsU0FBUSxPQUFPO0lBRzlCOzs7O09BSUc7SUFDSCxZQUFZLE9BQWdCO1FBQzFCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sV0FBWSxTQUFRLE9BQU87SUFHL0I7Ozs7T0FJRztJQUNILFlBQVksT0FBZ0I7UUFDMUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FDRjtBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLHFCQUFxQjtJQUtoQzs7Ozs7OztPQU9HO0lBQ0gsWUFBWSxJQUFXLEVBQUUsTUFBYyxFQUFFLE1BQWMsRUFBRSxPQUFpQjs7UUFDeEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRS9DLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzNDLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxHQUFDLE1BQU0sR0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQzdEO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBRTFDLElBQUksTUFBTSxJQUFJLE1BQU0sRUFBRTtZQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDO2dCQUM3QixHQUFHLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBQztnQkFDZixHQUFHLEVBQUMsVUFBVSxFQUFFLE9BQU8sRUFBQztnQkFDeEIsR0FBRyxFQUFDLE9BQU8sRUFBRSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsTUFBTSxFQUFDO2dCQUM3QixHQUFHLE9BQU87YUFDWCxDQUFDLENBQUM7U0FDSjthQUFNLElBQUksTUFBTSxJQUFJLE1BQU0sRUFBRTtZQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDO2dCQUM3QixHQUFHLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBQztnQkFDZixHQUFHLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBQztnQkFDdEIsR0FBRyxFQUFDLFVBQVUsUUFBRSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsTUFBTSxtQ0FBSSxTQUFTLEVBQUM7Z0JBQzdDLEdBQUcsT0FBTzthQUNYLENBQUMsQ0FBQztTQUNKO2FBQU0sSUFBSSxNQUFNLElBQUksS0FBSyxFQUFFO1lBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxVQUFVLENBQUMsRUFBQyxHQUFHLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBQyxFQUFFLEdBQUcsRUFBQyxRQUFRLEVBQUUsT0FBTyxFQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUMsQ0FBQyxDQUFDO1NBQ3RGO2FBQU07WUFDTCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUMsR0FBRyxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUMsRUFBRSxHQUFHLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBQyxFQUFFLEdBQUcsT0FBTyxFQUFDLENBQUMsQ0FBQztTQUN2RjtJQUNILENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksU0FBUyxDQUFDLFlBQXFCLEtBQUs7UUFDekMsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLFNBQVMsRUFBRTtZQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7U0FDN0M7UUFDRCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRXpDLElBQUksU0FBUyxFQUFFO1lBQ2IsU0FBUyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN4QztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1bWogZnJvbSAndW1hcC1qcyc7XHJcbmltcG9ydCB7VFNORX0gZnJvbSAnQGtlY2tlbHQvdHNuZSc7XHJcblxyXG5pbXBvcnQge09wdGlvbnMsIERpc3RhbmNlTWV0cmljLCBDb29yZGluYXRlcywgVmVjdG9yLCBWZWN0b3JzLCBNYXRyaXh9IGZyb20gJy4vdHlwZV9kZWNsYXJhdGlvbnMnO1xyXG5pbXBvcnQge2NhbGNEaXN0YW5jZU1hdHJpeCwgdHJhbnNwb3NlTWF0cml4fSBmcm9tICcuL29wZXJhdGlvbnMnO1xyXG5pbXBvcnQge1NQRUJhc2UsIFBTUEVCYXNlfSBmcm9tICcuL3NwZSc7XHJcbmltcG9ydCB7TWVhc3VyZXJ9IGZyb20gJy4vc3RyaW5nLW1lYXN1cmUnO1xyXG4vL2ltcG9ydCB7QWxpZ25lZFNlcXVlbmNlRW5jb2Rlcn0gZnJvbSAnLi9zZXF1ZW5jZS1lbmNvZGVyJztcclxuXHJcbi8qKlxyXG4gKiBBYnN0cmFjdCBkaW1lbnNpb25hbGl0eSByZWR1Y2VyLlxyXG4gKlxyXG4gKiBAYWJzdHJhY3RcclxuICogQGNsYXNzIFJlZHVjZXJcclxuICovXHJcbmFic3RyYWN0IGNsYXNzIFJlZHVjZXIge1xyXG4gIHByb3RlY3RlZCBkYXRhOiBWZWN0b3JzO1xyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFJlZHVjZXIuXHJcbiAgICogQHBhcmFtIHtPcHRpb25zfSBvcHRpb25zIE9wdGlvbnMgdG8gcGFzcyB0byB0aGUgY29uc3RydWN0b3IuXHJcbiAgICogQG1lbWJlcm9mIFJlZHVjZXJcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBPcHRpb25zKSB7XHJcbiAgICB0aGlzLmRhdGEgPSBvcHRpb25zLmRhdGE7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJcyB0byBlbWJlZCB0aGUgZGF0YSBnaXZlbiBpbnRvIHRoZSB0d28tZGltZW5zaW9uYWwgc3BhY2UuXHJcbiAgICpcclxuICAgKiBAYWJzdHJhY3RcclxuICAgKiBAcmV0dXJuIHtDb29yZGluYXRlc30gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcuXHJcbiAgICogQG1lbWJlcm9mIFJlZHVjZXJcclxuICAgKi9cclxuICBhYnN0cmFjdCB0cmFuc2Zvcm0oKTogQ29vcmRpbmF0ZXM7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBJbXBsZW1lbnRzIHQtU05FIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbi5cclxuICpcclxuICogQGNsYXNzIFRTTkVSZWR1Y2VyXHJcbiAqIEBleHRlbmRzIHtSZWR1Y2VyfVxyXG4gKi9cclxuY2xhc3MgVFNORVJlZHVjZXIgZXh0ZW5kcyBSZWR1Y2VyIHtcclxuICBwcm90ZWN0ZWQgcmVkdWNlcjogVFNORTtcclxuICBwcm90ZWN0ZWQgaXRlcmF0aW9uczogbnVtYmVyO1xyXG4gIHByb3RlY3RlZCBkaXN0YW5jZTogRGlzdGFuY2VNZXRyaWM7XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgVFNORVJlZHVjZXIuXHJcbiAgICogQHBhcmFtIHtPcHRpb25zfSBvcHRpb25zIE9wdGlvbnMgdG8gcGFzcyB0byB0aGUgY29uc3RydWN0b3IuXHJcbiAgICogQG1lbWJlcm9mIFRTTkVSZWR1Y2VyXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3Iob3B0aW9uczogT3B0aW9ucykge1xyXG4gICAgc3VwZXIob3B0aW9ucyk7XHJcbiAgICB0aGlzLnJlZHVjZXIgPSBuZXcgVFNORShvcHRpb25zKTtcclxuICAgIHRoaXMuaXRlcmF0aW9ucyA9IG9wdGlvbnM/Lml0ZXJhdGlvbnMgPz8gMTAwO1xyXG4gICAgdGhpcy5kaXN0YW5jZSA9IG9wdGlvbnMuZGlzdGFuY2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbWJlZHMgdGhlIGRhdGEgZ2l2ZW4gaW50byB0aGUgdHdvLWRpbWVuc2lvbmFsIHNwYWNlIHVzaW5nIHQtU05FIG1ldGhvZC5cclxuICAgKiBAcmV0dXJuIHtDb29yZGluYXRlc30gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcuXHJcbiAgICovXHJcbiAgcHVibGljIHRyYW5zZm9ybSgpOiBDb29yZGluYXRlcyB7XHJcbiAgICB0aGlzLnJlZHVjZXIuaW5pdERhdGFEaXN0KGNhbGNEaXN0YW5jZU1hdHJpeCh0aGlzLmRhdGEsIHRoaXMuZGlzdGFuY2UpKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuaXRlcmF0aW9uczsgKytpKSB7XHJcbiAgICAgIHRoaXMucmVkdWNlci5zdGVwKCk7IC8vIGV2ZXJ5IHRpbWUgeW91IGNhbGwgdGhpcywgc29sdXRpb24gZ2V0cyBiZXR0ZXJcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnJlZHVjZXIuZ2V0U29sdXRpb24oKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBJbXBsZW1lbnRzIFVNQVAgZGltZW5zaW9uYWxpdHkgcmVkdWN0aW9uLlxyXG4gKlxyXG4gKiBAY2xhc3MgVU1BUFJlZHVjZXJcclxuICogQGV4dGVuZHMge1JlZHVjZXJ9XHJcbiAqL1xyXG5jbGFzcyBVTUFQUmVkdWNlciBleHRlbmRzIFJlZHVjZXIge1xyXG4gIHByb3RlY3RlZCByZWR1Y2VyOiB1bWouVU1BUDtcclxuLyogIHByb3RlY3RlZCBlbmNvZGVyOiBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyO1xyXG4gIHByb3RlY3RlZCBkaXN0YW5jZU1hdHJpeDogTWF0cml4OyovXHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgVU1BUFJlZHVjZXIuXHJcbiAgICogQHBhcmFtIHtPcHRpb25zfSBvcHRpb25zIE9wdGlvbnMgdG8gcGFzcyB0byB0aGUgY29uc3RydWN0b3IuXHJcbiAgICogQG1lbWJlcm9mIFVNQVBSZWR1Y2VyXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3Iob3B0aW9uczogT3B0aW9ucykge1xyXG4gICAgc3VwZXIob3B0aW9ucyk7XHJcbiAgICB0aGlzLnJlZHVjZXIgPSBuZXcgdW1qLlVNQVAob3B0aW9ucyk7XHJcbi8qICAgIHRoaXMuZW5jb2RlciA9IG5ldyBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyKCk7XHJcbiAgICB0aGlzLmRpc3RhbmNlTWF0cml4ID0gY2FsY0Rpc3RhbmNlTWF0cml4KHRoaXMuZGF0YSwgb3B0aW9ucy5kaXN0YW5jZUZuKTtcclxuICAgIHRoaXMuZGlzdGFuY2VGbiA9IG9wdGlvbnMuZGlzdGFuY2VGbjsqL1xyXG4gIH1cclxuXHJcbi8qICBwcm90ZWN0ZWQgX2VuY29kZWREaXN0YW5jZShhOiBudW1iZXJbXSwgYjogbnVtYmVyW10pOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZGlzdGFuY2VNYXRyaXhbYVthLmxlbmd0aC0xXV1bYltiLmxlbmd0aC0xXV07XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX2RlY29kZWREaXN0YW5jZShhOiBudW1iZXJbXSwgYjogbnVtYmVyW10pOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZW5jb2Rlci5kZWNvZGUoYSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZW5jb2RlKCk6IG51bWJlcltdW10ge1xyXG4gICAgbGV0IHZlY3RvcnM6IG51bWJlcltdW10gPSBbXTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7ICsraSkge1xyXG4gICAgICBsZXQgZW5jb2RlZCA9IHRoaXMuZW5jb2Rlci5lbmNvZGUodGhpcy5kYXRhW2ldKTtcclxuICAgICAgdmVjdG9ycy5wdXNoKGVuY29kZWQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZlY3RvcnM7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX2NhbGNEaXN0YW5jZSgpIHtcclxuICAgIGNvbnN0IG5JdGVtcyA9IHRoaXMuZGF0YS5sZW5ndGg7XHJcbiAgICBjb25zdCB2ZWN0b3JzID0gdGhpcy5lbmNvZGUoKTtcclxuICAgIFxyXG4gIH0qL1xyXG5cclxuICAvKipcclxuICAgKiBFbWJlZHMgdGhlIGRhdGEgZ2l2ZW4gaW50byB0aGUgdHdvLWRpbWVuc2lvbmFsIHNwYWNlIHVzaW5nIFVNQVAgbWV0aG9kLlxyXG4gICAqIEByZXR1cm4ge0Nvb3JkaW5hdGVzfSBDYXJ0ZXNpYW4gY29vcmRpbmF0ZSBvZiB0aGlzIGVtYmVkZGluZy5cclxuICAgKi9cclxuICBwdWJsaWMgdHJhbnNmb3JtKCk6IENvb3JkaW5hdGVzIHtcclxuICAgIGNvbnN0IGVtYmVkZGluZyA9IHRoaXMucmVkdWNlci5maXQodGhpcy5kYXRhKTtcclxuXHJcbiAgICBmdW5jdGlvbiBhcnJheUNhc3QyQ29vcmRpbmF0ZXMoZGF0YTogbnVtYmVyW11bXSk6IENvb3JkaW5hdGVzIHtcclxuICAgICAgcmV0dXJuIG5ldyBBcnJheShkYXRhLmxlbmd0aCkuZmlsbCgwKS5tYXAoKF8sIGkpID0+IChWZWN0b3IuZnJvbShkYXRhW2ldKSkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFycmF5Q2FzdDJDb29yZGluYXRlcyhlbWJlZGRpbmcpO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEltcGxlbWVudHMgb3JpZ2luYWwgU1BFIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbi5cclxuICpcclxuICogQGNsYXNzIFNQRVJlZHVjZXJcclxuICogQGV4dGVuZHMge1JlZHVjZXJ9XHJcbiAqL1xyXG5jbGFzcyBTUEVSZWR1Y2VyIGV4dGVuZHMgUmVkdWNlciB7XHJcbiAgcHJvdGVjdGVkIHJlZHVjZXI6IFNQRUJhc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgU1BFUmVkdWNlci5cclxuICAgKiBAcGFyYW0ge09wdGlvbnN9IG9wdGlvbnMgT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBjb25zdHJ1Y3Rvci5cclxuICAgKiBAbWVtYmVyb2YgU1BFUmVkdWNlclxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9wdGlvbnMpIHtcclxuICAgIHN1cGVyKG9wdGlvbnMpO1xyXG4gICAgdGhpcy5yZWR1Y2VyID0gbmV3IFNQRUJhc2Uob3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbWJlZHMgdGhlIGRhdGEgZ2l2ZW4gaW50byB0aGUgdHdvLWRpbWVuc2lvbmFsIHNwYWNlIHVzaW5nIHRoZSBvcmlnaW5hbCBTUEUgbWV0aG9kLlxyXG4gICAqIEByZXR1cm4ge0Nvb3JkaW5hdGVzfSBDYXJ0ZXNpYW4gY29vcmRpbmF0ZSBvZiB0aGlzIGVtYmVkZGluZy5cclxuICAgKi9cclxuICBwdWJsaWMgdHJhbnNmb3JtKCk6IENvb3JkaW5hdGVzIHtcclxuICAgIHJldHVybiB0aGlzLnJlZHVjZXIuZW1iZWQodGhpcy5kYXRhKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBJbXBsZW1lbnRzIG1vZGlmaWVkIFNQRSBkaW1lbnNpb25hbGl0eSByZWR1Y3Rpb24uXHJcbiAqXHJcbiAqIEBjbGFzcyBQU1BFUmVkdWNlclxyXG4gKiBAZXh0ZW5kcyB7UmVkdWNlcn1cclxuICovXHJcbmNsYXNzIFBTUEVSZWR1Y2VyIGV4dGVuZHMgUmVkdWNlciB7XHJcbiAgcHJvdGVjdGVkIHJlZHVjZXI6IFBTUEVCYXNlO1xyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFBTUEVSZWR1Y2VyLlxyXG4gICAqIEBwYXJhbSB7T3B0aW9uc30gb3B0aW9ucyBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGNvbnN0cnVjdG9yLlxyXG4gICAqIEBtZW1iZXJvZiBQU1BFUmVkdWNlclxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9wdGlvbnMpIHtcclxuICAgIHN1cGVyKG9wdGlvbnMpO1xyXG4gICAgdGhpcy5yZWR1Y2VyID0gbmV3IFBTUEVCYXNlKG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW1iZWRzIHRoZSBkYXRhIGdpdmVuIGludG8gdGhlIHR3by1kaW1lbnNpb25hbCBzcGFjZSB1c2luZyB0aGUgbW9kaWZpZWQgU1BFIG1ldGhvZC5cclxuICAgKiBAcmV0dXJuIHtDb29yZGluYXRlc30gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcuXHJcbiAgICovXHJcbiAgcHVibGljIHRyYW5zZm9ybSgpOiBDb29yZGluYXRlcyB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWR1Y2VyLmVtYmVkKHRoaXMuZGF0YSk7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogVW5pZmllZCBjbGFzcyBpbXBsZW1lbnRpbmcgZGlmZmVyZW50IGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbiBtZXRob2RzLlxyXG4gKlxyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBEaW1lbnNpb25hbGl0eVJlZHVjZXJcclxuICovXHJcbmV4cG9ydCBjbGFzcyBEaW1lbnNpb25hbGl0eVJlZHVjZXIge1xyXG4gIHByaXZhdGUgcmVkdWNlcjogUmVkdWNlciB8IHVuZGVmaW5lZDtcclxuICBwcml2YXRlIG1ldGhvZHM6IHN0cmluZ1tdO1xyXG4gIHByaXZhdGUgbWVhc3VyZXI6IE1lYXN1cmVyO1xyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIERpbWVuc2lvbmFsaXR5UmVkdWNlci5cclxuICAgKiBAcGFyYW0ge2FueVtdfSBkYXRhIFZlY3RvcnMgdG8gZW1iZWQuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZCBFbWJlZGRpbmcgbWV0aG9kIHRvIGJlIGFwcGxpZWRcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0cmljIERpc3RhbmNlIG1ldHJpYyB0byBiZSBjb21wdXRlZCBiZXR3ZWVuIGVhY2ggb2YgdGhlIHZlY3RvcnMuXHJcbiAgICogQHBhcmFtIHtPcHRpb25zfSBbb3B0aW9uc10gT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBpbXBsZW1lbnRpbmcgZW1iZWRkZXJzLlxyXG4gICAqIEBtZW1iZXJvZiBEaW1lbnNpb25hbGl0eVJlZHVjZXJcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihkYXRhOiBhbnlbXSwgbWV0aG9kOiBzdHJpbmcsIG1ldHJpYzogc3RyaW5nLCBvcHRpb25zPzogT3B0aW9ucykge1xyXG4gICAgdGhpcy5tZXRob2RzID0gWydVTUFQJywgJ1RTTkUnLCAnU1BFJywgJ1BTUEUnXTtcclxuXHJcbiAgICBpZiAoIXRoaXMuYXZhaWxhYmxlTWV0aG9kcy5pbmNsdWRlcyhtZXRob2QpKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIG1ldGhvZCBcIicrbWV0aG9kKydcIiBpcyBub3Qgc3VwcG9ydGVkJyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5tZWFzdXJlciA9IG5ldyBNZWFzdXJlcihtZXRyaWMpO1xyXG4gICAgY29uc3QgbWVhc3VyZSA9IHRoaXMubWVhc3VyZXIuZ2V0TWVhc3VyZSgpXHJcblxyXG4gICAgaWYgKG1ldGhvZCA9PSAnVU1BUCcpIHtcclxuICAgICAgdGhpcy5yZWR1Y2VyID0gbmV3IFVNQVBSZWR1Y2VyKHtcclxuICAgICAgICAuLi57ZGF0YTogZGF0YX0sIFxyXG4gICAgICAgIC4uLntkaXN0YW5jZUZuOiBtZWFzdXJlfSwgXHJcbiAgICAgICAgLi4ue25FcG9jaHM6IG9wdGlvbnM/LmN5Y2xlc30sXHJcbiAgICAgICAgLi4ub3B0aW9uc1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAobWV0aG9kID09ICdUU05FJykge1xyXG4gICAgICB0aGlzLnJlZHVjZXIgPSBuZXcgVFNORVJlZHVjZXIoe1xyXG4gICAgICAgIC4uLntkYXRhOiBkYXRhfSxcclxuICAgICAgICAuLi57ZGlzdGFuY2U6IG1lYXN1cmV9LFxyXG4gICAgICAgIC4uLntpdGVyYXRpb25zOiBvcHRpb25zPy5jeWNsZXMgPz8gdW5kZWZpbmVkfSxcclxuICAgICAgICAuLi5vcHRpb25zLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAobWV0aG9kID09ICdTUEUnKSB7XHJcbiAgICAgIHRoaXMucmVkdWNlciA9IG5ldyBTUEVSZWR1Y2VyKHsuLi57ZGF0YTogZGF0YX0sIC4uLntkaXN0YW5jZTogbWVhc3VyZX0sIC4uLm9wdGlvbnN9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucmVkdWNlciA9IG5ldyBQU1BFUmVkdWNlcih7Li4ue2RhdGE6IGRhdGF9LCAuLi57ZGlzdGFuY2U6IG1lYXN1cmV9LCAuLi5vcHRpb25zfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbWJlZHMgdGhlIGRhdGEgZ2l2ZW4gaW50byB0aGUgdHdvLWRpbWVuc2lvbmFsIHNwYWNlIHVzaW5nIHRoZSBjaG9zZW4gbWV0aG9kLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtib29sZWFufSB0cmFuc3Bvc2UgV2hldGhlciB0byB0cmFuc2Zvcm0gY29vcmRpbmF0ZXMgdG8gaGF2ZSBjb2x1bW5zLWZpcnN0IG9yaWVudGF0aW9uLlxyXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZW1iZWRkaW5nIG1ldGhvZCB3YXMgbm90IGZvdW5kLlxyXG4gICAqIEByZXR1cm4ge0Nvb3JkaW5hdGVzfSBDYXJ0ZXNpYW4gY29vcmRpbmF0ZSBvZiB0aGlzIGVtYmVkZGluZy5cclxuICAgKiBAbWVtYmVyb2YgRGltZW5zaW9uYWxpdHlSZWR1Y2VyXHJcbiAgICovXHJcbiAgcHVibGljIHRyYW5zZm9ybSh0cmFuc3Bvc2U6IGJvb2xlYW4gPSBmYWxzZSk6IENvb3JkaW5hdGVzIHtcclxuICAgIGlmICh0aGlzLnJlZHVjZXIgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignUmVkdWNlciB3YXMgbm90IGRlZmluZWQuJyk7XHJcbiAgICB9XHJcbiAgICBsZXQgZW1iZWRkaW5nID0gdGhpcy5yZWR1Y2VyLnRyYW5zZm9ybSgpO1xyXG5cclxuICAgIGlmICh0cmFuc3Bvc2UpIHtcclxuICAgICAgZW1iZWRkaW5nID0gdHJhbnNwb3NlTWF0cml4KGVtYmVkZGluZyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZW1iZWRkaW5nO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBkaW1lbnNpb25hbGl0eSByZWR1Y3Rpb24gbWV0aG9kcyBhdmFpbGFibGUuXHJcbiAgICpcclxuICAgKiBAcmVhZG9ubHlcclxuICAgKiBAbWVtYmVyb2YgRGltZW5zaW9uYWxpdHlSZWR1Y2VyXHJcbiAgICovXHJcbiAgZ2V0IGF2YWlsYWJsZU1ldGhvZHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5tZXRob2RzO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
232
|
+
DimensionalityReducer.methods = ['UMAP', 't-SNE', 'SPE', 'pSPE'];
|
|
233
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdWNlLWRpbWVuc2lvbmFsaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicmVkdWNlLWRpbWVuc2lvbmFsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxHQUFHLE1BQU0sU0FBUyxDQUFDO0FBQy9CLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFbkMsT0FBTyxFQUF1QyxNQUFNLEVBQWtCLE1BQU0scUJBQXFCLENBQUM7QUFDbEcsT0FBTyxFQUFDLGtCQUFrQixFQUFFLGVBQWUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNqRSxPQUFPLEVBQUMsT0FBTyxFQUFFLFFBQVEsRUFBQyxNQUFNLE9BQU8sQ0FBQztBQUN4QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDMUQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUVwQzs7Ozs7R0FLRztBQUNILE1BQWUsT0FBTztJQUdwQjs7OztPQUlHO0lBQ0gsWUFBWSxPQUFnQjtRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDM0IsQ0FBQztDQVVGO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFdBQVksU0FBUSxPQUFPO0lBSy9COzs7O09BSUc7SUFDSCxZQUFZLE9BQWdCOztRQUMxQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsVUFBVSxtQ0FBSSxHQUFHLENBQUM7UUFDN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ25DLENBQUM7SUFF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QU8sR0FBYSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdW1qIGZyb20gJ3VtYXAtanMnO1xyXG5pbXBvcnQge1RTTkV9IGZyb20gJ0BrZWNrZWx0L3RzbmUnO1xyXG5cclxuaW1wb3J0IHtPcHRpb25zLCBEaXN0YW5jZU1ldHJpYywgQ29vcmRpbmF0ZXMsIFZlY3RvciwgVmVjdG9ycywgTWF0cml4fSBmcm9tICcuL3R5cGVfZGVjbGFyYXRpb25zJztcclxuaW1wb3J0IHtjYWxjRGlzdGFuY2VNYXRyaXgsIHRyYW5zcG9zZU1hdHJpeH0gZnJvbSAnLi9vcGVyYXRpb25zJztcclxuaW1wb3J0IHtTUEVCYXNlLCBQU1BFQmFzZX0gZnJvbSAnLi9zcGUnO1xyXG5pbXBvcnQge01lYXN1cmVyfSBmcm9tICcuL3N0cmluZy1tZWFzdXJlJztcclxuaW1wb3J0IHtBbGlnbmVkU2VxdWVuY2VFbmNvZGVyfSBmcm9tICcuL3NlcXVlbmNlLWVuY29kZXInO1xyXG5pbXBvcnQge2Fzc2VydH0gZnJvbSAnLi9vcGVyYXRpb25zJztcclxuXHJcbi8qKlxyXG4gKiBBYnN0cmFjdCBkaW1lbnNpb25hbGl0eSByZWR1Y2VyLlxyXG4gKlxyXG4gKiBAYWJzdHJhY3RcclxuICogQGNsYXNzIFJlZHVjZXJcclxuICovXHJcbmFic3RyYWN0IGNsYXNzIFJlZHVjZXIge1xyXG4gIHByb3RlY3RlZCBkYXRhOiBWZWN0b3JzO1xyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFJlZHVjZXIuXHJcbiAgICogQHBhcmFtIHtPcHRpb25zfSBvcHRpb25zIE9wdGlvbnMgdG8gcGFzcyB0byB0aGUgY29uc3RydWN0b3IuXHJcbiAgICogQG1lbWJlcm9mIFJlZHVjZXJcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBPcHRpb25zKSB7XHJcbiAgICB0aGlzLmRhdGEgPSBvcHRpb25zLmRhdGE7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJcyB0byBlbWJlZCB0aGUgZGF0YSBnaXZlbiBpbnRvIHRoZSB0d28tZGltZW5zaW9uYWwgc3BhY2UuXHJcbiAgICpcclxuICAgKiBAYWJzdHJhY3RcclxuICAgKiBAcmV0dXJuIHtDb29yZGluYXRlc30gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcuXHJcbiAgICogQG1lbWJlcm9mIFJlZHVjZXJcclxuICAgKi9cclxuICBhYnN0cmFjdCB0cmFuc2Zvcm0oKTogQ29vcmRpbmF0ZXM7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBJbXBsZW1lbnRzIHQtU05FIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbi5cclxuICpcclxuICogQGNsYXNzIFRTTkVSZWR1Y2VyXHJcbiAqIEBleHRlbmRzIHtSZWR1Y2VyfVxyXG4gKi9cclxuY2xhc3MgVFNORVJlZHVjZXIgZXh0ZW5kcyBSZWR1Y2VyIHtcclxuICBwcm90ZWN0ZWQgcmVkdWNlcjogVFNORTtcclxuICBwcm90ZWN0ZWQgaXRlcmF0aW9uczogbnVtYmVyO1xyXG4gIHByb3RlY3RlZCBkaXN0YW5jZTogRGlzdGFuY2VNZXRyaWM7XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgVFNORVJlZHVjZXIuXHJcbiAgICogQHBhcmFtIHtPcHRpb25zfSBvcHRpb25zIE9wdGlvbnMgdG8gcGFzcyB0byB0aGUgY29uc3RydWN0b3IuXHJcbiAgICogQG1lbWJlcm9mIFRTTkVSZWR1Y2VyXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3Iob3B0aW9uczogT3B0aW9ucykge1xyXG4gICAgc3VwZXIob3B0aW9ucyk7XHJcbiAgICB0aGlzLnJlZHVjZXIgPSBuZXcgVFNORShvcHRpb25zKTtcclxuICAgIHRoaXMuaXRlcmF0aW9ucyA9IG9wdGlvbnM/Lml0ZXJhdGlvbnMgPz8gMTAwO1xyXG4gICAgdGhpcy5kaXN0YW5jZSA9IG9wdGlvbnMuZGlzdGFuY2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbWJlZHMgdGhlIGRhdGEgZ2l2ZW4gaW50byB0aGUgdHdvLWRpbWVuc2lvbmFsIHNwYWNlIHVzaW5nIHQtU05FIG1ldGhvZC5cclxuICAgKiBAcmV0dXJuIHtDb29yZGluYXRlc30gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcuXHJcbiAgICovXHJcbiAgcHVibGljIHRyYW5zZm9ybSgpOiBDb29yZGluYXRlcyB7XHJcbiAgICB0aGlzLnJlZHVjZXIuaW5pdERhdGFEaXN0KGNhbGNEaXN0YW5jZU1hdHJpeCh0aGlzLmRhdGEsIHRoaXMuZGlzdGFuY2UpKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuaXRlcmF0aW9uczsgKytpKSB7XHJcbiAgICAgIHRoaXMucmVkdWNlci5zdGVwKCk7IC8vIGV2ZXJ5IHRpbWUgeW91IGNhbGwgdGhpcywgc29sdXRpb24gZ2V0cyBiZXR0ZXJcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnJlZHVjZXIuZ2V0U29sdXRpb24oKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBJbXBsZW1lbnRzIFVNQVAgZGltZW5zaW9uYWxpdHkgcmVkdWN0aW9uLlxyXG4gKlxyXG4gKiBAY2xhc3MgVU1BUFJlZHVjZXJcclxuICogQGV4dGVuZHMge1JlZHVjZXJ9XHJcbiAqL1xyXG5jbGFzcyBVTUFQUmVkdWNlciBleHRlbmRzIFJlZHVjZXIge1xyXG4gIHByb3RlY3RlZCByZWR1Y2VyOiB1bWouVU1BUDtcclxuICBwcm90ZWN0ZWQgZW5jb2RlcjogQWxpZ25lZFNlcXVlbmNlRW5jb2RlcjtcclxuICBwcm90ZWN0ZWQgZGlzdGFuY2VGbjogRnVuY3Rpb247XHJcbiAgcHJvdGVjdGVkIHZlY3RvcnM6IG51bWJlcltdW107XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgVU1BUFJlZHVjZXIuXHJcbiAgICogQHBhcmFtIHtPcHRpb25zfSBvcHRpb25zIE9wdGlvbnMgdG8gcGFzcyB0byB0aGUgY29uc3RydWN0b3IuXHJcbiAgICogQG1lbWJlcm9mIFVNQVBSZWR1Y2VyXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3Iob3B0aW9uczogT3B0aW9ucykge1xyXG4gICAgc3VwZXIob3B0aW9ucyk7XHJcblxyXG4gICAgYXNzZXJ0KCdkaXN0YW5jZUZuJyBpbiBvcHRpb25zKTtcclxuXHJcbiAgICB0aGlzLmVuY29kZXIgPSBuZXcgQWxpZ25lZFNlcXVlbmNlRW5jb2RlcigpO1xyXG4gICAgdGhpcy5kaXN0YW5jZUZuID0gb3B0aW9ucy5kaXN0YW5jZUZuO1xyXG4gICAgdGhpcy52ZWN0b3JzID0gW107XHJcbiAgICBvcHRpb25zLmRpc3RhbmNlRm4gPSB0aGlzLl9lbmNvZGVkRGlzdGFuY2UuYmluZCh0aGlzKTtcclxuICAgIHRoaXMucmVkdWNlciA9IG5ldyB1bWouVU1BUChvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEN1c3RvbSBkaXN0YW5jZSB3cmFwcGVyIHRvIGhhdmUgbnVtZXJpYyBpbnB1dHMgaW5zdGVhZCBvZiBzdHJpbmcgb25lcy5cclxuICAgKlxyXG4gICAqIEBwcm90ZWN0ZWRcclxuICAgKiBAcGFyYW0ge251bWJlcltdfSBhIFRoZSBmaXJzdCBpdGVtLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyW119IGIgVGhlIGZpcnN0IGl0ZW0uXHJcbiAgICogQHJldHVybiB7bnVtYmVyfSBEaXN0YW5jZSBtZXRyaWMuXHJcbiAgICogQG1lbWJlcm9mIFVNQVBSZWR1Y2VyXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIF9lbmNvZGVkRGlzdGFuY2UoYTogbnVtYmVyW10sIGI6IG51bWJlcltdKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmRpc3RhbmNlRm4odGhpcy5kYXRhW2FbMF1dLCB0aGlzLmRhdGFbYlswXV0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW5jb2RlcyB0aGUgaW5wdXQgZGF0YSBhcyBhIHZlY3RvciBvZiBpbmRpY2VzLlxyXG4gICAqXHJcbiAgICogQHByb3RlY3RlZFxyXG4gICAqIEBtZW1iZXJvZiBVTUFQUmVkdWNlclxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBfZW5jb2RlKCkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyArK2kpIHtcclxuICAgICAgdGhpcy52ZWN0b3JzLnB1c2goW2ldKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtYmVkcyB0aGUgZGF0YSBnaXZlbiBpbnRvIHRoZSB0d28tZGltZW5zaW9uYWwgc3BhY2UgdXNpbmcgVU1BUCBtZXRob2QuXHJcbiAgICogQHJldHVybiB7Q29vcmRpbmF0ZXN9IENhcnRlc2lhbiBjb29yZGluYXRlIG9mIHRoaXMgZW1iZWRkaW5nLlxyXG4gICAqL1xyXG4gIHB1YmxpYyB0cmFuc2Zvcm0oKTogQ29vcmRpbmF0ZXMge1xyXG4gICAgdGhpcy5fZW5jb2RlKCk7XHJcblxyXG4gICAgY29uc3QgZW1iZWRkaW5nID0gdGhpcy5yZWR1Y2VyLmZpdCh0aGlzLnZlY3RvcnMpO1xyXG5cclxuICAgIGZ1bmN0aW9uIGFycmF5Q2FzdDJDb29yZGluYXRlcyhkYXRhOiBudW1iZXJbXVtdKTogQ29vcmRpbmF0ZXMge1xyXG4gICAgICByZXR1cm4gbmV3IEFycmF5KGRhdGEubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaSkgPT4gKFZlY3Rvci5mcm9tKGRhdGFbaV0pKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGFycmF5Q2FzdDJDb29yZGluYXRlcyhlbWJlZGRpbmcpO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEltcGxlbWVudHMgb3JpZ2luYWwgU1BFIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbi5cclxuICpcclxuICogQGNsYXNzIFNQRVJlZHVjZXJcclxuICogQGV4dGVuZHMge1JlZHVjZXJ9XHJcbiAqL1xyXG5jbGFzcyBTUEVSZWR1Y2VyIGV4dGVuZHMgUmVkdWNlciB7XHJcbiAgcHJvdGVjdGVkIHJlZHVjZXI6IFNQRUJhc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgU1BFUmVkdWNlci5cclxuICAgKiBAcGFyYW0ge09wdGlvbnN9IG9wdGlvbnMgT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBjb25zdHJ1Y3Rvci5cclxuICAgKiBAbWVtYmVyb2YgU1BFUmVkdWNlclxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9wdGlvbnMpIHtcclxuICAgIHN1cGVyKG9wdGlvbnMpO1xyXG4gICAgdGhpcy5yZWR1Y2VyID0gbmV3IFNQRUJhc2Uob3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbWJlZHMgdGhlIGRhdGEgZ2l2ZW4gaW50byB0aGUgdHdvLWRpbWVuc2lvbmFsIHNwYWNlIHVzaW5nIHRoZSBvcmlnaW5hbCBTUEUgbWV0aG9kLlxyXG4gICAqIEByZXR1cm4ge0Nvb3JkaW5hdGVzfSBDYXJ0ZXNpYW4gY29vcmRpbmF0ZSBvZiB0aGlzIGVtYmVkZGluZy5cclxuICAgKi9cclxuICBwdWJsaWMgdHJhbnNmb3JtKCk6IENvb3JkaW5hdGVzIHtcclxuICAgIHJldHVybiB0aGlzLnJlZHVjZXIuZW1iZWQodGhpcy5kYXRhKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBJbXBsZW1lbnRzIG1vZGlmaWVkIFNQRSBkaW1lbnNpb25hbGl0eSByZWR1Y3Rpb24uXHJcbiAqXHJcbiAqIEBjbGFzcyBQU1BFUmVkdWNlclxyXG4gKiBAZXh0ZW5kcyB7UmVkdWNlcn1cclxuICovXHJcbmNsYXNzIFBTUEVSZWR1Y2VyIGV4dGVuZHMgUmVkdWNlciB7XHJcbiAgcHJvdGVjdGVkIHJlZHVjZXI6IFBTUEVCYXNlO1xyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFBTUEVSZWR1Y2VyLlxyXG4gICAqIEBwYXJhbSB7T3B0aW9uc30gb3B0aW9ucyBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGNvbnN0cnVjdG9yLlxyXG4gICAqIEBtZW1iZXJvZiBQU1BFUmVkdWNlclxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9wdGlvbnMpIHtcclxuICAgIHN1cGVyKG9wdGlvbnMpO1xyXG4gICAgdGhpcy5yZWR1Y2VyID0gbmV3IFBTUEVCYXNlKG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW1iZWRzIHRoZSBkYXRhIGdpdmVuIGludG8gdGhlIHR3by1kaW1lbnNpb25hbCBzcGFjZSB1c2luZyB0aGUgbW9kaWZpZWQgU1BFIG1ldGhvZC5cclxuICAgKiBAcmV0dXJuIHtDb29yZGluYXRlc30gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcuXHJcbiAgICovXHJcbiAgcHVibGljIHRyYW5zZm9ybSgpOiBDb29yZGluYXRlcyB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWR1Y2VyLmVtYmVkKHRoaXMuZGF0YSk7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogVW5pZmllZCBjbGFzcyBpbXBsZW1lbnRpbmcgZGlmZmVyZW50IGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbiBtZXRob2RzLlxyXG4gKlxyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBEaW1lbnNpb25hbGl0eVJlZHVjZXJcclxuICovXHJcbmV4cG9ydCBjbGFzcyBEaW1lbnNpb25hbGl0eVJlZHVjZXIge1xyXG4gIHByaXZhdGUgcmVkdWNlcjogUmVkdWNlciB8IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgc3RhdGljIG1ldGhvZHM6IHN0cmluZ1tdID0gWydVTUFQJywgJ3QtU05FJywgJ1NQRScsICdwU1BFJ107XHJcbiAgcHJpdmF0ZSBtZWFzdXJlcjogTWVhc3VyZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgRGltZW5zaW9uYWxpdHlSZWR1Y2VyLlxyXG4gICAqIEBwYXJhbSB7YW55W119IGRhdGEgVmVjdG9ycyB0byBlbWJlZC5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kIEVtYmVkZGluZyBtZXRob2QgdG8gYmUgYXBwbGllZFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRyaWMgRGlzdGFuY2UgbWV0cmljIHRvIGJlIGNvbXB1dGVkIGJldHdlZW4gZWFjaCBvZiB0aGUgdmVjdG9ycy5cclxuICAgKiBAcGFyYW0ge09wdGlvbnN9IFtvcHRpb25zXSBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGltcGxlbWVudGluZyBlbWJlZGRlcnMuXHJcbiAgICogQG1lbWJlcm9mIERpbWVuc2lvbmFsaXR5UmVkdWNlclxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKGRhdGE6IGFueVtdLCBtZXRob2Q6IHN0cmluZywgbWV0cmljOiBzdHJpbmcsIG9wdGlvbnM/OiBPcHRpb25zKSB7XHJcbiAgICBhc3NlcnQoRGltZW5zaW9uYWxpdHlSZWR1Y2VyLmF2YWlsYWJsZU1ldGhvZHMuaW5jbHVkZXMobWV0aG9kKSwgYFRoZSBtZXRob2QgJyR7bWV0aG9kfScgaXMgbm90IHN1cHBvcnRlZGApO1xyXG5cclxuICAgIHRoaXMubWVhc3VyZXIgPSBuZXcgTWVhc3VyZXIobWV0cmljKTtcclxuICAgIGNvbnN0IG1lYXN1cmUgPSB0aGlzLm1lYXN1cmVyLmdldE1lYXN1cmUoKVxyXG5cclxuICAgIGlmIChtZXRob2QgPT0gJ1VNQVAnKSB7XHJcbiAgICAgIHRoaXMucmVkdWNlciA9IG5ldyBVTUFQUmVkdWNlcih7XHJcbiAgICAgICAgLi4ue2RhdGE6IGRhdGF9LCBcclxuICAgICAgICAuLi57ZGlzdGFuY2VGbjogbWVhc3VyZX0sIFxyXG4gICAgICAgIC4uLntuRXBvY2hzOiBvcHRpb25zPy5jeWNsZXN9LFxyXG4gICAgICAgIC4uLm9wdGlvbnNcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKG1ldGhvZCA9PSAndC1TTkUnKSB7XHJcbiAgICAgIHRoaXMucmVkdWNlciA9IG5ldyBUU05FUmVkdWNlcih7XHJcbiAgICAgICAgLi4ue2RhdGE6IGRhdGF9LFxyXG4gICAgICAgIC4uLntkaXN0YW5jZTogbWVhc3VyZX0sXHJcbiAgICAgICAgLi4ue2l0ZXJhdGlvbnM6IG9wdGlvbnM/LmN5Y2xlcyA/PyB1bmRlZmluZWR9LFxyXG4gICAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChtZXRob2QgPT0gJ1NQRScpIHtcclxuICAgICAgdGhpcy5yZWR1Y2VyID0gbmV3IFNQRVJlZHVjZXIoey4uLntkYXRhOiBkYXRhfSwgLi4ue2Rpc3RhbmNlOiBtZWFzdXJlfSwgLi4ub3B0aW9uc30pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZWR1Y2VyID0gbmV3IFBTUEVSZWR1Y2VyKHsuLi57ZGF0YTogZGF0YX0sIC4uLntkaXN0YW5jZTogbWVhc3VyZX0sIC4uLm9wdGlvbnN9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtYmVkcyB0aGUgZGF0YSBnaXZlbiBpbnRvIHRoZSB0d28tZGltZW5zaW9uYWwgc3BhY2UgdXNpbmcgdGhlIGNob3NlbiBtZXRob2QuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHRyYW5zcG9zZSBXaGV0aGVyIHRvIHRyYW5zZm9ybSBjb29yZGluYXRlcyB0byBoYXZlIGNvbHVtbnMtZmlyc3Qgb3JpZW50YXRpb24uXHJcbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBlbWJlZGRpbmcgbWV0aG9kIHdhcyBub3QgZm91bmQuXHJcbiAgICogQHJldHVybiB7Q29vcmRpbmF0ZXN9IENhcnRlc2lhbiBjb29yZGluYXRlIG9mIHRoaXMgZW1iZWRkaW5nLlxyXG4gICAqIEBtZW1iZXJvZiBEaW1lbnNpb25hbGl0eVJlZHVjZXJcclxuICAgKi9cclxuICBwdWJsaWMgdHJhbnNmb3JtKHRyYW5zcG9zZTogYm9vbGVhbiA9IGZhbHNlKTogQ29vcmRpbmF0ZXMge1xyXG4gICAgaWYgKHRoaXMucmVkdWNlciA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWR1Y2VyIHdhcyBub3QgZGVmaW5lZC4nKTtcclxuICAgIH1cclxuICAgIGxldCBlbWJlZGRpbmcgPSB0aGlzLnJlZHVjZXIudHJhbnNmb3JtKCk7XHJcblxyXG4gICAgaWYgKHRyYW5zcG9zZSkge1xyXG4gICAgICBlbWJlZGRpbmcgPSB0cmFuc3Bvc2VNYXRyaXgoZW1iZWRkaW5nKTtcclxuICAgIH1cclxuICAgIHJldHVybiBlbWJlZGRpbmc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbiBtZXRob2RzIGF2YWlsYWJsZS5cclxuICAgKlxyXG4gICAqIEByZWFkb25seVxyXG4gICAqIEBtZW1iZXJvZiBEaW1lbnNpb25hbGl0eVJlZHVjZXJcclxuICAgKi9cclxuICBzdGF0aWMgZ2V0IGF2YWlsYWJsZU1ldGhvZHMoKSB7XHJcbiAgICByZXR1cm4gRGltZW5zaW9uYWxpdHlSZWR1Y2VyLm1ldGhvZHM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Class to categorial encode/decode aligned amino acid residues sequence.
|
|
3
|
+
*
|
|
4
|
+
* @export
|
|
5
|
+
* @class AlignedSequenceEncoder
|
|
6
|
+
*/
|
|
7
|
+
export declare class AlignedSequenceEncoder {
|
|
8
|
+
protected aa2num: {
|
|
9
|
+
[name: string]: number;
|
|
10
|
+
};
|
|
11
|
+
protected num2aa: {
|
|
12
|
+
[code: number]: string;
|
|
13
|
+
};
|
|
14
|
+
constructor();
|
|
15
|
+
/**
|
|
16
|
+
* Truncate NH2 and -COOH terminals of the given sequence.
|
|
17
|
+
*
|
|
18
|
+
* @static
|
|
19
|
+
* @param {string} seq The sequence provided.
|
|
20
|
+
* @return {string} Truncated sequence.
|
|
21
|
+
* @memberof AlignedSequenceEncoder
|
|
22
|
+
*/
|
|
23
|
+
static _truncateSequence(seq: string): string;
|
|
24
|
+
/**
|
|
25
|
+
* Cuts auxiliary defises before a residue.
|
|
26
|
+
*
|
|
27
|
+
* @static
|
|
28
|
+
* @param {string} seq The sequence to process.
|
|
29
|
+
* @return {string} Processed sequence.
|
|
30
|
+
* @memberof AlignedSequenceEncoder
|
|
31
|
+
*/
|
|
32
|
+
static _dropDefises(seq: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Performs truncation and cutting auxiliary defises.
|
|
35
|
+
*
|
|
36
|
+
* @static
|
|
37
|
+
* @param {string} sequence The sequence work under process.
|
|
38
|
+
* @return {string} Result of cleaning.
|
|
39
|
+
* @memberof AlignedSequenceEncoder
|
|
40
|
+
*/
|
|
41
|
+
static clean(sequence: string): string;
|
|
42
|
+
/**
|
|
43
|
+
* Categorial encode of the sequence provided.
|
|
44
|
+
*
|
|
45
|
+
* @param {string} sequence The sequence.
|
|
46
|
+
* @return {number[]} Encoded vector.
|
|
47
|
+
* @memberof AlignedSequenceEncoder
|
|
48
|
+
*/
|
|
49
|
+
encode(sequence: string): number[];
|
|
50
|
+
/**
|
|
51
|
+
* Decode the encoded vector into the sequence back.
|
|
52
|
+
*
|
|
53
|
+
* @param {number[]} value The vector encoded.
|
|
54
|
+
* @return {string} Decoded sequence.
|
|
55
|
+
* @memberof AlignedSequenceEncoder
|
|
56
|
+
*/
|
|
57
|
+
decode(value: number[]): string;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=sequence-encoder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sequence-encoder.d.ts","sourceRoot":"","sources":["sequence-encoder.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,qBAAa,sBAAsB;IAC/B,SAAS,CAAC,MAAM,EAAE;QAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,CAAC;IAC3C,SAAS,CAAC,MAAM,EAAE;QAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,CAAC;;IA8B3C;;;;;;;OAOG;IACH,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAkB7C;;;;;;;OAOG;IACH,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIxC;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAItC;;;;;;OAMG;IACI,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAezC;;;;;;OAMG;IACI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;CAYzC"}
|
package/src/sequence-encoder.js
CHANGED
|
@@ -36,12 +36,12 @@ export class AlignedSequenceEncoder {
|
|
|
36
36
|
/**
|
|
37
37
|
* Truncate NH2 and -COOH terminals of the given sequence.
|
|
38
38
|
*
|
|
39
|
-
* @
|
|
39
|
+
* @static
|
|
40
40
|
* @param {string} seq The sequence provided.
|
|
41
41
|
* @return {string} Truncated sequence.
|
|
42
42
|
* @memberof AlignedSequenceEncoder
|
|
43
43
|
*/
|
|
44
|
-
_truncateSequence(seq) {
|
|
44
|
+
static _truncateSequence(seq) {
|
|
45
45
|
let start = 0;
|
|
46
46
|
let end = seq.length;
|
|
47
47
|
const termina = ['NH2', 'COOH'];
|
|
@@ -60,23 +60,24 @@ export class AlignedSequenceEncoder {
|
|
|
60
60
|
/**
|
|
61
61
|
* Cuts auxiliary defises before a residue.
|
|
62
62
|
*
|
|
63
|
-
* @
|
|
63
|
+
* @static
|
|
64
64
|
* @param {string} seq The sequence to process.
|
|
65
65
|
* @return {string} Processed sequence.
|
|
66
66
|
* @memberof AlignedSequenceEncoder
|
|
67
67
|
*/
|
|
68
|
-
_dropDefises(seq) {
|
|
68
|
+
static _dropDefises(seq) {
|
|
69
69
|
return seq.replace(/(-)([^-]+)/g, '$2');
|
|
70
70
|
}
|
|
71
71
|
/**
|
|
72
72
|
* Performs truncation and cutting auxiliary defises.
|
|
73
73
|
*
|
|
74
|
+
* @static
|
|
74
75
|
* @param {string} sequence The sequence work under process.
|
|
75
76
|
* @return {string} Result of cleaning.
|
|
76
77
|
* @memberof AlignedSequenceEncoder
|
|
77
78
|
*/
|
|
78
|
-
clean(sequence) {
|
|
79
|
-
return
|
|
79
|
+
static clean(sequence) {
|
|
80
|
+
return AlignedSequenceEncoder._dropDefises(AlignedSequenceEncoder._truncateSequence(sequence));
|
|
80
81
|
}
|
|
81
82
|
/**
|
|
82
83
|
* Categorial encode of the sequence provided.
|
|
@@ -86,7 +87,7 @@ export class AlignedSequenceEncoder {
|
|
|
86
87
|
* @memberof AlignedSequenceEncoder
|
|
87
88
|
*/
|
|
88
89
|
encode(sequence) {
|
|
89
|
-
const seq =
|
|
90
|
+
const seq = AlignedSequenceEncoder.clean(sequence);
|
|
90
91
|
const nItems = seq.length;
|
|
91
92
|
let values = new Array(nItems).fill(0);
|
|
92
93
|
for (let i = 0; i < nItems; ++i) {
|
|
@@ -113,4 +114,4 @@ export class AlignedSequenceEncoder {
|
|
|
113
114
|
return s;
|
|
114
115
|
}
|
|
115
116
|
}
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2UtZW5jb2Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlcXVlbmNlLWVuY29kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUVwQzs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxzQkFBc0I7SUFJL0I7UUFDSSxJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1YsR0FBRyxFQUFFLENBQUM7WUFDTixHQUFHLEVBQUUsQ0FBQztZQUNOLEdBQUcsRUFBRSxDQUFDO1lBQ04sR0FBRyxFQUFFLENBQUM7WUFDTixHQUFHLEVBQUUsQ0FBQztZQUNOLEdBQUcsRUFBRSxDQUFDO1lBQ04sR0FBRyxFQUFFLENBQUM7WUFDTixHQUFHLEVBQUUsQ0FBQztZQUNOLEdBQUcsRUFBRSxDQUFDO1lBQ04sR0FBRyxFQUFFLENBQUM7WUFDTixHQUFHLEVBQUUsRUFBRTtZQUNQLEdBQUcsRUFBRSxFQUFFO1lBQ1AsR0FBRyxFQUFFLEVBQUU7WUFDUCxHQUFHLEVBQUUsRUFBRTtZQUNQLEdBQUcsRUFBRSxFQUFFO1lBQ1AsR0FBRyxFQUFFLEVBQUU7WUFDUCxHQUFHLEVBQUUsRUFBRTtZQUNQLEdBQUcsRUFBRSxFQUFFO1lBQ1AsR0FBRyxFQUFFLEVBQUU7WUFDUCxHQUFHLEVBQUUsRUFBRTtZQUNQLEdBQUcsRUFBRSxFQUFFO1NBQ1YsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxpQkFB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QUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzFCO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Fzc2VydH0gZnJvbSAnLi9vcGVyYXRpb25zJztcclxuXHJcbi8qKlxyXG4gKiBDbGFzcyB0byBjYXRlZ29yaWFsIGVuY29kZS9kZWNvZGUgYWxpZ25lZCBhbWlubyBhY2lkIHJlc2lkdWVzIHNlcXVlbmNlLlxyXG4gKlxyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQWxpZ25lZFNlcXVlbmNlRW5jb2RlciB7XHJcbiAgICBwcm90ZWN0ZWQgYWEybnVtOiB7W25hbWU6IHN0cmluZ106IG51bWJlcn07XHJcbiAgICBwcm90ZWN0ZWQgbnVtMmFhOiB7W2NvZGU6IG51bWJlcl06IHN0cmluZ307XHJcblxyXG4gICAgY29uc3RydWN0b3IgKCkge1xyXG4gICAgICAgIHRoaXMuYWEybnVtID0ge1xyXG4gICAgICAgICAgICAnLSc6IDAsXHJcbiAgICAgICAgICAgICdBJzogMSxcclxuICAgICAgICAgICAgJ0MnOiAyLFxyXG4gICAgICAgICAgICAnRCc6IDMsXHJcbiAgICAgICAgICAgICdFJzogNCxcclxuICAgICAgICAgICAgJ0YnOiA1LFxyXG4gICAgICAgICAgICAnRyc6IDYsXHJcbiAgICAgICAgICAgICdIJzogNyxcclxuICAgICAgICAgICAgJ0knOiA4LFxyXG4gICAgICAgICAgICAnSyc6IDksXHJcbiAgICAgICAgICAgICdMJzogMTAsXHJcbiAgICAgICAgICAgICdNJzogMTEsXHJcbiAgICAgICAgICAgICdOJzogMTIsXHJcbiAgICAgICAgICAgICdQJzogMTMsXHJcbiAgICAgICAgICAgICdRJzogMTQsXHJcbiAgICAgICAgICAgICdSJzogMTUsXHJcbiAgICAgICAgICAgICdTJzogMTYsXHJcbiAgICAgICAgICAgICdUJzogMTcsXHJcbiAgICAgICAgICAgICdWJzogMTgsXHJcbiAgICAgICAgICAgICdXJzogMTksXHJcbiAgICAgICAgICAgICdZJzogMjAsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLm51bTJhYSA9IHt9O1xyXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuYWEybnVtKS5mb3JFYWNoKChbaywgdl0pID0+ICh0aGlzLm51bTJhYVt2XSA9IGspKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRydW5jYXRlIE5IMiBhbmQgLUNPT0ggdGVybWluYWxzIG9mIHRoZSBnaXZlbiBzZXF1ZW5jZS5cclxuICAgICAqXHJcbiAgICAgKiBAc3RhdGljXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VxIFRoZSBzZXF1ZW5jZSBwcm92aWRlZC5cclxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gVHJ1bmNhdGVkIHNlcXVlbmNlLlxyXG4gICAgICogQG1lbWJlcm9mIEFsaWduZWRTZXF1ZW5jZUVuY29kZXJcclxuICAgICAqL1xyXG4gICAgc3RhdGljIF90cnVuY2F0ZVNlcXVlbmNlKHNlcTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgc3RhcnQgPSAwO1xyXG4gICAgICAgIGxldCBlbmQgPSBzZXEubGVuZ3RoO1xyXG4gICAgICAgIGNvbnN0IHRlcm1pbmEgPSBbJ05IMicsICdDT09IJ107XHJcbiAgICBcclxuICAgICAgICBpZiAoc2VxLnN0YXJ0c1dpdGgodGVybWluYVswXSkpIHtcclxuICAgICAgICAgICAgY29uc3QgbCA9IHRlcm1pbmFbMF0ubGVuZ3RoOyAvLyBDdXQgb25seSAnTkgyJyB3aXRob3V0IGZvbGxvd2luZyAnLScuXHJcbiAgICAgICAgICAgIGFzc2VydChzZXFbbF0gPT0gJy0nLCBgV3Jvbmcgc2VxdWVuY2UgZm9ybWF0OiAke3Rlcm1pbmFbMF19IHdpdGhvdXQgZm9sbG93aW5nICctJyBpbiAnJHtzZXF9Jy5gKVxyXG4gICAgICAgICAgICBzdGFydCA9IGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzZXEuZW5kc1dpdGgodGVybWluYVsxXSkpIHtcclxuICAgICAgICAgICAgY29uc3QgbCA9IHRlcm1pbmFbMV0ubGVuZ3RoKzE7IC8vIEN1dCBib3RoICdDT09IJyBhbmQgcHJlY2VuZGluZyAnLScuXHJcbiAgICAgICAgICAgIGFzc2VydChzZXFbZW5kLWxdID09ICctJywgYFdyb25nIHNlcXVlbmNlIGZvcm1hdDogJHt0ZXJtaW5hWzFdfSB3aXRob3V0ICctJyBwcmVjZW5kaW5nIGluICcke3NlcX0nLmApXHJcbiAgICAgICAgICAgIGVuZCAtPSBsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc2VxLnN1YnN0cmluZyhzdGFydCwgZW5kKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEN1dHMgYXV4aWxpYXJ5IGRlZmlzZXMgYmVmb3JlIGEgcmVzaWR1ZS5cclxuICAgICAqXHJcbiAgICAgKiBAc3RhdGljXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VxIFRoZSBzZXF1ZW5jZSB0byBwcm9jZXNzLlxyXG4gICAgICogQHJldHVybiB7c3RyaW5nfSBQcm9jZXNzZWQgc2VxdWVuY2UuXHJcbiAgICAgKiBAbWVtYmVyb2YgQWxpZ25lZFNlcXVlbmNlRW5jb2RlclxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgX2Ryb3BEZWZpc2VzKHNlcTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gc2VxLnJlcGxhY2UoLygtKShbXi1dKykvZywgJyQyJylcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBlcmZvcm1zIHRydW5jYXRpb24gYW5kIGN1dHRpbmcgYXV4aWxpYXJ5IGRlZmlzZXMuXHJcbiAgICAgKlxyXG4gICAgICogQHN0YXRpY1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlcXVlbmNlIFRoZSBzZXF1ZW5jZSB3b3JrIHVuZGVyIHByb2Nlc3MuXHJcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFJlc3VsdCBvZiBjbGVhbmluZy5cclxuICAgICAqIEBtZW1iZXJvZiBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBjbGVhbihzZXF1ZW5jZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gQWxpZ25lZFNlcXVlbmNlRW5jb2Rlci5fZHJvcERlZmlzZXMoQWxpZ25lZFNlcXVlbmNlRW5jb2Rlci5fdHJ1bmNhdGVTZXF1ZW5jZShzZXF1ZW5jZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2F0ZWdvcmlhbCBlbmNvZGUgb2YgdGhlIHNlcXVlbmNlIHByb3ZpZGVkLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXF1ZW5jZSBUaGUgc2VxdWVuY2UuXHJcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJbXX0gRW5jb2RlZCB2ZWN0b3IuXHJcbiAgICAgKiBAbWVtYmVyb2YgQWxpZ25lZFNlcXVlbmNlRW5jb2RlclxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZW5jb2RlKHNlcXVlbmNlOiBzdHJpbmcpOiBudW1iZXJbXSB7XHJcbiAgICAgICAgY29uc3Qgc2VxID0gQWxpZ25lZFNlcXVlbmNlRW5jb2Rlci5jbGVhbihzZXF1ZW5jZSk7XHJcbiAgICAgICAgY29uc3Qgbkl0ZW1zID0gc2VxLmxlbmd0aDtcclxuICAgICAgICBsZXQgdmFsdWVzID0gbmV3IEFycmF5KG5JdGVtcykuZmlsbCgwKTtcclxuICAgIFxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpIHtcclxuICAgICAgICAgICAgbGV0IGNoYXIgPSBzZXFbaV07XHJcbiAgICBcclxuICAgICAgICAgICAgYXNzZXJ0KGNoYXIgaW4gdGhpcy5hYTJudW0sIGBVbmtub3duIGNoYXIgJyR7Y2hhcn0nIGZvdW5kIGluIHNlcXVlbmNlICcke3NlcX0nYCk7XHJcbiAgICBcclxuICAgICAgICAgICAgdmFsdWVzW2ldID0gdGhpcy5hYTJudW1bY2hhcl07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB2YWx1ZXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWNvZGUgdGhlIGVuY29kZWQgdmVjdG9yIGludG8gdGhlIHNlcXVlbmNlIGJhY2suXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtudW1iZXJbXX0gdmFsdWUgVGhlIHZlY3RvciBlbmNvZGVkLlxyXG4gICAgICogQHJldHVybiB7c3RyaW5nfSBEZWNvZGVkIHNlcXVlbmNlLlxyXG4gICAgICogQG1lbWJlcm9mIEFsaWduZWRTZXF1ZW5jZUVuY29kZXJcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRlY29kZSh2YWx1ZTogbnVtYmVyW10pOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCBzOiBzdHJpbmcgPSAnJztcclxuICAgIFxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgbGV0IGNvZGUgPSB2YWx1ZVtpXTtcclxuXHJcbiAgICAgICAgICAgIGFzc2VydChjb2RlIGluIHRoaXMubnVtMmFhLCBgVW5rbm93biBjb2RlICcke2NvZGV9JyBmb3VuZCBpbiB2ZWN0b3IgJyR7dmFsdWV9J2ApO1xyXG5cclxuICAgICAgICAgICAgcyArPSB0aGlzLm51bTJhYVtjb2RlXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHM7XHJcbiAgICB9XHJcbn1cclxuIl19
|
package/src/spe.d.ts
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Options, Coordinates, Vectors, DistanceMetric } from './type_declarations';
|
|
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 declare class SPEBase {
|
|
10
|
+
protected static dimension: number;
|
|
11
|
+
protected steps: number;
|
|
12
|
+
protected cycles: number;
|
|
13
|
+
protected cutoff: number;
|
|
14
|
+
protected lambda: number;
|
|
15
|
+
protected dlambda: number;
|
|
16
|
+
protected lambda2: number;
|
|
17
|
+
protected dlambda2: number;
|
|
18
|
+
protected epsilon: number;
|
|
19
|
+
protected distanceFunction: DistanceMetric;
|
|
20
|
+
protected distance: Coordinates;
|
|
21
|
+
/**
|
|
22
|
+
* Creates an instance of SPEBase.
|
|
23
|
+
* @param {Options} [options] Options to pass to the constructor.
|
|
24
|
+
* @memberof SPEBase
|
|
25
|
+
*/
|
|
26
|
+
constructor(options?: Options);
|
|
27
|
+
/**
|
|
28
|
+
* Initializes distance matrix.
|
|
29
|
+
*
|
|
30
|
+
* @protected
|
|
31
|
+
* @param {Vectors} vectors Input vectors to calculate distance between.
|
|
32
|
+
* @memberof SPEBase
|
|
33
|
+
*/
|
|
34
|
+
protected initDistance(vectors: Vectors): void;
|
|
35
|
+
/**
|
|
36
|
+
* Calculates distance between the two vectors given.
|
|
37
|
+
*
|
|
38
|
+
* @param {Vectors} vectors Set of vectors to calculate distances between.
|
|
39
|
+
* @param {number} index1 Index of the first vector of the pair.
|
|
40
|
+
* @param {number} index2 Index of the second vector of the pair.
|
|
41
|
+
* @return {number} Distance between these two vectors.
|
|
42
|
+
*/
|
|
43
|
+
protected calcDistance(vectors: Vectors, index1: number, index2: number): number;
|
|
44
|
+
/**
|
|
45
|
+
* Embeds the vectors given into a two-dimensional space.
|
|
46
|
+
*
|
|
47
|
+
* @param {Vectors} vectors D-dimensional coordinates.
|
|
48
|
+
* @return {Coordinates} SPE coordinates in D space.
|
|
49
|
+
*/
|
|
50
|
+
embed(vectors: Vectors): Coordinates;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Implements modified stochastic proximity embedding.
|
|
54
|
+
*
|
|
55
|
+
* @export
|
|
56
|
+
* @class PSPEBase
|
|
57
|
+
* @link doi:10.1016/S1093-3263(03)00155-4
|
|
58
|
+
*/
|
|
59
|
+
export declare class PSPEBase extends SPEBase {
|
|
60
|
+
/**
|
|
61
|
+
* Embeds the vectors given into a two-dimensional space using a modified update rule.
|
|
62
|
+
*
|
|
63
|
+
* @param {Vectors} vectors D-dimensional coordinates.
|
|
64
|
+
* @return {Coordinates} SPE coordinates in D space.
|
|
65
|
+
*/
|
|
66
|
+
embed(vectors: Vectors): Coordinates;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=spe.d.ts.map
|
package/src/spe.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spe.d.ts","sourceRoot":"","sources":["spe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAGlF;;;;;;GAMG;AACH,qBAAa,OAAO;IAClB,SAAS,CAAC,MAAM,CAAC,SAAS,SAAK;IAC/B,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC;IAC3C,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC;IAEhC;;;;OAIG;gBACS,OAAO,CAAC,EAAE,OAAO;IAgB7B;;;;;;OAMG;IACH,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO;IAIvC;;;;;;;OAOG;IACH,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAIhF;;;;;OAKG;IACI,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW;CA4C5C;AAED;;;;;;GAMG;AACF,qBAAa,QAAS,SAAQ,OAAO;IACpC;;;;;OAKG;IACI,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW;CAsC5C"}
|
package/src/spe.js
CHANGED
|
@@ -148,4 +148,4 @@ export class PSPEBase extends SPEBase {
|
|
|
148
148
|
return coordinates;
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3BlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQywwQkFBMEIsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRXBIOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxPQUFPO0lBYWxCOzs7O09BSUc7SUFDSCxZQUFZLE9BQWlCOztRQUMzQixJQUFJLENBQUMsS0FBSyxTQUFHLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxLQUFLLG1DQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxTQUFHLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxNQUFNLG1DQUFJLEdBQUcsQ0FBQztRQUNyQyw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLE1BQU0sU0FBRyxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsTUFBTSxtQ0FBSSxDQUFDLENBQUM7UUFDbkMsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxNQUFNLFNBQUcsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE1BQU0sbUNBQUksR0FBRyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxPQUFPLFNBQUcsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE9BQU8sbUNBQUksSUFBSSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBQyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFDLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxTQUFHLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxPQUFPLG1DQUFJLEtBQUssQ0FBQztRQUN6Qyx1Q0FBdUM7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQixTQUFHLE9BQU8sYUFBUCxP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QyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDM0MsMEVBQTBFO2dCQUMxRSxNQUFNLENBQUMsR0FBRywwQkFBMEIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2pELGlEQUFpRDtnQkFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO29CQUN2RCxNQUFNLFVBQVUsR0FBRyxNQUFNLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNqRCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN6QyxpQ0FBaUM7b0JBQ2pDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUN2RDthQUNGO1lBQ0QsaUVBQWlFO1lBQ2pFLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ3ZCLElBQUksTUFBTSxJQUFJLEVBQUUsRUFBRTtnQkFDaEIsTUFBTTthQUNQO1NBQ0Y7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09wdGlvbnMsIENvb3JkaW5hdGVzLCBWZWN0b3JzLCBEaXN0YW5jZU1ldHJpY30gZnJvbSAnLi90eXBlX2RlY2xhcmF0aW9ucyc7XHJcbmltcG9ydCB7Y2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UsIGNhbGNEaXN0YW5jZU1hdHJpeCwgZmlsbFJhbmRvbU1hdHJpeCwgdmVjdG9yQWRkLCByYW5kb21JbnR9IGZyb20gJy4vb3BlcmF0aW9ucyc7XHJcblxyXG4vKipcclxuICogSW1wbGVtZW50cyBzdG9jaGFzdGljIHByb3hpbWl0eSBlbWJlZGRpbmcuXHJcbiAqXHJcbiAqIEBleHBvcnRcclxuICogQGNsYXNzIFNQRUJhc2VcclxuICogQGxpbmsgZG9pOjEwLjEwMTYvUzEwOTMtMzI2MygwMykwMDE1NS00XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU1BFQmFzZSB7XHJcbiAgcHJvdGVjdGVkIHN0YXRpYyBkaW1lbnNpb24gPSAyO1xyXG4gIHByb3RlY3RlZCBzdGVwczogbnVtYmVyO1xyXG4gIHByb3RlY3RlZCBjeWNsZXM6IG51bWJlcjtcclxuICBwcm90ZWN0ZWQgY3V0b2ZmOiBudW1iZXI7XHJcbiAgcHJvdGVjdGVkIGxhbWJkYTogbnVtYmVyO1xyXG4gIHByb3RlY3RlZCBkbGFtYmRhOiBudW1iZXI7XHJcbiAgcHJvdGVjdGVkIGxhbWJkYTI6IG51bWJlcjtcclxuICBwcm90ZWN0ZWQgZGxhbWJkYTI6IG51bWJlcjtcclxuICBwcm90ZWN0ZWQgZXBzaWxvbjogbnVtYmVyO1xyXG4gIHByb3RlY3RlZCBkaXN0YW5jZUZ1bmN0aW9uOiBEaXN0YW5jZU1ldHJpYztcclxuICBwcm90ZWN0ZWQgZGlzdGFuY2U6IENvb3JkaW5hdGVzO1xyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFNQRUJhc2UuXHJcbiAgICogQHBhcmFtIHtPcHRpb25zfSBbb3B0aW9uc10gT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBjb25zdHJ1Y3Rvci5cclxuICAgKiBAbWVtYmVyb2YgU1BFQmFzZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBPcHRpb25zKSB7XHJcbiAgICB0aGlzLnN0ZXBzID0gb3B0aW9ucz8uc3RlcHMgPz8gMDtcclxuICAgIHRoaXMuY3ljbGVzID0gb3B0aW9ucz8uY3ljbGVzID8/IDFlNjtcclxuICAgIC8vIFNlbGVjdCBhIGN1dG9mZiBkaXN0YW5jZSB7Y3V0b2ZmfSBhbmQgLi4uXHJcbiAgICB0aGlzLmN1dG9mZiA9IG9wdGlvbnM/LmN1dG9mZiA/PyAwO1xyXG4gICAgLy8gLi4uIGFuIGluaXRpYWwgbGVhcm5pbmcgcmF0ZSB7bGFtYmRhfSA+IDBcclxuICAgIHRoaXMubGFtYmRhID0gb3B0aW9ucz8ubGFtYmRhID8/IDIuMDtcclxuICAgIHRoaXMuZGxhbWJkYSA9IG9wdGlvbnM/LmRsYW1iZGEgPz8gMC4wMTtcclxuICAgIHRoaXMubGFtYmRhMiA9IHRoaXMubGFtYmRhLzIuO1xyXG4gICAgdGhpcy5kbGFtYmRhMiA9IHRoaXMuZGxhbWJkYS8yLjtcclxuICAgIHRoaXMuZXBzaWxvbiA9IG9wdGlvbnM/LmVwc2lsb24gPz8gMWUtMTA7XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYnJhY2Utc3R5bGVcclxuICAgIHRoaXMuZGlzdGFuY2VGdW5jdGlvbiA9IG9wdGlvbnM/LmRpc3RhbmNlID8/IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlO1xyXG4gICAgdGhpcy5kaXN0YW5jZSA9IFtdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgZGlzdGFuY2UgbWF0cml4LlxyXG4gICAqXHJcbiAgICogQHByb3RlY3RlZFxyXG4gICAqIEBwYXJhbSB7VmVjdG9yc30gdmVjdG9ycyBJbnB1dCB2ZWN0b3JzIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZSBiZXR3ZWVuLlxyXG4gICAqIEBtZW1iZXJvZiBTUEVCYXNlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGluaXREaXN0YW5jZSh2ZWN0b3JzOiBWZWN0b3JzKSB7XHJcbiAgICB0aGlzLmRpc3RhbmNlID0gY2FsY0Rpc3RhbmNlTWF0cml4KHZlY3RvcnMsIHRoaXMuZGlzdGFuY2VGdW5jdGlvbik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWxjdWxhdGVzIGRpc3RhbmNlIGJldHdlZW4gdGhlIHR3byB2ZWN0b3JzIGdpdmVuLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7VmVjdG9yc30gdmVjdG9ycyBTZXQgb2YgdmVjdG9ycyB0byBjYWxjdWxhdGUgZGlzdGFuY2VzIGJldHdlZW4uXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4MSBJbmRleCBvZiB0aGUgZmlyc3QgdmVjdG9yIG9mIHRoZSBwYWlyLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleDIgSW5kZXggb2YgdGhlIHNlY29uZCB2ZWN0b3Igb2YgdGhlIHBhaXIuXHJcbiAgICogQHJldHVybiB7bnVtYmVyfSBEaXN0YW5jZSBiZXR3ZWVuIHRoZXNlIHR3byB2ZWN0b3JzLlxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBjYWxjRGlzdGFuY2UodmVjdG9yczogVmVjdG9ycywgaW5kZXgxOiBudW1iZXIsIGluZGV4MjogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmRpc3RhbmNlW2luZGV4MV1baW5kZXgyXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtYmVkcyB0aGUgdmVjdG9ycyBnaXZlbiBpbnRvIGEgdHdvLWRpbWVuc2lvbmFsIHNwYWNlLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7VmVjdG9yc30gdmVjdG9ycyBELWRpbWVuc2lvbmFsIGNvb3JkaW5hdGVzLlxyXG4gICAqIEByZXR1cm4ge0Nvb3JkaW5hdGVzfSBTUEUgY29vcmRpbmF0ZXMgaW4gRCBzcGFjZS5cclxuICAgKi9cclxuICBwdWJsaWMgZW1iZWQodmVjdG9yczogVmVjdG9ycyk6IENvb3JkaW5hdGVzIHtcclxuICAgIGNvbnN0IG5JdGVtcyA9IHZlY3RvcnMubGVuZ3RoO1xyXG4gICAgY29uc3QgYXJlYVdpZHRoID0gNDA7XHJcbiAgICAvLyBJbml0aWFsaXplIHRoZSBELWRpbWVuc2lvbmFsIGNvb3JkaW5hdGVzIG9mIHRoZSBOIHBvaW50cy5cclxuICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZmlsbFJhbmRvbU1hdHJpeChuSXRlbXMsIFNQRUJhc2UuZGltZW5zaW9uLCBhcmVhV2lkdGgpO1xyXG5cclxuICAgIGxldCBsYW1iZGEyID0gdGhpcy5sYW1iZGEyO1xyXG5cclxuICAgIGlmICh0aGlzLnN0ZXBzID09IDApIHtcclxuICAgICAgdGhpcy5zdGVwcyA9IHZlY3RvcnMubGVuZ3RoLTE7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbml0RGlzdGFuY2UodmVjdG9ycyk7XHJcblxyXG4gICAgZm9yIChsZXQgY3ljbGUgPSAwOyBjeWNsZSA8IHRoaXMuY3ljbGVzOyArK2N5Y2xlKSB7XHJcbiAgICAgIGZvciAobGV0IHN0ZXAgPSAwOyBzdGVwIDwgdGhpcy5zdGVwczsgKytzdGVwKSB7XHJcbiAgICAgICAgLy8gU2VsZWN0IHR3byBwb2ludHMsIGkgYW5kIGosIGF0IHJhbmRvbSwgLi4uXHJcbiAgICAgICAgY29uc3QgaSA9IHJhbmRvbUludChuSXRlbXMpOyBsZXQgaiA9IHJhbmRvbUludChuSXRlbXMpO1xyXG4gICAgICAgIHdoaWxlIChpID09IGopIGogPSByYW5kb21JbnQobkl0ZW1zKTtcclxuXHJcbiAgICAgICAgY29uc3Qgcm93aSA9IGNvb3JkaW5hdGVzW2ldOyBjb25zdCByb3dqID0gY29vcmRpbmF0ZXNbal07XHJcblxyXG4gICAgICAgIC8vIC4uLiByZXRyaWV2ZSAob3IgZXZhbHVhdGUpIHRoZWlyIHByb3hpbWl0eSBpbiB0aGUgaW5wdXQgc3BhY2UsIHJpaiBhbmQgLi4uXHJcbiAgICAgICAgY29uc3QgciA9IHRoaXMuY2FsY0Rpc3RhbmNlKHZlY3RvcnMsIGksIGopO1xyXG4gICAgICAgIC8vIC4uLiBjb21wdXRlIHRoZWlyIEV1Y2xpZGVhbiBkaXN0YW5jZSBvbiB0aGUgRC1kaW1lbnNpb25hbCBtYXAsIGRpai5cclxuICAgICAgICBjb25zdCBkID0gY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2Uocm93aSwgcm93aik7XHJcblxyXG4gICAgICAgIC8vIElmIHJpaiA8PSByYywgb3IgaWYgcmlqID4gcmMgYW5kIGRpaiA8IHJpaiAuLi5cclxuICAgICAgICBpZiAoKHRoaXMuY3V0b2ZmID09IDApIHx8IChyIDw9IHRoaXMuY3V0b2ZmKSB8fCAoZCA8IHIpKSB7XHJcbiAgICAgICAgICBjb25zdCBtdWx0aXBsaWVyID0gbGFtYmRhMiooci1kKS8oZCt0aGlzLmVwc2lsb24pO1xyXG4gICAgICAgICAgLy8gLi4uIHVwZGF0ZSB0aGUgY29vcmRpbmF0ZXMgeGkgYW5kIHhqLlxyXG4gICAgICAgICAgY29uc3QgZGlmZklKID0gdmVjdG9yQWRkKHJvd2ksIHJvd2osIC0xKTtcclxuICAgICAgICAgIGNvb3JkaW5hdGVzW2ldID0gdmVjdG9yQWRkKHJvd2ksIGRpZmZJSiwgbXVsdGlwbGllcik7XHJcbiAgICAgICAgICBjb29yZGluYXRlc1tqXSA9IHZlY3RvckFkZChyb3dqLCBkaWZmSUosIC1tdWx0aXBsaWVyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8gRGVjcmVhc2UgdGhlIGxlYXJuaW5nIHJhdGUge2xhbWJkYX0gYnkgYSBwcmVzY3JpYmVkIHtkbGFtYmRhfS5cclxuICAgICAgbGFtYmRhMiAtPSB0aGlzLmRsYW1iZGEyO1xyXG4gICAgICBpZiAobGFtYmRhMiA8PSAwLikge1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29vcmRpbmF0ZXM7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogSW1wbGVtZW50cyBtb2RpZmllZCBzdG9jaGFzdGljIHByb3hpbWl0eSBlbWJlZGRpbmcuXHJcbiAqXHJcbiAqIEBleHBvcnRcclxuICogQGNsYXNzIFBTUEVCYXNlXHJcbiAqIEBsaW5rIGRvaToxMC4xMDE2L1MxMDkzLTMyNjMoMDMpMDAxNTUtNFxyXG4gKi9cclxuIGV4cG9ydCBjbGFzcyBQU1BFQmFzZSBleHRlbmRzIFNQRUJhc2Uge1xyXG4gIC8qKlxyXG4gICAqIEVtYmVkcyB0aGUgdmVjdG9ycyBnaXZlbiBpbnRvIGEgdHdvLWRpbWVuc2lvbmFsIHNwYWNlIHVzaW5nIGEgbW9kaWZpZWQgdXBkYXRlIHJ1bGUuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtWZWN0b3JzfSB2ZWN0b3JzIEQtZGltZW5zaW9uYWwgY29vcmRpbmF0ZXMuXHJcbiAgICogQHJldHVybiB7Q29vcmRpbmF0ZXN9IFNQRSBjb29yZGluYXRlcyBpbiBEIHNwYWNlLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBlbWJlZCh2ZWN0b3JzOiBWZWN0b3JzKTogQ29vcmRpbmF0ZXMge1xyXG4gICAgY29uc3Qgbkl0ZW1zID0gdmVjdG9ycy5sZW5ndGg7XHJcbiAgICBjb25zdCBhcmVhV2lkdGggPSA0MDtcclxuICAgIC8vICBJbml0aWFsaXplIHRoZSBELWRpbWVuc2lvbmFsIGNvb3JkaW5hdGVzIG9mIHRoZSBOIHBvaW50cy5cclxuICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZmlsbFJhbmRvbU1hdHJpeChuSXRlbXMsIFBTUEVCYXNlLmRpbWVuc2lvbiwgYXJlYVdpZHRoKTtcclxuICAgIGxldCBsYW1iZGEgPSB0aGlzLmxhbWJkYTtcclxuXHJcbiAgICB0aGlzLmluaXREaXN0YW5jZSh2ZWN0b3JzKTtcclxuXHJcbiAgICBmb3IgKGxldCBjeWNsZSA9IDA7IGN5Y2xlIDwgdGhpcy5jeWNsZXM7ICsrY3ljbGUpIHtcclxuICAgICAgLy8gU2VsZWN0IGEgcG9pbnQsIGksIGF0IHJhbmRvbSAocGl2b3QpLlxyXG4gICAgICBjb25zdCBpOiBudW1iZXIgPSByYW5kb21JbnQobkl0ZW1zKTtcclxuICAgICAgY29uc3Qgcm93aSA9IGNvb3JkaW5hdGVzW2ldO1xyXG5cclxuICAgICAgLy8gRm9yIGV2ZXJ5IHBvaW50IGogIT0gaSAuLi5cclxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBuSXRlbXM7ICsraikge1xyXG4gICAgICAgIGlmIChpID09IGopIGNvbnRpbnVlO1xyXG4gICAgICAgIGNvbnN0IHJvd2ogPSBjb29yZGluYXRlc1tqXTtcclxuICAgICAgICAvLyAuLi4gcmV0cmlldmUgKG9yIGV2YWx1YXRlKSBpdHMgcHJveGltaXR5IHRvIGkgaW4gdGhlIGlucHV0IHNwYWNlLCByaWogLi4uXHJcbiAgICAgICAgY29uc3QgciA9IHRoaXMuY2FsY0Rpc3RhbmNlKHZlY3RvcnMsIGksIGopO1xyXG4gICAgICAgIC8vIC4uLiBhbmQgY29tcHV0ZSB0aGVpciBFdWNsaWRlYW4gZGlzdGFuY2Ugb24gdGhlIEQtZGltZW5zaW9uYWwgbWFwLCBkaWouXHJcbiAgICAgICAgY29uc3QgZCA9IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlKHJvd2ksIHJvd2opO1xyXG4gICAgICAgIC8vIElmIHJpaiA8PSByYywgb3IgaWYgcmlqID4gcmMgYW5kIGRpaiA8IHJpaiAuLi5cclxuICAgICAgICBpZiAoKHRoaXMuY3V0b2ZmID09IDApIHx8IChyIDw9IHRoaXMuY3V0b2ZmKSB8fCAoZCA8IHIpKSB7XHJcbiAgICAgICAgICBjb25zdCBtdWx0aXBsaWVyID0gbGFtYmRhKihyLWQpLyhkK3RoaXMuZXBzaWxvbik7XHJcbiAgICAgICAgICBjb25zdCBkaWZmSUogPSB2ZWN0b3JBZGQocm93aSwgcm93aiwgLTEpO1xyXG4gICAgICAgICAgLy8gLi4uIHVwZGF0ZSB0aGUgY29vcmRpbmF0ZXMgeGouXHJcbiAgICAgICAgICBjb29yZGluYXRlc1tqXSA9IHZlY3RvckFkZChyb3dqLCBkaWZmSUosIC1tdWx0aXBsaWVyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8gRGVjcmVhc2UgdGhlIGxlYXJuaW5nIHJhdGUge2xhbWJkYX0gYnkgYSBwcmVzY3JpYmVkIHtkbGFtYmRhfS5cclxuICAgICAgbGFtYmRhIC09IHRoaXMuZGxhbWJkYTtcclxuICAgICAgaWYgKGxhbWJkYSA8PSAwLikge1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29vcmRpbmF0ZXM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3BlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQywwQkFBMEIsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRXBIOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxPQUFPO0lBYWxCOzs7O09BSUc7SUFDSCxZQUFZLE9BQWlCOztRQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLEtBQUssbUNBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsTUFBTSxtQ0FBSSxHQUFHLENBQUM7UUFDckMsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsTUFBTSxtQ0FBSSxDQUFDLENBQUM7UUFDbkMsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsTUFBTSxtQ0FBSSxHQUFHLENBQUM7UUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxPQUFPLG1DQUFJLElBQUksQ0FBQztRQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUMsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBQyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxPQUFPLG1DQUFJLEtBQUssQ0FBQztRQUN6Qyx1Q0FBdUM7UUFDdkMsSUFB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QUE0RTtnQkFDNUUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMzQywwRUFBMEU7Z0JBQzFFLE1BQU0sQ0FBQyxHQUFHLDBCQUEwQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDakQsaURBQWlEO2dCQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7b0JBQ3ZELE1BQU0sVUFBVSxHQUFHLE1BQU0sR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ2pELE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3pDLGlDQUFpQztvQkFDakMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQ3ZEO2FBQ0Y7WUFDRCxpRUFBaUU7WUFDakUsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDdkIsSUFBSSxNQUFNLElBQUksRUFBRSxFQUFFO2dCQUNoQixNQUFNO2FBQ1A7U0FDRjtRQUNELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7T3B0aW9ucywgQ29vcmRpbmF0ZXMsIFZlY3RvcnMsIERpc3RhbmNlTWV0cmljfSBmcm9tICcuL3R5cGVfZGVjbGFyYXRpb25zJztcclxuaW1wb3J0IHtjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZSwgY2FsY0Rpc3RhbmNlTWF0cml4LCBmaWxsUmFuZG9tTWF0cml4LCB2ZWN0b3JBZGQsIHJhbmRvbUludH0gZnJvbSAnLi9vcGVyYXRpb25zJztcclxuXHJcbi8qKlxyXG4gKiBJbXBsZW1lbnRzIHN0b2NoYXN0aWMgcHJveGltaXR5IGVtYmVkZGluZy5cclxuICpcclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgU1BFQmFzZVxyXG4gKiBAbGluayBkb2k6MTAuMTAxNi9TMTA5My0zMjYzKDAzKTAwMTU1LTRcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTUEVCYXNlIHtcclxuICBwcm90ZWN0ZWQgc3RhdGljIGRpbWVuc2lvbiA9IDI7XHJcbiAgcHJvdGVjdGVkIHN0ZXBzOiBudW1iZXI7XHJcbiAgcHJvdGVjdGVkIGN5Y2xlczogbnVtYmVyO1xyXG4gIHByb3RlY3RlZCBjdXRvZmY6IG51bWJlcjtcclxuICBwcm90ZWN0ZWQgbGFtYmRhOiBudW1iZXI7XHJcbiAgcHJvdGVjdGVkIGRsYW1iZGE6IG51bWJlcjtcclxuICBwcm90ZWN0ZWQgbGFtYmRhMjogbnVtYmVyO1xyXG4gIHByb3RlY3RlZCBkbGFtYmRhMjogbnVtYmVyO1xyXG4gIHByb3RlY3RlZCBlcHNpbG9uOiBudW1iZXI7XHJcbiAgcHJvdGVjdGVkIGRpc3RhbmNlRnVuY3Rpb246IERpc3RhbmNlTWV0cmljO1xyXG4gIHByb3RlY3RlZCBkaXN0YW5jZTogQ29vcmRpbmF0ZXM7XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgU1BFQmFzZS5cclxuICAgKiBAcGFyYW0ge09wdGlvbnN9IFtvcHRpb25zXSBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGNvbnN0cnVjdG9yLlxyXG4gICAqIEBtZW1iZXJvZiBTUEVCYXNlXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3Iob3B0aW9ucz86IE9wdGlvbnMpIHtcclxuICAgIHRoaXMuc3RlcHMgPSBvcHRpb25zPy5zdGVwcyA/PyAwO1xyXG4gICAgdGhpcy5jeWNsZXMgPSBvcHRpb25zPy5jeWNsZXMgPz8gMWU2O1xyXG4gICAgLy8gU2VsZWN0IGEgY3V0b2ZmIGRpc3RhbmNlIHtjdXRvZmZ9IGFuZCAuLi5cclxuICAgIHRoaXMuY3V0b2ZmID0gb3B0aW9ucz8uY3V0b2ZmID8/IDA7XHJcbiAgICAvLyAuLi4gYW4gaW5pdGlhbCBsZWFybmluZyByYXRlIHtsYW1iZGF9ID4gMFxyXG4gICAgdGhpcy5sYW1iZGEgPSBvcHRpb25zPy5sYW1iZGEgPz8gMi4wO1xyXG4gICAgdGhpcy5kbGFtYmRhID0gb3B0aW9ucz8uZGxhbWJkYSA/PyAwLjAxO1xyXG4gICAgdGhpcy5sYW1iZGEyID0gdGhpcy5sYW1iZGEvMi47XHJcbiAgICB0aGlzLmRsYW1iZGEyID0gdGhpcy5kbGFtYmRhLzIuO1xyXG4gICAgdGhpcy5lcHNpbG9uID0gb3B0aW9ucz8uZXBzaWxvbiA/PyAxZS0xMDtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBicmFjZS1zdHlsZVxyXG4gICAgdGhpcy5kaXN0YW5jZUZ1bmN0aW9uID0gb3B0aW9ucz8uZGlzdGFuY2UgPz8gY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2U7XHJcbiAgICB0aGlzLmRpc3RhbmNlID0gW107XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyBkaXN0YW5jZSBtYXRyaXguXHJcbiAgICpcclxuICAgKiBAcHJvdGVjdGVkXHJcbiAgICogQHBhcmFtIHtWZWN0b3JzfSB2ZWN0b3JzIElucHV0IHZlY3RvcnMgdG8gY2FsY3VsYXRlIGRpc3RhbmNlIGJldHdlZW4uXHJcbiAgICogQG1lbWJlcm9mIFNQRUJhc2VcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgaW5pdERpc3RhbmNlKHZlY3RvcnM6IFZlY3RvcnMpIHtcclxuICAgIHRoaXMuZGlzdGFuY2UgPSBjYWxjRGlzdGFuY2VNYXRyaXgodmVjdG9ycywgdGhpcy5kaXN0YW5jZUZ1bmN0aW9uKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGN1bGF0ZXMgZGlzdGFuY2UgYmV0d2VlbiB0aGUgdHdvIHZlY3RvcnMgZ2l2ZW4uXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtWZWN0b3JzfSB2ZWN0b3JzIFNldCBvZiB2ZWN0b3JzIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZXMgYmV0d2Vlbi5cclxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXgxIEluZGV4IG9mIHRoZSBmaXJzdCB2ZWN0b3Igb2YgdGhlIHBhaXIuXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4MiBJbmRleCBvZiB0aGUgc2Vjb25kIHZlY3RvciBvZiB0aGUgcGFpci5cclxuICAgKiBAcmV0dXJuIHtudW1iZXJ9IERpc3RhbmNlIGJldHdlZW4gdGhlc2UgdHdvIHZlY3RvcnMuXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGNhbGNEaXN0YW5jZSh2ZWN0b3JzOiBWZWN0b3JzLCBpbmRleDE6IG51bWJlciwgaW5kZXgyOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZGlzdGFuY2VbaW5kZXgxXVtpbmRleDJdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW1iZWRzIHRoZSB2ZWN0b3JzIGdpdmVuIGludG8gYSB0d28tZGltZW5zaW9uYWwgc3BhY2UuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtWZWN0b3JzfSB2ZWN0b3JzIEQtZGltZW5zaW9uYWwgY29vcmRpbmF0ZXMuXHJcbiAgICogQHJldHVybiB7Q29vcmRpbmF0ZXN9IFNQRSBjb29yZGluYXRlcyBpbiBEIHNwYWNlLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBlbWJlZCh2ZWN0b3JzOiBWZWN0b3JzKTogQ29vcmRpbmF0ZXMge1xyXG4gICAgY29uc3Qgbkl0ZW1zID0gdmVjdG9ycy5sZW5ndGg7XHJcbiAgICBjb25zdCBhcmVhV2lkdGggPSA0MDtcclxuICAgIC8vIEluaXRpYWxpemUgdGhlIEQtZGltZW5zaW9uYWwgY29vcmRpbmF0ZXMgb2YgdGhlIE4gcG9pbnRzLlxyXG4gICAgY29uc3QgY29vcmRpbmF0ZXMgPSBmaWxsUmFuZG9tTWF0cml4KG5JdGVtcywgU1BFQmFzZS5kaW1lbnNpb24sIGFyZWFXaWR0aCk7XHJcblxyXG4gICAgbGV0IGxhbWJkYTIgPSB0aGlzLmxhbWJkYTI7XHJcblxyXG4gICAgaWYgKHRoaXMuc3RlcHMgPT0gMCkge1xyXG4gICAgICB0aGlzLnN0ZXBzID0gdmVjdG9ycy5sZW5ndGgtMTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmluaXREaXN0YW5jZSh2ZWN0b3JzKTtcclxuXHJcbiAgICBmb3IgKGxldCBjeWNsZSA9IDA7IGN5Y2xlIDwgdGhpcy5jeWNsZXM7ICsrY3ljbGUpIHtcclxuICAgICAgZm9yIChsZXQgc3RlcCA9IDA7IHN0ZXAgPCB0aGlzLnN0ZXBzOyArK3N0ZXApIHtcclxuICAgICAgICAvLyBTZWxlY3QgdHdvIHBvaW50cywgaSBhbmQgaiwgYXQgcmFuZG9tLCAuLi5cclxuICAgICAgICBjb25zdCBpID0gcmFuZG9tSW50KG5JdGVtcyk7IGxldCBqID0gcmFuZG9tSW50KG5JdGVtcyk7XHJcbiAgICAgICAgd2hpbGUgKGkgPT0gaikgaiA9IHJhbmRvbUludChuSXRlbXMpO1xyXG5cclxuICAgICAgICBjb25zdCByb3dpID0gY29vcmRpbmF0ZXNbaV07IGNvbnN0IHJvd2ogPSBjb29yZGluYXRlc1tqXTtcclxuXHJcbiAgICAgICAgLy8gLi4uIHJldHJpZXZlIChvciBldmFsdWF0ZSkgdGhlaXIgcHJveGltaXR5IGluIHRoZSBpbnB1dCBzcGFjZSwgcmlqIGFuZCAuLi5cclxuICAgICAgICBjb25zdCByID0gdGhpcy5jYWxjRGlzdGFuY2UodmVjdG9ycywgaSwgaik7XHJcbiAgICAgICAgLy8gLi4uIGNvbXB1dGUgdGhlaXIgRXVjbGlkZWFuIGRpc3RhbmNlIG9uIHRoZSBELWRpbWVuc2lvbmFsIG1hcCwgZGlqLlxyXG4gICAgICAgIGNvbnN0IGQgPSBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZShyb3dpLCByb3dqKTtcclxuXHJcbiAgICAgICAgLy8gSWYgcmlqIDw9IHJjLCBvciBpZiByaWogPiByYyBhbmQgZGlqIDwgcmlqIC4uLlxyXG4gICAgICAgIGlmICgodGhpcy5jdXRvZmYgPT0gMCkgfHwgKHIgPD0gdGhpcy5jdXRvZmYpIHx8IChkIDwgcikpIHtcclxuICAgICAgICAgIGNvbnN0IG11bHRpcGxpZXIgPSBsYW1iZGEyKihyLWQpLyhkK3RoaXMuZXBzaWxvbik7XHJcbiAgICAgICAgICAvLyAuLi4gdXBkYXRlIHRoZSBjb29yZGluYXRlcyB4aSBhbmQgeGouXHJcbiAgICAgICAgICBjb25zdCBkaWZmSUogPSB2ZWN0b3JBZGQocm93aSwgcm93aiwgLTEpO1xyXG4gICAgICAgICAgY29vcmRpbmF0ZXNbaV0gPSB2ZWN0b3JBZGQocm93aSwgZGlmZklKLCBtdWx0aXBsaWVyKTtcclxuICAgICAgICAgIGNvb3JkaW5hdGVzW2pdID0gdmVjdG9yQWRkKHJvd2osIGRpZmZJSiwgLW11bHRpcGxpZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyBEZWNyZWFzZSB0aGUgbGVhcm5pbmcgcmF0ZSB7bGFtYmRhfSBieSBhIHByZXNjcmliZWQge2RsYW1iZGF9LlxyXG4gICAgICBsYW1iZGEyIC09IHRoaXMuZGxhbWJkYTI7XHJcbiAgICAgIGlmIChsYW1iZGEyIDw9IDAuKSB7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjb29yZGluYXRlcztcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBJbXBsZW1lbnRzIG1vZGlmaWVkIHN0b2NoYXN0aWMgcHJveGltaXR5IGVtYmVkZGluZy5cclxuICpcclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgUFNQRUJhc2VcclxuICogQGxpbmsgZG9pOjEwLjEwMTYvUzEwOTMtMzI2MygwMykwMDE1NS00XHJcbiAqL1xyXG4gZXhwb3J0IGNsYXNzIFBTUEVCYXNlIGV4dGVuZHMgU1BFQmFzZSB7XHJcbiAgLyoqXHJcbiAgICogRW1iZWRzIHRoZSB2ZWN0b3JzIGdpdmVuIGludG8gYSB0d28tZGltZW5zaW9uYWwgc3BhY2UgdXNpbmcgYSBtb2RpZmllZCB1cGRhdGUgcnVsZS5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge1ZlY3RvcnN9IHZlY3RvcnMgRC1kaW1lbnNpb25hbCBjb29yZGluYXRlcy5cclxuICAgKiBAcmV0dXJuIHtDb29yZGluYXRlc30gU1BFIGNvb3JkaW5hdGVzIGluIEQgc3BhY2UuXHJcbiAgICovXHJcbiAgcHVibGljIGVtYmVkKHZlY3RvcnM6IFZlY3RvcnMpOiBDb29yZGluYXRlcyB7XHJcbiAgICBjb25zdCBuSXRlbXMgPSB2ZWN0b3JzLmxlbmd0aDtcclxuICAgIGNvbnN0IGFyZWFXaWR0aCA9IDQwO1xyXG4gICAgLy8gIEluaXRpYWxpemUgdGhlIEQtZGltZW5zaW9uYWwgY29vcmRpbmF0ZXMgb2YgdGhlIE4gcG9pbnRzLlxyXG4gICAgY29uc3QgY29vcmRpbmF0ZXMgPSBmaWxsUmFuZG9tTWF0cml4KG5JdGVtcywgUFNQRUJhc2UuZGltZW5zaW9uLCBhcmVhV2lkdGgpO1xyXG4gICAgbGV0IGxhbWJkYSA9IHRoaXMubGFtYmRhO1xyXG5cclxuICAgIHRoaXMuaW5pdERpc3RhbmNlKHZlY3RvcnMpO1xyXG5cclxuICAgIGZvciAobGV0IGN5Y2xlID0gMDsgY3ljbGUgPCB0aGlzLmN5Y2xlczsgKytjeWNsZSkge1xyXG4gICAgICAvLyBTZWxlY3QgYSBwb2ludCwgaSwgYXQgcmFuZG9tIChwaXZvdCkuXHJcbiAgICAgIGNvbnN0IGk6IG51bWJlciA9IHJhbmRvbUludChuSXRlbXMpO1xyXG4gICAgICBjb25zdCByb3dpID0gY29vcmRpbmF0ZXNbaV07XHJcblxyXG4gICAgICAvLyBGb3IgZXZlcnkgcG9pbnQgaiAhPSBpIC4uLlxyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG5JdGVtczsgKytqKSB7XHJcbiAgICAgICAgaWYgKGkgPT0gaikgY29udGludWU7XHJcbiAgICAgICAgY29uc3Qgcm93aiA9IGNvb3JkaW5hdGVzW2pdO1xyXG4gICAgICAgIC8vIC4uLiByZXRyaWV2ZSAob3IgZXZhbHVhdGUpIGl0cyBwcm94aW1pdHkgdG8gaSBpbiB0aGUgaW5wdXQgc3BhY2UsIHJpaiAuLi5cclxuICAgICAgICBjb25zdCByID0gdGhpcy5jYWxjRGlzdGFuY2UodmVjdG9ycywgaSwgaik7XHJcbiAgICAgICAgLy8gLi4uIGFuZCBjb21wdXRlIHRoZWlyIEV1Y2xpZGVhbiBkaXN0YW5jZSBvbiB0aGUgRC1kaW1lbnNpb25hbCBtYXAsIGRpai5cclxuICAgICAgICBjb25zdCBkID0gY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2Uocm93aSwgcm93aik7XHJcbiAgICAgICAgLy8gSWYgcmlqIDw9IHJjLCBvciBpZiByaWogPiByYyBhbmQgZGlqIDwgcmlqIC4uLlxyXG4gICAgICAgIGlmICgodGhpcy5jdXRvZmYgPT0gMCkgfHwgKHIgPD0gdGhpcy5jdXRvZmYpIHx8IChkIDwgcikpIHtcclxuICAgICAgICAgIGNvbnN0IG11bHRpcGxpZXIgPSBsYW1iZGEqKHItZCkvKGQrdGhpcy5lcHNpbG9uKTtcclxuICAgICAgICAgIGNvbnN0IGRpZmZJSiA9IHZlY3RvckFkZChyb3dpLCByb3dqLCAtMSk7XHJcbiAgICAgICAgICAvLyAuLi4gdXBkYXRlIHRoZSBjb29yZGluYXRlcyB4ai5cclxuICAgICAgICAgIGNvb3JkaW5hdGVzW2pdID0gdmVjdG9yQWRkKHJvd2osIGRpZmZJSiwgLW11bHRpcGxpZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyBEZWNyZWFzZSB0aGUgbGVhcm5pbmcgcmF0ZSB7bGFtYmRhfSBieSBhIHByZXNjcmliZWQge2RsYW1iZGF9LlxyXG4gICAgICBsYW1iZGEgLT0gdGhpcy5kbGFtYmRhO1xyXG4gICAgICBpZiAobGFtYmRhIDw9IDAuKSB7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjb29yZGluYXRlcztcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,33 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
package/src/string-measure.js
CHANGED
|
@@ -14,11 +14,7 @@ export class Measurer {
|
|
|
14
14
|
* @memberof Measurer
|
|
15
15
|
*/
|
|
16
16
|
constructor(method) {
|
|
17
|
-
|
|
18
|
-
'Levenshtein': fl.distance,
|
|
19
|
-
'Jaro-Winkler': jaroWinkler,
|
|
20
|
-
};
|
|
21
|
-
assert(this.availableMeasures.includes(method), 'The ${method} was not found.');
|
|
17
|
+
assert(Measurer.availableMeasures.includes(method), 'The ${method} was not found.');
|
|
22
18
|
this.method = method;
|
|
23
19
|
}
|
|
24
20
|
/**
|
|
@@ -26,7 +22,7 @@ export class Measurer {
|
|
|
26
22
|
* @return {DistanceMetric} Callback of the measure chosen.
|
|
27
23
|
*/
|
|
28
24
|
getMeasure() {
|
|
29
|
-
return
|
|
25
|
+
return Measurer.receipt[this.method];
|
|
30
26
|
}
|
|
31
27
|
/**
|
|
32
28
|
* Returns available string distance metrics.
|
|
@@ -35,12 +31,16 @@ export class Measurer {
|
|
|
35
31
|
* @type {string[]}
|
|
36
32
|
* @memberof Measurer
|
|
37
33
|
*/
|
|
38
|
-
get availableMeasures() {
|
|
34
|
+
static get availableMeasures() {
|
|
39
35
|
let keys = [];
|
|
40
|
-
for (let key in
|
|
36
|
+
for (let key in Measurer.receipt) {
|
|
41
37
|
keys.push(key);
|
|
42
38
|
}
|
|
43
39
|
return keys;
|
|
44
40
|
}
|
|
45
41
|
}
|
|
46
|
-
|
|
42
|
+
Measurer.receipt = {
|
|
43
|
+
'Levenshtein': fl.distance,
|
|
44
|
+
'Jaro-Winkler': jaroWinkler,
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLW1lYXN1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdHJpbmctbWVhc3VyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUdwRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRXBDOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7SUFPakI7Ozs7T0FJRztJQUNILFlBQVksTUFBYztRQUN4QixNQUFNLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSw4QkFBOEIsQ0FBQyxDQUFBO1FBQ25GLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxVQUFVO1FBQ2YsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxLQUFLLGlCQUFpQjtRQUNqQyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7UUFFZCxLQUFLLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUU7WUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNoQjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7QUFyQ2EsZ0JBQU8sR0FBcUM7SUFDeEQsYUFBYSxFQUFFLEVBQUUsQ0FBQyxRQUFRO0lBQzFCLGNBQWMsRUFBRSxXQUFXO0NBQzVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmbCBmcm9tICdmYXN0ZXN0LWxldmVuc2h0ZWluJztcclxuaW1wb3J0IHtqYXJvV2lua2xlcn0gZnJvbSAnamFyby13aW5rbGVyLXR5cGVzY3JpcHQnO1xyXG5cclxuaW1wb3J0IHtEaXN0YW5jZU1ldHJpY30gZnJvbSAnLi90eXBlX2RlY2xhcmF0aW9ucyc7XHJcbmltcG9ydCB7YXNzZXJ0fSBmcm9tICcuL29wZXJhdGlvbnMnO1xyXG5cclxuLyoqXHJcbiAqIFVuaWZpZWQgY2xhc3MgaW1wbGVtZW50aW5nIHRoZSBkaWZmZXJlbnQgc3RyaW5nIG1lYXN1cmVzLlxyXG4gKlxyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBNZWFzdXJlclxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIE1lYXN1cmVyIHtcclxuICAgIHByb3RlY3RlZCBtZXRob2Q6IHN0cmluZztcclxuICAgIHB1YmxpYyBzdGF0aWMgcmVjZWlwdDoge1tuYW1lOiBzdHJpbmddOiBEaXN0YW5jZU1ldHJpY30gPSB7XHJcbiAgICAgICdMZXZlbnNodGVpbic6IGZsLmRpc3RhbmNlLFxyXG4gICAgICAnSmFyby1XaW5rbGVyJzogamFyb1dpbmtsZXIsXHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBNZWFzdXJlci5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgTWV0aG9kIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZSBiZXR3ZWVuIHN0cmluZ3MuXHJcbiAgICAgKiBAbWVtYmVyb2YgTWVhc3VyZXJcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IobWV0aG9kOiBzdHJpbmcpIHtcclxuICAgICAgYXNzZXJ0KE1lYXN1cmVyLmF2YWlsYWJsZU1lYXN1cmVzLmluY2x1ZGVzKG1ldGhvZCksICdUaGUgJHttZXRob2R9IHdhcyBub3QgZm91bmQuJylcclxuICAgICAgdGhpcy5tZXRob2QgPSBtZXRob2Q7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIGN1c3RvbSBzdHJpbmcgZGlzdGFuY2UgZnVuY3Rpb24gc3BlY2lmaWVkLlxyXG4gICAgICogQHJldHVybiB7RGlzdGFuY2VNZXRyaWN9IENhbGxiYWNrIG9mIHRoZSBtZWFzdXJlIGNob3Nlbi5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldE1lYXN1cmUoKTogRGlzdGFuY2VNZXRyaWMge1xyXG4gICAgICByZXR1cm4gTWVhc3VyZXIucmVjZWlwdFt0aGlzLm1ldGhvZF07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIGF2YWlsYWJsZSBzdHJpbmcgZGlzdGFuY2UgbWV0cmljcy5cclxuICAgICAqXHJcbiAgICAgKiBAcmVhZG9ubHlcclxuICAgICAqIEB0eXBlIHtzdHJpbmdbXX1cclxuICAgICAqIEBtZW1iZXJvZiBNZWFzdXJlclxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldCBhdmFpbGFibGVNZWFzdXJlcygpIDogc3RyaW5nW10ge1xyXG4gICAgICBsZXQga2V5cyA9IFtdO1xyXG5cclxuICAgICAgZm9yIChsZXQga2V5IGluIE1lYXN1cmVyLnJlY2VpcHQpIHtcclxuICAgICAgICBrZXlzLnB1c2goa2V5KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4ga2V5cztcclxuICAgIH1cclxuICAgIFxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-utils.d.ts","sourceRoot":"","sources":["string-utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAI,GAAG,CAO5C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-validation.d.ts","sourceRoot":"","sources":["table-validation.ts"],"names":[],"mappings":""}
|
package/src/table-validation.js
CHANGED
|
@@ -44,4 +44,4 @@ function main() {
|
|
|
44
44
|
let cell = { column: { name: 'age' }, value: 999 };
|
|
45
45
|
validateCell(cell, ruleSet);
|
|
46
46
|
console.log('ddd');
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRhYmxlLXZhbGlkYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQWN0QyxhQUFhO0FBQ2IsSUFBSSxPQUFPLEdBQVk7SUFDckIsSUFBSSxFQUFFLGVBQWU7SUFDckIsS0FBSyxFQUFFO1FBQ0w7WUFDRSxNQUFNLEVBQUUsS0FBSztZQUNiLElBQUksRUFBRSxLQUFLO1lBQ1gsT0FBTyxFQUFFLE9BQU87U0FDakI7UUFDRDtZQUNFLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLElBQUksRUFBRSxXQUFXO1lBQ2pCLE9BQU8sRUFBRSxPQUFPO1NBQ2pCO1FBQ0Q7WUFDRSxNQUFNLEVBQUUsS0FBSztZQUNiLElBQUksRUFBRSxRQUFRO1lBQ2QsT0FBTyxFQUFFLFdBQVc7U0FDckI7UUFDRDtZQUNFLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLElBQUksRUFBRSxVQUFVO1lBQ2hCLE9BQU8sRUFBRSxZQUFZO1NBQ3RCO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsK0NBQStDO0FBQy9DLFNBQVMsWUFBWSxDQUFDLElBQVMsRUFBRSxPQUFnQjs7SUFDL0MsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFMUMsS0FBSyxJQUFJLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSztRQUM1QixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBQSxJQUFJLENBQUMsT0FBTyxtQ0FBSSxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwRixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUMsSUFBSSxLQUFLLEtBQUssSUFBSTtnQkFDaEIsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFFSCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxTQUFTLElBQUk7SUFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3JCLENBQUM7QUFFRCxJQUFJLElBQUksR0FBRyxFQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDbEQsWUFBWSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUU1QixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogRG8gbm90IGNoYW5nZSB0aGVzZSBpbXBvcnQgbGluZXMuIERhdGFncm9rIHdpbGwgaW1wb3J0IEFQSSBsaWJyYXJ5IGluIGV4YWN0bHkgdGhlIHNhbWUgbWFubmVyICovXHJcbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xyXG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xyXG5pbXBvcnQgKiBhcyBERyBmcm9tIFwiZGF0YWdyb2stYXBpL2RnXCI7XHJcblxyXG5pbnRlcmZhY2UgUnVsZSB7XHJcbiAgY29sdW1uOiBzdHJpbmc7XHJcbiAgdHlwZTogc3RyaW5nO1xyXG4gIHBhdHRlcm46IHN0cmluZztcclxuICBtYXRjaGVyPzogYW55O1xyXG59XHJcblxyXG5pbnRlcmZhY2UgUnVsZVNldCB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHJ1bGVzOiBSdWxlW107XHJcbn1cclxuXHJcbi8vIEB0cy1pZ25vcmVcclxubGV0IHJ1bGVTZXQ6IFJ1bGVTZXQgPSB7XHJcbiAgbmFtZTogJ1NEVE0gRE0gcnVsZXMnLFxyXG4gIHJ1bGVzOiBbXHJcbiAgICB7XHJcbiAgICAgIGNvbHVtbjogJ2FnZScsXHJcbiAgICAgIHR5cGU6ICdpbnQnLFxyXG4gICAgICBwYXR0ZXJuOiAnMTgtOTAnXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjb2x1bW46ICdoZWlnaHQnLFxyXG4gICAgICB0eXBlOiAnbnVtZXJpY2FsJyxcclxuICAgICAgcGF0dGVybjogJzE4LTkwJ1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY29sdW1uOiAnc2V4JyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIHBhdHRlcm46ICdpbiAoRiwgTSknXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjb2x1bW46ICdzdGFydGVkJyxcclxuICAgICAgdHlwZTogJ2RhdGV0aW1lJyxcclxuICAgICAgcGF0dGVybjogJz4gMS8xLzE5MDAnXHJcbiAgICB9XHJcbiAgXVxyXG59O1xyXG5cclxuLyoqIFJldHVybnMgZXJyb3IgbWVzc2FnZSwgb3IgbnVsbCBpZiB2YWxpZC4gKi9cclxuZnVuY3Rpb24gdmFsaWRhdGVDZWxsKGNlbGw6IGFueSwgcnVsZXNldDogUnVsZVNldCkgOiBzdHJpbmcgfCBudWxsIHtcclxuICBsZXQgbmFtZSA9IGNlbGwuY29sdW1uLm5hbWUudG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgZm9yIChsZXQgcnVsZSBvZiBydWxlc2V0LnJ1bGVzKVxyXG4gICAgaWYgKHJ1bGUuY29sdW1uID09IG5hbWUpIHtcclxuICAgICAgcnVsZS5tYXRjaGVyID0gcnVsZS5tYXRjaGVyID8/IERHLlZhbHVlTWF0Y2hlci5mb3JDb2x1bW4oY2VsbC5jb2x1bW4sIHJ1bGUucGF0dGVybik7XHJcbiAgICAgIGxldCBlcnJvciA9IHJ1bGUubWF0Y2hlci52YWxpZGF0ZShjZWxsLnZhbHVlKTtcclxuICAgICAgaWYgKGVycm9yICE9PSBudWxsKVxyXG4gICAgICAgIHJldHVybiBlcnJvcjtcclxuICAgIH1cclxuXHJcbiAgcmV0dXJuIG51bGw7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG1haW4oKSA6IHZvaWQge1xyXG4gIGNvbnNvbGUubG9nKCdmb28nKTtcclxufVxyXG5cclxubGV0IGNlbGwgPSB7Y29sdW1uOiB7IG5hbWU6ICdhZ2UnIH0sIHZhbHVlOiA5OTkgfTtcclxudmFsaWRhdGVDZWxsKGNlbGwsIHJ1bGVTZXQpO1xyXG5cclxuY29uc29sZS5sb2coJ2RkZCcpOyJdfQ==
|