taxtank-core 0.8.0 → 0.8.4
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/bundles/taxtank-core.umd.js +61 -22
- package/bundles/taxtank-core.umd.js.map +1 -1
- package/esm2015/lib/collections/collection.js +7 -4
- package/esm2015/lib/collections/depreciation.collection.js +3 -3
- package/esm2015/lib/db/Models/client-details.js +1 -1
- package/esm2015/lib/models/bank/basiq-config.js +12 -0
- package/esm2015/lib/models/property/property.js +7 -4
- package/esm2015/lib/services/subscription/subscription.service.js +35 -16
- package/esm2015/public-api.js +2 -1
- package/fesm2015/taxtank-core.js +59 -23
- package/fesm2015/taxtank-core.js.map +1 -1
- package/lib/collections/collection.d.ts +2 -1
- package/lib/db/Models/client-details.d.ts +1 -0
- package/lib/models/bank/basiq-config.d.ts +17 -0
- package/lib/models/property/property.d.ts +1 -0
- package/lib/services/subscription/subscription.service.d.ts +9 -4
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -13,9 +13,6 @@ export class Collection {
|
|
|
13
13
|
create(items = []) {
|
|
14
14
|
return new this.constructor(items);
|
|
15
15
|
}
|
|
16
|
-
getBy(field, value) {
|
|
17
|
-
return this.create(this.items.filter((item) => item[field] === value));
|
|
18
|
-
}
|
|
19
16
|
groupBy(path = '') {
|
|
20
17
|
return new CollectionDictionary(this, path);
|
|
21
18
|
}
|
|
@@ -46,6 +43,12 @@ export class Collection {
|
|
|
46
43
|
getIds() {
|
|
47
44
|
return this.items.map((item) => item['id']);
|
|
48
45
|
}
|
|
46
|
+
findBy(path, value) {
|
|
47
|
+
return this.items.find((item) => get(item, path) === value);
|
|
48
|
+
}
|
|
49
|
+
getBy(path, value) {
|
|
50
|
+
return this.create(this.items.filter((item) => get(item, path) === value));
|
|
51
|
+
}
|
|
49
52
|
/**
|
|
50
53
|
* Get single item by id
|
|
51
54
|
*/
|
|
@@ -78,4 +81,4 @@ export class Collection {
|
|
|
78
81
|
return last(this.items);
|
|
79
82
|
}
|
|
80
83
|
}
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9jb2xsZWN0aW9ucy9jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9ELE9BQU8sS0FBSyxNQUFNLGNBQWMsQ0FBQztBQUNqQyxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFDL0IsT0FBTyxHQUFHLE1BQU0sWUFBWSxDQUFDO0FBRTdCLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQztBQUU5Qjs7R0FFRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBSXJCLFlBQVksUUFBaUIsRUFBRTtRQUM3QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQWlCLEVBQUU7UUFDeEIsT0FBTyxJQUFLLElBQUksQ0FBQyxXQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxPQUFPLENBQUMsT0FBZSxFQUFFO1FBQ3ZCLE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFZO1FBQ2xCLHlDQUF5QztRQUN6QyxNQUFNLE1BQU0sR0FBNkIsRUFBRSxDQUFDO1FBRTVDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFZLEVBQUUsRUFBRTtZQUN0QyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDZixnREFBZ0Q7UUFDaEQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFXLEVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxNQUFNLENBQUMsSUFBWSxFQUFFLEtBQVU7UUFDN0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQVcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQVksRUFBRSxLQUFVO1FBQzVCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQVcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxFQUFVO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFXLEVBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQWE7UUFDcEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQVcsRUFBVyxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsS0FBYTtRQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFXLEVBQUUsSUFBVyxFQUFVLEVBQUUsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRyxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsUUFBa0M7UUFDdkMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xsZWN0aW9uRGljdGlvbmFyeSB9IGZyb20gJy4vY29sbGVjdGlvbi1kaWN0aW9uYXJ5JztcclxuaW1wb3J0IGZpcnN0IGZyb20gJ2xvZGFzaC9maXJzdCc7XHJcbmltcG9ydCBsYXN0IGZyb20gJ2xvZGFzaC9sYXN0JztcclxuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcclxuXHJcbmNvbnN0IERFRkFVTFRfSU5ERVggPSAnb3RoZXInO1xyXG5cclxuLyoqXHJcbiAqIEJhc2UgY29sbGVjdGlvbiBjbGFzcy4gQ29udGFpbnMgY29tbW9uIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgZm9yIGFsbCBjb2xsZWN0aW9uc1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIENvbGxlY3Rpb248TW9kZWwgZXh0ZW5kcyBvYmplY3Q+IGltcGxlbWVudHMgSXRlcmFibGU8TW9kZWw+IHtcclxuICAvLyBsaXN0IG9mIGNvbGxlY3Rpb24ncyBpdGVtc1xyXG4gIGl0ZW1zOiBNb2RlbFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihpdGVtczogTW9kZWxbXSA9IFtdKSB7XHJcbiAgICB0aGlzLml0ZW1zID0gaXRlbXM7XHJcbiAgfVxyXG5cclxuICBjcmVhdGUoaXRlbXM6IE1vZGVsW10gPSBbXSk6IHRoaXMge1xyXG4gICAgcmV0dXJuIG5ldyAodGhpcy5jb25zdHJ1Y3RvciBhcyBhbnkpKGl0ZW1zKTtcclxuICB9XHJcblxyXG4gIGdyb3VwQnkocGF0aDogc3RyaW5nID0gJycpOiBDb2xsZWN0aW9uRGljdGlvbmFyeTxDb2xsZWN0aW9uPE1vZGVsPj4ge1xyXG4gICAgcmV0dXJuIG5ldyBDb2xsZWN0aW9uRGljdGlvbmFyeSh0aGlzLCBwYXRoKTtcclxuICB9XHJcblxyXG4gIGluZGV4QnkocGF0aDogc3RyaW5nKTogb2JqZWN0IHtcclxuICAgIC8vIENyZWF0ZSBlbXB0eSBpbml0aWFsIG9iamVjdCBmb3IgZ3JvdXBzXHJcbiAgICBjb25zdCByZXN1bHQ6IHsgW2tleTogc3RyaW5nXTogTW9kZWwgfSA9IHt9O1xyXG5cclxuICAgIHRoaXMudG9BcnJheSgpLmZvckVhY2goKG1vZGVsOiBNb2RlbCkgPT4ge1xyXG4gICAgICByZXN1bHRbZ2V0KG1vZGVsLCBwYXRoLCBERUZBVUxUX0lOREVYKV0gPSBtb2RlbDtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJdGVyYXRvciB0aGF0IGFsbG93IHRvIGl0ZXJhdGUgY29sbGVjdGlvbiBpdGVtc1xyXG4gICAqL1xyXG4gIFtTeW1ib2wuaXRlcmF0b3JdKCk6IEl0ZXJhdG9yPE1vZGVsPiB7XHJcbiAgICAvLyAudmFsdWVzKCkgcmV0dXJucyBJdGVyYXRvciBpbnN0YW5jZSBmb3IgYXJyYXlcclxuICAgIHJldHVybiB0aGlzLml0ZW1zLnZhbHVlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZ2V0IGNvbGxlY3Rpb24gbGVuZ3RoXHJcbiAgICovXHJcbiAgZ2V0IGxlbmd0aCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuaXRlbXMubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGxpc3Qgb2YgaXRlbXMgaWRzXHJcbiAgICovXHJcbiAgZ2V0SWRzKCk6IG51bWJlcltdIHtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zLm1hcCgoaXRlbTogTW9kZWwpOiBudW1iZXIgPT4gaXRlbVsnaWQnXSk7XHJcbiAgfVxyXG5cclxuICBmaW5kQnkocGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KTogTW9kZWwge1xyXG4gICAgcmV0dXJuIHRoaXMuaXRlbXMuZmluZCgoaXRlbTogTW9kZWwpID0+IGdldChpdGVtLCBwYXRoKSA9PT0gdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QnkocGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KTogdGhpcyB7XHJcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUodGhpcy5pdGVtcy5maWx0ZXIoKGl0ZW06IE1vZGVsKSA9PiBnZXQoaXRlbSwgcGF0aCkgPT09IHZhbHVlKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgc2luZ2xlIGl0ZW0gYnkgaWRcclxuICAgKi9cclxuICBnZXRCeUlkKGlkOiBudW1iZXIpOiBNb2RlbCB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5maW5kKChpdGVtOiBNb2RlbCk6IGJvb2xlYW4gPT4gaXRlbVsnaWQnXSA9PT0gaWQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QnlJZHMoaWRzOiBudW1iZXJbXSk6IE1vZGVsW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXRlbXMuZmlsdGVyKChpdGVtOiBNb2RlbCk6IGJvb2xlYW4gPT4gaWRzLmluY2x1ZGVzKGl0ZW1bJ2lkJ10pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0b3RhbCBzdW0gb2YgaXRlbXMgYnkgZmllbGRcclxuICAgKiBAcGFyYW0gZmllbGQgTmFtZSBvZiB0aGUgZmllbGQgZm9yIHN1bVxyXG4gICAqL1xyXG4gIHN1bUJ5KGZpZWxkOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuICt0aGlzLml0ZW1zLnJlZHVjZSgoc3VtOiBudW1iZXIsIGl0ZW06IE1vZGVsKTogbnVtYmVyID0+IHN1bSArIE51bWJlcihpdGVtW2ZpZWxkXSksIDApLnRvRml4ZWQoMik7XHJcbiAgfVxyXG5cclxuICB0b0FycmF5KCk6IE1vZGVsW10ge1xyXG4gICAgcmV0dXJuIFsuLi50aGlzLml0ZW1zXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbHRlciBpdGVtcyBieSBzcGVjaWZpYyBwcm92aWRlZCBjYWxsYmFja1xyXG4gICAqL1xyXG4gIGZpbHRlcihjYWxsYmFjazogKGl0ZW06IE1vZGVsKSA9PiBib29sZWFuKTogQ29sbGVjdGlvbjxNb2RlbD4ge1xyXG4gICAgcmV0dXJuIG5ldyBDb2xsZWN0aW9uKHRoaXMuaXRlbXMuZmlsdGVyKGNhbGxiYWNrKSk7XHJcbiAgfVxyXG5cclxuICBnZXQgZmlyc3QoKTogTW9kZWwge1xyXG4gICAgcmV0dXJuIGZpcnN0KHRoaXMuaXRlbXMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGxhc3QoKTogTW9kZWwge1xyXG4gICAgcmV0dXJuIGxhc3QodGhpcy5pdGVtcyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -16,8 +16,8 @@ export class DepreciationCollection extends Collection {
|
|
|
16
16
|
}, 0);
|
|
17
17
|
}
|
|
18
18
|
getClaimAmountByYear(year = +localStorage.getItem('financialYear')) {
|
|
19
|
-
return this.items.reduce((sum, depreciation) => {
|
|
20
|
-
return sum + depreciation.
|
|
19
|
+
return this.amount - this.items.reduce((sum, depreciation) => {
|
|
20
|
+
return sum + depreciation.getCloseBalanceByYear(year);
|
|
21
21
|
}, 0);
|
|
22
22
|
}
|
|
23
23
|
getCloseBalanceByYear(year = +localStorage.getItem('financialYear')) {
|
|
@@ -87,4 +87,4 @@ export class DepreciationCollection extends Collection {
|
|
|
87
87
|
return new TransactionCollection(this.items.map((item) => item.toTransaction()));
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwcmVjaWF0aW9uLmNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvY29sbGVjdGlvbnMvZGVwcmVjaWF0aW9uLmNvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFMUMsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ25DLE9BQU8sT0FBTyxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWpFLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxVQUF3QjtJQUVsRTs7T0FFRztJQUNILElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFXLEVBQUUsWUFBMEIsRUFBVSxFQUFFLENBQUMsR0FBRyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUcsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFXLEVBQUUsWUFBMEIsRUFBRSxFQUFFO1lBQ25FLE9BQU8sR0FBRyxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUM7UUFDeEMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVELG9CQUFvQixDQUFDLE9BQWUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUN4RSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBVyxFQUFFLFlBQTBCLEVBQVUsRUFBRTtZQUMzRSxPQUFPLEdBQUcsR0FBRyxZQUFZLENBQUMsb0JBQW9C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O09BRUc7SUFDSCxjQUFjO1FBQ1osT0FBTyxJQUFJLHFCQUFxQixDQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQWtCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUM3RCxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGFua1R5cGVFbnVtIH0gZnJvbSAnLi4vZGIvRW51bXMvdGFuay10eXBlLmVudW0nO1xuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4vY29sbGVjdGlvbic7XG5pbXBvcnQgeyBEZXByZWNpYXRpb24gfSBmcm9tICcuLi9tb2RlbHMvZGVwcmVjaWF0aW9uL2RlcHJlY2lhdGlvbic7XG5pbXBvcnQgdW5pcUJ5IGZyb20gJ2xvZGFzaC91bmlxQnknO1xuaW1wb3J0IGNvbXBhY3QgZnJvbSAnbG9kYXNoL2NvbXBhY3QnO1xuaW1wb3J0IHsgRGVwcmVjaWF0aW9uQ2FwaXRhbFByb2plY3QgfSBmcm9tICcuLi9tb2RlbHMvZGVwcmVjaWF0aW9uL2RlcHJlY2lhdGlvbi1jYXBpdGFsLXByb2plY3QnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25Db2xsZWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi5jb2xsZWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIERlcHJlY2lhdGlvbkNvbGxlY3Rpb24gZXh0ZW5kcyBDb2xsZWN0aW9uPERlcHJlY2lhdGlvbj4ge1xuXG4gIC8qKlxuICAgKiBHZXQgdG90YWwgYW1vdW50IG9mIGFsbCBkZXByZWNpYXRpb25zIGluIHRoZSBjb2xsZWN0aW9uXG4gICAqL1xuICBnZXQgYW1vdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMucmVkdWNlKChzdW06IG51bWJlciwgZGVwcmVjaWF0aW9uOiBEZXByZWNpYXRpb24pOiBudW1iZXIgPT4gc3VtICsgZGVwcmVjaWF0aW9uLmFtb3VudCwgMCk7XG4gIH1cblxuICBnZXQgY2xhaW1BbW91bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5yZWR1Y2UoKHN1bTogbnVtYmVyLCBkZXByZWNpYXRpb246IERlcHJlY2lhdGlvbikgPT4ge1xuICAgICAgcmV0dXJuIHN1bSArIGRlcHJlY2lhdGlvbi5jbGFpbUFtb3VudDtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIGdldENsYWltQW1vdW50QnlZZWFyKHllYXI6IG51bWJlciA9ICtsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZmluYW5jaWFsWWVhcicpKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5yZWR1Y2UoKHN1bTogbnVtYmVyLCBkZXByZWNpYXRpb246IERlcHJlY2lhdGlvbik6IG51bWJlciA9PiB7XG4gICAgICByZXR1cm4gc3VtICsgZGVwcmVjaWF0aW9uLmdldENsYWltQW1vdW50QnlZZWFyKHllYXIpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgZ2V0Q2xvc2VCYWxhbmNlQnlZZWFyKHllYXI6IG51bWJlciA9ICtsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZmluYW5jaWFsWWVhcicpKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5yZWR1Y2UoKHN1bTogbnVtYmVyLCBkZXByZWNpYXRpb246IERlcHJlY2lhdGlvbik6IG51bWJlciA9PiB7XG4gICAgICByZXR1cm4gc3VtICsgZGVwcmVjaWF0aW9uLmdldENsb3NlQmFsYW5jZUJ5WWVhcih5ZWFyKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIGdldEN1cnJlbnRZZWFyRm9yZWNhc3RBbW91bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5yZWR1Y2UoKHN1bTogbnVtYmVyLCBkZXByZWNpYXRpb246IERlcHJlY2lhdGlvbik6IG51bWJlciA9PiB7XG4gICAgICByZXR1cm4gc3VtICsgZGVwcmVjaWF0aW9uLmdldEN1cnJlbnRZZWFyRm9yZWNhc3RBbW91bnQoKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIGdldCBhc3NldFZhbHVlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3VtQnkoJ2Fzc2V0VmFsdWUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbmV3IGRlcHJlY2lhdGlvbnMgY29sbGVjdGlvbnMgZmlsdGVyZWQgYnkgdGFuayB0eXBlXG4gICAqL1xuICBnZXRCeVRhbmtUeXBlKHRhbmtUeXBlOiBUYW5rVHlwZUVudW0pOiBEZXByZWNpYXRpb25Db2xsZWN0aW9uIHtcbiAgICBpZiAodGFua1R5cGUgPT09IFRhbmtUeXBlRW51bS5QUk9QRVJUWSkge1xuICAgICAgcmV0dXJuIG5ldyBEZXByZWNpYXRpb25Db2xsZWN0aW9uKFxuICAgICAgICB0aGlzLml0ZW1zLmZpbHRlcigoZGVwcmVjaWF0aW9uOiBEZXByZWNpYXRpb24pOiBib29sZWFuID0+IGRlcHJlY2lhdGlvbi5pc1Byb3BlcnR5VGFuaygpKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERlcHJlY2lhdGlvbkNvbGxlY3Rpb24oXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoZGVwcmVjaWF0aW9uOiBEZXByZWNpYXRpb24pOiBib29sZWFuID0+IGRlcHJlY2lhdGlvbi5pc1dvcmtUYW5rKCkpXG4gICAgKTtcbiAgfVxuXG4gIGdldEJ5UHJvcGVydGllc0lkcyhpZHM6IG51bWJlcltdKTogRGVwcmVjaWF0aW9uQ29sbGVjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBEZXByZWNpYXRpb25Db2xsZWN0aW9uKFxuICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoKGRlcHJlY2lhdGlvbjogRGVwcmVjaWF0aW9uKTogYm9vbGVhbiA9PiBpZHMuaW5jbHVkZXMoZGVwcmVjaWF0aW9uLnByb3BlcnR5Py5pZCkpXG4gICAgKTtcbiAgfVxuXG4gIGdldFdpdGhDYXBpdGFsUHJvamVjdCgpOiBEZXByZWNpYXRpb25Db2xsZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IERlcHJlY2lhdGlvbkNvbGxlY3Rpb24oXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoZGVwcmVjaWF0aW9uOiBEZXByZWNpYXRpb24pOiBib29sZWFuID0+ICEhZGVwcmVjaWF0aW9uLmRlcHJlY2lhdGlvbkNhcGl0YWxQcm9qZWN0KVxuICAgICk7XG4gIH1cblxuICBnZXRXaXRob3V0Q2FwaXRhbFByb2plY3QoKTogRGVwcmVjaWF0aW9uQ29sbGVjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBEZXByZWNpYXRpb25Db2xsZWN0aW9uKFxuICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoKGRlcHJlY2lhdGlvbjogRGVwcmVjaWF0aW9uKTogYm9vbGVhbiA9PiAhZGVwcmVjaWF0aW9uLmRlcHJlY2lhdGlvbkNhcGl0YWxQcm9qZWN0KVxuICAgICk7XG4gIH1cblxuICBnZXRXaXRob3V0Qm9ycm93aW5nRXhwZW5zZXMoKTogRGVwcmVjaWF0aW9uQ29sbGVjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBEZXByZWNpYXRpb25Db2xsZWN0aW9uKFxuICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoKGRlcHJlY2lhdGlvbjogRGVwcmVjaWF0aW9uKTogYm9vbGVhbiA9PiAhZGVwcmVjaWF0aW9uLmlzQm9ycm93aW5nRXhwZW5zZSgpKVxuICAgICk7XG4gIH1cblxuICBnZXRXb3JrRGVwcmVjaWF0aW9ucygpOiBEZXByZWNpYXRpb25Db2xsZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IERlcHJlY2lhdGlvbkNvbGxlY3Rpb24oXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoZGVwcmVjaWF0aW9uOiBEZXByZWNpYXRpb24pOiBib29sZWFuID0+IGRlcHJlY2lhdGlvbi5pc1dvcmtUYW5rKCkpXG4gICAgKTtcbiAgfVxuXG4gIGdldFByb3BlcnR5RGVwcmVjaWF0aW9ucygpOiBEZXByZWNpYXRpb25Db2xsZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IERlcHJlY2lhdGlvbkNvbGxlY3Rpb24oXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoZGVwcmVjaWF0aW9uOiBEZXByZWNpYXRpb24pOiBib29sZWFuID0+IGRlcHJlY2lhdGlvbi5pc1Byb3BlcnR5VGFuaygpKVxuICAgICk7XG4gIH1cblxuICBnZXRQbGFudEVxdWlwbWVudCgpOiBEZXByZWNpYXRpb25Db2xsZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IERlcHJlY2lhdGlvbkNvbGxlY3Rpb24oXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoZGVwcmVjaWF0aW9uOiBEZXByZWNpYXRpb24pOiBib29sZWFuID0+IGRlcHJlY2lhdGlvbi5pc1BsYW50RXF1aXBtZW50KCkpXG4gICAgKTtcbiAgfVxuXG4gIGdldENhcGl0YWxEZXByZWNpYXRpb25zKCk6IERlcHJlY2lhdGlvbkNvbGxlY3Rpb24ge1xuICAgIHJldHVybiBuZXcgRGVwcmVjaWF0aW9uQ29sbGVjdGlvbihcbiAgICAgIHRoaXMuaXRlbXMuZmlsdGVyKChkZXByZWNpYXRpb246IERlcHJlY2lhdGlvbik6IGJvb2xlYW4gPT4gZGVwcmVjaWF0aW9uLmlzQ2FwaXRhbCgpKVxuICAgICk7XG4gIH1cblxuICBnZXRCb3Jyb3dpbmdFeHBlbnNlRGVwcmVjaWF0aW9ucygpOiBEZXByZWNpYXRpb25Db2xsZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IERlcHJlY2lhdGlvbkNvbGxlY3Rpb24oXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoZGVwcmVjaWF0aW9uOiBEZXByZWNpYXRpb24pOiBib29sZWFuID0+IGRlcHJlY2lhdGlvbi5pc0JvcnJvd2luZ0V4cGVuc2UoKSlcbiAgICApO1xuICB9XG5cbiAgZ2V0V3JpdHRlbk9mZkRlcHJlY2lhdGlvbnMoKTogRGVwcmVjaWF0aW9uQ29sbGVjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBEZXByZWNpYXRpb25Db2xsZWN0aW9uKFxuICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoKGRlcHJlY2lhdGlvbjogRGVwcmVjaWF0aW9uKTogYm9vbGVhbiA9PiBkZXByZWNpYXRpb24uaXNXcml0dGVuT2ZmKCkpXG4gICAgKTtcbiAgfVxuXG4gIGdldExvd1ZhbHVlUG9vbERlcHJlY2lhdGlvbnMoKTogRGVwcmVjaWF0aW9uQ29sbGVjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBEZXByZWNpYXRpb25Db2xsZWN0aW9uKFxuICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoKGRlcHJlY2lhdGlvbjogRGVwcmVjaWF0aW9uKTogYm9vbGVhbiA9PiBkZXByZWNpYXRpb24uaXNMb3dWYWx1ZVBvb2woKSlcbiAgICApO1xuICB9XG5cbiAgZ2V0Q2FwaXRhbFByb2plY3RzKCk6IERlcHJlY2lhdGlvbkNhcGl0YWxQcm9qZWN0W10ge1xuICAgIHJldHVybiB1bmlxQnkoXG4gICAgICBjb21wYWN0KFxuICAgICAgICB0aGlzLml0ZW1zLm1hcCgoZGVwcmVjaWF0aW9uOiBEZXByZWNpYXRpb24pOiBEZXByZWNpYXRpb25DYXBpdGFsUHJvamVjdCA9PiB7XG4gICAgICAgICAgcmV0dXJuIGRlcHJlY2lhdGlvbi5kZXByZWNpYXRpb25DYXBpdGFsUHJvamVjdDtcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgICAnaWQnXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgVHJhbnNhY3Rpb25Db2xsZWN0aW9uIGZyb20gZGVwcmVjaWF0aW9uIGl0ZW1zXG4gICAqL1xuICB0b1RyYW5zYWN0aW9ucygpOiBUcmFuc2FjdGlvbkNvbGxlY3Rpb24ge1xuICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb25Db2xsZWN0aW9uKFxuICAgICAgdGhpcy5pdGVtcy5tYXAoKGl0ZW06IERlcHJlY2lhdGlvbikgPT4gaXRlbS50b1RyYW5zYWN0aW9uKCkpXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwcmVjaWF0aW9uLmNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvY29sbGVjdGlvbnMvZGVwcmVjaWF0aW9uLmNvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFMUMsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ25DLE9BQU8sT0FBTyxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWpFLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxVQUF3QjtJQUVsRTs7T0FFRztJQUNILElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFXLEVBQUUsWUFBMEIsRUFBVSxFQUFFLENBQUMsR0FBRyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUcsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFXLEVBQUUsWUFBMEIsRUFBRSxFQUFFO1lBQ25FLE9BQU8sR0FBRyxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUM7UUFDeEMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVELG9CQUFvQixDQUFDLE9BQWUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUN4RSxPQUFPLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFXLEVBQUUsWUFBMEIsRUFBVSxFQUFFO1lBQ3pGLE9BQU8sR0FBRyxH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Q0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWM7UUFDWixPQUFPLElBQUkscUJBQXFCLENBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBa0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQzdELENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYW5rVHlwZUVudW0gfSBmcm9tICcuLi9kYi9FbnVtcy90YW5rLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi9jb2xsZWN0aW9uJztcbmltcG9ydCB7IERlcHJlY2lhdGlvbiB9IGZyb20gJy4uL21vZGVscy9kZXByZWNpYXRpb24vZGVwcmVjaWF0aW9uJztcbmltcG9ydCB1bmlxQnkgZnJvbSAnbG9kYXNoL3VuaXFCeSc7XG5pbXBvcnQgY29tcGFjdCBmcm9tICdsb2Rhc2gvY29tcGFjdCc7XG5pbXBvcnQgeyBEZXByZWNpYXRpb25DYXBpdGFsUHJvamVjdCB9IGZyb20gJy4uL21vZGVscy9kZXByZWNpYXRpb24vZGVwcmVjaWF0aW9uLWNhcGl0YWwtcHJvamVjdCc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkNvbGxlY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uLmNvbGxlY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgRGVwcmVjaWF0aW9uQ29sbGVjdGlvbiBleHRlbmRzIENvbGxlY3Rpb248RGVwcmVjaWF0aW9uPiB7XG5cbiAgLyoqXG4gICAqIEdldCB0b3RhbCBhbW91bnQgb2YgYWxsIGRlcHJlY2lhdGlvbnMgaW4gdGhlIGNvbGxlY3Rpb25cbiAgICovXG4gIGdldCBhbW91bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5yZWR1Y2UoKHN1bTogbnVtYmVyLCBkZXByZWNpYXRpb246IERlcHJlY2lhdGlvbik6IG51bWJlciA9PiBzdW0gKyBkZXByZWNpYXRpb24uYW1vdW50LCAwKTtcbiAgfVxuXG4gIGdldCBjbGFpbUFtb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLnJlZHVjZSgoc3VtOiBudW1iZXIsIGRlcHJlY2lhdGlvbjogRGVwcmVjaWF0aW9uKSA9PiB7XG4gICAgICByZXR1cm4gc3VtICsgZGVwcmVjaWF0aW9uLmNsYWltQW1vdW50O1xuICAgIH0sIDApO1xuICB9XG5cbiAgZ2V0Q2xhaW1BbW91bnRCeVllYXIoeWVhcjogbnVtYmVyID0gK2xvY2FsU3RvcmFnZS5nZXRJdGVtKCdmaW5hbmNpYWxZZWFyJykpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmFtb3VudCAtIHRoaXMuaXRlbXMucmVkdWNlKChzdW06IG51bWJlciwgZGVwcmVjaWF0aW9uOiBEZXByZWNpYXRpb24pOiBudW1iZXIgPT4ge1xuICAgICAgcmV0dXJuIHN1bSArIGRlcHJlY2lhdGlvbi5nZXRDbG9zZUJhbGFuY2VCeVllYXIoeWVhcik7XG4gICAgfSwgMCk7XG4gIH1cblxuICBnZXRDbG9zZUJhbGFuY2VCeVllYXIoeWVhcjogbnVtYmVyID0gK2xvY2FsU3RvcmFnZS5nZXRJdGVtKCdmaW5hbmNpYWxZZWFyJykpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLnJlZHVjZSgoc3VtOiBudW1iZXIsIGRlcHJlY2lhdGlvbjogRGVwcmVjaWF0aW9uKTogbnVtYmVyID0+IHtcbiAgICAgIHJldHVybiBzdW0gKyBkZXByZWNpYXRpb24uZ2V0Q2xvc2VCYWxhbmNlQnlZZWFyKHllYXIpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgZ2V0Q3VycmVudFllYXJGb3JlY2FzdEFtb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLnJlZHVjZSgoc3VtOiBudW1iZXIsIGRlcHJlY2lhdGlvbjogRGVwcmVjaWF0aW9uKTogbnVtYmVyID0+IHtcbiAgICAgIHJldHVybiBzdW0gKyBkZXByZWNpYXRpb24uZ2V0Q3VycmVudFllYXJGb3JlY2FzdEFtb3VudCgpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgZ2V0IGFzc2V0VmFsdWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zdW1CeSgnYXNzZXRWYWx1ZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBuZXcgZGVwcmVjaWF0aW9ucyBjb2xsZWN0aW9ucyBmaWx0ZXJlZCBieSB0YW5rIHR5cGVcbiAgICovXG4gIGdldEJ5VGFua1R5cGUodGFua1R5cGU6IFRhbmtUeXBlRW51bSk6IERlcHJlY2lhdGlvbkNvbGxlY3Rpb24ge1xuICAgIGlmICh0YW5rVHlwZSA9PT0gVGFua1R5cGVFbnVtLlBST1BFUlRZKSB7XG4gICAgICByZXR1cm4gbmV3IERlcHJlY2lhdGlvbkNvbGxlY3Rpb24oXG4gICAgICAgIHRoaXMuaXRlbXMuZmlsdGVyKChkZXByZWNpYXRpb246IERlcHJlY2lhdGlvbik6IGJvb2xlYW4gPT4gZGVwcmVjaWF0aW9uLmlzUHJvcGVydHlUYW5rKCkpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgRGVwcmVjaWF0aW9uQ29sbGVjdGlvbihcbiAgICAgIHRoaXMuaXRlbXMuZmlsdGVyKChkZXByZWNpYXRpb246IERlcHJlY2lhdGlvbik6IGJvb2xlYW4gPT4gZGVwcmVjaWF0aW9uLmlzV29ya1RhbmsoKSlcbiAgICApO1xuICB9XG5cbiAgZ2V0QnlQcm9wZXJ0aWVzSWRzKGlkczogbnVtYmVyW10pOiBEZXByZWNpYXRpb25Db2xsZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IERlcHJlY2lhdGlvbkNvbGxlY3Rpb24oXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoZGVwcmVjaWF0aW9uOiBEZXByZWNpYXRpb24pOiBib29sZWFuID0+IGlkcy5pbmNsdWRlcyhkZXByZWNpYXRpb24ucHJvcGVydHk/LmlkKSlcbiAgICApO1xuICB9XG5cbiAgZ2V0V2l0aENhcGl0YWxQcm9qZWN0KCk6IERlcHJlY2lhdGlvbkNvbGxlY3Rpb24ge1xuICAgIHJldHVybiBuZXcgRGVwcmVjaWF0aW9uQ29sbGVjdGlvbihcbiAgICAgIHRoaXMuaXRlbXMuZmlsdGVyKChkZXByZWNpYXRpb246IERlcHJlY2lhdGlvbik6IGJvb2xlYW4gPT4gISFkZXByZWNpYXRpb24uZGVwcmVjaWF0aW9uQ2FwaXRhbFByb2plY3QpXG4gICAgKTtcbiAgfVxuXG4gIGdldFdpdGhvdXRDYXBpdGFsUHJvamVjdCgpOiBEZXByZWNpYXRpb25Db2xsZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IERlcHJlY2lhdGlvbkNvbGxlY3Rpb24oXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoZGVwcmVjaWF0aW9uOiBEZXByZWNpYXRpb24pOiBib29sZWFuID0+ICFkZXByZWNpYXRpb24uZGVwcmVjaWF0aW9uQ2FwaXRhbFByb2plY3QpXG4gICAgKTtcbiAgfVxuXG4gIGdldFdpdGhvdXRCb3Jyb3dpbmdFeHBlbnNlcygpOiBEZXByZWNpYXRpb25Db2xsZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IERlcHJlY2lhdGlvbkNvbGxlY3Rpb24oXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoZGVwcmVjaWF0aW9uOiBEZXByZWNpYXRpb24pOiBib29sZWFuID0+ICFkZXByZWNpYXRpb24uaXNCb3Jyb3dpbmdFeHBlbnNlKCkpXG4gICAgKTtcbiAgfVxuXG4gIGdldFdvcmtEZXByZWNpYXRpb25zKCk6IERlcHJlY2lhdGlvbkNvbGxlY3Rpb24ge1xuICAgIHJldHVybiBuZXcgRGVwcmVjaWF0aW9uQ29sbGVjdGlvbihcbiAgICAgIHRoaXMuaXRlbXMuZmlsdGVyKChkZXByZWNpYXRpb246IERlcHJlY2lhdGlvbik6IGJvb2xlYW4gPT4gZGVwcmVjaWF0aW9uLmlzV29ya1RhbmsoKSlcbiAgICApO1xuICB9XG5cbiAgZ2V0UHJvcGVydHlEZXByZWNpYXRpb25zKCk6IERlcHJlY2lhdGlvbkNvbGxlY3Rpb24ge1xuICAgIHJldHVybiBuZXcgRGVwcmVjaWF0aW9uQ29sbGVjdGlvbihcbiAgICAgIHRoaXMuaXRlbXMuZmlsdGVyKChkZXByZWNpYXRpb246IERlcHJlY2lhdGlvbik6IGJvb2xlYW4gPT4gZGVwcmVjaWF0aW9uLmlzUHJvcGVydHlUYW5rKCkpXG4gICAgKTtcbiAgfVxuXG4gIGdldFBsYW50RXF1aXBtZW50KCk6IERlcHJlY2lhdGlvbkNvbGxlY3Rpb24ge1xuICAgIHJldHVybiBuZXcgRGVwcmVjaWF0aW9uQ29sbGVjdGlvbihcbiAgICAgIHRoaXMuaXRlbXMuZmlsdGVyKChkZXByZWNpYXRpb246IERlcHJlY2lhdGlvbik6IGJvb2xlYW4gPT4gZGVwcmVjaWF0aW9uLmlzUGxhbnRFcXVpcG1lbnQoKSlcbiAgICApO1xuICB9XG5cbiAgZ2V0Q2FwaXRhbERlcHJlY2lhdGlvbnMoKTogRGVwcmVjaWF0aW9uQ29sbGVjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBEZXByZWNpYXRpb25Db2xsZWN0aW9uKFxuICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoKGRlcHJlY2lhdGlvbjogRGVwcmVjaWF0aW9uKTogYm9vbGVhbiA9PiBkZXByZWNpYXRpb24uaXNDYXBpdGFsKCkpXG4gICAgKTtcbiAgfVxuXG4gIGdldEJvcnJvd2luZ0V4cGVuc2VEZXByZWNpYXRpb25zKCk6IERlcHJlY2lhdGlvbkNvbGxlY3Rpb24ge1xuICAgIHJldHVybiBuZXcgRGVwcmVjaWF0aW9uQ29sbGVjdGlvbihcbiAgICAgIHRoaXMuaXRlbXMuZmlsdGVyKChkZXByZWNpYXRpb246IERlcHJlY2lhdGlvbik6IGJvb2xlYW4gPT4gZGVwcmVjaWF0aW9uLmlzQm9ycm93aW5nRXhwZW5zZSgpKVxuICAgICk7XG4gIH1cblxuICBnZXRXcml0dGVuT2ZmRGVwcmVjaWF0aW9ucygpOiBEZXByZWNpYXRpb25Db2xsZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IERlcHJlY2lhdGlvbkNvbGxlY3Rpb24oXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoZGVwcmVjaWF0aW9uOiBEZXByZWNpYXRpb24pOiBib29sZWFuID0+IGRlcHJlY2lhdGlvbi5pc1dyaXR0ZW5PZmYoKSlcbiAgICApO1xuICB9XG5cbiAgZ2V0TG93VmFsdWVQb29sRGVwcmVjaWF0aW9ucygpOiBEZXByZWNpYXRpb25Db2xsZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IERlcHJlY2lhdGlvbkNvbGxlY3Rpb24oXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoZGVwcmVjaWF0aW9uOiBEZXByZWNpYXRpb24pOiBib29sZWFuID0+IGRlcHJlY2lhdGlvbi5pc0xvd1ZhbHVlUG9vbCgpKVxuICAgICk7XG4gIH1cblxuICBnZXRDYXBpdGFsUHJvamVjdHMoKTogRGVwcmVjaWF0aW9uQ2FwaXRhbFByb2plY3RbXSB7XG4gICAgcmV0dXJuIHVuaXFCeShcbiAgICAgIGNvbXBhY3QoXG4gICAgICAgIHRoaXMuaXRlbXMubWFwKChkZXByZWNpYXRpb246IERlcHJlY2lhdGlvbik6IERlcHJlY2lhdGlvbkNhcGl0YWxQcm9qZWN0ID0+IHtcbiAgICAgICAgICByZXR1cm4gZGVwcmVjaWF0aW9uLmRlcHJlY2lhdGlvbkNhcGl0YWxQcm9qZWN0O1xuICAgICAgICB9KVxuICAgICAgKSxcbiAgICAgICdpZCdcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBUcmFuc2FjdGlvbkNvbGxlY3Rpb24gZnJvbSBkZXByZWNpYXRpb24gaXRlbXNcbiAgICovXG4gIHRvVHJhbnNhY3Rpb25zKCk6IFRyYW5zYWN0aW9uQ29sbGVjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvbkNvbGxlY3Rpb24oXG4gICAgICB0aGlzLml0ZW1zLm1hcCgoaXRlbTogRGVwcmVjaWF0aW9uKSA9PiBpdGVtLnRvVHJhbnNhY3Rpb24oKSlcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export class ClientDetails {
|
|
2
2
|
}
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LWRldGFpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvZGIvTW9kZWxzL2NsaWVudC1kZXRhaWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE1BQU0sT0FBTyxhQUFhO0NBc0J6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENsaWVudERldGFpbHNXb3JrRGVwcmVjaWF0aW9uQ2FsY3VsYXRpb25FbnVtIH0gZnJvbSAnLi4vRW51bXMvY2xpZW50LWRldGFpbHMtd29yay1kZXByZWNpYXRpb24tY2FsY3VsYXRpb24uZW51bSc7XG5pbXBvcnQgeyBDbGllbnREZXRhaWxzTWVkaWNhcmVFeGVtcHRpb25FbnVtIH0gZnJvbSAnLi4vRW51bXMvY2xpZW50LWRldGFpbHMtbWVkaWNhcmUtZXhlbXB0aW9uLmVudW0nO1xuaW1wb3J0IHsgQ2xpZW50RGV0YWlsc1dvcmtpbmdIb2xpZGF5TWFrZXJFbnVtIH0gZnJvbSAnLi4vRW51bXMvY2xpZW50LWRldGFpbHMtd29ya2luZy1ob2xpZGF5LW1ha2VyLmVudW0nO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4vdXNlcic7XG5pbXBvcnQgeyBPY2N1cGF0aW9uIH0gZnJvbSAnLi9vY2N1cGF0aW9uJztcbmltcG9ydCB7IEFkZHJlc3MgfSBmcm9tICcuL2FkZHJlc3MnO1xuaW1wb3J0IHsgUGhvbmUgfSBmcm9tICcuL3Bob25lJztcblxuZXhwb3J0IGNsYXNzIENsaWVudERldGFpbHMge1xuICBpZD86IG51bWJlcjtcbiAgaXNBdXN0cmFsaWFuUmVzaWRlbnQ/OiBib29sZWFuO1xuICB0YXhGaWxlTnVtYmVyPzogc3RyaW5nO1xuICB3b3JrRGVwcmVjaWF0aW9uQ2FsY3VsYXRpb24/OiBDbGllbnREZXRhaWxzV29ya0RlcHJlY2lhdGlvbkNhbGN1bGF0aW9uRW51bTtcbiAgcHJpdmF0ZUhlYWx0aENhcmU/OiBib29sZWFuO1xuICBzcG91c2U/OiBib29sZWFuO1xuICBzcG91c2VBbm51YWxJbmNvbWU/OiBudW1iZXI7XG4gIHN0dWRlbnRMb2FuQW1vdW50PzogbnVtYmVyO1xuICBkZXBlbmRhbnRzPzogbnVtYmVyO1xuICBtZWRpY2FyZUV4ZW1wdGlvbj86IENsaWVudERldGFpbHNNZWRpY2FyZUV4ZW1wdGlvbkVudW07XG4gIHBlbnNpb25lcnNUYXg/OiBib29sZWFuO1xuICB3b3JraW5nSG9saWRheU1ha2VyPzogQ2xpZW50RGV0YWlsc1dvcmtpbmdIb2xpZGF5TWFrZXJFbnVtO1xuICBkYXRlT2ZCaXJ0aD86IERhdGU7XG4gIGNhcGl0YWxMb3NzPzogbnVtYmVyO1xuICBkZWxldGVkQXQ/OiBEYXRlO1xuICBjcmVhdGVkQXQ/OiBEYXRlO1xuICB1cGRhdGVkQXQ/OiBEYXRlO1xuICB1c2VyPzogVXNlcjtcbiAgb2NjdXBhdGlvbj86IE9jY3VwYXRpb247XG4gIGFkZHJlc3Nlcz86IEFkZHJlc3NbXTtcbiAgcGhvbmVzPzogUGhvbmVbXTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Class describe configuration options for basiq connect control
|
|
3
|
+
* https://www.npmjs.com/package/@basiq/basiq-connect-control
|
|
4
|
+
*/
|
|
5
|
+
export class BasiqConfig {
|
|
6
|
+
constructor(options) {
|
|
7
|
+
// ID of the DOM element to which Basiq Connect Control will be rendered;
|
|
8
|
+
this.containerId = 'basiq-control';
|
|
9
|
+
Object.assign(this, options);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaXEtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL21vZGVscy9iYW5rL2Jhc2lxLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sV0FBVztJQXdCdEIsWUFDRSxPQUFlO1FBeEJqQix5RUFBeUU7UUFDekUsZ0JBQVcsR0FBVyxlQUFlLENBQUM7UUF5QnBDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQy9CLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2xhc3MgZGVzY3JpYmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBiYXNpcSBjb25uZWN0IGNvbnRyb2xcbiAqIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BiYXNpcS9iYXNpcS1jb25uZWN0LWNvbnRyb2xcbiAqL1xuZXhwb3J0IGNsYXNzIEJhc2lxQ29uZmlnIHtcbiAgLy8gSUQgb2YgdGhlIERPTSBlbGVtZW50IHRvIHdoaWNoIEJhc2lxIENvbm5lY3QgQ29udHJvbCB3aWxsIGJlIHJlbmRlcmVkO1xuICBjb250YWluZXJJZDogc3RyaW5nID0gJ2Jhc2lxLWNvbnRyb2wnO1xuXG4gIC8vIENMSUVOVF9BQ0NFU1Mgc2NvcGVcbiAgdG9rZW46IHN0cmluZztcbiAgdXNlcklEOiBzdHJpbmc7XG4gIC8vIG9yXG4gIGNvbm5lY3RMaW5rSWQ6IHN0cmluZztcblxuICAvLyBvcHRpb25hbCBmaWVsZHNcbiAgLy8gc2hvdWxkIHVwbG9hZGluZyBzdGF0ZW1lbnRzIGJlIGVuYWJsZWRcbiAgdXBsb2FkOiBib29sZWFuO1xuICAvLyBzaG91bGQgY29ubmVjdGluZyB0byBiYW5rIHdpdGggY3JlZGVudGlhbHMgYmUgZW5hYmxlZFxuICBjb25uZWN0OiBib29sZWFuO1xuICAvLyBjb21wYW55IG5hbWUgdG8gYmUgc2hvd24sIHdpbGwgZGVmYXVsdCB0byBCYXNpcSBEYXNoYm9hcmQgbmFtZVxuICBjb21wYW55TmFtZTogc3RyaW5nO1xuICAvLyB2YWxpZCB2YWx1ZXM6IEF1c3RyYWxpYSwgTmV3IFplYWxhbmRcbiAgcmVnaW9uT2ZJbnN0aXR1dGlvbnM6IHN0cmluZztcbiAgLy8gc2hvdWxkIHRlc3QgYmFua3MgKEJhc2lxLCBIb29saSkgYmUgaGlkZGVuIGZyb20gdXNlclxuICBoaWRlVGVzdEJhbmtzOiBib29sZWFuO1xuICAvLyBzaG91bGQgYmV0YSBiYW5rcyBiZSBoaWRkZW4gZnJvbSB1c2VyXG4gIGhpZGVCZXRhQmFua3M6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgb3B0aW9uczogb2JqZWN0XG4gICkge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgb3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -125,7 +125,7 @@ export class Property extends PropertyBase {
|
|
|
125
125
|
* net capital gain tax (includes tax exemptions)
|
|
126
126
|
*/
|
|
127
127
|
calculateNetCGT(sale) {
|
|
128
|
-
return this.getCGTExemptionRatio(sale) *
|
|
128
|
+
return this.getCGTExemptionRatio(sale) * sale.cgt;
|
|
129
129
|
}
|
|
130
130
|
/**
|
|
131
131
|
* guess tax exemption based on property details
|
|
@@ -139,7 +139,7 @@ export class Property extends PropertyBase {
|
|
|
139
139
|
case this.category.id === PropertyCategoryListEnum.OWNER_OCCUPIED:
|
|
140
140
|
return TaxExemptionEnum.PPR;
|
|
141
141
|
// exemption for investment properties owned for at least one year
|
|
142
|
-
case this.
|
|
142
|
+
case this.isOneYearExemptionApplicable(sale):
|
|
143
143
|
return TaxExemptionEnum.ONE_YEAR_RULE;
|
|
144
144
|
default:
|
|
145
145
|
return null;
|
|
@@ -162,7 +162,7 @@ export class Property extends PropertyBase {
|
|
|
162
162
|
// main residence become investment (exemption for home office percent usage)
|
|
163
163
|
case TaxExemptionEnum.PPR_TO_INVESTMENT:
|
|
164
164
|
// 1 year CGT discount can still apply (on the income producing % if used for 12 months or more)
|
|
165
|
-
const ratio = this.
|
|
165
|
+
const ratio = this.isOneYearExemptionApplicable(sale) ? 0.5 : 1;
|
|
166
166
|
return metadata.getClaimPercent() / 100 * ratio;
|
|
167
167
|
// full exemption
|
|
168
168
|
case TaxExemptionEnum.PPR:
|
|
@@ -175,6 +175,9 @@ export class Property extends PropertyBase {
|
|
|
175
175
|
return 1;
|
|
176
176
|
}
|
|
177
177
|
}
|
|
178
|
+
isOneYearExemptionApplicable(sale) {
|
|
179
|
+
return sale.cgt > 0 && this.getOwnershipDuration(sale, 'years') > 0;
|
|
180
|
+
}
|
|
178
181
|
/**
|
|
179
182
|
* ownership duration from purchase till sale
|
|
180
183
|
*/
|
|
@@ -212,4 +215,4 @@ __decorate([
|
|
|
212
215
|
__decorate([
|
|
213
216
|
Exclude()
|
|
214
217
|
], Property.prototype, "documentFile", void 0);
|
|
215
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvbW9kZWxzL3Byb3BlcnR5L3Byb3BlcnR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsUUFBUSxJQUFJLFlBQVksRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBSTNFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFFaEQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDbEMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQy9ELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBQzdGLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBR2pDLE9BQU8sRUFDTCwwQ0FBMEMsRUFDM0MsTUFBTSwwRkFBMEYsQ0FBQztBQUVsRzs7R0FFRztBQUNILE1BQU0sT0FBTyxRQUFTLFNBQVEsWUFBWTtJQW1DeEMsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztJQUMzQixDQUFDO0lB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QUFDLElBQUksQ0FBQztnREFDSTtBQUdyQjtJQURDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUM7eUNBQ0g7QUFHakI7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7MENBQ0Y7QUFHM0I7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7NENBQ0U7QUFHaEM7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7MkNBQ0M7QUFHOUI7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUM7bURBQ1M7QUFHOUM7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO3NDQUNOO0FBR1g7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7K0NBQ0s7QUFJdEM7SUFEQyxPQUFPLEVBQUU7OENBQ1MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1Byb3BlcnR5IGFzIFByb3BlcnR5QmFzZX0gZnJvbSAnLi4vLi4vZGIvTW9kZWxzL3Byb3BlcnR5L3Byb3BlcnR5JztcbmltcG9ydCB7RG9jdW1lbnRhYmxlfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2RvY3VtZW50YWJsZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtJRG9jdW1lbnR9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZG9jdW1lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7UHJvcGVydHlTaGFyZX0gZnJvbSAnLi4vLi4vZGIvTW9kZWxzL3Byb3BlcnR5L3Byb3BlcnR5LXNoYXJlJztcbmltcG9ydCB7UHJvcGVydHlTdWJzY3JpcHRpb259IGZyb20gJy4vcHJvcGVydHktc3Vic2NyaXB0aW9uJztcbmltcG9ydCB7RXhjbHVkZSwgVHlwZX0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHtQaG90b2FibGV9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcGhvdG9hYmxlJztcbmltcG9ydCB7QWRkcmVzc30gZnJvbSAnLi4vYWRkcmVzcy9hZGRyZXNzJztcbmltcG9ydCB7UHJvcGVydHlDYXRlZ29yeX0gZnJvbSAnLi9wcm9wZXJ0eS1jYXRlZ29yeSc7XG5pbXBvcnQge1Byb3BlcnR5VmFsdWF0aW9ufSBmcm9tICcuL3Byb3BlcnR5LXZhbHVhdGlvbic7XG5pbXBvcnQge1Byb3BlcnR5Rm9yZWNhc3R9IGZyb20gJy4vcHJvcGVydHktZm9yZWNhc3QnO1xuaW1wb3J0IHtQcm9wZXJ0eUNhdGVnb3J5TW92ZW1lbnR9IGZyb20gJy4vcHJvcGVydHktY2F0ZWdvcnktbW92ZW1lbnQnO1xuaW1wb3J0IHtVc2VyfSBmcm9tICcuLi91c2VyL3VzZXInO1xuaW1wb3J0IHtGaW5hbmNpYWxZZWFyfSBmcm9tICcuLi9maW5hbmNpYWwteWVhci9maW5hbmNpYWwteWVhcic7XG5pbXBvcnQge1RheEV4ZW1wdGlvbkVudW19IGZyb20gJy4uLy4uL2RiL0VudW1zL3Byb3BlcnR5L3Byb3BlcnR5LXNhbGUvdGF4LWV4ZW1wdGlvbi5lbnVtJztcbmltcG9ydCB7UHJvcGVydHlDYXRlZ29yeUxpc3RFbnVtfSBmcm9tICcuLi8uLi9kYi9FbnVtcy9wcm9wZXJ0eS9wcm9wZXJ0eS1jYXRlZ29yeS1saXN0LmVudW0nO1xuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge1Byb3BlcnR5U2FsZX0gZnJvbSAnLi9wcm9wZXJ0eS1zYWxlL3Byb3BlcnR5LXNhbGUnO1xuaW1wb3J0IHt1bml0T2ZUaW1lfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHtcbiAgUHJvcGVydHlTYWxlVGF4RXhlbXB0aW9uTWV0YWRhdGFDb2xsZWN0aW9uXG59IGZyb20gJy4uLy4uL2NvbGxlY3Rpb25zL3Byb3BlcnR5L3Byb3BlcnR5LXNhbGUvcHJvcGVydHktc2FsZS10YXgtZXhlbXB0aW9uLW1ldGFkYXRhLmNvbGxlY3Rpb24nO1xuXG4vKipcbiAqIHByb3BlcnR5U2FsZSBkb2NzIC0gaHR0cHM6Ly90YXh0YW5rLmF0bGFzc2lhbi5uZXQvd2lraS9zcGFjZXMvVEFYVEFOSy9wYWdlcy80MjA5NTA4MzUzL1Byb3BlcnR5K1NvbGQrYnV0dG9uXG4gKi9cbmV4cG9ydCBjbGFzcyBQcm9wZXJ0eSBleHRlbmRzIFByb3BlcnR5QmFzZSBpbXBsZW1lbnRzIFBob3RvYWJsZSwgRG9jdW1lbnRhYmxlIHtcbiAgQFR5cGUoKCkgPT4gRGF0ZSlcbiAgY29udHJhY3REYXRlOiBEYXRlO1xuXG4gIEBUeXBlKCgpID0+IERhdGUpXG4gIHNldHRsZW1lbnREYXRlOiBEYXRlO1xuXG4gIEBUeXBlKCgpID0+IEFkZHJlc3MpXG4gIGFkZHJlc3M6IEFkZHJlc3M7XG5cbiAgQFR5cGUoKCkgPT4gUHJvcGVydHlDYXRlZ29yeSlcbiAgY2F0ZWdvcnk6IFByb3BlcnR5Q2F0ZWdvcnk7XG5cbiAgQFR5cGUoKCkgPT4gUHJvcGVydHlWYWx1YXRpb24pXG4gIHZhbHVhdGlvbnM6IFByb3BlcnR5VmFsdWF0aW9uW107XG5cbiAgQFR5cGUoKCkgPT4gUHJvcGVydHlGb3JlY2FzdClcbiAgZm9yZWNhc3RzOiBQcm9wZXJ0eUZvcmVjYXN0W107XG5cbiAgQFR5cGUoKCkgPT4gUHJvcGVydHlDYXRlZ29yeU1vdmVtZW50KVxuICBjYXRlZ29yeU1vdmVtZW50czogUHJvcGVydHlDYXRlZ29yeU1vdmVtZW50W107XG5cbiAgQFR5cGUoKCkgPT4gVXNlcilcbiAgdXNlcjogVXNlcjtcblxuICBAVHlwZSgoKSA9PiBQcm9wZXJ0eVN1YnNjcmlwdGlvbilcbiAgc3Vic2NyaXB0aW9uczogUHJvcGVydHlTdWJzY3JpcHRpb25bXTtcblxuICAvLyBjb3VsZCBiZSBGaWxlIHdoZW4ganVzdCBhZGRlZCBuZXcgaW1hZ2VcbiAgQEV4Y2x1ZGUoKVxuICBkb2N1bWVudEZpbGU6IEZpbGU7XG5cbiAgLy8gQFRPRE8gcmVmYWN0b3Igd2l0aCBzcGFyZSB0YW5rXG4gIGRvY3VtZW50czogSURvY3VtZW50W107XG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hZGRyZXNzLm5hbWU7XG4gIH1cblxuICBnZXQgaXNBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5zdWJzY3JpcHRpb25zPy5sZW5ndGg7XG4gIH1cblxuICBpc093bigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy51c2VyLmlkID09PSArbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXJJZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBpbml0aWFscyBvZiBwcm9wZXJ0eS4gUmVxdWlyZWQgYnkgUGhvdG9hYmxlIGludGVyZmFjZVxuICAgKi9cbiAgZ2V0SW5pdGlhbHMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lLnNwbGl0KCcgJylbMV0uc2xpY2UoMCwgMik7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHByb3BlcnR5IHBob3RvLiBSZXF1aXJlZCBieSBQaG90b2FibGUgaW50ZXJmYWNlXG4gICAqL1xuICBnZXRQaG90bygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBob3RvO1xuICB9XG5cbiAgZ2V0IGNhcGl0YWxDb3N0c1RvdGFsQW1vdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RhbXBEdXR5ICsgdGhpcy5sZWdhbEZlZXMgKyB0aGlzLm90aGVyQ2FwaXRhbENvc3RzO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRZZWFyVmFsdWF0aW9ucygpOiBQcm9wZXJ0eVZhbHVhdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy52YWx1YXRpb25zLmZpbHRlcigodmFsdWF0aW9uOiBQcm9wZXJ0eVZhbHVhdGlvbik6IGJvb2xlYW4gPT4gdmFsdWF0aW9uLmlzQ3VycmVudFllYXIoKSk7XG4gIH1cblxuICBnZXQgbWFya2V0VmFsdWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5hY3R1YWxWYWx1YXRpb24/Lm1hcmtldFZhbHVlIHx8IDA7XG4gIH1cblxuICBnZXQgY3VycmVudFllYXJGb3JlY2FzdCgpOiBQcm9wZXJ0eUZvcmVjYXN0IHtcbiAgICByZXR1cm4gdGhpcy5mb3JlY2FzdHMuZmluZCgoZm9yZWNhc3Q6IFByb3BlcnR5Rm9yZWNhc3QpOiBib29sZWFuID0+IGZvcmVjYXN0LmlzQ3VycmVudFllYXIoKSk7XG4gIH1cblxuICBnZXQgZm9yZWNhc3RlZFJlbnRhbFJldHVybigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRZZWFyRm9yZWNhc3Q/LnJlbnRhbFJldHVybiB8fCAwO1xuICB9XG5cbiAgZ2V0IGZvcmVjYXN0ZWRUYXhQb3NpdGlvbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRZZWFyRm9yZWNhc3Q/LnRheFBvc2l0aW9uIHx8IDA7XG4gIH1cblxuICBnZXQgZmlyc3RGb3JlY2FzdFllYXIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5mb3JlY2FzdHMucmVkdWNlKChtaW46IG51bWJlciwgZm9yZWNhc3Q6IFByb3BlcnR5Rm9yZWNhc3QpOiBudW1iZXIgPT4ge1xuICAgICAgcmV0dXJuIG1pbiA+IGZvcmVjYXN0LmZpbmFuY2lhbFllYXIgPyBmb3JlY2FzdC5maW5hbmNpYWxZZWFyIDogbWluO1xuICAgIH0sIG5ldyBGaW5hbmNpYWxZZWFyKCkueWVhcik7XG4gIH1cblxuICBnZXQgbWFya2V0VmFsdWVHcm93dGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMubWFya2V0VmFsdWUgLSB0aGlzLnB1cmNoYXNlUHJpY2UpIC8gdGhpcy5tYXJrZXRWYWx1ZTtcbiAgfVxuXG4gIGdldCBteVNoYXJlKCk6IFByb3BlcnR5U2hhcmUge1xuICAgIHJldHVybiB0aGlzLnNoYXJlcy5maW5kKChzaGFyZTogUHJvcGVydHlTaGFyZSk6IGJvb2xlYW4gPT4gc2hhcmUudXNlci5pZCA9PT0gK2xvY2FsU3RvcmFnZS5nZXRJdGVtKCd1c2VySWQnKSk7XG4gIH1cblxuICAvKipcbiAgICogZXhhY3QgY2xhaW0gaW5jbHVkaW5nIHNoYXJlIHBlcmNlbnRcbiAgICovXG4gIGdldCBzaGFyZUNsYWltUGVyY2VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnNoYXJlUGVyY2VudCAqIHRoaXMuY2xhaW1QZXJjZW50IC8gMTAwO1xuICB9XG5cbiAgZ2V0IGFjdHVhbFZhbHVhdGlvbigpOiBQcm9wZXJ0eVZhbHVhdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWF0aW9ucy5yZWR1Y2UoKG1heERhdGVWYWx1YXRpb246IFByb3BlcnR5VmFsdWF0aW9uLCB2YWx1YXRpb246IFByb3BlcnR5VmFsdWF0aW9uKSA9PiB7XG4gICAgICByZXR1cm4gbWF4RGF0ZVZhbHVhdGlvbi5kYXRlID4gdmFsdWF0aW9uLmRhdGUgPyBtYXhEYXRlVmFsdWF0aW9uIDogdmFsdWF0aW9uO1xuICAgIH0sIHRoaXMudmFsdWF0aW9uc1swXSk7XG4gIH1cblxuICBnZXQgc2hhcmVQZXJjZW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubXlTaGFyZS5wZXJjZW50O1xuICB9XG5cbiAgZ2V0IHByZXZpb3VzQ2F0ZWdvcnkoKTogUHJvcGVydHlDYXRlZ29yeSB7XG4gICAgbGV0IHByZXZpb3VzQ2F0ZWdvcnk6IFByb3BlcnR5Q2F0ZWdvcnk7XG5cbiAgICBjb25zdCBtb3ZlbWVudHNDb3VudDogbnVtYmVyID0gdGhpcy5jYXRlZ29yeU1vdmVtZW50cy5sZW5ndGg7XG5cbiAgICBpZiAobW92ZW1lbnRzQ291bnQgPiAxKSB7XG4gICAgICBwcmV2aW91c0NhdGVnb3J5ID0gdGhpcy5jYXRlZ29yeU1vdmVtZW50c1ttb3ZlbWVudHNDb3VudCAtIDJdLnByb3BlcnR5Q2F0ZWdvcnk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZXZpb3VzQ2F0ZWdvcnk7XG4gIH1cblxuICBnZXRDdXJyZW50U3Vic2NyaXB0aW9uKCk6IFByb3BlcnR5U3Vic2NyaXB0aW9uIHtcbiAgICAvLyBhbHdheXMgcmV0dXJuIGZpcnN0IGVsZW1lbnQgYmVjYXVzZSBzdWJzY3JpcHRpb25zIGFycmF5IGNvbnRhaW5zIG9ubHkgb25lIGVsZW1lbnRcbiAgICByZXR1cm4gdGhpcy5zdWJzY3JpcHRpb25zWzBdO1xuICB9XG5cbiAgZ2V0Rm9yZWNhc3RCeVllYXIoeWVhcjogbnVtYmVyKTogUHJvcGVydHlGb3JlY2FzdCB7XG4gICAgcmV0dXJuIHRoaXMuZm9yZWNhc3RzLmZpbmQoKGZvcmVjYXN0OiBQcm9wZXJ0eUZvcmVjYXN0KTogYm9vbGVhbiA9PiBmb3JlY2FzdC5maW5hbmNpYWxZZWFyID09PSB5ZWFyKTtcbiAgfVxuXG4gIGdldCBpc1NoYXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaGFyZXMubGVuZ3RoID4gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAVE9ETyBjb25zaWRlciB0byBtb3ZlIG1ldGhvZHMgcmVsYXRlZCB3aXRoIHByb3BlcnR5U2FsZSB0byBzZXBhcmF0ZWQgY2xhc3MsIHNpbmNlIHVzZWQganVzdCBpbiBvbmUgbW9kdWxlIHlldFxuICAgKiBwdXJjaGFzZSBjb3N0cyAtIGNsYWltZWQgY29zdHMsIGV4Y2VwdCBgcHByIHRvIGludmVzdG1lbnRgIGV4ZW1wdGlvbixcbiAgICogaW4gdGhhdCBjYXNlIGl0J3MgZXF1YWwgdG8gbWFya2V0IHZhbHVlLCB3aGVuIHByb3BlcnR5IGJlY2FtZSBhbiBpbnZlc3RtZW50IHByb3BlcnR5XG4gICAqL1xuICBjYWxjdWxhdGVDb3N0QmFzZShzYWxlOiBQcm9wZXJ0eVNhbGUpOiBudW1iZXIge1xuICAgIGNvbnN0IG1hcmtldFZhbHVlOiBudW1iZXIgPSBuZXcgUHJvcGVydHlTYWxlVGF4RXhlbXB0aW9uTWV0YWRhdGFDb2xsZWN0aW9uKHNhbGUudGF4RXhlbXB0aW9uTWV0YWRhdGEpLmdldE1hcmtldFZhbHVlKCk7XG4gICAgaWYgKG1hcmtldFZhbHVlKSB7XG4gICAgICByZXR1cm4gbWFya2V0VmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucHVyY2hhc2VQcmljZSArIHRoaXMuY2FwaXRhbENvc3RzVG90YWxBbW91bnQgKyBzYWxlLnN0cnVjdHVyYWxJbXByb3ZlbWVudHNXRFYgLSBzYWxlLmJ1aWxkaW5nQXRDb3N0Q2xhaW1lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBncm9zcyBjYXBpdGFsIGdhaW4gdGF4OiBzYWxlIGNvc3RzIC0gY29zdCBiYXNlXG4gICAqL1xuICBjYWxjdWxhdGVDR1Qoc2FsZTogUHJvcGVydHlTYWxlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gc2FsZS5wcmljZSAtIHNhbGUuc2FsZUNvc3RzVG90YWxBbW91bnQgLSBzYWxlLmNhcGl0YWxMb3NzIC0gdGhpcy5jYWxjdWxhdGVDb3N0QmFzZShzYWxlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBuZXQgY2FwaXRhbCBnYWluIHRheCAoaW5jbHVkZXMgdGF4IGV4ZW1wdGlvbnMpXG4gICAqL1xuICBjYWxjdWxhdGVOZXRDR1Qoc2FsZTogUHJvcGVydHlTYWxlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDR1RFeGVtcHRpb25SYXRpbyhzYWxlKSAqIHRoaXMuY2FsY3VsYXRlQ0dUKHNhbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIGd1ZXNzIHRheCBleGVtcHRpb24gYmFzZWQgb24gcHJvcGVydHkgZGV0YWlsc1xuICAgKi9cbiAgZ2V0Q0dURXhlbXB0aW9uKHNhbGU6IFByb3BlcnR5U2FsZSk6IFRheEV4ZW1wdGlvbkVudW0ge1xuICAgIGlmIChzYWxlLnRheEV4ZW1wdGlvbikge1xuICAgICAgcmV0dXJuIHNhbGUudGF4RXhlbXB0aW9uLmlkO1xuICAgIH1cblxuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgLy8gZXhlbXB0aW9uIGZvciBtYWluIHJlc2lkZW5jZSBwcm9wZXJ0aWVzXG4gICAgICBjYXNlIHRoaXMuY2F0ZWdvcnkuaWQgPT09IFByb3BlcnR5Q2F0ZWdvcnlMaXN0RW51bS5PV05FUl9PQ0NVUElFRDpcbiAgICAgICAgcmV0dXJuIFRheEV4ZW1wdGlvbkVudW0uUFBSO1xuICAgICAgLy8gZXhlbXB0aW9uIGZvciBpbnZlc3RtZW50IHByb3BlcnRpZXMgb3duZWQgZm9yIGF0IGxlYXN0IG9uZSB5ZWFyXG4gICAgICBjYXNlIHRoaXMuZ2V0T3duZXJzaGlwRHVyYXRpb24oc2FsZSwgJ3llYXJzJykgPj0gMTpcbiAgICAgICAgcmV0dXJuIFRheEV4ZW1wdGlvbkVudW0uT05FX1lFQVJfUlVMRTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiB0YXggZXhlbXB0aW9uIGNhbiByZWR1Y2UgY2d0IGZyb20gMTAwJSB0byBsZXNzICh1cCB0byB6ZXJvKVxuICAgKi9cbiAgZ2V0Q0dURXhlbXB0aW9uUmF0aW8oc2FsZTogUHJvcGVydHlTYWxlKTogbnVtYmVyIHtcbiAgICBjb25zdCBtZXRhZGF0YTogUHJvcGVydHlTYWxlVGF4RXhlbXB0aW9uTWV0YWRhdGFDb2xsZWN0aW9uID0gbmV3IFByb3BlcnR5U2FsZVRheEV4ZW1wdGlvbk1ldGFkYXRhQ29sbGVjdGlvbihzYWxlLnRheEV4ZW1wdGlvbk1ldGFkYXRhKTtcblxuICAgIHN3aXRjaCAoc2FsZS50YXhFeGVtcHRpb24/LmlkKSB7XG4gICAgICAvLyA1MCUgZXhlbXB0aW9uIGZvciBpbnZlc3RtZW50cyBvd25lZCBmb3IgYXQgbGVhc3Qgb25lIHllYXJcbiAgICAgIGNhc2UgVGF4RXhlbXB0aW9uRW51bS5PTkVfWUVBUl9SVUxFOlxuICAgICAgICByZXR1cm4gMC41O1xuICAgICAgLy8gaW52ZXN0bWVudCBwcm9wZXJ0eSBiZWNvbWUgbWFpbiByZXNpZGVuY2UgKGV4ZW1wdGlvbiBmb3IgbWFpbiByZXNpZGVuY2Ugb3duZXJzaGlwIGR1cmF0aW9uKVxuICAgICAgY2FzZSBUYXhFeGVtcHRpb25FbnVtLklOVkVTVE1FTlRfVE9fUFBSOlxuICAgICAgICBjb25zdCBvd25lcnNoaXBEYXlzID0gdGhpcy5nZXRPd25lcnNoaXBEdXJhdGlvbihzYWxlKTtcblxuICAgICAgICByZXR1cm4gKG93bmVyc2hpcERheXMgLSBtZXRhZGF0YS5nZXRQUFJEYXlzKCkpIC8gb3duZXJzaGlwRGF5cztcbiAgICAgIC8vIG1haW4gcmVzaWRlbmNlIGJlY29tZSBpbnZlc3RtZW50IChleGVtcHRpb24gZm9yIGhvbWUgb2ZmaWNlIHBlcmNlbnQgdXNhZ2UpXG4gICAgICBjYXNlIFRheEV4ZW1wdGlvbkVudW0uUFBSX1RPX0lOVkVTVE1FTlQ6XG4gICAgICAgIC8vIDEgeWVhciBDR1QgZGlzY291bnQgY2FuIHN0aWxsIGFwcGx5IChvbiB0aGUgaW5jb21lIHByb2R1Y2luZyAlIGlmIHVzZWQgZm9yIDEyIG1vbnRocyBvciBtb3JlKVxuICAgICAgICBjb25zdCByYXRpbzogbnVtYmVyID0gdGhpcy5nZXRPd25lcnNoaXBEdXJhdGlvbihzYWxlLCAneWVhcnMnKSA+PSAxID8gMC41IDogMTtcbiAgICAgICAgcmV0dXJuIG1ldGFkYXRhLmdldENsYWltUGVyY2VudCgpIC8gMTAwICogcmF0aW87XG4gICAgICAvLyBmdWxsIGV4ZW1wdGlvblxuICAgICAgY2FzZSBUYXhFeGVtcHRpb25FbnVtLlBQUjpcbiAgICAgIGNhc2UgVGF4RXhlbXB0aW9uRW51bS5TSVhfWUVBUlNfUlVMRTpcbiAgICAgIGNhc2UgVGF4RXhlbXB0aW9uRW51bS5UUkFOU0ZFUjpcbiAgICAgIGNhc2UgVGF4RXhlbXB0aW9uRW51bS5PVEhFUjpcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICAvLyBubyBleGVtcHRpb25cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBvd25lcnNoaXAgZHVyYXRpb24gZnJvbSBwdXJjaGFzZSB0aWxsIHNhbGVcbiAgICovXG4gIGdldE93bmVyc2hpcER1cmF0aW9uKHNhbGU6IFByb3BlcnR5U2FsZSwgdW5pdE9mVGltZTogdW5pdE9mVGltZS5EaWZmID0gJ2RheXMnKTogbnVtYmVyIHtcbiAgICByZXR1cm4gbW9tZW50KHNhbGUuY29udHJhY3REYXRlKS5kaWZmKG1vbWVudCh0aGlzLmNvbnRyYWN0RGF0ZSksIHVuaXRPZlRpbWUpO1xuICB9XG59XG4iXX0=
|
|
218
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvbW9kZWxzL3Byb3BlcnR5L3Byb3BlcnR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsUUFBUSxJQUFJLFlBQVksRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBSTNFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFFaEQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDbEMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQy9ELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBQzdGLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBR2pDLE9BQU8sRUFDTCwwQ0FBMEMsRUFDM0MsTUFBTSwwRkFBMEYsQ0FBQztBQUVsRzs7R0FFRztBQUNILE1BQU0sT0FBTyxRQUFTLFNBQVEsWUFBWTtJQW1DeEMsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztJQUMzQixDQUFDO0lB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QURDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7OENBQ0U7QUFHbkI7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO2dEQUNJO0FBR3JCO0lBREMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQzt5Q0FDSDtBQUdqQjtJQURDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQzswQ0FDRjtBQUczQjtJQURDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQzs0Q0FDRTtBQUdoQztJQURDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQzsyQ0FDQztBQUc5QjtJQURDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQzttREFDUztBQUc5QztJQURDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7c0NBQ047QUFHWDtJQURDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQzsrQ0FDSztBQUl0QztJQURDLE9BQU8sRUFBRTs4Q0FDUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UHJvcGVydHkgYXMgUHJvcGVydHlCYXNlfSBmcm9tICcuLi8uLi9kYi9Nb2RlbHMvcHJvcGVydHkvcHJvcGVydHknO1xuaW1wb3J0IHtEb2N1bWVudGFibGV9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZG9jdW1lbnRhYmxlLmludGVyZmFjZSc7XG5pbXBvcnQge0lEb2N1bWVudH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9kb2N1bWVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtQcm9wZXJ0eVNoYXJlfSBmcm9tICcuLi8uLi9kYi9Nb2RlbHMvcHJvcGVydHkvcHJvcGVydHktc2hhcmUnO1xuaW1wb3J0IHtQcm9wZXJ0eVN1YnNjcmlwdGlvbn0gZnJvbSAnLi9wcm9wZXJ0eS1zdWJzY3JpcHRpb24nO1xuaW1wb3J0IHtFeGNsdWRlLCBUeXBlfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQge1Bob3RvYWJsZX0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9waG90b2FibGUnO1xuaW1wb3J0IHtBZGRyZXNzfSBmcm9tICcuLi9hZGRyZXNzL2FkZHJlc3MnO1xuaW1wb3J0IHtQcm9wZXJ0eUNhdGVnb3J5fSBmcm9tICcuL3Byb3BlcnR5LWNhdGVnb3J5JztcbmltcG9ydCB7UHJvcGVydHlWYWx1YXRpb259IGZyb20gJy4vcHJvcGVydHktdmFsdWF0aW9uJztcbmltcG9ydCB7UHJvcGVydHlGb3JlY2FzdH0gZnJvbSAnLi9wcm9wZXJ0eS1mb3JlY2FzdCc7XG5pbXBvcnQge1Byb3BlcnR5Q2F0ZWdvcnlNb3ZlbWVudH0gZnJvbSAnLi9wcm9wZXJ0eS1jYXRlZ29yeS1tb3ZlbWVudCc7XG5pbXBvcnQge1VzZXJ9IGZyb20gJy4uL3VzZXIvdXNlcic7XG5pbXBvcnQge0ZpbmFuY2lhbFllYXJ9IGZyb20gJy4uL2ZpbmFuY2lhbC15ZWFyL2ZpbmFuY2lhbC15ZWFyJztcbmltcG9ydCB7VGF4RXhlbXB0aW9uRW51bX0gZnJvbSAnLi4vLi4vZGIvRW51bXMvcHJvcGVydHkvcHJvcGVydHktc2FsZS90YXgtZXhlbXB0aW9uLmVudW0nO1xuaW1wb3J0IHtQcm9wZXJ0eUNhdGVnb3J5TGlzdEVudW19IGZyb20gJy4uLy4uL2RiL0VudW1zL3Byb3BlcnR5L3Byb3BlcnR5LWNhdGVnb3J5LWxpc3QuZW51bSc7XG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7UHJvcGVydHlTYWxlfSBmcm9tICcuL3Byb3BlcnR5LXNhbGUvcHJvcGVydHktc2FsZSc7XG5pbXBvcnQge3VuaXRPZlRpbWV9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge1xuICBQcm9wZXJ0eVNhbGVUYXhFeGVtcHRpb25NZXRhZGF0YUNvbGxlY3Rpb25cbn0gZnJvbSAnLi4vLi4vY29sbGVjdGlvbnMvcHJvcGVydHkvcHJvcGVydHktc2FsZS9wcm9wZXJ0eS1zYWxlLXRheC1leGVtcHRpb24tbWV0YWRhdGEuY29sbGVjdGlvbic7XG5cbi8qKlxuICogcHJvcGVydHlTYWxlIGRvY3MgLSBodHRwczovL3RheHRhbmsuYXRsYXNzaWFuLm5ldC93aWtpL3NwYWNlcy9UQVhUQU5LL3BhZ2VzLzQyMDk1MDgzNTMvUHJvcGVydHkrU29sZCtidXR0b25cbiAqL1xuZXhwb3J0IGNsYXNzIFByb3BlcnR5IGV4dGVuZHMgUHJvcGVydHlCYXNlIGltcGxlbWVudHMgUGhvdG9hYmxlLCBEb2N1bWVudGFibGUge1xuICBAVHlwZSgoKSA9PiBEYXRlKVxuICBjb250cmFjdERhdGU6IERhdGU7XG5cbiAgQFR5cGUoKCkgPT4gRGF0ZSlcbiAgc2V0dGxlbWVudERhdGU6IERhdGU7XG5cbiAgQFR5cGUoKCkgPT4gQWRkcmVzcylcbiAgYWRkcmVzczogQWRkcmVzcztcblxuICBAVHlwZSgoKSA9PiBQcm9wZXJ0eUNhdGVnb3J5KVxuICBjYXRlZ29yeTogUHJvcGVydHlDYXRlZ29yeTtcblxuICBAVHlwZSgoKSA9PiBQcm9wZXJ0eVZhbHVhdGlvbilcbiAgdmFsdWF0aW9uczogUHJvcGVydHlWYWx1YXRpb25bXTtcblxuICBAVHlwZSgoKSA9PiBQcm9wZXJ0eUZvcmVjYXN0KVxuICBmb3JlY2FzdHM6IFByb3BlcnR5Rm9yZWNhc3RbXTtcblxuICBAVHlwZSgoKSA9PiBQcm9wZXJ0eUNhdGVnb3J5TW92ZW1lbnQpXG4gIGNhdGVnb3J5TW92ZW1lbnRzOiBQcm9wZXJ0eUNhdGVnb3J5TW92ZW1lbnRbXTtcblxuICBAVHlwZSgoKSA9PiBVc2VyKVxuICB1c2VyOiBVc2VyO1xuXG4gIEBUeXBlKCgpID0+IFByb3BlcnR5U3Vic2NyaXB0aW9uKVxuICBzdWJzY3JpcHRpb25zOiBQcm9wZXJ0eVN1YnNjcmlwdGlvbltdO1xuXG4gIC8vIGNvdWxkIGJlIEZpbGUgd2hlbiBqdXN0IGFkZGVkIG5ldyBpbWFnZVxuICBARXhjbHVkZSgpXG4gIGRvY3VtZW50RmlsZTogRmlsZTtcblxuICAvLyBAVE9ETyByZWZhY3RvciB3aXRoIHNwYXJlIHRhbmtcbiAgZG9jdW1lbnRzOiBJRG9jdW1lbnRbXTtcblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFkZHJlc3MubmFtZTtcbiAgfVxuXG4gIGdldCBpc0FjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnN1YnNjcmlwdGlvbnM/Lmxlbmd0aDtcbiAgfVxuXG4gIGlzT3duKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnVzZXIuaWQgPT09ICtsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndXNlcklkJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGluaXRpYWxzIG9mIHByb3BlcnR5LiBSZXF1aXJlZCBieSBQaG90b2FibGUgaW50ZXJmYWNlXG4gICAqL1xuICBnZXRJbml0aWFscygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm5hbWUuc3BsaXQoJyAnKVsxXS5zbGljZSgwLCAyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgcHJvcGVydHkgcGhvdG8uIFJlcXVpcmVkIGJ5IFBob3RvYWJsZSBpbnRlcmZhY2VcbiAgICovXG4gIGdldFBob3RvKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGhvdG87XG4gIH1cblxuICBnZXQgY2FwaXRhbENvc3RzVG90YWxBbW91bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zdGFtcER1dHkgKyB0aGlzLmxlZ2FsRmVlcyArIHRoaXMub3RoZXJDYXBpdGFsQ29zdHM7XG4gIH1cblxuICBnZXQgY3VycmVudFllYXJWYWx1YXRpb25zKCk6IFByb3BlcnR5VmFsdWF0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLnZhbHVhdGlvbnMuZmlsdGVyKCh2YWx1YXRpb246IFByb3BlcnR5VmFsdWF0aW9uKTogYm9vbGVhbiA9PiB2YWx1YXRpb24uaXNDdXJyZW50WWVhcigpKTtcbiAgfVxuXG4gIGdldCBtYXJrZXRWYWx1ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmFjdHVhbFZhbHVhdGlvbj8ubWFya2V0VmFsdWUgfHwgMDtcbiAgfVxuXG4gIGdldCBjdXJyZW50WWVhckZvcmVjYXN0KCk6IFByb3BlcnR5Rm9yZWNhc3Qge1xuICAgIHJldHVybiB0aGlzLmZvcmVjYXN0cy5maW5kKChmb3JlY2FzdDogUHJvcGVydHlGb3JlY2FzdCk6IGJvb2xlYW4gPT4gZm9yZWNhc3QuaXNDdXJyZW50WWVhcigpKTtcbiAgfVxuXG4gIGdldCBmb3JlY2FzdGVkUmVudGFsUmV0dXJuKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFllYXJGb3JlY2FzdD8ucmVudGFsUmV0dXJuIHx8IDA7XG4gIH1cblxuICBnZXQgZm9yZWNhc3RlZFRheFBvc2l0aW9uKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFllYXJGb3JlY2FzdD8udGF4UG9zaXRpb24gfHwgMDtcbiAgfVxuXG4gIGdldCBmaXJzdEZvcmVjYXN0WWVhcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmZvcmVjYXN0cy5yZWR1Y2UoKG1pbjogbnVtYmVyLCBmb3JlY2FzdDogUHJvcGVydHlGb3JlY2FzdCk6IG51bWJlciA9PiB7XG4gICAgICByZXR1cm4gbWluID4gZm9yZWNhc3QuZmluYW5jaWFsWWVhciA/IGZvcmVjYXN0LmZpbmFuY2lhbFllYXIgOiBtaW47XG4gICAgfSwgbmV3IEZpbmFuY2lhbFllYXIoKS55ZWFyKTtcbiAgfVxuXG4gIGdldCBtYXJrZXRWYWx1ZUdyb3d0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5tYXJrZXRWYWx1ZSAtIHRoaXMucHVyY2hhc2VQcmljZSkgLyB0aGlzLm1hcmtldFZhbHVlO1xuICB9XG5cbiAgZ2V0IG15U2hhcmUoKTogUHJvcGVydHlTaGFyZSB7XG4gICAgcmV0dXJuIHRoaXMuc2hhcmVzLmZpbmQoKHNoYXJlOiBQcm9wZXJ0eVNoYXJlKTogYm9vbGVhbiA9PiBzaGFyZS51c2VyLmlkID09PSArbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXJJZCcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBleGFjdCBjbGFpbSBpbmNsdWRpbmcgc2hhcmUgcGVyY2VudFxuICAgKi9cbiAgZ2V0IHNoYXJlQ2xhaW1QZXJjZW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2hhcmVQZXJjZW50ICogdGhpcy5jbGFpbVBlcmNlbnQgLyAxMDA7XG4gIH1cblxuICBnZXQgYWN0dWFsVmFsdWF0aW9uKCk6IFByb3BlcnR5VmFsdWF0aW9uIHtcbiAgICByZXR1cm4gdGhpcy52YWx1YXRpb25zLnJlZHVjZSgobWF4RGF0ZVZhbHVhdGlvbjogUHJvcGVydHlWYWx1YXRpb24sIHZhbHVhdGlvbjogUHJvcGVydHlWYWx1YXRpb24pID0+IHtcbiAgICAgIHJldHVybiBtYXhEYXRlVmFsdWF0aW9uLmRhdGUgPiB2YWx1YXRpb24uZGF0ZSA/IG1heERhdGVWYWx1YXRpb24gOiB2YWx1YXRpb247XG4gICAgfSwgdGhpcy52YWx1YXRpb25zWzBdKTtcbiAgfVxuXG4gIGdldCBzaGFyZVBlcmNlbnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5teVNoYXJlLnBlcmNlbnQ7XG4gIH1cblxuICBnZXQgcHJldmlvdXNDYXRlZ29yeSgpOiBQcm9wZXJ0eUNhdGVnb3J5IHtcbiAgICBsZXQgcHJldmlvdXNDYXRlZ29yeTogUHJvcGVydHlDYXRlZ29yeTtcblxuICAgIGNvbnN0IG1vdmVtZW50c0NvdW50OiBudW1iZXIgPSB0aGlzLmNhdGVnb3J5TW92ZW1lbnRzLmxlbmd0aDtcblxuICAgIGlmIChtb3ZlbWVudHNDb3VudCA+IDEpIHtcbiAgICAgIHByZXZpb3VzQ2F0ZWdvcnkgPSB0aGlzLmNhdGVnb3J5TW92ZW1lbnRzW21vdmVtZW50c0NvdW50IC0gMl0ucHJvcGVydHlDYXRlZ29yeTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJldmlvdXNDYXRlZ29yeTtcbiAgfVxuXG4gIGdldEN1cnJlbnRTdWJzY3JpcHRpb24oKTogUHJvcGVydHlTdWJzY3JpcHRpb24ge1xuICAgIC8vIGFsd2F5cyByZXR1cm4gZmlyc3QgZWxlbWVudCBiZWNhdXNlIHN1YnNjcmlwdGlvbnMgYXJyYXkgY29udGFpbnMgb25seSBvbmUgZWxlbWVudFxuICAgIHJldHVybiB0aGlzLnN1YnNjcmlwdGlvbnNbMF07XG4gIH1cblxuICBnZXRGb3JlY2FzdEJ5WWVhcih5ZWFyOiBudW1iZXIpOiBQcm9wZXJ0eUZvcmVjYXN0IHtcbiAgICByZXR1cm4gdGhpcy5mb3JlY2FzdHMuZmluZCgoZm9yZWNhc3Q6IFByb3BlcnR5Rm9yZWNhc3QpOiBib29sZWFuID0+IGZvcmVjYXN0LmZpbmFuY2lhbFllYXIgPT09IHllYXIpO1xuICB9XG5cbiAgZ2V0IGlzU2hhcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNoYXJlcy5sZW5ndGggPiAxO1xuICB9XG5cbiAgLyoqXG4gICAqIEBUT0RPIGNvbnNpZGVyIHRvIG1vdmUgbWV0aG9kcyByZWxhdGVkIHdpdGggcHJvcGVydHlTYWxlIHRvIHNlcGFyYXRlZCBjbGFzcywgc2luY2UgdXNlZCBqdXN0IGluIG9uZSBtb2R1bGUgeWV0XG4gICAqIHB1cmNoYXNlIGNvc3RzIC0gY2xhaW1lZCBjb3N0cywgZXhjZXB0IGBwcHIgdG8gaW52ZXN0bWVudGAgZXhlbXB0aW9uLFxuICAgKiBpbiB0aGF0IGNhc2UgaXQncyBlcXVhbCB0byBtYXJrZXQgdmFsdWUsIHdoZW4gcHJvcGVydHkgYmVjYW1lIGFuIGludmVzdG1lbnQgcHJvcGVydHlcbiAgICovXG4gIGNhbGN1bGF0ZUNvc3RCYXNlKHNhbGU6IFByb3BlcnR5U2FsZSk6IG51bWJlciB7XG4gICAgY29uc3QgbWFya2V0VmFsdWU6IG51bWJlciA9IG5ldyBQcm9wZXJ0eVNhbGVUYXhFeGVtcHRpb25NZXRhZGF0YUNvbGxlY3Rpb24oc2FsZS50YXhFeGVtcHRpb25NZXRhZGF0YSkuZ2V0TWFya2V0VmFsdWUoKTtcbiAgICBpZiAobWFya2V0VmFsdWUpIHtcbiAgICAgIHJldHVybiBtYXJrZXRWYWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wdXJjaGFzZVByaWNlICsgdGhpcy5jYXBpdGFsQ29zdHNUb3RhbEFtb3VudCArIHNhbGUuc3RydWN0dXJhbEltcHJvdmVtZW50c1dEViAtIHNhbGUuYnVpbGRpbmdBdENvc3RDbGFpbWVkO1xuICB9XG5cbiAgLyoqXG4gICAqIGdyb3NzIGNhcGl0YWwgZ2FpbiB0YXg6IHNhbGUgY29zdHMgLSBjb3N0IGJhc2VcbiAgICovXG4gIGNhbGN1bGF0ZUNHVChzYWxlOiBQcm9wZXJ0eVNhbGUpOiBudW1iZXIge1xuICAgIHJldHVybiBzYWxlLnByaWNlIC0gc2FsZS5zYWxlQ29zdHNUb3RhbEFtb3VudCAtIHNhbGUuY2FwaXRhbExvc3MgLSB0aGlzLmNhbGN1bGF0ZUNvc3RCYXNlKHNhbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIG5ldCBjYXBpdGFsIGdhaW4gdGF4IChpbmNsdWRlcyB0YXggZXhlbXB0aW9ucylcbiAgICovXG4gIGNhbGN1bGF0ZU5ldENHVChzYWxlOiBQcm9wZXJ0eVNhbGUpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldENHVEV4ZW1wdGlvblJhdGlvKHNhbGUpICogc2FsZS5jZ3Q7XG4gIH1cblxuICAvKipcbiAgICogZ3Vlc3MgdGF4IGV4ZW1wdGlvbiBiYXNlZCBvbiBwcm9wZXJ0eSBkZXRhaWxzXG4gICAqL1xuICBnZXRDR1RFeGVtcHRpb24oc2FsZTogUHJvcGVydHlTYWxlKTogVGF4RXhlbXB0aW9uRW51bSB7XG4gICAgaWYgKHNhbGUudGF4RXhlbXB0aW9uKSB7XG4gICAgICByZXR1cm4gc2FsZS50YXhFeGVtcHRpb24uaWQ7XG4gICAgfVxuXG4gICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAvLyBleGVtcHRpb24gZm9yIG1haW4gcmVzaWRlbmNlIHByb3BlcnRpZXNcbiAgICAgIGNhc2UgdGhpcy5jYXRlZ29yeS5pZCA9PT0gUHJvcGVydHlDYXRlZ29yeUxpc3RFbnVtLk9XTkVSX09DQ1VQSUVEOlxuICAgICAgICByZXR1cm4gVGF4RXhlbXB0aW9uRW51bS5QUFI7XG4gICAgICAvLyBleGVtcHRpb24gZm9yIGludmVzdG1lbnQgcHJvcGVydGllcyBvd25lZCBmb3IgYXQgbGVhc3Qgb25lIHllYXJcbiAgICAgIGNhc2UgdGhpcy5pc09uZVllYXJFeGVtcHRpb25BcHBsaWNhYmxlKHNhbGUpOlxuICAgICAgICByZXR1cm4gVGF4RXhlbXB0aW9uRW51bS5PTkVfWUVBUl9SVUxFO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHRheCBleGVtcHRpb24gY2FuIHJlZHVjZSBjZ3QgZnJvbSAxMDAlIHRvIGxlc3MgKHVwIHRvIHplcm8pXG4gICAqL1xuICBnZXRDR1RFeGVtcHRpb25SYXRpbyhzYWxlOiBQcm9wZXJ0eVNhbGUpOiBudW1iZXIge1xuICAgIGNvbnN0IG1ldGFkYXRhOiBQcm9wZXJ0eVNhbGVUYXhFeGVtcHRpb25NZXRhZGF0YUNvbGxlY3Rpb24gPSBuZXcgUHJvcGVydHlTYWxlVGF4RXhlbXB0aW9uTWV0YWRhdGFDb2xsZWN0aW9uKHNhbGUudGF4RXhlbXB0aW9uTWV0YWRhdGEpO1xuXG4gICAgc3dpdGNoIChzYWxlLnRheEV4ZW1wdGlvbj8uaWQpIHtcbiAgICAgIC8vIDUwJSBleGVtcHRpb24gZm9yIGludmVzdG1lbnRzIG93bmVkIGZvciBhdCBsZWFzdCBvbmUgeWVhclxuICAgICAgY2FzZSBUYXhFeGVtcHRpb25FbnVtLk9ORV9ZRUFSX1JVTEU6XG4gICAgICAgIHJldHVybiAwLjU7XG4gICAgICAvLyBpbnZlc3RtZW50IHByb3BlcnR5IGJlY29tZSBtYWluIHJlc2lkZW5jZSAoZXhlbXB0aW9uIGZvciBtYWluIHJlc2lkZW5jZSBvd25lcnNoaXAgZHVyYXRpb24pXG4gICAgICBjYXNlIFRheEV4ZW1wdGlvbkVudW0uSU5WRVNUTUVOVF9UT19QUFI6XG4gICAgICAgIGNvbnN0IG93bmVyc2hpcERheXMgPSB0aGlzLmdldE93bmVyc2hpcER1cmF0aW9uKHNhbGUpO1xuXG4gICAgICAgIHJldHVybiAob3duZXJzaGlwRGF5cyAtIG1ldGFkYXRhLmdldFBQUkRheXMoKSkgLyBvd25lcnNoaXBEYXlzO1xuICAgICAgLy8gbWFpbiByZXNpZGVuY2UgYmVjb21lIGludmVzdG1lbnQgKGV4ZW1wdGlvbiBmb3IgaG9tZSBvZmZpY2UgcGVyY2VudCB1c2FnZSlcbiAgICAgIGNhc2UgVGF4RXhlbXB0aW9uRW51bS5QUFJfVE9fSU5WRVNUTUVOVDpcbiAgICAgICAgLy8gMSB5ZWFyIENHVCBkaXNjb3VudCBjYW4gc3RpbGwgYXBwbHkgKG9uIHRoZSBpbmNvbWUgcHJvZHVjaW5nICUgaWYgdXNlZCBmb3IgMTIgbW9udGhzIG9yIG1vcmUpXG4gICAgICAgIGNvbnN0IHJhdGlvOiBudW1iZXIgPSB0aGlzLmlzT25lWWVhckV4ZW1wdGlvbkFwcGxpY2FibGUoc2FsZSkgPyAwLjUgOiAxO1xuICAgICAgICByZXR1cm4gbWV0YWRhdGEuZ2V0Q2xhaW1QZXJjZW50KCkgLyAxMDAgKiByYXRpbztcbiAgICAgIC8vIGZ1bGwgZXhlbXB0aW9uXG4gICAgICBjYXNlIFRheEV4ZW1wdGlvbkVudW0uUFBSOlxuICAgICAgY2FzZSBUYXhFeGVtcHRpb25FbnVtLlNJWF9ZRUFSU19SVUxFOlxuICAgICAgY2FzZSBUYXhFeGVtcHRpb25FbnVtLlRSQU5TRkVSOlxuICAgICAgY2FzZSBUYXhFeGVtcHRpb25FbnVtLk9USEVSOlxuICAgICAgICByZXR1cm4gMDtcbiAgICAgIC8vIG5vIGV4ZW1wdGlvblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG5cbiAgaXNPbmVZZWFyRXhlbXB0aW9uQXBwbGljYWJsZShzYWxlOiBQcm9wZXJ0eVNhbGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc2FsZS5jZ3QgPiAwICYmIHRoaXMuZ2V0T3duZXJzaGlwRHVyYXRpb24oc2FsZSwgJ3llYXJzJykgPiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIG93bmVyc2hpcCBkdXJhdGlvbiBmcm9tIHB1cmNoYXNlIHRpbGwgc2FsZVxuICAgKi9cbiAgZ2V0T3duZXJzaGlwRHVyYXRpb24oc2FsZTogUHJvcGVydHlTYWxlLCB1bml0T2ZUaW1lOiB1bml0T2ZUaW1lLkRpZmYgPSAnZGF5cycpOiBudW1iZXIge1xuICAgIHJldHVybiBtb21lbnQoc2FsZS5jb250cmFjdERhdGUpLmRpZmYobW9tZW50KHRoaXMuY29udHJhY3REYXRlKSwgdW5pdE9mVGltZSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
2
|
import { Inject, Injectable } from '@angular/core';
|
|
3
|
-
import { ReplaySubject } from 'rxjs';
|
|
3
|
+
import { BehaviorSubject, ReplaySubject } from 'rxjs';
|
|
4
4
|
import { map } from 'rxjs/operators';
|
|
5
5
|
import { loadStripe } from '@stripe/stripe-js';
|
|
6
6
|
import { ServicePriceCollection } from '../../collections/service-price.collection';
|
|
@@ -15,17 +15,24 @@ import { AppEventTypeEnum } from '../../models/event/app-event-type.enum';
|
|
|
15
15
|
import * as i0 from "@angular/core";
|
|
16
16
|
import * as i1 from "@angular/common/http";
|
|
17
17
|
import * as i2 from "../event/event-dispatcher.service";
|
|
18
|
+
import * as i3 from "../event/sse.service";
|
|
18
19
|
export class SubscriptionService {
|
|
19
|
-
constructor(http, eventDispatcherService, environment) {
|
|
20
|
+
constructor(http, eventDispatcherService, sseService, environment) {
|
|
20
21
|
this.http = http;
|
|
21
22
|
this.eventDispatcherService = eventDispatcherService;
|
|
23
|
+
this.sseService = sseService;
|
|
22
24
|
this.environment = environment;
|
|
23
25
|
this.serviceSubscriptionSubject = new ReplaySubject(1);
|
|
24
26
|
this.serviceSubscriptionsSubject = new ReplaySubject(1);
|
|
25
27
|
this.servicePaymentsSubject = new ReplaySubject(1);
|
|
28
|
+
this.subscriptionChangeSubject = new BehaviorSubject(null);
|
|
29
|
+
this.listenEvents();
|
|
26
30
|
}
|
|
27
|
-
|
|
28
|
-
|
|
31
|
+
listenEvents() {
|
|
32
|
+
this.listenSubscriptions();
|
|
33
|
+
}
|
|
34
|
+
getSubscription(force = false) {
|
|
35
|
+
if (!this._serviceSubscription || force) {
|
|
29
36
|
this.http.get(`${this.environment.apiV2}/subscriptions/last`)
|
|
30
37
|
.pipe(map((response) => {
|
|
31
38
|
return plainToClass(ServiceSubscription, response);
|
|
@@ -51,8 +58,18 @@ export class SubscriptionService {
|
|
|
51
58
|
.subscribe((prices) => {
|
|
52
59
|
this._serviceSubscriptions = new ServiceSubscriptionCollection([
|
|
53
60
|
plainToClass(ServiceSubscription, { items: [] }),
|
|
54
|
-
plainToClass(ServiceSubscription, {
|
|
55
|
-
|
|
61
|
+
plainToClass(ServiceSubscription, {
|
|
62
|
+
items: [plainToClass(ServiceSubscriptionItem, {
|
|
63
|
+
price: prices.property,
|
|
64
|
+
quantity: 2
|
|
65
|
+
})]
|
|
66
|
+
}),
|
|
67
|
+
plainToClass(ServiceSubscription, {
|
|
68
|
+
items: [plainToClass(ServiceSubscriptionItem, {
|
|
69
|
+
price: prices.property,
|
|
70
|
+
quantity: 3
|
|
71
|
+
})]
|
|
72
|
+
})
|
|
56
73
|
]);
|
|
57
74
|
this._serviceSubscriptions.items.forEach((subscription) => {
|
|
58
75
|
subscription.items.push(plainToClass(ServiceSubscriptionItem, { price: prices.work, quantity: 1 }));
|
|
@@ -114,25 +131,27 @@ export class SubscriptionService {
|
|
|
114
131
|
* Change subscription plan
|
|
115
132
|
*/
|
|
116
133
|
changeSubscription(items) {
|
|
117
|
-
return this.http.put(`${this.environment.apiV2}/subscriptions/items`, items)
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
134
|
+
return this.http.put(`${this.environment.apiV2}/subscriptions/items`, items);
|
|
135
|
+
}
|
|
136
|
+
listenSubscriptions() {
|
|
137
|
+
this.sseService.on(`serviceSubscriptions`)
|
|
138
|
+
.pipe(map((event) => plainToClass(ServiceSubscription, event)))
|
|
139
|
+
.subscribe((subscription) => {
|
|
140
|
+
this.getSubscription(true).subscribe();
|
|
141
|
+
this.subscriptionChangeSubject.next(subscription);
|
|
122
142
|
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.SERVICE_SUBSCRIPTION_UPDATED, null));
|
|
123
|
-
|
|
124
|
-
}));
|
|
143
|
+
});
|
|
125
144
|
}
|
|
126
145
|
}
|
|
127
|
-
SubscriptionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SubscriptionService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
146
|
+
SubscriptionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SubscriptionService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: i3.SseService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
128
147
|
SubscriptionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SubscriptionService, providedIn: 'root' });
|
|
129
148
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SubscriptionService, decorators: [{
|
|
130
149
|
type: Injectable,
|
|
131
150
|
args: [{
|
|
132
151
|
providedIn: 'root'
|
|
133
152
|
}]
|
|
134
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EventDispatcherService }, { type: undefined, decorators: [{
|
|
153
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EventDispatcherService }, { type: i3.SseService }, { type: undefined, decorators: [{
|
|
135
154
|
type: Inject,
|
|
136
155
|
args: ['environment']
|
|
137
156
|
}] }]; } });
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvc3Vic2NyaXB0aW9uL3N1YnNjcmlwdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDcEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDbEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUVuRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saURBQWlELENBQUM7QUFDL0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDdEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7O0FBSzFFLE1BQU0sT0FBTyxtQkFBbUI7SUFTOUIsWUFDVSxJQUFnQixFQUNoQixzQkFBOEMsRUFDdkIsV0FBZ0I7UUFGdkMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQ3ZCLGdCQUFX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SUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ2hFLHVCQUF1QjtZQUN2QixJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLDRCQUE0QixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFFeEcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOztpSEFwSVUsbUJBQW1CLGtGQVlwQixhQUFhO3FIQVpaLG1CQUFtQixjQUZsQixNQUFNOzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQWFJLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGxvYWRTdHJpcGUgfSBmcm9tICdAc3RyaXBlL3N0cmlwZS1qcyc7XG5pbXBvcnQgeyBTZXJ2aWNlUHJpY2VDb2xsZWN0aW9uIH0gZnJvbSAnLi4vLi4vY29sbGVjdGlvbnMvc2VydmljZS1wcmljZS5jb2xsZWN0aW9uJztcbmltcG9ydCB7IFNlcnZpY2VTdWJzY3JpcHRpb25Db2xsZWN0aW9uIH0gZnJvbSAnLi4vLi4vY29sbGVjdGlvbnMvc2VydmljZS1zdWJzY3JpcHRpb24uY29sbGVjdGlvbic7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBTZXJ2aWNlU3Vic2NyaXB0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NlcnZpY2Utc3Vic2NyaXB0aW9uL3NlcnZpY2Utc3Vic2NyaXB0aW9uJztcbmltcG9ydCB7IFNlcnZpY2VQYXltZW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NlcnZpY2Utc3Vic2NyaXB0aW9uL3NlcnZpY2UtcGF5bWVudCc7XG5pbXBvcnQgeyBFdmVudERpc3BhdGNoZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZXZlbnQvZXZlbnQtZGlzcGF0Y2hlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNlcnZpY2VQcmljZSB9IGZyb20gJy4uLy4uL21vZGVscy9zZXJ2aWNlLXN1YnNjcmlwdGlvbi9zZXJ2aWNlLXByaWNlJztcbmltcG9ydCB7IFNlcnZpY2VTdWJzY3JpcHRpb25JdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NlcnZpY2Utc3Vic2NyaXB0aW9uL3NlcnZpY2Utc3Vic2NyaXB0aW9uLWl0ZW0nO1xuaW1wb3J0IHsgQXBwRXZlbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50JztcbmltcG9ydCB7IEFwcEV2ZW50VHlwZUVudW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50LXR5cGUuZW51bSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFN1YnNjcmlwdGlvblNlcnZpY2Uge1xuICBfc2VydmljZVN1YnNjcmlwdGlvbjogU2VydmljZVN1YnNjcmlwdGlvbjtcbiAgc2VydmljZVN1YnNjcmlwdGlvblN1YmplY3Q6IFJlcGxheVN1YmplY3Q8U2VydmljZVN1YnNjcmlwdGlvbj4gPSBuZXcgUmVwbGF5U3ViamVjdDxTZXJ2aWNlU3Vic2NyaXB0aW9uPigxKTtcbiAgX3NlcnZpY2VTdWJzY3JpcHRpb25zOiBTZXJ2aWNlU3Vic2NyaXB0aW9uQ29sbGVjdGlvbjtcbiAgc2VydmljZVN1YnNjcmlwdGlvbnNTdWJqZWN0OiBSZXBsYXlTdWJqZWN0PFNlcnZpY2VTdWJzY3JpcHRpb25Db2xsZWN0aW9uPiA9IG5ldyBSZXBsYXlTdWJqZWN0PFNlcnZpY2VTdWJzY3JpcHRpb25Db2xsZWN0aW9uPigxKTtcbiAgc3RyaXBlOiBhbnk7XG4gIHNlcnZpY2VQYXltZW50c1N1YmplY3Q6IFJlcGxheVN1YmplY3Q8U2VydmljZVBheW1lbnRbXT4gPSBuZXcgUmVwbGF5U3ViamVjdDxTZXJ2aWNlUGF5bWVudFtdPigxKTtcbiAgX3NlcnZpY2VQYXltZW50czogU2VydmljZVBheW1lbnRbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBldmVudERpc3BhdGNoZXJTZXJ2aWNlOiBFdmVudERpc3BhdGNoZXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm9ubWVudDogYW55XG4gICkge1xuICB9XG5cbiAgZ2V0U3Vic2NyaXB0aW9uKCk6IE9ic2VydmFibGU8U2VydmljZVN1YnNjcmlwdGlvbj4ge1xuICAgIGlmICghdGhpcy5fc2VydmljZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5odHRwLmdldChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9zdWJzY3JpcHRpb25zL2xhc3RgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBwbGFpblRvQ2xhc3MoU2VydmljZVN1YnNjcmlwdGlvbiwgcmVzcG9uc2UpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoc3Vic2NpcHRpb246IFNlcnZpY2VTdWJzY3JpcHRpb24pID0+IHtcbiAgICAgICAgICB0aGlzLl9zZXJ2aWNlU3Vic2NyaXB0aW9uID0gc3Vic2NpcHRpb247XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlU3Vic2NyaXB0aW9uU3ViamVjdC5uZXh0KHRoaXMuX3NlcnZpY2VTdWJzY3JpcHRpb24pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlU3Vic2NyaXB0aW9uU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAVE9ETyByaWdodCBub3cgd2UgaGF2ZSBvbmx5IG1vbnRobHkgcHJpY2VzLCB0aGUgZnVuY3Rpb24gc2hvdWxkIGJlIHJlZmFjdG9yZWQgdG8gc3VwcG9ydCBvdGhlciBvcHRpb25zIGluIGZ1dHVyZVxuICAgKlxuICAgKiBjcmVhdGUgYXZhaWxhYmxlIHN1YnNjcmlwdGlvbiBwbGFucyBiYXNlZCBvbiBleGlzdGluZyBwcm9kdWN0c1xuICAgKi9cbiAgZ2V0U3Vic2NyaXB0aW9uUGxhbnMoKTogT2JzZXJ2YWJsZTxTZXJ2aWNlU3Vic2NyaXB0aW9uQ29sbGVjdGlvbj4ge1xuICAgIGlmICghdGhpcy5fc2VydmljZVN1YnNjcmlwdGlvbnMpIHtcbiAgICAgIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vc2VydmljZS1wcmljZXNgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU2VydmljZVByaWNlQ29sbGVjdGlvbihyZXNwb25zZVsnaHlkcmE6bWVtYmVyJ10ubWFwKChpdGVtOiBvYmplY3QpID0+IHBsYWluVG9DbGFzcyhTZXJ2aWNlUHJpY2UsIGl0ZW0pKSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChwcmljZXM6IFNlcnZpY2VQcmljZUNvbGxlY3Rpb24pID0+IHtcbiAgICAgICAgICB0aGlzLl9zZXJ2aWNlU3Vic2NyaXB0aW9ucyA9IG5ldyBTZXJ2aWNlU3Vic2NyaXB0aW9uQ29sbGVjdGlvbihbXG4gICAgICAgICAgICBwbGFpblRvQ2xhc3MoU2VydmljZVN1YnNjcmlwdGlvbiwge2l0ZW1zOiBbXX0pLFxuICAgICAgICAgICAgcGxhaW5Ub0NsYXNzKFNlcnZpY2VTdWJzY3JpcHRpb24sIHtpdGVtczogW3BsYWluVG9DbGFzcyhTZXJ2aWNlU3Vic2NyaXB0aW9uSXRlbSwge3ByaWNlOiBwcmljZXMucHJvcGVydHksIHF1YW50aXR5OiAyfSldfSksXG4gICAgICAgICAgICBwbGFpblRvQ2xhc3MoU2VydmljZVN1YnNjcmlwdGlvbiwge2l0ZW1zOiBbcGxhaW5Ub0NsYXNzKFNlcnZpY2VTdWJzY3JpcHRpb25JdGVtLCB7cHJpY2U6IHByaWNlcy5wcm9wZXJ0eSwgcXVhbnRpdHk6IDN9KV19KVxuICAgICAgICAgIF0pO1xuICAgICAgICAgIHRoaXMuX3NlcnZpY2VTdWJzY3JpcHRpb25zLml0ZW1zLmZvckVhY2goKHN1YnNjcmlwdGlvbjogU2VydmljZVN1YnNjcmlwdGlvbikgPT4ge1xuICAgICAgICAgICAgc3Vic2NyaXB0aW9uLml0ZW1zLnB1c2gocGxhaW5Ub0NsYXNzKFNlcnZpY2VTdWJzY3JpcHRpb25JdGVtLCB7cHJpY2U6IHByaWNlcy53b3JrLCBxdWFudGl0eTogMX0pKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMuc2VydmljZVN1YnNjcmlwdGlvbnNTdWJqZWN0Lm5leHQodGhpcy5fc2VydmljZVN1YnNjcmlwdGlvbnMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlU3Vic2NyaXB0aW9uc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogcmVkaXJlY3QgdG8gc3RyaXBlIHBheW1lbnQgcGFnZVxuICAgKi9cbiAgYXN5bmMgY2hlY2tvdXRSZWRpcmVjdChzdWJzY3JpcHRpb246IFNlcnZpY2VTdWJzY3JpcHRpb24sIHN1Y2Nlc3NVcmw6IHN0cmluZywgY2FuY2VsVXJsOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHN0cmlwZTogYW55ID0gYXdhaXQgbG9hZFN0cmlwZSh0aGlzLmVudmlyb25tZW50LnN0cmlwZVBrKTtcbiAgICAvLyBAVE9ETyB2aWtcbiAgICBjb25zdCBsaW5lSXRlbXM6IGFueSA9IHN1YnNjcmlwdGlvbi5pdGVtcy5tYXAoKGl0ZW06IFNlcnZpY2VTdWJzY3JpcHRpb25JdGVtKSA9PiB7XG4gICAgICByZXR1cm4ge3NlcnZpY2VQcmljZUlkOiBpdGVtLnByaWNlLmlkLCBxdWFudGl0eTogaXRlbS5xdWFudGl0eX07XG4gICAgfSk7XG5cbiAgICB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9zdHJpcGUvY2hlY2tvdXQtc2Vzc2lvbmAsIHtcbiAgICAgIGxpbmVJdGVtcyxcbiAgICAgIHN1Y2Nlc3NVcmw6IHN1Y2Nlc3NVcmwsXG4gICAgICBjYW5jZWxVcmw6IGNhbmNlbFVybFxuICAgIH0pXG4gICAgICAuc3Vic2NyaWJlKChzZXNzaW9uOiBzdHJpbmcpID0+IHtcbiAgICAgICAgLy8gQFRvZG8gcmVtb3ZlIHVzZXIgVFJJQUwgc3RhdHVzXG4gICAgICAgIHN0cmlwZS5yZWRpcmVjdFRvQ2hlY2tvdXQoe3Nlc3Npb25JZDogc2Vzc2lvbn0pO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogcmVkaXJlY3QgdG8gc3RyaXBlIGJpbGxpbmcgcGFnZVxuICAgKi9cbiAgYmlsbGluZ1JlZGlyZWN0KHJldHVyblVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5odHRwLmdldChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9zdHJpcGUvYmlsbGluZy1wb3J0YWwtc2Vzc2lvbmAsIHtcbiAgICAgIHBhcmFtczoge3JldHVyblVybH1cbiAgICB9KS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHJlc3BvbnNlLnVybCk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRQYXltZW50cygpOiBPYnNlcnZhYmxlPFNlcnZpY2VQYXltZW50W10+IHtcbiAgICBpZiAoIXRoaXMuX3NlcnZpY2VQYXltZW50cykge1xuICAgICAgdGhpcy5odHRwLmdldChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9zZXJ2aWNlLXBheW1lbnRzYCkuc3Vic2NyaWJlKChyZXNwb25zZTogb2JqZWN0W10pID0+IHtcbiAgICAgICAgdGhpcy5fc2VydmljZVBheW1lbnRzID0gcmVzcG9uc2UubWFwKChpdGVtOiBvYmplY3QpID0+IHBsYWluVG9DbGFzcyhTZXJ2aWNlUGF5bWVudCwgaXRlbSkpO1xuICAgICAgICB0aGlzLnNlcnZpY2VQYXltZW50c1N1YmplY3QubmV4dCh0aGlzLl9zZXJ2aWNlUGF5bWVudHMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2VydmljZVBheW1lbnRzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZGlmZmVyZW5jZSBiZXR3ZWVuIGN1cnJlbnQgc3Vic2NyaXB0aW9uIGFuZCBzZWxlY3RlZCBuZXcgc3Vic2NyaXB0aW9uXG4gICAqL1xuICBnZXRQcm9yYXRpb25Db3N0KGl0ZW1zOiBTZXJ2aWNlU3Vic2NyaXB0aW9uSXRlbVtdKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vc3Vic2NyaXB0aW9ucy9wcm9yYXRpb24tY29zdGAsIGl0ZW1zKS5waXBlKFxuICAgICAgbWFwKChwcm9yYXRpb25Db3N0OiBudW1iZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIHByb3JhdGlvbkNvc3Q7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlIHN1YnNjcmlwdGlvbiBwbGFuXG4gICAqL1xuICBjaGFuZ2VTdWJzY3JpcHRpb24oaXRlbXM6IFNlcnZpY2VTdWJzY3JpcHRpb25JdGVtW10pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9zdWJzY3JpcHRpb25zL2l0ZW1zYCwgaXRlbXMpLnBpcGUoXG4gICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAvLyBTZXQgY2FjaGUgdmFsdWUgYXMgbnVsbCBhbmQgZmlyZSByZXF1ZXN0IHRvIGJhY2tlbmQgdG8gZ2V0IHVwZGF0ZWQgc3Vic2NyaXB0aW9uIHZhbHVlXG4gICAgICAgIHRoaXMuX3NlcnZpY2VTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgICAgICB0aGlzLnNlcnZpY2VTdWJzY3JpcHRpb25TdWJqZWN0Lm5leHQodGhpcy5fc2VydmljZVN1YnNjcmlwdGlvbik7XG4gICAgICAgIC8vIHVwZGF0ZSBwcm9wZXJ0eSBsaXN0XG4gICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5TRVJWSUNFX1NVQlNDUklQVElPTl9VUERBVEVELCBudWxsKSk7XG5cbiAgICAgICAgdGhpcy5nZXRTdWJzY3JpcHRpb24oKS5zdWJzY3JpYmUoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvc3Vic2NyaXB0aW9uL3N1YnNjcmlwdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZUFBZSxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUM3RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQy9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7QUFNMUUsTUFBTSxPQUFPLG1CQUFtQjtJQVU5QixZQUNVLElBQWdCLEVBQ2hCLHNCQUE4QyxFQUM5QyxVQUFzQixFQUNDLFdBQWdCO1FBSHZDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsMkJBQXNCLEdBQXRCLHNC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QWtCLENBQUMsS0FBZ0M7UUFDakQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLHNCQUFzQixDQUFDO2FBQ3ZDLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxLQUFhLEVBQXVCLEVBQUUsQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FDdEY7YUFDQSxTQUFTLENBQUMsQ0FBQyxZQUFpQyxFQUFRLEVBQUU7WUFDckQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsNEJBQTRCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxRyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O2lIQXZKVSxtQkFBbUIsNEdBY3BCLGFBQWE7cUhBZFosbUJBQW1CLGNBRmxCLE1BQU07NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBZUksTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBsb2FkU3RyaXBlIH0gZnJvbSAnQHN0cmlwZS9zdHJpcGUtanMnO1xuaW1wb3J0IHsgU2VydmljZVByaWNlQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uL2NvbGxlY3Rpb25zL3NlcnZpY2UtcHJpY2UuY29sbGVjdGlvbic7XG5pbXBvcnQgeyBTZXJ2aWNlU3Vic2NyaXB0aW9uQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uL2NvbGxlY3Rpb25zL3NlcnZpY2Utc3Vic2NyaXB0aW9uLmNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgU2VydmljZVN1YnNjcmlwdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9zZXJ2aWNlLXN1YnNjcmlwdGlvbi9zZXJ2aWNlLXN1YnNjcmlwdGlvbic7XG5pbXBvcnQgeyBTZXJ2aWNlUGF5bWVudCB9IGZyb20gJy4uLy4uL21vZGVscy9zZXJ2aWNlLXN1YnNjcmlwdGlvbi9zZXJ2aWNlLXBheW1lbnQnO1xuaW1wb3J0IHsgRXZlbnREaXNwYXRjaGVyU2VydmljZSB9IGZyb20gJy4uL2V2ZW50L2V2ZW50LWRpc3BhdGNoZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTZXJ2aWNlUHJpY2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VydmljZS1zdWJzY3JpcHRpb24vc2VydmljZS1wcmljZSc7XG5pbXBvcnQgeyBTZXJ2aWNlU3Vic2NyaXB0aW9uSXRlbSB9IGZyb20gJy4uLy4uL21vZGVscy9zZXJ2aWNlLXN1YnNjcmlwdGlvbi9zZXJ2aWNlLXN1YnNjcmlwdGlvbi1pdGVtJztcbmltcG9ydCB7IEFwcEV2ZW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudCc7XG5pbXBvcnQgeyBBcHBFdmVudFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudC10eXBlLmVudW0nO1xuaW1wb3J0IHsgU3NlU2VydmljZSB9IGZyb20gJy4uL2V2ZW50L3NzZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU3Vic2NyaXB0aW9uU2VydmljZSB7XG4gIF9zZXJ2aWNlU3Vic2NyaXB0aW9uOiBTZXJ2aWNlU3Vic2NyaXB0aW9uO1xuICBzZXJ2aWNlU3Vic2NyaXB0aW9uU3ViamVjdDogUmVwbGF5U3ViamVjdDxTZXJ2aWNlU3Vic2NyaXB0aW9uPiA9IG5ldyBSZXBsYXlTdWJqZWN0PFNlcnZpY2VTdWJzY3JpcHRpb24+KDEpO1xuICBfc2VydmljZVN1YnNjcmlwdGlvbnM6IFNlcnZpY2VTdWJzY3JpcHRpb25Db2xsZWN0aW9uO1xuICBzZXJ2aWNlU3Vic2NyaXB0aW9uc1N1YmplY3Q6IFJlcGxheVN1YmplY3Q8U2VydmljZVN1YnNjcmlwdGlvbkNvbGxlY3Rpb24+ID0gbmV3IFJlcGxheVN1YmplY3Q8U2VydmljZVN1YnNjcmlwdGlvbkNvbGxlY3Rpb24+KDEpO1xuICBzdHJpcGU6IGFueTtcbiAgc2VydmljZVBheW1lbnRzU3ViamVjdDogUmVwbGF5U3ViamVjdDxTZXJ2aWNlUGF5bWVudFtdPiA9IG5ldyBSZXBsYXlTdWJqZWN0PFNlcnZpY2VQYXltZW50W10+KDEpO1xuICBfc2VydmljZVBheW1lbnRzOiBTZXJ2aWNlUGF5bWVudFtdO1xuICBzdWJzY3JpcHRpb25DaGFuZ2VTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8U2VydmljZVN1YnNjcmlwdGlvbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlcnZpY2VTdWJzY3JpcHRpb24+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2U6IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzc2VTZXJ2aWNlOiBTc2VTZXJ2aWNlLFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm9ubWVudDogYW55XG4gICkge1xuICAgIHRoaXMubGlzdGVuRXZlbnRzKCk7XG4gIH1cblxuICBsaXN0ZW5FdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0ZW5TdWJzY3JpcHRpb25zKCk7XG4gIH1cblxuICBnZXRTdWJzY3JpcHRpb24oZm9yY2U6IGJvb2xlYW4gPSBmYWxzZSk6IE9ic2VydmFibGU8U2VydmljZVN1YnNjcmlwdGlvbj4ge1xuICAgIGlmICghdGhpcy5fc2VydmljZVN1YnNjcmlwdGlvbiB8fCBmb3JjZSkge1xuICAgICAgdGhpcy5odHRwLmdldChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9zdWJzY3JpcHRpb25zL2xhc3RgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBwbGFpblRvQ2xhc3MoU2VydmljZVN1YnNjcmlwdGlvbiwgcmVzcG9uc2UpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoc3Vic2NpcHRpb246IFNlcnZpY2VTdWJzY3JpcHRpb24pID0+IHtcbiAgICAgICAgICB0aGlzLl9zZXJ2aWNlU3Vic2NyaXB0aW9uID0gc3Vic2NpcHRpb247XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlU3Vic2NyaXB0aW9uU3ViamVjdC5uZXh0KHRoaXMuX3NlcnZpY2VTdWJzY3JpcHRpb24pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlU3Vic2NyaXB0aW9uU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAVE9ETyByaWdodCBub3cgd2UgaGF2ZSBvbmx5IG1vbnRobHkgcHJpY2VzLCB0aGUgZnVuY3Rpb24gc2hvdWxkIGJlIHJlZmFjdG9yZWQgdG8gc3VwcG9ydCBvdGhlciBvcHRpb25zIGluIGZ1dHVyZVxuICAgKlxuICAgKiBjcmVhdGUgYXZhaWxhYmxlIHN1YnNjcmlwdGlvbiBwbGFucyBiYXNlZCBvbiBleGlzdGluZyBwcm9kdWN0c1xuICAgKi9cbiAgZ2V0U3Vic2NyaXB0aW9uUGxhbnMoKTogT2JzZXJ2YWJsZTxTZXJ2aWNlU3Vic2NyaXB0aW9uQ29sbGVjdGlvbj4ge1xuICAgIGlmICghdGhpcy5fc2VydmljZVN1YnNjcmlwdGlvbnMpIHtcbiAgICAgIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vc2VydmljZS1wcmljZXNgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU2VydmljZVByaWNlQ29sbGVjdGlvbihyZXNwb25zZVsnaHlkcmE6bWVtYmVyJ10ubWFwKChpdGVtOiBvYmplY3QpID0+IHBsYWluVG9DbGFzcyhTZXJ2aWNlUHJpY2UsIGl0ZW0pKSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChwcmljZXM6IFNlcnZpY2VQcmljZUNvbGxlY3Rpb24pID0+IHtcbiAgICAgICAgICB0aGlzLl9zZXJ2aWNlU3Vic2NyaXB0aW9ucyA9IG5ldyBTZXJ2aWNlU3Vic2NyaXB0aW9uQ29sbGVjdGlvbihbXG4gICAgICAgICAgICBwbGFpblRvQ2xhc3MoU2VydmljZVN1YnNjcmlwdGlvbiwge2l0ZW1zOiBbXX0pLFxuICAgICAgICAgICAgcGxhaW5Ub0NsYXNzKFNlcnZpY2VTdWJzY3JpcHRpb24sIHtcbiAgICAgICAgICAgICAgaXRlbXM6IFtwbGFpblRvQ2xhc3MoU2VydmljZVN1YnNjcmlwdGlvbkl0ZW0sIHtcbiAgICAgICAgICAgICAgICBwcmljZTogcHJpY2VzLnByb3BlcnR5LFxuICAgICAgICAgICAgICAgIHF1YW50aXR5OiAyXG4gICAgICAgICAgICAgIH0pXVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBwbGFpblRvQ2xhc3MoU2VydmljZVN1YnNjcmlwdGlvbiwge1xuICAgICAgICAgICAgICBpdGVtczogW3BsYWluVG9DbGFzcyhTZXJ2aWNlU3Vic2NyaXB0aW9uSXRlbSwge1xuICAgICAgICAgICAgICAgIHByaWNlOiBwcmljZXMucHJvcGVydHksXG4gICAgICAgICAgICAgICAgcXVhbnRpdHk6IDNcbiAgICAgICAgICAgICAgfSldXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF0pO1xuICAgICAgICAgIHRoaXMuX3NlcnZpY2VTdWJzY3JpcHRpb25zLml0ZW1zLmZvckVhY2goKHN1YnNjcmlwdGlvbjogU2VydmljZVN1YnNjcmlwdGlvbikgPT4ge1xuICAgICAgICAgICAgc3Vic2NyaXB0aW9uLml0ZW1zLnB1c2gocGxhaW5Ub0NsYXNzKFNlcnZpY2VTdWJzY3JpcHRpb25JdGVtLCB7cHJpY2U6IHByaWNlcy53b3JrLCBxdWFudGl0eTogMX0pKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMuc2VydmljZVN1YnNjcmlwdGlvbnNTdWJqZWN0Lm5leHQodGhpcy5fc2VydmljZVN1YnNjcmlwdGlvbnMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlU3Vic2NyaXB0aW9uc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogcmVkaXJlY3QgdG8gc3RyaXBlIHBheW1lbnQgcGFnZVxuICAgKi9cbiAgYXN5bmMgY2hlY2tvdXRSZWRpcmVjdChzdWJzY3JpcHRpb246IFNlcnZpY2VTdWJzY3JpcHRpb24sIHN1Y2Nlc3NVcmw6IHN0cmluZywgY2FuY2VsVXJsOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHN0cmlwZTogYW55ID0gYXdhaXQgbG9hZFN0cmlwZSh0aGlzLmVudmlyb25tZW50LnN0cmlwZVBrKTtcbiAgICAvLyBAVE9ETyB2aWtcbiAgICBjb25zdCBsaW5lSXRlbXM6IGFueSA9IHN1YnNjcmlwdGlvbi5pdGVtcy5tYXAoKGl0ZW06IFNlcnZpY2VTdWJzY3JpcHRpb25JdGVtKSA9PiB7XG4gICAgICByZXR1cm4ge3NlcnZpY2VQcmljZUlkOiBpdGVtLnByaWNlLmlkLCBxdWFudGl0eTogaXRlbS5xdWFudGl0eX07XG4gICAgfSk7XG5cbiAgICB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9zdHJpcGUvY2hlY2tvdXQtc2Vzc2lvbmAsIHtcbiAgICAgIGxpbmVJdGVtcyxcbiAgICAgIHN1Y2Nlc3NVcmw6IHN1Y2Nlc3NVcmwsXG4gICAgICBjYW5jZWxVcmw6IGNhbmNlbFVybFxuICAgIH0pXG4gICAgICAuc3Vic2NyaWJlKChzZXNzaW9uOiBzdHJpbmcpID0+IHtcbiAgICAgICAgLy8gQFRvZG8gcmVtb3ZlIHVzZXIgVFJJQUwgc3RhdHVzXG4gICAgICAgIHN0cmlwZS5yZWRpcmVjdFRvQ2hlY2tvdXQoe3Nlc3Npb25JZDogc2Vzc2lvbn0pO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogcmVkaXJlY3QgdG8gc3RyaXBlIGJpbGxpbmcgcGFnZVxuICAgKi9cbiAgYmlsbGluZ1JlZGlyZWN0KHJldHVyblVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5odHRwLmdldChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9zdHJpcGUvYmlsbGluZy1wb3J0YWwtc2Vzc2lvbmAsIHtcbiAgICAgIHBhcmFtczoge3JldHVyblVybH1cbiAgICB9KS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHJlc3BvbnNlLnVybCk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRQYXltZW50cygpOiBPYnNlcnZhYmxlPFNlcnZpY2VQYXltZW50W10+IHtcbiAgICBpZiAoIXRoaXMuX3NlcnZpY2VQYXltZW50cykge1xuICAgICAgdGhpcy5odHRwLmdldChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9zZXJ2aWNlLXBheW1lbnRzYCkuc3Vic2NyaWJlKChyZXNwb25zZTogb2JqZWN0W10pID0+IHtcbiAgICAgICAgdGhpcy5fc2VydmljZVBheW1lbnRzID0gcmVzcG9uc2UubWFwKChpdGVtOiBvYmplY3QpID0+IHBsYWluVG9DbGFzcyhTZXJ2aWNlUGF5bWVudCwgaXRlbSkpO1xuICAgICAgICB0aGlzLnNlcnZpY2VQYXltZW50c1N1YmplY3QubmV4dCh0aGlzLl9zZXJ2aWNlUGF5bWVudHMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2VydmljZVBheW1lbnRzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZGlmZmVyZW5jZSBiZXR3ZWVuIGN1cnJlbnQgc3Vic2NyaXB0aW9uIGFuZCBzZWxlY3RlZCBuZXcgc3Vic2NyaXB0aW9uXG4gICAqL1xuICBnZXRQcm9yYXRpb25Db3N0KGl0ZW1zOiBTZXJ2aWNlU3Vic2NyaXB0aW9uSXRlbVtdKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vc3Vic2NyaXB0aW9ucy9wcm9yYXRpb24tY29zdGAsIGl0ZW1zKS5waXBlKFxuICAgICAgbWFwKChwcm9yYXRpb25Db3N0OiBudW1iZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIHByb3JhdGlvbkNvc3Q7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlIHN1YnNjcmlwdGlvbiBwbGFuXG4gICAqL1xuICBjaGFuZ2VTdWJzY3JpcHRpb24oaXRlbXM6IFNlcnZpY2VTdWJzY3JpcHRpb25JdGVtW10pOiBPYnNlcnZhYmxlPG9iamVjdD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L3N1YnNjcmlwdGlvbnMvaXRlbXNgLCBpdGVtcyk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5zc2VTZXJ2aWNlLm9uKGBzZXJ2aWNlU3Vic2NyaXB0aW9uc2ApXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChldmVudDogb2JqZWN0KTogU2VydmljZVN1YnNjcmlwdGlvbiA9PiBwbGFpblRvQ2xhc3MoU2VydmljZVN1YnNjcmlwdGlvbiwgZXZlbnQpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoc3Vic2NyaXB0aW9uOiBTZXJ2aWNlU3Vic2NyaXB0aW9uKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuZ2V0U3Vic2NyaXB0aW9uKHRydWUpLnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbkNoYW5nZVN1YmplY3QubmV4dChzdWJzY3JpcHRpb24pO1xuICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uU0VSVklDRV9TVUJTQ1JJUFRJT05fVVBEQVRFRCwgbnVsbCkpO1xuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==
|