Socket
Socket
Sign inDemoInstall

adias-file-uploader

Package Overview
Dependencies
Maintainers
1
Versions
21
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

adias-file-uploader - npm Package Compare versions

Comparing version 2.0.4 to 2.0.7

2

adias-file-uploader.metadata.json

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

{"__symbolic":"module","version":4,"metadata":{"FilePickerRespnse":{"__symbolic":"interface"},"FileUploaderModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵa"}],"imports":[],"exports":[{"__symbolic":"reference","name":"ɵa"}],"providers":[{"__symbolic":"reference","name":"FileUploaderService"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["endPoint"],"value":{"ngModule":{"__symbolic":"reference","name":"FileUploaderModule"},"providers":[{"provide":{"__symbolic":"reference","name":"ɵb"},"useValue":{"__symbolic":"reference","name":"endPoint"}}]}}}},"FileUploaderService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":13,"character":5},"arguments":[{"__symbolic":"reference","name":"ɵb"}]}],null],"parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":14,"character":18}]}],"upload":[{"__symbolic":"method"}]}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":14,"character":1},"arguments":[{"selector":"[ngxFilePicker]"}]}],"members":{"uploadSuccess":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":18,"character":3}}]}],"fileUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":33,"character":19},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":34,"character":22},{"__symbolic":"reference","name":"FileUploaderService"}]}],"ngOnInit":[{"__symbolic":"method"}],"createSpinnerDiv":[{"__symbolic":"method"}],"createHoveredDiv":[{"__symbolic":"method"}],"createUploadButton":[{"__symbolic":"method"}],"createUploaderElement":[{"__symbolic":"method"}],"bindEvents":[{"__symbolic":"method"}],"upload":[{"__symbolic":"method"}],"previewImage":[{"__symbolic":"method"}],"onMouseOver":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":182,"character":3},"arguments":["mouseover"]}]}],"onMouseOut":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":190,"character":3},"arguments":["mouseout"]}]}],"addHoverEffect":[{"__symbolic":"method"}],"removeHoverEffect":[{"__symbolic":"method"}],"showButton":[{"__symbolic":"method"}],"hideButton":[{"__symbolic":"method"}],"showSpinner":[{"__symbolic":"method"}],"hideSpinner":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":2,"character":29},"arguments":["END_POINT"]}},"origins":{"FilePickerRespnse":"./lib/file-picker.response","FileUploaderModule":"./lib/file-uploader.module","FileUploaderService":"./lib/file-uploader.service","ɵa":"./lib/file-picker.directive","ɵb":"./lib/endpoint"},"importAs":"adias-file-uploader"}
{"__symbolic":"module","version":4,"metadata":{"FilePickerRespnse":{"__symbolic":"interface"},"FileUploaderModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵa"}],"imports":[],"exports":[{"__symbolic":"reference","name":"ɵa"}],"providers":[{"__symbolic":"reference","name":"FileUploaderService"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["endPoint"],"value":{"ngModule":{"__symbolic":"reference","name":"FileUploaderModule"},"providers":[{"provide":{"__symbolic":"reference","name":"ɵb"},"useValue":{"__symbolic":"reference","name":"endPoint"}}]}}}},"FileUploaderService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":13,"character":5},"arguments":[{"__symbolic":"reference","name":"ɵb"}]}],null],"parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":14,"character":18}]}],"upload":[{"__symbolic":"method"}],"uploadMultiple":[{"__symbolic":"method"}]}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":14,"character":1},"arguments":[{"selector":"[ngxFilePicker]"}]}],"members":{"uploadSuccess":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":18,"character":3}}]}],"uploadMultiSuccess":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":19,"character":3}}]}],"fileUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"transparent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3}}]}],"multiple":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":36,"character":19},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":37,"character":22},{"__symbolic":"reference","name":"FileUploaderService"}]}],"ngOnInit":[{"__symbolic":"method"}],"createSpinnerDiv":[{"__symbolic":"method"}],"createHoveredDiv":[{"__symbolic":"method"}],"createUploadButton":[{"__symbolic":"method"}],"createUploaderElement":[{"__symbolic":"method"}],"bindEvents":[{"__symbolic":"method"}],"upload":[{"__symbolic":"method"}],"uploadMultiple":[{"__symbolic":"method"}],"previewImage":[{"__symbolic":"method"}],"onMouseOver":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":227,"character":3},"arguments":["mouseover"]}]}],"onMouseOut":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":235,"character":3},"arguments":["mouseout"]}]}],"addHoverEffect":[{"__symbolic":"method"}],"removeHoverEffect":[{"__symbolic":"method"}],"showButton":[{"__symbolic":"method"}],"hideButton":[{"__symbolic":"method"}],"showSpinner":[{"__symbolic":"method"}],"hideSpinner":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":2,"character":29},"arguments":["END_POINT"]}},"origins":{"FilePickerRespnse":"./lib/file-picker.response","FileUploaderModule":"./lib/file-uploader.module","FileUploaderService":"./lib/file-uploader.service","ɵa":"./lib/file-picker.directive","ɵb":"./lib/endpoint"},"importAs":"adias-file-uploader"}

@@ -77,2 +77,36 @@ (function (global, factory) {

};
/**
* @param {?} files
* @return {?}
*/
FileUploaderService.prototype.uploadMultiple = /**
* @param {?} files
* @return {?}
*/
function (files) {
/** @type {?} */
var formData = new FormData();
for (var index = 0; index < files.length; index++) {
formData.append("files", files[index], files[index].name);
}
/** @type {?} */
var req = new http.HttpRequest("POST", this.endPoint, formData, {
reportProgress: true
});
return this.http.request(req).pipe(operators.map((/**
* @param {?} res
* @return {?}
*/
function (res) {
if (res.type === http.HttpEventType.Response) {
return res.body;
}
else if (res.type === http.HttpEventType.UploadProgress) {
// Compute and show the % done:
/** @type {?} */
var UploadProgress = +Math.round((100 * res.loaded) / res.total);
return UploadProgress;
}
})));
};
FileUploaderService.decorators = [

@@ -109,3 +143,6 @@ { type: core.Injectable }

this.uploadSuccess = new core.EventEmitter();
this.uploadMultiSuccess = new core.EventEmitter();
this.fileUrl = null;
this.transparent = false;
this.multiple = false;
/**

@@ -123,2 +160,3 @@ * disabled till upload

function () {
this.multiple = this.multiple === "" || this.multiple ? true : false;
this.element = this.elRef.nativeElement;

@@ -223,2 +261,6 @@ this.element.style.position = "relative";

this.input = this.renderer.createElement("input");
this.input.style.cursor = "pointer";
if (this.multiple) {
this.renderer.setProperty(this.input, "multiple", "multiple");
}
this.renderer.setProperty(this.input, "type", "file");

@@ -245,4 +287,9 @@ this.renderer.setStyle(this.input, "opacity", "0");

/** @type {?} */
var file = ((/** @type {?} */ (ev))).target.files[0];
_this.upload(file);
var files = ((/** @type {?} */ (ev))).target.files;
if (_this.multiple) {
_this.uploadMultiple(files);
}
else {
_this.upload(files[0]);
}
}));

@@ -305,2 +352,55 @@ };

/**
* @param {?} files
* @return {?}
*/
FilePickerDirective.prototype.uploadMultiple = /**
* @param {?} files
* @return {?}
*/
function (files) {
var _this = this;
this.showSpinner();
this.mouseoverDisabled = true;
this.uploaderService
.uploadMultiple(files)
.pipe(operators.map((/**
* @param {?} response
* @return {?}
*/
function (response) {
if (response && typeof response === "object") {
if (response.hasOwnProperty("result")) {
return response["result"];
}
else if (response.hasOwnProperty("data")) {
return response["data"];
}
}
return response;
})))
.subscribe({
next: (/**
* @param {?} response
* @return {?}
*/
function (response) {
if (response && typeof response === "object") {
_this.uploadMultiSuccess.emit(response);
}
}),
complete: (/**
* @return {?}
*/
function () {
setTimeout((/**
* @return {?}
*/
function () {
_this.hideSpinner();
_this.mouseoverDisabled = false;
}), 2000);
})
});
};
/**
* @param {?} fileUrl

@@ -324,3 +424,3 @@ * @return {?}

function () {
if (this.mouseoverDisabled) {
if (this.mouseoverDisabled || this.transparent === "" || this.transparent) {
return;

@@ -420,3 +520,6 @@ }

uploadSuccess: [{ type: core.Output }],
uploadMultiSuccess: [{ type: core.Output }],
fileUrl: [{ type: core.Input }],
transparent: [{ type: core.Input }],
multiple: [{ type: core.Input }],
onMouseOver: [{ type: core.HostListener, args: ["mouseover",] }],

@@ -431,4 +534,10 @@ onMouseOut: [{ type: core.HostListener, args: ["mouseout",] }]

/** @type {?} */
FilePickerDirective.prototype.uploadMultiSuccess;
/** @type {?} */
FilePickerDirective.prototype.fileUrl;
/** @type {?} */
FilePickerDirective.prototype.transparent;
/** @type {?} */
FilePickerDirective.prototype.multiple;
/** @type {?} */
FilePickerDirective.prototype.element;

@@ -435,0 +544,0 @@ /** @type {?} */

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

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("rxjs/operators"),require("@angular/common/http")):"function"==typeof define&&define.amd?define("adias-file-uploader",["exports","@angular/core","rxjs/operators","@angular/common/http"],t):t((e=e||self)["adias-file-uploader"]={},e.ng.core,e.rxjs.operators,e.ng.common.http)}(this,(function(e,t,r,i){"use strict";var n=new t.InjectionToken("END_POINT"),s=function(){function e(e,t){this.endPoint=e,this.http=t}return e.prototype.upload=function(e){var t=new FormData;t.append("file",e,e.name);var n=new i.HttpRequest("POST",this.endPoint,t,{reportProgress:!0});return this.http.request(n).pipe(r.map((function(e){return e.type===i.HttpEventType.Response?e.body:e.type===i.HttpEventType.UploadProgress?+Math.round(100*e.loaded/e.total):void 0})))},e.decorators=[{type:t.Injectable}],e.ctorParameters=function(){return[{type:String,decorators:[{type:t.Inject,args:[n]}]},{type:i.HttpClient}]},e}();var o=function(){function e(e,r,i){this.elRef=e,this.renderer=r,this.uploaderService=i,this.uploadSuccess=new t.EventEmitter,this.fileUrl=null,this.mouseoverDisabled=!1}return e.prototype.ngOnInit=function(){this.element=this.elRef.nativeElement,this.element.style.position="relative",this.createUploaderElement(),this.createUploadButton(),this.createHoveredDiv(),this.createSpinnerDiv(),this.fileUrl&&this.previewImage(this.fileUrl)},e.prototype.createSpinnerDiv=function(){this.spinnerDiv=this.renderer.createElement("div"),this.renderer.setStyle(this.spinnerDiv,"background-color","rgba(0,0,0,0.4)"),this.renderer.setStyle(this.spinnerDiv,"top","0"),this.renderer.setStyle(this.spinnerDiv,"left","0"),this.renderer.setStyle(this.spinnerDiv,"height","100%"),this.renderer.setStyle(this.spinnerDiv,"width","100%"),this.renderer.setStyle(this.spinnerDiv,"position","absolute"),this.renderer.setStyle(this.spinnerDiv,"overflow","auto"),this.renderer.setStyle(this.spinnerDiv,"display","none"),this.renderer.setStyle(this.spinnerDiv,"z-index","8");var e=this.renderer.createElement("img");this.renderer.setProperty(e,"src","https://flevix.com/wp-content/uploads/2019/07/Spinner-Preloader.gif"),this.renderer.setStyle(e,"height","100%"),this.renderer.setStyle(e,"width","100%"),this.renderer.setStyle(e,"object-fit","contain"),this.renderer.appendChild(this.spinnerDiv,e),this.renderer.appendChild(this.element,this.spinnerDiv)},e.prototype.createHoveredDiv=function(){this.hoverdDiv=this.renderer.createElement("div"),this.renderer.setStyle(this.hoverdDiv,"background-color","rgba(0,0,0,0.4)"),this.renderer.setStyle(this.hoverdDiv,"top","0"),this.renderer.setStyle(this.hoverdDiv,"left","0"),this.renderer.setStyle(this.hoverdDiv,"height","100%"),this.renderer.setStyle(this.hoverdDiv,"width","100%"),this.renderer.setStyle(this.hoverdDiv,"position","absolute"),this.renderer.setStyle(this.hoverdDiv,"overflow","auto"),this.renderer.setStyle(this.hoverdDiv,"display","none"),this.renderer.setStyle(this.hoverdDiv,"z-index","8"),this.renderer.appendChild(this.element,this.hoverdDiv)},e.prototype.createUploadButton=function(){var e=this;this.button=this.renderer.createElement("button"),this.renderer.setStyle(this.button,"background-color","#337ab7"),this.renderer.setStyle(this.button,"border-color","#2e6da4"),this.renderer.setStyle(this.button,"color","#ffff"),this.renderer.setStyle(this.button,"position","absolute"),this.renderer.setStyle(this.button,"top","0"),this.renderer.setStyle(this.button,"right","0"),this.renderer.setStyle(this.button,"bottom","0"),this.renderer.setStyle(this.button,"left","0"),this.renderer.setStyle(this.button,"margin","auto"),this.renderer.setStyle(this.button,"height","50px"),this.renderer.setStyle(this.button,"z-index","9"),this.renderer.setStyle(this.button,"width","120px"),this.renderer.setStyle(this.button,"font-weight","600"),this.renderer.setStyle(this.button,"font-size","16px"),this.renderer.setStyle(this.button,"display","none"),this.renderer.setProperty(this.button,"type","button");var t=this.renderer.createText("Select File");this.renderer.appendChild(this.button,t),this.renderer.appendChild(this.element,this.button),this.button.addEventListener("click",(function(){e.input.click()}))},e.prototype.createUploaderElement=function(){this.input=this.renderer.createElement("input"),this.renderer.setProperty(this.input,"type","file"),this.renderer.setStyle(this.input,"opacity","0"),this.renderer.setStyle(this.input,"height","100%"),this.renderer.setStyle(this.input,"width","100%"),this.renderer.appendChild(this.element,this.input),this.bindEvents()},e.prototype.bindEvents=function(){var e=this;this.input.addEventListener("change",(function(t){var r=t.target.files[0];e.upload(r)}))},e.prototype.upload=function(e){var t=this;this.showSpinner(),this.mouseoverDisabled=!0,this.uploaderService.upload(e).pipe(r.map((function(e){if(e&&"object"==typeof e){if(e.hasOwnProperty("result"))return e.result;if(e.hasOwnProperty("data"))return e.data}return e}))).subscribe({next:function(e){e&&"object"==typeof e&&(t.uploadSuccess.emit(e),t.previewImage(e.fileUrl))},complete:function(){setTimeout((function(){t.hideSpinner(),t.mouseoverDisabled=!1}),2e3)}})},e.prototype.previewImage=function(e){this.renderer.setStyle(this.element,"background-image","url("+e+")"),this.renderer.setStyle(this.element,"background-size","cover")},e.prototype.onMouseOver=function(){this.mouseoverDisabled||(this.addHoverEffect(),this.showButton())},e.prototype.onMouseOut=function(){this.removeHoverEffect(),this.hideButton()},e.prototype.addHoverEffect=function(){this.renderer.setStyle(this.hoverdDiv,"display","block")},e.prototype.removeHoverEffect=function(){this.renderer.setStyle(this.hoverdDiv,"display","none")},e.prototype.showButton=function(){this.renderer.setStyle(this.button,"display","block")},e.prototype.hideButton=function(){this.renderer.setStyle(this.button,"display","none")},e.prototype.showSpinner=function(){this.renderer.setStyle(this.spinnerDiv,"display","block")},e.prototype.hideSpinner=function(){this.renderer.setStyle(this.spinnerDiv,"display","none")},e.decorators=[{type:t.Directive,args:[{selector:"[ngxFilePicker]"}]}],e.ctorParameters=function(){return[{type:t.ElementRef},{type:t.Renderer2},{type:s}]},e.propDecorators={uploadSuccess:[{type:t.Output}],fileUrl:[{type:t.Input}],onMouseOver:[{type:t.HostListener,args:["mouseover"]}],onMouseOut:[{type:t.HostListener,args:["mouseout"]}]},e}();var h=function(){function e(){}return e.forRoot=function(t){var r=t.endPoint;return{ngModule:e,providers:[{provide:n,useValue:r}]}},e.decorators=[{type:t.NgModule,args:[{declarations:[o],imports:[],exports:[o],providers:[s]}]}],e}();e.FileUploaderModule=h,e.FileUploaderService=s,e.ɵa=o,e.ɵb=n,Object.defineProperty(e,"__esModule",{value:!0})}));
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("rxjs/operators"),require("@angular/common/http")):"function"==typeof define&&define.amd?define("adias-file-uploader",["exports","@angular/core","rxjs/operators","@angular/common/http"],t):t((e=e||self)["adias-file-uploader"]={},e.ng.core,e.rxjs.operators,e.ng.common.http)}(this,(function(e,t,r,i){"use strict";var n=new t.InjectionToken("END_POINT"),s=function(){function e(e,t){this.endPoint=e,this.http=t}return e.prototype.upload=function(e){var t=new FormData;t.append("file",e,e.name);var n=new i.HttpRequest("POST",this.endPoint,t,{reportProgress:!0});return this.http.request(n).pipe(r.map((function(e){return e.type===i.HttpEventType.Response?e.body:e.type===i.HttpEventType.UploadProgress?+Math.round(100*e.loaded/e.total):void 0})))},e.prototype.uploadMultiple=function(e){for(var t=new FormData,n=0;n<e.length;n++)t.append("files",e[n],e[n].name);var s=new i.HttpRequest("POST",this.endPoint,t,{reportProgress:!0});return this.http.request(s).pipe(r.map((function(e){return e.type===i.HttpEventType.Response?e.body:e.type===i.HttpEventType.UploadProgress?+Math.round(100*e.loaded/e.total):void 0})))},e.decorators=[{type:t.Injectable}],e.ctorParameters=function(){return[{type:String,decorators:[{type:t.Inject,args:[n]}]},{type:i.HttpClient}]},e}();var o=function(){function e(e,r,i){this.elRef=e,this.renderer=r,this.uploaderService=i,this.uploadSuccess=new t.EventEmitter,this.uploadMultiSuccess=new t.EventEmitter,this.fileUrl=null,this.transparent=!1,this.multiple=!1,this.mouseoverDisabled=!1}return e.prototype.ngOnInit=function(){this.multiple=!(""!==this.multiple&&!this.multiple),this.element=this.elRef.nativeElement,this.element.style.position="relative",this.createUploaderElement(),this.createUploadButton(),this.createHoveredDiv(),this.createSpinnerDiv(),this.fileUrl&&this.previewImage(this.fileUrl)},e.prototype.createSpinnerDiv=function(){this.spinnerDiv=this.renderer.createElement("div"),this.renderer.setStyle(this.spinnerDiv,"background-color","rgba(0,0,0,0.4)"),this.renderer.setStyle(this.spinnerDiv,"top","0"),this.renderer.setStyle(this.spinnerDiv,"left","0"),this.renderer.setStyle(this.spinnerDiv,"height","100%"),this.renderer.setStyle(this.spinnerDiv,"width","100%"),this.renderer.setStyle(this.spinnerDiv,"position","absolute"),this.renderer.setStyle(this.spinnerDiv,"overflow","auto"),this.renderer.setStyle(this.spinnerDiv,"display","none"),this.renderer.setStyle(this.spinnerDiv,"z-index","8");var e=this.renderer.createElement("img");this.renderer.setProperty(e,"src","https://flevix.com/wp-content/uploads/2019/07/Spinner-Preloader.gif"),this.renderer.setStyle(e,"height","100%"),this.renderer.setStyle(e,"width","100%"),this.renderer.setStyle(e,"object-fit","contain"),this.renderer.appendChild(this.spinnerDiv,e),this.renderer.appendChild(this.element,this.spinnerDiv)},e.prototype.createHoveredDiv=function(){this.hoverdDiv=this.renderer.createElement("div"),this.renderer.setStyle(this.hoverdDiv,"background-color","rgba(0,0,0,0.4)"),this.renderer.setStyle(this.hoverdDiv,"top","0"),this.renderer.setStyle(this.hoverdDiv,"left","0"),this.renderer.setStyle(this.hoverdDiv,"height","100%"),this.renderer.setStyle(this.hoverdDiv,"width","100%"),this.renderer.setStyle(this.hoverdDiv,"position","absolute"),this.renderer.setStyle(this.hoverdDiv,"overflow","auto"),this.renderer.setStyle(this.hoverdDiv,"display","none"),this.renderer.setStyle(this.hoverdDiv,"z-index","8"),this.renderer.appendChild(this.element,this.hoverdDiv)},e.prototype.createUploadButton=function(){var e=this;this.button=this.renderer.createElement("button"),this.renderer.setStyle(this.button,"background-color","#337ab7"),this.renderer.setStyle(this.button,"border-color","#2e6da4"),this.renderer.setStyle(this.button,"color","#ffff"),this.renderer.setStyle(this.button,"position","absolute"),this.renderer.setStyle(this.button,"top","0"),this.renderer.setStyle(this.button,"right","0"),this.renderer.setStyle(this.button,"bottom","0"),this.renderer.setStyle(this.button,"left","0"),this.renderer.setStyle(this.button,"margin","auto"),this.renderer.setStyle(this.button,"height","50px"),this.renderer.setStyle(this.button,"z-index","9"),this.renderer.setStyle(this.button,"width","120px"),this.renderer.setStyle(this.button,"font-weight","600"),this.renderer.setStyle(this.button,"font-size","16px"),this.renderer.setStyle(this.button,"display","none"),this.renderer.setProperty(this.button,"type","button");var t=this.renderer.createText("Select File");this.renderer.appendChild(this.button,t),this.renderer.appendChild(this.element,this.button),this.button.addEventListener("click",(function(){e.input.click()}))},e.prototype.createUploaderElement=function(){this.input=this.renderer.createElement("input"),this.input.style.cursor="pointer",this.multiple&&this.renderer.setProperty(this.input,"multiple","multiple"),this.renderer.setProperty(this.input,"type","file"),this.renderer.setStyle(this.input,"opacity","0"),this.renderer.setStyle(this.input,"height","100%"),this.renderer.setStyle(this.input,"width","100%"),this.renderer.appendChild(this.element,this.input),this.bindEvents()},e.prototype.bindEvents=function(){var e=this;this.input.addEventListener("change",(function(t){var r=t.target.files;e.multiple?e.uploadMultiple(r):e.upload(r[0])}))},e.prototype.upload=function(e){var t=this;this.showSpinner(),this.mouseoverDisabled=!0,this.uploaderService.upload(e).pipe(r.map((function(e){if(e&&"object"==typeof e){if(e.hasOwnProperty("result"))return e.result;if(e.hasOwnProperty("data"))return e.data}return e}))).subscribe({next:function(e){e&&"object"==typeof e&&(t.uploadSuccess.emit(e),t.previewImage(e.fileUrl))},complete:function(){setTimeout((function(){t.hideSpinner(),t.mouseoverDisabled=!1}),2e3)}})},e.prototype.uploadMultiple=function(e){var t=this;this.showSpinner(),this.mouseoverDisabled=!0,this.uploaderService.uploadMultiple(e).pipe(r.map((function(e){if(e&&"object"==typeof e){if(e.hasOwnProperty("result"))return e.result;if(e.hasOwnProperty("data"))return e.data}return e}))).subscribe({next:function(e){e&&"object"==typeof e&&t.uploadMultiSuccess.emit(e)},complete:function(){setTimeout((function(){t.hideSpinner(),t.mouseoverDisabled=!1}),2e3)}})},e.prototype.previewImage=function(e){this.renderer.setStyle(this.element,"background-image","url("+e+")"),this.renderer.setStyle(this.element,"background-size","cover")},e.prototype.onMouseOver=function(){this.mouseoverDisabled||""===this.transparent||this.transparent||(this.addHoverEffect(),this.showButton())},e.prototype.onMouseOut=function(){this.removeHoverEffect(),this.hideButton()},e.prototype.addHoverEffect=function(){this.renderer.setStyle(this.hoverdDiv,"display","block")},e.prototype.removeHoverEffect=function(){this.renderer.setStyle(this.hoverdDiv,"display","none")},e.prototype.showButton=function(){this.renderer.setStyle(this.button,"display","block")},e.prototype.hideButton=function(){this.renderer.setStyle(this.button,"display","none")},e.prototype.showSpinner=function(){this.renderer.setStyle(this.spinnerDiv,"display","block")},e.prototype.hideSpinner=function(){this.renderer.setStyle(this.spinnerDiv,"display","none")},e.decorators=[{type:t.Directive,args:[{selector:"[ngxFilePicker]"}]}],e.ctorParameters=function(){return[{type:t.ElementRef},{type:t.Renderer2},{type:s}]},e.propDecorators={uploadSuccess:[{type:t.Output}],uploadMultiSuccess:[{type:t.Output}],fileUrl:[{type:t.Input}],transparent:[{type:t.Input}],multiple:[{type:t.Input}],onMouseOver:[{type:t.HostListener,args:["mouseover"]}],onMouseOut:[{type:t.HostListener,args:["mouseout"]}]},e}();var p=function(){function e(){}return e.forRoot=function(t){var r=t.endPoint;return{ngModule:e,providers:[{provide:n,useValue:r}]}},e.decorators=[{type:t.NgModule,args:[{declarations:[o],imports:[],exports:[o],providers:[s]}]}],e}();e.FileUploaderModule=p,e.FileUploaderService=s,e.ɵa=o,e.ɵb=n,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=adias-file-uploader.umd.min.js.map

@@ -20,3 +20,6 @@ /**

this.uploadSuccess = new EventEmitter();
this.uploadMultiSuccess = new EventEmitter();
this.fileUrl = null;
this.transparent = false;
this.multiple = false;
/**

@@ -31,2 +34,3 @@ * disabled till upload

ngOnInit() {
this.multiple = this.multiple === "" || this.multiple ? true : false;
this.element = this.elRef.nativeElement;

@@ -118,2 +122,6 @@ this.element.style.position = "relative";

this.input = this.renderer.createElement("input");
this.input.style.cursor = "pointer";
if (this.multiple) {
this.renderer.setProperty(this.input, "multiple", "multiple");
}
this.renderer.setProperty(this.input, "type", "file");

@@ -136,4 +144,9 @@ this.renderer.setStyle(this.input, "opacity", "0");

/** @type {?} */
const file = ((/** @type {?} */ (ev))).target.files[0];
this.upload(file);
const files = ((/** @type {?} */ (ev))).target.files;
if (this.multiple) {
this.uploadMultiple(files);
}
else {
this.upload(files[0]);
}
}));

@@ -191,2 +204,50 @@ }

/**
* @param {?} files
* @return {?}
*/
uploadMultiple(files) {
this.showSpinner();
this.mouseoverDisabled = true;
this.uploaderService
.uploadMultiple(files)
.pipe(map((/**
* @param {?} response
* @return {?}
*/
(response) => {
if (response && typeof response === "object") {
if (response.hasOwnProperty("result")) {
return response["result"];
}
else if (response.hasOwnProperty("data")) {
return response["data"];
}
}
return response;
})))
.subscribe({
next: (/**
* @param {?} response
* @return {?}
*/
(response) => {
if (response && typeof response === "object") {
this.uploadMultiSuccess.emit(response);
}
}),
complete: (/**
* @return {?}
*/
() => {
setTimeout((/**
* @return {?}
*/
() => {
this.hideSpinner();
this.mouseoverDisabled = false;
}), 2000);
})
});
}
/**
* @param {?} fileUrl

@@ -203,3 +264,3 @@ * @return {?}

onMouseOver() {
if (this.mouseoverDisabled) {
if (this.mouseoverDisabled || this.transparent === "" || this.transparent) {
return;

@@ -273,3 +334,6 @@ }

uploadSuccess: [{ type: Output }],
uploadMultiSuccess: [{ type: Output }],
fileUrl: [{ type: Input }],
transparent: [{ type: Input }],
multiple: [{ type: Input }],
onMouseOver: [{ type: HostListener, args: ["mouseover",] }],

@@ -282,4 +346,10 @@ onMouseOut: [{ type: HostListener, args: ["mouseout",] }]

/** @type {?} */
FilePickerDirective.prototype.uploadMultiSuccess;
/** @type {?} */
FilePickerDirective.prototype.fileUrl;
/** @type {?} */
FilePickerDirective.prototype.transparent;
/** @type {?} */
FilePickerDirective.prototype.multiple;
/** @type {?} */
FilePickerDirective.prototype.element;

@@ -319,2 +389,2 @@ /** @type {?} */

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1waWNrZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWRpYXMtZmlsZS11cGxvYWRlci8iLCJzb3VyY2VzIjpbImxpYi9maWxlLXBpY2tlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUs5RCxNQUFNLE9BQU8sbUJBQW1COzs7Ozs7SUFlOUIsWUFDVSxLQUFpQixFQUNqQixRQUFtQixFQUNuQixlQUFvQztRQUZwQyxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsb0JBQWUsR0FBZixlQUFlLENBQXFCO1FBakJwQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBQ3ZELFlBQU8sR0FBVyxJQUFJLENBQUM7Ozs7UUFXaEMsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO0lBTXZCLENBQUM7Ozs7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQztRQUN4QyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRXhCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJ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QUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQzs7Y0FDbkQsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUMxRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTzs7O1FBQUUsR0FBRyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckIsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7O0lBRUQscUJBQXFCO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7Ozs7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFROzs7O1FBQUUsRUFBRSxDQUFDLEVBQUU7O2tCQUNuQyxJQUFJLEdBQUcsQ0FBQyxtQkFBQSxFQUFFLEVBQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7OztJQUVELE1BQU0sQ0FBQyxJQUFVO1FBQ2YsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFDLGVBQWU7YUFDakIsTUFBTSxDQUFDLElBQUksQ0FBQzthQUNaLElBQUksQ0FDSCxHQUFHOzs7O1FBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNwQixJQUFJLFFBQVEsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUU7Z0JBQzVDLElBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRTtvQkFDckMsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQzNCO3FCQUFNLElBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDMUMsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQ3pCO2FBQ0Y7WUFFRCxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLEVBQUMsQ0FDSDthQUNBLFNBQVMsQ0FBQztZQUNULElBQUk7Ozs7WUFBRSxDQUFDLFFBQTJCLEVBQUUsRUFBRTtnQkFDcEMsSUFBSSxRQUFRLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFFO29CQUM1QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQ3JDO1lBQ0gsQ0FBQyxDQUFBO1lBQ0QsUUFBUTs7O1lBQUUsR0FBRyxFQUFFO2dCQUNiLFVBQVU7OztnQkFBQyxHQUFHLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUNuQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO2dCQUNqQyxDQUFDLEdBQUUsSUFBSSxDQUFDLENBQUM7WUFDWCxDQUFDLENBQUE7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDOzs7OztJQUVELFlBQVksQ0FBQyxPQUFlO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkUsQ0FBQzs7OztJQUUwQixXQUFXO1FBQ3BDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQzs7OztJQUV5QixVQUFVO1FBQ2xDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDOzs7OztJQUVPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0QsQ0FBQzs7Ozs7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUQsQ0FBQzs7Ozs7SUFFTyxVQUFVO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzFELENBQUM7Ozs7O0lBRU8sVUFBVTtRQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6RCxDQUFDOzs7OztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUQsQ0FBQzs7Ozs7SUFFTyxXQUFXO1FBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzdELENBQUM7OztZQTNNRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjthQUM1Qjs7OztZQWRDLFVBQVU7WUFNVixTQUFTO1lBSUYsbUJBQW1COzs7NEJBTXpCLE1BQU07c0JBQ04sS0FBSzswQkFtS0wsWUFBWSxTQUFDLFdBQVc7eUJBUXhCLFlBQVksU0FBQyxVQUFVOzs7O0lBNUt4Qiw0Q0FBZ0U7O0lBQ2hFLHNDQUFnQzs7SUFFaEMsc0NBQXFCOztJQUNyQix3Q0FBdUI7O0lBQ3ZCLHlDQUF3Qjs7SUFDeEIsb0NBQW1COztJQUNuQixxQ0FBb0I7O0lBQ3BCLG9DQUFtQjs7SUFDbkIsNENBQTJCOzs7OztJQUczQixnREFBMEI7Ozs7O0lBR3hCLG9DQUF5Qjs7Ozs7SUFDekIsdUNBQTJCOzs7OztJQUMzQiw4Q0FBNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMlxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBGaWxlUGlja2VyUmVzcG5zZSB9IGZyb20gXCIuL2ZpbGUtcGlja2VyLnJlc3BvbnNlXCI7XG5pbXBvcnQgeyBGaWxlVXBsb2FkZXJTZXJ2aWNlIH0gZnJvbSBcIi4vZmlsZS11cGxvYWRlci5zZXJ2aWNlXCI7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbbmd4RmlsZVBpY2tlcl1cIlxufSlcbmV4cG9ydCBjbGFzcyBGaWxlUGlja2VyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgQE91dHB1dCgpIHVwbG9hZFN1Y2Nlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVQaWNrZXJSZXNwbnNlPigpO1xuICBASW5wdXQoKSBmaWxlVXJsOiBzdHJpbmcgPSBudWxsO1xuXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICBob3ZlcmREaXY6IEhUTUxFbGVtZW50O1xuICBzcGlubmVyRGl2OiBIVE1MRWxlbWVudDtcbiAgaW5wdXQ6IEhUTUxFbGVtZW50O1xuICBidXR0b246IEhUTUxFbGVtZW50O1xuICBpbWFnZTogSFRNTEVsZW1lbnQ7XG4gIHVwbG9hZGVkRmlsZXM6IEFycmF5PEZpbGU+O1xuXG4gIC8qKiBkaXNhYmxlZCB0aWxsIHVwbG9hZCAqL1xuICBtb3VzZW92ZXJEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgdXBsb2FkZXJTZXJ2aWNlOiBGaWxlVXBsb2FkZXJTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmVsZW1lbnQgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gXCJyZWxhdGl2ZVwiO1xuICAgIHRoaXMuY3JlYXRlVXBsb2FkZXJFbGVtZW50KCk7XG4gICAgdGhpcy5jcmVhdGVVcGxvYWRCdXR0b24oKTtcbiAgICB0aGlzLmNyZWF0ZUhvdmVyZWREaXYoKTtcbiAgICB0aGlzLmNyZWF0ZVNwaW5uZXJEaXYoKTtcblxuICAgIGlmICh0aGlzLmZpbGVVcmwpIHtcbiAgICAgIHRoaXMucHJldmlld0ltYWdlKHRoaXMuZmlsZVVybCk7XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlU3Bpbm5lckRpdigpIHtcbiAgICB0aGlzLnNwaW5uZXJEaXYgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgIHRoaXMuc3Bpbm5lckRpdixcbiAgICAgIFwiYmFja2dyb3VuZC1jb2xvclwiLFxuICAgICAgXCJyZ2JhKDAsMCwwLDAuNClcIlxuICAgICk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNwaW5uZXJEaXYsIFwidG9wXCIsIFwiMFwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc3Bpbm5lckRpdiwgXCJsZWZ0XCIsIFwiMFwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc3Bpbm5lckRpdiwgXCJoZWlnaHRcIiwgXCIxMDAlXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5zcGlubmVyRGl2LCBcIndpZHRoXCIsIFwiMTAwJVwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc3Bpbm5lckRpdiwgXCJwb3NpdGlvblwiLCBcImFic29sdXRlXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5zcGlubmVyRGl2LCBcIm92ZXJmbG93XCIsIFwiYXV0b1wiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc3Bpbm5lckRpdiwgXCJkaXNwbGF5XCIsIFwibm9uZVwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc3Bpbm5lckRpdiwgXCJ6LWluZGV4XCIsIFwiOFwiKTtcblxuICAgIGNvbnN0IGltYWdlID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KFwiaW1nXCIpO1xuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShcbiAgICAgIGltYWdlLFxuICAgICAgXCJzcmNcIixcbiAgICAgIGBodHRwczovL2ZsZXZpeC5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMTkvMDcvU3Bpbm5lci1QcmVsb2FkZXIuZ2lmYFxuICAgICk7XG5cbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGltYWdlLCBcImhlaWdodFwiLCBgMTAwJWApO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaW1hZ2UsIFwid2lkdGhcIiwgYDEwMCVgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGltYWdlLCBcIm9iamVjdC1maXRcIiwgYGNvbnRhaW5gKTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuc3Bpbm5lckRpdiwgaW1hZ2UpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50LCB0aGlzLnNwaW5uZXJEaXYpO1xuICB9XG5cbiAgY3JlYXRlSG92ZXJlZERpdigpIHtcbiAgICB0aGlzLmhvdmVyZERpdiA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgdGhpcy5ob3ZlcmREaXYsXG4gICAgICBcImJhY2tncm91bmQtY29sb3JcIixcbiAgICAgIFwicmdiYSgwLDAsMCwwLjQpXCJcbiAgICApO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3ZlcmREaXYsIFwidG9wXCIsIFwiMFwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG92ZXJkRGl2LCBcImxlZnRcIiwgXCIwXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3ZlcmREaXYsIFwiaGVpZ2h0XCIsIFwiMTAwJVwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG92ZXJkRGl2LCBcIndpZHRoXCIsIFwiMTAwJVwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG92ZXJkRGl2LCBcInBvc2l0aW9uXCIsIFwiYWJzb2x1dGVcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvdmVyZERpdiwgXCJvdmVyZmxvd1wiLCBcImF1dG9cIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvdmVyZERpdiwgXCJkaXNwbGF5XCIsIFwibm9uZVwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG92ZXJkRGl2LCBcInotaW5kZXhcIiwgXCI4XCIpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50LCB0aGlzLmhvdmVyZERpdik7XG4gIH1cblxuICBjcmVhdGVVcGxvYWRCdXR0b24oKSB7XG4gICAgdGhpcy5idXR0b24gPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJ1dHRvbiwgXCJiYWNrZ3JvdW5kLWNvbG9yXCIsIFwiIzMzN2FiN1wiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYnV0dG9uLCBcImJvcmRlci1jb2xvclwiLCBcIiMyZTZkYTRcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJ1dHRvbiwgXCJjb2xvclwiLCBcIiNmZmZmXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sIFwicG9zaXRpb25cIiwgXCJhYnNvbHV0ZVwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYnV0dG9uLCBcInRvcFwiLCBcIjBcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJ1dHRvbiwgXCJyaWdodFwiLCBcIjBcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJ1dHRvbiwgXCJib3R0b21cIiwgXCIwXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sIFwibGVmdFwiLCBcIjBcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJ1dHRvbiwgXCJtYXJnaW5cIiwgXCJhdXRvXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sIFwiaGVpZ2h0XCIsIFwiNTBweFwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYnV0dG9uLCBcInotaW5kZXhcIiwgXCI5XCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sIFwid2lkdGhcIiwgXCIxMjBweFwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYnV0dG9uLCBcImZvbnQtd2VpZ2h0XCIsIFwiNjAwXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sIFwiZm9udC1zaXplXCIsIFwiMTZweFwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYnV0dG9uLCBcImRpc3BsYXlcIiwgXCJub25lXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5idXR0b24sIFwidHlwZVwiLCBcImJ1dHRvblwiKTtcbiAgICBjb25zdCBidXR0b250ZXh0ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVUZXh0KFwiU2VsZWN0IEZpbGVcIik7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmJ1dHRvbiwgYnV0dG9udGV4dCk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQsIHRoaXMuYnV0dG9uKTtcbiAgICB0aGlzLmJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgICAgdGhpcy5pbnB1dC5jbGljaygpO1xuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlVXBsb2FkZXJFbGVtZW50KCkge1xuICAgIHRoaXMuaW5wdXQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuaW5wdXQsIFwidHlwZVwiLCBcImZpbGVcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmlucHV0LCBcIm9wYWNpdHlcIiwgXCIwXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pbnB1dCwgXCJoZWlnaHRcIiwgXCIxMDAlXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pbnB1dCwgXCJ3aWR0aFwiLCBcIjEwMCVcIik7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQsIHRoaXMuaW5wdXQpO1xuICAgIHRoaXMuYmluZEV2ZW50cygpO1xuICB9XG5cbiAgYmluZEV2ZW50cygpIHtcbiAgICB0aGlzLmlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgZXYgPT4ge1xuICAgICAgY29uc3QgZmlsZSA9IChldiBhcyBhbnkpLnRhcmdldC5maWxlc1swXTtcbiAgICAgIHRoaXMudXBsb2FkKGZpbGUpO1xuICAgIH0pO1xuICB9XG5cbiAgdXBsb2FkKGZpbGU6IEZpbGUpIHtcbiAgICB0aGlzLnNob3dTcGlubmVyKCk7XG4gICAgdGhpcy5tb3VzZW92ZXJEaXNhYmxlZCA9IHRydWU7XG4gICAgdGhpcy51cGxvYWRlclNlcnZpY2VcbiAgICAgIC51cGxvYWQoZmlsZSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgdHlwZW9mIHJlc3BvbnNlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UuaGFzT3duUHJvcGVydHkoXCJyZXN1bHRcIikpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlW1wicmVzdWx0XCJdO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5oYXNPd25Qcm9wZXJ0eShcImRhdGFcIikpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlW1wiZGF0YVwiXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBGaWxlUGlja2VyUmVzcG5zZSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZSAmJiB0eXBlb2YgcmVzcG9uc2UgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU3VjY2Vzcy5lbWl0KHJlc3BvbnNlKTtcbiAgICAgICAgICAgIHRoaXMucHJldmlld0ltYWdlKHJlc3BvbnNlLmZpbGVVcmwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGlkZVNwaW5uZXIoKTtcbiAgICAgICAgICAgIHRoaXMubW91c2VvdmVyRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcmV2aWV3SW1hZ2UoZmlsZVVybDogc3RyaW5nKSB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnQsIFwiYmFja2dyb3VuZC1pbWFnZVwiLCBgdXJsKCR7ZmlsZVVybH0pYCk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnQsIFwiYmFja2dyb3VuZC1zaXplXCIsIGBjb3ZlcmApO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcihcIm1vdXNlb3ZlclwiKSBvbk1vdXNlT3ZlcigpIHtcbiAgICBpZiAodGhpcy5tb3VzZW92ZXJEaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmFkZEhvdmVyRWZmZWN0KCk7XG4gICAgdGhpcy5zaG93QnV0dG9uKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKFwibW91c2VvdXRcIikgb25Nb3VzZU91dCgpIHtcbiAgICB0aGlzLnJlbW92ZUhvdmVyRWZmZWN0KCk7XG4gICAgdGhpcy5oaWRlQnV0dG9uKCk7XG4gIH1cblxuICBwcml2YXRlIGFkZEhvdmVyRWZmZWN0KCkge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3ZlcmREaXYsIFwiZGlzcGxheVwiLCBcImJsb2NrXCIpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVIb3ZlckVmZmVjdCgpIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG92ZXJkRGl2LCBcImRpc3BsYXlcIiwgXCJub25lXCIpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93QnV0dG9uKCkge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sIFwiZGlzcGxheVwiLCBgYmxvY2tgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGlkZUJ1dHRvbigpIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYnV0dG9uLCBcImRpc3BsYXlcIiwgYG5vbmVgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd1NwaW5uZXIoKSB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNwaW5uZXJEaXYsIFwiZGlzcGxheVwiLCBgYmxvY2tgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGlkZVNwaW5uZXIoKSB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNwaW5uZXJEaXYsIFwiZGlzcGxheVwiLCBgbm9uZWApO1xuICB9XG59XG4vLyBUT0RPIGhvdmVyIGthcm5lIHAgdXBsb2FkIGJ1dHRvbiBheWVnYSB1c2xwIGNsaWNrIGtybmUgcCB1cGxvYSBkbnB1dCBraGlsZWhhXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1waWNrZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWRpYXMtZmlsZS11cGxvYWRlci8iLCJzb3VyY2VzIjpbImxpYi9maWxlLXBpY2tlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUs5RCxNQUFNLE9BQU8sbUJBQW1COzs7Ozs7SUFrQjlCLFlBQ1UsS0FBaUIsRUFDakIsUUFBbUIsRUFDbkIsZUFBb0M7UUFGcEMsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLG9CQUFlLEdBQWYsZUFBZSxDQUFxQjtRQXBCcEMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUN0RCx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUM5RCxZQUFPLEdBQVcsSUFBSSxDQUFDO1FBQ3ZCLGdCQUFXLEdBQXFCLEtBQUssQ0FBQztRQUN0QyxhQUFRLEdBQXFCLEtBQUssQ0FBQzs7OztRQVc1QyxzQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFNdkIsQ0FBQzs7OztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDeEMsSUFBSSxDQUFDLE9B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QyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxjQUFjLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENB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Qzs7O1lBeFBGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2FBQzVCOzs7O1lBZEMsVUFBVTtZQU1WLFNBQVM7WUFJRixtQkFBbUI7Ozs0QkFNekIsTUFBTTtpQ0FDTixNQUFNO3NCQUNOLEtBQUs7MEJBQ0wsS0FBSzt1QkFDTCxLQUFLOzBCQTZNTCxZQUFZLFNBQUMsV0FBVzt5QkFReEIsWUFBWSxTQUFDLFVBQVU7Ozs7SUF6TnhCLDRDQUFnRTs7SUFDaEUsaURBQXVFOztJQUN2RSxzQ0FBZ0M7O0lBQ2hDLDBDQUErQzs7SUFDL0MsdUNBQTRDOztJQUU1QyxzQ0FBcUI7O0lBQ3JCLHdDQUF1Qjs7SUFDdkIseUNBQXdCOztJQUN4QixvQ0FBbUI7O0lBQ25CLHFDQUFvQjs7SUFDcEIsb0NBQW1COztJQUNuQiw0Q0FBMkI7Ozs7O0lBRzNCLGdEQUEwQjs7Ozs7SUFHeEIsb0NBQXlCOzs7OztJQUN6Qix1Q0FBMkI7Ozs7O0lBQzNCLDhDQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBtYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IEZpbGVQaWNrZXJSZXNwbnNlIH0gZnJvbSBcIi4vZmlsZS1waWNrZXIucmVzcG9uc2VcIjtcbmltcG9ydCB7IEZpbGVVcGxvYWRlclNlcnZpY2UgfSBmcm9tIFwiLi9maWxlLXVwbG9hZGVyLnNlcnZpY2VcIjtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiBcIltuZ3hGaWxlUGlja2VyXVwiXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVQaWNrZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBAT3V0cHV0KCkgdXBsb2FkU3VjY2VzcyA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZVBpY2tlclJlc3Buc2U+KCk7XG4gIEBPdXRwdXQoKSB1cGxvYWRNdWx0aVN1Y2Nlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVQaWNrZXJSZXNwbnNlW10+KCk7XG4gIEBJbnB1dCgpIGZpbGVVcmw6IHN0cmluZyA9IG51bGw7XG4gIEBJbnB1dCgpIHRyYW5zcGFyZW50OiBib29sZWFuIHwgc3RyaW5nID0gZmFsc2U7XG4gIEBJbnB1dCgpIG11bHRpcGxlOiBib29sZWFuIHwgc3RyaW5nID0gZmFsc2U7XG5cbiAgZWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gIGhvdmVyZERpdjogSFRNTEVsZW1lbnQ7XG4gIHNwaW5uZXJEaXY6IEhUTUxFbGVtZW50O1xuICBpbnB1dDogSFRNTEVsZW1lbnQ7XG4gIGJ1dHRvbjogSFRNTEVsZW1lbnQ7XG4gIGltYWdlOiBIVE1MRWxlbWVudDtcbiAgdXBsb2FkZWRGaWxlczogQXJyYXk8RmlsZT47XG5cbiAgLyoqIGRpc2FibGVkIHRpbGwgdXBsb2FkICovXG4gIG1vdXNlb3ZlckRpc2FibGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSB1cGxvYWRlclNlcnZpY2U6IEZpbGVVcGxvYWRlclNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubXVsdGlwbGUgPSB0aGlzLm11bHRpcGxlID09PSBcIlwiIHx8IHRoaXMubXVsdGlwbGUgPyB0cnVlIDogZmFsc2U7XG4gICAgdGhpcy5lbGVtZW50ID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMuZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9IFwicmVsYXRpdmVcIjtcbiAgICB0aGlzLmNyZWF0ZVVwbG9hZGVyRWxlbWVudCgpO1xuICAgIHRoaXMuY3JlYXRlVXBsb2FkQnV0dG9uKCk7XG4gICAgdGhpcy5jcmVhdGVIb3ZlcmVkRGl2KCk7XG4gICAgdGhpcy5jcmVhdGVTcGlubmVyRGl2KCk7XG5cbiAgICBpZiAodGhpcy5maWxlVXJsKSB7XG4gICAgICB0aGlzLnByZXZpZXdJbWFnZSh0aGlzLmZpbGVVcmwpO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZVNwaW5uZXJEaXYoKSB7XG4gICAgdGhpcy5zcGlubmVyRGl2ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICB0aGlzLnNwaW5uZXJEaXYsXG4gICAgICBcImJhY2tncm91bmQtY29sb3JcIixcbiAgICAgIFwicmdiYSgwLDAsMCwwLjQpXCJcbiAgICApO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5zcGlubmVyRGl2LCBcInRvcFwiLCBcIjBcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNwaW5uZXJEaXYsIFwibGVmdFwiLCBcIjBcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNwaW5uZXJEaXYsIFwiaGVpZ2h0XCIsIFwiMTAwJVwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc3Bpbm5lckRpdiwgXCJ3aWR0aFwiLCBcIjEwMCVcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNwaW5uZXJEaXYsIFwicG9zaXRpb25cIiwgXCJhYnNvbHV0ZVwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc3Bpbm5lckRpdiwgXCJvdmVyZmxvd1wiLCBcImF1dG9cIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNwaW5uZXJEaXYsIFwiZGlzcGxheVwiLCBcIm5vbmVcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNwaW5uZXJEaXYsIFwiei1pbmRleFwiLCBcIjhcIik7XG5cbiAgICBjb25zdCBpbWFnZSA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudChcImltZ1wiKTtcblxuICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkoXG4gICAgICBpbWFnZSxcbiAgICAgIFwic3JjXCIsXG4gICAgICBgaHR0cHM6Ly9mbGV2aXguY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDE5LzA3L1NwaW5uZXItUHJlbG9hZGVyLmdpZmBcbiAgICApO1xuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShpbWFnZSwgXCJoZWlnaHRcIiwgYDEwMCVgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGltYWdlLCBcIndpZHRoXCIsIGAxMDAlYCk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShpbWFnZSwgXCJvYmplY3QtZml0XCIsIGBjb250YWluYCk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLnNwaW5uZXJEaXYsIGltYWdlKTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCwgdGhpcy5zcGlubmVyRGl2KTtcbiAgfVxuXG4gIGNyZWF0ZUhvdmVyZWREaXYoKSB7XG4gICAgdGhpcy5ob3ZlcmREaXYgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgIHRoaXMuaG92ZXJkRGl2LFxuICAgICAgXCJiYWNrZ3JvdW5kLWNvbG9yXCIsXG4gICAgICBcInJnYmEoMCwwLDAsMC40KVwiXG4gICAgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG92ZXJkRGl2LCBcInRvcFwiLCBcIjBcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvdmVyZERpdiwgXCJsZWZ0XCIsIFwiMFwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG92ZXJkRGl2LCBcImhlaWdodFwiLCBcIjEwMCVcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvdmVyZERpdiwgXCJ3aWR0aFwiLCBcIjEwMCVcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvdmVyZERpdiwgXCJwb3NpdGlvblwiLCBcImFic29sdXRlXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3ZlcmREaXYsIFwib3ZlcmZsb3dcIiwgXCJhdXRvXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3ZlcmREaXYsIFwiZGlzcGxheVwiLCBcIm5vbmVcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvdmVyZERpdiwgXCJ6LWluZGV4XCIsIFwiOFwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCwgdGhpcy5ob3ZlcmREaXYpO1xuICB9XG5cbiAgY3JlYXRlVXBsb2FkQnV0dG9uKCkge1xuICAgIHRoaXMuYnV0dG9uID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sIFwiYmFja2dyb3VuZC1jb2xvclwiLCBcIiMzMzdhYjdcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJ1dHRvbiwgXCJib3JkZXItY29sb3JcIiwgXCIjMmU2ZGE0XCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sIFwiY29sb3JcIiwgXCIjZmZmZlwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYnV0dG9uLCBcInBvc2l0aW9uXCIsIFwiYWJzb2x1dGVcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJ1dHRvbiwgXCJ0b3BcIiwgXCIwXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sIFwicmlnaHRcIiwgXCIwXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sIFwiYm90dG9tXCIsIFwiMFwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYnV0dG9uLCBcImxlZnRcIiwgXCIwXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sIFwibWFyZ2luXCIsIFwiYXV0b1wiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYnV0dG9uLCBcImhlaWdodFwiLCBcIjUwcHhcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJ1dHRvbiwgXCJ6LWluZGV4XCIsIFwiOVwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYnV0dG9uLCBcIndpZHRoXCIsIFwiMTIwcHhcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJ1dHRvbiwgXCJmb250LXdlaWdodFwiLCBcIjYwMFwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYnV0dG9uLCBcImZvbnQtc2l6ZVwiLCBcIjE2cHhcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJ1dHRvbiwgXCJkaXNwbGF5XCIsIFwibm9uZVwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuYnV0dG9uLCBcInR5cGVcIiwgXCJidXR0b25cIik7XG4gICAgY29uc3QgYnV0dG9udGV4dCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dChcIlNlbGVjdCBGaWxlXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5idXR0b24sIGJ1dHRvbnRleHQpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50LCB0aGlzLmJ1dHRvbik7XG4gICAgdGhpcy5idXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgIHRoaXMuaW5wdXQuY2xpY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZVVwbG9hZGVyRWxlbWVudCgpIHtcbiAgICB0aGlzLmlucHV0ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XG4gICAgdGhpcy5pbnB1dC5zdHlsZS5jdXJzb3IgPSBcInBvaW50ZXJcIjtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmlucHV0LCBcIm11bHRpcGxlXCIsIFwibXVsdGlwbGVcIik7XG4gICAgfVxuICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5pbnB1dCwgXCJ0eXBlXCIsIFwiZmlsZVwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW5wdXQsIFwib3BhY2l0eVwiLCBcIjBcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmlucHV0LCBcImhlaWdodFwiLCBcIjEwMCVcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmlucHV0LCBcIndpZHRoXCIsIFwiMTAwJVwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCwgdGhpcy5pbnB1dCk7XG4gICAgdGhpcy5iaW5kRXZlbnRzKCk7XG4gIH1cblxuICBiaW5kRXZlbnRzKCkge1xuICAgIHRoaXMuaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCBldiA9PiB7XG4gICAgICBjb25zdCBmaWxlcyA9IChldiBhcyBhbnkpLnRhcmdldC5maWxlcztcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMudXBsb2FkTXVsdGlwbGUoZmlsZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy51cGxvYWQoZmlsZXNbMF0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdXBsb2FkKGZpbGU6IEZpbGUpIHtcbiAgICB0aGlzLnNob3dTcGlubmVyKCk7XG4gICAgdGhpcy5tb3VzZW92ZXJEaXNhYmxlZCA9IHRydWU7XG4gICAgdGhpcy51cGxvYWRlclNlcnZpY2VcbiAgICAgIC51cGxvYWQoZmlsZSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgdHlwZW9mIHJlc3BvbnNlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UuaGFzT3duUHJvcGVydHkoXCJyZXN1bHRcIikpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlW1wicmVzdWx0XCJdO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5oYXNPd25Qcm9wZXJ0eShcImRhdGFcIikpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlW1wiZGF0YVwiXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBGaWxlUGlja2VyUmVzcG5zZSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZSAmJiB0eXBlb2YgcmVzcG9uc2UgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU3VjY2Vzcy5lbWl0KHJlc3BvbnNlKTtcbiAgICAgICAgICAgIHRoaXMucHJldmlld0ltYWdlKHJlc3BvbnNlLmZpbGVVcmwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGlkZVNwaW5uZXIoKTtcbiAgICAgICAgICAgIHRoaXMubW91c2VvdmVyRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICB1cGxvYWRNdWx0aXBsZShmaWxlczogRmlsZVtdKSB7XG4gICAgdGhpcy5zaG93U3Bpbm5lcigpO1xuICAgIHRoaXMubW91c2VvdmVyRGlzYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMudXBsb2FkZXJTZXJ2aWNlXG4gICAgICAudXBsb2FkTXVsdGlwbGUoZmlsZXMpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlICYmIHR5cGVvZiByZXNwb25zZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmhhc093blByb3BlcnR5KFwicmVzdWx0XCIpKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXNwb25zZVtcInJlc3VsdFwiXTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2UuaGFzT3duUHJvcGVydHkoXCJkYXRhXCIpKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXNwb25zZVtcImRhdGFcIl07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogRmlsZVBpY2tlclJlc3Buc2VbXSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZSAmJiB0eXBlb2YgcmVzcG9uc2UgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkTXVsdGlTdWNjZXNzLmVtaXQocmVzcG9uc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGlkZVNwaW5uZXIoKTtcbiAgICAgICAgICAgIHRoaXMubW91c2VvdmVyRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcmV2aWV3SW1hZ2UoZmlsZVVybDogc3RyaW5nKSB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnQsIFwiYmFja2dyb3VuZC1pbWFnZVwiLCBgdXJsKCR7ZmlsZVVybH0pYCk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnQsIFwiYmFja2dyb3VuZC1zaXplXCIsIGBjb3ZlcmApO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcihcIm1vdXNlb3ZlclwiKSBvbk1vdXNlT3ZlcigpIHtcbiAgICBpZiAodGhpcy5tb3VzZW92ZXJEaXNhYmxlZCB8fCB0aGlzLnRyYW5zcGFyZW50ID09PSBcIlwiIHx8IHRoaXMudHJhbnNwYXJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hZGRIb3ZlckVmZmVjdCgpO1xuICAgIHRoaXMuc2hvd0J1dHRvbigpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcihcIm1vdXNlb3V0XCIpIG9uTW91c2VPdXQoKSB7XG4gICAgdGhpcy5yZW1vdmVIb3ZlckVmZmVjdCgpO1xuICAgIHRoaXMuaGlkZUJ1dHRvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRIb3ZlckVmZmVjdCgpIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG92ZXJkRGl2LCBcImRpc3BsYXlcIiwgXCJibG9ja1wiKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlSG92ZXJFZmZlY3QoKSB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvdmVyZERpdiwgXCJkaXNwbGF5XCIsIFwibm9uZVwiKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd0J1dHRvbigpIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYnV0dG9uLCBcImRpc3BsYXlcIiwgYGJsb2NrYCk7XG4gIH1cblxuICBwcml2YXRlIGhpZGVCdXR0b24oKSB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJ1dHRvbiwgXCJkaXNwbGF5XCIsIGBub25lYCk7XG4gIH1cblxuICBwcml2YXRlIHNob3dTcGlubmVyKCkge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5zcGlubmVyRGl2LCBcImRpc3BsYXlcIiwgYGJsb2NrYCk7XG4gIH1cblxuICBwcml2YXRlIGhpZGVTcGlubmVyKCkge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5zcGlubmVyRGl2LCBcImRpc3BsYXlcIiwgYG5vbmVgKTtcbiAgfVxufVxuLy8gVE9ETyBob3ZlciBrYXJuZSBwIHVwbG9hZCBidXR0b24gYXllZ2EgdXNscCBjbGljayBrcm5lIHAgdXBsb2EgZG5wdXQga2hpbGVoYVxuIl19

@@ -47,2 +47,32 @@ /**

}
/**
* @param {?} files
* @return {?}
*/
uploadMultiple(files) {
/** @type {?} */
let formData = new FormData();
for (let index = 0; index < files.length; index++) {
formData.append("files", files[index], files[index].name);
}
/** @type {?} */
const req = new HttpRequest("POST", this.endPoint, formData, {
reportProgress: true
});
return this.http.request(req).pipe(map((/**
* @param {?} res
* @return {?}
*/
(res) => {
if (res.type === HttpEventType.Response) {
return res.body;
}
else if (res.type === HttpEventType.UploadProgress) {
// Compute and show the % done:
/** @type {?} */
const UploadProgress = +Math.round((100 * res.loaded) / res.total);
return UploadProgress;
}
})));
}
}

@@ -66,2 +96,2 @@ FileUploaderService.decorators = [

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWRpYXMtZmlsZS11cGxvYWRlci8iLCJzb3VyY2VzIjpbImxpYi9maWxlLXVwbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUVWLGFBQWEsRUFDYixXQUFXLEVBQ1osTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUd2QyxNQUFNLE9BQU8sbUJBQW1COzs7OztJQUM5QixZQUM0QixRQUFnQixFQUNsQyxJQUFnQjtRQURFLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDbEMsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUN2QixDQUFDOzs7OztJQUVKLE1BQU0sQ0FBQyxRQUFjOztZQUNmLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRTtRQUM3QixRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDOztjQUUzQyxHQUFHLEdBQUcsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFO1lBQzNELGNBQWMsRUFBRSxJQUFJO1NBQ3JCLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDaEMsR0FBRzs7OztRQUFDLENBQUMsR0FBbUIsRUFBRSxFQUFFO1lBQzFCLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsUUFBUSxFQUFFO2dCQUN2QyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUM7YUFDakI7aUJBQU0sSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxjQUFjLEVBQUU7OztzQkFFOUMsY0FBYyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztnQkFDbEUsT0FBTyxjQUFjLENBQUM7YUFDdkI7UUFDSCxDQUFDLEVBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7O1lBekJGLFVBQVU7Ozs7eUNBR04sTUFBTSxTQUFDLFNBQVM7WUFabkIsVUFBVTs7OztJQVlSLHVDQUEwQzs7Ozs7SUFDMUMsbUNBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSHR0cENsaWVudCxcbiAgSHR0cEV2ZW50LFxuICBIdHRwRXZlbnRUeXBlLFxuICBIdHRwUmVxdWVzdFxufSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBtYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IEVORF9QT0lOVCB9IGZyb20gXCIuL2VuZHBvaW50XCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkZXJTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChFTkRfUE9JTlQpIHB1YmxpYyBlbmRQb2ludDogc3RyaW5nLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudFxuICApIHt9XG5cbiAgdXBsb2FkKGZpbGVJdGVtOiBGaWxlKSB7XG4gICAgbGV0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZm9ybURhdGEuYXBwZW5kKFwiZmlsZVwiLCBmaWxlSXRlbSwgZmlsZUl0ZW0ubmFtZSk7XG5cbiAgICBjb25zdCByZXEgPSBuZXcgSHR0cFJlcXVlc3QoXCJQT1NUXCIsIHRoaXMuZW5kUG9pbnQsIGZvcm1EYXRhLCB7XG4gICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucmVxdWVzdChyZXEpLnBpcGUoXG4gICAgICBtYXAoKHJlczogSHR0cEV2ZW50PGFueT4pID0+IHtcbiAgICAgICAgaWYgKHJlcy50eXBlID09PSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlKSB7XG4gICAgICAgICAgcmV0dXJuIHJlcy5ib2R5O1xuICAgICAgICB9IGVsc2UgaWYgKHJlcy50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XG4gICAgICAgICAgLy8gQ29tcHV0ZSBhbmQgc2hvdyB0aGUgJSBkb25lOlxuICAgICAgICAgIGNvbnN0IFVwbG9hZFByb2dyZXNzID0gK01hdGgucm91bmQoKDEwMCAqIHJlcy5sb2FkZWQpIC8gcmVzLnRvdGFsKTtcbiAgICAgICAgICByZXR1cm4gVXBsb2FkUHJvZ3Jlc3M7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWRpYXMtZmlsZS11cGxvYWRlci8iLCJzb3VyY2VzIjpbImxpYi9maWxlLXVwbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUVWLGFBQWEsRUFDYixXQUFXLEVBQ1osTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUd2QyxNQUFNLE9BQU8sbUJBQW1COzs7OztJQUM5QixZQUM0QixRQUFnQixFQUNsQyxJQUFnQjtRQURFLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDbEMsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUN2QixDQUFDOzs7OztJQUVKLE1BQU0sQ0FBQyxRQUFjOztZQUNmLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRTtRQUU3QixRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDOztjQUUzQyxHQUFHLEdBQUcsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFO1lBQzNELGNBQWMsRUFBRSxJQUFJO1NBQ3JCLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDaEMsR0FBRzs7OztRQUFDLENBQUMsR0FBbUIsRUFBRSxFQUFFO1lBQzFCLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsUUFBUSxFQUFFO2dCQUN2QyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUM7YUFDakI7aUJBQU0sSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxjQUFjLEVBQUU7OztzQkFFOUMsY0FBYyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztnQkFDbEUsT0FBTyxjQUFjLENBQUM7YUFDdkI7UUFDSCxDQUFDLEVBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7Ozs7SUFFRCxjQUFjLENBQUMsS0FBYTs7WUFDdEIsUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFO1FBRTdCLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2pELFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDM0Q7O2NBRUssR0FBRyxHQUFHLElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUMzRCxjQUFjLEVBQUUsSUFBSTtTQUNyQixDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ2hDLEdBQUc7Ozs7UUFBQyxDQUFDLEdBQW1CLEVBQUUsRUFBRTtZQUMxQixJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLFFBQVEsRUFBRTtnQkFDdkMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDO2FBQ2pCO2lCQUFNLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsY0FBYyxFQUFFOzs7c0JBRTlDLGNBQWMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7Z0JBQ2xFLE9BQU8sY0FBYyxDQUFDO2FBQ3ZCO1FBQ0gsQ0FBQyxFQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7OztZQWpERixVQUFVOzs7O3lDQUdOLE1BQU0sU0FBQyxTQUFTO1lBWm5CLFVBQVU7Ozs7SUFZUix1Q0FBMEM7Ozs7O0lBQzFDLG1DQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEh0dHBDbGllbnQsXG4gIEh0dHBFdmVudCxcbiAgSHR0cEV2ZW50VHlwZSxcbiAgSHR0cFJlcXVlc3Rcbn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBFTkRfUE9JTlQgfSBmcm9tIFwiLi9lbmRwb2ludFwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZGVyU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRU5EX1BPSU5UKSBwdWJsaWMgZW5kUG9pbnQ6IHN0cmluZyxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnRcbiAgKSB7fVxuXG4gIHVwbG9hZChmaWxlSXRlbTogRmlsZSkge1xuICAgIGxldCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKFwiZmlsZVwiLCBmaWxlSXRlbSwgZmlsZUl0ZW0ubmFtZSk7XG5cbiAgICBjb25zdCByZXEgPSBuZXcgSHR0cFJlcXVlc3QoXCJQT1NUXCIsIHRoaXMuZW5kUG9pbnQsIGZvcm1EYXRhLCB7XG4gICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucmVxdWVzdChyZXEpLnBpcGUoXG4gICAgICBtYXAoKHJlczogSHR0cEV2ZW50PGFueT4pID0+IHtcbiAgICAgICAgaWYgKHJlcy50eXBlID09PSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlKSB7XG4gICAgICAgICAgcmV0dXJuIHJlcy5ib2R5O1xuICAgICAgICB9IGVsc2UgaWYgKHJlcy50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XG4gICAgICAgICAgLy8gQ29tcHV0ZSBhbmQgc2hvdyB0aGUgJSBkb25lOlxuICAgICAgICAgIGNvbnN0IFVwbG9hZFByb2dyZXNzID0gK01hdGgucm91bmQoKDEwMCAqIHJlcy5sb2FkZWQpIC8gcmVzLnRvdGFsKTtcbiAgICAgICAgICByZXR1cm4gVXBsb2FkUHJvZ3Jlc3M7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHVwbG9hZE11bHRpcGxlKGZpbGVzOiBGaWxlW10pIHtcbiAgICBsZXQgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcblxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBmaWxlcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZChcImZpbGVzXCIsIGZpbGVzW2luZGV4XSwgZmlsZXNbaW5kZXhdLm5hbWUpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcSA9IG5ldyBIdHRwUmVxdWVzdChcIlBPU1RcIiwgdGhpcy5lbmRQb2ludCwgZm9ybURhdGEsIHtcbiAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5yZXF1ZXN0KHJlcSkucGlwZShcbiAgICAgIG1hcCgocmVzOiBIdHRwRXZlbnQ8YW55PikgPT4ge1xuICAgICAgICBpZiAocmVzLnR5cGUgPT09IEh0dHBFdmVudFR5cGUuUmVzcG9uc2UpIHtcbiAgICAgICAgICByZXR1cm4gcmVzLmJvZHk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVzLnR5cGUgPT09IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAvLyBDb21wdXRlIGFuZCBzaG93IHRoZSAlIGRvbmU6XG4gICAgICAgICAgY29uc3QgVXBsb2FkUHJvZ3Jlc3MgPSArTWF0aC5yb3VuZCgoMTAwICogcmVzLmxvYWRlZCkgLyByZXMudG90YWwpO1xuICAgICAgICAgIHJldHVybiBVcGxvYWRQcm9ncmVzcztcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=

@@ -15,3 +15,6 @@ /**

this.uploadSuccess = new EventEmitter();
this.uploadMultiSuccess = new EventEmitter();
this.fileUrl = null;
this.transparent = false;
this.multiple = false;
/**

@@ -29,2 +32,3 @@ * disabled till upload

function () {
this.multiple = this.multiple === "" || this.multiple ? true : false;
this.element = this.elRef.nativeElement;

@@ -129,2 +133,6 @@ this.element.style.position = "relative";

this.input = this.renderer.createElement("input");
this.input.style.cursor = "pointer";
if (this.multiple) {
this.renderer.setProperty(this.input, "multiple", "multiple");
}
this.renderer.setProperty(this.input, "type", "file");

@@ -151,4 +159,9 @@ this.renderer.setStyle(this.input, "opacity", "0");

/** @type {?} */
var file = ((/** @type {?} */ (ev))).target.files[0];
_this.upload(file);
var files = ((/** @type {?} */ (ev))).target.files;
if (_this.multiple) {
_this.uploadMultiple(files);
}
else {
_this.upload(files[0]);
}
}));

@@ -211,2 +224,55 @@ };

/**
* @param {?} files
* @return {?}
*/
FilePickerDirective.prototype.uploadMultiple = /**
* @param {?} files
* @return {?}
*/
function (files) {
var _this = this;
this.showSpinner();
this.mouseoverDisabled = true;
this.uploaderService
.uploadMultiple(files)
.pipe(map((/**
* @param {?} response
* @return {?}
*/
function (response) {
if (response && typeof response === "object") {
if (response.hasOwnProperty("result")) {
return response["result"];
}
else if (response.hasOwnProperty("data")) {
return response["data"];
}
}
return response;
})))
.subscribe({
next: (/**
* @param {?} response
* @return {?}
*/
function (response) {
if (response && typeof response === "object") {
_this.uploadMultiSuccess.emit(response);
}
}),
complete: (/**
* @return {?}
*/
function () {
setTimeout((/**
* @return {?}
*/
function () {
_this.hideSpinner();
_this.mouseoverDisabled = false;
}), 2000);
})
});
};
/**
* @param {?} fileUrl

@@ -230,3 +296,3 @@ * @return {?}

function () {
if (this.mouseoverDisabled) {
if (this.mouseoverDisabled || this.transparent === "" || this.transparent) {
return;

@@ -326,3 +392,6 @@ }

uploadSuccess: [{ type: Output }],
uploadMultiSuccess: [{ type: Output }],
fileUrl: [{ type: Input }],
transparent: [{ type: Input }],
multiple: [{ type: Input }],
onMouseOver: [{ type: HostListener, args: ["mouseover",] }],

@@ -338,4 +407,10 @@ onMouseOut: [{ type: HostListener, args: ["mouseout",] }]

/** @type {?} */
FilePickerDirective.prototype.uploadMultiSuccess;
/** @type {?} */
FilePickerDirective.prototype.fileUrl;
/** @type {?} */
FilePickerDirective.prototype.transparent;
/** @type {?} */
FilePickerDirective.prototype.multiple;
/** @type {?} */
FilePickerDirective.prototype.element;

@@ -375,2 +450,2 @@ /** @type {?} */

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1waWNrZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWRpYXMtZmlsZS11cGxvYWRlci8iLCJzb3VyY2VzIjpbImxpYi9maWxlLXBpY2tlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RDtJQWtCRSw2QkFDVSxLQUFpQixFQUNqQixRQUFtQixFQUNuQixlQUFvQztRQUZwQyxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsb0JBQWUsR0FBZixlQUFlLENBQXFCO1FBakJwQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBQ3ZELFlBQU8sR0FBVyxJQUFJLENBQUM7Ozs7UUFXaEMsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO0lBTXZCLENBQUM7Ozs7SUFFSixzQ0FBUTs7O0lBQVI7UUFDRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7UUFDekMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFeEIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxZQUFZLENB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LEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FB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SUFDekIsdUNBQTJCOzs7OztJQUMzQiw4Q0FBNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMlxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBGaWxlUGlja2VyUmVzcG5zZSB9IGZyb20gXCIuL2ZpbGUtcGlja2VyLnJlc3BvbnNlXCI7XG5pbXBvcnQgeyBGaWxlVXBsb2FkZXJTZXJ2aWNlIH0gZnJvbSBcIi4vZmlsZS11cGxvYWRlci5zZXJ2aWNlXCI7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbbmd4RmlsZVBpY2tlcl1cIlxufSlcbmV4cG9ydCBjbGFzcyBGaWxlUGlja2VyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgQE91dHB1dCgpIHVwbG9hZFN1Y2Nlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVQaWNrZXJSZXNwbnNlPigpO1xuICBASW5wdXQoKSBmaWxlVXJsOiBzdHJpbmcgPSBudWxsO1xuXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICBob3ZlcmREaXY6IEhUTUxFbGVtZW50O1xuICBzcGlubmVyRGl2OiBIVE1MRWxlbWVudDtcbiAgaW5wdXQ6IEhUTUxFbGVtZW50O1xuICBidXR0b246IEhUTUxFbGVtZW50O1xuICBpbWFnZTogSFRNTEVsZW1lbnQ7XG4gIHVwbG9hZGVkRmlsZXM6IEFycmF5PEZpbGU+O1xuXG4gIC8qKiBkaXNhYmxlZCB0aWxsIHVwbG9hZCAqL1xuICBtb3VzZW92ZXJEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgdXBsb2FkZXJTZXJ2aWNlOiBGaWxlVXBsb2FkZXJTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmVsZW1lbnQgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gXCJyZWxhdGl2ZVwiO1xuICAgIHRoaXMuY3JlYXRlVXBsb2FkZXJFbGVtZW50KCk7XG4gICAgdGhpcy5jcmVhdGVVcGxvYWRCdXR0b24oKTtcbiAgICB0aGlzLmNyZWF0ZUhvdmVyZWREaXYoKTtcbiAgICB0aGlzLmNyZWF0ZVNwaW5uZXJEaXYoKTtcblxuICAgIGlmICh0aGlzLmZpbGVVcmwpIHtcbiAgICAgIHRoaXMucHJldmlld0ltYWdlKHRoaXMuZmlsZVVybCk7XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlU3Bpbm5lckRpdigpIHtcbiAgICB0aGlzLnNwaW5uZXJEaXYgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgIHRoaXMuc3Bpbm5lckRpdixcbiAgICAgIFwiYmFja2dyb3VuZC1jb2xvclwiLFxuICAgICAgXCJyZ2JhKDAsMCwwLDAuNClcIlxuICAgICk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNwaW5uZXJEaXYsIFwidG9wXCIsIFwiMFwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc3Bpbm5lckRpdiwgXCJsZWZ0XCIsIFwiMFwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc3Bpbm5lckRpdiwgXCJoZWlnaHRcIiwgXCIxMDAlXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5zcGlubmVyRGl2LCBcIndpZHRoXCIsIFwiMTAwJVwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc3Bpbm5lckRpdiwgXCJwb3NpdGlvblwiLCBcImFic29sdXRlXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5zcGlubmVyRGl2LCBcIm92ZXJmbG93XCIsIFwiYXV0b1wiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc3Bpbm5lckRpdiwgXCJkaXNwbGF5XCIsIFwibm9uZVwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc3Bpbm5lckRpdiwgXCJ6LWluZGV4XCIsIFwiOFwiKTtcblxuICAgIGNvbnN0IGltYWdlID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KFwiaW1nXCIpO1xuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShcbiAgICAgIGltYWdlLFxuICAgICAgXCJzcmNcIixcbiAgICAgIGBodHRwczovL2ZsZXZpeC5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMTkvMDcvU3Bpbm5lci1QcmVsb2FkZXIuZ2lmYFxuICAgICk7XG5cbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGltYWdlLCBcImhlaWdodFwiLCBgMTAwJWApO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaW1hZ2UsIFwid2lkdGhcIiwgYDEwMCVgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGltYWdlLCBcIm9iamVjdC1maXRcIiwgYGNvbnRhaW5gKTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuc3Bpbm5lckRpdiwgaW1hZ2UpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50LCB0aGlzLnNwaW5uZXJEaXYpO1xuICB9XG5cbiAgY3JlYXRlSG92ZXJlZERpdigpIHtcbiAgICB0aGlzLmhvdmVyZERpdiA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgdGhpcy5ob3ZlcmREaXYsXG4gICAgICBcImJhY2tncm91bmQtY29sb3JcIixcbiAgICAgIFwicmdiYSgwLDAsMCwwLjQpXCJcbiAgICApO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3ZlcmREaXYsIFwidG9wXCIsIFwiMFwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG92ZXJkRGl2LCBcImxlZnRcIiwgXCIwXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3ZlcmREaXYsIFwiaGVpZ2h0XCIsIFwiMTAwJVwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG92ZXJkRGl2LCBcIndpZHRoXCIsIFwiMTAwJVwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG92ZXJkRGl2LCBcInBvc2l0aW9uXCIsIFwiYWJzb2x1dGVcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvdmVyZERpdiwgXCJvdmVyZmxvd1wiLCBcImF1dG9cIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvdmVyZERpdiwgXCJkaXNwbGF5XCIsIFwibm9uZVwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG92ZXJkRGl2LCBcInotaW5kZXhcIiwgXCI4XCIpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50LCB0aGlzLmhvdmVyZERpdik7XG4gIH1cblxuICBjcmVhdGVVcGxvYWRCdXR0b24oKSB7XG4gICAgdGhpcy5idXR0b24gPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJ1dHRvbiwgXCJiYWNrZ3JvdW5kLWNvbG9yXCIsIFwiIzMzN2FiN1wiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYnV0dG9uLCBcImJvcmRlci1jb2xvclwiLCBcIiMyZTZkYTRcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJ1dHRvbiwgXCJjb2xvclwiLCBcIiNmZmZmXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sIFwicG9zaXRpb25cIiwgXCJhYnNvbHV0ZVwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYnV0dG9uLCBcInRvcFwiLCBcIjBcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJ1dHRvbiwgXCJyaWdodFwiLCBcIjBcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJ1dHRvbiwgXCJib3R0b21cIiwgXCIwXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sIFwibGVmdFwiLCBcIjBcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJ1dHRvbiwgXCJtYXJnaW5cIiwgXCJhdXRvXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sIFwiaGVpZ2h0XCIsIFwiNTBweFwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYnV0dG9uLCBcInotaW5kZXhcIiwgXCI5XCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sIFwid2lkdGhcIiwgXCIxMjBweFwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYnV0dG9uLCBcImZvbnQtd2VpZ2h0XCIsIFwiNjAwXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sIFwiZm9udC1zaXplXCIsIFwiMTZweFwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYnV0dG9uLCBcImRpc3BsYXlcIiwgXCJub25lXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5idXR0b24sIFwidHlwZVwiLCBcImJ1dHRvblwiKTtcbiAgICBjb25zdCBidXR0b250ZXh0ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVUZXh0KFwiU2VsZWN0IEZpbGVcIik7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmJ1dHRvbiwgYnV0dG9udGV4dCk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQsIHRoaXMuYnV0dG9uKTtcbiAgICB0aGlzLmJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgICAgdGhpcy5pbnB1dC5jbGljaygpO1xuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlVXBsb2FkZXJFbGVtZW50KCkge1xuICAgIHRoaXMuaW5wdXQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuaW5wdXQsIFwidHlwZVwiLCBcImZpbGVcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmlucHV0LCBcIm9wYWNpdHlcIiwgXCIwXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pbnB1dCwgXCJoZWlnaHRcIiwgXCIxMDAlXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pbnB1dCwgXCJ3aWR0aFwiLCBcIjEwMCVcIik7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQsIHRoaXMuaW5wdXQpO1xuICAgIHRoaXMuYmluZEV2ZW50cygpO1xuICB9XG5cbiAgYmluZEV2ZW50cygpIHtcbiAgICB0aGlzLmlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgZXYgPT4ge1xuICAgICAgY29uc3QgZmlsZSA9IChldiBhcyBhbnkpLnRhcmdldC5maWxlc1swXTtcbiAgICAgIHRoaXMudXBsb2FkKGZpbGUpO1xuICAgIH0pO1xuICB9XG5cbiAgdXBsb2FkKGZpbGU6IEZpbGUpIHtcbiAgICB0aGlzLnNob3dTcGlubmVyKCk7XG4gICAgdGhpcy5tb3VzZW92ZXJEaXNhYmxlZCA9IHRydWU7XG4gICAgdGhpcy51cGxvYWRlclNlcnZpY2VcbiAgICAgIC51cGxvYWQoZmlsZSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgdHlwZW9mIHJlc3BvbnNlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UuaGFzT3duUHJvcGVydHkoXCJyZXN1bHRcIikpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlW1wicmVzdWx0XCJdO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5oYXNPd25Qcm9wZXJ0eShcImRhdGFcIikpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlW1wiZGF0YVwiXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBGaWxlUGlja2VyUmVzcG5zZSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZSAmJiB0eXBlb2YgcmVzcG9uc2UgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU3VjY2Vzcy5lbWl0KHJlc3BvbnNlKTtcbiAgICAgICAgICAgIHRoaXMucHJldmlld0ltYWdlKHJlc3BvbnNlLmZpbGVVcmwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGlkZVNwaW5uZXIoKTtcbiAgICAgICAgICAgIHRoaXMubW91c2VvdmVyRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcmV2aWV3SW1hZ2UoZmlsZVVybDogc3RyaW5nKSB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnQsIFwiYmFja2dyb3VuZC1pbWFnZVwiLCBgdXJsKCR7ZmlsZVVybH0pYCk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnQsIFwiYmFja2dyb3VuZC1zaXplXCIsIGBjb3ZlcmApO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcihcIm1vdXNlb3ZlclwiKSBvbk1vdXNlT3ZlcigpIHtcbiAgICBpZiAodGhpcy5tb3VzZW92ZXJEaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmFkZEhvdmVyRWZmZWN0KCk7XG4gICAgdGhpcy5zaG93QnV0dG9uKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKFwibW91c2VvdXRcIikgb25Nb3VzZU91dCgpIHtcbiAgICB0aGlzLnJlbW92ZUhvdmVyRWZmZWN0KCk7XG4gICAgdGhpcy5oaWRlQnV0dG9uKCk7XG4gIH1cblxuICBwcml2YXRlIGFkZEhvdmVyRWZmZWN0KCkge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3ZlcmREaXYsIFwiZGlzcGxheVwiLCBcImJsb2NrXCIpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVIb3ZlckVmZmVjdCgpIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG92ZXJkRGl2LCBcImRpc3BsYXlcIiwgXCJub25lXCIpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93QnV0dG9uKCkge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sIFwiZGlzcGxheVwiLCBgYmxvY2tgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGlkZUJ1dHRvbigpIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYnV0dG9uLCBcImRpc3BsYXlcIiwgYG5vbmVgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd1NwaW5uZXIoKSB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNwaW5uZXJEaXYsIFwiZGlzcGxheVwiLCBgYmxvY2tgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGlkZVNwaW5uZXIoKSB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNwaW5uZXJEaXYsIFwiZGlzcGxheVwiLCBgbm9uZWApO1xuICB9XG59XG4vLyBUT0RPIGhvdmVyIGthcm5lIHAgdXBsb2FkIGJ1dHRvbiBheWVnYSB1c2xwIGNsaWNrIGtybmUgcCB1cGxvYSBkbnB1dCBraGlsZWhhXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1waWNrZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWRpYXMtZmlsZS11cGxvYWRlci8iLCJzb3VyY2VzIjpbImxpYi9maWxlLXBpY2tlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RDtJQXFCRSw2QkFDVSxLQUFpQixFQUNqQixRQUFtQixFQUNuQixlQUFvQztRQUZwQyxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsb0JBQWUsR0FBZixlQUFlLENBQXFCO1FBcEJwQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBQ3RELHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQzlELFlBQU8sR0FBVyxJQUFJLENBQUM7UUFDdkIsZ0JBQVcsR0FBcUIsS0FBSyxDQUFDO1FBQ3RDLGFBQVEsR0FBcUIsS0FBSyxDQUFDOzs7O1FBVzVDLHNCQUFpQixHQUFHLEtBQUssQ0FBQztJQU12QixDQUFDOzs7O0lBRUosc0NBQVE7OztJQUFSO1FBQ0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNyRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7UUFDekMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFeEIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQzs7OztJQUVELDhDQUFnQjs7O0lBQWhCO1FBQ0UsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FDcEIsSUFBSSxDQUFDLFVBQVUsRUFDZixrQkFBa0IsRUFDbEIsaUJBQWlCLENBQ2xCLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQzs7WUFFbEQsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztRQUVoRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FDdkIsS0FBSyxFQUNMLEtBQUssRUFDTCxxRUFBcUUsQ0FDdEUsQ0FBQztRQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0QsQ0FBQzs7OztJQUVELDhDQUFnQjs7O0lBQWhCO1FBQ0UsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FDcEIsSUFBSSxDQUFDLFNBQVMsRUFDZCxrQkFBa0IsRUFDbEIsaUJBQWlCLENBQ2xCLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDOzs7O0lBRUQsZ0RBQWtCOzs7SUFBbEI7UUFBQSxpQkF3QkM7UUF2QkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGtCQUFrQixFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3RELElBQUks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QyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzdELENBQUM7O2dCQXhQRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtpQkFDNUI7Ozs7Z0JBZEMsVUFBVTtnQkFNVixTQUFTO2dCQUlGLG1CQUFtQjs7O2dDQU16QixNQUFNO3FDQUNOLE1BQU07MEJBQ04sS0FBSzs4QkFDTCxLQUFLOzJCQUNMLEtBQUs7OEJBNk1MLFlBQVksU0FBQyxXQUFXOzZCQVF4QixZQUFZLFNBQUMsVUFBVTs7SUE0QjFCLDBCQUFDO0NBQUEsQUF6UEQsSUF5UEM7U0F0UFksbUJBQW1COzs7SUFDOUIsNENBQWdFOztJQUNoRSxpREFBdUU7O0lBQ3ZFLHNDQUFnQzs7SUFDaEMsMENBQStDOztJQUMvQyx1Q0FBNEM7O0lBRTVDLHNDQUFxQjs7SUFDckIsd0NBQXVCOztJQUN2Qix5Q0FBd0I7O0lBQ3hCLG9DQUFtQjs7SUFDbkIscUNBQW9COztJQUNwQixvQ0FBbUI7O0lBQ25CLDRDQUEyQjs7Ozs7SUFHM0IsZ0RBQTBCOzs7OztJQUd4QixvQ0FBeUI7Ozs7O0lBQ3pCLHVDQUEyQjs7Ozs7SUFDM0IsOENBQTRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IG1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgRmlsZVBpY2tlclJlc3Buc2UgfSBmcm9tIFwiLi9maWxlLXBpY2tlci5yZXNwb25zZVwiO1xuaW1wb3J0IHsgRmlsZVVwbG9hZGVyU2VydmljZSB9IGZyb20gXCIuL2ZpbGUtdXBsb2FkZXIuc2VydmljZVwiO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiW25neEZpbGVQaWNrZXJdXCJcbn0pXG5leHBvcnQgY2xhc3MgRmlsZVBpY2tlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBPdXRwdXQoKSB1cGxvYWRTdWNjZXNzID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlUGlja2VyUmVzcG5zZT4oKTtcbiAgQE91dHB1dCgpIHVwbG9hZE11bHRpU3VjY2VzcyA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZVBpY2tlclJlc3Buc2VbXT4oKTtcbiAgQElucHV0KCkgZmlsZVVybDogc3RyaW5nID0gbnVsbDtcbiAgQElucHV0KCkgdHJhbnNwYXJlbnQ6IGJvb2xlYW4gfCBzdHJpbmcgPSBmYWxzZTtcbiAgQElucHV0KCkgbXVsdGlwbGU6IGJvb2xlYW4gfCBzdHJpbmcgPSBmYWxzZTtcblxuICBlbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgaG92ZXJkRGl2OiBIVE1MRWxlbWVudDtcbiAgc3Bpbm5lckRpdjogSFRNTEVsZW1lbnQ7XG4gIGlucHV0OiBIVE1MRWxlbWVudDtcbiAgYnV0dG9uOiBIVE1MRWxlbWVudDtcbiAgaW1hZ2U6IEhUTUxFbGVtZW50O1xuICB1cGxvYWRlZEZpbGVzOiBBcnJheTxGaWxlPjtcblxuICAvKiogZGlzYWJsZWQgdGlsbCB1cGxvYWQgKi9cbiAgbW91c2VvdmVyRGlzYWJsZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHVwbG9hZGVyU2VydmljZTogRmlsZVVwbG9hZGVyU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5tdWx0aXBsZSA9IHRoaXMubXVsdGlwbGUgPT09IFwiXCIgfHwgdGhpcy5tdWx0aXBsZSA/IHRydWUgOiBmYWxzZTtcbiAgICB0aGlzLmVsZW1lbnQgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gXCJyZWxhdGl2ZVwiO1xuICAgIHRoaXMuY3JlYXRlVXBsb2FkZXJFbGVtZW50KCk7XG4gICAgdGhpcy5jcmVhdGVVcGxvYWRCdXR0b24oKTtcbiAgICB0aGlzLmNyZWF0ZUhvdmVyZWREaXYoKTtcbiAgICB0aGlzLmNyZWF0ZVNwaW5uZXJEaXYoKTtcblxuICAgIGlmICh0aGlzLmZpbGVVcmwpIHtcbiAgICAgIHRoaXMucHJldmlld0ltYWdlKHRoaXMuZmlsZVVybCk7XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlU3Bpbm5lckRpdigpIHtcbiAgICB0aGlzLnNwaW5uZXJEaXYgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgIHRoaXMuc3Bpbm5lckRpdixcbiAgICAgIFwiYmFja2dyb3VuZC1jb2xvclwiLFxuICAgICAgXCJyZ2JhKDAsMCwwLDAuNClcIlxuICAgICk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNwaW5uZXJEaXYsIFwidG9wXCIsIFwiMFwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc3Bpbm5lckRpdiwgXCJsZWZ0XCIsIFwiMFwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc3Bpbm5lckRpdiwgXCJoZWlnaHRcIiwgXCIxMDAlXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5zcGlubmVyRGl2LCBcIndpZHRoXCIsIFwiMTAwJVwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc3Bpbm5lckRpdiwgXCJwb3NpdGlvblwiLCBcImFic29sdXRlXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5zcGlubmVyRGl2LCBcIm92ZXJmbG93XCIsIFwiYXV0b1wiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc3Bpbm5lckRpdiwgXCJkaXNwbGF5XCIsIFwibm9uZVwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc3Bpbm5lckRpdiwgXCJ6LWluZGV4XCIsIFwiOFwiKTtcblxuICAgIGNvbnN0IGltYWdlID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KFwiaW1nXCIpO1xuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShcbiAgICAgIGltYWdlLFxuICAgICAgXCJzcmNcIixcbiAgICAgIGBodHRwczovL2ZsZXZpeC5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMTkvMDcvU3Bpbm5lci1QcmVsb2FkZXIuZ2lmYFxuICAgICk7XG5cbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGltYWdlLCBcImhlaWdodFwiLCBgMTAwJWApO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaW1hZ2UsIFwid2lkdGhcIiwgYDEwMCVgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGltYWdlLCBcIm9iamVjdC1maXRcIiwgYGNvbnRhaW5gKTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuc3Bpbm5lckRpdiwgaW1hZ2UpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50LCB0aGlzLnNwaW5uZXJEaXYpO1xuICB9XG5cbiAgY3JlYXRlSG92ZXJlZERpdigpIHtcbiAgICB0aGlzLmhvdmVyZERpdiA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgdGhpcy5ob3ZlcmREaXYsXG4gICAgICBcImJhY2tncm91bmQtY29sb3JcIixcbiAgICAgIFwicmdiYSgwLDAsMCwwLjQpXCJcbiAgICApO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3ZlcmREaXYsIFwidG9wXCIsIFwiMFwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG92ZXJkRGl2LCBcImxlZnRcIiwgXCIwXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3ZlcmREaXYsIFwiaGVpZ2h0XCIsIFwiMTAwJVwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG92ZXJkRGl2LCBcIndpZHRoXCIsIFwiMTAwJVwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG92ZXJkRGl2LCBcInBvc2l0aW9uXCIsIFwiYWJzb2x1dGVcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvdmVyZERpdiwgXCJvdmVyZmxvd1wiLCBcImF1dG9cIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvdmVyZERpdiwgXCJkaXNwbGF5XCIsIFwibm9uZVwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG92ZXJkRGl2LCBcInotaW5kZXhcIiwgXCI4XCIpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50LCB0aGlzLmhvdmVyZERpdik7XG4gIH1cblxuICBjcmVhdGVVcGxvYWRCdXR0b24oKSB7XG4gICAgdGhpcy5idXR0b24gPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJ1dHRvbiwgXCJiYWNrZ3JvdW5kLWNvbG9yXCIsIFwiIzMzN2FiN1wiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYnV0dG9uLCBcImJvcmRlci1jb2xvclwiLCBcIiMyZTZkYTRcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJ1dHRvbiwgXCJjb2xvclwiLCBcIiNmZmZmXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sIFwicG9zaXRpb25cIiwgXCJhYnNvbHV0ZVwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYnV0dG9uLCBcInRvcFwiLCBcIjBcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJ1dHRvbiwgXCJyaWdodFwiLCBcIjBcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJ1dHRvbiwgXCJib3R0b21cIiwgXCIwXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sIFwibGVmdFwiLCBcIjBcIik7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJ1dHRvbiwgXCJtYXJnaW5cIiwgXCJhdXRvXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sIFwiaGVpZ2h0XCIsIFwiNTBweFwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYnV0dG9uLCBcInotaW5kZXhcIiwgXCI5XCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sIFwid2lkdGhcIiwgXCIxMjBweFwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYnV0dG9uLCBcImZvbnQtd2VpZ2h0XCIsIFwiNjAwXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sIFwiZm9udC1zaXplXCIsIFwiMTZweFwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYnV0dG9uLCBcImRpc3BsYXlcIiwgXCJub25lXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5idXR0b24sIFwidHlwZVwiLCBcImJ1dHRvblwiKTtcbiAgICBjb25zdCBidXR0b250ZXh0ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVUZXh0KFwiU2VsZWN0IEZpbGVcIik7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmJ1dHRvbiwgYnV0dG9udGV4dCk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQsIHRoaXMuYnV0dG9uKTtcbiAgICB0aGlzLmJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgICAgdGhpcy5pbnB1dC5jbGljaygpO1xuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlVXBsb2FkZXJFbGVtZW50KCkge1xuICAgIHRoaXMuaW5wdXQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTtcbiAgICB0aGlzLmlucHV0LnN0eWxlLmN1cnNvciA9IFwicG9pbnRlclwiO1xuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuaW5wdXQsIFwibXVsdGlwbGVcIiwgXCJtdWx0aXBsZVwiKTtcbiAgICB9XG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmlucHV0LCBcInR5cGVcIiwgXCJmaWxlXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pbnB1dCwgXCJvcGFjaXR5XCIsIFwiMFwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW5wdXQsIFwiaGVpZ2h0XCIsIFwiMTAwJVwiKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW5wdXQsIFwid2lkdGhcIiwgXCIxMDAlXCIpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50LCB0aGlzLmlucHV0KTtcbiAgICB0aGlzLmJpbmRFdmVudHMoKTtcbiAgfVxuXG4gIGJpbmRFdmVudHMoKSB7XG4gICAgdGhpcy5pbnB1dC5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIGV2ID0+IHtcbiAgICAgIGNvbnN0IGZpbGVzID0gKGV2IGFzIGFueSkudGFyZ2V0LmZpbGVzO1xuICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy51cGxvYWRNdWx0aXBsZShmaWxlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnVwbG9hZChmaWxlc1swXSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB1cGxvYWQoZmlsZTogRmlsZSkge1xuICAgIHRoaXMuc2hvd1NwaW5uZXIoKTtcbiAgICB0aGlzLm1vdXNlb3ZlckRpc2FibGVkID0gdHJ1ZTtcbiAgICB0aGlzLnVwbG9hZGVyU2VydmljZVxuICAgICAgLnVwbG9hZChmaWxlKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZSAmJiB0eXBlb2YgcmVzcG9uc2UgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5oYXNPd25Qcm9wZXJ0eShcInJlc3VsdFwiKSkge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2VbXCJyZXN1bHRcIl07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLmhhc093blByb3BlcnR5KFwiZGF0YVwiKSkge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2VbXCJkYXRhXCJdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzcG9uc2U6IEZpbGVQaWNrZXJSZXNwbnNlKSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlICYmIHR5cGVvZiByZXNwb25zZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRTdWNjZXNzLmVtaXQocmVzcG9uc2UpO1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3SW1hZ2UocmVzcG9uc2UuZmlsZVVybCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5oaWRlU3Bpbm5lcigpO1xuICAgICAgICAgICAgdGhpcy5tb3VzZW92ZXJEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHVwbG9hZE11bHRpcGxlKGZpbGVzOiBGaWxlW10pIHtcbiAgICB0aGlzLnNob3dTcGlubmVyKCk7XG4gICAgdGhpcy5tb3VzZW92ZXJEaXNhYmxlZCA9IHRydWU7XG4gICAgdGhpcy51cGxvYWRlclNlcnZpY2VcbiAgICAgIC51cGxvYWRNdWx0aXBsZShmaWxlcylcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgdHlwZW9mIHJlc3BvbnNlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UuaGFzT3duUHJvcGVydHkoXCJyZXN1bHRcIikpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlW1wicmVzdWx0XCJdO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5oYXNPd25Qcm9wZXJ0eShcImRhdGFcIikpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlW1wiZGF0YVwiXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBGaWxlUGlja2VyUmVzcG5zZVtdKSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlICYmIHR5cGVvZiByZXNwb25zZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRNdWx0aVN1Y2Nlc3MuZW1pdChyZXNwb25zZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5oaWRlU3Bpbm5lcigpO1xuICAgICAgICAgICAgdGhpcy5tb3VzZW92ZXJEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByZXZpZXdJbWFnZShmaWxlVXJsOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudCwgXCJiYWNrZ3JvdW5kLWltYWdlXCIsIGB1cmwoJHtmaWxlVXJsfSlgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudCwgXCJiYWNrZ3JvdW5kLXNpemVcIiwgYGNvdmVyYCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKFwibW91c2VvdmVyXCIpIG9uTW91c2VPdmVyKCkge1xuICAgIGlmICh0aGlzLm1vdXNlb3ZlckRpc2FibGVkIHx8IHRoaXMudHJhbnNwYXJlbnQgPT09IFwiXCIgfHwgdGhpcy50cmFuc3BhcmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmFkZEhvdmVyRWZmZWN0KCk7XG4gICAgdGhpcy5zaG93QnV0dG9uKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKFwibW91c2VvdXRcIikgb25Nb3VzZU91dCgpIHtcbiAgICB0aGlzLnJlbW92ZUhvdmVyRWZmZWN0KCk7XG4gICAgdGhpcy5oaWRlQnV0dG9uKCk7XG4gIH1cblxuICBwcml2YXRlIGFkZEhvdmVyRWZmZWN0KCkge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3ZlcmREaXYsIFwiZGlzcGxheVwiLCBcImJsb2NrXCIpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVIb3ZlckVmZmVjdCgpIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG92ZXJkRGl2LCBcImRpc3BsYXlcIiwgXCJub25lXCIpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93QnV0dG9uKCkge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sIFwiZGlzcGxheVwiLCBgYmxvY2tgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGlkZUJ1dHRvbigpIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYnV0dG9uLCBcImRpc3BsYXlcIiwgYG5vbmVgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd1NwaW5uZXIoKSB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNwaW5uZXJEaXYsIFwiZGlzcGxheVwiLCBgYmxvY2tgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGlkZVNwaW5uZXIoKSB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNwaW5uZXJEaXYsIFwiZGlzcGxheVwiLCBgbm9uZWApO1xuICB9XG59XG4vLyBUT0RPIGhvdmVyIGthcm5lIHAgdXBsb2FkIGJ1dHRvbiBheWVnYSB1c2xwIGNsaWNrIGtybmUgcCB1cGxvYSBkbnB1dCBraGlsZWhhXG4iXX0=

@@ -47,2 +47,36 @@ /**

};
/**
* @param {?} files
* @return {?}
*/
FileUploaderService.prototype.uploadMultiple = /**
* @param {?} files
* @return {?}
*/
function (files) {
/** @type {?} */
var formData = new FormData();
for (var index = 0; index < files.length; index++) {
formData.append("files", files[index], files[index].name);
}
/** @type {?} */
var req = new HttpRequest("POST", this.endPoint, formData, {
reportProgress: true
});
return this.http.request(req).pipe(map((/**
* @param {?} res
* @return {?}
*/
function (res) {
if (res.type === HttpEventType.Response) {
return res.body;
}
else if (res.type === HttpEventType.UploadProgress) {
// Compute and show the % done:
/** @type {?} */
var UploadProgress = +Math.round((100 * res.loaded) / res.total);
return UploadProgress;
}
})));
};
FileUploaderService.decorators = [

@@ -68,2 +102,2 @@ { type: Injectable }

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWRpYXMtZmlsZS11cGxvYWRlci8iLCJzb3VyY2VzIjpbImxpYi9maWxlLXVwbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUVWLGFBQWEsRUFDYixXQUFXLEVBQ1osTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV2QztJQUVFLDZCQUM0QixRQUFnQixFQUNsQyxJQUFnQjtRQURFLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDbEMsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUN2QixDQUFDOzs7OztJQUVKLG9DQUFNOzs7O0lBQU4sVUFBTyxRQUFjOztZQUNmLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRTtRQUM3QixRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDOztZQUUzQyxHQUFHLEdBQUcsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFO1lBQzNELGNBQWMsRUFBRSxJQUFJO1NBQ3JCLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDaEMsR0FBRzs7OztRQUFDLFVBQUMsR0FBbUI7WUFDdEIsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3ZDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQzthQUNqQjtpQkFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLGNBQWMsRUFBRTs7O29CQUU5QyxjQUFjLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO2dCQUNsRSxPQUFPLGNBQWMsQ0FBQzthQUN2QjtRQUNILENBQUMsRUFBQyxDQUNILENBQUM7SUFDSixDQUFDOztnQkF6QkYsVUFBVTs7Ozs2Q0FHTixNQUFNLFNBQUMsU0FBUztnQkFabkIsVUFBVTs7SUFtQ1osMEJBQUM7Q0FBQSxBQTFCRCxJQTBCQztTQXpCWSxtQkFBbUI7OztJQUU1Qix1Q0FBMEM7Ozs7O0lBQzFDLG1DQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEh0dHBDbGllbnQsXG4gIEh0dHBFdmVudCxcbiAgSHR0cEV2ZW50VHlwZSxcbiAgSHR0cFJlcXVlc3Rcbn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBFTkRfUE9JTlQgfSBmcm9tIFwiLi9lbmRwb2ludFwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZGVyU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRU5EX1BPSU5UKSBwdWJsaWMgZW5kUG9pbnQ6IHN0cmluZyxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnRcbiAgKSB7fVxuXG4gIHVwbG9hZChmaWxlSXRlbTogRmlsZSkge1xuICAgIGxldCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvcm1EYXRhLmFwcGVuZChcImZpbGVcIiwgZmlsZUl0ZW0sIGZpbGVJdGVtLm5hbWUpO1xuXG4gICAgY29uc3QgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KFwiUE9TVFwiLCB0aGlzLmVuZFBvaW50LCBmb3JtRGF0YSwge1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnJlcXVlc3QocmVxKS5waXBlKFxuICAgICAgbWFwKChyZXM6IEh0dHBFdmVudDxhbnk+KSA9PiB7XG4gICAgICAgIGlmIChyZXMudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5SZXNwb25zZSkge1xuICAgICAgICAgIHJldHVybiByZXMuYm9keTtcbiAgICAgICAgfSBlbHNlIGlmIChyZXMudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzcykge1xuICAgICAgICAgIC8vIENvbXB1dGUgYW5kIHNob3cgdGhlICUgZG9uZTpcbiAgICAgICAgICBjb25zdCBVcGxvYWRQcm9ncmVzcyA9ICtNYXRoLnJvdW5kKCgxMDAgKiByZXMubG9hZGVkKSAvIHJlcy50b3RhbCk7XG4gICAgICAgICAgcmV0dXJuIFVwbG9hZFByb2dyZXNzO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWRpYXMtZmlsZS11cGxvYWRlci8iLCJzb3VyY2VzIjpbImxpYi9maWxlLXVwbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUVWLGFBQWEsRUFDYixXQUFXLEVBQ1osTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV2QztJQUVFLDZCQUM0QixRQUFnQixFQUNsQyxJQUFnQjtRQURFLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDbEMsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUN2QixDQUFDOzs7OztJQUVKLG9DQUFNOzs7O0lBQU4sVUFBTyxRQUFjOztZQUNmLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRTtRQUU3QixRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDOztZQUUzQyxHQUFHLEdBQUcsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFO1lBQzNELGNBQWMsRUFBRSxJQUFJO1NBQ3JCLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDaEMsR0FBRzs7OztRQUFDLFVBQUMsR0FBbUI7WUFDdEIsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3ZDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQzthQUNqQjtpQkFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLGNBQWMsRUFBRTs7O29CQUU5QyxjQUFjLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO2dCQUNsRSxPQUFPLGNBQWMsQ0FBQzthQUN2QjtRQUNILENBQUMsRUFBQyxDQUNILENBQUM7SUFDSixDQUFDOzs7OztJQUVELDRDQUFjOzs7O0lBQWQsVUFBZSxLQUFhOztZQUN0QixRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUU7UUFFN0IsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDakQsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMzRDs7WUFFSyxHQUFHLEdBQUcsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFO1lBQzNELGNBQWMsRUFBRSxJQUFJO1NBQ3JCLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDaEMsR0FBRzs7OztRQUFDLFVBQUMsR0FBbUI7WUFDdEIsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3ZDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQzthQUNqQjtpQkFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLGNBQWMsRUFBRTs7O29CQUU5QyxjQUFjLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO2dCQUNsRSxPQUFPLGNBQWMsQ0FBQzthQUN2QjtRQUNILENBQUMsRUFBQyxDQUNILENBQUM7SUFDSixDQUFDOztnQkFqREYsVUFBVTs7Ozs2Q0FHTixNQUFNLFNBQUMsU0FBUztnQkFabkIsVUFBVTs7SUEyRFosMEJBQUM7Q0FBQSxBQWxERCxJQWtEQztTQWpEWSxtQkFBbUI7OztJQUU1Qix1Q0FBMEM7Ozs7O0lBQzFDLG1DQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEh0dHBDbGllbnQsXG4gIEh0dHBFdmVudCxcbiAgSHR0cEV2ZW50VHlwZSxcbiAgSHR0cFJlcXVlc3Rcbn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBFTkRfUE9JTlQgfSBmcm9tIFwiLi9lbmRwb2ludFwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZGVyU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRU5EX1BPSU5UKSBwdWJsaWMgZW5kUG9pbnQ6IHN0cmluZyxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnRcbiAgKSB7fVxuXG4gIHVwbG9hZChmaWxlSXRlbTogRmlsZSkge1xuICAgIGxldCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKFwiZmlsZVwiLCBmaWxlSXRlbSwgZmlsZUl0ZW0ubmFtZSk7XG5cbiAgICBjb25zdCByZXEgPSBuZXcgSHR0cFJlcXVlc3QoXCJQT1NUXCIsIHRoaXMuZW5kUG9pbnQsIGZvcm1EYXRhLCB7XG4gICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucmVxdWVzdChyZXEpLnBpcGUoXG4gICAgICBtYXAoKHJlczogSHR0cEV2ZW50PGFueT4pID0+IHtcbiAgICAgICAgaWYgKHJlcy50eXBlID09PSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlKSB7XG4gICAgICAgICAgcmV0dXJuIHJlcy5ib2R5O1xuICAgICAgICB9IGVsc2UgaWYgKHJlcy50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XG4gICAgICAgICAgLy8gQ29tcHV0ZSBhbmQgc2hvdyB0aGUgJSBkb25lOlxuICAgICAgICAgIGNvbnN0IFVwbG9hZFByb2dyZXNzID0gK01hdGgucm91bmQoKDEwMCAqIHJlcy5sb2FkZWQpIC8gcmVzLnRvdGFsKTtcbiAgICAgICAgICByZXR1cm4gVXBsb2FkUHJvZ3Jlc3M7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHVwbG9hZE11bHRpcGxlKGZpbGVzOiBGaWxlW10pIHtcbiAgICBsZXQgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcblxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBmaWxlcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZChcImZpbGVzXCIsIGZpbGVzW2luZGV4XSwgZmlsZXNbaW5kZXhdLm5hbWUpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcSA9IG5ldyBIdHRwUmVxdWVzdChcIlBPU1RcIiwgdGhpcy5lbmRQb2ludCwgZm9ybURhdGEsIHtcbiAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5yZXF1ZXN0KHJlcSkucGlwZShcbiAgICAgIG1hcCgocmVzOiBIdHRwRXZlbnQ8YW55PikgPT4ge1xuICAgICAgICBpZiAocmVzLnR5cGUgPT09IEh0dHBFdmVudFR5cGUuUmVzcG9uc2UpIHtcbiAgICAgICAgICByZXR1cm4gcmVzLmJvZHk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVzLnR5cGUgPT09IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAvLyBDb21wdXRlIGFuZCBzaG93IHRoZSAlIGRvbmU6XG4gICAgICAgICAgY29uc3QgVXBsb2FkUHJvZ3Jlc3MgPSArTWF0aC5yb3VuZCgoMTAwICogcmVzLmxvYWRlZCkgLyByZXMudG90YWwpO1xuICAgICAgICAgIHJldHVybiBVcGxvYWRQcm9ncmVzcztcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=

@@ -75,2 +75,32 @@ import { InjectionToken, Injectable, Inject, EventEmitter, Directive, ElementRef, Renderer2, Output, Input, HostListener, NgModule } from '@angular/core';

}
/**
* @param {?} files
* @return {?}
*/
uploadMultiple(files) {
/** @type {?} */
let formData = new FormData();
for (let index = 0; index < files.length; index++) {
formData.append("files", files[index], files[index].name);
}
/** @type {?} */
const req = new HttpRequest("POST", this.endPoint, formData, {
reportProgress: true
});
return this.http.request(req).pipe(map((/**
* @param {?} res
* @return {?}
*/
(res) => {
if (res.type === HttpEventType.Response) {
return res.body;
}
else if (res.type === HttpEventType.UploadProgress) {
// Compute and show the % done:
/** @type {?} */
const UploadProgress = +Math.round((100 * res.loaded) / res.total);
return UploadProgress;
}
})));
}
}

@@ -111,3 +141,6 @@ FileUploaderService.decorators = [

this.uploadSuccess = new EventEmitter();
this.uploadMultiSuccess = new EventEmitter();
this.fileUrl = null;
this.transparent = false;
this.multiple = false;
/**

@@ -122,2 +155,3 @@ * disabled till upload

ngOnInit() {
this.multiple = this.multiple === "" || this.multiple ? true : false;
this.element = this.elRef.nativeElement;

@@ -209,2 +243,6 @@ this.element.style.position = "relative";

this.input = this.renderer.createElement("input");
this.input.style.cursor = "pointer";
if (this.multiple) {
this.renderer.setProperty(this.input, "multiple", "multiple");
}
this.renderer.setProperty(this.input, "type", "file");

@@ -227,4 +265,9 @@ this.renderer.setStyle(this.input, "opacity", "0");

/** @type {?} */
const file = ((/** @type {?} */ (ev))).target.files[0];
this.upload(file);
const files = ((/** @type {?} */ (ev))).target.files;
if (this.multiple) {
this.uploadMultiple(files);
}
else {
this.upload(files[0]);
}
}));

@@ -282,2 +325,50 @@ }

/**
* @param {?} files
* @return {?}
*/
uploadMultiple(files) {
this.showSpinner();
this.mouseoverDisabled = true;
this.uploaderService
.uploadMultiple(files)
.pipe(map((/**
* @param {?} response
* @return {?}
*/
(response) => {
if (response && typeof response === "object") {
if (response.hasOwnProperty("result")) {
return response["result"];
}
else if (response.hasOwnProperty("data")) {
return response["data"];
}
}
return response;
})))
.subscribe({
next: (/**
* @param {?} response
* @return {?}
*/
(response) => {
if (response && typeof response === "object") {
this.uploadMultiSuccess.emit(response);
}
}),
complete: (/**
* @return {?}
*/
() => {
setTimeout((/**
* @return {?}
*/
() => {
this.hideSpinner();
this.mouseoverDisabled = false;
}), 2000);
})
});
}
/**
* @param {?} fileUrl

@@ -294,3 +385,3 @@ * @return {?}

onMouseOver() {
if (this.mouseoverDisabled) {
if (this.mouseoverDisabled || this.transparent === "" || this.transparent) {
return;

@@ -364,3 +455,6 @@ }

uploadSuccess: [{ type: Output }],
uploadMultiSuccess: [{ type: Output }],
fileUrl: [{ type: Input }],
transparent: [{ type: Input }],
multiple: [{ type: Input }],
onMouseOver: [{ type: HostListener, args: ["mouseover",] }],

@@ -373,4 +467,10 @@ onMouseOut: [{ type: HostListener, args: ["mouseout",] }]

/** @type {?} */
FilePickerDirective.prototype.uploadMultiSuccess;
/** @type {?} */
FilePickerDirective.prototype.fileUrl;
/** @type {?} */
FilePickerDirective.prototype.transparent;
/** @type {?} */
FilePickerDirective.prototype.multiple;
/** @type {?} */
FilePickerDirective.prototype.element;

@@ -377,0 +477,0 @@ /** @type {?} */

@@ -75,2 +75,36 @@ import { InjectionToken, Injectable, Inject, EventEmitter, Directive, ElementRef, Renderer2, Output, Input, HostListener, NgModule } from '@angular/core';

};
/**
* @param {?} files
* @return {?}
*/
FileUploaderService.prototype.uploadMultiple = /**
* @param {?} files
* @return {?}
*/
function (files) {
/** @type {?} */
var formData = new FormData();
for (var index = 0; index < files.length; index++) {
formData.append("files", files[index], files[index].name);
}
/** @type {?} */
var req = new HttpRequest("POST", this.endPoint, formData, {
reportProgress: true
});
return this.http.request(req).pipe(map((/**
* @param {?} res
* @return {?}
*/
function (res) {
if (res.type === HttpEventType.Response) {
return res.body;
}
else if (res.type === HttpEventType.UploadProgress) {
// Compute and show the % done:
/** @type {?} */
var UploadProgress = +Math.round((100 * res.loaded) / res.total);
return UploadProgress;
}
})));
};
FileUploaderService.decorators = [

@@ -107,3 +141,6 @@ { type: Injectable }

this.uploadSuccess = new EventEmitter();
this.uploadMultiSuccess = new EventEmitter();
this.fileUrl = null;
this.transparent = false;
this.multiple = false;
/**

@@ -121,2 +158,3 @@ * disabled till upload

function () {
this.multiple = this.multiple === "" || this.multiple ? true : false;
this.element = this.elRef.nativeElement;

@@ -221,2 +259,6 @@ this.element.style.position = "relative";

this.input = this.renderer.createElement("input");
this.input.style.cursor = "pointer";
if (this.multiple) {
this.renderer.setProperty(this.input, "multiple", "multiple");
}
this.renderer.setProperty(this.input, "type", "file");

@@ -243,4 +285,9 @@ this.renderer.setStyle(this.input, "opacity", "0");

/** @type {?} */
var file = ((/** @type {?} */ (ev))).target.files[0];
_this.upload(file);
var files = ((/** @type {?} */ (ev))).target.files;
if (_this.multiple) {
_this.uploadMultiple(files);
}
else {
_this.upload(files[0]);
}
}));

@@ -303,2 +350,55 @@ };

/**
* @param {?} files
* @return {?}
*/
FilePickerDirective.prototype.uploadMultiple = /**
* @param {?} files
* @return {?}
*/
function (files) {
var _this = this;
this.showSpinner();
this.mouseoverDisabled = true;
this.uploaderService
.uploadMultiple(files)
.pipe(map((/**
* @param {?} response
* @return {?}
*/
function (response) {
if (response && typeof response === "object") {
if (response.hasOwnProperty("result")) {
return response["result"];
}
else if (response.hasOwnProperty("data")) {
return response["data"];
}
}
return response;
})))
.subscribe({
next: (/**
* @param {?} response
* @return {?}
*/
function (response) {
if (response && typeof response === "object") {
_this.uploadMultiSuccess.emit(response);
}
}),
complete: (/**
* @return {?}
*/
function () {
setTimeout((/**
* @return {?}
*/
function () {
_this.hideSpinner();
_this.mouseoverDisabled = false;
}), 2000);
})
});
};
/**
* @param {?} fileUrl

@@ -322,3 +422,3 @@ * @return {?}

function () {
if (this.mouseoverDisabled) {
if (this.mouseoverDisabled || this.transparent === "" || this.transparent) {
return;

@@ -418,3 +518,6 @@ }

uploadSuccess: [{ type: Output }],
uploadMultiSuccess: [{ type: Output }],
fileUrl: [{ type: Input }],
transparent: [{ type: Input }],
multiple: [{ type: Input }],
onMouseOver: [{ type: HostListener, args: ["mouseover",] }],

@@ -429,4 +532,10 @@ onMouseOut: [{ type: HostListener, args: ["mouseout",] }]

/** @type {?} */
FilePickerDirective.prototype.uploadMultiSuccess;
/** @type {?} */
FilePickerDirective.prototype.fileUrl;
/** @type {?} */
FilePickerDirective.prototype.transparent;
/** @type {?} */
FilePickerDirective.prototype.multiple;
/** @type {?} */
FilePickerDirective.prototype.element;

@@ -433,0 +542,0 @@ /** @type {?} */

@@ -9,3 +9,6 @@ import { ElementRef, EventEmitter, OnInit, Renderer2 } from "@angular/core";

uploadSuccess: EventEmitter<FilePickerRespnse>;
uploadMultiSuccess: EventEmitter<FilePickerRespnse[]>;
fileUrl: string;
transparent: boolean | string;
multiple: boolean | string;
element: HTMLElement;

@@ -28,2 +31,3 @@ hoverdDiv: HTMLElement;

upload(file: File): void;
uploadMultiple(files: File[]): void;
previewImage(fileUrl: string): void;

@@ -30,0 +34,0 @@ onMouseOver(): void;

@@ -7,2 +7,3 @@ import { HttpClient } from "@angular/common/http";

upload(fileItem: File): import("rxjs").Observable<any>;
uploadMultiple(files: File[]): import("rxjs").Observable<any>;
}
{
"name": "adias-file-uploader",
"version": "2.0.4",
"version": "2.0.7",
"description": "Angular Library for uploading files",

@@ -5,0 +5,0 @@ "peerDependencies": {

@@ -11,2 +11,4 @@ # adias-file-uploader

- [x] Set Custom File Url After Upload
- [x] Transparent Uploader
- [x] Multiple File Uploader

@@ -52,2 +54,18 @@ ---

OR
For Transparent File uploader
```HTML
<div ngxFilePicker transparent (uploadSuccess)="onUploadSuccess($event)"></div>
```
OR
For Multiple File upload
```HTML
<div ngxFilePicker transparent multiple (uploadMultiSuccess)="onUploadSuccess($event)"></div>
```
## Events

@@ -70,1 +88,104 @@

```
Nestjs
controller.ts
```ts
@Post()
@AllowWithoutToken()
@UseInterceptors(FilesInterceptor('files'))
async uploadAvatar(@UploadedFiles() files: S3Response[]) {
return files.map(file => {
return {
fileUrl: buildFileUrl(file.key),
fileName: file.key,
fileSize: file.size,
fileType: file.mimetype,
};
});
}
```
s3.service.ts
```ts
import { Injectable, Logger } from "@nestjs/common";
import {
MulterModuleOptions,
MulterOptionsFactory
} from "@nestjs/platform-express";
import * as AWS from "aws-sdk";
import * as Express from "express";
import * as Multer from "multer";
import * as MulterS3 from "multer-s3";
import { Random } from "random-js";
const random = new Random();
@Injectable()
export class S3Service implements MulterOptionsFactory {
private s3: any;
private readonly FILE_LIMIT_SIZE = 3145728; // 사용자 프로필 이미지는 3MB 제한
config = {
acesssKeyId: acesssKeyId,
bucket: bucket,
secretAccessKey: secretAccessKey
};
constructor() {
this.s3 = new AWS.S3();
AWS.config.update({
accessKeyId: acesssKeyId,
secretAccessKey: secretAccessKey
});
}
// CallBack 함수로, NestJS의 MulterModule에 사용될 MulterModuleOption을 리턴한다.
createMulterOptions(): MulterModuleOptions | Promise<MulterModuleOptions> {
const bucket: string = this.config.bucket;
const acl: string = "public-read";
const multerS3Storage = MulterS3({
s3: this.s3,
bucket,
// acl,
metadata: (req, file, cb) => {
cb(null, { fieldName: file.fieldname });
},
key: (req, file, cb) => {
cb(
null,
`${Date.now().toString()}-${String(file.originalname).replace(
/[&\/\\#, +()$~%'":*?<>{}]/g,
"_"
)}`
);
}
});
return {
storage: multerS3Storage,
fileFilter: this.fileFilter,
limits: {
fileSize: this.FILE_LIMIT_SIZE
}
};
}
public fileFilter(
req: Express.Request,
file: Multer.File,
cb: (error: Error | null, acceptFile: boolean) => void
) {
if (file.mimetype.match(/\/(jpg|jpeg|png|gif)$/)) {
cb(null, true);
} else {
Logger.log(`No! ${JSON.stringify(file)}`);
cb(new Error("unsupported file"), false);
}
}
}
```

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

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