ngx-currency
Advanced tools
Comparing version 2.2.2 to 2.2.3
@@ -433,10 +433,9 @@ (function (global, factory) { | ||
var move = this.rawValue.substr(selectionStart - 1, 1).match(/\d/) ? 0 : -1; | ||
if ((keyCode == 8 && | ||
selectionStart - 1 === 0 && | ||
!(this.rawValue.substr(selectionStart, 1).match(/\d/))) || | ||
((keyCode == 46 || keyCode == 63272) && | ||
selectionStart === 0 && | ||
!(this.rawValue.substr(selectionStart + 1, 1).match(/\d/)))) { | ||
if ((keyCode == 8 && selectionStart - 1 === 0 && !(this.rawValue.substr(selectionStart, 1).match(/\d/))) || | ||
((keyCode == 46 || keyCode == 63272) && selectionStart === 0 && !(this.rawValue.substr(selectionStart + 1, 1).match(/\d/)))) { | ||
move = 1; | ||
} | ||
else if ((keyCode == 46 || keyCode == 63272) && selectionStart !== 0 && !(this.rawValue.substr(selectionStart - 1, 1).match(/\d/))) { | ||
move = 0; | ||
} | ||
; | ||
@@ -443,0 +442,0 @@ selectionEnd = keyCode == 46 || keyCode == 63272 ? selectionEnd + 1 : selectionEnd; |
@@ -15,3 +15,3 @@ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/forms"),require("@angular/common")):"function"==typeof define&&define.amd?define("ngx-currency",["exports","@angular/core","@angular/forms","@angular/common"],t):t((e=e||self)["ngx-currency"]={},e.ng.core,e.ng.forms,e.ng.common)}(this,(function(e,t,n,i){"use strict"; | ||
and limitations under the License. | ||
***************************************************************************** */function r(e,t,n,i){var r,o=arguments.length,s=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(s=(o<3?r(s):o>3?r(t,n,s):r(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s}function o(e,t){return function(n,i){t(n,i,e)}}var s=new t.InjectionToken("currency.mask.config"),a=function(){function e(e){this.htmlInputElement=e}return e.prototype.setCursorAt=function(e){if(this.htmlInputElement.setSelectionRange)this.htmlInputElement.focus(),this.htmlInputElement.setSelectionRange(e,e);else if(this.htmlInputElement.createTextRange){var t=this.htmlInputElement.createTextRange();t.collapse(!0),t.moveEnd("character",e),t.moveStart("character",e),t.select()}},e.prototype.updateValueAndCursor=function(e,t,n){this.rawValue=e,n-=t-e.length,this.setCursorAt(n)},Object.defineProperty(e.prototype,"canInputMoreNumbers",{get:function(){var e=!(this.rawValue.length>=this.htmlInputElement.maxLength&&this.htmlInputElement.maxLength>=0),t=this.inputSelection.selectionStart,n=this.inputSelection.selectionEnd,i=!(t==n||!this.htmlInputElement.value.substring(t,n).match(/[^0-9\u0660-\u0669\u06F0-\u06F9]/)),r="0"==this.htmlInputElement.value.substring(0,1);return e||i||r},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"inputSelection",{get:function(){var e=0,t=0;if("number"==typeof this.htmlInputElement.selectionStart&&"number"==typeof this.htmlInputElement.selectionEnd)e=this.htmlInputElement.selectionStart,t=this.htmlInputElement.selectionEnd;else{var n=document.selection.createRange();if(n&&n.parentElement()==this.htmlInputElement){var i=this.htmlInputElement.value.length,r=this.htmlInputElement.value.replace(/\r\n/g,"\n"),o=this.htmlInputElement.createTextRange();o.moveToBookmark(n.getBookmark());var s=this.htmlInputElement.createTextRange();s.collapse(!1),o.compareEndPoints("StartToEnd",s)>-1?e=t=i:(e=-o.moveStart("character",-i),e+=r.slice(0,e).split("\n").length-1,o.compareEndPoints("EndToEnd",s)>-1?t=i:(t=-o.moveEnd("character",-i),t+=r.slice(0,t).split("\n").length-1))}}return{selectionStart:e,selectionEnd:t}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"rawValue",{get:function(){return this.htmlInputElement&&this.htmlInputElement.value},set:function(e){this._storedRawValue=e,this.htmlInputElement&&(this.htmlInputElement.value=e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"storedRawValue",{get:function(){return this._storedRawValue},enumerable:!0,configurable:!0}),e}(),u=function(){function e(e,t){this.htmlInputElement=e,this.options=t,this.PER_AR_NUMBER=new Map,this.inputManager=new a(e),this.initialize()}return e.prototype.initialize=function(){this.PER_AR_NUMBER.set("۰","0"),this.PER_AR_NUMBER.set("۱","1"),this.PER_AR_NUMBER.set("۲","2"),this.PER_AR_NUMBER.set("۳","3"),this.PER_AR_NUMBER.set("۴","4"),this.PER_AR_NUMBER.set("۵","5"),this.PER_AR_NUMBER.set("۶","6"),this.PER_AR_NUMBER.set("۷","7"),this.PER_AR_NUMBER.set("۸","8"),this.PER_AR_NUMBER.set("۹","9"),this.PER_AR_NUMBER.set("٠","0"),this.PER_AR_NUMBER.set("١","1"),this.PER_AR_NUMBER.set("٢","2"),this.PER_AR_NUMBER.set("٣","3"),this.PER_AR_NUMBER.set("٤","4"),this.PER_AR_NUMBER.set("٥","5"),this.PER_AR_NUMBER.set("٦","6"),this.PER_AR_NUMBER.set("٧","7"),this.PER_AR_NUMBER.set("٨","8"),this.PER_AR_NUMBER.set("٩","9")},e.prototype.addNumber=function(e){var t=String.fromCharCode(e);if(this.rawValue){var n=this.inputSelection.selectionStart,i=this.inputSelection.selectionEnd;this.rawValue=this.rawValue.substring(0,n)+t+this.rawValue.substring(i,this.rawValue.length),this.updateFieldValue(n+1)}else this.rawValue=this.applyMask(!1,t),this.updateFieldValue()},e.prototype.applyMask=function(e,t){var n=this.options,i=n.allowNegative,r=n.decimal,o=n.precision,s=n.prefix,a=n.suffix,u=n.thousands,l=(n.nullable,n.min),p=n.max,h=(t=e?new Number(t).toFixed(o):t).replace(/[^0-9\u0660-\u0669\u06F0-\u06F9]/g,"");if(!h)return"";var c=h.slice(0,h.length-o).replace(/^\u0660*/g,"").replace(/^\u06F0*/g,"").replace(/^0*/g,"");""==c&&(c="0");var d=parseInt(c);c=c.replace(/\B(?=([0-9\u0660-\u0669\u06F0-\u06F9]{3})+(?![0-9\u0660-\u0669\u06F0-\u06F9]))/g,u),u&&c.startsWith(u)&&(c=c.substring(1));var f=c,g=h.slice(h.length-o),m=parseInt(g)||0,v=t.indexOf("-")>-1;p=this.isNullOrUndefined(p)||this.isNullOrUndefined(l)?p:Math.max(p,l);var y=d+m/100;return y=v?-y:y,!this.isNullOrUndefined(p)&&y>p?this.applyMask(!0,p+""):!this.isNullOrUndefined(l)&&y<l?this.applyMask(!0,l+""):(o>0&&("0"==f&&g.length<o?f+=r+"0".repeat(o-1)+g:f+=r+g),(v&&i&&!(0==y)?"-":"")+s+f+a)},e.prototype.clearMask=function(e){if(this.isNullable()&&""===e)return null;var t=(e||"0").replace(this.options.prefix,"").replace(this.options.suffix,"");return this.options.thousands&&(t=t.replace(new RegExp("\\"+this.options.thousands,"g"),"")),this.options.decimal&&(t=t.replace(this.options.decimal,".")),this.PER_AR_NUMBER.forEach((function(e,n){var i=new RegExp(n,"g");t=t.replace(i,e)})),parseFloat(t)},e.prototype.changeToNegative=function(){this.options.allowNegative&&""!=this.rawValue&&"-"!=this.rawValue.charAt(0)&&0!=this.value&&(this.rawValue=this.applyMask(!1,"-"+this.rawValue))},e.prototype.changeToPositive=function(){this.rawValue=this.applyMask(!1,this.rawValue.replace("-",""))},e.prototype.removeNumber=function(e){if(this.isNullable()&&0==this.value)this.rawValue=null;else{var t=this.inputSelection.selectionEnd,n=this.inputSelection.selectionStart;n>this.rawValue.length-this.options.suffix.length&&(t=this.rawValue.length-this.options.suffix.length,n=this.rawValue.length-this.options.suffix.length);var i=this.rawValue.substr(n-1,1).match(/\d/)?0:-1;(8!=e||n-1!=0||this.rawValue.substr(n,1).match(/\d/))&&(46!=e&&63272!=e||0!==n||this.rawValue.substr(n+1,1).match(/\d/))||(i=1),t=46==e||63272==e?t+1:t,n=8==e?n-1:n,this.rawValue=this.rawValue.substring(0,n)+this.rawValue.substring(t,this.rawValue.length),this.updateFieldValue(n+i)}},e.prototype.updateFieldValue=function(e){var t=this.applyMask(!1,this.rawValue||"");e=null==e?this.rawValue.length:e,this.inputManager.updateValueAndCursor(t,this.rawValue.length,e)},e.prototype.updateOptions=function(e){var t=this.value;this.options=e,this.value=t},e.prototype.prefixLength=function(){return this.options.prefix.length},e.prototype.isNullable=function(){return this.options.nullable},Object.defineProperty(e.prototype,"canInputMoreNumbers",{get:function(){return this.inputManager.canInputMoreNumbers},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"inputSelection",{get:function(){return this.inputManager.inputSelection},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"rawValue",{get:function(){return this.inputManager.rawValue},set:function(e){this.inputManager.rawValue=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"storedRawValue",{get:function(){return this.inputManager.storedRawValue},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"value",{get:function(){return this.clearMask(this.rawValue)},set:function(e){this.rawValue=this.applyMask(!0,""+e)},enumerable:!0,configurable:!0}),e.prototype.isNullOrUndefined=function(e){return null==e},e}(),l=function(){function e(e,t){this.inputService=new u(e,t)}return e.prototype.handleCut=function(e){var t=this;setTimeout((function(){t.inputService.updateFieldValue(),t.setValue(t.inputService.value),t.onModelChange(t.inputService.value)}),0)},e.prototype.handleInput=function(e){var t=this.inputService.rawValue.charCodeAt(this.inputService.rawValue.length-1),n=this.inputService.rawValue.length,i=this.inputService.inputSelection.selectionEnd,r=this.inputService.storedRawValue.length;if(this.inputService.rawValue=this.inputService.storedRawValue,n==i&&1==Math.abs(n-r)){if(n<r&&this.inputService.removeNumber(8),n>r)switch(t){case 43:this.inputService.changeToPositive();break;case 45:this.inputService.changeToNegative();break;default:if(!this.inputService.canInputMoreNumbers)return;this.inputService.addNumber(t)}this.setCursorPosition(e),this.onModelChange(this.inputService.value)}else this.setCursorPosition(e)},e.prototype.handleKeydown=function(e){var t=e.which||e.charCode||e.keyCode;if(8==t||46==t||63272==t){e.preventDefault();var n=Math.abs(this.inputService.inputSelection.selectionEnd-this.inputService.inputSelection.selectionStart);0==n&&(this.inputService.removeNumber(t),this.onModelChange(this.inputService.value)),n>=this.inputService.rawValue.length-this.inputService.prefixLength()&&this.clearValue()}},e.prototype.clearValue=function(){this.setValue(this.inputService.isNullable()?null:0),this.onModelChange(this.inputService.value)},e.prototype.handleKeypress=function(e){var t=e.which||e.charCode||e.keyCode;if(97!==t||!e.ctrlKey){switch(t){case void 0:case 9:case 13:case 37:case 39:return;case 43:this.inputService.changeToPositive();break;case 45:this.inputService.changeToNegative();break;default:if(this.inputService.canInputMoreNumbers)Math.abs(this.inputService.inputSelection.selectionEnd-this.inputService.inputSelection.selectionStart)==this.inputService.rawValue.length&&this.setValue(null),this.inputService.addNumber(t)}e.preventDefault(),this.onModelChange(this.inputService.value)}},e.prototype.handlePaste=function(e){var t=this;setTimeout((function(){t.inputService.updateFieldValue(),t.setValue(t.inputService.value),t.onModelChange(t.inputService.value)}),1)},e.prototype.updateOptions=function(e){this.inputService.updateOptions(e)},e.prototype.getOnModelChange=function(){return this.onModelChange},e.prototype.setOnModelChange=function(e){this.onModelChange=e},e.prototype.getOnModelTouched=function(){return this.onModelTouched},e.prototype.setOnModelTouched=function(e){this.onModelTouched=e},e.prototype.setValue=function(e){this.inputService.value=e},e.prototype.setCursorPosition=function(e){setTimeout((function(){e.target.setSelectionRange(e.target.value.length,e.target.value.length)}),0)},e}(),p={provide:n.NG_VALUE_ACCESSOR,useExisting:t.forwardRef((function(){return h})),multi:!0},h=function(){function e(e,t,n){this.currencyMaskConfig=e,this.elementRef=t,this.keyValueDiffers=n,this.options={},this.optionsTemplate={align:"right",allowNegative:!0,allowZero:!0,decimal:".",precision:2,prefix:"$ ",suffix:"",thousands:",",nullable:!1},e&&(this.optionsTemplate=e),this.keyValueDiffer=n.find({}).create()}return e.prototype.ngAfterViewInit=function(){this.elementRef.nativeElement.style.textAlign=this.options&&this.options.align?this.options.align:this.optionsTemplate.align},e.prototype.ngDoCheck=function(){this.keyValueDiffer.diff(this.options)&&(this.elementRef.nativeElement.style.textAlign=this.options.align?this.options.align:this.optionsTemplate.align,this.inputHandler.updateOptions(Object.assign({},this.optionsTemplate,this.options)))},e.prototype.ngOnInit=function(){this.inputHandler=new l(this.elementRef.nativeElement,Object.assign({},this.optionsTemplate,this.options))},e.prototype.handleBlur=function(e){this.inputHandler.getOnModelTouched().apply(e)},e.prototype.handleCut=function(e){this.isChromeAndroid()||this.inputHandler.handleCut(e)},e.prototype.handleInput=function(e){this.isChromeAndroid()&&this.inputHandler.handleInput(e)},e.prototype.handleKeydown=function(e){this.isChromeAndroid()||this.inputHandler.handleKeydown(e)},e.prototype.handleKeypress=function(e){this.isChromeAndroid()||this.inputHandler.handleKeypress(e)},e.prototype.handlePaste=function(e){this.isChromeAndroid()||this.inputHandler.handlePaste(e)},e.prototype.isChromeAndroid=function(){return/chrome/i.test(navigator.userAgent)&&/android/i.test(navigator.userAgent)},e.prototype.registerOnChange=function(e){this.inputHandler.setOnModelChange(e)},e.prototype.registerOnTouched=function(e){this.inputHandler.setOnModelTouched(e)},e.prototype.setDisabledState=function(e){this.elementRef.nativeElement.disabled=e},e.prototype.writeValue=function(e){this.inputHandler.setValue(e)},e.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Optional},{type:t.Inject,args:[s]}]},{type:t.ElementRef},{type:t.KeyValueDiffers}]},r([t.Input()],e.prototype,"options",void 0),r([t.HostListener("blur",["$event"])],e.prototype,"handleBlur",null),r([t.HostListener("cut",["$event"])],e.prototype,"handleCut",null),r([t.HostListener("input",["$event"])],e.prototype,"handleInput",null),r([t.HostListener("keydown",["$event"])],e.prototype,"handleKeydown",null),r([t.HostListener("keypress",["$event"])],e.prototype,"handleKeypress",null),r([t.HostListener("paste",["$event"])],e.prototype,"handlePaste",null),e=r([t.Directive({selector:"[currencyMask]",providers:[p]}),o(0,t.Optional()),o(0,t.Inject(s))],e)}(),c=function(){function e(){}var o;return o=e,e.forRoot=function(e){return{ngModule:o,providers:[{provide:s,useValue:e}]}},e=o=r([t.NgModule({imports:[i.CommonModule,n.FormsModule],declarations:[h],exports:[h]})],e)}();e.CURRENCYMASKDIRECTIVE_VALUE_ACCESSOR=p,e.CurrencyMaskDirective=h,e.NgxCurrencyModule=c,e.ɵa=s,Object.defineProperty(e,"__esModule",{value:!0})})); | ||
***************************************************************************** */function r(e,t,n,i){var r,o=arguments.length,s=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(s=(o<3?r(s):o>3?r(t,n,s):r(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s}function o(e,t){return function(n,i){t(n,i,e)}}var s=new t.InjectionToken("currency.mask.config"),a=function(){function e(e){this.htmlInputElement=e}return e.prototype.setCursorAt=function(e){if(this.htmlInputElement.setSelectionRange)this.htmlInputElement.focus(),this.htmlInputElement.setSelectionRange(e,e);else if(this.htmlInputElement.createTextRange){var t=this.htmlInputElement.createTextRange();t.collapse(!0),t.moveEnd("character",e),t.moveStart("character",e),t.select()}},e.prototype.updateValueAndCursor=function(e,t,n){this.rawValue=e,n-=t-e.length,this.setCursorAt(n)},Object.defineProperty(e.prototype,"canInputMoreNumbers",{get:function(){var e=!(this.rawValue.length>=this.htmlInputElement.maxLength&&this.htmlInputElement.maxLength>=0),t=this.inputSelection.selectionStart,n=this.inputSelection.selectionEnd,i=!(t==n||!this.htmlInputElement.value.substring(t,n).match(/[^0-9\u0660-\u0669\u06F0-\u06F9]/)),r="0"==this.htmlInputElement.value.substring(0,1);return e||i||r},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"inputSelection",{get:function(){var e=0,t=0;if("number"==typeof this.htmlInputElement.selectionStart&&"number"==typeof this.htmlInputElement.selectionEnd)e=this.htmlInputElement.selectionStart,t=this.htmlInputElement.selectionEnd;else{var n=document.selection.createRange();if(n&&n.parentElement()==this.htmlInputElement){var i=this.htmlInputElement.value.length,r=this.htmlInputElement.value.replace(/\r\n/g,"\n"),o=this.htmlInputElement.createTextRange();o.moveToBookmark(n.getBookmark());var s=this.htmlInputElement.createTextRange();s.collapse(!1),o.compareEndPoints("StartToEnd",s)>-1?e=t=i:(e=-o.moveStart("character",-i),e+=r.slice(0,e).split("\n").length-1,o.compareEndPoints("EndToEnd",s)>-1?t=i:(t=-o.moveEnd("character",-i),t+=r.slice(0,t).split("\n").length-1))}}return{selectionStart:e,selectionEnd:t}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"rawValue",{get:function(){return this.htmlInputElement&&this.htmlInputElement.value},set:function(e){this._storedRawValue=e,this.htmlInputElement&&(this.htmlInputElement.value=e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"storedRawValue",{get:function(){return this._storedRawValue},enumerable:!0,configurable:!0}),e}(),u=function(){function e(e,t){this.htmlInputElement=e,this.options=t,this.PER_AR_NUMBER=new Map,this.inputManager=new a(e),this.initialize()}return e.prototype.initialize=function(){this.PER_AR_NUMBER.set("۰","0"),this.PER_AR_NUMBER.set("۱","1"),this.PER_AR_NUMBER.set("۲","2"),this.PER_AR_NUMBER.set("۳","3"),this.PER_AR_NUMBER.set("۴","4"),this.PER_AR_NUMBER.set("۵","5"),this.PER_AR_NUMBER.set("۶","6"),this.PER_AR_NUMBER.set("۷","7"),this.PER_AR_NUMBER.set("۸","8"),this.PER_AR_NUMBER.set("۹","9"),this.PER_AR_NUMBER.set("٠","0"),this.PER_AR_NUMBER.set("١","1"),this.PER_AR_NUMBER.set("٢","2"),this.PER_AR_NUMBER.set("٣","3"),this.PER_AR_NUMBER.set("٤","4"),this.PER_AR_NUMBER.set("٥","5"),this.PER_AR_NUMBER.set("٦","6"),this.PER_AR_NUMBER.set("٧","7"),this.PER_AR_NUMBER.set("٨","8"),this.PER_AR_NUMBER.set("٩","9")},e.prototype.addNumber=function(e){var t=String.fromCharCode(e);if(this.rawValue){var n=this.inputSelection.selectionStart,i=this.inputSelection.selectionEnd;this.rawValue=this.rawValue.substring(0,n)+t+this.rawValue.substring(i,this.rawValue.length),this.updateFieldValue(n+1)}else this.rawValue=this.applyMask(!1,t),this.updateFieldValue()},e.prototype.applyMask=function(e,t){var n=this.options,i=n.allowNegative,r=n.decimal,o=n.precision,s=n.prefix,a=n.suffix,u=n.thousands,l=(n.nullable,n.min),p=n.max,h=(t=e?new Number(t).toFixed(o):t).replace(/[^0-9\u0660-\u0669\u06F0-\u06F9]/g,"");if(!h)return"";var c=h.slice(0,h.length-o).replace(/^\u0660*/g,"").replace(/^\u06F0*/g,"").replace(/^0*/g,"");""==c&&(c="0");var d=parseInt(c);c=c.replace(/\B(?=([0-9\u0660-\u0669\u06F0-\u06F9]{3})+(?![0-9\u0660-\u0669\u06F0-\u06F9]))/g,u),u&&c.startsWith(u)&&(c=c.substring(1));var f=c,g=h.slice(h.length-o),m=parseInt(g)||0,v=t.indexOf("-")>-1;p=this.isNullOrUndefined(p)||this.isNullOrUndefined(l)?p:Math.max(p,l);var y=d+m/100;return y=v?-y:y,!this.isNullOrUndefined(p)&&y>p?this.applyMask(!0,p+""):!this.isNullOrUndefined(l)&&y<l?this.applyMask(!0,l+""):(o>0&&("0"==f&&g.length<o?f+=r+"0".repeat(o-1)+g:f+=r+g),(v&&i&&!(0==y)?"-":"")+s+f+a)},e.prototype.clearMask=function(e){if(this.isNullable()&&""===e)return null;var t=(e||"0").replace(this.options.prefix,"").replace(this.options.suffix,"");return this.options.thousands&&(t=t.replace(new RegExp("\\"+this.options.thousands,"g"),"")),this.options.decimal&&(t=t.replace(this.options.decimal,".")),this.PER_AR_NUMBER.forEach((function(e,n){var i=new RegExp(n,"g");t=t.replace(i,e)})),parseFloat(t)},e.prototype.changeToNegative=function(){this.options.allowNegative&&""!=this.rawValue&&"-"!=this.rawValue.charAt(0)&&0!=this.value&&(this.rawValue=this.applyMask(!1,"-"+this.rawValue))},e.prototype.changeToPositive=function(){this.rawValue=this.applyMask(!1,this.rawValue.replace("-",""))},e.prototype.removeNumber=function(e){if(this.isNullable()&&0==this.value)this.rawValue=null;else{var t=this.inputSelection.selectionEnd,n=this.inputSelection.selectionStart;n>this.rawValue.length-this.options.suffix.length&&(t=this.rawValue.length-this.options.suffix.length,n=this.rawValue.length-this.options.suffix.length);var i=this.rawValue.substr(n-1,1).match(/\d/)?0:-1;8==e&&n-1==0&&!this.rawValue.substr(n,1).match(/\d/)||(46==e||63272==e)&&0===n&&!this.rawValue.substr(n+1,1).match(/\d/)?i=1:46!=e&&63272!=e||0===n||this.rawValue.substr(n-1,1).match(/\d/)||(i=0),t=46==e||63272==e?t+1:t,n=8==e?n-1:n,this.rawValue=this.rawValue.substring(0,n)+this.rawValue.substring(t,this.rawValue.length),this.updateFieldValue(n+i)}},e.prototype.updateFieldValue=function(e){var t=this.applyMask(!1,this.rawValue||"");e=null==e?this.rawValue.length:e,this.inputManager.updateValueAndCursor(t,this.rawValue.length,e)},e.prototype.updateOptions=function(e){var t=this.value;this.options=e,this.value=t},e.prototype.prefixLength=function(){return this.options.prefix.length},e.prototype.isNullable=function(){return this.options.nullable},Object.defineProperty(e.prototype,"canInputMoreNumbers",{get:function(){return this.inputManager.canInputMoreNumbers},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"inputSelection",{get:function(){return this.inputManager.inputSelection},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"rawValue",{get:function(){return this.inputManager.rawValue},set:function(e){this.inputManager.rawValue=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"storedRawValue",{get:function(){return this.inputManager.storedRawValue},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"value",{get:function(){return this.clearMask(this.rawValue)},set:function(e){this.rawValue=this.applyMask(!0,""+e)},enumerable:!0,configurable:!0}),e.prototype.isNullOrUndefined=function(e){return null==e},e}(),l=function(){function e(e,t){this.inputService=new u(e,t)}return e.prototype.handleCut=function(e){var t=this;setTimeout((function(){t.inputService.updateFieldValue(),t.setValue(t.inputService.value),t.onModelChange(t.inputService.value)}),0)},e.prototype.handleInput=function(e){var t=this.inputService.rawValue.charCodeAt(this.inputService.rawValue.length-1),n=this.inputService.rawValue.length,i=this.inputService.inputSelection.selectionEnd,r=this.inputService.storedRawValue.length;if(this.inputService.rawValue=this.inputService.storedRawValue,n==i&&1==Math.abs(n-r)){if(n<r&&this.inputService.removeNumber(8),n>r)switch(t){case 43:this.inputService.changeToPositive();break;case 45:this.inputService.changeToNegative();break;default:if(!this.inputService.canInputMoreNumbers)return;this.inputService.addNumber(t)}this.setCursorPosition(e),this.onModelChange(this.inputService.value)}else this.setCursorPosition(e)},e.prototype.handleKeydown=function(e){var t=e.which||e.charCode||e.keyCode;if(8==t||46==t||63272==t){e.preventDefault();var n=Math.abs(this.inputService.inputSelection.selectionEnd-this.inputService.inputSelection.selectionStart);0==n&&(this.inputService.removeNumber(t),this.onModelChange(this.inputService.value)),n>=this.inputService.rawValue.length-this.inputService.prefixLength()&&this.clearValue()}},e.prototype.clearValue=function(){this.setValue(this.inputService.isNullable()?null:0),this.onModelChange(this.inputService.value)},e.prototype.handleKeypress=function(e){var t=e.which||e.charCode||e.keyCode;if(97!==t||!e.ctrlKey){switch(t){case void 0:case 9:case 13:case 37:case 39:return;case 43:this.inputService.changeToPositive();break;case 45:this.inputService.changeToNegative();break;default:if(this.inputService.canInputMoreNumbers)Math.abs(this.inputService.inputSelection.selectionEnd-this.inputService.inputSelection.selectionStart)==this.inputService.rawValue.length&&this.setValue(null),this.inputService.addNumber(t)}e.preventDefault(),this.onModelChange(this.inputService.value)}},e.prototype.handlePaste=function(e){var t=this;setTimeout((function(){t.inputService.updateFieldValue(),t.setValue(t.inputService.value),t.onModelChange(t.inputService.value)}),1)},e.prototype.updateOptions=function(e){this.inputService.updateOptions(e)},e.prototype.getOnModelChange=function(){return this.onModelChange},e.prototype.setOnModelChange=function(e){this.onModelChange=e},e.prototype.getOnModelTouched=function(){return this.onModelTouched},e.prototype.setOnModelTouched=function(e){this.onModelTouched=e},e.prototype.setValue=function(e){this.inputService.value=e},e.prototype.setCursorPosition=function(e){setTimeout((function(){e.target.setSelectionRange(e.target.value.length,e.target.value.length)}),0)},e}(),p={provide:n.NG_VALUE_ACCESSOR,useExisting:t.forwardRef((function(){return h})),multi:!0},h=function(){function e(e,t,n){this.currencyMaskConfig=e,this.elementRef=t,this.keyValueDiffers=n,this.options={},this.optionsTemplate={align:"right",allowNegative:!0,allowZero:!0,decimal:".",precision:2,prefix:"$ ",suffix:"",thousands:",",nullable:!1},e&&(this.optionsTemplate=e),this.keyValueDiffer=n.find({}).create()}return e.prototype.ngAfterViewInit=function(){this.elementRef.nativeElement.style.textAlign=this.options&&this.options.align?this.options.align:this.optionsTemplate.align},e.prototype.ngDoCheck=function(){this.keyValueDiffer.diff(this.options)&&(this.elementRef.nativeElement.style.textAlign=this.options.align?this.options.align:this.optionsTemplate.align,this.inputHandler.updateOptions(Object.assign({},this.optionsTemplate,this.options)))},e.prototype.ngOnInit=function(){this.inputHandler=new l(this.elementRef.nativeElement,Object.assign({},this.optionsTemplate,this.options))},e.prototype.handleBlur=function(e){this.inputHandler.getOnModelTouched().apply(e)},e.prototype.handleCut=function(e){this.isChromeAndroid()||this.inputHandler.handleCut(e)},e.prototype.handleInput=function(e){this.isChromeAndroid()&&this.inputHandler.handleInput(e)},e.prototype.handleKeydown=function(e){this.isChromeAndroid()||this.inputHandler.handleKeydown(e)},e.prototype.handleKeypress=function(e){this.isChromeAndroid()||this.inputHandler.handleKeypress(e)},e.prototype.handlePaste=function(e){this.isChromeAndroid()||this.inputHandler.handlePaste(e)},e.prototype.isChromeAndroid=function(){return/chrome/i.test(navigator.userAgent)&&/android/i.test(navigator.userAgent)},e.prototype.registerOnChange=function(e){this.inputHandler.setOnModelChange(e)},e.prototype.registerOnTouched=function(e){this.inputHandler.setOnModelTouched(e)},e.prototype.setDisabledState=function(e){this.elementRef.nativeElement.disabled=e},e.prototype.writeValue=function(e){this.inputHandler.setValue(e)},e.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Optional},{type:t.Inject,args:[s]}]},{type:t.ElementRef},{type:t.KeyValueDiffers}]},r([t.Input()],e.prototype,"options",void 0),r([t.HostListener("blur",["$event"])],e.prototype,"handleBlur",null),r([t.HostListener("cut",["$event"])],e.prototype,"handleCut",null),r([t.HostListener("input",["$event"])],e.prototype,"handleInput",null),r([t.HostListener("keydown",["$event"])],e.prototype,"handleKeydown",null),r([t.HostListener("keypress",["$event"])],e.prototype,"handleKeypress",null),r([t.HostListener("paste",["$event"])],e.prototype,"handlePaste",null),e=r([t.Directive({selector:"[currencyMask]",providers:[p]}),o(0,t.Optional()),o(0,t.Inject(s))],e)}(),c=function(){function e(){}var o;return o=e,e.forRoot=function(e){return{ngModule:o,providers:[{provide:s,useValue:e}]}},e=o=r([t.NgModule({imports:[i.CommonModule,n.FormsModule],declarations:[h],exports:[h]})],e)}();e.CURRENCYMASKDIRECTIVE_VALUE_ACCESSOR=p,e.CurrencyMaskDirective=h,e.NgxCurrencyModule=c,e.ɵa=s,Object.defineProperty(e,"__esModule",{value:!0})})); | ||
//# sourceMappingURL=ngx-currency.umd.min.js.map |
@@ -5,2 +5,11 @@ # Changelog | ||
### [2.2.3](https://github.com/nbfontana/ngx-currency/compare/v2.2.2...v2.2.3) (2020-04-14) | ||
### Bug Fixes | ||
* Delete button not clearing the value entirely. ([dfb7518](https://github.com/nbfontana/ngx-currency/commit/dfb7518)) | ||
### [2.2.2](https://github.com/nbfontana/ngx-currency/compare/v2.2.1...v2.2.2) (2020-01-24) | ||
@@ -7,0 +16,0 @@ |
@@ -129,10 +129,9 @@ import { InputManager } from "./input.manager"; | ||
let move = this.rawValue.substr(selectionStart - 1, 1).match(/\d/) ? 0 : -1; | ||
if ((keyCode == 8 && | ||
selectionStart - 1 === 0 && | ||
!(this.rawValue.substr(selectionStart, 1).match(/\d/))) || | ||
((keyCode == 46 || keyCode == 63272) && | ||
selectionStart === 0 && | ||
!(this.rawValue.substr(selectionStart + 1, 1).match(/\d/)))) { | ||
if ((keyCode == 8 && selectionStart - 1 === 0 && !(this.rawValue.substr(selectionStart, 1).match(/\d/))) || | ||
((keyCode == 46 || keyCode == 63272) && selectionStart === 0 && !(this.rawValue.substr(selectionStart + 1, 1).match(/\d/)))) { | ||
move = 1; | ||
} | ||
else if ((keyCode == 46 || keyCode == 63272) && selectionStart !== 0 && !(this.rawValue.substr(selectionStart - 1, 1).match(/\d/))) { | ||
move = 0; | ||
} | ||
; | ||
@@ -185,2 +184,2 @@ selectionEnd = keyCode == 46 || keyCode == 63272 ? selectionEnd + 1 : selectionEnd; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1jdXJyZW5jeS8iLCJzb3VyY2VzIjpbInNyYy9pbnB1dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUk3QyxNQUFNLE9BQU8sWUFBWTtJQTZCckIsWUFBb0IsZ0JBQXFCLEVBQVUsT0FBMkI7UUFBMUQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFLO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUE1QjlFLGtCQUFhLEdBQXdCLElBQUksR0FBRyxFQUFrQixDQUFDO1FBNkIzRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO0lBQ3JCLENBQUM7SUE3QkQsVUFBVTtRQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUV0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQVNELFNBQVMsQ0FBQyxPQUFlO1FBQ3JCLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FB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Q0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxLQUFhO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxLQUFVO1FBQ2hDLE9BQU8sS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxDQUFDO0lBQ2pELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5wdXRNYW5hZ2VyfSBmcm9tIFwiLi9pbnB1dC5tYW5hZ2VyXCI7XG5pbXBvcnQge0N1cnJlbmN5TWFza0NvbmZpZ30gZnJvbSBcIi4vY3VycmVuY3ktbWFzay5jb25maWdcIjtcblxuXG5leHBvcnQgY2xhc3MgSW5wdXRTZXJ2aWNlIHtcbiAgICBQRVJfQVJfTlVNQkVSOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuICAgIGluaXRpYWxpemUoKSB7XG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNkYwXCIsIFwiMFwiKTtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2RjFcIiwgXCIxXCIpO1xuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDZGMlwiLCBcIjJcIik7XG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNkYzXCIsIFwiM1wiKTtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2RjRcIiwgXCI0XCIpO1xuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDZGNVwiLCBcIjVcIik7XG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNkY2XCIsIFwiNlwiKTtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2RjdcIiwgXCI3XCIpO1xuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDZGOFwiLCBcIjhcIik7XG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNkY5XCIsIFwiOVwiKTtcblxuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDY2MFwiLCBcIjBcIik7XG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNjYxXCIsIFwiMVwiKTtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2NjJcIiwgXCIyXCIpO1xuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDY2M1wiLCBcIjNcIik7XG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNjY0XCIsIFwiNFwiKTtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2NjVcIiwgXCI1XCIpO1xuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDY2NlwiLCBcIjZcIik7XG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNjY3XCIsIFwiN1wiKTtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2NjhcIiwgXCI4XCIpO1xuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDY2OVwiLCBcIjlcIik7XG4gICAgfVxuXG4gICAgaW5wdXRNYW5hZ2VyOiBJbnB1dE1hbmFnZXI7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0bWxJbnB1dEVsZW1lbnQ6IGFueSwgcHJpdmF0ZSBvcHRpb25zOiBDdXJyZW5jeU1hc2tDb25maWcpIHtcbiAgICAgICAgdGhpcy5pbnB1dE1hbmFnZXIgPSBuZXcgSW5wdXRNYW5hZ2VyKGh0bWxJbnB1dEVsZW1lbnQpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemUoKVxuICAgIH1cblxuICAgIGFkZE51bWJlcihrZXlDb2RlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgbGV0IGtleUNoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGtleUNvZGUpO1xuXG4gICAgICAgIGlmICghdGhpcy5yYXdWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5yYXdWYWx1ZSA9IHRoaXMuYXBwbHlNYXNrKGZhbHNlLCBrZXlDaGFyKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRmllbGRWYWx1ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IHNlbGVjdGlvblN0YXJ0ID0gdGhpcy5pbnB1dFNlbGVjdGlvbi5zZWxlY3Rpb25TdGFydDtcbiAgICAgICAgICAgIGxldCBzZWxlY3Rpb25FbmQgPSB0aGlzLmlucHV0U2VsZWN0aW9uLnNlbGVjdGlvbkVuZDtcbiAgICAgICAgICAgIHRoaXMucmF3VmFsdWUgPSB0aGlzLnJhd1ZhbHVlLnN1YnN0cmluZygwLCBzZWxlY3Rpb25TdGFydCkgKyBrZXlDaGFyICsgdGhpcy5yYXdWYWx1ZS5zdWJzdHJpbmcoc2VsZWN0aW9uRW5kLCB0aGlzLnJhd1ZhbHVlLmxlbmd0aCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZpZWxkVmFsdWUoc2VsZWN0aW9uU3RhcnQgKyAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFwcGx5TWFzayhpc051bWJlcjogYm9vbGVhbiwgcmF3VmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCB7YWxsb3dOZWdhdGl2ZSwgZGVjaW1hbCwgcHJlY2lzaW9uLCBwcmVmaXgsIHN1ZmZpeCwgdGhvdXNhbmRzLCBudWxsYWJsZSwgbWluLCBtYXh9ID0gdGhpcy5vcHRpb25zO1xuICAgICAgICByYXdWYWx1ZSA9IGlzTnVtYmVyID8gbmV3IE51bWJlcihyYXdWYWx1ZSkudG9GaXhlZChwcmVjaXNpb24pIDogcmF3VmFsdWU7XG4gICAgICAgIGxldCBvbmx5TnVtYmVycyA9IHJhd1ZhbHVlLnJlcGxhY2UoL1teMC05XFx1MDY2MC1cXHUwNjY5XFx1MDZGMC1cXHUwNkY5XS9nLCBcIlwiKTtcblxuICAgICAgICBpZiAoIW9ubHlOdW1iZXJzKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpbnRlZ2VyUGFydCA9IG9ubHlOdW1iZXJzLnNsaWNlKDAsIG9ubHlOdW1iZXJzLmxlbmd0aCAtIHByZWNpc2lvbilcbiAgICAgICAgICAucmVwbGFjZSgvXlxcdTA2NjAqL2csIFwiXCIpXG4gICAgICAgICAgLnJlcGxhY2UoL15cXHUwNkYwKi9nLCBcIlwiKVxuICAgICAgICAgIC5yZXBsYWNlKC9eMCovZywgXCJcIik7XG5cbiAgICAgICAgaWYgKGludGVnZXJQYXJ0ID09IFwiXCIpIHtcbiAgICAgICAgICAgIGludGVnZXJQYXJ0ID0gXCIwXCI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGludGVnZXJWYWx1ZSA9IHBhcnNlSW50KGludGVnZXJQYXJ0KTtcblxuICAgICAgICBpbnRlZ2VyUGFydCA9IGludGVnZXJQYXJ0LnJlcGxhY2UoL1xcQig/PShbMC05XFx1MDY2MC1cXHUwNjY5XFx1MDZGMC1cXHUwNkY5XXszfSkrKD8hWzAtOVxcdTA2NjAtXFx1MDY2OVxcdTA2RjAtXFx1MDZGOV0pKS9nLCB0aG91c2FuZHMpO1xuICAgICAgICBpZiAodGhvdXNhbmRzICYmIGludGVnZXJQYXJ0LnN0YXJ0c1dpdGgodGhvdXNhbmRzKSkge1xuICAgICAgICAgICAgaW50ZWdlclBhcnQgPSBpbnRlZ2VyUGFydC5zdWJzdHJpbmcoMSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbmV3UmF3VmFsdWUgPSBpbnRlZ2VyUGFydDtcbiAgICAgICAgbGV0IGRlY2ltYWxQYXJ0ID0gb25seU51bWJlcnMuc2xpY2Uob25seU51bWJlcnMubGVuZ3RoIC0gcHJlY2lzaW9uKTtcbiAgICAgICAgbGV0IGRlY2ltYWxWYWx1ZSA9IHBhcnNlSW50KGRlY2ltYWxQYXJ0KSB8fCAwO1xuXG4gICAgICAgIGxldCBpc05lZ2F0aXZlID0gcmF3VmFsdWUuaW5kZXhPZihcIi1cIikgPiAtMTtcblxuICAgICAgICAvLyBFbnN1cmUgbWF4IGlzIGF0IGxlYXN0IGFzIGxhcmdlIGFzIG1pbi5cbiAgICAgICAgbWF4ID0gKHRoaXMuaXNOdWxsT3JVbmRlZmluZWQobWF4KSB8fCB0aGlzLmlzTnVsbE9yVW5kZWZpbmVkKG1pbikpID8gbWF4IDogTWF0aC5tYXgobWF4LCBtaW4pO1xuXG4gICAgICAgIC8vIFJlc3RyaWN0IHRvIHRoZSBtaW4gYW5kIG1heCB2YWx1ZXMuXG4gICAgICAgIGxldCBuZXdWYWx1ZSA9IGludGVnZXJWYWx1ZSArIChkZWNpbWFsVmFsdWUgLyAxMDApO1xuICAgICAgICBuZXdWYWx1ZSA9IGlzTmVnYXRpdmUgPyAtbmV3VmFsdWUgOiBuZXdWYWx1ZTtcbiAgICAgICAgaWYgKCF0aGlzLmlzTnVsbE9yVW5kZWZpbmVkKG1heCkgJiYgbmV3VmFsdWUgPiBtYXgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFwcGx5TWFzayh0cnVlLCBtYXggKyAnJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNOdWxsT3JVbmRlZmluZWQobWluKSAmJiBuZXdWYWx1ZSA8IG1pbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlNYXNrKHRydWUsIG1pbiArICcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcmVjaXNpb24gPiAwKSB7XG4gICAgICAgICAgICBpZiAobmV3UmF3VmFsdWUgPT0gXCIwXCIgJiYgZGVjaW1hbFBhcnQubGVuZ3RoIDwgcHJlY2lzaW9uKSB7XG4gICAgICAgICAgICAgICAgbmV3UmF3VmFsdWUgKz0gZGVjaW1hbCArIFwiMFwiLnJlcGVhdChwcmVjaXNpb24gLSAxKSArIGRlY2ltYWxQYXJ0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdSYXdWYWx1ZSArPSBkZWNpbWFsICsgZGVjaW1hbFBhcnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaXNaZXJvID0gbmV3VmFsdWUgPT0gMDtcbiAgICAgICAgbGV0IG9wZXJhdG9yID0gKGlzTmVnYXRpdmUgJiYgYWxsb3dOZWdhdGl2ZSAmJiAhaXNaZXJvKSA/IFwiLVwiIDogXCJcIjtcbiAgICAgICAgcmV0dXJuIG9wZXJhdG9yICsgcHJlZml4ICsgbmV3UmF3VmFsdWUgKyBzdWZmaXg7XG4gICAgfVxuXG4gICAgY2xlYXJNYXNrKHJhd1ZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5pc051bGxhYmxlKCkgJiYgcmF3VmFsdWUgPT09IFwiXCIpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgICBsZXQgdmFsdWUgPSAocmF3VmFsdWUgfHwgXCIwXCIpLnJlcGxhY2UodGhpcy5vcHRpb25zLnByZWZpeCwgXCJcIikucmVwbGFjZSh0aGlzLm9wdGlvbnMuc3VmZml4LCBcIlwiKTtcblxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnRob3VzYW5kcykge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKG5ldyBSZWdFeHAoXCJcXFxcXCIgKyB0aGlzLm9wdGlvbnMudGhvdXNhbmRzLCBcImdcIiksIFwiXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWNpbWFsKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UodGhpcy5vcHRpb25zLmRlY2ltYWwsIFwiLlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5mb3JFYWNoKCh2YWw6IHN0cmluZywga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlID0gbmV3IFJlZ0V4cChrZXksIFwiZ1wiKTtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShyZSwgdmFsKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBjaGFuZ2VUb05lZ2F0aXZlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmFsbG93TmVnYXRpdmUgJiYgdGhpcy5yYXdWYWx1ZSAhPSBcIlwiICYmIHRoaXMucmF3VmFsdWUuY2hhckF0KDApICE9IFwiLVwiICYmIHRoaXMudmFsdWUgIT0gMCkge1xuICAgICAgICAgICAgLy8gQXBwbHkgdGhlIG1hc2sgdG8gZW5zdXJlIHRoZSBtaW4gYW5kIG1heCB2YWx1ZXMgYXJlIGVuZm9yY2VkLlxuICAgICAgICAgICAgdGhpcy5yYXdWYWx1ZSA9IHRoaXMuYXBwbHlNYXNrKGZhbHNlLCBcIi1cIiArIHRoaXMucmF3VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hhbmdlVG9Qb3NpdGl2ZSgpOiB2b2lkIHtcbiAgICAgICAgICAgIC8vIEFwcGx5IHRoZSBtYXNrIHRvIGVuc3VyZSB0aGUgbWluIGFuZCBtYXggdmFsdWVzIGFyZSBlbmZvcmNlZC5cbiAgICAgICAgICAgIHRoaXMucmF3VmFsdWUgPSB0aGlzLmFwcGx5TWFzayhmYWxzZSwgdGhpcy5yYXdWYWx1ZS5yZXBsYWNlKFwiLVwiLCBcIlwiKSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlTnVtYmVyKGtleUNvZGU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc051bGxhYmxlKCkgJiYgdGhpcy52YWx1ZSA9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnJhd1ZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzZWxlY3Rpb25FbmQgPSB0aGlzLmlucHV0U2VsZWN0aW9uLnNlbGVjdGlvbkVuZDtcbiAgICAgICAgbGV0IHNlbGVjdGlvblN0YXJ0ID0gdGhpcy5pbnB1dFNlbGVjdGlvbi5zZWxlY3Rpb25TdGFydDtcblxuICAgICAgICBpZiAoc2VsZWN0aW9uU3RhcnQgPiB0aGlzLnJhd1ZhbHVlLmxlbmd0aCAtIHRoaXMub3B0aW9ucy5zdWZmaXgubGVuZ3RoKSB7XG4gICAgICAgICAgICBzZWxlY3Rpb25FbmQgPSB0aGlzLnJhd1ZhbHVlLmxlbmd0aCAtIHRoaXMub3B0aW9ucy5zdWZmaXgubGVuZ3RoO1xuICAgICAgICAgICAgc2VsZWN0aW9uU3RhcnQgPSB0aGlzLnJhd1ZhbHVlLmxlbmd0aCAtIHRoaXMub3B0aW9ucy5zdWZmaXgubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICBsZXQgbW92ZSA9IHRoaXMucmF3VmFsdWUuc3Vic3RyKHNlbGVjdGlvblN0YXJ0IC0gMSwgMSkubWF0Y2goL1xcZC8pID8gMCA6IC0xO1xuICAgIGlmICgoXG4gICAgICAgICAga2V5Q29kZSA9PSA4ICYmXG4gICAgICAgICAgc2VsZWN0aW9uU3RhcnQgLSAxID09PSAwICYmXG4gICAgICAgICAgISh0aGlzLnJhd1ZhbHVlLnN1YnN0cihzZWxlY3Rpb25TdGFydCwgMSkubWF0Y2goL1xcZC8pKVxuICAgICAgICApIHx8XG4gICAgICAgIChcbiAgICAgICAgICAoa2V5Q29kZSA9PSA0NiB8fCBrZXlDb2RlID09IDYzMjcyKSAmJlxuICAgICAgICAgIHNlbGVjdGlvblN0YXJ0ID09PSAwICYmXG4gICAgICAgICAgISh0aGlzLnJhd1ZhbHVlLnN1YnN0cihzZWxlY3Rpb25TdGFydCArIDEsIDEpLm1hdGNoKC9cXGQvKSlcbiAgICAgICAgKVxuICAgICkge1xuICAgICAgbW92ZSA9IDE7XG4gICAgfTtcbiAgICBzZWxlY3Rpb25FbmQgPSBrZXlDb2RlID09IDQ2IHx8IGtleUNvZGUgPT0gNjMyNzIgPyBzZWxlY3Rpb25FbmQgKyAxIDogc2VsZWN0aW9uRW5kO1xuICAgIHNlbGVjdGlvblN0YXJ0ID0ga2V5Q29kZSA9PSA4ID8gc2VsZWN0aW9uU3RhcnQgLSAxIDogc2VsZWN0aW9uU3RhcnQ7XG4gICAgdGhpcy5yYXdWYWx1ZSA9IHRoaXMucmF3VmFsdWUuc3Vic3RyaW5nKDAsIHNlbGVjdGlvblN0YXJ0KSArIHRoaXMucmF3VmFsdWUuc3Vic3RyaW5nKHNlbGVjdGlvbkVuZCwgdGhpcy5yYXdWYWx1ZS5sZW5ndGgpO1xuICAgIHRoaXMudXBkYXRlRmllbGRWYWx1ZShzZWxlY3Rpb25TdGFydCArIG1vdmUpO1xuICB9XG5cbiAgICB1cGRhdGVGaWVsZFZhbHVlKHNlbGVjdGlvblN0YXJ0PzogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGxldCBuZXdSYXdWYWx1ZSA9IHRoaXMuYXBwbHlNYXNrKGZhbHNlLCB0aGlzLnJhd1ZhbHVlIHx8IFwiXCIpO1xuICAgICAgICBzZWxlY3Rpb25TdGFydCA9IHNlbGVjdGlvblN0YXJ0ID09IHVuZGVmaW5lZCA/IHRoaXMucmF3VmFsdWUubGVuZ3RoIDogc2VsZWN0aW9uU3RhcnQ7XG4gICAgICAgIHRoaXMuaW5wdXRNYW5hZ2VyLnVwZGF0ZVZhbHVlQW5kQ3Vyc29yKG5ld1Jhd1ZhbHVlLCB0aGlzLnJhd1ZhbHVlLmxlbmd0aCwgc2VsZWN0aW9uU3RhcnQpO1xuICAgIH1cblxuICAgIHVwZGF0ZU9wdGlvbnMob3B0aW9uczogYW55KTogdm9pZCB7XG4gICAgICAgIGxldCB2YWx1ZTogbnVtYmVyID0gdGhpcy52YWx1ZTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByZWZpeExlbmd0aCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLnByZWZpeC5sZW5ndGg7XG4gICAgfVxuXG4gICAgaXNOdWxsYWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5udWxsYWJsZTtcbiAgICB9XG5cbiAgICBnZXQgY2FuSW5wdXRNb3JlTnVtYmVycygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRNYW5hZ2VyLmNhbklucHV0TW9yZU51bWJlcnM7XG4gICAgfVxuXG4gICAgZ2V0IGlucHV0U2VsZWN0aW9uKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlucHV0TWFuYWdlci5pbnB1dFNlbGVjdGlvbjtcbiAgICB9XG5cbiAgICBnZXQgcmF3VmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRNYW5hZ2VyLnJhd1ZhbHVlO1xuICAgIH1cblxuICAgIHNldCByYXdWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuaW5wdXRNYW5hZ2VyLnJhd1ZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHN0b3JlZFJhd1ZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlucHV0TWFuYWdlci5zdG9yZWRSYXdWYWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgdmFsdWUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xlYXJNYXNrKHRoaXMucmF3VmFsdWUpO1xuICAgIH1cblxuICAgIHNldCB2YWx1ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMucmF3VmFsdWUgPSB0aGlzLmFwcGx5TWFzayh0cnVlLCBcIlwiICsgdmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNOdWxsT3JVbmRlZmluZWQodmFsdWU6IGFueSkge1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZDtcbiAgICB9XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1jdXJyZW5jeS8iLCJzb3VyY2VzIjpbInNyYy9pbnB1dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUkvQyxNQUFNLE9BQU8sWUFBWTtJQTZCckIsWUFBb0IsZ0JBQXFCLEVBQVUsT0FBMkI7UUFBMUQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFLO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUE1QjlFLGtCQUFhLEdBQXdCLElBQUksR0FBRyxFQUFrQixDQUFDO1FBNkIzRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO0lBQ3JCLENBQUM7SUE3QkQsVUFBVTtRQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUV0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQVNELFNBQVMsQ0FBQyxPQUFlO1FBQ3JCLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FB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LElBQ0ksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLGNBQWMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDcEcsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLElBQUksT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLGNBQWMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGNBQWMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDN0g7WUFDRSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1NBQ1o7YUFBTSxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsSUFBSSxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksY0FBYyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsY0FBYyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNsSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1NBQ1o7UUFBQSxDQUFDO1FBQ0YsWUFBWSxHQUFHLE9BQU8sSUFBSSxFQUFFLElBQUksT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO1FBQ25GLGNBQWMsR0FBRyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7UUFDcEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekgsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsY0FBdUI7UUFDcEMsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3RCxjQUFjLEdBQUcsY0FBYyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUNyRixJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQVk7UUFDdEIsSUFBSSxLQUFLLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRUQsWUFBWTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxVQUFVO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDZCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFJLFFBQVEsQ0FBQyxLQUFhO1FBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsS0FBYTtRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU8saUJBQWlCLENBQUMsS0FBVTtRQUNoQyxPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQztJQUNqRCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnB1dE1hbmFnZXIgfSBmcm9tIFwiLi9pbnB1dC5tYW5hZ2VyXCI7XG5pbXBvcnQgeyBDdXJyZW5jeU1hc2tDb25maWcgfSBmcm9tIFwiLi9jdXJyZW5jeS1tYXNrLmNvbmZpZ1wiO1xuXG5cbmV4cG9ydCBjbGFzcyBJbnB1dFNlcnZpY2Uge1xuICAgIFBFUl9BUl9OVU1CRVI6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXG4gICAgaW5pdGlhbGl6ZSgpIHtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2RjBcIiwgXCIwXCIpO1xuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDZGMVwiLCBcIjFcIik7XG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNkYyXCIsIFwiMlwiKTtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2RjNcIiwgXCIzXCIpO1xuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDZGNFwiLCBcIjRcIik7XG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNkY1XCIsIFwiNVwiKTtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2RjZcIiwgXCI2XCIpO1xuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDZGN1wiLCBcIjdcIik7XG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNkY4XCIsIFwiOFwiKTtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2RjlcIiwgXCI5XCIpO1xuXG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNjYwXCIsIFwiMFwiKTtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2NjFcIiwgXCIxXCIpO1xuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDY2MlwiLCBcIjJcIik7XG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNjYzXCIsIFwiM1wiKTtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2NjRcIiwgXCI0XCIpO1xuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDY2NVwiLCBcIjVcIik7XG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNjY2XCIsIFwiNlwiKTtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2NjdcIiwgXCI3XCIpO1xuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDY2OFwiLCBcIjhcIik7XG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNjY5XCIsIFwiOVwiKTtcbiAgICB9XG5cbiAgICBpbnB1dE1hbmFnZXI6IElucHV0TWFuYWdlcjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHRtbElucHV0RWxlbWVudDogYW55LCBwcml2YXRlIG9wdGlvbnM6IEN1cnJlbmN5TWFza0NvbmZpZykge1xuICAgICAgICB0aGlzLmlucHV0TWFuYWdlciA9IG5ldyBJbnB1dE1hbmFnZXIoaHRtbElucHV0RWxlbWVudCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZSgpXG4gICAgfVxuXG4gICAgYWRkTnVtYmVyKGtleUNvZGU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBsZXQga2V5Q2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoa2V5Q29kZSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnJhd1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnJhd1ZhbHVlID0gdGhpcy5hcHBseU1hc2soZmFsc2UsIGtleUNoYXIpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGaWVsZFZhbHVlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgc2VsZWN0aW9uU3RhcnQgPSB0aGlzLmlucHV0U2VsZWN0aW9uLnNlbGVjdGlvblN0YXJ0O1xuICAgICAgICAgICAgbGV0IHNlbGVjdGlvbkVuZCA9IHRoaXMuaW5wdXRTZWxlY3Rpb24uc2VsZWN0aW9uRW5kO1xuICAgICAgICAgICAgdGhpcy5yYXdWYWx1ZSA9IHRoaXMucmF3VmFsdWUuc3Vic3RyaW5nKDAsIHNlbGVjdGlvblN0YXJ0KSArIGtleUNoYXIgKyB0aGlzLnJhd1ZhbHVlLnN1YnN0cmluZyhzZWxlY3Rpb25FbmQsIHRoaXMucmF3VmFsdWUubGVuZ3RoKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRmllbGRWYWx1ZShzZWxlY3Rpb25TdGFydCArIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXBwbHlNYXNrKGlzTnVtYmVyOiBib29sZWFuLCByYXdWYWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHsgYWxsb3dOZWdhdGl2ZSwgZGVjaW1hbCwgcHJlY2lzaW9uLCBwcmVmaXgsIHN1ZmZpeCwgdGhvdXNhbmRzLCBudWxsYWJsZSwgbWluLCBtYXggfSA9IHRoaXMub3B0aW9ucztcbiAgICAgICAgcmF3VmFsdWUgPSBpc051bWJlciA/IG5ldyBOdW1iZXIocmF3VmFsdWUpLnRvRml4ZWQocHJlY2lzaW9uKSA6IHJhd1ZhbHVlO1xuICAgICAgICBsZXQgb25seU51bWJlcnMgPSByYXdWYWx1ZS5yZXBsYWNlKC9bXjAtOVxcdTA2NjAtXFx1MDY2OVxcdTA2RjAtXFx1MDZGOV0vZywgXCJcIik7XG5cbiAgICAgICAgaWYgKCFvbmx5TnVtYmVycykge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaW50ZWdlclBhcnQgPSBvbmx5TnVtYmVycy5zbGljZSgwLCBvbmx5TnVtYmVycy5sZW5ndGggLSBwcmVjaXNpb24pXG4gICAgICAgICAgICAucmVwbGFjZSgvXlxcdTA2NjAqL2csIFwiXCIpXG4gICAgICAgICAgICAucmVwbGFjZSgvXlxcdTA2RjAqL2csIFwiXCIpXG4gICAgICAgICAgICAucmVwbGFjZSgvXjAqL2csIFwiXCIpO1xuXG4gICAgICAgIGlmIChpbnRlZ2VyUGFydCA9PSBcIlwiKSB7XG4gICAgICAgICAgICBpbnRlZ2VyUGFydCA9IFwiMFwiO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpbnRlZ2VyVmFsdWUgPSBwYXJzZUludChpbnRlZ2VyUGFydCk7XG5cbiAgICAgICAgaW50ZWdlclBhcnQgPSBpbnRlZ2VyUGFydC5yZXBsYWNlKC9cXEIoPz0oWzAtOVxcdTA2NjAtXFx1MDY2OVxcdTA2RjAtXFx1MDZGOV17M30pKyg/IVswLTlcXHUwNjYwLVxcdTA2NjlcXHUwNkYwLVxcdTA2RjldKSkvZywgdGhvdXNhbmRzKTtcbiAgICAgICAgaWYgKHRob3VzYW5kcyAmJiBpbnRlZ2VyUGFydC5zdGFydHNXaXRoKHRob3VzYW5kcykpIHtcbiAgICAgICAgICAgIGludGVnZXJQYXJ0ID0gaW50ZWdlclBhcnQuc3Vic3RyaW5nKDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG5ld1Jhd1ZhbHVlID0gaW50ZWdlclBhcnQ7XG4gICAgICAgIGxldCBkZWNpbWFsUGFydCA9IG9ubHlOdW1iZXJzLnNsaWNlKG9ubHlOdW1iZXJzLmxlbmd0aCAtIHByZWNpc2lvbik7XG4gICAgICAgIGxldCBkZWNpbWFsVmFsdWUgPSBwYXJzZUludChkZWNpbWFsUGFydCkgfHwgMDtcblxuICAgICAgICBsZXQgaXNOZWdhdGl2ZSA9IHJhd1ZhbHVlLmluZGV4T2YoXCItXCIpID4gLTE7XG5cbiAgICAgICAgLy8gRW5zdXJlIG1heCBpcyBhdCBsZWFzdCBhcyBsYXJnZSBhcyBtaW4uXG4gICAgICAgIG1heCA9ICh0aGlzLmlzTnVsbE9yVW5kZWZpbmVkKG1heCkgfHwgdGhpcy5pc051bGxPclVuZGVmaW5lZChtaW4pKSA/IG1heCA6IE1hdGgubWF4KG1heCwgbWluKTtcblxuICAgICAgICAvLyBSZXN0cmljdCB0byB0aGUgbWluIGFuZCBtYXggdmFsdWVzLlxuICAgICAgICBsZXQgbmV3VmFsdWUgPSBpbnRlZ2VyVmFsdWUgKyAoZGVjaW1hbFZhbHVlIC8gMTAwKTtcbiAgICAgICAgbmV3VmFsdWUgPSBpc05lZ2F0aXZlID8gLW5ld1ZhbHVlIDogbmV3VmFsdWU7XG4gICAgICAgIGlmICghdGhpcy5pc051bGxPclVuZGVmaW5lZChtYXgpICYmIG5ld1ZhbHVlID4gbWF4KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hcHBseU1hc2sodHJ1ZSwgbWF4ICsgJycpO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmlzTnVsbE9yVW5kZWZpbmVkKG1pbikgJiYgbmV3VmFsdWUgPCBtaW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFwcGx5TWFzayh0cnVlLCBtaW4gKyAnJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJlY2lzaW9uID4gMCkge1xuICAgICAgICAgICAgaWYgKG5ld1Jhd1ZhbHVlID09IFwiMFwiICYmIGRlY2ltYWxQYXJ0Lmxlbmd0aCA8IHByZWNpc2lvbikge1xuICAgICAgICAgICAgICAgIG5ld1Jhd1ZhbHVlICs9IGRlY2ltYWwgKyBcIjBcIi5yZXBlYXQocHJlY2lzaW9uIC0gMSkgKyBkZWNpbWFsUGFydDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3UmF3VmFsdWUgKz0gZGVjaW1hbCArIGRlY2ltYWxQYXJ0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGlzWmVybyA9IG5ld1ZhbHVlID09IDA7XG4gICAgICAgIGxldCBvcGVyYXRvciA9IChpc05lZ2F0aXZlICYmIGFsbG93TmVnYXRpdmUgJiYgIWlzWmVybykgPyBcIi1cIiA6IFwiXCI7XG4gICAgICAgIHJldHVybiBvcGVyYXRvciArIHByZWZpeCArIG5ld1Jhd1ZhbHVlICsgc3VmZml4O1xuICAgIH1cblxuICAgIGNsZWFyTWFzayhyYXdWYWx1ZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMuaXNOdWxsYWJsZSgpICYmIHJhd1ZhbHVlID09PSBcIlwiKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgbGV0IHZhbHVlID0gKHJhd1ZhbHVlIHx8IFwiMFwiKS5yZXBsYWNlKHRoaXMub3B0aW9ucy5wcmVmaXgsIFwiXCIpLnJlcGxhY2UodGhpcy5vcHRpb25zLnN1ZmZpeCwgXCJcIik7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy50aG91c2FuZHMpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShuZXcgUmVnRXhwKFwiXFxcXFwiICsgdGhpcy5vcHRpb25zLnRob3VzYW5kcywgXCJnXCIpLCBcIlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVjaW1hbCkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHRoaXMub3B0aW9ucy5kZWNpbWFsLCBcIi5cIik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuZm9yRWFjaCgodmFsOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZSA9IG5ldyBSZWdFeHAoa2V5LCBcImdcIik7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UocmUsIHZhbCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgY2hhbmdlVG9OZWdhdGl2ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5hbGxvd05lZ2F0aXZlICYmIHRoaXMucmF3VmFsdWUgIT0gXCJcIiAmJiB0aGlzLnJhd1ZhbHVlLmNoYXJBdCgwKSAhPSBcIi1cIiAmJiB0aGlzLnZhbHVlICE9IDApIHtcbiAgICAgICAgICAgIC8vIEFwcGx5IHRoZSBtYXNrIHRvIGVuc3VyZSB0aGUgbWluIGFuZCBtYXggdmFsdWVzIGFyZSBlbmZvcmNlZC5cbiAgICAgICAgICAgIHRoaXMucmF3VmFsdWUgPSB0aGlzLmFwcGx5TWFzayhmYWxzZSwgXCItXCIgKyB0aGlzLnJhd1ZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoYW5nZVRvUG9zaXRpdmUoKTogdm9pZCB7XG4gICAgICAgIC8vIEFwcGx5IHRoZSBtYXNrIHRvIGVuc3VyZSB0aGUgbWluIGFuZCBtYXggdmFsdWVzIGFyZSBlbmZvcmNlZC5cbiAgICAgICAgdGhpcy5yYXdWYWx1ZSA9IHRoaXMuYXBwbHlNYXNrKGZhbHNlLCB0aGlzLnJhd1ZhbHVlLnJlcGxhY2UoXCItXCIsIFwiXCIpKTtcbiAgICB9XG5cbiAgICByZW1vdmVOdW1iZXIoa2V5Q29kZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTnVsbGFibGUoKSAmJiB0aGlzLnZhbHVlID09IDApIHtcbiAgICAgICAgICAgIHRoaXMucmF3VmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHNlbGVjdGlvbkVuZCA9IHRoaXMuaW5wdXRTZWxlY3Rpb24uc2VsZWN0aW9uRW5kO1xuICAgICAgICBsZXQgc2VsZWN0aW9uU3RhcnQgPSB0aGlzLmlucHV0U2VsZWN0aW9uLnNlbGVjdGlvblN0YXJ0O1xuXG4gICAgICAgIGlmIChzZWxlY3Rpb25TdGFydCA+IHRoaXMucmF3VmFsdWUubGVuZ3RoIC0gdGhpcy5vcHRpb25zLnN1ZmZpeC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHNlbGVjdGlvbkVuZCA9IHRoaXMucmF3VmFsdWUubGVuZ3RoIC0gdGhpcy5vcHRpb25zLnN1ZmZpeC5sZW5ndGg7XG4gICAgICAgICAgICBzZWxlY3Rpb25TdGFydCA9IHRoaXMucmF3VmFsdWUubGVuZ3RoIC0gdGhpcy5vcHRpb25zLnN1ZmZpeC5sZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbW92ZSA9IHRoaXMucmF3VmFsdWUuc3Vic3RyKHNlbGVjdGlvblN0YXJ0IC0gMSwgMSkubWF0Y2goL1xcZC8pID8gMCA6IC0xO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAoa2V5Q29kZSA9PSA4ICYmIHNlbGVjdGlvblN0YXJ0IC0gMSA9PT0gMCAmJiAhKHRoaXMucmF3VmFsdWUuc3Vic3RyKHNlbGVjdGlvblN0YXJ0LCAxKS5tYXRjaCgvXFxkLykpKSB8fFxuICAgICAgICAgICAgKChrZXlDb2RlID09IDQ2IHx8IGtleUNvZGUgPT0gNjMyNzIpICYmIHNlbGVjdGlvblN0YXJ0ID09PSAwICYmICEodGhpcy5yYXdWYWx1ZS5zdWJzdHIoc2VsZWN0aW9uU3RhcnQgKyAxLCAxKS5tYXRjaCgvXFxkLykpKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIG1vdmUgPSAxO1xuICAgICAgICB9IGVsc2UgaWYgKChrZXlDb2RlID09IDQ2IHx8IGtleUNvZGUgPT0gNjMyNzIpICYmIHNlbGVjdGlvblN0YXJ0ICE9PSAwICYmICEodGhpcy5yYXdWYWx1ZS5zdWJzdHIoc2VsZWN0aW9uU3RhcnQgLSAxLCAxKS5tYXRjaCgvXFxkLykpKSB7XG4gICAgICAgICAgICBtb3ZlID0gMDtcbiAgICAgICAgfTtcbiAgICAgICAgc2VsZWN0aW9uRW5kID0ga2V5Q29kZSA9PSA0NiB8fCBrZXlDb2RlID09IDYzMjcyID8gc2VsZWN0aW9uRW5kICsgMSA6IHNlbGVjdGlvbkVuZDtcbiAgICAgICAgc2VsZWN0aW9uU3RhcnQgPSBrZXlDb2RlID09IDggPyBzZWxlY3Rpb25TdGFydCAtIDEgOiBzZWxlY3Rpb25TdGFydDtcbiAgICAgICAgdGhpcy5yYXdWYWx1ZSA9IHRoaXMucmF3VmFsdWUuc3Vic3RyaW5nKDAsIHNlbGVjdGlvblN0YXJ0KSArIHRoaXMucmF3VmFsdWUuc3Vic3RyaW5nKHNlbGVjdGlvbkVuZCwgdGhpcy5yYXdWYWx1ZS5sZW5ndGgpO1xuICAgICAgICB0aGlzLnVwZGF0ZUZpZWxkVmFsdWUoc2VsZWN0aW9uU3RhcnQgKyBtb3ZlKTtcbiAgICB9XG5cbiAgICB1cGRhdGVGaWVsZFZhbHVlKHNlbGVjdGlvblN0YXJ0PzogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGxldCBuZXdSYXdWYWx1ZSA9IHRoaXMuYXBwbHlNYXNrKGZhbHNlLCB0aGlzLnJhd1ZhbHVlIHx8IFwiXCIpO1xuICAgICAgICBzZWxlY3Rpb25TdGFydCA9IHNlbGVjdGlvblN0YXJ0ID09IHVuZGVmaW5lZCA/IHRoaXMucmF3VmFsdWUubGVuZ3RoIDogc2VsZWN0aW9uU3RhcnQ7XG4gICAgICAgIHRoaXMuaW5wdXRNYW5hZ2VyLnVwZGF0ZVZhbHVlQW5kQ3Vyc29yKG5ld1Jhd1ZhbHVlLCB0aGlzLnJhd1ZhbHVlLmxlbmd0aCwgc2VsZWN0aW9uU3RhcnQpO1xuICAgIH1cblxuICAgIHVwZGF0ZU9wdGlvbnMob3B0aW9uczogYW55KTogdm9pZCB7XG4gICAgICAgIGxldCB2YWx1ZTogbnVtYmVyID0gdGhpcy52YWx1ZTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByZWZpeExlbmd0aCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLnByZWZpeC5sZW5ndGg7XG4gICAgfVxuXG4gICAgaXNOdWxsYWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5udWxsYWJsZTtcbiAgICB9XG5cbiAgICBnZXQgY2FuSW5wdXRNb3JlTnVtYmVycygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRNYW5hZ2VyLmNhbklucHV0TW9yZU51bWJlcnM7XG4gICAgfVxuXG4gICAgZ2V0IGlucHV0U2VsZWN0aW9uKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlucHV0TWFuYWdlci5pbnB1dFNlbGVjdGlvbjtcbiAgICB9XG5cbiAgICBnZXQgcmF3VmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRNYW5hZ2VyLnJhd1ZhbHVlO1xuICAgIH1cblxuICAgIHNldCByYXdWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuaW5wdXRNYW5hZ2VyLnJhd1ZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHN0b3JlZFJhd1ZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlucHV0TWFuYWdlci5zdG9yZWRSYXdWYWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgdmFsdWUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xlYXJNYXNrKHRoaXMucmF3VmFsdWUpO1xuICAgIH1cblxuICAgIHNldCB2YWx1ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMucmF3VmFsdWUgPSB0aGlzLmFwcGx5TWFzayh0cnVlLCBcIlwiICsgdmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNOdWxsT3JVbmRlZmluZWQodmFsdWU6IGFueSkge1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZDtcbiAgICB9XG59XG4iXX0= |
@@ -129,10 +129,9 @@ import { InputManager } from "./input.manager"; | ||
var move = this.rawValue.substr(selectionStart - 1, 1).match(/\d/) ? 0 : -1; | ||
if ((keyCode == 8 && | ||
selectionStart - 1 === 0 && | ||
!(this.rawValue.substr(selectionStart, 1).match(/\d/))) || | ||
((keyCode == 46 || keyCode == 63272) && | ||
selectionStart === 0 && | ||
!(this.rawValue.substr(selectionStart + 1, 1).match(/\d/)))) { | ||
if ((keyCode == 8 && selectionStart - 1 === 0 && !(this.rawValue.substr(selectionStart, 1).match(/\d/))) || | ||
((keyCode == 46 || keyCode == 63272) && selectionStart === 0 && !(this.rawValue.substr(selectionStart + 1, 1).match(/\d/)))) { | ||
move = 1; | ||
} | ||
else if ((keyCode == 46 || keyCode == 63272) && selectionStart !== 0 && !(this.rawValue.substr(selectionStart - 1, 1).match(/\d/))) { | ||
move = 0; | ||
} | ||
; | ||
@@ -207,2 +206,2 @@ selectionEnd = keyCode == 46 || keyCode == 63272 ? selectionEnd + 1 : selectionEnd; | ||
export { InputService }; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1jdXJyZW5jeS8iLCJzb3VyY2VzIjpbInNyYy9pbnB1dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUk3QztJQTZCSSxzQkFBb0IsZ0JBQXFCLEVBQVUsT0FBMkI7UUFBMUQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFLO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUE1QjlFLGtCQUFhLEdBQXdCLElBQUksR0FBRyxFQUFrQixDQUFDO1FBNkIzRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO0lBQ3JCLENBQUM7SUE3QkQsaUNBQVUsR0FBVjtRQUNJLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUV0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQVNELGdDQUFTLEdBQVQsVUFBVSxPQUFlO1FBQ3JCLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUMzQjthQUFNO1lBQ0gsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUM7WUFDeEQsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUM7WUFDcEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ25JLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDN0M7SUFDTCxDQUFDO0lBRUQsZ0NBQVMsR0FBVCxVQUFVLFFBQWlCLEVBQUUsUUFBZ0I7UUFDckMsSUFBQSxpQkFBaUcsRUFBaEcsZ0NBQWEsRUFBRSxvQkFBTyxFQUFFLHdCQUFTLEVBQUUsa0JBQU0sRUFBRSxrQkFBTSxFQUFFLHdCQUFTLEVBQUUsc0JBQVEsRUFBRSxZQUFHLEVBQUUsWUFBbUIsQ0FBQztRQUN0RyxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUN6RSxJQUFJLFdBQVcsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTVFLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDZCxPQUFPLEVBQUUsQ0FBQztTQUNiO1FBRUQsSUFBSSxXQUFXLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7YUFDbkUsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7YUFDeEIsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7YUFDeEIsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV2QixJQUFJLFdBQVcsSUFBSSxFQUFFLEVBQUU7WUFDbkIsV0FBVyxHQUFHLEdBQUcsQ0FBQztTQUNyQjtRQUNELElBQUksWUFBWSxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV6QyxXQUFXLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxpRkFBaUYsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNoSSxJQUFJLFNBQVMsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ2hELFdBQVcsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzFDO1FBRUQsSUFBSSxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQzlCLElBQUksV0FBVyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQztRQUNwRSxJQUFJLFlBQVksR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTlDLElBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFNUMsMENBQTBDO1FBQzFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUU5RixzQ0FBc0M7UUFDdEMsSUFBSSxRQUFRLEdBQUcsWUFBWSxHQUFHLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ25ELFFBQVEsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxRQUFRLEdBQUcsR0FBRyxFQUFFO1lBQ2hELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1NBQ3pDO2FBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxRQUFRLEdBQUcsR0FBRyxFQUFFO1lBQ3ZELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFO1lBQ2YsSUFBSSxXQUFXLElBQUksR0FBRyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsU0FBUyxFQUFFO2dCQUN0RCxXQUFXLElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQzthQUNwRTtpQkFBTTtnQkFDSCxXQUFXLElBQUksT0FBTyxHQUFHLFdBQVcsQ0FBQzthQUN4QztTQUNKO1FBRUQsSUFBSSxNQUFNLEdBQUcsUUFBUSxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLFFBQVEsR0FBRyxDQUFDLFVBQVUsSUFBSSxhQUFhLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbkUsT0FBTyxRQUFRLEdBQUcsTUFBTSxHQUFHLFdBQVcsR0FBRyxNQUFNLENBQUM7SUFDcEQsQ0FBQztJQUVELGdDQUFTLEdBQVQsVUFBVSxRQUFnQjtRQUN0QixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxRQUFRLEtBQUssRUFBRTtZQUNwQyxPQUFPLElBQUksQ0FBQztRQUVoQixJQUFJLEtBQUssR0FBRyxDQUFDLFFBQVEsSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWhHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDeEIsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzdFO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUN0QixLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNwRDtRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFVBQUMsR0FBVyxFQUFFLEdBQVc7WUFDaEQsSUFBTSxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ2hDLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCx1Q0FBZ0IsR0FBaEI7UUFDSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsRUFBRTtZQUN4RyxnRUFBZ0U7WUFDaEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzlEO0lBQ0wsQ0FBQztJQUVELHVDQUFnQixHQUFoQjtRQUNRLGdFQUFnRTtRQUNoRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxtQ0FBWSxHQUFaLFVBQWEsT0FBZTtRQUN4QixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsRUFBRTtZQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQztRQUNwRCxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQztRQUV4RCxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDcEUsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUNqRSxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1NBQ3RFO1FBRUwsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsY0FBYyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUNFLE9BQU8sSUFBSSxDQUFDO1lBQ1osY0FBYyxHQUFHLENBQUMsS0FBSyxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3ZEO1lBQ0QsQ0FDRSxDQUFDLE9BQU8sSUFBSSxFQUFFLElBQUksT0FBTyxJQUFJLEtBQUssQ0FBQztnQkFDbkMsY0FBYyxLQUFLLENBQUM7Z0JBQ3BCLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUMzRCxFQUNIO1lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQztTQUNWO1FBQUEsQ0FBQztRQUNGLFlBQVksR0FBRyxPQUFPLElBQUksRUFBRSxJQUFJLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztRQUNuRixjQUFjLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVDLHVDQUFnQixHQUFoQixVQUFpQixjQUF1QjtRQUNwQyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzdELGNBQWMsR0FBRyxjQUFjLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxvQ0FBYSxHQUFiLFVBQWMsT0FBWTtRQUN0QixJQUFJLEtBQUssR0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxtQ0FBWSxHQUFaO1FBQ0ksT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDdEMsQ0FBQztJQUVELGlDQUFVLEdBQVY7UUFDSSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxzQkFBSSw2Q0FBbUI7YUFBdkI7WUFDSSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUM7UUFDakQsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSx3Q0FBYzthQUFsQjtZQUNJLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUM7UUFDNUMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSxrQ0FBUTthQUFaO1lBQ0ksT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUN0QyxDQUFDO2FBRUQsVUFBYSxLQUFhO1lBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN2QyxDQUFDOzs7T0FKQTtJQU1ELHNCQUFJLHdDQUFjO2FBQWxCO1lBQ0ksT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQztRQUM1QyxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLCtCQUFLO2FBQVQ7WUFDSSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7YUFFRCxVQUFVLEtBQWE7WUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDckQsQ0FBQzs7O09BSkE7SUFNTyx3Q0FBaUIsR0FBekIsVUFBMEIsS0FBVTtRQUNoQyxPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQztJQUNqRCxDQUFDO0lBQ0wsbUJBQUM7QUFBRCxDQUFDLEFBN05ELElBNk5DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbnB1dE1hbmFnZXJ9IGZyb20gXCIuL2lucHV0Lm1hbmFnZXJcIjtcbmltcG9ydCB7Q3VycmVuY3lNYXNrQ29uZmlnfSBmcm9tIFwiLi9jdXJyZW5jeS1tYXNrLmNvbmZpZ1wiO1xuXG5cbmV4cG9ydCBjbGFzcyBJbnB1dFNlcnZpY2Uge1xuICAgIFBFUl9BUl9OVU1CRVI6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXG4gICAgaW5pdGlhbGl6ZSgpIHtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2RjBcIiwgXCIwXCIpO1xuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDZGMVwiLCBcIjFcIik7XG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNkYyXCIsIFwiMlwiKTtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2RjNcIiwgXCIzXCIpO1xuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDZGNFwiLCBcIjRcIik7XG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNkY1XCIsIFwiNVwiKTtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2RjZcIiwgXCI2XCIpO1xuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDZGN1wiLCBcIjdcIik7XG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNkY4XCIsIFwiOFwiKTtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2RjlcIiwgXCI5XCIpO1xuXG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNjYwXCIsIFwiMFwiKTtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2NjFcIiwgXCIxXCIpO1xuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDY2MlwiLCBcIjJcIik7XG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNjYzXCIsIFwiM1wiKTtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2NjRcIiwgXCI0XCIpO1xuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDY2NVwiLCBcIjVcIik7XG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNjY2XCIsIFwiNlwiKTtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2NjdcIiwgXCI3XCIpO1xuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDY2OFwiLCBcIjhcIik7XG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNjY5XCIsIFwiOVwiKTtcbiAgICB9XG5cbiAgICBpbnB1dE1hbmFnZXI6IElucHV0TWFuYWdlcjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHRtbElucHV0RWxlbWVudDogYW55LCBwcml2YXRlIG9wdGlvbnM6IEN1cnJlbmN5TWFza0NvbmZpZykge1xuICAgICAgICB0aGlzLmlucHV0TWFuYWdlciA9IG5ldyBJbnB1dE1hbmFnZXIoaHRtbElucHV0RWxlbWVudCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZSgpXG4gICAgfVxuXG4gICAgYWRkTnVtYmVyKGtleUNvZGU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBsZXQga2V5Q2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoa2V5Q29kZSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnJhd1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnJhd1ZhbHVlID0gdGhpcy5hcHBseU1hc2soZmFsc2UsIGtleUNoYXIpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGaWVsZFZhbHVlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgc2VsZWN0aW9uU3RhcnQgPSB0aGlzLmlucHV0U2VsZWN0aW9uLnNlbGVjdGlvblN0YXJ0O1xuICAgICAgICAgICAgbGV0IHNlbGVjdGlvbkVuZCA9IHRoaXMuaW5wdXRTZWxlY3Rpb24uc2VsZWN0aW9uRW5kO1xuICAgICAgICAgICAgdGhpcy5yYXdWYWx1ZSA9IHRoaXMucmF3VmFsdWUuc3Vic3RyaW5nKDAsIHNlbGVjdGlvblN0YXJ0KSArIGtleUNoYXIgKyB0aGlzLnJhd1ZhbHVlLnN1YnN0cmluZyhzZWxlY3Rpb25FbmQsIHRoaXMucmF3VmFsdWUubGVuZ3RoKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRmllbGRWYWx1ZShzZWxlY3Rpb25TdGFydCArIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXBwbHlNYXNrKGlzTnVtYmVyOiBib29sZWFuLCByYXdWYWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHthbGxvd05lZ2F0aXZlLCBkZWNpbWFsLCBwcmVjaXNpb24sIHByZWZpeCwgc3VmZml4LCB0aG91c2FuZHMsIG51bGxhYmxlLCBtaW4sIG1heH0gPSB0aGlzLm9wdGlvbnM7XG4gICAgICAgIHJhd1ZhbHVlID0gaXNOdW1iZXIgPyBuZXcgTnVtYmVyKHJhd1ZhbHVlKS50b0ZpeGVkKHByZWNpc2lvbikgOiByYXdWYWx1ZTtcbiAgICAgICAgbGV0IG9ubHlOdW1iZXJzID0gcmF3VmFsdWUucmVwbGFjZSgvW14wLTlcXHUwNjYwLVxcdTA2NjlcXHUwNkYwLVxcdTA2RjldL2csIFwiXCIpO1xuXG4gICAgICAgIGlmICghb25seU51bWJlcnMpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGludGVnZXJQYXJ0ID0gb25seU51bWJlcnMuc2xpY2UoMCwgb25seU51bWJlcnMubGVuZ3RoIC0gcHJlY2lzaW9uKVxuICAgICAgICAgIC5yZXBsYWNlKC9eXFx1MDY2MCovZywgXCJcIilcbiAgICAgICAgICAucmVwbGFjZSgvXlxcdTA2RjAqL2csIFwiXCIpXG4gICAgICAgICAgLnJlcGxhY2UoL14wKi9nLCBcIlwiKTtcblxuICAgICAgICBpZiAoaW50ZWdlclBhcnQgPT0gXCJcIikge1xuICAgICAgICAgICAgaW50ZWdlclBhcnQgPSBcIjBcIjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaW50ZWdlclZhbHVlID0gcGFyc2VJbnQoaW50ZWdlclBhcnQpO1xuXG4gICAgICAgIGludGVnZXJQYXJ0ID0gaW50ZWdlclBhcnQucmVwbGFjZSgvXFxCKD89KFswLTlcXHUwNjYwLVxcdTA2NjlcXHUwNkYwLVxcdTA2RjldezN9KSsoPyFbMC05XFx1MDY2MC1cXHUwNjY5XFx1MDZGMC1cXHUwNkY5XSkpL2csIHRob3VzYW5kcyk7XG4gICAgICAgIGlmICh0aG91c2FuZHMgJiYgaW50ZWdlclBhcnQuc3RhcnRzV2l0aCh0aG91c2FuZHMpKSB7XG4gICAgICAgICAgICBpbnRlZ2VyUGFydCA9IGludGVnZXJQYXJ0LnN1YnN0cmluZygxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBuZXdSYXdWYWx1ZSA9IGludGVnZXJQYXJ0O1xuICAgICAgICBsZXQgZGVjaW1hbFBhcnQgPSBvbmx5TnVtYmVycy5zbGljZShvbmx5TnVtYmVycy5sZW5ndGggLSBwcmVjaXNpb24pO1xuICAgICAgICBsZXQgZGVjaW1hbFZhbHVlID0gcGFyc2VJbnQoZGVjaW1hbFBhcnQpIHx8IDA7XG5cbiAgICAgICAgbGV0IGlzTmVnYXRpdmUgPSByYXdWYWx1ZS5pbmRleE9mKFwiLVwiKSA+IC0xO1xuXG4gICAgICAgIC8vIEVuc3VyZSBtYXggaXMgYXQgbGVhc3QgYXMgbGFyZ2UgYXMgbWluLlxuICAgICAgICBtYXggPSAodGhpcy5pc051bGxPclVuZGVmaW5lZChtYXgpIHx8IHRoaXMuaXNOdWxsT3JVbmRlZmluZWQobWluKSkgPyBtYXggOiBNYXRoLm1heChtYXgsIG1pbik7XG5cbiAgICAgICAgLy8gUmVzdHJpY3QgdG8gdGhlIG1pbiBhbmQgbWF4IHZhbHVlcy5cbiAgICAgICAgbGV0IG5ld1ZhbHVlID0gaW50ZWdlclZhbHVlICsgKGRlY2ltYWxWYWx1ZSAvIDEwMCk7XG4gICAgICAgIG5ld1ZhbHVlID0gaXNOZWdhdGl2ZSA/IC1uZXdWYWx1ZSA6IG5ld1ZhbHVlO1xuICAgICAgICBpZiAoIXRoaXMuaXNOdWxsT3JVbmRlZmluZWQobWF4KSAmJiBuZXdWYWx1ZSA+IG1heCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlNYXNrKHRydWUsIG1heCArICcnKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pc051bGxPclVuZGVmaW5lZChtaW4pICYmIG5ld1ZhbHVlIDwgbWluKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hcHBseU1hc2sodHJ1ZSwgbWluICsgJycpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByZWNpc2lvbiA+IDApIHtcbiAgICAgICAgICAgIGlmIChuZXdSYXdWYWx1ZSA9PSBcIjBcIiAmJiBkZWNpbWFsUGFydC5sZW5ndGggPCBwcmVjaXNpb24pIHtcbiAgICAgICAgICAgICAgICBuZXdSYXdWYWx1ZSArPSBkZWNpbWFsICsgXCIwXCIucmVwZWF0KHByZWNpc2lvbiAtIDEpICsgZGVjaW1hbFBhcnQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld1Jhd1ZhbHVlICs9IGRlY2ltYWwgKyBkZWNpbWFsUGFydDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpc1plcm8gPSBuZXdWYWx1ZSA9PSAwO1xuICAgICAgICBsZXQgb3BlcmF0b3IgPSAoaXNOZWdhdGl2ZSAmJiBhbGxvd05lZ2F0aXZlICYmICFpc1plcm8pID8gXCItXCIgOiBcIlwiO1xuICAgICAgICByZXR1cm4gb3BlcmF0b3IgKyBwcmVmaXggKyBuZXdSYXdWYWx1ZSArIHN1ZmZpeDtcbiAgICB9XG5cbiAgICBjbGVhck1hc2socmF3VmFsdWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLmlzTnVsbGFibGUoKSAmJiByYXdWYWx1ZSA9PT0gXCJcIilcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgIGxldCB2YWx1ZSA9IChyYXdWYWx1ZSB8fCBcIjBcIikucmVwbGFjZSh0aGlzLm9wdGlvbnMucHJlZml4LCBcIlwiKS5yZXBsYWNlKHRoaXMub3B0aW9ucy5zdWZmaXgsIFwiXCIpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMudGhvdXNhbmRzKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UobmV3IFJlZ0V4cChcIlxcXFxcIiArIHRoaXMub3B0aW9ucy50aG91c2FuZHMsIFwiZ1wiKSwgXCJcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmRlY2ltYWwpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSh0aGlzLm9wdGlvbnMuZGVjaW1hbCwgXCIuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLmZvckVhY2goKHZhbDogc3RyaW5nLCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmUgPSBuZXcgUmVnRXhwKGtleSwgXCJnXCIpO1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHJlLCB2YWwpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodmFsdWUpO1xuICAgIH1cblxuICAgIGNoYW5nZVRvTmVnYXRpdmUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYWxsb3dOZWdhdGl2ZSAmJiB0aGlzLnJhd1ZhbHVlICE9IFwiXCIgJiYgdGhpcy5yYXdWYWx1ZS5jaGFyQXQoMCkgIT0gXCItXCIgJiYgdGhpcy52YWx1ZSAhPSAwKSB7XG4gICAgICAgICAgICAvLyBBcHBseSB0aGUgbWFzayB0byBlbnN1cmUgdGhlIG1pbiBhbmQgbWF4IHZhbHVlcyBhcmUgZW5mb3JjZWQuXG4gICAgICAgICAgICB0aGlzLnJhd1ZhbHVlID0gdGhpcy5hcHBseU1hc2soZmFsc2UsIFwiLVwiICsgdGhpcy5yYXdWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaGFuZ2VUb1Bvc2l0aXZlKCk6IHZvaWQge1xuICAgICAgICAgICAgLy8gQXBwbHkgdGhlIG1hc2sgdG8gZW5zdXJlIHRoZSBtaW4gYW5kIG1heCB2YWx1ZXMgYXJlIGVuZm9yY2VkLlxuICAgICAgICAgICAgdGhpcy5yYXdWYWx1ZSA9IHRoaXMuYXBwbHlNYXNrKGZhbHNlLCB0aGlzLnJhd1ZhbHVlLnJlcGxhY2UoXCItXCIsIFwiXCIpKTtcbiAgICB9XG5cbiAgICByZW1vdmVOdW1iZXIoa2V5Q29kZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTnVsbGFibGUoKSAmJiB0aGlzLnZhbHVlID09IDApIHtcbiAgICAgICAgICAgIHRoaXMucmF3VmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHNlbGVjdGlvbkVuZCA9IHRoaXMuaW5wdXRTZWxlY3Rpb24uc2VsZWN0aW9uRW5kO1xuICAgICAgICBsZXQgc2VsZWN0aW9uU3RhcnQgPSB0aGlzLmlucHV0U2VsZWN0aW9uLnNlbGVjdGlvblN0YXJ0O1xuXG4gICAgICAgIGlmIChzZWxlY3Rpb25TdGFydCA+IHRoaXMucmF3VmFsdWUubGVuZ3RoIC0gdGhpcy5vcHRpb25zLnN1ZmZpeC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHNlbGVjdGlvbkVuZCA9IHRoaXMucmF3VmFsdWUubGVuZ3RoIC0gdGhpcy5vcHRpb25zLnN1ZmZpeC5sZW5ndGg7XG4gICAgICAgICAgICBzZWxlY3Rpb25TdGFydCA9IHRoaXMucmF3VmFsdWUubGVuZ3RoIC0gdGhpcy5vcHRpb25zLnN1ZmZpeC5sZW5ndGg7XG4gICAgICAgIH1cblxuICAgIGxldCBtb3ZlID0gdGhpcy5yYXdWYWx1ZS5zdWJzdHIoc2VsZWN0aW9uU3RhcnQgLSAxLCAxKS5tYXRjaCgvXFxkLykgPyAwIDogLTE7XG4gICAgaWYgKChcbiAgICAgICAgICBrZXlDb2RlID09IDggJiZcbiAgICAgICAgICBzZWxlY3Rpb25TdGFydCAtIDEgPT09IDAgJiZcbiAgICAgICAgICAhKHRoaXMucmF3VmFsdWUuc3Vic3RyKHNlbGVjdGlvblN0YXJ0LCAxKS5tYXRjaCgvXFxkLykpXG4gICAgICAgICkgfHxcbiAgICAgICAgKFxuICAgICAgICAgIChrZXlDb2RlID09IDQ2IHx8IGtleUNvZGUgPT0gNjMyNzIpICYmXG4gICAgICAgICAgc2VsZWN0aW9uU3RhcnQgPT09IDAgJiZcbiAgICAgICAgICAhKHRoaXMucmF3VmFsdWUuc3Vic3RyKHNlbGVjdGlvblN0YXJ0ICsgMSwgMSkubWF0Y2goL1xcZC8pKVxuICAgICAgICApXG4gICAgKSB7XG4gICAgICBtb3ZlID0gMTtcbiAgICB9O1xuICAgIHNlbGVjdGlvbkVuZCA9IGtleUNvZGUgPT0gNDYgfHwga2V5Q29kZSA9PSA2MzI3MiA/IHNlbGVjdGlvbkVuZCArIDEgOiBzZWxlY3Rpb25FbmQ7XG4gICAgc2VsZWN0aW9uU3RhcnQgPSBrZXlDb2RlID09IDggPyBzZWxlY3Rpb25TdGFydCAtIDEgOiBzZWxlY3Rpb25TdGFydDtcbiAgICB0aGlzLnJhd1ZhbHVlID0gdGhpcy5yYXdWYWx1ZS5zdWJzdHJpbmcoMCwgc2VsZWN0aW9uU3RhcnQpICsgdGhpcy5yYXdWYWx1ZS5zdWJzdHJpbmcoc2VsZWN0aW9uRW5kLCB0aGlzLnJhd1ZhbHVlLmxlbmd0aCk7XG4gICAgdGhpcy51cGRhdGVGaWVsZFZhbHVlKHNlbGVjdGlvblN0YXJ0ICsgbW92ZSk7XG4gIH1cblxuICAgIHVwZGF0ZUZpZWxkVmFsdWUoc2VsZWN0aW9uU3RhcnQ/OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgbGV0IG5ld1Jhd1ZhbHVlID0gdGhpcy5hcHBseU1hc2soZmFsc2UsIHRoaXMucmF3VmFsdWUgfHwgXCJcIik7XG4gICAgICAgIHNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uU3RhcnQgPT0gdW5kZWZpbmVkID8gdGhpcy5yYXdWYWx1ZS5sZW5ndGggOiBzZWxlY3Rpb25TdGFydDtcbiAgICAgICAgdGhpcy5pbnB1dE1hbmFnZXIudXBkYXRlVmFsdWVBbmRDdXJzb3IobmV3UmF3VmFsdWUsIHRoaXMucmF3VmFsdWUubGVuZ3RoLCBzZWxlY3Rpb25TdGFydCk7XG4gICAgfVxuXG4gICAgdXBkYXRlT3B0aW9ucyhvcHRpb25zOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgbGV0IHZhbHVlOiBudW1iZXIgPSB0aGlzLnZhbHVlO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJlZml4TGVuZ3RoKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMucHJlZml4Lmxlbmd0aDtcbiAgICB9XG5cbiAgICBpc051bGxhYmxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLm51bGxhYmxlO1xuICAgIH1cblxuICAgIGdldCBjYW5JbnB1dE1vcmVOdW1iZXJzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dE1hbmFnZXIuY2FuSW5wdXRNb3JlTnVtYmVycztcbiAgICB9XG5cbiAgICBnZXQgaW5wdXRTZWxlY3Rpb24oKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRNYW5hZ2VyLmlucHV0U2VsZWN0aW9uO1xuICAgIH1cblxuICAgIGdldCByYXdWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dE1hbmFnZXIucmF3VmFsdWU7XG4gICAgfVxuXG4gICAgc2V0IHJhd1ZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5pbnB1dE1hbmFnZXIucmF3VmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgc3RvcmVkUmF3VmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRNYW5hZ2VyLnN0b3JlZFJhd1ZhbHVlO1xuICAgIH1cblxuICAgIGdldCB2YWx1ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jbGVhck1hc2sodGhpcy5yYXdWYWx1ZSk7XG4gICAgfVxuXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5yYXdWYWx1ZSA9IHRoaXMuYXBwbHlNYXNrKHRydWUsIFwiXCIgKyB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc051bGxPclVuZGVmaW5lZCh2YWx1ZTogYW55KSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xuICAgIH1cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1jdXJyZW5jeS8iLCJzb3VyY2VzIjpbInNyYy9pbnB1dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUkvQztJQTZCSSxzQkFBb0IsZ0JBQXFCLEVBQVUsT0FBMkI7UUFBMUQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFLO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUE1QjlFLGtCQUFhLEdBQXdCLElBQUksR0FBRyxFQUFrQixDQUFDO1FBNkIzRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO0lBQ3JCLENBQUM7SUE3QkQsaUNBQVUsR0FBVjtRQUNJLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUV0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQVNELGdDQUFTLEdBQVQsVUFBVSxPQUFlO1FBQ3JCLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJ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RUQsc0JBQUksa0NBQVE7YUFBWjtZQUNJLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFDdEMsQ0FBQzthQUVELFVBQWEsS0FBYTtZQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdkMsQ0FBQzs7O09BSkE7SUFNRCxzQkFBSSx3Q0FBYzthQUFsQjtZQUNJLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUM7UUFDNUMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSwrQkFBSzthQUFUO1lBQ0ksT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6QyxDQUFDO2FBRUQsVUFBVSxLQUFhO1lBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ3JELENBQUM7OztPQUpBO0lBTU8sd0NBQWlCLEdBQXpCLFVBQTBCLEtBQVU7UUFDaEMsT0FBTyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLENBQUM7SUFDakQsQ0FBQztJQUNMLG1CQUFDO0FBQUQsQ0FBQyxBQXhORCxJQXdOQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElucHV0TWFuYWdlciB9IGZyb20gXCIuL2lucHV0Lm1hbmFnZXJcIjtcbmltcG9ydCB7IEN1cnJlbmN5TWFza0NvbmZpZyB9IGZyb20gXCIuL2N1cnJlbmN5LW1hc2suY29uZmlnXCI7XG5cblxuZXhwb3J0IGNsYXNzIElucHV0U2VydmljZSB7XG4gICAgUEVSX0FSX05VTUJFUjogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgICBpbml0aWFsaXplKCkge1xuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDZGMFwiLCBcIjBcIik7XG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNkYxXCIsIFwiMVwiKTtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2RjJcIiwgXCIyXCIpO1xuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDZGM1wiLCBcIjNcIik7XG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNkY0XCIsIFwiNFwiKTtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2RjVcIiwgXCI1XCIpO1xuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDZGNlwiLCBcIjZcIik7XG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNkY3XCIsIFwiN1wiKTtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2RjhcIiwgXCI4XCIpO1xuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDZGOVwiLCBcIjlcIik7XG5cbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2NjBcIiwgXCIwXCIpO1xuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDY2MVwiLCBcIjFcIik7XG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNjYyXCIsIFwiMlwiKTtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2NjNcIiwgXCIzXCIpO1xuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDY2NFwiLCBcIjRcIik7XG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNjY1XCIsIFwiNVwiKTtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2NjZcIiwgXCI2XCIpO1xuICAgICAgICB0aGlzLlBFUl9BUl9OVU1CRVIuc2V0KFwiXFx1MDY2N1wiLCBcIjdcIik7XG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5zZXQoXCJcXHUwNjY4XCIsIFwiOFwiKTtcbiAgICAgICAgdGhpcy5QRVJfQVJfTlVNQkVSLnNldChcIlxcdTA2NjlcIiwgXCI5XCIpO1xuICAgIH1cblxuICAgIGlucHV0TWFuYWdlcjogSW5wdXRNYW5hZ2VyO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodG1sSW5wdXRFbGVtZW50OiBhbnksIHByaXZhdGUgb3B0aW9uczogQ3VycmVuY3lNYXNrQ29uZmlnKSB7XG4gICAgICAgIHRoaXMuaW5wdXRNYW5hZ2VyID0gbmV3IElucHV0TWFuYWdlcihodG1sSW5wdXRFbGVtZW50KTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplKClcbiAgICB9XG5cbiAgICBhZGROdW1iZXIoa2V5Q29kZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGxldCBrZXlDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZShrZXlDb2RlKTtcblxuICAgICAgICBpZiAoIXRoaXMucmF3VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucmF3VmFsdWUgPSB0aGlzLmFwcGx5TWFzayhmYWxzZSwga2V5Q2hhcik7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZpZWxkVmFsdWUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBzZWxlY3Rpb25TdGFydCA9IHRoaXMuaW5wdXRTZWxlY3Rpb24uc2VsZWN0aW9uU3RhcnQ7XG4gICAgICAgICAgICBsZXQgc2VsZWN0aW9uRW5kID0gdGhpcy5pbnB1dFNlbGVjdGlvbi5zZWxlY3Rpb25FbmQ7XG4gICAgICAgICAgICB0aGlzLnJhd1ZhbHVlID0gdGhpcy5yYXdWYWx1ZS5zdWJzdHJpbmcoMCwgc2VsZWN0aW9uU3RhcnQpICsga2V5Q2hhciArIHRoaXMucmF3VmFsdWUuc3Vic3RyaW5nKHNlbGVjdGlvbkVuZCwgdGhpcy5yYXdWYWx1ZS5sZW5ndGgpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGaWVsZFZhbHVlKHNlbGVjdGlvblN0YXJ0ICsgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhcHBseU1hc2soaXNOdW1iZXI6IGJvb2xlYW4sIHJhd1ZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBsZXQgeyBhbGxvd05lZ2F0aXZlLCBkZWNpbWFsLCBwcmVjaXNpb24sIHByZWZpeCwgc3VmZml4LCB0aG91c2FuZHMsIG51bGxhYmxlLCBtaW4sIG1heCB9ID0gdGhpcy5vcHRpb25zO1xuICAgICAgICByYXdWYWx1ZSA9IGlzTnVtYmVyID8gbmV3IE51bWJlcihyYXdWYWx1ZSkudG9GaXhlZChwcmVjaXNpb24pIDogcmF3VmFsdWU7XG4gICAgICAgIGxldCBvbmx5TnVtYmVycyA9IHJhd1ZhbHVlLnJlcGxhY2UoL1teMC05XFx1MDY2MC1cXHUwNjY5XFx1MDZGMC1cXHUwNkY5XS9nLCBcIlwiKTtcblxuICAgICAgICBpZiAoIW9ubHlOdW1iZXJzKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpbnRlZ2VyUGFydCA9IG9ubHlOdW1iZXJzLnNsaWNlKDAsIG9ubHlOdW1iZXJzLmxlbmd0aCAtIHByZWNpc2lvbilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9eXFx1MDY2MCovZywgXCJcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9eXFx1MDZGMCovZywgXCJcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9eMCovZywgXCJcIik7XG5cbiAgICAgICAgaWYgKGludGVnZXJQYXJ0ID09IFwiXCIpIHtcbiAgICAgICAgICAgIGludGVnZXJQYXJ0ID0gXCIwXCI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGludGVnZXJWYWx1ZSA9IHBhcnNlSW50KGludGVnZXJQYXJ0KTtcblxuICAgICAgICBpbnRlZ2VyUGFydCA9IGludGVnZXJQYXJ0LnJlcGxhY2UoL1xcQig/PShbMC05XFx1MDY2MC1cXHUwNjY5XFx1MDZGMC1cXHUwNkY5XXszfSkrKD8hWzAtOVxcdTA2NjAtXFx1MDY2OVxcdTA2RjAtXFx1MDZGOV0pKS9nLCB0aG91c2FuZHMpO1xuICAgICAgICBpZiAodGhvdXNhbmRzICYmIGludGVnZXJQYXJ0LnN0YXJ0c1dpdGgodGhvdXNhbmRzKSkge1xuICAgICAgICAgICAgaW50ZWdlclBhcnQgPSBpbnRlZ2VyUGFydC5zdWJzdHJpbmcoMSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbmV3UmF3VmFsdWUgPSBpbnRlZ2VyUGFydDtcbiAgICAgICAgbGV0IGRlY2ltYWxQYXJ0ID0gb25seU51bWJlcnMuc2xpY2Uob25seU51bWJlcnMubGVuZ3RoIC0gcHJlY2lzaW9uKTtcbiAgICAgICAgbGV0IGRlY2ltYWxWYWx1ZSA9IHBhcnNlSW50KGRlY2ltYWxQYXJ0KSB8fCAwO1xuXG4gICAgICAgIGxldCBpc05lZ2F0aXZlID0gcmF3VmFsdWUuaW5kZXhPZihcIi1cIikgPiAtMTtcblxuICAgICAgICAvLyBFbnN1cmUgbWF4IGlzIGF0IGxlYXN0IGFzIGxhcmdlIGFzIG1pbi5cbiAgICAgICAgbWF4ID0gKHRoaXMuaXNOdWxsT3JVbmRlZmluZWQobWF4KSB8fCB0aGlzLmlzTnVsbE9yVW5kZWZpbmVkKG1pbikpID8gbWF4IDogTWF0aC5tYXgobWF4LCBtaW4pO1xuXG4gICAgICAgIC8vIFJlc3RyaWN0IHRvIHRoZSBtaW4gYW5kIG1heCB2YWx1ZXMuXG4gICAgICAgIGxldCBuZXdWYWx1ZSA9IGludGVnZXJWYWx1ZSArIChkZWNpbWFsVmFsdWUgLyAxMDApO1xuICAgICAgICBuZXdWYWx1ZSA9IGlzTmVnYXRpdmUgPyAtbmV3VmFsdWUgOiBuZXdWYWx1ZTtcbiAgICAgICAgaWYgKCF0aGlzLmlzTnVsbE9yVW5kZWZpbmVkKG1heCkgJiYgbmV3VmFsdWUgPiBtYXgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFwcGx5TWFzayh0cnVlLCBtYXggKyAnJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNOdWxsT3JVbmRlZmluZWQobWluKSAmJiBuZXdWYWx1ZSA8IG1pbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlNYXNrKHRydWUsIG1pbiArICcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcmVjaXNpb24gPiAwKSB7XG4gICAgICAgICAgICBpZiAobmV3UmF3VmFsdWUgPT0gXCIwXCIgJiYgZGVjaW1hbFBhcnQubGVuZ3RoIDwgcHJlY2lzaW9uKSB7XG4gICAgICAgICAgICAgICAgbmV3UmF3VmFsdWUgKz0gZGVjaW1hbCArIFwiMFwiLnJlcGVhdChwcmVjaXNpb24gLSAxKSArIGRlY2ltYWxQYXJ0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdSYXdWYWx1ZSArPSBkZWNpbWFsICsgZGVjaW1hbFBhcnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaXNaZXJvID0gbmV3VmFsdWUgPT0gMDtcbiAgICAgICAgbGV0IG9wZXJhdG9yID0gKGlzTmVnYXRpdmUgJiYgYWxsb3dOZWdhdGl2ZSAmJiAhaXNaZXJvKSA/IFwiLVwiIDogXCJcIjtcbiAgICAgICAgcmV0dXJuIG9wZXJhdG9yICsgcHJlZml4ICsgbmV3UmF3VmFsdWUgKyBzdWZmaXg7XG4gICAgfVxuXG4gICAgY2xlYXJNYXNrKHJhd1ZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5pc051bGxhYmxlKCkgJiYgcmF3VmFsdWUgPT09IFwiXCIpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgICBsZXQgdmFsdWUgPSAocmF3VmFsdWUgfHwgXCIwXCIpLnJlcGxhY2UodGhpcy5vcHRpb25zLnByZWZpeCwgXCJcIikucmVwbGFjZSh0aGlzLm9wdGlvbnMuc3VmZml4LCBcIlwiKTtcblxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnRob3VzYW5kcykge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKG5ldyBSZWdFeHAoXCJcXFxcXCIgKyB0aGlzLm9wdGlvbnMudGhvdXNhbmRzLCBcImdcIiksIFwiXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWNpbWFsKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UodGhpcy5vcHRpb25zLmRlY2ltYWwsIFwiLlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuUEVSX0FSX05VTUJFUi5mb3JFYWNoKCh2YWw6IHN0cmluZywga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlID0gbmV3IFJlZ0V4cChrZXksIFwiZ1wiKTtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShyZSwgdmFsKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBjaGFuZ2VUb05lZ2F0aXZlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmFsbG93TmVnYXRpdmUgJiYgdGhpcy5yYXdWYWx1ZSAhPSBcIlwiICYmIHRoaXMucmF3VmFsdWUuY2hhckF0KDApICE9IFwiLVwiICYmIHRoaXMudmFsdWUgIT0gMCkge1xuICAgICAgICAgICAgLy8gQXBwbHkgdGhlIG1hc2sgdG8gZW5zdXJlIHRoZSBtaW4gYW5kIG1heCB2YWx1ZXMgYXJlIGVuZm9yY2VkLlxuICAgICAgICAgICAgdGhpcy5yYXdWYWx1ZSA9IHRoaXMuYXBwbHlNYXNrKGZhbHNlLCBcIi1cIiArIHRoaXMucmF3VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hhbmdlVG9Qb3NpdGl2ZSgpOiB2b2lkIHtcbiAgICAgICAgLy8gQXBwbHkgdGhlIG1hc2sgdG8gZW5zdXJlIHRoZSBtaW4gYW5kIG1heCB2YWx1ZXMgYXJlIGVuZm9yY2VkLlxuICAgICAgICB0aGlzLnJhd1ZhbHVlID0gdGhpcy5hcHBseU1hc2soZmFsc2UsIHRoaXMucmF3VmFsdWUucmVwbGFjZShcIi1cIiwgXCJcIikpO1xuICAgIH1cblxuICAgIHJlbW92ZU51bWJlcihrZXlDb2RlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNOdWxsYWJsZSgpICYmIHRoaXMudmFsdWUgPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5yYXdWYWx1ZSA9IG51bGw7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgc2VsZWN0aW9uRW5kID0gdGhpcy5pbnB1dFNlbGVjdGlvbi5zZWxlY3Rpb25FbmQ7XG4gICAgICAgIGxldCBzZWxlY3Rpb25TdGFydCA9IHRoaXMuaW5wdXRTZWxlY3Rpb24uc2VsZWN0aW9uU3RhcnQ7XG5cbiAgICAgICAgaWYgKHNlbGVjdGlvblN0YXJ0ID4gdGhpcy5yYXdWYWx1ZS5sZW5ndGggLSB0aGlzLm9wdGlvbnMuc3VmZml4Lmxlbmd0aCkge1xuICAgICAgICAgICAgc2VsZWN0aW9uRW5kID0gdGhpcy5yYXdWYWx1ZS5sZW5ndGggLSB0aGlzLm9wdGlvbnMuc3VmZml4Lmxlbmd0aDtcbiAgICAgICAgICAgIHNlbGVjdGlvblN0YXJ0ID0gdGhpcy5yYXdWYWx1ZS5sZW5ndGggLSB0aGlzLm9wdGlvbnMuc3VmZml4Lmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBtb3ZlID0gdGhpcy5yYXdWYWx1ZS5zdWJzdHIoc2VsZWN0aW9uU3RhcnQgLSAxLCAxKS5tYXRjaCgvXFxkLykgPyAwIDogLTE7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIChrZXlDb2RlID09IDggJiYgc2VsZWN0aW9uU3RhcnQgLSAxID09PSAwICYmICEodGhpcy5yYXdWYWx1ZS5zdWJzdHIoc2VsZWN0aW9uU3RhcnQsIDEpLm1hdGNoKC9cXGQvKSkpIHx8XG4gICAgICAgICAgICAoKGtleUNvZGUgPT0gNDYgfHwga2V5Q29kZSA9PSA2MzI3MikgJiYgc2VsZWN0aW9uU3RhcnQgPT09IDAgJiYgISh0aGlzLnJhd1ZhbHVlLnN1YnN0cihzZWxlY3Rpb25TdGFydCArIDEsIDEpLm1hdGNoKC9cXGQvKSkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgbW92ZSA9IDE7XG4gICAgICAgIH0gZWxzZSBpZiAoKGtleUNvZGUgPT0gNDYgfHwga2V5Q29kZSA9PSA2MzI3MikgJiYgc2VsZWN0aW9uU3RhcnQgIT09IDAgJiYgISh0aGlzLnJhd1ZhbHVlLnN1YnN0cihzZWxlY3Rpb25TdGFydCAtIDEsIDEpLm1hdGNoKC9cXGQvKSkpIHtcbiAgICAgICAgICAgIG1vdmUgPSAwO1xuICAgICAgICB9O1xuICAgICAgICBzZWxlY3Rpb25FbmQgPSBrZXlDb2RlID09IDQ2IHx8IGtleUNvZGUgPT0gNjMyNzIgPyBzZWxlY3Rpb25FbmQgKyAxIDogc2VsZWN0aW9uRW5kO1xuICAgICAgICBzZWxlY3Rpb25TdGFydCA9IGtleUNvZGUgPT0gOCA/IHNlbGVjdGlvblN0YXJ0IC0gMSA6IHNlbGVjdGlvblN0YXJ0O1xuICAgICAgICB0aGlzLnJhd1ZhbHVlID0gdGhpcy5yYXdWYWx1ZS5zdWJzdHJpbmcoMCwgc2VsZWN0aW9uU3RhcnQpICsgdGhpcy5yYXdWYWx1ZS5zdWJzdHJpbmcoc2VsZWN0aW9uRW5kLCB0aGlzLnJhd1ZhbHVlLmxlbmd0aCk7XG4gICAgICAgIHRoaXMudXBkYXRlRmllbGRWYWx1ZShzZWxlY3Rpb25TdGFydCArIG1vdmUpO1xuICAgIH1cblxuICAgIHVwZGF0ZUZpZWxkVmFsdWUoc2VsZWN0aW9uU3RhcnQ/OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgbGV0IG5ld1Jhd1ZhbHVlID0gdGhpcy5hcHBseU1hc2soZmFsc2UsIHRoaXMucmF3VmFsdWUgfHwgXCJcIik7XG4gICAgICAgIHNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uU3RhcnQgPT0gdW5kZWZpbmVkID8gdGhpcy5yYXdWYWx1ZS5sZW5ndGggOiBzZWxlY3Rpb25TdGFydDtcbiAgICAgICAgdGhpcy5pbnB1dE1hbmFnZXIudXBkYXRlVmFsdWVBbmRDdXJzb3IobmV3UmF3VmFsdWUsIHRoaXMucmF3VmFsdWUubGVuZ3RoLCBzZWxlY3Rpb25TdGFydCk7XG4gICAgfVxuXG4gICAgdXBkYXRlT3B0aW9ucyhvcHRpb25zOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgbGV0IHZhbHVlOiBudW1iZXIgPSB0aGlzLnZhbHVlO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJlZml4TGVuZ3RoKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMucHJlZml4Lmxlbmd0aDtcbiAgICB9XG5cbiAgICBpc051bGxhYmxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLm51bGxhYmxlO1xuICAgIH1cblxuICAgIGdldCBjYW5JbnB1dE1vcmVOdW1iZXJzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dE1hbmFnZXIuY2FuSW5wdXRNb3JlTnVtYmVycztcbiAgICB9XG5cbiAgICBnZXQgaW5wdXRTZWxlY3Rpb24oKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRNYW5hZ2VyLmlucHV0U2VsZWN0aW9uO1xuICAgIH1cblxuICAgIGdldCByYXdWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dE1hbmFnZXIucmF3VmFsdWU7XG4gICAgfVxuXG4gICAgc2V0IHJhd1ZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5pbnB1dE1hbmFnZXIucmF3VmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgc3RvcmVkUmF3VmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRNYW5hZ2VyLnN0b3JlZFJhd1ZhbHVlO1xuICAgIH1cblxuICAgIGdldCB2YWx1ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jbGVhck1hc2sodGhpcy5yYXdWYWx1ZSk7XG4gICAgfVxuXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5yYXdWYWx1ZSA9IHRoaXMuYXBwbHlNYXNrKHRydWUsIFwiXCIgKyB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc051bGxPclVuZGVmaW5lZCh2YWx1ZTogYW55KSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xuICAgIH1cbn1cbiJdfQ== |
@@ -218,10 +218,9 @@ import { __decorate, __param } from 'tslib'; | ||
let move = this.rawValue.substr(selectionStart - 1, 1).match(/\d/) ? 0 : -1; | ||
if ((keyCode == 8 && | ||
selectionStart - 1 === 0 && | ||
!(this.rawValue.substr(selectionStart, 1).match(/\d/))) || | ||
((keyCode == 46 || keyCode == 63272) && | ||
selectionStart === 0 && | ||
!(this.rawValue.substr(selectionStart + 1, 1).match(/\d/)))) { | ||
if ((keyCode == 8 && selectionStart - 1 === 0 && !(this.rawValue.substr(selectionStart, 1).match(/\d/))) || | ||
((keyCode == 46 || keyCode == 63272) && selectionStart === 0 && !(this.rawValue.substr(selectionStart + 1, 1).match(/\d/)))) { | ||
move = 1; | ||
} | ||
else if ((keyCode == 46 || keyCode == 63272) && selectionStart !== 0 && !(this.rawValue.substr(selectionStart - 1, 1).match(/\d/))) { | ||
move = 0; | ||
} | ||
; | ||
@@ -228,0 +227,0 @@ selectionEnd = keyCode == 46 || keyCode == 63272 ? selectionEnd + 1 : selectionEnd; |
@@ -235,10 +235,9 @@ import { __decorate, __param } from 'tslib'; | ||
var move = this.rawValue.substr(selectionStart - 1, 1).match(/\d/) ? 0 : -1; | ||
if ((keyCode == 8 && | ||
selectionStart - 1 === 0 && | ||
!(this.rawValue.substr(selectionStart, 1).match(/\d/))) || | ||
((keyCode == 46 || keyCode == 63272) && | ||
selectionStart === 0 && | ||
!(this.rawValue.substr(selectionStart + 1, 1).match(/\d/)))) { | ||
if ((keyCode == 8 && selectionStart - 1 === 0 && !(this.rawValue.substr(selectionStart, 1).match(/\d/))) || | ||
((keyCode == 46 || keyCode == 63272) && selectionStart === 0 && !(this.rawValue.substr(selectionStart + 1, 1).match(/\d/)))) { | ||
move = 1; | ||
} | ||
else if ((keyCode == 46 || keyCode == 63272) && selectionStart !== 0 && !(this.rawValue.substr(selectionStart - 1, 1).match(/\d/))) { | ||
move = 0; | ||
} | ||
; | ||
@@ -245,0 +244,0 @@ selectionEnd = keyCode == 46 || keyCode == 63272 ? selectionEnd + 1 : selectionEnd; |
{ | ||
"$schema": "./node_modules/ng-packagr/package.schema.json", | ||
"name": "ngx-currency", | ||
"version": "2.2.2", | ||
"version": "2.2.3", | ||
"description": "A very simple currency mask directive that allows using a number attribute with the ngModel.", | ||
@@ -6,0 +6,0 @@ "repository": { |
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
485499
3178