Socket
Socket
Sign inDemoInstall

ngx-captcha

Package Overview
Dependencies
Maintainers
1
Versions
68
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ngx-captcha - npm Package Compare versions

Comparing version 4.0.0 to 4.0.1

2

bundles/ngx-captcha.umd.min.js

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

!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/forms"),require("@angular/common")):"function"==typeof define&&define.amd?define("ngx-captcha",["exports","@angular/core","@angular/forms","@angular/common"],e):e(t["ngx-captcha"]={},t.ng.core,t.ng.forms,t.ng.common)}(this,function(t,o,e,n){"use strict";var r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};function i(t,e){function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var p={InvisibleReCaptcha:0,ReCaptcha2:1};p[p.InvisibleReCaptcha]="InvisibleReCaptcha",p[p.ReCaptcha2]="ReCaptcha2";var a=function(){function t(t,e,n,r){this.renderer=t,this.zone=e,this.injector=n,this.globalConfig=r,this.setupAfterLoad=!1,this.windowOnLoadCallbackProperty="ngx_onload_callback_"+this.getPseudoUniqueNumber(),this.globalReCaptchaProperty="grecaptcha",this.captchaElemPrefix="ngx_captcha_id_",this.type="image",this.tabIndex=0,this.success=new o.EventEmitter,this.load=new o.EventEmitter,this.ready=new o.EventEmitter,this.resetCaptchaAfterSuccess=!1,this.isLoaded=!1}return t.prototype.ngAfterViewInit=function(){this.control=this.injector.get(e.NgControl).control},t.prototype.getGlobalSiteKey=function(){if(this.globalConfig){if(this.recaptchaType===p.InvisibleReCaptcha){if(!this.globalConfig.invisibleCaptchaSiteKey)throw Error("SiteKey for invisible reCaptcha is not set!");return this.globalConfig.invisibleCaptchaSiteKey instanceof Function?this.globalConfig.invisibleCaptchaSiteKey():this.globalConfig.invisibleCaptchaSiteKey}if(this.recaptchaType===p.ReCaptcha2){if(!this.globalConfig.reCaptcha2SiteKey)throw Error("SiteKey for reCaptcha2 is not set!");return this.globalConfig.reCaptcha2SiteKey instanceof Function?this.globalConfig.reCaptcha2SiteKey():this.globalConfig.reCaptcha2SiteKey}throw Error("Unsupported captcha type '"+this.recaptchaType+"'!")}},t.prototype.ngOnChanges=function(t){this.siteKey?this.siteKey instanceof Function?this._siteKey=this.siteKey():this._siteKey=this.siteKey:this._siteKey=this.getGlobalSiteKey(),this.setupComponent()},t.prototype.ngOnDestroy=function(){window[this.windowOnLoadCallbackProperty]={},window[this.globalReCaptchaProperty]={}},t.prototype.getResponse=function(){return this.reCaptchaApi.getResponse(this.captchaId)},t.prototype.getCaptchaId=function(){return this.captchaId},t.prototype.resetCaptcha=function(){var t=this;this.zone.run(function(){t.onChange(null),t.onTouched(null)}),this.reCaptchaApi.reset(this.captchaId)},t.prototype.getCurrentResponse=function(){return this.currentResponse},t.prototype.reloadCaptcha=function(){this.setupComponent()},t.prototype.ensureCaptchaElem=function(t){var e=document.getElementById(t);if(!e)throw Error("Captcha element with id '"+t+"' was not found");this.captchaElem=e},t.prototype.renderReCaptcha=function(){this.captchaId=this.reCaptchaApi.render(this.captchaElemId,this.getCaptchaProperties()),this.ready.next()},t.prototype.handleCallback=function(t){var e=this;this.currentResponse=t,this.success.next(t),this.zone.run(function(){e.onChange(t),e.onTouched(t)}),this.resetCaptchaAfterSuccess&&this.resetCaptcha()},t.prototype.ensureReCaptchaScript=function(){window[this.globalReCaptchaProperty]={},this.reCaptchaApi={},this.registerReCaptchaScript()},t.prototype.registerReCaptchaScript=function(){var t=document.createElement("script");t.innerHTML="",t.src="https://www.google.com/recaptcha/api.js?onload="+this.windowOnLoadCallbackProperty+"&render=explicit"+this.getLanguageParam(),t.async=!0,t.defer=!0,this.captchaScriptElem.nativeElement.appendChild(t)},t.prototype.getLanguageParam=function(){return this.hl?"&hl="+this.hl:""},t.prototype.getPseudoUniqueNumber=function(){return(new Date).getUTCMilliseconds()+Math.floor(9999*Math.random())},t.prototype.isReCaptchaApiDefined=function(){return!!window[this.globalReCaptchaProperty]},t.prototype.setupComponent=function(){var t=this;this.captchaSpecificSetup(),this.createAndSetCaptchaElem(),window[this.windowOnLoadCallbackProperty]=function(){return t.zone.run(t.onloadCallback.bind(t))},this.ensureReCaptchaScript()},t.prototype.onloadCallback=function(){if(this.reCaptchaApi=grecaptcha,!this.reCaptchaApi)throw Error("ReCaptcha Api was not initialized correctly");this.isLoaded=!0,this.load.next(),this.renderReCaptcha(),this.setupAfterLoad&&(this.setupAfterLoad=!1,this.setupComponent())},t.prototype.generateNewElemId=function(){return this.captchaElemPrefix+this.getPseudoUniqueNumber()},t.prototype.createAndSetCaptchaElem=function(){if(this.captchaElemId=this.generateNewElemId(),!this.captchaElemId)throw Error("Captcha elem Id is not set");this.captchaWrapperElem.nativeElement.innerHTML="";var t=this.renderer.createElement("div");t.id=this.captchaElemId,this.renderer.appendChild(this.captchaWrapperElem.nativeElement,t),this.ensureCaptchaElem(this.captchaElemId)},t.prototype.writeValue=function(t){},t.prototype.registerOnChange=function(t){this.onChange=t},t.prototype.registerOnTouched=function(t){this.onTouched=t},t.propDecorators={siteKey:[{type:o.Input}],type:[{type:o.Input}],hl:[{type:o.Input}],tabIndex:[{type:o.Input}],success:[{type:o.Output}],load:[{type:o.Output}],ready:[{type:o.Output}],captchaWrapperElem:[{type:o.ViewChild,args:["captchaWrapperElem"]}],captchaScriptElem:[{type:o.ViewChild,args:["captchaScriptElem"]}]},t}(),c=function(){},s=function(a){function t(t,e,n,r){var i=a.call(this,t,e,n,r)||this;return i.renderer=t,i.zone=e,i.injector=n,i.globalConfig=r,i.windowOnErrorCallbackProperty="ngx_captcha_error_callback",i.windowOnExpireCallbackProperty="ngx_captcha_expire_callback",i.theme="light",i.size="normal",i.expire=new o.EventEmitter,i.error=new o.EventEmitter,i.recaptchaType=p.ReCaptcha2,i}return i(t,a),t.prototype.ngOnChanges=function(t){a.prototype.ngOnChanges.call(this,t)},t.prototype.ngOnDestroy=function(){a.prototype.ngOnDestroy.call(this),window[this.windowOnErrorCallbackProperty]={},window[this.windowOnExpireCallbackProperty]={}},t.prototype.captchaSpecificSetup=function(){this.registerCallbacks()},t.prototype.getCaptchaProperties=function(){var e=this;return{sitekey:this._siteKey,callback:function(t){return e.zone.run(function(){return e.handleCallback(t)})},"expired-callback":function(){return e.zone.run(function(){return e.handleExpireCallback()})},"error-callback":function(){return e.zone.run(function(){return e.handleErrorCallback()})},theme:this.theme,type:this.type,size:this.size,tabindex:this.tabIndex}},t.prototype.registerCallbacks=function(){window[this.windowOnErrorCallbackProperty]=this.handleErrorCallback.bind(this),window[this.windowOnExpireCallbackProperty]=this.handleExpireCallback.bind(this)},t.prototype.handleErrorCallback=function(){var t=this;this.zone.run(function(){t.onChange(null),t.onTouched(null)}),this.error.next()},t.prototype.handleExpireCallback=function(){this.expire.next(),this.resetCaptcha()},t.decorators=[{type:o.Component,args:[{selector:"ngx-recaptcha2",template:"\n <div #captchaScriptElem></div>\n <div #captchaWrapperElem></div>",providers:[{provide:e.NG_VALUE_ACCESSOR,useExisting:o.forwardRef(function(){return t}),multi:!0}]}]}],t.ctorParameters=function(){return[{type:o.Renderer2},{type:o.NgZone},{type:o.Injector},{type:c,decorators:[{type:o.Optional}]}]},t.propDecorators={theme:[{type:o.Input}],size:[{type:o.Input}],hl:[{type:o.Input}],expire:[{type:o.Output}],error:[{type:o.Output}]},t}(a),h=function(a){function t(t,e,n,r){var i=a.call(this,t,e,n,r)||this;return i.renderer=t,i.zone=e,i.injector=n,i.globalConfig=r,i.size="invisible",i.badge="bottomright",i.recaptchaType=p.InvisibleReCaptcha,i}return i(t,a),t.prototype.ngOnChanges=function(t){a.prototype.ngOnChanges.call(this,t)},t.prototype.execute=function(){this.reCaptchaApi.execute(this.captchaId)},t.prototype.captchaSpecificSetup=function(){},t.prototype.getCaptchaProperties=function(){var e=this;return{sitekey:this._siteKey,callback:function(t){return e.zone.run(function(){return e.handleCallback(t)})},badge:this.badge,type:this.type,tabindex:this.tabIndex,size:this.size}},t.decorators=[{type:o.Component,args:[{selector:"ngx-invisible-recaptcha",template:"\n <div #captchaScriptElem></div>\n <div #captchaWrapperElem></div>",providers:[{provide:e.NG_VALUE_ACCESSOR,useExisting:o.forwardRef(function(){return t}),multi:!0}]}]}],t.ctorParameters=function(){return[{type:o.Renderer2},{type:o.NgZone},{type:o.Injector},{type:c,decorators:[{type:o.Optional}]}]},t.propDecorators={badge:[{type:o.Input}],hl:[{type:o.Input}]},t}(a),l=function(){function e(){}return e.forRoot=function(t){return{ngModule:e,providers:[{provide:c,useValue:t}]}},e.decorators=[{type:o.NgModule,args:[{imports:[n.CommonModule],declarations:[s,h],exports:[s,h]}]}],e}();t.ReCaptcha2Component=s,t.InvisibleReCaptchaComponent=h,t.NgxCaptchaConfig=c,t.NgxCaptchaModule=l,t.ɵa=a,Object.defineProperty(t,"__esModule",{value:!0})});
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/forms"),require("@angular/common")):"function"==typeof define&&define.amd?define("ngx-captcha",["exports","@angular/core","@angular/forms","@angular/common"],e):e(t["ngx-captcha"]={},t.ng.core,t.ng.forms,t.ng.common)}(this,function(t,a,e,n){"use strict";var r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)};function i(t,e){function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var p={InvisibleReCaptcha:0,ReCaptcha2:1};p[p.InvisibleReCaptcha]="InvisibleReCaptcha",p[p.ReCaptcha2]="ReCaptcha2";var o=function(){function t(t,e,n,r){this.renderer=t,this.zone=e,this.injector=n,this.globalConfig=r,this.setupAfterLoad=!1,this.windowOnLoadCallbackProperty="ngx_onload_callback_"+this.getPseudoUniqueNumber(),this.globalReCaptchaProperty="grecaptcha",this.captchaElemPrefix="ngx_captcha_id_",this.type="image",this.tabIndex=0,this.success=new a.EventEmitter,this.load=new a.EventEmitter,this.ready=new a.EventEmitter,this.resetCaptchaAfterSuccess=!1,this.isLoaded=!1}return t.prototype.ngAfterViewInit=function(){this.control=this.injector.get(e.NgControl).control},t.prototype.getGlobalSiteKey=function(){if(this.globalConfig){if(this.recaptchaType===p.InvisibleReCaptcha){if(!this.globalConfig.invisibleCaptchaSiteKey)throw Error("SiteKey for invisible reCaptcha is not set!");return this.globalConfig.invisibleCaptchaSiteKey instanceof Function?this.globalConfig.invisibleCaptchaSiteKey():this.globalConfig.invisibleCaptchaSiteKey}if(this.recaptchaType===p.ReCaptcha2){if(!this.globalConfig.reCaptcha2SiteKey)throw Error("SiteKey for reCaptcha2 is not set!");return this.globalConfig.reCaptcha2SiteKey instanceof Function?this.globalConfig.reCaptcha2SiteKey():this.globalConfig.reCaptcha2SiteKey}throw Error("Unsupported captcha type '"+this.recaptchaType+"'!")}},t.prototype.ngOnChanges=function(t){this.siteKey?this.siteKey instanceof Function?this._siteKey=this.siteKey():this._siteKey=this.siteKey:this._siteKey=this.getGlobalSiteKey(),this.setupComponent()},t.prototype.ngOnDestroy=function(){window[this.windowOnLoadCallbackProperty]={},window[this.globalReCaptchaProperty]={}},t.prototype.getResponse=function(){return this.reCaptchaApi.getResponse(this.captchaId)},t.prototype.getCaptchaId=function(){return this.captchaId},t.prototype.resetCaptcha=function(){var t=this;this.zone.run(function(){t.onChange(null),t.onTouched(null)})},t.prototype.getCurrentResponse=function(){return this.currentResponse},t.prototype.reloadCaptcha=function(){this.setupComponent()},t.prototype.ensureCaptchaElem=function(t){var e=document.getElementById(t);if(!e)throw Error("Captcha element with id '"+t+"' was not found");this.captchaElem=e},t.prototype.renderReCaptcha=function(){this.captchaId=this.reCaptchaApi.render(this.captchaElemId,this.getCaptchaProperties()),this.ready.next()},t.prototype.handleCallback=function(t){var e=this;this.currentResponse=t,this.success.next(t),this.zone.run(function(){e.onChange(t),e.onTouched(t)}),this.resetCaptchaAfterSuccess&&this.resetCaptcha()},t.prototype.ensureReCaptchaScript=function(){window[this.globalReCaptchaProperty]={},this.reCaptchaApi={},this.registerReCaptchaScript()},t.prototype.registerReCaptchaScript=function(){var t=document.createElement("script");t.innerHTML="",t.src="https://www.google.com/recaptcha/api.js?onload="+this.windowOnLoadCallbackProperty+"&render=explicit"+this.getLanguageParam(),t.async=!0,t.defer=!0,this.captchaScriptElem.nativeElement.appendChild(t)},t.prototype.getLanguageParam=function(){return this.hl?"&hl="+this.hl:""},t.prototype.getPseudoUniqueNumber=function(){return(new Date).getUTCMilliseconds()+Math.floor(9999*Math.random())},t.prototype.isReCaptchaApiDefined=function(){return!!window[this.globalReCaptchaProperty]},t.prototype.setupComponent=function(){var t=this;this.captchaSpecificSetup(),this.createAndSetCaptchaElem(),window[this.windowOnLoadCallbackProperty]=function(){return t.zone.run(t.onloadCallback.bind(t))},this.ensureReCaptchaScript()},t.prototype.onloadCallback=function(){if(this.reCaptchaApi=grecaptcha,!this.reCaptchaApi)throw Error("ReCaptcha Api was not initialized correctly");this.isLoaded=!0,this.load.next(),this.renderReCaptcha(),this.setupAfterLoad&&(this.setupAfterLoad=!1,this.setupComponent())},t.prototype.generateNewElemId=function(){return this.captchaElemPrefix+this.getPseudoUniqueNumber()},t.prototype.createAndSetCaptchaElem=function(){if(this.captchaElemId=this.generateNewElemId(),!this.captchaElemId)throw Error("Captcha elem Id is not set");this.captchaWrapperElem.nativeElement.innerHTML="";var t=this.renderer.createElement("div");t.id=this.captchaElemId,this.renderer.appendChild(this.captchaWrapperElem.nativeElement,t),this.ensureCaptchaElem(this.captchaElemId)},t.prototype.writeValue=function(t){},t.prototype.registerOnChange=function(t){this.onChange=t},t.prototype.registerOnTouched=function(t){this.onTouched=t},t.propDecorators={siteKey:[{type:a.Input}],type:[{type:a.Input}],hl:[{type:a.Input}],tabIndex:[{type:a.Input}],success:[{type:a.Output}],load:[{type:a.Output}],ready:[{type:a.Output}],captchaWrapperElem:[{type:a.ViewChild,args:["captchaWrapperElem"]}],captchaScriptElem:[{type:a.ViewChild,args:["captchaScriptElem"]}]},t}(),c=function u(){},s=function(o){function t(t,e,n,r){var i=o.call(this,t,e,n,r)||this;return i.renderer=t,i.zone=e,i.injector=n,i.globalConfig=r,i.windowOnErrorCallbackProperty="ngx_captcha_error_callback",i.windowOnExpireCallbackProperty="ngx_captcha_expire_callback",i.theme="light",i.size="normal",i.expire=new a.EventEmitter,i.error=new a.EventEmitter,i.recaptchaType=p.ReCaptcha2,i}return i(t,o),t.prototype.ngOnChanges=function(t){o.prototype.ngOnChanges.call(this,t)},t.prototype.ngOnDestroy=function(){o.prototype.ngOnDestroy.call(this),window[this.windowOnErrorCallbackProperty]={},window[this.windowOnExpireCallbackProperty]={}},t.prototype.captchaSpecificSetup=function(){this.registerCallbacks()},t.prototype.getCaptchaProperties=function(){var e=this;return{sitekey:this._siteKey,callback:function(t){return e.zone.run(function(){return e.handleCallback(t)})},"expired-callback":function(){return e.zone.run(function(){return e.handleExpireCallback()})},"error-callback":function(){return e.zone.run(function(){return e.handleErrorCallback()})},theme:this.theme,type:this.type,size:this.size,tabindex:this.tabIndex}},t.prototype.registerCallbacks=function(){window[this.windowOnErrorCallbackProperty]=this.handleErrorCallback.bind(this),window[this.windowOnExpireCallbackProperty]=this.handleExpireCallback.bind(this)},t.prototype.handleErrorCallback=function(){var t=this;this.zone.run(function(){t.onChange(null),t.onTouched(null)}),this.error.next()},t.prototype.handleExpireCallback=function(){this.expire.next(),this.resetCaptcha()},t.decorators=[{type:a.Component,args:[{selector:"ngx-recaptcha2",template:"\n <div #captchaScriptElem></div>\n <div #captchaWrapperElem></div>",providers:[{provide:e.NG_VALUE_ACCESSOR,useExisting:a.forwardRef(function(){return t}),multi:!0}]}]}],t.ctorParameters=function(){return[{type:a.Renderer2},{type:a.NgZone},{type:a.Injector},{type:c,decorators:[{type:a.Optional}]}]},t.propDecorators={theme:[{type:a.Input}],size:[{type:a.Input}],hl:[{type:a.Input}],expire:[{type:a.Output}],error:[{type:a.Output}]},t}(o),h=function(o){function t(t,e,n,r){var i=o.call(this,t,e,n,r)||this;return i.renderer=t,i.zone=e,i.injector=n,i.globalConfig=r,i.size="invisible",i.badge="bottomright",i.recaptchaType=p.InvisibleReCaptcha,i}return i(t,o),t.prototype.ngOnChanges=function(t){o.prototype.ngOnChanges.call(this,t)},t.prototype.execute=function(){this.reCaptchaApi.execute(this.captchaId)},t.prototype.captchaSpecificSetup=function(){},t.prototype.getCaptchaProperties=function(){var e=this;return{sitekey:this._siteKey,callback:function(t){return e.zone.run(function(){return e.handleCallback(t)})},badge:this.badge,type:this.type,tabindex:this.tabIndex,size:this.size}},t.decorators=[{type:a.Component,args:[{selector:"ngx-invisible-recaptcha",template:"\n <div #captchaScriptElem></div>\n <div #captchaWrapperElem></div>",providers:[{provide:e.NG_VALUE_ACCESSOR,useExisting:a.forwardRef(function(){return t}),multi:!0}]}]}],t.ctorParameters=function(){return[{type:a.Renderer2},{type:a.NgZone},{type:a.Injector},{type:c,decorators:[{type:a.Optional}]}]},t.propDecorators={badge:[{type:a.Input}],hl:[{type:a.Input}]},t}(o),l=function(){function e(){}return e.forRoot=function(t){return{ngModule:e,providers:[{provide:c,useValue:t}]}},e.decorators=[{type:a.NgModule,args:[{imports:[n.CommonModule],declarations:[s,h],exports:[s,h]}]}],e}();t.ReCaptcha2Component=s,t.InvisibleReCaptchaComponent=h,t.NgxCaptchaConfig=c,t.NgxCaptchaModule=l,t.ɵa=o,Object.defineProperty(t,"__esModule",{value:!0})});
//# sourceMappingURL=ngx-captcha.umd.min.js.map
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -157,3 +157,2 @@ import { ElementRef, EventEmitter, Input, Output, ViewChild, } from '@angular/core';

});
this.reCaptchaApi.reset(this.captchaId);
}

@@ -179,3 +178,4 @@ /**

ensureCaptchaElem(captchaElemId) {
const /** @type {?} */ captchaElem = document.getElementById(captchaElemId);
/** @type {?} */
const captchaElem = document.getElementById(captchaElemId);
if (!captchaElem) {

@@ -226,3 +226,4 @@ throw Error(`Captcha element with id '${captchaElemId}' was not found`);

registerReCaptchaScript() {
const /** @type {?} */ script = document.createElement('script');
/** @type {?} */
const script = document.createElement('script');
script.innerHTML = '';

@@ -314,4 +315,4 @@ script.src =

this.captchaWrapperElem.nativeElement.innerHTML = '';
// create new wrapper for captcha
const /** @type {?} */ newElem = this.renderer.createElement('div');
/** @type {?} */
const newElem = this.renderer.createElement('div');
newElem.id = this.captchaElemId;

@@ -357,3 +358,3 @@ this.renderer.appendChild(this.captchaWrapperElem.nativeElement, newElem);

};
function BaseReCaptchaComponent_tsickle_Closure_declarations() {
if (false) {
/**

@@ -497,2 +498,2 @@ * Form Control to be enable usage in reactive forms

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1yZWNhcHRjaGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWNhcHRjaGEvIiwic291cmNlcyI6WyJsaWIvYmFzZS1yZWNhcHRjaGEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBRUwsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEQsT0FBTyxFQUFxQyxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUk5RSxNQUFNOzs7Ozs7O0lBbUhGLFlBQ2MsUUFBbUIsRUFDbkIsSUFBWSxFQUNaLFFBQWtCLEVBQ2xCLFlBQStCO1FBSC9CLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsaUJBQVksR0FBWixZQUFZLENBQW1COzhCQWpIcEIsS0FBSzs7Ozs0Q0FLb0Isc0JBQXNCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFOzs7O3VDQUsxRCxZQUFZOzs7O2lDQUtsQixpQkFBaUI7Ozs7b0JBZ0JyQixPQUFPOzs7O3dCQVV0QixDQUFDOzs7Ozt1QkFNRCxJQUFJLFlBQVksRUFBVTs7OztvQkFLN0IsSUFBSSxZQUFZLEVBQVU7Ozs7cUJBS3pCLElBQUksWUFBWSxFQUFROzs7Ozt3Q0F3QkwsS0FBSzs7Ozt3QkFLeEIsS0FBSztLQTRCbkI7Ozs7SUFFSixlQUFlO1FBQ2IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUM7S0FDckQ7Ozs7SUFZTyxnQkFBZ0I7UUFDcEIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7O1lB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QUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7O1FBR3JELHVCQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRCxPQUFPLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFFaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQzs7UUFHMUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs7Ozs7Ozs7SUFPeEMsVUFBVSxDQUFDLEdBQVE7Ozs7OztJQUtuQixnQkFBZ0IsQ0FBQyxFQUFPO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDOzs7Ozs7O0lBTWQsaUJBQWlCLENBQUMsRUFBTztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQzs7OztzQkFoWHJCLEtBQUs7bUJBS0wsS0FBSztpQkFLTCxLQUFLO3VCQUtMLEtBQUs7c0JBTUwsTUFBTTttQkFLTixNQUFNO29CQUtOLE1BQU07aUNBRU4sU0FBUyxTQUFDLG9CQUFvQjtnQ0FDOUIsU0FBUyxTQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgTmdab25lLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFJlQ2FwdGNoYVR5cGUgfSBmcm9tICcuL3JlY2FwdGNoYS10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBOZ3hDYXB0Y2hhQ29uZmlnIH0gZnJvbSAnLi9yZWNhcHRjaGEuY29uZmlnJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5kZWNsYXJlIHZhciBncmVjYXB0Y2hhOiBhbnk7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVJlQ2FwdGNoYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgICAvKipcclxuICAgICAqIEZvcm0gQ29udHJvbCB0byBiZSBlbmFibGUgdXNhZ2UgaW4gcmVhY3RpdmUgZm9ybXNcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBjb250cm9sOiBGb3JtQ29udHJvbDtcclxuXHJcbiAgICBwcml2YXRlIHNldHVwQWZ0ZXJMb2FkID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIE5hbWUgb2YgdGhlIGdsb2JhbCBjYWxsYmFja1xyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCByZWFkb25seSB3aW5kb3dPbkxvYWRDYWxsYmFja1Byb3BlcnR5ID0gJ25neF9vbmxvYWRfY2FsbGJhY2tfJyArIHRoaXMuZ2V0UHNldWRvVW5pcXVlTnVtYmVyKCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOYW1lIG9mIHRoZSBnbG9iYWwgcmVDYXB0Y2hhIHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCByZWFkb25seSBnbG9iYWxSZUNhcHRjaGFQcm9wZXJ0eSA9ICdncmVjYXB0Y2hhJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZWZpeCBvZiB0aGUgY2FwdGNoYSBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCByZWFkb25seSBjYXB0Y2hhRWxlbVByZWZpeCA9ICduZ3hfY2FwdGNoYV9pZF8nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICAqIEdvb2dsZSdzIHNpdGUga2V5LlxyXG4gICAgICAqIFlvdSBjYW4gZmluZCB0aGlzIHVuZGVyIGh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vcmVjYXB0Y2hhXHJcbiAgICAgICovXHJcbiAgICBwcm90ZWN0ZWQgX3NpdGVLZXk/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENvbmZpZyB0byB1c2VcclxuICAgICovXHJcbiAgICBASW5wdXQoKSBzaXRlS2V5OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFR5cGVcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgdHlwZTogJ2F1ZGlvJyB8ICdpbWFnZScgPSAnaW1hZ2UnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGFuZ3VhZ2UgY29kZS4gQXV0by1kZXRlY3RzIHRoZSB1c2VyJ3MgbGFuZ3VhZ2UgaWYgdW5zcGVjaWZpZWQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGhsOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFRhYiBpbmRleFxyXG4gICAgKi9cclxuICAgIEBJbnB1dCgpIHRhYkluZGV4ID0gMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGxlZCB3aGVuIGNhcHRjaGEgcmVjZWl2ZXMgc3VjY2Vzc2Z1bCByZXNwb25zZS5cclxuICAgICAqIENhcHRjaGEgcmVzcG9uc2UgdG9rZW4gaXMgcGFzc2VkIHRvIGV2ZW50LlxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgc3VjY2VzcyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDYWxsZWQgd2hlbiBjYXB0Y2hhIGlzIGxvYWRlZC4gRXZlbnQgcmVjZWl2ZXMgaWQgb2YgdGhlIGNhcHRjaGFcclxuICAgICovXHJcbiAgICBAT3V0cHV0KCkgbG9hZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDYWxsZWQgd2hlbiBjYXB0Y2hhIGlzIGxvYWRlZCAmIHJlYWR5LiBJLmUuIHdoZW4geW91IG5lZWQgdG8gZXhlY3V0ZSBjYXB0Y2hhIG9uIGNvbXBvbmVudCBsb2FkLlxyXG4gICAgKi9cclxuICAgIEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdjYXB0Y2hhV3JhcHBlckVsZW0nKSBjYXB0Y2hhV3JhcHBlckVsZW06IEVsZW1lbnRSZWY7XHJcbiAgICBAVmlld0NoaWxkKCdjYXB0Y2hhU2NyaXB0RWxlbScpIGNhcHRjaGFTY3JpcHRFbGVtOiBFbGVtZW50UmVmO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FwdGNoYSBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBjYXB0Y2hhRWxlbT86IEhUTUxFbGVtZW50O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWQgb2YgdGhlIGNhcHRjaGEgZWxlbVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgY2FwdGNoYUlkPzogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSG9sZHMgbGFzdCByZXNwb25zZSB2YWx1ZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgY3VycmVudFJlc3BvbnNlPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWYgZW5hYmxlZCwgY2FwdGNoYSB3aWxsIHJlc2V0IGFmdGVyIHJlY2VpdmluZyBzdWNjZXNzIHJlc3BvbnNlLiBUaGlzIGlzIHVzZWZ1bFxyXG4gICAgICogd2hlbiBpbnZpc2libGUgY2FwdGNoYSBuZWVkIHRvIGJlIHJlc29sdmVkIG11bHRpcGxlIHRpbWVzIG9uIHNhbWUgcGFnZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcmVzZXRDYXB0Y2hhQWZ0ZXJTdWNjZXNzID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgaWYgY2FwdGNoYSBpcyBsb2FkZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGlzTG9hZGVkID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFJlZmVyZW5jZSB0byBnbG9iYWwgcmVDYXB0Y2hhIEFQSVxyXG4gICAgKi9cclxuICAgIHB1YmxpYyByZUNhcHRjaGFBcGk/OiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZCBvZiB0aGUgRE9NIGVsZW1lbnQgd3JhcHBpbmcgY2FwdGNoYVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2FwdGNoYUVsZW1JZD86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhcHRjaGEgdHlwZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVjYXB0Y2hhVHlwZTogUmVDYXB0Y2hhVHlwZTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmVxdWlyZWQgYnkgQ29udHJvbFZhbHVlQWNjZXNzb3JcclxuICAgKi9cclxuICAgIHByb3RlY3RlZCBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcgKSA9PiB2b2lkO1xyXG4gICAgcHJvdGVjdGVkIG9uVG91Y2hlZDogKHZhbHVlOiBzdHJpbmcgKSA9PiB2b2lkO1xyXG5cclxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgICAgICBwcm90ZWN0ZWQgem9uZTogTmdab25lLFxyXG4gICAgICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJvdGVjdGVkIGdsb2JhbENvbmZpZz86IE5neENhcHRjaGFDb25maWcsXHJcbiAgICApIHt9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wpLmNvbnRyb2w7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEdldHMgcmVDYXB0Y2hhIHByb3BlcnRpZXNcclxuICAgICovXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0Q2FwdGNoYVByb3BlcnRpZXMoKTogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXNlZCBmb3IgY2FwdGNoYSBzcGVjaWZpYyBzZXR1cFxyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBjYXB0Y2hhU3BlY2lmaWNTZXR1cCgpOiB2b2lkO1xyXG5cclxuICAgIHByaXZhdGUgZ2V0R2xvYmFsU2l0ZUtleSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICh0aGlzLmdsb2JhbENvbmZpZykge1xyXG4gICAgICAgICAgICAvLyBJbnZpc2libGUgY2FwdGNoYVxyXG4gICAgICAgICAgICBpZiAodGhpcy5yZWNhcHRjaGFUeXBlID09PSBSZUNhcHRjaGFUeXBlLkludmlzaWJsZVJlQ2FwdGNoYSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmdsb2JhbENvbmZpZy5pbnZpc2libGVDYXB0Y2hhU2l0ZUtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBTaXRlS2V5IGZvciBpbnZpc2libGUgcmVDYXB0Y2hhIGlzIG5vdCBzZXQhYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2xvYmFsQ29uZmlnLmludmlzaWJsZUNhcHRjaGFTaXRlS2V5IGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nbG9iYWxDb25maWcuaW52aXNpYmxlQ2FwdGNoYVNpdGVLZXkoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2xvYmFsQ29uZmlnLmludmlzaWJsZUNhcHRjaGFTaXRlS2V5O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIHJlY2FwdGNoYSAyXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZWNhcHRjaGFUeXBlID09PSBSZUNhcHRjaGFUeXBlLlJlQ2FwdGNoYTIpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5nbG9iYWxDb25maWcucmVDYXB0Y2hhMlNpdGVLZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgU2l0ZUtleSBmb3IgcmVDYXB0Y2hhMiBpcyBub3Qgc2V0IWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmdsb2JhbENvbmZpZy5yZUNhcHRjaGEyU2l0ZUtleSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2xvYmFsQ29uZmlnLnJlQ2FwdGNoYTJTaXRlS2V5KCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdsb2JhbENvbmZpZy5yZUNhcHRjaGEyU2l0ZUtleTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgVW5zdXBwb3J0ZWQgY2FwdGNoYSB0eXBlICcke3RoaXMucmVjYXB0Y2hhVHlwZX0nIWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNpdGVLZXkpIHtcclxuICAgICAgICAgICAgLy8gdXNlIGdsb2JhbCBzaXRlIGtleSBpZiBrZXkgaXMgbm90IGF2YWlsYWJsZVxyXG4gICAgICAgICAgICB0aGlzLl9zaXRlS2V5ID0gdGhpcy5nZXRHbG9iYWxTaXRlS2V5KCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gdXNlIGNvbW5wb25lbnQgc2l0ZSBrZXlcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2l0ZUtleSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zaXRlS2V5ID0gdGhpcy5zaXRlS2V5KCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zaXRlS2V5ID0gdGhpcy5zaXRlS2V5O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0dXBDb21wb25lbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB3aW5kb3dbdGhpcy53aW5kb3dPbkxvYWRDYWxsYmFja1Byb3BlcnR5XSA9IHt9O1xyXG4gICAgICAgIHdpbmRvd1t0aGlzLmdsb2JhbFJlQ2FwdGNoYVByb3BlcnR5XSA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBjYXB0Y2hhIHJlc3BvbnNlIGFzIHBlciByZUNhcHRjaGEgZG9jc1xyXG4gICAgKi9cclxuICAgIGdldFJlc3BvbnNlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVDYXB0Y2hhQXBpLmdldFJlc3BvbnNlKHRoaXMuY2FwdGNoYUlkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgSWQgb2YgY2FwdGNoYSB3aWRnZXRcclxuICAgICovXHJcbiAgICBnZXRDYXB0Y2hhSWQoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jYXB0Y2hhSWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFJlc2V0cyBjYXB0Y2hhXHJcbiAgICAqL1xyXG4gICAgcmVzZXRDYXB0Y2hhKCk6IHZvaWQge1xyXG4gICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkKG51bGwpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMucmVDYXB0Y2hhQXBpLnJlc2V0KHRoaXMuY2FwdGNoYUlkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgbGFzdCBzdWJtaXR0ZWQgY2FwdGNoYSByZXNwb25zZVxyXG4gICAgKi9cclxuICAgIGdldEN1cnJlbnRSZXNwb25zZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRSZXNwb25zZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbG9hZCBjYXB0Y2hhLiBVc2VmdWwgd2hlbiBwcm9wZXJ0aWVzIChpLmUuIHRoZW1lKSBjaGFuZ2VkIGFuZCBjYXB0Y2hhIG5lZWQgdG8gcmVmbGVjdCB0aGVtXHJcbiAgICAqL1xyXG4gICAgcmVsb2FkQ2FwdGNoYSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNldHVwQ29tcG9uZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGVuc3VyZUNhcHRjaGFFbGVtKGNhcHRjaGFFbGVtSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNhcHRjaGFFbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY2FwdGNoYUVsZW1JZCk7XHJcblxyXG4gICAgICAgIGlmICghY2FwdGNoYUVsZW0pIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYENhcHRjaGEgZWxlbWVudCB3aXRoIGlkICcke2NhcHRjaGFFbGVtSWR9JyB3YXMgbm90IGZvdW5kYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBhc3NpZ24gY2FwdGNoYSBhbGVtXHJcbiAgICAgICAgdGhpcy5jYXB0Y2hhRWxlbSA9IGNhcHRjaGFFbGVtO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzcG9uc2libGUgZm9yIGluc3RhbnRpYXRpbmcgY2FwdGNoYSBlbGVtZW50XHJcbiAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHJlbmRlclJlQ2FwdGNoYSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNhcHRjaGFJZCA9IHRoaXMucmVDYXB0Y2hhQXBpLnJlbmRlcih0aGlzLmNhcHRjaGFFbGVtSWQsIHRoaXMuZ2V0Q2FwdGNoYVByb3BlcnRpZXMoKSk7XHJcbiAgICAgICAgdGhpcy5yZWFkeS5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsZWQgd2hlbiBjYXB0Y2hhIHJlY2VpdmVzIHJlc3BvbnNlXHJcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2sgQ2FsbGJhY2tcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGhhbmRsZUNhbGxiYWNrKGNhbGxiYWNrOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRSZXNwb25zZSA9IGNhbGxiYWNrO1xyXG4gICAgICAgIHRoaXMuc3VjY2Vzcy5uZXh0KGNhbGxiYWNrKTtcclxuXHJcbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlKGNhbGxiYWNrKTtcclxuICAgICAgICAgIHRoaXMub25Ub3VjaGVkKGNhbGxiYWNrKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucmVzZXRDYXB0Y2hhQWZ0ZXJTdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRDYXB0Y2hhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVnaXN0ZXJzIHJlQ2FwdGNoYSBzY3JpcHQgaWYgaXRzIG5vdCBhdmFpbGFibGVcclxuICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZW5zdXJlUmVDYXB0Y2hhU2NyaXB0KCk6IHZvaWQge1xyXG4gICAgICAgIHdpbmRvd1t0aGlzLmdsb2JhbFJlQ2FwdGNoYVByb3BlcnR5XSA9IHt9O1xyXG4gICAgICAgIHRoaXMucmVDYXB0Y2hhQXBpID0ge307XHJcblxyXG4gICAgICAgIHRoaXMucmVnaXN0ZXJSZUNhcHRjaGFTY3JpcHQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZCBzY3JpcHQgdG8gcGFnZSB3aXRoIHJlZmVyZW5jZSB0byBjYXB0Y2hhIEFQSS4gVGhpcyBoYXMgdG8gYmUgZG9uZSBtYW51YWxseVxyXG4gICAgICogYXMgd2Ugd2FudCB0byBhdm9pZCBhZGRpbmcgc2NyaXB0IHRvIG1haW4gaW5kZXguaHRtbFxyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCByZWdpc3RlclJlQ2FwdGNoYVNjcmlwdCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuICAgICAgICBzY3JpcHQuaW5uZXJIVE1MID0gJyc7XHJcbiAgICAgICAgc2NyaXB0LnNyYyA9XHJcbiAgICAgICAgICAgIGBodHRwczovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS9hcGkuanM/b25sb2FkPSR7dGhpcy53aW5kb3dPbkxvYWRDYWxsYmFja1Byb3BlcnR5fSZyZW5kZXI9ZXhwbGljaXQke3RoaXMuZ2V0TGFuZ3VhZ2VQYXJhbSgpfWA7XHJcbiAgICAgICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcclxuICAgICAgICBzY3JpcHQuZGVmZXIgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLmNhcHRjaGFTY3JpcHRFbGVtLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0TGFuZ3VhZ2VQYXJhbSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghdGhpcy5obCkge1xyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gYCZobD0ke3RoaXMuaGx9YDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFBzZXVkb1VuaXF1ZU51bWJlcigpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldFVUQ01pbGxpc2Vjb25kcygpICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogOTk5OSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVja3MgaWYgcmVDYXB0Y2hhIEFwaSBpcyBkZWZpbmVkLiBJdCBtYXkgaGFwcGVuIHRoYXQgd2hlbiBuYXZpZ2F0aW5nIGZyb20gYW5ndWxhciBjb21wb25lbnQgdG8gYW5vdGhlclxyXG4gICAgICogdmlhIHJvdXRlciwgdGhlIEFwaSB3YXMgYWxyZWFkeSBsb2FkZWQgcHJldmlvdXNseS4gSW4gc3VjaCBjYXNlcywgZG8gbm90IHJlbmRlciBzY3JpcHQgYWdhaW4uXHJcbiAgICAqL1xyXG4gICAgcHJpdmF0ZSBpc1JlQ2FwdGNoYUFwaURlZmluZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCF3aW5kb3dbdGhpcy5nbG9iYWxSZUNhcHRjaGFQcm9wZXJ0eV0pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldHVwQ29tcG9uZW50KCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGNhcHRjaGEgc3BlY2lmaWMgc2V0dXBcclxuICAgICAgICB0aGlzLmNhcHRjaGFTcGVjaWZpY1NldHVwKCk7XHJcblxyXG4gICAgICAgIC8vIGNyZWF0ZSBjYXB0Y2hhIHdyYXBwZXJcclxuICAgICAgICB0aGlzLmNyZWF0ZUFuZFNldENhcHRjaGFFbGVtKCk7XHJcblxyXG4gICAgICAgIC8vIHdlIG5lZWQgdG8gcGF0Y2ggdGhlIGNhbGxiYWNrIHRocm91Z2ggZ2xvYmFsIHZhcmlhYmxlLCBvdGhlcndpc2UgY2FsbGJhY2sgaXMgbm90IGFjY2Vzc2libGVcclxuICAgICAgICAvLyBub3RlOiBodHRwczovL2dpdGh1Yi5jb20vRW5uZ2FnZS9uZ3gtY2FwdGNoYS9pc3N1ZXMvMlxyXG4gICAgICAgIHdpbmRvd1t0aGlzLndpbmRvd09uTG9hZENhbGxiYWNrUHJvcGVydHldID0gPGFueT4oKCkgPT4gdGhpcy56b25lLnJ1bihcclxuICAgICAgICAgICAgdGhpcy5vbmxvYWRDYWxsYmFjay5iaW5kKHRoaXMpXHJcbiAgICAgICAgKSk7XHJcblxyXG4gICAgICAgIC8vIGNyZWF0ZSBhbmQgcHV0IHJlQ2FwdGNoYSBzY3JpcHQgdG8gcGFnZVxyXG4gICAgICAgIHRoaXMuZW5zdXJlUmVDYXB0Y2hhU2NyaXB0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENhbGxlZCB3aGVuIGdvb2dsZSdzIHJlY2FwdGNoYSBzY3JpcHQgaXMgcmVhZHlcclxuICAgICovXHJcbiAgICBwcml2YXRlIG9ubG9hZENhbGxiYWNrKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGFzc2lnbiByZWZlcmVuY2UgdG8gcmVDYXB0Y2hhIEFwaSBvbmNlIGl0cyBsb2FkZWRcclxuICAgICAgICB0aGlzLnJlQ2FwdGNoYUFwaSA9IGdyZWNhcHRjaGE7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5yZUNhcHRjaGFBcGkpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFJlQ2FwdGNoYSBBcGkgd2FzIG5vdCBpbml0aWFsaXplZCBjb3JyZWN0bHlgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGxvYWRlZCBmbGFnXHJcbiAgICAgICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIC8vIGZpcmUgbG9hZCBldmVudFxyXG4gICAgICAgIHRoaXMubG9hZC5uZXh0KCk7XHJcblxyXG4gICAgICAgIC8vIHJlbmRlciBjYXB0Y2hhXHJcbiAgICAgICAgdGhpcy5yZW5kZXJSZUNhcHRjaGEoKTtcclxuXHJcbiAgICAgICAgLy8gc2V0dXAgY29tcG9uZW50IGlmIGl0IHdhcyBmbGFnZ2VkIGFzIHN1Y2hcclxuICAgICAgICBpZiAodGhpcy5zZXR1cEFmdGVyTG9hZCkge1xyXG4gICAgICAgICAgICB0aGlzLnNldHVwQWZ0ZXJMb2FkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dXBDb21wb25lbnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZU5ld0VsZW1JZCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNhcHRjaGFFbGVtUHJlZml4ICsgdGhpcy5nZXRQc2V1ZG9VbmlxdWVOdW1iZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNyZWF0ZUFuZFNldENhcHRjaGFFbGVtKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGdlbmVyYXRlIG5ldyBjYXB0Y2hhIGlkXHJcbiAgICAgICAgdGhpcy5jYXB0Y2hhRWxlbUlkID0gdGhpcy5nZW5lcmF0ZU5ld0VsZW1JZCgpO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuY2FwdGNoYUVsZW1JZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgQ2FwdGNoYSBlbGVtIElkIGlzIG5vdCBzZXRgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHJlbW92ZSBvbGQgaHRtbFxyXG4gICAgICAgIHRoaXMuY2FwdGNoYVdyYXBwZXJFbGVtLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJyc7XHJcblxyXG4gICAgICAgIC8vIGNyZWF0ZSBuZXcgd3JhcHBlciBmb3IgY2FwdGNoYVxyXG4gICAgICAgIGNvbnN0IG5ld0VsZW0gPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIG5ld0VsZW0uaWQgPSB0aGlzLmNhcHRjaGFFbGVtSWQ7XHJcblxyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5jYXB0Y2hhV3JhcHBlckVsZW0ubmF0aXZlRWxlbWVudCwgbmV3RWxlbSk7XHJcblxyXG4gICAgICAgIC8vIHVwZGF0ZSBjYXB0Y2hhIGVsZW1cclxuICAgICAgICB0aGlzLmVuc3VyZUNhcHRjaGFFbGVtKHRoaXMuY2FwdGNoYUVsZW1JZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUbyBiZSBhbGlnbmVkIHdpdGggdGhlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZSB3ZSBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZFxyXG4gICAgICogSG93ZXZlciBhcyB3ZSBkb24ndCB3YW50IHRvIHVwZGF0ZSB0aGUgcmVjYXB0Y2hhLCB0aGlzIGRvZXNuJ3QgbmVlZCB0byBiZSBpbXBsZW1lbnRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge31cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgbWV0aG9kIGhlbHBzIHVzIHRpZSB0b2dldGhlciByZWNhcHRjaGEgYW5kIG91ciBmb3JtQ29udHJvbCB2YWx1ZXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEF0IHNvbWUgcG9pbnQgd2UgbWlnaHQgYmUgaW50ZXJlc3RlZCB3aGV0aGVyIHRoZSB1c2VyIGhhcyB0b3VjaGVkIG91ciBjb21wb25lbnRcclxuICAgICovXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gICAgfVxyXG59XHJcblxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1yZWNhcHRjaGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWNhcHRjaGEvIiwic291cmNlcyI6WyJsaWIvYmFzZS1yZWNhcHRjaGEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBRUgsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUdOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEQsT0FBTyxFQUFxQyxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUk5RSxNQUFNOzs7Ozs7O0lBbUhGLFlBQ2MsUUFBbUIsRUFDbkIsSUFBWSxFQUNaLFFBQWtCLEVBQ2xCLFlBQStCO1FBSC9CLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsaUJBQVksR0FBWixZQUFZLENBQW1COzhCQWpIcEIsS0FBSzs7Ozs0Q0FLb0Isc0JBQXNCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFOzs7O3VDQUsxRCxZQUFZOzs7O2lDQUtsQixpQkFBaUI7Ozs7b0JBZ0JyQixPQUFPOzs7O3dCQVV0QixDQUFDOzs7Ozt1QkFNRCxJQUFJLFlBQVksRUFBVTs7OztvQkFLN0IsSUFBSSxZQUFZLEVBQVU7Ozs7cUJBS3pCLElBQUksWUFBWSxFQUFROzs7Ozt3Q0F3QkwsS0FBSzs7Ozt3QkFLeEIsS0FBSztLQTRCbEI7Ozs7SUFFTCxlQUFlO1FBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUM7S0FDdkQ7Ozs7SUFZTyxnQkFBZ0I7UUFDcEIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7O1lB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QUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUVoQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDOztRQUcxRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDOzs7Ozs7OztJQU94QyxVQUFVLENBQUMsR0FBUTs7Ozs7O0lBS25CLGdCQUFnQixDQUFDLEVBQU87UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7Ozs7Ozs7SUFNaEIsaUJBQWlCLENBQUMsRUFBTztRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQzs7OztzQkE5V3ZCLEtBQUs7bUJBS0wsS0FBSztpQkFLTCxLQUFLO3VCQUtMLEtBQUs7c0JBTUwsTUFBTTttQkFLTixNQUFNO29CQUtOLE1BQU07aUNBRU4sU0FBUyxTQUFDLG9CQUFvQjtnQ0FDOUIsU0FBUyxTQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBBZnRlclZpZXdJbml0LFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsXHJcbiAgICBJbnB1dCxcclxuICAgIE5nWm9uZSxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIE91dHB1dCxcclxuICAgIFJlbmRlcmVyMixcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBSZUNhcHRjaGFUeXBlIH0gZnJvbSAnLi9yZWNhcHRjaGEtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgTmd4Q2FwdGNoYUNvbmZpZyB9IGZyb20gJy4vcmVjYXB0Y2hhLmNvbmZpZyc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuZGVjbGFyZSB2YXIgZ3JlY2FwdGNoYTogYW55O1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VSZUNhcHRjaGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQge1xyXG4gICAgLyoqXHJcbiAgICAgKiBGb3JtIENvbnRyb2wgdG8gYmUgZW5hYmxlIHVzYWdlIGluIHJlYWN0aXZlIGZvcm1zXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgY29udHJvbDogRm9ybUNvbnRyb2w7XHJcblxyXG4gICAgcHJpdmF0ZSBzZXR1cEFmdGVyTG9hZCA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBOYW1lIG9mIHRoZSBnbG9iYWwgY2FsbGJhY2tcclxuICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgd2luZG93T25Mb2FkQ2FsbGJhY2tQcm9wZXJ0eSA9ICduZ3hfb25sb2FkX2NhbGxiYWNrXycgKyB0aGlzLmdldFBzZXVkb1VuaXF1ZU51bWJlcigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTmFtZSBvZiB0aGUgZ2xvYmFsIHJlQ2FwdGNoYSBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ2xvYmFsUmVDYXB0Y2hhUHJvcGVydHkgPSAnZ3JlY2FwdGNoYSc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcmVmaXggb2YgdGhlIGNhcHRjaGEgZWxlbWVudFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FwdGNoYUVsZW1QcmVmaXggPSAnbmd4X2NhcHRjaGFfaWRfJztcclxuXHJcbiAgICAvKipcclxuICAgICAgKiBHb29nbGUncyBzaXRlIGtleS5cclxuICAgICAgKiBZb3UgY2FuIGZpbmQgdGhpcyB1bmRlciBodHRwczovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYVxyXG4gICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIF9zaXRlS2V5Pzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDb25maWcgdG8gdXNlXHJcbiAgICAqL1xyXG4gICAgQElucHV0KCkgc2l0ZUtleTogc3RyaW5nIHwgKCgpID0+IHN0cmluZyk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUeXBlXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHR5cGU6ICdhdWRpbycgfCAnaW1hZ2UnID0gJ2ltYWdlJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIExhbmd1YWdlIGNvZGUuIEF1dG8tZGV0ZWN0cyB0aGUgdXNlcidzIGxhbmd1YWdlIGlmIHVuc3BlY2lmaWVkLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBobDogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBUYWIgaW5kZXhcclxuICAgICovXHJcbiAgICBASW5wdXQoKSB0YWJJbmRleCA9IDA7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsZWQgd2hlbiBjYXB0Y2hhIHJlY2VpdmVzIHN1Y2Nlc3NmdWwgcmVzcG9uc2UuXHJcbiAgICAgKiBDYXB0Y2hhIHJlc3BvbnNlIHRva2VuIGlzIHBhc3NlZCB0byBldmVudC5cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIHN1Y2Nlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICogQ2FsbGVkIHdoZW4gY2FwdGNoYSBpcyBsb2FkZWQuIEV2ZW50IHJlY2VpdmVzIGlkIG9mIHRoZSBjYXB0Y2hhXHJcbiAgICAqL1xyXG4gICAgQE91dHB1dCgpIGxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICogQ2FsbGVkIHdoZW4gY2FwdGNoYSBpcyBsb2FkZWQgJiByZWFkeS4gSS5lLiB3aGVuIHlvdSBuZWVkIHRvIGV4ZWN1dGUgY2FwdGNoYSBvbiBjb21wb25lbnQgbG9hZC5cclxuICAgICovXHJcbiAgICBAT3V0cHV0KCkgcmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnY2FwdGNoYVdyYXBwZXJFbGVtJykgY2FwdGNoYVdyYXBwZXJFbGVtOiBFbGVtZW50UmVmO1xyXG4gICAgQFZpZXdDaGlsZCgnY2FwdGNoYVNjcmlwdEVsZW0nKSBjYXB0Y2hhU2NyaXB0RWxlbTogRWxlbWVudFJlZjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhcHRjaGEgZWxlbWVudFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgY2FwdGNoYUVsZW0/OiBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIElkIG9mIHRoZSBjYXB0Y2hhIGVsZW1cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGNhcHRjaGFJZD86IG51bWJlcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEhvbGRzIGxhc3QgcmVzcG9uc2UgdmFsdWVcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGN1cnJlbnRSZXNwb25zZT86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIElmIGVuYWJsZWQsIGNhcHRjaGEgd2lsbCByZXNldCBhZnRlciByZWNlaXZpbmcgc3VjY2VzcyByZXNwb25zZS4gVGhpcyBpcyB1c2VmdWxcclxuICAgICAqIHdoZW4gaW52aXNpYmxlIGNhcHRjaGEgbmVlZCB0byBiZSByZXNvbHZlZCBtdWx0aXBsZSB0aW1lcyBvbiBzYW1lIHBhZ2VcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHJlc2V0Q2FwdGNoYUFmdGVyU3VjY2VzcyA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIGlmIGNhcHRjaGEgaXMgbG9hZGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpc0xvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBSZWZlcmVuY2UgdG8gZ2xvYmFsIHJlQ2FwdGNoYSBBUElcclxuICAgICovXHJcbiAgICBwdWJsaWMgcmVDYXB0Y2hhQXBpPzogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWQgb2YgdGhlIERPTSBlbGVtZW50IHdyYXBwaW5nIGNhcHRjaGFcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNhcHRjaGFFbGVtSWQ/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYXB0Y2hhIHR5cGVcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHJlY2FwdGNoYVR5cGU6IFJlQ2FwdGNoYVR5cGU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFJlcXVpcmVkIGJ5IENvbnRyb2xWYWx1ZUFjY2Vzc29yXHJcbiAgICAqL1xyXG4gICAgcHJvdGVjdGVkIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcclxuICAgIHByb3RlY3RlZCBvblRvdWNoZWQ6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xyXG5cclxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgICAgICBwcm90ZWN0ZWQgem9uZTogTmdab25lLFxyXG4gICAgICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJvdGVjdGVkIGdsb2JhbENvbmZpZz86IE5neENhcHRjaGFDb25maWcsXHJcbiAgICApIHsgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wpLmNvbnRyb2w7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEdldHMgcmVDYXB0Y2hhIHByb3BlcnRpZXNcclxuICAgICovXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0Q2FwdGNoYVByb3BlcnRpZXMoKTogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXNlZCBmb3IgY2FwdGNoYSBzcGVjaWZpYyBzZXR1cFxyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBjYXB0Y2hhU3BlY2lmaWNTZXR1cCgpOiB2b2lkO1xyXG5cclxuICAgIHByaXZhdGUgZ2V0R2xvYmFsU2l0ZUtleSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICh0aGlzLmdsb2JhbENvbmZpZykge1xyXG4gICAgICAgICAgICAvLyBJbnZpc2libGUgY2FwdGNoYVxyXG4gICAgICAgICAgICBpZiAodGhpcy5yZWNhcHRjaGFUeXBlID09PSBSZUNhcHRjaGFUeXBlLkludmlzaWJsZVJlQ2FwdGNoYSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmdsb2JhbENvbmZpZy5pbnZpc2libGVDYXB0Y2hhU2l0ZUtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBTaXRlS2V5IGZvciBpbnZpc2libGUgcmVDYXB0Y2hhIGlzIG5vdCBzZXQhYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2xvYmFsQ29uZmlnLmludmlzaWJsZUNhcHRjaGFTaXRlS2V5IGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nbG9iYWxDb25maWcuaW52aXNpYmxlQ2FwdGNoYVNpdGVLZXkoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2xvYmFsQ29uZmlnLmludmlzaWJsZUNhcHRjaGFTaXRlS2V5O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIHJlY2FwdGNoYSAyXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZWNhcHRjaGFUeXBlID09PSBSZUNhcHRjaGFUeXBlLlJlQ2FwdGNoYTIpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5nbG9iYWxDb25maWcucmVDYXB0Y2hhMlNpdGVLZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgU2l0ZUtleSBmb3IgcmVDYXB0Y2hhMiBpcyBub3Qgc2V0IWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmdsb2JhbENvbmZpZy5yZUNhcHRjaGEyU2l0ZUtleSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2xvYmFsQ29uZmlnLnJlQ2FwdGNoYTJTaXRlS2V5KCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdsb2JhbENvbmZpZy5yZUNhcHRjaGEyU2l0ZUtleTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgVW5zdXBwb3J0ZWQgY2FwdGNoYSB0eXBlICcke3RoaXMucmVjYXB0Y2hhVHlwZX0nIWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNpdGVLZXkpIHtcclxuICAgICAgICAgICAgLy8gdXNlIGdsb2JhbCBzaXRlIGtleSBpZiBrZXkgaXMgbm90IGF2YWlsYWJsZVxyXG4gICAgICAgICAgICB0aGlzLl9zaXRlS2V5ID0gdGhpcy5nZXRHbG9iYWxTaXRlS2V5KCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gdXNlIGNvbW5wb25lbnQgc2l0ZSBrZXlcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2l0ZUtleSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zaXRlS2V5ID0gdGhpcy5zaXRlS2V5KCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zaXRlS2V5ID0gdGhpcy5zaXRlS2V5O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0dXBDb21wb25lbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB3aW5kb3dbdGhpcy53aW5kb3dPbkxvYWRDYWxsYmFja1Byb3BlcnR5XSA9IHt9O1xyXG4gICAgICAgIHdpbmRvd1t0aGlzLmdsb2JhbFJlQ2FwdGNoYVByb3BlcnR5XSA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBjYXB0Y2hhIHJlc3BvbnNlIGFzIHBlciByZUNhcHRjaGEgZG9jc1xyXG4gICAgKi9cclxuICAgIGdldFJlc3BvbnNlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVDYXB0Y2hhQXBpLmdldFJlc3BvbnNlKHRoaXMuY2FwdGNoYUlkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgSWQgb2YgY2FwdGNoYSB3aWRnZXRcclxuICAgICovXHJcbiAgICBnZXRDYXB0Y2hhSWQoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jYXB0Y2hhSWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFJlc2V0cyBjYXB0Y2hhXHJcbiAgICAqL1xyXG4gICAgcmVzZXRDYXB0Y2hhKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZChudWxsKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgbGFzdCBzdWJtaXR0ZWQgY2FwdGNoYSByZXNwb25zZVxyXG4gICAgKi9cclxuICAgIGdldEN1cnJlbnRSZXNwb25zZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRSZXNwb25zZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbG9hZCBjYXB0Y2hhLiBVc2VmdWwgd2hlbiBwcm9wZXJ0aWVzIChpLmUuIHRoZW1lKSBjaGFuZ2VkIGFuZCBjYXB0Y2hhIG5lZWQgdG8gcmVmbGVjdCB0aGVtXHJcbiAgICAqL1xyXG4gICAgcmVsb2FkQ2FwdGNoYSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNldHVwQ29tcG9uZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGVuc3VyZUNhcHRjaGFFbGVtKGNhcHRjaGFFbGVtSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNhcHRjaGFFbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY2FwdGNoYUVsZW1JZCk7XHJcblxyXG4gICAgICAgIGlmICghY2FwdGNoYUVsZW0pIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYENhcHRjaGEgZWxlbWVudCB3aXRoIGlkICcke2NhcHRjaGFFbGVtSWR9JyB3YXMgbm90IGZvdW5kYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBhc3NpZ24gY2FwdGNoYSBhbGVtXHJcbiAgICAgICAgdGhpcy5jYXB0Y2hhRWxlbSA9IGNhcHRjaGFFbGVtO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzcG9uc2libGUgZm9yIGluc3RhbnRpYXRpbmcgY2FwdGNoYSBlbGVtZW50XHJcbiAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHJlbmRlclJlQ2FwdGNoYSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNhcHRjaGFJZCA9IHRoaXMucmVDYXB0Y2hhQXBpLnJlbmRlcih0aGlzLmNhcHRjaGFFbGVtSWQsIHRoaXMuZ2V0Q2FwdGNoYVByb3BlcnRpZXMoKSk7XHJcbiAgICAgICAgdGhpcy5yZWFkeS5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsZWQgd2hlbiBjYXB0Y2hhIHJlY2VpdmVzIHJlc3BvbnNlXHJcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2sgQ2FsbGJhY2tcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGhhbmRsZUNhbGxiYWNrKGNhbGxiYWNrOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRSZXNwb25zZSA9IGNhbGxiYWNrO1xyXG4gICAgICAgIHRoaXMuc3VjY2Vzcy5uZXh0KGNhbGxiYWNrKTtcclxuXHJcbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UoY2FsbGJhY2spO1xyXG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZChjYWxsYmFjayk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnJlc2V0Q2FwdGNoYUFmdGVyU3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0Q2FwdGNoYSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlZ2lzdGVycyByZUNhcHRjaGEgc2NyaXB0IGlmIGl0cyBub3QgYXZhaWxhYmxlXHJcbiAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGVuc3VyZVJlQ2FwdGNoYVNjcmlwdCgpOiB2b2lkIHtcclxuICAgICAgICB3aW5kb3dbdGhpcy5nbG9iYWxSZUNhcHRjaGFQcm9wZXJ0eV0gPSB7fTtcclxuICAgICAgICB0aGlzLnJlQ2FwdGNoYUFwaSA9IHt9O1xyXG5cclxuICAgICAgICB0aGlzLnJlZ2lzdGVyUmVDYXB0Y2hhU2NyaXB0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGQgc2NyaXB0IHRvIHBhZ2Ugd2l0aCByZWZlcmVuY2UgdG8gY2FwdGNoYSBBUEkuIFRoaXMgaGFzIHRvIGJlIGRvbmUgbWFudWFsbHlcclxuICAgICAqIGFzIHdlIHdhbnQgdG8gYXZvaWQgYWRkaW5nIHNjcmlwdCB0byBtYWluIGluZGV4Lmh0bWxcclxuICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcmVnaXN0ZXJSZUNhcHRjaGFTY3JpcHQoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgICAgICAgc2NyaXB0LmlubmVySFRNTCA9ICcnO1xyXG4gICAgICAgIHNjcmlwdC5zcmMgPVxyXG4gICAgICAgICAgICBgaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9yZWNhcHRjaGEvYXBpLmpzP29ubG9hZD0ke3RoaXMud2luZG93T25Mb2FkQ2FsbGJhY2tQcm9wZXJ0eX0mcmVuZGVyPWV4cGxpY2l0JHt0aGlzLmdldExhbmd1YWdlUGFyYW0oKX1gO1xyXG4gICAgICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XHJcbiAgICAgICAgc2NyaXB0LmRlZmVyID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5jYXB0Y2hhU2NyaXB0RWxlbS5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHNjcmlwdCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldExhbmd1YWdlUGFyYW0oKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoIXRoaXMuaGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGAmaGw9JHt0aGlzLmhsfWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRQc2V1ZG9VbmlxdWVOdW1iZXIoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gbmV3IERhdGUoKS5nZXRVVENNaWxsaXNlY29uZHMoKSArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDk5OTkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2tzIGlmIHJlQ2FwdGNoYSBBcGkgaXMgZGVmaW5lZC4gSXQgbWF5IGhhcHBlbiB0aGF0IHdoZW4gbmF2aWdhdGluZyBmcm9tIGFuZ3VsYXIgY29tcG9uZW50IHRvIGFub3RoZXJcclxuICAgICAqIHZpYSByb3V0ZXIsIHRoZSBBcGkgd2FzIGFscmVhZHkgbG9hZGVkIHByZXZpb3VzbHkuIEluIHN1Y2ggY2FzZXMsIGRvIG5vdCByZW5kZXIgc2NyaXB0IGFnYWluLlxyXG4gICAgKi9cclxuICAgIHByaXZhdGUgaXNSZUNhcHRjaGFBcGlEZWZpbmVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghd2luZG93W3RoaXMuZ2xvYmFsUmVDYXB0Y2hhUHJvcGVydHldKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXR1cENvbXBvbmVudCgpOiB2b2lkIHtcclxuICAgICAgICAvLyBjYXB0Y2hhIHNwZWNpZmljIHNldHVwXHJcbiAgICAgICAgdGhpcy5jYXB0Y2hhU3BlY2lmaWNTZXR1cCgpO1xyXG5cclxuICAgICAgICAvLyBjcmVhdGUgY2FwdGNoYSB3cmFwcGVyXHJcbiAgICAgICAgdGhpcy5jcmVhdGVBbmRTZXRDYXB0Y2hhRWxlbSgpO1xyXG5cclxuICAgICAgICAvLyB3ZSBuZWVkIHRvIHBhdGNoIHRoZSBjYWxsYmFjayB0aHJvdWdoIGdsb2JhbCB2YXJpYWJsZSwgb3RoZXJ3aXNlIGNhbGxiYWNrIGlzIG5vdCBhY2Nlc3NpYmxlXHJcbiAgICAgICAgLy8gbm90ZTogaHR0cHM6Ly9naXRodWIuY29tL0VubmdhZ2Uvbmd4LWNhcHRjaGEvaXNzdWVzLzJcclxuICAgICAgICB3aW5kb3dbdGhpcy53aW5kb3dPbkxvYWRDYWxsYmFja1Byb3BlcnR5XSA9IDxhbnk+KCgpID0+IHRoaXMuem9uZS5ydW4oXHJcbiAgICAgICAgICAgIHRoaXMub25sb2FkQ2FsbGJhY2suYmluZCh0aGlzKVxyXG4gICAgICAgICkpO1xyXG5cclxuICAgICAgICAvLyBjcmVhdGUgYW5kIHB1dCByZUNhcHRjaGEgc2NyaXB0IHRvIHBhZ2VcclxuICAgICAgICB0aGlzLmVuc3VyZVJlQ2FwdGNoYVNjcmlwdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDYWxsZWQgd2hlbiBnb29nbGUncyByZWNhcHRjaGEgc2NyaXB0IGlzIHJlYWR5XHJcbiAgICAqL1xyXG4gICAgcHJpdmF0ZSBvbmxvYWRDYWxsYmFjaygpOiB2b2lkIHtcclxuICAgICAgICAvLyBhc3NpZ24gcmVmZXJlbmNlIHRvIHJlQ2FwdGNoYSBBcGkgb25jZSBpdHMgbG9hZGVkXHJcbiAgICAgICAgdGhpcy5yZUNhcHRjaGFBcGkgPSBncmVjYXB0Y2hhO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMucmVDYXB0Y2hhQXBpKSB7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBSZUNhcHRjaGEgQXBpIHdhcyBub3QgaW5pdGlhbGl6ZWQgY29ycmVjdGx5YCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBsb2FkZWQgZmxhZ1xyXG4gICAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAvLyBmaXJlIGxvYWQgZXZlbnRcclxuICAgICAgICB0aGlzLmxvYWQubmV4dCgpO1xyXG5cclxuICAgICAgICAvLyByZW5kZXIgY2FwdGNoYVxyXG4gICAgICAgIHRoaXMucmVuZGVyUmVDYXB0Y2hhKCk7XHJcblxyXG4gICAgICAgIC8vIHNldHVwIGNvbXBvbmVudCBpZiBpdCB3YXMgZmxhZ2dlZCBhcyBzdWNoXHJcbiAgICAgICAgaWYgKHRoaXMuc2V0dXBBZnRlckxvYWQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXR1cEFmdGVyTG9hZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNldHVwQ29tcG9uZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2VuZXJhdGVOZXdFbGVtSWQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jYXB0Y2hhRWxlbVByZWZpeCArIHRoaXMuZ2V0UHNldWRvVW5pcXVlTnVtYmVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjcmVhdGVBbmRTZXRDYXB0Y2hhRWxlbSgpOiB2b2lkIHtcclxuICAgICAgICAvLyBnZW5lcmF0ZSBuZXcgY2FwdGNoYSBpZFxyXG4gICAgICAgIHRoaXMuY2FwdGNoYUVsZW1JZCA9IHRoaXMuZ2VuZXJhdGVOZXdFbGVtSWQoKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmNhcHRjaGFFbGVtSWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYENhcHRjaGEgZWxlbSBJZCBpcyBub3Qgc2V0YCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyByZW1vdmUgb2xkIGh0bWxcclxuICAgICAgICB0aGlzLmNhcHRjaGFXcmFwcGVyRWxlbS5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xyXG5cclxuICAgICAgICAvLyBjcmVhdGUgbmV3IHdyYXBwZXIgZm9yIGNhcHRjaGFcclxuICAgICAgICBjb25zdCBuZXdFbGVtID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICBuZXdFbGVtLmlkID0gdGhpcy5jYXB0Y2hhRWxlbUlkO1xyXG5cclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuY2FwdGNoYVdyYXBwZXJFbGVtLm5hdGl2ZUVsZW1lbnQsIG5ld0VsZW0pO1xyXG5cclxuICAgICAgICAvLyB1cGRhdGUgY2FwdGNoYSBlbGVtXHJcbiAgICAgICAgdGhpcy5lbnN1cmVDYXB0Y2hhRWxlbSh0aGlzLmNhcHRjaGFFbGVtSWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVG8gYmUgYWxpZ25lZCB3aXRoIHRoZSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2Ugd2UgbmVlZCB0byBpbXBsZW1lbnQgdGhpcyBtZXRob2RcclxuICAgICAqIEhvd2V2ZXIgYXMgd2UgZG9uJ3Qgd2FudCB0byB1cGRhdGUgdGhlIHJlY2FwdGNoYSwgdGhpcyBkb2Vzbid0IG5lZWQgdG8gYmUgaW1wbGVtZW50ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2QgaGVscHMgdXMgdGllIHRvZ2V0aGVyIHJlY2FwdGNoYSBhbmQgb3VyIGZvcm1Db250cm9sIHZhbHVlc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBBdCBzb21lIHBvaW50IHdlIG1pZ2h0IGJlIGludGVyZXN0ZWQgd2hldGhlciB0aGUgdXNlciBoYXMgdG91Y2hlZCBvdXIgY29tcG9uZW50XHJcbiAgICAqL1xyXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gICAgfVxyXG59XHJcblxyXG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ export { ReCaptcha2Component } from './recaptcha-2.component';

/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -94,3 +94,3 @@ import { Component, Input, Optional, Renderer2, NgZone, Injector, forwardRef } from '@angular/core';

};
function InvisibleReCaptchaComponent_tsickle_Closure_declarations() {
if (false) {
/**

@@ -97,0 +97,0 @@ * This size representing invisible captcha

/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ import { CommonModule } from '@angular/common';

/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -144,3 +144,3 @@ import { Component, EventEmitter, Input, Optional, Output, Renderer2, NgZone, Injector, forwardRef, } from '@angular/core';

};
function ReCaptcha2Component_tsickle_Closure_declarations() {
if (false) {
/**

@@ -147,0 +147,0 @@ * Name of the global expire callback

/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -11,5 +11,5 @@ /** @enum {number} */

export { ReCaptchaType };
ReCaptchaType[ReCaptchaType.InvisibleReCaptcha] = "InvisibleReCaptcha";
ReCaptchaType[ReCaptchaType.ReCaptcha2] = "ReCaptcha2";
ReCaptchaType[ReCaptchaType.InvisibleReCaptcha] = 'InvisibleReCaptcha';
ReCaptchaType[ReCaptchaType.ReCaptcha2] = 'ReCaptcha2';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLXR5cGUuZW51bS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1jYXB0Y2hhLyIsInNvdXJjZXMiOlsibGliL3JlY2FwdGNoYS10eXBlLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFJlQ2FwdGNoYVR5cGUge1xyXG5cclxuICAgIEludmlzaWJsZVJlQ2FwdGNoYSxcclxuICAgIFJlQ2FwdGNoYTJcclxufVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLXR5cGUuZW51bS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1jYXB0Y2hhLyIsInNvdXJjZXMiOlsibGliL3JlY2FwdGNoYS10eXBlLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0lBRUkscUJBQWtCO0lBQ2xCLGFBQVU7Ozs0QkFEVixrQkFBa0I7NEJBQ2xCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBSZUNhcHRjaGFUeXBlIHtcclxuXHJcbiAgICBJbnZpc2libGVSZUNhcHRjaGEsXHJcbiAgICBSZUNhcHRjaGEyXHJcbn1cclxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -9,11 +9,9 @@ /**

export function INgxCaptchaConfig() { }
function INgxCaptchaConfig_tsickle_Closure_declarations() {
/** @type {?|undefined} */
INgxCaptchaConfig.prototype.reCaptcha2SiteKey;
/** @type {?|undefined} */
INgxCaptchaConfig.prototype.invisibleCaptchaSiteKey;
}
/** @type {?|undefined} */
INgxCaptchaConfig.prototype.reCaptcha2SiteKey;
/** @type {?|undefined} */
INgxCaptchaConfig.prototype.invisibleCaptchaSiteKey;
export class NgxCaptchaConfig {
}
function NgxCaptchaConfig_tsickle_Closure_declarations() {
if (false) {
/** @type {?} */

@@ -25,2 +23,2 @@ NgxCaptchaConfig.prototype.reCaptcha2SiteKey;

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1jYXB0Y2hhLyIsInNvdXJjZXMiOlsibGliL3JlY2FwdGNoYS5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFLQSxNQUFNO0NBSUwiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElOZ3hDYXB0Y2hhQ29uZmlnIHtcclxuICAgIHJlQ2FwdGNoYTJTaXRlS2V5Pzogc3RyaW5nIHwgKCgpID0+IHN0cmluZyk7XHJcbiAgICBpbnZpc2libGVDYXB0Y2hhU2l0ZUtleT86IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTmd4Q2FwdGNoYUNvbmZpZyBpbXBsZW1lbnRzIElOZ3hDYXB0Y2hhQ29uZmlnIHtcclxuXHJcbiAgICBwdWJsaWMgcmVDYXB0Y2hhMlNpdGVLZXk/OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcclxuICAgIHB1YmxpYyBpbnZpc2libGVDYXB0Y2hhU2l0ZUtleT86IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xyXG59XHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1jYXB0Y2hhLyIsInNvdXJjZXMiOlsibGliL3JlY2FwdGNoYS5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBS0EsTUFBTTtDQUlMIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJTmd4Q2FwdGNoYUNvbmZpZyB7XHJcbiAgICByZUNhcHRjaGEyU2l0ZUtleT86IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xyXG4gICAgaW52aXNpYmxlQ2FwdGNoYVNpdGVLZXk/OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE5neENhcHRjaGFDb25maWcgaW1wbGVtZW50cyBJTmd4Q2FwdGNoYUNvbmZpZyB7XHJcblxyXG4gICAgcHVibGljIHJlQ2FwdGNoYTJTaXRlS2V5Pzogc3RyaW5nIHwgKCgpID0+IHN0cmluZyk7XHJcbiAgICBwdWJsaWMgaW52aXNpYmxlQ2FwdGNoYVNpdGVLZXk/OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcclxufVxyXG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /**

/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /*

/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -186,3 +186,2 @@ import { ElementRef, EventEmitter, Input, Output, ViewChild, } from '@angular/core';

});
this.reCaptchaApi.reset(this.captchaId);
};

@@ -226,3 +225,4 @@ /**

function (captchaElemId) {
var /** @type {?} */ captchaElem = document.getElementById(captchaElemId);
/** @type {?} */
var captchaElem = document.getElementById(captchaElemId);
if (!captchaElem) {

@@ -306,3 +306,4 @@ throw Error("Captcha element with id '" + captchaElemId + "' was not found");

function () {
var /** @type {?} */ script = document.createElement('script');
/** @type {?} */
var script = document.createElement('script');
script.innerHTML = '';

@@ -419,4 +420,4 @@ script.src =

this.captchaWrapperElem.nativeElement.innerHTML = '';
// create new wrapper for captcha
var /** @type {?} */ newElem = this.renderer.createElement('div');
/** @type {?} */
var newElem = this.renderer.createElement('div');
newElem.id = this.captchaElemId;

@@ -480,3 +481,3 @@ this.renderer.appendChild(this.captchaWrapperElem.nativeElement, newElem);

export { BaseReCaptchaComponent };
function BaseReCaptchaComponent_tsickle_Closure_declarations() {
if (false) {
/**

@@ -620,2 +621,2 @@ * Form Control to be enable usage in reactive forms

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1yZWNhcHRjaGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWNhcHRjaGEvIiwic291cmNlcyI6WyJsaWIvYmFzZS1yZWNhcHRjaGEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBRUwsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEQsT0FBTyxFQUFxQyxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7SUF1SDFFLGdDQUNjLFFBQW1CLEVBQ25CLElBQVksRUFDWixRQUFrQixFQUNsQixZQUErQjtRQUgvQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGlCQUFZLEdBQVosWUFBWSxDQUFtQjs4QkFqSHBCLEtBQUs7Ozs7NENBS29CLHNCQUFzQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRTs7Ozt1Q0FLMUQsWUFBWTs7OztpQ0FLbEIsaUJBQWlCOzs7O29CQWdCckIsT0FBTzs7Ozt3QkFVdEIsQ0FBQzs7Ozs7dUJBTUQsSUFBSSxZQUFZLEVBQVU7Ozs7b0JBSzdCLElBQUksWUFBWSxFQUFVOzs7O3FCQUt6QixJQUFJLFlBQVksRUFBUTs7Ozs7d0NBd0JMLEtBQUs7Ozs7d0JBS3hCLEtBQUs7S0E0Qm5COzs7O0lBRUosZ0RBQWU7OztJQUFmO1FBQ0UsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUM7S0FDckQ7Ozs7SUFZTyxpREFBZ0I7Ozs7UUFDcEIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7O1lBRXBC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LElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDOzs7OztJQUd6RCx3REFBdUI7Ozs7O1FBRTNCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFOUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUN0QixNQUFNLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1NBQzdDOztRQUdELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQzs7UUFHckQscUJBQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUVoQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDOztRQUcxRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDOzs7Ozs7OztJQU94QywyQ0FBVTs7Ozs7O2NBQUMsR0FBUTs7Ozs7O0lBS25CLGlEQUFnQjs7Ozs7Y0FBQyxFQUFPO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDOzs7Ozs7O0lBTWQsa0RBQWlCOzs7OztjQUFDLEVBQU87UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7OzswQkFoWHJCLEtBQUs7dUJBS0wsS0FBSztxQkFLTCxLQUFLOzJCQUtMLEtBQUs7MEJBTUwsTUFBTTt1QkFLTixNQUFNO3dCQUtOLE1BQU07cUNBRU4sU0FBUyxTQUFDLG9CQUFvQjtvQ0FDOUIsU0FBUyxTQUFDLG1CQUFtQjs7aUNBdEZsQzs7U0FvQnNCLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgTmdab25lLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFJlQ2FwdGNoYVR5cGUgfSBmcm9tICcuL3JlY2FwdGNoYS10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBOZ3hDYXB0Y2hhQ29uZmlnIH0gZnJvbSAnLi9yZWNhcHRjaGEuY29uZmlnJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5kZWNsYXJlIHZhciBncmVjYXB0Y2hhOiBhbnk7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVJlQ2FwdGNoYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgICAvKipcclxuICAgICAqIEZvcm0gQ29udHJvbCB0byBiZSBlbmFibGUgdXNhZ2UgaW4gcmVhY3RpdmUgZm9ybXNcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBjb250cm9sOiBGb3JtQ29udHJvbDtcclxuXHJcbiAgICBwcml2YXRlIHNldHVwQWZ0ZXJMb2FkID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIE5hbWUgb2YgdGhlIGdsb2JhbCBjYWxsYmFja1xyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCByZWFkb25seSB3aW5kb3dPbkxvYWRDYWxsYmFja1Byb3BlcnR5ID0gJ25neF9vbmxvYWRfY2FsbGJhY2tfJyArIHRoaXMuZ2V0UHNldWRvVW5pcXVlTnVtYmVyKCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOYW1lIG9mIHRoZSBnbG9iYWwgcmVDYXB0Y2hhIHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCByZWFkb25seSBnbG9iYWxSZUNhcHRjaGFQcm9wZXJ0eSA9ICdncmVjYXB0Y2hhJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZWZpeCBvZiB0aGUgY2FwdGNoYSBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCByZWFkb25seSBjYXB0Y2hhRWxlbVByZWZpeCA9ICduZ3hfY2FwdGNoYV9pZF8nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICAqIEdvb2dsZSdzIHNpdGUga2V5LlxyXG4gICAgICAqIFlvdSBjYW4gZmluZCB0aGlzIHVuZGVyIGh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vcmVjYXB0Y2hhXHJcbiAgICAgICovXHJcbiAgICBwcm90ZWN0ZWQgX3NpdGVLZXk/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENvbmZpZyB0byB1c2VcclxuICAgICovXHJcbiAgICBASW5wdXQoKSBzaXRlS2V5OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFR5cGVcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgdHlwZTogJ2F1ZGlvJyB8ICdpbWFnZScgPSAnaW1hZ2UnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGFuZ3VhZ2UgY29kZS4gQXV0by1kZXRlY3RzIHRoZSB1c2VyJ3MgbGFuZ3VhZ2UgaWYgdW5zcGVjaWZpZWQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGhsOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFRhYiBpbmRleFxyXG4gICAgKi9cclxuICAgIEBJbnB1dCgpIHRhYkluZGV4ID0gMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGxlZCB3aGVuIGNhcHRjaGEgcmVjZWl2ZXMgc3VjY2Vzc2Z1bCByZXNwb25zZS5cclxuICAgICAqIENhcHRjaGEgcmVzcG9uc2UgdG9rZW4gaXMgcGFzc2VkIHRvIGV2ZW50LlxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgc3VjY2VzcyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDYWxsZWQgd2hlbiBjYXB0Y2hhIGlzIGxvYWRlZC4gRXZlbnQgcmVjZWl2ZXMgaWQgb2YgdGhlIGNhcHRjaGFcclxuICAgICovXHJcbiAgICBAT3V0cHV0KCkgbG9hZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDYWxsZWQgd2hlbiBjYXB0Y2hhIGlzIGxvYWRlZCAmIHJlYWR5LiBJLmUuIHdoZW4geW91IG5lZWQgdG8gZXhlY3V0ZSBjYXB0Y2hhIG9uIGNvbXBvbmVudCBsb2FkLlxyXG4gICAgKi9cclxuICAgIEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdjYXB0Y2hhV3JhcHBlckVsZW0nKSBjYXB0Y2hhV3JhcHBlckVsZW06IEVsZW1lbnRSZWY7XHJcbiAgICBAVmlld0NoaWxkKCdjYXB0Y2hhU2NyaXB0RWxlbScpIGNhcHRjaGFTY3JpcHRFbGVtOiBFbGVtZW50UmVmO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FwdGNoYSBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBjYXB0Y2hhRWxlbT86IEhUTUxFbGVtZW50O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWQgb2YgdGhlIGNhcHRjaGEgZWxlbVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgY2FwdGNoYUlkPzogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSG9sZHMgbGFzdCByZXNwb25zZSB2YWx1ZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgY3VycmVudFJlc3BvbnNlPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWYgZW5hYmxlZCwgY2FwdGNoYSB3aWxsIHJlc2V0IGFmdGVyIHJlY2VpdmluZyBzdWNjZXNzIHJlc3BvbnNlLiBUaGlzIGlzIHVzZWZ1bFxyXG4gICAgICogd2hlbiBpbnZpc2libGUgY2FwdGNoYSBuZWVkIHRvIGJlIHJlc29sdmVkIG11bHRpcGxlIHRpbWVzIG9uIHNhbWUgcGFnZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcmVzZXRDYXB0Y2hhQWZ0ZXJTdWNjZXNzID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgaWYgY2FwdGNoYSBpcyBsb2FkZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGlzTG9hZGVkID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFJlZmVyZW5jZSB0byBnbG9iYWwgcmVDYXB0Y2hhIEFQSVxyXG4gICAgKi9cclxuICAgIHB1YmxpYyByZUNhcHRjaGFBcGk/OiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZCBvZiB0aGUgRE9NIGVsZW1lbnQgd3JhcHBpbmcgY2FwdGNoYVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2FwdGNoYUVsZW1JZD86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhcHRjaGEgdHlwZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVjYXB0Y2hhVHlwZTogUmVDYXB0Y2hhVHlwZTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmVxdWlyZWQgYnkgQ29udHJvbFZhbHVlQWNjZXNzb3JcclxuICAgKi9cclxuICAgIHByb3RlY3RlZCBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcgKSA9PiB2b2lkO1xyXG4gICAgcHJvdGVjdGVkIG9uVG91Y2hlZDogKHZhbHVlOiBzdHJpbmcgKSA9PiB2b2lkO1xyXG5cclxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgICAgICBwcm90ZWN0ZWQgem9uZTogTmdab25lLFxyXG4gICAgICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJvdGVjdGVkIGdsb2JhbENvbmZpZz86IE5neENhcHRjaGFDb25maWcsXHJcbiAgICApIHt9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wpLmNvbnRyb2w7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEdldHMgcmVDYXB0Y2hhIHByb3BlcnRpZXNcclxuICAgICovXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0Q2FwdGNoYVByb3BlcnRpZXMoKTogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXNlZCBmb3IgY2FwdGNoYSBzcGVjaWZpYyBzZXR1cFxyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBjYXB0Y2hhU3BlY2lmaWNTZXR1cCgpOiB2b2lkO1xyXG5cclxuICAgIHByaXZhdGUgZ2V0R2xvYmFsU2l0ZUtleSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICh0aGlzLmdsb2JhbENvbmZpZykge1xyXG4gICAgICAgICAgICAvLyBJbnZpc2libGUgY2FwdGNoYVxyXG4gICAgICAgICAgICBpZiAodGhpcy5yZWNhcHRjaGFUeXBlID09PSBSZUNhcHRjaGFUeXBlLkludmlzaWJsZVJlQ2FwdGNoYSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmdsb2JhbENvbmZpZy5pbnZpc2libGVDYXB0Y2hhU2l0ZUtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBTaXRlS2V5IGZvciBpbnZpc2libGUgcmVDYXB0Y2hhIGlzIG5vdCBzZXQhYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2xvYmFsQ29uZmlnLmludmlzaWJsZUNhcHRjaGFTaXRlS2V5IGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nbG9iYWxDb25maWcuaW52aXNpYmxlQ2FwdGNoYVNpdGVLZXkoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2xvYmFsQ29uZmlnLmludmlzaWJsZUNhcHRjaGFTaXRlS2V5O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIHJlY2FwdGNoYSAyXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZWNhcHRjaGFUeXBlID09PSBSZUNhcHRjaGFUeXBlLlJlQ2FwdGNoYTIpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5nbG9iYWxDb25maWcucmVDYXB0Y2hhMlNpdGVLZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgU2l0ZUtleSBmb3IgcmVDYXB0Y2hhMiBpcyBub3Qgc2V0IWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmdsb2JhbENvbmZpZy5yZUNhcHRjaGEyU2l0ZUtleSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2xvYmFsQ29uZmlnLnJlQ2FwdGNoYTJTaXRlS2V5KCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdsb2JhbENvbmZpZy5yZUNhcHRjaGEyU2l0ZUtleTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgVW5zdXBwb3J0ZWQgY2FwdGNoYSB0eXBlICcke3RoaXMucmVjYXB0Y2hhVHlwZX0nIWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNpdGVLZXkpIHtcclxuICAgICAgICAgICAgLy8gdXNlIGdsb2JhbCBzaXRlIGtleSBpZiBrZXkgaXMgbm90IGF2YWlsYWJsZVxyXG4gICAgICAgICAgICB0aGlzLl9zaXRlS2V5ID0gdGhpcy5nZXRHbG9iYWxTaXRlS2V5KCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gdXNlIGNvbW5wb25lbnQgc2l0ZSBrZXlcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2l0ZUtleSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zaXRlS2V5ID0gdGhpcy5zaXRlS2V5KCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zaXRlS2V5ID0gdGhpcy5zaXRlS2V5O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0dXBDb21wb25lbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB3aW5kb3dbdGhpcy53aW5kb3dPbkxvYWRDYWxsYmFja1Byb3BlcnR5XSA9IHt9O1xyXG4gICAgICAgIHdpbmRvd1t0aGlzLmdsb2JhbFJlQ2FwdGNoYVByb3BlcnR5XSA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBjYXB0Y2hhIHJlc3BvbnNlIGFzIHBlciByZUNhcHRjaGEgZG9jc1xyXG4gICAgKi9cclxuICAgIGdldFJlc3BvbnNlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVDYXB0Y2hhQXBpLmdldFJlc3BvbnNlKHRoaXMuY2FwdGNoYUlkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgSWQgb2YgY2FwdGNoYSB3aWRnZXRcclxuICAgICovXHJcbiAgICBnZXRDYXB0Y2hhSWQoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jYXB0Y2hhSWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFJlc2V0cyBjYXB0Y2hhXHJcbiAgICAqL1xyXG4gICAgcmVzZXRDYXB0Y2hhKCk6IHZvaWQge1xyXG4gICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkKG51bGwpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMucmVDYXB0Y2hhQXBpLnJlc2V0KHRoaXMuY2FwdGNoYUlkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgbGFzdCBzdWJtaXR0ZWQgY2FwdGNoYSByZXNwb25zZVxyXG4gICAgKi9cclxuICAgIGdldEN1cnJlbnRSZXNwb25zZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRSZXNwb25zZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbG9hZCBjYXB0Y2hhLiBVc2VmdWwgd2hlbiBwcm9wZXJ0aWVzIChpLmUuIHRoZW1lKSBjaGFuZ2VkIGFuZCBjYXB0Y2hhIG5lZWQgdG8gcmVmbGVjdCB0aGVtXHJcbiAgICAqL1xyXG4gICAgcmVsb2FkQ2FwdGNoYSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNldHVwQ29tcG9uZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGVuc3VyZUNhcHRjaGFFbGVtKGNhcHRjaGFFbGVtSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNhcHRjaGFFbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY2FwdGNoYUVsZW1JZCk7XHJcblxyXG4gICAgICAgIGlmICghY2FwdGNoYUVsZW0pIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYENhcHRjaGEgZWxlbWVudCB3aXRoIGlkICcke2NhcHRjaGFFbGVtSWR9JyB3YXMgbm90IGZvdW5kYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBhc3NpZ24gY2FwdGNoYSBhbGVtXHJcbiAgICAgICAgdGhpcy5jYXB0Y2hhRWxlbSA9IGNhcHRjaGFFbGVtO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzcG9uc2libGUgZm9yIGluc3RhbnRpYXRpbmcgY2FwdGNoYSBlbGVtZW50XHJcbiAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHJlbmRlclJlQ2FwdGNoYSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNhcHRjaGFJZCA9IHRoaXMucmVDYXB0Y2hhQXBpLnJlbmRlcih0aGlzLmNhcHRjaGFFbGVtSWQsIHRoaXMuZ2V0Q2FwdGNoYVByb3BlcnRpZXMoKSk7XHJcbiAgICAgICAgdGhpcy5yZWFkeS5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsZWQgd2hlbiBjYXB0Y2hhIHJlY2VpdmVzIHJlc3BvbnNlXHJcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2sgQ2FsbGJhY2tcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGhhbmRsZUNhbGxiYWNrKGNhbGxiYWNrOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRSZXNwb25zZSA9IGNhbGxiYWNrO1xyXG4gICAgICAgIHRoaXMuc3VjY2Vzcy5uZXh0KGNhbGxiYWNrKTtcclxuXHJcbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlKGNhbGxiYWNrKTtcclxuICAgICAgICAgIHRoaXMub25Ub3VjaGVkKGNhbGxiYWNrKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucmVzZXRDYXB0Y2hhQWZ0ZXJTdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRDYXB0Y2hhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVnaXN0ZXJzIHJlQ2FwdGNoYSBzY3JpcHQgaWYgaXRzIG5vdCBhdmFpbGFibGVcclxuICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZW5zdXJlUmVDYXB0Y2hhU2NyaXB0KCk6IHZvaWQge1xyXG4gICAgICAgIHdpbmRvd1t0aGlzLmdsb2JhbFJlQ2FwdGNoYVByb3BlcnR5XSA9IHt9O1xyXG4gICAgICAgIHRoaXMucmVDYXB0Y2hhQXBpID0ge307XHJcblxyXG4gICAgICAgIHRoaXMucmVnaXN0ZXJSZUNhcHRjaGFTY3JpcHQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZCBzY3JpcHQgdG8gcGFnZSB3aXRoIHJlZmVyZW5jZSB0byBjYXB0Y2hhIEFQSS4gVGhpcyBoYXMgdG8gYmUgZG9uZSBtYW51YWxseVxyXG4gICAgICogYXMgd2Ugd2FudCB0byBhdm9pZCBhZGRpbmcgc2NyaXB0IHRvIG1haW4gaW5kZXguaHRtbFxyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCByZWdpc3RlclJlQ2FwdGNoYVNjcmlwdCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuICAgICAgICBzY3JpcHQuaW5uZXJIVE1MID0gJyc7XHJcbiAgICAgICAgc2NyaXB0LnNyYyA9XHJcbiAgICAgICAgICAgIGBodHRwczovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS9hcGkuanM/b25sb2FkPSR7dGhpcy53aW5kb3dPbkxvYWRDYWxsYmFja1Byb3BlcnR5fSZyZW5kZXI9ZXhwbGljaXQke3RoaXMuZ2V0TGFuZ3VhZ2VQYXJhbSgpfWA7XHJcbiAgICAgICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcclxuICAgICAgICBzY3JpcHQuZGVmZXIgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLmNhcHRjaGFTY3JpcHRFbGVtLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0TGFuZ3VhZ2VQYXJhbSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghdGhpcy5obCkge1xyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gYCZobD0ke3RoaXMuaGx9YDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFBzZXVkb1VuaXF1ZU51bWJlcigpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldFVUQ01pbGxpc2Vjb25kcygpICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogOTk5OSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVja3MgaWYgcmVDYXB0Y2hhIEFwaSBpcyBkZWZpbmVkLiBJdCBtYXkgaGFwcGVuIHRoYXQgd2hlbiBuYXZpZ2F0aW5nIGZyb20gYW5ndWxhciBjb21wb25lbnQgdG8gYW5vdGhlclxyXG4gICAgICogdmlhIHJvdXRlciwgdGhlIEFwaSB3YXMgYWxyZWFkeSBsb2FkZWQgcHJldmlvdXNseS4gSW4gc3VjaCBjYXNlcywgZG8gbm90IHJlbmRlciBzY3JpcHQgYWdhaW4uXHJcbiAgICAqL1xyXG4gICAgcHJpdmF0ZSBpc1JlQ2FwdGNoYUFwaURlZmluZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCF3aW5kb3dbdGhpcy5nbG9iYWxSZUNhcHRjaGFQcm9wZXJ0eV0pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldHVwQ29tcG9uZW50KCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGNhcHRjaGEgc3BlY2lmaWMgc2V0dXBcclxuICAgICAgICB0aGlzLmNhcHRjaGFTcGVjaWZpY1NldHVwKCk7XHJcblxyXG4gICAgICAgIC8vIGNyZWF0ZSBjYXB0Y2hhIHdyYXBwZXJcclxuICAgICAgICB0aGlzLmNyZWF0ZUFuZFNldENhcHRjaGFFbGVtKCk7XHJcblxyXG4gICAgICAgIC8vIHdlIG5lZWQgdG8gcGF0Y2ggdGhlIGNhbGxiYWNrIHRocm91Z2ggZ2xvYmFsIHZhcmlhYmxlLCBvdGhlcndpc2UgY2FsbGJhY2sgaXMgbm90IGFjY2Vzc2libGVcclxuICAgICAgICAvLyBub3RlOiBodHRwczovL2dpdGh1Yi5jb20vRW5uZ2FnZS9uZ3gtY2FwdGNoYS9pc3N1ZXMvMlxyXG4gICAgICAgIHdpbmRvd1t0aGlzLndpbmRvd09uTG9hZENhbGxiYWNrUHJvcGVydHldID0gPGFueT4oKCkgPT4gdGhpcy56b25lLnJ1bihcclxuICAgICAgICAgICAgdGhpcy5vbmxvYWRDYWxsYmFjay5iaW5kKHRoaXMpXHJcbiAgICAgICAgKSk7XHJcblxyXG4gICAgICAgIC8vIGNyZWF0ZSBhbmQgcHV0IHJlQ2FwdGNoYSBzY3JpcHQgdG8gcGFnZVxyXG4gICAgICAgIHRoaXMuZW5zdXJlUmVDYXB0Y2hhU2NyaXB0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENhbGxlZCB3aGVuIGdvb2dsZSdzIHJlY2FwdGNoYSBzY3JpcHQgaXMgcmVhZHlcclxuICAgICovXHJcbiAgICBwcml2YXRlIG9ubG9hZENhbGxiYWNrKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGFzc2lnbiByZWZlcmVuY2UgdG8gcmVDYXB0Y2hhIEFwaSBvbmNlIGl0cyBsb2FkZWRcclxuICAgICAgICB0aGlzLnJlQ2FwdGNoYUFwaSA9IGdyZWNhcHRjaGE7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5yZUNhcHRjaGFBcGkpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFJlQ2FwdGNoYSBBcGkgd2FzIG5vdCBpbml0aWFsaXplZCBjb3JyZWN0bHlgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGxvYWRlZCBmbGFnXHJcbiAgICAgICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIC8vIGZpcmUgbG9hZCBldmVudFxyXG4gICAgICAgIHRoaXMubG9hZC5uZXh0KCk7XHJcblxyXG4gICAgICAgIC8vIHJlbmRlciBjYXB0Y2hhXHJcbiAgICAgICAgdGhpcy5yZW5kZXJSZUNhcHRjaGEoKTtcclxuXHJcbiAgICAgICAgLy8gc2V0dXAgY29tcG9uZW50IGlmIGl0IHdhcyBmbGFnZ2VkIGFzIHN1Y2hcclxuICAgICAgICBpZiAodGhpcy5zZXR1cEFmdGVyTG9hZCkge1xyXG4gICAgICAgICAgICB0aGlzLnNldHVwQWZ0ZXJMb2FkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dXBDb21wb25lbnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZU5ld0VsZW1JZCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNhcHRjaGFFbGVtUHJlZml4ICsgdGhpcy5nZXRQc2V1ZG9VbmlxdWVOdW1iZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNyZWF0ZUFuZFNldENhcHRjaGFFbGVtKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGdlbmVyYXRlIG5ldyBjYXB0Y2hhIGlkXHJcbiAgICAgICAgdGhpcy5jYXB0Y2hhRWxlbUlkID0gdGhpcy5nZW5lcmF0ZU5ld0VsZW1JZCgpO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuY2FwdGNoYUVsZW1JZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgQ2FwdGNoYSBlbGVtIElkIGlzIG5vdCBzZXRgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHJlbW92ZSBvbGQgaHRtbFxyXG4gICAgICAgIHRoaXMuY2FwdGNoYVdyYXBwZXJFbGVtLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJyc7XHJcblxyXG4gICAgICAgIC8vIGNyZWF0ZSBuZXcgd3JhcHBlciBmb3IgY2FwdGNoYVxyXG4gICAgICAgIGNvbnN0IG5ld0VsZW0gPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIG5ld0VsZW0uaWQgPSB0aGlzLmNhcHRjaGFFbGVtSWQ7XHJcblxyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5jYXB0Y2hhV3JhcHBlckVsZW0ubmF0aXZlRWxlbWVudCwgbmV3RWxlbSk7XHJcblxyXG4gICAgICAgIC8vIHVwZGF0ZSBjYXB0Y2hhIGVsZW1cclxuICAgICAgICB0aGlzLmVuc3VyZUNhcHRjaGFFbGVtKHRoaXMuY2FwdGNoYUVsZW1JZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUbyBiZSBhbGlnbmVkIHdpdGggdGhlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZSB3ZSBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZFxyXG4gICAgICogSG93ZXZlciBhcyB3ZSBkb24ndCB3YW50IHRvIHVwZGF0ZSB0aGUgcmVjYXB0Y2hhLCB0aGlzIGRvZXNuJ3QgbmVlZCB0byBiZSBpbXBsZW1lbnRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge31cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgbWV0aG9kIGhlbHBzIHVzIHRpZSB0b2dldGhlciByZWNhcHRjaGEgYW5kIG91ciBmb3JtQ29udHJvbCB2YWx1ZXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEF0IHNvbWUgcG9pbnQgd2UgbWlnaHQgYmUgaW50ZXJlc3RlZCB3aGV0aGVyIHRoZSB1c2VyIGhhcyB0b3VjaGVkIG91ciBjb21wb25lbnRcclxuICAgICovXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gICAgfVxyXG59XHJcblxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1yZWNhcHRjaGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWNhcHRjaGEvIiwic291cmNlcyI6WyJsaWIvYmFzZS1yZWNhcHRjaGEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBRUgsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUdOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEQsT0FBTyxFQUFxQyxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7SUF1SDFFLGdDQUNjLFFBQW1CLEVBQ25CLElBQVksRUFDWixRQUFrQixFQUNsQixZQUErQjtRQUgvQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGlCQUFZLEdBQVosWUFBWSxDQUFtQjs4QkFqSHBCLEtBQUs7Ozs7NENBS29CLHNCQUFzQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRTs7Ozt1Q0FLMUQsWUFBWTs7OztpQ0FLbEIsaUJBQWlCOzs7O29CQWdCckIsT0FBTzs7Ozt3QkFVdEIsQ0FBQzs7Ozs7dUJBTUQsSUFBSSxZQUFZLEVBQVU7Ozs7b0JBSzdCLElBQUksWUFBWSxFQUFVOzs7O3FCQUt6QixJQUFJLFlBQVksRUFBUTs7Ozs7d0NBd0JMLEtBQUs7Ozs7d0JBS3hCLEtBQUs7S0E0QmxCOzs7O0lBRUwsZ0RBQWU7OztJQUFmO1FBQ0ksSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUM7S0FDdkQ7Ozs7SUFZTyxpREFBZ0I7Ozs7UUFDcEIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7O1lBRXBC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QUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUU5QyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLE1BQU0sS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7U0FDN0M7O1FBR0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDOztRQUdyRCxJQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRCxPQUFPLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFFaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQzs7UUFHMUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs7Ozs7Ozs7SUFPeEMsMkNBQVU7Ozs7OztjQUFDLEdBQVE7Ozs7OztJQUtuQixpREFBZ0I7Ozs7O2NBQUMsRUFBTztRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQzs7Ozs7OztJQU1oQixrREFBaUI7Ozs7O2NBQUMsRUFBTztRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQzs7OzBCQTlXdkIsS0FBSzt1QkFLTCxLQUFLO3FCQUtMLEtBQUs7MkJBS0wsS0FBSzswQkFNTCxNQUFNO3VCQUtOLE1BQU07d0JBS04sTUFBTTtxQ0FFTixTQUFTLFNBQUMsb0JBQW9CO29DQUM5QixTQUFTLFNBQUMsbUJBQW1COztpQ0F0RmxDOztTQW9Cc0Isc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIEFmdGVyVmlld0luaXQsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgRXZlbnRFbWl0dGVyLCBJbmplY3RvcixcclxuICAgIElucHV0LFxyXG4gICAgTmdab25lLFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgUmVuZGVyZXIyLFxyXG4gICAgU2ltcGxlQ2hhbmdlcyxcclxuICAgIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFJlQ2FwdGNoYVR5cGUgfSBmcm9tICcuL3JlY2FwdGNoYS10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBOZ3hDYXB0Y2hhQ29uZmlnIH0gZnJvbSAnLi9yZWNhcHRjaGEuY29uZmlnJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5kZWNsYXJlIHZhciBncmVjYXB0Y2hhOiBhbnk7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVJlQ2FwdGNoYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgICAvKipcclxuICAgICAqIEZvcm0gQ29udHJvbCB0byBiZSBlbmFibGUgdXNhZ2UgaW4gcmVhY3RpdmUgZm9ybXNcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBjb250cm9sOiBGb3JtQ29udHJvbDtcclxuXHJcbiAgICBwcml2YXRlIHNldHVwQWZ0ZXJMb2FkID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIE5hbWUgb2YgdGhlIGdsb2JhbCBjYWxsYmFja1xyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCByZWFkb25seSB3aW5kb3dPbkxvYWRDYWxsYmFja1Byb3BlcnR5ID0gJ25neF9vbmxvYWRfY2FsbGJhY2tfJyArIHRoaXMuZ2V0UHNldWRvVW5pcXVlTnVtYmVyKCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOYW1lIG9mIHRoZSBnbG9iYWwgcmVDYXB0Y2hhIHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCByZWFkb25seSBnbG9iYWxSZUNhcHRjaGFQcm9wZXJ0eSA9ICdncmVjYXB0Y2hhJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZWZpeCBvZiB0aGUgY2FwdGNoYSBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCByZWFkb25seSBjYXB0Y2hhRWxlbVByZWZpeCA9ICduZ3hfY2FwdGNoYV9pZF8nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICAqIEdvb2dsZSdzIHNpdGUga2V5LlxyXG4gICAgICAqIFlvdSBjYW4gZmluZCB0aGlzIHVuZGVyIGh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vcmVjYXB0Y2hhXHJcbiAgICAgICovXHJcbiAgICBwcm90ZWN0ZWQgX3NpdGVLZXk/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENvbmZpZyB0byB1c2VcclxuICAgICovXHJcbiAgICBASW5wdXQoKSBzaXRlS2V5OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFR5cGVcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgdHlwZTogJ2F1ZGlvJyB8ICdpbWFnZScgPSAnaW1hZ2UnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGFuZ3VhZ2UgY29kZS4gQXV0by1kZXRlY3RzIHRoZSB1c2VyJ3MgbGFuZ3VhZ2UgaWYgdW5zcGVjaWZpZWQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGhsOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFRhYiBpbmRleFxyXG4gICAgKi9cclxuICAgIEBJbnB1dCgpIHRhYkluZGV4ID0gMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGxlZCB3aGVuIGNhcHRjaGEgcmVjZWl2ZXMgc3VjY2Vzc2Z1bCByZXNwb25zZS5cclxuICAgICAqIENhcHRjaGEgcmVzcG9uc2UgdG9rZW4gaXMgcGFzc2VkIHRvIGV2ZW50LlxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgc3VjY2VzcyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDYWxsZWQgd2hlbiBjYXB0Y2hhIGlzIGxvYWRlZC4gRXZlbnQgcmVjZWl2ZXMgaWQgb2YgdGhlIGNhcHRjaGFcclxuICAgICovXHJcbiAgICBAT3V0cHV0KCkgbG9hZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDYWxsZWQgd2hlbiBjYXB0Y2hhIGlzIGxvYWRlZCAmIHJlYWR5LiBJLmUuIHdoZW4geW91IG5lZWQgdG8gZXhlY3V0ZSBjYXB0Y2hhIG9uIGNvbXBvbmVudCBsb2FkLlxyXG4gICAgKi9cclxuICAgIEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdjYXB0Y2hhV3JhcHBlckVsZW0nKSBjYXB0Y2hhV3JhcHBlckVsZW06IEVsZW1lbnRSZWY7XHJcbiAgICBAVmlld0NoaWxkKCdjYXB0Y2hhU2NyaXB0RWxlbScpIGNhcHRjaGFTY3JpcHRFbGVtOiBFbGVtZW50UmVmO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FwdGNoYSBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBjYXB0Y2hhRWxlbT86IEhUTUxFbGVtZW50O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWQgb2YgdGhlIGNhcHRjaGEgZWxlbVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgY2FwdGNoYUlkPzogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSG9sZHMgbGFzdCByZXNwb25zZSB2YWx1ZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgY3VycmVudFJlc3BvbnNlPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWYgZW5hYmxlZCwgY2FwdGNoYSB3aWxsIHJlc2V0IGFmdGVyIHJlY2VpdmluZyBzdWNjZXNzIHJlc3BvbnNlLiBUaGlzIGlzIHVzZWZ1bFxyXG4gICAgICogd2hlbiBpbnZpc2libGUgY2FwdGNoYSBuZWVkIHRvIGJlIHJlc29sdmVkIG11bHRpcGxlIHRpbWVzIG9uIHNhbWUgcGFnZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcmVzZXRDYXB0Y2hhQWZ0ZXJTdWNjZXNzID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgaWYgY2FwdGNoYSBpcyBsb2FkZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGlzTG9hZGVkID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFJlZmVyZW5jZSB0byBnbG9iYWwgcmVDYXB0Y2hhIEFQSVxyXG4gICAgKi9cclxuICAgIHB1YmxpYyByZUNhcHRjaGFBcGk/OiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZCBvZiB0aGUgRE9NIGVsZW1lbnQgd3JhcHBpbmcgY2FwdGNoYVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2FwdGNoYUVsZW1JZD86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhcHRjaGEgdHlwZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVjYXB0Y2hhVHlwZTogUmVDYXB0Y2hhVHlwZTtcclxuXHJcbiAgICAvKipcclxuICAgICogUmVxdWlyZWQgYnkgQ29udHJvbFZhbHVlQWNjZXNzb3JcclxuICAgICovXHJcbiAgICBwcm90ZWN0ZWQgb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xyXG4gICAgcHJvdGVjdGVkIG9uVG91Y2hlZDogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XHJcblxyXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgICAgIHByb3RlY3RlZCB6b25lOiBOZ1pvbmUsXHJcbiAgICAgICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwcm90ZWN0ZWQgZ2xvYmFsQ29uZmlnPzogTmd4Q2FwdGNoYUNvbmZpZyxcclxuICAgICkgeyB9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIHRoaXMuY29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCkuY29udHJvbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogR2V0cyByZUNhcHRjaGEgcHJvcGVydGllc1xyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRDYXB0Y2hhUHJvcGVydGllcygpOiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVc2VkIGZvciBjYXB0Y2hhIHNwZWNpZmljIHNldHVwXHJcbiAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGNhcHRjaGFTcGVjaWZpY1NldHVwKCk6IHZvaWQ7XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRHbG9iYWxTaXRlS2V5KCk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2xvYmFsQ29uZmlnKSB7XHJcbiAgICAgICAgICAgIC8vIEludmlzaWJsZSBjYXB0Y2hhXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnJlY2FwdGNoYVR5cGUgPT09IFJlQ2FwdGNoYVR5cGUuSW52aXNpYmxlUmVDYXB0Y2hhKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZ2xvYmFsQ29uZmlnLmludmlzaWJsZUNhcHRjaGFTaXRlS2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFNpdGVLZXkgZm9yIGludmlzaWJsZSByZUNhcHRjaGEgaXMgbm90IHNldCFgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5nbG9iYWxDb25maWcuaW52aXNpYmxlQ2FwdGNoYVNpdGVLZXkgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdsb2JhbENvbmZpZy5pbnZpc2libGVDYXB0Y2hhU2l0ZUtleSgpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nbG9iYWxDb25maWcuaW52aXNpYmxlQ2FwdGNoYVNpdGVLZXk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gcmVjYXB0Y2hhIDJcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJlY2FwdGNoYVR5cGUgPT09IFJlQ2FwdGNoYVR5cGUuUmVDYXB0Y2hhMikge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmdsb2JhbENvbmZpZy5yZUNhcHRjaGEyU2l0ZUtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBTaXRlS2V5IGZvciByZUNhcHRjaGEyIGlzIG5vdCBzZXQhYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2xvYmFsQ29uZmlnLnJlQ2FwdGNoYTJTaXRlS2V5IGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nbG9iYWxDb25maWcucmVDYXB0Y2hhMlNpdGVLZXkoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2xvYmFsQ29uZmlnLnJlQ2FwdGNoYTJTaXRlS2V5O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBVbnN1cHBvcnRlZCBjYXB0Y2hhIHR5cGUgJyR7dGhpcy5yZWNhcHRjaGFUeXBlfSchYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuc2l0ZUtleSkge1xyXG4gICAgICAgICAgICAvLyB1c2UgZ2xvYmFsIHNpdGUga2V5IGlmIGtleSBpcyBub3QgYXZhaWxhYmxlXHJcbiAgICAgICAgICAgIHRoaXMuX3NpdGVLZXkgPSB0aGlzLmdldEdsb2JhbFNpdGVLZXkoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyB1c2UgY29tbnBvbmVudCBzaXRlIGtleVxyXG4gICAgICAgICAgICBpZiAodGhpcy5zaXRlS2V5IGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3NpdGVLZXkgPSB0aGlzLnNpdGVLZXkoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3NpdGVLZXkgPSB0aGlzLnNpdGVLZXk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXR1cENvbXBvbmVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHdpbmRvd1t0aGlzLndpbmRvd09uTG9hZENhbGxiYWNrUHJvcGVydHldID0ge307XHJcbiAgICAgICAgd2luZG93W3RoaXMuZ2xvYmFsUmVDYXB0Y2hhUHJvcGVydHldID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGNhcHRjaGEgcmVzcG9uc2UgYXMgcGVyIHJlQ2FwdGNoYSBkb2NzXHJcbiAgICAqL1xyXG4gICAgZ2V0UmVzcG9uc2UoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZUNhcHRjaGFBcGkuZ2V0UmVzcG9uc2UodGhpcy5jYXB0Y2hhSWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBJZCBvZiBjYXB0Y2hhIHdpZGdldFxyXG4gICAgKi9cclxuICAgIGdldENhcHRjaGFJZCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNhcHRjaGFJZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogUmVzZXRzIGNhcHRjaGFcclxuICAgICovXHJcbiAgICByZXNldENhcHRjaGEoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XHJcbiAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkKG51bGwpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBsYXN0IHN1Ym1pdHRlZCBjYXB0Y2hhIHJlc3BvbnNlXHJcbiAgICAqL1xyXG4gICAgZ2V0Q3VycmVudFJlc3BvbnNlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFJlc3BvbnNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVsb2FkIGNhcHRjaGEuIFVzZWZ1bCB3aGVuIHByb3BlcnRpZXMgKGkuZS4gdGhlbWUpIGNoYW5nZWQgYW5kIGNhcHRjaGEgbmVlZCB0byByZWZsZWN0IHRoZW1cclxuICAgICovXHJcbiAgICByZWxvYWRDYXB0Y2hhKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2V0dXBDb21wb25lbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZW5zdXJlQ2FwdGNoYUVsZW0oY2FwdGNoYUVsZW1JZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgY2FwdGNoYUVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjYXB0Y2hhRWxlbUlkKTtcclxuXHJcbiAgICAgICAgaWYgKCFjYXB0Y2hhRWxlbSkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgQ2FwdGNoYSBlbGVtZW50IHdpdGggaWQgJyR7Y2FwdGNoYUVsZW1JZH0nIHdhcyBub3QgZm91bmRgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGFzc2lnbiBjYXB0Y2hhIGFsZW1cclxuICAgICAgICB0aGlzLmNhcHRjaGFFbGVtID0gY2FwdGNoYUVsZW07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXNwb25zaWJsZSBmb3IgaW5zdGFudGlhdGluZyBjYXB0Y2hhIGVsZW1lbnRcclxuICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcmVuZGVyUmVDYXB0Y2hhKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2FwdGNoYUlkID0gdGhpcy5yZUNhcHRjaGFBcGkucmVuZGVyKHRoaXMuY2FwdGNoYUVsZW1JZCwgdGhpcy5nZXRDYXB0Y2hhUHJvcGVydGllcygpKTtcclxuICAgICAgICB0aGlzLnJlYWR5Lm5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGxlZCB3aGVuIGNhcHRjaGEgcmVjZWl2ZXMgcmVzcG9uc2VcclxuICAgICAqIEBwYXJhbSBjYWxsYmFjayBDYWxsYmFja1xyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgaGFuZGxlQ2FsbGJhY2soY2FsbGJhY2s6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFJlc3BvbnNlID0gY2FsbGJhY2s7XHJcbiAgICAgICAgdGhpcy5zdWNjZXNzLm5leHQoY2FsbGJhY2spO1xyXG5cclxuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZShjYWxsYmFjayk7XHJcbiAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkKGNhbGxiYWNrKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucmVzZXRDYXB0Y2hhQWZ0ZXJTdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRDYXB0Y2hhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVnaXN0ZXJzIHJlQ2FwdGNoYSBzY3JpcHQgaWYgaXRzIG5vdCBhdmFpbGFibGVcclxuICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZW5zdXJlUmVDYXB0Y2hhU2NyaXB0KCk6IHZvaWQge1xyXG4gICAgICAgIHdpbmRvd1t0aGlzLmdsb2JhbFJlQ2FwdGNoYVByb3BlcnR5XSA9IHt9O1xyXG4gICAgICAgIHRoaXMucmVDYXB0Y2hhQXBpID0ge307XHJcblxyXG4gICAgICAgIHRoaXMucmVnaXN0ZXJSZUNhcHRjaGFTY3JpcHQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZCBzY3JpcHQgdG8gcGFnZSB3aXRoIHJlZmVyZW5jZSB0byBjYXB0Y2hhIEFQSS4gVGhpcyBoYXMgdG8gYmUgZG9uZSBtYW51YWxseVxyXG4gICAgICogYXMgd2Ugd2FudCB0byBhdm9pZCBhZGRpbmcgc2NyaXB0IHRvIG1haW4gaW5kZXguaHRtbFxyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCByZWdpc3RlclJlQ2FwdGNoYVNjcmlwdCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuICAgICAgICBzY3JpcHQuaW5uZXJIVE1MID0gJyc7XHJcbiAgICAgICAgc2NyaXB0LnNyYyA9XHJcbiAgICAgICAgICAgIGBodHRwczovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS9hcGkuanM/b25sb2FkPSR7dGhpcy53aW5kb3dPbkxvYWRDYWxsYmFja1Byb3BlcnR5fSZyZW5kZXI9ZXhwbGljaXQke3RoaXMuZ2V0TGFuZ3VhZ2VQYXJhbSgpfWA7XHJcbiAgICAgICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcclxuICAgICAgICBzY3JpcHQuZGVmZXIgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLmNhcHRjaGFTY3JpcHRFbGVtLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0TGFuZ3VhZ2VQYXJhbSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghdGhpcy5obCkge1xyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gYCZobD0ke3RoaXMuaGx9YDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFBzZXVkb1VuaXF1ZU51bWJlcigpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldFVUQ01pbGxpc2Vjb25kcygpICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogOTk5OSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVja3MgaWYgcmVDYXB0Y2hhIEFwaSBpcyBkZWZpbmVkLiBJdCBtYXkgaGFwcGVuIHRoYXQgd2hlbiBuYXZpZ2F0aW5nIGZyb20gYW5ndWxhciBjb21wb25lbnQgdG8gYW5vdGhlclxyXG4gICAgICogdmlhIHJvdXRlciwgdGhlIEFwaSB3YXMgYWxyZWFkeSBsb2FkZWQgcHJldmlvdXNseS4gSW4gc3VjaCBjYXNlcywgZG8gbm90IHJlbmRlciBzY3JpcHQgYWdhaW4uXHJcbiAgICAqL1xyXG4gICAgcHJpdmF0ZSBpc1JlQ2FwdGNoYUFwaURlZmluZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCF3aW5kb3dbdGhpcy5nbG9iYWxSZUNhcHRjaGFQcm9wZXJ0eV0pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldHVwQ29tcG9uZW50KCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGNhcHRjaGEgc3BlY2lmaWMgc2V0dXBcclxuICAgICAgICB0aGlzLmNhcHRjaGFTcGVjaWZpY1NldHVwKCk7XHJcblxyXG4gICAgICAgIC8vIGNyZWF0ZSBjYXB0Y2hhIHdyYXBwZXJcclxuICAgICAgICB0aGlzLmNyZWF0ZUFuZFNldENhcHRjaGFFbGVtKCk7XHJcblxyXG4gICAgICAgIC8vIHdlIG5lZWQgdG8gcGF0Y2ggdGhlIGNhbGxiYWNrIHRocm91Z2ggZ2xvYmFsIHZhcmlhYmxlLCBvdGhlcndpc2UgY2FsbGJhY2sgaXMgbm90IGFjY2Vzc2libGVcclxuICAgICAgICAvLyBub3RlOiBodHRwczovL2dpdGh1Yi5jb20vRW5uZ2FnZS9uZ3gtY2FwdGNoYS9pc3N1ZXMvMlxyXG4gICAgICAgIHdpbmRvd1t0aGlzLndpbmRvd09uTG9hZENhbGxiYWNrUHJvcGVydHldID0gPGFueT4oKCkgPT4gdGhpcy56b25lLnJ1bihcclxuICAgICAgICAgICAgdGhpcy5vbmxvYWRDYWxsYmFjay5iaW5kKHRoaXMpXHJcbiAgICAgICAgKSk7XHJcblxyXG4gICAgICAgIC8vIGNyZWF0ZSBhbmQgcHV0IHJlQ2FwdGNoYSBzY3JpcHQgdG8gcGFnZVxyXG4gICAgICAgIHRoaXMuZW5zdXJlUmVDYXB0Y2hhU2NyaXB0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENhbGxlZCB3aGVuIGdvb2dsZSdzIHJlY2FwdGNoYSBzY3JpcHQgaXMgcmVhZHlcclxuICAgICovXHJcbiAgICBwcml2YXRlIG9ubG9hZENhbGxiYWNrKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGFzc2lnbiByZWZlcmVuY2UgdG8gcmVDYXB0Y2hhIEFwaSBvbmNlIGl0cyBsb2FkZWRcclxuICAgICAgICB0aGlzLnJlQ2FwdGNoYUFwaSA9IGdyZWNhcHRjaGE7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5yZUNhcHRjaGFBcGkpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFJlQ2FwdGNoYSBBcGkgd2FzIG5vdCBpbml0aWFsaXplZCBjb3JyZWN0bHlgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGxvYWRlZCBmbGFnXHJcbiAgICAgICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIC8vIGZpcmUgbG9hZCBldmVudFxyXG4gICAgICAgIHRoaXMubG9hZC5uZXh0KCk7XHJcblxyXG4gICAgICAgIC8vIHJlbmRlciBjYXB0Y2hhXHJcbiAgICAgICAgdGhpcy5yZW5kZXJSZUNhcHRjaGEoKTtcclxuXHJcbiAgICAgICAgLy8gc2V0dXAgY29tcG9uZW50IGlmIGl0IHdhcyBmbGFnZ2VkIGFzIHN1Y2hcclxuICAgICAgICBpZiAodGhpcy5zZXR1cEFmdGVyTG9hZCkge1xyXG4gICAgICAgICAgICB0aGlzLnNldHVwQWZ0ZXJMb2FkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dXBDb21wb25lbnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZU5ld0VsZW1JZCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNhcHRjaGFFbGVtUHJlZml4ICsgdGhpcy5nZXRQc2V1ZG9VbmlxdWVOdW1iZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNyZWF0ZUFuZFNldENhcHRjaGFFbGVtKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGdlbmVyYXRlIG5ldyBjYXB0Y2hhIGlkXHJcbiAgICAgICAgdGhpcy5jYXB0Y2hhRWxlbUlkID0gdGhpcy5nZW5lcmF0ZU5ld0VsZW1JZCgpO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuY2FwdGNoYUVsZW1JZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgQ2FwdGNoYSBlbGVtIElkIGlzIG5vdCBzZXRgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHJlbW92ZSBvbGQgaHRtbFxyXG4gICAgICAgIHRoaXMuY2FwdGNoYVdyYXBwZXJFbGVtLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJyc7XHJcblxyXG4gICAgICAgIC8vIGNyZWF0ZSBuZXcgd3JhcHBlciBmb3IgY2FwdGNoYVxyXG4gICAgICAgIGNvbnN0IG5ld0VsZW0gPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIG5ld0VsZW0uaWQgPSB0aGlzLmNhcHRjaGFFbGVtSWQ7XHJcblxyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5jYXB0Y2hhV3JhcHBlckVsZW0ubmF0aXZlRWxlbWVudCwgbmV3RWxlbSk7XHJcblxyXG4gICAgICAgIC8vIHVwZGF0ZSBjYXB0Y2hhIGVsZW1cclxuICAgICAgICB0aGlzLmVuc3VyZUNhcHRjaGFFbGVtKHRoaXMuY2FwdGNoYUVsZW1JZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUbyBiZSBhbGlnbmVkIHdpdGggdGhlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZSB3ZSBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZFxyXG4gICAgICogSG93ZXZlciBhcyB3ZSBkb24ndCB3YW50IHRvIHVwZGF0ZSB0aGUgcmVjYXB0Y2hhLCB0aGlzIGRvZXNuJ3QgbmVlZCB0byBiZSBpbXBsZW1lbnRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIG1ldGhvZCBoZWxwcyB1cyB0aWUgdG9nZXRoZXIgcmVjYXB0Y2hhIGFuZCBvdXIgZm9ybUNvbnRyb2wgdmFsdWVzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEF0IHNvbWUgcG9pbnQgd2UgbWlnaHQgYmUgaW50ZXJlc3RlZCB3aGV0aGVyIHRoZSB1c2VyIGhhcyB0b3VjaGVkIG91ciBjb21wb25lbnRcclxuICAgICovXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ export { ReCaptcha2Component } from './recaptcha-2.component';

/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -113,3 +113,3 @@ import * as tslib_1 from "tslib";

export { InvisibleReCaptchaComponent };
function InvisibleReCaptchaComponent_tsickle_Closure_declarations() {
if (false) {
/**

@@ -116,0 +116,0 @@ * This size representing invisible captcha

/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ import { CommonModule } from '@angular/common';

/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -172,3 +172,3 @@ import * as tslib_1 from "tslib";

export { ReCaptcha2Component };
function ReCaptcha2Component_tsickle_Closure_declarations() {
if (false) {
/**

@@ -175,0 +175,0 @@ * Name of the global expire callback

/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -11,5 +11,5 @@ /** @enum {number} */

export { ReCaptchaType };
ReCaptchaType[ReCaptchaType.InvisibleReCaptcha] = "InvisibleReCaptcha";
ReCaptchaType[ReCaptchaType.ReCaptcha2] = "ReCaptcha2";
ReCaptchaType[ReCaptchaType.InvisibleReCaptcha] = 'InvisibleReCaptcha';
ReCaptchaType[ReCaptchaType.ReCaptcha2] = 'ReCaptcha2';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLXR5cGUuZW51bS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1jYXB0Y2hhLyIsInNvdXJjZXMiOlsibGliL3JlY2FwdGNoYS10eXBlLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFJlQ2FwdGNoYVR5cGUge1xyXG5cclxuICAgIEludmlzaWJsZVJlQ2FwdGNoYSxcclxuICAgIFJlQ2FwdGNoYTJcclxufVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLXR5cGUuZW51bS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1jYXB0Y2hhLyIsInNvdXJjZXMiOlsibGliL3JlY2FwdGNoYS10eXBlLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0lBRUkscUJBQWtCO0lBQ2xCLGFBQVU7Ozs0QkFEVixrQkFBa0I7NEJBQ2xCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBSZUNhcHRjaGFUeXBlIHtcclxuXHJcbiAgICBJbnZpc2libGVSZUNhcHRjaGEsXHJcbiAgICBSZUNhcHRjaGEyXHJcbn1cclxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -9,8 +9,6 @@ /**

export function INgxCaptchaConfig() { }
function INgxCaptchaConfig_tsickle_Closure_declarations() {
/** @type {?|undefined} */
INgxCaptchaConfig.prototype.reCaptcha2SiteKey;
/** @type {?|undefined} */
INgxCaptchaConfig.prototype.invisibleCaptchaSiteKey;
}
/** @type {?|undefined} */
INgxCaptchaConfig.prototype.reCaptcha2SiteKey;
/** @type {?|undefined} */
INgxCaptchaConfig.prototype.invisibleCaptchaSiteKey;
var NgxCaptchaConfig = /** @class */ (function () {

@@ -22,3 +20,3 @@ function NgxCaptchaConfig() {

export { NgxCaptchaConfig };
function NgxCaptchaConfig_tsickle_Closure_declarations() {
if (false) {
/** @type {?} */

@@ -30,2 +28,2 @@ NgxCaptchaConfig.prototype.reCaptcha2SiteKey;

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1jYXB0Y2hhLyIsInNvdXJjZXMiOlsibGliL3JlY2FwdGNoYS5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFLQSxJQUFBOzs7MkJBTEE7SUFTQyxDQUFBO0FBSkQsNEJBSUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElOZ3hDYXB0Y2hhQ29uZmlnIHtcclxuICAgIHJlQ2FwdGNoYTJTaXRlS2V5Pzogc3RyaW5nIHwgKCgpID0+IHN0cmluZyk7XHJcbiAgICBpbnZpc2libGVDYXB0Y2hhU2l0ZUtleT86IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTmd4Q2FwdGNoYUNvbmZpZyBpbXBsZW1lbnRzIElOZ3hDYXB0Y2hhQ29uZmlnIHtcclxuXHJcbiAgICBwdWJsaWMgcmVDYXB0Y2hhMlNpdGVLZXk/OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcclxuICAgIHB1YmxpYyBpbnZpc2libGVDYXB0Y2hhU2l0ZUtleT86IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xyXG59XHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1jYXB0Y2hhLyIsInNvdXJjZXMiOlsibGliL3JlY2FwdGNoYS5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBS0EsSUFBQTs7OzJCQUxBO0lBU0MsQ0FBQTtBQUpELDRCQUlDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJTmd4Q2FwdGNoYUNvbmZpZyB7XHJcbiAgICByZUNhcHRjaGEyU2l0ZUtleT86IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xyXG4gICAgaW52aXNpYmxlQ2FwdGNoYVNpdGVLZXk/OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE5neENhcHRjaGFDb25maWcgaW1wbGVtZW50cyBJTmd4Q2FwdGNoYUNvbmZpZyB7XHJcblxyXG4gICAgcHVibGljIHJlQ2FwdGNoYTJTaXRlS2V5Pzogc3RyaW5nIHwgKCgpID0+IHN0cmluZyk7XHJcbiAgICBwdWJsaWMgaW52aXNpYmxlQ2FwdGNoYVNpdGVLZXk/OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcclxufVxyXG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /**

/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /*

@@ -7,3 +7,3 @@ import { EventEmitter, Input, Output, ViewChild, Component, Optional, Renderer2, NgZone, Injector, forwardRef, NgModule } from '@angular/core';

* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -15,8 +15,8 @@ /** @enum {number} */

};
ReCaptchaType[ReCaptchaType.InvisibleReCaptcha] = "InvisibleReCaptcha";
ReCaptchaType[ReCaptchaType.ReCaptcha2] = "ReCaptcha2";
ReCaptchaType[ReCaptchaType.InvisibleReCaptcha] = 'InvisibleReCaptcha';
ReCaptchaType[ReCaptchaType.ReCaptcha2] = 'ReCaptcha2';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

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

});
this.reCaptchaApi.reset(this.captchaId);
}

@@ -194,3 +193,4 @@ /**

ensureCaptchaElem(captchaElemId) {
const /** @type {?} */ captchaElem = document.getElementById(captchaElemId);
/** @type {?} */
const captchaElem = document.getElementById(captchaElemId);
if (!captchaElem) {

@@ -241,3 +241,4 @@ throw Error(`Captcha element with id '${captchaElemId}' was not found`);

registerReCaptchaScript() {
const /** @type {?} */ script = document.createElement('script');
/** @type {?} */
const script = document.createElement('script');
script.innerHTML = '';

@@ -329,4 +330,4 @@ script.src =

this.captchaWrapperElem.nativeElement.innerHTML = '';
// create new wrapper for captcha
const /** @type {?} */ newElem = this.renderer.createElement('div');
/** @type {?} */
const newElem = this.renderer.createElement('div');
newElem.id = this.captchaElemId;

@@ -375,3 +376,3 @@ this.renderer.appendChild(this.captchaWrapperElem.nativeElement, newElem);

* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -383,3 +384,3 @@ class NgxCaptchaConfig {

* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -523,3 +524,3 @@ class ReCaptcha2Component extends BaseReCaptchaComponent {

* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -613,3 +614,3 @@ class InvisibleReCaptchaComponent extends BaseReCaptchaComponent {

* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -651,3 +652,3 @@ class NgxCaptchaModule {

* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -657,3 +658,3 @@

* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -663,3 +664,3 @@

* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/

@@ -669,2 +670,2 @@

//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWNhcHRjaGEuanMubWFwIiwic291cmNlcyI6WyJuZzovL25neC1jYXB0Y2hhL2xpYi9iYXNlLXJlY2FwdGNoYS5jb21wb25lbnQudHMiLCJuZzovL25neC1jYXB0Y2hhL2xpYi9yZWNhcHRjaGEuY29uZmlnLnRzIiwibmc6Ly9uZ3gtY2FwdGNoYS9saWIvcmVjYXB0Y2hhLTIuY29tcG9uZW50LnRzIiwibmc6Ly9uZ3gtY2FwdGNoYS9saWIvaW52aXNpYmxlLXJlY2FwdGNoYS5jb21wb25lbnQudHMiLCJuZzovL25neC1jYXB0Y2hhL2xpYi9uZ3gtY2FwdGNoYS5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLCBJbmplY3RvcixcclxuICBJbnB1dCxcclxuICBOZ1pvbmUsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgUmVDYXB0Y2hhVHlwZSB9IGZyb20gJy4vcmVjYXB0Y2hhLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IE5neENhcHRjaGFDb25maWcgfSBmcm9tICcuL3JlY2FwdGNoYS5jb25maWcnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmRlY2xhcmUgdmFyIGdyZWNhcHRjaGE6IGFueTtcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlUmVDYXB0Y2hhQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0IHtcclxuICAgIC8qKlxyXG4gICAgICogRm9ybSBDb250cm9sIHRvIGJlIGVuYWJsZSB1c2FnZSBpbiByZWFjdGl2ZSBmb3Jtc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNvbnRyb2w6IEZvcm1Db250cm9sO1xyXG5cclxuICAgIHByaXZhdGUgc2V0dXBBZnRlckxvYWQgPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICogTmFtZSBvZiB0aGUgZ2xvYmFsIGNhbGxiYWNrXHJcbiAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHdpbmRvd09uTG9hZENhbGxiYWNrUHJvcGVydHkgPSAnbmd4X29ubG9hZF9jYWxsYmFja18nICsgdGhpcy5nZXRQc2V1ZG9VbmlxdWVOdW1iZXIoKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE5hbWUgb2YgdGhlIGdsb2JhbCByZUNhcHRjaGEgcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGdsb2JhbFJlQ2FwdGNoYVByb3BlcnR5ID0gJ2dyZWNhcHRjaGEnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJlZml4IG9mIHRoZSBjYXB0Y2hhIGVsZW1lbnRcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhcHRjaGFFbGVtUHJlZml4ID0gJ25neF9jYXB0Y2hhX2lkXyc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgICogR29vZ2xlJ3Mgc2l0ZSBrZXkuXHJcbiAgICAgICogWW91IGNhbiBmaW5kIHRoaXMgdW5kZXIgaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9yZWNhcHRjaGFcclxuICAgICAgKi9cclxuICAgIHByb3RlY3RlZCBfc2l0ZUtleT86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICogQ29uZmlnIHRvIHVzZVxyXG4gICAgKi9cclxuICAgIEBJbnB1dCgpIHNpdGVLZXk6IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHlwZVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSB0eXBlOiAnYXVkaW8nIHwgJ2ltYWdlJyA9ICdpbWFnZSc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMYW5ndWFnZSBjb2RlLiBBdXRvLWRldGVjdHMgdGhlIHVzZXIncyBsYW5ndWFnZSBpZiB1bnNwZWNpZmllZC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgaGw6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICogVGFiIGluZGV4XHJcbiAgICAqL1xyXG4gICAgQElucHV0KCkgdGFiSW5kZXggPSAwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGVkIHdoZW4gY2FwdGNoYSByZWNlaXZlcyBzdWNjZXNzZnVsIHJlc3BvbnNlLlxyXG4gICAgICogQ2FwdGNoYSByZXNwb25zZSB0b2tlbiBpcyBwYXNzZWQgdG8gZXZlbnQuXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBzdWNjZXNzID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENhbGxlZCB3aGVuIGNhcHRjaGEgaXMgbG9hZGVkLiBFdmVudCByZWNlaXZlcyBpZCBvZiB0aGUgY2FwdGNoYVxyXG4gICAgKi9cclxuICAgIEBPdXRwdXQoKSBsb2FkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENhbGxlZCB3aGVuIGNhcHRjaGEgaXMgbG9hZGVkICYgcmVhZHkuIEkuZS4gd2hlbiB5b3UgbmVlZCB0byBleGVjdXRlIGNhcHRjaGEgb24gY29tcG9uZW50IGxvYWQuXHJcbiAgICAqL1xyXG4gICAgQE91dHB1dCgpIHJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2NhcHRjaGFXcmFwcGVyRWxlbScpIGNhcHRjaGFXcmFwcGVyRWxlbTogRWxlbWVudFJlZjtcclxuICAgIEBWaWV3Q2hpbGQoJ2NhcHRjaGFTY3JpcHRFbGVtJykgY2FwdGNoYVNjcmlwdEVsZW06IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYXB0Y2hhIGVsZW1lbnRcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGNhcHRjaGFFbGVtPzogSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZCBvZiB0aGUgY2FwdGNoYSBlbGVtXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBjYXB0Y2hhSWQ/OiBudW1iZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIb2xkcyBsYXN0IHJlc3BvbnNlIHZhbHVlXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBjdXJyZW50UmVzcG9uc2U/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZiBlbmFibGVkLCBjYXB0Y2hhIHdpbGwgcmVzZXQgYWZ0ZXIgcmVjZWl2aW5nIHN1Y2Nlc3MgcmVzcG9uc2UuIFRoaXMgaXMgdXNlZnVsXHJcbiAgICAgKiB3aGVuIGludmlzaWJsZSBjYXB0Y2hhIG5lZWQgdG8gYmUgcmVzb2x2ZWQgbXVsdGlwbGUgdGltZXMgb24gc2FtZSBwYWdlXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCByZXNldENhcHRjaGFBZnRlclN1Y2Nlc3MgPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyBpZiBjYXB0Y2hhIGlzIGxvYWRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaXNMb2FkZWQgPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICogUmVmZXJlbmNlIHRvIGdsb2JhbCByZUNhcHRjaGEgQVBJXHJcbiAgICAqL1xyXG4gICAgcHVibGljIHJlQ2FwdGNoYUFwaT86IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIElkIG9mIHRoZSBET00gZWxlbWVudCB3cmFwcGluZyBjYXB0Y2hhXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjYXB0Y2hhRWxlbUlkPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FwdGNoYSB0eXBlXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCByZWNhcHRjaGFUeXBlOiBSZUNhcHRjaGFUeXBlO1xyXG5cclxuICAvKipcclxuICAgKiBSZXF1aXJlZCBieSBDb250cm9sVmFsdWVBY2Nlc3NvclxyXG4gICAqL1xyXG4gICAgcHJvdGVjdGVkIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZyApID0+IHZvaWQ7XHJcbiAgICBwcm90ZWN0ZWQgb25Ub3VjaGVkOiAodmFsdWU6IHN0cmluZyApID0+IHZvaWQ7XHJcblxyXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgICAgIHByb3RlY3RlZCB6b25lOiBOZ1pvbmUsXHJcbiAgICAgICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwcm90ZWN0ZWQgZ2xvYmFsQ29uZmlnPzogTmd4Q2FwdGNoYUNvbmZpZyxcclxuICAgICkge31cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCkuY29udHJvbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogR2V0cyByZUNhcHRjaGEgcHJvcGVydGllc1xyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRDYXB0Y2hhUHJvcGVydGllcygpOiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVc2VkIGZvciBjYXB0Y2hhIHNwZWNpZmljIHNldHVwXHJcbiAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGNhcHRjaGFTcGVjaWZpY1NldHVwKCk6IHZvaWQ7XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRHbG9iYWxTaXRlS2V5KCk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2xvYmFsQ29uZmlnKSB7XHJcbiAgICAgICAgICAgIC8vIEludmlzaWJsZSBjYXB0Y2hhXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnJlY2FwdGNoYVR5cGUgPT09IFJlQ2FwdGNoYVR5cGUuSW52aXNpYmxlUmVDYXB0Y2hhKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZ2xvYmFsQ29uZmlnLmludmlzaWJsZUNhcHRjaGFTaXRlS2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFNpdGVLZXkgZm9yIGludmlzaWJsZSByZUNhcHRjaGEgaXMgbm90IHNldCFgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5nbG9iYWxDb25maWcuaW52aXNpYmxlQ2FwdGNoYVNpdGVLZXkgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdsb2JhbENvbmZpZy5pbnZpc2libGVDYXB0Y2hhU2l0ZUtleSgpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nbG9iYWxDb25maWcuaW52aXNpYmxlQ2FwdGNoYVNpdGVLZXk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gcmVjYXB0Y2hhIDJcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJlY2FwdGNoYVR5cGUgPT09IFJlQ2FwdGNoYVR5cGUuUmVDYXB0Y2hhMikge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmdsb2JhbENvbmZpZy5yZUNhcHRjaGEyU2l0ZUtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBTaXRlS2V5IGZvciByZUNhcHRjaGEyIGlzIG5vdCBzZXQhYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2xvYmFsQ29uZmlnLnJlQ2FwdGNoYTJTaXRlS2V5IGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nbG9iYWxDb25maWcucmVDYXB0Y2hhMlNpdGVLZXkoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2xvYmFsQ29uZmlnLnJlQ2FwdGNoYTJTaXRlS2V5O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBVbnN1cHBvcnRlZCBjYXB0Y2hhIHR5cGUgJyR7dGhpcy5yZWNhcHRjaGFUeXBlfSchYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuc2l0ZUtleSkge1xyXG4gICAgICAgICAgICAvLyB1c2UgZ2xvYmFsIHNpdGUga2V5IGlmIGtleSBpcyBub3QgYXZhaWxhYmxlXHJcbiAgICAgICAgICAgIHRoaXMuX3NpdGVLZXkgPSB0aGlzLmdldEdsb2JhbFNpdGVLZXkoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyB1c2UgY29tbnBvbmVudCBzaXRlIGtleVxyXG4gICAgICAgICAgICBpZiAodGhpcy5zaXRlS2V5IGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3NpdGVLZXkgPSB0aGlzLnNpdGVLZXkoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3NpdGVLZXkgPSB0aGlzLnNpdGVLZXk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXR1cENvbXBvbmVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHdpbmRvd1t0aGlzLndpbmRvd09uTG9hZENhbGxiYWNrUHJvcGVydHldID0ge307XHJcbiAgICAgICAgd2luZG93W3RoaXMuZ2xvYmFsUmVDYXB0Y2hhUHJvcGVydHldID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGNhcHRjaGEgcmVzcG9uc2UgYXMgcGVyIHJlQ2FwdGNoYSBkb2NzXHJcbiAgICAqL1xyXG4gICAgZ2V0UmVzcG9uc2UoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZUNhcHRjaGFBcGkuZ2V0UmVzcG9uc2UodGhpcy5jYXB0Y2hhSWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBJZCBvZiBjYXB0Y2hhIHdpZGdldFxyXG4gICAgKi9cclxuICAgIGdldENhcHRjaGFJZCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNhcHRjaGFJZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogUmVzZXRzIGNhcHRjaGFcclxuICAgICovXHJcbiAgICByZXNldENhcHRjaGEoKTogdm9pZCB7XHJcbiAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoZWQobnVsbCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5yZUNhcHRjaGFBcGkucmVzZXQodGhpcy5jYXB0Y2hhSWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBsYXN0IHN1Ym1pdHRlZCBjYXB0Y2hhIHJlc3BvbnNlXHJcbiAgICAqL1xyXG4gICAgZ2V0Q3VycmVudFJlc3BvbnNlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFJlc3BvbnNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVsb2FkIGNhcHRjaGEuIFVzZWZ1bCB3aGVuIHByb3BlcnRpZXMgKGkuZS4gdGhlbWUpIGNoYW5nZWQgYW5kIGNhcHRjaGEgbmVlZCB0byByZWZsZWN0IHRoZW1cclxuICAgICovXHJcbiAgICByZWxvYWRDYXB0Y2hhKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2V0dXBDb21wb25lbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZW5zdXJlQ2FwdGNoYUVsZW0oY2FwdGNoYUVsZW1JZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgY2FwdGNoYUVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjYXB0Y2hhRWxlbUlkKTtcclxuXHJcbiAgICAgICAgaWYgKCFjYXB0Y2hhRWxlbSkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgQ2FwdGNoYSBlbGVtZW50IHdpdGggaWQgJyR7Y2FwdGNoYUVsZW1JZH0nIHdhcyBub3QgZm91bmRgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGFzc2lnbiBjYXB0Y2hhIGFsZW1cclxuICAgICAgICB0aGlzLmNhcHRjaGFFbGVtID0gY2FwdGNoYUVsZW07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXNwb25zaWJsZSBmb3IgaW5zdGFudGlhdGluZyBjYXB0Y2hhIGVsZW1lbnRcclxuICAgICovXHJcbiAgICBwcm90ZWN0ZWQgcmVuZGVyUmVDYXB0Y2hhKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2FwdGNoYUlkID0gdGhpcy5yZUNhcHRjaGFBcGkucmVuZGVyKHRoaXMuY2FwdGNoYUVsZW1JZCwgdGhpcy5nZXRDYXB0Y2hhUHJvcGVydGllcygpKTtcclxuICAgICAgICB0aGlzLnJlYWR5Lm5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGxlZCB3aGVuIGNhcHRjaGEgcmVjZWl2ZXMgcmVzcG9uc2VcclxuICAgICAqIEBwYXJhbSBjYWxsYmFjayBDYWxsYmFja1xyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgaGFuZGxlQ2FsbGJhY2soY2FsbGJhY2s6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFJlc3BvbnNlID0gY2FsbGJhY2s7XHJcbiAgICAgICAgdGhpcy5zdWNjZXNzLm5leHQoY2FsbGJhY2spO1xyXG5cclxuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMub25DaGFuZ2UoY2FsbGJhY2spO1xyXG4gICAgICAgICAgdGhpcy5vblRvdWNoZWQoY2FsbGJhY2spO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5yZXNldENhcHRjaGFBZnRlclN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgdGhpcy5yZXNldENhcHRjaGEoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWdpc3RlcnMgcmVDYXB0Y2hhIHNjcmlwdCBpZiBpdHMgbm90IGF2YWlsYWJsZVxyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCBlbnN1cmVSZUNhcHRjaGFTY3JpcHQoKTogdm9pZCB7XHJcbiAgICAgICAgd2luZG93W3RoaXMuZ2xvYmFsUmVDYXB0Y2hhUHJvcGVydHldID0ge307XHJcbiAgICAgICAgdGhpcy5yZUNhcHRjaGFBcGkgPSB7fTtcclxuXHJcbiAgICAgICAgdGhpcy5yZWdpc3RlclJlQ2FwdGNoYVNjcmlwdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkIHNjcmlwdCB0byBwYWdlIHdpdGggcmVmZXJlbmNlIHRvIGNhcHRjaGEgQVBJLiBUaGlzIGhhcyB0byBiZSBkb25lIG1hbnVhbGx5XHJcbiAgICAgKiBhcyB3ZSB3YW50IHRvIGF2b2lkIGFkZGluZyBzY3JpcHQgdG8gbWFpbiBpbmRleC5odG1sXHJcbiAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHJlZ2lzdGVyUmVDYXB0Y2hhU2NyaXB0KCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xyXG4gICAgICAgIHNjcmlwdC5pbm5lckhUTUwgPSAnJztcclxuICAgICAgICBzY3JpcHQuc3JjID1cclxuICAgICAgICAgICAgYGh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vcmVjYXB0Y2hhL2FwaS5qcz9vbmxvYWQ9JHt0aGlzLndpbmRvd09uTG9hZENhbGxiYWNrUHJvcGVydHl9JnJlbmRlcj1leHBsaWNpdCR7dGhpcy5nZXRMYW5ndWFnZVBhcmFtKCl9YDtcclxuICAgICAgICBzY3JpcHQuYXN5bmMgPSB0cnVlO1xyXG4gICAgICAgIHNjcmlwdC5kZWZlciA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuY2FwdGNoYVNjcmlwdEVsZW0ubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChzY3JpcHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRMYW5ndWFnZVBhcmFtKCk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmhsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBgJmhsPSR7dGhpcy5obH1gO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0UHNldWRvVW5pcXVlTnVtYmVyKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKCkuZ2V0VVRDTWlsbGlzZWNvbmRzKCkgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiA5OTk5KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyBpZiByZUNhcHRjaGEgQXBpIGlzIGRlZmluZWQuIEl0IG1heSBoYXBwZW4gdGhhdCB3aGVuIG5hdmlnYXRpbmcgZnJvbSBhbmd1bGFyIGNvbXBvbmVudCB0byBhbm90aGVyXHJcbiAgICAgKiB2aWEgcm91dGVyLCB0aGUgQXBpIHdhcyBhbHJlYWR5IGxvYWRlZCBwcmV2aW91c2x5LiBJbiBzdWNoIGNhc2VzLCBkbyBub3QgcmVuZGVyIHNjcmlwdCBhZ2Fpbi5cclxuICAgICovXHJcbiAgICBwcml2YXRlIGlzUmVDYXB0Y2hhQXBpRGVmaW5lZCgpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXdpbmRvd1t0aGlzLmdsb2JhbFJlQ2FwdGNoYVByb3BlcnR5XSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0dXBDb21wb25lbnQoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gY2FwdGNoYSBzcGVjaWZpYyBzZXR1cFxyXG4gICAgICAgIHRoaXMuY2FwdGNoYVNwZWNpZmljU2V0dXAoKTtcclxuXHJcbiAgICAgICAgLy8gY3JlYXRlIGNhcHRjaGEgd3JhcHBlclxyXG4gICAgICAgIHRoaXMuY3JlYXRlQW5kU2V0Q2FwdGNoYUVsZW0oKTtcclxuXHJcbiAgICAgICAgLy8gd2UgbmVlZCB0byBwYXRjaCB0aGUgY2FsbGJhY2sgdGhyb3VnaCBnbG9iYWwgdmFyaWFibGUsIG90aGVyd2lzZSBjYWxsYmFjayBpcyBub3QgYWNjZXNzaWJsZVxyXG4gICAgICAgIC8vIG5vdGU6IGh0dHBzOi8vZ2l0aHViLmNvbS9Fbm5nYWdlL25neC1jYXB0Y2hhL2lzc3Vlcy8yXHJcbiAgICAgICAgd2luZG93W3RoaXMud2luZG93T25Mb2FkQ2FsbGJhY2tQcm9wZXJ0eV0gPSA8YW55PigoKSA9PiB0aGlzLnpvbmUucnVuKFxyXG4gICAgICAgICAgICB0aGlzLm9ubG9hZENhbGxiYWNrLmJpbmQodGhpcylcclxuICAgICAgICApKTtcclxuXHJcbiAgICAgICAgLy8gY3JlYXRlIGFuZCBwdXQgcmVDYXB0Y2hhIHNjcmlwdCB0byBwYWdlXHJcbiAgICAgICAgdGhpcy5lbnN1cmVSZUNhcHRjaGFTY3JpcHQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogQ2FsbGVkIHdoZW4gZ29vZ2xlJ3MgcmVjYXB0Y2hhIHNjcmlwdCBpcyByZWFkeVxyXG4gICAgKi9cclxuICAgIHByaXZhdGUgb25sb2FkQ2FsbGJhY2soKTogdm9pZCB7XHJcbiAgICAgICAgLy8gYXNzaWduIHJlZmVyZW5jZSB0byByZUNhcHRjaGEgQXBpIG9uY2UgaXRzIGxvYWRlZFxyXG4gICAgICAgIHRoaXMucmVDYXB0Y2hhQXBpID0gZ3JlY2FwdGNoYTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnJlQ2FwdGNoYUFwaSkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgUmVDYXB0Y2hhIEFwaSB3YXMgbm90IGluaXRpYWxpemVkIGNvcnJlY3RseWApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gbG9hZGVkIGZsYWdcclxuICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgLy8gZmlyZSBsb2FkIGV2ZW50XHJcbiAgICAgICAgdGhpcy5sb2FkLm5leHQoKTtcclxuXHJcbiAgICAgICAgLy8gcmVuZGVyIGNhcHRjaGFcclxuICAgICAgICB0aGlzLnJlbmRlclJlQ2FwdGNoYSgpO1xyXG5cclxuICAgICAgICAvLyBzZXR1cCBjb21wb25lbnQgaWYgaXQgd2FzIGZsYWdnZWQgYXMgc3VjaFxyXG4gICAgICAgIGlmICh0aGlzLnNldHVwQWZ0ZXJMb2FkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dXBBZnRlckxvYWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zZXR1cENvbXBvbmVudCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdlbmVyYXRlTmV3RWxlbUlkKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FwdGNoYUVsZW1QcmVmaXggKyB0aGlzLmdldFBzZXVkb1VuaXF1ZU51bWJlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY3JlYXRlQW5kU2V0Q2FwdGNoYUVsZW0oKTogdm9pZCB7XHJcbiAgICAgICAgLy8gZ2VuZXJhdGUgbmV3IGNhcHRjaGEgaWRcclxuICAgICAgICB0aGlzLmNhcHRjaGFFbGVtSWQgPSB0aGlzLmdlbmVyYXRlTmV3RWxlbUlkKCk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5jYXB0Y2hhRWxlbUlkKSB7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBDYXB0Y2hhIGVsZW0gSWQgaXMgbm90IHNldGApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gcmVtb3ZlIG9sZCBodG1sXHJcbiAgICAgICAgdGhpcy5jYXB0Y2hhV3JhcHBlckVsZW0ubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAnJztcclxuXHJcbiAgICAgICAgLy8gY3JlYXRlIG5ldyB3cmFwcGVyIGZvciBjYXB0Y2hhXHJcbiAgICAgICAgY29uc3QgbmV3RWxlbSA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgbmV3RWxlbS5pZCA9IHRoaXMuY2FwdGNoYUVsZW1JZDtcclxuXHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmNhcHRjaGFXcmFwcGVyRWxlbS5uYXRpdmVFbGVtZW50LCBuZXdFbGVtKTtcclxuXHJcbiAgICAgICAgLy8gdXBkYXRlIGNhcHRjaGEgZWxlbVxyXG4gICAgICAgIHRoaXMuZW5zdXJlQ2FwdGNoYUVsZW0odGhpcy5jYXB0Y2hhRWxlbUlkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRvIGJlIGFsaWduZWQgd2l0aCB0aGUgQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlIHdlIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kXHJcbiAgICAgKiBIb3dldmVyIGFzIHdlIGRvbid0IHdhbnQgdG8gdXBkYXRlIHRoZSByZWNhcHRjaGEsIHRoaXMgZG9lc24ndCBuZWVkIHRvIGJlIGltcGxlbWVudGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7fVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2QgaGVscHMgdXMgdGllIHRvZ2V0aGVyIHJlY2FwdGNoYSBhbmQgb3VyIGZvcm1Db250cm9sIHZhbHVlc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogQXQgc29tZSBwb2ludCB3ZSBtaWdodCBiZSBpbnRlcmVzdGVkIHdoZXRoZXIgdGhlIHVzZXIgaGFzIHRvdWNoZWQgb3VyIGNvbXBvbmVudFxyXG4gICAgKi9cclxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgICB9XHJcbn1cclxuXHJcbiIsImV4cG9ydCBpbnRlcmZhY2UgSU5neENhcHRjaGFDb25maWcge1xyXG4gICAgcmVDYXB0Y2hhMlNpdGVLZXk/OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcclxuICAgIGludmlzaWJsZUNhcHRjaGFTaXRlS2V5Pzogc3RyaW5nIHwgKCgpID0+IHN0cmluZyk7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBOZ3hDYXB0Y2hhQ29uZmlnIGltcGxlbWVudHMgSU5neENhcHRjaGFDb25maWcge1xyXG5cclxuICAgIHB1YmxpYyByZUNhcHRjaGEyU2l0ZUtleT86IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xyXG4gICAgcHVibGljIGludmlzaWJsZUNhcHRjaGFTaXRlS2V5Pzogc3RyaW5nIHwgKCgpID0+IHN0cmluZyk7XHJcbn1cclxuIiwiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3B0aW9uYWwsXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIE5nWm9uZSwgSW5qZWN0b3IsIGZvcndhcmRSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBCYXNlUmVDYXB0Y2hhQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLXJlY2FwdGNoYS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZUNhcHRjaGFUeXBlIH0gZnJvbSAnLi9yZWNhcHRjaGEtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgTmd4Q2FwdGNoYUNvbmZpZyB9IGZyb20gJy4vcmVjYXB0Y2hhLmNvbmZpZyc7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZ3gtcmVjYXB0Y2hhMicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICA8ZGl2ICNjYXB0Y2hhU2NyaXB0RWxlbT48L2Rpdj5cclxuICA8ZGl2ICNjYXB0Y2hhV3JhcHBlckVsZW0+PC9kaXY+YCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJlQ2FwdGNoYTJDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZUNhcHRjaGEyQ29tcG9uZW50IGV4dGVuZHMgQmFzZVJlQ2FwdGNoYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuXHJcbiAgLyoqXHJcbiAgKiBOYW1lIG9mIHRoZSBnbG9iYWwgZXhwaXJlIGNhbGxiYWNrXHJcbiAgKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgd2luZG93T25FcnJvckNhbGxiYWNrUHJvcGVydHkgPSAnbmd4X2NhcHRjaGFfZXJyb3JfY2FsbGJhY2snO1xyXG5cclxuICAvKipcclxuICAqIE5hbWUgb2YgdGhlIGdsb2JhbCBlcnJvciBjYWxsYmFja1xyXG4gICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHdpbmRvd09uRXhwaXJlQ2FsbGJhY2tQcm9wZXJ0eSA9ICduZ3hfY2FwdGNoYV9leHBpcmVfY2FsbGJhY2snO1xyXG5cclxuICAvKipcclxuICAgKiBUaGVtZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHRoZW1lOiAnZGFyaycgfCAnbGlnaHQnID0gJ2xpZ2h0JztcclxuXHJcbiAgLyoqXHJcbiAgKiBTaXplXHJcbiAgKi9cclxuICBASW5wdXQoKSBzaXplOiAnY29tcGFjdCcgfCAnbm9ybWFsJyA9ICdub3JtYWwnO1xyXG5cclxuICAvKipcclxuICAgKiBMYW5ndWFnZSBjb2RlLiBBdXRvLWRldGVjdHMgdGhlIHVzZXIncyBsYW5ndWFnZSBpZiB1bnNwZWNpZmllZC5cclxuICAgKi9cclxuICBASW5wdXQoKSBobDogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAqIEV4cGlyZWQgY2FsbGJhY2tcclxuICAqL1xyXG4gIEBPdXRwdXQoKSBleHBpcmUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIC8qKlxyXG4gICogRXJyb3IgY2FsbGJhY2tcclxuICAqL1xyXG4gIEBPdXRwdXQoKSBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgcHJvdGVjdGVkIHJlY2FwdGNoYVR5cGU6IFJlQ2FwdGNoYVR5cGUgPSBSZUNhcHRjaGFUeXBlLlJlQ2FwdGNoYTI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcm90ZWN0ZWQgem9uZTogTmdab25lLFxyXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBnbG9iYWxDb25maWc6IE5neENhcHRjaGFDb25maWcsXHJcbiAgKSB7XHJcbiAgICBzdXBlcihyZW5kZXJlciwgem9uZSwgaW5qZWN0b3IsIGdsb2JhbENvbmZpZyk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuXHJcbiAgICB3aW5kb3dbdGhpcy53aW5kb3dPbkVycm9yQ2FsbGJhY2tQcm9wZXJ0eV0gPSB7fTtcclxuICAgIHdpbmRvd1t0aGlzLndpbmRvd09uRXhwaXJlQ2FsbGJhY2tQcm9wZXJ0eV0gPSB7fTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBjYXB0Y2hhU3BlY2lmaWNTZXR1cCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVnaXN0ZXJDYWxsYmFja3MoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgcmVDYXB0Y2hhIHByb3BlcnRpZXNcclxuICAqL1xyXG4gIHByb3RlY3RlZCBnZXRDYXB0Y2hhUHJvcGVydGllcygpOiBhbnkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJ3NpdGVrZXknOiB0aGlzLl9zaXRlS2V5LFxyXG4gICAgICAnY2FsbGJhY2snOiAocmVzcG9uc2UpID0+IHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy5oYW5kbGVDYWxsYmFjayhyZXNwb25zZSkpLFxyXG4gICAgICAnZXhwaXJlZC1jYWxsYmFjayc6ICgpID0+IHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy5oYW5kbGVFeHBpcmVDYWxsYmFjaygpKSxcclxuICAgICAgJ2Vycm9yLWNhbGxiYWNrJzogKCkgPT4gdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmhhbmRsZUVycm9yQ2FsbGJhY2soKSksXHJcbiAgICAgICd0aGVtZSc6IHRoaXMudGhlbWUsXHJcbiAgICAgICd0eXBlJzogdGhpcy50eXBlLFxyXG4gICAgICAnc2l6ZSc6IHRoaXMuc2l6ZSxcclxuICAgICAgJ3RhYmluZGV4JzogdGhpcy50YWJJbmRleFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZ2lzdGVycyBnbG9iYWwgY2FsbGJhY2tzXHJcbiAgKi9cclxuICBwcml2YXRlIHJlZ2lzdGVyQ2FsbGJhY2tzKCk6IHZvaWQge1xyXG4gICAgd2luZG93W3RoaXMud2luZG93T25FcnJvckNhbGxiYWNrUHJvcGVydHldID0gdGhpcy5oYW5kbGVFcnJvckNhbGxiYWNrLmJpbmQodGhpcyk7XHJcbiAgICB3aW5kb3dbdGhpcy53aW5kb3dPbkV4cGlyZUNhbGxiYWNrUHJvcGVydHldID0gdGhpcy5oYW5kbGVFeHBpcmVDYWxsYmFjay5iaW5kKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyBlcnJvciBjYWxsYmFja1xyXG4gICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVFcnJvckNhbGxiYWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkKG51bGwpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5lcnJvci5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGVzIGV4cGlyZWQgY2FsbGJhY2tcclxuICAgKi9cclxuICBwcml2YXRlIGhhbmRsZUV4cGlyZUNhbGxiYWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5leHBpcmUubmV4dCgpO1xyXG5cclxuICAgIC8vIHJlc2V0IGNhcHRjaGEgb24gZXhwaXJlIGNhbGxiYWNrXHJcbiAgICB0aGlzLnJlc2V0Q2FwdGNoYSgpO1xyXG4gIH1cclxufVxyXG5cclxuIiwiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPcHRpb25hbCwgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2VzLCBOZ1pvbmUsIEluamVjdG9yLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBCYXNlUmVDYXB0Y2hhQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLXJlY2FwdGNoYS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZUNhcHRjaGFUeXBlIH0gZnJvbSAnLi9yZWNhcHRjaGEtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgTmd4Q2FwdGNoYUNvbmZpZyB9IGZyb20gJy4vcmVjYXB0Y2hhLmNvbmZpZyc7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmd4LWludmlzaWJsZS1yZWNhcHRjaGEnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgPGRpdiAjY2FwdGNoYVNjcmlwdEVsZW0+PC9kaXY+XHJcbiAgPGRpdiAjY2FwdGNoYVdyYXBwZXJFbGVtPjwvZGl2PmAsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnZpc2libGVSZUNhcHRjaGFDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnZpc2libGVSZUNhcHRjaGFDb21wb25lbnQgZXh0ZW5kcyBCYXNlUmVDYXB0Y2hhQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhpcyBzaXplIHJlcHJlc2VudGluZyBpbnZpc2libGUgY2FwdGNoYVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBzaXplID0gJ2ludmlzaWJsZSc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEJhZGdlXHJcbiAgICovXHJcbiAgQElucHV0KCkgYmFkZ2U6ICdib3R0b21yaWdodCcgfCAnYm90dG9tbGVmdCcgfCAnaW5saW5lJyA9ICdib3R0b21yaWdodCc7XHJcblxyXG4gIC8qKlxyXG4gICAqIExhbmd1YWdlIGNvZGUuIEF1dG8tZGV0ZWN0cyB0aGUgdXNlcidzIGxhbmd1YWdlIGlmIHVuc3BlY2lmaWVkLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGhsOiBzdHJpbmc7XHJcblxyXG4gIHByb3RlY3RlZCByZWNhcHRjaGFUeXBlOiBSZUNhcHRjaGFUeXBlID0gUmVDYXB0Y2hhVHlwZS5JbnZpc2libGVSZUNhcHRjaGE7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcm90ZWN0ZWQgem9uZTogTmdab25lLFxyXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBnbG9iYWxDb25maWc6IE5neENhcHRjaGFDb25maWcsXHJcbiAgKSB7XHJcbiAgICBzdXBlcihyZW5kZXJlciwgem9uZSwgaW5qZWN0b3IsIGdsb2JhbENvbmZpZyk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByb2dyYW1hdGljYWxseSBpbnZva2UgdGhlIHJlQ0FQVENIQSBjaGVjay4gVXNlZCBpZiB0aGUgaW52aXNpYmxlIHJlQ0FQVENIQSBpcyBvbiBhIGRpdiBpbnN0ZWFkIG9mIGEgYnV0dG9uLlxyXG4gICAqL1xyXG4gIGV4ZWN1dGUoKTogdm9pZCB7XHJcbiAgICAvLyBleGVjdXRlIGNhcHRjaGFcclxuICAgIHRoaXMucmVDYXB0Y2hhQXBpLmV4ZWN1dGUodGhpcy5jYXB0Y2hhSWQpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGNhcHRjaGFTcGVjaWZpY1NldHVwKCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBHZXRzIHJlQ2FwdGNoYSBwcm9wZXJ0aWVzXHJcbiAgKi9cclxuICBwcm90ZWN0ZWQgZ2V0Q2FwdGNoYVByb3BlcnRpZXMoKTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICdzaXRla2V5JzogdGhpcy5fc2l0ZUtleSxcclxuICAgICAgJ2NhbGxiYWNrJzogKHJlc3BvbnNlKSA9PiB0aGlzLnpvbmUucnVuKCgpID0+IHRoaXMuaGFuZGxlQ2FsbGJhY2socmVzcG9uc2UpKSxcclxuICAgICAgJ2JhZGdlJzogdGhpcy5iYWRnZSxcclxuICAgICAgJ3R5cGUnOiB0aGlzLnR5cGUsXHJcbiAgICAgICd0YWJpbmRleCc6IHRoaXMudGFiSW5kZXgsXHJcbiAgICAgICdzaXplJzogdGhpcy5zaXplXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG5cclxuIiwiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEludmlzaWJsZVJlQ2FwdGNoYUNvbXBvbmVudCB9IGZyb20gJy4vaW52aXNpYmxlLXJlY2FwdGNoYS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVDYXB0Y2hhMkNvbXBvbmVudCB9IGZyb20gJy4vcmVjYXB0Y2hhLTIuY29tcG9uZW50JztcbmltcG9ydCB7IE5neENhcHRjaGFDb25maWcgfSBmcm9tICcuL3JlY2FwdGNoYS5jb25maWcnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFJlQ2FwdGNoYTJDb21wb25lbnQsXG4gICAgSW52aXNpYmxlUmVDYXB0Y2hhQ29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBSZUNhcHRjaGEyQ29tcG9uZW50LFxuICAgIEludmlzaWJsZVJlQ2FwdGNoYUNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neENhcHRjaGFNb2R1bGUge1xuXG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IE5neENhcHRjaGFDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IE5neENhcHRjaGFNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IE5neENhcHRjaGFDb25maWcsXG4gICAgICAgICAgdXNlVmFsdWU6IGNvbmZpZyxcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH1cbn1cblxuXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7O0FBb0JBOzs7Ozs7O0lBbUhJLFlBQ2MsUUFBbUIsRUFDbkIsSUFBWSxFQUNaLFFBQWtCLEVBQ2xCLFlBQStCO1FBSC9CLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsaUJBQVksR0FBWixZQUFZLENBQW1COzhCQWpIcEIsS0FBSzs7Ozs0Q0FLb0Isc0JBQXNCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFOzs7O3VDQUsxRCxZQUFZOzs7O2lDQUtsQixpQkFBaUI7Ozs7b0JBZ0JyQixPQUFPOzs7O3dCQVV0QixDQUFDOzs7Ozt1QkFNRCxJQUFJLFlBQVksRUFBVTs7OztvQkFLN0IsSUFBSSxZQUFZLEVBQVU7Ozs7cUJBS3pCLElBQUksWUFBWSxFQUFROzs7Ozt3Q0F3QkwsS0FBSzs7Ozt3QkFLeEIsS0FBSztLQTRCbkI7Ozs7SUFFSixlQUFlO1FBQ2IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFT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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWNhcHRjaGEuanMubWFwIiwic291cmNlcyI6WyJuZzovL25neC1jYXB0Y2hhL2xpYi9yZWNhcHRjaGEtdHlwZS5lbnVtLnRzIiwibmc6Ly9uZ3gtY2FwdGNoYS9saWIvYmFzZS1yZWNhcHRjaGEuY29tcG9uZW50LnRzIiwibmc6Ly9uZ3gtY2FwdGNoYS9saWIvcmVjYXB0Y2hhLmNvbmZpZy50cyIsIm5nOi8vbmd4LWNhcHRjaGEvbGliL3JlY2FwdGNoYS0yLmNvbXBvbmVudC50cyIsIm5nOi8vbmd4LWNhcHRjaGEvbGliL2ludmlzaWJsZS1yZWNhcHRjaGEuY29tcG9uZW50LnRzIiwibmc6Ly9uZ3gtY2FwdGNoYS9saWIvbmd4LWNhcHRjaGEubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFJlQ2FwdGNoYVR5cGUge1xyXG5cclxuICAgIEludmlzaWJsZVJlQ2FwdGNoYSxcclxuICAgIFJlQ2FwdGNoYTJcclxufVxyXG4iLCJpbXBvcnQge1xyXG4gICAgQWZ0ZXJWaWV3SW5pdCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsIEluamVjdG9yLFxyXG4gICAgSW5wdXQsXHJcbiAgICBOZ1pvbmUsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPdXRwdXQsXHJcbiAgICBSZW5kZXJlcjIsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgUmVDYXB0Y2hhVHlwZSB9IGZyb20gJy4vcmVjYXB0Y2hhLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IE5neENhcHRjaGFDb25maWcgfSBmcm9tICcuL3JlY2FwdGNoYS5jb25maWcnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmRlY2xhcmUgdmFyIGdyZWNhcHRjaGE6IGFueTtcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlUmVDYXB0Y2hhQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0IHtcclxuICAgIC8qKlxyXG4gICAgICogRm9ybSBDb250cm9sIHRvIGJlIGVuYWJsZSB1c2FnZSBpbiByZWFjdGl2ZSBmb3Jtc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNvbnRyb2w6IEZvcm1Db250cm9sO1xyXG5cclxuICAgIHByaXZhdGUgc2V0dXBBZnRlckxvYWQgPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICogTmFtZSBvZiB0aGUgZ2xvYmFsIGNhbGxiYWNrXHJcbiAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHdpbmRvd09uTG9hZENhbGxiYWNrUHJvcGVydHkgPSAnbmd4X29ubG9hZF9jYWxsYmFja18nICsgdGhpcy5nZXRQc2V1ZG9VbmlxdWVOdW1iZXIoKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE5hbWUgb2YgdGhlIGdsb2JhbCByZUNhcHRjaGEgcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGdsb2JhbFJlQ2FwdGNoYVByb3BlcnR5ID0gJ2dyZWNhcHRjaGEnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJlZml4IG9mIHRoZSBjYXB0Y2hhIGVsZW1lbnRcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhcHRjaGFFbGVtUHJlZml4ID0gJ25neF9jYXB0Y2hhX2lkXyc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgICogR29vZ2xlJ3Mgc2l0ZSBrZXkuXHJcbiAgICAgICogWW91IGNhbiBmaW5kIHRoaXMgdW5kZXIgaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9yZWNhcHRjaGFcclxuICAgICAgKi9cclxuICAgIHByb3RlY3RlZCBfc2l0ZUtleT86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICogQ29uZmlnIHRvIHVzZVxyXG4gICAgKi9cclxuICAgIEBJbnB1dCgpIHNpdGVLZXk6IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHlwZVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSB0eXBlOiAnYXVkaW8nIHwgJ2ltYWdlJyA9ICdpbWFnZSc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMYW5ndWFnZSBjb2RlLiBBdXRvLWRldGVjdHMgdGhlIHVzZXIncyBsYW5ndWFnZSBpZiB1bnNwZWNpZmllZC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgaGw6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICogVGFiIGluZGV4XHJcbiAgICAqL1xyXG4gICAgQElucHV0KCkgdGFiSW5kZXggPSAwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGVkIHdoZW4gY2FwdGNoYSByZWNlaXZlcyBzdWNjZXNzZnVsIHJlc3BvbnNlLlxyXG4gICAgICogQ2FwdGNoYSByZXNwb25zZSB0b2tlbiBpcyBwYXNzZWQgdG8gZXZlbnQuXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBzdWNjZXNzID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENhbGxlZCB3aGVuIGNhcHRjaGEgaXMgbG9hZGVkLiBFdmVudCByZWNlaXZlcyBpZCBvZiB0aGUgY2FwdGNoYVxyXG4gICAgKi9cclxuICAgIEBPdXRwdXQoKSBsb2FkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENhbGxlZCB3aGVuIGNhcHRjaGEgaXMgbG9hZGVkICYgcmVhZHkuIEkuZS4gd2hlbiB5b3UgbmVlZCB0byBleGVjdXRlIGNhcHRjaGEgb24gY29tcG9uZW50IGxvYWQuXHJcbiAgICAqL1xyXG4gICAgQE91dHB1dCgpIHJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2NhcHRjaGFXcmFwcGVyRWxlbScpIGNhcHRjaGFXcmFwcGVyRWxlbTogRWxlbWVudFJlZjtcclxuICAgIEBWaWV3Q2hpbGQoJ2NhcHRjaGFTY3JpcHRFbGVtJykgY2FwdGNoYVNjcmlwdEVsZW06IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYXB0Y2hhIGVsZW1lbnRcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGNhcHRjaGFFbGVtPzogSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZCBvZiB0aGUgY2FwdGNoYSBlbGVtXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBjYXB0Y2hhSWQ/OiBudW1iZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIb2xkcyBsYXN0IHJlc3BvbnNlIHZhbHVlXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBjdXJyZW50UmVzcG9uc2U/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZiBlbmFibGVkLCBjYXB0Y2hhIHdpbGwgcmVzZXQgYWZ0ZXIgcmVjZWl2aW5nIHN1Y2Nlc3MgcmVzcG9uc2UuIFRoaXMgaXMgdXNlZnVsXHJcbiAgICAgKiB3aGVuIGludmlzaWJsZSBjYXB0Y2hhIG5lZWQgdG8gYmUgcmVzb2x2ZWQgbXVsdGlwbGUgdGltZXMgb24gc2FtZSBwYWdlXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCByZXNldENhcHRjaGFBZnRlclN1Y2Nlc3MgPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyBpZiBjYXB0Y2hhIGlzIGxvYWRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaXNMb2FkZWQgPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICogUmVmZXJlbmNlIHRvIGdsb2JhbCByZUNhcHRjaGEgQVBJXHJcbiAgICAqL1xyXG4gICAgcHVibGljIHJlQ2FwdGNoYUFwaT86IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIElkIG9mIHRoZSBET00gZWxlbWVudCB3cmFwcGluZyBjYXB0Y2hhXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjYXB0Y2hhRWxlbUlkPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FwdGNoYSB0eXBlXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCByZWNhcHRjaGFUeXBlOiBSZUNhcHRjaGFUeXBlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBSZXF1aXJlZCBieSBDb250cm9sVmFsdWVBY2Nlc3NvclxyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XHJcbiAgICBwcm90ZWN0ZWQgb25Ub3VjaGVkOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcclxuXHJcbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICAgICAgcHJvdGVjdGVkIHpvbmU6IE5nWm9uZSxcclxuICAgICAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHByb3RlY3RlZCBnbG9iYWxDb25maWc/OiBOZ3hDYXB0Y2hhQ29uZmlnLFxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgdGhpcy5jb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sKS5jb250cm9sO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBHZXRzIHJlQ2FwdGNoYSBwcm9wZXJ0aWVzXHJcbiAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldENhcHRjaGFQcm9wZXJ0aWVzKCk6IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFVzZWQgZm9yIGNhcHRjaGEgc3BlY2lmaWMgc2V0dXBcclxuICAgICovXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgY2FwdGNoYVNwZWNpZmljU2V0dXAoKTogdm9pZDtcclxuXHJcbiAgICBwcml2YXRlIGdldEdsb2JhbFNpdGVLZXkoKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAodGhpcy5nbG9iYWxDb25maWcpIHtcclxuICAgICAgICAgICAgLy8gSW52aXNpYmxlIGNhcHRjaGFcclxuICAgICAgICAgICAgaWYgKHRoaXMucmVjYXB0Y2hhVHlwZSA9PT0gUmVDYXB0Y2hhVHlwZS5JbnZpc2libGVSZUNhcHRjaGEpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5nbG9iYWxDb25maWcuaW52aXNpYmxlQ2FwdGNoYVNpdGVLZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgU2l0ZUtleSBmb3IgaW52aXNpYmxlIHJlQ2FwdGNoYSBpcyBub3Qgc2V0IWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmdsb2JhbENvbmZpZy5pbnZpc2libGVDYXB0Y2hhU2l0ZUtleSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2xvYmFsQ29uZmlnLmludmlzaWJsZUNhcHRjaGFTaXRlS2V5KCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdsb2JhbENvbmZpZy5pbnZpc2libGVDYXB0Y2hhU2l0ZUtleTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyByZWNhcHRjaGEgMlxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVjYXB0Y2hhVHlwZSA9PT0gUmVDYXB0Y2hhVHlwZS5SZUNhcHRjaGEyKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZ2xvYmFsQ29uZmlnLnJlQ2FwdGNoYTJTaXRlS2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFNpdGVLZXkgZm9yIHJlQ2FwdGNoYTIgaXMgbm90IHNldCFgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5nbG9iYWxDb25maWcucmVDYXB0Y2hhMlNpdGVLZXkgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdsb2JhbENvbmZpZy5yZUNhcHRjaGEyU2l0ZUtleSgpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nbG9iYWxDb25maWcucmVDYXB0Y2hhMlNpdGVLZXk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFVuc3VwcG9ydGVkIGNhcHRjaGEgdHlwZSAnJHt0aGlzLnJlY2FwdGNoYVR5cGV9JyFgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5zaXRlS2V5KSB7XHJcbiAgICAgICAgICAgIC8vIHVzZSBnbG9iYWwgc2l0ZSBrZXkgaWYga2V5IGlzIG5vdCBhdmFpbGFibGVcclxuICAgICAgICAgICAgdGhpcy5fc2l0ZUtleSA9IHRoaXMuZ2V0R2xvYmFsU2l0ZUtleSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHVzZSBjb21ucG9uZW50IHNpdGUga2V5XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNpdGVLZXkgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2l0ZUtleSA9IHRoaXMuc2l0ZUtleSgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2l0ZUtleSA9IHRoaXMuc2l0ZUtleTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldHVwQ29tcG9uZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgd2luZG93W3RoaXMud2luZG93T25Mb2FkQ2FsbGJhY2tQcm9wZXJ0eV0gPSB7fTtcclxuICAgICAgICB3aW5kb3dbdGhpcy5nbG9iYWxSZUNhcHRjaGFQcm9wZXJ0eV0gPSB7fTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgY2FwdGNoYSByZXNwb25zZSBhcyBwZXIgcmVDYXB0Y2hhIGRvY3NcclxuICAgICovXHJcbiAgICBnZXRSZXNwb25zZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlQ2FwdGNoYUFwaS5nZXRSZXNwb25zZSh0aGlzLmNhcHRjaGFJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIElkIG9mIGNhcHRjaGEgd2lkZ2V0XHJcbiAgICAqL1xyXG4gICAgZ2V0Q2FwdGNoYUlkKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FwdGNoYUlkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBSZXNldHMgY2FwdGNoYVxyXG4gICAgKi9cclxuICAgIHJlc2V0Q2FwdGNoYSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQobnVsbCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGxhc3Qgc3VibWl0dGVkIGNhcHRjaGEgcmVzcG9uc2VcclxuICAgICovXHJcbiAgICBnZXRDdXJyZW50UmVzcG9uc2UoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50UmVzcG9uc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWxvYWQgY2FwdGNoYS4gVXNlZnVsIHdoZW4gcHJvcGVydGllcyAoaS5lLiB0aGVtZSkgY2hhbmdlZCBhbmQgY2FwdGNoYSBuZWVkIHRvIHJlZmxlY3QgdGhlbVxyXG4gICAgKi9cclxuICAgIHJlbG9hZENhcHRjaGEoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zZXR1cENvbXBvbmVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBlbnN1cmVDYXB0Y2hhRWxlbShjYXB0Y2hhRWxlbUlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjYXB0Y2hhRWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNhcHRjaGFFbGVtSWQpO1xyXG5cclxuICAgICAgICBpZiAoIWNhcHRjaGFFbGVtKSB7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBDYXB0Y2hhIGVsZW1lbnQgd2l0aCBpZCAnJHtjYXB0Y2hhRWxlbUlkfScgd2FzIG5vdCBmb3VuZGApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gYXNzaWduIGNhcHRjaGEgYWxlbVxyXG4gICAgICAgIHRoaXMuY2FwdGNoYUVsZW0gPSBjYXB0Y2hhRWxlbTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc3BvbnNpYmxlIGZvciBpbnN0YW50aWF0aW5nIGNhcHRjaGEgZWxlbWVudFxyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCByZW5kZXJSZUNhcHRjaGEoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jYXB0Y2hhSWQgPSB0aGlzLnJlQ2FwdGNoYUFwaS5yZW5kZXIodGhpcy5jYXB0Y2hhRWxlbUlkLCB0aGlzLmdldENhcHRjaGFQcm9wZXJ0aWVzKCkpO1xyXG4gICAgICAgIHRoaXMucmVhZHkubmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGVkIHdoZW4gY2FwdGNoYSByZWNlaXZlcyByZXNwb25zZVxyXG4gICAgICogQHBhcmFtIGNhbGxiYWNrIENhbGxiYWNrXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBoYW5kbGVDYWxsYmFjayhjYWxsYmFjazogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UmVzcG9uc2UgPSBjYWxsYmFjaztcclxuICAgICAgICB0aGlzLnN1Y2Nlc3MubmV4dChjYWxsYmFjayk7XHJcblxyXG4gICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKGNhbGxiYWNrKTtcclxuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoY2FsbGJhY2spO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5yZXNldENhcHRjaGFBZnRlclN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgdGhpcy5yZXNldENhcHRjaGEoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWdpc3RlcnMgcmVDYXB0Y2hhIHNjcmlwdCBpZiBpdHMgbm90IGF2YWlsYWJsZVxyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCBlbnN1cmVSZUNhcHRjaGFTY3JpcHQoKTogdm9pZCB7XHJcbiAgICAgICAgd2luZG93W3RoaXMuZ2xvYmFsUmVDYXB0Y2hhUHJvcGVydHldID0ge307XHJcbiAgICAgICAgdGhpcy5yZUNhcHRjaGFBcGkgPSB7fTtcclxuXHJcbiAgICAgICAgdGhpcy5yZWdpc3RlclJlQ2FwdGNoYVNjcmlwdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkIHNjcmlwdCB0byBwYWdlIHdpdGggcmVmZXJlbmNlIHRvIGNhcHRjaGEgQVBJLiBUaGlzIGhhcyB0byBiZSBkb25lIG1hbnVhbGx5XHJcbiAgICAgKiBhcyB3ZSB3YW50IHRvIGF2b2lkIGFkZGluZyBzY3JpcHQgdG8gbWFpbiBpbmRleC5odG1sXHJcbiAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHJlZ2lzdGVyUmVDYXB0Y2hhU2NyaXB0KCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xyXG4gICAgICAgIHNjcmlwdC5pbm5lckhUTUwgPSAnJztcclxuICAgICAgICBzY3JpcHQuc3JjID1cclxuICAgICAgICAgICAgYGh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vcmVjYXB0Y2hhL2FwaS5qcz9vbmxvYWQ9JHt0aGlzLndpbmRvd09uTG9hZENhbGxiYWNrUHJvcGVydHl9JnJlbmRlcj1leHBsaWNpdCR7dGhpcy5nZXRMYW5ndWFnZVBhcmFtKCl9YDtcclxuICAgICAgICBzY3JpcHQuYXN5bmMgPSB0cnVlO1xyXG4gICAgICAgIHNjcmlwdC5kZWZlciA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuY2FwdGNoYVNjcmlwdEVsZW0ubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChzY3JpcHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRMYW5ndWFnZVBhcmFtKCk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmhsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBgJmhsPSR7dGhpcy5obH1gO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0UHNldWRvVW5pcXVlTnVtYmVyKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKCkuZ2V0VVRDTWlsbGlzZWNvbmRzKCkgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiA5OTk5KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyBpZiByZUNhcHRjaGEgQXBpIGlzIGRlZmluZWQuIEl0IG1heSBoYXBwZW4gdGhhdCB3aGVuIG5hdmlnYXRpbmcgZnJvbSBhbmd1bGFyIGNvbXBvbmVudCB0byBhbm90aGVyXHJcbiAgICAgKiB2aWEgcm91dGVyLCB0aGUgQXBpIHdhcyBhbHJlYWR5IGxvYWRlZCBwcmV2aW91c2x5LiBJbiBzdWNoIGNhc2VzLCBkbyBub3QgcmVuZGVyIHNjcmlwdCBhZ2Fpbi5cclxuICAgICovXHJcbiAgICBwcml2YXRlIGlzUmVDYXB0Y2hhQXBpRGVmaW5lZCgpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXdpbmRvd1t0aGlzLmdsb2JhbFJlQ2FwdGNoYVByb3BlcnR5XSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0dXBDb21wb25lbnQoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gY2FwdGNoYSBzcGVjaWZpYyBzZXR1cFxyXG4gICAgICAgIHRoaXMuY2FwdGNoYVNwZWNpZmljU2V0dXAoKTtcclxuXHJcbiAgICAgICAgLy8gY3JlYXRlIGNhcHRjaGEgd3JhcHBlclxyXG4gICAgICAgIHRoaXMuY3JlYXRlQW5kU2V0Q2FwdGNoYUVsZW0oKTtcclxuXHJcbiAgICAgICAgLy8gd2UgbmVlZCB0byBwYXRjaCB0aGUgY2FsbGJhY2sgdGhyb3VnaCBnbG9iYWwgdmFyaWFibGUsIG90aGVyd2lzZSBjYWxsYmFjayBpcyBub3QgYWNjZXNzaWJsZVxyXG4gICAgICAgIC8vIG5vdGU6IGh0dHBzOi8vZ2l0aHViLmNvbS9Fbm5nYWdlL25neC1jYXB0Y2hhL2lzc3Vlcy8yXHJcbiAgICAgICAgd2luZG93W3RoaXMud2luZG93T25Mb2FkQ2FsbGJhY2tQcm9wZXJ0eV0gPSA8YW55PigoKSA9PiB0aGlzLnpvbmUucnVuKFxyXG4gICAgICAgICAgICB0aGlzLm9ubG9hZENhbGxiYWNrLmJpbmQodGhpcylcclxuICAgICAgICApKTtcclxuXHJcbiAgICAgICAgLy8gY3JlYXRlIGFuZCBwdXQgcmVDYXB0Y2hhIHNjcmlwdCB0byBwYWdlXHJcbiAgICAgICAgdGhpcy5lbnN1cmVSZUNhcHRjaGFTY3JpcHQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogQ2FsbGVkIHdoZW4gZ29vZ2xlJ3MgcmVjYXB0Y2hhIHNjcmlwdCBpcyByZWFkeVxyXG4gICAgKi9cclxuICAgIHByaXZhdGUgb25sb2FkQ2FsbGJhY2soKTogdm9pZCB7XHJcbiAgICAgICAgLy8gYXNzaWduIHJlZmVyZW5jZSB0byByZUNhcHRjaGEgQXBpIG9uY2UgaXRzIGxvYWRlZFxyXG4gICAgICAgIHRoaXMucmVDYXB0Y2hhQXBpID0gZ3JlY2FwdGNoYTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnJlQ2FwdGNoYUFwaSkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgUmVDYXB0Y2hhIEFwaSB3YXMgbm90IGluaXRpYWxpemVkIGNvcnJlY3RseWApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gbG9hZGVkIGZsYWdcclxuICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgLy8gZmlyZSBsb2FkIGV2ZW50XHJcbiAgICAgICAgdGhpcy5sb2FkLm5leHQoKTtcclxuXHJcbiAgICAgICAgLy8gcmVuZGVyIGNhcHRjaGFcclxuICAgICAgICB0aGlzLnJlbmRlclJlQ2FwdGNoYSgpO1xyXG5cclxuICAgICAgICAvLyBzZXR1cCBjb21wb25lbnQgaWYgaXQgd2FzIGZsYWdnZWQgYXMgc3VjaFxyXG4gICAgICAgIGlmICh0aGlzLnNldHVwQWZ0ZXJMb2FkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dXBBZnRlckxvYWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zZXR1cENvbXBvbmVudCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdlbmVyYXRlTmV3RWxlbUlkKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FwdGNoYUVsZW1QcmVmaXggKyB0aGlzLmdldFBzZXVkb1VuaXF1ZU51bWJlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY3JlYXRlQW5kU2V0Q2FwdGNoYUVsZW0oKTogdm9pZCB7XHJcbiAgICAgICAgLy8gZ2VuZXJhdGUgbmV3IGNhcHRjaGEgaWRcclxuICAgICAgICB0aGlzLmNhcHRjaGFFbGVtSWQgPSB0aGlzLmdlbmVyYXRlTmV3RWxlbUlkKCk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5jYXB0Y2hhRWxlbUlkKSB7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBDYXB0Y2hhIGVsZW0gSWQgaXMgbm90IHNldGApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gcmVtb3ZlIG9sZCBodG1sXHJcbiAgICAgICAgdGhpcy5jYXB0Y2hhV3JhcHBlckVsZW0ubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAnJztcclxuXHJcbiAgICAgICAgLy8gY3JlYXRlIG5ldyB3cmFwcGVyIGZvciBjYXB0Y2hhXHJcbiAgICAgICAgY29uc3QgbmV3RWxlbSA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgbmV3RWxlbS5pZCA9IHRoaXMuY2FwdGNoYUVsZW1JZDtcclxuXHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmNhcHRjaGFXcmFwcGVyRWxlbS5uYXRpdmVFbGVtZW50LCBuZXdFbGVtKTtcclxuXHJcbiAgICAgICAgLy8gdXBkYXRlIGNhcHRjaGEgZWxlbVxyXG4gICAgICAgIHRoaXMuZW5zdXJlQ2FwdGNoYUVsZW0odGhpcy5jYXB0Y2hhRWxlbUlkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRvIGJlIGFsaWduZWQgd2l0aCB0aGUgQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlIHdlIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kXHJcbiAgICAgKiBIb3dldmVyIGFzIHdlIGRvbid0IHdhbnQgdG8gdXBkYXRlIHRoZSByZWNhcHRjaGEsIHRoaXMgZG9lc24ndCBuZWVkIHRvIGJlIGltcGxlbWVudGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgbWV0aG9kIGhlbHBzIHVzIHRpZSB0b2dldGhlciByZWNhcHRjaGEgYW5kIG91ciBmb3JtQ29udHJvbCB2YWx1ZXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogQXQgc29tZSBwb2ludCB3ZSBtaWdodCBiZSBpbnRlcmVzdGVkIHdoZXRoZXIgdGhlIHVzZXIgaGFzIHRvdWNoZWQgb3VyIGNvbXBvbmVudFxyXG4gICAgKi9cclxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICAgIH1cclxufVxyXG5cclxuIiwiZXhwb3J0IGludGVyZmFjZSBJTmd4Q2FwdGNoYUNvbmZpZyB7XHJcbiAgICByZUNhcHRjaGEyU2l0ZUtleT86IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xyXG4gICAgaW52aXNpYmxlQ2FwdGNoYVNpdGVLZXk/OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE5neENhcHRjaGFDb25maWcgaW1wbGVtZW50cyBJTmd4Q2FwdGNoYUNvbmZpZyB7XHJcblxyXG4gICAgcHVibGljIHJlQ2FwdGNoYTJTaXRlS2V5Pzogc3RyaW5nIHwgKCgpID0+IHN0cmluZyk7XHJcbiAgICBwdWJsaWMgaW52aXNpYmxlQ2FwdGNoYVNpdGVLZXk/OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcclxufVxyXG4iLCJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPcHRpb25hbCxcclxuICBPdXRwdXQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgTmdab25lLCBJbmplY3RvciwgZm9yd2FyZFJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEJhc2VSZUNhcHRjaGFDb21wb25lbnQgfSBmcm9tICcuL2Jhc2UtcmVjYXB0Y2hhLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlQ2FwdGNoYVR5cGUgfSBmcm9tICcuL3JlY2FwdGNoYS10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBOZ3hDYXB0Y2hhQ29uZmlnIH0gZnJvbSAnLi9yZWNhcHRjaGEuY29uZmlnJztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25neC1yZWNhcHRjaGEyJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gIDxkaXYgI2NhcHRjaGFTY3JpcHRFbGVtPjwvZGl2PlxyXG4gIDxkaXYgI2NhcHRjaGFXcmFwcGVyRWxlbT48L2Rpdj5gLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUmVDYXB0Y2hhMkNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFJlQ2FwdGNoYTJDb21wb25lbnQgZXh0ZW5kcyBCYXNlUmVDYXB0Y2hhQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG5cclxuICAvKipcclxuICAqIE5hbWUgb2YgdGhlIGdsb2JhbCBleHBpcmUgY2FsbGJhY2tcclxuICAqL1xyXG4gIHByb3RlY3RlZCByZWFkb25seSB3aW5kb3dPbkVycm9yQ2FsbGJhY2tQcm9wZXJ0eSA9ICduZ3hfY2FwdGNoYV9lcnJvcl9jYWxsYmFjayc7XHJcblxyXG4gIC8qKlxyXG4gICogTmFtZSBvZiB0aGUgZ2xvYmFsIGVycm9yIGNhbGxiYWNrXHJcbiAgKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgd2luZG93T25FeHBpcmVDYWxsYmFja1Byb3BlcnR5ID0gJ25neF9jYXB0Y2hhX2V4cGlyZV9jYWxsYmFjayc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZW1lXHJcbiAgICovXHJcbiAgQElucHV0KCkgdGhlbWU6ICdkYXJrJyB8ICdsaWdodCcgPSAnbGlnaHQnO1xyXG5cclxuICAvKipcclxuICAqIFNpemVcclxuICAqL1xyXG4gIEBJbnB1dCgpIHNpemU6ICdjb21wYWN0JyB8ICdub3JtYWwnID0gJ25vcm1hbCc7XHJcblxyXG4gIC8qKlxyXG4gICAqIExhbmd1YWdlIGNvZGUuIEF1dG8tZGV0ZWN0cyB0aGUgdXNlcidzIGxhbmd1YWdlIGlmIHVuc3BlY2lmaWVkLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGhsOiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICogRXhwaXJlZCBjYWxsYmFja1xyXG4gICovXHJcbiAgQE91dHB1dCgpIGV4cGlyZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgLyoqXHJcbiAgKiBFcnJvciBjYWxsYmFja1xyXG4gICovXHJcbiAgQE91dHB1dCgpIGVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBwcm90ZWN0ZWQgcmVjYXB0Y2hhVHlwZTogUmVDYXB0Y2hhVHlwZSA9IFJlQ2FwdGNoYVR5cGUuUmVDYXB0Y2hhMjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByb3RlY3RlZCB6b25lOiBOZ1pvbmUsXHJcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIGdsb2JhbENvbmZpZzogTmd4Q2FwdGNoYUNvbmZpZyxcclxuICApIHtcclxuICAgIHN1cGVyKHJlbmRlcmVyLCB6b25lLCBpbmplY3RvciwgZ2xvYmFsQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG5cclxuICAgIHdpbmRvd1t0aGlzLndpbmRvd09uRXJyb3JDYWxsYmFja1Byb3BlcnR5XSA9IHt9O1xyXG4gICAgd2luZG93W3RoaXMud2luZG93T25FeHBpcmVDYWxsYmFja1Byb3BlcnR5XSA9IHt9O1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGNhcHRjaGFTcGVjaWZpY1NldHVwKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZWdpc3RlckNhbGxiYWNrcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyByZUNhcHRjaGEgcHJvcGVydGllc1xyXG4gICovXHJcbiAgcHJvdGVjdGVkIGdldENhcHRjaGFQcm9wZXJ0aWVzKCk6IGFueSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAnc2l0ZWtleSc6IHRoaXMuX3NpdGVLZXksXHJcbiAgICAgICdjYWxsYmFjayc6IChyZXNwb25zZSkgPT4gdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmhhbmRsZUNhbGxiYWNrKHJlc3BvbnNlKSksXHJcbiAgICAgICdleHBpcmVkLWNhbGxiYWNrJzogKCkgPT4gdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmhhbmRsZUV4cGlyZUNhbGxiYWNrKCkpLFxyXG4gICAgICAnZXJyb3ItY2FsbGJhY2snOiAoKSA9PiB0aGlzLnpvbmUucnVuKCgpID0+IHRoaXMuaGFuZGxlRXJyb3JDYWxsYmFjaygpKSxcclxuICAgICAgJ3RoZW1lJzogdGhpcy50aGVtZSxcclxuICAgICAgJ3R5cGUnOiB0aGlzLnR5cGUsXHJcbiAgICAgICdzaXplJzogdGhpcy5zaXplLFxyXG4gICAgICAndGFiaW5kZXgnOiB0aGlzLnRhYkluZGV4XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXJzIGdsb2JhbCBjYWxsYmFja3NcclxuICAqL1xyXG4gIHByaXZhdGUgcmVnaXN0ZXJDYWxsYmFja3MoKTogdm9pZCB7XHJcbiAgICB3aW5kb3dbdGhpcy53aW5kb3dPbkVycm9yQ2FsbGJhY2tQcm9wZXJ0eV0gPSB0aGlzLmhhbmRsZUVycm9yQ2FsbGJhY2suYmluZCh0aGlzKTtcclxuICAgIHdpbmRvd1t0aGlzLndpbmRvd09uRXhwaXJlQ2FsbGJhY2tQcm9wZXJ0eV0gPSB0aGlzLmhhbmRsZUV4cGlyZUNhbGxiYWNrLmJpbmQodGhpcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGVzIGVycm9yIGNhbGxiYWNrXHJcbiAgKi9cclxuICBwcml2YXRlIGhhbmRsZUVycm9yQ2FsbGJhY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgICAgdGhpcy5vblRvdWNoZWQobnVsbCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmVycm9yLm5leHQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgZXhwaXJlZCBjYWxsYmFja1xyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlRXhwaXJlQ2FsbGJhY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLmV4cGlyZS5uZXh0KCk7XHJcblxyXG4gICAgLy8gcmVzZXQgY2FwdGNoYSBvbiBleHBpcmUgY2FsbGJhY2tcclxuICAgIHRoaXMucmVzZXRDYXB0Y2hhKCk7XHJcbiAgfVxyXG59XHJcblxyXG4iLCJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9wdGlvbmFsLCBSZW5kZXJlcjIsIFNpbXBsZUNoYW5nZXMsIE5nWm9uZSwgSW5qZWN0b3IsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEJhc2VSZUNhcHRjaGFDb21wb25lbnQgfSBmcm9tICcuL2Jhc2UtcmVjYXB0Y2hhLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlQ2FwdGNoYVR5cGUgfSBmcm9tICcuL3JlY2FwdGNoYS10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBOZ3hDYXB0Y2hhQ29uZmlnIH0gZnJvbSAnLi9yZWNhcHRjaGEuY29uZmlnJztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZ3gtaW52aXNpYmxlLXJlY2FwdGNoYScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICA8ZGl2ICNjYXB0Y2hhU2NyaXB0RWxlbT48L2Rpdj5cclxuICA8ZGl2ICNjYXB0Y2hhV3JhcHBlckVsZW0+PC9kaXY+YCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEludmlzaWJsZVJlQ2FwdGNoYUNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEludmlzaWJsZVJlQ2FwdGNoYUNvbXBvbmVudCBleHRlbmRzIEJhc2VSZUNhcHRjaGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG5cclxuICAvKipcclxuICAgKiBUaGlzIHNpemUgcmVwcmVzZW50aW5nIGludmlzaWJsZSBjYXB0Y2hhXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNpemUgPSAnaW52aXNpYmxlJztcclxuXHJcbiAgLyoqXHJcbiAgICogQmFkZ2VcclxuICAgKi9cclxuICBASW5wdXQoKSBiYWRnZTogJ2JvdHRvbXJpZ2h0JyB8ICdib3R0b21sZWZ0JyB8ICdpbmxpbmUnID0gJ2JvdHRvbXJpZ2h0JztcclxuXHJcbiAgLyoqXHJcbiAgICogTGFuZ3VhZ2UgY29kZS4gQXV0by1kZXRlY3RzIHRoZSB1c2VyJ3MgbGFuZ3VhZ2UgaWYgdW5zcGVjaWZpZWQuXHJcbiAgICovXHJcbiAgQElucHV0KCkgaGw6IHN0cmluZztcclxuXHJcbiAgcHJvdGVjdGVkIHJlY2FwdGNoYVR5cGU6IFJlQ2FwdGNoYVR5cGUgPSBSZUNhcHRjaGFUeXBlLkludmlzaWJsZVJlQ2FwdGNoYTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByb3RlY3RlZCB6b25lOiBOZ1pvbmUsXHJcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIGdsb2JhbENvbmZpZzogTmd4Q2FwdGNoYUNvbmZpZyxcclxuICApIHtcclxuICAgIHN1cGVyKHJlbmRlcmVyLCB6b25lLCBpbmplY3RvciwgZ2xvYmFsQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHJvZ3JhbWF0aWNhbGx5IGludm9rZSB0aGUgcmVDQVBUQ0hBIGNoZWNrLiBVc2VkIGlmIHRoZSBpbnZpc2libGUgcmVDQVBUQ0hBIGlzIG9uIGEgZGl2IGluc3RlYWQgb2YgYSBidXR0b24uXHJcbiAgICovXHJcbiAgZXhlY3V0ZSgpOiB2b2lkIHtcclxuICAgIC8vIGV4ZWN1dGUgY2FwdGNoYVxyXG4gICAgdGhpcy5yZUNhcHRjaGFBcGkuZXhlY3V0ZSh0aGlzLmNhcHRjaGFJZCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgY2FwdGNoYVNwZWNpZmljU2V0dXAoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIEdldHMgcmVDYXB0Y2hhIHByb3BlcnRpZXNcclxuICAqL1xyXG4gIHByb3RlY3RlZCBnZXRDYXB0Y2hhUHJvcGVydGllcygpOiBhbnkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJ3NpdGVrZXknOiB0aGlzLl9zaXRlS2V5LFxyXG4gICAgICAnY2FsbGJhY2snOiAocmVzcG9uc2UpID0+IHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy5oYW5kbGVDYWxsYmFjayhyZXNwb25zZSkpLFxyXG4gICAgICAnYmFkZ2UnOiB0aGlzLmJhZGdlLFxyXG4gICAgICAndHlwZSc6IHRoaXMudHlwZSxcclxuICAgICAgJ3RhYmluZGV4JzogdGhpcy50YWJJbmRleCxcclxuICAgICAgJ3NpemUnOiB0aGlzLnNpemVcclxuICAgIH07XHJcbiAgfVxyXG59XHJcblxyXG4iLCJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgSW52aXNpYmxlUmVDYXB0Y2hhQ29tcG9uZW50IH0gZnJvbSAnLi9pbnZpc2libGUtcmVjYXB0Y2hhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZUNhcHRjaGEyQ29tcG9uZW50IH0gZnJvbSAnLi9yZWNhcHRjaGEtMi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd4Q2FwdGNoYUNvbmZpZyB9IGZyb20gJy4vcmVjYXB0Y2hhLmNvbmZpZyc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgUmVDYXB0Y2hhMkNvbXBvbmVudCxcbiAgICBJbnZpc2libGVSZUNhcHRjaGFDb21wb25lbnRcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFJlQ2FwdGNoYTJDb21wb25lbnQsXG4gICAgSW52aXNpYmxlUmVDYXB0Y2hhQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTmd4Q2FwdGNoYU1vZHVsZSB7XG5cbiAgc3RhdGljIGZvclJvb3QoY29uZmlnPzogTmd4Q2FwdGNoYUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnMge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogTmd4Q2FwdGNoYU1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogTmd4Q2FwdGNoYUNvbmZpZyxcbiAgICAgICAgICB1c2VWYWx1ZTogY29uZmlnLFxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgfVxufVxuXG5cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0lBRUkscUJBQWtCO0lBQ2xCLGFBQVU7OzRCQURWLGtCQUFrQjs0QkFDbEIsVUFBVTs7Ozs7O0FDSGQ7OztBQW9CQTs7Ozs7OztJQW1ISSxZQUNjLFFBQW1CLEVBQ25CLElBQVksRUFDWixRQUFrQixFQUNsQixZQUErQjtRQUgvQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGlCQUFZLEdBQVosWUFBWSxDQUFtQjs4QkFqSHBCLEtBQUs7Ozs7NENBS29CLHNCQUFzQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRTs7Ozt1Q0FLMUQsWUFBWTs7OztpQ0FLbEIsaUJBQWlCOzs7O29CQWdCckIsT0FBTzs7Ozt3QkFVdEIsQ0FBQzs7Ozs7dUJBTUQsSUFB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

@@ -97,4 +97,4 @@ import { AfterViewInit, ElementRef, EventEmitter, Injector, NgZone, OnChanges, OnDestroy, Renderer2, SimpleChanges } from '@angular/core';

/**
* Required by ControlValueAccessor
*/
* Required by ControlValueAccessor
*/
protected onChange: (value: string) => void;

@@ -101,0 +101,0 @@ protected onTouched: (value: string) => void;

{
"name": "ngx-captcha",
"version": "4.0.0",
"version": "4.0.1",
"license": "MIT",

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

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

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc