Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

gojs-angular

Package Overview
Dependencies
Maintainers
1
Versions
36
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

gojs-angular - npm Package Compare versions

Comparing version 1.0.13 to 1.0.14

gojs-angular-1.0.14.tgz

7

bundles/gojs-angular.umd.js

@@ -276,5 +276,7 @@ (function (global, factory) {

this.diagram.model.startTransaction('update data');
// update modelData first, in case bindings on nodes / links depend on model data
this.diagram.model.assignAllDataProperties(this.diagram.model.modelData, this.modelData);
// merge node / link data
DiagramComponent.mergeChanges(this, nodeDiffs, "n");
DiagramComponent.mergeChanges(this, linkDiffs, "l");
this.diagram.model.assignAllDataProperties(this.diagram.model.modelData, this.modelData);
this.diagram.model.commitTransaction('update data');

@@ -493,5 +495,6 @@ // reset the model change listener

this.palette.model.startTransaction('update data');
// update modelData first, in case bindings on nodes / links depend on model data
this.palette.model.assignAllDataProperties(this.palette.model.modelData, this.modelData);
DiagramComponent.mergeChanges(this, nodeDiffs, "n");
DiagramComponent.mergeChanges(this, linkDiffs, "l");
this.palette.model.assignAllDataProperties(this.palette.model.modelData, this.modelData);
this.palette.model.commitTransaction('update data');

@@ -498,0 +501,0 @@ // reset the model change listener

@@ -1,2 +0,2 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("gojs")):"function"==typeof define&&define.amd?define("gojs-angular",["exports","@angular/core","gojs"],t):t((e=e||self)["gojs-angular"]={},e.ng.core,e.go)}(this,(function(e,t,a){"use strict";var i=function(){function e(e,a){this._kvdiffers=e,this.zone=a,this.linkDataArray=null,this.modelData=null,this.modelChangedListener=null,this.skipsDiagramUpdate=!1,this.modelChange=new t.EventEmitter,this.diagram=null,this._ndaDiffer=this._kvdiffers.find([]).create(),this._ldaDiffer=this._kvdiffers.find([]).create()}return e.prototype.ngAfterViewInit=function(){var e=this;this.diagram=this.initDiagram(),this.diagram.addEventListener=function(t,i,n,r){var o=a.Diagram.prototype.addEventListener;"mousemove"===i?e.zone.runOutsideAngular((function(){return o.call(e,t,i,n,r)})):e.zone.run((function(){o.call(e,t,i,n,r)}))};var t=this.diagramDiv.nativeElement;null!==t&&(this.diagram.div=t,this.diagram.delayInitialization((function(){e.diagram.model.commit((function(t){t.mergeNodeDataArray(t.cloneDeep(e.nodeDataArray)),e.linkDataArray&&t instanceof a.GraphLinksModel&&t.mergeLinkDataArray(t.cloneDeep(e.linkDataArray)),e.modelData&&t.assignAllDataProperties(t.modelData,e.modelData),e.diagram.layoutDiagram(!0)}),null)})),this.modelChangedListener=function(t){t.isTransactionFinished&&e.diagram&&e.diagram.model&&!e.diagram.model.isReadOnly&&e.zone.run((function(){var a=t.model.toIncrementalData(t);e.modelChange.emit(a)}))},this.diagram.addModelChangedListener(this.modelChangedListener))},e.mergeChanges=function(t,a,i){var n=t instanceof e?t.diagram:t.palette;n&&n.model&&a&&(a.forEachAddedItem((function(e){switch(i){case"n":n.model.addNodeData(e.currentValue);break;case"l":n.model.addLinkData(e.currentValue)}})),a.forEachRemovedItem((function(e){switch(i){case"n":var t=n.model.nodeKeyProperty.toString(),a=n.findNodeForKey(e.previousValue[t]);a&&n.remove(a);break;case"l":var r=n.model.linkKeyProperty.toString(),o=n.findLinkForKey(e.previousValue[r]);o&&n.remove(o)}})),a.forEachChangedItem((function(e){if(!function e(t,a){for(var i in t){if(t.hasOwnProperty(i)!==a.hasOwnProperty(i))return!1;switch(typeof t[i]){case"object":if(!e(t[i],a[i]))return!1;break;default:if(t[i]!==a[i])return!1}}for(var i in a)if(void 0===t[i])return!1;return!0}(e.currentValue,e.previousValue))switch(i){case"n":var t=n.model.nodeKeyProperty.toString(),a=n.findNodeForKey(e.previousValue[t]);a&&n.model.assignAllDataProperties(a.data,e.currentValue);break;case"l":var r=n.model.linkKeyProperty.toString(),o=n.findLinkForKey(e.previousValue[r]);o&&n.model.assignAllDataProperties(o.data,e.currentValue)}})))},e.prototype.ngDoCheck=function(){if(this.diagram&&this.diagram.model){var t=this._ndaDiffer.diff(this.nodeDataArray),a=this._ldaDiffer.diff(this.linkDataArray);this.skipsDiagramUpdate||(null!==this.modelChangedListener&&this.diagram.model.removeChangedListener(this.modelChangedListener),this.diagram.model.startTransaction("update data"),e.mergeChanges(this,t,"n"),e.mergeChanges(this,a,"l"),this.diagram.model.assignAllDataProperties(this.diagram.model.modelData,this.modelData),this.diagram.model.commitTransaction("update data"),null!==this.modelChangedListener&&this.diagram.model.addChangedListener(this.modelChangedListener))}},e.prototype.ngOnDestroy=function(){this.diagram.div=null},e}();i.decorators=[{type:t.Component,args:[{selector:"gojs-diagram",template:"<div #ngDiagram [className]=divClassName></div>"}]}],i.ctorParameters=function(){return[{type:t.KeyValueDiffers},{type:t.NgZone}]},i.propDecorators={initDiagram:[{type:t.Input}],nodeDataArray:[{type:t.Input}],linkDataArray:[{type:t.Input}],modelData:[{type:t.Input}],divClassName:[{type:t.Input}],skipsDiagramUpdate:[{type:t.Input}],modelChange:[{type:t.Output}],diagramDiv:[{type:t.ViewChild,args:["ngDiagram",{static:!0}]}]};var n=function(){function e(e,a){this._kvdiffers=e,this.zone=a,this.linkDataArray=null,this.modelData=null,this.skipsPaletteUpdate=!1,this.modelChangedListener=null,this.modelChange=new t.EventEmitter,this.palette=null,this._ndaDiffer=this._kvdiffers.find([]).create(),this._ldaDiffer=this._kvdiffers.find([]).create()}return e.prototype.ngAfterViewInit=function(){var e=this;if(this.paletteDiv){this.palette=this.initPalette(),this.palette.addEventListener=function(t,i,n,r){var o=a.Diagram.prototype.addEventListener;"mousemove"===i?e.zone.runOutsideAngular((function(){return o.call(e,t,i,n,r)})):e.zone.run((function(){o.call(e,t,i,n,r)}))};var t=this.paletteDiv.nativeElement;this.palette.div=t,this.palette.delayInitialization((function(){e.palette.model.commit((function(t){t.mergeNodeDataArray(t.cloneDeep(e.nodeDataArray)),e.linkDataArray&&t instanceof a.GraphLinksModel&&t.mergeLinkDataArray(t.cloneDeep(e.linkDataArray)),e.modelData&&t.assignAllDataProperties(t.modelData,e.modelData),e.palette.layoutDiagram(!0)}),null)})),this.modelChangedListener=function(t){t.isTransactionFinished&&e.palette&&e.palette.model&&!e.palette.model.isReadOnly&&e.zone.run((function(){var a=t.model.toIncrementalData(t);e.modelChange.emit(a)}))},this.palette.addModelChangedListener(this.modelChangedListener)}},e.prototype.ngDoCheck=function(){if(this.palette&&this.palette.model){var e=this._ndaDiffer.diff(this.nodeDataArray),t=this._ldaDiffer.diff(this.linkDataArray);this.skipsPaletteUpdate||(null!==this.modelChangedListener&&this.palette.model.removeChangedListener(this.modelChangedListener),this.palette.model.startTransaction("update data"),i.mergeChanges(this,e,"n"),i.mergeChanges(this,t,"l"),this.palette.model.assignAllDataProperties(this.palette.model.modelData,this.modelData),this.palette.model.commitTransaction("update data"),null!==this.modelChangedListener&&this.palette.model.addChangedListener(this.modelChangedListener))}},e.prototype.ngOnDestroy=function(){this.palette.div=null},e}();n.decorators=[{type:t.Component,args:[{selector:"gojs-palette",template:"<div #ngPalette [className]=divClassName></div>"}]}],n.ctorParameters=function(){return[{type:t.KeyValueDiffers},{type:t.NgZone}]},n.propDecorators={initPalette:[{type:t.Input}],nodeDataArray:[{type:t.Input}],linkDataArray:[{type:t.Input}],modelData:[{type:t.Input}],divClassName:[{type:t.Input}],skipsPaletteUpdate:[{type:t.Input}],modelChange:[{type:t.Output}],paletteDiv:[{type:t.ViewChild,args:["ngPalette",{static:!0}]}]};var r=function(){function e(e){this.zone=e,this.observedDiagram=null,this.overview=null}return e.prototype.ngAfterViewInit=function(){var e=this;this.overviewDiv&&(this.initOverview?this.overview=this.initOverview():(this.overview=new a.Overview,this.overview.contentAlignment=a.Spot.Center),this.overview.addEventListener=function(t,i,n,r){var o=a.Diagram.prototype.addEventListener;"mousemove"===i?e.zone.runOutsideAngular((function(){return o.call(e,t,i,n,r)})):e.zone.run((function(){o.call(e,t,i,n,r)}))},this.overview.div=this.overviewDiv.nativeElement)},e.prototype.ngOnChanges=function(e){this.overview&&e&&e.observedDiagram&&e.observedDiagram.currentValue!==e.observedDiagram.previousValue&&(this.overview.observed=e.observedDiagram.currentValue)},e.prototype.ngOnDestroy=function(){this.overview.div=null},e}();r.decorators=[{type:t.Component,args:[{selector:"gojs-overview",template:"<div #ngOverview [className]=divClassName></div>"}]}],r.ctorParameters=function(){return[{type:t.NgZone}]},r.propDecorators={initOverview:[{type:t.Input}],divClassName:[{type:t.Input}],observedDiagram:[{type:t.Input}],overviewDiv:[{type:t.ViewChild,args:["ngOverview",{static:!0}]}]};var o=function(){};o.decorators=[{type:t.NgModule,args:[{declarations:[i,r,n],imports:[],exports:[i,r,n]}]}];var s=function(){function e(){}return e.syncNodeData=function(e,t,i){if(!e)return t;if(!e.modifiedNodeData&&!e.insertedNodeKeys&&!e.removedNodeKeys)return t;var n=new a.Map;return e.modifiedNodeData&&e.modifiedNodeData.forEach((function(e){var a=i?i.getKeyForNodeData(e):e.key;n.set(a,e);for(var r=0;r<t.length;r++){var o=t[r];(i?i.getKeyForNodeData(o):o.key)===a&&(t[r]=e)}})),e.insertedNodeKeys&&e.insertedNodeKeys.forEach((function(e){var a=n.get(e);a&&t.push(a)})),e.removedNodeKeys&&(t=t.filter((function(t){var a=i?i.getKeyForNodeData(t):t.key;return!e.removedNodeKeys.includes(a)}))),t},e.syncLinkData=function(e,t,i){if(!e)return t;if(!e.modifiedLinkData&&!e.insertedLinkKeys&&!e.removedLinkKeys)return t;var n=new a.Map;return e.modifiedLinkData&&e.modifiedLinkData.forEach((function(e){var a=i?i.getKeyForLinkData(e):e.key;n.set(a,e);for(var r=0;r<t.length;r++){var o=t[r];(i?i.getKeyForLinkData(o):o.key)===a&&(t[r]=e)}})),e.insertedLinkKeys&&e.insertedLinkKeys.forEach((function(e){var a=n.get(e);a&&t.push(a)})),e.removedLinkKeys&&(t=t.filter((function(t){var a=i?i.getKeyForLinkData(t):t.key;return!e.removedLinkKeys.includes(a)}))),t},e.syncModelData=function(e,t){return e&&e.modelData?e.modelData?e.modelData:void 0:t},e}();s.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],s.ctorParameters=function(){return[]},s.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new s},token:s,providedIn:"root"}),e.DataSyncService=s,e.DiagramComponent=i,e.GojsAngularModule=o,e.OverviewComponent=r,e.PaletteComponent=n,Object.defineProperty(e,"__esModule",{value:!0})}));
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("gojs")):"function"==typeof define&&define.amd?define("gojs-angular",["exports","@angular/core","gojs"],t):t((e=e||self)["gojs-angular"]={},e.ng.core,e.go)}(this,(function(e,t,a){"use strict";var i=function(){function e(e,a){this._kvdiffers=e,this.zone=a,this.linkDataArray=null,this.modelData=null,this.modelChangedListener=null,this.skipsDiagramUpdate=!1,this.modelChange=new t.EventEmitter,this.diagram=null,this._ndaDiffer=this._kvdiffers.find([]).create(),this._ldaDiffer=this._kvdiffers.find([]).create()}return e.prototype.ngAfterViewInit=function(){var e=this;this.diagram=this.initDiagram(),this.diagram.addEventListener=function(t,i,n,r){var o=a.Diagram.prototype.addEventListener;"mousemove"===i?e.zone.runOutsideAngular((function(){return o.call(e,t,i,n,r)})):e.zone.run((function(){o.call(e,t,i,n,r)}))};var t=this.diagramDiv.nativeElement;null!==t&&(this.diagram.div=t,this.diagram.delayInitialization((function(){e.diagram.model.commit((function(t){t.mergeNodeDataArray(t.cloneDeep(e.nodeDataArray)),e.linkDataArray&&t instanceof a.GraphLinksModel&&t.mergeLinkDataArray(t.cloneDeep(e.linkDataArray)),e.modelData&&t.assignAllDataProperties(t.modelData,e.modelData),e.diagram.layoutDiagram(!0)}),null)})),this.modelChangedListener=function(t){t.isTransactionFinished&&e.diagram&&e.diagram.model&&!e.diagram.model.isReadOnly&&e.zone.run((function(){var a=t.model.toIncrementalData(t);e.modelChange.emit(a)}))},this.diagram.addModelChangedListener(this.modelChangedListener))},e.mergeChanges=function(t,a,i){var n=t instanceof e?t.diagram:t.palette;n&&n.model&&a&&(a.forEachAddedItem((function(e){switch(i){case"n":n.model.addNodeData(e.currentValue);break;case"l":n.model.addLinkData(e.currentValue)}})),a.forEachRemovedItem((function(e){switch(i){case"n":var t=n.model.nodeKeyProperty.toString(),a=n.findNodeForKey(e.previousValue[t]);a&&n.remove(a);break;case"l":var r=n.model.linkKeyProperty.toString(),o=n.findLinkForKey(e.previousValue[r]);o&&n.remove(o)}})),a.forEachChangedItem((function(e){if(!function e(t,a){for(var i in t){if(t.hasOwnProperty(i)!==a.hasOwnProperty(i))return!1;switch(typeof t[i]){case"object":if(!e(t[i],a[i]))return!1;break;default:if(t[i]!==a[i])return!1}}for(var i in a)if(void 0===t[i])return!1;return!0}(e.currentValue,e.previousValue))switch(i){case"n":var t=n.model.nodeKeyProperty.toString(),a=n.findNodeForKey(e.previousValue[t]);a&&n.model.assignAllDataProperties(a.data,e.currentValue);break;case"l":var r=n.model.linkKeyProperty.toString(),o=n.findLinkForKey(e.previousValue[r]);o&&n.model.assignAllDataProperties(o.data,e.currentValue)}})))},e.prototype.ngDoCheck=function(){if(this.diagram&&this.diagram.model){var t=this._ndaDiffer.diff(this.nodeDataArray),a=this._ldaDiffer.diff(this.linkDataArray);this.skipsDiagramUpdate||(null!==this.modelChangedListener&&this.diagram.model.removeChangedListener(this.modelChangedListener),this.diagram.model.startTransaction("update data"),this.diagram.model.assignAllDataProperties(this.diagram.model.modelData,this.modelData),e.mergeChanges(this,t,"n"),e.mergeChanges(this,a,"l"),this.diagram.model.commitTransaction("update data"),null!==this.modelChangedListener&&this.diagram.model.addChangedListener(this.modelChangedListener))}},e.prototype.ngOnDestroy=function(){this.diagram.div=null},e}();i.decorators=[{type:t.Component,args:[{selector:"gojs-diagram",template:"<div #ngDiagram [className]=divClassName></div>"}]}],i.ctorParameters=function(){return[{type:t.KeyValueDiffers},{type:t.NgZone}]},i.propDecorators={initDiagram:[{type:t.Input}],nodeDataArray:[{type:t.Input}],linkDataArray:[{type:t.Input}],modelData:[{type:t.Input}],divClassName:[{type:t.Input}],skipsDiagramUpdate:[{type:t.Input}],modelChange:[{type:t.Output}],diagramDiv:[{type:t.ViewChild,args:["ngDiagram",{static:!0}]}]};var n=function(){function e(e,a){this._kvdiffers=e,this.zone=a,this.linkDataArray=null,this.modelData=null,this.skipsPaletteUpdate=!1,this.modelChangedListener=null,this.modelChange=new t.EventEmitter,this.palette=null,this._ndaDiffer=this._kvdiffers.find([]).create(),this._ldaDiffer=this._kvdiffers.find([]).create()}return e.prototype.ngAfterViewInit=function(){var e=this;if(this.paletteDiv){this.palette=this.initPalette(),this.palette.addEventListener=function(t,i,n,r){var o=a.Diagram.prototype.addEventListener;"mousemove"===i?e.zone.runOutsideAngular((function(){return o.call(e,t,i,n,r)})):e.zone.run((function(){o.call(e,t,i,n,r)}))};var t=this.paletteDiv.nativeElement;this.palette.div=t,this.palette.delayInitialization((function(){e.palette.model.commit((function(t){t.mergeNodeDataArray(t.cloneDeep(e.nodeDataArray)),e.linkDataArray&&t instanceof a.GraphLinksModel&&t.mergeLinkDataArray(t.cloneDeep(e.linkDataArray)),e.modelData&&t.assignAllDataProperties(t.modelData,e.modelData),e.palette.layoutDiagram(!0)}),null)})),this.modelChangedListener=function(t){t.isTransactionFinished&&e.palette&&e.palette.model&&!e.palette.model.isReadOnly&&e.zone.run((function(){var a=t.model.toIncrementalData(t);e.modelChange.emit(a)}))},this.palette.addModelChangedListener(this.modelChangedListener)}},e.prototype.ngDoCheck=function(){if(this.palette&&this.palette.model){var e=this._ndaDiffer.diff(this.nodeDataArray),t=this._ldaDiffer.diff(this.linkDataArray);this.skipsPaletteUpdate||(null!==this.modelChangedListener&&this.palette.model.removeChangedListener(this.modelChangedListener),this.palette.model.startTransaction("update data"),this.palette.model.assignAllDataProperties(this.palette.model.modelData,this.modelData),i.mergeChanges(this,e,"n"),i.mergeChanges(this,t,"l"),this.palette.model.commitTransaction("update data"),null!==this.modelChangedListener&&this.palette.model.addChangedListener(this.modelChangedListener))}},e.prototype.ngOnDestroy=function(){this.palette.div=null},e}();n.decorators=[{type:t.Component,args:[{selector:"gojs-palette",template:"<div #ngPalette [className]=divClassName></div>"}]}],n.ctorParameters=function(){return[{type:t.KeyValueDiffers},{type:t.NgZone}]},n.propDecorators={initPalette:[{type:t.Input}],nodeDataArray:[{type:t.Input}],linkDataArray:[{type:t.Input}],modelData:[{type:t.Input}],divClassName:[{type:t.Input}],skipsPaletteUpdate:[{type:t.Input}],modelChange:[{type:t.Output}],paletteDiv:[{type:t.ViewChild,args:["ngPalette",{static:!0}]}]};var r=function(){function e(e){this.zone=e,this.observedDiagram=null,this.overview=null}return e.prototype.ngAfterViewInit=function(){var e=this;this.overviewDiv&&(this.initOverview?this.overview=this.initOverview():(this.overview=new a.Overview,this.overview.contentAlignment=a.Spot.Center),this.overview.addEventListener=function(t,i,n,r){var o=a.Diagram.prototype.addEventListener;"mousemove"===i?e.zone.runOutsideAngular((function(){return o.call(e,t,i,n,r)})):e.zone.run((function(){o.call(e,t,i,n,r)}))},this.overview.div=this.overviewDiv.nativeElement)},e.prototype.ngOnChanges=function(e){this.overview&&e&&e.observedDiagram&&e.observedDiagram.currentValue!==e.observedDiagram.previousValue&&(this.overview.observed=e.observedDiagram.currentValue)},e.prototype.ngOnDestroy=function(){this.overview.div=null},e}();r.decorators=[{type:t.Component,args:[{selector:"gojs-overview",template:"<div #ngOverview [className]=divClassName></div>"}]}],r.ctorParameters=function(){return[{type:t.NgZone}]},r.propDecorators={initOverview:[{type:t.Input}],divClassName:[{type:t.Input}],observedDiagram:[{type:t.Input}],overviewDiv:[{type:t.ViewChild,args:["ngOverview",{static:!0}]}]};var o=function(){};o.decorators=[{type:t.NgModule,args:[{declarations:[i,r,n],imports:[],exports:[i,r,n]}]}];var s=function(){function e(){}return e.syncNodeData=function(e,t,i){if(!e)return t;if(!e.modifiedNodeData&&!e.insertedNodeKeys&&!e.removedNodeKeys)return t;var n=new a.Map;return e.modifiedNodeData&&e.modifiedNodeData.forEach((function(e){var a=i?i.getKeyForNodeData(e):e.key;n.set(a,e);for(var r=0;r<t.length;r++){var o=t[r];(i?i.getKeyForNodeData(o):o.key)===a&&(t[r]=e)}})),e.insertedNodeKeys&&e.insertedNodeKeys.forEach((function(e){var a=n.get(e);a&&t.push(a)})),e.removedNodeKeys&&(t=t.filter((function(t){var a=i?i.getKeyForNodeData(t):t.key;return!e.removedNodeKeys.includes(a)}))),t},e.syncLinkData=function(e,t,i){if(!e)return t;if(!e.modifiedLinkData&&!e.insertedLinkKeys&&!e.removedLinkKeys)return t;var n=new a.Map;return e.modifiedLinkData&&e.modifiedLinkData.forEach((function(e){var a=i?i.getKeyForLinkData(e):e.key;n.set(a,e);for(var r=0;r<t.length;r++){var o=t[r];(i?i.getKeyForLinkData(o):o.key)===a&&(t[r]=e)}})),e.insertedLinkKeys&&e.insertedLinkKeys.forEach((function(e){var a=n.get(e);a&&t.push(a)})),e.removedLinkKeys&&(t=t.filter((function(t){var a=i?i.getKeyForLinkData(t):t.key;return!e.removedLinkKeys.includes(a)}))),t},e.syncModelData=function(e,t){return e&&e.modelData?e.modelData?e.modelData:void 0:t},e}();s.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],s.ctorParameters=function(){return[]},s.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new s},token:s,providedIn:"root"}),e.DataSyncService=s,e.DiagramComponent=i,e.GojsAngularModule=o,e.OverviewComponent=r,e.PaletteComponent=n,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=gojs-angular.umd.min.js.map

@@ -281,5 +281,7 @@ /**

this.diagram.model.startTransaction('update data');
// update modelData first, in case bindings on nodes / links depend on model data
this.diagram.model.assignAllDataProperties(this.diagram.model.modelData, this.modelData);
// merge node / link data
DiagramComponent.mergeChanges(this, nodeDiffs, "n");
DiagramComponent.mergeChanges(this, linkDiffs, "l");
this.diagram.model.assignAllDataProperties(this.diagram.model.modelData, this.modelData);
this.diagram.model.commitTransaction('update data');

@@ -362,2 +364,2 @@ // reset the model change listener

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9nb2pzLWFuZ3VsYXIvc3JjL2xpYi9kaWFncmFtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWtCLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBd0IsTUFBTSxlQUFlLENBQUM7QUFDN0osT0FBTyxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFNM0IsTUFBTSxPQUFPLGdCQUFnQjs7Ozs7SUFtQzNCLFlBQW9CLFVBQTJCLEVBQVMsSUFBWTtRQUFoRCxlQUFVLEdBQVYsVUFBVSxDQUFpQjtRQUFTLFNBQUksR0FBSixJQUFJLENBQVE7O1FBdkJwRCxrQkFBYSxHQUF5QixJQUFJLENBQUMsQ0FBQyxXQUFXOzs7UUFHdkQsY0FBUyxHQUFrQixJQUFJLENBQUMsQ0FBQyxXQUFXOztRQU1yRCx5QkFBb0IsR0FBd0MsSUFBSSxDQUFDO1FBRXhELHVCQUFrQixHQUFZLEtBQUssQ0FBQzs7UUFHbkMsZ0JBQVcsR0FBcUMsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFHakcsWUFBTyxHQUFlLElBQUksQ0FBQztRQU9oQyx3RUFBd0U7UUFDeEUsMkVBQTJFO1FBQzNFLG1EQUFtRDtRQUNuRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3BELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDdEQsQ0FBQzs7Ozs7SUFLTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcs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LEtBQUssSUFBSTtZQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRTNHLENBQUMsQ0FBQyxnQkFBZ0I7Ozs7O0lBRVgsV0FBVztRQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQywwQkFBMEI7SUFDckQsQ0FBQzs7O1lBMVBGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsY0FBYztnQkFDeEIsUUFBUSxFQUFFLGlEQUFpRDthQUM1RDs7OztZQU5vRSxlQUFlO1lBQUUsTUFBTTs7OzBCQWF6RixLQUFLOzRCQUdMLEtBQUs7NEJBR0wsS0FBSzt3QkFHTCxLQUFLOzJCQUdMLEtBQUs7aUNBS0wsS0FBSzswQkFHTCxNQUFNO3lCQUVOLFNBQVMsU0FBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOzs7Ozs7OztJQXRCeEMsdUNBQThDOztJQUc5Qyx5Q0FBb0Q7O0lBR3BELHlDQUEyRDs7SUFHM0QscUNBQWdEOztJQUdoRCx3Q0FBcUM7O0lBR3JDLGdEQUF3RTs7SUFFeEUsOENBQW9EOztJQUdwRCx1Q0FBd0c7O0lBRXhHLHNDQUF3RTs7SUFDeEUsbUNBQWtDOzs7OztJQUdsQyxzQ0FBZ0Q7Ozs7O0lBQ2hELHNDQUFnRDs7Ozs7SUFFcEMsc0NBQW1DOztJQUFFLGdDQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgS2V5VmFsdWVEaWZmZXIsIEtleVZhbHVlRGlmZmVycywgTmdab25lLCBPdXRwdXQsIFZpZXdDaGlsZCwgS2V5VmFsdWVDaGFuZ2VSZWNvcmQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgZ28gZnJvbSAnZ29qcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2dvanMtZGlhZ3JhbScsXHJcbiAgdGVtcGxhdGU6ICc8ZGl2ICNuZ0RpYWdyYW0gW2NsYXNzTmFtZV09ZGl2Q2xhc3NOYW1lPjwvZGl2PidcclxufSlcclxuZXhwb3J0IGNsYXNzIERpYWdyYW1Db21wb25lbnQge1xyXG5cclxuICAvKipcclxuICAgKiBEaWFncmFtIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLiBSZXR1cm5zIGEgZ28uRGlhZ3JhbS5cclxuICAgKiBEbyBub3QgaW5pdGlhbGl6ZSBtb2RlbCBkYXRhIGluIHRoaXMgZnVuY3Rpb24uXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGluaXREaWFncmFtOiAoKSA9PiBnby5EaWFncmFtO1xyXG5cclxuICAvLyBOb2RlIGRhdGEgZm9yIGRpYWdyYW1cclxuICBASW5wdXQoKSBwdWJsaWMgbm9kZURhdGFBcnJheTogQXJyYXk8Z28uT2JqZWN0RGF0YT47XHJcblxyXG4gIC8vIExpbmsgZGF0YSBmb3IgZGlhZ3JhbVxyXG4gIEBJbnB1dCgpIHB1YmxpYyBsaW5rRGF0YUFycmF5OiBBcnJheTxnby5PYmplY3REYXRhPiA9IG51bGw7IC8vIG9wdGlvbmFsXHJcblxyXG4gIC8vIE1vZGVsIGRhdGEgZm9yIGRpYWdyYW1cclxuICBASW5wdXQoKSBwdWJsaWMgbW9kZWxEYXRhOiBnby5PYmplY3REYXRhID0gbnVsbDsgLy8gb3B0aW9uYWxcclxuXHJcbiAgLy8gRGlhZ3JhbSBkaXYgY2xhc3MgbmFtZS4gVXNlIHRoaXMgbmFtZSB0byBzdHlsZSB5b3VyIGRpYWdyYW0gaW4gQ1NTXHJcbiAgQElucHV0KCkgcHVibGljIGRpdkNsYXNzTmFtZTogc3RyaW5nO1xyXG5cclxuICAvLyBtb2RlbCBjaGFuZ2VkIGxpc3RlbmVyIGZ1bmN0aW9uIGZvciBkaWFncmFtXHJcbiAgcHVibGljIG1vZGVsQ2hhbmdlZExpc3RlbmVyOiAoZTogZ28uQ2hhbmdlZEV2ZW50KSA9PiB2b2lkIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBza2lwc0RpYWdyYW1VcGRhdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gZXZlbnQgZW1pdHRlciAtLSBmaXJlcyB3aGVuIGRpYWdyYW0gbW9kZWwgY2hhbmdlcy4gQ2FwdHVyZSB0aGlzIGVtaXR0ZWQgZXZlbnQgaW4gcGFyZW50IGNvbXBvbmVudFxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxnby5JbmNyZW1lbnRhbERhdGE+ID0gbmV3IEV2ZW50RW1pdHRlcjxnby5JbmNyZW1lbnRhbERhdGE+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ25nRGlhZ3JhbScsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBkaWFncmFtRGl2OiBFbGVtZW50UmVmO1xyXG4gIHB1YmxpYyBkaWFncmFtOiBnby5EaWFncmFtID0gbnVsbDtcclxuXHJcbiAgLy8gZGlmZmVycyBmb3IgYXJyYXkgaW5wdXRzIChub2RlIC8gbGluayBkYXRhIGFycmF5cylcclxuICBwcml2YXRlIF9uZGFEaWZmZXI6IEtleVZhbHVlRGlmZmVyPHN0cmluZywgYW55PjtcclxuICBwcml2YXRlIF9sZGFEaWZmZXI6IEtleVZhbHVlRGlmZmVyPHN0cmluZywgYW55PjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfa3ZkaWZmZXJzOiBLZXlWYWx1ZURpZmZlcnMsIHB1YmxpYyB6b25lOiBOZ1pvbmUpIHtcclxuICAgIC8vIGRpZmZlcnMgdXNlZCB0byBjaGVjayBpZiB0aGVyZSBoYXZlIGJlZW4gY2hhbmdlZCB0byB0aGUgYXJyYXkgQElucHV0c1xyXG4gICAgLy8gd2l0aG91dCB0aGVtLCBjaGFuZ2VzIHRvIHRoZSBpbnB1dCBhcnJheXMgd29uJ3QgcmVnaXN0ZXIgaW4gbmdPbkNoYW5nZXMsXHJcbiAgICAvLyBzaW5jZSB0aGUgYXJyYXkgcmVmZXJlbmNlIGl0c2VsZiBtYXkgYmUgdGhlIHNhbWVcclxuICAgIHRoaXMuX25kYURpZmZlciA9IHRoaXMuX2t2ZGlmZmVycy5maW5kKFtdKS5jcmVhdGUoKTtcclxuICAgIHRoaXMuX2xkYURpZmZlciA9IHRoaXMuX2t2ZGlmZmVycy5maW5kKFtdKS5jcmVhdGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIGRpYWdyYW0gLyBtb2RlbCBhZnRlciB2aWV3IGluaXRcclxuICAgKi9cclxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5kaWFncmFtID0gdGhpcy5pbml0RGlhZ3JhbSgpO1xyXG5cclxuICAgIC8vIFRoaXMgYml0IG9mIGNvZGUgbWFrZXMgc3VyZSB0aGUgbW91c2Vtb3ZlIGV2ZW50IGxpc3RlbmVycyBvbiB0aGUgY2FudmFzIGFyZSBydW4gb3V0c2lkZSBOZ1pvbmVcclxuICAgIC8vIFRoaXMgbWFrZXMgaXQgc28gY2hhbmdlIGRldGVjdGlvbiBpc24ndCB0cmlnZ2VyZWQgZXZlcnkgdGltZSB0aGUgbW91c2UgaXMgbW92ZWQgaW5zaWRlIHRoZSBjYW52YXMsIGdyZWF0bHkgaW1wcm92aW5nIHBlcmZvcm1hbmNlXHJcbiAgICAvLyBJZiBzb21lIHN0YXRlLWFsdGVyaW5nIGJlaGF2aW9yIG11c3QgaGFwcGVuIG9uIGEgbW91c2Vtb3ZlIGV2ZW50IGluc2lkZSB0aGUgZGlhZ3JhbSxcclxuICAgIC8vIHlvdSB3aWxsIGhhdmUgdG8gdXNpbmcgem9uZS5ydW4oKSB0byBtYWtlIHN1cmUgdGhhdCBldmVudCB0cmlnZ2VycyBhbmd1bGFyIGNoYW5nZSBkZXRlY3Rpb25cclxuICAgIHRoaXMuZGlhZ3JhbS5hZGRFdmVudExpc3RlbmVyID0gKERPTUVsZW1lbnQ6IEVsZW1lbnQgfCBXaW5kb3cgfCBEb2N1bWVudCwgbmFtZTogc3RyaW5nLCBsaXN0ZW5lcjogYW55LCBjYXB0dXJlOiBib29sZWFuKSA9PiB7XHJcbiAgICAgIGNvbnN0IHN1cGVyQWRkRXZlbnRMaXN0ZW5lciA9IGdvLkRpYWdyYW0ucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI7XHJcbiAgICAgIGlmIChuYW1lID09PSAnbW91c2Vtb3ZlJykge1xyXG4gICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBzdXBlckFkZEV2ZW50TGlzdGVuZXIuY2FsbCh0aGlzLCBET01FbGVtZW50LCBuYW1lLCBsaXN0ZW5lciwgY2FwdHVyZSkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgc3VwZXJBZGRFdmVudExpc3RlbmVyLmNhbGwodGhpcywgRE9NRWxlbWVudCwgbmFtZSwgbGlzdGVuZXIsIGNhcHR1cmUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIGFzc2lnbiB0aGUgRGlhZ3JhbSdzIGRpdiwgd2hpY2ggKGFtb25nIG1hbnkgb3RoZXIgdGhpbmdzKSB3aWxsIGF0dGFjaCBhIGJ1bmNoIG9mIGxpc3RlbmVycyB0byB0aGUgY2FudmFzLFxyXG4gICAgLy8gdXNpbmcgdGhlIG92ZXJyaWRkZW4gYWRkRXZlbnRMaXN0ZW5lciBmdW5jdGlvbiBhYm92ZVxyXG4gICAgY29uc3QgZGl2UmVmID0gdGhpcy5kaWFncmFtRGl2Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBpZiAoZGl2UmVmID09PSBudWxsKSByZXR1cm47XHJcbiAgICB0aGlzLmRpYWdyYW0uZGl2ID0gZGl2UmVmO1xyXG5cclxuICAgIC8vIGluaXRpYWxpemUgdGhlIERpYWdyYW0ncyBtb2RlbFxyXG4gICAgdGhpcy5kaWFncmFtLmRlbGF5SW5pdGlhbGl6YXRpb24oKCkgPT4ge1xyXG4gICAgICBjb25zdCBtb2RlbCA9IHRoaXMuZGlhZ3JhbS5tb2RlbDtcclxuICAgICAgbW9kZWwuY29tbWl0KChtOiBnby5Nb2RlbCkgPT4ge1xyXG4gICAgICAgIG0ubWVyZ2VOb2RlRGF0YUFycmF5KG0uY2xvbmVEZWVwKHRoaXMubm9kZURhdGFBcnJheSkpO1xyXG4gICAgICAgIGlmICh0aGlzLmxpbmtEYXRhQXJyYXkgJiYgbSBpbnN0YW5jZW9mIGdvLkdyYXBoTGlua3NNb2RlbCkge1xyXG4gICAgICAgICAgbS5tZXJnZUxpbmtEYXRhQXJyYXkobS5jbG9uZURlZXAodGhpcy5saW5rRGF0YUFycmF5KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm1vZGVsRGF0YSkge1xyXG4gICAgICAgICAgbS5hc3NpZ25BbGxEYXRhUHJvcGVydGllcyhtLm1vZGVsRGF0YSwgdGhpcy5tb2RlbERhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpYWdyYW0ubGF5b3V0RGlhZ3JhbSh0cnVlKTtcclxuICAgICAgfSwgbnVsbCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBpbml0aWFsaXplciBsaXN0ZW5lclxyXG4gICAgdGhpcy5tb2RlbENoYW5nZWRMaXN0ZW5lciA9IChlOiBnby5DaGFuZ2VkRXZlbnQpID0+IHtcclxuICAgICAgaWYgKGUuaXNUcmFuc2FjdGlvbkZpbmlzaGVkICYmIHRoaXMuZGlhZ3JhbSAmJiB0aGlzLmRpYWdyYW0ubW9kZWwgJiYgIXRoaXMuZGlhZ3JhbS5tb2RlbC5pc1JlYWRPbmx5KSB7XHJcbiAgICAgICAgLy8gdGhpcyBtdXN0IGJlIGRvbmUgd2l0aGluIGEgTmdab25lLnJ1biBibG9jaywgc28gY2hhbmdlcyBhcmUgZGV0ZWN0ZWQgaW4gdGhlIHBhcmVudCBjb21wb25lbnRcclxuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGRhdGFDaGFuZ2VzID0gZS5tb2RlbCEudG9JbmNyZW1lbnRhbERhdGEoZSk7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoZGF0YUNoYW5nZXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhpcy5kaWFncmFtLmFkZE1vZGVsQ2hhbmdlZExpc3RlbmVyKHRoaXMubW9kZWxDaGFuZ2VkTGlzdGVuZXIpO1xyXG5cclxuICB9IC8vIGVuZCBuZ0FmdGVyVmlld0luaXRcclxuXHJcbiAgLyoqXHJcbiAgICogTWVyZ2VzIGNoYW5nZXMgZnJvbSBhcHAgZGF0YSBpbnRvIEdvSlMgbW9kZWwgZGF0YSwgXHJcbiAgICogbWFraW5nIHN1cmUgb25seSBhY3R1YWwgY2hhbmdlcyAoYW5kIG5vdCBmYWxzZWx5IGZsYWdnZWQgbm8tb3BzIG9uIGFycmF5IC8gb2JqIGRhdGEgcHJvcHMpIGFyZSBsb2dnZWRcclxuICAgKiBAcGFyYW0gY29tcG9uZW50IGFuIGluc3RhbmNlIG9mIERpYWdyYW1Db21wb25lbnQgb3IgUGFsZXR0ZUNvbXBvbmVudFxyXG4gICAqIEBwYXJhbSBrdmNoYW5nZXMgVGhlIGt2Y2hhbmdlcyBvYmplY3QgcHJvZHVjZWQgYnkgZWl0aGVyIGEgbm9kZSBvciBsaW5rIEFuZ3VsYXIgZGlmZmVyIG9iamVjdFxyXG4gICAqIEBwYXJhbSBzdHIgXCJuXCIgZm9yIG5vZGUgZGF0YSBjaGFuZ2VzLCBcImxcIiBmb3IgbGluayBkYXRhIGNoYW5nZXNcclxuICAgKiAgKi8gXHJcbiAgcHVibGljIHN0YXRpYyBtZXJnZUNoYW5nZXMoY29tcG9uZW50LCBrdmNoYW5nZXMsIHN0cik6IGJvb2xlYW4ge1xyXG5cclxuICAgIC8vIGhlbHBlciBmdW5jdGlvblxyXG4gICAgZnVuY3Rpb24gY29tcGFyZU9ianMob2JqMSwgb2JqMikge1xyXG4gICAgICAvLyBMb29wIHRocm91Z2ggcHJvcGVydGllcyBpbiBvYmplY3QgMVxyXG4gICAgICBmb3IgKGNvbnN0IHAgaW4gb2JqMSkge1xyXG4gICAgICAgIC8vIENoZWNrIHByb3BlcnR5IGV4aXN0cyBvbiBib3RoIG9iamVjdHNcclxuICAgICAgICBpZiAob2JqMS5oYXNPd25Qcm9wZXJ0eShwKSAhPT0gb2JqMi5oYXNPd25Qcm9wZXJ0eShwKSkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgICBzd2l0Y2ggKHR5cGVvZiAob2JqMVtwXSkpIHtcclxuICAgICAgICAgIC8vIERlZXAgY29tcGFyZSBvYmplY3RzXHJcbiAgICAgICAgICBjYXNlICdvYmplY3QnOlxyXG4gICAgICAgICAgICBpZiAoIWNvbXBhcmVPYmpzKG9iajFbcF0sIG9iajJbcF0pKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgLy8gQ29tcGFyZSB2YWx1ZXNcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGlmIChvYmoxW3BdICE9PSBvYmoyW3BdKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBDaGVjayBvYmplY3QgMiBmb3IgYW55IGV4dHJhIHByb3BlcnRpZXNcclxuICAgICAgZm9yIChjb25zdCBwIGluIG9iajIpIHtcclxuICAgICAgICBpZiAodHlwZW9mIChvYmoxW3BdKSA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgZGlhID0gY29tcG9uZW50IGluc3RhbmNlb2YgRGlhZ3JhbUNvbXBvbmVudCA/IGNvbXBvbmVudC5kaWFncmFtIDogY29tcG9uZW50LnBhbGV0dGU7XHJcblxyXG4gICAgaWYgKCFkaWEgfHwgIWRpYS5tb2RlbCkgcmV0dXJuO1xyXG5cclxuICAgIGlmIChrdmNoYW5nZXMpIHtcclxuXHJcbiAgICAgIC8vIGhhbmRsZSBhZGRlZCBub2RlcyAvIGxpbmtzXHJcbiAgICAgIGt2Y2hhbmdlcy5mb3JFYWNoQWRkZWRJdGVtKChyOiBLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIGFueT4pID0+IHtcclxuICAgICAgICBzd2l0Y2ggKHN0cikge1xyXG4gICAgICAgICAgY2FzZSBcIm5cIjoge1xyXG4gICAgICAgICAgICBkaWEubW9kZWwuYWRkTm9kZURhdGEoci5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgXCJsXCI6IHtcclxuICAgICAgICAgICAgdmFyIG0gPSA8Z28uR3JhcGhMaW5rc01vZGVsPmRpYS5tb2RlbDtcclxuICAgICAgICAgICAgbS5hZGRMaW5rRGF0YShyLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvLyBoYW5kbGUgcmVtb3ZlZCBub2RlcyAvIGxpbmtzXHJcbiAgICAgIGt2Y2hhbmdlcy5mb3JFYWNoUmVtb3ZlZEl0ZW0oKHI6IEtleVZhbHVlQ2hhbmdlUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAoc3RyKSB7XHJcbiAgICAgICAgICBjYXNlIFwiblwiOiB7XHJcbiAgICAgICAgICAgIGxldCBtID0gZGlhLm1vZGVsO1xyXG4gICAgICAgICAgICBsZXQga2V5UHJvcE5hbWUgPSBtLm5vZGVLZXlQcm9wZXJ0eS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICB2YXIgbm9kZSA9IGRpYS5maW5kTm9kZUZvcktleShyLnByZXZpb3VzVmFsdWVba2V5UHJvcE5hbWVdKTtcclxuICAgICAgICAgICAgaWYgKG5vZGUpIHtcclxuICAgICAgICAgICAgICBkaWEucmVtb3ZlKG5vZGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSBcImxcIjoge1xyXG4gICAgICAgICAgICBsZXQgbSA9IDxnby5HcmFwaExpbmtzTW9kZWw+ZGlhLm1vZGVsO1xyXG4gICAgICAgICAgICB2YXIga2V5UHJvcE5hbWUgPSBtLmxpbmtLZXlQcm9wZXJ0eS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICB2YXIgbGluayA9IGRpYS5maW5kTGlua0ZvcktleShyLnByZXZpb3VzVmFsdWVba2V5UHJvcE5hbWVdKTtcclxuICAgICAgICAgICAgaWYgKGxpbmspIHtcclxuICAgICAgICAgICAgICBkaWEucmVtb3ZlKGxpbmspO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvLyBoYW5kbGUgY2hhbmdlZCBkYXRhIGZvciBub2RlcyAvIGxpbmtzXHJcbiAgICAgIGt2Y2hhbmdlcy5mb3JFYWNoQ2hhbmdlZEl0ZW0oKHI6IEtleVZhbHVlQ2hhbmdlUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIGVuc3VyZSBcImNoYW5nZXNcIiB0byBhcnJheSAvIG9iamVjdCAvIGVudW1lcmFibGUgZGF0YSBwcm9wZXJ0aWVzIGFyZSBsZWdpdFxyXG4gICAgICAgIGNvbnN0IHNhbWVWYWxzID0gY29tcGFyZU9ianMoci5jdXJyZW50VmFsdWUsIHIucHJldmlvdXNWYWx1ZSk7XHJcblxyXG4gICAgICAgIC8vIHVwZGF0ZSBwcm9wZXIgZGF0YSBvYmplY3QgZm9yIG5vZGUgb3IgbGlua1xyXG4gICAgICAgIGlmICghc2FtZVZhbHMpIHtcclxuICAgICAgICAgIHN3aXRjaCAoc3RyKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJuXCI6IHtcclxuICAgICAgICAgICAgICBsZXQgbSA9IGRpYS5tb2RlbDtcclxuICAgICAgICAgICAgICBsZXQga2V5UHJvcE5hbWUgPSBtLm5vZGVLZXlQcm9wZXJ0eS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgIHZhciBub2RlID0gZGlhLmZpbmROb2RlRm9yS2V5KHIucHJldmlvdXNWYWx1ZVtrZXlQcm9wTmFtZV0pO1xyXG4gICAgICAgICAgICAgIGlmIChub2RlKSB7XHJcbiAgICAgICAgICAgICAgICBkaWEubW9kZWwuYXNzaWduQWxsRGF0YVByb3BlcnRpZXMobm9kZS5kYXRhLCByLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgXCJsXCI6IHtcclxuICAgICAgICAgICAgICBsZXQgbSA9IDxnby5HcmFwaExpbmtzTW9kZWw+ZGlhLm1vZGVsO1xyXG4gICAgICAgICAgICAgIHZhciBrZXlQcm9wTmFtZSA9IG0ubGlua0tleVByb3BlcnR5LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgdmFyIGxpbmsgPSBkaWEuZmluZExpbmtGb3JLZXkoci5wcmV2aW91c1ZhbHVlW2tleVByb3BOYW1lXSk7XHJcbiAgICAgICAgICAgICAgaWYgKGxpbmspIHtcclxuICAgICAgICAgICAgICAgIGRpYS5tb2RlbC5hc3NpZ25BbGxEYXRhUHJvcGVydGllcyhsaW5rLmRhdGEsIHIuY3VycmVudFZhbHVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBbHdheXMgYmUgY2hlY2tpbmcgaWYgYXJyYXkgSW5wdXQgZGF0YSBoYXMgY2hhbmdlZCAobm9kZSBhbmQgbGluayBkYXRhIGFycmF5cylcclxuICAgKi9cclxuICBwdWJsaWMgbmdEb0NoZWNrKCkge1xyXG5cclxuICAgIGlmICghdGhpcy5kaWFncmFtKSByZXR1cm47XHJcbiAgICBpZiAoIXRoaXMuZGlhZ3JhbS5tb2RlbCkgcmV0dXJuO1xyXG5cclxuICAgIC8vIHRoZXNlIG5lZWQgdG8gYmUgcnVuIGVhY2ggY2hlY2ssIGV2ZW4gaWYgbm8gbWVyZ2luZyBoYXBwZW5zXHJcbiAgICAvLyBvdGhlcndpc2UsIHRoZXkgd2lsbCBkZXRlY3QgYWxsIGRpZmZzIHRoYXQgaGFwcGVuZWQgc2luY2UgbGFzdCB0aW1lIHNraXBzRGlhZ3JhbSB3YXMgZmFsc2UsXHJcbiAgICAvLyBzdWNoIGFzIHJlbW92ZSBvcHMgdGhhdCBoYXBwZW5lZCBpbiBHb0pTIHdoZW4gc2tpcHNEaWFncmFtID0gdHJ1ZSwgXHJcbiAgICAvLyBhbmQgdGhlbiByZWFsbGxsbGx5IGJhZCBzdHVmZiBoYXBwZW5zIChkZWxldGluZyByYW5kb20gbm9kZXMsIHVwZGF0aW5nIHRoZSB3cm9uZyBQYXJ0cylcclxuICAgIC8vIEFuZ3VsYXIgZGlmZmVycyBhcmUgYSBsb3Qgb2YgZnVuXHJcbiAgICB2YXIgbm9kZURpZmZzID0gdGhpcy5fbmRhRGlmZmVyLmRpZmYodGhpcy5ub2RlRGF0YUFycmF5KTtcclxuICAgIHZhciBsaW5rRGlmZnMgPSB0aGlzLl9sZGFEaWZmZXIuZGlmZih0aGlzLmxpbmtEYXRhQXJyYXkpO1xyXG5cclxuICAgIGlmICh0aGlzLnNraXBzRGlhZ3JhbVVwZGF0ZSkgcmV0dXJuO1xyXG5cclxuICAgIC8vIGRvbid0IG5lZWQgbW9kZWwgY2hhbmdlIGxpc3RlbmVyIHdoaWxlIHBlcmZvcm1pbmcga25vd24gZGF0YSB1cGRhdGVzXHJcbiAgICBpZiAodGhpcy5tb2RlbENoYW5nZWRMaXN0ZW5lciAhPT0gbnVsbCkgdGhpcy5kaWFncmFtLm1vZGVsLnJlbW92ZUNoYW5nZWRMaXN0ZW5lcih0aGlzLm1vZGVsQ2hhbmdlZExpc3RlbmVyKTtcclxuXHJcbiAgICB0aGlzLmRpYWdyYW0ubW9kZWwuc3RhcnRUcmFuc2FjdGlvbigndXBkYXRlIGRhdGEnKTtcclxuICAgIERpYWdyYW1Db21wb25lbnQubWVyZ2VDaGFuZ2VzKHRoaXMsIG5vZGVEaWZmcywgXCJuXCIpO1xyXG4gICAgRGlhZ3JhbUNvbXBvbmVudC5tZXJnZUNoYW5nZXModGhpcywgbGlua0RpZmZzLCBcImxcIik7XHJcbiAgICB0aGlzLmRpYWdyYW0ubW9kZWwuYXNzaWduQWxsRGF0YVByb3BlcnRpZXModGhpcy5kaWFncmFtLm1vZGVsLm1vZGVsRGF0YSwgdGhpcy5tb2RlbERhdGEpO1xyXG4gICAgdGhpcy5kaWFncmFtLm1vZGVsLmNvbW1pdFRyYW5zYWN0aW9uKCd1cGRhdGUgZGF0YScpO1xyXG4gICAgLy8gcmVzZXQgdGhlIG1vZGVsIGNoYW5nZSBsaXN0ZW5lclxyXG4gICAgaWYgKHRoaXMubW9kZWxDaGFuZ2VkTGlzdGVuZXIgIT09IG51bGwpIHRoaXMuZGlhZ3JhbS5tb2RlbC5hZGRDaGFuZ2VkTGlzdGVuZXIodGhpcy5tb2RlbENoYW5nZWRMaXN0ZW5lcik7XHJcblxyXG4gIH0gLy8gZW5kIG5nRG9DaGVja1xyXG5cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRpYWdyYW0uZGl2ID0gbnVsbDsgLy8gcmVtb3ZlcyBldmVudCBsaXN0ZW5lcnNcclxuICB9XHJcbn1cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9nb2pzLWFuZ3VsYXIvc3JjL2xpYi9kaWFncmFtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWtCLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBd0IsTUFBTSxlQUFlLENBQUM7QUFDN0osT0FBTyxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFNM0IsTUFBTSxPQUFPLGdCQUFnQjs7Ozs7SUFtQzNCLFlBQW9CLFVBQTJCLEVBQVMsSUFBWTtRQUFoRCxlQUFVLEdBQVYsVUFBVSxDQUFpQjtRQUFTLFNBQUksR0FBSixJQUFJLENBQVE7O1FBdkJwRCxrQkFBYSxHQUF5QixJQUFJLENBQUMsQ0FBQyxXQUFXOzs7UUFHdkQsY0FBUyxHQUFrQixJQUFJLENBQUMsQ0FBQyxXQUFXOztRQU1yRCx5QkFBb0IsR0FBd0MsSUFBSSxDQUFDO1FBRXhELHVCQUFrQixHQUFZLEtBQUssQ0FBQzs7UUFHbkMsZ0JBQVcsR0FBcUMsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFHakcsWUFBTyxHQUFlLElBQUksQ0FBQztRQU9oQyx3RUFBd0U7UUFDeEUsMkVBQTJFO1FBQzNFLG1EQUFtRDtRQUNuRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3BELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDdEQsQ0FBQzs7Ozs7SUFLTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcs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QUNsQyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsS0FBSyxJQUFJO1lBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFM0csQ0FBQyxDQUFDLGdCQUFnQjs7Ozs7SUFFWCxXQUFXO1FBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLDBCQUEwQjtJQUNyRCxDQUFDOzs7WUE3UEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxjQUFjO2dCQUN4QixRQUFRLEVBQUUsaURBQWlEO2FBQzVEOzs7O1lBTm9FLGVBQWU7WUFBRSxNQUFNOzs7MEJBYXpGLEtBQUs7NEJBR0wsS0FBSzs0QkFHTCxLQUFLO3dCQUdMLEtBQUs7MkJBR0wsS0FBSztpQ0FLTCxLQUFLOzBCQUdMLE1BQU07eUJBRU4sU0FBUyxTQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Ozs7Ozs7O0lBdEJ4Qyx1Q0FBOEM7O0lBRzlDLHlDQUFvRDs7SUFHcEQseUNBQTJEOztJQUczRCxxQ0FBZ0Q7O0lBR2hELHdDQUFxQzs7SUFHckMsZ0RBQXdFOztJQUV4RSw4Q0FBb0Q7O0lBR3BELHVDQUF3Rzs7SUFFeEcsc0NBQXdFOztJQUN4RSxtQ0FBa0M7Ozs7O0lBR2xDLHNDQUFnRDs7Ozs7SUFDaEQsc0NBQWdEOzs7OztJQUVwQyxzQ0FBbUM7O0lBQUUsZ0NBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBLZXlWYWx1ZURpZmZlciwgS2V5VmFsdWVEaWZmZXJzLCBOZ1pvbmUsIE91dHB1dCwgVmlld0NoaWxkLCBLZXlWYWx1ZUNoYW5nZVJlY29yZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBnbyBmcm9tICdnb2pzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZ29qcy1kaWFncmFtJyxcclxuICB0ZW1wbGF0ZTogJzxkaXYgI25nRGlhZ3JhbSBbY2xhc3NOYW1lXT1kaXZDbGFzc05hbWU+PC9kaXY+J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlhZ3JhbUNvbXBvbmVudCB7XHJcblxyXG4gIC8qKlxyXG4gICAqIERpYWdyYW0gaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uIFJldHVybnMgYSBnby5EaWFncmFtLlxyXG4gICAqIERvIG5vdCBpbml0aWFsaXplIG1vZGVsIGRhdGEgaW4gdGhpcyBmdW5jdGlvbi5cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgaW5pdERpYWdyYW06ICgpID0+IGdvLkRpYWdyYW07XHJcblxyXG4gIC8vIE5vZGUgZGF0YSBmb3IgZGlhZ3JhbVxyXG4gIEBJbnB1dCgpIHB1YmxpYyBub2RlRGF0YUFycmF5OiBBcnJheTxnby5PYmplY3REYXRhPjtcclxuXHJcbiAgLy8gTGluayBkYXRhIGZvciBkaWFncmFtXHJcbiAgQElucHV0KCkgcHVibGljIGxpbmtEYXRhQXJyYXk6IEFycmF5PGdvLk9iamVjdERhdGE+ID0gbnVsbDsgLy8gb3B0aW9uYWxcclxuXHJcbiAgLy8gTW9kZWwgZGF0YSBmb3IgZGlhZ3JhbVxyXG4gIEBJbnB1dCgpIHB1YmxpYyBtb2RlbERhdGE6IGdvLk9iamVjdERhdGEgPSBudWxsOyAvLyBvcHRpb25hbFxyXG5cclxuICAvLyBEaWFncmFtIGRpdiBjbGFzcyBuYW1lLiBVc2UgdGhpcyBuYW1lIHRvIHN0eWxlIHlvdXIgZGlhZ3JhbSBpbiBDU1NcclxuICBASW5wdXQoKSBwdWJsaWMgZGl2Q2xhc3NOYW1lOiBzdHJpbmc7XHJcblxyXG4gIC8vIG1vZGVsIGNoYW5nZWQgbGlzdGVuZXIgZnVuY3Rpb24gZm9yIGRpYWdyYW1cclxuICBwdWJsaWMgbW9kZWxDaGFuZ2VkTGlzdGVuZXI6IChlOiBnby5DaGFuZ2VkRXZlbnQpID0+IHZvaWQgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHNraXBzRGlhZ3JhbVVwZGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyBldmVudCBlbWl0dGVyIC0tIGZpcmVzIHdoZW4gZGlhZ3JhbSBtb2RlbCBjaGFuZ2VzLiBDYXB0dXJlIHRoaXMgZW1pdHRlZCBldmVudCBpbiBwYXJlbnQgY29tcG9uZW50XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBtb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGdvLkluY3JlbWVudGFsRGF0YT4gPSBuZXcgRXZlbnRFbWl0dGVyPGdvLkluY3JlbWVudGFsRGF0YT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbmdEaWFncmFtJywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIGRpYWdyYW1EaXY6IEVsZW1lbnRSZWY7XHJcbiAgcHVibGljIGRpYWdyYW06IGdvLkRpYWdyYW0gPSBudWxsO1xyXG5cclxuICAvLyBkaWZmZXJzIGZvciBhcnJheSBpbnB1dHMgKG5vZGUgLyBsaW5rIGRhdGEgYXJyYXlzKVxyXG4gIHByaXZhdGUgX25kYURpZmZlcjogS2V5VmFsdWVEaWZmZXI8c3RyaW5nLCBhbnk+O1xyXG4gIHByaXZhdGUgX2xkYURpZmZlcjogS2V5VmFsdWVEaWZmZXI8c3RyaW5nLCBhbnk+O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9rdmRpZmZlcnM6IEtleVZhbHVlRGlmZmVycywgcHVibGljIHpvbmU6IE5nWm9uZSkge1xyXG4gICAgLy8gZGlmZmVycyB1c2VkIHRvIGNoZWNrIGlmIHRoZXJlIGhhdmUgYmVlbiBjaGFuZ2VkIHRvIHRoZSBhcnJheSBASW5wdXRzXHJcbiAgICAvLyB3aXRob3V0IHRoZW0sIGNoYW5nZXMgdG8gdGhlIGlucHV0IGFycmF5cyB3b24ndCByZWdpc3RlciBpbiBuZ09uQ2hhbmdlcyxcclxuICAgIC8vIHNpbmNlIHRoZSBhcnJheSByZWZlcmVuY2UgaXRzZWxmIG1heSBiZSB0aGUgc2FtZVxyXG4gICAgdGhpcy5fbmRhRGlmZmVyID0gdGhpcy5fa3ZkaWZmZXJzLmZpbmQoW10pLmNyZWF0ZSgpO1xyXG4gICAgdGhpcy5fbGRhRGlmZmVyID0gdGhpcy5fa3ZkaWZmZXJzLmZpbmQoW10pLmNyZWF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgZGlhZ3JhbSAvIG1vZGVsIGFmdGVyIHZpZXcgaW5pdFxyXG4gICAqL1xyXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmRpYWdyYW0gPSB0aGlzLmluaXREaWFncmFtKCk7XHJcblxyXG4gICAgLy8gVGhpcyBiaXQgb2YgY29kZSBtYWtlcyBzdXJlIHRoZSBtb3VzZW1vdmUgZXZlbnQgbGlzdGVuZXJzIG9uIHRoZSBjYW52YXMgYXJlIHJ1biBvdXRzaWRlIE5nWm9uZVxyXG4gICAgLy8gVGhpcyBtYWtlcyBpdCBzbyBjaGFuZ2UgZGV0ZWN0aW9uIGlzbid0IHRyaWdnZXJlZCBldmVyeSB0aW1lIHRoZSBtb3VzZSBpcyBtb3ZlZCBpbnNpZGUgdGhlIGNhbnZhcywgZ3JlYXRseSBpbXByb3ZpbmcgcGVyZm9ybWFuY2VcclxuICAgIC8vIElmIHNvbWUgc3RhdGUtYWx0ZXJpbmcgYmVoYXZpb3IgbXVzdCBoYXBwZW4gb24gYSBtb3VzZW1vdmUgZXZlbnQgaW5zaWRlIHRoZSBkaWFncmFtLFxyXG4gICAgLy8geW91IHdpbGwgaGF2ZSB0byB1c2luZyB6b25lLnJ1bigpIHRvIG1ha2Ugc3VyZSB0aGF0IGV2ZW50IHRyaWdnZXJzIGFuZ3VsYXIgY2hhbmdlIGRldGVjdGlvblxyXG4gICAgdGhpcy5kaWFncmFtLmFkZEV2ZW50TGlzdGVuZXIgPSAoRE9NRWxlbWVudDogRWxlbWVudCB8IFdpbmRvdyB8IERvY3VtZW50LCBuYW1lOiBzdHJpbmcsIGxpc3RlbmVyOiBhbnksIGNhcHR1cmU6IGJvb2xlYW4pID0+IHtcclxuICAgICAgY29uc3Qgc3VwZXJBZGRFdmVudExpc3RlbmVyID0gZ28uRGlhZ3JhbS5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcjtcclxuICAgICAgaWYgKG5hbWUgPT09ICdtb3VzZW1vdmUnKSB7XHJcbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHN1cGVyQWRkRXZlbnRMaXN0ZW5lci5jYWxsKHRoaXMsIERPTUVsZW1lbnQsIG5hbWUsIGxpc3RlbmVyLCBjYXB0dXJlKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICBzdXBlckFkZEV2ZW50TGlzdGVuZXIuY2FsbCh0aGlzLCBET01FbGVtZW50LCBuYW1lLCBsaXN0ZW5lciwgY2FwdHVyZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLy8gYXNzaWduIHRoZSBEaWFncmFtJ3MgZGl2LCB3aGljaCAoYW1vbmcgbWFueSBvdGhlciB0aGluZ3MpIHdpbGwgYXR0YWNoIGEgYnVuY2ggb2YgbGlzdGVuZXJzIHRvIHRoZSBjYW52YXMsXHJcbiAgICAvLyB1c2luZyB0aGUgb3ZlcnJpZGRlbiBhZGRFdmVudExpc3RlbmVyIGZ1bmN0aW9uIGFib3ZlXHJcbiAgICBjb25zdCBkaXZSZWYgPSB0aGlzLmRpYWdyYW1EaXYubmF0aXZlRWxlbWVudDtcclxuICAgIGlmIChkaXZSZWYgPT09IG51bGwpIHJldHVybjtcclxuICAgIHRoaXMuZGlhZ3JhbS5kaXYgPSBkaXZSZWY7XHJcblxyXG4gICAgLy8gaW5pdGlhbGl6ZSB0aGUgRGlhZ3JhbSdzIG1vZGVsXHJcbiAgICB0aGlzLmRpYWdyYW0uZGVsYXlJbml0aWFsaXphdGlvbigoKSA9PiB7XHJcbiAgICAgIGNvbnN0IG1vZGVsID0gdGhpcy5kaWFncmFtLm1vZGVsO1xyXG4gICAgICBtb2RlbC5jb21taXQoKG06IGdvLk1vZGVsKSA9PiB7XHJcbiAgICAgICAgbS5tZXJnZU5vZGVEYXRhQXJyYXkobS5jbG9uZURlZXAodGhpcy5ub2RlRGF0YUFycmF5KSk7XHJcbiAgICAgICAgaWYgKHRoaXMubGlua0RhdGFBcnJheSAmJiBtIGluc3RhbmNlb2YgZ28uR3JhcGhMaW5rc01vZGVsKSB7XHJcbiAgICAgICAgICBtLm1lcmdlTGlua0RhdGFBcnJheShtLmNsb25lRGVlcCh0aGlzLmxpbmtEYXRhQXJyYXkpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMubW9kZWxEYXRhKSB7XHJcbiAgICAgICAgICBtLmFzc2lnbkFsbERhdGFQcm9wZXJ0aWVzKG0ubW9kZWxEYXRhLCB0aGlzLm1vZGVsRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGlhZ3JhbS5sYXlvdXREaWFncmFtKHRydWUpO1xyXG4gICAgICB9LCBudWxsKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIGluaXRpYWxpemVyIGxpc3RlbmVyXHJcbiAgICB0aGlzLm1vZGVsQ2hhbmdlZExpc3RlbmVyID0gKGU6IGdvLkNoYW5nZWRFdmVudCkgPT4ge1xyXG4gICAgICBpZiAoZS5pc1RyYW5zYWN0aW9uRmluaXNoZWQgJiYgdGhpcy5kaWFncmFtICYmIHRoaXMuZGlhZ3JhbS5tb2RlbCAmJiAhdGhpcy5kaWFncmFtLm1vZGVsLmlzUmVhZE9ubHkpIHtcclxuICAgICAgICAvLyB0aGlzIG11c3QgYmUgZG9uZSB3aXRoaW4gYSBOZ1pvbmUucnVuIGJsb2NrLCBzbyBjaGFuZ2VzIGFyZSBkZXRlY3RlZCBpbiB0aGUgcGFyZW50IGNvbXBvbmVudFxyXG4gICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZGF0YUNoYW5nZXMgPSBlLm1vZGVsIS50b0luY3JlbWVudGFsRGF0YShlKTtcclxuICAgICAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdChkYXRhQ2hhbmdlcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aGlzLmRpYWdyYW0uYWRkTW9kZWxDaGFuZ2VkTGlzdGVuZXIodGhpcy5tb2RlbENoYW5nZWRMaXN0ZW5lcik7XHJcblxyXG4gIH0gLy8gZW5kIG5nQWZ0ZXJWaWV3SW5pdFxyXG5cclxuICAvKipcclxuICAgKiBNZXJnZXMgY2hhbmdlcyBmcm9tIGFwcCBkYXRhIGludG8gR29KUyBtb2RlbCBkYXRhLCBcclxuICAgKiBtYWtpbmcgc3VyZSBvbmx5IGFjdHVhbCBjaGFuZ2VzIChhbmQgbm90IGZhbHNlbHkgZmxhZ2dlZCBuby1vcHMgb24gYXJyYXkgLyBvYmogZGF0YSBwcm9wcykgYXJlIGxvZ2dlZFxyXG4gICAqIEBwYXJhbSBjb21wb25lbnQgYW4gaW5zdGFuY2Ugb2YgRGlhZ3JhbUNvbXBvbmVudCBvciBQYWxldHRlQ29tcG9uZW50XHJcbiAgICogQHBhcmFtIGt2Y2hhbmdlcyBUaGUga3ZjaGFuZ2VzIG9iamVjdCBwcm9kdWNlZCBieSBlaXRoZXIgYSBub2RlIG9yIGxpbmsgQW5ndWxhciBkaWZmZXIgb2JqZWN0XHJcbiAgICogQHBhcmFtIHN0ciBcIm5cIiBmb3Igbm9kZSBkYXRhIGNoYW5nZXMsIFwibFwiIGZvciBsaW5rIGRhdGEgY2hhbmdlc1xyXG4gICAqICAqLyBcclxuICBwdWJsaWMgc3RhdGljIG1lcmdlQ2hhbmdlcyhjb21wb25lbnQsIGt2Y2hhbmdlcywgc3RyKTogYm9vbGVhbiB7XHJcblxyXG4gICAgLy8gaGVscGVyIGZ1bmN0aW9uXHJcbiAgICBmdW5jdGlvbiBjb21wYXJlT2JqcyhvYmoxLCBvYmoyKSB7XHJcbiAgICAgIC8vIExvb3AgdGhyb3VnaCBwcm9wZXJ0aWVzIGluIG9iamVjdCAxXHJcbiAgICAgIGZvciAoY29uc3QgcCBpbiBvYmoxKSB7XHJcbiAgICAgICAgLy8gQ2hlY2sgcHJvcGVydHkgZXhpc3RzIG9uIGJvdGggb2JqZWN0c1xyXG4gICAgICAgIGlmIChvYmoxLmhhc093blByb3BlcnR5KHApICE9PSBvYmoyLmhhc093blByb3BlcnR5KHApKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICAgIHN3aXRjaCAodHlwZW9mIChvYmoxW3BdKSkge1xyXG4gICAgICAgICAgLy8gRGVlcCBjb21wYXJlIG9iamVjdHNcclxuICAgICAgICAgIGNhc2UgJ29iamVjdCc6XHJcbiAgICAgICAgICAgIGlmICghY29tcGFyZU9ianMob2JqMVtwXSwgb2JqMltwXSkpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAvLyBDb21wYXJlIHZhbHVlc1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgaWYgKG9iajFbcF0gIT09IG9iajJbcF0pIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIENoZWNrIG9iamVjdCAyIGZvciBhbnkgZXh0cmEgcHJvcGVydGllc1xyXG4gICAgICBmb3IgKGNvbnN0IHAgaW4gb2JqMikge1xyXG4gICAgICAgIGlmICh0eXBlb2YgKG9iajFbcF0pID09PSAndW5kZWZpbmVkJykgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBkaWEgPSBjb21wb25lbnQgaW5zdGFuY2VvZiBEaWFncmFtQ29tcG9uZW50ID8gY29tcG9uZW50LmRpYWdyYW0gOiBjb21wb25lbnQucGFsZXR0ZTtcclxuXHJcbiAgICBpZiAoIWRpYSB8fCAhZGlhLm1vZGVsKSByZXR1cm47XHJcblxyXG4gICAgaWYgKGt2Y2hhbmdlcykge1xyXG5cclxuICAgICAgLy8gaGFuZGxlIGFkZGVkIG5vZGVzIC8gbGlua3NcclxuICAgICAga3ZjaGFuZ2VzLmZvckVhY2hBZGRlZEl0ZW0oKHI6IEtleVZhbHVlQ2hhbmdlUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAoc3RyKSB7XHJcbiAgICAgICAgICBjYXNlIFwiblwiOiB7XHJcbiAgICAgICAgICAgIGRpYS5tb2RlbC5hZGROb2RlRGF0YShyLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSBcImxcIjoge1xyXG4gICAgICAgICAgICB2YXIgbSA9IDxnby5HcmFwaExpbmtzTW9kZWw+ZGlhLm1vZGVsO1xyXG4gICAgICAgICAgICBtLmFkZExpbmtEYXRhKHIuY3VycmVudFZhbHVlKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8vIGhhbmRsZSByZW1vdmVkIG5vZGVzIC8gbGlua3NcclxuICAgICAga3ZjaGFuZ2VzLmZvckVhY2hSZW1vdmVkSXRlbSgocjogS2V5VmFsdWVDaGFuZ2VSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XHJcbiAgICAgICAgc3dpdGNoIChzdHIpIHtcclxuICAgICAgICAgIGNhc2UgXCJuXCI6IHtcclxuICAgICAgICAgICAgbGV0IG0gPSBkaWEubW9kZWw7XHJcbiAgICAgICAgICAgIGxldCBrZXlQcm9wTmFtZSA9IG0ubm9kZUtleVByb3BlcnR5LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIHZhciBub2RlID0gZGlhLmZpbmROb2RlRm9yS2V5KHIucHJldmlvdXNWYWx1ZVtrZXlQcm9wTmFtZV0pO1xyXG4gICAgICAgICAgICBpZiAobm9kZSkge1xyXG4gICAgICAgICAgICAgIGRpYS5yZW1vdmUobm9kZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlIFwibFwiOiB7XHJcbiAgICAgICAgICAgIGxldCBtID0gPGdvLkdyYXBoTGlua3NNb2RlbD5kaWEubW9kZWw7XHJcbiAgICAgICAgICAgIHZhciBrZXlQcm9wTmFtZSA9IG0ubGlua0tleVByb3BlcnR5LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIHZhciBsaW5rID0gZGlhLmZpbmRMaW5rRm9yS2V5KHIucHJldmlvdXNWYWx1ZVtrZXlQcm9wTmFtZV0pO1xyXG4gICAgICAgICAgICBpZiAobGluaykge1xyXG4gICAgICAgICAgICAgIGRpYS5yZW1vdmUobGluayk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8vIGhhbmRsZSBjaGFuZ2VkIGRhdGEgZm9yIG5vZGVzIC8gbGlua3NcclxuICAgICAga3ZjaGFuZ2VzLmZvckVhY2hDaGFuZ2VkSXRlbSgocjogS2V5VmFsdWVDaGFuZ2VSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gZW5zdXJlIFwiY2hhbmdlc1wiIHRvIGFycmF5IC8gb2JqZWN0IC8gZW51bWVyYWJsZSBkYXRhIHByb3BlcnRpZXMgYXJlIGxlZ2l0XHJcbiAgICAgICAgY29uc3Qgc2FtZVZhbHMgPSBjb21wYXJlT2JqcyhyLmN1cnJlbnRWYWx1ZSwgci5wcmV2aW91c1ZhbHVlKTtcclxuXHJcbiAgICAgICAgLy8gdXBkYXRlIHByb3BlciBkYXRhIG9iamVjdCBmb3Igbm9kZSBvciBsaW5rXHJcbiAgICAgICAgaWYgKCFzYW1lVmFscykge1xyXG4gICAgICAgICAgc3dpdGNoIChzdHIpIHtcclxuICAgICAgICAgICAgY2FzZSBcIm5cIjoge1xyXG4gICAgICAgICAgICAgIGxldCBtID0gZGlhLm1vZGVsO1xyXG4gICAgICAgICAgICAgIGxldCBrZXlQcm9wTmFtZSA9IG0ubm9kZUtleVByb3BlcnR5LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgdmFyIG5vZGUgPSBkaWEuZmluZE5vZGVGb3JLZXkoci5wcmV2aW91c1ZhbHVlW2tleVByb3BOYW1lXSk7XHJcbiAgICAgICAgICAgICAgaWYgKG5vZGUpIHtcclxuICAgICAgICAgICAgICAgIGRpYS5tb2RlbC5hc3NpZ25BbGxEYXRhUHJvcGVydGllcyhub2RlLmRhdGEsIHIuY3VycmVudFZhbHVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSBcImxcIjoge1xyXG4gICAgICAgICAgICAgIGxldCBtID0gPGdvLkdyYXBoTGlua3NNb2RlbD5kaWEubW9kZWw7XHJcbiAgICAgICAgICAgICAgdmFyIGtleVByb3BOYW1lID0gbS5saW5rS2V5UHJvcGVydHkudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICB2YXIgbGluayA9IGRpYS5maW5kTGlua0ZvcktleShyLnByZXZpb3VzVmFsdWVba2V5UHJvcE5hbWVdKTtcclxuICAgICAgICAgICAgICBpZiAobGluaykge1xyXG4gICAgICAgICAgICAgICAgZGlhLm1vZGVsLmFzc2lnbkFsbERhdGFQcm9wZXJ0aWVzKGxpbmsuZGF0YSwgci5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFsd2F5cyBiZSBjaGVja2luZyBpZiBhcnJheSBJbnB1dCBkYXRhIGhhcyBjaGFuZ2VkIChub2RlIGFuZCBsaW5rIGRhdGEgYXJyYXlzKVxyXG4gICAqL1xyXG4gIHB1YmxpYyBuZ0RvQ2hlY2soKSB7XHJcblxyXG4gICAgaWYgKCF0aGlzLmRpYWdyYW0pIHJldHVybjtcclxuICAgIGlmICghdGhpcy5kaWFncmFtLm1vZGVsKSByZXR1cm47XHJcblxyXG4gICAgLy8gdGhlc2UgbmVlZCB0byBiZSBydW4gZWFjaCBjaGVjaywgZXZlbiBpZiBubyBtZXJnaW5nIGhhcHBlbnNcclxuICAgIC8vIG90aGVyd2lzZSwgdGhleSB3aWxsIGRldGVjdCBhbGwgZGlmZnMgdGhhdCBoYXBwZW5lZCBzaW5jZSBsYXN0IHRpbWUgc2tpcHNEaWFncmFtIHdhcyBmYWxzZSxcclxuICAgIC8vIHN1Y2ggYXMgcmVtb3ZlIG9wcyB0aGF0IGhhcHBlbmVkIGluIEdvSlMgd2hlbiBza2lwc0RpYWdyYW0gPSB0cnVlLCBcclxuICAgIC8vIGFuZCB0aGVuIHJlYWxsbGxsbHkgYmFkIHN0dWZmIGhhcHBlbnMgKGRlbGV0aW5nIHJhbmRvbSBub2RlcywgdXBkYXRpbmcgdGhlIHdyb25nIFBhcnRzKVxyXG4gICAgLy8gQW5ndWxhciBkaWZmZXJzIGFyZSBhIGxvdCBvZiBmdW5cclxuICAgIHZhciBub2RlRGlmZnMgPSB0aGlzLl9uZGFEaWZmZXIuZGlmZih0aGlzLm5vZGVEYXRhQXJyYXkpO1xyXG4gICAgdmFyIGxpbmtEaWZmcyA9IHRoaXMuX2xkYURpZmZlci5kaWZmKHRoaXMubGlua0RhdGFBcnJheSk7XHJcblxyXG4gICAgaWYgKHRoaXMuc2tpcHNEaWFncmFtVXBkYXRlKSByZXR1cm47XHJcblxyXG4gICAgLy8gZG9uJ3QgbmVlZCBtb2RlbCBjaGFuZ2UgbGlzdGVuZXIgd2hpbGUgcGVyZm9ybWluZyBrbm93biBkYXRhIHVwZGF0ZXNcclxuICAgIGlmICh0aGlzLm1vZGVsQ2hhbmdlZExpc3RlbmVyICE9PSBudWxsKSB0aGlzLmRpYWdyYW0ubW9kZWwucmVtb3ZlQ2hhbmdlZExpc3RlbmVyKHRoaXMubW9kZWxDaGFuZ2VkTGlzdGVuZXIpO1xyXG5cclxuICAgIHRoaXMuZGlhZ3JhbS5tb2RlbC5zdGFydFRyYW5zYWN0aW9uKCd1cGRhdGUgZGF0YScpO1xyXG4gICAgLy8gdXBkYXRlIG1vZGVsRGF0YSBmaXJzdCwgaW4gY2FzZSBiaW5kaW5ncyBvbiBub2RlcyAvIGxpbmtzIGRlcGVuZCBvbiBtb2RlbCBkYXRhXHJcbiAgICB0aGlzLmRpYWdyYW0ubW9kZWwuYXNzaWduQWxsRGF0YVByb3BlcnRpZXModGhpcy5kaWFncmFtLm1vZGVsLm1vZGVsRGF0YSwgdGhpcy5tb2RlbERhdGEpO1xyXG4gICAgLy8gbWVyZ2Ugbm9kZSAvIGxpbmsgZGF0YVxyXG4gICAgRGlhZ3JhbUNvbXBvbmVudC5tZXJnZUNoYW5nZXModGhpcywgbm9kZURpZmZzLCBcIm5cIik7XHJcbiAgICBEaWFncmFtQ29tcG9uZW50Lm1lcmdlQ2hhbmdlcyh0aGlzLCBsaW5rRGlmZnMsIFwibFwiKTtcclxuICAgIHRoaXMuZGlhZ3JhbS5tb2RlbC5jb21taXRUcmFuc2FjdGlvbigndXBkYXRlIGRhdGEnKTtcclxuXHJcbiAgICAvLyByZXNldCB0aGUgbW9kZWwgY2hhbmdlIGxpc3RlbmVyXHJcbiAgICBpZiAodGhpcy5tb2RlbENoYW5nZWRMaXN0ZW5lciAhPT0gbnVsbCkgdGhpcy5kaWFncmFtLm1vZGVsLmFkZENoYW5nZWRMaXN0ZW5lcih0aGlzLm1vZGVsQ2hhbmdlZExpc3RlbmVyKTtcclxuXHJcbiAgfSAvLyBlbmQgbmdEb0NoZWNrXHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGlhZ3JhbS5kaXYgPSBudWxsOyAvLyByZW1vdmVzIGV2ZW50IGxpc3RlbmVyc1xyXG4gIH1cclxufVxyXG4iXX0=

@@ -144,5 +144,6 @@ /**

this.palette.model.startTransaction('update data');
// update modelData first, in case bindings on nodes / links depend on model data
this.palette.model.assignAllDataProperties(this.palette.model.modelData, this.modelData);
DiagramComponent.mergeChanges(this, nodeDiffs, "n");
DiagramComponent.mergeChanges(this, linkDiffs, "l");
this.palette.model.assignAllDataProperties(this.palette.model.modelData, this.modelData);
this.palette.model.commitTransaction('update data');

@@ -225,2 +226,2 @@ // reset the model change listener

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFsZXR0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9nb2pzLWFuZ3VsYXIvc3JjL2xpYi9wYWxldHRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWtCLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SSxPQUFPLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUt2RCxNQUFNLE9BQU8sZ0JBQWdCOzs7OztJQXFDM0IsWUFBb0IsVUFBMkIsRUFBUyxJQUFZO1FBQWhELGVBQVUsR0FBVixVQUFVLENBQWlCO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBUTs7UUF6QnBELGtCQUFhLEdBQXlCLElBQUksQ0FBQzs7UUFHM0MsY0FBUyxHQUFrQixJQUFJLENBQUM7UUFLaEMsdUJBQWtCLEdBQVksS0FBSyxDQUFDOztRQUc3Qyx5QkFBb0IsR0FBd0MsSUFBSSxDQUFDOztRQUd2RCxnQkFBVyxHQUFxQyxJQUFJLFlBQVksRUFBc0IsQ0FBQzs7UUFLakcsWUFBTyxHQUFzQixJQUFJLENBQUM7UUFPdkMsd0VBQXdFO1FBQ3hFLDJFQUEyRTtRQUMzRSxtREFBbUQ7UUFDbkQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3RELENBQUMsQ0FBQyxrQkFBa0I7Ozs7OztJQUtiLGVBQWU7UUFD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QUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRTNHLENBQUMsQ0FBQyxnQkFBZ0I7Ozs7O0lBRVgsV0FBVztRQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQywwQkFBMEI7SUFDckQsQ0FBQzs7O1lBM0lGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsY0FBYztnQkFDeEIsUUFBUSxFQUFFLGlEQUFpRDthQUM1RDs7OztZQU5vRSxlQUFlO1lBQUUsTUFBTTs7OzBCQWF6RixLQUFLOzRCQUdMLEtBQUs7NEJBR0wsS0FBSzt3QkFHTCxLQUFLOzJCQUdMLEtBQUs7aUNBRUwsS0FBSzswQkFNTCxNQUFNO3lCQUVOLFNBQVMsU0FBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOzs7Ozs7OztJQXRCeEMsdUNBQThDOztJQUc5Qyx5Q0FBb0Q7O0lBR3BELHlDQUEyRDs7SUFHM0QscUNBQWdEOztJQUdoRCx3Q0FBcUM7O0lBRXJDLDhDQUFvRDs7SUFHcEQsZ0RBQXdFOztJQUd4RSx1Q0FBd0c7O0lBRXhHLHNDQUF3RTs7SUFHeEUsbUNBQXlDOzs7OztJQUd6QyxzQ0FBZ0Q7Ozs7O0lBQ2hELHNDQUFnRDs7Ozs7SUFFcEMsc0NBQW1DOztJQUFFLGdDQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgS2V5VmFsdWVEaWZmZXIsIEtleVZhbHVlRGlmZmVycywgTmdab25lLCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBnbyBmcm9tICdnb2pzJztcclxuaW1wb3J0IHsgRGlhZ3JhbUNvbXBvbmVudCB9IGZyb20gJy4vZGlhZ3JhbS5jb21wb25lbnQnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2dvanMtcGFsZXR0ZScsXHJcbiAgdGVtcGxhdGU6ICc8ZGl2ICNuZ1BhbGV0dGUgW2NsYXNzTmFtZV09ZGl2Q2xhc3NOYW1lPjwvZGl2PidcclxufSlcclxuZXhwb3J0IGNsYXNzIFBhbGV0dGVDb21wb25lbnQge1xyXG5cclxuICAvKipcclxuICAgKiBQYWxldHRlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLiBSZXR1cm5zIGEgZ28uUGFsZXR0ZS5cclxuICAgKiBEbyBub3QgaW5pdGlhbGl6ZSBtb2RlbCBkYXRhIGluIHRoaXMgZnVuY3Rpb24uXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGluaXRQYWxldHRlOiAoKSA9PiBnby5QYWxldHRlO1xyXG5cclxuICAvLyBOb2RlIGRhdGEgZm9yIHBhbGV0dGVcclxuICBASW5wdXQoKSBwdWJsaWMgbm9kZURhdGFBcnJheTogQXJyYXk8Z28uT2JqZWN0RGF0YT47XHJcblxyXG4gIC8vIExpbmsgZGF0YSBmb3IgcGFsZXR0ZS4gT3B0aW9uYWxcclxuICBASW5wdXQoKSBwdWJsaWMgbGlua0RhdGFBcnJheTogQXJyYXk8Z28uT2JqZWN0RGF0YT4gPSBudWxsO1xyXG5cclxuICAvLyBNb2RlbCBkYXRhIGZvciBwYWxldHRlLiBPcHRpb25hbFxyXG4gIEBJbnB1dCgpIHB1YmxpYyBtb2RlbERhdGE6IGdvLk9iamVjdERhdGEgPSBudWxsO1xyXG5cclxuICAvLyBQYWxldHRlIGRpdiBjbGFzcyBuYW1lLiBVc2UgdGhpcyBuYW1lIHRvIHN0eWxlIHlvdXIgcGFsZXR0ZSBpbiBDU1NcclxuICBASW5wdXQoKSBwdWJsaWMgZGl2Q2xhc3NOYW1lOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBza2lwc1BhbGV0dGVVcGRhdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gbW9kZWwgY2hhbmdlZCBsaXN0ZW5lciBmdW5jdGlvbiBmb3IgcGFsZXR0ZVxyXG4gIHB1YmxpYyBtb2RlbENoYW5nZWRMaXN0ZW5lcjogKGU6IGdvLkNoYW5nZWRFdmVudCkgPT4gdm9pZCB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvLyBldmVudCBlbWl0dGVyIC0tIGZpcmVzIHdoZW4gcGFsZXR0ZSBtb2RlbCBjaGFuZ2VzLiBDYXB0dXJlIHRoaXMgZW1pdHRlZCBldmVudCBpbiBwYXJlbnQgY29tcG9uZW50XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBtb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGdvLkluY3JlbWVudGFsRGF0YT4gPSBuZXcgRXZlbnRFbWl0dGVyPGdvLkluY3JlbWVudGFsRGF0YT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbmdQYWxldHRlJywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIHBhbGV0dGVEaXY6IEVsZW1lbnRSZWY7XHJcblxyXG4gIC8vIFRoZSBQYWxldHRlIGl0c2VsZlxyXG4gIHB1YmxpYyBwYWxldHRlOiBnby5QYWxldHRlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8vIGRpZmZlcnMgZm9yIGFycmF5IGlucHV0cyAobm9kZSAvIGxpbmsgZGF0YSBhcnJheXMpXHJcbiAgcHJpdmF0ZSBfbmRhRGlmZmVyOiBLZXlWYWx1ZURpZmZlcjxzdHJpbmcsIGFueT47XHJcbiAgcHJpdmF0ZSBfbGRhRGlmZmVyOiBLZXlWYWx1ZURpZmZlcjxzdHJpbmcsIGFueT47XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2t2ZGlmZmVyczogS2V5VmFsdWVEaWZmZXJzLCBwdWJsaWMgem9uZTogTmdab25lKSB7XHJcbiAgICAvLyBkaWZmZXJzIHVzZWQgdG8gY2hlY2sgaWYgdGhlcmUgaGF2ZSBiZWVuIGNoYW5nZWQgdG8gdGhlIGFycmF5IEBJbnB1dHNcclxuICAgIC8vIHdpdGhvdXQgdGhlbSwgY2hhbmdlcyB0byB0aGUgaW5wdXQgYXJyYXlzIHdvbid0IHJlZ2lzdGVyIGluIG5nT25DaGFuZ2VzLFxyXG4gICAgLy8gc2luY2UgdGhlIGFycmF5IHJlZmVyZW5jZSBpdHNlbGYgbWF5IGJlIHRoZSBzYW1lXHJcbiAgICB0aGlzLl9uZGFEaWZmZXIgPSB0aGlzLl9rdmRpZmZlcnMuZmluZChbXSkuY3JlYXRlKCk7XHJcbiAgICB0aGlzLl9sZGFEaWZmZXIgPSB0aGlzLl9rdmRpZmZlcnMuZmluZChbXSkuY3JlYXRlKCk7XHJcbiAgfSAvLyBlbmQgY29uc3RydWN0b3JcclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSBQYWxldHRlIGFmdGVyIHZpZXcgaW5pdFxyXG4gICAqL1xyXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMucGFsZXR0ZURpdikgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMucGFsZXR0ZSA9IHRoaXMuaW5pdFBhbGV0dGUoKTtcclxuXHJcbiAgICAvLyBUaGlzIGJpdCBvZiBjb2RlIG1ha2VzIHN1cmUgdGhlIG1vdXNlbW92ZSBldmVudCBsaXN0ZW5lcnMgb24gdGhlIGNhbnZhcyBhcmUgcnVuIG91dHNpZGUgTmdab25lXHJcbiAgICAvLyBUaGlzIG1ha2VzIGl0IHNvIGNoYW5nZSBkZXRlY3Rpb24gaXNuJ3QgdHJpZ2dlcmVkIGV2ZXJ5IHRpbWUgdGhlIG1vdXNlIGlzIG1vdmVkIGluc2lkZSB0aGUgY2FudmFzLCBncmVhdGx5IGltcHJvdmluZyBwZXJmb3JtYW5jZVxyXG4gICAgLy8gSWYgc29tZSBzdGF0ZS1hbHRlcmluZyBiZWhhdmlvciBtdXN0IGhhcHBlbiBvbiBhIG1vdXNlbW92ZSBldmVudCBpbnNpZGUgdGhlIHBhbGV0dGUsXHJcbiAgICAvLyB5b3Ugd2lsbCBoYXZlIHRvIHVzaW5nIHpvbmUucnVuKCkgdG8gbWFrZSBzdXJlIHRoYXQgZXZlbnQgdHJpZ2dlcnMgYW5ndWxhciBjaGFuZ2UgZGV0ZWN0aW9uXHJcbiAgICB0aGlzLnBhbGV0dGUuYWRkRXZlbnRMaXN0ZW5lciA9IChET01FbGVtZW50OiBFbGVtZW50IHwgV2luZG93IHwgRG9jdW1lbnQsIG5hbWU6IHN0cmluZywgbGlzdGVuZXI6IGFueSwgY2FwdHVyZTogYm9vbGVhbikgPT4ge1xyXG4gICAgICBjb25zdCBzdXBlckFkZEV2ZW50TGlzdGVuZXIgPSBnby5EaWFncmFtLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyO1xyXG4gICAgICBpZiAobmFtZSA9PT0gJ21vdXNlbW92ZScpIHtcclxuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gc3VwZXJBZGRFdmVudExpc3RlbmVyLmNhbGwodGhpcywgRE9NRWxlbWVudCwgbmFtZSwgbGlzdGVuZXIsIGNhcHR1cmUpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgIHN1cGVyQWRkRXZlbnRMaXN0ZW5lci5jYWxsKHRoaXMsIERPTUVsZW1lbnQsIG5hbWUsIGxpc3RlbmVyLCBjYXB0dXJlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBhc3NpZ24gdGhlIFBhbGV0dGUncyBkaXYsIHdoaWNoIChhbW9uZyBtYW55IG90aGVyIHRoaW5ncykgd2lsbCBhdHRhY2ggYSBidW5jaCBvZiBsaXN0ZW5lcnMgdG8gdGhlIGNhbnZhcyxcclxuICAgIC8vIHVzaW5nIHRoZSBvdmVycmlkZGVuIGFkZEV2ZW50TGlzdGVuZXIgZnVuY3Rpb24gYWJvdmVcclxuICAgIGNvbnN0IGRpdlJlZiA9IHRoaXMucGFsZXR0ZURpdi5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5wYWxldHRlLmRpdiA9IGRpdlJlZjtcclxuXHJcbiAgICAvLyBpbml0aWFsaXplIHBhbGV0dGUgbW9kZWxcclxuICAgIHRoaXMucGFsZXR0ZS5kZWxheUluaXRpYWxpemF0aW9uKCgpID0+IHtcclxuICAgICAgY29uc3QgbW9kZWwgPSB0aGlzLnBhbGV0dGUubW9kZWw7XHJcbiAgICAgIG1vZGVsLmNvbW1pdCgobTogZ28uTW9kZWwpID0+IHtcclxuICAgICAgICBtLm1lcmdlTm9kZURhdGFBcnJheShtLmNsb25lRGVlcCh0aGlzLm5vZGVEYXRhQXJyYXkpKTtcclxuICAgICAgICBpZiAodGhpcy5saW5rRGF0YUFycmF5ICYmIG0gaW5zdGFuY2VvZiBnby5HcmFwaExpbmtzTW9kZWwpIHtcclxuICAgICAgICAgIG0ubWVyZ2VMaW5rRGF0YUFycmF5KG0uY2xvbmVEZWVwKHRoaXMubGlua0RhdGFBcnJheSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5tb2RlbERhdGEpIHtcclxuICAgICAgICAgIG0uYXNzaWduQWxsRGF0YVByb3BlcnRpZXMobS5tb2RlbERhdGEsIHRoaXMubW9kZWxEYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wYWxldHRlLmxheW91dERpYWdyYW0odHJ1ZSk7XHJcbiAgICAgIH0sIG51bGwpO1xyXG4gICAgfSk7XHJcblxyXG5cclxuICAgIC8vIGluaXRpYWxpemVyIGxpc3RlbmVyXHJcbiAgICB0aGlzLm1vZGVsQ2hhbmdlZExpc3RlbmVyID0gKGU6IGdvLkNoYW5nZWRFdmVudCkgPT4ge1xyXG4gICAgICBpZiAoZS5pc1RyYW5zYWN0aW9uRmluaXNoZWQgJiYgdGhpcy5wYWxldHRlICYmIHRoaXMucGFsZXR0ZS5tb2RlbCAmJiAhdGhpcy5wYWxldHRlLm1vZGVsLmlzUmVhZE9ubHkpIHtcclxuICAgICAgICAvLyB0aGlzIG11c3QgYmUgZG9uZSB3aXRoaW4gYSBOZ1pvbmUucnVuIGJsb2NrLCBzbyBjaGFuZ2VzIGFyZSBkZXRlY3RlZCBpbiB0aGUgcGFyZW50IGNvbXBvbmVudFxyXG4gICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZGF0YUNoYW5nZXMgPSBlLm1vZGVsIS50b0luY3JlbWVudGFsRGF0YShlKTtcclxuICAgICAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdChkYXRhQ2hhbmdlcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aGlzLnBhbGV0dGUuYWRkTW9kZWxDaGFuZ2VkTGlzdGVuZXIodGhpcy5tb2RlbENoYW5nZWRMaXN0ZW5lcik7XHJcbiAgfSAvLyBlbmQgbmdBZnRlclZpZXdJbml0XHJcblxyXG4gIC8qKlxyXG4gICAqIEFsd2F5cyBiZSBjaGVja2luZyBpZiBhcnJheSBJbnB1dCBkYXRhIGhhcyBjaGFuZ2VkIChub2RlIGFuZCBsaW5rIGRhdGEgYXJyYXlzKVxyXG4gICAqL1xyXG4gIHB1YmxpYyBuZ0RvQ2hlY2soKSB7XHJcblxyXG4gICAgaWYgKCF0aGlzLnBhbGV0dGUpIHJldHVybjtcclxuICAgIGlmICghdGhpcy5wYWxldHRlLm1vZGVsKSByZXR1cm47XHJcblxyXG4gICAgLy8gdGhlc2UgbmVlZCB0byBiZSBydW4gZWFjaCBjaGVjaywgZXZlbiBpZiBubyBtZXJnaW5nIGhhcHBlbnNcclxuICAgIC8vIG90aGVyd2lzZSwgdGhleSB3aWxsIGRldGVjdCBhbGwgZGlmZnMgdGhhdCBoYXBwZW5lZCBzaW5jZSBsYXN0IHRpbWUgc2tpcHNQYWxldHRlVXBkYXRlIHdhcyBmYWxzZSxcclxuICAgIC8vIHN1Y2ggYXMgcmVtb3ZlIG9wcyB0aGF0IGhhcHBlbmVkIGluIEdvSlMgd2hlbiBza2lwc1BhbGV0dGVVcGRhdGUgPSB0cnVlLCBcclxuICAgIC8vIGFuZCB0aGVuIHJlYWxsbGxsbHkgYmFkIHN0dWZmIGhhcHBlbnMgKGRlbGV0aW5nIHJhbmRvbSBub2RlcywgdXBkYXRpbmcgdGhlIHdyb25nIFBhcnRzKVxyXG4gICAgLy8gQW5ndWxhciBkaWZmZXJzIGFyZSBhIGxvdCBvZiBmdW5cclxuICAgIHZhciBub2RlRGlmZnMgPSB0aGlzLl9uZGFEaWZmZXIuZGlmZih0aGlzLm5vZGVEYXRhQXJyYXkpO1xyXG4gICAgdmFyIGxpbmtEaWZmcyA9IHRoaXMuX2xkYURpZmZlci5kaWZmKHRoaXMubGlua0RhdGFBcnJheSk7XHJcblxyXG4gICAgaWYgKHRoaXMuc2tpcHNQYWxldHRlVXBkYXRlKSByZXR1cm47XHJcblxyXG4gICAgLy8gZG9uJ3QgbmVlZCBtb2RlbCBjaGFuZ2UgbGlzdGVuZXIgd2hpbGUgcGVyZm9ybWluZyBrbm93biBkYXRhIHVwZGF0ZXNcclxuICAgIGlmICh0aGlzLm1vZGVsQ2hhbmdlZExpc3RlbmVyICE9PSBudWxsKSB0aGlzLnBhbGV0dGUubW9kZWwucmVtb3ZlQ2hhbmdlZExpc3RlbmVyKHRoaXMubW9kZWxDaGFuZ2VkTGlzdGVuZXIpO1xyXG5cclxuICAgIHRoaXMucGFsZXR0ZS5tb2RlbC5zdGFydFRyYW5zYWN0aW9uKCd1cGRhdGUgZGF0YScpO1xyXG4gICAgRGlhZ3JhbUNvbXBvbmVudC5tZXJnZUNoYW5nZXModGhpcywgbm9kZURpZmZzLCBcIm5cIik7XHJcbiAgICBEaWFncmFtQ29tcG9uZW50Lm1lcmdlQ2hhbmdlcyh0aGlzLCBsaW5rRGlmZnMsIFwibFwiKTtcclxuICAgIHRoaXMucGFsZXR0ZS5tb2RlbC5hc3NpZ25BbGxEYXRhUHJvcGVydGllcyh0aGlzLnBhbGV0dGUubW9kZWwubW9kZWxEYXRhLCB0aGlzLm1vZGVsRGF0YSk7XHJcbiAgICB0aGlzLnBhbGV0dGUubW9kZWwuY29tbWl0VHJhbnNhY3Rpb24oJ3VwZGF0ZSBkYXRhJyk7XHJcbiAgICAvLyByZXNldCB0aGUgbW9kZWwgY2hhbmdlIGxpc3RlbmVyXHJcbiAgICBpZiAodGhpcy5tb2RlbENoYW5nZWRMaXN0ZW5lciAhPT0gbnVsbCkgdGhpcy5wYWxldHRlLm1vZGVsLmFkZENoYW5nZWRMaXN0ZW5lcih0aGlzLm1vZGVsQ2hhbmdlZExpc3RlbmVyKTtcclxuXHJcbiAgfSAvLyBlbmQgbmdEb0NoZWNrXHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMucGFsZXR0ZS5kaXYgPSBudWxsOyAvLyByZW1vdmVzIGV2ZW50IGxpc3RlbmVyc1xyXG4gIH1cclxuXHJcbn1cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFsZXR0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9nb2pzLWFuZ3VsYXIvc3JjL2xpYi9wYWxldHRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWtCLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SSxPQUFPLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUt2RCxNQUFNLE9BQU8sZ0JBQWdCOzs7OztJQXFDM0IsWUFBb0IsVUFBMkIsRUFBUyxJQUFZO1FBQWhELGVBQVUsR0FBVixVQUFVLENBQWlCO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBUTs7UUF6QnBELGtCQUFhLEdBQXlCLElBQUksQ0FBQzs7UUFHM0MsY0FBUyxHQUFrQixJQUFJLENBQUM7UUFLaEMsdUJBQWtCLEdBQVksS0FBSyxDQUFDOztRQUc3Qyx5QkFBb0IsR0FBd0MsSUFBSSxDQUFDOztRQUd2RCxnQkFBVyxHQUFxQyxJQUFJLFlBQVksRUFBc0IsQ0FBQzs7UUFLakcsWUFBTyxHQUFzQixJQUFJLENBQUM7UUFPdkMsd0VBQXdFO1FBQ3hFLDJFQUEyRTtRQUMzRSxtREFBbUQ7UUFDbkQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3RELENBQUMsQ0FBQyxrQkFBa0I7Ozs7OztJQUtiLGVBQWU7UUFD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LENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUUzRyxDQUFDLENBQUMsZ0JBQWdCOzs7OztJQUVYLFdBQVc7UUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsMEJBQTBCO0lBQ3JELENBQUM7OztZQTVJRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGNBQWM7Z0JBQ3hCLFFBQVEsRUFBRSxpREFBaUQ7YUFDNUQ7Ozs7WUFOb0UsZUFBZTtZQUFFLE1BQU07OzswQkFhekYsS0FBSzs0QkFHTCxLQUFLOzRCQUdMLEtBQUs7d0JBR0wsS0FBSzsyQkFHTCxLQUFLO2lDQUVMLEtBQUs7MEJBTUwsTUFBTTt5QkFFTixTQUFTLFNBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTs7Ozs7Ozs7SUF0QnhDLHVDQUE4Qzs7SUFHOUMseUNBQW9EOztJQUdwRCx5Q0FBMkQ7O0lBRzNELHFDQUFnRDs7SUFHaEQsd0NBQXFDOztJQUVyQyw4Q0FBb0Q7O0lBR3BELGdEQUF3RTs7SUFHeEUsdUNBQXdHOztJQUV4RyxzQ0FBd0U7O0lBR3hFLG1DQUF5Qzs7Ozs7SUFHekMsc0NBQWdEOzs7OztJQUNoRCxzQ0FBZ0Q7Ozs7O0lBRXBDLHNDQUFtQzs7SUFBRSxnQ0FBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIEtleVZhbHVlRGlmZmVyLCBLZXlWYWx1ZURpZmZlcnMsIE5nWm9uZSwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgZ28gZnJvbSAnZ29qcyc7XHJcbmltcG9ydCB7IERpYWdyYW1Db21wb25lbnQgfSBmcm9tICcuL2RpYWdyYW0uY29tcG9uZW50JztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdnb2pzLXBhbGV0dGUnLFxyXG4gIHRlbXBsYXRlOiAnPGRpdiAjbmdQYWxldHRlIFtjbGFzc05hbWVdPWRpdkNsYXNzTmFtZT48L2Rpdj4nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYWxldHRlQ29tcG9uZW50IHtcclxuXHJcbiAgLyoqXHJcbiAgICogUGFsZXR0ZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4gUmV0dXJucyBhIGdvLlBhbGV0dGUuXHJcbiAgICogRG8gbm90IGluaXRpYWxpemUgbW9kZWwgZGF0YSBpbiB0aGlzIGZ1bmN0aW9uLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbml0UGFsZXR0ZTogKCkgPT4gZ28uUGFsZXR0ZTtcclxuXHJcbiAgLy8gTm9kZSBkYXRhIGZvciBwYWxldHRlXHJcbiAgQElucHV0KCkgcHVibGljIG5vZGVEYXRhQXJyYXk6IEFycmF5PGdvLk9iamVjdERhdGE+O1xyXG5cclxuICAvLyBMaW5rIGRhdGEgZm9yIHBhbGV0dGUuIE9wdGlvbmFsXHJcbiAgQElucHV0KCkgcHVibGljIGxpbmtEYXRhQXJyYXk6IEFycmF5PGdvLk9iamVjdERhdGE+ID0gbnVsbDtcclxuXHJcbiAgLy8gTW9kZWwgZGF0YSBmb3IgcGFsZXR0ZS4gT3B0aW9uYWxcclxuICBASW5wdXQoKSBwdWJsaWMgbW9kZWxEYXRhOiBnby5PYmplY3REYXRhID0gbnVsbDtcclxuXHJcbiAgLy8gUGFsZXR0ZSBkaXYgY2xhc3MgbmFtZS4gVXNlIHRoaXMgbmFtZSB0byBzdHlsZSB5b3VyIHBhbGV0dGUgaW4gQ1NTXHJcbiAgQElucHV0KCkgcHVibGljIGRpdkNsYXNzTmFtZTogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgc2tpcHNQYWxldHRlVXBkYXRlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIG1vZGVsIGNoYW5nZWQgbGlzdGVuZXIgZnVuY3Rpb24gZm9yIHBhbGV0dGVcclxuICBwdWJsaWMgbW9kZWxDaGFuZ2VkTGlzdGVuZXI6IChlOiBnby5DaGFuZ2VkRXZlbnQpID0+IHZvaWQgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLy8gZXZlbnQgZW1pdHRlciAtLSBmaXJlcyB3aGVuIHBhbGV0dGUgbW9kZWwgY2hhbmdlcy4gQ2FwdHVyZSB0aGlzIGVtaXR0ZWQgZXZlbnQgaW4gcGFyZW50IGNvbXBvbmVudFxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxnby5JbmNyZW1lbnRhbERhdGE+ID0gbmV3IEV2ZW50RW1pdHRlcjxnby5JbmNyZW1lbnRhbERhdGE+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ25nUGFsZXR0ZScsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBwYWxldHRlRGl2OiBFbGVtZW50UmVmO1xyXG5cclxuICAvLyBUaGUgUGFsZXR0ZSBpdHNlbGZcclxuICBwdWJsaWMgcGFsZXR0ZTogZ28uUGFsZXR0ZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvLyBkaWZmZXJzIGZvciBhcnJheSBpbnB1dHMgKG5vZGUgLyBsaW5rIGRhdGEgYXJyYXlzKVxyXG4gIHByaXZhdGUgX25kYURpZmZlcjogS2V5VmFsdWVEaWZmZXI8c3RyaW5nLCBhbnk+O1xyXG4gIHByaXZhdGUgX2xkYURpZmZlcjogS2V5VmFsdWVEaWZmZXI8c3RyaW5nLCBhbnk+O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9rdmRpZmZlcnM6IEtleVZhbHVlRGlmZmVycywgcHVibGljIHpvbmU6IE5nWm9uZSkge1xyXG4gICAgLy8gZGlmZmVycyB1c2VkIHRvIGNoZWNrIGlmIHRoZXJlIGhhdmUgYmVlbiBjaGFuZ2VkIHRvIHRoZSBhcnJheSBASW5wdXRzXHJcbiAgICAvLyB3aXRob3V0IHRoZW0sIGNoYW5nZXMgdG8gdGhlIGlucHV0IGFycmF5cyB3b24ndCByZWdpc3RlciBpbiBuZ09uQ2hhbmdlcyxcclxuICAgIC8vIHNpbmNlIHRoZSBhcnJheSByZWZlcmVuY2UgaXRzZWxmIG1heSBiZSB0aGUgc2FtZVxyXG4gICAgdGhpcy5fbmRhRGlmZmVyID0gdGhpcy5fa3ZkaWZmZXJzLmZpbmQoW10pLmNyZWF0ZSgpO1xyXG4gICAgdGhpcy5fbGRhRGlmZmVyID0gdGhpcy5fa3ZkaWZmZXJzLmZpbmQoW10pLmNyZWF0ZSgpO1xyXG4gIH0gLy8gZW5kIGNvbnN0cnVjdG9yXHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgUGFsZXR0ZSBhZnRlciB2aWV3IGluaXRcclxuICAgKi9cclxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKCF0aGlzLnBhbGV0dGVEaXYpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLnBhbGV0dGUgPSB0aGlzLmluaXRQYWxldHRlKCk7XHJcblxyXG4gICAgLy8gVGhpcyBiaXQgb2YgY29kZSBtYWtlcyBzdXJlIHRoZSBtb3VzZW1vdmUgZXZlbnQgbGlzdGVuZXJzIG9uIHRoZSBjYW52YXMgYXJlIHJ1biBvdXRzaWRlIE5nWm9uZVxyXG4gICAgLy8gVGhpcyBtYWtlcyBpdCBzbyBjaGFuZ2UgZGV0ZWN0aW9uIGlzbid0IHRyaWdnZXJlZCBldmVyeSB0aW1lIHRoZSBtb3VzZSBpcyBtb3ZlZCBpbnNpZGUgdGhlIGNhbnZhcywgZ3JlYXRseSBpbXByb3ZpbmcgcGVyZm9ybWFuY2VcclxuICAgIC8vIElmIHNvbWUgc3RhdGUtYWx0ZXJpbmcgYmVoYXZpb3IgbXVzdCBoYXBwZW4gb24gYSBtb3VzZW1vdmUgZXZlbnQgaW5zaWRlIHRoZSBwYWxldHRlLFxyXG4gICAgLy8geW91IHdpbGwgaGF2ZSB0byB1c2luZyB6b25lLnJ1bigpIHRvIG1ha2Ugc3VyZSB0aGF0IGV2ZW50IHRyaWdnZXJzIGFuZ3VsYXIgY2hhbmdlIGRldGVjdGlvblxyXG4gICAgdGhpcy5wYWxldHRlLmFkZEV2ZW50TGlzdGVuZXIgPSAoRE9NRWxlbWVudDogRWxlbWVudCB8IFdpbmRvdyB8IERvY3VtZW50LCBuYW1lOiBzdHJpbmcsIGxpc3RlbmVyOiBhbnksIGNhcHR1cmU6IGJvb2xlYW4pID0+IHtcclxuICAgICAgY29uc3Qgc3VwZXJBZGRFdmVudExpc3RlbmVyID0gZ28uRGlhZ3JhbS5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcjtcclxuICAgICAgaWYgKG5hbWUgPT09ICdtb3VzZW1vdmUnKSB7XHJcbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHN1cGVyQWRkRXZlbnRMaXN0ZW5lci5jYWxsKHRoaXMsIERPTUVsZW1lbnQsIG5hbWUsIGxpc3RlbmVyLCBjYXB0dXJlKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICBzdXBlckFkZEV2ZW50TGlzdGVuZXIuY2FsbCh0aGlzLCBET01FbGVtZW50LCBuYW1lLCBsaXN0ZW5lciwgY2FwdHVyZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLy8gYXNzaWduIHRoZSBQYWxldHRlJ3MgZGl2LCB3aGljaCAoYW1vbmcgbWFueSBvdGhlciB0aGluZ3MpIHdpbGwgYXR0YWNoIGEgYnVuY2ggb2YgbGlzdGVuZXJzIHRvIHRoZSBjYW52YXMsXHJcbiAgICAvLyB1c2luZyB0aGUgb3ZlcnJpZGRlbiBhZGRFdmVudExpc3RlbmVyIGZ1bmN0aW9uIGFib3ZlXHJcbiAgICBjb25zdCBkaXZSZWYgPSB0aGlzLnBhbGV0dGVEaXYubmF0aXZlRWxlbWVudDtcclxuICAgIHRoaXMucGFsZXR0ZS5kaXYgPSBkaXZSZWY7XHJcblxyXG4gICAgLy8gaW5pdGlhbGl6ZSBwYWxldHRlIG1vZGVsXHJcbiAgICB0aGlzLnBhbGV0dGUuZGVsYXlJbml0aWFsaXphdGlvbigoKSA9PiB7XHJcbiAgICAgIGNvbnN0IG1vZGVsID0gdGhpcy5wYWxldHRlLm1vZGVsO1xyXG4gICAgICBtb2RlbC5jb21taXQoKG06IGdvLk1vZGVsKSA9PiB7XHJcbiAgICAgICAgbS5tZXJnZU5vZGVEYXRhQXJyYXkobS5jbG9uZURlZXAodGhpcy5ub2RlRGF0YUFycmF5KSk7XHJcbiAgICAgICAgaWYgKHRoaXMubGlua0RhdGFBcnJheSAmJiBtIGluc3RhbmNlb2YgZ28uR3JhcGhMaW5rc01vZGVsKSB7XHJcbiAgICAgICAgICBtLm1lcmdlTGlua0RhdGFBcnJheShtLmNsb25lRGVlcCh0aGlzLmxpbmtEYXRhQXJyYXkpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMubW9kZWxEYXRhKSB7XHJcbiAgICAgICAgICBtLmFzc2lnbkFsbERhdGFQcm9wZXJ0aWVzKG0ubW9kZWxEYXRhLCB0aGlzLm1vZGVsRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucGFsZXR0ZS5sYXlvdXREaWFncmFtKHRydWUpO1xyXG4gICAgICB9LCBudWxsKTtcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgICAvLyBpbml0aWFsaXplciBsaXN0ZW5lclxyXG4gICAgdGhpcy5tb2RlbENoYW5nZWRMaXN0ZW5lciA9IChlOiBnby5DaGFuZ2VkRXZlbnQpID0+IHtcclxuICAgICAgaWYgKGUuaXNUcmFuc2FjdGlvbkZpbmlzaGVkICYmIHRoaXMucGFsZXR0ZSAmJiB0aGlzLnBhbGV0dGUubW9kZWwgJiYgIXRoaXMucGFsZXR0ZS5tb2RlbC5pc1JlYWRPbmx5KSB7XHJcbiAgICAgICAgLy8gdGhpcyBtdXN0IGJlIGRvbmUgd2l0aGluIGEgTmdab25lLnJ1biBibG9jaywgc28gY2hhbmdlcyBhcmUgZGV0ZWN0ZWQgaW4gdGhlIHBhcmVudCBjb21wb25lbnRcclxuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGRhdGFDaGFuZ2VzID0gZS5tb2RlbCEudG9JbmNyZW1lbnRhbERhdGEoZSk7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoZGF0YUNoYW5nZXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhpcy5wYWxldHRlLmFkZE1vZGVsQ2hhbmdlZExpc3RlbmVyKHRoaXMubW9kZWxDaGFuZ2VkTGlzdGVuZXIpO1xyXG4gIH0gLy8gZW5kIG5nQWZ0ZXJWaWV3SW5pdFxyXG5cclxuICAvKipcclxuICAgKiBBbHdheXMgYmUgY2hlY2tpbmcgaWYgYXJyYXkgSW5wdXQgZGF0YSBoYXMgY2hhbmdlZCAobm9kZSBhbmQgbGluayBkYXRhIGFycmF5cylcclxuICAgKi9cclxuICBwdWJsaWMgbmdEb0NoZWNrKCkge1xyXG5cclxuICAgIGlmICghdGhpcy5wYWxldHRlKSByZXR1cm47XHJcbiAgICBpZiAoIXRoaXMucGFsZXR0ZS5tb2RlbCkgcmV0dXJuO1xyXG5cclxuICAgIC8vIHRoZXNlIG5lZWQgdG8gYmUgcnVuIGVhY2ggY2hlY2ssIGV2ZW4gaWYgbm8gbWVyZ2luZyBoYXBwZW5zXHJcbiAgICAvLyBvdGhlcndpc2UsIHRoZXkgd2lsbCBkZXRlY3QgYWxsIGRpZmZzIHRoYXQgaGFwcGVuZWQgc2luY2UgbGFzdCB0aW1lIHNraXBzUGFsZXR0ZVVwZGF0ZSB3YXMgZmFsc2UsXHJcbiAgICAvLyBzdWNoIGFzIHJlbW92ZSBvcHMgdGhhdCBoYXBwZW5lZCBpbiBHb0pTIHdoZW4gc2tpcHNQYWxldHRlVXBkYXRlID0gdHJ1ZSwgXHJcbiAgICAvLyBhbmQgdGhlbiByZWFsbGxsbGx5IGJhZCBzdHVmZiBoYXBwZW5zIChkZWxldGluZyByYW5kb20gbm9kZXMsIHVwZGF0aW5nIHRoZSB3cm9uZyBQYXJ0cylcclxuICAgIC8vIEFuZ3VsYXIgZGlmZmVycyBhcmUgYSBsb3Qgb2YgZnVuXHJcbiAgICB2YXIgbm9kZURpZmZzID0gdGhpcy5fbmRhRGlmZmVyLmRpZmYodGhpcy5ub2RlRGF0YUFycmF5KTtcclxuICAgIHZhciBsaW5rRGlmZnMgPSB0aGlzLl9sZGFEaWZmZXIuZGlmZih0aGlzLmxpbmtEYXRhQXJyYXkpO1xyXG5cclxuICAgIGlmICh0aGlzLnNraXBzUGFsZXR0ZVVwZGF0ZSkgcmV0dXJuO1xyXG5cclxuICAgIC8vIGRvbid0IG5lZWQgbW9kZWwgY2hhbmdlIGxpc3RlbmVyIHdoaWxlIHBlcmZvcm1pbmcga25vd24gZGF0YSB1cGRhdGVzXHJcbiAgICBpZiAodGhpcy5tb2RlbENoYW5nZWRMaXN0ZW5lciAhPT0gbnVsbCkgdGhpcy5wYWxldHRlLm1vZGVsLnJlbW92ZUNoYW5nZWRMaXN0ZW5lcih0aGlzLm1vZGVsQ2hhbmdlZExpc3RlbmVyKTtcclxuXHJcbiAgICB0aGlzLnBhbGV0dGUubW9kZWwuc3RhcnRUcmFuc2FjdGlvbigndXBkYXRlIGRhdGEnKTtcclxuICAgIC8vIHVwZGF0ZSBtb2RlbERhdGEgZmlyc3QsIGluIGNhc2UgYmluZGluZ3Mgb24gbm9kZXMgLyBsaW5rcyBkZXBlbmQgb24gbW9kZWwgZGF0YVxyXG4gICAgdGhpcy5wYWxldHRlLm1vZGVsLmFzc2lnbkFsbERhdGFQcm9wZXJ0aWVzKHRoaXMucGFsZXR0ZS5tb2RlbC5tb2RlbERhdGEsIHRoaXMubW9kZWxEYXRhKTtcclxuICAgIERpYWdyYW1Db21wb25lbnQubWVyZ2VDaGFuZ2VzKHRoaXMsIG5vZGVEaWZmcywgXCJuXCIpO1xyXG4gICAgRGlhZ3JhbUNvbXBvbmVudC5tZXJnZUNoYW5nZXModGhpcywgbGlua0RpZmZzLCBcImxcIik7XHJcbiAgICB0aGlzLnBhbGV0dGUubW9kZWwuY29tbWl0VHJhbnNhY3Rpb24oJ3VwZGF0ZSBkYXRhJyk7XHJcbiAgICAvLyByZXNldCB0aGUgbW9kZWwgY2hhbmdlIGxpc3RlbmVyXHJcbiAgICBpZiAodGhpcy5tb2RlbENoYW5nZWRMaXN0ZW5lciAhPT0gbnVsbCkgdGhpcy5wYWxldHRlLm1vZGVsLmFkZENoYW5nZWRMaXN0ZW5lcih0aGlzLm1vZGVsQ2hhbmdlZExpc3RlbmVyKTtcclxuXHJcbiAgfSAvLyBlbmQgbmdEb0NoZWNrXHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMucGFsZXR0ZS5kaXYgPSBudWxsOyAvLyByZW1vdmVzIGV2ZW50IGxpc3RlbmVyc1xyXG4gIH1cclxuXHJcbn1cclxuIl19

@@ -282,5 +282,7 @@ import { EventEmitter, Component, KeyValueDiffers, NgZone, Input, Output, ViewChild, NgModule, Injectable, ɵɵdefineInjectable } from '@angular/core';

this.diagram.model.startTransaction('update data');
// update modelData first, in case bindings on nodes / links depend on model data
this.diagram.model.assignAllDataProperties(this.diagram.model.modelData, this.modelData);
// merge node / link data
DiagramComponent.mergeChanges(this, nodeDiffs, "n");
DiagramComponent.mergeChanges(this, linkDiffs, "l");
this.diagram.model.assignAllDataProperties(this.diagram.model.modelData, this.modelData);
this.diagram.model.commitTransaction('update data');

@@ -504,5 +506,6 @@ // reset the model change listener

this.palette.model.startTransaction('update data');
// update modelData first, in case bindings on nodes / links depend on model data
this.palette.model.assignAllDataProperties(this.palette.model.modelData, this.modelData);
DiagramComponent.mergeChanges(this, nodeDiffs, "n");
DiagramComponent.mergeChanges(this, linkDiffs, "l");
this.palette.model.assignAllDataProperties(this.palette.model.modelData, this.modelData);
this.palette.model.commitTransaction('update data');

@@ -509,0 +512,0 @@ // reset the model change listener

{
"name": "gojs-angular",
"version": "1.0.13",
"version": "1.0.14",
"peerDependencies": {

@@ -5,0 +5,0 @@ "@angular/common": ">=11.0.0",

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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