@gsp-svc/formdoc-upload 0.1.10 → 0.1.14

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.
@@ -23,6 +23,21 @@ export class DownloadService {
23
23
  let list = JSON.parse(metadataIdList);
24
24
  return "/api/runtime/dfs/v1.0/doc/multiple/download?metadataidlist=" + metadataIdList + "&rootid=" + rootId + "&token=" + this.getToken(this.mergeString(list[0], rootId));
25
25
  }
26
+ /**
27
+ * @param {?} metadataIdList
28
+ * @param {?} rootId
29
+ * @param {?} zipName
30
+ * @return {?}
31
+ */
32
+ getMultipleDownloadUrlWithName(metadataIdList, rootId, zipName) {
33
+ /** @type {?} */
34
+ let list = JSON.parse(metadataIdList);
35
+ if (zipName == null || zipName == "")
36
+ zipName = 'unifile.zip';
37
+ if (!zipName.endsWith(".zip"))
38
+ zipName += '.zip';
39
+ return "/api/runtime/dfs/v1.0/doc/compress/download?metadataidlist=" + metadataIdList + "&rootid=" + rootId + "&token=" + this.getToken(this.mergeString(list[0], rootId)) + "&zipName=" + zipName;
40
+ }
26
41
  /**
27
42
  * @param {?} metadataId
28
43
  * @param {?} rootId
@@ -106,4 +121,4 @@ DownloadService.decorators = [
106
121
  ];
107
122
  /** @nocollapse */
108
123
  DownloadService.ctorParameters = () => [];
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bnc3Atc3ZjL2Zvcm1kb2MtdXBsb2FkLyIsInNvdXJjZXMiOlsibGliL3VwbG9hZC9kb3dubG9hZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLE1BQU0sT0FBTyxlQUFlO0lBRTFCLGdCQUFnQixDQUFDOzs7Ozs7SUFFakIsY0FBYyxDQUFDLFVBQWtCLEVBQUUsTUFBYztRQUMvQyxPQUFPLG1EQUFtRCxHQUFHLFVBQVUsR0FBRyxVQUFVLEdBQUcsTUFBTSxHQUFHLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbEssQ0FBQzs7Ozs7O0lBRUQsc0JBQXNCLENBQUMsY0FBc0IsRUFBRSxNQUFjOztZQUN2RCxJQUFJLEdBQWEsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDL0MsT0FBTyw2REFBNkQsR0FBRyxjQUFjLEdBQUcsVUFBVSxHQUFHLE1BQU0sR0FBRyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzdLLENBQUM7Ozs7Ozs7SUFFRCxxQkFBcUIsQ0FBQyxVQUFrQixFQUFFLE1BQWMsRUFBRSxPQUFlO1FBQ3ZFLCtDQUErQztRQUMvQyxPQUFPLHNEQUFzRCxHQUFHLFVBQVUsR0FBRyxVQUFVLEdBQUcsTUFBTSxHQUFHLFdBQVcsR0FBRyxPQUFPLEdBQUcsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM3TCxDQUFDOzs7Ozs7O0lBSU8s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Q0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0UyxDQUFDOzs7Ozs7Ozs7SUFFTyxTQUFTLENBQUMsSUFBWSxFQUFFLElBQVksRUFBRSxJQUFZLEVBQUUsQ0FBUztRQUNuRSxRQUFRLENBQUMsRUFBRTtZQUNULEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUM7WUFDcEIsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQztZQUNwQixLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQzs7O1lBNURGLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERvd25sb2FkU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBnZXREb3dubG9hZFVybChtZXRhZGF0YUlkOiBzdHJpbmcsIHJvb3RJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFwiL2FwaS9ydW50aW1lL2Rmcy92MS4wL2RvYy9maWxlY29udGVudD9tZXRhZGF0YWlkPVwiICsgbWV0YWRhdGFJZCArIFwiJnJvb3RpZD1cIiArIHJvb3RJZCArIFwiJnRva2VuPVwiICsgdGhpcy5nZXRUb2tlbih0aGlzLm1lcmdlU3RyaW5nKG1ldGFkYXRhSWQsIHJvb3RJZCkpO1xuICB9XG5cbiAgZ2V0TXVsdGlwbGVEb3dubG9hZFVybChtZXRhZGF0YUlkTGlzdDogc3RyaW5nLCByb290SWQ6IHN0cmluZykge1xuICAgIGxldCBsaXN0OiBzdHJpbmdbXSA9IEpTT04ucGFyc2UobWV0YWRhdGFJZExpc3QpO1xuICAgIHJldHVybiBcIi9hcGkvcnVudGltZS9kZnMvdjEuMC9kb2MvbXVsdGlwbGUvZG93bmxvYWQ/bWV0YWRhdGFpZGxpc3Q9XCIgKyBtZXRhZGF0YUlkTGlzdCArIFwiJnJvb3RpZD1cIiArIHJvb3RJZCArIFwiJnRva2VuPVwiICsgdGhpcy5nZXRUb2tlbih0aGlzLm1lcmdlU3RyaW5nKGxpc3RbMF0sIHJvb3RJZCkpO1xuICB9XG5cbiAgZ2V0SGlzdG9yeURvd25sb2FkVXJsKG1ldGFkYXRhSWQ6IHN0cmluZywgcm9vdElkOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZykge1xuICAgIC8vbGV0IGxpc3Q6c3RyaW5nW109SlNPTi5wYXJzZShtZXRhZGF0YUlkTGlzdCk7XG4gICAgcmV0dXJuIFwiL2FwaS9ydW50aW1lL2Rmcy92MS4wL2RvYy9oaXN0b3J5Y29udGVudD9tZXRhZGF0YWlkPVwiICsgbWV0YWRhdGFJZCArIFwiJnJvb3RpZD1cIiArIHJvb3RJZCArIFwiJnZlcnNpb249XCIgKyB2ZXJzaW9uICsgXCImdG9rZW49XCIgKyB0aGlzLmdldFRva2VuKHRoaXMubWVyZ2VTdHJpbmcobWV0YWRhdGFJZCwgcm9vdElkKSk7XG4gIH1cblxuXG5cbiAgcHJpdmF0ZSBtZXJnZVN0cmluZyhzdHI6IHN0cmluZywgc3RyMTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgbWluID0gc3RyLmxlbmd0aCA8IHN0cjEubGVuZ3RoID8gc3RyLmxlbmd0aCA6IHN0cjEubGVuZ3RoO1xuICAgIGxldCByZXM6IHN0cmluZyA9IFwiXCI7XG4gICAgbGV0IGkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBtaW47IGkrKykge1xuICAgICAgcmVzICs9IHN0ci5zdWJzdHJpbmcoaSwgaSArIDEpO1xuICAgICAgcmVzICs9IHN0cjEuc3Vic3RyaW5nKGksIGkgKyAxKTtcbiAgICB9XG4gICAgcmVzICs9IHN0ci5sZW5ndGggPCBzdHIxLmxlbmd0aCA/IHN0cjEuc3Vic3RyaW5nKGkpIDogc3RyLnN1YnN0cmluZyhpKTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb2tlbihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IGFycmF5ID0gWzEsIDIsIDNdO1xuICAgIGlmIChzdHIubGVuZ3RoID4gMjQpXG4gICAgICBzdHIgPSBzdHIuc3Vic3RyaW5nKDAsIDI0KTtcbiAgICBsZXQgbGVuZ3RoID0gTWF0aC5mbG9vcihzdHIubGVuZ3RoIC8gMyk7XG4gICAgbGV0IHN0cjEgPSBzdHIuc3Vic3RyaW5nKDAsIGxlbmd0aCk7XG4gICAgbGV0IHN0cjIgPSBzdHIuc3Vic3RyaW5nKGxlbmd0aCwgMiAqIGxlbmd0aCk7XG4gICAgbGV0IHN0cjMgPSBzdHIuc3Vic3RyaW5nKDIgKiBsZW5ndGgsIDMgKiBsZW5ndGgpO1xuICAgIGxldCByYW5kb21BcnJheSA9IFtdO1xuICAgIHZhciByYW5kb20gPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDMpO1xuICAgIHJhbmRvbUFycmF5LnB1c2goYXJyYXlbcmFuZG9tIC0gMV0pO1xuICAgIGFycmF5LnNwbGljZShyYW5kb20gLSAxLCAxKTtcbiAgICByYW5kb20gPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDIpO1xuICAgIHJhbmRvbUFycmF5LnB1c2goYXJyYXlbcmFuZG9tIC0gMV0pO1xuICAgIGFycmF5LnNwbGljZShyYW5kb20gLSAxLCAxKTtcbiAgICByYW5kb21BcnJheS5wdXNoKGFycmF5WzBdKTtcbiAgICBsZXQgdGltZVN0YW1wOiBzdHJpbmcgPSBNYXRoLnJvdW5kKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCkgKyBcIlwiO1xuXG4gICAgcmV0dXJuIHRpbWVTdGFtcC5zdWJzdHJpbmcoMCwgNSkgKyBcInRpbWVzXCIgKyByYW5kb21BcnJheVswXSArIFwiXCIgKyByYW5kb21BcnJheVsxXSArIFwiXCIgKyByYW5kb21BcnJheVsyXSArIHRoaXMuc3dpdGNoU3RyKHN0cjEsIHN0cjIsIHN0cjMsIHJhbmRvbUFycmF5WzBdKSArIHRoaXMuc3dpdGNoU3RyKHN0cjEsIHN0cjIsIHN0cjMsIHJhbmRvbUFycmF5WzFdKSArIHRoaXMuc3dpdGNoU3RyKHN0cjEsIHN0cjIsIHN0cjMsIHJhbmRvbUFycmF5WzJdKSArIFwidGltZXNcIiArIHRpbWVTdGFtcC5zdWJzdHJpbmcoNSk7XG4gIH1cblxuICBwcml2YXRlIHN3aXRjaFN0cihzdHIxOiBzdHJpbmcsIHN0cjI6IHN0cmluZywgc3RyMzogc3RyaW5nLCBpOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAoaSkge1xuICAgICAgY2FzZSAxOiByZXR1cm4gc3RyMTtcbiAgICAgIGNhc2UgMjogcmV0dXJuIHN0cjI7XG4gICAgICBjYXNlIDM6IHJldHVybiBzdHIzO1xuICAgIH1cbiAgfVxuXG5cbn1cbiJdfQ==
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bnc3Atc3ZjL2Zvcm1kb2MtdXBsb2FkLyIsInNvdXJjZXMiOlsibGliL3VwbG9hZC9kb3dubG9hZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLE1BQU0sT0FBTyxlQUFlO0lBRTFCLGdCQUFnQixDQUFDOzs7Ozs7SUFFakIsY0FBYyxDQUFDLFVBQWtCLEVBQUUsTUFBYztRQUMvQyxPQUFPLG1EQUFtRCxHQUFHLFVBQVUsR0FBRyxVQUFVLEdBQUcsTUFBTSxHQUFHLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbEssQ0FBQzs7Ozs7O0lBRUQsc0JBQXNCLENBQUMsY0FBc0IsRUFBRSxNQUFjOztZQUN2RCxJQUFJLEdBQWEsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDL0MsT0FBTyw2REFBNkQsR0FBRyxjQUFjLEdBQUcsVUFBVSxHQUFHLE1BQU0sR0FBRyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzdLLENBQUM7Ozs7Ozs7SUFFRCw4QkFBOEIsQ0FBQyxjQUFzQixFQUFFLE1BQWMsRUFBRSxPQUFlOztZQUNoRixJQUFJLEdBQWEsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDL0MsSUFBSSxPQUFPLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxFQUFFO1lBQ2xDLE9BQU8sR0FBRyxhQUFhLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQzNCLE9BQU8sSUFBSSxNQUFNLENB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b250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRG93bmxvYWRTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIGdldERvd25sb2FkVXJsKG1ldGFkYXRhSWQ6IHN0cmluZywgcm9vdElkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gXCIvYXBpL3J1bnRpbWUvZGZzL3YxLjAvZG9jL2ZpbGVjb250ZW50P21ldGFkYXRhaWQ9XCIgKyBtZXRhZGF0YUlkICsgXCImcm9vdGlkPVwiICsgcm9vdElkICsgXCImdG9rZW49XCIgKyB0aGlzLmdldFRva2VuKHRoaXMubWVyZ2VTdHJpbmcobWV0YWRhdGFJZCwgcm9vdElkKSk7XG4gIH1cblxuICBnZXRNdWx0aXBsZURvd25sb2FkVXJsKG1ldGFkYXRhSWRMaXN0OiBzdHJpbmcsIHJvb3RJZDogc3RyaW5nKSB7XG4gICAgbGV0IGxpc3Q6IHN0cmluZ1tdID0gSlNPTi5wYXJzZShtZXRhZGF0YUlkTGlzdCk7XG4gICAgcmV0dXJuIFwiL2FwaS9ydW50aW1lL2Rmcy92MS4wL2RvYy9tdWx0aXBsZS9kb3dubG9hZD9tZXRhZGF0YWlkbGlzdD1cIiArIG1ldGFkYXRhSWRMaXN0ICsgXCImcm9vdGlkPVwiICsgcm9vdElkICsgXCImdG9rZW49XCIgKyB0aGlzLmdldFRva2VuKHRoaXMubWVyZ2VTdHJpbmcobGlzdFswXSwgcm9vdElkKSk7XG4gIH1cblxuICBnZXRNdWx0aXBsZURvd25sb2FkVXJsV2l0aE5hbWUobWV0YWRhdGFJZExpc3Q6IHN0cmluZywgcm9vdElkOiBzdHJpbmcsIHppcE5hbWU6IHN0cmluZykge1xuICAgIGxldCBsaXN0OiBzdHJpbmdbXSA9IEpTT04ucGFyc2UobWV0YWRhdGFJZExpc3QpO1xuICAgIGlmICh6aXBOYW1lID09IG51bGwgfHwgemlwTmFtZSA9PSBcIlwiKVxuICAgICAgemlwTmFtZSA9ICd1bmlmaWxlLnppcCc7XG4gICAgaWYgKCF6aXBOYW1lLmVuZHNXaXRoKFwiLnppcFwiKSlcbiAgICAgIHppcE5hbWUgKz0gJy56aXAnO1xuICAgIHJldHVybiBcIi9hcGkvcnVudGltZS9kZnMvdjEuMC9kb2MvY29tcHJlc3MvZG93bmxvYWQ/bWV0YWRhdGFpZGxpc3Q9XCIgKyBtZXRhZGF0YUlkTGlzdCArIFwiJnJvb3RpZD1cIiArIHJvb3RJZCArIFwiJnRva2VuPVwiICsgdGhpcy5nZXRUb2tlbih0aGlzLm1lcmdlU3RyaW5nKGxpc3RbMF0sIHJvb3RJZCkpICsgXCImemlwTmFtZT1cIiArIHppcE5hbWU7XG4gIH1cblxuICBnZXRIaXN0b3J5RG93bmxvYWRVcmwobWV0YWRhdGFJZDogc3RyaW5nLCByb290SWQ6IHN0cmluZywgdmVyc2lvbjogc3RyaW5nKSB7XG4gICAgLy9sZXQgbGlzdDpzdHJpbmdbXT1KU09OLnBhcnNlKG1ldGFkYXRhSWRMaXN0KTtcbiAgICByZXR1cm4gXCIvYXBpL3J1bnRpbWUvZGZzL3YxLjAvZG9jL2hpc3Rvcnljb250ZW50P21ldGFkYXRhaWQ9XCIgKyBtZXRhZGF0YUlkICsgXCImcm9vdGlkPVwiICsgcm9vdElkICsgXCImdmVyc2lvbj1cIiArIHZlcnNpb24gKyBcIiZ0b2tlbj1cIiArIHRoaXMuZ2V0VG9rZW4odGhpcy5tZXJnZVN0cmluZyhtZXRhZGF0YUlkLCByb290SWQpKTtcbiAgfVxuXG5cblxuICBwcml2YXRlIG1lcmdlU3RyaW5nKHN0cjogc3RyaW5nLCBzdHIxOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBtaW4gPSBzdHIubGVuZ3RoIDwgc3RyMS5sZW5ndGggPyBzdHIubGVuZ3RoIDogc3RyMS5sZW5ndGg7XG4gICAgbGV0IHJlczogc3RyaW5nID0gXCJcIjtcbiAgICBsZXQgaSA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IG1pbjsgaSsrKSB7XG4gICAgICByZXMgKz0gc3RyLnN1YnN0cmluZyhpLCBpICsgMSk7XG4gICAgICByZXMgKz0gc3RyMS5zdWJzdHJpbmcoaSwgaSArIDEpO1xuICAgIH1cbiAgICByZXMgKz0gc3RyLmxlbmd0aCA8IHN0cjEubGVuZ3RoID8gc3RyMS5zdWJzdHJpbmcoaSkgOiBzdHIuc3Vic3RyaW5nKGkpO1xuICAgIHJldHVybiByZXM7XG4gIH1cblxuICBwcml2YXRlIGdldFRva2VuKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgYXJyYXkgPSBbMSwgMiwgM107XG4gICAgaWYgKHN0ci5sZW5ndGggPiAyNClcbiAgICAgIHN0ciA9IHN0ci5zdWJzdHJpbmcoMCwgMjQpO1xuICAgIGxldCBsZW5ndGggPSBNYXRoLmZsb29yKHN0ci5sZW5ndGggLyAzKTtcbiAgICBsZXQgc3RyMSA9IHN0ci5zdWJzdHJpbmcoMCwgbGVuZ3RoKTtcbiAgICBsZXQgc3RyMiA9IHN0ci5zdWJzdHJpbmcobGVuZ3RoLCAyICogbGVuZ3RoKTtcbiAgICBsZXQgc3RyMyA9IHN0ci5zdWJzdHJpbmcoMiAqIGxlbmd0aCwgMyAqIGxlbmd0aCk7XG4gICAgbGV0IHJhbmRvbUFycmF5ID0gW107XG4gICAgdmFyIHJhbmRvbSA9IE1hdGguY2VpbChNYXRoLnJhbmRvbSgpICogMyk7XG4gICAgcmFuZG9tQXJyYXkucHVzaChhcnJheVtyYW5kb20gLSAxXSk7XG4gICAgYXJyYXkuc3BsaWNlKHJhbmRvbSAtIDEsIDEpO1xuICAgIHJhbmRvbSA9IE1hdGguY2VpbChNYXRoLnJhbmRvbSgpICogMik7XG4gICAgcmFuZG9tQXJyYXkucHVzaChhcnJheVtyYW5kb20gLSAxXSk7XG4gICAgYXJyYXkuc3BsaWNlKHJhbmRvbSAtIDEsIDEpO1xuICAgIHJhbmRvbUFycmF5LnB1c2goYXJyYXlbMF0pO1xuICAgIGxldCB0aW1lU3RhbXA6IHN0cmluZyA9IE1hdGgucm91bmQobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSArIFwiXCI7XG5cbiAgICByZXR1cm4gdGltZVN0YW1wLnN1YnN0cmluZygwLCA1KSArIFwidGltZXNcIiArIHJhbmRvbUFycmF5WzBdICsgXCJcIiArIHJhbmRvbUFycmF5WzFdICsgXCJcIiArIHJhbmRvbUFycmF5WzJdICsgdGhpcy5zd2l0Y2hTdHIoc3RyMSwgc3RyMiwgc3RyMywgcmFuZG9tQXJyYXlbMF0pICsgdGhpcy5zd2l0Y2hTdHIoc3RyMSwgc3RyMiwgc3RyMywgcmFuZG9tQXJyYXlbMV0pICsgdGhpcy5zd2l0Y2hTdHIoc3RyMSwgc3RyMiwgc3RyMywgcmFuZG9tQXJyYXlbMl0pICsgXCJ0aW1lc1wiICsgdGltZVN0YW1wLnN1YnN0cmluZyg1KTtcbiAgfVxuXG4gIHByaXZhdGUgc3dpdGNoU3RyKHN0cjE6IHN0cmluZywgc3RyMjogc3RyaW5nLCBzdHIzOiBzdHJpbmcsIGk6IG51bWJlcik6IHN0cmluZyB7XG4gICAgc3dpdGNoIChpKSB7XG4gICAgICBjYXNlIDE6IHJldHVybiBzdHIxO1xuICAgICAgY2FzZSAyOiByZXR1cm4gc3RyMjtcbiAgICAgIGNhc2UgMzogcmV0dXJuIHN0cjM7XG4gICAgfVxuICB9XG5cblxufVxuIl19
@@ -57,6 +57,7 @@ export class FileUploadComponent {
57
57
  this.uploadedFileTotal = 0;
58
58
  this.haveExtensionProperty = false;
59
59
  this.uploadedFileInfoList = [];
60
+ this.oldUploadedFileList = [];
60
61
  //uploadedNameList = [];
61
62
  this.sameNameAllowed = true;
62
63
  this.fileType = "*";
@@ -107,6 +108,7 @@ export class FileUploadComponent {
107
108
  res => {
108
109
  if (res != null && res.error == null) {
109
110
  this.uploadedFileInfoList = res;
111
+ this.oldUploadedFileList = res;
110
112
  }
111
113
  }));
112
114
  }
@@ -197,6 +199,19 @@ export class FileUploadComponent {
197
199
  */
198
200
  x => x.fileName == selectedFile.name)).metadataId;
199
201
  this.uploadFile(uuid, selectedFile, selectedFile.name);
202
+ this.uploadedFileTotal--;
203
+ if (this.oldUploadedFileList.map((/**
204
+ * @param {?} x
205
+ * @return {?}
206
+ */
207
+ x => x.fileName == selectedFile.name)).length > 0) {
208
+ this.uploadedFileTotal++;
209
+ this.uploadedFileInfoList.splice(this.uploadedFileInfoList.indexOf(this.uploadedFileInfoList.filter((/**
210
+ * @param {?} x
211
+ * @return {?}
212
+ */
213
+ x => x.fileName == selectedFile.name))[0]), 1);
214
+ }
200
215
  msg.close();
201
216
  })
202
217
  },
@@ -812,7 +827,7 @@ FileUploadComponent.decorators = [
812
827
  { type: Component, args: [{
813
828
  selector: 'app-file-upload',
814
829
  template: "<div *ngIf=\"hasSelectedFile\">\n\n <div class=\"farris-header\" style=\"height: 50px; width: 100%\">\n <div class=\"btn btn-secondary upload_button\">\n <img [src]=\"uploadLittleIconAddress\">\n <span>\u4E0A\u4F20\u6587\u4EF6 </span>\n <input type=\"file\" (change)=\"fileSelected($event)\" id=\"file\" multiple=\"multiple\" title=\"\" [accept]=\"fileType\">\n </div>\n\n\n <button *ngIf=\"showType==0 && !fileAllSelected && files.length >0 \" style=\"padding-left: 20px\" class=\"btn-link btn ng-star-inserted\" (click)=\"selectAllFile()\">\u5168\u9009</button>\n <button *ngIf=\"showType==0 && fileAllSelected && files.length >0 \" style=\"padding-left: 20px\" class=\"btn-link btn ng-star-inserted\" (click)=\"selectAllFile()\">\u5168\u4E0D\u9009</button>\n <button *ngIf=\"showType==0 && selectedFileCount>0\" style=\"padding-left: 20px\" class=\"btn-link btn ng-star-inserted\" (click)=\"listMultipleDeleteFile()\">\u5220\u9664</button>\n\n <button *ngIf=\"showType==1 && selectedFileCount>0\" style=\"padding-left: 20px\" class=\"btn-link btn ng-star-inserted\" (click)=\"listMultipleDeleteFile()\">\u5220\u9664</button>\n\n <kendo-buttongroup [selection]=\"'single'\" class=\"button_group_upload \" style=\"background-color: #ffffff; color: #388FFF;border: 1px solid #ddd;\" look=\"flat\">\n <button kendoButton [selected]=\"true\" [toggleable]=\"true\" [imageUrl]=\"'/platform/runtime/dfs/images/piclist.png'\" (click)=\"showByGroup()\"></button>\n <button kendoButton [toggleable]=\"true\" [imageUrl]=\"'/platform/runtime/dfs/images/queuelist.png'\" (click)=\"showByList()\"></button>\n </kendo-buttongroup>\n\n\n </div>\n\n <!-- <div class=\"progress\" style=\"height: 12px;\">\n <div class=\"progress-bar\" role=\"progressbar\" [ngStyle]=\"uploadProcess\"></div>\n </div> -->\n\n <div class=\"pic_list\" *ngIf=\"showType==0\">\n <ul *ngFor=\"let file of files\">\n <li (mouseenter)=\"mouseOver(file)\" (mouseleave)=\"mouseOut(file)\">\n <div *ngIf=\"file.isUploading\">\n <farris-progress [type]=\"'circle'\" [percent]=\"file.uploadProcess\" [strokeLinecap]=\"'square'\" [status]=\"'active'\"></farris-progress>\n </div>\n\n <table *ngIf=\"!file.uploadResult && !file.isUploading\" style=\"margin: 0 auto; border: 1px solid #ddd; width: 135px; height: 160px;\">\n <tr style=\"margin: 0 auto ; height: 80px;\">\n <td style=\"text-align: center\"><span class=\"f-icon f-icon-error\"></span></td>\n </tr>\n <tr style=\"margin: 0 auto ; height: 30px;\">\n <td style=\"text-align: center\"> \u4E0A\u4F20\u5931\u8D25 </td>\n </tr>\n <tr>\n <td style=\"text-align: center\"><button style=\"margin: 0 auto ; height: 20px; \" class=\"btn-link btn ng-star-inserted\" (click)=\"showErrorMessage(file)\">\u8BE6\u60C5</button></td>\n </tr>\n </table>\n <div *ngIf=\"!file.isUploading && file.uploadResult\" style=\"border: 1px solid #ddd;\">\n <img [src]='file.source'>\n <div *ngIf=\"haveExtensionProperty\" style=\"width: 133px; height: 25px; background-color: white; position: absolute;bottom: 0; \">\n\n <div style=\"width: 100px;height: 25px;position:absolute;margin: 0 17px;\">\n <farris-combo-list [(ngModel)]=\"file.extensionDropListId\" [data]=\"propertiesNames\" [idField]=\"'id'\" [textField]=\"'name'\" (selectChange)=\"typeChange($event,file)\" [enableClear]=\"false\">\n <!-- <ng-template #itemTemp let-item>\n <div class=\"combo-list\">\n <span [class]=\"'combo-list-circle combo-list-'+item.state\"></span>\n <span class=\"combo-list-label\">{{item.label}}</span>\n </div>\n </ng-template> -->\n </farris-combo-list>\n </div>\n </div>\n </div>\n <table *ngIf=\"!file.isUploading\">\n <tr style=\"height: 20px\">\n <td style=\"width: 15px; vertical-align: middle; text-align: center\">\n <!-- <input type=\"checkbox\" [id]=\"file.name\" (click)=\"checkoutSelectFile(file.name)\"> -->\n <div class=\"farris-input-wrap\" style=\"height: 20px\" (click)=\"checkoutSelectFile(file)\">\n <div class=\"custom-control custom-checkbox\" style=\"margin: 4px 0 0;height: 20px;\">\n <input class=\"custom-control-input\" type=\"checkbox\" [id]=\"file.name\" [(ngModel)]=\"file.selectd\">\n <label class=\"custom-control-label\" style=\"padding: 0 0 10px 0; position: relative; top: -8px;\"></label>\n </div>\n </div>\n </td>\n <td style=\"width: 120px; vertical-align: middle; text-align: center\" [title]=\"file.name\">\n {{file.picListDisplayName}}</td>\n </tr>\n </table>\n <!-- <span>{{file.picListDisplayName}}</span> -->\n <!-- <p class=\"filename\">{{file.picListDisplayName}}</p> -->\n <button *ngIf=\"!file.isUploading && file.mouseOn\" style=\"position: absolute; top: 0; right: 0px; width: 24px; height: 24px;\" kendoButton [icon]=\"'delete'\" (click)=\"listDeleteFile(file)\"></button>\n <!-- <button *ngIf=\"file.hasUploaded\" class=\"k-primary\" kendoButton [icon]=\"'check'\" [disabled]=\"true\"></button> -->\n </li>\n </ul>\n </div>\n\n <div class=\"queue_list\" *ngIf=\"showType==1\">\n <table>\n <tr style=\"height: 50px; table-layout:fixed;\">\n <th style=\"width: 40px; vertical-align: middle; text-align: center\">\n <!-- <input type=\"checkbox\" id=\"allCheckBox\" (click)=\"selectAllFile()\"> -->\n <div class=\"farris-input-wrap\" (click)=\"selectAllFile()\">\n <div class=\"custom-control custom-checkbox\" style=\"margin: 4px 0 0\">\n <input class=\"custom-control-input\" type=\"checkbox\" id=\"allCheckBox\" [(ngModel)]=\"fileAllSelected\">\n <label class=\"custom-control-label\" style=\"padding: 0\"></label>\n </div>\n </div>\n </th>\n <th style=\"vertical-align: middle\" [ngStyle]=\"queueListStyle\">\u6587\u4EF6\u540D</th>\n <th style=\"width: 100px; vertical-align: middle\">\u5927\u5C0F</th>\n <th style=\"width: 170px; vertical-align: middle; text-align: center\">\u72B6\u6001</th>\n <th *ngIf=\"haveExtensionProperty\" style=\"width: 100px; vertical-align: middle; text-align: center\">\n {{storageExtension.extensionName}}\n </th>\n <th style=\"width: 140px; vertical-align: middle; text-align: center\">\u64CD\u4F5C</th>\n </tr>\n </table>\n <div style=\"height: 370px; overflow: auto;\">\n <table>\n <tr *ngFor=\"let file of files\" style=\"height: 40px\">\n <td colspan=\"5\" *ngIf=\"file.isUploading\">\n <!-- <div style=\"width:100%; display: table-cell; vertical-align: middle; text-align: center; \"> -->\n <div style=\"width: 500px;margin:0 auto\">\n <farris-progress [percent]=\"file.uploadProcess\" [status]=\"'active'\">\n </farris-progress>\n </div>\n\n </td>\n <td *ngIf=\"!file.isUploading\" style=\" width: 40px; vertical-align: middle; text-align: center\">\n <!-- <input type=\"checkbox\" [id]=\"file.name\" (click)=\"checkoutSelectFile(file.name)\"> -->\n <div class=\"farris-input-wrap\" (click)=\"checkoutSelectFile(file)\">\n <div class=\"custom-control custom-checkbox\" style=\"margin: 4px 0 0\">\n <input class=\"custom-control-input\" type=\"checkbox\" [id]=\"file.name\" [(ngModel)]=\"file.selectd\">\n <label class=\"custom-control-label\" style=\"padding: 0\"></label>\n </div>\n </div>\n </td>\n <td *ngIf=\"!file.isUploading\" style=\"vertical-align: middle\" [ngStyle]=\"queueListStyle\">\n {{file.queueListDisplayName}}</td>\n <td *ngIf=\"!file.isUploading\" style=\"width: 100px; vertical-align: middle\">{{file.size}}</td>\n <td *ngIf=\"!file.isUploading\" style=\"text-align: center; width: 170px; vertical-align: middle;\">\n <table *ngIf=\"!file.uploadResult\" style=\"margin: 0 auto\">\n <tr style=\"margin: 0 auto\">\n <td><span class=\"f-icon f-icon-error\"></span></td>\n <td> \u4E0A\u4F20\u5931\u8D25 </td>\n <td><button style=\"height: 24px\" class=\"btn-link btn ng-star-inserted\" (click)=\"showErrorMessage(file)\">\u8BE6\u60C5</button></td>\n </tr>\n </table>\n <!-- <span *ngIf=\"!file.uploadResult\"><span class=\"f-icon f-icon-error\"></span> \u4E0A\u4F20\u5931\u8D25 <button\n class=\"btn-link btn ng-star-inserted\" (click)=\"showErrorMessage(file)\">\u8BE6\u60C5</button></span> -->\n <span *ngIf=\"file.uploadResult\"><span class=\"f-icon f-icon-success\"></span> \u4E0A\u4F20\u6210\u529F</span>\n </td>\n <td *ngIf=\"!file.isUploading&&haveExtensionProperty\" style=\"text-align: center; width: 100px; vertical-align: middle;\">\n <farris-combo-list [(ngModel)]=\"file.extensionDropListId\" [data]=\"propertiesNames\" [idField]=\"'id'\" [textField]=\"'name'\" (selectChange)=\"typeChange($event,file)\" [enableClear]=\"false\">\n <!-- <ng-template #itemTemp let-item>\n <div class=\"combo-list\">\n <span [class]=\"'combo-list-circle combo-list-'+item.state\"></span>\n <span class=\"combo-list-label\">{{item.label}}</span>\n </div>\n </ng-template> -->\n </farris-combo-list>\n </td>\n <td *ngIf=\"!file.isUploading\" style=\"text-align: center; width: 140px; vertical-align: middle;\">\n <!-- <button *ngIf=\"file.uploadResult\" class=\"btn-link btn ng-star-inserted\" (click)=\"retryUploadFile(file.name)\">\u91CD\u8BD5</button> -->\n <button class=\"btn-link btn ng-star-inserted\" style=\"margin: 0 auto\" (click)=\"listDeleteFile(file)\">\u5220\u9664</button>\n </td>\n\n </tr>\n </table>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"!hasSelectedFile\" class='home_page'>\n <img [src]=\"uploadIconAddress\">\n <div>\n <span class=\"btn btn-primary btn-lg\">\u4E0A\u4F20\u6587\u4EF6 </span>\n <input type=\"file\" (change)=\"fileSelected($event)\" id=\"file\" multiple=\"multiple\" title=\"\" [accept]=\"fileType\">\n </div>\n</div>",
815
- styles: [".home_page{text-align:center}.home_page img{position:absolute;top:180px;margin-left:-35px;width:70px;height:56px}.home_page div{position:absolute;left:50%;top:255px;margin-left:-75px;width:150px;height:32px;overflow:hidden}.home_page span{width:150px;height:32px}.home_page div input{position:absolute;left:0;top:0;opacity:0;filter:'alpha(opacity=0)'}.upload_button{width:110px;height:32px;overflow:hidden}.upload_button span{position:relative;right:-4px;top:4px;width:56px;height:22px;font-size:14px}.upload_button input{height:32px;width:110px;position:absolute;left:22px;top:12px;opacity:0;filter:'alpha(opacity=0)';overflow:hidden}.upload_button img{position:relative;left:-6px;top:3px;width:14px;height:14px}.button_group_upload{position:absolute;right:18px;top:12px;height:26px;width:53px}.button_group_upload button{height:26px;width:26px}.fileinput-button{position:absolute;right:60px;bottom:40px;overflow:hidden;width:24px;height:24px;border-radius:12px;transform:scale(2.5);-ms-transform:scale(2.5);-moz-transform:scale(2.5);-webkit-transform:scale(2.5);-o-transform:scale(2.5);color:#0686fd}.fileinput-button input{position:absolute;left:0;top:0;opacity:0;filter:'alpha(opacity=0)'}.pic-droplist{height:24px;color:#e0e1e2;background-color:#e0e1e2}.pic-droplist input-group{display:table-cell;width:100px;text-align:center;border:0}.pic-droplist input-group div{border:0}.pic-droplist input-group div div,.pic-droplist input-group div input{background-color:#e0e1e2}.pic_list{padding:0;height:420px;overflow-y:auto;overflow-x:hidden}.pic_list ul{padding:0;list-style:none;width:100%;margin:20px 0 0 20px}.pic_list ul li{height:180px;width:135px;margin:8px 0 8px 12px;float:left;overflow:hidden;align-items:center;position:relative}.pic_list ul li div{width:135px;height:160px;margin:auto;display:table-cell;vertical-align:middle;text-align:center;position:relative}.pic_list ul li div img{max-width:120px;max-height:118px;align-items:center;margin:auto;vertical-align:middle;text-align:center}.pic_list ul li span.filename{width:100px;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.queue_list{display:block;height:420px;overflow-y:auto}.file_list{list-style:none;margin:0;padding:0;overflow-x:hidden;overflow-y:auto}.file_list li{height:50px;line-height:35px;font-size:16px;position:relative}.file_list li button{float:right;top:6px;right:10px;width:20px}.file_list li p.title{padding:0 0 0 6px;margin:0 210px 0 0}.file_list li p.size{position:absolute;width:100px;top:0;right:100px}"]
830
+ styles: [".home_page{text-align:center}.home_page img{position:absolute;top:180px;margin-left:-35px;width:70px;height:56px}.home_page div{position:absolute;left:50%;top:255px;margin-left:-75px;width:150px;height:32px;overflow:hidden}.home_page div span{width:150px;height:32px;position:absolute;z-index:10;left:0}.home_page div input{position:absolute;left:0;top:0;opacity:0;filter:'alpha(opacity=0)';z-index:11}.upload_button{width:110px;height:32px;overflow:hidden}.upload_button span{position:relative;right:-4px;top:4px;width:56px;height:22px;font-size:14px}.upload_button input{height:32px;width:110px;position:absolute;left:22px;top:12px;opacity:0;filter:'alpha(opacity=0)';overflow:hidden}.upload_button img{position:relative;left:-6px;top:3px;width:14px;height:14px}.button_group_upload{position:absolute;right:18px;top:12px;height:26px;width:53px}.button_group_upload button{height:26px;width:26px}.fileinput-button{position:absolute;right:60px;bottom:40px;overflow:hidden;width:24px;height:24px;border-radius:12px;transform:scale(2.5);-ms-transform:scale(2.5);-moz-transform:scale(2.5);-webkit-transform:scale(2.5);-o-transform:scale(2.5);color:#0686fd}.fileinput-button input{position:absolute;left:0;top:0;opacity:0;filter:'alpha(opacity=0)'}.pic-droplist{height:24px;color:#e0e1e2;background-color:#e0e1e2}.pic-droplist input-group{display:table-cell;width:100px;text-align:center;border:0}.pic-droplist input-group div{border:0}.pic-droplist input-group div div,.pic-droplist input-group div input{background-color:#e0e1e2}.pic_list{padding:0;height:420px;overflow-y:auto;overflow-x:hidden}.pic_list ul{padding:0;list-style:none;width:100%;margin:20px 0 0 20px}.pic_list ul li{height:180px;width:135px;margin:8px 0 8px 12px;float:left;overflow:hidden;align-items:center;position:relative}.pic_list ul li div{width:135px;height:160px;margin:auto;display:table-cell;vertical-align:middle;text-align:center;position:relative}.pic_list ul li div img{max-width:120px;max-height:118px;align-items:center;margin:auto;vertical-align:middle;text-align:center}.pic_list ul li span.filename{width:100px;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.queue_list{display:block;height:420px;overflow-y:auto}.file_list{list-style:none;margin:0;padding:0;overflow-x:hidden;overflow-y:auto}.file_list li{height:50px;line-height:35px;font-size:16px;position:relative}.file_list li button{float:right;top:6px;right:10px;width:20px}.file_list li p.title{padding:0 0 0 6px;margin:0 210px 0 0}.file_list li p.size{position:absolute;width:100px;top:0;right:100px}"]
816
831
  }] }
817
832
  ];
818
833
  /** @nocollapse */
@@ -890,6 +905,8 @@ if (false) {
890
905
  /** @type {?} */
891
906
  FileUploadComponent.prototype.uploadedFileInfoList;
892
907
  /** @type {?} */
908
+ FileUploadComponent.prototype.oldUploadedFileList;
909
+ /** @type {?} */
893
910
  FileUploadComponent.prototype.sameNameAllowed;
894
911
  /** @type {?} */
895
912
  FileUploadComponent.prototype.formId;
@@ -926,4 +943,4 @@ if (false) {
926
943
  */
927
944
  FileUploadComponent.prototype.injector;
928
945
  }
929
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdzcC1zdmMvZm9ybWRvYy11cGxvYWQvIiwic291cmNlcyI6WyJsaWIvdXBsb2FkL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBWSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBU3pELE1BQU0sT0FBTyxtQkFBbUI7Ozs7Ozs7SUFxRDlCLFlBQW9CLFVBQTJCLEVBQVUsYUFBNEIsRUFBVSxXQUEyQixFQUFVLFFBQW1C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QUs7d0JBQ0wsS0FBSzt3QkFDTCxLQUFLO3FCQUlMLFNBQVMsU0FBQyxRQUFROzs7O0lBNURuQixvQ0FBdUI7O0lBQ3ZCLDZDQUE4Qjs7SUFDOUIsaURBQTBDOztJQUMxQywwQ0FBMkI7O0lBQzNCLDBDQUEyQjs7SUFDM0IsMkNBQTRCOztJQUM1Qix1Q0FBcUI7O0lBQ3JCLHNDQUF5Qjs7SUFDekIseUNBQXlCOztJQUN6Qiw0Q0FBbUI7O0lBRW5CLGdEQUE4Qjs7SUFFOUIsZ0RBQThEOztJQUM5RCxzREFBd0U7O0lBRXhFLDhDQUFpQzs7SUFFakMsOENBQWlDOztJQUVqQyw0Q0FBZ0M7O0lBRWhDLDZDQUErQzs7SUFHL0MsMkNBQWlEOztJQUVqRCwrQ0FBeUQ7O0lBRXpELDRDQUE4Qzs7SUFDOUMsOENBQWdEOztJQUdoRCwrQ0FBbUM7O0lBRW5DLGtEQUFpQzs7SUFDakMsOENBQXVDOztJQUV2Qyw2Q0FBb0M7O0lBRXBDLDRDQUEyQjs7SUFFM0IsZ0RBQThCOztJQUU5QixvREFBdUM7O0lBRXZDLG1EQUEwQjs7SUFHMUIsOENBQXVCOztJQUd2QixxQ0FBd0I7O0lBQ3hCLHFDQUF3Qjs7SUFDeEIsdUNBQWdDOztJQUNoQyx3Q0FBK0I7O0lBQy9CLHdDQUFrQzs7SUFJbEMscUNBQThDOztJQW9kOUMsZ0RBQTRDOzs7OztJQTdkaEMseUNBQW1DOzs7OztJQUFFLDRDQUFvQzs7Ozs7SUFBRSwwQ0FBbUM7Ozs7O0lBQUUsdUNBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3Q2hpbGQsIFRlbXBsYXRlUmVmLCBPcHRpb25hbCwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpbGVJbmZvIH0gZnJvbSAnLi4vZW50aXR5L2ZpbGVpbmZvJztcbmltcG9ydCB7IERvY1R5cGUgfSBmcm9tICcuLi9lbnRpdHkvZG9jdHlwZSc7XG5pbXBvcnQgeyBHc3BGb3JtRG9jSW5mbyB9IGZyb20gJy4uL2VudGl0eS9nc3Bmb3JtZG9jaW5mbyc7XG5pbXBvcnQgeyBPcGVyYXRpbmdNb2RlcyB9IGZyb20gJy4uL2VudGl0eS9vcGVyYXRpbmdtb2Rlcyc7XG5pbXBvcnQgeyBVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi4vdXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXBsb2FkRmlsZUluZm8gfSBmcm9tICcuLi9lbnRpdHkvdXBsb2FkZmlsZWluZm8nO1xuaW1wb3J0IHsgTWVzc2FnZXJTZXJ2aWNlIH0gZnJvbSAnQGZhcnJpcy91aS1tZXNzYWdlcic7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgR3NwRm9ybVVwbG9hZEVudGl0eSB9IGZyb20gJy4uL2VudGl0eS9nc3Bmb3JtdXBsb2FkZW50aXR5JztcbmltcG9ydCB7IFVVSUQgfSBmcm9tICdhbmd1bGFyMi11dWlkJztcbmltcG9ydCB7IFN0b3JhZ2VFeHRlbnNpb24gfSBmcm9tICcuLi9lbnRpdHkvc3RvcmFnZWV4dGVuc2lvbic7XG5pbXBvcnQgeyBFeFN0b3JhZ2VGaWxlSW5mbyB9IGZyb20gJy4uL2VudGl0eS9leHRlbnNpb25zdG9yYWdlZmlsZWluZm8nO1xuaW1wb3J0IHsgRHJvcExpc3RFbnRpdHkgfSBmcm9tICcuLi9lbnRpdHkvZHJvcGxpc3RlbnRpdHknO1xuaW1wb3J0IHsgTG9hZGluZ1NlcnZpY2UgfSBmcm9tICdAZmFycmlzL3VpLWxvYWRpbmcnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBmaWxsUHJvcGVydGllcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvc3JjL3V0aWwvcHJvcGVydHknO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1maWxlLXVwbG9hZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgZmlsZXM6IEZpbGVJbmZvW10gPSBbXTtcbiAgbWV0YWRhdGFJZExpc3Q6IHN0cmluZ1tdID0gW107XG4gIHVwbG9hZEZpbGVJbmZvTGlzdDogVXBsb2FkRmlsZUluZm9bXSA9IFtdO1xuICBlcnJGaWxlTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgZXJyVHlwZUxpc3Q6IHN0cmluZ1tdID0gW107XG4gIG51bGxGaWxlTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgc2hvd1R5cGU6IG51bWJlciA9IDA7XG4gIG1vdXNlT246IGJvb2xlYW4gPSBmYWxzZTtcbiAgYnVmZmVyU2l6ZSA9IDEwMjQgKiAxMDI0O1xuICBzZWxlY3RlZEZpbGVzOiBhbnk7XG5cbiAgc2VsZWN0ZWRGaWxlQ291bnQ6IG51bWJlciA9IDA7XG5cbiAgdXBsb2FkSWNvbkFkZHJlc3MgPSAnL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy91cGxvYWQuc3ZnJztcbiAgdXBsb2FkTGl0dGxlSWNvbkFkZHJlc3MgPSAnL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy91cGxvYWRJY29uLnN2Zyc7XG5cbiAgaGFzU2VsZWN0ZWRGaWxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZmlsZUFsbFNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgdXBsb2FkUHJvY2VzcyA9IHsgd2lkdGg6ICcwJScgfTtcblxuICBmaWxlVG90YWxDaHVuazogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICAvL2ZpbGVVcGxvYWRTdGF0ZTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcbiAgLy9mbGFnOiBudW1iZXIgPSAwO1xuICByZXF1ZXN0QXJyYXk6IEFycmF5PE9ic2VydmFibGU8YW55Pj4gPSBuZXcgQXJyYXk7XG5cbiAgcmVxdWVzdEJvZHlBcnJheTogQXJyYXk8R3NwRm9ybVVwbG9hZEVudGl0eT4gPSBuZXcgQXJyYXk7XG5cbiAgdXBsb2FkZWRDaHVuazogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICB1cGxvYWRlZFByb2Nlc3M6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcblxuICAvL2FsbFNlbGVjdGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgc3RvcmFnZUV4dGVuc2lvbjogU3RvcmFnZUV4dGVuc2lvbjtcblxuICBkZWZhdWx0UHJvcGVydHlOYW1lOiBzdHJpbmcgPSBcIlwiO1xuICBwcm9wZXJ0aWVzTmFtZXM6IERyb3BMaXN0RW50aXR5W10gPSBbXTtcblxuICBxdWV1ZUxpc3RTdHlsZSA9IHsgd2lkdGg6ICc0ODBweCcgfTtcblxuICBkcm9wTGlzdFZhbHVlOiBzdHJpbmcgPSBcIlwiO1xuXG4gIHVwbG9hZGVkRmlsZVRvdGFsOiBudW1iZXIgPSAwO1xuXG4gIGhhdmVFeHRlbnNpb25Qcm9wZXJ0eTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHVwbG9hZGVkRmlsZUluZm9MaXN0ID0gW107XG4gIC8vdXBsb2FkZWROYW1lTGlzdCA9IFtdO1xuXG4gIHNhbWVOYW1lQWxsb3dlZCA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtc2dTZXJ2aWNlOiBNZXNzYWdlclNlcnZpY2UsIHByaXZhdGUgdXBsb2FkU2VydmljZTogVXBsb2FkU2VydmljZSwgcHJpdmF0ZSBsb2FkU2VydmljZTogTG9hZGluZ1NlcnZpY2UsIHByaXZhdGUgaW5qZWN0b3I/OiBJbmplY3RvcikgeyB9XG4gIEBJbnB1dCgpIGZvcm1JZDogc3RyaW5nO1xuICBASW5wdXQoKSByb290SWQ6IHN0cmluZztcbiAgQElucHV0KCkgZmlsZVR5cGU6IHN0cmluZyA9IFwiKlwiO1xuICBASW5wdXQoKSBmaWxlQ291bnQ6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIG9sZElkTGlzdDogc3RyaW5nW10gPSBbXTtcblxuICAvL0BPdXRwdXQoKSBvbkN1c3RvbUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkKCdvcENlbGwnKSBvcENlbGw6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy9pZiAodGhpcy5zdG9yYWdlU2VydmljZSAhPSBudWxsKSB7XG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlLmdldFN0b3JhZ2VFeHRlbnNpb25JbmZvKCkuc3Vic2NyaWJlKFxuICAgICAgcmVzID0+IHtcbiAgICAgICAgaWYgKHJlcyAhPSBudWxsICYmIHJlcy5lcnJvciA9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5zdG9yYWdlRXh0ZW5zaW9uID0gcmVzO1xuICAgICAgICAgIHRoaXMuZGVmYXVsdFByb3BlcnR5TmFtZSA9IHRoaXMuc3RvcmFnZUV4dGVuc2lvbi5kZWZhdWx0UHJvcGVydHlOYW1lO1xuICAgICAgICAgIHRoaXMucHJvcGVydGllc05hbWVzLnB1c2goeyBpZDogXCIwXCIsIG5hbWU6IHRoaXMuc3RvcmFnZUV4dGVuc2lvbi5kZWZhdWx0UHJvcGVydHlOYW1lIH0pO1xuICAgICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgICAvLyB0aGlzLnByb3BlcnRpZXNOYW1lcy5wdXNoKC4uLih0aGlzLnN0b3JhZ2VFeHRlbnNpb24uZXh0ZW5zaW9uUHJvcGVydHlOYW1lTGlzdCkpO1xuICAgICAgICAgIHRoaXMuc3RvcmFnZUV4dGVuc2lvbi5leHRlbnNpb25Qcm9wZXJ0eU5hbWVMaXN0LmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICB0aGlzLnByb3BlcnRpZXNOYW1lcy5wdXNoKHsgaWQ6ICgrK2kpLnRvU3RyaW5nKCksIG5hbWU6IGVsZW1lbnQgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5xdWV1ZUxpc3RTdHlsZS53aWR0aCA9ICczODBweCc7XG4gICAgICAgICAgdGhpcy5oYXZlRXh0ZW5zaW9uUHJvcGVydHkgPSB0cnVlO1xuXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApXG5cbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZ2V0Um9vdFNldHRpbmcodGhpcy5yb290SWQpLnN1YnNjcmliZShcbiAgICAgIHJlcyA9PiB7XG4gICAgICAgIGlmIChyZXMgIT0gbnVsbCAmJiByZXMuZXJyb3IgPT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuc2FtZU5hbWVBbGxvd2VkID0gcmVzLnNhbWVOYW1lQWxsb3dlZDtcbiAgICAgICAgICBpZiAoIXRoaXMuc2FtZU5hbWVBbGxvd2VkKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZ2V0VXBsb2FkZWRGaWxlSW5mb0xpc3QodGhpcy5mb3JtSWQsIHRoaXMucm9vdElkKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcyAhPSBudWxsICYmIHJlcy5lcnJvciA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0ID0gcmVzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApXG4gICAgaWYgKHRoaXMub2xkSWRMaXN0ICE9IG51bGwgJiYgdGhpcy5vbGRJZExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLnJlbW92ZUxpc3QodGhpcy5vbGRJZExpc3QsIHRoaXMucm9vdElkKS5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuXG4gIGZpbGVTZWxlY3RlZCgkZXZlbnQpIHtcbiAgICB0aGlzLmhhc1NlbGVjdGVkRmlsZSA9IHRydWU7XG4gICAgdGhpcy5zZWxlY3RlZEZpbGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2ZpbGUnKTtcblxuICAgIGlmICh0aGlzLmZpbGVDb3VudCA+IDApIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmlsZXMuZmlsZXMubGVuZ3RoICsgdGhpcy5maWxlcy5sZW5ndGggPiB0aGlzLmZpbGVDb3VudCkge1xuICAgICAgICBsZXQgc2VsZWN0ZWROdW06IG51bWJlciA9ICh0aGlzLnNlbGVjdGVkRmlsZXMuZmlsZXMubGVuZ3RoIGFzIG51bWJlcikgKyB0aGlzLmZpbGVzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5tc2dTZXJ2aWNlLndhcm5pbmcoJ+W3sumAieaLqScgKyBzZWxlY3RlZE51bSArICfkuKrmlofku7bvvIzotoXov4fns7vnu5/orr7nva7nmoTmlbDph4/pmZDliLYnICsgdGhpcy5maWxlQ291bnQgKyAn5Liq77yM6K+36YeN5paw6YCJ5oup5LiK5Lyg5paH5Lu244CCJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvL3RoaXMuZmxhZyA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlbGVjdGVkRmlsZXMuZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBzZWxlY3RlZEZpbGUgPSB0aGlzLnNlbGVjdGVkRmlsZXMuZmlsZXNbaV07XG4gICAgICAvL3NlbGVjdGVkRmlsZS5zbGljZVxuICAgICAgbGV0IHV1aWQgPSBVVUlELlVVSUQoKTtcbiAgICAgIGlmICghdGhpcy5zYW1lTmFtZUFsbG93ZWQpIHtcbiAgICAgICAgaWYgKHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuZmluZCh4ID0+IHguZmlsZU5hbWUgPT0gc2VsZWN0ZWRGaWxlLm5hbWUpICE9IG51bGwpIHtcbiAgICAgICAgICAvLyB0aGlzLnVwbG9hZGVkTmFtZUxpc3QucHVzaChzZWxlY3RlZEZpbGUubmFtZSk7XG4gICAgICAgICAgLy8gdGhpcy5tc2dTZXJ2aWNlLnF1ZXN0aW9uKCfkuYvliY3lt7LkuIrkvKDov4flkIzlkI3mlofku7Y6ICcgKyBzZWxlY3RlZEZpbGUubmFtZSArICfvvIzpnIDopoHmm7/mjaLkuYjvvJ8nLCAoKSA9PiB7XG4gICAgICAgICAgLy8gICB1dWlkID0gdGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5maW5kKHggPT4geC5maWxlTmFtZSA9PSBzZWxlY3RlZEZpbGUubmFtZSkubWV0YWRhdGFJZDtcbiAgICAgICAgICAvLyAgIHRoaXMudXBsb2FkRmlsZSh1dWlkLCBzZWxlY3RlZEZpbGUpO1xuICAgICAgICAgIC8vIH0pXG4gICAgICAgICAgY29uc3QgbXNnID0gdGhpcy5tc2dTZXJ2aWNlLnNob3coJ3dhcm5pbmcnLCAn5bey5LiK5Lyg6L+H5ZCM5ZCN5paH5Lu2OiAnICsgc2VsZWN0ZWRGaWxlLm5hbWUsIHtcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdGV4dDogJ+mHjeWRveWQjScsXG4gICAgICAgICAgICAgICAgICBjbHM6ICdidG4gYnRuLXNlY29uZGFyeScsXG4gICAgICAgICAgICAgICAgICBoYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9sZE5hbWU6IHN0cmluZyA9IHNlbGVjdGVkRmlsZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICBsZXQgbmV3TmFtZVxuICAgICAgICAgICAgICAgICAgICBsZXQgZmxhZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpID0gMTtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGZsYWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICBuZXdOYW1lID0gb2xkTmFtZS5zdWJzdHJpbmcoMCwgb2xkTmFtZS5sYXN0SW5kZXhPZignLicpKSArICcoJyArIGkgKyAnKScgKyBvbGROYW1lLnN1YnN0cmluZyhvbGROYW1lLmxhc3RJbmRleE9mKCcuJykpO1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmZpbmQoeCA9PiB4LmZpbGVOYW1lID09IG5ld05hbWUpICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlKHV1aWQsIHNlbGVjdGVkRmlsZSwgbmV3TmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIG1zZy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdGV4dDogJ+abv+aNoicsXG4gICAgICAgICAgICAgICAgICBjbHM6ICdidG4gYnRuLXNlY29uZGFyeScsXG4gICAgICAgICAgICAgICAgICBoYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdXVpZCA9IHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuZmluZCh4ID0+IHguZmlsZU5hbWUgPT0gc2VsZWN0ZWRGaWxlLm5hbWUpLm1ldGFkYXRhSWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZSh1dWlkLCBzZWxlY3RlZEZpbGUsIHNlbGVjdGVkRmlsZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgbXNnLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0ZXh0OiAn5Y+W5raIJyxcbiAgICAgICAgICAgICAgICAgIGNsczogJ2J0biBidG4tc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgICAgICAgIGhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBtc2cuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGlmICh0aGlzLmZpbGVzLmZpbmQoeCA9PiB4Lm5hbWUgPT0gc2VsZWN0ZWRGaWxlLm5hbWUpICE9IG51bGwpIHtcbiAgICAgIC8vICAgdGhpcy5lcnJGaWxlTGlzdC5wdXNoKHNlbGVjdGVkRmlsZS5uYW1lKTtcbiAgICAgIC8vICAgY29udGludWU7XG4gICAgICAvLyB9XG5cbiAgICAgIGlmIChzZWxlY3RlZEZpbGUuc2l6ZSA9PSAwKSB7XG4gICAgICAgIHRoaXMubnVsbEZpbGVMaXN0LnB1c2goc2VsZWN0ZWRGaWxlLm5hbWUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy90aGlzLmZsYWcgKz0gTWF0aC5jZWlsKHNlbGVjdGVkRmlsZS5zaXplIC8gdGhpcy5idWZmZXJTaXplKTtcbiAgICAgIC8vbGV0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICB0aGlzLnVwbG9hZEZpbGUodXVpZCwgc2VsZWN0ZWRGaWxlLCBzZWxlY3RlZEZpbGUubmFtZSk7XG5cbiAgICB9XG4gICAgLy8gaWYgKHRoaXMudXBsb2FkZWROYW1lTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgLy8gICBsZXQgbmFtZTogc3RyaW5nID0gdGhpcy5saXN0VG9TdHJpbmcodGhpcy51cGxvYWRlZE5hbWVMaXN0KTtcbiAgICAvLyAgIHRoaXMubXNnU2VydmljZS53YXJuaW5nKCfkuYvliY3lt7LkuIrkvKDov4flkIzlkI3mlofku7Y6ICcgKyBuYW1lICsgJ+ivt+mHjeaWsOmAieaLqeS4iuS8oOaWh+S7tuOAgicpO1xuICAgIC8vICAgdGhpcy51cGxvYWRlZE5hbWVMaXN0ID0gW107XG4gICAgLy8gfVxuXG4gICAgaWYgKHRoaXMuZXJyRmlsZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IG5hbWU6IHN0cmluZyA9IHRoaXMubGlzdFRvU3RyaW5nKHRoaXMuZXJyRmlsZUxpc3QpO1xuICAgICAgdGhpcy5tc2dTZXJ2aWNlLndhcm5pbmcoJ+W3suS4iuS8oOWQjOWQjeaWh+S7tjogJyArIG5hbWUgKyAn6K+36YeN5paw6YCJ5oup5LiK5Lyg5paH5Lu244CCJyk7XG4gICAgICB0aGlzLmVyckZpbGVMaXN0ID0gW107XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubnVsbEZpbGVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCBuYW1lOiBzdHJpbmcgPSB0aGlzLmxpc3RUb1N0cmluZyh0aGlzLm51bGxGaWxlTGlzdCk7XG4gICAgICBuYW1lID0gbmFtZS5zdWJzdHJpbmcoMCwgbmFtZS5sZW5ndGggLSAxKTtcbiAgICAgIHRoaXMubXNnU2VydmljZS53YXJuaW5nKCfmlofku7Y6ICAnICsgbmFtZSArICcg5aSn5bCP5Li6MO+8jOivt+mHjeaWsOmAieaLqeS4iuS8oOaWh+S7tuOAgicpO1xuICAgICAgdGhpcy5udWxsRmlsZUxpc3QgPSBbXTtcbiAgICB9XG4gICAgLy8gaWYgKHRoaXMuZXJyVHlwZUxpc3QubGVuZ3RoID4gMCkge1xuICAgIC8vICAgbGV0IHR5cGU6IHN0cmluZyA9IHRoaXMubGlzdFRvU3RyaW5nKHRoaXMuZXJyVHlwZUxpc3QpO1xuICAgIC8vICAgdGhpcy5tc2dTZXJ2aWNlLndhcm5pbmcoJ+S4jeaUr+aMgeS4iuS8oOexu+Wei+S4uiAnICsgdHlwZSArICfnmoTmlofku7bor7fph43mlrDpgInmi6nkuIrkvKDmlofku7bjgIInKTtcbiAgICAvLyAgIHRoaXMuZXJyVHlwZUxpc3QgPSBbXTtcbiAgICAvLyB9XG4gICAgdGhpcy5maWxlcyA9IHRoaXMuZmlsZXMuc2xpY2UoKTtcbiAgICB0aGlzLmZpbGVBbGxTZWxlY3RlZCA9IGZhbHNlO1xuICAgICRldmVudC50YXJnZXQudmFsdWUgPSAnJztcbiAgfVxuXG4gIHNob3dFcnJvck1lc3NhZ2UoZmlsZSkge1xuICAgIHRoaXMubXNnU2VydmljZS5lcnJvcign5LiK5Lyg6ZmE5Lu25aSx6LSl44CCJyArIGZpbGUuZXJyb3JNZXNzYWdlKTtcbiAgfVxuXG5cbiAgdXBsb2FkRmlsZSh1dWlkOiBzdHJpbmcsIHNlbGVjdGVkRmlsZSwgZmlsZU5hbWU6IHN0cmluZykge1xuICAgIGxldCBmaWxlSW5mbzogRmlsZUluZm87XG4gICAgLy8gbGV0IHV1aWQgPSBVVUlELlVVSUQoKTtcbiAgICAvL3JlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoc2VsZWN0ZWRGaWxlKTtcbiAgICAvL3JlYWRlci5vbmxvYWQgPSAoZSkgPT4ge1xuICAgIGZpbGVJbmZvID0ge1xuICAgICAgaWQ6IHV1aWQsXG4gICAgICBuYW1lOiBmaWxlTmFtZSxcbiAgICAgIHR5cGU6IHNlbGVjdGVkRmlsZS50eXBlLFxuICAgICAgc291cmNlOiBcIlwiLFxuICAgICAgc2l6ZTogdGhpcy5nZXRGaWxlU2l6ZShzZWxlY3RlZEZpbGUuc2l6ZSksXG4gICAgICBmaWxlU2l6ZTogc2VsZWN0ZWRGaWxlLnNpemUsXG4gICAgICBwaWNMaXN0RGlzcGxheU5hbWU6IHRoaXMuZ2V0UGljTGlzdERpc3BsYXlOYW1lKGZpbGVOYW1lKSxcbiAgICAgIHF1ZXVlTGlzdERpc3BsYXlOYW1lOiB0aGlzLmdldFF1ZXVlRGlzcGxheU5hbWUoZmlsZU5hbWUpLFxuICAgICAgLy9jb250ZW50OiByZWFkZXIucmVzdWx0LnRvU3RyaW5nKCksXG4gICAgICBoYXNVcGxvYWRlZDogZmFsc2UsXG4gICAgICBtb3VzZU9uOiBmYWxzZSxcbiAgICAgIHNlbGVjdGQ6IGZhbHNlLFxuICAgICAgaXNVcGxvYWRpbmc6IHRydWUsXG4gICAgICB1cGxvYWRSZXN1bHQ6IGZhbHNlLFxuICAgICAgdXBsb2FkUHJvY2VzczogMCxcbiAgICAgIGVycm9yTWVzc2FnZTogXCJcIixcbiAgICAgIGV4dGVuc2lvbkRyb3BMaXN0SWQ6IDAsXG4gICAgICBleHRlbnNpb25OYW1lOiBcIlwiXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RvcmFnZUV4dGVuc2lvbiAhPSBudWxsKVxuICAgICAgZmlsZUluZm8uZXh0ZW5zaW9uTmFtZSA9IHRoaXMuZGVmYXVsdFByb3BlcnR5TmFtZTtcbiAgICBsZXQgY2h1bmtUb3RhbDogbnVtYmVyID0gTWF0aC5jZWlsKHNlbGVjdGVkRmlsZS5zaXplIC8gdGhpcy5idWZmZXJTaXplKTtcbiAgICBsZXQgY2h1bmtJbmRleDogbnVtYmVyID0gMDtcblxuXG4gICAgdGhpcy5maWxlVG90YWxDaHVua1t1dWlkXSA9IGNodW5rVG90YWw7XG5cbiAgICBsZXQgdXBsb2FkRmlsZUluZm8gPSBuZXcgVXBsb2FkRmlsZUluZm8oKTtcblxuICAgIHVwbG9hZEZpbGVJbmZvLm1ldGFkYXRhSWQgPSB1dWlkO1xuICAgIHVwbG9hZEZpbGVJbmZvLmZpbGVOYW1lID0gZmlsZUluZm8ubmFtZTtcbiAgICB1cGxvYWRGaWxlSW5mby5maWxlU2l6ZSA9IGZpbGVJbmZvLnNpemU7XG5cblxuICAgIHdoaWxlIChjaHVua0luZGV4IDwgY2h1bmtUb3RhbCkge1xuICAgICAgbGV0IHVwbG9hZEluZm8gPSBuZXcgR3NwRm9ybVVwbG9hZEVudGl0eTtcbiAgICAgIHVwbG9hZEluZm8uZm9ybUlkID0gdGhpcy5mb3JtSWQ7XG4gICAgICB1cGxvYWRJbmZvLm1vZGUgPSBPcGVyYXRpbmdNb2Rlcy5UZW1wO1xuICAgICAgdXBsb2FkSW5mby5yb290SWQgPSB0aGlzLnJvb3RJZDtcblxuICAgICAgbGV0IGRvY0luZm86IEdzcEZvcm1Eb2NJbmZvID0gbmV3IEdzcEZvcm1Eb2NJbmZvO1xuXG4gICAgICBkb2NJbmZvLmZpbGVOYW1lID0gZmlsZU5hbWU7XG4gICAgICBkb2NJbmZvLm1ldGFkYXRhSWQgPSB1dWlkO1xuICAgICAgZG9jSW5mby50b3RhbCA9IGNodW5rVG90YWw7XG5cbiAgICAgIHRoaXMudXBsb2FkZWRDaHVua1tkb2NJbmZvLm1ldGFkYXRhSWRdID0gMDtcblxuICAgICAgbGV0IG5leHRTaXplID0gTWF0aC5taW4oKGNodW5rSW5kZXggKyAxKSAqIHRoaXMuYnVmZmVyU2l6ZSwgc2VsZWN0ZWRGaWxlLnNpemUpO1xuICAgICAgbGV0IGZpbGVEYXRhID0gc2VsZWN0ZWRGaWxlLnNsaWNlKGNodW5rSW5kZXggKiB0aGlzLmJ1ZmZlclNpemUsIG5leHRTaXplKTtcbiAgICAgIGxldCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhmaWxlRGF0YSk7XG4gICAgICBsZXQgaW5uZXJJbmRleCA9IGNodW5rSW5kZXg7XG4gICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgICBkb2NJbmZvLmZpbGVDb250ZW50ID0gYnRvYShyZWFkZXIucmVzdWx0LnRvU3RyaW5nKCkpO1xuXG4gICAgICAgIGRvY0luZm8uaW5kZXggPSBpbm5lckluZGV4O1xuICAgICAgICAvL2NodW5rSW5kZXgrKztcbiAgICAgICAgaWYgKHRoaXMuaGF2ZUV4dGVuc2lvblByb3BlcnR5KVxuICAgICAgICAgIGRvY0luZm8uZXhQcm9wZXJ0eU5hbWUgPSB0aGlzLmRlZmF1bHRQcm9wZXJ0eU5hbWU7XG4gICAgICAgIC8vZG9jSW5mby5pc0xhc3QgPSB0cnVlO1xuICAgICAgICB1cGxvYWRJbmZvLmRvY0luZm8gPSBkb2NJbmZvO1xuXG4gICAgICAgIGxldCBpbmZvID0gdXBsb2FkSW5mbztcblxuICAgICAgICAvLyB0aGlzLnJlcXVlc3RBcnJheS5wdXNoKHRoaXMudXBsb2FkU2VydmljZS51cGxvYWRGaWxlKHVwbG9hZEluZm8pKTtcbiAgICAgICAgdGhpcy5yZXF1ZXN0Qm9keUFycmF5LnB1c2goaW5mbyk7XG5cbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLnVwbG9hZEZpbGUoaW5mbykuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgaWYgKHJlcyAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyldLnVwbG9hZFJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5maWxlc1t0aGlzLmZpbGVzLmluZGV4T2YoZmlsZUluZm8pXS5pc1VwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5maWxlc1t0aGlzLmZpbGVzLmluZGV4T2YoZmlsZUluZm8pXS5lcnJvck1lc3NhZ2UgPSByZXMuZXJyb3IuTWVzc2FnZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRlZENodW5rW2RvY0luZm8ubWV0YWRhdGFJZF0rKztcbiAgICAgICAgICAgIHRoaXMuZmlsZXNbdGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKV0udXBsb2FkUHJvY2VzcyA9IE51bWJlci5wYXJzZUludCgodGhpcy51cGxvYWRlZENodW5rW2RvY0luZm8ubWV0YWRhdGFJZF0gLyB0aGlzLmZpbGVUb3RhbENodW5rW2RvY0luZm8ubWV0YWRhdGFJZF0gKiAxMDApLnRvRml4ZWQoMCkpO1xuICAgICAgICAgICAgaWYgKHRoaXMudXBsb2FkZWRDaHVua1tkb2NJbmZvLm1ldGFkYXRhSWRdID09IHRoaXMuZmlsZVRvdGFsQ2h1bmtbZG9jSW5mby5tZXRhZGF0YUlkXSkge1xuICAgICAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyldLnVwbG9hZFJlc3VsdCA9IHRydWU7XG4gICAgICAgICAgICAgIHRoaXMuZmlsZXNbdGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKV0uaXNVcGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlSW5mb0xpc3QgPSB0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5jb25jYXQodXBsb2FkRmlsZUluZm8pO1xuICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0ID0gdGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5jb25jYXQodXBsb2FkRmlsZUluZm8pO1xuICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZVRvdGFsKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIC8vY29uc29sZS5sb2coY2h1bmtJbmRleCArIDEpO1xuICAgICAgY2h1bmtJbmRleCA9IGNodW5rSW5kZXggKyAxO1xuICAgIH1cblxuICAgIGxldCB0eXBlOiBzdHJpbmcgPSBzZWxlY3RlZEZpbGUudHlwZTtcbiAgICBpZiAodHlwZS5pbmNsdWRlcyhcImltYWdlXCIpKSB7XG4gICAgICB0aGlzLmFkZERvY0luZm8oc2VsZWN0ZWRGaWxlLCBmaWxlSW5mbywgRG9jVHlwZS5JbWFnZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUuaW5jbHVkZXMoXCJ3b3JkXCIpKSB7XG4gICAgICB0aGlzLmFkZERvY0luZm8oc2VsZWN0ZWRGaWxlLCBmaWxlSW5mbywgRG9jVHlwZS5Xb3JkKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZS5pbmNsdWRlcyhcInBkZlwiKSkge1xuICAgICAgdGhpcy5hZGREb2NJbmZvKHNlbGVjdGVkRmlsZSwgZmlsZUluZm8sIERvY1R5cGUuUGRmKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZS5pbmNsdWRlcyhcInBsYWluXCIpKSB7XG4gICAgICB0aGlzLmFkZERvY0luZm8oc2VsZWN0ZWRGaWxlLCBmaWxlSW5mbywgRG9jVHlwZS5UeHQpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlLmluY2x1ZGVzKFwic2hlZXRcIikgfHwgdHlwZS5pbmNsdWRlcyhcImV4Y2VsXCIpKSB7XG4gICAgICB0aGlzLmFkZERvY0luZm8oc2VsZWN0ZWRGaWxlLCBmaWxlSW5mbywgRG9jVHlwZS5FeGNlbClcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZS5pbmNsdWRlcyhcInBvd2VycG9pbnRcIikgfHwgdHlwZS5pbmNsdWRlcyhcInByZXNlbnRhdGlvblwiKSkge1xuICAgICAgdGhpcy5hZGREb2NJbmZvKHNlbGVjdGVkRmlsZSwgZmlsZUluZm8sIERvY1R5cGUuUG93ZXJwb2ludCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5hZGREb2NJbmZvKHNlbGVjdGVkRmlsZSwgZmlsZUluZm8sIERvY1R5cGUuT3RoZXIpO1xuICAgICAgLy8gbGV0IG5hbWU6IHN0cmluZyA9IHNlbGVjdGVkRmlsZS5uYW1lO1xuICAgICAgLy8gbGV0IGVyclR5cGUgPSBuYW1lLnN1YnN0cmluZyhzZWxlY3RlZEZpbGUubmFtZS5sYXN0SW5kZXhPZignLicpKTtcbiAgICAgIC8vIHRoaXMuZXJyVHlwZUxpc3QucHVzaChlcnJUeXBlKTtcbiAgICB9XG4gICAgbGV0IGluZGV4ID0gLTE7XG4gICAgdGhpcy5maWxlcy5mb3JFYWNoKHggPT4ge1xuICAgICAgaWYgKHgubmFtZSA9PSBmaWxlSW5mby5uYW1lKSB7XG4gICAgICAgIGlmIChpbmRleCA9PSAtMSlcbiAgICAgICAgICBpbmRleCA9IHRoaXMuZmlsZXMuaW5kZXhPZih4KTtcbiAgICAgIH1cbiAgICB9KVxuICAgIGlmIChpbmRleCAhPSB0aGlzLmZpbGVzLmxlbmd0aCAtIDEpIHtcbiAgICAgIHRoaXMuZmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICB9XG5cblxuICBzZWxlY3RBbGxGaWxlKCkge1xuXG4gICAgaWYgKCF0aGlzLmZpbGVBbGxTZWxlY3RlZCkge1xuICAgICAgdGhpcy5maWxlcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAvLyBsZXQgb2JqOiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50Lm5hbWUpO1xuICAgICAgICAvLyBvYmouY2hlY2tlZCA9IHRydWU7XG4gICAgICAgIGVsZW1lbnQuc2VsZWN0ZCA9IHRydWU7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZmlsZUFsbFNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQgPSB0aGlzLmZpbGVzLmxlbmd0aDtcblxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbGVzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIC8vIGxldCBvYmo6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnQubmFtZSk7XG4gICAgICAgIC8vIG9iai5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgIGVsZW1lbnQuc2VsZWN0ZCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmZpbGVBbGxTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWxlY3RlZEZpbGVDb3VudCA9IDA7XG4gICAgfVxuICB9XG5cblxuICBjaGVja291dFNlbGVjdEZpbGUoZmlsZTogRmlsZUluZm8pIHtcbiAgICAvLyBsZXQgb2JqOiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmaWxlTmFtZSk7XG4gICAgZmlsZS5zZWxlY3RkID0gIWZpbGUuc2VsZWN0ZDtcbiAgICBpZiAoZmlsZS5zZWxlY3RkKVxuICAgICAgdGhpcy5zZWxlY3RlZEZpbGVDb3VudCsrO1xuICAgIGVsc2VcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQtLTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZpbGVDb3VudCA9PSB0aGlzLmZpbGVzLmxlbmd0aCkge1xuICAgICAgdGhpcy5maWxlQWxsU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgLy90aGlzLmlzRmlsZUFsbFNlbGVjdGVkKCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5maWxlQWxsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIC8vdGhpcy5pc0ZpbGVBbGxTZWxlY3RlZCgpO1xuICAgIH1cblxuICB9XG5cbiAgbGlzdERlbGV0ZUZpbGUoZmlsZUluZm86IEZpbGVJbmZvKSB7XG4gICAgaWYgKGZpbGVJbmZvLnNlbGVjdGQpXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZUNvdW50LS07XG4gICAgLy9jb25zb2xlLmxvZyhmaWxlTmFtZSk7XG4gICAgdGhpcy5maWxlcy5zcGxpY2UodGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKSwgMSk7XG4gICAgaWYgKGZpbGVJbmZvLnVwbG9hZFJlc3VsdCkge1xuICAgICAgbGV0IGlkTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgICAgIGlkTGlzdC5wdXNoKGZpbGVJbmZvLmlkKTtcbiAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jYW5jZWwoaWRMaXN0LCB0aGlzLnJvb3RJZCkuc3Vic2NyaWJlKCk7XG5cbiAgICAgIHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LnNwbGljZSh0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5pbmRleE9mKHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LmZpbHRlcih4ID0+IHguZmlsZU5hbWUgPT0gZmlsZUluZm8ubmFtZSlbMF0pLCAxKTtcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3Quc3BsaWNlKHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuaW5kZXhPZih0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmZpbHRlcih4ID0+IHguZmlsZU5hbWUgPT0gZmlsZUluZm8ubmFtZSlbMF0pLCAxKTtcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlVG90YWwtLTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQgPT0gMClcbiAgICAgIHRoaXMuZmlsZUFsbFNlbGVjdGVkID0gZmFsc2U7XG4gIH1cblxuICBsaXN0TXVsdGlwbGVEZWxldGVGaWxlKCkge1xuICAgIGxldCBzZWxlY3RlZEZpbGU6IEZpbGVJbmZvW10gPSBbXTtcbiAgICB0aGlzLmZpbGVzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBsZXQgb2JqOiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50Lm5hbWUpO1xuICAgICAgaWYgKG9iai5jaGVja2VkKVxuICAgICAgICBzZWxlY3RlZEZpbGUucHVzaChlbGVtZW50KTtcbiAgICB9KVxuICAgIGxldCBtZXRhZGF0YUxpc3Q6IHN0cmluZ1tdID0gW107XG4gICAgc2VsZWN0ZWRGaWxlLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBtZXRhZGF0YUxpc3QucHVzaChlbGVtZW50LmlkKTtcbiAgICAgIHRoaXMuZmlsZXMuc3BsaWNlKHRoaXMuZmlsZXMuaW5kZXhPZihlbGVtZW50KSwgMSk7XG4gICAgICBpZiAoZWxlbWVudC51cGxvYWRSZXN1bHQpIHtcbiAgICAgICAgLy8gbGV0IGlkTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgLy8gaWRMaXN0LnB1c2goZmlsZUluZm8uaWQpO1xuICAgICAgICAvLyB0aGlzLnVwbG9hZFNlcnZpY2UuY2FuY2VsKGlkTGlzdCwgdGhpcy5yb290SWQpLnN1YnNjcmliZSgpO1xuXG4gICAgICAgIHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LnNwbGljZSh0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5pbmRleE9mKHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LmZpbHRlcih4ID0+IHguZmlsZU5hbWUgPT0gZWxlbWVudC5uYW1lKVswXSksIDEpO1xuICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LnNwbGljZSh0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmluZGV4T2YodGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5maWx0ZXIoeCA9PiB4LmZpbGVOYW1lID09IGVsZW1lbnQubmFtZSlbMF0pLCAxKTtcbiAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVUb3RhbC0tO1xuICAgICAgfVxuICAgIH0pXG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNhbmNlbChtZXRhZGF0YUxpc3QsIHRoaXMucm9vdElkKS5zdWJzY3JpYmUoKTtcblxuICAgIGxldCBhbGxCb3g6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYWxsQ2hlY2tCb3hcIik7XG4gICAgaWYgKGFsbEJveCAhPSBudWxsKVxuICAgICAgYWxsQm94LmNoZWNrZWQgPSBmYWxzZTtcbiAgICB0aGlzLnNlbGVjdGVkRmlsZUNvdW50ID0gMDtcbiAgICB0aGlzLmZpbGVBbGxTZWxlY3RlZCA9IGZhbHNlO1xuICB9XG5cblxuICBnZXRQaWNMaXN0RGlzcGxheU5hbWUoZmlsZU5hbWU6IHN0cmluZykge1xuICAgIGlmIChmaWxlTmFtZS5sZW5ndGggPD0gMTApXG4gICAgICByZXR1cm4gZmlsZU5hbWU7XG4gICAgZWxzZSB7XG4gICAgICBsZXQgaGVhZENvbnRlbnQgPSBmaWxlTmFtZS5zdWJzdHJpbmcoMCwgMik7XG4gICAgICBsZXQgdGFpbENvbnRlbnQgPSBmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSAtIDIpO1xuICAgICAgcmV0dXJuIGhlYWRDb250ZW50ICsgXCLigKZcIiArIHRhaWxDb250ZW50O1xuICAgIH1cbiAgfVxuXG4gIGdldFF1ZXVlRGlzcGxheU5hbWUoZmlsZU5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBmaWxlTmFtZTtcbiAgfVxuXG4gIGFkZERvY0luZm8oc2VsZWN0ZEZpbGUsIGZpbGVJbmZvOiBGaWxlSW5mbywgZG9jVHlwZTogRG9jVHlwZSkge1xuICAgIHN3aXRjaCAoZG9jVHlwZSkge1xuICAgICAgY2FzZSBEb2NUeXBlLldvcmQ6IHtcbiAgICAgICAgZmlsZUluZm8uc291cmNlID0gXCIvcGxhdGZvcm0vcnVudGltZS9kZnMvaW1hZ2VzL3dvcmQucG5nXCJcbiAgICAgICAgdGhpcy5maWxlcy5wdXNoKGZpbGVJbmZvKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgRG9jVHlwZS5QZGY6IHtcbiAgICAgICAgZmlsZUluZm8uc291cmNlID0gXCIvcGxhdGZvcm0vcnVudGltZS9kZnMvaW1hZ2VzL3BkZi5wbmdcIlxuICAgICAgICB0aGlzLmZpbGVzLnB1c2goZmlsZUluZm8pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBEb2NUeXBlLkV4Y2VsOiB7XG4gICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IFwiL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy9leGNlbC5wbmdcIjtcbiAgICAgICAgdGhpcy5maWxlcy5wdXNoKGZpbGVJbmZvKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgRG9jVHlwZS5UeHQ6IHtcbiAgICAgICAgZmlsZUluZm8uc291cmNlID0gXCIvcGxhdGZvcm0vcnVudGltZS9kZnMvaW1hZ2VzL3R4dC5wbmdcIjtcbiAgICAgICAgdGhpcy5maWxlcy5wdXNoKGZpbGVJbmZvKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgRG9jVHlwZS5Qb3dlcnBvaW50OiB7XG4gICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IFwiL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy9wcHQucG5nXCI7XG4gICAgICAgIHRoaXMuZmlsZXMucHVzaChmaWxlSW5mbyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIERvY1R5cGUuT3RoZXI6IHtcbiAgICAgICAgZmlsZUluZm8uc291cmNlID0gXCIvcGxhdGZvcm0vcnVudGltZS9kZnMvaW1hZ2VzL2ZpbGUucG5nXCI7XG4gICAgICAgIHRoaXMuZmlsZXMucHVzaChmaWxlSW5mbyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIERvY1R5cGUuSW1hZ2U6XG4gICAgICAgIGxldCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKHNlbGVjdGRGaWxlKTtcbiAgICAgICAgcmVhZGVyLm9ubG9hZCA9IChfZXZlbnQpID0+IHtcbiAgICAgICAgICBsZXQgaW1nVXJsID0gcmVhZGVyLnJlc3VsdDtcbiAgICAgICAgICBpZiAodGhpcy5pbmplY3RvciAhPSBudWxsKSB7XG4gICAgICAgICAgICBsZXQgc2FuaXRpemVyID0gdGhpcy5pbmplY3Rvci5nZXQoRG9tU2FuaXRpemVyKTtcbiAgICAgICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IHNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoaW1nVXJsKTtcbiAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IGltZ1VybDtcbiAgICAgICAgICB0aGlzLmZpbGVzLnB1c2goZmlsZUluZm8pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICB9XG5cbiAgbGlzdFRvU3RyaW5nKHN0ckxpc3Q6IHN0cmluZ1tdKSB7XG4gICAgbGV0IG5hbWU6IHN0cmluZyA9IFwiXCI7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHJMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBuYW1lICs9IHN0ckxpc3RbaV0gKyBcIixcIjtcbiAgICB9XG4gICAgcmV0dXJuIG5hbWU7XG4gIH1cblxuXG4gIGV4U3RvcmFnZUZpbGVMaXN0OiBFeFN0b3JhZ2VGaWxlSW5mb1tdID0gW107XG5cbiAgdHlwZUNoYW5nZSgkZXZlbnQ6IGFueSwgZmlsZTogRmlsZUluZm8pIHtcbiAgICBmaWxlLmV4dGVuc2lvbk5hbWUgPSAkZXZlbnQuZGF0YS5uYW1lO1xuICAgIGxldCBleFN0b3JhZ2VGaWxlSW5mbzogRXhTdG9yYWdlRmlsZUluZm8gPSBuZXcgRXhTdG9yYWdlRmlsZUluZm87XG4gICAgaWYgKGZpbGUuZXh0ZW5zaW9uTmFtZSA9PSB0aGlzLnN0b3JhZ2VFeHRlbnNpb24uZGVmYXVsdFByb3BlcnR5TmFtZSkge1xuICAgICAgaWYgKHRoaXMuZXhTdG9yYWdlRmlsZUxpc3QuZmlsdGVyKHggPT4geC5tZXRhZGF0YUlkID09IGZpbGUuaWQpLmxlbmd0aCA+IDApXG4gICAgICAgIHRoaXMuZXhTdG9yYWdlRmlsZUxpc3Quc3BsaWNlKHRoaXMuZXhTdG9yYWdlRmlsZUxpc3QuZmluZEluZGV4KHggPT4geC5tZXRhZGF0YUlkID09IGZpbGUuaWQpLCAxKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5maWx0ZXIoeCA9PiB4Lm1ldGFkYXRhSWQgPT0gZmlsZS5pZCkubGVuZ3RoID4gMCkge1xuICAgICAgICBleFN0b3JhZ2VGaWxlSW5mbyA9IHRoaXMuZXhTdG9yYWdlRmlsZUxpc3QuZmlsdGVyKHggPT4geC5tZXRhZGF0YUlkID09IGZpbGUuaWQpWzBdO1xuICAgICAgICBleFN0b3JhZ2VGaWxlSW5mby5leFByb3BlcnR5TmFtZSA9IGZpbGUuZXh0ZW5zaW9uTmFtZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4U3RvcmFnZUZpbGVJbmZvLm1ldGFkYXRhSWQgPSBmaWxlLmlkO1xuICAgICAgICBleFN0b3JhZ2VGaWxlSW5mby5leFByb3BlcnR5TmFtZSA9IGZpbGUuZXh0ZW5zaW9uTmFtZTtcbiAgICAgICAgdGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5wdXNoKGV4U3RvcmFnZUZpbGVJbmZvKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1cGxvYWQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAodGhpcy51cGxvYWRlZEZpbGVUb3RhbCAhPSB0aGlzLmZpbGVzLmZpbHRlcih4ID0+IHguaXNVcGxvYWRpbmcgfHwgeC51cGxvYWRSZXN1bHQpLmxlbmd0aCkge1xuICAgICAgLy8gdGhpcy5ub3RpZnlTZXJ2aWNlLnN1Y2Nlc3MoPE5vdGlmeU9wdGlvbnM+e1xuICAgICAgLy8gICBtc2c6ICfkv53lrZjmiJDlip/vvIEnLCB0aW1lb3V0OiAzMDAwXG4gICAgICAvLyB9KTtcbiAgICAgIHRoaXMubXNnU2VydmljZS53YXJuaW5nKCfnrYnkuIDkuIvvvIzmlofmoaPmraPlnKjkuIrkvKDjgIInKTtcbiAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0b3JhZ2VFeHRlbnNpb24gPT0gbnVsbClcbiAgICAgIHJldHVybiBvZih0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdCk7XG4gICAgZWxzZSB7XG4gICAgICBpZiAodGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5sZW5ndGggPT0gMClcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMudXBsb2FkRmlsZUluZm9MaXN0KTtcbiAgICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBsb2FkaW5nID0gdGhpcy5sb2FkU2VydmljZS5zaG93KHtcbiAgICAgICAgICBtZXNzYWdlOiAn5q2j5Zyo5bCG5paH5Lu25L+d5a2Y5YiwJyArIHRoaXMuc3RvcmFnZUV4dGVuc2lvbi5leHRlbnNpb25OYW1lXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRTZXJ2aWNlLmNoYW5nZVN0b3JhZ2VJbnN0YW5jZSh0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LCB0aGlzLnJvb3RJZCkucGlwZShcbiAgICAgICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMgIT0gbnVsbClcbiAgICAgICAgICAgICAgdGhpcy5tc2dTZXJ2aWNlLmVycm9yKCfkv53lrZjliLAnICsgdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmV4dGVuc2lvbk5hbWUgKyBcIuWksei0pe+8jOS4iuS8oOaWh+S7tuiHquWKqOS/neWtmOWIsFwiICsgdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmRlZmF1bHRQcm9wZXJ0eU5hbWUgKyBcIuWtmOWCqOOAglwiICsgcmVzLmVycm9yLk1lc3NhZ2UpO1xuICAgICAgICAgICAgbG9hZGluZy5jbG9zZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBsb2FkRmlsZUluZm9MaXN0O1xuICAgICAgICAgIH0pKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICBpZiAodGhpcy51cGxvYWRGaWxlSW5mb0xpc3QubGVuZ3RoID09IDApXG4gICAgICByZXR1cm47XG4gICAgdGhpcy51cGxvYWRGaWxlSW5mb0xpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIHRoaXMubWV0YWRhdGFJZExpc3QucHVzaChlbGVtZW50Lm1ldGFkYXRhSWQpO1xuICAgIH0pXG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNhbmNlbCh0aGlzLm1ldGFkYXRhSWRMaXN0LCB0aGlzLnJvb3RJZCkuc3Vic2NyaWJlKCk7XG5cbiAgfVxuXG4gIGdldFVwbG9hZEZpbGVJbmZvTGlzdCgpIHtcbiAgICByZXR1cm4gdGhpcy51cGxvYWRGaWxlSW5mb0xpc3Q7XG4gIH1cblxuICBkZWxldGUoZmlsZSkge1xuICAgIHRoaXMuZmlsZXMuc3BsaWNlKHRoaXMuZmlsZXMuaW5kZXhPZihmaWxlKSwgMSk7XG4gICAgaWYgKGZpbGUudXBsb2FkUmVzdWx0KVxuICAgICAgdGhpcy51cGxvYWRlZEZpbGVUb3RhbC0tO1xuICAgIGlmICh0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LmZpbHRlcih4ID0+IHgubWV0YWRhdGFJZCA9PSBmaWxlLmlkKS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LnNwbGljZSh0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LmZpbmRJbmRleCh4ID0+IHgubWV0YWRhdGFJZCA9PSBmaWxlLmlkKSwgMSk7XG4gICAgfVxuICAgIC8vIHZhciBvYmo6YW55ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2ZpbGUnKTtcbiAgICAvLyBvYmouZmlsZXMucmVtb3ZlKCk7XG4gICAgLy9vYmoudmFsdWU9Jyc7XG4gIH1cblxuICBnZXRGaWxlU2l6ZShzaXplOiBudW1iZXIpIHtcbiAgICBpZiAoc2l6ZSA8IDEwMjQwMClcbiAgICAgIHJldHVybiAoc2l6ZSAvIDEwMjQpLnRvRml4ZWQoMSkgKyBcIktcIjtcbiAgICBlbHNlIGlmIChzaXplIDwgMTAyNCAqIDEwMjQpXG4gICAgICByZXR1cm4gKHNpemUgLyAxMDI0KS50b0ZpeGVkKDApICsgXCJLXCI7XG4gICAgZWxzZSBpZiAoc2l6ZSA8IDEwMCAqIDEwMjQgKiAxMDI0KVxuICAgICAgcmV0dXJuIChzaXplIC8gMTAyNCAvIDEwMjQpLnRvRml4ZWQoMSkgKyBcIk1cIjtcbiAgICBlbHNlIGlmIChzaXplIDwgMTAyNCAqIDEwMjQgKiAxMDI0KVxuICAgICAgcmV0dXJuIChzaXplIC8gMTAyNCAvIDEwMjQpLnRvRml4ZWQoMCkgKyBcIk1cIjtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gKHNpemUgLyAxMDI0IC8gMTAyNCAvIDEwMjQpLnRvRml4ZWQoMSkgKyBcIkdcIjtcbiAgfVxuICBzaG93QnlHcm91cCgpIHtcbiAgICB0aGlzLnNob3dUeXBlID0gMDtcbiAgICAvLyB0aGlzLnNlbGVjdGVkRmlsZUNvdW50ID0gMDtcbiAgfVxuXG4gIHNob3dCeUxpc3QoKSB7XG4gICAgdGhpcy5zaG93VHlwZSA9IDE7XG4gICAgLy8gdGhpcy5zZWxlY3RlZEZpbGVDb3VudCA9IDA7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQgIT0gMCAmJiB0aGlzLnNlbGVjdGVkRmlsZUNvdW50ID09IHRoaXMuZmlsZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmZpbGVBbGxTZWxlY3RlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgbW91c2VPdmVyKGZpbGUpIHtcbiAgICBmaWxlLm1vdXNlT24gPSB0cnVlO1xuICB9XG4gIG1vdXNlT3V0KGZpbGUpIHtcbiAgICBmaWxlLm1vdXNlT24gPSBmYWxzZTtcbiAgfVxuXG59XG5cblxuIl19
946
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdzcC1zdmMvZm9ybWRvYy11cGxvYWQvIiwic291cmNlcyI6WyJsaWIvdXBsb2FkL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBWSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBU3pELE1BQU0sT0FBTyxtQkFBbUI7Ozs7Ozs7SUFzRDlCLFlBQW9CLFVBQTJCLEVBQVUsYUFBNEIsRUFBVSxXQUEyQixFQUFVLFFBQW1C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LGdEQUE4Qjs7SUFFOUIsb0RBQXVDOztJQUV2QyxtREFBMEI7O0lBQzFCLGtEQUF5Qjs7SUFHekIsOENBQXVCOztJQUd2QixxQ0FBd0I7O0lBQ3hCLHFDQUF3Qjs7SUFDeEIsdUNBQWdDOztJQUNoQyx3Q0FBK0I7O0lBQy9CLHdDQUFrQzs7SUFJbEMscUNBQThDOztJQTJkOUMsZ0RBQTRDOzs7OztJQXBlaEMseUNBQW1DOzs7OztJQUFFLDRDQUFvQzs7Ozs7SUFBRSwwQ0FBbUM7Ozs7O0lBQUUsdUNBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3Q2hpbGQsIFRlbXBsYXRlUmVmLCBPcHRpb25hbCwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpbGVJbmZvIH0gZnJvbSAnLi4vZW50aXR5L2ZpbGVpbmZvJztcbmltcG9ydCB7IERvY1R5cGUgfSBmcm9tICcuLi9lbnRpdHkvZG9jdHlwZSc7XG5pbXBvcnQgeyBHc3BGb3JtRG9jSW5mbyB9IGZyb20gJy4uL2VudGl0eS9nc3Bmb3JtZG9jaW5mbyc7XG5pbXBvcnQgeyBPcGVyYXRpbmdNb2RlcyB9IGZyb20gJy4uL2VudGl0eS9vcGVyYXRpbmdtb2Rlcyc7XG5pbXBvcnQgeyBVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi4vdXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXBsb2FkRmlsZUluZm8gfSBmcm9tICcuLi9lbnRpdHkvdXBsb2FkZmlsZWluZm8nO1xuaW1wb3J0IHsgTWVzc2FnZXJTZXJ2aWNlIH0gZnJvbSAnQGZhcnJpcy91aS1tZXNzYWdlcic7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgR3NwRm9ybVVwbG9hZEVudGl0eSB9IGZyb20gJy4uL2VudGl0eS9nc3Bmb3JtdXBsb2FkZW50aXR5JztcbmltcG9ydCB7IFVVSUQgfSBmcm9tICdhbmd1bGFyMi11dWlkJztcbmltcG9ydCB7IFN0b3JhZ2VFeHRlbnNpb24gfSBmcm9tICcuLi9lbnRpdHkvc3RvcmFnZWV4dGVuc2lvbic7XG5pbXBvcnQgeyBFeFN0b3JhZ2VGaWxlSW5mbyB9IGZyb20gJy4uL2VudGl0eS9leHRlbnNpb25zdG9yYWdlZmlsZWluZm8nO1xuaW1wb3J0IHsgRHJvcExpc3RFbnRpdHkgfSBmcm9tICcuLi9lbnRpdHkvZHJvcGxpc3RlbnRpdHknO1xuaW1wb3J0IHsgTG9hZGluZ1NlcnZpY2UgfSBmcm9tICdAZmFycmlzL3VpLWxvYWRpbmcnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBmaWxsUHJvcGVydGllcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvc3JjL3V0aWwvcHJvcGVydHknO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1maWxlLXVwbG9hZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgZmlsZXM6IEZpbGVJbmZvW10gPSBbXTtcbiAgbWV0YWRhdGFJZExpc3Q6IHN0cmluZ1tdID0gW107XG4gIHVwbG9hZEZpbGVJbmZvTGlzdDogVXBsb2FkRmlsZUluZm9bXSA9IFtdO1xuICBlcnJGaWxlTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgZXJyVHlwZUxpc3Q6IHN0cmluZ1tdID0gW107XG4gIG51bGxGaWxlTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgc2hvd1R5cGU6IG51bWJlciA9IDA7XG4gIG1vdXNlT246IGJvb2xlYW4gPSBmYWxzZTtcbiAgYnVmZmVyU2l6ZSA9IDEwMjQgKiAxMDI0O1xuICBzZWxlY3RlZEZpbGVzOiBhbnk7XG5cbiAgc2VsZWN0ZWRGaWxlQ291bnQ6IG51bWJlciA9IDA7XG5cbiAgdXBsb2FkSWNvbkFkZHJlc3MgPSAnL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy91cGxvYWQuc3ZnJztcbiAgdXBsb2FkTGl0dGxlSWNvbkFkZHJlc3MgPSAnL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy91cGxvYWRJY29uLnN2Zyc7XG5cbiAgaGFzU2VsZWN0ZWRGaWxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZmlsZUFsbFNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgdXBsb2FkUHJvY2VzcyA9IHsgd2lkdGg6ICcwJScgfTtcblxuICBmaWxlVG90YWxDaHVuazogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICAvL2ZpbGVVcGxvYWRTdGF0ZTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcbiAgLy9mbGFnOiBudW1iZXIgPSAwO1xuICByZXF1ZXN0QXJyYXk6IEFycmF5PE9ic2VydmFibGU8YW55Pj4gPSBuZXcgQXJyYXk7XG5cbiAgcmVxdWVzdEJvZHlBcnJheTogQXJyYXk8R3NwRm9ybVVwbG9hZEVudGl0eT4gPSBuZXcgQXJyYXk7XG5cbiAgdXBsb2FkZWRDaHVuazogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICB1cGxvYWRlZFByb2Nlc3M6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcblxuICAvL2FsbFNlbGVjdGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgc3RvcmFnZUV4dGVuc2lvbjogU3RvcmFnZUV4dGVuc2lvbjtcblxuICBkZWZhdWx0UHJvcGVydHlOYW1lOiBzdHJpbmcgPSBcIlwiO1xuICBwcm9wZXJ0aWVzTmFtZXM6IERyb3BMaXN0RW50aXR5W10gPSBbXTtcblxuICBxdWV1ZUxpc3RTdHlsZSA9IHsgd2lkdGg6ICc0ODBweCcgfTtcblxuICBkcm9wTGlzdFZhbHVlOiBzdHJpbmcgPSBcIlwiO1xuXG4gIHVwbG9hZGVkRmlsZVRvdGFsOiBudW1iZXIgPSAwO1xuXG4gIGhhdmVFeHRlbnNpb25Qcm9wZXJ0eTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHVwbG9hZGVkRmlsZUluZm9MaXN0ID0gW107XG4gIG9sZFVwbG9hZGVkRmlsZUxpc3QgPSBbXTtcbiAgLy91cGxvYWRlZE5hbWVMaXN0ID0gW107XG5cbiAgc2FtZU5hbWVBbGxvd2VkID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1zZ1NlcnZpY2U6IE1lc3NhZ2VyU2VydmljZSwgcHJpdmF0ZSB1cGxvYWRTZXJ2aWNlOiBVcGxvYWRTZXJ2aWNlLCBwcml2YXRlIGxvYWRTZXJ2aWNlOiBMb2FkaW5nU2VydmljZSwgcHJpdmF0ZSBpbmplY3Rvcj86IEluamVjdG9yKSB7IH1cbiAgQElucHV0KCkgZm9ybUlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJvb3RJZDogc3RyaW5nO1xuICBASW5wdXQoKSBmaWxlVHlwZTogc3RyaW5nID0gXCIqXCI7XG4gIEBJbnB1dCgpIGZpbGVDb3VudDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgb2xkSWRMaXN0OiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8vQE91dHB1dCgpIG9uQ3VzdG9tRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoJ29wQ2VsbCcpIG9wQ2VsbDogVGVtcGxhdGVSZWY8YW55PjtcblxuICBuZ09uSW5pdCgpIHtcbiAgICAvL2lmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlICE9IG51bGwpIHtcbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZ2V0U3RvcmFnZUV4dGVuc2lvbkluZm8oKS5zdWJzY3JpYmUoXG4gICAgICByZXMgPT4ge1xuICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgcmVzLmVycm9yID09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLnN0b3JhZ2VFeHRlbnNpb24gPSByZXM7XG4gICAgICAgICAgdGhpcy5kZWZhdWx0UHJvcGVydHlOYW1lID0gdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmRlZmF1bHRQcm9wZXJ0eU5hbWU7XG4gICAgICAgICAgdGhpcy5wcm9wZXJ0aWVzTmFtZXMucHVzaCh7IGlkOiBcIjBcIiwgbmFtZTogdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmRlZmF1bHRQcm9wZXJ0eU5hbWUgfSk7XG4gICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgIC8vIHRoaXMucHJvcGVydGllc05hbWVzLnB1c2goLi4uKHRoaXMuc3RvcmFnZUV4dGVuc2lvbi5leHRlbnNpb25Qcm9wZXJ0eU5hbWVMaXN0KSk7XG4gICAgICAgICAgdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmV4dGVuc2lvblByb3BlcnR5TmFtZUxpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJvcGVydGllc05hbWVzLnB1c2goeyBpZDogKCsraSkudG9TdHJpbmcoKSwgbmFtZTogZWxlbWVudCB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnF1ZXVlTGlzdFN0eWxlLndpZHRoID0gJzM4MHB4JztcbiAgICAgICAgICB0aGlzLmhhdmVFeHRlbnNpb25Qcm9wZXJ0eSA9IHRydWU7XG5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIClcblxuICAgIHRoaXMudXBsb2FkU2VydmljZS5nZXRSb290U2V0dGluZyh0aGlzLnJvb3RJZCkuc3Vic2NyaWJlKFxuICAgICAgcmVzID0+IHtcbiAgICAgICAgaWYgKHJlcyAhPSBudWxsICYmIHJlcy5lcnJvciA9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5zYW1lTmFtZUFsbG93ZWQgPSByZXMuc2FtZU5hbWVBbGxvd2VkO1xuICAgICAgICAgIGlmICghdGhpcy5zYW1lTmFtZUFsbG93ZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5nZXRVcGxvYWRlZEZpbGVJbmZvTGlzdCh0aGlzLmZvcm1JZCwgdGhpcy5yb290SWQpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgcmVzLmVycm9yID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QgPSByZXM7XG4gICAgICAgICAgICAgICAgICB0aGlzLm9sZFVwbG9hZGVkRmlsZUxpc3QgPSByZXM7XG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKVxuICAgIGlmICh0aGlzLm9sZElkTGlzdCAhPSBudWxsICYmIHRoaXMub2xkSWRMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudXBsb2FkU2VydmljZS5yZW1vdmVMaXN0KHRoaXMub2xkSWRMaXN0LCB0aGlzLnJvb3RJZCkuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cblxuICBmaWxlU2VsZWN0ZWQoJGV2ZW50KSB7XG4gICAgdGhpcy5oYXNTZWxlY3RlZEZpbGUgPSB0cnVlO1xuICAgIHRoaXMuc2VsZWN0ZWRGaWxlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNmaWxlJyk7XG5cbiAgICBpZiAodGhpcy5maWxlQ291bnQgPiAwKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEZpbGVzLmZpbGVzLmxlbmd0aCArIHRoaXMuZmlsZXMubGVuZ3RoID4gdGhpcy5maWxlQ291bnQpIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkTnVtOiBudW1iZXIgPSAodGhpcy5zZWxlY3RlZEZpbGVzLmZpbGVzLmxlbmd0aCBhcyBudW1iZXIpICsgdGhpcy5maWxlcy5sZW5ndGg7XG4gICAgICAgIHRoaXMubXNnU2VydmljZS53YXJuaW5nKCflt7LpgInmi6knICsgc2VsZWN0ZWROdW0gKyAn5Liq5paH5Lu277yM6LaF6L+H57O757uf6K6+572u55qE5pWw6YeP6ZmQ5Yi2JyArIHRoaXMuZmlsZUNvdW50ICsgJ+S4qu+8jOivt+mHjeaWsOmAieaLqeS4iuS8oOaWh+S7tuOAgicpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy90aGlzLmZsYWcgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZWxlY3RlZEZpbGVzLmZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgc2VsZWN0ZWRGaWxlID0gdGhpcy5zZWxlY3RlZEZpbGVzLmZpbGVzW2ldO1xuICAgICAgLy9zZWxlY3RlZEZpbGUuc2xpY2VcbiAgICAgIGxldCB1dWlkID0gVVVJRC5VVUlEKCk7XG4gICAgICBpZiAoIXRoaXMuc2FtZU5hbWVBbGxvd2VkKSB7XG4gICAgICAgIGlmICh0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmZpbmQoeCA9PiB4LmZpbGVOYW1lID09IHNlbGVjdGVkRmlsZS5uYW1lKSAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gdGhpcy51cGxvYWRlZE5hbWVMaXN0LnB1c2goc2VsZWN0ZWRGaWxlLm5hbWUpO1xuICAgICAgICAgIC8vIHRoaXMubXNnU2VydmljZS5xdWVzdGlvbign5LmL5YmN5bey5LiK5Lyg6L+H5ZCM5ZCN5paH5Lu2OiAnICsgc2VsZWN0ZWRGaWxlLm5hbWUgKyAn77yM6ZyA6KaB5pu/5o2i5LmI77yfJywgKCkgPT4ge1xuICAgICAgICAgIC8vICAgdXVpZCA9IHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuZmluZCh4ID0+IHguZmlsZU5hbWUgPT0gc2VsZWN0ZWRGaWxlLm5hbWUpLm1ldGFkYXRhSWQ7XG4gICAgICAgICAgLy8gICB0aGlzLnVwbG9hZEZpbGUodXVpZCwgc2VsZWN0ZWRGaWxlKTtcbiAgICAgICAgICAvLyB9KVxuICAgICAgICAgIGNvbnN0IG1zZyA9IHRoaXMubXNnU2VydmljZS5zaG93KCd3YXJuaW5nJywgJ+W3suS4iuS8oOi/h+WQjOWQjeaWh+S7tjogJyArIHNlbGVjdGVkRmlsZS5uYW1lLCB7XG4gICAgICAgICAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHRleHQ6ICfph43lkb3lkI0nLFxuICAgICAgICAgICAgICAgICAgY2xzOiAnYnRuIGJ0bi1zZWNvbmRhcnknLFxuICAgICAgICAgICAgICAgICAgaGFuZGxlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBvbGROYW1lOiBzdHJpbmcgPSBzZWxlY3RlZEZpbGUubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5ld05hbWVcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZsYWcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IDE7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChmbGFnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgbmV3TmFtZSA9IG9sZE5hbWUuc3Vic3RyaW5nKDAsIG9sZE5hbWUubGFzdEluZGV4T2YoJy4nKSkgKyAnKCcgKyBpICsgJyknICsgb2xkTmFtZS5zdWJzdHJpbmcob2xkTmFtZS5sYXN0SW5kZXhPZignLicpKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5maW5kKHggPT4geC5maWxlTmFtZSA9PSBuZXdOYW1lKSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZSh1dWlkLCBzZWxlY3RlZEZpbGUsIG5ld05hbWUpO1xuICAgICAgICAgICAgICAgICAgICBtc2cuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHRleHQ6ICfmm7/mjaInLFxuICAgICAgICAgICAgICAgICAgY2xzOiAnYnRuIGJ0bi1zZWNvbmRhcnknLFxuICAgICAgICAgICAgICAgICAgaGFuZGxlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHV1aWQgPSB0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmZpbmQoeCA9PiB4LmZpbGVOYW1lID09IHNlbGVjdGVkRmlsZS5uYW1lKS5tZXRhZGF0YUlkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZEZpbGUodXVpZCwgc2VsZWN0ZWRGaWxlLCBzZWxlY3RlZEZpbGUubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlVG90YWwtLTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub2xkVXBsb2FkZWRGaWxlTGlzdC5tYXAoeCA9PiB4LmZpbGVOYW1lID09IHNlbGVjdGVkRmlsZS5uYW1lKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVUb3RhbCsrO1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3Quc3BsaWNlKHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuaW5kZXhPZih0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmZpbHRlcih4ID0+IHguZmlsZU5hbWUgPT0gc2VsZWN0ZWRGaWxlLm5hbWUpWzBdKSwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbXNnLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0ZXh0OiAn5Y+W5raIJyxcbiAgICAgICAgICAgICAgICAgIGNsczogJ2J0biBidG4tc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgICAgICAgIGhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBtc2cuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGlmICh0aGlzLmZpbGVzLmZpbmQoeCA9PiB4Lm5hbWUgPT0gc2VsZWN0ZWRGaWxlLm5hbWUpICE9IG51bGwpIHtcbiAgICAgIC8vICAgdGhpcy5lcnJGaWxlTGlzdC5wdXNoKHNlbGVjdGVkRmlsZS5uYW1lKTtcbiAgICAgIC8vICAgY29udGludWU7XG4gICAgICAvLyB9XG5cbiAgICAgIGlmIChzZWxlY3RlZEZpbGUuc2l6ZSA9PSAwKSB7XG4gICAgICAgIHRoaXMubnVsbEZpbGVMaXN0LnB1c2goc2VsZWN0ZWRGaWxlLm5hbWUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy90aGlzLmZsYWcgKz0gTWF0aC5jZWlsKHNlbGVjdGVkRmlsZS5zaXplIC8gdGhpcy5idWZmZXJTaXplKTtcbiAgICAgIC8vbGV0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICB0aGlzLnVwbG9hZEZpbGUodXVpZCwgc2VsZWN0ZWRGaWxlLCBzZWxlY3RlZEZpbGUubmFtZSk7XG5cbiAgICB9XG4gICAgLy8gaWYgKHRoaXMudXBsb2FkZWROYW1lTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgLy8gICBsZXQgbmFtZTogc3RyaW5nID0gdGhpcy5saXN0VG9TdHJpbmcodGhpcy51cGxvYWRlZE5hbWVMaXN0KTtcbiAgICAvLyAgIHRoaXMubXNnU2VydmljZS53YXJuaW5nKCfkuYvliY3lt7LkuIrkvKDov4flkIzlkI3mlofku7Y6ICcgKyBuYW1lICsgJ+ivt+mHjeaWsOmAieaLqeS4iuS8oOaWh+S7tuOAgicpO1xuICAgIC8vICAgdGhpcy51cGxvYWRlZE5hbWVMaXN0ID0gW107XG4gICAgLy8gfVxuXG4gICAgaWYgKHRoaXMuZXJyRmlsZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IG5hbWU6IHN0cmluZyA9IHRoaXMubGlzdFRvU3RyaW5nKHRoaXMuZXJyRmlsZUxpc3QpO1xuICAgICAgdGhpcy5tc2dTZXJ2aWNlLndhcm5pbmcoJ+W3suS4iuS8oOWQjOWQjeaWh+S7tjogJyArIG5hbWUgKyAn6K+36YeN5paw6YCJ5oup5LiK5Lyg5paH5Lu244CCJyk7XG4gICAgICB0aGlzLmVyckZpbGVMaXN0ID0gW107XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubnVsbEZpbGVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCBuYW1lOiBzdHJpbmcgPSB0aGlzLmxpc3RUb1N0cmluZyh0aGlzLm51bGxGaWxlTGlzdCk7XG4gICAgICBuYW1lID0gbmFtZS5zdWJzdHJpbmcoMCwgbmFtZS5sZW5ndGggLSAxKTtcbiAgICAgIHRoaXMubXNnU2VydmljZS53YXJuaW5nKCfmlofku7Y6ICAnICsgbmFtZSArICcg5aSn5bCP5Li6MO+8jOivt+mHjeaWsOmAieaLqeS4iuS8oOaWh+S7tuOAgicpO1xuICAgICAgdGhpcy5udWxsRmlsZUxpc3QgPSBbXTtcbiAgICB9XG4gICAgLy8gaWYgKHRoaXMuZXJyVHlwZUxpc3QubGVuZ3RoID4gMCkge1xuICAgIC8vICAgbGV0IHR5cGU6IHN0cmluZyA9IHRoaXMubGlzdFRvU3RyaW5nKHRoaXMuZXJyVHlwZUxpc3QpO1xuICAgIC8vICAgdGhpcy5tc2dTZXJ2aWNlLndhcm5pbmcoJ+S4jeaUr+aMgeS4iuS8oOexu+Wei+S4uiAnICsgdHlwZSArICfnmoTmlofku7bor7fph43mlrDpgInmi6nkuIrkvKDmlofku7bjgIInKTtcbiAgICAvLyAgIHRoaXMuZXJyVHlwZUxpc3QgPSBbXTtcbiAgICAvLyB9XG4gICAgdGhpcy5maWxlcyA9IHRoaXMuZmlsZXMuc2xpY2UoKTtcbiAgICB0aGlzLmZpbGVBbGxTZWxlY3RlZCA9IGZhbHNlO1xuICAgICRldmVudC50YXJnZXQudmFsdWUgPSAnJztcbiAgfVxuXG4gIHNob3dFcnJvck1lc3NhZ2UoZmlsZSkge1xuICAgIHRoaXMubXNnU2VydmljZS5lcnJvcign5LiK5Lyg6ZmE5Lu25aSx6LSl44CCJyArIGZpbGUuZXJyb3JNZXNzYWdlKTtcbiAgfVxuXG5cbiAgdXBsb2FkRmlsZSh1dWlkOiBzdHJpbmcsIHNlbGVjdGVkRmlsZSwgZmlsZU5hbWU6IHN0cmluZykge1xuICAgIGxldCBmaWxlSW5mbzogRmlsZUluZm87XG4gICAgLy8gbGV0IHV1aWQgPSBVVUlELlVVSUQoKTtcbiAgICAvL3JlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoc2VsZWN0ZWRGaWxlKTtcbiAgICAvL3JlYWRlci5vbmxvYWQgPSAoZSkgPT4ge1xuICAgIGZpbGVJbmZvID0ge1xuICAgICAgaWQ6IHV1aWQsXG4gICAgICBuYW1lOiBmaWxlTmFtZSxcbiAgICAgIHR5cGU6IHNlbGVjdGVkRmlsZS50eXBlLFxuICAgICAgc291cmNlOiBcIlwiLFxuICAgICAgc2l6ZTogdGhpcy5nZXRGaWxlU2l6ZShzZWxlY3RlZEZpbGUuc2l6ZSksXG4gICAgICBmaWxlU2l6ZTogc2VsZWN0ZWRGaWxlLnNpemUsXG4gICAgICBwaWNMaXN0RGlzcGxheU5hbWU6IHRoaXMuZ2V0UGljTGlzdERpc3BsYXlOYW1lKGZpbGVOYW1lKSxcbiAgICAgIHF1ZXVlTGlzdERpc3BsYXlOYW1lOiB0aGlzLmdldFF1ZXVlRGlzcGxheU5hbWUoZmlsZU5hbWUpLFxuICAgICAgLy9jb250ZW50OiByZWFkZXIucmVzdWx0LnRvU3RyaW5nKCksXG4gICAgICBoYXNVcGxvYWRlZDogZmFsc2UsXG4gICAgICBtb3VzZU9uOiBmYWxzZSxcbiAgICAgIHNlbGVjdGQ6IGZhbHNlLFxuICAgICAgaXNVcGxvYWRpbmc6IHRydWUsXG4gICAgICB1cGxvYWRSZXN1bHQ6IGZhbHNlLFxuICAgICAgdXBsb2FkUHJvY2VzczogMCxcbiAgICAgIGVycm9yTWVzc2FnZTogXCJcIixcbiAgICAgIGV4dGVuc2lvbkRyb3BMaXN0SWQ6IDAsXG4gICAgICBleHRlbnNpb25OYW1lOiBcIlwiXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RvcmFnZUV4dGVuc2lvbiAhPSBudWxsKVxuICAgICAgZmlsZUluZm8uZXh0ZW5zaW9uTmFtZSA9IHRoaXMuZGVmYXVsdFByb3BlcnR5TmFtZTtcbiAgICBsZXQgY2h1bmtUb3RhbDogbnVtYmVyID0gTWF0aC5jZWlsKHNlbGVjdGVkRmlsZS5zaXplIC8gdGhpcy5idWZmZXJTaXplKTtcbiAgICBsZXQgY2h1bmtJbmRleDogbnVtYmVyID0gMDtcblxuXG4gICAgdGhpcy5maWxlVG90YWxDaHVua1t1dWlkXSA9IGNodW5rVG90YWw7XG5cbiAgICBsZXQgdXBsb2FkRmlsZUluZm8gPSBuZXcgVXBsb2FkRmlsZUluZm8oKTtcblxuICAgIHVwbG9hZEZpbGVJbmZvLm1ldGFkYXRhSWQgPSB1dWlkO1xuICAgIHVwbG9hZEZpbGVJbmZvLmZpbGVOYW1lID0gZmlsZUluZm8ubmFtZTtcbiAgICB1cGxvYWRGaWxlSW5mby5maWxlU2l6ZSA9IGZpbGVJbmZvLnNpemU7XG5cblxuICAgIHdoaWxlIChjaHVua0luZGV4IDwgY2h1bmtUb3RhbCkge1xuICAgICAgbGV0IHVwbG9hZEluZm8gPSBuZXcgR3NwRm9ybVVwbG9hZEVudGl0eTtcbiAgICAgIHVwbG9hZEluZm8uZm9ybUlkID0gdGhpcy5mb3JtSWQ7XG4gICAgICB1cGxvYWRJbmZvLm1vZGUgPSBPcGVyYXRpbmdNb2Rlcy5UZW1wO1xuICAgICAgdXBsb2FkSW5mby5yb290SWQgPSB0aGlzLnJvb3RJZDtcblxuICAgICAgbGV0IGRvY0luZm86IEdzcEZvcm1Eb2NJbmZvID0gbmV3IEdzcEZvcm1Eb2NJbmZvO1xuXG4gICAgICBkb2NJbmZvLmZpbGVOYW1lID0gZmlsZU5hbWU7XG4gICAgICBkb2NJbmZvLm1ldGFkYXRhSWQgPSB1dWlkO1xuICAgICAgZG9jSW5mby50b3RhbCA9IGNodW5rVG90YWw7XG5cbiAgICAgIHRoaXMudXBsb2FkZWRDaHVua1tkb2NJbmZvLm1ldGFkYXRhSWRdID0gMDtcblxuICAgICAgbGV0IG5leHRTaXplID0gTWF0aC5taW4oKGNodW5rSW5kZXggKyAxKSAqIHRoaXMuYnVmZmVyU2l6ZSwgc2VsZWN0ZWRGaWxlLnNpemUpO1xuICAgICAgbGV0IGZpbGVEYXRhID0gc2VsZWN0ZWRGaWxlLnNsaWNlKGNodW5rSW5kZXggKiB0aGlzLmJ1ZmZlclNpemUsIG5leHRTaXplKTtcbiAgICAgIGxldCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhmaWxlRGF0YSk7XG4gICAgICBsZXQgaW5uZXJJbmRleCA9IGNodW5rSW5kZXg7XG4gICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgICBkb2NJbmZvLmZpbGVDb250ZW50ID0gYnRvYShyZWFkZXIucmVzdWx0LnRvU3RyaW5nKCkpO1xuXG4gICAgICAgIGRvY0luZm8uaW5kZXggPSBpbm5lckluZGV4O1xuICAgICAgICAvL2NodW5rSW5kZXgrKztcbiAgICAgICAgaWYgKHRoaXMuaGF2ZUV4dGVuc2lvblByb3BlcnR5KVxuICAgICAgICAgIGRvY0luZm8uZXhQcm9wZXJ0eU5hbWUgPSB0aGlzLmRlZmF1bHRQcm9wZXJ0eU5hbWU7XG4gICAgICAgIC8vZG9jSW5mby5pc0xhc3QgPSB0cnVlO1xuICAgICAgICB1cGxvYWRJbmZvLmRvY0luZm8gPSBkb2NJbmZvO1xuXG4gICAgICAgIGxldCBpbmZvID0gdXBsb2FkSW5mbztcblxuICAgICAgICAvLyB0aGlzLnJlcXVlc3RBcnJheS5wdXNoKHRoaXMudXBsb2FkU2VydmljZS51cGxvYWRGaWxlKHVwbG9hZEluZm8pKTtcbiAgICAgICAgdGhpcy5yZXF1ZXN0Qm9keUFycmF5LnB1c2goaW5mbyk7XG5cbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLnVwbG9hZEZpbGUoaW5mbykuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgaWYgKHJlcyAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyldLnVwbG9hZFJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5maWxlc1t0aGlzLmZpbGVzLmluZGV4T2YoZmlsZUluZm8pXS5pc1VwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5maWxlc1t0aGlzLmZpbGVzLmluZGV4T2YoZmlsZUluZm8pXS5lcnJvck1lc3NhZ2UgPSByZXMuZXJyb3IuTWVzc2FnZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRlZENodW5rW2RvY0luZm8ubWV0YWRhdGFJZF0rKztcbiAgICAgICAgICAgIHRoaXMuZmlsZXNbdGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKV0udXBsb2FkUHJvY2VzcyA9IE51bWJlci5wYXJzZUludCgodGhpcy51cGxvYWRlZENodW5rW2RvY0luZm8ubWV0YWRhdGFJZF0gLyB0aGlzLmZpbGVUb3RhbENodW5rW2RvY0luZm8ubWV0YWRhdGFJZF0gKiAxMDApLnRvRml4ZWQoMCkpO1xuICAgICAgICAgICAgaWYgKHRoaXMudXBsb2FkZWRDaHVua1tkb2NJbmZvLm1ldGFkYXRhSWRdID09IHRoaXMuZmlsZVRvdGFsQ2h1bmtbZG9jSW5mby5tZXRhZGF0YUlkXSkge1xuICAgICAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyldLnVwbG9hZFJlc3VsdCA9IHRydWU7XG4gICAgICAgICAgICAgIHRoaXMuZmlsZXNbdGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKV0uaXNVcGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlSW5mb0xpc3QgPSB0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5jb25jYXQodXBsb2FkRmlsZUluZm8pO1xuICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0ID0gdGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5jb25jYXQodXBsb2FkRmlsZUluZm8pO1xuICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZVRvdGFsKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIC8vY29uc29sZS5sb2coY2h1bmtJbmRleCArIDEpO1xuICAgICAgY2h1bmtJbmRleCA9IGNodW5rSW5kZXggKyAxO1xuICAgIH1cblxuICAgIGxldCB0eXBlOiBzdHJpbmcgPSBzZWxlY3RlZEZpbGUudHlwZTtcbiAgICBpZiAodHlwZS5pbmNsdWRlcyhcImltYWdlXCIpKSB7XG4gICAgICB0aGlzLmFkZERvY0luZm8oc2VsZWN0ZWRGaWxlLCBmaWxlSW5mbywgRG9jVHlwZS5JbWFnZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUuaW5jbHVkZXMoXCJ3b3JkXCIpKSB7XG4gICAgICB0aGlzLmFkZERvY0luZm8oc2VsZWN0ZWRGaWxlLCBmaWxlSW5mbywgRG9jVHlwZS5Xb3JkKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZS5pbmNsdWRlcyhcInBkZlwiKSkge1xuICAgICAgdGhpcy5hZGREb2NJbmZvKHNlbGVjdGVkRmlsZSwgZmlsZUluZm8sIERvY1R5cGUuUGRmKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZS5pbmNsdWRlcyhcInBsYWluXCIpKSB7XG4gICAgICB0aGlzLmFkZERvY0luZm8oc2VsZWN0ZWRGaWxlLCBmaWxlSW5mbywgRG9jVHlwZS5UeHQpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlLmluY2x1ZGVzKFwic2hlZXRcIikgfHwgdHlwZS5pbmNsdWRlcyhcImV4Y2VsXCIpKSB7XG4gICAgICB0aGlzLmFkZERvY0luZm8oc2VsZWN0ZWRGaWxlLCBmaWxlSW5mbywgRG9jVHlwZS5FeGNlbClcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZS5pbmNsdWRlcyhcInBvd2VycG9pbnRcIikgfHwgdHlwZS5pbmNsdWRlcyhcInByZXNlbnRhdGlvblwiKSkge1xuICAgICAgdGhpcy5hZGREb2NJbmZvKHNlbGVjdGVkRmlsZSwgZmlsZUluZm8sIERvY1R5cGUuUG93ZXJwb2ludCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5hZGREb2NJbmZvKHNlbGVjdGVkRmlsZSwgZmlsZUluZm8sIERvY1R5cGUuT3RoZXIpO1xuICAgICAgLy8gbGV0IG5hbWU6IHN0cmluZyA9IHNlbGVjdGVkRmlsZS5uYW1lO1xuICAgICAgLy8gbGV0IGVyclR5cGUgPSBuYW1lLnN1YnN0cmluZyhzZWxlY3RlZEZpbGUubmFtZS5sYXN0SW5kZXhPZignLicpKTtcbiAgICAgIC8vIHRoaXMuZXJyVHlwZUxpc3QucHVzaChlcnJUeXBlKTtcbiAgICB9XG4gICAgbGV0IGluZGV4ID0gLTE7XG4gICAgdGhpcy5maWxlcy5mb3JFYWNoKHggPT4ge1xuICAgICAgaWYgKHgubmFtZSA9PSBmaWxlSW5mby5uYW1lKSB7XG4gICAgICAgIGlmIChpbmRleCA9PSAtMSlcbiAgICAgICAgICBpbmRleCA9IHRoaXMuZmlsZXMuaW5kZXhPZih4KTtcbiAgICAgIH1cbiAgICB9KVxuICAgIGlmIChpbmRleCAhPSB0aGlzLmZpbGVzLmxlbmd0aCAtIDEpIHtcbiAgICAgIHRoaXMuZmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICB9XG5cblxuICBzZWxlY3RBbGxGaWxlKCkge1xuXG4gICAgaWYgKCF0aGlzLmZpbGVBbGxTZWxlY3RlZCkge1xuICAgICAgdGhpcy5maWxlcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAvLyBsZXQgb2JqOiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50Lm5hbWUpO1xuICAgICAgICAvLyBvYmouY2hlY2tlZCA9IHRydWU7XG4gICAgICAgIGVsZW1lbnQuc2VsZWN0ZCA9IHRydWU7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZmlsZUFsbFNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQgPSB0aGlzLmZpbGVzLmxlbmd0aDtcblxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbGVzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIC8vIGxldCBvYmo6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnQubmFtZSk7XG4gICAgICAgIC8vIG9iai5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgIGVsZW1lbnQuc2VsZWN0ZCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmZpbGVBbGxTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWxlY3RlZEZpbGVDb3VudCA9IDA7XG4gICAgfVxuICB9XG5cblxuICBjaGVja291dFNlbGVjdEZpbGUoZmlsZTogRmlsZUluZm8pIHtcbiAgICAvLyBsZXQgb2JqOiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmaWxlTmFtZSk7XG4gICAgZmlsZS5zZWxlY3RkID0gIWZpbGUuc2VsZWN0ZDtcbiAgICBpZiAoZmlsZS5zZWxlY3RkKVxuICAgICAgdGhpcy5zZWxlY3RlZEZpbGVDb3VudCsrO1xuICAgIGVsc2VcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQtLTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZpbGVDb3VudCA9PSB0aGlzLmZpbGVzLmxlbmd0aCkge1xuICAgICAgdGhpcy5maWxlQWxsU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgLy90aGlzLmlzRmlsZUFsbFNlbGVjdGVkKCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5maWxlQWxsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIC8vdGhpcy5pc0ZpbGVBbGxTZWxlY3RlZCgpO1xuICAgIH1cblxuICB9XG5cbiAgbGlzdERlbGV0ZUZpbGUoZmlsZUluZm86IEZpbGVJbmZvKSB7XG4gICAgaWYgKGZpbGVJbmZvLnNlbGVjdGQpXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZUNvdW50LS07XG4gICAgLy9jb25zb2xlLmxvZyhmaWxlTmFtZSk7XG4gICAgdGhpcy5maWxlcy5zcGxpY2UodGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKSwgMSk7XG4gICAgaWYgKGZpbGVJbmZvLnVwbG9hZFJlc3VsdCkge1xuICAgICAgbGV0IGlkTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgICAgIGlkTGlzdC5wdXNoKGZpbGVJbmZvLmlkKTtcbiAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jYW5jZWwoaWRMaXN0LCB0aGlzLnJvb3RJZCkuc3Vic2NyaWJlKCk7XG5cbiAgICAgIHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LnNwbGljZSh0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5pbmRleE9mKHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LmZpbHRlcih4ID0+IHguZmlsZU5hbWUgPT0gZmlsZUluZm8ubmFtZSlbMF0pLCAxKTtcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3Quc3BsaWNlKHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuaW5kZXhPZih0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmZpbHRlcih4ID0+IHguZmlsZU5hbWUgPT0gZmlsZUluZm8ubmFtZSlbMF0pLCAxKTtcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlVG90YWwtLTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQgPT0gMClcbiAgICAgIHRoaXMuZmlsZUFsbFNlbGVjdGVkID0gZmFsc2U7XG4gIH1cblxuICBsaXN0TXVsdGlwbGVEZWxldGVGaWxlKCkge1xuICAgIGxldCBzZWxlY3RlZEZpbGU6IEZpbGVJbmZvW10gPSBbXTtcbiAgICB0aGlzLmZpbGVzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBsZXQgb2JqOiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50Lm5hbWUpO1xuICAgICAgaWYgKG9iai5jaGVja2VkKVxuICAgICAgICBzZWxlY3RlZEZpbGUucHVzaChlbGVtZW50KTtcbiAgICB9KVxuICAgIGxldCBtZXRhZGF0YUxpc3Q6IHN0cmluZ1tdID0gW107XG4gICAgc2VsZWN0ZWRGaWxlLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBtZXRhZGF0YUxpc3QucHVzaChlbGVtZW50LmlkKTtcbiAgICAgIHRoaXMuZmlsZXMuc3BsaWNlKHRoaXMuZmlsZXMuaW5kZXhPZihlbGVtZW50KSwgMSk7XG4gICAgICBpZiAoZWxlbWVudC51cGxvYWRSZXN1bHQpIHtcbiAgICAgICAgLy8gbGV0IGlkTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgLy8gaWRMaXN0LnB1c2goZmlsZUluZm8uaWQpO1xuICAgICAgICAvLyB0aGlzLnVwbG9hZFNlcnZpY2UuY2FuY2VsKGlkTGlzdCwgdGhpcy5yb290SWQpLnN1YnNjcmliZSgpO1xuXG4gICAgICAgIHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LnNwbGljZSh0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5pbmRleE9mKHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LmZpbHRlcih4ID0+IHguZmlsZU5hbWUgPT0gZWxlbWVudC5uYW1lKVswXSksIDEpO1xuICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LnNwbGljZSh0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmluZGV4T2YodGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5maWx0ZXIoeCA9PiB4LmZpbGVOYW1lID09IGVsZW1lbnQubmFtZSlbMF0pLCAxKTtcbiAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVUb3RhbC0tO1xuICAgICAgfVxuICAgIH0pXG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNhbmNlbChtZXRhZGF0YUxpc3QsIHRoaXMucm9vdElkKS5zdWJzY3JpYmUoKTtcblxuICAgIGxldCBhbGxCb3g6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYWxsQ2hlY2tCb3hcIik7XG4gICAgaWYgKGFsbEJveCAhPSBudWxsKVxuICAgICAgYWxsQm94LmNoZWNrZWQgPSBmYWxzZTtcbiAgICB0aGlzLnNlbGVjdGVkRmlsZUNvdW50ID0gMDtcbiAgICB0aGlzLmZpbGVBbGxTZWxlY3RlZCA9IGZhbHNlO1xuICB9XG5cblxuICBnZXRQaWNMaXN0RGlzcGxheU5hbWUoZmlsZU5hbWU6IHN0cmluZykge1xuICAgIGlmIChmaWxlTmFtZS5sZW5ndGggPD0gMTApXG4gICAgICByZXR1cm4gZmlsZU5hbWU7XG4gICAgZWxzZSB7XG4gICAgICBsZXQgaGVhZENvbnRlbnQgPSBmaWxlTmFtZS5zdWJzdHJpbmcoMCwgMik7XG4gICAgICBsZXQgdGFpbENvbnRlbnQgPSBmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSAtIDIpO1xuICAgICAgcmV0dXJuIGhlYWRDb250ZW50ICsgXCLigKZcIiArIHRhaWxDb250ZW50O1xuICAgIH1cbiAgfVxuXG4gIGdldFF1ZXVlRGlzcGxheU5hbWUoZmlsZU5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBmaWxlTmFtZTtcbiAgfVxuXG4gIGFkZERvY0luZm8oc2VsZWN0ZEZpbGUsIGZpbGVJbmZvOiBGaWxlSW5mbywgZG9jVHlwZTogRG9jVHlwZSkge1xuICAgIHN3aXRjaCAoZG9jVHlwZSkge1xuICAgICAgY2FzZSBEb2NUeXBlLldvcmQ6IHtcbiAgICAgICAgZmlsZUluZm8uc291cmNlID0gXCIvcGxhdGZvcm0vcnVudGltZS9kZnMvaW1hZ2VzL3dvcmQucG5nXCJcbiAgICAgICAgdGhpcy5maWxlcy5wdXNoKGZpbGVJbmZvKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgRG9jVHlwZS5QZGY6IHtcbiAgICAgICAgZmlsZUluZm8uc291cmNlID0gXCIvcGxhdGZvcm0vcnVudGltZS9kZnMvaW1hZ2VzL3BkZi5wbmdcIlxuICAgICAgICB0aGlzLmZpbGVzLnB1c2goZmlsZUluZm8pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBEb2NUeXBlLkV4Y2VsOiB7XG4gICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IFwiL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy9leGNlbC5wbmdcIjtcbiAgICAgICAgdGhpcy5maWxlcy5wdXNoKGZpbGVJbmZvKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgRG9jVHlwZS5UeHQ6IHtcbiAgICAgICAgZmlsZUluZm8uc291cmNlID0gXCIvcGxhdGZvcm0vcnVudGltZS9kZnMvaW1hZ2VzL3R4dC5wbmdcIjtcbiAgICAgICAgdGhpcy5maWxlcy5wdXNoKGZpbGVJbmZvKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgRG9jVHlwZS5Qb3dlcnBvaW50OiB7XG4gICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IFwiL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy9wcHQucG5nXCI7XG4gICAgICAgIHRoaXMuZmlsZXMucHVzaChmaWxlSW5mbyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIERvY1R5cGUuT3RoZXI6IHtcbiAgICAgICAgZmlsZUluZm8uc291cmNlID0gXCIvcGxhdGZvcm0vcnVudGltZS9kZnMvaW1hZ2VzL2ZpbGUucG5nXCI7XG4gICAgICAgIHRoaXMuZmlsZXMucHVzaChmaWxlSW5mbyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIERvY1R5cGUuSW1hZ2U6XG4gICAgICAgIGxldCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKHNlbGVjdGRGaWxlKTtcbiAgICAgICAgcmVhZGVyLm9ubG9hZCA9IChfZXZlbnQpID0+IHtcbiAgICAgICAgICBsZXQgaW1nVXJsID0gcmVhZGVyLnJlc3VsdDtcbiAgICAgICAgICBpZiAodGhpcy5pbmplY3RvciAhPSBudWxsKSB7XG4gICAgICAgICAgICBsZXQgc2FuaXRpemVyID0gdGhpcy5pbmplY3Rvci5nZXQoRG9tU2FuaXRpemVyKTtcbiAgICAgICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IHNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoaW1nVXJsKTtcbiAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IGltZ1VybDtcbiAgICAgICAgICB0aGlzLmZpbGVzLnB1c2goZmlsZUluZm8pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICB9XG5cbiAgbGlzdFRvU3RyaW5nKHN0ckxpc3Q6IHN0cmluZ1tdKSB7XG4gICAgbGV0IG5hbWU6IHN0cmluZyA9IFwiXCI7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHJMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBuYW1lICs9IHN0ckxpc3RbaV0gKyBcIixcIjtcbiAgICB9XG4gICAgcmV0dXJuIG5hbWU7XG4gIH1cblxuXG4gIGV4U3RvcmFnZUZpbGVMaXN0OiBFeFN0b3JhZ2VGaWxlSW5mb1tdID0gW107XG5cbiAgdHlwZUNoYW5nZSgkZXZlbnQ6IGFueSwgZmlsZTogRmlsZUluZm8pIHtcbiAgICBmaWxlLmV4dGVuc2lvbk5hbWUgPSAkZXZlbnQuZGF0YS5uYW1lO1xuICAgIGxldCBleFN0b3JhZ2VGaWxlSW5mbzogRXhTdG9yYWdlRmlsZUluZm8gPSBuZXcgRXhTdG9yYWdlRmlsZUluZm87XG4gICAgaWYgKGZpbGUuZXh0ZW5zaW9uTmFtZSA9PSB0aGlzLnN0b3JhZ2VFeHRlbnNpb24uZGVmYXVsdFByb3BlcnR5TmFtZSkge1xuICAgICAgaWYgKHRoaXMuZXhTdG9yYWdlRmlsZUxpc3QuZmlsdGVyKHggPT4geC5tZXRhZGF0YUlkID09IGZpbGUuaWQpLmxlbmd0aCA+IDApXG4gICAgICAgIHRoaXMuZXhTdG9yYWdlRmlsZUxpc3Quc3BsaWNlKHRoaXMuZXhTdG9yYWdlRmlsZUxpc3QuZmluZEluZGV4KHggPT4geC5tZXRhZGF0YUlkID09IGZpbGUuaWQpLCAxKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5maWx0ZXIoeCA9PiB4Lm1ldGFkYXRhSWQgPT0gZmlsZS5pZCkubGVuZ3RoID4gMCkge1xuICAgICAgICBleFN0b3JhZ2VGaWxlSW5mbyA9IHRoaXMuZXhTdG9yYWdlRmlsZUxpc3QuZmlsdGVyKHggPT4geC5tZXRhZGF0YUlkID09IGZpbGUuaWQpWzBdO1xuICAgICAgICBleFN0b3JhZ2VGaWxlSW5mby5leFByb3BlcnR5TmFtZSA9IGZpbGUuZXh0ZW5zaW9uTmFtZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4U3RvcmFnZUZpbGVJbmZvLm1ldGFkYXRhSWQgPSBmaWxlLmlkO1xuICAgICAgICBleFN0b3JhZ2VGaWxlSW5mby5leFByb3BlcnR5TmFtZSA9IGZpbGUuZXh0ZW5zaW9uTmFtZTtcbiAgICAgICAgdGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5wdXNoKGV4U3RvcmFnZUZpbGVJbmZvKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1cGxvYWQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAodGhpcy51cGxvYWRlZEZpbGVUb3RhbCAhPSB0aGlzLmZpbGVzLmZpbHRlcih4ID0+IHguaXNVcGxvYWRpbmcgfHwgeC51cGxvYWRSZXN1bHQpLmxlbmd0aCkge1xuICAgICAgLy8gdGhpcy5ub3RpZnlTZXJ2aWNlLnN1Y2Nlc3MoPE5vdGlmeU9wdGlvbnM+e1xuICAgICAgLy8gICBtc2c6ICfkv53lrZjmiJDlip/vvIEnLCB0aW1lb3V0OiAzMDAwXG4gICAgICAvLyB9KTtcbiAgICAgIHRoaXMubXNnU2VydmljZS53YXJuaW5nKCfnrYnkuIDkuIvvvIzmlofmoaPmraPlnKjkuIrkvKDjgIInKTtcbiAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0b3JhZ2VFeHRlbnNpb24gPT0gbnVsbClcbiAgICAgIHJldHVybiBvZih0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdCk7XG4gICAgZWxzZSB7XG4gICAgICBpZiAodGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5sZW5ndGggPT0gMClcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMudXBsb2FkRmlsZUluZm9MaXN0KTtcbiAgICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBsb2FkaW5nID0gdGhpcy5sb2FkU2VydmljZS5zaG93KHtcbiAgICAgICAgICBtZXNzYWdlOiAn5q2j5Zyo5bCG5paH5Lu25L+d5a2Y5YiwJyArIHRoaXMuc3RvcmFnZUV4dGVuc2lvbi5leHRlbnNpb25OYW1lXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRTZXJ2aWNlLmNoYW5nZVN0b3JhZ2VJbnN0YW5jZSh0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LCB0aGlzLnJvb3RJZCkucGlwZShcbiAgICAgICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMgIT0gbnVsbClcbiAgICAgICAgICAgICAgdGhpcy5tc2dTZXJ2aWNlLmVycm9yKCfkv53lrZjliLAnICsgdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmV4dGVuc2lvbk5hbWUgKyBcIuWksei0pe+8jOS4iuS8oOaWh+S7tuiHquWKqOS/neWtmOWIsFwiICsgdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmRlZmF1bHRQcm9wZXJ0eU5hbWUgKyBcIuWtmOWCqOOAglwiICsgcmVzLmVycm9yLk1lc3NhZ2UpO1xuICAgICAgICAgICAgbG9hZGluZy5jbG9zZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBsb2FkRmlsZUluZm9MaXN0O1xuICAgICAgICAgIH0pKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICBpZiAodGhpcy51cGxvYWRGaWxlSW5mb0xpc3QubGVuZ3RoID09IDApXG4gICAgICByZXR1cm47XG4gICAgdGhpcy51cGxvYWRGaWxlSW5mb0xpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIHRoaXMubWV0YWRhdGFJZExpc3QucHVzaChlbGVtZW50Lm1ldGFkYXRhSWQpO1xuICAgIH0pXG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNhbmNlbCh0aGlzLm1ldGFkYXRhSWRMaXN0LCB0aGlzLnJvb3RJZCkuc3Vic2NyaWJlKCk7XG5cbiAgfVxuXG4gIGdldFVwbG9hZEZpbGVJbmZvTGlzdCgpIHtcbiAgICByZXR1cm4gdGhpcy51cGxvYWRGaWxlSW5mb0xpc3Q7XG4gIH1cblxuICBkZWxldGUoZmlsZSkge1xuICAgIHRoaXMuZmlsZXMuc3BsaWNlKHRoaXMuZmlsZXMuaW5kZXhPZihmaWxlKSwgMSk7XG4gICAgaWYgKGZpbGUudXBsb2FkUmVzdWx0KVxuICAgICAgdGhpcy51cGxvYWRlZEZpbGVUb3RhbC0tO1xuICAgIGlmICh0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LmZpbHRlcih4ID0+IHgubWV0YWRhdGFJZCA9PSBmaWxlLmlkKS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LnNwbGljZSh0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LmZpbmRJbmRleCh4ID0+IHgubWV0YWRhdGFJZCA9PSBmaWxlLmlkKSwgMSk7XG4gICAgfVxuICAgIC8vIHZhciBvYmo6YW55ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2ZpbGUnKTtcbiAgICAvLyBvYmouZmlsZXMucmVtb3ZlKCk7XG4gICAgLy9vYmoudmFsdWU9Jyc7XG4gIH1cblxuICBnZXRGaWxlU2l6ZShzaXplOiBudW1iZXIpIHtcbiAgICBpZiAoc2l6ZSA8IDEwMjQwMClcbiAgICAgIHJldHVybiAoc2l6ZSAvIDEwMjQpLnRvRml4ZWQoMSkgKyBcIktcIjtcbiAgICBlbHNlIGlmIChzaXplIDwgMTAyNCAqIDEwMjQpXG4gICAgICByZXR1cm4gKHNpemUgLyAxMDI0KS50b0ZpeGVkKDApICsgXCJLXCI7XG4gICAgZWxzZSBpZiAoc2l6ZSA8IDEwMCAqIDEwMjQgKiAxMDI0KVxuICAgICAgcmV0dXJuIChzaXplIC8gMTAyNCAvIDEwMjQpLnRvRml4ZWQoMSkgKyBcIk1cIjtcbiAgICBlbHNlIGlmIChzaXplIDwgMTAyNCAqIDEwMjQgKiAxMDI0KVxuICAgICAgcmV0dXJuIChzaXplIC8gMTAyNCAvIDEwMjQpLnRvRml4ZWQoMCkgKyBcIk1cIjtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gKHNpemUgLyAxMDI0IC8gMTAyNCAvIDEwMjQpLnRvRml4ZWQoMSkgKyBcIkdcIjtcbiAgfVxuICBzaG93QnlHcm91cCgpIHtcbiAgICB0aGlzLnNob3dUeXBlID0gMDtcbiAgICAvLyB0aGlzLnNlbGVjdGVkRmlsZUNvdW50ID0gMDtcbiAgfVxuXG4gIHNob3dCeUxpc3QoKSB7XG4gICAgdGhpcy5zaG93VHlwZSA9IDE7XG4gICAgLy8gdGhpcy5zZWxlY3RlZEZpbGVDb3VudCA9IDA7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQgIT0gMCAmJiB0aGlzLnNlbGVjdGVkRmlsZUNvdW50ID09IHRoaXMuZmlsZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmZpbGVBbGxTZWxlY3RlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgbW91c2VPdmVyKGZpbGUpIHtcbiAgICBmaWxlLm1vdXNlT24gPSB0cnVlO1xuICB9XG4gIG1vdXNlT3V0KGZpbGUpIHtcbiAgICBmaWxlLm1vdXNlT24gPSBmYWxzZTtcbiAgfVxuXG59XG5cblxuIl19
@@ -34,6 +34,27 @@ var DownloadService = /** @class */ (function () {
34
34
  var list = JSON.parse(metadataIdList);
35
35
  return "/api/runtime/dfs/v1.0/doc/multiple/download?metadataidlist=" + metadataIdList + "&rootid=" + rootId + "&token=" + this.getToken(this.mergeString(list[0], rootId));
36
36
  };
37
+ /**
38
+ * @param {?} metadataIdList
39
+ * @param {?} rootId
40
+ * @param {?} zipName
41
+ * @return {?}
42
+ */
43
+ DownloadService.prototype.getMultipleDownloadUrlWithName = /**
44
+ * @param {?} metadataIdList
45
+ * @param {?} rootId
46
+ * @param {?} zipName
47
+ * @return {?}
48
+ */
49
+ function (metadataIdList, rootId, zipName) {
50
+ /** @type {?} */
51
+ var list = JSON.parse(metadataIdList);
52
+ if (zipName == null || zipName == "")
53
+ zipName = 'unifile.zip';
54
+ if (!zipName.endsWith(".zip"))
55
+ zipName += '.zip';
56
+ return "/api/runtime/dfs/v1.0/doc/compress/download?metadataidlist=" + metadataIdList + "&rootid=" + rootId + "&token=" + this.getToken(this.mergeString(list[0], rootId)) + "&zipName=" + zipName;
57
+ };
37
58
  /**
38
59
  * @param {?} metadataId
39
60
  * @param {?} rootId
@@ -144,4 +165,4 @@ var DownloadService = /** @class */ (function () {
144
165
  return DownloadService;
145
166
  }());
146
167
  export { DownloadService };
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bnc3Atc3ZjL2Zvcm1kb2MtdXBsb2FkLyIsInNvdXJjZXMiOlsibGliL3VwbG9hZC9kb3dubG9hZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDO0lBR0U7SUFBZ0IsQ0FBQzs7Ozs7O0lBRWpCLHdDQUFjOzs7OztJQUFkLFVBQWUsVUFBa0IsRUFBRSxNQUFjO1FBQy9DLE9BQU8sbURBQW1ELEdBQUcsVUFBVSxHQUFHLFVBQVUsR0FBRyxNQUFNLEdBQUcsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNsSyxDQUFDOzs7Ozs7SUFFRCxnREFBc0I7Ozs7O0lBQXRCLFVBQXVCLGNBQXNCLEVBQUUsTUFBYzs7WUFDdkQsSUFBSSxHQUFhLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1FBQy9DLE9BQU8sNkRBQTZELEdBQUcsY0FBYyxHQUFHLFVBQVUsR0FBRyxNQUFNLEdBQUcsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM3SyxDQUFDOzs7Ozs7O0lBRUQsK0NBQXFCOzs7Ozs7SUFBckIsVUFBc0IsVUFBa0IsRUFBRSxNQUFjLEVBQUUsT0FBZTtRQUN2RSwrQ0FBK0M7UUFDL0MsT0FBTyxzREFBc0QsR0FBRyxVQUFVLEdBQUcsVUFBVSxHQUFHLE1BQU0sR0FBRyxXQUFXLEdBQUcsT0FBTyxHQUFHLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDN0ws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LENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RTLENBQUM7Ozs7Ozs7OztJQUVPLG1DQUFTOzs7Ozs7OztJQUFqQixVQUFrQixJQUFZLEVBQUUsSUFBWSxFQUFFLElBQVksRUFBRSxDQUFTO1FBQ25FLFFBQVEsQ0FBQyxFQUFFO1lBQ1QsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQztZQUNwQixLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDO1lBQ3BCLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUM7U0FDckI7SUFDSCxDQUFDOztnQkE1REYsVUFBVTs7OztJQStEWCxzQkFBQztDQUFBLEFBL0RELElBK0RDO1NBOURZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERvd25sb2FkU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBnZXREb3dubG9hZFVybChtZXRhZGF0YUlkOiBzdHJpbmcsIHJvb3RJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFwiL2FwaS9ydW50aW1lL2Rmcy92MS4wL2RvYy9maWxlY29udGVudD9tZXRhZGF0YWlkPVwiICsgbWV0YWRhdGFJZCArIFwiJnJvb3RpZD1cIiArIHJvb3RJZCArIFwiJnRva2VuPVwiICsgdGhpcy5nZXRUb2tlbih0aGlzLm1lcmdlU3RyaW5nKG1ldGFkYXRhSWQsIHJvb3RJZCkpO1xuICB9XG5cbiAgZ2V0TXVsdGlwbGVEb3dubG9hZFVybChtZXRhZGF0YUlkTGlzdDogc3RyaW5nLCByb290SWQ6IHN0cmluZykge1xuICAgIGxldCBsaXN0OiBzdHJpbmdbXSA9IEpTT04ucGFyc2UobWV0YWRhdGFJZExpc3QpO1xuICAgIHJldHVybiBcIi9hcGkvcnVudGltZS9kZnMvdjEuMC9kb2MvbXVsdGlwbGUvZG93bmxvYWQ/bWV0YWRhdGFpZGxpc3Q9XCIgKyBtZXRhZGF0YUlkTGlzdCArIFwiJnJvb3RpZD1cIiArIHJvb3RJZCArIFwiJnRva2VuPVwiICsgdGhpcy5nZXRUb2tlbih0aGlzLm1lcmdlU3RyaW5nKGxpc3RbMF0sIHJvb3RJZCkpO1xuICB9XG5cbiAgZ2V0SGlzdG9yeURvd25sb2FkVXJsKG1ldGFkYXRhSWQ6IHN0cmluZywgcm9vdElkOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZykge1xuICAgIC8vbGV0IGxpc3Q6c3RyaW5nW109SlNPTi5wYXJzZShtZXRhZGF0YUlkTGlzdCk7XG4gICAgcmV0dXJuIFwiL2FwaS9ydW50aW1lL2Rmcy92MS4wL2RvYy9oaXN0b3J5Y29udGVudD9tZXRhZGF0YWlkPVwiICsgbWV0YWRhdGFJZCArIFwiJnJvb3RpZD1cIiArIHJvb3RJZCArIFwiJnZlcnNpb249XCIgKyB2ZXJzaW9uICsgXCImdG9rZW49XCIgKyB0aGlzLmdldFRva2VuKHRoaXMubWVyZ2VTdHJpbmcobWV0YWRhdGFJZCwgcm9vdElkKSk7XG4gIH1cblxuXG5cbiAgcHJpdmF0ZSBtZXJnZVN0cmluZyhzdHI6IHN0cmluZywgc3RyMTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgbWluID0gc3RyLmxlbmd0aCA8IHN0cjEubGVuZ3RoID8gc3RyLmxlbmd0aCA6IHN0cjEubGVuZ3RoO1xuICAgIGxldCByZXM6IHN0cmluZyA9IFwiXCI7XG4gICAgbGV0IGkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBtaW47IGkrKykge1xuICAgICAgcmVzICs9IHN0ci5zdWJzdHJpbmcoaSwgaSArIDEpO1xuICAgICAgcmVzICs9IHN0cjEuc3Vic3RyaW5nKGksIGkgKyAxKTtcbiAgICB9XG4gICAgcmVzICs9IHN0ci5sZW5ndGggPCBzdHIxLmxlbmd0aCA/IHN0cjEuc3Vic3RyaW5nKGkpIDogc3RyLnN1YnN0cmluZyhpKTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb2tlbihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IGFycmF5ID0gWzEsIDIsIDNdO1xuICAgIGlmIChzdHIubGVuZ3RoID4gMjQpXG4gICAgICBzdHIgPSBzdHIuc3Vic3RyaW5nKDAsIDI0KTtcbiAgICBsZXQgbGVuZ3RoID0gTWF0aC5mbG9vcihzdHIubGVuZ3RoIC8gMyk7XG4gICAgbGV0IHN0cjEgPSBzdHIuc3Vic3RyaW5nKDAsIGxlbmd0aCk7XG4gICAgbGV0IHN0cjIgPSBzdHIuc3Vic3RyaW5nKGxlbmd0aCwgMiAqIGxlbmd0aCk7XG4gICAgbGV0IHN0cjMgPSBzdHIuc3Vic3RyaW5nKDIgKiBsZW5ndGgsIDMgKiBsZW5ndGgpO1xuICAgIGxldCByYW5kb21BcnJheSA9IFtdO1xuICAgIHZhciByYW5kb20gPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDMpO1xuICAgIHJhbmRvbUFycmF5LnB1c2goYXJyYXlbcmFuZG9tIC0gMV0pO1xuICAgIGFycmF5LnNwbGljZShyYW5kb20gLSAxLCAxKTtcbiAgICByYW5kb20gPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDIpO1xuICAgIHJhbmRvbUFycmF5LnB1c2goYXJyYXlbcmFuZG9tIC0gMV0pO1xuICAgIGFycmF5LnNwbGljZShyYW5kb20gLSAxLCAxKTtcbiAgICByYW5kb21BcnJheS5wdXNoKGFycmF5WzBdKTtcbiAgICBsZXQgdGltZVN0YW1wOiBzdHJpbmcgPSBNYXRoLnJvdW5kKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCkgKyBcIlwiO1xuXG4gICAgcmV0dXJuIHRpbWVTdGFtcC5zdWJzdHJpbmcoMCwgNSkgKyBcInRpbWVzXCIgKyByYW5kb21BcnJheVswXSArIFwiXCIgKyByYW5kb21BcnJheVsxXSArIFwiXCIgKyByYW5kb21BcnJheVsyXSArIHRoaXMuc3dpdGNoU3RyKHN0cjEsIHN0cjIsIHN0cjMsIHJhbmRvbUFycmF5WzBdKSArIHRoaXMuc3dpdGNoU3RyKHN0cjEsIHN0cjIsIHN0cjMsIHJhbmRvbUFycmF5WzFdKSArIHRoaXMuc3dpdGNoU3RyKHN0cjEsIHN0cjIsIHN0cjMsIHJhbmRvbUFycmF5WzJdKSArIFwidGltZXNcIiArIHRpbWVTdGFtcC5zdWJzdHJpbmcoNSk7XG4gIH1cblxuICBwcml2YXRlIHN3aXRjaFN0cihzdHIxOiBzdHJpbmcsIHN0cjI6IHN0cmluZywgc3RyMzogc3RyaW5nLCBpOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAoaSkge1xuICAgICAgY2FzZSAxOiByZXR1cm4gc3RyMTtcbiAgICAgIGNhc2UgMjogcmV0dXJuIHN0cjI7XG4gICAgICBjYXNlIDM6IHJldHVybiBzdHIzO1xuICAgIH1cbiAgfVxuXG5cbn1cbiJdfQ==
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bnc3Atc3ZjL2Zvcm1kb2MtdXBsb2FkLyIsInNvdXJjZXMiOlsibGliL3VwbG9hZC9kb3dubG9hZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDO0lBR0U7SUFBZ0IsQ0FBQzs7Ozs7O0lBRWpCLHdDQUFjOzs7OztJQUFkLFVBQWUsVUFBa0IsRUFBRSxNQUFjO1FBQy9DLE9BQU8sbURBQW1ELEdBQUcsVUFBVSxHQUFHLFVBQVUsR0FBRyxNQUFNLEdBQUcsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNsSyxDQUFDOzs7Ozs7SUFFRCxnREFBc0I7Ozs7O0lBQXRCLFVBQXVCLGNBQXNCLEVBQUUsTUFBYzs7WUFDdkQsSUFBSSxHQUFhLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1FBQy9DLE9BQU8sNkRBQTZELEdBQUcsY0FBYyxHQUFHLFVBQVUsR0FBRyxNQUFNLEdBQUcsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM3SyxDQUFDOzs7Ozs7O0lBRUQsd0RBQThCOzs7Ozs7SUFBOUIsVUFBK0IsY0FBc0IsRUFBRSxNQUFjLEVBQUUsT0FBZTs7WUFDaEYsSUFBSSxHQUFhLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1FBQy9DLElBQUksT0FBTyxJQUFJLElBQUksSUFBSSxPQUFPLElBQUksRUFBRTtZQUNsQyxPQUFPLEdBQUcsYUFBYSxDQUFDO1FBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUMzQixP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QUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQztTQUNyQjtJQUNILENBQUM7O2dCQXJFRixVQUFVOzs7O0lBd0VYLHNCQUFDO0NBQUEsQUF4RUQsSUF3RUM7U0F2RVksZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRG93bmxvYWRTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIGdldERvd25sb2FkVXJsKG1ldGFkYXRhSWQ6IHN0cmluZywgcm9vdElkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gXCIvYXBpL3J1bnRpbWUvZGZzL3YxLjAvZG9jL2ZpbGVjb250ZW50P21ldGFkYXRhaWQ9XCIgKyBtZXRhZGF0YUlkICsgXCImcm9vdGlkPVwiICsgcm9vdElkICsgXCImdG9rZW49XCIgKyB0aGlzLmdldFRva2VuKHRoaXMubWVyZ2VTdHJpbmcobWV0YWRhdGFJZCwgcm9vdElkKSk7XG4gIH1cblxuICBnZXRNdWx0aXBsZURvd25sb2FkVXJsKG1ldGFkYXRhSWRMaXN0OiBzdHJpbmcsIHJvb3RJZDogc3RyaW5nKSB7XG4gICAgbGV0IGxpc3Q6IHN0cmluZ1tdID0gSlNPTi5wYXJzZShtZXRhZGF0YUlkTGlzdCk7XG4gICAgcmV0dXJuIFwiL2FwaS9ydW50aW1lL2Rmcy92MS4wL2RvYy9tdWx0aXBsZS9kb3dubG9hZD9tZXRhZGF0YWlkbGlzdD1cIiArIG1ldGFkYXRhSWRMaXN0ICsgXCImcm9vdGlkPVwiICsgcm9vdElkICsgXCImdG9rZW49XCIgKyB0aGlzLmdldFRva2VuKHRoaXMubWVyZ2VTdHJpbmcobGlzdFswXSwgcm9vdElkKSk7XG4gIH1cblxuICBnZXRNdWx0aXBsZURvd25sb2FkVXJsV2l0aE5hbWUobWV0YWRhdGFJZExpc3Q6IHN0cmluZywgcm9vdElkOiBzdHJpbmcsIHppcE5hbWU6IHN0cmluZykge1xuICAgIGxldCBsaXN0OiBzdHJpbmdbXSA9IEpTT04ucGFyc2UobWV0YWRhdGFJZExpc3QpO1xuICAgIGlmICh6aXBOYW1lID09IG51bGwgfHwgemlwTmFtZSA9PSBcIlwiKVxuICAgICAgemlwTmFtZSA9ICd1bmlmaWxlLnppcCc7XG4gICAgaWYgKCF6aXBOYW1lLmVuZHNXaXRoKFwiLnppcFwiKSlcbiAgICAgIHppcE5hbWUgKz0gJy56aXAnO1xuICAgIHJldHVybiBcIi9hcGkvcnVudGltZS9kZnMvdjEuMC9kb2MvY29tcHJlc3MvZG93bmxvYWQ/bWV0YWRhdGFpZGxpc3Q9XCIgKyBtZXRhZGF0YUlkTGlzdCArIFwiJnJvb3RpZD1cIiArIHJvb3RJZCArIFwiJnRva2VuPVwiICsgdGhpcy5nZXRUb2tlbih0aGlzLm1lcmdlU3RyaW5nKGxpc3RbMF0sIHJvb3RJZCkpICsgXCImemlwTmFtZT1cIiArIHppcE5hbWU7XG4gIH1cblxuICBnZXRIaXN0b3J5RG93bmxvYWRVcmwobWV0YWRhdGFJZDogc3RyaW5nLCByb290SWQ6IHN0cmluZywgdmVyc2lvbjogc3RyaW5nKSB7XG4gICAgLy9sZXQgbGlzdDpzdHJpbmdbXT1KU09OLnBhcnNlKG1ldGFkYXRhSWRMaXN0KTtcbiAgICByZXR1cm4gXCIvYXBpL3J1bnRpbWUvZGZzL3YxLjAvZG9jL2hpc3Rvcnljb250ZW50P21ldGFkYXRhaWQ9XCIgKyBtZXRhZGF0YUlkICsgXCImcm9vdGlkPVwiICsgcm9vdElkICsgXCImdmVyc2lvbj1cIiArIHZlcnNpb24gKyBcIiZ0b2tlbj1cIiArIHRoaXMuZ2V0VG9rZW4odGhpcy5tZXJnZVN0cmluZyhtZXRhZGF0YUlkLCByb290SWQpKTtcbiAgfVxuXG5cblxuICBwcml2YXRlIG1lcmdlU3RyaW5nKHN0cjogc3RyaW5nLCBzdHIxOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBtaW4gPSBzdHIubGVuZ3RoIDwgc3RyMS5sZW5ndGggPyBzdHIubGVuZ3RoIDogc3RyMS5sZW5ndGg7XG4gICAgbGV0IHJlczogc3RyaW5nID0gXCJcIjtcbiAgICBsZXQgaSA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IG1pbjsgaSsrKSB7XG4gICAgICByZXMgKz0gc3RyLnN1YnN0cmluZyhpLCBpICsgMSk7XG4gICAgICByZXMgKz0gc3RyMS5zdWJzdHJpbmcoaSwgaSArIDEpO1xuICAgIH1cbiAgICByZXMgKz0gc3RyLmxlbmd0aCA8IHN0cjEubGVuZ3RoID8gc3RyMS5zdWJzdHJpbmcoaSkgOiBzdHIuc3Vic3RyaW5nKGkpO1xuICAgIHJldHVybiByZXM7XG4gIH1cblxuICBwcml2YXRlIGdldFRva2VuKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgYXJyYXkgPSBbMSwgMiwgM107XG4gICAgaWYgKHN0ci5sZW5ndGggPiAyNClcbiAgICAgIHN0ciA9IHN0ci5zdWJzdHJpbmcoMCwgMjQpO1xuICAgIGxldCBsZW5ndGggPSBNYXRoLmZsb29yKHN0ci5sZW5ndGggLyAzKTtcbiAgICBsZXQgc3RyMSA9IHN0ci5zdWJzdHJpbmcoMCwgbGVuZ3RoKTtcbiAgICBsZXQgc3RyMiA9IHN0ci5zdWJzdHJpbmcobGVuZ3RoLCAyICogbGVuZ3RoKTtcbiAgICBsZXQgc3RyMyA9IHN0ci5zdWJzdHJpbmcoMiAqIGxlbmd0aCwgMyAqIGxlbmd0aCk7XG4gICAgbGV0IHJhbmRvbUFycmF5ID0gW107XG4gICAgdmFyIHJhbmRvbSA9IE1hdGguY2VpbChNYXRoLnJhbmRvbSgpICogMyk7XG4gICAgcmFuZG9tQXJyYXkucHVzaChhcnJheVtyYW5kb20gLSAxXSk7XG4gICAgYXJyYXkuc3BsaWNlKHJhbmRvbSAtIDEsIDEpO1xuICAgIHJhbmRvbSA9IE1hdGguY2VpbChNYXRoLnJhbmRvbSgpICogMik7XG4gICAgcmFuZG9tQXJyYXkucHVzaChhcnJheVtyYW5kb20gLSAxXSk7XG4gICAgYXJyYXkuc3BsaWNlKHJhbmRvbSAtIDEsIDEpO1xuICAgIHJhbmRvbUFycmF5LnB1c2goYXJyYXlbMF0pO1xuICAgIGxldCB0aW1lU3RhbXA6IHN0cmluZyA9IE1hdGgucm91bmQobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSArIFwiXCI7XG5cbiAgICByZXR1cm4gdGltZVN0YW1wLnN1YnN0cmluZygwLCA1KSArIFwidGltZXNcIiArIHJhbmRvbUFycmF5WzBdICsgXCJcIiArIHJhbmRvbUFycmF5WzFdICsgXCJcIiArIHJhbmRvbUFycmF5WzJdICsgdGhpcy5zd2l0Y2hTdHIoc3RyMSwgc3RyMiwgc3RyMywgcmFuZG9tQXJyYXlbMF0pICsgdGhpcy5zd2l0Y2hTdHIoc3RyMSwgc3RyMiwgc3RyMywgcmFuZG9tQXJyYXlbMV0pICsgdGhpcy5zd2l0Y2hTdHIoc3RyMSwgc3RyMiwgc3RyMywgcmFuZG9tQXJyYXlbMl0pICsgXCJ0aW1lc1wiICsgdGltZVN0YW1wLnN1YnN0cmluZyg1KTtcbiAgfVxuXG4gIHByaXZhdGUgc3dpdGNoU3RyKHN0cjE6IHN0cmluZywgc3RyMjogc3RyaW5nLCBzdHIzOiBzdHJpbmcsIGk6IG51bWJlcik6IHN0cmluZyB7XG4gICAgc3dpdGNoIChpKSB7XG4gICAgICBjYXNlIDE6IHJldHVybiBzdHIxO1xuICAgICAgY2FzZSAyOiByZXR1cm4gc3RyMjtcbiAgICAgIGNhc2UgMzogcmV0dXJuIHN0cjM7XG4gICAgfVxuICB9XG5cblxufVxuIl19