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

@farris/bef

Package Overview
Dependencies
Maintainers
18
Versions
244
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@farris/bef - npm Package Compare versions

Comparing version 0.0.12-20210121193537-dev to 0.0.12-20210122114553-dev

2

bundles/farris-bef.umd.min.js

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

!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@ecp-caf/caf-common"),require("date-fns"),require("rxjs"),require("rxjs/operators"),require("rxjs/operators/map"),require("@angular/core"),require("@farris/devkit"),require("@angular/common/http")):"function"==typeof define&&define.amd?define("@farris/bef",["exports","@ecp-caf/caf-common","date-fns","rxjs","rxjs/operators","rxjs/operators/map","@angular/core","@farris/devkit","@angular/common/http"],e):e((t.farris=t.farris||{},t.farris.bef={}),t.cafCommon,t.dateFns,t.rxjs,t.rxjs.operators,t.rxjs["operators/map"],t.ng.core,t.devkit,t.ng.common.http)}(this,function(t,e,n,f,l,s,i,I,a){"use strict";var S=(r.Added="Added",r.Modify="Modify",r.Deleted="Deleted",r);function r(){}var p=new i.InjectionToken("@farris/be BE_SERVER_URL"),u=new i.InjectionToken("@farris/be BE_SESSION_HANDLING_STRATEGY_TOKEN"),b=(o.getPropInfo=function(t,e){var r,n,o,i=I.FieldMetadataUtil.getNgFields(t);Object.keys(i).forEach(function(t){t===e&&(r="NgField",n=null,o=i[t])});var a=I.FieldMetadataUtil.getNgObjects(t);Object.keys(a).forEach(function(t){t===e&&(r="NgObject",n=a[t].type,o=a[t])});var s=I.FieldMetadataUtil.getNgList(t);Object.keys(s).forEach(function(t){t===e&&(r="NgList",n=s[t].type,o=s[t])});var p=I.FieldMetadataUtil.getNgDynamic(t);return Object.keys(p).forEach(function(t){t===e&&(r="NgDynamic",n=p[t].type,o=p[t])}),{propType:r,propEntityType:n,propMetadata:o}},o.getPrimaryKey=function(t){var e=I.FieldMetadataUtil.getPrimaryFieldMetadata(t);return e?e.dataField:""},o.isObjectProp=function(t,e){var r=!1,n=I.FieldMetadataUtil.getNgObjects(t);return Object.keys(n).forEach(function(t){t===e&&(r=!0)}),r},o.isDynamicProp=function(t,e){var r=!1,n=I.FieldMetadataUtil.getNgDynamic(t);return Object.keys(n).forEach(function(t){t===e&&(r=!0)}),r},o.appendInitialData=function(t,e){var r=Object.assign({},e);delete r.id,delete r.parentID,t.initialData=r},o);function o(){}var c=(h.prototype.build=function(t){var e=this;return this.changeDetail={ChangeType:S.Modify,ChangeInfo:{DataId:""}},t.forEach(function(t){e.buildChangeDetail(t)}),this.changeDetail},h.prototype.buildChangeDetail=function(l){var f=l.path.concat();this.changeDetail.ChangeInfo.DataId||(this.changeDetail.ChangeInfo.DataId=f[0].split(":")[1]);for(var d=this.changeDetail,g=this.entityType,t=function(t){var e=v.getChangeInfo(d),r=f[t],n=b.getPropInfo(g,r),o=n.propType,i=n.propEntityType,a=n.propMetadata.dataField||r;if("NgField"===o){if(r===b.getPrimaryKey(g))return"continue";if(l.type!==I.ModifyType.ValueChange)throw Error("简单类型的属性上不支持ValueChange类型之外的变更");e[a]=l.value,d=null}else if("NgObject"===o)if(f[t+1].split(":")[1],f[t+1].split(":")[0]){var s=e[a],p=f.slice(0,t+1);s=(y=v.entityCollection.getEntityByPath(p))?y.toJSON():{},e[a]=s,g=d=null}else c=(c=e[a])||{ChangeType:S.Modify,ChangeInfo:{}},e[a]=c,d=c,g=i;else if("NgList"===o){d.ChangeInfo[a]||(d.ChangeInfo[a]=[]);var u=d.ChangeInfo[a];if(t!==f.length-1){var c,h=f[t+1].split(":")[1];return(c=u.find(function(t){return t.ChangeInfo.DataId===h}))||(c=v.createEmptyChangeDetail(S.Modify,h),u.push(c)),d=c,g=i,"continue"}l.type===I.ModifyType.Add||l.type===I.ModifyType.Insert||(l.type,I.ModifyType.Remove),g=d=null}else if("NgDynamic"===o){p=f.slice(0,t+1);var y=v.entityCollection.getEntityByPath(p);e[a]={ChangeType:S.Modify,ChangeInfo:y?y.toJSON():{}},g=d=null}},v=this,e=1;e<f.length&&d;e+=2)t(e)},h.prototype.getChangeInfo=function(t){return t.hasOwnProperty("ChangeInfo")?t.ChangeInfo:t},h.prototype.createEmptyChangeDetail=function(t,e){return{ChangeType:t,ChangeInfo:{DataId:e}}},h);function h(t,e){this.entityType=t,this.entityCollection=e}var y=(d.prototype.handle=function(t,e,r){this.handleChangeDetails(t,e,r)},d.prototype.handleChangeDetails=function(n,o,t){var i=this;t&&t.forEach(function(t){var e=t.ChangeInfo.dataId||t.ChangeInfo.DataId,r=i.getEntityById(o,e);r&&i.handleChangeDetail(n,r,t)})},d.prototype.handleChangeDetail=function(u,c,t){var h=this;if(t&&c&&t.ChangeType===S.Modify){var y=t.ChangeInfo;Object.keys(y).forEach(function(t){var e=b.getPropInfo(u,t),r=e.propType,n=e.propEntityType;if("NgField"===r)c[t]=y[t];else if("NgObject"===r){var o=c[t];if(o.primaryKey){var i=y[t];o.load(i)}else{var a=y[t];h.handleChangeDetail(n,o,a)}}else if("NgList"===r){var s=c[t],p=y[t];h.handleChangeDetails(n,s,p)}})}},d.prototype.getEntityById=function(t,e){return(t instanceof I.EntityCollection?t.getEntityById(e):t.get(e))||null},d);function d(){}var g=(v.prototype.getUserSessionId=function(){return this.sessionService.getUserSessionId()},v.prototype.getCurrentSessionId=function(t){var e;if(this.sessionService)if(t&&t.hasOwnProperty("tabId")){var r=t.tabId;e=this.sessionService.getCurrentSeesionId(r)}else e=this.sessionService.getCurrentSeesionId();return e=e||this.getUserSessionId()},v.decorators=[{type:i.Injectable}],v.ctorParameters=function(){return[{type:e.SessionService,decorators:[{type:i.Optional}]}]},v);function v(t){this.sessionService=t}var C=(m.prototype.getItem=function(t){return this.getAllBeSessions()[t]},m.prototype.setItem=function(t,e){var r=this.getAllBeSessions();r[t]=e,this.setAllBeSessions(r)},m.prototype.removeItem=function(t){var e=this.getAllBeSessions();e[t]&&delete e[t],this.setAllBeSessions(e)},m.prototype.clear=function(t,e){!0===this.isInFramework()?this.removeItemsByFrmSessionId(t):this.removeItem(e)},m.prototype.removeItemsByFrmSessionId=function(e){var r=this.getAllBeSessions();Object.keys(r).forEach(function(t){!0===t.startsWith(e)&&delete r[t]}),this.setAllBeSessions(r)},m.prototype.getAllBeSessions=function(){var t=window.sessionStorage.getItem(this.sessionStorageKey);return t?JSON.parse(t):{}},m.prototype.setAllBeSessions=function(t){var e=JSON.stringify(t);window.sessionStorage.setItem(this.sessionStorageKey,e)},m.prototype.isInFramework=function(){var t=window.location.hash;return!!t&&-1!==t.indexOf("tabId=")},m);function m(){this.sessionStorageKey="BE_SESSION_ID"}var E=function(t,e){return(E=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)};function x(t,e){function r(){this.constructor=t}E(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}var B=function(){return(B=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var o in e=arguments[r])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}).apply(this,arguments)};function P(t){var e="function"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function R(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,o,i=r.call(t),a=[];try{for(;(void 0===e||0<e--)&&!(n=i.next()).done;)a.push(n.value)}catch(s){o={error:s}}finally{try{n&&!n.done&&(r=i["return"])&&r.call(i)}finally{if(o)throw o.error}}return a}function D(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(R(arguments[e]));return t}var q=(O.convertToHeaders=function(e){if(1==(e=e||new a.HttpHeaders)instanceof a.HttpHeaders)return e;if(0<Object.keys(e).length){var r=new a.HttpHeaders;Object.keys(e).forEach(function(t){r=r.append(t,e[t])}),e=r}else e=new a.HttpHeaders;return e},O.appendSessionId=function(t,e){return t.append("SessionId",e)},O.appendCafRuntimeCommonVariable=function(t,e){return t.append("X-CAF-Runtime-CommonVariable",e)},O.appendCafRuntimeContext=function(t,e){return t.append("X-CAF-Runtime-Context",e)},O.appendContextType=function(t,e){return e=e||"application/json",t.append("Content-Type",e)},O.appendRequireMessage=function(t,e){return void 0===e&&(e=!0),t.append("Bff-Require-Message",e.toString())},O.appendFuncInstId=function(t,e){return t.append("Func-Inst-Id",e)},O.toJson=function(r){if(!(r instanceof a.HttpHeaders))return null;var n={};return r.keys().forEach(function(t){var e=r.getAll(t);1<e.length?n[t]=e:n[t]=e[0]||""}),n},O);function O(){}var w=(T.buildParams=function(t){var e=new a.HttpParams;for(var r in t)if(t.hasOwnProperty(r)){var n=t[r].toString();e=e.append(r,n)}return e},T);function T(){}var j=(U.hasRequestInfo=function(t){if(!t||!t.body)return!1;var e=t.body;return!(!e.requestInfo||!e.requestInfo.dataChange)||!!e.dataChange},U.hasRequestInfoWithR=function(t){if(!t||!t.body)return!1;var e=t.body;return!(!e.RequestInfo||!e.RequestInfo.dataChange)||!!e.dataChange},U.buildRequestInfo=function(t){return{dataChange:t.entityManager.buildAllEntityChangeDetails(),variableChange:t.variableManager.buildChangeDetail()}},U.buildBodyWithRequestInfo=function(t,e){if(t.RequestInfo||t.requestInfo)return t;var r=this.buildRequestInfo(e);return Object.assign({},t,{requestInfo:r})},U);function U(){}var M=(A.unWrapResponseInfo=function(t){if(!t)return t;if(!1===t.hasOwnProperty("returnValue"))return t.hasOwnProperty("result")&&t.hasOwnProperty("pagination")?t.result:t;var e=t.returnValue;return e&&e.hasOwnProperty("result")&&e.hasOwnProperty("pagination")?e.result:t.returnValue},A.isReported401Error=function(t){return 401===t.status},A);function A(){}var H=(V.prototype.getService=function(){for(var t=window;!t.gspframeworkService&&t!==window.top&&this.isSameOrigin(t);)t=window.parent;return t.gspframeworkService&&t.gspframeworkService.rtf||{}},V.prototype.isSameOrigin=function(t){var e=window.location.host;try{if(t&&t.location&&"undefined"!=typeof t.location.host)return t.location.host===e}catch(r){return!1}return!1},Object.defineProperty(V.prototype,"params",{get:function(){return this.rtf&&this.rtf.hasOwnProperty("session")&&"function"==typeof this.rtf.session.getCommonVariable?this.rtf.session.getCommonVariable():null},enumerable:!0,configurable:!0}),Object.defineProperty(V.prototype,"httpService",{get:function(){return this.rtf&&this.rtf.hasOwnProperty("http")&&"function"==typeof this.rtf.http.request?this.rtf.http:null},enumerable:!0,configurable:!0}),V.prototype.request=function(t,e,r){return void 0===r&&(r={}),this.defaultHttpClient.request(t,e,r)},V.decorators=[{type:i.Injectable}],V.ctorParameters=function(){return[{type:a.HttpClient}]},V);function V(t){this.defaultHttpClient=t,this.httpClient=t,this.rtf=this.getService()}var F=(k.prototype.getFrmSessionId=function(t){return this.frmSessionService.getCurrentSessionId(t)},Object.defineProperty(k.prototype,"frmSessionId",{get:function(){return this.frmSessionService.getCurrentSessionId()},enumerable:!0,configurable:!0}),k.prototype.getFrameworkSessionId=function(t){return this.getFrmSessionId(t)},k.prototype.getSessionIdFromStorage=function(t){var e=this.getSessionStorageKey(t);return this.storageStrategy.getItem(e)},k);function k(t,e){this.storageStrategy=t,this.frmSessionService=e}var N,_=(x(L,N=F),L.prototype.getSessionId=function(){var t=this.getSessionIdFromStorage();return t?f.of(t):this.createSession()},L.prototype.setSessionId=function(t){var e=this.getSessionStorageKey();this.storageStrategy.setItem(e,t)},L.prototype.clearSessionId=function(){var t=this.getSessionStorageKey();this.storageStrategy.clear(this.frmSessionId,t)},L.prototype.extendRequestHeaders=function(t,e){var r=this.getFrameworkSessionId(e),n=this.getSessionIdFromStorage(e);return t=q.appendCafRuntimeCommonVariable(t,r),t=q.appendCafRuntimeContext(t,n),t=q.appendSessionId(t,n)},L.prototype.handleReponseHeaders=function(t){console.log(t)},L.prototype.createSession=function(){var e=this,t={responseType:"text"};return this.frmSessionId&&(t.headers=new a.HttpHeaders({SessionId:this.frmSessionId}),t.headers=t.headers.append("X-CAF-Runtime-CommonVariable",this.frmSessionId),t.headers=q.toJson(t.headers)),this.httpService.request("POST",this.beSessionUri,t).pipe(l.tap(function(t){e.setSessionId(t)}))},L.prototype.extendHttpHeader=function(){},L.prototype.getSessionStorageKey=function(t){return(t?this.getFrameworkSessionId(t):this.frmSessionId)+"_"+this.beSessionUri},L);function L(t,e,r,n){var o=N.call(this,t,e)||this;return o.beSessionUri=n,o.httpClient=r,o.httpService=new H(o.httpClient),o}var K,G=(x(J,K=F),J.prototype.getSessionId=function(){var t=this.getSessionStorageKey(),e=this.storageStrategy.getItem(t);return f.of(e)},J.prototype.setSessionId=function(t){var e=this.getSessionStorageKey();this.storageStrategy.setItem(e,t)},J.prototype.clearSessionId=function(){var t=this.getSessionStorageKey();this.storageStrategy.removeItem(t)},J.prototype.extendRequestHeaders=function(t,e){var r=this.getFrameworkSessionId(e),n=this.getSessionIdFromStorage(e),o=this.injector.get(I.AppContext,null);if(o){var i=o.ApplicationId;t=q.appendFuncInstId(t,i)}return t=q.appendCafRuntimeCommonVariable(t,r),n&&(t=q.appendCafRuntimeContext(t,n)),t},J.prototype.handleReponseHeaders=function(t){console.log(t)},J.prototype.getSessionStorageKey=function(t){return(t?this.getFrameworkSessionId(t):this.frmSessionId)+"_"+window.location.hash},J);function J(t,e,r,n){var o=K.call(this,t,e)||this;return o.beSessionUri=r,o.injector=n,o}var W=(z.prototype.create=function(t,e,r,n,o){var i=this.createStorageStrategy(),a=this.createBeSessionUri(r);return"UnifiedSession"===t?new G(i,e,a,o):new _(i,e,n,a)},z.prototype.createStorageStrategy=function(){return new C},z.prototype.createBeSessionUri=function(t){return t+"/service/createsession"},z.decorators=[{type:i.Injectable}],z);function z(){}var Q=(Object.defineProperty(Y.prototype,"token",{get:function(){return this.handlingStrategy.getFrameworkSessionId()},enumerable:!0,configurable:!0}),Y.prototype.getBeSessionId=function(){return this.handlingStrategy.getSessionId()},Y.prototype.setBeSessionId=function(t){this.handlingStrategy.setSessionId(t)},Y.prototype.clearBeSessionId=function(){this.handlingStrategy.clearSessionId()},Y.prototype.extendRequestHeaders=function(t,e){return this.handlingStrategy.extendRequestHeaders(t,e)},Y.prototype.handleResponseHeaders=function(t){return this.handlingStrategy.handleReponseHeaders(t)},Y.prototype.createBeSession=function(){return this.handlingStrategy.createSession()},Y.prototype.createHandlingStrategy=function(t,e,r,n){var o;return o=(o=t?t.get(u,null,i.InjectFlags.Optional):"SeparatedSession")||"SeparatedSession",(new W).create(o,r,n,e,t)},Y.decorators=[{type:i.Injectable}],Y.ctorParameters=function(){return[{type:a.HttpClient},{type:String},{type:g},{type:i.Injector}]},Y);function Y(t,e,r,n){this.handlingStrategy=this.createHandlingStrategy(n,t,r,e)}var X,Z="@farris/bef NG_VARIABLE",$=I.makePropDecorator(Z,function(t){return t}),tt=(x(et,X=I.Repository),Object.defineProperty(et.prototype,"restService",{get:function(){return this.dataService.restService},enumerable:!0,configurable:!0}),Object.defineProperty(et.prototype,"changeBuilder",{get:function(){return this.entityManager.changeBuilder},enumerable:!0,configurable:!0}),Object.defineProperty(et.prototype,"changeHandler",{get:function(){return this.entityManager.changeHandler},enumerable:!0,configurable:!0}),et.prototype.getList=function(){return this.dataService.getList(null,null,null,null)},et.prototype.getById=function(t){return this.dataService.getById(t)},et.prototype.updateById=function(t){return this.dataService.updateById(t)},et.prototype.create=function(t){return this.dataService.create(t)},et.prototype.append=function(t){return this.dataService.append(t)},et.prototype.appendByPath=function(t){return this.dataService.appendByPath(t)},et.prototype.removeById=function(t,e){return this.dataService.removeById(t,e)},et.prototype.removeByIds=function(t,e){return this.dataService.removeByIds(t,e)},et.prototype.removeByPath=function(t,e){return this.dataService.removeByPath(t,e)},et.prototype.updateChangesById=function(t){return this.dataService.updateChangesById(t)},et.prototype.updateChangesByPath=function(t,e){throw new Error("Not Implement")},et.prototype.updateAllChanges=function(){return this.dataService.updateAllChanges()},et.prototype.applyChanges=function(){return this.dataService.applyChanges()},et.prototype.updateDataAndVariableChanges=function(){var t={FilterConditions:[],SortConditions:[],IsUsePagination:!0,Pagination:{PageIndex:1,PageSize:1,PageCount:0,TotalCount:0}},e=JSON.stringify(t),r=this.restService.buildRequestInfo();if(this.isEmptyRequestInfo(r))return f.of(null);var n=this.restService.baseUri+"/extension/query?entityFilter="+e,o={body:r};return this.restService.invoke(n,"PUT",null,o,!1,!0,!0)},et.prototype.applyChangesById=function(t){return this.dataService.applyChangesById(t)},et.prototype.cancelChanges=function(t){return this.dataService.cancelChanges(t)},et.prototype.clearAllEntityChanges=function(){return this.entityManager.clearAllEntityChanges()},et.prototype.getDataChangeDetails=function(){return this.entityManager.buildAllEntityChangeDetails()},et.prototype.handleDataChangeDetails=function(t){return this.entityManager.handleDataChangeDetails(t)},et.prototype.getVariableChangeDetail=function(){return this.variableManager.buildChangeDetail()},et.prototype.handleVariableChangeDetail=function(t){this.variableManager.handleChangeDetail(t)},et.prototype.isEmptyRequestInfo=function(t){return!t||(!t.dataChange||t.dataChange.length<1)&&(!t.variableChange||Object.keys(t.variableChange).length<1)},et.decorators=[{type:i.Injectable}],et.ctorParameters=function(){return[]},et);function et(){return X.call(this)||this}var rt,nt=(x(ot,rt=I.EntityManager),ot.prototype.buildAllEntityChangeDetails=function(){var r=this,n=[];return this.entityCollection.getAllEntities().forEach(function(t){if(0!==t.changes.length){var e=r.changeBuilder.build(t.changes);e&&e.ChangeInfo&&e.ChangeInfo.DataId&&n.push(e)}}),n},ot.prototype.buildEntityChangeDetailById=function(t){var e=this.entityCollection.getEntityById(t);return 0===e.changes.length?null:this.changeBuilder.build(e.changes)},ot.prototype.handleDataChangeDetails=function(t){this.changeHandler.handle(this.entityType,this.entityCollection,t)},ot.prototype.reset=function(){this.entityCollection.clear()},ot);function ot(t){var e=rt.call(this,t)||this;return e.changeBuilder=new c(e.entityCollection.entityType,e.entityCollection),e.changeHandler=new y,e}var it=(at.createEmpty=function(t,e){var r={ChangeType:t,ChangeInfo:{}};return e&&(r.ChangeInfo.DataId=e),r},at.getChangeInfo=function(t){return!0===this.isChangeDetail(t)?t.ChangeInfo:t},at.isChangeDetail=function(t){var e=Object.keys(t);return 2===e.length&&-1<e.indexOf("ChangeType")&&-1<e.indexOf("ChangeInfo")},at);function at(){}var st=(pt.prototype.handleChangeDetail=function(t){},pt.prototype.buildChangeDetail=function(){var i=this,a=it.createEmpty(S.Modify);return this.ngVariableMap.forEach(function(t,e){var r=t.mapping,n=i.getValueFromUIState(r),o=i.innerValueMap.get(e);!1===i.isValueEqual(n,o)&&(i.innerValueMap.set(e,n),i.appendToChangeInfo(a,e,n))}),0===Object.keys(a.ChangeInfo).length?null:a},pt.prototype.reset=function(){this.innerValueMap.clear()},pt.prototype.appendToChangeInfo=function(t,e,r){if(!0===this.isUdtVariable(r)){var n=it.createEmpty(S.Modify);n.ChangeInfo=r,t.ChangeInfo[e]=n}else t.ChangeInfo[e]=r},pt.prototype.getValueFromUIState=function(t){var e=this.getRootUIState(),r=t.split(".").reduce(function(t,e){return t?t[e]:null},e);return r instanceof Date?n.format(r,"yyyy-MM-dd HH:mm:ss"):r},pt.prototype.getRootUIState=function(){var t=this.appContext.frameContextManager.getRootFrameContext();if(this.injector){var e=this.injector.get(I.FrameContext,null);e&&(t=e.getVirtualRootFrameContext()||t)}if(t)return t.uiState},pt.prototype.isValueEqual=function(t,e){return JSON.stringify(t)===JSON.stringify(e)},pt.prototype.isUdtVariable=function(t){return t&&t.constructor&&"[object Object]"===t.toString()&&t.constructor.prototype.hasOwnProperty("isPrototypeOf")},pt.prototype.setValueToUIState=function(t,e){},pt.ctorParameters=function(){return[{type:I.AppContext},{type:undefined},{type:i.Injector,decorators:[{type:i.Optional}]}]},pt);function pt(t,e,r){var n=this;this.appContext=t,this.ngVariables=e,this.injector=r,this.ngVariableMap=new Map,this.innerValueMap=new Map,Object.keys(e).forEach(function(t){n.ngVariableMap.set(t,e[t])})}var ut=(ct.buildRequestInfo=function(t){return{dataChange:t.entityManager.buildAllEntityChangeDetails(),variableChange:t.variableManager.buildChangeDetail()}},ct);function ct(){}var ht=(yt.convertToPathArray=function(t,e){var n=this,r=I.BindingPathConverter.toBindingPathArray(t),o=[],i=e.list.currentItem;return o.push(i.primaryKeyValue),r.forEach(function(t){var e=I.PropertyUtil.getPropertyByName(i.properties,t);if(e.type!==I.BindingPropertyType.List)throw new Error(e.name+"不是子表对应的属性");var r=i[t];i=r.currentItem,o.push(n.trimTrailingS(t)),o.push(i.primaryKeyValue)}),o},yt.convertToPathUrl=function(t,e){var r=this.convertToPathArray(t,e);return r.pop(),"/"+r.join("/")},yt.convertToObjectCodes=function(t,e){for(var r=this.convertToPathArray(t,e),n=r.length,o=[],i=1;i<n;i+=2)o.push(r[i]);return o},yt.convertToDataIdsForUpdate=function(t,e){for(var r=this.convertToPathArray(t,e),n=r.length,o=[],i=0;i<n;i+=2)o.push(r[i]);return o},yt.convertToDataIdsForAdd=function(t,e){var r=this.convertToDataIdsForUpdate(t,e);return r.pop(),r},yt.convertPathToUrl=function(t){for(var e=t.split("/"),r=e.length-1;0<r;r--)e[r]&&e[r].endsWith("s")&&(e[r]=e[r].substr(0,e[r].length-1).toLowerCase());return e.join("/")},yt.trimTrailingS=function(t){return t.substr(0,t.length-1)},yt.convertPathsToNodeCodes=function(t){var e=[];return!t||t.length<1||t.filter(function(t){return!!t&&-1===t.indexOf(":")}).forEach(function(t){e.push(t)}),e},yt.convertPathsToIds=function(t){var e=[];return!t||t.length<1||t.filter(function(t){return!!t&&-1!==t.indexOf(":")}).forEach(function(t){e.push(t.split(":")[1])}),e},yt);function yt(){}var lt=(Object.defineProperty(ft.prototype,"restProxy",{get:function(){return this.repository.restService.proxy},enumerable:!0,configurable:!0}),ft.prototype.getList=function(t,e,r,n){var p=this;0!==r&&(r=r||this.repository.entityCollection.pageSize,n=n||this.repository.entityCollection.pageIndex);var o=this.buildEntityFilter(t,e,r,n),i=this.restService.buildRequestInfo();return this.restProxy.extendQuery(o,i).pipe(l.map(function(t){var e=t.returnValue,r=e.result,n=[];r.forEach(function(t){var e=p.repository.buildEntity(t);b.appendInitialData(e,t),n.push(e)});var o=e.pagination;if(o&&0<Object.keys(o).length){var i=o.pageSize,a=o.pageIndex,s=o.totalCount;p.repository.entityCollection.updatePaginationInfoByPath("/",{pageIndex:a,pageSize:i,totalCount:s})}else p.repository.entityCollection.updatePaginationInfoByPath("/",{pageIndex:1,pageSize:0,totalCount:n.length});return p.repository.entityCollection.loadEntities(n),n}))},ft.prototype.filter=function(t,e,r,n){var p=this;0!==r&&(r=r||this.repository.entityCollection.pageSize,n=n||this.repository.entityCollection.pageIndex);var o=this.buildEntityFilter(t,e,r,n),i=this.restService.buildRequestInfo();return this.restProxy.filter(o,i).pipe(l.map(function(t){var e=t.returnValue,r=e.result,n=[];r.forEach(function(t){var e=p.repository.buildEntity(t);b.appendInitialData(e,t),n.push(e)});var o=e.pagination;if(o&&0<Object.keys(o).length){var i=o.pageSize,a=o.pageIndex,s=o.totalCount;p.repository.entityCollection.updatePaginationInfoByPath("/",{pageIndex:a,pageSize:i,totalCount:s})}else p.repository.entityCollection.updatePaginationInfoByPath("/",{pageIndex:1,pageSize:0,totalCount:n.length});return p.repository.entityCollection.loadEntities(n),n}))},ft.prototype.buildEntityFilter=function(t,e,r,n){return t||e||r||n?(t&&0<t.length&&(t[t.length-1].Relation=0),{FilterConditions:t,SortConditions:e,IsUsePagination:0!==r,Pagination:{PageIndex:n,PageSize:r,PageCount:0,TotalCount:0}}):null},ft.prototype.getById=function(t){var n=this,e=this.restService.buildRequestInfo();return this.restService.extendRetrieve(t,e).pipe(l.map(function(t){var e=t.returnValue,r=n.repository.buildEntity(e);return n.repository.entityCollection.loadEntities([r]),r}))},ft.prototype.getPagedById=function(o){var i=this,t=this.restService.buildRequestInfo(),e=this.repository.entityCollection.getPaginationConfigByPath("/"),r=this.buildChildPagination(e),n=this.buildRetrieveParam(r);return this.restService.serviceRetrieve(o,n,t).pipe(l.map(function(t){var e=t.dataResult,r=t.paginations;i.updatePagination(r);var n=i.repository.entityCollection.getEntityById(o);return i.reloadEntityData(n,e),n}))},ft.prototype.queryChild=function(s,t,e,r,n){var p=this,o=this.restService.buildRequestInfo(),u=ht.convertPathsToNodeCodes(s),i=u.map(function(t){return t.substring(0,t.length-1)}),a=ht.convertPathsToIds(s),c=B({nodeCodes:i,ids:a,pagination:{pageIndex:t,pageSize:e}},o),h=u[u.length-1];return h=h.substring(0,h.length-1),this.restService.queryChild(c).pipe(l.map(function(t){console.log(t);var e=t.returnValue;if(!e)return null;var r=e.result,n=void 0===r?[]:r,o=e.pagination,i=void 0===o?{}:o,a=[];n.forEach(function(t){var e=new(I.FieldMetadataUtil.getNgList(p.repository.entityType)[u[u.length-1]].type)(t);b.appendInitialData(e,t),a.push(e)}),u=u.map(function(t){return t.charAt(0).toLocaleLowerCase()+t.substr(1)}),p.repository.entityCollection.resetEntities(s,a),p.repository.entityCollection.setPaginationConfigByPath("/"+h,i)}))},ft.prototype.buildChildPagination=function(r){var n={};return Object.keys(r).forEach(function(t){var e=r[t];"object"==typeof e&&(n[t]=e)}),n},ft.prototype.updatePagination=function(e){var r=this;e&&Object.keys(e).forEach(function(t){r.repository.entityCollection.setPaginationConfigByPath("/"+t,e[t])})},ft.prototype.buildRetrieveParam=function(n){var t={};if(n&&0<Object.keys(n).length){var o=[];Object.keys(n).forEach(function(t){var e=n[t],r={};r[t]={pagination:{pageSize:e.pageSize||0,pageIndex:1}},o.push(r)}),t.filters=o}return t},ft.prototype.editById=function(n){var o=this;if(!this.repository.entityCollection.getEntityById(n))return f.of(null);var t=ut.buildRequestInfo(this.repository);return this.restProxy.edit(n,t).pipe(l.map(function(t){var e=t.returnValue.data,r=o.repository.entityCollection.getEntityById(n);return r&&e&&o.reloadEntityData(r,e),r}))},ft.prototype.updateById=function(n){var o=this;if(!this.repository.entityCollection.getEntityById(n))return f.of(null);var t=this.restService.buildRequestInfo();return this.restService.extendRetrieve(n,t).pipe(l.map(function(t){var e=t.returnValue,r=o.repository.entityCollection.getEntityById(n);return o.reloadEntityData(r,e),r}))},ft.prototype.reloadEntityData=function(t,e){t&&(this.appContext.changeDetectionController.detach(),t.load(e),t.changes.splice(0,t.changes.length),this.appContext.changeDetectionController.reattach())},ft.prototype.create=function(t){var n=this,e=this.restService.buildRequestInfo();return this.restService.create(t,e).pipe(l.map(function(t){var e=t.returnValue,r=n.repository.buildEntity(e);return b.appendInitialData(r,e),n.repository.entityCollection.loadEntities([r]),r}))},ft.prototype.append=function(t){var n=this,e=this.restService.buildRequestInfo();return this.restService.create(t,e).pipe(l.map(function(t){var e=t.returnValue,r=n.repository.buildEntity(e);return n.repository.entityCollection.addEntity(r),r}))},ft.prototype.insert=function(n,t){var o=this,e=this.buildRequestInfo();return this.restProxy.create(t,e).pipe(l.map(function(t){var e=t.returnValue,r=o.repository.buildEntity(e);return o.repository.entityCollection.insertEntity(r,n),r}))},ft.prototype.appendByPath=function(r){var n=this,t=this.restService.buildRequestInfo();return this.restService.createByPath(r,t).pipe(l.map(function(t){var e=t.returnValue;return n.repository.entityManager.appendEntityByPath(r,e,e)}))},ft.prototype.insertByPath=function(r,n){var o=this,t=this.buildRequestInfo();return this.restProxy.createByPath(r,t).pipe(l.map(function(t){var e=t.returnValue;return o.repository.entityManager.insertEntityByPath(r,e,e,n)}))},ft.prototype.removeById=function(e,t){var r=this;t=t===undefined||t;var n=this.restService.buildRequestInfo();return this.restService.extendDelete(e,n).pipe(l.switchMap(function(){return!0===t?r.applyChangesById(e).pipe(l.tap(function(t){t&&r.repository.entityCollection.removeEntityById(e)})):(r.repository.entityCollection.removeEntityById(e),r.repository.dataChangeHistory.addChange({dataId:e,changeType:I.DataChangeType.Delete}),f.of(!0))}))},ft.prototype.removeAndSaveById=function(t){var e=this,r=ut.buildRequestInfo(this.repository);return this.restProxy.deleteAndSave(t,r).pipe(l.switchMap(function(){return e.repository.entityCollection.removeEntityById(t),f.of(!0)}))},ft.prototype.removeByIds=function(r,t){var n=this;t=t===undefined||t;var e=this.restService.buildRequestInfo();return this.restService.extendBatchDelete(r,e).pipe(l.switchMap(function(){if(t)return n.applyChangesByIdArray(r).pipe(l.tap(function(t){t&&n.repository.entityCollection.removeEntities(function(t){return n.checkEntityValueExists(t,r)})}));if(n.repository.entityCollection.removeEntities(function(t){return n.checkEntityValueExists(t,r)}),r&&0<r.length){var e=[];r.forEach(function(t){e.push({dataId:t,changeType:I.DataChangeType.Delete})}),n.repository.dataChangeHistory.addChanges(e)}return f.of(!0)}))},ft.prototype.checkEntityValueExists=function(t,e){for(var r=!1,n=0;n<e.length;n++)if(t.primaryValue===e[n]){r=!0;break}return r},ft.prototype.removeByPath=function(t,e){var r=this,n=this.restService.buildRequestInfo();return this.restService.extendDeletByPath(t,e,n).pipe(l.map(function(){return r.repository.entityManager.removeEntityByPath(t,e),r.repository.dataChangeHistory.addChange({fpath:t,dataId:e,changeType:I.DataChangeType.Delete}),!0}))},ft.prototype.batchRemoveByPath=function(e,r){var n=this,t=this.restService.buildRequestInfo();return this.restService.batchDeleteByPath(e,r,t).pipe(l.map(function(){var t=r.split(",");return 0<t.length&&t.forEach(function(t){n.repository.entityManager.removeEntityByPath(e,t),n.repository.dataChangeHistory.addChange({fPath:e,dataId:t,changeType:I.DataChangeType.Delete})}),!0}))},ft.prototype.updateChangesById=function(t){var e=this,r=this.repository.entityCollection.getEntityById(t);if(!r.changes)return f.of(!0);if(0===r.changes.length)return f.of(!0);var n=this.repository.entityManager.buildEntityChangeDetailById(t),o=this.restService.buildRequestInfo();return this.restService.update(n,o).pipe(l.tap(function(){e.repository.entityManager.clearEntityChangesById(t)}),l.map(function(){return!0}))},ft.prototype.updateChangesByPath=function(t,e){throw new Error("Not Implement")},ft.prototype.updateAllChanges=function(){var r=this,n=[],t=this.repository.entityCollection.toArray();return 0===t.length?f.of(!0):(t.forEach(function(t){var e=r.updateChangesById(t.primaryValue);n.push(e)}),f.zip.apply(void 0,D(n)).pipe(l.map(function(){return!0})))},ft.prototype.applyChanges=function(){var t=this,e=this.restService.buildRequestInfo();return this.restService.save(e).pipe(l.tap(function(){t.repository.entityManager.clearAllEntityChanges(),t.repository.dataChangeHistory.clear()}),l.map(function(){return!0}))},ft.prototype.applyChangesByIdArray=function(t){var e=this,r=this.restService.buildRequestInfo();return this.restService.save(r).pipe(l.tap(function(){e.repository.entityManager.clearEntityChangesByArray(t),e.repository.dataChangeHistory.clearByIds(t)}),l.map(function(){return!0}))},ft.prototype.applyChangesById=function(t){var e=this,r=this.restService.buildRequestInfo();return this.restService.save(r).pipe(l.tap(function(){e.repository.entityManager.clearEntityChangesById(t),e.repository.dataChangeHistory.clearByIds([t])}),l.map(function(){return!0}))},ft.prototype.cancelChanges=function(t){var e=this;return this.restService.cancel(t).pipe(l.tap(function(){e.repository.entityManager.clearAllEntityChanges(),e.repository.dataChangeHistory.clear()}),l.map(function(){return!0}))},ft.prototype.batchAppendByPath=function(o,t){var i=this,e=this.buildRequestInfo();return this.restProxy.batchAppendByPath(o,t,e).pipe(l.map(function(t){var e=t.returnValue,r=i.repository.entityManager.createEntitiesByPath(o,e),n=o.split("/").filter(function(t){return t});return i.repository.entityManager.appendEntitiesByPath(n,r),r}))},ft.prototype.buildRequestInfo=function(){return{dataChange:this.repository.entityManager.buildAllEntityChangeDetails(),variableChange:this.repository.variableManager.buildChangeDetail()}},ft);function ft(t,e){this.injector=t,this.repository=e;var r=t.get(g),n=t.get(a.HttpClient),o=t.get(p)+"/"+this.repository.apiUri,i=t.get(I.EventBus);this.restService=new Rt(n,o,r,this.repository,i),this.appContext=t.get(I.AppContext)}var dt=(gt.prototype.onResponse=function(t,e){return t&&t.innerDataChange&&!0!==e&&this.context.handleDataChangeDetails(t.innerDataChange),this.context.clearAllEntityChanges(),t&&t.hasOwnProperty("returnValue")?t.returnValue:t},gt.prototype.onError=function(t,e,r){var n,o,i=this.context.appContext.getFormAppContext(),a=i.ApplicationId,s=window.DEVKIT_LOADING_SERVICE;if(s&&s instanceof Array&&0<s.length)try{for(var p=P(s),u=p.next();!u.done;u=p.next()){var c=u.value;"function"==typeof c.clearAll&&c.clearAll()}}catch(l){n={error:l}}finally{try{u&&!u.done&&(o=p["return"])&&o.call(p)}finally{if(n)throw n.error}}if(e)return f.throwError(t);var h=this.context.restService.eventBus,y=window[a]||{};return h&&y.isExceptionHandlerExist&&!M.isReported401Error(t)?(h.post("Exception","","onException",t,i),r?f.of(null):f.EMPTY):f.throwError(t)},gt.prototype.extendHeaders=function(e,r){var n=this;return this.context.restService.sessionService.getBeSessionId().pipe(l.switchMap(function(t){return e=n.context.restService.sessionService.extendRequestHeaders(e,r),f.of(e)}))},gt.prototype.extendUrl=function(t,e){if(!e)return t;for(var r in e)if(e.hasOwnProperty(r)){var n=JSON.stringify(e[r]);t=-1===t.indexOf("?")?t+"?"+r+"="+n:t+"&"+r+"="+n}return t},gt.prototype.extendBody=function(e){var r=this;return!e||"object"!=typeof e||Object.keys(e).length<1||(Object.keys(e).forEach(function(t){"requestInfo"===t&&(e.requestInfo=r.context.restService.buildRequestInfo())}),1===Object.keys(e).length&&(e=Object.values(e)[0])),e},gt.prototype.parseHeaders=function(t){var e="BEFSessionID";t.headers&&t.headers.has(e)&&this.context.restService.sessionService.setBeSessionId(t.headers.get(e))},gt);function gt(t){this.context=t}var vt,It=(x(St,vt=tt),Object.defineProperty(St.prototype,"proxy",{get:function(){return this.befProxy},set:function(t){this.befProxy=t,this.befProxy.setProxyExtend(new dt(this))},enumerable:!0,configurable:!0}),St.prototype.getEntities=function(t,e,r,n){return this.dataService.getList(t,e,r,n)},St.prototype.filter=function(t,e,r,n){return void 0===t&&(t=[]),void 0===e&&(e=[]),this.dataService.filter(t,e,r,n)},St.prototype.getPagedById=function(t){return this.dataService.getPagedById(t)},St.prototype.queryChild=function(t,e,r,n,o){return this.dataService.queryChild(t,e,r,n,o)},St.prototype.getEntityById=function(t){return this.dataService.getById(t)},St.prototype.updateEntityById=function(t){return this.dataService.updateById(t)},St.prototype.editEntityById=function(t){return this.dataService.editById(t)},St.prototype.createEntity=function(t){return this.dataService.create(t)},St.prototype.appendEntity=function(t){return this.dataService.append(t)},St.prototype.insert=function(t,e){return this.dataService.insert(t,e)},St.prototype.insertByPath=function(t,e){return this.dataService.insertByPath(t,e)},St.prototype.appendEntityByPath=function(t){return this.dataService.appendByPath(t)},St.prototype.removeEntityById=function(t,e){return this.dataService.removeById(t,e)},St.prototype.removeEntityAndSaveById=function(t){return this.dataService.removeAndSaveById(t)},St.prototype.removeEntityByPath=function(t,e){return this.dataService.removeByPath(t,e)},St.prototype.batchRemoveByPath=function(t,e){return this.dataService.batchRemoveByPath(t,e)},St.prototype.saveEntityById=function(t){return this.dataService.applyChangesById(t)},St.prototype.saveEntities=function(){return this.dataService.applyChanges()},St.prototype.cancelEntityChanges=function(){return this.dataService.cancelChanges()},St.prototype.batchAppendByPath=function(t,e){return this.dataService.batchAppendByPath(t,e)},St.prototype.reset=function(){this.entityManager.reset(),this.variableManager.reset(),this.restService.sessionService.clearBeSessionId()},St.prototype.getInjector=function(){return this.injector},St.decorators=[{type:i.Injectable}],St.ctorParameters=function(){return[{type:i.Injector}]},St);function St(t){var e=vt.call(this)||this;e.injector=t,e.entityManager=new nt(e.entityCollection),e.appContext=e.injector.get(I.AppContext);var r=I.MetadataUtil.getPropsMetadatasByName(e.constructor,Z);return e.variableManager=new st(e.appContext,r,e.injector),e.dataService=new lt(e.injector,e),e.serverUri=t.get(p),e}var bt=(Ct.prototype.extendUri=function(t){return this.serverUri+"/"+t},Ct.decorators=[{type:i.Injectable}],Ct.ctorParameters=function(){return[{type:String,decorators:[{type:i.Inject,args:[p]}]}]},Ct);function Ct(t){this.serverUri=t}var mt="DELETE",Et="PUT",xt="POST",Bt=(Pt.prototype.setBaseUri=function(t){this.baseUri=t},Pt.prototype.setProxyExtend=function(t){this.proxyExtend=t},Pt.prototype.query=function(t){var e=this.baseUri;return t&&(e=e+"?entityFilter="+JSON.stringify(t)),this.request(e,"GET")},Pt.prototype.extendQuery=function(t,e){var r=this.baseUri+"/extension/query";t&&(r=r+"?entityFilter="+JSON.stringify(t));var n=e,o=this.addBodyToOptions({},n);return this.request(r,Et,null,o,!1)},Pt.prototype.filter=function(t,e){var r=this.baseUri+"/extension/filter",n={requestInfo:e};t&&(n={entityFilter:t,requestInfo:e});var o=this.addBodyToOptions({},n);return this.request(r,xt,null,o,!1)},Pt.prototype.retrieve=function(t){var e=this.baseUri+"/"+t;return this.request(e,"GET")},Pt.prototype.serviceRetrieve=function(t,e,r){var n=this.baseUri+"/service/retrieve/"+t,o={body:{retrieveParam:e,requestInfo:r}};return this.request(n,Et,null,o)},Pt.prototype.queryChild=function(t){var e=this.baseUri+"/service/querychild",r={body:t};return this.request(e,Et,null,r)},Pt.prototype.extendRetrieve=function(t,e){var r=this.baseUri+"/extension/retrieve/"+t,n=e,o=this.addBodyToOptions({},n);return this.request(r,Et,null,o)},Pt.prototype.edit=function(t,e){var r=this.baseUri+"/service/edit/"+t,n=e,o=this.addBodyToOptions({},n);return this.request(r,Et,null,o)},Pt.prototype.create=function(t,e){var r={defaultValue:t,requestInfo:e},n=this.addBodyToOptions({},r);return this.request(this.baseUri,xt,null,n)},Pt.prototype.createByPath=function(t,e){var r=ht.convertPathToUrl(t),n=""+this.baseUri+r,o=e,i=this.addBodyToOptions({},o);return this.request(n,xt,null,i)},Pt.prototype.update=function(t,e){var r={changeDetail:t,requestInfo:e},n=this.addBodyToOptions({},r);return this.request(this.baseUri,"PATCH",null,n)},Pt.prototype.save=function(t){var e=t,r=this.addBodyToOptions({},e);return this.request(this.baseUri,Et,null,r)},Pt.prototype["delete"]=function(t){var e=this.baseUri+"/"+t;return this.request(e,mt)},Pt.prototype.deleteAndSave=function(t,e){var r=this.baseUri+"/service/delete/"+t,n=e,o=this.addBodyToOptions({},n);return this.request(r,Et,null,o)},Pt.prototype.extendDelete=function(t,e){var r=this.baseUri+"/extension/delete/"+t,n=e,o=this.addBodyToOptions({},n);return this.request(r,Et,null,o)},Pt.prototype.deletByPath=function(t,e){var r=ht.convertPathToUrl(t),n=""+this.baseUri+r+"/"+e;return this.request(n,mt)},Pt.prototype.extendDeletByPath=function(t,e,r){var n=ht.convertPathToUrl(t),o=this.baseUri+"/extension"+n+"/"+e,i=r,a=this.addBodyToOptions({},i);return this.request(o,Et,null,a)},Pt.prototype.batchDeleteByPath=function(t,e,r){var n=t.split("/");if(n.length<3)throw Error("根据path删除实体数据出错了。传入的path["+t+"]格式不对");var o=n[1],i=[];n.forEach(function(t,e){1<e&&i.push(t.substr(0,t.length-1))});var a=i.join("/"),s=this.baseUri+"/extension/"+o+"/"+a+"/batch",p={ids:e.split(","),requestInfo:r},u=this.addBodyToOptions({},p);return this.request(s,Et,null,u)},Pt.prototype.batchDelete=function(t){var e={ids:t.join(",")};return this.request(this.baseUri,mt,e)},Pt.prototype.extendBatchDelete=function(t,e){var r=this.baseUri+"/extension/batchdelete",n={ids:t.join(",")},o=e,i=this.addBodyToOptions({},o);return this.request(r,Et,n,i)},Pt.prototype.cancel=function(t){var e=this.baseUri+"/service/cancel";return this.request(e,xt,null,null,!1,!1,!1,t)},Pt.prototype.batchAppendByPath=function(t,e,r){var n=ht.convertPathToUrl(t),o=""+this.baseUri+n+"/batch",i={requestInfo:r,retrieveDafaultParm:{defaultValues:e}},a=this.addBodyToOptions({},i);return this.request(o,xt,null,a)},Pt.prototype.request=function(e,r,t,n,o,i,a,s){var p=this;n=n||{},void 0!==o&&"boolean"==typeof o||(o=!1),void 0!==i&&"boolean"==typeof i||(i=!1),t&&(n.params=t),n.headers=q.convertToHeaders(n.headers);var u=this.hasRequestInfo(n);return n&&n.body&&n.body.hasOwnProperty("RequestInfo")&&(n.body.requestInfo=n.body.RequestInfo,delete n.body.RequestInfo),this.proxyExtend.extendHeaders(n.headers,s).pipe(l.switchMap(function(t){return n.headers=q.toJson(t),n.observe="response",p.httpService.request(r,e,n)}),l.tap(function(t){return p.proxyExtend.parseHeaders(t)}),l.map(function(t){return t.body}),l.map(function(t){return u?(p.proxyExtend.onResponse(t,a),t):p.unWrapResponseInfo(t)}),l.catchError(function(t){return p.proxyExtend.onError(t,o,i)}))},Pt.prototype.invoke=function(e,r,n){var o=this;return n.params&&(e=this.proxyExtend.extendUrl(e,n.params),n.params=null),n.body&&(n.body=this.proxyExtend.extendBody(n.body)),n.headers=q.convertToHeaders(n.headers),this.proxyExtend.extendHeaders(n.headers).pipe(l.switchMap(function(t){return n.headers=q.toJson(t),n.observe="response",o.httpService.request(r,e,n).pipe(l.tap(function(t){return o.proxyExtend.parseHeaders(t)}),l.map(function(t){return t.body}),l.map(function(t){return o.proxyExtend.onResponse(t)}),l.catchError(function(t){return o.proxyExtend.onError(t,!1,!1)}))}))},Pt.prototype.addBodyToOptions=function(t,e){return t=t||{},Object.assign(t,{body:e})},Pt.prototype.buildParams=function(t){return w.buildParams(t)},Pt.prototype.hasRequestInfo=function(t){return j.hasRequestInfo(t)||j.hasRequestInfoWithR(t)},Pt.prototype.unWrapResponseInfo=function(t){return M.unWrapResponseInfo(t)},Pt.decorators=[{type:i.Injectable}],Pt.ctorParameters=function(){return[{type:a.HttpClient},{type:bt}]},Pt);function Pt(t,e){this.httpClient=t,this.uriService=e,this.httpService=new H(this.httpClient)}var Rt=(Object.defineProperty(Dt.prototype,"proxy",{get:function(){return this.repository.proxy?this.repository.proxy:this.createBefProxy()},enumerable:!0,configurable:!0}),Dt.prototype.createBefProxy=function(){var t=this.repository.serverUri,e=new bt(t),r=new Bt(this.httpClient,e);r.setBaseUri(this.baseUri);var n=new dt(this.repository);return r.setProxyExtend(n),r},Dt.prototype.query=function(t){return this.proxy.query(t)},Dt.prototype.extendQuery=function(t,e){return this.proxy.extendQuery(t,e)},Dt.prototype.serviceRetrieve=function(t,e,r){return this.proxy.serviceRetrieve(t,e,r)},Dt.prototype.queryChild=function(t){return this.proxy.queryChild(t)},Dt.prototype.retrieve=function(t){return this.proxy.retrieve(t)},Dt.prototype.extendRetrieve=function(t,e){return this.proxy.extendRetrieve(t,e)},Dt.prototype.create=function(t,e){return this.proxy.create(t,e)},Dt.prototype.createByPath=function(t,e){return this.proxy.createByPath(t,e)},Dt.prototype.update=function(t,e){return this.proxy.update(t,e)},Dt.prototype.save=function(t){return this.proxy.save(t)},Dt.prototype["delete"]=function(t){return this.proxy["delete"](t)},Dt.prototype.extendDelete=function(t,e){return this.proxy.extendDelete(t,e)},Dt.prototype.deletByPath=function(t,e){return this.proxy.deletByPath(t,e)},Dt.prototype.extendDeletByPath=function(t,e,r){return this.proxy.extendDeletByPath(t,e,r)},Dt.prototype.batchDeleteByPath=function(t,e,r){return this.proxy.batchDeleteByPath(t,e,r)},Dt.prototype.batchDelete=function(t){return this.proxy.batchDelete(t)},Dt.prototype.extendBatchDelete=function(t,e){return this.proxy.extendBatchDelete(t,e)},Dt.prototype.cancel=function(t){return this.proxy.cancel(t)},Dt.prototype.request=function(t,e,r,n,o,i,a){return this.innerRequest(t,e,r,n,o,i,a,!1)},Dt.prototype.invoke=function(t,e,r,n,o,i,a){if(n&&n.body&&n.body.RequestInfo)throw new Error("请使用requestInfo提交变更");return this.innerRequest(t,e,r,n,o,i,a,!0)},Dt.prototype.innerRequest=function(e,r,t,n,o,i,a,s){var p=this;n=n||{};var u="BEFSessionID";void 0!==o&&"boolean"==typeof o||(o=!1),void 0!==i&&"boolean"==typeof i||(i=!1),void 0!==s&&"boolean"==typeof s||(s=!1);var c=s?this.existRequestInfo:this.hasRequestInfo;t&&(n.params=t);var h=c(n),y=q.convertToHeaders(n.headers);return this.sessionService.getBeSessionId().pipe(l.switchMap(function(t){return y=p.sessionService.extendRequestHeaders(y),n.headers=q.toJson(y),n.observe="response",p.httpService.request(r,e,n)}),l.tap(function(t){t.headers&&t.headers.has(u)&&p.sessionService.setBeSessionId(t.headers.get(u))}),l.map(function(t){return t.body}),l.map(function(t){return p.handleReponseInfo(t,h,a)}),l.catchError(function(t){return p.handleErrors(t,o,i)}))},Dt.prototype.handleReponseInfo=function(t,e,r){return e?(t&&t.innerDataChange&&!0!==r&&this.repository.handleDataChangeDetails(t.innerDataChange),this.repository.clearAllEntityChanges(),t):this.unWrapResponseInfo(t)},Dt.prototype.handleErrors=function(t,e,r){if(this.clearLoading(),e)return f.throwError(t);var n=this.repository.appContext.getFormAppContext(),o=n.ApplicationId,i=!!(window[o]||{}).isExceptionHandlerExist;return this.eventBus&&i&&!M.isReported401Error(t)?(this.eventBus.post("Exception","","onException",t,n),r?f.of(null):f.EMPTY):f.throwError(t)},Dt.prototype.clearLoading=function(){var t,e;if(!1!==(window.DEVKIT_LOADING_SERVICE&&window.DEVKIT_LOADING_SERVICE instanceof Array&&0<window.DEVKIT_LOADING_SERVICE.length||!1)){var r=window.DEVKIT_LOADING_SERVICE;try{for(var n=P(r),o=n.next();!o.done;o=n.next()){var i=o.value;"function"==typeof i.clearAll&&i.clearAll()}}catch(a){t={error:a}}finally{try{o&&!o.done&&(e=n["return"])&&e.call(n)}finally{if(t)throw t.error}}}},Dt.prototype.unWrapResponseInfo=function(t){return M.unWrapResponseInfo(t)},Dt.prototype.hasRequestInfo=function(t){return j.hasRequestInfoWithR(t)},Dt.prototype.existRequestInfo=function(t){return j.hasRequestInfo(t)},Dt.prototype.buildParams=function(t){return w.buildParams(t)},Dt.prototype.buildBodyWithRequestInfo=function(t){return j.buildBodyWithRequestInfo(t,this.repository)},Dt.prototype.buildRequestInfo=function(){return j.buildRequestInfo(this.repository)},Dt.decorators=[{type:i.Injectable}],Dt.ctorParameters=function(){return[{type:a.HttpClient},{type:String},{type:g},{type:It},{type:I.EventBus}]},Dt);function Dt(t,e,r,n,o){this.httpClient=t,this.httpService=new H(this.httpClient),this.baseUri=e;var i=n.getInjector();this.sessionService=new Q(t,e,r,i),this.repository=n,this.eventBus=o}var qt=(Ot.prototype.getData=function(t,e){var r=t.split(".")[0],n=t.split(".")[1];return e=e||{},!0===this.ifEnableExtendLoadMethod(t)?this.extendGetHelpData(n,r,e):this.getHelpData(n,r,e)},Ot.prototype.saveUserSettings=function(t){return this.befRepository.restService.invoke("/api/runtime/bcc/v1.0/datagrid/settings","POST",null,{body:t},!1)},Ot.prototype.getUserSettings=function(t){var e="/api/runtime/bcc/v1.0/datagrid/settings/"+t;return this.befRepository.restService.invoke(e,"GET",null,null,!1)},Ot.prototype.ifEnableExtendLoadMethod=function(t){if(this.context&&this.context.hasOwnProperty("enableExtendLoadMethod"))return this.context.enableExtendLoadMethod;var e=!1;if(this.frameContext){var r=t+"@"+this.frameContext.repository.apiUri;e=this.frameContext.getParam(r)}return e},Ot.prototype.getHelpData=function(t,e,r){var n=this,o=this.befRepository.restService.baseUri+"/elementhelps/"+t;return this.befRepository.updateDataAndVariableChanges().pipe(l.switchMap(function(){return n.befRepository.restService.invoke(o,"GET",{nodeCode:e,queryParam:JSON.stringify(r)},null,!1)}))},Ot.prototype.extendGetHelpData=function(t,e,r){var n=this.befRepository.restService.baseUri+"/extension/elementhelps",o={body:{labelId:t,nodeCode:e,queryParam:r,requestInfo:this.befRepository.restService.buildRequestInfo()}};return this.befRepository.restService.invoke(n,"PUT",null,o,!1,!0,!0).pipe(l.map(function(t){return t&&t.returnValue||null}))},Ot.prototype.convert2TreeDataWithPathCode=function(n,e,r){var o=this;void 0===e&&(e=1),void 0===r&&(r="01");var t=n.filter(function(t){return t.layer===e&&t.pathcode===r});if(1<e&&(t=n.filter(function(t){return t.layer===e&&t.pathcode.substr(0,2*(e-1))===r})),t.length){var i=t.map(function(t){return{data:t,children:[]}});return i.forEach(function(t){var e,r=o.convert2TreeDataWithPathCode(n,t.data.layer+1,t.data.pathcode);(e=t.children).push.apply(e,D(r))}),i}},Ot.decorators=[{type:i.Injectable}],Ot.ctorParameters=function(){return[{type:I.Repository},{type:I.FrameContext,decorators:[{type:i.Optional}]}]},Ot);function Ot(t,e){this.frameContext=e,this.befRepository=t}var wt=(Tt.prototype.createSession=function(t){var e=this.sessionService.getUserSessionId();return e?this.befRepository.restService.invoke(t,"POST",null,{headers:new a.HttpHeaders({SessionId:e}),responseType:"text"},!1).pipe(l.switchMap(function(t){return f.of({status:!0,payload:t})})):f.of({status:!1,payload:"用户登录信息已过期,请重新登录"})},Tt.prototype.getData=function(t,e){var r=this,n={};e.condition&&(n=e.condition),"/"===t[t.length-1]&&(t=t.substr(0,t.length-1));var o=t+"/extension/query",i=t+"/service/createsession";if(n){var a=JSON.stringify(n);o=o+"?entityFilter="+a}return this.createSession(i).pipe(l.switchMap(function(t){if(t.status)return t.payload,r.befRepository.restService.invoke(o,"PUT",null,{},!1);throw new Error(t.payload)}),s.map(function(t){var e=t.returnValue,r={items:e.result};return e.pagination?Object.assign({},r,{total:e.pagination.totalCount,pageInfo:{pageSize:e.pagination.pageSize,pageIndex:e.pagination.pageIndex,enablePager:!0}}):r}))},Tt.decorators=[{type:i.Injectable}],Tt.ctorParameters=function(){return[{type:I.Repository},{type:g}]},Tt);function Tt(t,e){this.sessionService=e,this.befRepository=t}var jt=(Ut.isExistUnsaveData=function(t){var e=!1;if(!t||!t.entityCollection)throw"Current Object is null or it's entityCollection is null.";var r=t.entityCollection.toArray();if(t.dataChangeHistory.isChanged())return!0;for(var n=0;n<r.length;n++)if(0<r[n].changes.length){e=!0;break}return e},Ut);function Ut(){}var Mt=(At.prototype.toString=function(){return this.url},At);function At(t,e){void 0===e&&(e=null);var r=this;this.url=t,this.paths=e,this.paths&&Object.keys(e).forEach(function(t){-1!==r.url.indexOf("{"+t+"}")&&(r.url=r.url.replace("{"+t+"}",""+e[t]))})}var Ht=(Vt.prototype.getData=function(t,e,r){void 0===e&&(e={}),void 0===r&&(r="GET");var n=new a.HttpHeaders({"content-type":"application/json"});return this.befRest.restService.invoke(t,r,e,{headers:n})},Vt.decorators=[{type:i.Injectable}],Vt.ctorParameters=function(){return[{type:I.Repository}]},Vt);function Vt(t){this.befRest=t}var Ft=(kt.prototype.getData=function(t,e,r){void 0===e&&(e={}),void 0===r&&(r="GET");var n=new a.HttpHeaders({"content-type":"application/json"});return this.befRest.restService.invoke(t,r,e,{headers:n})},kt.decorators=[{type:i.Injectable}],kt.ctorParameters=function(){return[{type:I.Repository}]},kt);function kt(t){this.befRest=t}t.VERSION="ver.",t.ChangeDetailType=S,t.BE_SERVER_URI_TOKEN=p,t.BE_SESSION_HANDLING_STRATEGY_TOKEN=u,t.BefChangeBuilder=c,t.BefChangeHandler=y,t.BefSessionService=Q,t.BefRestService=Rt,t.BefProxy=Bt,t.BefLookupRestService=qt,t.BefLookupDefaultService=wt,t.BefRepository=It,t.FrameworkSessionService=g,t.NG_VARIABLE=Z,t.NgVariable=$,t.BefRepositoryUtil=jt,t.BefDataPathUtil=ht,t.UriService=bt,t.Uri=Mt,t.DefaultComboHttpService=Ht,t.DefaultDynamiControlGroupHttpService=Ft,t.ɵa=tt,Object.defineProperty(t,"__esModule",{value:!0})});
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@ecp-caf/caf-common"),require("date-fns"),require("rxjs"),require("rxjs/operators"),require("rxjs/operators/map"),require("@angular/core"),require("@farris/devkit"),require("@angular/common/http")):"function"==typeof define&&define.amd?define("@farris/bef",["exports","@ecp-caf/caf-common","date-fns","rxjs","rxjs/operators","rxjs/operators/map","@angular/core","@farris/devkit","@angular/common/http"],e):e((t.farris=t.farris||{},t.farris.bef={}),t.cafCommon,t.dateFns,t.rxjs,t.rxjs.operators,t.rxjs["operators/map"],t.ng.core,t.devkit,t.ng.common.http)}(this,function(t,e,n,f,l,s,i,I,a){"use strict";var S=(r.Added="Added",r.Modify="Modify",r.Deleted="Deleted",r);function r(){}var p=new i.InjectionToken("@farris/be BE_SERVER_URL"),u=new i.InjectionToken("@farris/be BE_SESSION_HANDLING_STRATEGY_TOKEN"),b=(o.getPropInfo=function(t,e){var r,n,o,i=I.FieldMetadataUtil.getNgFields(t);Object.keys(i).forEach(function(t){t===e&&(r="NgField",n=null,o=i[t])});var a=I.FieldMetadataUtil.getNgObjects(t);Object.keys(a).forEach(function(t){t===e&&(r="NgObject",n=a[t].type,o=a[t])});var s=I.FieldMetadataUtil.getNgList(t);Object.keys(s).forEach(function(t){t===e&&(r="NgList",n=s[t].type,o=s[t])});var p=I.FieldMetadataUtil.getNgDynamic(t);return Object.keys(p).forEach(function(t){t===e&&(r="NgDynamic",n=p[t].type,o=p[t])}),{propType:r,propEntityType:n,propMetadata:o}},o.getPrimaryKey=function(t){var e=I.FieldMetadataUtil.getPrimaryFieldMetadata(t);return e?e.dataField:""},o.isObjectProp=function(t,e){var r=!1,n=I.FieldMetadataUtil.getNgObjects(t);return Object.keys(n).forEach(function(t){t===e&&(r=!0)}),r},o.isDynamicProp=function(t,e){var r=!1,n=I.FieldMetadataUtil.getNgDynamic(t);return Object.keys(n).forEach(function(t){t===e&&(r=!0)}),r},o.appendInitialData=function(t,e){var r=Object.assign({},e);delete r.id,delete r.parentID,t.initialData=r},o);function o(){}var c=(h.prototype.build=function(t){var e=this;return this.changeDetail={ChangeType:S.Modify,ChangeInfo:{DataId:""}},t.forEach(function(t){e.buildChangeDetail(t)}),this.changeDetail},h.prototype.buildChangeDetail=function(l){var f=l.path.concat();this.changeDetail.ChangeInfo.DataId||(this.changeDetail.ChangeInfo.DataId=f[0].split(":")[1]);for(var d=this.changeDetail,g=this.entityType,t=function(t){var e=v.getChangeInfo(d),r=f[t],n=b.getPropInfo(g,r),o=n.propType,i=n.propEntityType,a=n.propMetadata.dataField||r;if("NgField"===o){if(r===b.getPrimaryKey(g))return"continue";if(l.type!==I.ModifyType.ValueChange)throw Error("简单类型的属性上不支持ValueChange类型之外的变更");e[a]=l.value,d=null}else if("NgObject"===o)if(f[t+1].split(":")[1],f[t+1].split(":")[0]){var s=e[a],p=f.slice(0,t+1);s=(y=v.entityCollection.getEntityByPath(p))?y.toJSON():{},e[a]=s,g=d=null}else c=(c=e[a])||{ChangeType:S.Modify,ChangeInfo:{}},e[a]=c,d=c,g=i;else if("NgList"===o){d.ChangeInfo[a]||(d.ChangeInfo[a]=[]);var u=d.ChangeInfo[a];if(t!==f.length-1){var c,h=f[t+1].split(":")[1];return(c=u.find(function(t){return t.ChangeInfo.DataId===h}))||(c=v.createEmptyChangeDetail(S.Modify,h),u.push(c)),d=c,g=i,"continue"}l.type===I.ModifyType.Add||l.type===I.ModifyType.Insert||(l.type,I.ModifyType.Remove),g=d=null}else if("NgDynamic"===o){p=f.slice(0,t+1);var y=v.entityCollection.getEntityByPath(p);e[a]={ChangeType:S.Modify,ChangeInfo:y?y.toJSON():{}},g=d=null}},v=this,e=1;e<f.length&&d;e+=2)t(e)},h.prototype.getChangeInfo=function(t){return t.hasOwnProperty("ChangeInfo")?t.ChangeInfo:t},h.prototype.createEmptyChangeDetail=function(t,e){return{ChangeType:t,ChangeInfo:{DataId:e}}},h);function h(t,e){this.entityType=t,this.entityCollection=e}var y=(d.prototype.handle=function(t,e,r){this.handleChangeDetails(t,e,r)},d.prototype.handleChangeDetails=function(n,o,t){var i=this;t&&t.forEach(function(t){var e=t.ChangeInfo.dataId||t.ChangeInfo.DataId,r=i.getEntityById(o,e);r&&i.handleChangeDetail(n,r,t)})},d.prototype.handleChangeDetail=function(u,c,t){var h=this;if(t&&c&&t.ChangeType===S.Modify){var y=t.ChangeInfo;Object.keys(y).forEach(function(t){var e=b.getPropInfo(u,t),r=e.propType,n=e.propEntityType;if("NgField"===r)c[t]=y[t];else if("NgObject"===r){var o=c[t];if(o.primaryKey){var i=y[t];o.load(i)}else{var a=y[t];h.handleChangeDetail(n,o,a)}}else if("NgList"===r){var s=c[t],p=y[t];h.handleChangeDetails(n,s,p)}})}},d.prototype.getEntityById=function(t,e){return(t instanceof I.EntityCollection?t.getEntityById(e):t.get(e))||null},d);function d(){}var g=(v.prototype.getUserSessionId=function(){return this.sessionService.getUserSessionId()},v.prototype.getCurrentSessionId=function(t){var e;if(this.sessionService)if(t&&t.hasOwnProperty("tabId")){var r=t.tabId;e=this.sessionService.getCurrentSeesionId(r)}else e=this.sessionService.getCurrentSeesionId();return e=e||this.getUserSessionId()},v.decorators=[{type:i.Injectable}],v.ctorParameters=function(){return[{type:e.SessionService,decorators:[{type:i.Optional}]}]},v);function v(t){this.sessionService=t}var C=(m.prototype.getItem=function(t){return this.getAllBeSessions()[t]},m.prototype.setItem=function(t,e){var r=this.getAllBeSessions();r[t]=e,this.setAllBeSessions(r)},m.prototype.removeItem=function(t){var e=this.getAllBeSessions();e[t]&&delete e[t],this.setAllBeSessions(e)},m.prototype.clear=function(t,e){!0===this.isInFramework()?this.removeItemsByFrmSessionId(t):this.removeItem(e)},m.prototype.removeItemsByFrmSessionId=function(e){var r=this.getAllBeSessions();Object.keys(r).forEach(function(t){!0===t.startsWith(e)&&delete r[t]}),this.setAllBeSessions(r)},m.prototype.getAllBeSessions=function(){var t=window.sessionStorage.getItem(this.sessionStorageKey);return t?JSON.parse(t):{}},m.prototype.setAllBeSessions=function(t){var e=JSON.stringify(t);window.sessionStorage.setItem(this.sessionStorageKey,e)},m.prototype.isInFramework=function(){var t=window.location.hash;return!!t&&-1!==t.indexOf("tabId=")},m);function m(){this.sessionStorageKey="BE_SESSION_ID"}var E=function(t,e){return(E=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)};function x(t,e){function r(){this.constructor=t}E(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}var B=function(){return(B=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var o in e=arguments[r])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}).apply(this,arguments)};function P(t){var e="function"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function R(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,o,i=r.call(t),a=[];try{for(;(void 0===e||0<e--)&&!(n=i.next()).done;)a.push(n.value)}catch(s){o={error:s}}finally{try{n&&!n.done&&(r=i["return"])&&r.call(i)}finally{if(o)throw o.error}}return a}function D(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(R(arguments[e]));return t}var q=(O.convertToHeaders=function(e){if(1==(e=e||new a.HttpHeaders)instanceof a.HttpHeaders)return e;if(0<Object.keys(e).length){var r=new a.HttpHeaders;Object.keys(e).forEach(function(t){r=r.append(t,e[t])}),e=r}else e=new a.HttpHeaders;return e},O.appendSessionId=function(t,e){return t.append("SessionId",e)},O.appendCafRuntimeCommonVariable=function(t,e){return t.append("X-CAF-Runtime-CommonVariable",e)},O.appendCafRuntimeContext=function(t,e){return t.append("X-CAF-Runtime-Context",e)},O.appendContextType=function(t,e){return e=e||"application/json",t.append("Content-Type",e)},O.appendRequireMessage=function(t,e){return void 0===e&&(e=!0),t.append("Bff-Require-Message",e.toString())},O.appendFuncInstId=function(t,e){return t.append("Func-Inst-Id",e)},O.toJson=function(r){if(!(r instanceof a.HttpHeaders))return null;var n={};return r.keys().forEach(function(t){var e=r.getAll(t);1<e.length?n[t]=e:n[t]=e[0]||""}),n},O);function O(){}var w=(T.buildParams=function(t){var e=new a.HttpParams;for(var r in t)if(t.hasOwnProperty(r)){var n=t[r].toString();e=e.append(r,n)}return e},T);function T(){}var j=(U.hasRequestInfo=function(t){if(!t||!t.body)return!1;var e=t.body;return!(!e.requestInfo||!e.requestInfo.dataChange)||!!e.dataChange},U.hasRequestInfoWithR=function(t){if(!t||!t.body)return!1;var e=t.body;return!(!e.RequestInfo||!e.RequestInfo.dataChange)||!!e.dataChange},U.buildRequestInfo=function(t){return{dataChange:t.entityManager.buildAllEntityChangeDetails(),variableChange:t.variableManager.buildChangeDetail()}},U.buildBodyWithRequestInfo=function(t,e){if(t.RequestInfo||t.requestInfo)return t;var r=this.buildRequestInfo(e);return Object.assign({},t,{requestInfo:r})},U);function U(){}var M=(A.unWrapResponseInfo=function(t){if(!t)return t;if(!1===t.hasOwnProperty("returnValue"))return t.hasOwnProperty("result")&&t.hasOwnProperty("pagination")?t.result:t;var e=t.returnValue;return e&&e.hasOwnProperty("result")&&e.hasOwnProperty("pagination")?e.result:t.returnValue},A.isReported401Error=function(t){return 401===t.status},A);function A(){}var H=(V.prototype.getService=function(){for(var t=window;!t.gspframeworkService&&t!==window.top&&this.isSameOrigin(t);)t=window.parent;return t.gspframeworkService&&t.gspframeworkService.rtf||{}},V.prototype.isSameOrigin=function(t){var e=window.location.host;try{if(t&&t.location&&"undefined"!=typeof t.location.host)return t.location.host===e}catch(r){return!1}return!1},Object.defineProperty(V.prototype,"params",{get:function(){return this.rtf&&this.rtf.hasOwnProperty("session")&&"function"==typeof this.rtf.session.getCommonVariable?this.rtf.session.getCommonVariable():null},enumerable:!0,configurable:!0}),Object.defineProperty(V.prototype,"httpService",{get:function(){return this.rtf&&this.rtf.hasOwnProperty("http")&&"function"==typeof this.rtf.http.request?this.rtf.http:null},enumerable:!0,configurable:!0}),V.prototype.request=function(t,e,r){return void 0===r&&(r={}),this.defaultHttpClient.request(t,e,r)},V.decorators=[{type:i.Injectable}],V.ctorParameters=function(){return[{type:a.HttpClient}]},V);function V(t){this.defaultHttpClient=t,this.httpClient=t,this.rtf=this.getService()}var F=(k.prototype.getFrmSessionId=function(t){return this.frmSessionService.getCurrentSessionId(t)},Object.defineProperty(k.prototype,"frmSessionId",{get:function(){return this.frmSessionService.getCurrentSessionId()},enumerable:!0,configurable:!0}),k.prototype.getFrameworkSessionId=function(t){return this.getFrmSessionId(t)},k.prototype.getSessionIdFromStorage=function(t){var e=this.getSessionStorageKey(t);return this.storageStrategy.getItem(e)},k);function k(t,e){this.storageStrategy=t,this.frmSessionService=e}var N,_=(x(L,N=F),L.prototype.getSessionId=function(){var t=this.getSessionIdFromStorage();return t?f.of(t):this.createSession()},L.prototype.setSessionId=function(t){var e=this.getSessionStorageKey();this.storageStrategy.setItem(e,t)},L.prototype.clearSessionId=function(){var t=this.getSessionStorageKey();this.storageStrategy.clear(this.frmSessionId,t)},L.prototype.extendRequestHeaders=function(t,e){var r=this.getFrameworkSessionId(e),n=this.getSessionIdFromStorage(e);return t=q.appendCafRuntimeCommonVariable(t,r),t=q.appendCafRuntimeContext(t,n),t=q.appendSessionId(t,n)},L.prototype.handleReponseHeaders=function(t){console.log(t)},L.prototype.createSession=function(){var e=this,t={responseType:"text"};return this.frmSessionId&&(t.headers=new a.HttpHeaders({SessionId:this.frmSessionId}),t.headers=t.headers.append("X-CAF-Runtime-CommonVariable",this.frmSessionId),t.headers=q.toJson(t.headers)),this.httpService.request("POST",this.beSessionUri,t).pipe(l.tap(function(t){e.setSessionId(t)}))},L.prototype.extendHttpHeader=function(){},L.prototype.getSessionStorageKey=function(t){return(t?this.getFrameworkSessionId(t):this.frmSessionId)+"_"+this.beSessionUri},L);function L(t,e,r,n){var o=N.call(this,t,e)||this;return o.beSessionUri=n,o.httpClient=r,o.httpService=new H(o.httpClient),o}var K,G=(x(J,K=F),J.prototype.getSessionId=function(){var t=this.getSessionStorageKey(),e=this.storageStrategy.getItem(t);return f.of(e)},J.prototype.setSessionId=function(t){var e=this.getSessionStorageKey();this.storageStrategy.setItem(e,t)},J.prototype.clearSessionId=function(){var t=this.getSessionStorageKey();this.storageStrategy.removeItem(t)},J.prototype.extendRequestHeaders=function(t,e){var r=this.getFrameworkSessionId(e),n=this.getSessionIdFromStorage(e),o=this.injector.get(I.AppContext,null);if(o){var i=o.ApplicationId;t=q.appendFuncInstId(t,i)}return t=q.appendCafRuntimeCommonVariable(t,r),n&&(t=q.appendCafRuntimeContext(t,n)),t},J.prototype.handleReponseHeaders=function(t){console.log(t)},J.prototype.getSessionStorageKey=function(t){return(t?this.getFrameworkSessionId(t):this.frmSessionId)+"_"+window.location.hash},J);function J(t,e,r,n){var o=K.call(this,t,e)||this;return o.beSessionUri=r,o.injector=n,o}var W=(z.prototype.create=function(t,e,r,n,o){var i=this.createStorageStrategy(),a=this.createBeSessionUri(r);return"UnifiedSession"===t?new G(i,e,a,o):new _(i,e,n,a)},z.prototype.createStorageStrategy=function(){return new C},z.prototype.createBeSessionUri=function(t){return t+"/service/createsession"},z.decorators=[{type:i.Injectable}],z);function z(){}var Q=(Object.defineProperty(Y.prototype,"token",{get:function(){return this.handlingStrategy.getFrameworkSessionId()},enumerable:!0,configurable:!0}),Y.prototype.getBeSessionId=function(){return this.handlingStrategy.getSessionId()},Y.prototype.setBeSessionId=function(t){this.handlingStrategy.setSessionId(t)},Y.prototype.clearBeSessionId=function(){this.handlingStrategy.clearSessionId()},Y.prototype.extendRequestHeaders=function(t,e){return this.handlingStrategy.extendRequestHeaders(t,e)},Y.prototype.handleResponseHeaders=function(t){return this.handlingStrategy.handleReponseHeaders(t)},Y.prototype.createBeSession=function(){return this.handlingStrategy.createSession()},Y.prototype.createHandlingStrategy=function(t,e,r,n){var o;return o=(o=t?t.get(u,null,i.InjectFlags.Optional):"SeparatedSession")||"SeparatedSession",(new W).create(o,r,n,e,t)},Y.decorators=[{type:i.Injectable}],Y.ctorParameters=function(){return[{type:a.HttpClient},{type:String},{type:g},{type:i.Injector}]},Y);function Y(t,e,r,n){this.handlingStrategy=this.createHandlingStrategy(n,t,r,e)}var X,Z="@farris/bef NG_VARIABLE",$=I.makePropDecorator(Z,function(t){return t}),tt=(x(et,X=I.Repository),Object.defineProperty(et.prototype,"restService",{get:function(){return this.dataService.restService},enumerable:!0,configurable:!0}),Object.defineProperty(et.prototype,"changeBuilder",{get:function(){return this.entityManager.changeBuilder},enumerable:!0,configurable:!0}),Object.defineProperty(et.prototype,"changeHandler",{get:function(){return this.entityManager.changeHandler},enumerable:!0,configurable:!0}),et.prototype.getList=function(){return this.dataService.getList(null,null,null,null)},et.prototype.getById=function(t){return this.dataService.getById(t)},et.prototype.updateById=function(t){return this.dataService.updateById(t)},et.prototype.create=function(t){return this.dataService.create(t)},et.prototype.append=function(t){return this.dataService.append(t)},et.prototype.appendByPath=function(t){return this.dataService.appendByPath(t)},et.prototype.removeById=function(t,e){return this.dataService.removeById(t,e)},et.prototype.removeByIds=function(t,e){return this.dataService.removeByIds(t,e)},et.prototype.removeByPath=function(t,e){return this.dataService.removeByPath(t,e)},et.prototype.updateChangesById=function(t){return this.dataService.updateChangesById(t)},et.prototype.updateChangesByPath=function(t,e){throw new Error("Not Implement")},et.prototype.updateAllChanges=function(){return this.dataService.updateAllChanges()},et.prototype.applyChanges=function(){return this.dataService.applyChanges()},et.prototype.updateDataAndVariableChanges=function(){var t={FilterConditions:[],SortConditions:[],IsUsePagination:!0,Pagination:{PageIndex:1,PageSize:1,PageCount:0,TotalCount:0}},e=JSON.stringify(t),r=this.restService.buildRequestInfo();if(this.isEmptyRequestInfo(r))return f.of(null);var n=this.restService.baseUri+"/extension/query?entityFilter="+e,o={body:r};return this.restService.invoke(n,"PUT",null,o,!1,!0,!0)},et.prototype.applyChangesById=function(t){return this.dataService.applyChangesById(t)},et.prototype.cancelChanges=function(t){return this.dataService.cancelChanges(t)},et.prototype.clearAllEntityChanges=function(){return this.entityManager.clearAllEntityChanges()},et.prototype.getDataChangeDetails=function(){return this.entityManager.buildAllEntityChangeDetails()},et.prototype.handleDataChangeDetails=function(t){return this.entityManager.handleDataChangeDetails(t)},et.prototype.getVariableChangeDetail=function(){return this.variableManager.buildChangeDetail()},et.prototype.handleVariableChangeDetail=function(t){this.variableManager.handleChangeDetail(t)},et.prototype.isEmptyRequestInfo=function(t){return!t||(!t.dataChange||t.dataChange.length<1)&&(!t.variableChange||Object.keys(t.variableChange).length<1)},et.decorators=[{type:i.Injectable}],et.ctorParameters=function(){return[]},et);function et(){return X.call(this)||this}var rt,nt=(x(ot,rt=I.EntityManager),ot.prototype.buildAllEntityChangeDetails=function(){var r=this,n=[];return this.entityCollection.getAllEntities().forEach(function(t){if(0!==t.changes.length){var e=r.changeBuilder.build(t.changes);e&&e.ChangeInfo&&e.ChangeInfo.DataId&&n.push(e)}}),n},ot.prototype.buildEntityChangeDetailById=function(t){var e=this.entityCollection.getEntityById(t);return 0===e.changes.length?null:this.changeBuilder.build(e.changes)},ot.prototype.handleDataChangeDetails=function(t){this.changeHandler.handle(this.entityType,this.entityCollection,t)},ot.prototype.reset=function(){this.entityCollection.clear()},ot);function ot(t){var e=rt.call(this,t)||this;return e.changeBuilder=new c(e.entityCollection.entityType,e.entityCollection),e.changeHandler=new y,e}var it=(at.createEmpty=function(t,e){var r={ChangeType:t,ChangeInfo:{}};return e&&(r.ChangeInfo.DataId=e),r},at.getChangeInfo=function(t){return!0===this.isChangeDetail(t)?t.ChangeInfo:t},at.isChangeDetail=function(t){var e=Object.keys(t);return 2===e.length&&-1<e.indexOf("ChangeType")&&-1<e.indexOf("ChangeInfo")},at);function at(){}var st=(pt.prototype.handleChangeDetail=function(t){},pt.prototype.buildChangeDetail=function(){var i=this,a=it.createEmpty(S.Modify);return this.ngVariableMap.forEach(function(t,e){var r=t.mapping,n=i.getValueFromUIState(r),o=i.innerValueMap.get(e);!1===i.isValueEqual(n,o)&&(i.innerValueMap.set(e,n),i.appendToChangeInfo(a,e,n))}),0===Object.keys(a.ChangeInfo).length?null:a},pt.prototype.reset=function(){this.innerValueMap.clear()},pt.prototype.appendToChangeInfo=function(t,e,r){if(!0===this.isUdtVariable(r)){var n=it.createEmpty(S.Modify);n.ChangeInfo=r,t.ChangeInfo[e]=n}else t.ChangeInfo[e]=r},pt.prototype.getValueFromUIState=function(t){var e=this.getRootUIState(),r=t.split(".").reduce(function(t,e){return t?t[e]:null},e);return r instanceof Date?n.format(r,"yyyy-MM-dd HH:mm:ss"):r},pt.prototype.getRootUIState=function(){var t=this.appContext.frameContextManager.getRootFrameContext();if(this.injector){var e=this.injector.get(I.FrameContext,null);e&&(t=e.getVirtualRootFrameContext()||t)}if(t)return t.uiState},pt.prototype.isValueEqual=function(t,e){return JSON.stringify(t)===JSON.stringify(e)},pt.prototype.isUdtVariable=function(t){return t&&t.constructor&&"[object Object]"===t.toString()&&t.constructor.prototype.hasOwnProperty("isPrototypeOf")},pt.prototype.setValueToUIState=function(t,e){},pt.ctorParameters=function(){return[{type:I.AppContext},{type:undefined},{type:i.Injector,decorators:[{type:i.Optional}]}]},pt);function pt(t,e,r){var n=this;this.appContext=t,this.ngVariables=e,this.injector=r,this.ngVariableMap=new Map,this.innerValueMap=new Map,Object.keys(e).forEach(function(t){n.ngVariableMap.set(t,e[t])})}var ut=(ct.buildRequestInfo=function(t){return{dataChange:t.entityManager.buildAllEntityChangeDetails(),variableChange:t.variableManager.buildChangeDetail()}},ct);function ct(){}var ht=(yt.convertToPathArray=function(t,e){var n=this,r=I.BindingPathConverter.toBindingPathArray(t),o=[],i=e.list.currentItem;return o.push(i.primaryKeyValue),r.forEach(function(t){var e=I.PropertyUtil.getPropertyByName(i.properties,t);if(e.type!==I.BindingPropertyType.List)throw new Error(e.name+"不是子表对应的属性");var r=i[t];i=r.currentItem,o.push(n.trimTrailingS(t)),o.push(i.primaryKeyValue)}),o},yt.convertToPathUrl=function(t,e){var r=this.convertToPathArray(t,e);return r.pop(),"/"+r.join("/")},yt.convertToObjectCodes=function(t,e){for(var r=this.convertToPathArray(t,e),n=r.length,o=[],i=1;i<n;i+=2)o.push(r[i]);return o},yt.convertToDataIdsForUpdate=function(t,e){for(var r=this.convertToPathArray(t,e),n=r.length,o=[],i=0;i<n;i+=2)o.push(r[i]);return o},yt.convertToDataIdsForAdd=function(t,e){var r=this.convertToDataIdsForUpdate(t,e);return r.pop(),r},yt.convertPathToUrl=function(t){for(var e=t.split("/"),r=e.length-1;0<r;r--)e[r]&&e[r].endsWith("s")&&(e[r]=e[r].substr(0,e[r].length-1).toLowerCase());return e.join("/")},yt.trimTrailingS=function(t){return t.substr(0,t.length-1)},yt.convertPathsToNodeCodes=function(t){var e=[];return!t||t.length<1||t.filter(function(t){return!!t&&-1===t.indexOf(":")}).forEach(function(t){e.push(t)}),e},yt.convertPathsToIds=function(t){var e=[];return!t||t.length<1||t.filter(function(t){return!!t&&-1!==t.indexOf(":")}).forEach(function(t){e.push(t.split(":")[1])}),e},yt);function yt(){}var lt=(Object.defineProperty(ft.prototype,"restProxy",{get:function(){return this.repository.restService.proxy},enumerable:!0,configurable:!0}),ft.prototype.getList=function(t,e,r,n){var p=this;0!==r&&(r=r||this.repository.entityCollection.pageSize,n=n||this.repository.entityCollection.pageIndex);var o=this.buildEntityFilter(t,e,r,n),i=this.restService.buildRequestInfo();return this.restProxy.extendQuery(o,i).pipe(l.map(function(t){var e=t.returnValue,r=e.result,n=[];r.forEach(function(t){var e=p.repository.buildEntity(t);b.appendInitialData(e,t),n.push(e)});var o=e.pagination;if(o&&0<Object.keys(o).length){var i=o.pageSize,a=o.pageIndex,s=o.totalCount;p.repository.entityCollection.updatePaginationInfoByPath("/",{pageIndex:a,pageSize:i,totalCount:s})}else p.repository.entityCollection.updatePaginationInfoByPath("/",{pageIndex:1,pageSize:0,totalCount:n.length});return p.repository.entityCollection.loadEntities(n),n}))},ft.prototype.filter=function(t,e,r,n){var p=this;0!==r&&(r=r||this.repository.entityCollection.pageSize,n=n||this.repository.entityCollection.pageIndex);var o=this.buildEntityFilter(t,e,r,n),i=this.restService.buildRequestInfo();return this.restProxy.filter(o,i).pipe(l.map(function(t){var e=t.returnValue,r=e.result,n=[];r.forEach(function(t){var e=p.repository.buildEntity(t);b.appendInitialData(e,t),n.push(e)});var o=e.pagination;if(o&&0<Object.keys(o).length){var i=o.pageSize,a=o.pageIndex,s=o.totalCount;p.repository.entityCollection.updatePaginationInfoByPath("/",{pageIndex:a,pageSize:i,totalCount:s})}else p.repository.entityCollection.updatePaginationInfoByPath("/",{pageIndex:1,pageSize:0,totalCount:n.length});return p.repository.entityCollection.loadEntities(n),n}))},ft.prototype.buildEntityFilter=function(t,e,r,n){return t||e||r||n?(t&&0<t.length&&(t[t.length-1].Relation=0),{FilterConditions:t,SortConditions:e,IsUsePagination:0!==r,Pagination:{PageIndex:n,PageSize:r,PageCount:0,TotalCount:0}}):null},ft.prototype.getById=function(t){var n=this,e=this.restService.buildRequestInfo();return this.restService.extendRetrieve(t,e).pipe(l.map(function(t){var e=t.returnValue,r=n.repository.buildEntity(e);return n.repository.entityCollection.loadEntities([r]),r}))},ft.prototype.getPagedById=function(o){var i=this,t=this.restService.buildRequestInfo(),e=this.repository.entityCollection.getPaginationConfigByPath("/"),r=this.buildChildPagination(e),n=this.buildRetrieveParam(r);return this.restService.serviceRetrieve(o,n,t).pipe(l.map(function(t){var e=t.dataResult,r=t.paginations;i.updatePagination(r);var n=i.repository.entityCollection.getEntityById(o);return i.reloadEntityData(n,e),n}))},ft.prototype.queryChild=function(s,t,e,r,n){var p=this,o=this.restService.buildRequestInfo(),u=ht.convertPathsToNodeCodes(s),i=u.map(function(t){return t.substring(0,t.length-1)}),a=ht.convertPathsToIds(s),c=B({nodeCodes:i,ids:a,pagination:{pageIndex:t,pageSize:e}},o),h=u[u.length-1];return h=h.substring(0,h.length-1),this.restService.queryChild(c).pipe(l.map(function(t){console.log(t);var e=t.returnValue;if(!e)return null;var r=e.result,n=void 0===r?[]:r,o=e.pagination,i=void 0===o?{}:o,a=[];n.forEach(function(t){var e=new(I.FieldMetadataUtil.getNgList(p.repository.entityType)[u[u.length-1]].type)(t);b.appendInitialData(e,t),a.push(e)}),u=u.map(function(t){return t.charAt(0).toLocaleLowerCase()+t.substr(1)}),p.repository.entityCollection.resetEntities(s,a),p.repository.entityCollection.setPaginationConfigByPath("/"+h,i)}))},ft.prototype.buildChildPagination=function(r){var n={};return Object.keys(r).forEach(function(t){var e=r[t];"object"==typeof e&&(n[t]=e)}),n},ft.prototype.updatePagination=function(e){var r=this;e&&Object.keys(e).forEach(function(t){r.repository.entityCollection.setPaginationConfigByPath("/"+t,e[t])})},ft.prototype.buildRetrieveParam=function(n){var t={};if(n&&0<Object.keys(n).length){var o=[];Object.keys(n).forEach(function(t){var e=n[t],r={};r[t]={pagination:{pageSize:e.pageSize||0,pageIndex:1}},o.push(r)}),t.filters=o}return t},ft.prototype.editById=function(n){var o=this;if(!this.repository.entityCollection.getEntityById(n))return f.of(null);var t=ut.buildRequestInfo(this.repository);return this.restProxy.edit(n,t).pipe(l.map(function(t){var e=t.returnValue.data,r=o.repository.entityCollection.getEntityById(n);return r&&e&&o.reloadEntityData(r,e),r}))},ft.prototype.updateById=function(n){var o=this;if(!this.repository.entityCollection.getEntityById(n))return f.of(null);var t=this.restService.buildRequestInfo();return this.restService.extendRetrieve(n,t).pipe(l.map(function(t){var e=t.returnValue,r=o.repository.entityCollection.getEntityById(n);return o.reloadEntityData(r,e),r}))},ft.prototype.reloadEntityData=function(t,e){t&&(this.appContext.changeDetectionController.detach(),t.load(e),t.changes.splice(0,t.changes.length),this.appContext.changeDetectionController.reattach())},ft.prototype.create=function(t){var n=this,e=this.restService.buildRequestInfo();return this.restService.create(t,e).pipe(l.map(function(t){var e=t.returnValue,r=n.repository.buildEntity(e);return b.appendInitialData(r,e),n.repository.entityCollection.loadEntities([r]),r}))},ft.prototype.append=function(t){var n=this,e=this.restService.buildRequestInfo();return this.restService.create(t,e).pipe(l.map(function(t){var e=t.returnValue,r=n.repository.buildEntity(e);return n.repository.entityCollection.addEntity(r),r}))},ft.prototype.insert=function(n,t){var o=this,e=this.buildRequestInfo();return this.restProxy.create(t,e).pipe(l.map(function(t){var e=t.returnValue,r=o.repository.buildEntity(e);return o.repository.entityCollection.insertEntity(r,n),r}))},ft.prototype.appendByPath=function(r){var n=this,t=this.restService.buildRequestInfo();return this.restService.createByPath(r,t).pipe(l.map(function(t){var e=t.returnValue;return n.repository.entityManager.appendEntityByPath(r,e,e)}))},ft.prototype.insertByPath=function(r,n){var o=this,t=this.buildRequestInfo();return this.restProxy.createByPath(r,t).pipe(l.map(function(t){var e=t.returnValue;return o.repository.entityManager.insertEntityByPath(r,e,e,n)}))},ft.prototype.removeById=function(e,t){var r=this;t=t===undefined||t;var n=this.restService.buildRequestInfo();return this.restService.extendDelete(e,n).pipe(l.switchMap(function(){return!0===t?r.applyChangesById(e).pipe(l.tap(function(t){t&&r.repository.entityCollection.removeEntityById(e)})):(r.repository.entityCollection.removeEntityById(e),r.repository.dataChangeHistory.addChange({dataId:e,changeType:I.DataChangeType.Delete}),f.of(!0))}))},ft.prototype.removeAndSaveById=function(t){var e=this,r=ut.buildRequestInfo(this.repository);return this.restProxy.deleteAndSave(t,r).pipe(l.switchMap(function(){return e.repository.entityCollection.removeEntityById(t),f.of(!0)}))},ft.prototype.removeByIds=function(r,t){var n=this;t=t===undefined||t;var e=this.restService.buildRequestInfo();return this.restService.extendBatchDelete(r,e).pipe(l.switchMap(function(){if(t)return n.applyChangesByIdArray(r).pipe(l.tap(function(t){t&&n.repository.entityCollection.removeEntities(function(t){return n.checkEntityValueExists(t,r)})}));if(n.repository.entityCollection.removeEntities(function(t){return n.checkEntityValueExists(t,r)}),r&&0<r.length){var e=[];r.forEach(function(t){e.push({dataId:t,changeType:I.DataChangeType.Delete})}),n.repository.dataChangeHistory.addChanges(e)}return f.of(!0)}))},ft.prototype.checkEntityValueExists=function(t,e){for(var r=!1,n=0;n<e.length;n++)if(t.primaryValue===e[n]){r=!0;break}return r},ft.prototype.removeByPath=function(t,e){var r=this,n=this.restService.buildRequestInfo();return this.restService.extendDeletByPath(t,e,n).pipe(l.map(function(){return r.repository.entityManager.removeEntityByPath(t,e),r.repository.dataChangeHistory.addChange({fpath:t,dataId:e,changeType:I.DataChangeType.Delete}),!0}))},ft.prototype.batchRemoveByPath=function(e,r){var n=this,t=this.restService.buildRequestInfo();return this.restService.batchDeleteByPath(e,r,t).pipe(l.map(function(){var t=r.split(",");return 0<t.length&&t.forEach(function(t){n.repository.entityManager.removeEntityByPath(e,t),n.repository.dataChangeHistory.addChange({fPath:e,dataId:t,changeType:I.DataChangeType.Delete})}),!0}))},ft.prototype.updateChangesById=function(t){var e=this,r=this.repository.entityCollection.getEntityById(t);if(!r.changes)return f.of(!0);if(0===r.changes.length)return f.of(!0);var n=this.repository.entityManager.buildEntityChangeDetailById(t),o=this.restService.buildRequestInfo();return this.restService.update(n,o).pipe(l.tap(function(){e.repository.entityManager.clearEntityChangesById(t)}),l.map(function(){return!0}))},ft.prototype.updateChangesByPath=function(t,e){throw new Error("Not Implement")},ft.prototype.updateAllChanges=function(){var r=this,n=[],t=this.repository.entityCollection.toArray();return 0===t.length?f.of(!0):(t.forEach(function(t){var e=r.updateChangesById(t.primaryValue);n.push(e)}),f.zip.apply(void 0,D(n)).pipe(l.map(function(){return!0})))},ft.prototype.applyChanges=function(){var t=this,e=this.restService.buildRequestInfo();return this.restService.save(e).pipe(l.tap(function(){t.repository.entityManager.clearAllEntityChanges(),t.repository.dataChangeHistory.clear()}),l.map(function(){return!0}))},ft.prototype.applyChangesByIdArray=function(t){var e=this,r=this.restService.buildRequestInfo();return this.restService.save(r).pipe(l.tap(function(){e.repository.entityManager.clearEntityChangesByArray(t),e.repository.dataChangeHistory.clearByIds(t)}),l.map(function(){return!0}))},ft.prototype.applyChangesById=function(t){var e=this,r=this.restService.buildRequestInfo();return this.restService.save(r).pipe(l.tap(function(){e.repository.entityManager.clearEntityChangesById(t),e.repository.dataChangeHistory.clearByIds([t])}),l.map(function(){return!0}))},ft.prototype.cancelChanges=function(t){var e=this;return this.restService.cancel(t).pipe(l.tap(function(){e.repository.entityManager.clearAllEntityChanges(),e.repository.dataChangeHistory.clear()}),l.map(function(){return!0}))},ft.prototype.batchAppendByPath=function(o,t){var i=this,e=this.buildRequestInfo();return this.restProxy.batchAppendByPath(o,t,e).pipe(l.map(function(t){var e=t.returnValue,r=i.repository.entityManager.createEntitiesByPath(o,e),n=o.split("/").filter(function(t){return t});return i.repository.entityManager.appendEntitiesByPath(n,r),r}))},ft.prototype.buildRequestInfo=function(){return{dataChange:this.repository.entityManager.buildAllEntityChangeDetails(),variableChange:this.repository.variableManager.buildChangeDetail()}},ft);function ft(t,e){this.injector=t,this.repository=e;var r=t.get(g),n=t.get(a.HttpClient),o=t.get(p)+"/"+this.repository.apiUri,i=t.get(I.EventBus);this.restService=new Rt(n,o,r,this.repository,i),this.appContext=t.get(I.AppContext)}var dt=(gt.prototype.onResponse=function(t,e){return t&&t.innerDataChange&&!0!==e&&this.context.handleDataChangeDetails(t.innerDataChange),this.context.clearAllEntityChanges(),t&&t.hasOwnProperty("returnValue")?t.returnValue:t},gt.prototype.onError=function(t,e,r){var n,o,i=this.context.appContext.getFormAppContext(),a=i.ApplicationId,s=window.DEVKIT_LOADING_SERVICE;if(s&&s instanceof Array&&0<s.length)try{for(var p=P(s),u=p.next();!u.done;u=p.next()){var c=u.value;"function"==typeof c.clearAll&&c.clearAll()}}catch(l){n={error:l}}finally{try{u&&!u.done&&(o=p["return"])&&o.call(p)}finally{if(n)throw n.error}}if(e)return f.throwError(t);var h=this.context.restService.eventBus,y=window[a]||{};return h&&y.isExceptionHandlerExist&&!M.isReported401Error(t)?(h.post("Exception","","onException",t,i),r?f.of(null):f.EMPTY):f.throwError(t)},gt.prototype.extendHeaders=function(e,r){var n=this;return this.context.restService.sessionService.getBeSessionId().pipe(l.switchMap(function(t){return e=n.context.restService.sessionService.extendRequestHeaders(e,r),f.of(e)}))},gt.prototype.extendUrl=function(t,e){if(!e)return t;for(var r in e)if(e.hasOwnProperty(r)){var n=JSON.stringify(e[r]);t=-1===t.indexOf("?")?t+"?"+r+"="+n:t+"&"+r+"="+n}return t},gt.prototype.extendBody=function(e){var r=this;return!e||"object"!=typeof e||Object.keys(e).length<1||(Object.keys(e).forEach(function(t){"requestInfo"===t&&(e.requestInfo=r.context.restService.buildRequestInfo())}),1===Object.keys(e).length&&(e=Object.values(e)[0])),e},gt.prototype.parseHeaders=function(t){var e="BEFSessionID";t.headers&&t.headers.has(e)&&this.context.restService.sessionService.setBeSessionId(t.headers.get(e))},gt);function gt(t){this.context=t}var vt,It=(x(St,vt=tt),Object.defineProperty(St.prototype,"proxy",{get:function(){return this.befProxy},set:function(t){this.befProxy=t,this.befProxy.setProxyExtend(new dt(this))},enumerable:!0,configurable:!0}),St.prototype.getEntities=function(t,e,r,n){return this.dataService.getList(t,e,r,n)},St.prototype.filter=function(t,e,r,n){return void 0===t&&(t=[]),void 0===e&&(e=[]),this.dataService.filter(t,e,r,n)},St.prototype.getPagedById=function(t){return this.dataService.getPagedById(t)},St.prototype.queryChild=function(t,e,r,n,o){return this.dataService.queryChild(t,e,r,n,o)},St.prototype.getEntityById=function(t){return this.dataService.getById(t)},St.prototype.updateEntityById=function(t){return this.dataService.updateById(t)},St.prototype.editEntityById=function(t){return this.dataService.editById(t)},St.prototype.createEntity=function(t){return this.dataService.create(t)},St.prototype.appendEntity=function(t){return this.dataService.append(t)},St.prototype.insert=function(t,e){return this.dataService.insert(t,e)},St.prototype.insertByPath=function(t,e){return this.dataService.insertByPath(t,e)},St.prototype.appendEntityByPath=function(t){return this.dataService.appendByPath(t)},St.prototype.removeEntityById=function(t,e){return this.dataService.removeById(t,e)},St.prototype.removeEntityAndSaveById=function(t){return this.dataService.removeAndSaveById(t)},St.prototype.removeEntityByPath=function(t,e){return this.dataService.removeByPath(t,e)},St.prototype.batchRemoveByPath=function(t,e){return this.dataService.batchRemoveByPath(t,e)},St.prototype.saveEntityById=function(t){return this.dataService.applyChangesById(t)},St.prototype.saveEntities=function(){return this.dataService.applyChanges()},St.prototype.cancelEntityChanges=function(){return this.dataService.cancelChanges()},St.prototype.batchAppendByPath=function(t,e){return this.dataService.batchAppendByPath(t,e)},St.prototype.reset=function(){this.entityManager.reset(),this.variableManager.reset(),this.restService.sessionService.clearBeSessionId()},St.prototype.getInjector=function(){return this.injector},St.decorators=[{type:i.Injectable}],St.ctorParameters=function(){return[{type:i.Injector}]},St);function St(t){var e=vt.call(this)||this;e.injector=t,e.entityManager=new nt(e.entityCollection),e.appContext=e.injector.get(I.AppContext);var r=I.MetadataUtil.getPropsMetadatasByName(e.constructor,Z);return e.variableManager=new st(e.appContext,r,e.injector),e.dataService=new lt(e.injector,e),e.serverUri=t.get(p),e}var bt=(Ct.prototype.extendUri=function(t){return this.serverUri+"/"+t},Ct.decorators=[{type:i.Injectable}],Ct.ctorParameters=function(){return[{type:String,decorators:[{type:i.Inject,args:[p]}]}]},Ct);function Ct(t){this.serverUri=t}var mt="DELETE",Et="PUT",xt="POST",Bt=(Pt.prototype.setBaseUri=function(t){this.baseUri=t},Pt.prototype.setProxyExtend=function(t){this.proxyExtend=t},Pt.prototype.query=function(t){var e=this.baseUri;return t&&(e=e+"?entityFilter="+JSON.stringify(t)),this.request(e,"GET")},Pt.prototype.extendQuery=function(t,e){var r=this.baseUri+"/extension/query";t&&(r=r+"?entityFilter="+JSON.stringify(t));var n=e,o=this.addBodyToOptions({},n);return this.request(r,Et,null,o,!1)},Pt.prototype.filter=function(t,e){var r=this.baseUri+"/extension/filter",n={requestInfo:e};t&&(n={entityFilter:t,requestInfo:e});var o=this.addBodyToOptions({},n);return this.request(r,xt,null,o,!1)},Pt.prototype.retrieve=function(t){var e=this.baseUri+"/"+t;return this.request(e,"GET")},Pt.prototype.serviceRetrieve=function(t,e,r){var n=this.baseUri+"/service/retrieve/"+t,o={body:{retrieveParam:e,requestInfo:r}};return this.request(n,Et,null,o)},Pt.prototype.queryChild=function(t){var e=this.baseUri+"/service/querychild",r={body:t};return this.request(e,Et,null,r)},Pt.prototype.extendRetrieve=function(t,e){var r=this.baseUri+"/extension/retrieve/"+t,n=e,o=this.addBodyToOptions({},n);return this.request(r,Et,null,o)},Pt.prototype.edit=function(t,e){var r=this.baseUri+"/service/edit/"+t,n=e,o=this.addBodyToOptions({},n);return this.request(r,Et,null,o)},Pt.prototype.create=function(t,e){var r={defaultValue:t,requestInfo:e},n=this.addBodyToOptions({},r);return this.request(this.baseUri,xt,null,n)},Pt.prototype.createByPath=function(t,e){var r=ht.convertPathToUrl(t),n=""+this.baseUri+r,o=e,i=this.addBodyToOptions({},o);return this.request(n,xt,null,i)},Pt.prototype.update=function(t,e){var r={changeDetail:t,requestInfo:e},n=this.addBodyToOptions({},r);return this.request(this.baseUri,"PATCH",null,n)},Pt.prototype.save=function(t){var e=t,r=this.addBodyToOptions({},e);return this.request(this.baseUri,Et,null,r)},Pt.prototype["delete"]=function(t){var e=this.baseUri+"/"+t;return this.request(e,mt)},Pt.prototype.deleteAndSave=function(t,e){var r=this.baseUri+"/service/delete/"+t,n=e,o=this.addBodyToOptions({},n);return this.request(r,Et,null,o)},Pt.prototype.extendDelete=function(t,e){var r=this.baseUri+"/extension/delete/"+t,n=e,o=this.addBodyToOptions({},n);return this.request(r,Et,null,o)},Pt.prototype.deletByPath=function(t,e){var r=ht.convertPathToUrl(t),n=""+this.baseUri+r+"/"+e;return this.request(n,mt)},Pt.prototype.extendDeletByPath=function(t,e,r){var n=ht.convertPathToUrl(t),o=this.baseUri+"/extension"+n+"/"+e,i=r,a=this.addBodyToOptions({},i);return this.request(o,Et,null,a)},Pt.prototype.batchDeleteByPath=function(t,e,r){var n=t.split("/");if(n.length<3)throw Error("根据path删除实体数据出错了。传入的path["+t+"]格式不对");var o=n[1],i=[];n.forEach(function(t,e){1<e&&i.push(t.substr(0,t.length-1))});var a=i.join("/"),s=this.baseUri+"/extension/"+o+"/"+a+"/batch",p={ids:e.split(","),requestInfo:r},u=this.addBodyToOptions({},p);return this.request(s,Et,null,u)},Pt.prototype.batchDelete=function(t){var e={ids:t.join(",")};return this.request(this.baseUri,mt,e)},Pt.prototype.extendBatchDelete=function(t,e){var r=this.baseUri+"/extension/batchdelete",n={ids:t.join(",")},o=e,i=this.addBodyToOptions({},o);return this.request(r,Et,n,i)},Pt.prototype.cancel=function(t){var e=this.baseUri+"/service/cancel";return this.request(e,xt,null,null,!1,!1,!1,t)},Pt.prototype.batchAppendByPath=function(t,e,r){var n=ht.convertPathToUrl(t),o=""+this.baseUri+n+"/batch",i={requestInfo:r,retrieveDefaultParam:{defaultValues:e}},a=this.addBodyToOptions({},i);return this.request(o,xt,null,a)},Pt.prototype.request=function(e,r,t,n,o,i,a,s){var p=this;n=n||{},void 0!==o&&"boolean"==typeof o||(o=!1),void 0!==i&&"boolean"==typeof i||(i=!1),t&&(n.params=t),n.headers=q.convertToHeaders(n.headers);var u=this.hasRequestInfo(n);return n&&n.body&&n.body.hasOwnProperty("RequestInfo")&&(n.body.requestInfo=n.body.RequestInfo,delete n.body.RequestInfo),this.proxyExtend.extendHeaders(n.headers,s).pipe(l.switchMap(function(t){return n.headers=q.toJson(t),n.observe="response",p.httpService.request(r,e,n)}),l.tap(function(t){return p.proxyExtend.parseHeaders(t)}),l.map(function(t){return t.body}),l.map(function(t){return u?(p.proxyExtend.onResponse(t,a),t):p.unWrapResponseInfo(t)}),l.catchError(function(t){return p.proxyExtend.onError(t,o,i)}))},Pt.prototype.invoke=function(e,r,n){var o=this;return n.params&&(e=this.proxyExtend.extendUrl(e,n.params),n.params=null),n.body&&(n.body=this.proxyExtend.extendBody(n.body)),n.headers=q.convertToHeaders(n.headers),this.proxyExtend.extendHeaders(n.headers).pipe(l.switchMap(function(t){return n.headers=q.toJson(t),n.observe="response",o.httpService.request(r,e,n).pipe(l.tap(function(t){return o.proxyExtend.parseHeaders(t)}),l.map(function(t){return t.body}),l.map(function(t){return o.proxyExtend.onResponse(t)}),l.catchError(function(t){return o.proxyExtend.onError(t,!1,!1)}))}))},Pt.prototype.addBodyToOptions=function(t,e){return t=t||{},Object.assign(t,{body:e})},Pt.prototype.buildParams=function(t){return w.buildParams(t)},Pt.prototype.hasRequestInfo=function(t){return j.hasRequestInfo(t)||j.hasRequestInfoWithR(t)},Pt.prototype.unWrapResponseInfo=function(t){return M.unWrapResponseInfo(t)},Pt.decorators=[{type:i.Injectable}],Pt.ctorParameters=function(){return[{type:a.HttpClient},{type:bt}]},Pt);function Pt(t,e){this.httpClient=t,this.uriService=e,this.httpService=new H(this.httpClient)}var Rt=(Object.defineProperty(Dt.prototype,"proxy",{get:function(){return this.repository.proxy?this.repository.proxy:this.createBefProxy()},enumerable:!0,configurable:!0}),Dt.prototype.createBefProxy=function(){var t=this.repository.serverUri,e=new bt(t),r=new Bt(this.httpClient,e);r.setBaseUri(this.baseUri);var n=new dt(this.repository);return r.setProxyExtend(n),r},Dt.prototype.query=function(t){return this.proxy.query(t)},Dt.prototype.extendQuery=function(t,e){return this.proxy.extendQuery(t,e)},Dt.prototype.serviceRetrieve=function(t,e,r){return this.proxy.serviceRetrieve(t,e,r)},Dt.prototype.queryChild=function(t){return this.proxy.queryChild(t)},Dt.prototype.retrieve=function(t){return this.proxy.retrieve(t)},Dt.prototype.extendRetrieve=function(t,e){return this.proxy.extendRetrieve(t,e)},Dt.prototype.create=function(t,e){return this.proxy.create(t,e)},Dt.prototype.createByPath=function(t,e){return this.proxy.createByPath(t,e)},Dt.prototype.update=function(t,e){return this.proxy.update(t,e)},Dt.prototype.save=function(t){return this.proxy.save(t)},Dt.prototype["delete"]=function(t){return this.proxy["delete"](t)},Dt.prototype.extendDelete=function(t,e){return this.proxy.extendDelete(t,e)},Dt.prototype.deletByPath=function(t,e){return this.proxy.deletByPath(t,e)},Dt.prototype.extendDeletByPath=function(t,e,r){return this.proxy.extendDeletByPath(t,e,r)},Dt.prototype.batchDeleteByPath=function(t,e,r){return this.proxy.batchDeleteByPath(t,e,r)},Dt.prototype.batchDelete=function(t){return this.proxy.batchDelete(t)},Dt.prototype.extendBatchDelete=function(t,e){return this.proxy.extendBatchDelete(t,e)},Dt.prototype.cancel=function(t){return this.proxy.cancel(t)},Dt.prototype.request=function(t,e,r,n,o,i,a){return this.innerRequest(t,e,r,n,o,i,a,!1)},Dt.prototype.invoke=function(t,e,r,n,o,i,a){if(n&&n.body&&n.body.RequestInfo)throw new Error("请使用requestInfo提交变更");return this.innerRequest(t,e,r,n,o,i,a,!0)},Dt.prototype.innerRequest=function(e,r,t,n,o,i,a,s){var p=this;n=n||{};var u="BEFSessionID";void 0!==o&&"boolean"==typeof o||(o=!1),void 0!==i&&"boolean"==typeof i||(i=!1),void 0!==s&&"boolean"==typeof s||(s=!1);var c=s?this.existRequestInfo:this.hasRequestInfo;t&&(n.params=t);var h=c(n),y=q.convertToHeaders(n.headers);return this.sessionService.getBeSessionId().pipe(l.switchMap(function(t){return y=p.sessionService.extendRequestHeaders(y),n.headers=q.toJson(y),n.observe="response",p.httpService.request(r,e,n)}),l.tap(function(t){t.headers&&t.headers.has(u)&&p.sessionService.setBeSessionId(t.headers.get(u))}),l.map(function(t){return t.body}),l.map(function(t){return p.handleReponseInfo(t,h,a)}),l.catchError(function(t){return p.handleErrors(t,o,i)}))},Dt.prototype.handleReponseInfo=function(t,e,r){return e?(t&&t.innerDataChange&&!0!==r&&this.repository.handleDataChangeDetails(t.innerDataChange),this.repository.clearAllEntityChanges(),t):this.unWrapResponseInfo(t)},Dt.prototype.handleErrors=function(t,e,r){if(this.clearLoading(),e)return f.throwError(t);var n=this.repository.appContext.getFormAppContext(),o=n.ApplicationId,i=!!(window[o]||{}).isExceptionHandlerExist;return this.eventBus&&i&&!M.isReported401Error(t)?(this.eventBus.post("Exception","","onException",t,n),r?f.of(null):f.EMPTY):f.throwError(t)},Dt.prototype.clearLoading=function(){var t,e;if(!1!==(window.DEVKIT_LOADING_SERVICE&&window.DEVKIT_LOADING_SERVICE instanceof Array&&0<window.DEVKIT_LOADING_SERVICE.length||!1)){var r=window.DEVKIT_LOADING_SERVICE;try{for(var n=P(r),o=n.next();!o.done;o=n.next()){var i=o.value;"function"==typeof i.clearAll&&i.clearAll()}}catch(a){t={error:a}}finally{try{o&&!o.done&&(e=n["return"])&&e.call(n)}finally{if(t)throw t.error}}}},Dt.prototype.unWrapResponseInfo=function(t){return M.unWrapResponseInfo(t)},Dt.prototype.hasRequestInfo=function(t){return j.hasRequestInfoWithR(t)},Dt.prototype.existRequestInfo=function(t){return j.hasRequestInfo(t)},Dt.prototype.buildParams=function(t){return w.buildParams(t)},Dt.prototype.buildBodyWithRequestInfo=function(t){return j.buildBodyWithRequestInfo(t,this.repository)},Dt.prototype.buildRequestInfo=function(){return j.buildRequestInfo(this.repository)},Dt.decorators=[{type:i.Injectable}],Dt.ctorParameters=function(){return[{type:a.HttpClient},{type:String},{type:g},{type:It},{type:I.EventBus}]},Dt);function Dt(t,e,r,n,o){this.httpClient=t,this.httpService=new H(this.httpClient),this.baseUri=e;var i=n.getInjector();this.sessionService=new Q(t,e,r,i),this.repository=n,this.eventBus=o}var qt=(Ot.prototype.getData=function(t,e){var r=t.split(".")[0],n=t.split(".")[1];return e=e||{},!0===this.ifEnableExtendLoadMethod(t)?this.extendGetHelpData(n,r,e):this.getHelpData(n,r,e)},Ot.prototype.saveUserSettings=function(t){return this.befRepository.restService.invoke("/api/runtime/bcc/v1.0/datagrid/settings","POST",null,{body:t},!1)},Ot.prototype.getUserSettings=function(t){var e="/api/runtime/bcc/v1.0/datagrid/settings/"+t;return this.befRepository.restService.invoke(e,"GET",null,null,!1)},Ot.prototype.ifEnableExtendLoadMethod=function(t){if(this.context&&this.context.hasOwnProperty("enableExtendLoadMethod"))return this.context.enableExtendLoadMethod;var e=!1;if(this.frameContext){var r=t+"@"+this.frameContext.repository.apiUri;e=this.frameContext.getParam(r)}return e},Ot.prototype.getHelpData=function(t,e,r){var n=this,o=this.befRepository.restService.baseUri+"/elementhelps/"+t;return this.befRepository.updateDataAndVariableChanges().pipe(l.switchMap(function(){return n.befRepository.restService.invoke(o,"GET",{nodeCode:e,queryParam:JSON.stringify(r)},null,!1)}))},Ot.prototype.extendGetHelpData=function(t,e,r){var n=this.befRepository.restService.baseUri+"/extension/elementhelps",o={body:{labelId:t,nodeCode:e,queryParam:r,requestInfo:this.befRepository.restService.buildRequestInfo()}};return this.befRepository.restService.invoke(n,"PUT",null,o,!1,!0,!0).pipe(l.map(function(t){return t&&t.returnValue||null}))},Ot.prototype.convert2TreeDataWithPathCode=function(n,e,r){var o=this;void 0===e&&(e=1),void 0===r&&(r="01");var t=n.filter(function(t){return t.layer===e&&t.pathcode===r});if(1<e&&(t=n.filter(function(t){return t.layer===e&&t.pathcode.substr(0,2*(e-1))===r})),t.length){var i=t.map(function(t){return{data:t,children:[]}});return i.forEach(function(t){var e,r=o.convert2TreeDataWithPathCode(n,t.data.layer+1,t.data.pathcode);(e=t.children).push.apply(e,D(r))}),i}},Ot.decorators=[{type:i.Injectable}],Ot.ctorParameters=function(){return[{type:I.Repository},{type:I.FrameContext,decorators:[{type:i.Optional}]}]},Ot);function Ot(t,e){this.frameContext=e,this.befRepository=t}var wt=(Tt.prototype.createSession=function(t){var e=this.sessionService.getUserSessionId();return e?this.befRepository.restService.invoke(t,"POST",null,{headers:new a.HttpHeaders({SessionId:e}),responseType:"text"},!1).pipe(l.switchMap(function(t){return f.of({status:!0,payload:t})})):f.of({status:!1,payload:"用户登录信息已过期,请重新登录"})},Tt.prototype.getData=function(t,e){var r=this,n={};e.condition&&(n=e.condition),"/"===t[t.length-1]&&(t=t.substr(0,t.length-1));var o=t+"/extension/query",i=t+"/service/createsession";if(n){var a=JSON.stringify(n);o=o+"?entityFilter="+a}return this.createSession(i).pipe(l.switchMap(function(t){if(t.status)return t.payload,r.befRepository.restService.invoke(o,"PUT",null,{},!1);throw new Error(t.payload)}),s.map(function(t){var e=t.returnValue,r={items:e.result};return e.pagination?Object.assign({},r,{total:e.pagination.totalCount,pageInfo:{pageSize:e.pagination.pageSize,pageIndex:e.pagination.pageIndex,enablePager:!0}}):r}))},Tt.decorators=[{type:i.Injectable}],Tt.ctorParameters=function(){return[{type:I.Repository},{type:g}]},Tt);function Tt(t,e){this.sessionService=e,this.befRepository=t}var jt=(Ut.isExistUnsaveData=function(t){var e=!1;if(!t||!t.entityCollection)throw"Current Object is null or it's entityCollection is null.";var r=t.entityCollection.toArray();if(t.dataChangeHistory.isChanged())return!0;for(var n=0;n<r.length;n++)if(0<r[n].changes.length){e=!0;break}return e},Ut);function Ut(){}var Mt=(At.prototype.toString=function(){return this.url},At);function At(t,e){void 0===e&&(e=null);var r=this;this.url=t,this.paths=e,this.paths&&Object.keys(e).forEach(function(t){-1!==r.url.indexOf("{"+t+"}")&&(r.url=r.url.replace("{"+t+"}",""+e[t]))})}var Ht=(Vt.prototype.getData=function(t,e,r){void 0===e&&(e={}),void 0===r&&(r="GET");var n=new a.HttpHeaders({"content-type":"application/json"});return this.befRest.restService.invoke(t,r,e,{headers:n})},Vt.decorators=[{type:i.Injectable}],Vt.ctorParameters=function(){return[{type:I.Repository}]},Vt);function Vt(t){this.befRest=t}var Ft=(kt.prototype.getData=function(t,e,r){void 0===e&&(e={}),void 0===r&&(r="GET");var n=new a.HttpHeaders({"content-type":"application/json"});return this.befRest.restService.invoke(t,r,e,{headers:n})},kt.decorators=[{type:i.Injectable}],kt.ctorParameters=function(){return[{type:I.Repository}]},kt);function kt(t){this.befRest=t}t.VERSION="ver.",t.ChangeDetailType=S,t.BE_SERVER_URI_TOKEN=p,t.BE_SESSION_HANDLING_STRATEGY_TOKEN=u,t.BefChangeBuilder=c,t.BefChangeHandler=y,t.BefSessionService=Q,t.BefRestService=Rt,t.BefProxy=Bt,t.BefLookupRestService=qt,t.BefLookupDefaultService=wt,t.BefRepository=It,t.FrameworkSessionService=g,t.NG_VARIABLE=Z,t.NgVariable=$,t.BefRepositoryUtil=jt,t.BefDataPathUtil=ht,t.UriService=bt,t.Uri=Mt,t.DefaultComboHttpService=Ht,t.DefaultDynamiControlGroupHttpService=Ft,t.ɵa=tt,Object.defineProperty(t,"__esModule",{value:!0})});
//# sourceMappingURL=farris-bef.umd.min.js.map

@@ -410,3 +410,3 @@ /**

requestInfo,
retrieveDafaultParm: {
retrieveDefaultParam: {
defaultValues

@@ -610,2 +610,2 @@ }

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvYmVmX3Byb3h5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUEyQixVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztNQUd2QyxHQUFHLEdBQUcsS0FBSzs7TUFDWCxNQUFNLEdBQUcsUUFBUTs7TUFDakIsR0FBRyxHQUFHLEtBQUs7O01BQ1gsSUFBSSxHQUFHLE1BQU07O01BQ2IsS0FBSyxHQUFHLE9BQU87Ozs7OztBQVFyQixNQUFNLE9BQU8sUUFBUTs7Ozs7SUFPbkIsWUFBbUIsVUFBc0IsRUFBUyxVQUFzQjtRQUFyRCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0RSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0RCxDQUFDOzs7Ozs7SUFLTSxVQUFVLENBQUMsT0FBZTtRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDOzs7Ozs7SUFLTSxjQUFjLENBQUMsV0FBeUI7UUFDN0MsSUFBSSxDQUFDLFdBQVcsR0FB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QUFPLElBQUksRUFBRSxDQUFDOztjQUNsQixhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUN0RCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDOzs7Ozs7O0lBS08sV0FBVyxDQUFDLE1BQWM7UUFDaEMsT0FBTyxhQUFhLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUM7Ozs7Ozs7SUFJTyxjQUFjLENBQUMsT0FBWTtRQUNqQyxPQUFPLGVBQWUsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksZUFBZSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pHLENBQUM7Ozs7Ozs7SUFJTyxrQkFBa0IsQ0FBQyxNQUFXO1FBQ3BDLE9BQU8sZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckQsQ0FBQzs7O1lBMVpGLFVBQVU7Ozs7WUFuQnVCLFVBQVU7WUFHbkMsVUFBVTs7Ozs7OztJQWtCakIsK0JBQW9DOzs7Ozs7SUFJcEMsMkJBQTBCOzs7OztJQUMxQiwrQkFBaUM7O0lBQ3JCLDhCQUE2Qjs7SUFBRSw4QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBlbXB0eSwgdGhyb3dFcnJvciwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwLCBtYXAsIGNhdGNoRXJyb3IsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMsIEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IElQcm94eUV4dGVuZCwgUmVxdWVzdEluZm8sIFJlc3BvbnNlSW5mbywgQ2hhbmdlRGV0YWlsIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IEJlZkRhdGFQYXRoVXRpbCB9IGZyb20gJy4vYmVmX2RhdGFfcGF0aF91dGlsJztcclxuaW1wb3J0IHsgVXJpU2VydmljZSB9IGZyb20gJy4vdXJpX3NlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdHRwSGVhZGVyVXRpbCwgSHR0cFBhcmFtVXRpbCwgUmVxdWVzdEluZm9VdGlsLCBSZXNwb25zZUluZm9VdGlsIH0gZnJvbSAnLi91dGlscy9pbmRleCc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi9odHRwX3NlcnZpY2UnO1xyXG5cclxuXHJcbmNvbnN0IEdFVCA9ICdHRVQnO1xyXG5jb25zdCBERUxFVEUgPSAnREVMRVRFJztcclxuY29uc3QgUFVUID0gJ1BVVCc7XHJcbmNvbnN0IFBPU1QgPSAnUE9TVCc7XHJcbmNvbnN0IFBBVENIID0gJ1BBVENIJztcclxuXHJcbi8qKlxyXG4gKiBCZWbku6PnkIbnsbtcclxuICog5Luj55CG57G755qE6IGM6LSj5piv5aSE55CGaHR0cOivt+axgu+8jOWPkemAgeS4gOS4qmh0dHDor7fmsYLmiYDpnIDnmoTotYTmupDmnInvvJp1cmnvvIxtZXRob2TvvIxoZWFkZXLjgIFib2R544CBcXVlcnkgcGFyYW1ldGVyXHJcbiAqIHVyaSDnlLF1cmlTZXJ2aWNlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBCZWZQcm94eSB7XHJcbiAgcHJvdGVjdGVkIHByb3h5RXh0ZW5kOiBJUHJveHlFeHRlbmQ7XHJcbiAgLyoqXHJcbiAgICogcmVzdGZ1bOWfuui3r+W+hFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBiYXNlVXJpOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFNlcnZpY2U7XHJcbiAgY29uc3RydWN0b3IocHVibGljIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIHB1YmxpYyB1cmlTZXJ2aWNlOiBVcmlTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmh0dHBTZXJ2aWNlID0gbmV3IEh0dHBTZXJ2aWNlKHRoaXMuaHR0cENsaWVudCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOiuvue9ruWfuui3r+W+hFxyXG4gICAqIEBwYXJhbSBiYXNlVXJpIOWfuui3r+W+hFxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRCYXNlVXJpKGJhc2VVcmk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5iYXNlVXJpID0gYmFzZVVyaTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog6K6+572u562W55Wl5qih5byPXHJcbiAgICogQHBhcmFtIHN0cmF0ZWd5IOetlueVpVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRQcm94eUV4dGVuZChwcm94eUV4dGVuZDogSVByb3h5RXh0ZW5kKSB7XHJcbiAgICB0aGlzLnByb3h5RXh0ZW5kID0gcHJveHlFeHRlbmQ7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOafpeivolxyXG4gICAqL1xyXG4gIHB1YmxpYyBxdWVyeShlbnRpdHlGaWx0ZXI/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IHVybCA9IHRoaXMuYmFzZVVyaTtcclxuICAgIGlmIChlbnRpdHlGaWx0ZXIpIHtcclxuICAgICAgY29uc3QgZW50aXR5RmlsdGVySnNvbiA9IEpTT04uc3RyaW5naWZ5KGVudGl0eUZpbHRlcik7XHJcbiAgICAgIHVybCA9IGAke3VybH0/ZW50aXR5RmlsdGVyPSR7ZW50aXR5RmlsdGVySnNvbn1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIEdFVCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmianlsZXmn6Xor6JcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kUXVlcnkoZW50aXR5RmlsdGVyOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBsZXQgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vcXVlcnlgO1xyXG4gICAgaWYgKGVudGl0eUZpbHRlcikge1xyXG4gICAgICBjb25zdCBlbnRpdHlGaWx0ZXJKc29uID0gSlNPTi5zdHJpbmdpZnkoZW50aXR5RmlsdGVyKTtcclxuICAgICAgdXJsID0gYCR7dXJsfT9lbnRpdHlGaWx0ZXI9JHtlbnRpdHlGaWx0ZXJKc29ufWA7XHJcbiAgICB9XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMsIGZhbHNlKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5p+l6K+i5pWw5o2u77yI5bim6L+H5ruk5p2h5Lu277yJXHJcbiAgICogQHBhcmFtIGVudGl0eUZpbHRlciDov4fmu6TjgIHmjpLluo/jgIHliIbpobXkv6Hmga9cclxuICAgKiBAcGFyYW0gcmVxdWVzdEluZm8gcmVxdWVzdEluZm9cclxuICAgKiBAZGVzY3JpcHRpb24g5ZKMZXh0ZW5kUXVlcnnkuIDoh7TvvIzku4XlsIbmn6Xor6Llj4LmlbDmlL7liLBib2R55LitXHJcbiAgICovXHJcbiAgcHVibGljIGZpbHRlcihlbnRpdHlGaWx0ZXI6IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGxldCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9maWx0ZXJgO1xyXG4gICAgbGV0IGJvZHk6IGFueSA9IHsgcmVxdWVzdEluZm8gfTtcclxuICAgIGlmIChlbnRpdHlGaWx0ZXIpIHtcclxuICAgICAgYm9keSA9IHsgZW50aXR5RmlsdGVyLCByZXF1ZXN0SW5mbyB9O1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUE9TVCwgbnVsbCwgb3B0aW9ucywgZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qOA57Si5pWw5o2uXHJcbiAgICogQHBhcmFtIGlkIOWNleaNruWGheeggVxyXG4gICAqIEByZXR1cm4g5pWw5o2u5a+56LGhXHJcbiAgICovXHJcbiAgcHVibGljIHJldHJpZXZlKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS8ke2lkfWA7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgR0VUKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5YiG6aG15p+l6K+i5ZCE5LuO6KGo5pWw5o2uXHJcbiAgICogQHBhcmFtIGlkIOS4u+ihqGlkXHJcbiAgICogQHBhcmFtIG9wdGlvbnMg6YCJ6aG5XHJcbiAgICovXHJcbiAgcHVibGljIHNlcnZpY2VSZXRyaWV2ZShpZDogc3RyaW5nLCByZXRyaWV2ZVBhcmFtOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvcmV0cmlldmUvJHtpZH1gO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgYm9keTogeyByZXRyaWV2ZVBhcmFtLCByZXF1ZXN0SW5mbyB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOWIhumhteafpeivouS7juihqC/ku47ku47ooajmlbDmja5cclxuICAgKiBAcGFyYW0gcGFyYW1zIOWPguaVsFxyXG4gICAqL1xyXG4gIHB1YmxpYyBxdWVyeUNoaWxkKHBhcmFtczogYW55KSB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvcXVlcnljaGlsZGA7XHJcbiAgICBjb25zdCBvcHRpb25zID0geyBib2R5OiBwYXJhbXMgfTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qOA57Si5pWw5o2u77yI5omp5bGV77yJXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZFJldHJpZXZlKGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9yZXRyaWV2ZS8ke2lkfWA7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qOA57Si5pWw5o2uXHJcbiAgICovXHJcbiAgcHVibGljIGVkaXQoaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vc2VydmljZS9lZGl0LyR7aWR9YDtcclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliJvlu7rkuIDmnaHmlbDmja5cclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlKGRlZmF1bHRWYWx1ZT86IGFueSwgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICBkZWZhdWx0VmFsdWUsXHJcbiAgICAgIHJlcXVlc3RJbmZvOiByZXF1ZXN0SW5mbyxcclxuICAgIH07XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodGhpcy5iYXNlVXJpLCBQT1NULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOS7juihqOaWsOWinlxyXG4gICAqIEBwYXRoIOaWsOWinui3r+W+hO+8iOS7juihqOW9ouWmgu+8mi8xL2VkdXPvvIzku47ku47ooajlvaLlpoLvvJovMS9lZHVzLzExL2dyYWRlc++8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBjcmVhdGVCeVBhdGgoZnBhdGg6IHN0cmluZywgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBwYXRoVXJsID0gQmVmRGF0YVBhdGhVdGlsLmNvbnZlcnRQYXRoVG9VcmwoZnBhdGgpO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfSR7cGF0aFVybH1gO1xyXG5cclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBPU1QsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5o+Q5Lqk5Y+Y5pu0XHJcbiAgICovXHJcbiAgdXBkYXRlKGNoYW5nZURldGFpbDogQ2hhbmdlRGV0YWlsLCByZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgIGNoYW5nZURldGFpbCxcclxuICAgICAgcmVxdWVzdEluZm86IHJlcXVlc3RJbmZvLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodGhpcy5iYXNlVXJpLCBQQVRDSCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmiafooYzkv53lrZhcclxuICAgKi9cclxuICBwdWJsaWMgc2F2ZShyZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh0aGlzLmJhc2VVcmksIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaRcclxuICAgKi9cclxuICBwdWJsaWMgZGVsZXRlKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS8ke2lkfWA7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgREVMRVRFKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIoOmZpOW5tuS/neWtmFxyXG4gICAqL1xyXG4gIHB1YmxpYyBkZWxldGVBbmRTYXZlKGlkOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvZGVsZXRlLyR7aWR9YDtcclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaTvvIjmianlsZXvvIlcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kRGVsZXRlKGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9kZWxldGUvJHtpZH1gO1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIoOmZpOWQjuS7o1xyXG4gICAqIEBwYXJhbSBmcGF0aCDniLbot6/lvoTvvIjku47ooajlvaLlpoLvvJovMS9lZHVz77yM5LuO5LuO6KGo5b2i5aaC77yaLzEvZWR1cy8xMS9ncmFkZXPvvIlcclxuICAgKi9cclxuICBwdWJsaWMgZGVsZXRCeVBhdGgoZnBhdGg6IHN0cmluZywgaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBwYXRoVXJsID0gQmVmRGF0YVBhdGhVdGlsLmNvbnZlcnRQYXRoVG9VcmwoZnBhdGgpO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfSR7cGF0aFVybH0vJHtpZH1gO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIERFTEVURSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaTlkI7ku6PvvIjmianlsZXvvIlcclxuICAgKiBAcGFyYW0gZnBhdGgg54i26Lev5b6E77yI5LuO6KGo5b2i5aaC77yaLzEvZWR1c++8jOS7juS7juihqOW9ouWmgu+8mi8xL2VkdXMvMTEvZ3JhZGVz77yJXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZERlbGV0QnlQYXRoKGZwYXRoOiBzdHJpbmcsIGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCBwYXRoVXJsID0gQmVmRGF0YVBhdGhVdGlsLmNvbnZlcnRQYXRoVG9VcmwoZnBhdGgpO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24ke3BhdGhVcmx9LyR7aWR9YDtcclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaJuemHj+WIoOmZpOWQjuS7o1xyXG4gICAqIEBwYXJhbSBmUGF0aCAnZXh0ZW5zaW9uL3tyb290SWR9L2NjL2JhdGNoJ1xyXG4gICAqIEBwYXJhbSAgaWRzIOWtkOmbhmlkXHJcbiAgICogQHBhcmFtICByZXF1ZXN0SW5mbyDor7fmsYLkv6Hmga9cclxuICAgKi9cclxuICBwdWJsaWMgYmF0Y2hEZWxldGVCeVBhdGgoZlBhdGg6IHN0cmluZywgaWRzOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCBwYXRoQXJyYXkgPSBmUGF0aC5zcGxpdCgnLycpO1xyXG4gICAgaWYgKHBhdGhBcnJheS5sZW5ndGggPCAzKSB7XHJcbiAgICAgIHRocm93IEVycm9yKGDmoLnmja5wYXRo5Yig6Zmk5a6e5L2T5pWw5o2u5Ye66ZSZ5LqG44CC5Lyg5YWl55qEcGF0aFske2ZQYXRofV3moLzlvI/kuI3lr7lgKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJvb3RJZCA9IHBhdGhBcnJheVsxXTtcclxuLyogICAgY29uc3QgY2hpbGQgPSBwYXRoQXJyYXlbcGF0aEFycmF5Lmxlbmd0aCAtIDFdO1xyXG4gICAgY29uc3QgY2hpbGROYW1lID0gY2hpbGQuc3Vic3RyKDAsIGNoaWxkLmxlbmd0aCAtIDEpOyovXHJcbiAgICBjb25zdCBuYW1lQXJyYXkgPSBbXTtcclxuICAgIC8q6YGN5Y6G5LuO6KGo77yM5LuO5LuO6KGoKi9cclxuICAgIHBhdGhBcnJheS5mb3JFYWNoKChuYW1lLCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAoaW5kZXggPiAxKSB7XHJcbiAgICAgICAgbmFtZUFycmF5LnB1c2gobmFtZS5zdWJzdHIoMCwgbmFtZS5sZW5ndGggLSAxKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29uc3QgY2hpbGROYW1lID0gbmFtZUFycmF5LmpvaW4oJy8nKTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uLyR7cm9vdElkfS8ke2NoaWxkTmFtZX0vYmF0Y2hgO1xyXG4gICAgY29uc3QgaWRzQXJyYXkgPSBpZHMuc3BsaXQoJywnKTtcclxuICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgIGlkczogaWRzQXJyYXksXHJcbiAgICAgIHJlcXVlc3RJbmZvOiByZXF1ZXN0SW5mb1xyXG4gICAgfTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaJuemHj+WIoOmZpFxyXG4gICAqIEBwYXJhbSBpZHMg5b6F5Yig6Zmk55qEaWTmlbDnu4RcclxuICAgKi9cclxuICBwdWJsaWMgYmF0Y2hEZWxldGUoaWRzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIGlkczogaWRzLmpvaW4oJywnKVxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodGhpcy5iYXNlVXJpLCBERUxFVEUsIHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmibnph4/liKDpmaTvvIjmianlsZXvvIlcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kQmF0Y2hEZWxldGUoaWRzOiBzdHJpbmdbXSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uL2JhdGNoZGVsZXRlYDtcclxuICAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAgICAgaWRzOiBpZHMuam9pbignLCcpXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgcGFyYW1zLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiDlj5bmtohcclxuICAgKi9cclxuICBwdWJsaWMgY2FuY2VsKGNvbnRleHQ/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9zZXJ2aWNlL2NhbmNlbGA7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUE9TVCwgbnVsbCwgbnVsbCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY29udGV4dCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmibnph4/mlrDlop7ku47ooagv5LuO5LuO6KGo5pWw5o2uXHJcbiAgICogQHBhcmFtIHBhdGgg5a6e5L2T57uR5a6a6Lev5b6E77yMbGlrZSAxL2NoaWxkcyBvciAxL2NoaWxkcy8xMS9jaGlsZGNoaWxkc1xyXG4gICAqIEBwYXJhbSBkZWZhdWx0VmFsdWVzIOm7mOiupOWunuS9k+aVsOaNruaVsOe7hFxyXG4gICAqL1xyXG4gIHB1YmxpYyBiYXRjaEFwcGVuZEJ5UGF0aChwYXRoOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZXM6IEFycmF5PGFueT4sIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBwYXRoVXJsID0gQmVmRGF0YVBhdGhVdGlsLmNvbnZlcnRQYXRoVG9VcmwocGF0aCk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9JHtwYXRoVXJsfS9iYXRjaGA7XHJcbiAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICByZXF1ZXN0SW5mbyxcclxuICAgICAgcmV0cmlldmVEYWZhdWx0UGFybToge1xyXG4gICAgICAgIGRlZmF1bHRWYWx1ZXNcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBPU1QsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG4gIHB1YmxpYyByZXF1ZXN0KFxyXG4gICAgdXJsOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nLCBwYXJhbXM/OiBhbnksIG9wdGlvbnM/OiBhbnksXHJcbiAgICBzZWxmSGFuZEVycm9yPzogYm9vbGVhbiwgaWdub3JlRXJyb3I/OiBib29sZWFuLCBpZ25vcmVDaGFuZ2VzPzogYm9vbGVhbiwgcnVudGltZUNvbnRleHQ/OiBhbnlcclxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XHJcblxyXG4gICAgLy8g5piv5ZCm6Ieq6KGM5aSE55CG6ZSZ6K+vXHJcbiAgICBpZiAodHlwZW9mIChzZWxmSGFuZEVycm9yKSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIChzZWxmSGFuZEVycm9yKSAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHNlbGZIYW5kRXJyb3IgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDmmK/lkKblv73nlaXlvILluLjnu6fnu63miafooYxcclxuICAgIGlmICh0eXBlb2YgKGlnbm9yZUVycm9yKSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIChpZ25vcmVFcnJvcikgIT09ICdib29sZWFuJykge1xyXG4gICAgICBpZ25vcmVFcnJvciA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHBhcmFtc1xyXG4gICAgaWYgKHBhcmFtcykge1xyXG4gICAgICAvLyBjb25zdCBodHRwUGFyYW1zID0gdGhpcy5idWlsZFBhcmFtcyhwYXJhbXMpO1xyXG4gICAgICBvcHRpb25zLnBhcmFtcyA9IHBhcmFtcztcclxuICAgIH1cclxuXHJcbiAgICAvLyDlpITnkIZoZWFkZXJzXHJcbiAgICBvcHRpb25zLmhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC5jb252ZXJ0VG9IZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XHJcbiAgICAvLyAx44CB5Yik5pat5piv5ZCm5bimcmVxdWVzdEluZm/vvIjkuI3ljLrliIbpppblrZfmr43lpKflsI/lhpnvvIk7XHJcbiAgICAvLyAy44CB5aaC5p6c5Lyg6YCS55qE5pivUmVxdWVzdEluZm/vvIzliJnovazmjaLkuLpyZXF1ZXN0SW5mb++8m1xyXG4gICAgY29uc3QgaGFzUmVxdWVzdEluZm8gPSB0aGlzLmhhc1JlcXVlc3RJbmZvKG9wdGlvbnMpO1xyXG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5ib2R5ICYmIG9wdGlvbnMuYm9keS5oYXNPd25Qcm9wZXJ0eSgnUmVxdWVzdEluZm8nKSkge1xyXG4gICAgICBvcHRpb25zLmJvZHkucmVxdWVzdEluZm8gPSBvcHRpb25zLmJvZHkuUmVxdWVzdEluZm87XHJcbiAgICAgIGRlbGV0ZSBvcHRpb25zLmJvZHkuUmVxdWVzdEluZm87XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eUV4dGVuZC5leHRlbmRIZWFkZXJzKG9wdGlvbnMuaGVhZGVycywgcnVudGltZUNvbnRleHQpLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcChoZWFkZXJzID0+IHtcclxuICAgICAgICBvcHRpb25zLmhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC50b0pzb24oaGVhZGVycyk7XHJcbiAgICAgICAgb3B0aW9ucy5vYnNlcnZlID0gJ3Jlc3BvbnNlJztcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5yZXF1ZXN0KG1ldGhvZCwgdXJsLCBvcHRpb25zKTtcclxuICAgICAgfSksXHJcbiAgICAgIHRhcCgocmVzcG9uc2U6IGFueSkgPT4gdGhpcy5wcm94eUV4dGVuZC5wYXJzZUhlYWRlcnMocmVzcG9uc2UpKSxcclxuICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0LmJvZHkpLFxyXG4gICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGhhc1JlcXVlc3RJbmZvKSB7XHJcbiAgICAgICAgICB0aGlzLnByb3h5RXh0ZW5kLm9uUmVzcG9uc2UocmVzdWx0LCBpZ25vcmVDaGFuZ2VzKTtcclxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAvLyBib2R56YeM5rKh5pyJcmVxdWVzdEluZm/nmoTmg4XlhrXvvIzmqKHmi5/ogIHnmoTlpITnkIbmlrnlvI/vvIjkuI3muIXnkIblj5jmm7TjgIHlsIZyZXR1cm5WYWx1Zeino+aekOWHuuadpe+8iVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMudW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHlFeHRlbmQub25FcnJvcihlcnJvciwgc2VsZkhhbmRFcnJvciwgaWdub3JlRXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiwg+eUqGh0dHBjbGllbnTlj5bmlbBcclxuICAgKiBAcGFyYW0gdXJsIHVybFxyXG4gICAqIEBwYXJhbSBtZXRob2QgbWV0aG9kc1xyXG4gICAqIEBwYXJhbSBvcHRpb25zIG9wdGlvbnNcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgaW52b2tlKHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgb3B0aW9uczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGlmIChvcHRpb25zLnBhcmFtcykge1xyXG4gICAgICB1cmwgPSB0aGlzLnByb3h5RXh0ZW5kLmV4dGVuZFVybCh1cmwsIG9wdGlvbnMucGFyYW1zKTtcclxuICAgICAgb3B0aW9ucy5wYXJhbXMgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKG9wdGlvbnMuYm9keSkge1xyXG4gICAgICBvcHRpb25zLmJvZHkgPSB0aGlzLnByb3h5RXh0ZW5kLmV4dGVuZEJvZHkob3B0aW9ucy5ib2R5KTtcclxuICAgIH1cclxuICAgIG9wdGlvbnMuaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLmNvbnZlcnRUb0hlYWRlcnMob3B0aW9ucy5oZWFkZXJzKTtcclxuICAgIGNvbnN0IGhlYWRlcnMkID0gdGhpcy5wcm94eUV4dGVuZC5leHRlbmRIZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XHJcbiAgICByZXR1cm4gaGVhZGVycyQucGlwZShcclxuICAgICAgc3dpdGNoTWFwKGhlYWRlcnMgPT4ge1xyXG4gICAgICAgIG9wdGlvbnMuaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLnRvSnNvbihoZWFkZXJzKTtcclxuICAgICAgICBvcHRpb25zLm9ic2VydmUgPSAncmVzcG9uc2UnO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnJlcXVlc3QobWV0aG9kLCB1cmwsIG9wdGlvbnMpXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgdGFwKChyZXNwb25zZTogYW55KSA9PiB0aGlzLnByb3h5RXh0ZW5kLnBhcnNlSGVhZGVycyhyZXNwb25zZSkpLFxyXG4gICAgICAgICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiByZXN1bHQuYm9keSksXHJcbiAgICAgICAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHRoaXMucHJveHlFeHRlbmQub25SZXNwb25zZShyZXN1bHQpKSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB0aGlzLnByb3h5RXh0ZW5kLm9uRXJyb3IoZXJyb3IsIGZhbHNlLCBmYWxzZSkpXHJcbiAgICAgICAgICApO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWQkUh0dHBPcHRpb25z5a+56LGh5Lit5re75YqgYm9keVxyXG4gICAqIEBwYXJhbSBvcHRpb25zIOWOn+adpeeahG9wdGlvbnNcclxuICAgKiBAcGFyYW0gYm9keSBib2R55YaF5a65XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhZGRCb2R5VG9PcHRpb25zKG9wdGlvbnM6IGFueSwgYm9keTogYW55KSB7XHJcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcclxuICAgIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHsgYm9keSB9KTtcclxuICAgIHJldHVybiBtZXJnZWRPcHRpb25zO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmnoTpgKBIdHRwUGFyYW1z5a+56LGhXHJcbiAgICogQHBhcmFtIHBhcmFtcyDor7fmsYLlj4LmlbBcclxuICAgKi9cclxuICBwcml2YXRlIGJ1aWxkUGFyYW1zKHBhcmFtczogb2JqZWN0KTogSHR0cFBhcmFtcyB7XHJcbiAgICByZXR1cm4gSHR0cFBhcmFtVXRpbC5idWlsZFBhcmFtcyhwYXJhbXMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmmK/lkKbluKbmnIlSZXF1ZXN0SW5mb1xyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFzUmVxdWVzdEluZm8ob3B0aW9uczogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gUmVxdWVzdEluZm9VdGlsLmhhc1JlcXVlc3RJbmZvKG9wdGlvbnMpIHx8IFJlcXVlc3RJbmZvVXRpbC5oYXNSZXF1ZXN0SW5mb1dpdGhSKG9wdGlvbnMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDlpITnkIbov5Tlm57lgLzvvIzlhbzlrrnogIHniYjmnKxcclxuICAgKi9cclxuICBwcml2YXRlIHVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQ6IGFueSkge1xyXG4gICAgcmV0dXJuIFJlc3BvbnNlSW5mb1V0aWwudW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvYmVmX3Byb3h5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUEyQixVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztNQUd2QyxHQUFHLEdBQUcsS0FBSzs7TUFDWCxNQUFNLEdBQUcsUUFBUTs7TUFDakIsR0FBRyxHQUFHLEtBQUs7O01BQ1gsSUFBSSxHQUFHLE1BQU07O01BQ2IsS0FBSyxHQUFHLE9BQU87Ozs7OztBQVFyQixNQUFNLE9BQU8sUUFBUTs7Ozs7SUFPbkIsWUFBbUIsVUFBc0IsRUFBUyxVQUFzQjtRQUFyRCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0RSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0RCxDQUFDOzs7Ozs7SUFLTSxVQUFVLENBQUMsT0FBZTtRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDOzs7Ozs7SUFLTSxjQUFjLENBQUMsV0FBeUI7UUFDN0MsSUFBSSxDQUFDLFdBQVcsR0FB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QUFPLElBQUksRUFBRSxDQUFDOztjQUNsQixhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUN0RCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDOzs7Ozs7O0lBS08sV0FBVyxDQUFDLE1BQWM7UUFDaEMsT0FBTyxhQUFhLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUM7Ozs7Ozs7SUFJTyxjQUFjLENBQUMsT0FBWTtRQUNqQyxPQUFPLGVBQWUsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksZUFBZSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pHLENBQUM7Ozs7Ozs7SUFJTyxrQkFBa0IsQ0FBQyxNQUFXO1FBQ3BDLE9BQU8sZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckQsQ0FBQzs7O1lBMVpGLFVBQVU7Ozs7WUFuQnVCLFVBQVU7WUFHbkMsVUFBVTs7Ozs7OztJQWtCakIsK0JBQW9DOzs7Ozs7SUFJcEMsMkJBQTBCOzs7OztJQUMxQiwrQkFBaUM7O0lBQ3JCLDhCQUE2Qjs7SUFBRSw4QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBlbXB0eSwgdGhyb3dFcnJvciwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwLCBtYXAsIGNhdGNoRXJyb3IsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMsIEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IElQcm94eUV4dGVuZCwgUmVxdWVzdEluZm8sIFJlc3BvbnNlSW5mbywgQ2hhbmdlRGV0YWlsIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IEJlZkRhdGFQYXRoVXRpbCB9IGZyb20gJy4vYmVmX2RhdGFfcGF0aF91dGlsJztcclxuaW1wb3J0IHsgVXJpU2VydmljZSB9IGZyb20gJy4vdXJpX3NlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdHRwSGVhZGVyVXRpbCwgSHR0cFBhcmFtVXRpbCwgUmVxdWVzdEluZm9VdGlsLCBSZXNwb25zZUluZm9VdGlsIH0gZnJvbSAnLi91dGlscy9pbmRleCc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi9odHRwX3NlcnZpY2UnO1xyXG5cclxuXHJcbmNvbnN0IEdFVCA9ICdHRVQnO1xyXG5jb25zdCBERUxFVEUgPSAnREVMRVRFJztcclxuY29uc3QgUFVUID0gJ1BVVCc7XHJcbmNvbnN0IFBPU1QgPSAnUE9TVCc7XHJcbmNvbnN0IFBBVENIID0gJ1BBVENIJztcclxuXHJcbi8qKlxyXG4gKiBCZWbku6PnkIbnsbtcclxuICog5Luj55CG57G755qE6IGM6LSj5piv5aSE55CGaHR0cOivt+axgu+8jOWPkemAgeS4gOS4qmh0dHDor7fmsYLmiYDpnIDnmoTotYTmupDmnInvvJp1cmnvvIxtZXRob2TvvIxoZWFkZXLjgIFib2R544CBcXVlcnkgcGFyYW1ldGVyXHJcbiAqIHVyaSDnlLF1cmlTZXJ2aWNlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBCZWZQcm94eSB7XHJcbiAgcHJvdGVjdGVkIHByb3h5RXh0ZW5kOiBJUHJveHlFeHRlbmQ7XHJcbiAgLyoqXHJcbiAgICogcmVzdGZ1bOWfuui3r+W+hFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBiYXNlVXJpOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFNlcnZpY2U7XHJcbiAgY29uc3RydWN0b3IocHVibGljIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIHB1YmxpYyB1cmlTZXJ2aWNlOiBVcmlTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmh0dHBTZXJ2aWNlID0gbmV3IEh0dHBTZXJ2aWNlKHRoaXMuaHR0cENsaWVudCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOiuvue9ruWfuui3r+W+hFxyXG4gICAqIEBwYXJhbSBiYXNlVXJpIOWfuui3r+W+hFxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRCYXNlVXJpKGJhc2VVcmk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5iYXNlVXJpID0gYmFzZVVyaTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog6K6+572u562W55Wl5qih5byPXHJcbiAgICogQHBhcmFtIHN0cmF0ZWd5IOetlueVpVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRQcm94eUV4dGVuZChwcm94eUV4dGVuZDogSVByb3h5RXh0ZW5kKSB7XHJcbiAgICB0aGlzLnByb3h5RXh0ZW5kID0gcHJveHlFeHRlbmQ7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOafpeivolxyXG4gICAqL1xyXG4gIHB1YmxpYyBxdWVyeShlbnRpdHlGaWx0ZXI/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IHVybCA9IHRoaXMuYmFzZVVyaTtcclxuICAgIGlmIChlbnRpdHlGaWx0ZXIpIHtcclxuICAgICAgY29uc3QgZW50aXR5RmlsdGVySnNvbiA9IEpTT04uc3RyaW5naWZ5KGVudGl0eUZpbHRlcik7XHJcbiAgICAgIHVybCA9IGAke3VybH0/ZW50aXR5RmlsdGVyPSR7ZW50aXR5RmlsdGVySnNvbn1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIEdFVCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmianlsZXmn6Xor6JcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kUXVlcnkoZW50aXR5RmlsdGVyOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBsZXQgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vcXVlcnlgO1xyXG4gICAgaWYgKGVudGl0eUZpbHRlcikge1xyXG4gICAgICBjb25zdCBlbnRpdHlGaWx0ZXJKc29uID0gSlNPTi5zdHJpbmdpZnkoZW50aXR5RmlsdGVyKTtcclxuICAgICAgdXJsID0gYCR7dXJsfT9lbnRpdHlGaWx0ZXI9JHtlbnRpdHlGaWx0ZXJKc29ufWA7XHJcbiAgICB9XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMsIGZhbHNlKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5p+l6K+i5pWw5o2u77yI5bim6L+H5ruk5p2h5Lu277yJXHJcbiAgICogQHBhcmFtIGVudGl0eUZpbHRlciDov4fmu6TjgIHmjpLluo/jgIHliIbpobXkv6Hmga9cclxuICAgKiBAcGFyYW0gcmVxdWVzdEluZm8gcmVxdWVzdEluZm9cclxuICAgKiBAZGVzY3JpcHRpb24g5ZKMZXh0ZW5kUXVlcnnkuIDoh7TvvIzku4XlsIbmn6Xor6Llj4LmlbDmlL7liLBib2R55LitXHJcbiAgICovXHJcbiAgcHVibGljIGZpbHRlcihlbnRpdHlGaWx0ZXI6IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGxldCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9maWx0ZXJgO1xyXG4gICAgbGV0IGJvZHk6IGFueSA9IHsgcmVxdWVzdEluZm8gfTtcclxuICAgIGlmIChlbnRpdHlGaWx0ZXIpIHtcclxuICAgICAgYm9keSA9IHsgZW50aXR5RmlsdGVyLCByZXF1ZXN0SW5mbyB9O1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUE9TVCwgbnVsbCwgb3B0aW9ucywgZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qOA57Si5pWw5o2uXHJcbiAgICogQHBhcmFtIGlkIOWNleaNruWGheeggVxyXG4gICAqIEByZXR1cm4g5pWw5o2u5a+56LGhXHJcbiAgICovXHJcbiAgcHVibGljIHJldHJpZXZlKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS8ke2lkfWA7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgR0VUKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5YiG6aG15p+l6K+i5ZCE5LuO6KGo5pWw5o2uXHJcbiAgICogQHBhcmFtIGlkIOS4u+ihqGlkXHJcbiAgICogQHBhcmFtIG9wdGlvbnMg6YCJ6aG5XHJcbiAgICovXHJcbiAgcHVibGljIHNlcnZpY2VSZXRyaWV2ZShpZDogc3RyaW5nLCByZXRyaWV2ZVBhcmFtOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvcmV0cmlldmUvJHtpZH1gO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgYm9keTogeyByZXRyaWV2ZVBhcmFtLCByZXF1ZXN0SW5mbyB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOWIhumhteafpeivouS7juihqC/ku47ku47ooajmlbDmja5cclxuICAgKiBAcGFyYW0gcGFyYW1zIOWPguaVsFxyXG4gICAqL1xyXG4gIHB1YmxpYyBxdWVyeUNoaWxkKHBhcmFtczogYW55KSB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvcXVlcnljaGlsZGA7XHJcbiAgICBjb25zdCBvcHRpb25zID0geyBib2R5OiBwYXJhbXMgfTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qOA57Si5pWw5o2u77yI5omp5bGV77yJXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZFJldHJpZXZlKGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9yZXRyaWV2ZS8ke2lkfWA7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qOA57Si5pWw5o2uXHJcbiAgICovXHJcbiAgcHVibGljIGVkaXQoaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vc2VydmljZS9lZGl0LyR7aWR9YDtcclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliJvlu7rkuIDmnaHmlbDmja5cclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlKGRlZmF1bHRWYWx1ZT86IGFueSwgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICBkZWZhdWx0VmFsdWUsXHJcbiAgICAgIHJlcXVlc3RJbmZvOiByZXF1ZXN0SW5mbyxcclxuICAgIH07XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodGhpcy5iYXNlVXJpLCBQT1NULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOS7juihqOaWsOWinlxyXG4gICAqIEBwYXRoIOaWsOWinui3r+W+hO+8iOS7juihqOW9ouWmgu+8mi8xL2VkdXPvvIzku47ku47ooajlvaLlpoLvvJovMS9lZHVzLzExL2dyYWRlc++8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBjcmVhdGVCeVBhdGgoZnBhdGg6IHN0cmluZywgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBwYXRoVXJsID0gQmVmRGF0YVBhdGhVdGlsLmNvbnZlcnRQYXRoVG9VcmwoZnBhdGgpO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfSR7cGF0aFVybH1gO1xyXG5cclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBPU1QsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5o+Q5Lqk5Y+Y5pu0XHJcbiAgICovXHJcbiAgdXBkYXRlKGNoYW5nZURldGFpbDogQ2hhbmdlRGV0YWlsLCByZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgIGNoYW5nZURldGFpbCxcclxuICAgICAgcmVxdWVzdEluZm86IHJlcXVlc3RJbmZvLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodGhpcy5iYXNlVXJpLCBQQVRDSCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmiafooYzkv53lrZhcclxuICAgKi9cclxuICBwdWJsaWMgc2F2ZShyZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh0aGlzLmJhc2VVcmksIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaRcclxuICAgKi9cclxuICBwdWJsaWMgZGVsZXRlKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS8ke2lkfWA7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgREVMRVRFKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIoOmZpOW5tuS/neWtmFxyXG4gICAqL1xyXG4gIHB1YmxpYyBkZWxldGVBbmRTYXZlKGlkOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvZGVsZXRlLyR7aWR9YDtcclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaTvvIjmianlsZXvvIlcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kRGVsZXRlKGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9kZWxldGUvJHtpZH1gO1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIoOmZpOWQjuS7o1xyXG4gICAqIEBwYXJhbSBmcGF0aCDniLbot6/lvoTvvIjku47ooajlvaLlpoLvvJovMS9lZHVz77yM5LuO5LuO6KGo5b2i5aaC77yaLzEvZWR1cy8xMS9ncmFkZXPvvIlcclxuICAgKi9cclxuICBwdWJsaWMgZGVsZXRCeVBhdGgoZnBhdGg6IHN0cmluZywgaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBwYXRoVXJsID0gQmVmRGF0YVBhdGhVdGlsLmNvbnZlcnRQYXRoVG9VcmwoZnBhdGgpO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfSR7cGF0aFVybH0vJHtpZH1gO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIERFTEVURSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaTlkI7ku6PvvIjmianlsZXvvIlcclxuICAgKiBAcGFyYW0gZnBhdGgg54i26Lev5b6E77yI5LuO6KGo5b2i5aaC77yaLzEvZWR1c++8jOS7juS7juihqOW9ouWmgu+8mi8xL2VkdXMvMTEvZ3JhZGVz77yJXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZERlbGV0QnlQYXRoKGZwYXRoOiBzdHJpbmcsIGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCBwYXRoVXJsID0gQmVmRGF0YVBhdGhVdGlsLmNvbnZlcnRQYXRoVG9VcmwoZnBhdGgpO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24ke3BhdGhVcmx9LyR7aWR9YDtcclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaJuemHj+WIoOmZpOWQjuS7o1xyXG4gICAqIEBwYXJhbSBmUGF0aCAnZXh0ZW5zaW9uL3tyb290SWR9L2NjL2JhdGNoJ1xyXG4gICAqIEBwYXJhbSAgaWRzIOWtkOmbhmlkXHJcbiAgICogQHBhcmFtICByZXF1ZXN0SW5mbyDor7fmsYLkv6Hmga9cclxuICAgKi9cclxuICBwdWJsaWMgYmF0Y2hEZWxldGVCeVBhdGgoZlBhdGg6IHN0cmluZywgaWRzOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCBwYXRoQXJyYXkgPSBmUGF0aC5zcGxpdCgnLycpO1xyXG4gICAgaWYgKHBhdGhBcnJheS5sZW5ndGggPCAzKSB7XHJcbiAgICAgIHRocm93IEVycm9yKGDmoLnmja5wYXRo5Yig6Zmk5a6e5L2T5pWw5o2u5Ye66ZSZ5LqG44CC5Lyg5YWl55qEcGF0aFske2ZQYXRofV3moLzlvI/kuI3lr7lgKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJvb3RJZCA9IHBhdGhBcnJheVsxXTtcclxuLyogICAgY29uc3QgY2hpbGQgPSBwYXRoQXJyYXlbcGF0aEFycmF5Lmxlbmd0aCAtIDFdO1xyXG4gICAgY29uc3QgY2hpbGROYW1lID0gY2hpbGQuc3Vic3RyKDAsIGNoaWxkLmxlbmd0aCAtIDEpOyovXHJcbiAgICBjb25zdCBuYW1lQXJyYXkgPSBbXTtcclxuICAgIC8q6YGN5Y6G5LuO6KGo77yM5LuO5LuO6KGoKi9cclxuICAgIHBhdGhBcnJheS5mb3JFYWNoKChuYW1lLCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAoaW5kZXggPiAxKSB7XHJcbiAgICAgICAgbmFtZUFycmF5LnB1c2gobmFtZS5zdWJzdHIoMCwgbmFtZS5sZW5ndGggLSAxKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29uc3QgY2hpbGROYW1lID0gbmFtZUFycmF5LmpvaW4oJy8nKTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uLyR7cm9vdElkfS8ke2NoaWxkTmFtZX0vYmF0Y2hgO1xyXG4gICAgY29uc3QgaWRzQXJyYXkgPSBpZHMuc3BsaXQoJywnKTtcclxuICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgIGlkczogaWRzQXJyYXksXHJcbiAgICAgIHJlcXVlc3RJbmZvOiByZXF1ZXN0SW5mb1xyXG4gICAgfTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaJuemHj+WIoOmZpFxyXG4gICAqIEBwYXJhbSBpZHMg5b6F5Yig6Zmk55qEaWTmlbDnu4RcclxuICAgKi9cclxuICBwdWJsaWMgYmF0Y2hEZWxldGUoaWRzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIGlkczogaWRzLmpvaW4oJywnKVxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodGhpcy5iYXNlVXJpLCBERUxFVEUsIHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmibnph4/liKDpmaTvvIjmianlsZXvvIlcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kQmF0Y2hEZWxldGUoaWRzOiBzdHJpbmdbXSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uL2JhdGNoZGVsZXRlYDtcclxuICAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAgICAgaWRzOiBpZHMuam9pbignLCcpXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgcGFyYW1zLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiDlj5bmtohcclxuICAgKi9cclxuICBwdWJsaWMgY2FuY2VsKGNvbnRleHQ/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9zZXJ2aWNlL2NhbmNlbGA7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUE9TVCwgbnVsbCwgbnVsbCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY29udGV4dCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmibnph4/mlrDlop7ku47ooagv5LuO5LuO6KGo5pWw5o2uXHJcbiAgICogQHBhcmFtIHBhdGgg5a6e5L2T57uR5a6a6Lev5b6E77yMbGlrZSAxL2NoaWxkcyBvciAxL2NoaWxkcy8xMS9jaGlsZGNoaWxkc1xyXG4gICAqIEBwYXJhbSBkZWZhdWx0VmFsdWVzIOm7mOiupOWunuS9k+aVsOaNruaVsOe7hFxyXG4gICAqL1xyXG4gIHB1YmxpYyBiYXRjaEFwcGVuZEJ5UGF0aChwYXRoOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZXM6IEFycmF5PGFueT4sIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBwYXRoVXJsID0gQmVmRGF0YVBhdGhVdGlsLmNvbnZlcnRQYXRoVG9VcmwocGF0aCk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9JHtwYXRoVXJsfS9iYXRjaGA7XHJcbiAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICByZXF1ZXN0SW5mbyxcclxuICAgICAgcmV0cmlldmVEZWZhdWx0UGFyYW06e1xyXG4gICAgICAgIGRlZmF1bHRWYWx1ZXNcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBPU1QsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG4gIHB1YmxpYyByZXF1ZXN0KFxyXG4gICAgdXJsOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nLCBwYXJhbXM/OiBhbnksIG9wdGlvbnM/OiBhbnksXHJcbiAgICBzZWxmSGFuZEVycm9yPzogYm9vbGVhbiwgaWdub3JlRXJyb3I/OiBib29sZWFuLCBpZ25vcmVDaGFuZ2VzPzogYm9vbGVhbiwgcnVudGltZUNvbnRleHQ/OiBhbnlcclxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XHJcblxyXG4gICAgLy8g5piv5ZCm6Ieq6KGM5aSE55CG6ZSZ6K+vXHJcbiAgICBpZiAodHlwZW9mIChzZWxmSGFuZEVycm9yKSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIChzZWxmSGFuZEVycm9yKSAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHNlbGZIYW5kRXJyb3IgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDmmK/lkKblv73nlaXlvILluLjnu6fnu63miafooYxcclxuICAgIGlmICh0eXBlb2YgKGlnbm9yZUVycm9yKSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIChpZ25vcmVFcnJvcikgIT09ICdib29sZWFuJykge1xyXG4gICAgICBpZ25vcmVFcnJvciA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHBhcmFtc1xyXG4gICAgaWYgKHBhcmFtcykge1xyXG4gICAgICAvLyBjb25zdCBodHRwUGFyYW1zID0gdGhpcy5idWlsZFBhcmFtcyhwYXJhbXMpO1xyXG4gICAgICBvcHRpb25zLnBhcmFtcyA9IHBhcmFtcztcclxuICAgIH1cclxuXHJcbiAgICAvLyDlpITnkIZoZWFkZXJzXHJcbiAgICBvcHRpb25zLmhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC5jb252ZXJ0VG9IZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XHJcbiAgICAvLyAx44CB5Yik5pat5piv5ZCm5bimcmVxdWVzdEluZm/vvIjkuI3ljLrliIbpppblrZfmr43lpKflsI/lhpnvvIk7XHJcbiAgICAvLyAy44CB5aaC5p6c5Lyg6YCS55qE5pivUmVxdWVzdEluZm/vvIzliJnovazmjaLkuLpyZXF1ZXN0SW5mb++8m1xyXG4gICAgY29uc3QgaGFzUmVxdWVzdEluZm8gPSB0aGlzLmhhc1JlcXVlc3RJbmZvKG9wdGlvbnMpO1xyXG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5ib2R5ICYmIG9wdGlvbnMuYm9keS5oYXNPd25Qcm9wZXJ0eSgnUmVxdWVzdEluZm8nKSkge1xyXG4gICAgICBvcHRpb25zLmJvZHkucmVxdWVzdEluZm8gPSBvcHRpb25zLmJvZHkuUmVxdWVzdEluZm87XHJcbiAgICAgIGRlbGV0ZSBvcHRpb25zLmJvZHkuUmVxdWVzdEluZm87XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eUV4dGVuZC5leHRlbmRIZWFkZXJzKG9wdGlvbnMuaGVhZGVycywgcnVudGltZUNvbnRleHQpLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcChoZWFkZXJzID0+IHtcclxuICAgICAgICBvcHRpb25zLmhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC50b0pzb24oaGVhZGVycyk7XHJcbiAgICAgICAgb3B0aW9ucy5vYnNlcnZlID0gJ3Jlc3BvbnNlJztcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5yZXF1ZXN0KG1ldGhvZCwgdXJsLCBvcHRpb25zKTtcclxuICAgICAgfSksXHJcbiAgICAgIHRhcCgocmVzcG9uc2U6IGFueSkgPT4gdGhpcy5wcm94eUV4dGVuZC5wYXJzZUhlYWRlcnMocmVzcG9uc2UpKSxcclxuICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0LmJvZHkpLFxyXG4gICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGhhc1JlcXVlc3RJbmZvKSB7XHJcbiAgICAgICAgICB0aGlzLnByb3h5RXh0ZW5kLm9uUmVzcG9uc2UocmVzdWx0LCBpZ25vcmVDaGFuZ2VzKTtcclxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAvLyBib2R56YeM5rKh5pyJcmVxdWVzdEluZm/nmoTmg4XlhrXvvIzmqKHmi5/ogIHnmoTlpITnkIbmlrnlvI/vvIjkuI3muIXnkIblj5jmm7TjgIHlsIZyZXR1cm5WYWx1Zeino+aekOWHuuadpe+8iVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMudW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHlFeHRlbmQub25FcnJvcihlcnJvciwgc2VsZkhhbmRFcnJvciwgaWdub3JlRXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiwg+eUqGh0dHBjbGllbnTlj5bmlbBcclxuICAgKiBAcGFyYW0gdXJsIHVybFxyXG4gICAqIEBwYXJhbSBtZXRob2QgbWV0aG9kc1xyXG4gICAqIEBwYXJhbSBvcHRpb25zIG9wdGlvbnNcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgaW52b2tlKHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgb3B0aW9uczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGlmIChvcHRpb25zLnBhcmFtcykge1xyXG4gICAgICB1cmwgPSB0aGlzLnByb3h5RXh0ZW5kLmV4dGVuZFVybCh1cmwsIG9wdGlvbnMucGFyYW1zKTtcclxuICAgICAgb3B0aW9ucy5wYXJhbXMgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKG9wdGlvbnMuYm9keSkge1xyXG4gICAgICBvcHRpb25zLmJvZHkgPSB0aGlzLnByb3h5RXh0ZW5kLmV4dGVuZEJvZHkob3B0aW9ucy5ib2R5KTtcclxuICAgIH1cclxuICAgIG9wdGlvbnMuaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLmNvbnZlcnRUb0hlYWRlcnMob3B0aW9ucy5oZWFkZXJzKTtcclxuICAgIGNvbnN0IGhlYWRlcnMkID0gdGhpcy5wcm94eUV4dGVuZC5leHRlbmRIZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XHJcbiAgICByZXR1cm4gaGVhZGVycyQucGlwZShcclxuICAgICAgc3dpdGNoTWFwKGhlYWRlcnMgPT4ge1xyXG4gICAgICAgIG9wdGlvbnMuaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLnRvSnNvbihoZWFkZXJzKTtcclxuICAgICAgICBvcHRpb25zLm9ic2VydmUgPSAncmVzcG9uc2UnO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnJlcXVlc3QobWV0aG9kLCB1cmwsIG9wdGlvbnMpXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgdGFwKChyZXNwb25zZTogYW55KSA9PiB0aGlzLnByb3h5RXh0ZW5kLnBhcnNlSGVhZGVycyhyZXNwb25zZSkpLFxyXG4gICAgICAgICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiByZXN1bHQuYm9keSksXHJcbiAgICAgICAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHRoaXMucHJveHlFeHRlbmQub25SZXNwb25zZShyZXN1bHQpKSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB0aGlzLnByb3h5RXh0ZW5kLm9uRXJyb3IoZXJyb3IsIGZhbHNlLCBmYWxzZSkpXHJcbiAgICAgICAgICApO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWQkUh0dHBPcHRpb25z5a+56LGh5Lit5re75YqgYm9keVxyXG4gICAqIEBwYXJhbSBvcHRpb25zIOWOn+adpeeahG9wdGlvbnNcclxuICAgKiBAcGFyYW0gYm9keSBib2R55YaF5a65XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhZGRCb2R5VG9PcHRpb25zKG9wdGlvbnM6IGFueSwgYm9keTogYW55KSB7XHJcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcclxuICAgIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHsgYm9keSB9KTtcclxuICAgIHJldHVybiBtZXJnZWRPcHRpb25zO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmnoTpgKBIdHRwUGFyYW1z5a+56LGhXHJcbiAgICogQHBhcmFtIHBhcmFtcyDor7fmsYLlj4LmlbBcclxuICAgKi9cclxuICBwcml2YXRlIGJ1aWxkUGFyYW1zKHBhcmFtczogb2JqZWN0KTogSHR0cFBhcmFtcyB7XHJcbiAgICByZXR1cm4gSHR0cFBhcmFtVXRpbC5idWlsZFBhcmFtcyhwYXJhbXMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmmK/lkKbluKbmnIlSZXF1ZXN0SW5mb1xyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFzUmVxdWVzdEluZm8ob3B0aW9uczogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gUmVxdWVzdEluZm9VdGlsLmhhc1JlcXVlc3RJbmZvKG9wdGlvbnMpIHx8IFJlcXVlc3RJbmZvVXRpbC5oYXNSZXF1ZXN0SW5mb1dpdGhSKG9wdGlvbnMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDlpITnkIbov5Tlm57lgLzvvIzlhbzlrrnogIHniYjmnKxcclxuICAgKi9cclxuICBwcml2YXRlIHVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQ6IGFueSkge1xyXG4gICAgcmV0dXJuIFJlc3BvbnNlSW5mb1V0aWwudW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==

@@ -638,3 +638,3 @@ /**

requestInfo: requestInfo,
retrieveDafaultParm: {
retrieveDefaultParam: {
defaultValues: defaultValues

@@ -910,2 +910,2 @@ }

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvYmVmX3Byb3h5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUEyQixVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztJQUd2QyxHQUFHLEdBQUcsS0FBSzs7SUFDWCxNQUFNLEdBQUcsUUFBUTs7SUFDakIsR0FBRyxHQUFHLEtBQUs7O0lBQ1gsSUFBSSxHQUFHLE1BQU07O0lBQ2IsS0FBSyxHQUFHLE9BQU87Ozs7OztBQU9yQjtJQVFFLGtCQUFtQixVQUFzQixFQUFTLFVBQXNCO1FBQXJELGVBQVUsR0FBVixVQUFVLENBQVk7UUFBUyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRDs7O09BR0c7Ozs7OztJQUNJLDZCQUFVOzs7OztJQUFqQixVQUFrQixPQUFlO1FBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFDRDs7O09BR0c7Ozs7OztJQUNJLGlDQUFjOzs7OztJQUFyQixVQUFzQixX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QUksZUFBZSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFDRDs7T0FFRzs7Ozs7OztJQUNLLHFDQUFrQjs7Ozs7O0lBQTFCLFVBQTJCLE1BQVc7UUFDcEMsT0FBTyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyRCxDQUFDOztnQkExWkYsVUFBVTs7OztnQkFuQnVCLFVBQVU7Z0JBR25DLFVBQVU7O0lBMmFuQixlQUFDO0NBQUEsQUEzWkQsSUEyWkM7U0ExWlksUUFBUTs7Ozs7O0lBQ25CLCtCQUFvQzs7Ozs7O0lBSXBDLDJCQUEwQjs7Ozs7SUFDMUIsK0JBQWlDOztJQUNyQiw4QkFBNkI7O0lBQUUsOEJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZW1wdHksIHRocm93RXJyb3IsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCwgbWFwLCBjYXRjaEVycm9yLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zLCBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJUHJveHlFeHRlbmQsIFJlcXVlc3RJbmZvLCBSZXNwb25zZUluZm8sIENoYW5nZURldGFpbCB9IGZyb20gJy4vdHlwZXMnO1xyXG5pbXBvcnQgeyBCZWZEYXRhUGF0aFV0aWwgfSBmcm9tICcuL2JlZl9kYXRhX3BhdGhfdXRpbCc7XHJcbmltcG9ydCB7IFVyaVNlcnZpY2UgfSBmcm9tICcuL3VyaV9zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cEhlYWRlclV0aWwsIEh0dHBQYXJhbVV0aWwsIFJlcXVlc3RJbmZvVXRpbCwgUmVzcG9uc2VJbmZvVXRpbCB9IGZyb20gJy4vdXRpbHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4vaHR0cF9zZXJ2aWNlJztcclxuXHJcblxyXG5jb25zdCBHRVQgPSAnR0VUJztcclxuY29uc3QgREVMRVRFID0gJ0RFTEVURSc7XHJcbmNvbnN0IFBVVCA9ICdQVVQnO1xyXG5jb25zdCBQT1NUID0gJ1BPU1QnO1xyXG5jb25zdCBQQVRDSCA9ICdQQVRDSCc7XHJcblxyXG4vKipcclxuICogQmVm5Luj55CG57G7XHJcbiAqIOS7o+eQhuexu+eahOiBjOi0o+aYr+WkhOeQhmh0dHDor7fmsYLvvIzlj5HpgIHkuIDkuKpodHRw6K+35rGC5omA6ZyA55qE6LWE5rqQ5pyJ77yadXJp77yMbWV0aG9k77yMaGVhZGVy44CBYm9keeOAgXF1ZXJ5IHBhcmFtZXRlclxyXG4gKiB1cmkg55SxdXJpU2VydmljZVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQmVmUHJveHkge1xyXG4gIHByb3RlY3RlZCBwcm94eUV4dGVuZDogSVByb3h5RXh0ZW5kO1xyXG4gIC8qKlxyXG4gICAqIHJlc3RmdWzln7rot6/lvoRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYmFzZVVyaTogc3RyaW5nO1xyXG4gIHByaXZhdGUgaHR0cFNlcnZpY2U6IEh0dHBTZXJ2aWNlO1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBwdWJsaWMgdXJpU2VydmljZTogVXJpU2VydmljZSkge1xyXG4gICAgdGhpcy5odHRwU2VydmljZSA9IG5ldyBIdHRwU2VydmljZSh0aGlzLmh0dHBDbGllbnQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDorr7nva7ln7rot6/lvoRcclxuICAgKiBAcGFyYW0gYmFzZVVyaSDln7rot6/lvoRcclxuICAgKi9cclxuICBwdWJsaWMgc2V0QmFzZVVyaShiYXNlVXJpOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuYmFzZVVyaSA9IGJhc2VVcmk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOiuvue9ruetlueVpeaooeW8j1xyXG4gICAqIEBwYXJhbSBzdHJhdGVneSDnrZbnlaVcclxuICAgKi9cclxuICBwdWJsaWMgc2V0UHJveHlFeHRlbmQocHJveHlFeHRlbmQ6IElQcm94eUV4dGVuZCkge1xyXG4gICAgdGhpcy5wcm94eUV4dGVuZCA9IHByb3h5RXh0ZW5kO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmn6Xor6JcclxuICAgKi9cclxuICBwdWJsaWMgcXVlcnkoZW50aXR5RmlsdGVyPzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGxldCB1cmwgPSB0aGlzLmJhc2VVcmk7XHJcbiAgICBpZiAoZW50aXR5RmlsdGVyKSB7XHJcbiAgICAgIGNvbnN0IGVudGl0eUZpbHRlckpzb24gPSBKU09OLnN0cmluZ2lmeShlbnRpdHlGaWx0ZXIpO1xyXG4gICAgICB1cmwgPSBgJHt1cmx9P2VudGl0eUZpbHRlcj0ke2VudGl0eUZpbHRlckpzb259YDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBHRVQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5omp5bGV5p+l6K+iXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZFF1ZXJ5KGVudGl0eUZpbHRlcjogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgbGV0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uL3F1ZXJ5YDtcclxuICAgIGlmIChlbnRpdHlGaWx0ZXIpIHtcclxuICAgICAgY29uc3QgZW50aXR5RmlsdGVySnNvbiA9IEpTT04uc3RyaW5naWZ5KGVudGl0eUZpbHRlcik7XHJcbiAgICAgIHVybCA9IGAke3VybH0/ZW50aXR5RmlsdGVyPSR7ZW50aXR5RmlsdGVySnNvbn1gO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zLCBmYWxzZSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOafpeivouaVsOaNru+8iOW4pui/h+a7pOadoeS7tu+8iVxyXG4gICAqIEBwYXJhbSBlbnRpdHlGaWx0ZXIg6L+H5ruk44CB5o6S5bqP44CB5YiG6aG15L+h5oGvXHJcbiAgICogQHBhcmFtIHJlcXVlc3RJbmZvIHJlcXVlc3RJbmZvXHJcbiAgICogQGRlc2NyaXB0aW9uIOWSjGV4dGVuZFF1ZXJ55LiA6Ie077yM5LuF5bCG5p+l6K+i5Y+C5pWw5pS+5YiwYm9keeS4rVxyXG4gICAqL1xyXG4gIHB1YmxpYyBmaWx0ZXIoZW50aXR5RmlsdGVyOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBsZXQgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vZmlsdGVyYDtcclxuICAgIGxldCBib2R5OiBhbnkgPSB7IHJlcXVlc3RJbmZvIH07XHJcbiAgICBpZiAoZW50aXR5RmlsdGVyKSB7XHJcbiAgICAgIGJvZHkgPSB7IGVudGl0eUZpbHRlciwgcmVxdWVzdEluZm8gfTtcclxuICAgIH1cclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBPU1QsIG51bGwsIG9wdGlvbnMsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOajgOe0ouaVsOaNrlxyXG4gICAqIEBwYXJhbSBpZCDljZXmja7lhoXnoIFcclxuICAgKiBAcmV0dXJuIOaVsOaNruWvueixoVxyXG4gICAqL1xyXG4gIHB1YmxpYyByZXRyaWV2ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vJHtpZH1gO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIEdFVCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOWIhumhteafpeivouWQhOS7juihqOaVsOaNrlxyXG4gICAqIEBwYXJhbSBpZCDkuLvooahpZFxyXG4gICAqIEBwYXJhbSBvcHRpb25zIOmAiemhuVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXJ2aWNlUmV0cmlldmUoaWQ6IHN0cmluZywgcmV0cmlldmVQYXJhbTogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9zZXJ2aWNlL3JldHJpZXZlLyR7aWR9YDtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgIGJvZHk6IHsgcmV0cmlldmVQYXJhbSwgcmVxdWVzdEluZm8gfVxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDliIbpobXmn6Xor6Lku47ooagv5LuO5LuO6KGo5pWw5o2uXHJcbiAgICogQHBhcmFtIHBhcmFtcyDlj4LmlbBcclxuICAgKi9cclxuICBwdWJsaWMgcXVlcnlDaGlsZChwYXJhbXM6IGFueSkge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9zZXJ2aWNlL3F1ZXJ5Y2hpbGRgO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgYm9keTogcGFyYW1zIH07XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOajgOe0ouaVsOaNru+8iOaJqeWxle+8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRSZXRyaWV2ZShpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vcmV0cmlldmUvJHtpZH1gO1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOajgOe0ouaVsOaNrlxyXG4gICAqL1xyXG4gIHB1YmxpYyBlZGl0KGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvZWRpdC8ke2lkfWA7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yib5bu65LiA5p2h5pWw5o2uXHJcbiAgICovXHJcbiAgcHVibGljIGNyZWF0ZShkZWZhdWx0VmFsdWU/OiBhbnksIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgZGVmYXVsdFZhbHVlLFxyXG4gICAgICByZXF1ZXN0SW5mbzogcmVxdWVzdEluZm8sXHJcbiAgICB9O1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHRoaXMuYmFzZVVyaSwgUE9TVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDku47ooajmlrDlop5cclxuICAgKiBAcGF0aCDmlrDlop7ot6/lvoTvvIjku47ooajlvaLlpoLvvJovMS9lZHVz77yM5LuO5LuO6KGo5b2i5aaC77yaLzEvZWR1cy8xMS9ncmFkZXPvvIlcclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlQnlQYXRoKGZwYXRoOiBzdHJpbmcsIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKGZwYXRoKTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0ke3BhdGhVcmx9YDtcclxuXHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQT1NULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaPkOS6pOWPmOabtFxyXG4gICAqL1xyXG4gIHVwZGF0ZShjaGFuZ2VEZXRhaWw6IENoYW5nZURldGFpbCwgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICBjaGFuZ2VEZXRhaWwsXHJcbiAgICAgIHJlcXVlc3RJbmZvOiByZXF1ZXN0SW5mbyxcclxuICAgIH07XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHRoaXMuYmFzZVVyaSwgUEFUQ0gsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5omn6KGM5L+d5a2YXHJcbiAgICovXHJcbiAgcHVibGljIHNhdmUocmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodGhpcy5iYXNlVXJpLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6ZmkXHJcbiAgICovXHJcbiAgcHVibGljIGRlbGV0ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vJHtpZH1gO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIERFTEVURSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaTlubbkv53lrZhcclxuICAgKi9cclxuICBwdWJsaWMgZGVsZXRlQW5kU2F2ZShpZDogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9zZXJ2aWNlL2RlbGV0ZS8ke2lkfWA7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6Zmk77yI5omp5bGV77yJXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZERlbGV0ZShpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vZGVsZXRlLyR7aWR9YDtcclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaTlkI7ku6NcclxuICAgKiBAcGFyYW0gZnBhdGgg54i26Lev5b6E77yI5LuO6KGo5b2i5aaC77yaLzEvZWR1c++8jOS7juS7juihqOW9ouWmgu+8mi8xL2VkdXMvMTEvZ3JhZGVz77yJXHJcbiAgICovXHJcbiAgcHVibGljIGRlbGV0QnlQYXRoKGZwYXRoOiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKGZwYXRoKTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0ke3BhdGhVcmx9LyR7aWR9YDtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBERUxFVEUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6Zmk5ZCO5Luj77yI5omp5bGV77yJXHJcbiAgICogQHBhcmFtIGZwYXRoIOeItui3r+W+hO+8iOS7juihqOW9ouWmgu+8mi8xL2VkdXPvvIzku47ku47ooajlvaLlpoLvvJovMS9lZHVzLzExL2dyYWRlc++8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmREZWxldEJ5UGF0aChmcGF0aDogc3RyaW5nLCBpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKGZwYXRoKTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uJHtwYXRoVXJsfS8ke2lkfWA7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmibnph4/liKDpmaTlkI7ku6NcclxuICAgKiBAcGFyYW0gZlBhdGggJ2V4dGVuc2lvbi97cm9vdElkfS9jYy9iYXRjaCdcclxuICAgKiBAcGFyYW0gIGlkcyDlrZDpm4ZpZFxyXG4gICAqIEBwYXJhbSAgcmVxdWVzdEluZm8g6K+35rGC5L+h5oGvXHJcbiAgICovXHJcbiAgcHVibGljIGJhdGNoRGVsZXRlQnlQYXRoKGZQYXRoOiBzdHJpbmcsIGlkczogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgcGF0aEFycmF5ID0gZlBhdGguc3BsaXQoJy8nKTtcclxuICAgIGlmIChwYXRoQXJyYXkubGVuZ3RoIDwgMykge1xyXG4gICAgICB0aHJvdyBFcnJvcihg5qC55o2ucGF0aOWIoOmZpOWunuS9k+aVsOaNruWHuumUmeS6huOAguS8oOWFpeeahHBhdGhbJHtmUGF0aH1d5qC85byP5LiN5a+5YCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCByb290SWQgPSBwYXRoQXJyYXlbMV07XHJcbi8qICAgIGNvbnN0IGNoaWxkID0gcGF0aEFycmF5W3BhdGhBcnJheS5sZW5ndGggLSAxXTtcclxuICAgIGNvbnN0IGNoaWxkTmFtZSA9IGNoaWxkLnN1YnN0cigwLCBjaGlsZC5sZW5ndGggLSAxKTsqL1xyXG4gICAgY29uc3QgbmFtZUFycmF5ID0gW107XHJcbiAgICAvKumBjeWOhuS7juihqO+8jOS7juS7juihqCovXHJcbiAgICBwYXRoQXJyYXkuZm9yRWFjaCgobmFtZSwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKGluZGV4ID4gMSkge1xyXG4gICAgICAgIG5hbWVBcnJheS5wdXNoKG5hbWUuc3Vic3RyKDAsIG5hbWUubGVuZ3RoIC0gMSkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGNoaWxkTmFtZSA9IG5hbWVBcnJheS5qb2luKCcvJyk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi8ke3Jvb3RJZH0vJHtjaGlsZE5hbWV9L2JhdGNoYDtcclxuICAgIGNvbnN0IGlkc0FycmF5ID0gaWRzLnNwbGl0KCcsJyk7XHJcbiAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICBpZHM6IGlkc0FycmF5LFxyXG4gICAgICByZXF1ZXN0SW5mbzogcmVxdWVzdEluZm9cclxuICAgIH07XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmibnph4/liKDpmaRcclxuICAgKiBAcGFyYW0gaWRzIOW+heWIoOmZpOeahGlk5pWw57uEXHJcbiAgICovXHJcbiAgcHVibGljIGJhdGNoRGVsZXRlKGlkczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcGFyYW1zID0ge1xyXG4gICAgICBpZHM6IGlkcy5qb2luKCcsJylcclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHRoaXMuYmFzZVVyaSwgREVMRVRFLCBwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5om56YeP5Yig6Zmk77yI5omp5bGV77yJXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZEJhdGNoRGVsZXRlKGlkczogc3RyaW5nW10sIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9iYXRjaGRlbGV0ZWA7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIGlkczogaWRzLmpvaW4oJywnKVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIHBhcmFtcywgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICog5Y+W5raIXHJcbiAgICovXHJcbiAgcHVibGljIGNhbmNlbChjb250ZXh0PzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vc2VydmljZS9jYW5jZWxgO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBPU1QsIG51bGwsIG51bGwsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGNvbnRleHQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5om56YeP5paw5aKe5LuO6KGoL+S7juS7juihqOaVsOaNrlxyXG4gICAqIEBwYXJhbSBwYXRoIOWunuS9k+e7keWumui3r+W+hO+8jGxpa2UgMS9jaGlsZHMgb3IgMS9jaGlsZHMvMTEvY2hpbGRjaGlsZHNcclxuICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlcyDpu5jorqTlrp7kvZPmlbDmja7mlbDnu4RcclxuICAgKi9cclxuICBwdWJsaWMgYmF0Y2hBcHBlbmRCeVBhdGgocGF0aDogc3RyaW5nLCBkZWZhdWx0VmFsdWVzOiBBcnJheTxhbnk+LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKHBhdGgpO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfSR7cGF0aFVybH0vYmF0Y2hgO1xyXG4gICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgcmVxdWVzdEluZm8sXHJcbiAgICAgIHJldHJpZXZlRGFmYXVsdFBhcm06IHtcclxuICAgICAgICBkZWZhdWx0VmFsdWVzXHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQT1NULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICBwdWJsaWMgcmVxdWVzdChcclxuICAgIHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgcGFyYW1zPzogYW55LCBvcHRpb25zPzogYW55LFxyXG4gICAgc2VsZkhhbmRFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUVycm9yPzogYm9vbGVhbiwgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW4sIHJ1bnRpbWVDb250ZXh0PzogYW55XHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xyXG5cclxuICAgIC8vIOaYr+WQpuiHquihjOWkhOeQhumUmeivr1xyXG4gICAgaWYgKHR5cGVvZiAoc2VsZkhhbmRFcnJvcikgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAoc2VsZkhhbmRFcnJvcikgIT09ICdib29sZWFuJykge1xyXG4gICAgICBzZWxmSGFuZEVycm9yID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5piv5ZCm5b+955Wl5byC5bi457un57ut5omn6KGMXHJcbiAgICBpZiAodHlwZW9mIChpZ25vcmVFcnJvcikgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAoaWdub3JlRXJyb3IpICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgaWdub3JlRXJyb3IgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBwYXJhbXNcclxuICAgIGlmIChwYXJhbXMpIHtcclxuICAgICAgLy8gY29uc3QgaHR0cFBhcmFtcyA9IHRoaXMuYnVpbGRQYXJhbXMocGFyYW1zKTtcclxuICAgICAgb3B0aW9ucy5wYXJhbXMgPSBwYXJhbXM7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5aSE55CGaGVhZGVyc1xyXG4gICAgb3B0aW9ucy5oZWFkZXJzID0gSHR0cEhlYWRlclV0aWwuY29udmVydFRvSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpO1xyXG4gICAgLy8gMeOAgeWIpOaWreaYr+WQpuW4pnJlcXVlc3RJbmZv77yI5LiN5Yy65YiG6aaW5a2X5q+N5aSn5bCP5YaZ77yJO1xyXG4gICAgLy8gMuOAgeWmguaenOS8oOmAkueahOaYr1JlcXVlc3RJbmZv77yM5YiZ6L2s5o2i5Li6cmVxdWVzdEluZm/vvJtcclxuICAgIGNvbnN0IGhhc1JlcXVlc3RJbmZvID0gdGhpcy5oYXNSZXF1ZXN0SW5mbyhvcHRpb25zKTtcclxuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuYm9keSAmJiBvcHRpb25zLmJvZHkuaGFzT3duUHJvcGVydHkoJ1JlcXVlc3RJbmZvJykpIHtcclxuICAgICAgb3B0aW9ucy5ib2R5LnJlcXVlc3RJbmZvID0gb3B0aW9ucy5ib2R5LlJlcXVlc3RJbmZvO1xyXG4gICAgICBkZWxldGUgb3B0aW9ucy5ib2R5LlJlcXVlc3RJbmZvO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMucHJveHlFeHRlbmQuZXh0ZW5kSGVhZGVycyhvcHRpb25zLmhlYWRlcnMsIHJ1bnRpbWVDb250ZXh0KS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoaGVhZGVycyA9PiB7XHJcbiAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gSHR0cEhlYWRlclV0aWwudG9Kc29uKGhlYWRlcnMpO1xyXG4gICAgICAgIG9wdGlvbnMub2JzZXJ2ZSA9ICdyZXNwb25zZSc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UucmVxdWVzdChtZXRob2QsIHVybCwgb3B0aW9ucyk7XHJcbiAgICAgIH0pLFxyXG4gICAgICB0YXAoKHJlc3BvbnNlOiBhbnkpID0+IHRoaXMucHJveHlFeHRlbmQucGFyc2VIZWFkZXJzKHJlc3BvbnNlKSksXHJcbiAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHJlc3VsdC5ib2R5KSxcclxuICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChoYXNSZXF1ZXN0SW5mbykge1xyXG4gICAgICAgICAgdGhpcy5wcm94eUV4dGVuZC5vblJlc3BvbnNlKHJlc3VsdCwgaWdub3JlQ2hhbmdlcyk7XHJcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgLy8gYm9keemHjOayoeaciXJlcXVlc3RJbmZv55qE5oOF5Ya177yM5qih5ouf6ICB55qE5aSE55CG5pa55byP77yI5LiN5riF55CG5Y+Y5pu044CB5bCGcmV0dXJuVmFsdWXop6PmnpDlh7rmnaXvvIlcclxuICAgICAgICAgIHJldHVybiB0aGlzLnVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3h5RXh0ZW5kLm9uRXJyb3IoZXJyb3IsIHNlbGZIYW5kRXJyb3IsIGlnbm9yZUVycm9yKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDosIPnlKhodHRwY2xpZW505Y+W5pWwXHJcbiAgICogQHBhcmFtIHVybCB1cmxcclxuICAgKiBAcGFyYW0gbWV0aG9kIG1ldGhvZHNcclxuICAgKiBAcGFyYW0gb3B0aW9ucyBvcHRpb25zXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGludm9rZSh1cmw6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcsIG9wdGlvbnM6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBpZiAob3B0aW9ucy5wYXJhbXMpIHtcclxuICAgICAgdXJsID0gdGhpcy5wcm94eUV4dGVuZC5leHRlbmRVcmwodXJsLCBvcHRpb25zLnBhcmFtcyk7XHJcbiAgICAgIG9wdGlvbnMucGFyYW1zID0gbnVsbDtcclxuICAgIH1cclxuICAgIGlmIChvcHRpb25zLmJvZHkpIHtcclxuICAgICAgb3B0aW9ucy5ib2R5ID0gdGhpcy5wcm94eUV4dGVuZC5leHRlbmRCb2R5KG9wdGlvbnMuYm9keSk7XHJcbiAgICB9XHJcbiAgICBvcHRpb25zLmhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC5jb252ZXJ0VG9IZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XHJcbiAgICBjb25zdCBoZWFkZXJzJCA9IHRoaXMucHJveHlFeHRlbmQuZXh0ZW5kSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpO1xyXG4gICAgcmV0dXJuIGhlYWRlcnMkLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcChoZWFkZXJzID0+IHtcclxuICAgICAgICBvcHRpb25zLmhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC50b0pzb24oaGVhZGVycyk7XHJcbiAgICAgICAgb3B0aW9ucy5vYnNlcnZlID0gJ3Jlc3BvbnNlJztcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5yZXF1ZXN0KG1ldGhvZCwgdXJsLCBvcHRpb25zKVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIHRhcCgocmVzcG9uc2U6IGFueSkgPT4gdGhpcy5wcm94eUV4dGVuZC5wYXJzZUhlYWRlcnMocmVzcG9uc2UpKSxcclxuICAgICAgICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0LmJvZHkpLFxyXG4gICAgICAgICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiB0aGlzLnByb3h5RXh0ZW5kLm9uUmVzcG9uc2UocmVzdWx0KSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4gdGhpcy5wcm94eUV4dGVuZC5vbkVycm9yKGVycm9yLCBmYWxzZSwgZmFsc2UpKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlkJFIdHRwT3B0aW9uc+WvueixoeS4rea3u+WKoGJvZHlcclxuICAgKiBAcGFyYW0gb3B0aW9ucyDljp/mnaXnmoRvcHRpb25zXHJcbiAgICogQHBhcmFtIGJvZHkgYm9keeWGheWuuVxyXG4gICAqL1xyXG4gIHByaXZhdGUgYWRkQm9keVRvT3B0aW9ucyhvcHRpb25zOiBhbnksIGJvZHk6IGFueSkge1xyXG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XHJcbiAgICBjb25zdCBtZXJnZWRPcHRpb25zID0gT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7IGJvZHkgfSk7XHJcbiAgICByZXR1cm4gbWVyZ2VkT3B0aW9ucztcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5p6E6YCgSHR0cFBhcmFtc+WvueixoVxyXG4gICAqIEBwYXJhbSBwYXJhbXMg6K+35rGC5Y+C5pWwXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBidWlsZFBhcmFtcyhwYXJhbXM6IG9iamVjdCk6IEh0dHBQYXJhbXMge1xyXG4gICAgcmV0dXJuIEh0dHBQYXJhbVV0aWwuYnVpbGRQYXJhbXMocGFyYW1zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5piv5ZCm5bim5pyJUmVxdWVzdEluZm9cclxuICAgKi9cclxuICBwcml2YXRlIGhhc1JlcXVlc3RJbmZvKG9wdGlvbnM6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIFJlcXVlc3RJbmZvVXRpbC5oYXNSZXF1ZXN0SW5mbyhvcHRpb25zKSB8fCBSZXF1ZXN0SW5mb1V0aWwuaGFzUmVxdWVzdEluZm9XaXRoUihvcHRpb25zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5aSE55CG6L+U5Zue5YC877yM5YW85a656ICB54mI5pysXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1bldyYXBSZXNwb25zZUluZm8ocmVzdWx0OiBhbnkpIHtcclxuICAgIHJldHVybiBSZXNwb25zZUluZm9VdGlsLnVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQpO1xyXG4gIH1cclxufVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvYmVmX3Byb3h5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUEyQixVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztJQUd2QyxHQUFHLEdBQUcsS0FBSzs7SUFDWCxNQUFNLEdBQUcsUUFBUTs7SUFDakIsR0FBRyxHQUFHLEtBQUs7O0lBQ1gsSUFBSSxHQUFHLE1BQU07O0lBQ2IsS0FBSyxHQUFHLE9BQU87Ozs7OztBQU9yQjtJQVFFLGtCQUFtQixVQUFzQixFQUFTLFVBQXNCO1FBQXJELGVBQVUsR0FBVixVQUFVLENBQVk7UUFBUyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRDs7O09BR0c7Ozs7OztJQUNJLDZCQUFVOzs7OztJQUFqQixVQUFrQixPQUFlO1FBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFDRDs7O09BR0c7Ozs7OztJQUNJLGlDQUFjOzs7OztJQUFyQixVQUFzQixX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QUksZUFBZSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFDRDs7T0FFRzs7Ozs7OztJQUNLLHFDQUFrQjs7Ozs7O0lBQTFCLFVBQTJCLE1BQVc7UUFDcEMsT0FBTyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyRCxDQUFDOztnQkExWkYsVUFBVTs7OztnQkFuQnVCLFVBQVU7Z0JBR25DLFVBQVU7O0lBMmFuQixlQUFDO0NBQUEsQUEzWkQsSUEyWkM7U0ExWlksUUFBUTs7Ozs7O0lBQ25CLCtCQUFvQzs7Ozs7O0lBSXBDLDJCQUEwQjs7Ozs7SUFDMUIsK0JBQWlDOztJQUNyQiw4QkFBNkI7O0lBQUUsOEJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZW1wdHksIHRocm93RXJyb3IsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCwgbWFwLCBjYXRjaEVycm9yLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zLCBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJUHJveHlFeHRlbmQsIFJlcXVlc3RJbmZvLCBSZXNwb25zZUluZm8sIENoYW5nZURldGFpbCB9IGZyb20gJy4vdHlwZXMnO1xyXG5pbXBvcnQgeyBCZWZEYXRhUGF0aFV0aWwgfSBmcm9tICcuL2JlZl9kYXRhX3BhdGhfdXRpbCc7XHJcbmltcG9ydCB7IFVyaVNlcnZpY2UgfSBmcm9tICcuL3VyaV9zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cEhlYWRlclV0aWwsIEh0dHBQYXJhbVV0aWwsIFJlcXVlc3RJbmZvVXRpbCwgUmVzcG9uc2VJbmZvVXRpbCB9IGZyb20gJy4vdXRpbHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4vaHR0cF9zZXJ2aWNlJztcclxuXHJcblxyXG5jb25zdCBHRVQgPSAnR0VUJztcclxuY29uc3QgREVMRVRFID0gJ0RFTEVURSc7XHJcbmNvbnN0IFBVVCA9ICdQVVQnO1xyXG5jb25zdCBQT1NUID0gJ1BPU1QnO1xyXG5jb25zdCBQQVRDSCA9ICdQQVRDSCc7XHJcblxyXG4vKipcclxuICogQmVm5Luj55CG57G7XHJcbiAqIOS7o+eQhuexu+eahOiBjOi0o+aYr+WkhOeQhmh0dHDor7fmsYLvvIzlj5HpgIHkuIDkuKpodHRw6K+35rGC5omA6ZyA55qE6LWE5rqQ5pyJ77yadXJp77yMbWV0aG9k77yMaGVhZGVy44CBYm9keeOAgXF1ZXJ5IHBhcmFtZXRlclxyXG4gKiB1cmkg55SxdXJpU2VydmljZVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQmVmUHJveHkge1xyXG4gIHByb3RlY3RlZCBwcm94eUV4dGVuZDogSVByb3h5RXh0ZW5kO1xyXG4gIC8qKlxyXG4gICAqIHJlc3RmdWzln7rot6/lvoRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYmFzZVVyaTogc3RyaW5nO1xyXG4gIHByaXZhdGUgaHR0cFNlcnZpY2U6IEh0dHBTZXJ2aWNlO1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBwdWJsaWMgdXJpU2VydmljZTogVXJpU2VydmljZSkge1xyXG4gICAgdGhpcy5odHRwU2VydmljZSA9IG5ldyBIdHRwU2VydmljZSh0aGlzLmh0dHBDbGllbnQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDorr7nva7ln7rot6/lvoRcclxuICAgKiBAcGFyYW0gYmFzZVVyaSDln7rot6/lvoRcclxuICAgKi9cclxuICBwdWJsaWMgc2V0QmFzZVVyaShiYXNlVXJpOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuYmFzZVVyaSA9IGJhc2VVcmk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOiuvue9ruetlueVpeaooeW8j1xyXG4gICAqIEBwYXJhbSBzdHJhdGVneSDnrZbnlaVcclxuICAgKi9cclxuICBwdWJsaWMgc2V0UHJveHlFeHRlbmQocHJveHlFeHRlbmQ6IElQcm94eUV4dGVuZCkge1xyXG4gICAgdGhpcy5wcm94eUV4dGVuZCA9IHByb3h5RXh0ZW5kO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmn6Xor6JcclxuICAgKi9cclxuICBwdWJsaWMgcXVlcnkoZW50aXR5RmlsdGVyPzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGxldCB1cmwgPSB0aGlzLmJhc2VVcmk7XHJcbiAgICBpZiAoZW50aXR5RmlsdGVyKSB7XHJcbiAgICAgIGNvbnN0IGVudGl0eUZpbHRlckpzb24gPSBKU09OLnN0cmluZ2lmeShlbnRpdHlGaWx0ZXIpO1xyXG4gICAgICB1cmwgPSBgJHt1cmx9P2VudGl0eUZpbHRlcj0ke2VudGl0eUZpbHRlckpzb259YDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBHRVQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5omp5bGV5p+l6K+iXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZFF1ZXJ5KGVudGl0eUZpbHRlcjogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgbGV0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uL3F1ZXJ5YDtcclxuICAgIGlmIChlbnRpdHlGaWx0ZXIpIHtcclxuICAgICAgY29uc3QgZW50aXR5RmlsdGVySnNvbiA9IEpTT04uc3RyaW5naWZ5KGVudGl0eUZpbHRlcik7XHJcbiAgICAgIHVybCA9IGAke3VybH0/ZW50aXR5RmlsdGVyPSR7ZW50aXR5RmlsdGVySnNvbn1gO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zLCBmYWxzZSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOafpeivouaVsOaNru+8iOW4pui/h+a7pOadoeS7tu+8iVxyXG4gICAqIEBwYXJhbSBlbnRpdHlGaWx0ZXIg6L+H5ruk44CB5o6S5bqP44CB5YiG6aG15L+h5oGvXHJcbiAgICogQHBhcmFtIHJlcXVlc3RJbmZvIHJlcXVlc3RJbmZvXHJcbiAgICogQGRlc2NyaXB0aW9uIOWSjGV4dGVuZFF1ZXJ55LiA6Ie077yM5LuF5bCG5p+l6K+i5Y+C5pWw5pS+5YiwYm9keeS4rVxyXG4gICAqL1xyXG4gIHB1YmxpYyBmaWx0ZXIoZW50aXR5RmlsdGVyOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBsZXQgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vZmlsdGVyYDtcclxuICAgIGxldCBib2R5OiBhbnkgPSB7IHJlcXVlc3RJbmZvIH07XHJcbiAgICBpZiAoZW50aXR5RmlsdGVyKSB7XHJcbiAgICAgIGJvZHkgPSB7IGVudGl0eUZpbHRlciwgcmVxdWVzdEluZm8gfTtcclxuICAgIH1cclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBPU1QsIG51bGwsIG9wdGlvbnMsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOajgOe0ouaVsOaNrlxyXG4gICAqIEBwYXJhbSBpZCDljZXmja7lhoXnoIFcclxuICAgKiBAcmV0dXJuIOaVsOaNruWvueixoVxyXG4gICAqL1xyXG4gIHB1YmxpYyByZXRyaWV2ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vJHtpZH1gO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIEdFVCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOWIhumhteafpeivouWQhOS7juihqOaVsOaNrlxyXG4gICAqIEBwYXJhbSBpZCDkuLvooahpZFxyXG4gICAqIEBwYXJhbSBvcHRpb25zIOmAiemhuVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXJ2aWNlUmV0cmlldmUoaWQ6IHN0cmluZywgcmV0cmlldmVQYXJhbTogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9zZXJ2aWNlL3JldHJpZXZlLyR7aWR9YDtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgIGJvZHk6IHsgcmV0cmlldmVQYXJhbSwgcmVxdWVzdEluZm8gfVxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDliIbpobXmn6Xor6Lku47ooagv5LuO5LuO6KGo5pWw5o2uXHJcbiAgICogQHBhcmFtIHBhcmFtcyDlj4LmlbBcclxuICAgKi9cclxuICBwdWJsaWMgcXVlcnlDaGlsZChwYXJhbXM6IGFueSkge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9zZXJ2aWNlL3F1ZXJ5Y2hpbGRgO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgYm9keTogcGFyYW1zIH07XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOajgOe0ouaVsOaNru+8iOaJqeWxle+8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRSZXRyaWV2ZShpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vcmV0cmlldmUvJHtpZH1gO1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOajgOe0ouaVsOaNrlxyXG4gICAqL1xyXG4gIHB1YmxpYyBlZGl0KGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvZWRpdC8ke2lkfWA7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yib5bu65LiA5p2h5pWw5o2uXHJcbiAgICovXHJcbiAgcHVibGljIGNyZWF0ZShkZWZhdWx0VmFsdWU/OiBhbnksIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgZGVmYXVsdFZhbHVlLFxyXG4gICAgICByZXF1ZXN0SW5mbzogcmVxdWVzdEluZm8sXHJcbiAgICB9O1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHRoaXMuYmFzZVVyaSwgUE9TVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDku47ooajmlrDlop5cclxuICAgKiBAcGF0aCDmlrDlop7ot6/lvoTvvIjku47ooajlvaLlpoLvvJovMS9lZHVz77yM5LuO5LuO6KGo5b2i5aaC77yaLzEvZWR1cy8xMS9ncmFkZXPvvIlcclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlQnlQYXRoKGZwYXRoOiBzdHJpbmcsIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKGZwYXRoKTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0ke3BhdGhVcmx9YDtcclxuXHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQT1NULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaPkOS6pOWPmOabtFxyXG4gICAqL1xyXG4gIHVwZGF0ZShjaGFuZ2VEZXRhaWw6IENoYW5nZURldGFpbCwgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICBjaGFuZ2VEZXRhaWwsXHJcbiAgICAgIHJlcXVlc3RJbmZvOiByZXF1ZXN0SW5mbyxcclxuICAgIH07XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHRoaXMuYmFzZVVyaSwgUEFUQ0gsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5omn6KGM5L+d5a2YXHJcbiAgICovXHJcbiAgcHVibGljIHNhdmUocmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodGhpcy5iYXNlVXJpLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6ZmkXHJcbiAgICovXHJcbiAgcHVibGljIGRlbGV0ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vJHtpZH1gO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIERFTEVURSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaTlubbkv53lrZhcclxuICAgKi9cclxuICBwdWJsaWMgZGVsZXRlQW5kU2F2ZShpZDogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9zZXJ2aWNlL2RlbGV0ZS8ke2lkfWA7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6Zmk77yI5omp5bGV77yJXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZERlbGV0ZShpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vZGVsZXRlLyR7aWR9YDtcclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaTlkI7ku6NcclxuICAgKiBAcGFyYW0gZnBhdGgg54i26Lev5b6E77yI5LuO6KGo5b2i5aaC77yaLzEvZWR1c++8jOS7juS7juihqOW9ouWmgu+8mi8xL2VkdXMvMTEvZ3JhZGVz77yJXHJcbiAgICovXHJcbiAgcHVibGljIGRlbGV0QnlQYXRoKGZwYXRoOiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKGZwYXRoKTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0ke3BhdGhVcmx9LyR7aWR9YDtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBERUxFVEUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6Zmk5ZCO5Luj77yI5omp5bGV77yJXHJcbiAgICogQHBhcmFtIGZwYXRoIOeItui3r+W+hO+8iOS7juihqOW9ouWmgu+8mi8xL2VkdXPvvIzku47ku47ooajlvaLlpoLvvJovMS9lZHVzLzExL2dyYWRlc++8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmREZWxldEJ5UGF0aChmcGF0aDogc3RyaW5nLCBpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKGZwYXRoKTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uJHtwYXRoVXJsfS8ke2lkfWA7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmibnph4/liKDpmaTlkI7ku6NcclxuICAgKiBAcGFyYW0gZlBhdGggJ2V4dGVuc2lvbi97cm9vdElkfS9jYy9iYXRjaCdcclxuICAgKiBAcGFyYW0gIGlkcyDlrZDpm4ZpZFxyXG4gICAqIEBwYXJhbSAgcmVxdWVzdEluZm8g6K+35rGC5L+h5oGvXHJcbiAgICovXHJcbiAgcHVibGljIGJhdGNoRGVsZXRlQnlQYXRoKGZQYXRoOiBzdHJpbmcsIGlkczogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgcGF0aEFycmF5ID0gZlBhdGguc3BsaXQoJy8nKTtcclxuICAgIGlmIChwYXRoQXJyYXkubGVuZ3RoIDwgMykge1xyXG4gICAgICB0aHJvdyBFcnJvcihg5qC55o2ucGF0aOWIoOmZpOWunuS9k+aVsOaNruWHuumUmeS6huOAguS8oOWFpeeahHBhdGhbJHtmUGF0aH1d5qC85byP5LiN5a+5YCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCByb290SWQgPSBwYXRoQXJyYXlbMV07XHJcbi8qICAgIGNvbnN0IGNoaWxkID0gcGF0aEFycmF5W3BhdGhBcnJheS5sZW5ndGggLSAxXTtcclxuICAgIGNvbnN0IGNoaWxkTmFtZSA9IGNoaWxkLnN1YnN0cigwLCBjaGlsZC5sZW5ndGggLSAxKTsqL1xyXG4gICAgY29uc3QgbmFtZUFycmF5ID0gW107XHJcbiAgICAvKumBjeWOhuS7juihqO+8jOS7juS7juihqCovXHJcbiAgICBwYXRoQXJyYXkuZm9yRWFjaCgobmFtZSwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKGluZGV4ID4gMSkge1xyXG4gICAgICAgIG5hbWVBcnJheS5wdXNoKG5hbWUuc3Vic3RyKDAsIG5hbWUubGVuZ3RoIC0gMSkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGNoaWxkTmFtZSA9IG5hbWVBcnJheS5qb2luKCcvJyk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi8ke3Jvb3RJZH0vJHtjaGlsZE5hbWV9L2JhdGNoYDtcclxuICAgIGNvbnN0IGlkc0FycmF5ID0gaWRzLnNwbGl0KCcsJyk7XHJcbiAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICBpZHM6IGlkc0FycmF5LFxyXG4gICAgICByZXF1ZXN0SW5mbzogcmVxdWVzdEluZm9cclxuICAgIH07XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmibnph4/liKDpmaRcclxuICAgKiBAcGFyYW0gaWRzIOW+heWIoOmZpOeahGlk5pWw57uEXHJcbiAgICovXHJcbiAgcHVibGljIGJhdGNoRGVsZXRlKGlkczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcGFyYW1zID0ge1xyXG4gICAgICBpZHM6IGlkcy5qb2luKCcsJylcclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHRoaXMuYmFzZVVyaSwgREVMRVRFLCBwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5om56YeP5Yig6Zmk77yI5omp5bGV77yJXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZEJhdGNoRGVsZXRlKGlkczogc3RyaW5nW10sIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9iYXRjaGRlbGV0ZWA7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIGlkczogaWRzLmpvaW4oJywnKVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIHBhcmFtcywgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICog5Y+W5raIXHJcbiAgICovXHJcbiAgcHVibGljIGNhbmNlbChjb250ZXh0PzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vc2VydmljZS9jYW5jZWxgO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBPU1QsIG51bGwsIG51bGwsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGNvbnRleHQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5om56YeP5paw5aKe5LuO6KGoL+S7juS7juihqOaVsOaNrlxyXG4gICAqIEBwYXJhbSBwYXRoIOWunuS9k+e7keWumui3r+W+hO+8jGxpa2UgMS9jaGlsZHMgb3IgMS9jaGlsZHMvMTEvY2hpbGRjaGlsZHNcclxuICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlcyDpu5jorqTlrp7kvZPmlbDmja7mlbDnu4RcclxuICAgKi9cclxuICBwdWJsaWMgYmF0Y2hBcHBlbmRCeVBhdGgocGF0aDogc3RyaW5nLCBkZWZhdWx0VmFsdWVzOiBBcnJheTxhbnk+LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKHBhdGgpO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfSR7cGF0aFVybH0vYmF0Y2hgO1xyXG4gICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgcmVxdWVzdEluZm8sXHJcbiAgICAgIHJldHJpZXZlRGVmYXVsdFBhcmFtOntcclxuICAgICAgICBkZWZhdWx0VmFsdWVzXHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQT1NULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICBwdWJsaWMgcmVxdWVzdChcclxuICAgIHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgcGFyYW1zPzogYW55LCBvcHRpb25zPzogYW55LFxyXG4gICAgc2VsZkhhbmRFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUVycm9yPzogYm9vbGVhbiwgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW4sIHJ1bnRpbWVDb250ZXh0PzogYW55XHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xyXG5cclxuICAgIC8vIOaYr+WQpuiHquihjOWkhOeQhumUmeivr1xyXG4gICAgaWYgKHR5cGVvZiAoc2VsZkhhbmRFcnJvcikgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAoc2VsZkhhbmRFcnJvcikgIT09ICdib29sZWFuJykge1xyXG4gICAgICBzZWxmSGFuZEVycm9yID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5piv5ZCm5b+955Wl5byC5bi457un57ut5omn6KGMXHJcbiAgICBpZiAodHlwZW9mIChpZ25vcmVFcnJvcikgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAoaWdub3JlRXJyb3IpICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgaWdub3JlRXJyb3IgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBwYXJhbXNcclxuICAgIGlmIChwYXJhbXMpIHtcclxuICAgICAgLy8gY29uc3QgaHR0cFBhcmFtcyA9IHRoaXMuYnVpbGRQYXJhbXMocGFyYW1zKTtcclxuICAgICAgb3B0aW9ucy5wYXJhbXMgPSBwYXJhbXM7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5aSE55CGaGVhZGVyc1xyXG4gICAgb3B0aW9ucy5oZWFkZXJzID0gSHR0cEhlYWRlclV0aWwuY29udmVydFRvSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpO1xyXG4gICAgLy8gMeOAgeWIpOaWreaYr+WQpuW4pnJlcXVlc3RJbmZv77yI5LiN5Yy65YiG6aaW5a2X5q+N5aSn5bCP5YaZ77yJO1xyXG4gICAgLy8gMuOAgeWmguaenOS8oOmAkueahOaYr1JlcXVlc3RJbmZv77yM5YiZ6L2s5o2i5Li6cmVxdWVzdEluZm/vvJtcclxuICAgIGNvbnN0IGhhc1JlcXVlc3RJbmZvID0gdGhpcy5oYXNSZXF1ZXN0SW5mbyhvcHRpb25zKTtcclxuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuYm9keSAmJiBvcHRpb25zLmJvZHkuaGFzT3duUHJvcGVydHkoJ1JlcXVlc3RJbmZvJykpIHtcclxuICAgICAgb3B0aW9ucy5ib2R5LnJlcXVlc3RJbmZvID0gb3B0aW9ucy5ib2R5LlJlcXVlc3RJbmZvO1xyXG4gICAgICBkZWxldGUgb3B0aW9ucy5ib2R5LlJlcXVlc3RJbmZvO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMucHJveHlFeHRlbmQuZXh0ZW5kSGVhZGVycyhvcHRpb25zLmhlYWRlcnMsIHJ1bnRpbWVDb250ZXh0KS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoaGVhZGVycyA9PiB7XHJcbiAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gSHR0cEhlYWRlclV0aWwudG9Kc29uKGhlYWRlcnMpO1xyXG4gICAgICAgIG9wdGlvbnMub2JzZXJ2ZSA9ICdyZXNwb25zZSc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UucmVxdWVzdChtZXRob2QsIHVybCwgb3B0aW9ucyk7XHJcbiAgICAgIH0pLFxyXG4gICAgICB0YXAoKHJlc3BvbnNlOiBhbnkpID0+IHRoaXMucHJveHlFeHRlbmQucGFyc2VIZWFkZXJzKHJlc3BvbnNlKSksXHJcbiAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHJlc3VsdC5ib2R5KSxcclxuICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChoYXNSZXF1ZXN0SW5mbykge1xyXG4gICAgICAgICAgdGhpcy5wcm94eUV4dGVuZC5vblJlc3BvbnNlKHJlc3VsdCwgaWdub3JlQ2hhbmdlcyk7XHJcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgLy8gYm9keemHjOayoeaciXJlcXVlc3RJbmZv55qE5oOF5Ya177yM5qih5ouf6ICB55qE5aSE55CG5pa55byP77yI5LiN5riF55CG5Y+Y5pu044CB5bCGcmV0dXJuVmFsdWXop6PmnpDlh7rmnaXvvIlcclxuICAgICAgICAgIHJldHVybiB0aGlzLnVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3h5RXh0ZW5kLm9uRXJyb3IoZXJyb3IsIHNlbGZIYW5kRXJyb3IsIGlnbm9yZUVycm9yKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDosIPnlKhodHRwY2xpZW505Y+W5pWwXHJcbiAgICogQHBhcmFtIHVybCB1cmxcclxuICAgKiBAcGFyYW0gbWV0aG9kIG1ldGhvZHNcclxuICAgKiBAcGFyYW0gb3B0aW9ucyBvcHRpb25zXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGludm9rZSh1cmw6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcsIG9wdGlvbnM6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBpZiAob3B0aW9ucy5wYXJhbXMpIHtcclxuICAgICAgdXJsID0gdGhpcy5wcm94eUV4dGVuZC5leHRlbmRVcmwodXJsLCBvcHRpb25zLnBhcmFtcyk7XHJcbiAgICAgIG9wdGlvbnMucGFyYW1zID0gbnVsbDtcclxuICAgIH1cclxuICAgIGlmIChvcHRpb25zLmJvZHkpIHtcclxuICAgICAgb3B0aW9ucy5ib2R5ID0gdGhpcy5wcm94eUV4dGVuZC5leHRlbmRCb2R5KG9wdGlvbnMuYm9keSk7XHJcbiAgICB9XHJcbiAgICBvcHRpb25zLmhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC5jb252ZXJ0VG9IZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XHJcbiAgICBjb25zdCBoZWFkZXJzJCA9IHRoaXMucHJveHlFeHRlbmQuZXh0ZW5kSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpO1xyXG4gICAgcmV0dXJuIGhlYWRlcnMkLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcChoZWFkZXJzID0+IHtcclxuICAgICAgICBvcHRpb25zLmhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC50b0pzb24oaGVhZGVycyk7XHJcbiAgICAgICAgb3B0aW9ucy5vYnNlcnZlID0gJ3Jlc3BvbnNlJztcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5yZXF1ZXN0KG1ldGhvZCwgdXJsLCBvcHRpb25zKVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIHRhcCgocmVzcG9uc2U6IGFueSkgPT4gdGhpcy5wcm94eUV4dGVuZC5wYXJzZUhlYWRlcnMocmVzcG9uc2UpKSxcclxuICAgICAgICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0LmJvZHkpLFxyXG4gICAgICAgICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiB0aGlzLnByb3h5RXh0ZW5kLm9uUmVzcG9uc2UocmVzdWx0KSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4gdGhpcy5wcm94eUV4dGVuZC5vbkVycm9yKGVycm9yLCBmYWxzZSwgZmFsc2UpKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlkJFIdHRwT3B0aW9uc+WvueixoeS4rea3u+WKoGJvZHlcclxuICAgKiBAcGFyYW0gb3B0aW9ucyDljp/mnaXnmoRvcHRpb25zXHJcbiAgICogQHBhcmFtIGJvZHkgYm9keeWGheWuuVxyXG4gICAqL1xyXG4gIHByaXZhdGUgYWRkQm9keVRvT3B0aW9ucyhvcHRpb25zOiBhbnksIGJvZHk6IGFueSkge1xyXG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XHJcbiAgICBjb25zdCBtZXJnZWRPcHRpb25zID0gT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7IGJvZHkgfSk7XHJcbiAgICByZXR1cm4gbWVyZ2VkT3B0aW9ucztcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5p6E6YCgSHR0cFBhcmFtc+WvueixoVxyXG4gICAqIEBwYXJhbSBwYXJhbXMg6K+35rGC5Y+C5pWwXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBidWlsZFBhcmFtcyhwYXJhbXM6IG9iamVjdCk6IEh0dHBQYXJhbXMge1xyXG4gICAgcmV0dXJuIEh0dHBQYXJhbVV0aWwuYnVpbGRQYXJhbXMocGFyYW1zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5piv5ZCm5bim5pyJUmVxdWVzdEluZm9cclxuICAgKi9cclxuICBwcml2YXRlIGhhc1JlcXVlc3RJbmZvKG9wdGlvbnM6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIFJlcXVlc3RJbmZvVXRpbC5oYXNSZXF1ZXN0SW5mbyhvcHRpb25zKSB8fCBSZXF1ZXN0SW5mb1V0aWwuaGFzUmVxdWVzdEluZm9XaXRoUihvcHRpb25zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5aSE55CG6L+U5Zue5YC877yM5YW85a656ICB54mI5pysXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1bldyYXBSZXNwb25zZUluZm8ocmVzdWx0OiBhbnkpIHtcclxuICAgIHJldHVybiBSZXNwb25zZUluZm9VdGlsLnVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQpO1xyXG4gIH1cclxufVxyXG4iXX0=
{
"name": "@farris/bef",
"version": "0.0.12-20210121193537-dev",
"version": "0.0.12-20210122114553-dev",
"peerDependencies": {

@@ -5,0 +5,0 @@ "@angular/common": "^7.2.0",

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