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

ngx-validator

Package Overview
Dependencies
Maintainers
1
Versions
52
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ngx-validator - npm Package Compare versions

Comparing version 1.2.2 to 1.2.3

2

bundles/ngx-validator.umd.min.js

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

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("reflect-metadata"),require("@angular/forms"),require("@angular/common"),require("@ngx-translate/core")):"function"==typeof define&&define.amd?define("ngx-validator",["exports","@angular/core","reflect-metadata","@angular/forms","@angular/common","@ngx-translate/core"],t):t(e["ngx-validator"]={},e.ng.core,null,e.ng.forms,e.ng.common,null)}(this,function(e,r,t,a,n,o){"use strict";var i=function(){function e(){}return e.decorators=[{type:r.Injectable,args:[{providedIn:"root"}]}],e.ctorParameters=function(){return[]},e.ngInjectableDef=r.defineInjectable({factory:function t(){return new e},token:e,providedIn:"root"}),e}(),l=function(e,t){return(l=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function f(e){var t="function"==typeof Symbol&&e[Symbol.iterator],n=0;return t?t.call(e):{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}var s={Int:0,Number:1,MultilineText:2,Url:3,ImageUrl:4,Password:5,Hexadecimal:6,Date:7,Array:8,Upload:9};function d(r,a){return Reflect.getMetadataKeys(r,a).filter(function(e){return e.toString().startsWith("custom-reflect:")}).reduce(function(e,t){var n=Reflect.getMetadata(t,r,a);return e.concat({key:t.toString().replace("custom-reflect:",""),value:n})},[])}function p(e,t,n,r){var a;if((null===n||n===undefined||""===n)&&"Required"!==e&&"RequiredIf"!==e&&"Compare"!==e&&"Range"!==e)return null;var o="";switch((o="string"==typeof t?t:t.error)||(o="error not asigned!"),e){case"CreditCard":(function i(e){var t,n,r=String(e).replace(/[\s]/g,""),a=r.length,o=!1,i=0;if(0===a)return!0;if(!/^[0-9]+$/.test(r))return!1;for(var l=a;0<l;l--){if(t=parseInt(r.charAt(l-1),10),o){switch(n=2*t){case 10:n=1;break;case 12:n=3;break;case 14:n=5;break;case 16:n=7;break;case 18:n=9;break;default:n=n}i+=n}else i+=t;o=!o}return 0!==i&&i%10==0})(n=n.replace(/[- ]+/g,""))&&(/^4[0-9]{12}(?:[0-9]{3})?$/.test(n)||/^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$/.test(n)||/^3[47][0-9]{13}$/.test(n)||/^3(?:0[0-5]|[68][0-9])[0-9]{11}$/.test(n)||/^6(?:011|5[0-9]{2})[0-9]{12}$/.test(n)||/^(?:2131|1800|35\d{3})\d{11}$/.test(n)||/^(6541|6556)[0-9]{12}$/.test(n)||/^389[0-9]{11}$/.test(n)||/^63[7-9][0-9]{13}$/.test(n)||/^9[0-9]{15}$/.test(n)||/^(6304|6706|6709|6771)[0-9]{12,15}$/.test(n)||/^(5018|5020|5038|6304|6759|6761|6763)[0-9]{8,15}$/.test(n)||/^(6334|6767)[0-9]{12}|(6334|6767)[0-9]{14}|(6334|6767)[0-9]{15}$/.test(n)||/^(4903|4905|4911|4936|6333|6759)[0-9]{12}|(4903|4905|4911|4936|6333|6759)[0-9]{14}|(4903|4905|4911|4936|6333|6759)[0-9]{15}|564182[0-9]{10}|564182[0-9]{12}|564182[0-9]{13}|633110[0-9]{10}|633110[0-9]{12}|633110[0-9]{13}$/.test(n)||/^(62[0-9]{14,17})$/.test(n)||t.customValue&&t.customValue.test(n))||(a=t.error);break;case"Compare":n!==r[t.field]&&(a=o);break;case"Contains":-1===n.indexOf(t.value)&&(a=o);break;case"Custom":t.customFunc(n,r)||(a=o);break;case"DataType":if(t.value===s.Number){var l=/^[+-]?\d+(\.\d+)?$/;!isNaN(parseFloat(n))&&l.test(n)||(a=o)}if(t.value===s.Date&&(n instanceof Date||(a=o)),t.value===s.Hexadecimal){/^([0-9a-fA-F]+)$/i.test(n)||(a=o)}if(t.value===s.Int){l=/^[+\-]?\d+$/;(isNaN(parseFloat(n))||!isNaN(parseFloat(n))&&parseFloat(n)-parseInt(n,10)!=0||!l.test(n))&&(a=o)}t.value===s.Array&&(Array.isArray(n)||(a=o));break;case"NotContains":-1!==n.indexOf(t.value)&&(a=o);break;case"Required":n||(a=o);break;case"RequiredIf":t.field&&t.value?t.value!==r[t.field]||n||(a=o):console.warn("incorrect parameters in RequiredIf attribute");break;case"Pattern":t.value.test(n)||(a=o);break;case"MinValue":n<t.value&&(a=o.replace("{0}",t.value.toString()));break;case"MaxValue":n>t.value&&(a=o.replace("{0}",t.value.toString()));break;case"StringLength":(!n||n.length<t.min||n.length>t.max)&&(a=o.replace("{0}",t.min.toString()).replace("{1}",t.max.toString()));break;case"Range":(n<t.min||n>t.max)&&(a=o.replace("{0}",t.min.toString()).replace("{1}",t.max.toString()));break;case"Email":/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(n)||(a=o);break;default:a=null}return a}s[s.Int]="Int",s[s.Number]="Number",s[s.MultilineText]="MultilineText",s[s.Url]="Url",s[s.ImageUrl]="ImageUrl",s[s.Password]="Password",s[s.Hexadecimal]="Hexadecimal",s[s.Date]="Date",s[s.Array]="Array",s[s.Upload]="Upload";var u=function(){function e(e,t){this.el=e,this.render=t}return Object.defineProperty(e.prototype,"sk",{set:function(e){this.dataModel=e},enumerable:!0,configurable:!0}),e.prototype.validate=function(e){var t,n,r=this.el.nativeElement.getAttribute("name")?this.el.nativeElement.getAttribute("name"):this.el.nativeElement.getAttribute("ng-reflect-name"),a=d(this.dataModel,r),o={};a.find(function(e){return"ReadOnly"===e.key})&&this.el.nativeElement.setAttribute("readonly",!0);try{for(var i=f(a),l=i.next();!l.done;l=i.next()){var s=l.value,u=p(s.key,s.value,e.value,this.dataModel);u&&(o[s.key]=u)}}catch(c){t={error:c}}finally{try{l&&!l.done&&(n=i["return"])&&n.call(i)}finally{if(t)throw t.error}}return o},e.decorators=[{type:r.Directive,args:[{selector:"[ngx-validator]",providers:[{provide:a.NG_VALIDATORS,useExisting:e,multi:!0}]}]}],e.ctorParameters=function(){return[{type:r.ElementRef},{type:r.Renderer2}]},e.propDecorators={sk:[{type:r.Input,args:["ngx-validator"]}]},e}(),c=function(){function e(){this.labelClass="",this.reflectValue=""}return e.prototype.ngOnInit=function(){try{this.reflectValue=d(this.model,this.field).find(function(e){return"Name"===e.key}).value}catch(e){this.reflectValue=this.field}},e.decorators=[{type:r.Component,args:[{selector:"ngx-label-for",template:'<label for="{{field}}" [ngClass]="labelClass">{{reflectValue | translate}}</label>',styles:[""]}]}],e.propDecorators={model:[{type:r.Input}],field:[{type:r.Input}],labelClass:[{type:r.Input}]},e}(),m=function(){function e(){this.messages=[],this.errorClass="text-danger"}return Object.defineProperty(e.prototype,"errors",{set:function(e){var t,n;if(this.messages=[],e)try{for(var r=f(Object.keys(e)),a=r.next();!a.done;a=r.next()){var o=a.value;this.messages.push(e[o])}}catch(i){t={error:i}}finally{try{a&&!a.done&&(n=r["return"])&&n.call(r)}finally{if(t)throw t.error}}},enumerable:!0,configurable:!0}),e.decorators=[{type:r.Component,args:[{selector:"ngx-validator-for",template:'<div  [ngClass]="errorClass">\n <div *ngFor="let message of messages">{{message | translate}}</div>\n </div>',styles:[""]}]}],e.propDecorators={errorClass:[{type:r.Input}],errors:[{type:r.Input,args:["errors"]}]},e}(),g=function(){function e(){this.changed=new Array,this.touched=new Array}return Object.defineProperty(e.prototype,"value",{get:function(){return this.innerValue},set:function(t){this.innerValue!==t&&(this.innerValue=t,this.changed.forEach(function(e){return e(t)}))},enumerable:!0,configurable:!0}),e.prototype.writeValue=function(e){this.innerValue=e},e.prototype.registerOnChange=function(e){this.changed.push(e)},e.prototype.registerOnTouched=function(e){this.touched.push(e)},e.prototype.touch=function(){this.touched.forEach(function(e){return e()})},e}(),y=function(){function e(e,t){this.templateRef=e,this.viewContainer=t}return e.decorators=[{type:r.Directive,args:[{selector:"[ngxCustomTemplateFor]"}]}],e.ctorParameters=function(){return[{type:r.TemplateRef},{type:r.ViewContainerRef}]},e.propDecorators={ngxCustomTemplateFor:[{type:r.Input}]},e}(),h=function(n){function e(e){var t=n.call(this)||this;return t.el=e,t.inputClass="form-control",t.DataTypeEnum=s,t.placeHolder="",t.name="",t.readonly=!1,t}return function t(e,t){function n(){this.constructor=e}l(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}(e,n),Object.defineProperty(e.prototype,"templates",{set:function(e){var t=this;this.model&&e.forEach(function(e){t._template=e})},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){null!==this.field&&this.field!==undefined||(this.field=null===this.el.nativeElement.getAttribute("name")?this.el.nativeElement.getAttribute("id"):this.el.nativeElement.getAttribute("name"));var e=d(this.model,this.field);e.find(function(e){return"DataType"===e.key})&&(this.dataType=e.find(function(e){return"DataType"===e.key}).value.value),e.find(function(e){return"Placeholder"===e.key})&&(this.placeHolder=e.find(function(e){return"Placeholder"===e.key}).value),e.find(function(e){return"Name"===e.key})&&(this.name=e.find(function(e){return"Name"===e.key}).value),e.find(function(e){return"ReadOnly"===e.key})&&(this.readonly=!0)},e.prototype.validate=function(e){var t,n,r=d(this.model,this.field),a={};try{for(var o=f(r),i=o.next();!i.done;i=o.next()){var l=i.value,s=p(l.key,l.value,e.value,this.model);s&&(a[l.key]=s)}}catch(u){t={error:u}}finally{try{i&&!i.done&&(n=o["return"])&&n.call(o)}finally{if(t)throw t.error}}return a},e.prototype.getTemplate=function(){return this._template.templateRef},e.decorators=[{type:r.Component,args:[{selector:"ngx-input-for",template:'<ng-container [ngSwitch]="dataType">\n <ng-container *ngIf="!_template; else template">\n <a [href]="value" *ngSwitchCase="DataTypeEnum.Url" [ngClass]="inputClass" [id]="field">{{name | translate}}</a>\n\n <input type="password" *ngSwitchCase="DataTypeEnum.Password" [placeholder]="placeHolder | translate"\n [(ngModel)]="value" [id]="field" [ngClass]="inputClass" [readOnly]="readonly" />\n\n <img *ngSwitchCase="DataTypeEnum.ImageUrl" [src]="value" [id]="field" [ngClass]="inputClass"/>\n\n <input type="file" *ngSwitchCase="DataTypeEnum.Upload" [placeholder]="placeHolder | translate" [(ngModel)]="value"\n [id]="field" [ngClass]="inputClass" [readOnly]="readonly"/>\n\n <textarea *ngSwitchCase="DataTypeEnum.MultilineText" [placeholder]="placeHolder | translate" [(ngModel)]="value"\n [id]="field" rows="5" [ngClass]="inputClass" [readOnly]="readonly"></textarea>\n\n <input *ngSwitchDefault type="text" [placeholder]="placeHolder | translate" [(ngModel)]="value" [id]="field"\n [ngClass]="inputClass" [readOnly]="readonly" [name]="field" />\n </ng-container>\n <ng-template #template>\n <ng-container [ngTemplateOutlet]="getTemplate()" [ngTemplateOutletContext]="{$implicit: model}">\n </ng-container>\n </ng-template>\n</ng-container>',styles:[""],providers:[{provide:a.NG_VALUE_ACCESSOR,useExisting:e,multi:!0},{provide:a.NG_VALIDATORS,useExisting:e,multi:!0}]}]}],e.ctorParameters=function(){return[{type:r.ElementRef}]},e.propDecorators={model:[{type:r.Input}],inputClass:[{type:r.Input}],field:[{type:r.Input}],ngModel:[{type:r.ViewChild,args:[a.NgModel]}],templates:[{type:r.ContentChildren,args:[y,{descendants:!1}]}]},e}(g),v=function(){function e(){this.propertyNames=[],this.submitForm=new r.EventEmitter,this._templates=[]}return Object.defineProperty(e.prototype,"model",{set:function(e){var t,n;this._model=e;try{for(var r=f(Object.keys(this._model)),a=r.next();!a.done;a=r.next()){var o=a.value;d(this._model,o).find(function(e){return"NoForm"===e.key})||this.propertyNames.push({field:o,template:!1})}}catch(i){t={error:i}}finally{try{a&&!a.done&&(n=r["return"])&&n.call(r)}finally{if(t)throw t.error}}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"templates",{set:function(e){var n=this;this._model&&e.forEach(function(t){if(!n.propertyNames.find(function(e){return e.field===t.ngxCustomTemplateFor}))throw new Error("Property name bound on NgxCustomTemplateForDirective "+t.ngxCustomTemplateFor+" not found.\n If it is definity correct, please check if you have initialized it before passing model to ngx-form-for component");n._templates.push(t),n.propertyNames.find(function(e){return e.field===t.ngxCustomTemplateFor}).template=!0})},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){},e.prototype.getTemplate=function(t){return this._templates.find(function(e){return e.ngxCustomTemplateFor===t}).templateRef},e.prototype.submit=function(){this.submitForm.emit(this._model)},e.decorators=[{type:r.Component,args:[{selector:"ngx-form-for",template:'<form #form="ngForm" (ngSubmit)="submit()">\n\n <div [ngClass]="cssClasses? cssClasses.group: \'form-group\'" *ngFor="let item of propertyNames">\n <ng-container *ngIf="!item.template; else template">\n\n <ngx-label-for [model]="_model" [field]="item.field" [labelClass]="cssClasses? cssClasses.label:\'\'"></ngx-label-for>\n <ngx-input-for [id]="item.field" [model]="_model" [(ngModel)]="_model[item.field]" [ngModelOptions]="{ name: item.field }"\n [field]="item.field" [inputClass]="cssClasses? cssClasses.input:\'form-control\'"></ngx-input-for>\n <ngx-validator-for [errors]="form.controls[item.field]?.errors" [errorClass]="cssClasses? cssClasses.error: \'text-danger\'">\n </ngx-validator-for>\n\n </ng-container>\n\n <ng-template #template>\n \x3c!-- temporary form validation workaround. custom temlpate is not binded to form\'s controls and therefore, form validation doesn\'t work. help needed --\x3e\n <input [name]="item.field" [(ngModel)]="_model[item.field]" [ngx-validator]="_model" style="display:none" />\n <ng-container [ngTemplateOutlet]="getTemplate(item.field)" [ngTemplateOutletContext]="{$implicit: {model: _model, form: form}}" >\n </ng-container>\n </ng-template>\n </div>\n <button type="submit" [disabled]="form.invalid" class="btn btn-success">Submit</button>\n\n</form>',styles:[""]}]}],e.ctorParameters=function(){return[]},e.propDecorators={model:[{type:r.Input}],cssClasses:[{type:r.Input}],form:[{type:r.ViewChild,args:[a.NgForm]}],submitForm:[{type:r.Output}],templates:[{type:r.ContentChildren,args:[y,{descendants:!1}]}]},e}(),b=function(){function e(){}return e.decorators=[{type:r.NgModule,args:[{imports:[n.CommonModule,a.FormsModule,o.TranslateModule],declarations:[u,c,m,h,v,y],exports:[u,c,m,h,v,y]}]}],e}();e.NgxValidatorService=i,e.NgxValidatorDirective=u,e.NgxValidatorModule=b,e.FormGenerator=function C(e){Object.create(e.prototype)},e.DataType=function x(n){return function(e,t){Reflect.defineMetadata("custom-reflect:DataType",n,e,t)}},e.CreditCard=function M(n){return function(e,t){Reflect.defineMetadata("custom-reflect:CreditCard",n,e,t)}},e.Compare=function R(n){return function(e,t){Reflect.defineMetadata("custom-reflect:Compare",n,e,t)}},e.Contains=function k(n){return function(e,t){Reflect.defineMetadata("custom-reflect:Contains",n,e,t)}},e.Custom=function I(n){return function(e,t){Reflect.defineMetadata("custom-reflect:Custom",n,e,t)}},e.Name=function O(n){return function(e,t){Reflect.defineMetadata("custom-reflect:Name",n,e,t)}},e.Required=function T(n){return function(e,t){Reflect.defineMetadata("custom-reflect:Required",n,e,t)}},e.RequiredIf=function N(n){return function(e,t){Reflect.defineMetadata("custom-reflect:RequiredIf",n,e,t)}},e.ReadOnly=function w(){return function(e,t){Reflect.defineMetadata("custom-reflect:ReadOnly",null,e,t)}},e.Pattern=function D(n){return function(e,t){Reflect.defineMetadata("custom-reflect:Pattern",n,e,t)}},e.MinValue=function E(n){return function(e,t){Reflect.defineMetadata("custom-reflect:MinValue",n,e,t)}},e.MaxValue=function _(n){return function(e,t){Reflect.defineMetadata("custom-reflect:MaxValue",n,e,t)}},e.NotContains=function S(n){return function(e,t){Reflect.defineMetadata("custom-reflect:NotContains",n,e,t)}},e.NoForm=function V(){return function(e,t){Reflect.defineMetadata("custom-reflect:NoForm",null,e,t)}},e.StringLength=function A(n){return function(e,t){Reflect.defineMetadata("custom-reflect:StringLength",n,e,t)}},e.Email=function P(n){return function(e,t){Reflect.defineMetadata("custom-reflect:Email",n,e,t)}},e.Placeholder=function F(n){return function(e,t){Reflect.defineMetadata("custom-reflect:Placeholder",n,e,t)}},e.Range=function $(n){return function(e,t){Reflect.defineMetadata("custom-reflect:Range",n,e,t)}},e.configurable=function j(r){return function(e,t,n){n.configurable=r}},e.getDecorators=d,e.ngxValidate=p,e.DataTypeEnum=s,e.ɵd=g,e.ɵe=y,e.ɵf=v,e.ɵc=h,e.ɵa=c,e.ɵb=m,Object.defineProperty(e,"__esModule",{value:!0})});
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("reflect-metadata"),require("@angular/forms"),require("@angular/common"),require("@ngx-translate/core")):"function"==typeof define&&define.amd?define("ngx-validator",["exports","@angular/core","reflect-metadata","@angular/forms","@angular/common","@ngx-translate/core"],t):t(e["ngx-validator"]={},e.ng.core,null,e.ng.forms,e.ng.common,null)}(this,function(e,r,t,a,n,o){"use strict";var i=function(){function e(){}return e.decorators=[{type:r.Injectable,args:[{providedIn:"root"}]}],e.ctorParameters=function(){return[]},e.ngInjectableDef=r.defineInjectable({factory:function t(){return new e},token:e,providedIn:"root"}),e}(),l=function(e,t){return(l=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function f(e){var t="function"==typeof Symbol&&e[Symbol.iterator],n=0;return t?t.call(e):{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}var s={Int:0,Number:1,MultilineText:2,Url:3,ImageUrl:4,Password:5,Hexadecimal:6,Date:7,Array:8,Upload:9};function d(r,a){return Reflect.getMetadataKeys(r,a).filter(function(e){return e.toString().startsWith("custom-reflect:")}).reduce(function(e,t){var n=Reflect.getMetadata(t,r,a);return e.concat({key:t.toString().replace("custom-reflect:",""),value:n})},[])}function p(e,t,n,r){var a;if((null===n||n===undefined||""===n)&&"Required"!==e&&"RequiredIf"!==e&&"Compare"!==e&&"Range"!==e)return null;var o="";switch((o="string"==typeof t?t:t.error)||(o="error not asigned!"),e){case"CreditCard":(function i(e){var t,n,r=String(e).replace(/[\s]/g,""),a=r.length,o=!1,i=0;if(0===a)return!0;if(!/^[0-9]+$/.test(r))return!1;for(var l=a;0<l;l--){if(t=parseInt(r.charAt(l-1),10),o){switch(n=2*t){case 10:n=1;break;case 12:n=3;break;case 14:n=5;break;case 16:n=7;break;case 18:n=9;break;default:n=n}i+=n}else i+=t;o=!o}return 0!==i&&i%10==0})(n=n.replace(/[- ]+/g,""))&&(/^4[0-9]{12}(?:[0-9]{3})?$/.test(n)||/^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$/.test(n)||/^3[47][0-9]{13}$/.test(n)||/^3(?:0[0-5]|[68][0-9])[0-9]{11}$/.test(n)||/^6(?:011|5[0-9]{2})[0-9]{12}$/.test(n)||/^(?:2131|1800|35\d{3})\d{11}$/.test(n)||/^(6541|6556)[0-9]{12}$/.test(n)||/^389[0-9]{11}$/.test(n)||/^63[7-9][0-9]{13}$/.test(n)||/^9[0-9]{15}$/.test(n)||/^(6304|6706|6709|6771)[0-9]{12,15}$/.test(n)||/^(5018|5020|5038|6304|6759|6761|6763)[0-9]{8,15}$/.test(n)||/^(6334|6767)[0-9]{12}|(6334|6767)[0-9]{14}|(6334|6767)[0-9]{15}$/.test(n)||/^(4903|4905|4911|4936|6333|6759)[0-9]{12}|(4903|4905|4911|4936|6333|6759)[0-9]{14}|(4903|4905|4911|4936|6333|6759)[0-9]{15}|564182[0-9]{10}|564182[0-9]{12}|564182[0-9]{13}|633110[0-9]{10}|633110[0-9]{12}|633110[0-9]{13}$/.test(n)||/^(62[0-9]{14,17})$/.test(n)||t.customValue&&t.customValue.test(n))||(a=t.error);break;case"Compare":n!==r[t.field]&&(a=o);break;case"Contains":-1===n.indexOf(t.value)&&(a=o);break;case"Custom":t.customFunc(n,r)||(a=o);break;case"DataType":if(t.value===s.Number){var l=/^[+-]?\d+(\.\d+)?$/;!isNaN(parseFloat(n))&&l.test(n)||(a=o)}if(t.value===s.Date&&(n instanceof Date||(a=o)),t.value===s.Hexadecimal){/^([0-9a-fA-F]+)$/i.test(n)||(a=o)}if(t.value===s.Int){l=/^[+\-]?\d+$/;(isNaN(parseFloat(n))||!isNaN(parseFloat(n))&&parseFloat(n)-parseInt(n,10)!=0||!l.test(n))&&(a=o)}t.value===s.Array&&(Array.isArray(n)||(a=o));break;case"NotContains":-1!==n.indexOf(t.value)&&(a=o);break;case"Required":null!==n&&n!==undefined&&""!==n||(a=o);break;case"RequiredIf":t.field&&t.value?t.value!==r[t.field]||null!==n&&n!==undefined&&""!==n||(a=o):console.warn("incorrect parameters in RequiredIf attribute");break;case"Pattern":t.value.test(n)||(a=o);break;case"MinValue":n<t.value&&(a=o.replace("{0}",t.value.toString()));break;case"MaxValue":n>t.value&&(a=o.replace("{0}",t.value.toString()));break;case"StringLength":(!n||n.length<t.min||n.length>t.max)&&(a=o.replace("{0}",t.min.toString()).replace("{1}",t.max.toString()));break;case"Range":(n<t.min||n>t.max)&&(a=o.replace("{0}",t.min.toString()).replace("{1}",t.max.toString()));break;case"Email":/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(n)||(a=o);break;default:a=null}return a}s[s.Int]="Int",s[s.Number]="Number",s[s.MultilineText]="MultilineText",s[s.Url]="Url",s[s.ImageUrl]="ImageUrl",s[s.Password]="Password",s[s.Hexadecimal]="Hexadecimal",s[s.Date]="Date",s[s.Array]="Array",s[s.Upload]="Upload";var u=function(){function e(e,t){this.el=e,this.render=t}return Object.defineProperty(e.prototype,"sk",{set:function(e){this.dataModel=e},enumerable:!0,configurable:!0}),e.prototype.validate=function(e){var t,n,r=this.el.nativeElement.getAttribute("name")?this.el.nativeElement.getAttribute("name"):this.el.nativeElement.getAttribute("ng-reflect-name"),a=d(this.dataModel,r),o={};a.find(function(e){return"ReadOnly"===e.key})&&this.el.nativeElement.setAttribute("readonly",!0);try{for(var i=f(a),l=i.next();!l.done;l=i.next()){var s=l.value,u=p(s.key,s.value,e.value,this.dataModel);u&&(o[s.key]=u)}}catch(c){t={error:c}}finally{try{l&&!l.done&&(n=i["return"])&&n.call(i)}finally{if(t)throw t.error}}return o},e.decorators=[{type:r.Directive,args:[{selector:"[ngx-validator]",providers:[{provide:a.NG_VALIDATORS,useExisting:e,multi:!0}]}]}],e.ctorParameters=function(){return[{type:r.ElementRef},{type:r.Renderer2}]},e.propDecorators={sk:[{type:r.Input,args:["ngx-validator"]}]},e}(),c=function(){function e(){this.labelClass="",this.reflectValue=""}return e.prototype.ngOnInit=function(){try{this.reflectValue=d(this.model,this.field).find(function(e){return"Name"===e.key}).value}catch(e){this.reflectValue=this.field}},e.decorators=[{type:r.Component,args:[{selector:"ngx-label-for",template:'<label for="{{field}}" [ngClass]="labelClass">{{reflectValue | translate}}</label>',styles:[""]}]}],e.propDecorators={model:[{type:r.Input}],field:[{type:r.Input}],labelClass:[{type:r.Input}]},e}(),m=function(){function e(){this.messages=[],this.errorClass="text-danger"}return Object.defineProperty(e.prototype,"errors",{set:function(e){var t,n;if(this.messages=[],e)try{for(var r=f(Object.keys(e)),a=r.next();!a.done;a=r.next()){var o=a.value;this.messages.push(e[o])}}catch(i){t={error:i}}finally{try{a&&!a.done&&(n=r["return"])&&n.call(r)}finally{if(t)throw t.error}}},enumerable:!0,configurable:!0}),e.decorators=[{type:r.Component,args:[{selector:"ngx-validator-for",template:'<div  [ngClass]="errorClass">\n <div *ngFor="let message of messages">{{message | translate}}</div>\n </div>',styles:[""]}]}],e.propDecorators={errorClass:[{type:r.Input}],errors:[{type:r.Input,args:["errors"]}]},e}(),g=function(){function e(){this.changed=new Array,this.touched=new Array}return Object.defineProperty(e.prototype,"value",{get:function(){return this.innerValue},set:function(t){this.innerValue!==t&&(this.innerValue=t,this.changed.forEach(function(e){return e(t)}))},enumerable:!0,configurable:!0}),e.prototype.writeValue=function(e){this.innerValue=e},e.prototype.registerOnChange=function(e){this.changed.push(e)},e.prototype.registerOnTouched=function(e){this.touched.push(e)},e.prototype.touch=function(){this.touched.forEach(function(e){return e()})},e}(),y=function(){function e(e,t){this.templateRef=e,this.viewContainer=t}return e.decorators=[{type:r.Directive,args:[{selector:"[ngxCustomTemplateFor]"}]}],e.ctorParameters=function(){return[{type:r.TemplateRef},{type:r.ViewContainerRef}]},e.propDecorators={ngxCustomTemplateFor:[{type:r.Input}]},e}(),h=function(n){function e(e){var t=n.call(this)||this;return t.el=e,t.inputClass="form-control",t.DataTypeEnum=s,t.placeHolder="",t.name="",t.readonly=!1,t}return function t(e,t){function n(){this.constructor=e}l(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}(e,n),Object.defineProperty(e.prototype,"templates",{set:function(e){var t=this;this.model&&e.forEach(function(e){t._template=e})},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){null!==this.field&&this.field!==undefined||(this.field=null===this.el.nativeElement.getAttribute("name")?this.el.nativeElement.getAttribute("id"):this.el.nativeElement.getAttribute("name"));var e=d(this.model,this.field);e.find(function(e){return"DataType"===e.key})&&(this.dataType=e.find(function(e){return"DataType"===e.key}).value.value),e.find(function(e){return"Placeholder"===e.key})&&(this.placeHolder=e.find(function(e){return"Placeholder"===e.key}).value),e.find(function(e){return"Name"===e.key})&&(this.name=e.find(function(e){return"Name"===e.key}).value),e.find(function(e){return"ReadOnly"===e.key})&&(this.readonly=!0)},e.prototype.validate=function(e){var t,n,r=d(this.model,this.field),a={};try{for(var o=f(r),i=o.next();!i.done;i=o.next()){var l=i.value,s=p(l.key,l.value,e.value,this.model);s&&(a[l.key]=s)}}catch(u){t={error:u}}finally{try{i&&!i.done&&(n=o["return"])&&n.call(o)}finally{if(t)throw t.error}}return a},e.prototype.getTemplate=function(){return this._template.templateRef},e.decorators=[{type:r.Component,args:[{selector:"ngx-input-for",template:'<ng-container [ngSwitch]="dataType">\n <ng-container *ngIf="!_template; else template">\n <a [href]="value" *ngSwitchCase="DataTypeEnum.Url" [ngClass]="inputClass" [id]="field">{{name | translate}}</a>\n\n <input type="password" *ngSwitchCase="DataTypeEnum.Password" [placeholder]="placeHolder | translate"\n [(ngModel)]="value" [id]="field" [ngClass]="inputClass" [readOnly]="readonly" />\n\n <img *ngSwitchCase="DataTypeEnum.ImageUrl" [src]="value" [id]="field" [ngClass]="inputClass"/>\n\n <input type="file" *ngSwitchCase="DataTypeEnum.Upload" [placeholder]="placeHolder | translate" [(ngModel)]="value"\n [id]="field" [ngClass]="inputClass" [readOnly]="readonly"/>\n\n <textarea *ngSwitchCase="DataTypeEnum.MultilineText" [placeholder]="placeHolder | translate" [(ngModel)]="value"\n [id]="field" rows="5" [ngClass]="inputClass" [readOnly]="readonly"></textarea>\n\n <input *ngSwitchDefault type="text" [placeholder]="placeHolder | translate" [(ngModel)]="value" [id]="field"\n [ngClass]="inputClass" [readOnly]="readonly" [name]="field" />\n </ng-container>\n <ng-template #template>\n <ng-container [ngTemplateOutlet]="getTemplate()" [ngTemplateOutletContext]="{$implicit: model}">\n </ng-container>\n </ng-template>\n</ng-container>',styles:[""],providers:[{provide:a.NG_VALUE_ACCESSOR,useExisting:e,multi:!0},{provide:a.NG_VALIDATORS,useExisting:e,multi:!0}]}]}],e.ctorParameters=function(){return[{type:r.ElementRef}]},e.propDecorators={model:[{type:r.Input}],inputClass:[{type:r.Input}],field:[{type:r.Input}],ngModel:[{type:r.ViewChild,args:[a.NgModel]}],templates:[{type:r.ContentChildren,args:[y,{descendants:!1}]}]},e}(g),v=function(){function e(){this.propertyNames=[],this.submitForm=new r.EventEmitter,this._templates=[]}return Object.defineProperty(e.prototype,"model",{set:function(e){var t,n;this._model=e;try{for(var r=f(Object.keys(this._model)),a=r.next();!a.done;a=r.next()){var o=a.value;d(this._model,o).find(function(e){return"NoForm"===e.key})||this.propertyNames.push({field:o,template:!1})}}catch(i){t={error:i}}finally{try{a&&!a.done&&(n=r["return"])&&n.call(r)}finally{if(t)throw t.error}}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"templates",{set:function(e){var n=this;this._model&&e.forEach(function(t){if(!n.propertyNames.find(function(e){return e.field===t.ngxCustomTemplateFor}))throw new Error("Property name bound on NgxCustomTemplateForDirective "+t.ngxCustomTemplateFor+" not found.\n If it is definity correct, please check if you have initialized it before passing model to ngx-form-for component");n._templates.push(t),n.propertyNames.find(function(e){return e.field===t.ngxCustomTemplateFor}).template=!0})},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){},e.prototype.getTemplate=function(t){return this._templates.find(function(e){return e.ngxCustomTemplateFor===t}).templateRef},e.prototype.submit=function(){this.submitForm.emit(this._model)},e.decorators=[{type:r.Component,args:[{selector:"ngx-form-for",template:'<form #form="ngForm" (ngSubmit)="submit()">\n\n <div [ngClass]="cssClasses? cssClasses.group: \'form-group\'" *ngFor="let item of propertyNames">\n <ng-container *ngIf="!item.template; else template">\n\n <ngx-label-for [model]="_model" [field]="item.field" [labelClass]="cssClasses? cssClasses.label:\'\'"></ngx-label-for>\n <ngx-input-for [id]="item.field" [model]="_model" [(ngModel)]="_model[item.field]" [ngModelOptions]="{ name: item.field }"\n [field]="item.field" [inputClass]="cssClasses? cssClasses.input:\'form-control\'"></ngx-input-for>\n <ngx-validator-for [errors]="form.controls[item.field]?.errors" [errorClass]="cssClasses? cssClasses.error: \'text-danger\'">\n </ngx-validator-for>\n\n </ng-container>\n\n <ng-template #template>\n \x3c!-- temporary form validation workaround. custom temlpate is not binded to form\'s controls and therefore, form validation doesn\'t work. help needed --\x3e\n <input [name]="item.field" [(ngModel)]="_model[item.field]" [ngx-validator]="_model" style="display:none" />\n <ng-container [ngTemplateOutlet]="getTemplate(item.field)" [ngTemplateOutletContext]="{$implicit: {model: _model, form: form}}" >\n </ng-container>\n </ng-template>\n </div>\n <button type="submit" [disabled]="form.invalid" class="btn btn-success">Submit</button>\n\n</form>',styles:[""]}]}],e.ctorParameters=function(){return[]},e.propDecorators={model:[{type:r.Input}],cssClasses:[{type:r.Input}],form:[{type:r.ViewChild,args:[a.NgForm]}],submitForm:[{type:r.Output}],templates:[{type:r.ContentChildren,args:[y,{descendants:!1}]}]},e}(),b=function(){function e(){}return e.decorators=[{type:r.NgModule,args:[{imports:[n.CommonModule,a.FormsModule,o.TranslateModule],declarations:[u,c,m,h,v,y],exports:[u,c,m,h,v,y]}]}],e}();e.NgxValidatorService=i,e.NgxValidatorDirective=u,e.NgxValidatorModule=b,e.FormGenerator=function C(e){Object.create(e.prototype)},e.DataType=function x(n){return function(e,t){Reflect.defineMetadata("custom-reflect:DataType",n,e,t)}},e.CreditCard=function M(n){return function(e,t){Reflect.defineMetadata("custom-reflect:CreditCard",n,e,t)}},e.Compare=function R(n){return function(e,t){Reflect.defineMetadata("custom-reflect:Compare",n,e,t)}},e.Contains=function k(n){return function(e,t){Reflect.defineMetadata("custom-reflect:Contains",n,e,t)}},e.Custom=function I(n){return function(e,t){Reflect.defineMetadata("custom-reflect:Custom",n,e,t)}},e.Name=function O(n){return function(e,t){Reflect.defineMetadata("custom-reflect:Name",n,e,t)}},e.Required=function T(n){return function(e,t){Reflect.defineMetadata("custom-reflect:Required",n,e,t)}},e.RequiredIf=function N(n){return function(e,t){Reflect.defineMetadata("custom-reflect:RequiredIf",n,e,t)}},e.ReadOnly=function w(){return function(e,t){Reflect.defineMetadata("custom-reflect:ReadOnly",null,e,t)}},e.Pattern=function D(n){return function(e,t){Reflect.defineMetadata("custom-reflect:Pattern",n,e,t)}},e.MinValue=function E(n){return function(e,t){Reflect.defineMetadata("custom-reflect:MinValue",n,e,t)}},e.MaxValue=function _(n){return function(e,t){Reflect.defineMetadata("custom-reflect:MaxValue",n,e,t)}},e.NotContains=function S(n){return function(e,t){Reflect.defineMetadata("custom-reflect:NotContains",n,e,t)}},e.NoForm=function V(){return function(e,t){Reflect.defineMetadata("custom-reflect:NoForm",null,e,t)}},e.StringLength=function A(n){return function(e,t){Reflect.defineMetadata("custom-reflect:StringLength",n,e,t)}},e.Email=function P(n){return function(e,t){Reflect.defineMetadata("custom-reflect:Email",n,e,t)}},e.Placeholder=function F(n){return function(e,t){Reflect.defineMetadata("custom-reflect:Placeholder",n,e,t)}},e.Range=function $(n){return function(e,t){Reflect.defineMetadata("custom-reflect:Range",n,e,t)}},e.configurable=function j(r){return function(e,t,n){n.configurable=r}},e.getDecorators=d,e.ngxValidate=p,e.DataTypeEnum=s,e.ɵd=g,e.ɵe=y,e.ɵf=v,e.ɵc=h,e.ɵa=c,e.ɵb=m,Object.defineProperty(e,"__esModule",{value:!0})});
//# sourceMappingURL=ngx-validator.umd.min.js.map

@@ -345,3 +345,3 @@ /**

case 'Required': {
if (!value) {
if (value === null || value === undefined || value === '') {
retstr = errorString;

@@ -356,3 +356,3 @@ }

else {
if ((((/** @type {?} */ (param))).value === dataModel[((/** @type {?} */ (param))).field]) && !value) {
if ((((/** @type {?} */ (param))).value === dataModel[((/** @type {?} */ (param))).field]) && (value === null || value === undefined || value === '')) {
retstr = errorString;

@@ -466,2 +466,2 @@ }

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdG9yLWZ1bmN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC12YWxpZGF0b3IvIiwic291cmNlcyI6WyJjb3JlL3JlZmxlY3Rvci1mdW5jdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUEwRCxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7O0FBRzlHLE1BQU0sVUFBVSxhQUFhLENBQUMsV0FBcUI7SUFDL0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQixNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QyxDQUFDOzs7OztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBc0I7SUFDM0MsT0FBTyxVQUFVLE1BQWMsRUFBRSxXQUFtQjtRQUNoRCxPQUFPLENBQUMsY0FBYyxDQUFDLHlCQUF5QixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDbEYsQ0FBQyxDQUFDO0FBQ04sQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQXNCO0lBQzdDLE9BQU8sVUFBVSxNQUFjLEVBQUUsV0FBbUI7UUFDaEQsT0FBTyxDQUFDLGNBQWMsQ0FBQywyQkFBMkIsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3BGLENBQUMsQ0FBQztBQUNOLENBQUM7Ozs7O0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxLQUFzQjtJQUMxQyxPQUFPLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8sQ0FBQyxjQUFjLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNqRixDQUFDLENBQUM7QUFDTixDQUFDOzs7OztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBc0I7SUFDM0MsT0FBTyxV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LElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUMzQixPQUFPLEtBQUssQ0FBQztLQUNoQjtJQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDN0IsSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ04sS0FBSyxJQUFJLElBQUksQ0FBQztTQUNqQjthQUFNO1lBQ0gsS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7WUFFakIsUUFBUSxLQUFLLEVBQUU7Z0JBQ1gsS0FBSyxFQUFFO29CQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7b0JBQUMsTUFBTTtnQkFDMUIsS0FBSyxFQUFFO29CQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7b0JBQUMsTUFBTTtnQkFDMUIsS0FBSyxFQUFFO29CQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7b0JBQUMsTUFBTTtnQkFDMUIsS0FBSyxFQUFFO29CQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7b0JBQUMsTUFBTTtnQkFDMUIsS0FBSyxFQUFFO29CQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7b0JBQUMsTUFBTTtnQkFDMUIsT0FBTyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQzthQUMxQjtZQUNELEtBQUssSUFBSSxLQUFLLENBQUM7U0FDbEI7UUFDRCxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7S0FDZDtJQUNELE9BQU8sQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQy9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xyXG5pbXBvcnQgeyBQYXJhbUlucHV0TW9kZWwsIFJhbmdlSW5wdXRNb2RlbCwgRGVjb3JhdG9yUmV0dXJuTW9kZWwsIERhdGFUeXBlRW51bSB9IGZyb20gJy4vcmVmbGVjdC1pbnB1dC5tb2RlbHMnO1xyXG4vLyBpbXBvcnQgeyBpc1ZhbGlkIH0gZnJvbSAnaWJhbic7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gRm9ybUdlbmVyYXRvcihjb25zdHJ1Y3RvcjogRnVuY3Rpb24pIHtcclxuICAgIE9iamVjdC5jcmVhdGUoY29uc3RydWN0b3IpO1xyXG4gICAgT2JqZWN0LmNyZWF0ZShjb25zdHJ1Y3Rvci5wcm90b3R5cGUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gRGF0YVR5cGUocGFyYW06IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OkRhdGFUeXBlJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIENyZWRpdENhcmQocGFyYW06IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OkNyZWRpdENhcmQnLCBwYXJhbSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gQ29tcGFyZShwYXJhbTogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6Q29tcGFyZScsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBDb250YWlucyhwYXJhbTogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6Q29udGFpbnMnLCBwYXJhbSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gQ3VzdG9tKHBhcmFtOiBQYXJhbUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpDdXN0b20nLCBwYXJhbSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG4vLyBleHBvcnQgZnVuY3Rpb24gSUJBTihwYXJhbTogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbi8vICAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbi8vICAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6SUJBTicsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuLy8gICAgIH07XHJcbi8vIH1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBOYW1lKHBhcmFtOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpOYW1lJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFJlcXVpcmVkKHBhcmFtOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpSZXF1aXJlZCcsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBSZXF1aXJlZElmKHBhcmFtOiBQYXJhbUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpSZXF1aXJlZElmJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFJlYWRPbmx5KCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OlJlYWRPbmx5JywgbnVsbCwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gUGF0dGVybihwYXJhbTogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6UGF0dGVybicsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBNaW5WYWx1ZShpbnB1dDogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6TWluVmFsdWUnLCBpbnB1dCwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gTWF4VmFsdWUoaW5wdXQ6IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0Ok1heFZhbHVlJywgaW5wdXQsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE5vdENvbnRhaW5zKHBhcmFtOiBQYXJhbUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpOb3RDb250YWlucycsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBOb0Zvcm0oKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6Tm9Gb3JtJywgbnVsbCwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gU3RyaW5nTGVuZ3RoKGlucHV0OiBSYW5nZUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpTdHJpbmdMZW5ndGgnLCBpbnB1dCwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBFbWFpbChpbnB1dDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6RW1haWwnLCBpbnB1dCwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBQbGFjZWhvbGRlcihpbnB1dDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6UGxhY2Vob2xkZXInLCBpbnB1dCwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gUmFuZ2UoaW5wdXQ6IFJhbmdlSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OlJhbmdlJywgaW5wdXQsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpZ3VyYWJsZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSB7XHJcbiAgICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB2YWx1ZTtcclxuICAgIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQbGFjZWhvbGRlcihzdHJpbmcpXHJcbiAqIFZhbGlkYXRlOiBmdW5jdGlvblxyXG4gKiBDb21wYXJlOj8g4YOd4YOg4YOYIOGDleGDlOGDmuGDmOGDoSDhg6jhg5Thg5Phg5Dhg6Dhg5Thg5Hhg5BcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXREZWNvcmF0b3JzKHRhcmdldDogYW55LCBwcm9wZXJ0eU5hbWU6IHN0cmluZyB8IHN5bWJvbCk6IERlY29yYXRvclJldHVybk1vZGVsW10ge1xyXG4gICAgY29uc3Qga2V5czogYW55W10gPSBSZWZsZWN0LmdldE1ldGFkYXRhS2V5cyh0YXJnZXQsIHByb3BlcnR5TmFtZSk7XHJcblxyXG4gICAgY29uc3QgZGVjb3JhdG9ycyA9IGtleXMuZmlsdGVyKGtleSA9PiBrZXkudG9TdHJpbmcoKS5zdGFydHNXaXRoKCdjdXN0b20tcmVmbGVjdDonKSlcclxuICAgICAgICAucmVkdWNlKCh2YWx1ZXMsIGtleSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoa2V5LCB0YXJnZXQsIHByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZXMuY29uY2F0KHsga2V5OiBrZXkudG9TdHJpbmcoKS5yZXBsYWNlKCdjdXN0b20tcmVmbGVjdDonLCAnJyksIHZhbHVlIH0pO1xyXG4gICAgICAgIH0sIFtdKTtcclxuICAgIHJldHVybiBkZWNvcmF0b3JzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbmd4VmFsaWRhdGUoa2V5OiBzdHJpbmcsIHBhcmFtOiBzdHJpbmcgfCBQYXJhbUlucHV0TW9kZWwgfCBSYW5nZUlucHV0TW9kZWwsIHZhbHVlOiBhbnksIGRhdGFNb2RlbD86IGFueSk6IHN0cmluZyB7XHJcblxyXG4gICAgbGV0IHJldHN0cjogc3RyaW5nO1xyXG5cclxuICAgIGlmICgodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpICYmIGtleSAhPT0gJ1JlcXVpcmVkJyAmJiBrZXkgIT09ICdSZXF1aXJlZElmJyAmJiBrZXkgIT09ICdDb21wYXJlJyAgJiYga2V5ICE9PSAnUmFuZ2UnKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBsZXQgZXJyb3JTdHJpbmcgPSAnJztcclxuICAgIGlmICh0eXBlb2YgcGFyYW0gPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgZXJyb3JTdHJpbmcgPSBwYXJhbTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZXJyb3JTdHJpbmcgPSBwYXJhbS5lcnJvcjtcclxuICAgIH1cclxuICAgIGlmICghZXJyb3JTdHJpbmcpIHtcclxuICAgICAgICBlcnJvclN0cmluZyA9ICdlcnJvciBub3QgYXNpZ25lZCEnO1xyXG4gICAgfVxyXG4gICAgc3dpdGNoIChrZXkpIHtcclxuICAgICAgICAvLyBjYXNlICdJQkFOJzoge1xyXG4gICAgICAgIC8vICAgICBpZiAoIWlzVmFsaWQodmFsdWUpKSB7XHJcbiAgICAgICAgLy8gICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvcjtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vICAgICBicmVhaztcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgY2FzZSAnQ3JlZGl0Q2FyZCc6IHtcclxuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bLSBdKy9nLCAnJyk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBWaXNhID0gL140WzAtOV17MTJ9KD86WzAtOV17M30pPyQvO1xyXG4gICAgICAgICAgICBjb25zdCBNYXN0ZXJDYXJkID0gL14oPzo1WzEtNV1bMC05XXsyfXwyMjJbMS05XXwyMlszLTldWzAtOV18MlszLTZdWzAtOV17Mn18MjdbMDFdWzAtOV18MjcyMClbMC05XXsxMn0kLztcclxuICAgICAgICAgICAgY29uc3QgQW1leCA9IC9eM1s0N11bMC05XXsxM30kLztcclxuICAgICAgICAgICAgY29uc3QgRGluZXJzQ2x1YiA9IC9eMyg/OjBbMC01XXxbNjhdWzAtOV0pWzAtOV17MTF9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IERpc2NvdmVyID0gL142KD86MDExfDVbMC05XXsyfSlbMC05XXsxMn0kLztcclxuICAgICAgICAgICAgY29uc3QgSkNCID0gL14oPzoyMTMxfDE4MDB8MzVcXGR7M30pXFxkezExfSQvO1xyXG4gICAgICAgICAgICBjb25zdCBCQ0dsb2JhbCA9IC9eKDY1NDF8NjU1NilbMC05XXsxMn0kLztcclxuICAgICAgICAgICAgY29uc3QgQ2FydGVCbGFuY2hlID0gL14zODlbMC05XXsxMX0kLztcclxuICAgICAgICAgICAgY29uc3QgSW5zdGFQYXltZW50ID0gL142M1s3LTldWzAtOV17MTN9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IEtvcmVhbkxvY2FsQ2FyZCA9IC9eOVswLTldezE1fSQvO1xyXG4gICAgICAgICAgICBjb25zdCBMYXNlciA9IC9eKDYzMDR8NjcwNnw2NzA5fDY3NzEpWzAtOV17MTIsMTV9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IE1hZXN0cm8gPSAvXig1MDE4fDUwMjB8NTAzOHw2MzA0fDY3NTl8Njc2MXw2NzYzKVswLTldezgsMTV9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IFNvbG8gPSAvXig2MzM0fDY3NjcpWzAtOV17MTJ9fCg2MzM0fDY3NjcpWzAtOV17MTR9fCg2MzM0fDY3NjcpWzAtOV17MTV9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IFN3aXRjaCA9IC9eKDQ5MDN8NDkwNXw0OTExfDQ5MzZ8NjMzM3w2NzU5KVswLTldezEyfXwoNDkwM3w0OTA1fDQ5MTF8NDkzNnw2MzMzfDY3NTkpWzAtOV17MTR9fCg0OTAzfDQ5MDV8NDkxMXw0OTM2fDYzMzN8Njc1OSlbMC05XXsxNX18NTY0MTgyWzAtOV17MTB9fDU2NDE4MlswLTldezEyfXw1NjQxODJbMC05XXsxM318NjMzMTEwWzAtOV17MTB9fDYzMzExMFswLTldezEyfXw2MzMxMTBbMC05XXsxM30kLztcclxuICAgICAgICAgICAgY29uc3QgVW5pb25QYXkgPSAvXig2MlswLTldezE0LDE3fSkkLztcclxuXHJcbiAgICAgICAgICAgIGlmICghY2hlY2tMdWhuKHZhbHVlKSB8fFxyXG4gICAgICAgICAgICAgICAgIShWaXNhLnRlc3QodmFsdWUpIHx8IE1hc3RlckNhcmQudGVzdCh2YWx1ZSkgfHwgQW1leC50ZXN0KHZhbHVlKSB8fCBEaW5lcnNDbHViLnRlc3QodmFsdWUpIHx8IERpc2NvdmVyLnRlc3QodmFsdWUpIHx8IEpDQi50ZXN0KHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgIHx8IEJDR2xvYmFsLnRlc3QodmFsdWUpIHx8IENhcnRlQmxhbmNoZS50ZXN0KHZhbHVlKSB8fCBJbnN0YVBheW1lbnQudGVzdCh2YWx1ZSkgfHwgS29yZWFuTG9jYWxDYXJkLnRlc3QodmFsdWUpIHx8IExhc2VyLnRlc3QodmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgICAgfHwgTWFlc3Ryby50ZXN0KHZhbHVlKSB8fCBTb2xvLnRlc3QodmFsdWUpIHx8IFN3aXRjaC50ZXN0KHZhbHVlKSB8fCBVbmlvblBheS50ZXN0KHZhbHVlKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICgocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5jdXN0b21WYWx1ZSAmJiAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5jdXN0b21WYWx1ZS50ZXN0KHZhbHVlKSkpKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5lcnJvcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnQ29tcGFyZSc6IHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBkYXRhTW9kZWxbKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZmllbGRdKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSBlcnJvclN0cmluZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnQ29udGFpbnMnOiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZS5pbmRleE9mKChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHJldHN0ciA9IGVycm9yU3RyaW5nO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdDdXN0b20nOiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLmN1c3RvbUZ1bmModmFsdWUsIGRhdGFNb2RlbCk7XHJcbiAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSBlcnJvclN0cmluZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnRGF0YVR5cGUnOiB7XHJcbiAgICAgICAgICAgIGlmICgocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSA9PT0gRGF0YVR5cGVFbnVtLk51bWJlcikge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVnID0gL15bKy1dP1xcZCsoXFwuXFxkKyk/JC87XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNOYU4ocGFyc2VGbG9hdCh2YWx1ZSkpIHx8ICFyZWcudGVzdCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXRzdHIgPSBlcnJvclN0cmluZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUgPT09IERhdGFUeXBlRW51bS5EYXRlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0c3RyID0gZXJyb3JTdHJpbmc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlID09PSBEYXRhVHlwZUVudW0uSGV4YWRlY2ltYWwpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSAvXihbMC05YS1mQS1GXSspJC9pO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFleHByZXNzaW9uLnRlc3QodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0c3RyID0gZXJyb3JTdHJpbmc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlID09PSBEYXRhVHlwZUVudW0uSW50KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZWcgPSAvXlsrXFwtXT9cXGQrJC87XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNOYU4ocGFyc2VGbG9hdCh2YWx1ZSkpXHJcbiAgICAgICAgICAgICAgICAgICAgfHwgIWlzTmFOKHBhcnNlRmxvYXQodmFsdWUpKSAmJiAocGFyc2VGbG9hdCh2YWx1ZSkgLSBwYXJzZUludCh2YWx1ZSwgMTApICE9PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgIHx8ICFyZWcudGVzdCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXRzdHIgPSBlcnJvclN0cmluZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUgPT09IERhdGFUeXBlRW51bS5BcnJheSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHN0ciA9IGVycm9yU3RyaW5nO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdOb3RDb250YWlucyc6IHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlLmluZGV4T2YoKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUpICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gZXJyb3JTdHJpbmc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ1JlcXVpcmVkJzoge1xyXG4gICAgICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSBlcnJvclN0cmluZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnUmVxdWlyZWRJZic6IHtcclxuICAgICAgICAgICAgaWYgKCEocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5maWVsZCB8fCAhKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignaW5jb3JyZWN0IHBhcmFtZXRlcnMgaW4gUmVxdWlyZWRJZiBhdHRyaWJ1dGUnKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICgoKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUgPT09IGRhdGFNb2RlbFsocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5maWVsZF0pICYmICF2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHN0ciA9IGVycm9yU3RyaW5nO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdQYXR0ZXJuJzoge1xyXG4gICAgICAgICAgICBjb25zdCBwYXQgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZTtcclxuICAgICAgICAgICAgaWYgKCFwYXQudGVzdCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHN0ciA9IGVycm9yU3RyaW5nO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdNaW5WYWx1ZSc6IHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlIDwgKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHN0ciA9IGVycm9yU3RyaW5nLnJlcGxhY2UoJ3swfScsIChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdNYXhWYWx1ZSc6IHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlID4gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHN0ciA9IGVycm9yU3RyaW5nLnJlcGxhY2UoJ3swfScsIChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdTdHJpbmdMZW5ndGgnOiB7XHJcbiAgICAgICAgICAgIGlmICghdmFsdWUgfHwgdmFsdWUubGVuZ3RoIDwgKHBhcmFtIGFzIFJhbmdlSW5wdXRNb2RlbCkubWluIHx8IHZhbHVlLmxlbmd0aCA+IChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLm1heCkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gZXJyb3JTdHJpbmcucmVwbGFjZSgnezB9JywgKHBhcmFtIGFzIFJhbmdlSW5wdXRNb2RlbCkubWluLnRvU3RyaW5nKCkpLnJlcGxhY2UoJ3sxfScsIChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLm1heC50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnUmFuZ2UnOiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSA8IChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLm1pbiB8fCB2YWx1ZSA+IChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLm1heCkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gZXJyb3JTdHJpbmcucmVwbGFjZSgnezB9JywgKHBhcmFtIGFzIFJhbmdlSW5wdXRNb2RlbCkubWluLnRvU3RyaW5nKCkpLnJlcGxhY2UoJ3sxfScsIChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLm1heC50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnRW1haWwnOiB7XHJcbiAgICAgICAgICAgIC8vIGNyZWRpdHMgaHR0cDovL2VtYWlscmVnZXguY29tL1xyXG4gICAgICAgICAgICBjb25zdCBlbXJlZyA9IC9eKChbXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVxcW1xcXVxcXFwuLDs6XFxzQFwiXSspKil8KFwiLitcIikpQCgoXFxbWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlxcLTAtOV0rXFwuKStbYS16QS1aXXsyLH0pKSQvO1xyXG4gICAgICAgICAgICBpZiAoIWVtcmVnLnRlc3QodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSBlcnJvclN0cmluZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgZGVmYXVsdDoge1xyXG4gICAgICAgICAgICByZXRzdHIgPSBudWxsO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJldHN0cjtcclxufVxyXG5cclxuZnVuY3Rpb24gY2hlY2tMdWhuKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIC8vIGNyZWRpdHMgaHR0cHM6Ly9naXRodWIuY29tL0phbWVzRWdnZXJzMS9ub2RlLWx1aG5cclxuICAgIGNvbnN0IHRyaW1tZWQgPSBTdHJpbmcodmFsdWUpLnJlcGxhY2UoL1tcXHNdL2csICcnKTtcclxuICAgIGNvbnN0IGxlbmd0aCA9IHRyaW1tZWQubGVuZ3RoO1xyXG4gICAgbGV0IG9kZCA9IGZhbHNlO1xyXG4gICAgbGV0IHRvdGFsID0gMDtcclxuICAgIGxldCBjYWxjO1xyXG4gICAgbGV0IGNhbGMyO1xyXG5cclxuICAgIGlmIChsZW5ndGggPT09IDApIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIS9eWzAtOV0rJC8udGVzdCh0cmltbWVkKSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gbGVuZ3RoOyBpID4gMDsgaS0tKSB7XHJcbiAgICAgICAgY2FsYyA9IHBhcnNlSW50KHRyaW1tZWQuY2hhckF0KGkgLSAxKSwgMTApO1xyXG4gICAgICAgIGlmICghb2RkKSB7XHJcbiAgICAgICAgICAgIHRvdGFsICs9IGNhbGM7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY2FsYzIgPSBjYWxjICogMjtcclxuXHJcbiAgICAgICAgICAgIHN3aXRjaCAoY2FsYzIpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMTA6IGNhbGMyID0gMTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDEyOiBjYWxjMiA9IDM7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAxNDogY2FsYzIgPSA1OyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgMTY6IGNhbGMyID0gNzsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDE4OiBjYWxjMiA9IDk7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogY2FsYzIgPSBjYWxjMjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0b3RhbCArPSBjYWxjMjtcclxuICAgICAgICB9XHJcbiAgICAgICAgb2RkID0gIW9kZDtcclxuICAgIH1cclxuICAgIHJldHVybiAodG90YWwgIT09IDAgJiYgKHRvdGFsICUgMTApID09PSAwKTtcclxufVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdG9yLWZ1bmN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC12YWxpZGF0b3IvIiwic291cmNlcyI6WyJjb3JlL3JlZmxlY3Rvci1mdW5jdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUEwRCxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7O0FBRzlHLE1BQU0sVUFBVSxhQUFhLENBQUMsV0FBcUI7SUFDL0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQixNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QyxDQUFDOzs7OztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBc0I7SUFDM0MsT0FBTyxVQUFVLE1BQWMsRUFBRSxXQUFtQjtRQUNoRCxPQUFPLENBQUMsY0FBYyxDQUFDLHlCQUF5QixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDbEYsQ0FBQyxDQUFDO0FBQ04sQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQXNCO0lBQzdDLE9BQU8sVUFBVSxNQUFjLEVBQUUsV0FBbUI7UUFDaEQsT0FBTyxDQUFDLGNBQWMsQ0FBQywyQkFBMkIsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3BGLENBQUMsQ0FBQztBQUNOLENBQUM7Ozs7O0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxLQUFzQjtJQUMxQyxPQUFPLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8sQ0FBQyxjQUFjLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNqRixDQUFDLENBQUM7QUFDTixDQUFDOzs7OztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBc0I7SUFDM0MsT0FBTyxV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QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAncmVmbGVjdC1tZXRhZGF0YSc7XHJcbmltcG9ydCB7IFBhcmFtSW5wdXRNb2RlbCwgUmFuZ2VJbnB1dE1vZGVsLCBEZWNvcmF0b3JSZXR1cm5Nb2RlbCwgRGF0YVR5cGVFbnVtIH0gZnJvbSAnLi9yZWZsZWN0LWlucHV0Lm1vZGVscyc7XHJcbi8vIGltcG9ydCB7IGlzVmFsaWQgfSBmcm9tICdpYmFuJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBGb3JtR2VuZXJhdG9yKGNvbnN0cnVjdG9yOiBGdW5jdGlvbikge1xyXG4gICAgT2JqZWN0LmNyZWF0ZShjb25zdHJ1Y3Rvcik7XHJcbiAgICBPYmplY3QuY3JlYXRlKGNvbnN0cnVjdG9yLnByb3RvdHlwZSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBEYXRhVHlwZShwYXJhbTogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6RGF0YVR5cGUnLCBwYXJhbSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gQ3JlZGl0Q2FyZChwYXJhbTogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6Q3JlZGl0Q2FyZCcsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBDb21wYXJlKHBhcmFtOiBQYXJhbUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpDb21wYXJlJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIENvbnRhaW5zKHBhcmFtOiBQYXJhbUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpDb250YWlucycsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBDdXN0b20ocGFyYW06IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OkN1c3RvbScsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbi8vIGV4cG9ydCBmdW5jdGlvbiBJQkFOKHBhcmFtOiBQYXJhbUlucHV0TW9kZWwpIHtcclxuLy8gICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuLy8gICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpJQkFOJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4vLyAgICAgfTtcclxuLy8gfVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE5hbWUocGFyYW06IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0Ok5hbWUnLCBwYXJhbSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gUmVxdWlyZWQocGFyYW06IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OlJlcXVpcmVkJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFJlcXVpcmVkSWYocGFyYW06IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OlJlcXVpcmVkSWYnLCBwYXJhbSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gUmVhZE9ubHkoKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6UmVhZE9ubHknLCBudWxsLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBQYXR0ZXJuKHBhcmFtOiBQYXJhbUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpQYXR0ZXJuJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE1pblZhbHVlKGlucHV0OiBQYXJhbUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpNaW5WYWx1ZScsIGlucHV0LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBNYXhWYWx1ZShpbnB1dDogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6TWF4VmFsdWUnLCBpbnB1dCwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gTm90Q29udGFpbnMocGFyYW06IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0Ok5vdENvbnRhaW5zJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE5vRm9ybSgpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpOb0Zvcm0nLCBudWxsLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBTdHJpbmdMZW5ndGgoaW5wdXQ6IFJhbmdlSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OlN0cmluZ0xlbmd0aCcsIGlucHV0LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIEVtYWlsKGlucHV0OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpFbWFpbCcsIGlucHV0LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIFBsYWNlaG9sZGVyKGlucHV0OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpQbGFjZWhvbGRlcicsIGlucHV0LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBSYW5nZShpbnB1dDogUmFuZ2VJbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6UmFuZ2UnLCBpbnB1dCwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29uZmlndXJhYmxlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcclxuICAgICAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHZhbHVlO1xyXG4gICAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFBsYWNlaG9sZGVyKHN0cmluZylcclxuICogVmFsaWRhdGU6IGZ1bmN0aW9uXHJcbiAqIENvbXBhcmU6PyDhg53hg6Dhg5gg4YOV4YOU4YOa4YOY4YOhIOGDqOGDlOGDk+GDkOGDoOGDlOGDkeGDkFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldERlY29yYXRvcnModGFyZ2V0OiBhbnksIHByb3BlcnR5TmFtZTogc3RyaW5nIHwgc3ltYm9sKTogRGVjb3JhdG9yUmV0dXJuTW9kZWxbXSB7XHJcbiAgICBjb25zdCBrZXlzOiBhbnlbXSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGFLZXlzKHRhcmdldCwgcHJvcGVydHlOYW1lKTtcclxuXHJcbiAgICBjb25zdCBkZWNvcmF0b3JzID0ga2V5cy5maWx0ZXIoa2V5ID0+IGtleS50b1N0cmluZygpLnN0YXJ0c1dpdGgoJ2N1c3RvbS1yZWZsZWN0OicpKVxyXG4gICAgICAgIC5yZWR1Y2UoKHZhbHVlcywga2V5KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gUmVmbGVjdC5nZXRNZXRhZGF0YShrZXksIHRhcmdldCwgcHJvcGVydHlOYW1lKTtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlcy5jb25jYXQoeyBrZXk6IGtleS50b1N0cmluZygpLnJlcGxhY2UoJ2N1c3RvbS1yZWZsZWN0OicsICcnKSwgdmFsdWUgfSk7XHJcbiAgICAgICAgfSwgW10pO1xyXG4gICAgcmV0dXJuIGRlY29yYXRvcnM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBuZ3hWYWxpZGF0ZShrZXk6IHN0cmluZywgcGFyYW06IHN0cmluZyB8IFBhcmFtSW5wdXRNb2RlbCB8IFJhbmdlSW5wdXRNb2RlbCwgdmFsdWU6IGFueSwgZGF0YU1vZGVsPzogYW55KTogc3RyaW5nIHtcclxuXHJcbiAgICBsZXQgcmV0c3RyOiBzdHJpbmc7XHJcblxyXG4gICAgaWYgKCh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykgJiYga2V5ICE9PSAnUmVxdWlyZWQnICYmIGtleSAhPT0gJ1JlcXVpcmVkSWYnICYmIGtleSAhPT0gJ0NvbXBhcmUnICYmIGtleSAhPT0gJ1JhbmdlJykge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgbGV0IGVycm9yU3RyaW5nID0gJyc7XHJcbiAgICBpZiAodHlwZW9mIHBhcmFtID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGVycm9yU3RyaW5nID0gcGFyYW07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGVycm9yU3RyaW5nID0gcGFyYW0uZXJyb3I7XHJcbiAgICB9XHJcbiAgICBpZiAoIWVycm9yU3RyaW5nKSB7XHJcbiAgICAgICAgZXJyb3JTdHJpbmcgPSAnZXJyb3Igbm90IGFzaWduZWQhJztcclxuICAgIH1cclxuICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgICAgLy8gY2FzZSAnSUJBTic6IHtcclxuICAgICAgICAvLyAgICAgaWYgKCFpc1ZhbGlkKHZhbHVlKSkge1xyXG4gICAgICAgIC8vICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZXJyb3I7XHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyAgICAgYnJlYWs7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIGNhc2UgJ0NyZWRpdENhcmQnOiB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvWy0gXSsvZywgJycpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgVmlzYSA9IC9eNFswLTldezEyfSg/OlswLTldezN9KT8kLztcclxuICAgICAgICAgICAgY29uc3QgTWFzdGVyQ2FyZCA9IC9eKD86NVsxLTVdWzAtOV17Mn18MjIyWzEtOV18MjJbMy05XVswLTldfDJbMy02XVswLTldezJ9fDI3WzAxXVswLTldfDI3MjApWzAtOV17MTJ9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IEFtZXggPSAvXjNbNDddWzAtOV17MTN9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IERpbmVyc0NsdWIgPSAvXjMoPzowWzAtNV18WzY4XVswLTldKVswLTldezExfSQvO1xyXG4gICAgICAgICAgICBjb25zdCBEaXNjb3ZlciA9IC9eNig/OjAxMXw1WzAtOV17Mn0pWzAtOV17MTJ9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IEpDQiA9IC9eKD86MjEzMXwxODAwfDM1XFxkezN9KVxcZHsxMX0kLztcclxuICAgICAgICAgICAgY29uc3QgQkNHbG9iYWwgPSAvXig2NTQxfDY1NTYpWzAtOV17MTJ9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IENhcnRlQmxhbmNoZSA9IC9eMzg5WzAtOV17MTF9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IEluc3RhUGF5bWVudCA9IC9eNjNbNy05XVswLTldezEzfSQvO1xyXG4gICAgICAgICAgICBjb25zdCBLb3JlYW5Mb2NhbENhcmQgPSAvXjlbMC05XXsxNX0kLztcclxuICAgICAgICAgICAgY29uc3QgTGFzZXIgPSAvXig2MzA0fDY3MDZ8NjcwOXw2NzcxKVswLTldezEyLDE1fSQvO1xyXG4gICAgICAgICAgICBjb25zdCBNYWVzdHJvID0gL14oNTAxOHw1MDIwfDUwMzh8NjMwNHw2NzU5fDY3NjF8Njc2MylbMC05XXs4LDE1fSQvO1xyXG4gICAgICAgICAgICBjb25zdCBTb2xvID0gL14oNjMzNHw2NzY3KVswLTldezEyfXwoNjMzNHw2NzY3KVswLTldezE0fXwoNjMzNHw2NzY3KVswLTldezE1fSQvO1xyXG4gICAgICAgICAgICBjb25zdCBTd2l0Y2ggPSAvXig0OTAzfDQ5MDV8NDkxMXw0OTM2fDYzMzN8Njc1OSlbMC05XXsxMn18KDQ5MDN8NDkwNXw0OTExfDQ5MzZ8NjMzM3w2NzU5KVswLTldezE0fXwoNDkwM3w0OTA1fDQ5MTF8NDkzNnw2MzMzfDY3NTkpWzAtOV17MTV9fDU2NDE4MlswLTldezEwfXw1NjQxODJbMC05XXsxMn18NTY0MTgyWzAtOV17MTN9fDYzMzExMFswLTldezEwfXw2MzMxMTBbMC05XXsxMn18NjMzMTEwWzAtOV17MTN9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IFVuaW9uUGF5ID0gL14oNjJbMC05XXsxNCwxN30pJC87XHJcblxyXG4gICAgICAgICAgICBpZiAoIWNoZWNrTHVobih2YWx1ZSkgfHxcclxuICAgICAgICAgICAgICAgICEoVmlzYS50ZXN0KHZhbHVlKSB8fCBNYXN0ZXJDYXJkLnRlc3QodmFsdWUpIHx8IEFtZXgudGVzdCh2YWx1ZSkgfHwgRGluZXJzQ2x1Yi50ZXN0KHZhbHVlKSB8fCBEaXNjb3Zlci50ZXN0KHZhbHVlKSB8fCBKQ0IudGVzdCh2YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICB8fCBCQ0dsb2JhbC50ZXN0KHZhbHVlKSB8fCBDYXJ0ZUJsYW5jaGUudGVzdCh2YWx1ZSkgfHwgSW5zdGFQYXltZW50LnRlc3QodmFsdWUpIHx8IEtvcmVhbkxvY2FsQ2FyZC50ZXN0KHZhbHVlKSB8fCBMYXNlci50ZXN0KHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgIHx8IE1hZXN0cm8udGVzdCh2YWx1ZSkgfHwgU29sby50ZXN0KHZhbHVlKSB8fCBTd2l0Y2gudGVzdCh2YWx1ZSkgfHwgVW5pb25QYXkudGVzdCh2YWx1ZSkgfHxcclxuICAgICAgICAgICAgICAgICAgICAoKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuY3VzdG9tVmFsdWUgJiYgKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuY3VzdG9tVmFsdWUudGVzdCh2YWx1ZSkpKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZXJyb3I7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ0NvbXBhcmUnOiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gZGF0YU1vZGVsWyhwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLmZpZWxkXSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gZXJyb3JTdHJpbmc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ0NvbnRhaW5zJzoge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUuaW5kZXhPZigocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSBlcnJvclN0cmluZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnQ3VzdG9tJzoge1xyXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5jdXN0b21GdW5jKHZhbHVlLCBkYXRhTW9kZWwpO1xyXG4gICAgICAgICAgICBpZiAoIXJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gZXJyb3JTdHJpbmc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ0RhdGFUeXBlJzoge1xyXG4gICAgICAgICAgICBpZiAoKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUgPT09IERhdGFUeXBlRW51bS5OdW1iZXIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlZyA9IC9eWystXT9cXGQrKFxcLlxcZCspPyQvO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzTmFOKHBhcnNlRmxvYXQodmFsdWUpKSB8fCAhcmVnLnRlc3QodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0c3RyID0gZXJyb3JTdHJpbmc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlID09PSBEYXRhVHlwZUVudW0uRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHN0ciA9IGVycm9yU3RyaW5nO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSA9PT0gRGF0YVR5cGVFbnVtLkhleGFkZWNpbWFsKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gL14oWzAtOWEtZkEtRl0rKSQvaTtcclxuICAgICAgICAgICAgICAgIGlmICghZXhwcmVzc2lvbi50ZXN0KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHN0ciA9IGVycm9yU3RyaW5nO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSA9PT0gRGF0YVR5cGVFbnVtLkludCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVnID0gL15bK1xcLV0/XFxkKyQvO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzTmFOKHBhcnNlRmxvYXQodmFsdWUpKVxyXG4gICAgICAgICAgICAgICAgICAgIHx8ICFpc05hTihwYXJzZUZsb2F0KHZhbHVlKSkgJiYgKHBhcnNlRmxvYXQodmFsdWUpIC0gcGFyc2VJbnQodmFsdWUsIDEwKSAhPT0gMClcclxuICAgICAgICAgICAgICAgICAgICB8fCAhcmVnLnRlc3QodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0c3RyID0gZXJyb3JTdHJpbmc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlID09PSBEYXRhVHlwZUVudW0uQXJyYXkpIHtcclxuICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXRzdHIgPSBlcnJvclN0cmluZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnTm90Q29udGFpbnMnOiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZS5pbmRleE9mKChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHJldHN0ciA9IGVycm9yU3RyaW5nO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdSZXF1aXJlZCc6IHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSBlcnJvclN0cmluZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnUmVxdWlyZWRJZic6IHtcclxuICAgICAgICAgICAgaWYgKCEocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5maWVsZCB8fCAhKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignaW5jb3JyZWN0IHBhcmFtZXRlcnMgaW4gUmVxdWlyZWRJZiBhdHRyaWJ1dGUnKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICgoKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUgPT09IGRhdGFNb2RlbFsocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5maWVsZF0pICYmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXRzdHIgPSBlcnJvclN0cmluZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnUGF0dGVybic6IHtcclxuICAgICAgICAgICAgY29uc3QgcGF0ID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWU7XHJcbiAgICAgICAgICAgIGlmICghcGF0LnRlc3QodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSBlcnJvclN0cmluZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnTWluVmFsdWUnOiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSA8IChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSBlcnJvclN0cmluZy5yZXBsYWNlKCd7MH0nLCAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZS50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnTWF4VmFsdWUnOiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSA+IChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSBlcnJvclN0cmluZy5yZXBsYWNlKCd7MH0nLCAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZS50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnU3RyaW5nTGVuZ3RoJzoge1xyXG4gICAgICAgICAgICBpZiAoIXZhbHVlIHx8IHZhbHVlLmxlbmd0aCA8IChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLm1pbiB8fCB2YWx1ZS5sZW5ndGggPiAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5tYXgpIHtcclxuICAgICAgICAgICAgICAgIHJldHN0ciA9IGVycm9yU3RyaW5nLnJlcGxhY2UoJ3swfScsIChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLm1pbi50b1N0cmluZygpKS5yZXBsYWNlKCd7MX0nLCAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5tYXgudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ1JhbmdlJzoge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUgPCAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5taW4gfHwgdmFsdWUgPiAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5tYXgpIHtcclxuICAgICAgICAgICAgICAgIHJldHN0ciA9IGVycm9yU3RyaW5nLnJlcGxhY2UoJ3swfScsIChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLm1pbi50b1N0cmluZygpKS5yZXBsYWNlKCd7MX0nLCAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5tYXgudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ0VtYWlsJzoge1xyXG4gICAgICAgICAgICAvLyBjcmVkaXRzIGh0dHA6Ly9lbWFpbHJlZ2V4LmNvbS9cclxuICAgICAgICAgICAgY29uc3QgZW1yZWcgPSAvXigoW148PigpXFxbXFxdXFxcXC4sOzpcXHNAXCJdKyhcXC5bXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKFxcW1swLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31dKXwoKFthLXpBLVpcXC0wLTldK1xcLikrW2EtekEtWl17Mix9KSkkLztcclxuICAgICAgICAgICAgaWYgKCFlbXJlZy50ZXN0KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gZXJyb3JTdHJpbmc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICAgICAgcmV0c3RyID0gbnVsbDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXRzdHI7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNoZWNrTHVobih2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAvLyBjcmVkaXRzIGh0dHBzOi8vZ2l0aHViLmNvbS9KYW1lc0VnZ2VyczEvbm9kZS1sdWhuXHJcbiAgICBjb25zdCB0cmltbWVkID0gU3RyaW5nKHZhbHVlKS5yZXBsYWNlKC9bXFxzXS9nLCAnJyk7XHJcbiAgICBjb25zdCBsZW5ndGggPSB0cmltbWVkLmxlbmd0aDtcclxuICAgIGxldCBvZGQgPSBmYWxzZTtcclxuICAgIGxldCB0b3RhbCA9IDA7XHJcbiAgICBsZXQgY2FsYztcclxuICAgIGxldCBjYWxjMjtcclxuXHJcbiAgICBpZiAobGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCEvXlswLTldKyQvLnRlc3QodHJpbW1lZCkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IGxlbmd0aDsgaSA+IDA7IGktLSkge1xyXG4gICAgICAgIGNhbGMgPSBwYXJzZUludCh0cmltbWVkLmNoYXJBdChpIC0gMSksIDEwKTtcclxuICAgICAgICBpZiAoIW9kZCkge1xyXG4gICAgICAgICAgICB0b3RhbCArPSBjYWxjO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNhbGMyID0gY2FsYyAqIDI7XHJcblxyXG4gICAgICAgICAgICBzd2l0Y2ggKGNhbGMyKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDEwOiBjYWxjMiA9IDE7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAxMjogY2FsYzIgPSAzOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgMTQ6IGNhbGMyID0gNTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDE2OiBjYWxjMiA9IDc7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAxODogY2FsYzIgPSA5OyBicmVhaztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGNhbGMyID0gY2FsYzI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdG90YWwgKz0gY2FsYzI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG9kZCA9ICFvZGQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKHRvdGFsICE9PSAwICYmICh0b3RhbCAlIDEwKSA9PT0gMCk7XHJcbn1cclxuIl19

@@ -345,3 +345,3 @@ /**

case 'Required': {
if (!value) {
if (value === null || value === undefined || value === '') {
retstr = errorString;

@@ -356,3 +356,3 @@ }

else {
if ((((/** @type {?} */ (param))).value === dataModel[((/** @type {?} */ (param))).field]) && !value) {
if ((((/** @type {?} */ (param))).value === dataModel[((/** @type {?} */ (param))).field]) && (value === null || value === undefined || value === '')) {
retstr = errorString;

@@ -466,2 +466,2 @@ }

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdG9yLWZ1bmN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC12YWxpZGF0b3IvIiwic291cmNlcyI6WyJjb3JlL3JlZmxlY3Rvci1mdW5jdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUEwRCxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7O0FBRzlHLE1BQU0sVUFBVSxhQUFhLENBQUMsV0FBcUI7SUFDL0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQixNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QyxDQUFDOzs7OztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBc0I7SUFDM0MsT0FBTyxVQUFVLE1BQWMsRUFBRSxXQUFtQjtRQUNoRCxPQUFPLENBQUMsY0FBYyxDQUFDLHlCQUF5QixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDbEYsQ0FBQyxDQUFDO0FBQ04sQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQXNCO0lBQzdDLE9BQU8sVUFBVSxNQUFjLEVBQUUsV0FBbUI7UUFDaEQsT0FBTyxDQUFDLGNBQWMsQ0FBQywyQkFBMkIsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3BGLENBQUMsQ0FBQztBQUNOLENBQUM7Ozs7O0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxLQUFzQjtJQUMxQyxPQUFPLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8sQ0FBQyxjQUFjLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNqRixDQUFDLENBQUM7QUFDTixDQUFDOzs7OztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBc0I7SUFDM0MsT0FBTyxV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QVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDM0IsT0FBTyxLQUFLLENBQUM7S0FDaEI7SUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQzdCLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNOLEtBQUssSUFBSSxJQUFJLENBQUM7U0FDakI7YUFBTTtZQUNILEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBRWpCLFFBQVEsS0FBSyxFQUFFO2dCQUNYLEtBQUssRUFBRTtvQkFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDO29CQUFDLE1BQU07Z0JBQzFCLEtBQUssRUFBRTtvQkFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDO29CQUFDLE1BQU07Z0JBQzFCLEtBQUssRUFBRTtvQkFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDO29CQUFDLE1BQU07Z0JBQzFCLEtBQUssRUFBRTtvQkFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDO29CQUFDLE1BQU07Z0JBQzFCLEtBQUssRUFBRTtvQkFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDO29CQUFDLE1BQU07Z0JBQzFCLE9BQU8sQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7YUFDMUI7WUFDRCxLQUFLLElBQUksS0FBSyxDQUFDO1NBQ2xCO1FBQ0QsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcclxuaW1wb3J0IHsgUGFyYW1JbnB1dE1vZGVsLCBSYW5nZUlucHV0TW9kZWwsIERlY29yYXRvclJldHVybk1vZGVsLCBEYXRhVHlwZUVudW0gfSBmcm9tICcuL3JlZmxlY3QtaW5wdXQubW9kZWxzJztcclxuLy8gaW1wb3J0IHsgaXNWYWxpZCB9IGZyb20gJ2liYW4nO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1HZW5lcmF0b3IoY29uc3RydWN0b3I6IEZ1bmN0aW9uKSB7XHJcbiAgICBPYmplY3QuY3JlYXRlKGNvbnN0cnVjdG9yKTtcclxuICAgIE9iamVjdC5jcmVhdGUoY29uc3RydWN0b3IucHJvdG90eXBlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIERhdGFUeXBlKHBhcmFtOiBQYXJhbUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpEYXRhVHlwZScsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBDcmVkaXRDYXJkKHBhcmFtOiBQYXJhbUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpDcmVkaXRDYXJkJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIENvbXBhcmUocGFyYW06IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OkNvbXBhcmUnLCBwYXJhbSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gQ29udGFpbnMocGFyYW06IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OkNvbnRhaW5zJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEN1c3RvbShwYXJhbTogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6Q3VzdG9tJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuLy8gZXhwb3J0IGZ1bmN0aW9uIElCQU4ocGFyYW06IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4vLyAgICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4vLyAgICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OklCQU4nLCBwYXJhbSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbi8vICAgICB9O1xyXG4vLyB9XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gTmFtZShwYXJhbTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6TmFtZScsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBSZXF1aXJlZChwYXJhbTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6UmVxdWlyZWQnLCBwYXJhbSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gUmVxdWlyZWRJZihwYXJhbTogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6UmVxdWlyZWRJZicsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBSZWFkT25seSgpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpSZWFkT25seScsIG51bGwsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFBhdHRlcm4ocGFyYW06IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OlBhdHRlcm4nLCBwYXJhbSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gTWluVmFsdWUoaW5wdXQ6IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0Ok1pblZhbHVlJywgaW5wdXQsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE1heFZhbHVlKGlucHV0OiBQYXJhbUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpNYXhWYWx1ZScsIGlucHV0LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBOb3RDb250YWlucyhwYXJhbTogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6Tm90Q29udGFpbnMnLCBwYXJhbSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gTm9Gb3JtKCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0Ok5vRm9ybScsIG51bGwsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFN0cmluZ0xlbmd0aChpbnB1dDogUmFuZ2VJbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6U3RyaW5nTGVuZ3RoJywgaW5wdXQsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gRW1haWwoaW5wdXQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OkVtYWlsJywgaW5wdXQsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gUGxhY2Vob2xkZXIoaW5wdXQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OlBsYWNlaG9sZGVyJywgaW5wdXQsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFJhbmdlKGlucHV0OiBSYW5nZUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpSYW5nZScsIGlucHV0LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjb25maWd1cmFibGUodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikge1xyXG4gICAgICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdmFsdWU7XHJcbiAgICB9O1xyXG59XHJcblxyXG4vKipcclxuICogUGxhY2Vob2xkZXIoc3RyaW5nKVxyXG4gKiBWYWxpZGF0ZTogZnVuY3Rpb25cclxuICogQ29tcGFyZTo/IOGDneGDoOGDmCDhg5Xhg5Thg5rhg5jhg6Eg4YOo4YOU4YOT4YOQ4YOg4YOU4YOR4YOQXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVjb3JhdG9ycyh0YXJnZXQ6IGFueSwgcHJvcGVydHlOYW1lOiBzdHJpbmcgfCBzeW1ib2wpOiBEZWNvcmF0b3JSZXR1cm5Nb2RlbFtdIHtcclxuICAgIGNvbnN0IGtleXM6IGFueVtdID0gUmVmbGVjdC5nZXRNZXRhZGF0YUtleXModGFyZ2V0LCBwcm9wZXJ0eU5hbWUpO1xyXG5cclxuICAgIGNvbnN0IGRlY29yYXRvcnMgPSBrZXlzLmZpbHRlcihrZXkgPT4ga2V5LnRvU3RyaW5nKCkuc3RhcnRzV2l0aCgnY3VzdG9tLXJlZmxlY3Q6JykpXHJcbiAgICAgICAgLnJlZHVjZSgodmFsdWVzLCBrZXkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBSZWZsZWN0LmdldE1ldGFkYXRhKGtleSwgdGFyZ2V0LCBwcm9wZXJ0eU5hbWUpO1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWVzLmNvbmNhdCh7IGtleToga2V5LnRvU3RyaW5nKCkucmVwbGFjZSgnY3VzdG9tLXJlZmxlY3Q6JywgJycpLCB2YWx1ZSB9KTtcclxuICAgICAgICB9LCBbXSk7XHJcbiAgICByZXR1cm4gZGVjb3JhdG9ycztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG5neFZhbGlkYXRlKGtleTogc3RyaW5nLCBwYXJhbTogc3RyaW5nIHwgUGFyYW1JbnB1dE1vZGVsIHwgUmFuZ2VJbnB1dE1vZGVsLCB2YWx1ZTogYW55LCBkYXRhTW9kZWw/OiBhbnkpOiBzdHJpbmcge1xyXG5cclxuICAgIGxldCByZXRzdHI6IHN0cmluZztcclxuXHJcbiAgICBpZiAoKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSAmJiBrZXkgIT09ICdSZXF1aXJlZCcgJiYga2V5ICE9PSAnUmVxdWlyZWRJZicgJiYga2V5ICE9PSAnQ29tcGFyZScgICYmIGtleSAhPT0gJ1JhbmdlJykge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgbGV0IGVycm9yU3RyaW5nID0gJyc7XHJcbiAgICBpZiAodHlwZW9mIHBhcmFtID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGVycm9yU3RyaW5nID0gcGFyYW07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGVycm9yU3RyaW5nID0gcGFyYW0uZXJyb3I7XHJcbiAgICB9XHJcbiAgICBpZiAoIWVycm9yU3RyaW5nKSB7XHJcbiAgICAgICAgZXJyb3JTdHJpbmcgPSAnZXJyb3Igbm90IGFzaWduZWQhJztcclxuICAgIH1cclxuICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgICAgLy8gY2FzZSAnSUJBTic6IHtcclxuICAgICAgICAvLyAgICAgaWYgKCFpc1ZhbGlkKHZhbHVlKSkge1xyXG4gICAgICAgIC8vICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZXJyb3I7XHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyAgICAgYnJlYWs7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIGNhc2UgJ0NyZWRpdENhcmQnOiB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvWy0gXSsvZywgJycpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgVmlzYSA9IC9eNFswLTldezEyfSg/OlswLTldezN9KT8kLztcclxuICAgICAgICAgICAgY29uc3QgTWFzdGVyQ2FyZCA9IC9eKD86NVsxLTVdWzAtOV17Mn18MjIyWzEtOV18MjJbMy05XVswLTldfDJbMy02XVswLTldezJ9fDI3WzAxXVswLTldfDI3MjApWzAtOV17MTJ9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IEFtZXggPSAvXjNbNDddWzAtOV17MTN9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IERpbmVyc0NsdWIgPSAvXjMoPzowWzAtNV18WzY4XVswLTldKVswLTldezExfSQvO1xyXG4gICAgICAgICAgICBjb25zdCBEaXNjb3ZlciA9IC9eNig/OjAxMXw1WzAtOV17Mn0pWzAtOV17MTJ9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IEpDQiA9IC9eKD86MjEzMXwxODAwfDM1XFxkezN9KVxcZHsxMX0kLztcclxuICAgICAgICAgICAgY29uc3QgQkNHbG9iYWwgPSAvXig2NTQxfDY1NTYpWzAtOV17MTJ9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IENhcnRlQmxhbmNoZSA9IC9eMzg5WzAtOV17MTF9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IEluc3RhUGF5bWVudCA9IC9eNjNbNy05XVswLTldezEzfSQvO1xyXG4gICAgICAgICAgICBjb25zdCBLb3JlYW5Mb2NhbENhcmQgPSAvXjlbMC05XXsxNX0kLztcclxuICAgICAgICAgICAgY29uc3QgTGFzZXIgPSAvXig2MzA0fDY3MDZ8NjcwOXw2NzcxKVswLTldezEyLDE1fSQvO1xyXG4gICAgICAgICAgICBjb25zdCBNYWVzdHJvID0gL14oNTAxOHw1MDIwfDUwMzh8NjMwNHw2NzU5fDY3NjF8Njc2MylbMC05XXs4LDE1fSQvO1xyXG4gICAgICAgICAgICBjb25zdCBTb2xvID0gL14oNjMzNHw2NzY3KVswLTldezEyfXwoNjMzNHw2NzY3KVswLTldezE0fXwoNjMzNHw2NzY3KVswLTldezE1fSQvO1xyXG4gICAgICAgICAgICBjb25zdCBTd2l0Y2ggPSAvXig0OTAzfDQ5MDV8NDkxMXw0OTM2fDYzMzN8Njc1OSlbMC05XXsxMn18KDQ5MDN8NDkwNXw0OTExfDQ5MzZ8NjMzM3w2NzU5KVswLTldezE0fXwoNDkwM3w0OTA1fDQ5MTF8NDkzNnw2MzMzfDY3NTkpWzAtOV17MTV9fDU2NDE4MlswLTldezEwfXw1NjQxODJbMC05XXsxMn18NTY0MTgyWzAtOV17MTN9fDYzMzExMFswLTldezEwfXw2MzMxMTBbMC05XXsxMn18NjMzMTEwWzAtOV17MTN9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IFVuaW9uUGF5ID0gL14oNjJbMC05XXsxNCwxN30pJC87XHJcblxyXG4gICAgICAgICAgICBpZiAoIWNoZWNrTHVobih2YWx1ZSkgfHxcclxuICAgICAgICAgICAgICAgICEoVmlzYS50ZXN0KHZhbHVlKSB8fCBNYXN0ZXJDYXJkLnRlc3QodmFsdWUpIHx8IEFtZXgudGVzdCh2YWx1ZSkgfHwgRGluZXJzQ2x1Yi50ZXN0KHZhbHVlKSB8fCBEaXNjb3Zlci50ZXN0KHZhbHVlKSB8fCBKQ0IudGVzdCh2YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICB8fCBCQ0dsb2JhbC50ZXN0KHZhbHVlKSB8fCBDYXJ0ZUJsYW5jaGUudGVzdCh2YWx1ZSkgfHwgSW5zdGFQYXltZW50LnRlc3QodmFsdWUpIHx8IEtvcmVhbkxvY2FsQ2FyZC50ZXN0KHZhbHVlKSB8fCBMYXNlci50ZXN0KHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgIHx8IE1hZXN0cm8udGVzdCh2YWx1ZSkgfHwgU29sby50ZXN0KHZhbHVlKSB8fCBTd2l0Y2gudGVzdCh2YWx1ZSkgfHwgVW5pb25QYXkudGVzdCh2YWx1ZSkgfHxcclxuICAgICAgICAgICAgICAgICAgICAoKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuY3VzdG9tVmFsdWUgJiYgKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuY3VzdG9tVmFsdWUudGVzdCh2YWx1ZSkpKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZXJyb3I7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ0NvbXBhcmUnOiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gZGF0YU1vZGVsWyhwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLmZpZWxkXSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gZXJyb3JTdHJpbmc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ0NvbnRhaW5zJzoge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUuaW5kZXhPZigocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSBlcnJvclN0cmluZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnQ3VzdG9tJzoge1xyXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5jdXN0b21GdW5jKHZhbHVlLCBkYXRhTW9kZWwpO1xyXG4gICAgICAgICAgICBpZiAoIXJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gZXJyb3JTdHJpbmc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ0RhdGFUeXBlJzoge1xyXG4gICAgICAgICAgICBpZiAoKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUgPT09IERhdGFUeXBlRW51bS5OdW1iZXIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlZyA9IC9eWystXT9cXGQrKFxcLlxcZCspPyQvO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzTmFOKHBhcnNlRmxvYXQodmFsdWUpKSB8fCAhcmVnLnRlc3QodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0c3RyID0gZXJyb3JTdHJpbmc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlID09PSBEYXRhVHlwZUVudW0uRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHN0ciA9IGVycm9yU3RyaW5nO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSA9PT0gRGF0YVR5cGVFbnVtLkhleGFkZWNpbWFsKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gL14oWzAtOWEtZkEtRl0rKSQvaTtcclxuICAgICAgICAgICAgICAgIGlmICghZXhwcmVzc2lvbi50ZXN0KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHN0ciA9IGVycm9yU3RyaW5nO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSA9PT0gRGF0YVR5cGVFbnVtLkludCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVnID0gL15bK1xcLV0/XFxkKyQvO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzTmFOKHBhcnNlRmxvYXQodmFsdWUpKVxyXG4gICAgICAgICAgICAgICAgICAgIHx8ICFpc05hTihwYXJzZUZsb2F0KHZhbHVlKSkgJiYgKHBhcnNlRmxvYXQodmFsdWUpIC0gcGFyc2VJbnQodmFsdWUsIDEwKSAhPT0gMClcclxuICAgICAgICAgICAgICAgICAgICB8fCAhcmVnLnRlc3QodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0c3RyID0gZXJyb3JTdHJpbmc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlID09PSBEYXRhVHlwZUVudW0uQXJyYXkpIHtcclxuICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXRzdHIgPSBlcnJvclN0cmluZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnTm90Q29udGFpbnMnOiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZS5pbmRleE9mKChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHJldHN0ciA9IGVycm9yU3RyaW5nO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdSZXF1aXJlZCc6IHtcclxuICAgICAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gZXJyb3JTdHJpbmc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ1JlcXVpcmVkSWYnOiB7XHJcbiAgICAgICAgICAgIGlmICghKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZmllbGQgfHwgIShwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ2luY29ycmVjdCBwYXJhbWV0ZXJzIGluIFJlcXVpcmVkSWYgYXR0cmlidXRlJyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlID09PSBkYXRhTW9kZWxbKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZmllbGRdKSAmJiAhdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXRzdHIgPSBlcnJvclN0cmluZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnUGF0dGVybic6IHtcclxuICAgICAgICAgICAgY29uc3QgcGF0ID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWU7XHJcbiAgICAgICAgICAgIGlmICghcGF0LnRlc3QodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSBlcnJvclN0cmluZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnTWluVmFsdWUnOiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSA8IChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSBlcnJvclN0cmluZy5yZXBsYWNlKCd7MH0nLCAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZS50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnTWF4VmFsdWUnOiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSA+IChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSBlcnJvclN0cmluZy5yZXBsYWNlKCd7MH0nLCAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZS50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnU3RyaW5nTGVuZ3RoJzoge1xyXG4gICAgICAgICAgICBpZiAoIXZhbHVlIHx8IHZhbHVlLmxlbmd0aCA8IChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLm1pbiB8fCB2YWx1ZS5sZW5ndGggPiAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5tYXgpIHtcclxuICAgICAgICAgICAgICAgIHJldHN0ciA9IGVycm9yU3RyaW5nLnJlcGxhY2UoJ3swfScsIChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLm1pbi50b1N0cmluZygpKS5yZXBsYWNlKCd7MX0nLCAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5tYXgudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ1JhbmdlJzoge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUgPCAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5taW4gfHwgdmFsdWUgPiAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5tYXgpIHtcclxuICAgICAgICAgICAgICAgIHJldHN0ciA9IGVycm9yU3RyaW5nLnJlcGxhY2UoJ3swfScsIChwYXJhbSBhcyBSYW5nZUlucHV0TW9kZWwpLm1pbi50b1N0cmluZygpKS5yZXBsYWNlKCd7MX0nLCAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5tYXgudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ0VtYWlsJzoge1xyXG4gICAgICAgICAgICAvLyBjcmVkaXRzIGh0dHA6Ly9lbWFpbHJlZ2V4LmNvbS9cclxuICAgICAgICAgICAgY29uc3QgZW1yZWcgPSAvXigoW148PigpXFxbXFxdXFxcXC4sOzpcXHNAXCJdKyhcXC5bXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKFxcW1swLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31dKXwoKFthLXpBLVpcXC0wLTldK1xcLikrW2EtekEtWl17Mix9KSkkLztcclxuICAgICAgICAgICAgaWYgKCFlbXJlZy50ZXN0KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gZXJyb3JTdHJpbmc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICAgICAgcmV0c3RyID0gbnVsbDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXRzdHI7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNoZWNrTHVobih2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAvLyBjcmVkaXRzIGh0dHBzOi8vZ2l0aHViLmNvbS9KYW1lc0VnZ2VyczEvbm9kZS1sdWhuXHJcbiAgICBjb25zdCB0cmltbWVkID0gU3RyaW5nKHZhbHVlKS5yZXBsYWNlKC9bXFxzXS9nLCAnJyk7XHJcbiAgICBjb25zdCBsZW5ndGggPSB0cmltbWVkLmxlbmd0aDtcclxuICAgIGxldCBvZGQgPSBmYWxzZTtcclxuICAgIGxldCB0b3RhbCA9IDA7XHJcbiAgICBsZXQgY2FsYztcclxuICAgIGxldCBjYWxjMjtcclxuXHJcbiAgICBpZiAobGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCEvXlswLTldKyQvLnRlc3QodHJpbW1lZCkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IGxlbmd0aDsgaSA+IDA7IGktLSkge1xyXG4gICAgICAgIGNhbGMgPSBwYXJzZUludCh0cmltbWVkLmNoYXJBdChpIC0gMSksIDEwKTtcclxuICAgICAgICBpZiAoIW9kZCkge1xyXG4gICAgICAgICAgICB0b3RhbCArPSBjYWxjO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNhbGMyID0gY2FsYyAqIDI7XHJcblxyXG4gICAgICAgICAgICBzd2l0Y2ggKGNhbGMyKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDEwOiBjYWxjMiA9IDE7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAxMjogY2FsYzIgPSAzOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgMTQ6IGNhbGMyID0gNTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDE2OiBjYWxjMiA9IDc7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAxODogY2FsYzIgPSA5OyBicmVhaztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGNhbGMyID0gY2FsYzI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdG90YWwgKz0gY2FsYzI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG9kZCA9ICFvZGQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKHRvdGFsICE9PSAwICYmICh0b3RhbCAlIDEwKSA9PT0gMCk7XHJcbn1cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdG9yLWZ1bmN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC12YWxpZGF0b3IvIiwic291cmNlcyI6WyJjb3JlL3JlZmxlY3Rvci1mdW5jdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUEwRCxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7O0FBRzlHLE1BQU0sVUFBVSxhQUFhLENBQUMsV0FBcUI7SUFDL0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQixNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QyxDQUFDOzs7OztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBc0I7SUFDM0MsT0FBTyxVQUFVLE1BQWMsRUFBRSxXQUFtQjtRQUNoRCxPQUFPLENBQUMsY0FBYyxDQUFDLHlCQUF5QixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDbEYsQ0FBQyxDQUFDO0FBQ04sQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQXNCO0lBQzdDLE9BQU8sVUFBVSxNQUFjLEVBQUUsV0FBbUI7UUFDaEQsT0FBTyxDQUFDLGNBQWMsQ0FBQywyQkFBMkIsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3BGLENBQUMsQ0FBQztBQUNOLENBQUM7Ozs7O0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxLQUFzQjtJQUMxQyxPQUFPLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2hELE9BQU8sQ0FBQyxjQUFjLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNqRixDQUFDLENBQUM7QUFDTixDQUFDOzs7OztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBc0I7SUFDM0MsT0FBTyxV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Qy9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xyXG5pbXBvcnQgeyBQYXJhbUlucHV0TW9kZWwsIFJhbmdlSW5wdXRNb2RlbCwgRGVjb3JhdG9yUmV0dXJuTW9kZWwsIERhdGFUeXBlRW51bSB9IGZyb20gJy4vcmVmbGVjdC1pbnB1dC5tb2RlbHMnO1xyXG4vLyBpbXBvcnQgeyBpc1ZhbGlkIH0gZnJvbSAnaWJhbic7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gRm9ybUdlbmVyYXRvcihjb25zdHJ1Y3RvcjogRnVuY3Rpb24pIHtcclxuICAgIE9iamVjdC5jcmVhdGUoY29uc3RydWN0b3IpO1xyXG4gICAgT2JqZWN0LmNyZWF0ZShjb25zdHJ1Y3Rvci5wcm90b3R5cGUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gRGF0YVR5cGUocGFyYW06IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OkRhdGFUeXBlJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIENyZWRpdENhcmQocGFyYW06IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OkNyZWRpdENhcmQnLCBwYXJhbSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gQ29tcGFyZShwYXJhbTogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6Q29tcGFyZScsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBDb250YWlucyhwYXJhbTogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6Q29udGFpbnMnLCBwYXJhbSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gQ3VzdG9tKHBhcmFtOiBQYXJhbUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpDdXN0b20nLCBwYXJhbSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG4vLyBleHBvcnQgZnVuY3Rpb24gSUJBTihwYXJhbTogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbi8vICAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbi8vICAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6SUJBTicsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuLy8gICAgIH07XHJcbi8vIH1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBOYW1lKHBhcmFtOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpOYW1lJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFJlcXVpcmVkKHBhcmFtOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpSZXF1aXJlZCcsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBSZXF1aXJlZElmKHBhcmFtOiBQYXJhbUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpSZXF1aXJlZElmJywgcGFyYW0sIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFJlYWRPbmx5KCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OlJlYWRPbmx5JywgbnVsbCwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gUGF0dGVybihwYXJhbTogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6UGF0dGVybicsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBNaW5WYWx1ZShpbnB1dDogUGFyYW1JbnB1dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6TWluVmFsdWUnLCBpbnB1dCwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gTWF4VmFsdWUoaW5wdXQ6IFBhcmFtSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0Ok1heFZhbHVlJywgaW5wdXQsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE5vdENvbnRhaW5zKHBhcmFtOiBQYXJhbUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpOb3RDb250YWlucycsIHBhcmFtLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBOb0Zvcm0oKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6Tm9Gb3JtJywgbnVsbCwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gU3RyaW5nTGVuZ3RoKGlucHV0OiBSYW5nZUlucHV0TW9kZWwpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdjdXN0b20tcmVmbGVjdDpTdHJpbmdMZW5ndGgnLCBpbnB1dCwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBFbWFpbChpbnB1dDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6RW1haWwnLCBpbnB1dCwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBQbGFjZWhvbGRlcihpbnB1dDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnY3VzdG9tLXJlZmxlY3Q6UGxhY2Vob2xkZXInLCBpbnB1dCwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gUmFuZ2UoaW5wdXQ6IFJhbmdlSW5wdXRNb2RlbCkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbS1yZWZsZWN0OlJhbmdlJywgaW5wdXQsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpZ3VyYWJsZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSB7XHJcbiAgICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB2YWx1ZTtcclxuICAgIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQbGFjZWhvbGRlcihzdHJpbmcpXHJcbiAqIFZhbGlkYXRlOiBmdW5jdGlvblxyXG4gKiBDb21wYXJlOj8g4YOd4YOg4YOYIOGDleGDlOGDmuGDmOGDoSDhg6jhg5Thg5Phg5Dhg6Dhg5Thg5Hhg5BcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXREZWNvcmF0b3JzKHRhcmdldDogYW55LCBwcm9wZXJ0eU5hbWU6IHN0cmluZyB8IHN5bWJvbCk6IERlY29yYXRvclJldHVybk1vZGVsW10ge1xyXG4gICAgY29uc3Qga2V5czogYW55W10gPSBSZWZsZWN0LmdldE1ldGFkYXRhS2V5cyh0YXJnZXQsIHByb3BlcnR5TmFtZSk7XHJcblxyXG4gICAgY29uc3QgZGVjb3JhdG9ycyA9IGtleXMuZmlsdGVyKGtleSA9PiBrZXkudG9TdHJpbmcoKS5zdGFydHNXaXRoKCdjdXN0b20tcmVmbGVjdDonKSlcclxuICAgICAgICAucmVkdWNlKCh2YWx1ZXMsIGtleSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoa2V5LCB0YXJnZXQsIHByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZXMuY29uY2F0KHsga2V5OiBrZXkudG9TdHJpbmcoKS5yZXBsYWNlKCdjdXN0b20tcmVmbGVjdDonLCAnJyksIHZhbHVlIH0pO1xyXG4gICAgICAgIH0sIFtdKTtcclxuICAgIHJldHVybiBkZWNvcmF0b3JzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbmd4VmFsaWRhdGUoa2V5OiBzdHJpbmcsIHBhcmFtOiBzdHJpbmcgfCBQYXJhbUlucHV0TW9kZWwgfCBSYW5nZUlucHV0TW9kZWwsIHZhbHVlOiBhbnksIGRhdGFNb2RlbD86IGFueSk6IHN0cmluZyB7XHJcblxyXG4gICAgbGV0IHJldHN0cjogc3RyaW5nO1xyXG5cclxuICAgIGlmICgodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpICYmIGtleSAhPT0gJ1JlcXVpcmVkJyAmJiBrZXkgIT09ICdSZXF1aXJlZElmJyAmJiBrZXkgIT09ICdDb21wYXJlJyAmJiBrZXkgIT09ICdSYW5nZScpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGxldCBlcnJvclN0cmluZyA9ICcnO1xyXG4gICAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICBlcnJvclN0cmluZyA9IHBhcmFtO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBlcnJvclN0cmluZyA9IHBhcmFtLmVycm9yO1xyXG4gICAgfVxyXG4gICAgaWYgKCFlcnJvclN0cmluZykge1xyXG4gICAgICAgIGVycm9yU3RyaW5nID0gJ2Vycm9yIG5vdCBhc2lnbmVkISc7XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKGtleSkge1xyXG4gICAgICAgIC8vIGNhc2UgJ0lCQU4nOiB7XHJcbiAgICAgICAgLy8gICAgIGlmICghaXNWYWxpZCh2YWx1ZSkpIHtcclxuICAgICAgICAvLyAgICAgICAgIHJldHN0ciA9IChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLmVycm9yO1xyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gICAgIGJyZWFrO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICBjYXNlICdDcmVkaXRDYXJkJzoge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1stIF0rL2csICcnKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IFZpc2EgPSAvXjRbMC05XXsxMn0oPzpbMC05XXszfSk/JC87XHJcbiAgICAgICAgICAgIGNvbnN0IE1hc3RlckNhcmQgPSAvXig/OjVbMS01XVswLTldezJ9fDIyMlsxLTldfDIyWzMtOV1bMC05XXwyWzMtNl1bMC05XXsyfXwyN1swMV1bMC05XXwyNzIwKVswLTldezEyfSQvO1xyXG4gICAgICAgICAgICBjb25zdCBBbWV4ID0gL14zWzQ3XVswLTldezEzfSQvO1xyXG4gICAgICAgICAgICBjb25zdCBEaW5lcnNDbHViID0gL14zKD86MFswLTVdfFs2OF1bMC05XSlbMC05XXsxMX0kLztcclxuICAgICAgICAgICAgY29uc3QgRGlzY292ZXIgPSAvXjYoPzowMTF8NVswLTldezJ9KVswLTldezEyfSQvO1xyXG4gICAgICAgICAgICBjb25zdCBKQ0IgPSAvXig/OjIxMzF8MTgwMHwzNVxcZHszfSlcXGR7MTF9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IEJDR2xvYmFsID0gL14oNjU0MXw2NTU2KVswLTldezEyfSQvO1xyXG4gICAgICAgICAgICBjb25zdCBDYXJ0ZUJsYW5jaGUgPSAvXjM4OVswLTldezExfSQvO1xyXG4gICAgICAgICAgICBjb25zdCBJbnN0YVBheW1lbnQgPSAvXjYzWzctOV1bMC05XXsxM30kLztcclxuICAgICAgICAgICAgY29uc3QgS29yZWFuTG9jYWxDYXJkID0gL145WzAtOV17MTV9JC87XHJcbiAgICAgICAgICAgIGNvbnN0IExhc2VyID0gL14oNjMwNHw2NzA2fDY3MDl8Njc3MSlbMC05XXsxMiwxNX0kLztcclxuICAgICAgICAgICAgY29uc3QgTWFlc3RybyA9IC9eKDUwMTh8NTAyMHw1MDM4fDYzMDR8Njc1OXw2NzYxfDY3NjMpWzAtOV17OCwxNX0kLztcclxuICAgICAgICAgICAgY29uc3QgU29sbyA9IC9eKDYzMzR8Njc2NylbMC05XXsxMn18KDYzMzR8Njc2NylbMC05XXsxNH18KDYzMzR8Njc2NylbMC05XXsxNX0kLztcclxuICAgICAgICAgICAgY29uc3QgU3dpdGNoID0gL14oNDkwM3w0OTA1fDQ5MTF8NDkzNnw2MzMzfDY3NTkpWzAtOV17MTJ9fCg0OTAzfDQ5MDV8NDkxMXw0OTM2fDYzMzN8Njc1OSlbMC05XXsxNH18KDQ5MDN8NDkwNXw0OTExfDQ5MzZ8NjMzM3w2NzU5KVswLTldezE1fXw1NjQxODJbMC05XXsxMH18NTY0MTgyWzAtOV17MTJ9fDU2NDE4MlswLTldezEzfXw2MzMxMTBbMC05XXsxMH18NjMzMTEwWzAtOV17MTJ9fDYzMzExMFswLTldezEzfSQvO1xyXG4gICAgICAgICAgICBjb25zdCBVbmlvblBheSA9IC9eKDYyWzAtOV17MTQsMTd9KSQvO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFjaGVja0x1aG4odmFsdWUpIHx8XHJcbiAgICAgICAgICAgICAgICAhKFZpc2EudGVzdCh2YWx1ZSkgfHwgTWFzdGVyQ2FyZC50ZXN0KHZhbHVlKSB8fCBBbWV4LnRlc3QodmFsdWUpIHx8IERpbmVyc0NsdWIudGVzdCh2YWx1ZSkgfHwgRGlzY292ZXIudGVzdCh2YWx1ZSkgfHwgSkNCLnRlc3QodmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgICAgfHwgQkNHbG9iYWwudGVzdCh2YWx1ZSkgfHwgQ2FydGVCbGFuY2hlLnRlc3QodmFsdWUpIHx8IEluc3RhUGF5bWVudC50ZXN0KHZhbHVlKSB8fCBLb3JlYW5Mb2NhbENhcmQudGVzdCh2YWx1ZSkgfHwgTGFzZXIudGVzdCh2YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICB8fCBNYWVzdHJvLnRlc3QodmFsdWUpIHx8IFNvbG8udGVzdCh2YWx1ZSkgfHwgU3dpdGNoLnRlc3QodmFsdWUpIHx8IFVuaW9uUGF5LnRlc3QodmFsdWUpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLmN1c3RvbVZhbHVlICYmIChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLmN1c3RvbVZhbHVlLnRlc3QodmFsdWUpKSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHN0ciA9IChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLmVycm9yO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdDb21wYXJlJzoge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUgIT09IGRhdGFNb2RlbFsocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS5maWVsZF0pIHtcclxuICAgICAgICAgICAgICAgIHJldHN0ciA9IGVycm9yU3RyaW5nO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdDb250YWlucyc6IHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlLmluZGV4T2YoKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUpID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gZXJyb3JTdHJpbmc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ0N1c3RvbSc6IHtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuY3VzdG9tRnVuYyh2YWx1ZSwgZGF0YU1vZGVsKTtcclxuICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgIHJldHN0ciA9IGVycm9yU3RyaW5nO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdEYXRhVHlwZSc6IHtcclxuICAgICAgICAgICAgaWYgKChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlID09PSBEYXRhVHlwZUVudW0uTnVtYmVyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZWcgPSAvXlsrLV0/XFxkKyhcXC5cXGQrKT8kLztcclxuICAgICAgICAgICAgICAgIGlmIChpc05hTihwYXJzZUZsb2F0KHZhbHVlKSkgfHwgIXJlZy50ZXN0KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHN0ciA9IGVycm9yU3RyaW5nO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSA9PT0gRGF0YVR5cGVFbnVtLkRhdGUpIHtcclxuICAgICAgICAgICAgICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXRzdHIgPSBlcnJvclN0cmluZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUgPT09IERhdGFUeXBlRW51bS5IZXhhZGVjaW1hbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9IC9eKFswLTlhLWZBLUZdKykkL2k7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWV4cHJlc3Npb24udGVzdCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXRzdHIgPSBlcnJvclN0cmluZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUgPT09IERhdGFUeXBlRW51bS5JbnQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlZyA9IC9eWytcXC1dP1xcZCskLztcclxuICAgICAgICAgICAgICAgIGlmIChpc05hTihwYXJzZUZsb2F0KHZhbHVlKSlcclxuICAgICAgICAgICAgICAgICAgICB8fCAhaXNOYU4ocGFyc2VGbG9hdCh2YWx1ZSkpICYmIChwYXJzZUZsb2F0KHZhbHVlKSAtIHBhcnNlSW50KHZhbHVlLCAxMCkgIT09IDApXHJcbiAgICAgICAgICAgICAgICAgICAgfHwgIXJlZy50ZXN0KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHN0ciA9IGVycm9yU3RyaW5nO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSA9PT0gRGF0YVR5cGVFbnVtLkFycmF5KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0c3RyID0gZXJyb3JTdHJpbmc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ05vdENvbnRhaW5zJzoge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUuaW5kZXhPZigocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSkgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSBlcnJvclN0cmluZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnUmVxdWlyZWQnOiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gZXJyb3JTdHJpbmc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ1JlcXVpcmVkSWYnOiB7XHJcbiAgICAgICAgICAgIGlmICghKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZmllbGQgfHwgIShwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ2luY29ycmVjdCBwYXJhbWV0ZXJzIGluIFJlcXVpcmVkSWYgYXR0cmlidXRlJyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlID09PSBkYXRhTW9kZWxbKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkuZmllbGRdKSAmJiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0c3RyID0gZXJyb3JTdHJpbmc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ1BhdHRlcm4nOiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhdCA9IChwYXJhbSBhcyBQYXJhbUlucHV0TW9kZWwpLnZhbHVlO1xyXG4gICAgICAgICAgICBpZiAoIXBhdC50ZXN0KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gZXJyb3JTdHJpbmc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ01pblZhbHVlJzoge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUgPCAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gZXJyb3JTdHJpbmcucmVwbGFjZSgnezB9JywgKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ01heFZhbHVlJzoge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUgPiAocGFyYW0gYXMgUGFyYW1JbnB1dE1vZGVsKS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0c3RyID0gZXJyb3JTdHJpbmcucmVwbGFjZSgnezB9JywgKHBhcmFtIGFzIFBhcmFtSW5wdXRNb2RlbCkudmFsdWUudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ1N0cmluZ0xlbmd0aCc6IHtcclxuICAgICAgICAgICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZS5sZW5ndGggPCAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5taW4gfHwgdmFsdWUubGVuZ3RoID4gKHBhcmFtIGFzIFJhbmdlSW5wdXRNb2RlbCkubWF4KSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSBlcnJvclN0cmluZy5yZXBsYWNlKCd7MH0nLCAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5taW4udG9TdHJpbmcoKSkucmVwbGFjZSgnezF9JywgKHBhcmFtIGFzIFJhbmdlSW5wdXRNb2RlbCkubWF4LnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdSYW5nZSc6IHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlIDwgKHBhcmFtIGFzIFJhbmdlSW5wdXRNb2RlbCkubWluIHx8IHZhbHVlID4gKHBhcmFtIGFzIFJhbmdlSW5wdXRNb2RlbCkubWF4KSB7XHJcbiAgICAgICAgICAgICAgICByZXRzdHIgPSBlcnJvclN0cmluZy5yZXBsYWNlKCd7MH0nLCAocGFyYW0gYXMgUmFuZ2VJbnB1dE1vZGVsKS5taW4udG9TdHJpbmcoKSkucmVwbGFjZSgnezF9JywgKHBhcmFtIGFzIFJhbmdlSW5wdXRNb2RlbCkubWF4LnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdFbWFpbCc6IHtcclxuICAgICAgICAgICAgLy8gY3JlZGl0cyBodHRwOi8vZW1haWxyZWdleC5jb20vXHJcbiAgICAgICAgICAgIGNvbnN0IGVtcmVnID0gL14oKFtePD4oKVxcW1xcXVxcXFwuLDs6XFxzQFwiXSsoXFwuW148PigpXFxbXFxdXFxcXC4sOzpcXHNAXCJdKykqKXwoXCIuK1wiKSlAKChcXFtbMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XSl8KChbYS16QS1aXFwtMC05XStcXC4pK1thLXpBLVpdezIsfSkpJC87XHJcbiAgICAgICAgICAgIGlmICghZW1yZWcudGVzdCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHN0ciA9IGVycm9yU3RyaW5nO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkZWZhdWx0OiB7XHJcbiAgICAgICAgICAgIHJldHN0ciA9IG51bGw7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmV0c3RyO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjaGVja0x1aG4odmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgLy8gY3JlZGl0cyBodHRwczovL2dpdGh1Yi5jb20vSmFtZXNFZ2dlcnMxL25vZGUtbHVoblxyXG4gICAgY29uc3QgdHJpbW1lZCA9IFN0cmluZyh2YWx1ZSkucmVwbGFjZSgvW1xcc10vZywgJycpO1xyXG4gICAgY29uc3QgbGVuZ3RoID0gdHJpbW1lZC5sZW5ndGg7XHJcbiAgICBsZXQgb2RkID0gZmFsc2U7XHJcbiAgICBsZXQgdG90YWwgPSAwO1xyXG4gICAgbGV0IGNhbGM7XHJcbiAgICBsZXQgY2FsYzI7XHJcblxyXG4gICAgaWYgKGxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghL15bMC05XSskLy50ZXN0KHRyaW1tZWQpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSBsZW5ndGg7IGkgPiAwOyBpLS0pIHtcclxuICAgICAgICBjYWxjID0gcGFyc2VJbnQodHJpbW1lZC5jaGFyQXQoaSAtIDEpLCAxMCk7XHJcbiAgICAgICAgaWYgKCFvZGQpIHtcclxuICAgICAgICAgICAgdG90YWwgKz0gY2FsYztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjYWxjMiA9IGNhbGMgKiAyO1xyXG5cclxuICAgICAgICAgICAgc3dpdGNoIChjYWxjMikge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAxMDogY2FsYzIgPSAxOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgMTI6IGNhbGMyID0gMzsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDE0OiBjYWxjMiA9IDU7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAxNjogY2FsYzIgPSA3OyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgMTg6IGNhbGMyID0gOTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBjYWxjMiA9IGNhbGMyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRvdGFsICs9IGNhbGMyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvZGQgPSAhb2RkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICh0b3RhbCAhPT0gMCAmJiAodG90YWwgJSAxMCkgPT09IDApO1xyXG59XHJcbiJdfQ==
{
"license": "MIT",
"name": "ngx-validator",
"version": "1.2.2",
"version": "1.2.3",
"peerDependencies": {

@@ -6,0 +6,0 @@ "@angular/common": "^6.0.0-rc.0 || ^7.0.3",

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 too big to display

Sorry, the diff of this file is not supported yet

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

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc