New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@ambl-on/lcu-ambl-on-common

Package Overview
Dependencies
Maintainers
2
Versions
420
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ambl-on/lcu-ambl-on-common - npm Package Compare versions

Comparing version 0.1.323-my-atlas to 0.1.324-my-atlas

67

esm2015/lib/services/map.service.js

@@ -151,43 +151,8 @@ /**

UpdateVisibleLocations(list) {
this.VisibleLocations = list;
//this.primaryMap.title = "Testing";
//console.log("visible locations updated: ", list);
this.VisibleLocations = this.CheckForDuplicates(list);
if (this.VisibleLocations.length > 0) {
this.UpdateLegendLocations(this.VisibleLocations);
}
// this.LegendLocations = this.VisibleLocations;
// if(this.VisibleLocations !== this.LegendLocations){
// console.log("Updating legend")
// this.AddToLegendLocations(list);
// }
}
// public AddToLegendLocations(visLoc: Array<MapMarker>) {
// //console.log("visLoc = ", visLoc);
// for (let i = 0; i < visLoc.length; i++) {
// let tempId = visLoc[i].id;
// if (this.LegendLocations.filter(item => item.id === tempId).length === 0) {
// this.LegendLocations.push(visLoc[i]);
// }
// else {
// this.CheckInfo(visLoc[i]);
// }
// }
// //console.log("added to LegendArray ", this.LegendLocations);
// this.UpdateLegendLocations(this.LegendLocations);
// //this.UpdateVisibleLocations(this.LegendLocations);
// }
/**
* Checks to insure that the location displayed in the legend matches that of the visible locations
*
* @param marker
*/
// public CheckInfo(marker: MapMarker) {
// let tempMarker = this.LegendLocations.filter(item => item.id === marker.id);
// let index = this.LegendLocations.indexOf(tempMarker[0]);
// //console.log("index = ", index);
// //console.log("tempMarker = ", tempMarker);
// //console.log("marker = ", marker);
// this.LegendLocations[index] = marker;
// }
/**
* Updates the legend array

@@ -198,26 +163,4 @@ * @param {?} list

UpdateLegendLocations(list) {
console.log("master list length", this.tempStorage.GetMasterLocationLegend().length);
console.log("Visible locations", this.VisibleLocations);
if (this.tempStorage.GetMasterLocationLegend().length === 0) {
this.LegendLocations = this.VisibleLocations;
}
else {
/** @type {?} */
let temp = new Array();
list = this.CheckForDuplicates(list);
for (let i = 0; i < list.length; i++) {
/** @type {?} */
let tempMarker = this.tempStorage.GetLocationById(list[i].id);
// console.log("tempMarker = ", tempMarker);
if (tempMarker) {
//console.log("pushing in if");
temp.push(tempMarker);
}
else {
//console.log("pushing in else");
temp.push(list[i]);
}
}
this.LegendLocations = temp;
}
//console.log("Visible locations", this.VisibleLocations);
this.LegendLocations = list;
}

@@ -229,2 +172,3 @@ /**

CheckForDuplicates(list) {
//console.log("Checking for duplicates in: ", list);
/** @type {?} */

@@ -249,2 +193,3 @@ let temp = new Array();

}));
//console.log("unique ids length = ", idsUnique.length);
for (let i = 0; i < idsUnique.length; i++) {

@@ -448,2 +393,2 @@ /** @type {?} */

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYW1ibC1vbi9sY3UtYW1ibC1vbi1jb21tb24vIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvbWFwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQUsxRCxNQUFNLE9BQU8sVUFBVTs7Ozs7O0lBaURyQixZQUFzQixXQUErQixFQUFZLFNBQXlCO1FBQXBFLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUFZLGNBQVMsR0FBVCxTQUFTLENBQWdCOzs7OztRQTlCbkYsZ0JBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7Ozs7UUFVcEcsa0JBQWEsR0FBc0IsSUFBSSxPQUFPLEVBQVksQ0FBQztRQUUzRCwyQkFBc0IsR0FBdUIsSUFBSSxPQUFPLEVBQWEsQ0FBQzs7OztRQUt0RSxxQkFBZ0IsR0FBcUIsRUFBRSxDQUFDO1FBRXhDLG9CQUFlLEdBQUcsRUFBRSxDQUFDOzs7O1FBT3JCLGVBQVUsR0FBaUIsU0FBUyxDQUFDLG1CQUFtQixDQUFDO1FBSzlELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElB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Q2hELENBQUM7Ozs7Ozs7Ozs7Ozs7SUFZUyxvQkFBb0IsQ0FBQyxFQUFVO1FBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDLE1BQU07Ozs7UUFBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OztZQTdWRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs7WUFMUSxrQkFBa0I7WUFDbEIsY0FBYzs7Ozs7Ozs7O0lBWXJCLGdDQUFvQzs7Ozs7O0lBS3BDLDZCQUF3Qzs7Ozs7SUFPeEMsaUNBQTJHOzs7OztJQUszRyxnQ0FBK0M7Ozs7O0lBSy9DLG1DQUFrRTs7SUFFbEUsNENBQTZFOzs7OztJQUs3RSxzQ0FBK0M7O0lBRS9DLHFDQUE0Qjs7SUFFNUIsbUNBQWdEOzs7OztJQUtoRCxnQ0FBZ0U7Ozs7O0lBSXBELGlDQUF5Qzs7Ozs7SUFBRSwrQkFBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSW5kaXZpZHVhbE1hcCwgTWFya2VySW5mbywgTWFwTWFya2VyIH0gZnJvbSAnQGxvd2NvZGV1bml0L2xjdS1tYXAtY29tbW9uJztcclxuaW1wb3J0IHsgVGh1bWJuYWlsTGlzdE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3RodW1ibmFpbC1saXN0Lm1vZGVsJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi91dGlscy9jb25zdGFudHMvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgVGVtcFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi90ZW1wLnN0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IExvY2F0aW9uTG9hZGVyIH0gZnJvbSAnLi4vdXRpbHMvbG9jYXRpb24tbG9hZGVyJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hcFNlcnZpY2Uge1xyXG5cclxuICAvLyBGSUVMRFNcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHByaW1hcnkgbWFwIHRvIGJlIGRpc3BsYXllZCAtIHJlcHJlc2VudHMgdGhlIGN1cnJlbnQgbWFwIGJlaW5nIGRpc3BsYXllZFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBwcmltYXJ5TWFwOiBJbmRpdmlkdWFsTWFwO1xyXG5cclxuICAvKipcclxuICAgKiBMaXN0IG9mIHNlY29uZGFyeSBtYXBzIGF2YWlsYWJsZSB0byBjaG9vc2UgYXMgcHJpbWFyeSBhbmQgYWxzbyBmb3IgdXNlIGFzIGxheWVycyBpbiB0aGUgcHJpbWFyeSBtYXBcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgbWFwTGlzdDogQXJyYXk8SW5kaXZpZHVhbE1hcD47XHJcblxyXG4gIC8vIFBST1BFUlRJRVNcclxuXHJcbiAgLyoqXHJcbiAgICogQ3VyYXRlZCBsaXN0IG9mIGFtYmxfb24gbG9jYXRpb24gbWFya2Vyc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBDdXJhdGVkTGlzdCA9IHRoaXMubG9jTG9hZGVyLkNyZWF0ZUxheWVyKENvbnN0YW50cy5MT0NBVElPTlNfVE9fTE9BRCwgQ29uc3RhbnRzLk1BUF9DT05GSUdfVE9fTE9BRCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIG5ldyBwcmltYXJ5IG1hcCBhbnkgdGltZSB0aGUgbWFwcyAocHJpbWFyeSBhbmQgc2Vjb25kYXJ5KSBhcmUgY2hhbmdlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBNYXBDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8SW5kaXZpZHVhbE1hcD47XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YmplY3QgdGhhdCBlbWl0cyBsYXQvbG5nIGZvciBtYXAgcGFubmluZ1xyXG4gICAqL1xyXG4gIHB1YmxpYyBMYXRMbmdFbWl0dGVyOiBTdWJqZWN0PG51bWJlcltdPiA9IG5ldyBTdWJqZWN0PG51bWJlcltdPigpO1xyXG5cclxuICBwdWJsaWMgQmFzaWNJbmZvV2luZG93RW1pdHRlcjogU3ViamVjdDxNYXBNYXJrZXI+ID0gbmV3IFN1YmplY3Q8TWFwTWFya2VyPigpO1xyXG5cclxuICAvKipcclxuICAgKiBMaXN0IG9mIGFjdGl2ZSBzZWNvbmRhcnkgbG9jYXRpb25zIHdoaWNoIGFyZSBjdXJyZW50bHkgZGlzcGxheWVkIG9uIHRoZSBjdXJyZW50IG1hcFxyXG4gICAqL1xyXG4gIHB1YmxpYyBWaXNpYmxlTG9jYXRpb25zOiBBcnJheTxNYXBNYXJrZXI+ID0gW107XHJcblxyXG4gIHB1YmxpYyBMZWdlbmRMb2NhdGlvbnMgPSBbXTtcclxuXHJcbiAgcHVibGljIFRodW1ibmFpbExpc3Q6IEFycmF5PFRodW1ibmFpbExpc3RNb2RlbD47XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBsaXN0IG9mIGF2YWlsYWJsZSBtYXJrZXJzIGZvciB1c2UgaW4gdGhlIG1hcFxyXG4gICAqL1xyXG4gIHB1YmxpYyBNYXJrZXJMaXN0OiBNYXJrZXJJbmZvW10gPSBDb25zdGFudHMuREVGQVVMVF9NQVJLRVJfSU5GTztcclxuXHJcbiAgLy8gQ09OU1RSVUNUT1JTXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCB0ZW1wU3RvcmFnZTogVGVtcFN0b3JhZ2VTZXJ2aWNlLCBwcm90ZWN0ZWQgbG9jTG9hZGVyOiBMb2NhdGlvbkxvYWRlcikge1xyXG4gICAgdGhpcy5wcmltYXJ5TWFwID0gdGhpcy50ZW1wU3RvcmFnZS5HZXRMYXN0VXNlZElkKCkgIT09ICcnID8gdGhpcy50ZW1wU3RvcmFnZS5HZXRNYXBCeUlkKHRoaXMudGVtcFN0b3JhZ2UuR2V0TGFzdFVzZWRJZCgpKSA6IHRoaXMudGVtcFN0b3JhZ2UuR2V0TWFwTGlzdCgpWzBdO1xyXG4gICAgdGhpcy5tYXBMaXN0ID0gdGhpcy50ZW1wU3RvcmFnZS5HZXRNYXBMaXN0KCkuZmlsdGVyKG1hcCA9PiBtYXAuaWQgIT09IHRoaXMucHJpbWFyeU1hcC5pZCk7XHJcbiAgICB0aGlzLk1hcENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEluZGl2aWR1YWxNYXA+KCk7XHJcbiAgICAvL2NvbnNvbGUubG9nKFwiY29uc3RydWN0b3IgY2FsbGVkXCIpO1xyXG4gIH1cclxuXHJcbiAgLy8gTElGRSBDWUNMRVxyXG5cclxuICAvLyBBUEkgTUVUSE9EU1xyXG5cclxuICBwdWJsaWMgR2V0TGVnZW5kTG9jYXRpb25zKCkge1xyXG4gICAgLy90aGlzLkxlZ2VuZExvY2F0aW9ucyA9IHRoaXMudGVtcFN0b3JhZ2UuR2V0TG9jYXRpb25MZWdlbmQoKTtcclxuICAgIHJldHVybiB0aGlzLkxlZ2VuZExvY2F0aW9ucztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhpcyBtYXBsaXN0IGxpc3Qgb2YgdGh1bWJuYWlscyBhbmQgdGhlaXIgaW5mb1xyXG4gICAqL1xyXG4gIHB1YmxpYyBHZXRUaHVtYm5haWxMaXN0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuVGh1bWJuYWlsTGlzdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHByaW1hcnkgbWFwIHRvIGJlIGRpc3BsYXllZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBHZXRQcmltYXJ5TWFwKCk6IEluZGl2aWR1YWxNYXAge1xyXG4gICAgcmV0dXJuIHRoaXMucHJpbWFyeU1hcDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGxpc3Qgb2Ygc2Vjb25kYXJ5IChub24tcHJpbWFyeSkgbWFwc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBHZXRNYXBMaXN0KCk6IEFycmF5PEluZGl2aWR1YWxNYXA+IHtcclxuICAgIC8vIHJldHVybiB0aGlzLm1hcExpc3Q7XHJcbiAgICByZXR1cm4gdGhpcy5tYXBMaXN0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRoZSBtYXBzIGluIHRoZSBkYlxyXG4gICAqL1xyXG4gIHB1YmxpYyBHZXRBbGxNYXBzKCk6IEFycmF5PEluZGl2aWR1YWxNYXA+IHtcclxuICAgIHJldHVybiB0aGlzLnRlbXBTdG9yYWdlLkdldE1hcExpc3QoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIG1hcCB0byByZXRyaWV2ZVxyXG4gICAqIFxyXG4gICAqIFJldHVybnMgYSBzcGVjaWZpYyBtYXAgd2l0aCBhIHNwZWNpZmljIGlkXHJcbiAgICovXHJcbiAgcHVibGljIEdldE1hcEJ5SWQoaWQpOiBJbmRpdmlkdWFsTWFwIHtcclxuICAgIHJldHVybiB0aGlzLm1hcExpc3QuZmluZChtYXAgPT4gbWFwLmlkID09PSBpZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBtYXJrZXJzIGZvciB1c2UgaW4gbWFwXHJcbiAgICogXHJcbiAgICogVGhpcyB3aWxsIGNhbGwgYSBiYWNrIGVuZCBzZXJ2aWNlIGV2ZW50dWFsbHkgYW5kIHRoZW4gZm9ybWF0IHRoZSByZXN1bHRzIGFjY29yZGluZ2x5XHJcbiAgICovXHJcbiAgcHVibGljIEdldE1hcmtlckxpc3QoKTogTWFya2VySW5mb1tdIHtcclxuICAgIHJldHVybiB0aGlzLk1hcmtlckxpc3Q7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gbWFwIFRoZSBtYXAgdG8gYWRkXHJcbiAgICogXHJcbiAgICogQWRkcyB0aGUgbWFwIHRvIHRoZSBtYXAgYXJyYXlcclxuICAgKi9cclxuICBwdWJsaWMgQWRkTWFwKG1hcCk6IHZvaWQge1xyXG4gICAgdGhpcy50ZW1wU3RvcmFnZS5BZGRNYXBUb0xpc3QobWFwKTtcclxuICAgIHRoaXMuc2V0TWFwc1dpdGhQcmltYXJ5SWQobWFwLmlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBsYXQgVGhlIGxhdGl0dWRlIHRvIHBhbiB0b1xyXG4gICAqIEBwYXJhbSBsbmcgVGhlIGxvbmdpdHVkZSB0byBwYW4gdG9cclxuICAgKiBcclxuICAgKiBUYWtlcyBhIGxhdC9sbmcgYW5kIGVtaXRzIGV2ZW50IGZvciBtYXAgdG8gbGlzdGVuIHRvXHJcbiAgICovXHJcbiAgcHVibGljIENoYW5nZUxhdExuZyhsYXQsIGxuZyk6IHZvaWQge1xyXG4gICAgdGhpcy5MYXRMbmdFbWl0dGVyLm5leHQoW2xhdCwgbG5nXSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBwYXJhbSBtYXJrZXJcclxuICAgKiBcclxuICAgKiBUYWtlcyBhIG1hcmtlciBmcm9tIHRoZSBsZWdlbmQgYW5kIHNlbmQgdG8gbGN1LW1hcFxyXG4gICAqL1xyXG4gIHB1YmxpYyBEaXNwbGF5QmFzaWNJbmZvKG1hcmtlcjogTWFwTWFya2VyKTogdm9pZCB7XHJcbiAgICB0aGlzLkJhc2ljSW5mb1dpbmRvd0VtaXR0ZXIubmV4dChtYXJrZXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGxpc3QgVGhlIGxpc3Qgb2YgdmlzaWJsZSBsb2NhdGlvbnNcclxuICAgKiBcclxuICAgKiBXaGVuIG1hcCB1cGRhdGVzIHRoZSB2aXNpYmxlIGxvY2F0aW9ucywgdGhpcy5WaXNpYmxlTG9jYXRpb25zIHdpbGwgYmUgdXBkYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBVcGRhdGVWaXNpYmxlTG9jYXRpb25zKGxpc3QpOiB2b2lkIHtcclxuICAgIHRoaXMuVmlzaWJsZUxvY2F0aW9ucyA9IGxpc3Q7XHJcbiAgICAvL3RoaXMucHJpbWFyeU1hcC50aXRsZSA9IFwiVGVzdGluZ1wiO1xyXG4gICAgLy9jb25zb2xlLmxvZyhcInZpc2libGUgbG9jYXRpb25zIHVwZGF0ZWQ6IFwiLCBsaXN0KTtcclxuICAgIGlmICh0aGlzLlZpc2libGVMb2NhdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLlVwZGF0ZUxlZ2VuZExvY2F0aW9ucyh0aGlzLlZpc2libGVMb2NhdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoaXMuTGVnZW5kTG9jYXRpb25zID0gdGhpcy5WaXNpYmxlTG9jYXRpb25zO1xyXG4gICAgLy8gaWYodGhpcy5WaXNpYmxlTG9jYXRpb25zICE9PSB0aGlzLkxlZ2VuZExvY2F0aW9ucyl7XHJcbiAgICAvLyAgIGNvbnNvbGUubG9nKFwiVXBkYXRpbmcgbGVnZW5kXCIpXHJcbiAgICAvLyAgIHRoaXMuQWRkVG9MZWdlbmRMb2NhdGlvbnMobGlzdCk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICAvLyBwdWJsaWMgQWRkVG9MZWdlbmRMb2NhdGlvbnModmlzTG9jOiBBcnJheTxNYXBNYXJrZXI+KSB7XHJcbiAgLy8gICAvL2NvbnNvbGUubG9nKFwidmlzTG9jID0gXCIsIHZpc0xvYyk7XHJcbiAgLy8gICBmb3IgKGxldCBpID0gMDsgaSA8IHZpc0xvYy5sZW5ndGg7IGkrKykge1xyXG4gIC8vICAgICBsZXQgdGVtcElkID0gdmlzTG9jW2ldLmlkO1xyXG4gIC8vICAgICBpZiAodGhpcy5MZWdlbmRMb2NhdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pZCA9PT0gdGVtcElkKS5sZW5ndGggPT09IDApIHtcclxuICAvLyAgICAgICB0aGlzLkxlZ2VuZExvY2F0aW9ucy5wdXNoKHZpc0xvY1tpXSk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgZWxzZSB7XHJcbiAgLy8gICAgICAgdGhpcy5DaGVja0luZm8odmlzTG9jW2ldKTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfVxyXG4gIC8vICAgLy9jb25zb2xlLmxvZyhcImFkZGVkIHRvIExlZ2VuZEFycmF5IFwiLCB0aGlzLkxlZ2VuZExvY2F0aW9ucyk7XHJcbiAgLy8gICB0aGlzLlVwZGF0ZUxlZ2VuZExvY2F0aW9ucyh0aGlzLkxlZ2VuZExvY2F0aW9ucyk7XHJcbiAgLy8gICAvL3RoaXMuVXBkYXRlVmlzaWJsZUxvY2F0aW9ucyh0aGlzLkxlZ2VuZExvY2F0aW9ucyk7XHJcbiAgLy8gfVxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyB0byBpbnN1cmUgdGhhdCB0aGUgbG9jYXRpb24gZGlzcGxheWVkIGluIHRoZSBsZWdlbmQgbWF0Y2hlcyB0aGF0IG9mIHRoZSB2aXNpYmxlIGxvY2F0aW9uc1xyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBtYXJrZXJcclxuICAgKi9cclxuICAvLyBwdWJsaWMgQ2hlY2tJbmZvKG1hcmtlcjogTWFwTWFya2VyKSB7XHJcbiAgLy8gICBsZXQgdGVtcE1hcmtlciA9IHRoaXMuTGVnZW5kTG9jYXRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0uaWQgPT09IG1hcmtlci5pZCk7XHJcbiAgLy8gICBsZXQgaW5kZXggPSB0aGlzLkxlZ2VuZExvY2F0aW9ucy5pbmRleE9mKHRlbXBNYXJrZXJbMF0pO1xyXG4gIC8vICAgLy9jb25zb2xlLmxvZyhcImluZGV4ID0gXCIsIGluZGV4KTtcclxuICAvLyAgIC8vY29uc29sZS5sb2coXCJ0ZW1wTWFya2VyID0gXCIsIHRlbXBNYXJrZXIpO1xyXG4gIC8vICAgLy9jb25zb2xlLmxvZyhcIm1hcmtlciA9IFwiLCBtYXJrZXIpO1xyXG4gIC8vICAgdGhpcy5MZWdlbmRMb2NhdGlvbnNbaW5kZXhdID0gbWFya2VyO1xyXG4gIC8vIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyB0aGUgbGVnZW5kIGFycmF5XHJcbiAgICogQHBhcmFtIGxpc3QgXHJcbiAgICovXHJcbiAgcHVibGljIFVwZGF0ZUxlZ2VuZExvY2F0aW9ucyhsaXN0KTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZyhcIm1hc3RlciBsaXN0IGxlbmd0aFwiLHRoaXMudGVtcFN0b3JhZ2UuR2V0TWFzdGVyTG9jYXRpb25MZWdlbmQoKS5sZW5ndGgpO1xyXG4gICAgY29uc29sZS5sb2coXCJWaXNpYmxlIGxvY2F0aW9uc1wiLCB0aGlzLlZpc2libGVMb2NhdGlvbnMpO1xyXG4gICAgaWYgKHRoaXMudGVtcFN0b3JhZ2UuR2V0TWFzdGVyTG9jYXRpb25MZWdlbmQoKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5MZWdlbmRMb2NhdGlvbnMgPSB0aGlzLlZpc2libGVMb2NhdGlvbnM7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IHRlbXA6IEFycmF5PE1hcE1hcmtlcj4gPSBuZXcgQXJyYXk8TWFwTWFya2VyPigpO1xyXG4gICAgICBsaXN0ID0gdGhpcy5DaGVja0ZvckR1cGxpY2F0ZXMobGlzdCk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCB0ZW1wTWFya2VyOiBNYXBNYXJrZXIgPSB0aGlzLnRlbXBTdG9yYWdlLkdldExvY2F0aW9uQnlJZChsaXN0W2ldLmlkKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcInRlbXBNYXJrZXIgPSBcIiwgdGVtcE1hcmtlcik7XHJcbiAgICAgICAgaWYgKHRlbXBNYXJrZXIpIHtcclxuICAgICAgICAgIC8vY29uc29sZS5sb2coXCJwdXNoaW5nIGluIGlmXCIpO1xyXG4gICAgICAgICAgdGVtcC5wdXNoKHRlbXBNYXJrZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIC8vY29uc29sZS5sb2coXCJwdXNoaW5nIGluIGVsc2VcIik7XHJcbiAgICAgICAgICB0ZW1wLnB1c2gobGlzdFtpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuTGVnZW5kTG9jYXRpb25zID0gdGVtcDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIENoZWNrRm9yRHVwbGljYXRlcyhsaXN0OiBBcnJheTxNYXBNYXJrZXI+KTogQXJyYXk8TWFwTWFya2VyPiB7XHJcbiAgICBsZXQgdGVtcDogQXJyYXk8TWFwTWFya2VyPiA9IG5ldyBBcnJheTxNYXBNYXJrZXI+KCk7XHJcblxyXG4gICAgbGV0IGlkcyA9IGxpc3QubWFwKGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgIHJldHVybiBpdGVtLmlkO1xyXG4gICAgfSk7XHJcbiAgICBsZXQgaWRzVW5pcXVlID0gaWRzLmZpbHRlcihmdW5jdGlvbihpdGVtLCBpbmRleCl7XHJcbiAgICAgIHJldHVybiBpZHMuaW5kZXhPZihpdGVtKSA+PSBpbmRleDtcclxuICAgIH0pO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaWRzVW5pcXVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCB0ZW1wTWFya2VyID0gdGhpcy50ZW1wU3RvcmFnZS5HZXRMb2NhdGlvbkJ5SWQoaWRzVW5pcXVlW2ldKTtcclxuICAgICAgLy9pZiBpdHMgaW4gdGhlIG1hc3Rlcmxpc3RcclxuICAgICAgaWYodGVtcE1hcmtlcil7XHJcbiAgICAgICAgdGVtcC5wdXNoKHRlbXBNYXJrZXIpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vaWYgaXRzIG5vdCBpbiB0aGUgbWFzdGVybGlzdFxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHRlbXAucHVzaChsaXN0LmZpbHRlcihpdGVtPT4gaXRlbS5pZCA9PT0gaWRzVW5pcXVlW2ldKVswXSk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICB9XHJcbiAgICAvL2NvbnNvbGUubG9nKFwiQ2hlY2tlZCBmb3IgZHVwbGljYXRlc1wiLCB0ZW1wKTtcclxuICAgIHJldHVybiB0ZW1wXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gbGlzdCBzYXZlcyB0aGUgbGVnZW5kIHRvIGxvY2FsIHN0b3JhZ2VcclxuICAgKi9cclxuICBwdWJsaWMgU2F2ZUxlZ2VuZExvY2F0aW9ucyhsaXN0KTogdm9pZCB7XHJcbiAgICB0aGlzLnRlbXBTdG9yYWdlLlNhdmVMb2NhdGlvbkxlZ2VuZChsaXN0KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBtYXAgVGhlIG1hcCB0byByZXBsYWNlIHRoZSBvbmxkIG9uZSB3aXRoXHJcbiAgICogXHJcbiAgICogVGhpcyByZXBsYWNlcyB0aGUgbWFwIGluIHRoZSBkYiB3aXRoIHRoZSBtYXAgKGJhc2VkIG9uIGlkKVxyXG4gICAqL1xyXG4gIHB1YmxpYyBSZXBsYWNlTWFwKG1hcDogSW5kaXZpZHVhbE1hcCk6IHZvaWQge1xyXG4gICAgdGhpcy50ZW1wU3RvcmFnZS5SZXBsYWNlTWFwKG1hcCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gTGlzdE9mTWFwcyBUaGUgbGlzdCBvZiBtYXBzIHRoYXQgeW91IHdvdWxkIGxpa2UgdG8gZ2V0IHRoZSB0aHVtYm5haWxzIGFuZCBvdGhlciBpbmZvIGZvclxyXG4gICAqIFxyXG4gICAqIGEgdGh1bWJuYWlsIGxpc3QgY29udGFpbnMgdGhlIGltZyB1cmwsIHRoZSB0aXRsZSBvZiB0aGUgbWFwLCBhbmQgdGhlIGxhdCBhbmQgbG9uZyBvZiB0aGUgb3JnaW5cclxuICAgKiBcclxuICAgKi9cclxuICBwdWJsaWMgQnVpbGRUaHVtYm5haWxMaXN0KExpc3RPZk1hcHM6IEFycmF5PEluZGl2aWR1YWxNYXA+KTogQXJyYXk8VGh1bWJuYWlsTGlzdE1vZGVsPiB7XHJcbiAgICB2YXIgdGVtcFRodW1ibmFpbExpc3QgPSBuZXcgQXJyYXk8VGh1bWJuYWlsTGlzdE1vZGVsPigpO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBMaXN0T2ZNYXBzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHZhciB0ZW1wID0gbmV3IFRodW1ibmFpbExpc3RNb2RlbChMaXN0T2ZNYXBzW2ldLCB0aGlzLmdldE1hcFRodW1ibmFpbChMaXN0T2ZNYXBzW2ldLCAyMDAsIDIwMCksIExpc3RPZk1hcHNbaV0udGl0bGUsIExpc3RPZk1hcHNbaV0ub3JpZ2luLmxhdCwgTGlzdE9mTWFwc1tpXS5vcmlnaW4ubG5nKTtcclxuICAgICAgdGVtcFRodW1ibmFpbExpc3QucHVzaCh0ZW1wKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBzb3J0cyBiYXNlZCBvbiB0aGUgVGl0bGUgb2YgdGhlIG1hcCBzbyB0aGUgdGh1bWJuYWlsIGxpc3QgaXMgaW4gYWxwaGFiZXRpY2FsIG9yZGVyXHJcbiAgICAgKi9cclxuICAgIHRlbXBUaHVtYm5haWxMaXN0LnNvcnQoKHQxLCB0MikgPT4ge1xyXG4gICAgICByZXR1cm4gdDEuVGl0bGUudG9VcHBlckNhc2UoKSA+IHQyLlRpdGxlLnRvVXBwZXJDYXNlKCkgPyAxIDogLTE7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0ZW1wVGh1bWJuYWlsTGlzdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIG5ldyBwcmltYXJ5IG1hcFxyXG4gICAqIFxyXG4gICAqIENhbGxzIHRoZSBwcm90ZWN0ZWQgbWV0aG9kIFwic2V0TWFwc1dpdGhQcmltYXJ5SWRcIlxyXG4gICAqL1xyXG4gIHB1YmxpYyBQcmltYXJ5TWFwQ2hhbmdlZChpZCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRNYXBzV2l0aFByaW1hcnlJZChpZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGVzIGFsbCB0aGUgbWFwcyBmcm9tIHRoZSBkYiAoZm9yIHRlc3RpbmcgcHVycG9zZXMgb25seSlcclxuICAgKi9cclxuICBwdWJsaWMgRGVsZXRlTWFwcygpOiB2b2lkIHtcclxuICAgIHRoaXMudGVtcFN0b3JhZ2UuRGVsZXRlTWFwTGlzdCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gKiBDdXJhdGVkIGxpc3Qgb2YgYW1ibF9vbiBsb2NhdGlvbiBtYXJrZXJzXHJcbiAqL1xyXG4gIHB1YmxpYyBHZXRDdXJhdGVkTGlzdCgpIHtcclxuICAgIHJldHVybiB0aGlzLmxvY0xvYWRlci5DcmVhdGVMYXllcihDb25zdGFudHMuSlNPTl9EQVRBX0ZPUl9MT0NBVElPTl9DT05WRVJTSU9OLCBDb25zdGFudHMuTUFQX0NPTkZJR19UT19MT0FEKTtcclxuICB9XHJcbiAgLy8gSEVMUEVSU1xyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSBtYXAgVGhlIG1hcCBjb25maWd1cmF0aW9uIGZyb20gd2hpY2ggeW91IHdhbnQgdG8gY3JlYXRlIGEgdGh1bWJuYWlsXHJcbiAgICogQHBhcmFtIHdpZHRoIE9wdGlvbmFsIHdpZHRoIHBhcmFtZXRlciAobXVzdCBhbHNvIGluY2x1ZGUgaGVpZ3RoKVxyXG4gICAqIEBwYXJhbSBoZWlnaHQgT3B0aW9uYWwgaGVpZ2h0IHBhcmFtZXRlciAobXVzdCBhbHNvIGluY2x1ZGUgd2lkdGgpXHJcbiAgICpcclxuICAgKiBUYWtlcyBhIG1hcCBjb25maWd1cmF0aW9uIGZpbGUgYW5kIHJldHVybnMgYSBnb29nbGUgbWFwcyBzdGF0aWMgbWFwIHRvIGJlIHVzZWQgYXMgYSB0aHVtYm5haWxcclxuICAgKlxyXG4gICAqIEluIG9yZGVyIHRvIHNwZWNpZnkgaGVpZ2h0IGFuZCB3aWR0aCwgeW91IG11c3Qgc3BlY2lmeSBCT1RILCBvdGhlcndpc2UsIHRoZSBkZWZhdWx0IGlzIDMwMHgzMDBcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZ2V0TWFwVGh1bWJuYWlsKG1hcDogSW5kaXZpZHVhbE1hcCwgd2lkdGg/LCBoZWlnaHQ/KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgaHR0cHM6Ly9tYXBzLmdvb2dsZWFwaXMuY29tL21hcHMvYXBpL3N0YXRpY21hcD9jZW50ZXI9JHttYXAub3JpZ2luLmxhdH0sJHttYXAub3JpZ2luLmxuZ31cclxuICAgICZ6b29tPSR7bWFwLnpvb20gLSAyfVxyXG4gICAgJnNpemU9JHtoZWlnaHQgJiYgd2lkdGggPyB3aWR0aCA6IDMwMH14JHtoZWlnaHQgJiYgd2lkdGggPyBoZWlnaHQgOiAzMDB9XHJcbiAgICAma2V5PUFJemFTeUFzS2g0X1RYcFlWNTdTQnM3ajNiNnFGY0pVRzZmTkhvVWA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIG5ldyBwcmltYXJ5IG1hcFxyXG4gICAqXHJcbiAgICogU2V0cyB0aGUgcHJpbWFyeSBtYXAgdG8gdGhhdCB3aXRoIHRoZSBwYXNzZWQgaWQsXHJcbiAgICpcclxuICAgKiBTZXRzIHRoZSBzZWNvbmRhcnkgbWFwcyB0byBhIGxpc3Qgb2YgYWxsIHRoZSBtYXBzIG1pbnVzIHRoYXQgd2l0aCB0aGUgcGFzc2VkIGlkXHJcbiAgICpcclxuICAgKiBFbWl0cyB0aGUgbmV3IHByaW1hcnkgbWFwXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHNldE1hcHNXaXRoUHJpbWFyeUlkKGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMudGVtcFN0b3JhZ2UuU2V0TGFzdFVzZWRJZChpZCk7XHJcbiAgICB0aGlzLnByaW1hcnlNYXAgPSB0aGlzLnRlbXBTdG9yYWdlLkdldE1hcEJ5SWQoaWQpO1xyXG4gICAgdGhpcy5tYXBMaXN0ID0gdGhpcy50ZW1wU3RvcmFnZS5HZXRNYXBMaXN0KCkuZmlsdGVyKG1hcCA9PiBtYXAuaWQgIT09IGlkKTtcclxuICAgIHRoaXMuTWFwQ2hhbmdlZC5lbWl0KHRoaXMucHJpbWFyeU1hcCk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYW1ibC1vbi9sY3UtYW1ibC1vbi1jb21tb24vIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvbWFwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQUsxRCxNQUFNLE9BQU8sVUFBVTs7Ozs7O0lBaURyQixZQUFzQixXQUErQixFQUFZLFNBQXlCO1FBQXBFLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUFZLGNBQVMsR0FBVCxTQUFTLENBQWdCOzs7OztRQTlCbkYsZ0JBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7Ozs7UUFVcEcsa0JBQWEsR0FBc0IsSUFBSSxPQUFPLEVBQVksQ0FBQztRQUUzRCwyQkFBc0IsR0FBdUIsSUFBSSxPQUFPLEVBQWEsQ0FBQzs7OztRQUt0RSxxQkFBZ0IsR0FBcUIsRUFBRSxDQUFDO1FBRXhDLG9CQUFlLEdBQUcsRUFBRSxDQUFDOzs7O1FBT3JCLGVBQVUsR0FBaUIsU0FBUyxDQUFDLG1CQUFtQixDQUFDO1FBSzlELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElB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LENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRztpREFDMUIsQ0FBQztJQUNoRCxDQUFDOzs7Ozs7Ozs7Ozs7O0lBWVMsb0JBQW9CLENBQUMsRUFBVTtRQUN2QyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNOzs7O1FBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4QyxDQUFDOzs7WUF2U0YsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7O1lBTFEsa0JBQWtCO1lBQ2xCLGNBQWM7Ozs7Ozs7OztJQVlyQixnQ0FBb0M7Ozs7OztJQUtwQyw2QkFBd0M7Ozs7O0lBT3hDLGlDQUEyRzs7Ozs7SUFLM0csZ0NBQStDOzs7OztJQUsvQyxtQ0FBa0U7O0lBRWxFLDRDQUE2RTs7Ozs7SUFLN0Usc0NBQStDOztJQUUvQyxxQ0FBNEI7O0lBRTVCLG1DQUFnRDs7Ozs7SUFLaEQsZ0NBQWdFOzs7OztJQUlwRCxpQ0FBeUM7Ozs7O0lBQUUsK0JBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEluZGl2aWR1YWxNYXAsIE1hcmtlckluZm8sIE1hcE1hcmtlciB9IGZyb20gJ0Bsb3djb2RldW5pdC9sY3UtbWFwLWNvbW1vbic7XHJcbmltcG9ydCB7IFRodW1ibmFpbExpc3RNb2RlbCB9IGZyb20gJy4uL21vZGVscy90aHVtYm5haWwtbGlzdC5tb2RlbCc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vdXRpbHMvY29uc3RhbnRzL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IFRlbXBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vdGVtcC5zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2NhdGlvbkxvYWRlciB9IGZyb20gJy4uL3V0aWxzL2xvY2F0aW9uLWxvYWRlcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXBTZXJ2aWNlIHtcclxuXHJcbiAgLy8gRklFTERTXHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBwcmltYXJ5IG1hcCB0byBiZSBkaXNwbGF5ZWQgLSByZXByZXNlbnRzIHRoZSBjdXJyZW50IG1hcCBiZWluZyBkaXNwbGF5ZWRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgcHJpbWFyeU1hcDogSW5kaXZpZHVhbE1hcDtcclxuXHJcbiAgLyoqXHJcbiAgICogTGlzdCBvZiBzZWNvbmRhcnkgbWFwcyBhdmFpbGFibGUgdG8gY2hvb3NlIGFzIHByaW1hcnkgYW5kIGFsc28gZm9yIHVzZSBhcyBsYXllcnMgaW4gdGhlIHByaW1hcnkgbWFwXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIG1hcExpc3Q6IEFycmF5PEluZGl2aWR1YWxNYXA+O1xyXG5cclxuICAvLyBQUk9QRVJUSUVTXHJcblxyXG4gIC8qKlxyXG4gICAqIEN1cmF0ZWQgbGlzdCBvZiBhbWJsX29uIGxvY2F0aW9uIG1hcmtlcnNcclxuICAgKi9cclxuICBwdWJsaWMgQ3VyYXRlZExpc3QgPSB0aGlzLmxvY0xvYWRlci5DcmVhdGVMYXllcihDb25zdGFudHMuTE9DQVRJT05TX1RPX0xPQUQsIENvbnN0YW50cy5NQVBfQ09ORklHX1RPX0xPQUQpO1xyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyBuZXcgcHJpbWFyeSBtYXAgYW55IHRpbWUgdGhlIG1hcHMgKHByaW1hcnkgYW5kIHNlY29uZGFyeSkgYXJlIGNoYW5nZWRcclxuICAgKi9cclxuICBwdWJsaWMgTWFwQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEluZGl2aWR1YWxNYXA+O1xyXG5cclxuICAvKipcclxuICAgKiBTdWJqZWN0IHRoYXQgZW1pdHMgbGF0L2xuZyBmb3IgbWFwIHBhbm5pbmdcclxuICAgKi9cclxuICBwdWJsaWMgTGF0TG5nRW1pdHRlcjogU3ViamVjdDxudW1iZXJbXT4gPSBuZXcgU3ViamVjdDxudW1iZXJbXT4oKTtcclxuXHJcbiAgcHVibGljIEJhc2ljSW5mb1dpbmRvd0VtaXR0ZXI6IFN1YmplY3Q8TWFwTWFya2VyPiA9IG5ldyBTdWJqZWN0PE1hcE1hcmtlcj4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogTGlzdCBvZiBhY3RpdmUgc2Vjb25kYXJ5IGxvY2F0aW9ucyB3aGljaCBhcmUgY3VycmVudGx5IGRpc3BsYXllZCBvbiB0aGUgY3VycmVudCBtYXBcclxuICAgKi9cclxuICBwdWJsaWMgVmlzaWJsZUxvY2F0aW9uczogQXJyYXk8TWFwTWFya2VyPiA9IFtdO1xyXG5cclxuICBwdWJsaWMgTGVnZW5kTG9jYXRpb25zID0gW107XHJcblxyXG4gIHB1YmxpYyBUaHVtYm5haWxMaXN0OiBBcnJheTxUaHVtYm5haWxMaXN0TW9kZWw+O1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgbGlzdCBvZiBhdmFpbGFibGUgbWFya2VycyBmb3IgdXNlIGluIHRoZSBtYXBcclxuICAgKi9cclxuICBwdWJsaWMgTWFya2VyTGlzdDogTWFya2VySW5mb1tdID0gQ29uc3RhbnRzLkRFRkFVTFRfTUFSS0VSX0lORk87XHJcblxyXG4gIC8vIENPTlNUUlVDVE9SU1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgdGVtcFN0b3JhZ2U6IFRlbXBTdG9yYWdlU2VydmljZSwgcHJvdGVjdGVkIGxvY0xvYWRlcjogTG9jYXRpb25Mb2FkZXIpIHtcclxuICAgIHRoaXMucHJpbWFyeU1hcCA9IHRoaXMudGVtcFN0b3JhZ2UuR2V0TGFzdFVzZWRJZCgpICE9PSAnJyA/IHRoaXMudGVtcFN0b3JhZ2UuR2V0TWFwQnlJZCh0aGlzLnRlbXBTdG9yYWdlLkdldExhc3RVc2VkSWQoKSkgOiB0aGlzLnRlbXBTdG9yYWdlLkdldE1hcExpc3QoKVswXTtcclxuICAgIHRoaXMubWFwTGlzdCA9IHRoaXMudGVtcFN0b3JhZ2UuR2V0TWFwTGlzdCgpLmZpbHRlcihtYXAgPT4gbWFwLmlkICE9PSB0aGlzLnByaW1hcnlNYXAuaWQpO1xyXG4gICAgdGhpcy5NYXBDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxJbmRpdmlkdWFsTWFwPigpO1xyXG4gICAgLy9jb25zb2xlLmxvZyhcImNvbnN0cnVjdG9yIGNhbGxlZFwiKTtcclxuICB9XHJcblxyXG4gIC8vIExJRkUgQ1lDTEVcclxuXHJcbiAgLy8gQVBJIE1FVEhPRFNcclxuXHJcbiAgcHVibGljIEdldExlZ2VuZExvY2F0aW9ucygpIHtcclxuICAgIC8vdGhpcy5MZWdlbmRMb2NhdGlvbnMgPSB0aGlzLnRlbXBTdG9yYWdlLkdldExvY2F0aW9uTGVnZW5kKCk7XHJcbiAgICByZXR1cm4gdGhpcy5MZWdlbmRMb2NhdGlvbnM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoaXMgbWFwbGlzdCBsaXN0IG9mIHRodW1ibmFpbHMgYW5kIHRoZWlyIGluZm9cclxuICAgKi9cclxuICBwdWJsaWMgR2V0VGh1bWJuYWlsTGlzdCgpIHtcclxuICAgIHJldHVybiB0aGlzLlRodW1ibmFpbExpc3Q7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBwcmltYXJ5IG1hcCB0byBiZSBkaXNwbGF5ZWRcclxuICAgKi9cclxuICBwdWJsaWMgR2V0UHJpbWFyeU1hcCgpOiBJbmRpdmlkdWFsTWFwIHtcclxuICAgIHJldHVybiB0aGlzLnByaW1hcnlNYXA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBsaXN0IG9mIHNlY29uZGFyeSAobm9uLXByaW1hcnkpIG1hcHNcclxuICAgKi9cclxuICBwdWJsaWMgR2V0TWFwTGlzdCgpOiBBcnJheTxJbmRpdmlkdWFsTWFwPiB7XHJcbiAgICAvLyByZXR1cm4gdGhpcy5tYXBMaXN0O1xyXG4gICAgcmV0dXJuIHRoaXMubWFwTGlzdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIGFsbCB0aGUgbWFwcyBpbiB0aGUgZGJcclxuICAgKi9cclxuICBwdWJsaWMgR2V0QWxsTWFwcygpOiBBcnJheTxJbmRpdmlkdWFsTWFwPiB7XHJcbiAgICByZXR1cm4gdGhpcy50ZW1wU3RvcmFnZS5HZXRNYXBMaXN0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBtYXAgdG8gcmV0cmlldmVcclxuICAgKiBcclxuICAgKiBSZXR1cm5zIGEgc3BlY2lmaWMgbWFwIHdpdGggYSBzcGVjaWZpYyBpZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBHZXRNYXBCeUlkKGlkKTogSW5kaXZpZHVhbE1hcCB7XHJcbiAgICByZXR1cm4gdGhpcy5tYXBMaXN0LmZpbmQobWFwID0+IG1hcC5pZCA9PT0gaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgbGlzdCBvZiBhdmFpbGFibGUgbWFya2VycyBmb3IgdXNlIGluIG1hcFxyXG4gICAqIFxyXG4gICAqIFRoaXMgd2lsbCBjYWxsIGEgYmFjayBlbmQgc2VydmljZSBldmVudHVhbGx5IGFuZCB0aGVuIGZvcm1hdCB0aGUgcmVzdWx0cyBhY2NvcmRpbmdseVxyXG4gICAqL1xyXG4gIHB1YmxpYyBHZXRNYXJrZXJMaXN0KCk6IE1hcmtlckluZm9bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5NYXJrZXJMaXN0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIG1hcCBUaGUgbWFwIHRvIGFkZFxyXG4gICAqIFxyXG4gICAqIEFkZHMgdGhlIG1hcCB0byB0aGUgbWFwIGFycmF5XHJcbiAgICovXHJcbiAgcHVibGljIEFkZE1hcChtYXApOiB2b2lkIHtcclxuICAgIHRoaXMudGVtcFN0b3JhZ2UuQWRkTWFwVG9MaXN0KG1hcCk7XHJcbiAgICB0aGlzLnNldE1hcHNXaXRoUHJpbWFyeUlkKG1hcC5pZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gbGF0IFRoZSBsYXRpdHVkZSB0byBwYW4gdG9cclxuICAgKiBAcGFyYW0gbG5nIFRoZSBsb25naXR1ZGUgdG8gcGFuIHRvXHJcbiAgICogXHJcbiAgICogVGFrZXMgYSBsYXQvbG5nIGFuZCBlbWl0cyBldmVudCBmb3IgbWFwIHRvIGxpc3RlbiB0b1xyXG4gICAqL1xyXG4gIHB1YmxpYyBDaGFuZ2VMYXRMbmcobGF0LCBsbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuTGF0TG5nRW1pdHRlci5uZXh0KFtsYXQsIGxuZ10pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAcGFyYW0gbWFya2VyXHJcbiAgICogXHJcbiAgICogVGFrZXMgYSBtYXJrZXIgZnJvbSB0aGUgbGVnZW5kIGFuZCBzZW5kIHRvIGxjdS1tYXBcclxuICAgKi9cclxuICBwdWJsaWMgRGlzcGxheUJhc2ljSW5mbyhtYXJrZXI6IE1hcE1hcmtlcik6IHZvaWQge1xyXG4gICAgdGhpcy5CYXNpY0luZm9XaW5kb3dFbWl0dGVyLm5leHQobWFya2VyKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBsaXN0IFRoZSBsaXN0IG9mIHZpc2libGUgbG9jYXRpb25zXHJcbiAgICogXHJcbiAgICogV2hlbiBtYXAgdXBkYXRlcyB0aGUgdmlzaWJsZSBsb2NhdGlvbnMsIHRoaXMuVmlzaWJsZUxvY2F0aW9ucyB3aWxsIGJlIHVwZGF0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgVXBkYXRlVmlzaWJsZUxvY2F0aW9ucyhsaXN0KTogdm9pZCB7XHJcbiAgICB0aGlzLlZpc2libGVMb2NhdGlvbnMgPSB0aGlzLkNoZWNrRm9yRHVwbGljYXRlcyhsaXN0KTtcclxuICAgIGlmICh0aGlzLlZpc2libGVMb2NhdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLlVwZGF0ZUxlZ2VuZExvY2F0aW9ucyh0aGlzLlZpc2libGVMb2NhdGlvbnMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgXHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgdGhlIGxlZ2VuZCBhcnJheVxyXG4gICAqIEBwYXJhbSBsaXN0IFxyXG4gICAqL1xyXG4gIHB1YmxpYyBVcGRhdGVMZWdlbmRMb2NhdGlvbnMobGlzdCk6IHZvaWQge1xyXG4gICAgLy9jb25zb2xlLmxvZyhcIlZpc2libGUgbG9jYXRpb25zXCIsIHRoaXMuVmlzaWJsZUxvY2F0aW9ucyk7XHJcbiAgICB0aGlzLkxlZ2VuZExvY2F0aW9ucyA9IGxpc3Q7XHJcbiAgfVxyXG5cclxuICBDaGVja0ZvckR1cGxpY2F0ZXMobGlzdDogQXJyYXk8TWFwTWFya2VyPik6IEFycmF5PE1hcE1hcmtlcj4ge1xyXG4gICAgLy9jb25zb2xlLmxvZyhcIkNoZWNraW5nIGZvciBkdXBsaWNhdGVzIGluOiBcIiwgbGlzdCk7XHJcbiAgICBsZXQgdGVtcDogQXJyYXk8TWFwTWFya2VyPiA9IG5ldyBBcnJheTxNYXBNYXJrZXI+KCk7XHJcblxyXG4gICAgbGV0IGlkcyA9IGxpc3QubWFwKGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgIHJldHVybiBpdGVtLmlkO1xyXG4gICAgfSk7XHJcbiAgICBsZXQgaWRzVW5pcXVlID0gaWRzLmZpbHRlcihmdW5jdGlvbihpdGVtLCBpbmRleCl7XHJcbiAgICAgIHJldHVybiBpZHMuaW5kZXhPZihpdGVtKSA+PSBpbmRleDtcclxuICAgIH0pO1xyXG4gICAgLy9jb25zb2xlLmxvZyhcInVuaXF1ZSBpZHMgbGVuZ3RoID0gXCIsIGlkc1VuaXF1ZS5sZW5ndGgpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpZHNVbmlxdWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHRlbXBNYXJrZXIgPSB0aGlzLnRlbXBTdG9yYWdlLkdldExvY2F0aW9uQnlJZChpZHNVbmlxdWVbaV0pO1xyXG4gICAgICAvL2lmIGl0cyBpbiB0aGUgbWFzdGVybGlzdFxyXG4gICAgICBpZih0ZW1wTWFya2VyKXtcclxuICAgICAgICB0ZW1wLnB1c2godGVtcE1hcmtlcik7XHJcbiAgICAgIH1cclxuICAgICAgLy9pZiBpdHMgbm90IGluIHRoZSBtYXN0ZXJsaXN0XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgdGVtcC5wdXNoKGxpc3QuZmlsdGVyKGl0ZW09PiBpdGVtLmlkID09PSBpZHNVbmlxdWVbaV0pWzBdKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgIH1cclxuICAgIC8vY29uc29sZS5sb2coXCJDaGVja2VkIGZvciBkdXBsaWNhdGVzXCIsIHRlbXApO1xyXG4gICAgcmV0dXJuIHRlbXA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gbGlzdCBzYXZlcyB0aGUgbGVnZW5kIHRvIGxvY2FsIHN0b3JhZ2VcclxuICAgKi9cclxuICBwdWJsaWMgU2F2ZUxlZ2VuZExvY2F0aW9ucyhsaXN0KTogdm9pZCB7XHJcbiAgICB0aGlzLnRlbXBTdG9yYWdlLlNhdmVMb2NhdGlvbkxlZ2VuZChsaXN0KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBtYXAgVGhlIG1hcCB0byByZXBsYWNlIHRoZSBvbmxkIG9uZSB3aXRoXHJcbiAgICogXHJcbiAgICogVGhpcyByZXBsYWNlcyB0aGUgbWFwIGluIHRoZSBkYiB3aXRoIHRoZSBtYXAgKGJhc2VkIG9uIGlkKVxyXG4gICAqL1xyXG4gIHB1YmxpYyBSZXBsYWNlTWFwKG1hcDogSW5kaXZpZHVhbE1hcCk6IHZvaWQge1xyXG4gICAgdGhpcy50ZW1wU3RvcmFnZS5SZXBsYWNlTWFwKG1hcCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gTGlzdE9mTWFwcyBUaGUgbGlzdCBvZiBtYXBzIHRoYXQgeW91IHdvdWxkIGxpa2UgdG8gZ2V0IHRoZSB0aHVtYm5haWxzIGFuZCBvdGhlciBpbmZvIGZvclxyXG4gICAqIFxyXG4gICAqIGEgdGh1bWJuYWlsIGxpc3QgY29udGFpbnMgdGhlIGltZyB1cmwsIHRoZSB0aXRsZSBvZiB0aGUgbWFwLCBhbmQgdGhlIGxhdCBhbmQgbG9uZyBvZiB0aGUgb3JnaW5cclxuICAgKiBcclxuICAgKi9cclxuICBwdWJsaWMgQnVpbGRUaHVtYm5haWxMaXN0KExpc3RPZk1hcHM6IEFycmF5PEluZGl2aWR1YWxNYXA+KTogQXJyYXk8VGh1bWJuYWlsTGlzdE1vZGVsPiB7XHJcbiAgICB2YXIgdGVtcFRodW1ibmFpbExpc3QgPSBuZXcgQXJyYXk8VGh1bWJuYWlsTGlzdE1vZGVsPigpO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBMaXN0T2ZNYXBzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHZhciB0ZW1wID0gbmV3IFRodW1ibmFpbExpc3RNb2RlbChMaXN0T2ZNYXBzW2ldLCB0aGlzLmdldE1hcFRodW1ibmFpbChMaXN0T2ZNYXBzW2ldLCAyMDAsIDIwMCksIExpc3RPZk1hcHNbaV0udGl0bGUsIExpc3RPZk1hcHNbaV0ub3JpZ2luLmxhdCwgTGlzdE9mTWFwc1tpXS5vcmlnaW4ubG5nKTtcclxuICAgICAgdGVtcFRodW1ibmFpbExpc3QucHVzaCh0ZW1wKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBzb3J0cyBiYXNlZCBvbiB0aGUgVGl0bGUgb2YgdGhlIG1hcCBzbyB0aGUgdGh1bWJuYWlsIGxpc3QgaXMgaW4gYWxwaGFiZXRpY2FsIG9yZGVyXHJcbiAgICAgKi9cclxuICAgIHRlbXBUaHVtYm5haWxMaXN0LnNvcnQoKHQxLCB0MikgPT4ge1xyXG4gICAgICByZXR1cm4gdDEuVGl0bGUudG9VcHBlckNhc2UoKSA+IHQyLlRpdGxlLnRvVXBwZXJDYXNlKCkgPyAxIDogLTE7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0ZW1wVGh1bWJuYWlsTGlzdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIG5ldyBwcmltYXJ5IG1hcFxyXG4gICAqIFxyXG4gICAqIENhbGxzIHRoZSBwcm90ZWN0ZWQgbWV0aG9kIFwic2V0TWFwc1dpdGhQcmltYXJ5SWRcIlxyXG4gICAqL1xyXG4gIHB1YmxpYyBQcmltYXJ5TWFwQ2hhbmdlZChpZCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRNYXBzV2l0aFByaW1hcnlJZChpZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGVzIGFsbCB0aGUgbWFwcyBmcm9tIHRoZSBkYiAoZm9yIHRlc3RpbmcgcHVycG9zZXMgb25seSlcclxuICAgKi9cclxuICBwdWJsaWMgRGVsZXRlTWFwcygpOiB2b2lkIHtcclxuICAgIHRoaXMudGVtcFN0b3JhZ2UuRGVsZXRlTWFwTGlzdCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gKiBDdXJhdGVkIGxpc3Qgb2YgYW1ibF9vbiBsb2NhdGlvbiBtYXJrZXJzXHJcbiAqL1xyXG4gIHB1YmxpYyBHZXRDdXJhdGVkTGlzdCgpIHtcclxuICAgIHJldHVybiB0aGlzLmxvY0xvYWRlci5DcmVhdGVMYXllcihDb25zdGFudHMuSlNPTl9EQVRBX0ZPUl9MT0NBVElPTl9DT05WRVJTSU9OLCBDb25zdGFudHMuTUFQX0NPTkZJR19UT19MT0FEKTtcclxuICB9XHJcbiAgLy8gSEVMUEVSU1xyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSBtYXAgVGhlIG1hcCBjb25maWd1cmF0aW9uIGZyb20gd2hpY2ggeW91IHdhbnQgdG8gY3JlYXRlIGEgdGh1bWJuYWlsXHJcbiAgICogQHBhcmFtIHdpZHRoIE9wdGlvbmFsIHdpZHRoIHBhcmFtZXRlciAobXVzdCBhbHNvIGluY2x1ZGUgaGVpZ3RoKVxyXG4gICAqIEBwYXJhbSBoZWlnaHQgT3B0aW9uYWwgaGVpZ2h0IHBhcmFtZXRlciAobXVzdCBhbHNvIGluY2x1ZGUgd2lkdGgpXHJcbiAgICpcclxuICAgKiBUYWtlcyBhIG1hcCBjb25maWd1cmF0aW9uIGZpbGUgYW5kIHJldHVybnMgYSBnb29nbGUgbWFwcyBzdGF0aWMgbWFwIHRvIGJlIHVzZWQgYXMgYSB0aHVtYm5haWxcclxuICAgKlxyXG4gICAqIEluIG9yZGVyIHRvIHNwZWNpZnkgaGVpZ2h0IGFuZCB3aWR0aCwgeW91IG11c3Qgc3BlY2lmeSBCT1RILCBvdGhlcndpc2UsIHRoZSBkZWZhdWx0IGlzIDMwMHgzMDBcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZ2V0TWFwVGh1bWJuYWlsKG1hcDogSW5kaXZpZHVhbE1hcCwgd2lkdGg/LCBoZWlnaHQ/KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgaHR0cHM6Ly9tYXBzLmdvb2dsZWFwaXMuY29tL21hcHMvYXBpL3N0YXRpY21hcD9jZW50ZXI9JHttYXAub3JpZ2luLmxhdH0sJHttYXAub3JpZ2luLmxuZ31cclxuICAgICZ6b29tPSR7bWFwLnpvb20gLSAyfVxyXG4gICAgJnNpemU9JHtoZWlnaHQgJiYgd2lkdGggPyB3aWR0aCA6IDMwMH14JHtoZWlnaHQgJiYgd2lkdGggPyBoZWlnaHQgOiAzMDB9XHJcbiAgICAma2V5PUFJemFTeUFzS2g0X1RYcFlWNTdTQnM3ajNiNnFGY0pVRzZmTkhvVWA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIG5ldyBwcmltYXJ5IG1hcFxyXG4gICAqXHJcbiAgICogU2V0cyB0aGUgcHJpbWFyeSBtYXAgdG8gdGhhdCB3aXRoIHRoZSBwYXNzZWQgaWQsXHJcbiAgICpcclxuICAgKiBTZXRzIHRoZSBzZWNvbmRhcnkgbWFwcyB0byBhIGxpc3Qgb2YgYWxsIHRoZSBtYXBzIG1pbnVzIHRoYXQgd2l0aCB0aGUgcGFzc2VkIGlkXHJcbiAgICpcclxuICAgKiBFbWl0cyB0aGUgbmV3IHByaW1hcnkgbWFwXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHNldE1hcHNXaXRoUHJpbWFyeUlkKGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMudGVtcFN0b3JhZ2UuU2V0TGFzdFVzZWRJZChpZCk7XHJcbiAgICB0aGlzLnByaW1hcnlNYXAgPSB0aGlzLnRlbXBTdG9yYWdlLkdldE1hcEJ5SWQoaWQpO1xyXG4gICAgdGhpcy5tYXBMaXN0ID0gdGhpcy50ZW1wU3RvcmFnZS5HZXRNYXBMaXN0KCkuZmlsdGVyKG1hcCA9PiBtYXAuaWQgIT09IGlkKTtcclxuICAgIHRoaXMuTWFwQ2hhbmdlZC5lbWl0KHRoaXMucHJpbWFyeU1hcCk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=

@@ -260,75 +260,12 @@ /**

function (list) {
this.VisibleLocations = list;
//this.primaryMap.title = "Testing";
//console.log("visible locations updated: ", list);
this.VisibleLocations = this.CheckForDuplicates(list);
if (this.VisibleLocations.length > 0) {
this.UpdateLegendLocations(this.VisibleLocations);
}
// this.LegendLocations = this.VisibleLocations;
// if(this.VisibleLocations !== this.LegendLocations){
// console.log("Updating legend")
// this.AddToLegendLocations(list);
// }
};
// public AddToLegendLocations(visLoc: Array<MapMarker>) {
// //console.log("visLoc = ", visLoc);
// for (let i = 0; i < visLoc.length; i++) {
// let tempId = visLoc[i].id;
// if (this.LegendLocations.filter(item => item.id === tempId).length === 0) {
// this.LegendLocations.push(visLoc[i]);
// }
// else {
// this.CheckInfo(visLoc[i]);
// }
// }
// //console.log("added to LegendArray ", this.LegendLocations);
// this.UpdateLegendLocations(this.LegendLocations);
// //this.UpdateVisibleLocations(this.LegendLocations);
// }
/**
* Checks to insure that the location displayed in the legend matches that of the visible locations
*
* @param marker
*/
// public CheckInfo(marker: MapMarker) {
// let tempMarker = this.LegendLocations.filter(item => item.id === marker.id);
// let index = this.LegendLocations.indexOf(tempMarker[0]);
// //console.log("index = ", index);
// //console.log("tempMarker = ", tempMarker);
// //console.log("marker = ", marker);
// this.LegendLocations[index] = marker;
// }
/**
* Updates the legend array
* @param list
*/
// public AddToLegendLocations(visLoc: Array<MapMarker>) {
// //console.log("visLoc = ", visLoc);
// for (let i = 0; i < visLoc.length; i++) {
// let tempId = visLoc[i].id;
// if (this.LegendLocations.filter(item => item.id === tempId).length === 0) {
// this.LegendLocations.push(visLoc[i]);
// }
// else {
// this.CheckInfo(visLoc[i]);
// }
// }
// //console.log("added to LegendArray ", this.LegendLocations);
// this.UpdateLegendLocations(this.LegendLocations);
// //this.UpdateVisibleLocations(this.LegendLocations);
// }
/**
* Checks to insure that the location displayed in the legend matches that of the visible locations
*
* @param marker
*/
// public CheckInfo(marker: MapMarker) {
// let tempMarker = this.LegendLocations.filter(item => item.id === marker.id);
// let index = this.LegendLocations.indexOf(tempMarker[0]);
// //console.log("index = ", index);
// //console.log("tempMarker = ", tempMarker);
// //console.log("marker = ", marker);
// this.LegendLocations[index] = marker;
// }
/**
* Updates the legend array

@@ -338,32 +275,3 @@ * @param {?} list

*/
MapService.prototype.UpdateLegendLocations =
// public AddToLegendLocations(visLoc: Array<MapMarker>) {
// //console.log("visLoc = ", visLoc);
// for (let i = 0; i < visLoc.length; i++) {
// let tempId = visLoc[i].id;
// if (this.LegendLocations.filter(item => item.id === tempId).length === 0) {
// this.LegendLocations.push(visLoc[i]);
// }
// else {
// this.CheckInfo(visLoc[i]);
// }
// }
// //console.log("added to LegendArray ", this.LegendLocations);
// this.UpdateLegendLocations(this.LegendLocations);
// //this.UpdateVisibleLocations(this.LegendLocations);
// }
/**
* Checks to insure that the location displayed in the legend matches that of the visible locations
*
* @param marker
*/
// public CheckInfo(marker: MapMarker) {
// let tempMarker = this.LegendLocations.filter(item => item.id === marker.id);
// let index = this.LegendLocations.indexOf(tempMarker[0]);
// //console.log("index = ", index);
// //console.log("tempMarker = ", tempMarker);
// //console.log("marker = ", marker);
// this.LegendLocations[index] = marker;
// }
/**
MapService.prototype.UpdateLegendLocations = /**
* Updates the legend array

@@ -374,26 +282,4 @@ * @param {?} list

function (list) {
console.log("master list length", this.tempStorage.GetMasterLocationLegend().length);
console.log("Visible locations", this.VisibleLocations);
if (this.tempStorage.GetMasterLocationLegend().length === 0) {
this.LegendLocations = this.VisibleLocations;
}
else {
/** @type {?} */
var temp = new Array();
list = this.CheckForDuplicates(list);
for (var i = 0; i < list.length; i++) {
/** @type {?} */
var tempMarker = this.tempStorage.GetLocationById(list[i].id);
// console.log("tempMarker = ", tempMarker);
if (tempMarker) {
//console.log("pushing in if");
temp.push(tempMarker);
}
else {
//console.log("pushing in else");
temp.push(list[i]);
}
}
this.LegendLocations = temp;
}
//console.log("Visible locations", this.VisibleLocations);
this.LegendLocations = list;
};

@@ -409,2 +295,3 @@ /**

function (list) {
//console.log("Checking for duplicates in: ", list);
/** @type {?} */

@@ -446,2 +333,3 @@ var temp = new Array();

var this_1 = this;
//console.log("unique ids length = ", idsUnique.length);
for (var i = 0; i < idsUnique.length; i++) {

@@ -742,2 +630,2 @@ _loop_1(i);

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYW1ibC1vbi9sY3UtYW1ibC1vbi1jb21tb24vIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvbWFwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQUUxRDtJQWtERSxlQUFlO0lBRWYsb0JBQXNCLFdBQStCLEVBQVksU0FBeUI7UUFBMUYsaUJBS0M7UUFMcUIsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQVksY0FBUyxHQUFULFNBQVMsQ0FBZ0I7Ozs7O1FBOUJuRixnQkFBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQzs7OztRQVVwRyxrQkFBYSxHQUFzQixJQUFJLE9BQU8sRUFBWSxDQUFDO1FBRTNELDJCQUFzQixHQUF1QixJQUFJLE9BQU8sRUFBYSxDQUFDOzs7O1FBS3RFLHFCQUFnQixHQUFxQixFQUFFLENBQUM7UUFFeEMsb0JBQWUsR0FBRyxFQUFFLENBQUM7Ozs7UUFPckIsZUFBVSxHQUFpQixTQUFTLENBQUMsbUJBQW1CLENBQUM7UUFLOUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMs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Ozs7O0lBQ08seUNBQW9COzs7Ozs7Ozs7Ozs7SUFBOUIsVUFBK0IsRUFBVTtRQUN2QyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNOzs7O1FBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBYixDQUFhLEVBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7Z0JBN1ZGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozs7Z0JBTFEsa0JBQWtCO2dCQUNsQixjQUFjOzs7cUJBTnZCO0NBdVdDLEFBL1ZELElBK1ZDO1NBNVZZLFVBQVU7Ozs7Ozs7SUFPckIsZ0NBQW9DOzs7Ozs7SUFLcEMsNkJBQXdDOzs7OztJQU94QyxpQ0FBMkc7Ozs7O0lBSzNHLGdDQUErQzs7Ozs7SUFLL0MsbUNBQWtFOztJQUVsRSw0Q0FBNkU7Ozs7O0lBSzdFLHNDQUErQzs7SUFFL0MscUNBQTRCOztJQUU1QixtQ0FBZ0Q7Ozs7O0lBS2hELGdDQUFnRTs7Ozs7SUFJcEQsaUNBQXlDOzs7OztJQUFFLCtCQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJbmRpdmlkdWFsTWFwLCBNYXJrZXJJbmZvLCBNYXBNYXJrZXIgfSBmcm9tICdAbG93Y29kZXVuaXQvbGN1LW1hcC1jb21tb24nO1xyXG5pbXBvcnQgeyBUaHVtYm5haWxMaXN0TW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvdGh1bWJuYWlsLWxpc3QubW9kZWwnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uL3V0aWxzL2NvbnN0YW50cy9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBUZW1wU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3RlbXAuc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9jYXRpb25Mb2FkZXIgfSBmcm9tICcuLi91dGlscy9sb2NhdGlvbi1sb2FkZXInO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFwU2VydmljZSB7XHJcblxyXG4gIC8vIEZJRUxEU1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgcHJpbWFyeSBtYXAgdG8gYmUgZGlzcGxheWVkIC0gcmVwcmVzZW50cyB0aGUgY3VycmVudCBtYXAgYmVpbmcgZGlzcGxheWVkXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHByaW1hcnlNYXA6IEluZGl2aWR1YWxNYXA7XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3Qgb2Ygc2Vjb25kYXJ5IG1hcHMgYXZhaWxhYmxlIHRvIGNob29zZSBhcyBwcmltYXJ5IGFuZCBhbHNvIGZvciB1c2UgYXMgbGF5ZXJzIGluIHRoZSBwcmltYXJ5IG1hcFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBtYXBMaXN0OiBBcnJheTxJbmRpdmlkdWFsTWFwPjtcclxuXHJcbiAgLy8gUFJPUEVSVElFU1xyXG5cclxuICAvKipcclxuICAgKiBDdXJhdGVkIGxpc3Qgb2YgYW1ibF9vbiBsb2NhdGlvbiBtYXJrZXJzXHJcbiAgICovXHJcbiAgcHVibGljIEN1cmF0ZWRMaXN0ID0gdGhpcy5sb2NMb2FkZXIuQ3JlYXRlTGF5ZXIoQ29uc3RhbnRzLkxPQ0FUSU9OU19UT19MT0FELCBDb25zdGFudHMuTUFQX0NPTkZJR19UT19MT0FEKTtcclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHMgbmV3IHByaW1hcnkgbWFwIGFueSB0aW1lIHRoZSBtYXBzIChwcmltYXJ5IGFuZCBzZWNvbmRhcnkpIGFyZSBjaGFuZ2VkXHJcbiAgICovXHJcbiAgcHVibGljIE1hcENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxJbmRpdmlkdWFsTWFwPjtcclxuXHJcbiAgLyoqXHJcbiAgICogU3ViamVjdCB0aGF0IGVtaXRzIGxhdC9sbmcgZm9yIG1hcCBwYW5uaW5nXHJcbiAgICovXHJcbiAgcHVibGljIExhdExuZ0VtaXR0ZXI6IFN1YmplY3Q8bnVtYmVyW10+ID0gbmV3IFN1YmplY3Q8bnVtYmVyW10+KCk7XHJcblxyXG4gIHB1YmxpYyBCYXNpY0luZm9XaW5kb3dFbWl0dGVyOiBTdWJqZWN0PE1hcE1hcmtlcj4gPSBuZXcgU3ViamVjdDxNYXBNYXJrZXI+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3Qgb2YgYWN0aXZlIHNlY29uZGFyeSBsb2NhdGlvbnMgd2hpY2ggYXJlIGN1cnJlbnRseSBkaXNwbGF5ZWQgb24gdGhlIGN1cnJlbnQgbWFwXHJcbiAgICovXHJcbiAgcHVibGljIFZpc2libGVMb2NhdGlvbnM6IEFycmF5PE1hcE1hcmtlcj4gPSBbXTtcclxuXHJcbiAgcHVibGljIExlZ2VuZExvY2F0aW9ucyA9IFtdO1xyXG5cclxuICBwdWJsaWMgVGh1bWJuYWlsTGlzdDogQXJyYXk8VGh1bWJuYWlsTGlzdE1vZGVsPjtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGxpc3Qgb2YgYXZhaWxhYmxlIG1hcmtlcnMgZm9yIHVzZSBpbiB0aGUgbWFwXHJcbiAgICovXHJcbiAgcHVibGljIE1hcmtlckxpc3Q6IE1hcmtlckluZm9bXSA9IENvbnN0YW50cy5ERUZBVUxUX01BUktFUl9JTkZPO1xyXG5cclxuICAvLyBDT05TVFJVQ1RPUlNcclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHRlbXBTdG9yYWdlOiBUZW1wU3RvcmFnZVNlcnZpY2UsIHByb3RlY3RlZCBsb2NMb2FkZXI6IExvY2F0aW9uTG9hZGVyKSB7XHJcbiAgICB0aGlzLnByaW1hcnlNYXAgPSB0aGlzLnRlbXBTdG9yYWdlLkdldExhc3RVc2VkSWQoKSAhPT0gJycgPyB0aGlzLnRlbXBTdG9yYWdlLkdldE1hcEJ5SWQodGhpcy50ZW1wU3RvcmFnZS5HZXRMYXN0VXNlZElkKCkpIDogdGhpcy50ZW1wU3RvcmFnZS5HZXRNYXBMaXN0KClbMF07XHJcbiAgICB0aGlzLm1hcExpc3QgPSB0aGlzLnRlbXBTdG9yYWdlLkdldE1hcExpc3QoKS5maWx0ZXIobWFwID0+IG1hcC5pZCAhPT0gdGhpcy5wcmltYXJ5TWFwLmlkKTtcclxuICAgIHRoaXMuTWFwQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SW5kaXZpZHVhbE1hcD4oKTtcclxuICAgIC8vY29uc29sZS5sb2coXCJjb25zdHJ1Y3RvciBjYWxsZWRcIik7XHJcbiAgfVxyXG5cclxuICAvLyBMSUZFIENZQ0xFXHJcblxyXG4gIC8vIEFQSSBNRVRIT0RTXHJcblxyXG4gIHB1YmxpYyBHZXRMZWdlbmRMb2NhdGlvbnMoKSB7XHJcbiAgICAvL3RoaXMuTGVnZW5kTG9jYXRpb25zID0gdGhpcy50ZW1wU3RvcmFnZS5HZXRMb2NhdGlvbkxlZ2VuZCgpO1xyXG4gICAgcmV0dXJuIHRoaXMuTGVnZW5kTG9jYXRpb25zO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGlzIG1hcGxpc3QgbGlzdCBvZiB0aHVtYm5haWxzIGFuZCB0aGVpciBpbmZvXHJcbiAgICovXHJcbiAgcHVibGljIEdldFRodW1ibmFpbExpc3QoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5UaHVtYm5haWxMaXN0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgcHJpbWFyeSBtYXAgdG8gYmUgZGlzcGxheWVkXHJcbiAgICovXHJcbiAgcHVibGljIEdldFByaW1hcnlNYXAoKTogSW5kaXZpZHVhbE1hcCB7XHJcbiAgICByZXR1cm4gdGhpcy5wcmltYXJ5TWFwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgbGlzdCBvZiBzZWNvbmRhcnkgKG5vbi1wcmltYXJ5KSBtYXBzXHJcbiAgICovXHJcbiAgcHVibGljIEdldE1hcExpc3QoKTogQXJyYXk8SW5kaXZpZHVhbE1hcD4ge1xyXG4gICAgLy8gcmV0dXJuIHRoaXMubWFwTGlzdDtcclxuICAgIHJldHVybiB0aGlzLm1hcExpc3Q7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhlIG1hcHMgaW4gdGhlIGRiXHJcbiAgICovXHJcbiAgcHVibGljIEdldEFsbE1hcHMoKTogQXJyYXk8SW5kaXZpZHVhbE1hcD4ge1xyXG4gICAgcmV0dXJuIHRoaXMudGVtcFN0b3JhZ2UuR2V0TWFwTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgbWFwIHRvIHJldHJpZXZlXHJcbiAgICogXHJcbiAgICogUmV0dXJucyBhIHNwZWNpZmljIG1hcCB3aXRoIGEgc3BlY2lmaWMgaWRcclxuICAgKi9cclxuICBwdWJsaWMgR2V0TWFwQnlJZChpZCk6IEluZGl2aWR1YWxNYXAge1xyXG4gICAgcmV0dXJuIHRoaXMubWFwTGlzdC5maW5kKG1hcCA9PiBtYXAuaWQgPT09IGlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIG1hcmtlcnMgZm9yIHVzZSBpbiBtYXBcclxuICAgKiBcclxuICAgKiBUaGlzIHdpbGwgY2FsbCBhIGJhY2sgZW5kIHNlcnZpY2UgZXZlbnR1YWxseSBhbmQgdGhlbiBmb3JtYXQgdGhlIHJlc3VsdHMgYWNjb3JkaW5nbHlcclxuICAgKi9cclxuICBwdWJsaWMgR2V0TWFya2VyTGlzdCgpOiBNYXJrZXJJbmZvW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuTWFya2VyTGlzdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBtYXAgVGhlIG1hcCB0byBhZGRcclxuICAgKiBcclxuICAgKiBBZGRzIHRoZSBtYXAgdG8gdGhlIG1hcCBhcnJheVxyXG4gICAqL1xyXG4gIHB1YmxpYyBBZGRNYXAobWFwKTogdm9pZCB7XHJcbiAgICB0aGlzLnRlbXBTdG9yYWdlLkFkZE1hcFRvTGlzdChtYXApO1xyXG4gICAgdGhpcy5zZXRNYXBzV2l0aFByaW1hcnlJZChtYXAuaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGxhdCBUaGUgbGF0aXR1ZGUgdG8gcGFuIHRvXHJcbiAgICogQHBhcmFtIGxuZyBUaGUgbG9uZ2l0dWRlIHRvIHBhbiB0b1xyXG4gICAqIFxyXG4gICAqIFRha2VzIGEgbGF0L2xuZyBhbmQgZW1pdHMgZXZlbnQgZm9yIG1hcCB0byBsaXN0ZW4gdG9cclxuICAgKi9cclxuICBwdWJsaWMgQ2hhbmdlTGF0TG5nKGxhdCwgbG5nKTogdm9pZCB7XHJcbiAgICB0aGlzLkxhdExuZ0VtaXR0ZXIubmV4dChbbGF0LCBsbmddKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQHBhcmFtIG1hcmtlclxyXG4gICAqIFxyXG4gICAqIFRha2VzIGEgbWFya2VyIGZyb20gdGhlIGxlZ2VuZCBhbmQgc2VuZCB0byBsY3UtbWFwXHJcbiAgICovXHJcbiAgcHVibGljIERpc3BsYXlCYXNpY0luZm8obWFya2VyOiBNYXBNYXJrZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuQmFzaWNJbmZvV2luZG93RW1pdHRlci5uZXh0KG1hcmtlcik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gbGlzdCBUaGUgbGlzdCBvZiB2aXNpYmxlIGxvY2F0aW9uc1xyXG4gICAqIFxyXG4gICAqIFdoZW4gbWFwIHVwZGF0ZXMgdGhlIHZpc2libGUgbG9jYXRpb25zLCB0aGlzLlZpc2libGVMb2NhdGlvbnMgd2lsbCBiZSB1cGRhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIFVwZGF0ZVZpc2libGVMb2NhdGlvbnMobGlzdCk6IHZvaWQge1xyXG4gICAgdGhpcy5WaXNpYmxlTG9jYXRpb25zID0gbGlzdDtcclxuICAgIC8vdGhpcy5wcmltYXJ5TWFwLnRpdGxlID0gXCJUZXN0aW5nXCI7XHJcbiAgICAvL2NvbnNvbGUubG9nKFwidmlzaWJsZSBsb2NhdGlvbnMgdXBkYXRlZDogXCIsIGxpc3QpO1xyXG4gICAgaWYgKHRoaXMuVmlzaWJsZUxvY2F0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuVXBkYXRlTGVnZW5kTG9jYXRpb25zKHRoaXMuVmlzaWJsZUxvY2F0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdGhpcy5MZWdlbmRMb2NhdGlvbnMgPSB0aGlzLlZpc2libGVMb2NhdGlvbnM7XHJcbiAgICAvLyBpZih0aGlzLlZpc2libGVMb2NhdGlvbnMgIT09IHRoaXMuTGVnZW5kTG9jYXRpb25zKXtcclxuICAgIC8vICAgY29uc29sZS5sb2coXCJVcGRhdGluZyBsZWdlbmRcIilcclxuICAgIC8vICAgdGhpcy5BZGRUb0xlZ2VuZExvY2F0aW9ucyhsaXN0KTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIC8vIHB1YmxpYyBBZGRUb0xlZ2VuZExvY2F0aW9ucyh2aXNMb2M6IEFycmF5PE1hcE1hcmtlcj4pIHtcclxuICAvLyAgIC8vY29uc29sZS5sb2coXCJ2aXNMb2MgPSBcIiwgdmlzTG9jKTtcclxuICAvLyAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmlzTG9jLmxlbmd0aDsgaSsrKSB7XHJcbiAgLy8gICAgIGxldCB0ZW1wSWQgPSB2aXNMb2NbaV0uaWQ7XHJcbiAgLy8gICAgIGlmICh0aGlzLkxlZ2VuZExvY2F0aW9ucy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlkID09PSB0ZW1wSWQpLmxlbmd0aCA9PT0gMCkge1xyXG4gIC8vICAgICAgIHRoaXMuTGVnZW5kTG9jYXRpb25zLnB1c2godmlzTG9jW2ldKTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgICBlbHNlIHtcclxuICAvLyAgICAgICB0aGlzLkNoZWNrSW5mbyh2aXNMb2NbaV0pO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gICAvL2NvbnNvbGUubG9nKFwiYWRkZWQgdG8gTGVnZW5kQXJyYXkgXCIsIHRoaXMuTGVnZW5kTG9jYXRpb25zKTtcclxuICAvLyAgIHRoaXMuVXBkYXRlTGVnZW5kTG9jYXRpb25zKHRoaXMuTGVnZW5kTG9jYXRpb25zKTtcclxuICAvLyAgIC8vdGhpcy5VcGRhdGVWaXNpYmxlTG9jYXRpb25zKHRoaXMuTGVnZW5kTG9jYXRpb25zKTtcclxuICAvLyB9XHJcbiAgLyoqXHJcbiAgICogQ2hlY2tzIHRvIGluc3VyZSB0aGF0IHRoZSBsb2NhdGlvbiBkaXNwbGF5ZWQgaW4gdGhlIGxlZ2VuZCBtYXRjaGVzIHRoYXQgb2YgdGhlIHZpc2libGUgbG9jYXRpb25zXHJcbiAgICogXHJcbiAgICogQHBhcmFtIG1hcmtlclxyXG4gICAqL1xyXG4gIC8vIHB1YmxpYyBDaGVja0luZm8obWFya2VyOiBNYXBNYXJrZXIpIHtcclxuICAvLyAgIGxldCB0ZW1wTWFya2VyID0gdGhpcy5MZWdlbmRMb2NhdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pZCA9PT0gbWFya2VyLmlkKTtcclxuICAvLyAgIGxldCBpbmRleCA9IHRoaXMuTGVnZW5kTG9jYXRpb25zLmluZGV4T2YodGVtcE1hcmtlclswXSk7XHJcbiAgLy8gICAvL2NvbnNvbGUubG9nKFwiaW5kZXggPSBcIiwgaW5kZXgpO1xyXG4gIC8vICAgLy9jb25zb2xlLmxvZyhcInRlbXBNYXJrZXIgPSBcIiwgdGVtcE1hcmtlcik7XHJcbiAgLy8gICAvL2NvbnNvbGUubG9nKFwibWFya2VyID0gXCIsIG1hcmtlcik7XHJcbiAgLy8gICB0aGlzLkxlZ2VuZExvY2F0aW9uc1tpbmRleF0gPSBtYXJrZXI7XHJcbiAgLy8gfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIHRoZSBsZWdlbmQgYXJyYXlcclxuICAgKiBAcGFyYW0gbGlzdCBcclxuICAgKi9cclxuICBwdWJsaWMgVXBkYXRlTGVnZW5kTG9jYXRpb25zKGxpc3QpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKFwibWFzdGVyIGxpc3QgbGVuZ3RoXCIsdGhpcy50ZW1wU3RvcmFnZS5HZXRNYXN0ZXJMb2NhdGlvbkxlZ2VuZCgpLmxlbmd0aCk7XHJcbiAgICBjb25zb2xlLmxvZyhcIlZpc2libGUgbG9jYXRpb25zXCIsIHRoaXMuVmlzaWJsZUxvY2F0aW9ucyk7XHJcbiAgICBpZiAodGhpcy50ZW1wU3RvcmFnZS5HZXRNYXN0ZXJMb2NhdGlvbkxlZ2VuZCgpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLkxlZ2VuZExvY2F0aW9ucyA9IHRoaXMuVmlzaWJsZUxvY2F0aW9ucztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgdGVtcDogQXJyYXk8TWFwTWFya2VyPiA9IG5ldyBBcnJheTxNYXBNYXJrZXI+KCk7XHJcbiAgICAgIGxpc3QgPSB0aGlzLkNoZWNrRm9yRHVwbGljYXRlcyhsaXN0KTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IHRlbXBNYXJrZXI6IE1hcE1hcmtlciA9IHRoaXMudGVtcFN0b3JhZ2UuR2V0TG9jYXRpb25CeUlkKGxpc3RbaV0uaWQpO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwidGVtcE1hcmtlciA9IFwiLCB0ZW1wTWFya2VyKTtcclxuICAgICAgICBpZiAodGVtcE1hcmtlcikge1xyXG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhcInB1c2hpbmcgaW4gaWZcIik7XHJcbiAgICAgICAgICB0ZW1wLnB1c2godGVtcE1hcmtlcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhcInB1c2hpbmcgaW4gZWxzZVwiKTtcclxuICAgICAgICAgIHRlbXAucHVzaChsaXN0W2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5MZWdlbmRMb2NhdGlvbnMgPSB0ZW1wO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQ2hlY2tGb3JEdXBsaWNhdGVzKGxpc3Q6IEFycmF5PE1hcE1hcmtlcj4pOiBBcnJheTxNYXBNYXJrZXI+IHtcclxuICAgIGxldCB0ZW1wOiBBcnJheTxNYXBNYXJrZXI+ID0gbmV3IEFycmF5PE1hcE1hcmtlcj4oKTtcclxuXHJcbiAgICBsZXQgaWRzID0gbGlzdC5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgcmV0dXJuIGl0ZW0uaWQ7XHJcbiAgICB9KTtcclxuICAgIGxldCBpZHNVbmlxdWUgPSBpZHMuZmlsdGVyKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KXtcclxuICAgICAgcmV0dXJuIGlkcy5pbmRleE9mKGl0ZW0pID49IGluZGV4O1xyXG4gICAgfSk7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpZHNVbmlxdWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHRlbXBNYXJrZXIgPSB0aGlzLnRlbXBTdG9yYWdlLkdldExvY2F0aW9uQnlJZChpZHNVbmlxdWVbaV0pO1xyXG4gICAgICAvL2lmIGl0cyBpbiB0aGUgbWFzdGVybGlzdFxyXG4gICAgICBpZih0ZW1wTWFya2VyKXtcclxuICAgICAgICB0ZW1wLnB1c2godGVtcE1hcmtlcik7XHJcbiAgICAgIH1cclxuICAgICAgLy9pZiBpdHMgbm90IGluIHRoZSBtYXN0ZXJsaXN0XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgdGVtcC5wdXNoKGxpc3QuZmlsdGVyKGl0ZW09PiBpdGVtLmlkID09PSBpZHNVbmlxdWVbaV0pWzBdKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgIH1cclxuICAgIC8vY29uc29sZS5sb2coXCJDaGVja2VkIGZvciBkdXBsaWNhdGVzXCIsIHRlbXApO1xyXG4gICAgcmV0dXJuIHRlbXBcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBsaXN0IHNhdmVzIHRoZSBsZWdlbmQgdG8gbG9jYWwgc3RvcmFnZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBTYXZlTGVnZW5kTG9jYXRpb25zKGxpc3QpOiB2b2lkIHtcclxuICAgIHRoaXMudGVtcFN0b3JhZ2UuU2F2ZUxvY2F0aW9uTGVnZW5kKGxpc3QpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIG1hcCBUaGUgbWFwIHRvIHJlcGxhY2UgdGhlIG9ubGQgb25lIHdpdGhcclxuICAgKiBcclxuICAgKiBUaGlzIHJlcGxhY2VzIHRoZSBtYXAgaW4gdGhlIGRiIHdpdGggdGhlIG1hcCAoYmFzZWQgb24gaWQpXHJcbiAgICovXHJcbiAgcHVibGljIFJlcGxhY2VNYXAobWFwOiBJbmRpdmlkdWFsTWFwKTogdm9pZCB7XHJcbiAgICB0aGlzLnRlbXBTdG9yYWdlLlJlcGxhY2VNYXAobWFwKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBMaXN0T2ZNYXBzIFRoZSBsaXN0IG9mIG1hcHMgdGhhdCB5b3Ugd291bGQgbGlrZSB0byBnZXQgdGhlIHRodW1ibmFpbHMgYW5kIG90aGVyIGluZm8gZm9yXHJcbiAgICogXHJcbiAgICogYSB0aHVtYm5haWwgbGlzdCBjb250YWlucyB0aGUgaW1nIHVybCwgdGhlIHRpdGxlIG9mIHRoZSBtYXAsIGFuZCB0aGUgbGF0IGFuZCBsb25nIG9mIHRoZSBvcmdpblxyXG4gICAqIFxyXG4gICAqL1xyXG4gIHB1YmxpYyBCdWlsZFRodW1ibmFpbExpc3QoTGlzdE9mTWFwczogQXJyYXk8SW5kaXZpZHVhbE1hcD4pOiBBcnJheTxUaHVtYm5haWxMaXN0TW9kZWw+IHtcclxuICAgIHZhciB0ZW1wVGh1bWJuYWlsTGlzdCA9IG5ldyBBcnJheTxUaHVtYm5haWxMaXN0TW9kZWw+KCk7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IExpc3RPZk1hcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdmFyIHRlbXAgPSBuZXcgVGh1bWJuYWlsTGlzdE1vZGVsKExpc3RPZk1hcHNbaV0sIHRoaXMuZ2V0TWFwVGh1bWJuYWlsKExpc3RPZk1hcHNbaV0sIDIwMCwgMjAwKSwgTGlzdE9mTWFwc1tpXS50aXRsZSwgTGlzdE9mTWFwc1tpXS5vcmlnaW4ubGF0LCBMaXN0T2ZNYXBzW2ldLm9yaWdpbi5sbmcpO1xyXG4gICAgICB0ZW1wVGh1bWJuYWlsTGlzdC5wdXNoKHRlbXApO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIHNvcnRzIGJhc2VkIG9uIHRoZSBUaXRsZSBvZiB0aGUgbWFwIHNvIHRoZSB0aHVtYm5haWwgbGlzdCBpcyBpbiBhbHBoYWJldGljYWwgb3JkZXJcclxuICAgICAqL1xyXG4gICAgdGVtcFRodW1ibmFpbExpc3Quc29ydCgodDEsIHQyKSA9PiB7XHJcbiAgICAgIHJldHVybiB0MS5UaXRsZS50b1VwcGVyQ2FzZSgpID4gdDIuVGl0bGUudG9VcHBlckNhc2UoKSA/IDEgOiAtMTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRlbXBUaHVtYm5haWxMaXN0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgbmV3IHByaW1hcnkgbWFwXHJcbiAgICogXHJcbiAgICogQ2FsbHMgdGhlIHByb3RlY3RlZCBtZXRob2QgXCJzZXRNYXBzV2l0aFByaW1hcnlJZFwiXHJcbiAgICovXHJcbiAgcHVibGljIFByaW1hcnlNYXBDaGFuZ2VkKGlkKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldE1hcHNXaXRoUHJpbWFyeUlkKGlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZXMgYWxsIHRoZSBtYXBzIGZyb20gdGhlIGRiIChmb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5KVxyXG4gICAqL1xyXG4gIHB1YmxpYyBEZWxldGVNYXBzKCk6IHZvaWQge1xyXG4gICAgdGhpcy50ZW1wU3RvcmFnZS5EZWxldGVNYXBMaXN0KCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAqIEN1cmF0ZWQgbGlzdCBvZiBhbWJsX29uIGxvY2F0aW9uIG1hcmtlcnNcclxuICovXHJcbiAgcHVibGljIEdldEN1cmF0ZWRMaXN0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMubG9jTG9hZGVyLkNyZWF0ZUxheWVyKENvbnN0YW50cy5KU09OX0RBVEFfRk9SX0xPQ0FUSU9OX0NPTlZFUlNJT04sIENvbnN0YW50cy5NQVBfQ09ORklHX1RPX0xPQUQpO1xyXG4gIH1cclxuICAvLyBIRUxQRVJTXHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIG1hcCBUaGUgbWFwIGNvbmZpZ3VyYXRpb24gZnJvbSB3aGljaCB5b3Ugd2FudCB0byBjcmVhdGUgYSB0aHVtYm5haWxcclxuICAgKiBAcGFyYW0gd2lkdGggT3B0aW9uYWwgd2lkdGggcGFyYW1ldGVyIChtdXN0IGFsc28gaW5jbHVkZSBoZWlndGgpXHJcbiAgICogQHBhcmFtIGhlaWdodCBPcHRpb25hbCBoZWlnaHQgcGFyYW1ldGVyIChtdXN0IGFsc28gaW5jbHVkZSB3aWR0aClcclxuICAgKlxyXG4gICAqIFRha2VzIGEgbWFwIGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgcmV0dXJucyBhIGdvb2dsZSBtYXBzIHN0YXRpYyBtYXAgdG8gYmUgdXNlZCBhcyBhIHRodW1ibmFpbFxyXG4gICAqXHJcbiAgICogSW4gb3JkZXIgdG8gc3BlY2lmeSBoZWlnaHQgYW5kIHdpZHRoLCB5b3UgbXVzdCBzcGVjaWZ5IEJPVEgsIG90aGVyd2lzZSwgdGhlIGRlZmF1bHQgaXMgMzAweDMwMFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBnZXRNYXBUaHVtYm5haWwobWFwOiBJbmRpdmlkdWFsTWFwLCB3aWR0aD8sIGhlaWdodD8pOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGBodHRwczovL21hcHMuZ29vZ2xlYXBpcy5jb20vbWFwcy9hcGkvc3RhdGljbWFwP2NlbnRlcj0ke21hcC5vcmlnaW4ubGF0fSwke21hcC5vcmlnaW4ubG5nfVxyXG4gICAgJnpvb209JHttYXAuem9vbSAtIDJ9XHJcbiAgICAmc2l6ZT0ke2hlaWdodCAmJiB3aWR0aCA/IHdpZHRoIDogMzAwfXgke2hlaWdodCAmJiB3aWR0aCA/IGhlaWdodCA6IDMwMH1cclxuICAgICZrZXk9QUl6YVN5QXNLaDRfVFhwWVY1N1NCczdqM2I2cUZjSlVHNmZOSG9VYDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgbmV3IHByaW1hcnkgbWFwXHJcbiAgICpcclxuICAgKiBTZXRzIHRoZSBwcmltYXJ5IG1hcCB0byB0aGF0IHdpdGggdGhlIHBhc3NlZCBpZCxcclxuICAgKlxyXG4gICAqIFNldHMgdGhlIHNlY29uZGFyeSBtYXBzIHRvIGEgbGlzdCBvZiBhbGwgdGhlIG1hcHMgbWludXMgdGhhdCB3aXRoIHRoZSBwYXNzZWQgaWRcclxuICAgKlxyXG4gICAqIEVtaXRzIHRoZSBuZXcgcHJpbWFyeSBtYXBcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2V0TWFwc1dpdGhQcmltYXJ5SWQoaWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy50ZW1wU3RvcmFnZS5TZXRMYXN0VXNlZElkKGlkKTtcclxuICAgIHRoaXMucHJpbWFyeU1hcCA9IHRoaXMudGVtcFN0b3JhZ2UuR2V0TWFwQnlJZChpZCk7XHJcbiAgICB0aGlzLm1hcExpc3QgPSB0aGlzLnRlbXBTdG9yYWdlLkdldE1hcExpc3QoKS5maWx0ZXIobWFwID0+IG1hcC5pZCAhPT0gaWQpO1xyXG4gICAgdGhpcy5NYXBDaGFuZ2VkLmVtaXQodGhpcy5wcmltYXJ5TWFwKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYW1ibC1vbi9sY3UtYW1ibC1vbi1jb21tb24vIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvbWFwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQUUxRDtJQWtERSxlQUFlO0lBRWYsb0JBQXNCLFdBQStCLEVBQVksU0FBeUI7UUFBMUYsaUJBS0M7UUFMcUIsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQVksY0FBUyxHQUFULFNBQVMsQ0FBZ0I7Ozs7O1FBOUJuRixnQkFBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQzs7OztRQVVwRyxrQkFBYSxHQUFzQixJQUFJLE9BQU8sRUFBWSxDQUFDO1FBRTNELDJCQUFzQixHQUF1QixJQUFJLE9BQU8sRUFBYSxDQUFDOzs7O1FBS3RFLHFCQUFnQixHQUFxQixFQUFFLENBQUM7UUFFeEMsb0JBQWUsR0FBRyxFQUFFLENBQUM7Ozs7UUFPckIsZUFBVSxHQUFpQixTQUFTLENBQUMsbUJBQW1CLENBQUM7UUFLOUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMs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Q0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNOzs7O1FBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBYixDQUFhLEVBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7Z0JBdlNGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozs7Z0JBTFEsa0JBQWtCO2dCQUNsQixjQUFjOzs7cUJBTnZCO0NBaVRDLEFBelNELElBeVNDO1NBdFNZLFVBQVU7Ozs7Ozs7SUFPckIsZ0NBQW9DOzs7Ozs7SUFLcEMsNkJBQXdDOzs7OztJQU94QyxpQ0FBMkc7Ozs7O0lBSzNHLGdDQUErQzs7Ozs7SUFLL0MsbUNBQWtFOztJQUVsRSw0Q0FBNkU7Ozs7O0lBSzdFLHNDQUErQzs7SUFFL0MscUNBQTRCOztJQUU1QixtQ0FBZ0Q7Ozs7O0lBS2hELGdDQUFnRTs7Ozs7SUFJcEQsaUNBQXlDOzs7OztJQUFFLCtCQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJbmRpdmlkdWFsTWFwLCBNYXJrZXJJbmZvLCBNYXBNYXJrZXIgfSBmcm9tICdAbG93Y29kZXVuaXQvbGN1LW1hcC1jb21tb24nO1xyXG5pbXBvcnQgeyBUaHVtYm5haWxMaXN0TW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvdGh1bWJuYWlsLWxpc3QubW9kZWwnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uL3V0aWxzL2NvbnN0YW50cy9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBUZW1wU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3RlbXAuc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9jYXRpb25Mb2FkZXIgfSBmcm9tICcuLi91dGlscy9sb2NhdGlvbi1sb2FkZXInO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFwU2VydmljZSB7XHJcblxyXG4gIC8vIEZJRUxEU1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgcHJpbWFyeSBtYXAgdG8gYmUgZGlzcGxheWVkIC0gcmVwcmVzZW50cyB0aGUgY3VycmVudCBtYXAgYmVpbmcgZGlzcGxheWVkXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHByaW1hcnlNYXA6IEluZGl2aWR1YWxNYXA7XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3Qgb2Ygc2Vjb25kYXJ5IG1hcHMgYXZhaWxhYmxlIHRvIGNob29zZSBhcyBwcmltYXJ5IGFuZCBhbHNvIGZvciB1c2UgYXMgbGF5ZXJzIGluIHRoZSBwcmltYXJ5IG1hcFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBtYXBMaXN0OiBBcnJheTxJbmRpdmlkdWFsTWFwPjtcclxuXHJcbiAgLy8gUFJPUEVSVElFU1xyXG5cclxuICAvKipcclxuICAgKiBDdXJhdGVkIGxpc3Qgb2YgYW1ibF9vbiBsb2NhdGlvbiBtYXJrZXJzXHJcbiAgICovXHJcbiAgcHVibGljIEN1cmF0ZWRMaXN0ID0gdGhpcy5sb2NMb2FkZXIuQ3JlYXRlTGF5ZXIoQ29uc3RhbnRzLkxPQ0FUSU9OU19UT19MT0FELCBDb25zdGFudHMuTUFQX0NPTkZJR19UT19MT0FEKTtcclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHMgbmV3IHByaW1hcnkgbWFwIGFueSB0aW1lIHRoZSBtYXBzIChwcmltYXJ5IGFuZCBzZWNvbmRhcnkpIGFyZSBjaGFuZ2VkXHJcbiAgICovXHJcbiAgcHVibGljIE1hcENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxJbmRpdmlkdWFsTWFwPjtcclxuXHJcbiAgLyoqXHJcbiAgICogU3ViamVjdCB0aGF0IGVtaXRzIGxhdC9sbmcgZm9yIG1hcCBwYW5uaW5nXHJcbiAgICovXHJcbiAgcHVibGljIExhdExuZ0VtaXR0ZXI6IFN1YmplY3Q8bnVtYmVyW10+ID0gbmV3IFN1YmplY3Q8bnVtYmVyW10+KCk7XHJcblxyXG4gIHB1YmxpYyBCYXNpY0luZm9XaW5kb3dFbWl0dGVyOiBTdWJqZWN0PE1hcE1hcmtlcj4gPSBuZXcgU3ViamVjdDxNYXBNYXJrZXI+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3Qgb2YgYWN0aXZlIHNlY29uZGFyeSBsb2NhdGlvbnMgd2hpY2ggYXJlIGN1cnJlbnRseSBkaXNwbGF5ZWQgb24gdGhlIGN1cnJlbnQgbWFwXHJcbiAgICovXHJcbiAgcHVibGljIFZpc2libGVMb2NhdGlvbnM6IEFycmF5PE1hcE1hcmtlcj4gPSBbXTtcclxuXHJcbiAgcHVibGljIExlZ2VuZExvY2F0aW9ucyA9IFtdO1xyXG5cclxuICBwdWJsaWMgVGh1bWJuYWlsTGlzdDogQXJyYXk8VGh1bWJuYWlsTGlzdE1vZGVsPjtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGxpc3Qgb2YgYXZhaWxhYmxlIG1hcmtlcnMgZm9yIHVzZSBpbiB0aGUgbWFwXHJcbiAgICovXHJcbiAgcHVibGljIE1hcmtlckxpc3Q6IE1hcmtlckluZm9bXSA9IENvbnN0YW50cy5ERUZBVUxUX01BUktFUl9JTkZPO1xyXG5cclxuICAvLyBDT05TVFJVQ1RPUlNcclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHRlbXBTdG9yYWdlOiBUZW1wU3RvcmFnZVNlcnZpY2UsIHByb3RlY3RlZCBsb2NMb2FkZXI6IExvY2F0aW9uTG9hZGVyKSB7XHJcbiAgICB0aGlzLnByaW1hcnlNYXAgPSB0aGlzLnRlbXBTdG9yYWdlLkdldExhc3RVc2VkSWQoKSAhPT0gJycgPyB0aGlzLnRlbXBTdG9yYWdlLkdldE1hcEJ5SWQodGhpcy50ZW1wU3RvcmFnZS5HZXRMYXN0VXNlZElkKCkpIDogdGhpcy50ZW1wU3RvcmFnZS5HZXRNYXBMaXN0KClbMF07XHJcbiAgICB0aGlzLm1hcExpc3QgPSB0aGlzLnRlbXBTdG9yYWdlLkdldE1hcExpc3QoKS5maWx0ZXIobWFwID0+IG1hcC5pZCAhPT0gdGhpcy5wcmltYXJ5TWFwLmlkKTtcclxuICAgIHRoaXMuTWFwQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SW5kaXZpZHVhbE1hcD4oKTtcclxuICAgIC8vY29uc29sZS5sb2coXCJjb25zdHJ1Y3RvciBjYWxsZWRcIik7XHJcbiAgfVxyXG5cclxuICAvLyBMSUZFIENZQ0xFXHJcblxyXG4gIC8vIEFQSSBNRVRIT0RTXHJcblxyXG4gIHB1YmxpYyBHZXRMZWdlbmRMb2NhdGlvbnMoKSB7XHJcbiAgICAvL3RoaXMuTGVnZW5kTG9jYXRpb25zID0gdGhpcy50ZW1wU3RvcmFnZS5HZXRMb2NhdGlvbkxlZ2VuZCgpO1xyXG4gICAgcmV0dXJuIHRoaXMuTGVnZW5kTG9jYXRpb25zO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGlzIG1hcGxpc3QgbGlzdCBvZiB0aHVtYm5haWxzIGFuZCB0aGVpciBpbmZvXHJcbiAgICovXHJcbiAgcHVibGljIEdldFRodW1ibmFpbExpc3QoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5UaHVtYm5haWxMaXN0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgcHJpbWFyeSBtYXAgdG8gYmUgZGlzcGxheWVkXHJcbiAgICovXHJcbiAgcHVibGljIEdldFByaW1hcnlNYXAoKTogSW5kaXZpZHVhbE1hcCB7XHJcbiAgICByZXR1cm4gdGhpcy5wcmltYXJ5TWFwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgbGlzdCBvZiBzZWNvbmRhcnkgKG5vbi1wcmltYXJ5KSBtYXBzXHJcbiAgICovXHJcbiAgcHVibGljIEdldE1hcExpc3QoKTogQXJyYXk8SW5kaXZpZHVhbE1hcD4ge1xyXG4gICAgLy8gcmV0dXJuIHRoaXMubWFwTGlzdDtcclxuICAgIHJldHVybiB0aGlzLm1hcExpc3Q7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhlIG1hcHMgaW4gdGhlIGRiXHJcbiAgICovXHJcbiAgcHVibGljIEdldEFsbE1hcHMoKTogQXJyYXk8SW5kaXZpZHVhbE1hcD4ge1xyXG4gICAgcmV0dXJuIHRoaXMudGVtcFN0b3JhZ2UuR2V0TWFwTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgbWFwIHRvIHJldHJpZXZlXHJcbiAgICogXHJcbiAgICogUmV0dXJucyBhIHNwZWNpZmljIG1hcCB3aXRoIGEgc3BlY2lmaWMgaWRcclxuICAgKi9cclxuICBwdWJsaWMgR2V0TWFwQnlJZChpZCk6IEluZGl2aWR1YWxNYXAge1xyXG4gICAgcmV0dXJuIHRoaXMubWFwTGlzdC5maW5kKG1hcCA9PiBtYXAuaWQgPT09IGlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIG1hcmtlcnMgZm9yIHVzZSBpbiBtYXBcclxuICAgKiBcclxuICAgKiBUaGlzIHdpbGwgY2FsbCBhIGJhY2sgZW5kIHNlcnZpY2UgZXZlbnR1YWxseSBhbmQgdGhlbiBmb3JtYXQgdGhlIHJlc3VsdHMgYWNjb3JkaW5nbHlcclxuICAgKi9cclxuICBwdWJsaWMgR2V0TWFya2VyTGlzdCgpOiBNYXJrZXJJbmZvW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuTWFya2VyTGlzdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBtYXAgVGhlIG1hcCB0byBhZGRcclxuICAgKiBcclxuICAgKiBBZGRzIHRoZSBtYXAgdG8gdGhlIG1hcCBhcnJheVxyXG4gICAqL1xyXG4gIHB1YmxpYyBBZGRNYXAobWFwKTogdm9pZCB7XHJcbiAgICB0aGlzLnRlbXBTdG9yYWdlLkFkZE1hcFRvTGlzdChtYXApO1xyXG4gICAgdGhpcy5zZXRNYXBzV2l0aFByaW1hcnlJZChtYXAuaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGxhdCBUaGUgbGF0aXR1ZGUgdG8gcGFuIHRvXHJcbiAgICogQHBhcmFtIGxuZyBUaGUgbG9uZ2l0dWRlIHRvIHBhbiB0b1xyXG4gICAqIFxyXG4gICAqIFRha2VzIGEgbGF0L2xuZyBhbmQgZW1pdHMgZXZlbnQgZm9yIG1hcCB0byBsaXN0ZW4gdG9cclxuICAgKi9cclxuICBwdWJsaWMgQ2hhbmdlTGF0TG5nKGxhdCwgbG5nKTogdm9pZCB7XHJcbiAgICB0aGlzLkxhdExuZ0VtaXR0ZXIubmV4dChbbGF0LCBsbmddKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQHBhcmFtIG1hcmtlclxyXG4gICAqIFxyXG4gICAqIFRha2VzIGEgbWFya2VyIGZyb20gdGhlIGxlZ2VuZCBhbmQgc2VuZCB0byBsY3UtbWFwXHJcbiAgICovXHJcbiAgcHVibGljIERpc3BsYXlCYXNpY0luZm8obWFya2VyOiBNYXBNYXJrZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuQmFzaWNJbmZvV2luZG93RW1pdHRlci5uZXh0KG1hcmtlcik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gbGlzdCBUaGUgbGlzdCBvZiB2aXNpYmxlIGxvY2F0aW9uc1xyXG4gICAqIFxyXG4gICAqIFdoZW4gbWFwIHVwZGF0ZXMgdGhlIHZpc2libGUgbG9jYXRpb25zLCB0aGlzLlZpc2libGVMb2NhdGlvbnMgd2lsbCBiZSB1cGRhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIFVwZGF0ZVZpc2libGVMb2NhdGlvbnMobGlzdCk6IHZvaWQge1xyXG4gICAgdGhpcy5WaXNpYmxlTG9jYXRpb25zID0gdGhpcy5DaGVja0ZvckR1cGxpY2F0ZXMobGlzdCk7XHJcbiAgICBpZiAodGhpcy5WaXNpYmxlTG9jYXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5VcGRhdGVMZWdlbmRMb2NhdGlvbnModGhpcy5WaXNpYmxlTG9jYXRpb25zKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIHRoZSBsZWdlbmQgYXJyYXlcclxuICAgKiBAcGFyYW0gbGlzdCBcclxuICAgKi9cclxuICBwdWJsaWMgVXBkYXRlTGVnZW5kTG9jYXRpb25zKGxpc3QpOiB2b2lkIHtcclxuICAgIC8vY29uc29sZS5sb2coXCJWaXNpYmxlIGxvY2F0aW9uc1wiLCB0aGlzLlZpc2libGVMb2NhdGlvbnMpO1xyXG4gICAgdGhpcy5MZWdlbmRMb2NhdGlvbnMgPSBsaXN0O1xyXG4gIH1cclxuXHJcbiAgQ2hlY2tGb3JEdXBsaWNhdGVzKGxpc3Q6IEFycmF5PE1hcE1hcmtlcj4pOiBBcnJheTxNYXBNYXJrZXI+IHtcclxuICAgIC8vY29uc29sZS5sb2coXCJDaGVja2luZyBmb3IgZHVwbGljYXRlcyBpbjogXCIsIGxpc3QpO1xyXG4gICAgbGV0IHRlbXA6IEFycmF5PE1hcE1hcmtlcj4gPSBuZXcgQXJyYXk8TWFwTWFya2VyPigpO1xyXG5cclxuICAgIGxldCBpZHMgPSBsaXN0Lm1hcChmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICByZXR1cm4gaXRlbS5pZDtcclxuICAgIH0pO1xyXG4gICAgbGV0IGlkc1VuaXF1ZSA9IGlkcy5maWx0ZXIoZnVuY3Rpb24oaXRlbSwgaW5kZXgpe1xyXG4gICAgICByZXR1cm4gaWRzLmluZGV4T2YoaXRlbSkgPj0gaW5kZXg7XHJcbiAgICB9KTtcclxuICAgIC8vY29uc29sZS5sb2coXCJ1bmlxdWUgaWRzIGxlbmd0aCA9IFwiLCBpZHNVbmlxdWUubGVuZ3RoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaWRzVW5pcXVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCB0ZW1wTWFya2VyID0gdGhpcy50ZW1wU3RvcmFnZS5HZXRMb2NhdGlvbkJ5SWQoaWRzVW5pcXVlW2ldKTtcclxuICAgICAgLy9pZiBpdHMgaW4gdGhlIG1hc3Rlcmxpc3RcclxuICAgICAgaWYodGVtcE1hcmtlcil7XHJcbiAgICAgICAgdGVtcC5wdXNoKHRlbXBNYXJrZXIpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vaWYgaXRzIG5vdCBpbiB0aGUgbWFzdGVybGlzdFxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHRlbXAucHVzaChsaXN0LmZpbHRlcihpdGVtPT4gaXRlbS5pZCA9PT0gaWRzVW5pcXVlW2ldKVswXSk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICB9XHJcbiAgICAvL2NvbnNvbGUubG9nKFwiQ2hlY2tlZCBmb3IgZHVwbGljYXRlc1wiLCB0ZW1wKTtcclxuICAgIHJldHVybiB0ZW1wO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGxpc3Qgc2F2ZXMgdGhlIGxlZ2VuZCB0byBsb2NhbCBzdG9yYWdlXHJcbiAgICovXHJcbiAgcHVibGljIFNhdmVMZWdlbmRMb2NhdGlvbnMobGlzdCk6IHZvaWQge1xyXG4gICAgdGhpcy50ZW1wU3RvcmFnZS5TYXZlTG9jYXRpb25MZWdlbmQobGlzdCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gbWFwIFRoZSBtYXAgdG8gcmVwbGFjZSB0aGUgb25sZCBvbmUgd2l0aFxyXG4gICAqIFxyXG4gICAqIFRoaXMgcmVwbGFjZXMgdGhlIG1hcCBpbiB0aGUgZGIgd2l0aCB0aGUgbWFwIChiYXNlZCBvbiBpZClcclxuICAgKi9cclxuICBwdWJsaWMgUmVwbGFjZU1hcChtYXA6IEluZGl2aWR1YWxNYXApOiB2b2lkIHtcclxuICAgIHRoaXMudGVtcFN0b3JhZ2UuUmVwbGFjZU1hcChtYXApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIExpc3RPZk1hcHMgVGhlIGxpc3Qgb2YgbWFwcyB0aGF0IHlvdSB3b3VsZCBsaWtlIHRvIGdldCB0aGUgdGh1bWJuYWlscyBhbmQgb3RoZXIgaW5mbyBmb3JcclxuICAgKiBcclxuICAgKiBhIHRodW1ibmFpbCBsaXN0IGNvbnRhaW5zIHRoZSBpbWcgdXJsLCB0aGUgdGl0bGUgb2YgdGhlIG1hcCwgYW5kIHRoZSBsYXQgYW5kIGxvbmcgb2YgdGhlIG9yZ2luXHJcbiAgICogXHJcbiAgICovXHJcbiAgcHVibGljIEJ1aWxkVGh1bWJuYWlsTGlzdChMaXN0T2ZNYXBzOiBBcnJheTxJbmRpdmlkdWFsTWFwPik6IEFycmF5PFRodW1ibmFpbExpc3RNb2RlbD4ge1xyXG4gICAgdmFyIHRlbXBUaHVtYm5haWxMaXN0ID0gbmV3IEFycmF5PFRodW1ibmFpbExpc3RNb2RlbD4oKTtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTGlzdE9mTWFwcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB2YXIgdGVtcCA9IG5ldyBUaHVtYm5haWxMaXN0TW9kZWwoTGlzdE9mTWFwc1tpXSwgdGhpcy5nZXRNYXBUaHVtYm5haWwoTGlzdE9mTWFwc1tpXSwgMjAwLCAyMDApLCBMaXN0T2ZNYXBzW2ldLnRpdGxlLCBMaXN0T2ZNYXBzW2ldLm9yaWdpbi5sYXQsIExpc3RPZk1hcHNbaV0ub3JpZ2luLmxuZyk7XHJcbiAgICAgIHRlbXBUaHVtYm5haWxMaXN0LnB1c2godGVtcCk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgc29ydHMgYmFzZWQgb24gdGhlIFRpdGxlIG9mIHRoZSBtYXAgc28gdGhlIHRodW1ibmFpbCBsaXN0IGlzIGluIGFscGhhYmV0aWNhbCBvcmRlclxyXG4gICAgICovXHJcbiAgICB0ZW1wVGh1bWJuYWlsTGlzdC5zb3J0KCh0MSwgdDIpID0+IHtcclxuICAgICAgcmV0dXJuIHQxLlRpdGxlLnRvVXBwZXJDYXNlKCkgPiB0Mi5UaXRsZS50b1VwcGVyQ2FzZSgpID8gMSA6IC0xO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGVtcFRodW1ibmFpbExpc3Q7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBuZXcgcHJpbWFyeSBtYXBcclxuICAgKiBcclxuICAgKiBDYWxscyB0aGUgcHJvdGVjdGVkIG1ldGhvZCBcInNldE1hcHNXaXRoUHJpbWFyeUlkXCJcclxuICAgKi9cclxuICBwdWJsaWMgUHJpbWFyeU1hcENoYW5nZWQoaWQpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0TWFwc1dpdGhQcmltYXJ5SWQoaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZXRlcyBhbGwgdGhlIG1hcHMgZnJvbSB0aGUgZGIgKGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkpXHJcbiAgICovXHJcbiAgcHVibGljIERlbGV0ZU1hcHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRlbXBTdG9yYWdlLkRlbGV0ZU1hcExpc3QoKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICogQ3VyYXRlZCBsaXN0IG9mIGFtYmxfb24gbG9jYXRpb24gbWFya2Vyc1xyXG4gKi9cclxuICBwdWJsaWMgR2V0Q3VyYXRlZExpc3QoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5sb2NMb2FkZXIuQ3JlYXRlTGF5ZXIoQ29uc3RhbnRzLkpTT05fREFUQV9GT1JfTE9DQVRJT05fQ09OVkVSU0lPTiwgQ29uc3RhbnRzLk1BUF9DT05GSUdfVE9fTE9BRCk7XHJcbiAgfVxyXG4gIC8vIEhFTFBFUlNcclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbWFwIFRoZSBtYXAgY29uZmlndXJhdGlvbiBmcm9tIHdoaWNoIHlvdSB3YW50IHRvIGNyZWF0ZSBhIHRodW1ibmFpbFxyXG4gICAqIEBwYXJhbSB3aWR0aCBPcHRpb25hbCB3aWR0aCBwYXJhbWV0ZXIgKG11c3QgYWxzbyBpbmNsdWRlIGhlaWd0aClcclxuICAgKiBAcGFyYW0gaGVpZ2h0IE9wdGlvbmFsIGhlaWdodCBwYXJhbWV0ZXIgKG11c3QgYWxzbyBpbmNsdWRlIHdpZHRoKVxyXG4gICAqXHJcbiAgICogVGFrZXMgYSBtYXAgY29uZmlndXJhdGlvbiBmaWxlIGFuZCByZXR1cm5zIGEgZ29vZ2xlIG1hcHMgc3RhdGljIG1hcCB0byBiZSB1c2VkIGFzIGEgdGh1bWJuYWlsXHJcbiAgICpcclxuICAgKiBJbiBvcmRlciB0byBzcGVjaWZ5IGhlaWdodCBhbmQgd2lkdGgsIHlvdSBtdXN0IHNwZWNpZnkgQk9USCwgb3RoZXJ3aXNlLCB0aGUgZGVmYXVsdCBpcyAzMDB4MzAwXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGdldE1hcFRodW1ibmFpbChtYXA6IEluZGl2aWR1YWxNYXAsIHdpZHRoPywgaGVpZ2h0Pyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYGh0dHBzOi8vbWFwcy5nb29nbGVhcGlzLmNvbS9tYXBzL2FwaS9zdGF0aWNtYXA/Y2VudGVyPSR7bWFwLm9yaWdpbi5sYXR9LCR7bWFwLm9yaWdpbi5sbmd9XHJcbiAgICAmem9vbT0ke21hcC56b29tIC0gMn1cclxuICAgICZzaXplPSR7aGVpZ2h0ICYmIHdpZHRoID8gd2lkdGggOiAzMDB9eCR7aGVpZ2h0ICYmIHdpZHRoID8gaGVpZ2h0IDogMzAwfVxyXG4gICAgJmtleT1BSXphU3lBc0toNF9UWHBZVjU3U0JzN2ozYjZxRmNKVUc2Zk5Ib1VgO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBuZXcgcHJpbWFyeSBtYXBcclxuICAgKlxyXG4gICAqIFNldHMgdGhlIHByaW1hcnkgbWFwIHRvIHRoYXQgd2l0aCB0aGUgcGFzc2VkIGlkLFxyXG4gICAqXHJcbiAgICogU2V0cyB0aGUgc2Vjb25kYXJ5IG1hcHMgdG8gYSBsaXN0IG9mIGFsbCB0aGUgbWFwcyBtaW51cyB0aGF0IHdpdGggdGhlIHBhc3NlZCBpZFxyXG4gICAqXHJcbiAgICogRW1pdHMgdGhlIG5ldyBwcmltYXJ5IG1hcFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBzZXRNYXBzV2l0aFByaW1hcnlJZChpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnRlbXBTdG9yYWdlLlNldExhc3RVc2VkSWQoaWQpO1xyXG4gICAgdGhpcy5wcmltYXJ5TWFwID0gdGhpcy50ZW1wU3RvcmFnZS5HZXRNYXBCeUlkKGlkKTtcclxuICAgIHRoaXMubWFwTGlzdCA9IHRoaXMudGVtcFN0b3JhZ2UuR2V0TWFwTGlzdCgpLmZpbHRlcihtYXAgPT4gbWFwLmlkICE9PSBpZCk7XHJcbiAgICB0aGlzLk1hcENoYW5nZWQuZW1pdCh0aGlzLnByaW1hcnlNYXApO1xyXG4gIH1cclxuXHJcbn1cclxuIl19

@@ -101,7 +101,2 @@ import { EventEmitter } from '@angular/core';

/**
* Checks to insure that the location displayed in the legend matches that of the visible locations
*
* @param marker
*/
/**
* Updates the legend array

@@ -108,0 +103,0 @@ * @param list

2

package.json
{
"name": "@ambl-on/lcu-ambl-on-common",
"version": "0.1.323-my-atlas",
"version": "0.1.324-my-atlas",
"peerDependencies": {

@@ -5,0 +5,0 @@ "@angular/common": "^7.2.0",

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc