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-20201118104440-dev to 0.0.12-20210111100158-dev

2

bundles/farris-bef.umd.min.js

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

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

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

import { switchMap } from 'rxjs/operators';
import { ResponseInfoUtil } from './utils';
// tslint:disable: max-line-length tslint:disable: no-string-literal

@@ -69,2 +70,5 @@ export class BefProxyExtend {

if (!!eventBus && isExceptionHandlerExist) {
if (ResponseInfoUtil.isReported401Error(error)) {
return throwError(error);
}
eventBus.post('Exception', '', 'onException', error, formAppContext);

@@ -168,2 +172,2 @@ if (ignoreError) {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5X2V4dGVuZC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2JlZl9wcm94eV9leHRlbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUkzQyxNQUFNLE9BQU8sY0FBYzs7OztJQUN6QixZQUFvQixPQUE4QjtRQUE5QixZQUFPLEdBQVAsT0FBTyxDQUF1QjtJQUFJLENBQUM7Ozs7Ozs7SUFNaEQsVUFBVSxDQUFDLFFBQXNCLEVBQUUsYUFBdUI7UUFDL0QsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLGVBQWUsSUFBSSxhQUFhLEtBQUssSUFBSSxFQUFFO1lBQ2xFLElBQUksQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ2hFO1FBQ0QsZ0NBQWdDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNyQyxJQUFJO1FBQ0osSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUN0RCxPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUM7U0FDN0I7YUFBTTtZQUNMLE9BQU8sUUFBUSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQzs7Ozs7Ozs7SUFPTSxPQUFPLENBQUMsS0FBVSxFQUFFLGFBQXNCLEVBQUUsV0FBb0I7O2NBQy9ELGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRTs7Y0FDNUQsYUFBYSxHQUFHLGNBQWMsQ0FBQyxhQUFhOztjQUM1QyxlQUFlLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDO1FBQ3hELElBQUksZUFBZSxJQUFJLGVBQWUsWUFB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QU8sQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzthQUNuRTtRQUNILENBQUMsRUFBQyxDQUFDO1FBQ0gsbUNBQW1DO1FBQ25DLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQy9CO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzs7OztJQUNNLFlBQVksQ0FBQyxRQUFhOztjQUN6QixZQUFZLEdBQUcsY0FBYztRQUNuQyxJQUFJLFFBQVEsQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1NBQzVGO0lBQ0gsQ0FBQztDQUNGOzs7Ozs7SUFqSGEsaUNBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdGhyb3dFcnJvciwgT2JzZXJ2YWJsZSwgb2YsIEVNUFRZIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJ0BmYXJyaXMvZGV2a2l0JztcclxuaW1wb3J0IHsgSVByb3h5RXh0ZW5kLCBSZXNwb25zZUluZm8gfSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgQmVmUmVwb3NpdG9yeSB9IGZyb20gJy4vYmVmX3JlcG9zaXRvcnknO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEh0dHBQYXJhbXMsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuLy8gdHNsaW50OmRpc2FibGU6IG1heC1saW5lLWxlbmd0aCB0c2xpbnQ6ZGlzYWJsZTogbm8tc3RyaW5nLWxpdGVyYWxcclxuZXhwb3J0IGNsYXNzIEJlZlByb3h5RXh0ZW5kIGltcGxlbWVudHMgSVByb3h5RXh0ZW5kIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbnRleHQ6IEJlZlJlcG9zaXRvcnk8RW50aXR5PikgeyB9XHJcbiAgLyoqXHJcbiAgICog6K+35rGC57uT5p6c6L+U5ZueXHJcbiAgICogQHBhcmFtIHJlc3BvbnNlIHJlc3BvbnNlXHJcbiAgICogQHBhcmFtIGlnbm9yZUNoYW5nZXMg5b+955Wl5Y+Y5pu0XHJcbiAgICovXHJcbiAgcHVibGljIG9uUmVzcG9uc2UocmVzcG9uc2U6IFJlc3BvbnNlSW5mbywgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW4pIHtcclxuICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5pbm5lckRhdGFDaGFuZ2UgJiYgaWdub3JlQ2hhbmdlcyAhPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmNvbnRleHQuaGFuZGxlRGF0YUNoYW5nZURldGFpbHMocmVzcG9uc2UuaW5uZXJEYXRhQ2hhbmdlKTtcclxuICAgIH1cclxuICAgIC8vIGlmIChpZ25vcmVDaGFuZ2VzICE9PSB0cnVlKSB7XHJcbiAgICB0aGlzLmNvbnRleHQuY2xlYXJBbGxFbnRpdHlDaGFuZ2VzKCk7XHJcbiAgICAvLyB9XHJcbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuaGFzT3duUHJvcGVydHkoJ3JldHVyblZhbHVlJykpIHtcclxuICAgICAgcmV0dXJuIHJlc3BvbnNlLnJldHVyblZhbHVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiDlj5HnlJ/plJnor69cclxuICAgKiBAcGFyYW0gZXJyb3IgZXJyb3JcclxuICAgKiBAcGFyYW0gc2VsZkhhbmRFcnJvciDoh6rlrprkuYnplJnor6/lpITnkIZcclxuICAgKiBAcGFyYW0gaWdub3JlRXJyb3Ig5b+955Wl6ZSZ6K+vXHJcbiAgICovXHJcbiAgcHVibGljIG9uRXJyb3IoZXJyb3I6IGFueSwgc2VsZkhhbmRFcnJvcjogYm9vbGVhbiwgaWdub3JlRXJyb3I6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgZm9ybUFwcENvbnRleHQgPSB0aGlzLmNvbnRleHQuYXBwQ29udGV4dC5nZXRGb3JtQXBwQ29udGV4dCgpO1xyXG4gICAgY29uc3QgYXBwbGljYXRpb25JZCA9IGZvcm1BcHBDb250ZXh0LkFwcGxpY2F0aW9uSWQ7XHJcbiAgICBjb25zdCBsb2FkaW5nU2VydmljZXMgPSB3aW5kb3dbJ0RFVktJVF9MT0FESU5HX1NFUlZJQ0UnXTtcclxuICAgIGlmIChsb2FkaW5nU2VydmljZXMgJiYgbG9hZGluZ1NlcnZpY2VzIGluc3RhbmNlb2YgQXJyYXkgJiYgbG9hZGluZ1NlcnZpY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9yIChjb25zdCBsb2FkaW5nU2VydmljZSBvZiBsb2FkaW5nU2VydmljZXMpIHtcclxuICAgICAgICBpZiAodHlwZW9mIChsb2FkaW5nU2VydmljZS5jbGVhckFsbCkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgIGxvYWRpbmdTZXJ2aWNlLmNsZWFyQWxsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoISFzZWxmSGFuZEVycm9yKSB7XHJcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGV2ZW50QnVzID0gdGhpcy5jb250ZXh0LnJlc3RTZXJ2aWNlLmV2ZW50QnVzO1xyXG4gICAgICBjb25zdCBhcHBsaWNhdGlvbkNvbnRleHQ6IGFueSA9IHdpbmRvd1thcHBsaWNhdGlvbklkXSB8fCB7fTtcclxuICAgICAgY29uc3QgaXNFeGNlcHRpb25IYW5kbGVyRXhpc3QgPSAhIWFwcGxpY2F0aW9uQ29udGV4dC5pc0V4Y2VwdGlvbkhhbmRsZXJFeGlzdDtcclxuXHJcbiAgICAgIGlmICghIWV2ZW50QnVzICYmIGlzRXhjZXB0aW9uSGFuZGxlckV4aXN0KSB7XHJcbiAgICAgICAgZXZlbnRCdXMucG9zdCgnRXhjZXB0aW9uJywgJycsICdvbkV4Y2VwdGlvbicsIGVycm9yLCBmb3JtQXBwQ29udGV4dCk7XHJcbiAgICAgICAgaWYgKGlnbm9yZUVycm9yKSB7XHJcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaJqeWxlWh0dHAgaGVhZGVyc1xyXG4gICAqIEBwYXJhbSBoZWFkZXJzIGhlYWRlcnNcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kSGVhZGVycyhoZWFkZXJzOiBIdHRwSGVhZGVycywgcnVudGltZUNvbnRleHQ/OiBhbnkpOiBPYnNlcnZhYmxlPHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfT4ge1xyXG4gICAgY29uc3QgJGdldFNlc3Npb25JZCA9IHRoaXMuY29udGV4dC5yZXN0U2VydmljZS5zZXNzaW9uU2VydmljZS5nZXRCZVNlc3Npb25JZCgpO1xyXG4gICAgcmV0dXJuICRnZXRTZXNzaW9uSWQucGlwZShcclxuICAgICAgc3dpdGNoTWFwKHNlc3Npb25JZCA9PiB7XHJcbiAgICAgICAgaGVhZGVycyA9IHRoaXMuY29udGV4dC5yZXN0U2VydmljZS5zZXNzaW9uU2VydmljZS5leHRlbmRSZXF1ZXN0SGVhZGVycyhoZWFkZXJzLCBydW50aW1lQ29udGV4dCk7XHJcbiAgICAgICAgcmV0dXJuIG9mKGhlYWRlcnMpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5omp5bGV6K+35rGC5Y+C5pWwXHJcbiAgICogQHBhcmFtIHBhcmFtcyDlj4LmlbBcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kVXJsKHVybDogc3RyaW5nLCBwYXJhbXM6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfSk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXBhcmFtcykge1xyXG4gICAgICByZXR1cm4gdXJsO1xyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gcGFyYW1zKSB7XHJcbiAgICAgIGlmIChwYXJhbXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gSlNPTi5zdHJpbmdpZnkocGFyYW1zW2tleV0pO1xyXG4gICAgICAgIGlmICh1cmwuaW5kZXhPZignPycpID09PSAtMSkge1xyXG4gICAgICAgICAgdXJsID0gYCR7dXJsfT8ke2tleX09JHt2YWx1ZX1gO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB1cmwgPSBgJHt1cmx9JiR7a2V5fT0ke3ZhbHVlfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXJsO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmianlsZXor7fmsYLkvZNcclxuICAgKiBAcGFyYW0gYm9keSBib2R5XHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZEJvZHkoYm9keSk6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfSB7XHJcbiAgICBpZiAoIWJvZHkgfHwgdHlwZW9mIGJvZHkgIT09ICdvYmplY3QnIHx8IE9iamVjdC5rZXlzKGJvZHkpLmxlbmd0aCA8IDEpIHtcclxuICAgICAgcmV0dXJuIGJvZHk7XHJcbiAgICB9XHJcbiAgICBPYmplY3Qua2V5cyhib2R5KS5mb3JFYWNoKG5hbWUgPT4ge1xyXG4gICAgICBpZiAobmFtZSA9PT0gJ3JlcXVlc3RJbmZvJykge1xyXG4gICAgICAgIGJvZHlbJ3JlcXVlc3RJbmZvJ10gPSB0aGlzLmNvbnRleHQucmVzdFNlcnZpY2UuYnVpbGRSZXF1ZXN0SW5mbygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIOWFvOWuuUrniYjlkI7nq69ib2R55Y+q5pyJ5LiA5Liqa2V55pe2Ym9keeWPquS8oHZhbHVl55qE5oOF5Ya1XHJcbiAgICBpZiAoT2JqZWN0LmtleXMoYm9keSkubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIGJvZHkgPSBPYmplY3QudmFsdWVzKGJvZHkpWzBdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJvZHk7XHJcbiAgfVxyXG4gIHB1YmxpYyBwYXJzZUhlYWRlcnMocmVzcG9uc2U6IGFueSkge1xyXG4gICAgY29uc3Qgc2Vzc2lvbklkS2V5ID0gJ0JFRlNlc3Npb25JRCc7XHJcbiAgICBpZiAocmVzcG9uc2UuaGVhZGVycyAmJiByZXNwb25zZS5oZWFkZXJzLmhhcyhzZXNzaW9uSWRLZXkpKSB7XHJcbiAgICAgIHRoaXMuY29udGV4dC5yZXN0U2VydmljZS5zZXNzaW9uU2VydmljZS5zZXRCZVNlc3Npb25JZChyZXNwb25zZS5oZWFkZXJzLmdldChzZXNzaW9uSWRLZXkpKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5X2V4dGVuZC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2JlZl9wcm94eV9leHRlbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLGNBQWM7Ozs7SUFDekIsWUFBb0IsT0FBOEI7UUFBOUIsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7SUFBSSxDQUFDOzs7Ozs7O0lBTWhELFVBQVUsQ0FBQyxRQUFzQixFQUFFLGFBQXVCO1FBQy9ELElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxlQUFlLElBQUksYUFBYSxLQUFLLElBQUksRUFBRTtZQUNsRSxJQUFJLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUNoRTtRQUNELGdDQUFnQztRQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDckMsSUFBSTtRQUNKLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDdEQsT0FBTyxRQUFRLENBQUMsV0FBVyxDQUFDO1NBQzdCO2FBQU07WUFDTCxPQUFPLFFBQVEsQ0FBQztTQUNqQjtJQUNILENBQUM7Ozs7Ozs7O0lBT00sT0FBTyxDQUFDLEtBQVUsRUFBRSxhQUFzQixFQUFFLFdBQW9COztjQUMvRCxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUU7O2NBQzVELGFBQWEsR0FBRyxjQUFjLENBQUMsYUFBYTs7Y0FDNUMsZUFBZSxHQUFHLE1BQU0sQ0FB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QUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU87Ozs7UUFBQyxJQUFJLENBQUMsRUFBRTtZQUMvQixJQUFJLElBQUksS0FBSyxhQUFhLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2FBQ25FO1FBQ0gsQ0FBQyxFQUFDLENBQUM7UUFDSCxtQ0FBbUM7UUFDbkMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDbEMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDL0I7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Ozs7O0lBQ00sWUFBWSxDQUFDLFFBQWE7O2NBQ3pCLFlBQVksR0FBRyxjQUFjO1FBQ25DLElBQUksUUFBUSxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUMxRCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7U0FDNUY7SUFDSCxDQUFDO0NBQ0Y7Ozs7OztJQXBIYSxpQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0aHJvd0Vycm9yLCBPYnNlcnZhYmxlLCBvZiwgRU1QVFkgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSAnQGZhcnJpcy9kZXZraXQnO1xyXG5pbXBvcnQgeyBJUHJveHlFeHRlbmQsIFJlc3BvbnNlSW5mbyB9IGZyb20gJy4vdHlwZXMnO1xyXG5pbXBvcnQgeyBCZWZSZXBvc2l0b3J5IH0gZnJvbSAnLi9iZWZfcmVwb3NpdG9yeSc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSHR0cFBhcmFtcywgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFJlc3BvbnNlSW5mb1V0aWwgfSBmcm9tICcuL3V0aWxzJztcclxuXHJcbi8vIHRzbGludDpkaXNhYmxlOiBtYXgtbGluZS1sZW5ndGggdHNsaW50OmRpc2FibGU6IG5vLXN0cmluZy1saXRlcmFsXHJcbmV4cG9ydCBjbGFzcyBCZWZQcm94eUV4dGVuZCBpbXBsZW1lbnRzIElQcm94eUV4dGVuZCB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb250ZXh0OiBCZWZSZXBvc2l0b3J5PEVudGl0eT4pIHsgfVxyXG4gIC8qKlxyXG4gICAqIOivt+axgue7k+aenOi/lOWbnlxyXG4gICAqIEBwYXJhbSByZXNwb25zZSByZXNwb25zZVxyXG4gICAqIEBwYXJhbSBpZ25vcmVDaGFuZ2VzIOW/veeVpeWPmOabtFxyXG4gICAqL1xyXG4gIHB1YmxpYyBvblJlc3BvbnNlKHJlc3BvbnNlOiBSZXNwb25zZUluZm8sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuKSB7XHJcbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuaW5uZXJEYXRhQ2hhbmdlICYmIGlnbm9yZUNoYW5nZXMgIT09IHRydWUpIHtcclxuICAgICAgdGhpcy5jb250ZXh0LmhhbmRsZURhdGFDaGFuZ2VEZXRhaWxzKHJlc3BvbnNlLmlubmVyRGF0YUNoYW5nZSk7XHJcbiAgICB9XHJcbiAgICAvLyBpZiAoaWdub3JlQ2hhbmdlcyAhPT0gdHJ1ZSkge1xyXG4gICAgdGhpcy5jb250ZXh0LmNsZWFyQWxsRW50aXR5Q2hhbmdlcygpO1xyXG4gICAgLy8gfVxyXG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmhhc093blByb3BlcnR5KCdyZXR1cm5WYWx1ZScpKSB7XHJcbiAgICAgIHJldHVybiByZXNwb25zZS5yZXR1cm5WYWx1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICog5Y+R55Sf6ZSZ6K+vXHJcbiAgICogQHBhcmFtIGVycm9yIGVycm9yXHJcbiAgICogQHBhcmFtIHNlbGZIYW5kRXJyb3Ig6Ieq5a6a5LmJ6ZSZ6K+v5aSE55CGXHJcbiAgICogQHBhcmFtIGlnbm9yZUVycm9yIOW/veeVpemUmeivr1xyXG4gICAqL1xyXG4gIHB1YmxpYyBvbkVycm9yKGVycm9yOiBhbnksIHNlbGZIYW5kRXJyb3I6IGJvb2xlYW4sIGlnbm9yZUVycm9yOiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGZvcm1BcHBDb250ZXh0ID0gdGhpcy5jb250ZXh0LmFwcENvbnRleHQuZ2V0Rm9ybUFwcENvbnRleHQoKTtcclxuICAgIGNvbnN0IGFwcGxpY2F0aW9uSWQgPSBmb3JtQXBwQ29udGV4dC5BcHBsaWNhdGlvbklkO1xyXG4gICAgY29uc3QgbG9hZGluZ1NlcnZpY2VzID0gd2luZG93WydERVZLSVRfTE9BRElOR19TRVJWSUNFJ107XHJcbiAgICBpZiAobG9hZGluZ1NlcnZpY2VzICYmIGxvYWRpbmdTZXJ2aWNlcyBpbnN0YW5jZW9mIEFycmF5ICYmIGxvYWRpbmdTZXJ2aWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAoY29uc3QgbG9hZGluZ1NlcnZpY2Ugb2YgbG9hZGluZ1NlcnZpY2VzKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiAobG9hZGluZ1NlcnZpY2UuY2xlYXJBbGwpID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICBsb2FkaW5nU2VydmljZS5jbGVhckFsbCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCEhc2VsZkhhbmRFcnJvcikge1xyXG4gICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBldmVudEJ1cyA9IHRoaXMuY29udGV4dC5yZXN0U2VydmljZS5ldmVudEJ1cztcclxuICAgICAgY29uc3QgYXBwbGljYXRpb25Db250ZXh0OiBhbnkgPSB3aW5kb3dbYXBwbGljYXRpb25JZF0gfHwge307XHJcbiAgICAgIGNvbnN0IGlzRXhjZXB0aW9uSGFuZGxlckV4aXN0ID0gISFhcHBsaWNhdGlvbkNvbnRleHQuaXNFeGNlcHRpb25IYW5kbGVyRXhpc3Q7XHJcblxyXG4gICAgICBpZiAoISFldmVudEJ1cyAmJiBpc0V4Y2VwdGlvbkhhbmRsZXJFeGlzdCkge1xyXG4gICAgICAgIGlmIChSZXNwb25zZUluZm9VdGlsLmlzUmVwb3J0ZWQ0MDFFcnJvcihlcnJvcikpIHtcclxuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZXZlbnRCdXMucG9zdCgnRXhjZXB0aW9uJywgJycsICdvbkV4Y2VwdGlvbicsIGVycm9yLCBmb3JtQXBwQ29udGV4dCk7XHJcbiAgICAgICAgaWYgKGlnbm9yZUVycm9yKSB7XHJcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaJqeWxlWh0dHAgaGVhZGVyc1xyXG4gICAqIEBwYXJhbSBoZWFkZXJzIGhlYWRlcnNcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kSGVhZGVycyhoZWFkZXJzOiBIdHRwSGVhZGVycywgcnVudGltZUNvbnRleHQ/OiBhbnkpOiBPYnNlcnZhYmxlPHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfT4ge1xyXG4gICAgY29uc3QgJGdldFNlc3Npb25JZCA9IHRoaXMuY29udGV4dC5yZXN0U2VydmljZS5zZXNzaW9uU2VydmljZS5nZXRCZVNlc3Npb25JZCgpO1xyXG4gICAgcmV0dXJuICRnZXRTZXNzaW9uSWQucGlwZShcclxuICAgICAgc3dpdGNoTWFwKHNlc3Npb25JZCA9PiB7XHJcbiAgICAgICAgaGVhZGVycyA9IHRoaXMuY29udGV4dC5yZXN0U2VydmljZS5zZXNzaW9uU2VydmljZS5leHRlbmRSZXF1ZXN0SGVhZGVycyhoZWFkZXJzLCBydW50aW1lQ29udGV4dCk7XHJcbiAgICAgICAgcmV0dXJuIG9mKGhlYWRlcnMpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5omp5bGV6K+35rGC5Y+C5pWwXHJcbiAgICogQHBhcmFtIHBhcmFtcyDlj4LmlbBcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kVXJsKHVybDogc3RyaW5nLCBwYXJhbXM6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfSk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXBhcmFtcykge1xyXG4gICAgICByZXR1cm4gdXJsO1xyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gcGFyYW1zKSB7XHJcbiAgICAgIGlmIChwYXJhbXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gSlNPTi5zdHJpbmdpZnkocGFyYW1zW2tleV0pO1xyXG4gICAgICAgIGlmICh1cmwuaW5kZXhPZignPycpID09PSAtMSkge1xyXG4gICAgICAgICAgdXJsID0gYCR7dXJsfT8ke2tleX09JHt2YWx1ZX1gO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB1cmwgPSBgJHt1cmx9JiR7a2V5fT0ke3ZhbHVlfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXJsO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmianlsZXor7fmsYLkvZNcclxuICAgKiBAcGFyYW0gYm9keSBib2R5XHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZEJvZHkoYm9keSk6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfSB7XHJcbiAgICBpZiAoIWJvZHkgfHwgdHlwZW9mIGJvZHkgIT09ICdvYmplY3QnIHx8IE9iamVjdC5rZXlzKGJvZHkpLmxlbmd0aCA8IDEpIHtcclxuICAgICAgcmV0dXJuIGJvZHk7XHJcbiAgICB9XHJcbiAgICBPYmplY3Qua2V5cyhib2R5KS5mb3JFYWNoKG5hbWUgPT4ge1xyXG4gICAgICBpZiAobmFtZSA9PT0gJ3JlcXVlc3RJbmZvJykge1xyXG4gICAgICAgIGJvZHlbJ3JlcXVlc3RJbmZvJ10gPSB0aGlzLmNvbnRleHQucmVzdFNlcnZpY2UuYnVpbGRSZXF1ZXN0SW5mbygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIOWFvOWuuUrniYjlkI7nq69ib2R55Y+q5pyJ5LiA5Liqa2V55pe2Ym9keeWPquS8oHZhbHVl55qE5oOF5Ya1XHJcbiAgICBpZiAoT2JqZWN0LmtleXMoYm9keSkubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIGJvZHkgPSBPYmplY3QudmFsdWVzKGJvZHkpWzBdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJvZHk7XHJcbiAgfVxyXG4gIHB1YmxpYyBwYXJzZUhlYWRlcnMocmVzcG9uc2U6IGFueSkge1xyXG4gICAgY29uc3Qgc2Vzc2lvbklkS2V5ID0gJ0JFRlNlc3Npb25JRCc7XHJcbiAgICBpZiAocmVzcG9uc2UuaGVhZGVycyAmJiByZXNwb25zZS5oZWFkZXJzLmhhcyhzZXNzaW9uSWRLZXkpKSB7XHJcbiAgICAgIHRoaXMuY29udGV4dC5yZXN0U2VydmljZS5zZXNzaW9uU2VydmljZS5zZXRCZVNlc3Npb25JZChyZXNwb25zZS5oZWFkZXJzLmdldChzZXNzaW9uSWRLZXkpKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19

@@ -90,2 +90,21 @@ /**

/**
* 查询数据(带过滤条件)
* \@description 和extendQuery一致,仅将查询参数放到body中
* @param {?} entityFilter 过滤、排序、分页信息
* @param {?} requestInfo requestInfo
* @return {?}
*/
filter(entityFilter, requestInfo) {
/** @type {?} */
let url = `${this.baseUri}/extension/filter`;
/** @type {?} */
let body = { requestInfo };
if (entityFilter) {
body = { entityFilter, requestInfo };
}
/** @type {?} */
const options = this.addBodyToOptions({}, body);
return this.request(url, POST, null, options, false);
}
/**
* 检索数据

@@ -523,2 +542,2 @@ * @param {?} id 单据内码

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvYmVmX3Byb3h5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUEyQixVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztNQUd2QyxHQUFHLEdBQUcsS0FBSzs7TUFDWCxNQUFNLEdBQUcsUUFBUTs7TUFDakIsR0FBRyxHQUFHLEtBQUs7O01BQ1gsSUFBSSxHQUFHLE1BQU07O01BQ2IsS0FBSyxHQUFHLE9BQU87Ozs7OztBQVFyQixNQUFNLE9BQU8sUUFBUTs7Ozs7SUFPbkIsWUFBbUIsVUFBc0IsRUFBUyxVQUFzQjtRQUFyRCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0RSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0RCxDQUFDOzs7Ozs7SUFLTSxVQUFVLENBQUMsT0FBZTtRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDOzs7Ozs7SUFLTSxjQUFjLENBQUMsV0FBeUI7UUFDN0MsSUFBSSxDQUFDLFdBQVcsR0FB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Q0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBQyxFQUN6RCxVQUFVOzs7O1lBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFDLENBQ25FLENBQUM7UUFDTixDQUFDLEVBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7Ozs7Ozs7SUFPTyxnQkFBZ0IsQ0FBQyxPQUFZLEVBQUUsSUFBUztRQUM5QyxPQUFPLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQzs7Y0FDbEIsYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDdEQsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQzs7Ozs7OztJQUtPLFdBQVcsQ0FBQyxNQUFjO1FBQ2hDLE9BQU8sYUFBYSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDOzs7Ozs7O0lBSU8sY0FBYyxDQUFDLE9BQVk7UUFDakMsT0FBTyxlQUFlLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRyxDQUFDOzs7Ozs7O0lBSU8sa0JBQWtCLENBQUMsTUFBVztRQUNwQyxPQUFPLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JELENBQUM7OztZQTNWRixVQUFVOzs7O1lBbkJ1QixVQUFVO1lBR25DLFVBQVU7Ozs7Ozs7SUFrQmpCLCtCQUFvQzs7Ozs7O0lBSXBDLDJCQUEwQjs7Ozs7SUFDMUIsK0JBQWlDOztJQUNyQiw4QkFBNkI7O0lBQUUsOEJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZW1wdHksIHRocm93RXJyb3IsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCwgbWFwLCBjYXRjaEVycm9yLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zLCBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJUHJveHlFeHRlbmQsIFJlcXVlc3RJbmZvLCBSZXNwb25zZUluZm8sIENoYW5nZURldGFpbCB9IGZyb20gJy4vdHlwZXMnO1xyXG5pbXBvcnQgeyBCZWZEYXRhUGF0aFV0aWwgfSBmcm9tICcuL2JlZl9kYXRhX3BhdGhfdXRpbCc7XHJcbmltcG9ydCB7IFVyaVNlcnZpY2UgfSBmcm9tICcuL3VyaV9zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cEhlYWRlclV0aWwsIEh0dHBQYXJhbVV0aWwsIFJlcXVlc3RJbmZvVXRpbCwgUmVzcG9uc2VJbmZvVXRpbCB9IGZyb20gJy4vdXRpbHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4vaHR0cF9zZXJ2aWNlJztcclxuXHJcblxyXG5jb25zdCBHRVQgPSAnR0VUJztcclxuY29uc3QgREVMRVRFID0gJ0RFTEVURSc7XHJcbmNvbnN0IFBVVCA9ICdQVVQnO1xyXG5jb25zdCBQT1NUID0gJ1BPU1QnO1xyXG5jb25zdCBQQVRDSCA9ICdQQVRDSCc7XHJcblxyXG4vKipcclxuICogQmVm5Luj55CG57G7XHJcbiAqIOS7o+eQhuexu+eahOiBjOi0o+aYr+WkhOeQhmh0dHDor7fmsYLvvIzlj5HpgIHkuIDkuKpodHRw6K+35rGC5omA6ZyA55qE6LWE5rqQ5pyJ77yadXJp77yMbWV0aG9k77yMaGVhZGVy44CBYm9keeOAgXF1ZXJ5IHBhcmFtZXRlclxyXG4gKiB1cmkg55SxdXJpU2VydmljZVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQmVmUHJveHkge1xyXG4gIHByb3RlY3RlZCBwcm94eUV4dGVuZDogSVByb3h5RXh0ZW5kO1xyXG4gIC8qKlxyXG4gICAqIHJlc3RmdWzln7rot6/lvoRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYmFzZVVyaTogc3RyaW5nO1xyXG4gIHByaXZhdGUgaHR0cFNlcnZpY2U6IEh0dHBTZXJ2aWNlO1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBwdWJsaWMgdXJpU2VydmljZTogVXJpU2VydmljZSkge1xyXG4gICAgdGhpcy5odHRwU2VydmljZSA9IG5ldyBIdHRwU2VydmljZSh0aGlzLmh0dHBDbGllbnQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDorr7nva7ln7rot6/lvoRcclxuICAgKiBAcGFyYW0gYmFzZVVyaSDln7rot6/lvoRcclxuICAgKi9cclxuICBwdWJsaWMgc2V0QmFzZVVyaShiYXNlVXJpOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuYmFzZVVyaSA9IGJhc2VVcmk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOiuvue9ruetlueVpeaooeW8j1xyXG4gICAqIEBwYXJhbSBzdHJhdGVneSDnrZbnlaVcclxuICAgKi9cclxuICBwdWJsaWMgc2V0UHJveHlFeHRlbmQocHJveHlFeHRlbmQ6IElQcm94eUV4dGVuZCkge1xyXG4gICAgdGhpcy5wcm94eUV4dGVuZCA9IHByb3h5RXh0ZW5kO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmn6Xor6JcclxuICAgKi9cclxuICBwdWJsaWMgcXVlcnkoZW50aXR5RmlsdGVyPzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGxldCB1cmwgPSB0aGlzLmJhc2VVcmk7XHJcbiAgICBpZiAoZW50aXR5RmlsdGVyKSB7XHJcbiAgICAgIGNvbnN0IGVudGl0eUZpbHRlckpzb24gPSBKU09OLnN0cmluZ2lmeShlbnRpdHlGaWx0ZXIpO1xyXG4gICAgICB1cmwgPSBgJHt1cmx9P2VudGl0eUZpbHRlcj0ke2VudGl0eUZpbHRlckpzb259YDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBHRVQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5omp5bGV5p+l6K+iXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZFF1ZXJ5KGVudGl0eUZpbHRlcjogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgbGV0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uL3F1ZXJ5YDtcclxuICAgIGlmIChlbnRpdHlGaWx0ZXIpIHtcclxuICAgICAgY29uc3QgZW50aXR5RmlsdGVySnNvbiA9IEpTT04uc3RyaW5naWZ5KGVudGl0eUZpbHRlcik7XHJcbiAgICAgIHVybCA9IGAke3VybH0/ZW50aXR5RmlsdGVyPSR7ZW50aXR5RmlsdGVySnNvbn1gO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmo4DntKLmlbDmja5cclxuICAgKiBAcGFyYW0gaWQg5Y2V5o2u5YaF56CBXHJcbiAgICogQHJldHVybiDmlbDmja7lr7nosaFcclxuICAgKi9cclxuICBwdWJsaWMgcmV0cmlldmUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9LyR7aWR9YDtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBHRVQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDliIbpobXmn6Xor6LlkITku47ooajmlbDmja5cclxuICAgKiBAcGFyYW0gaWQg5Li76KGoaWRcclxuICAgKiBAcGFyYW0gb3B0aW9ucyDpgInpoblcclxuICAgKi9cclxuICBwdWJsaWMgc2VydmljZVJldHJpZXZlKGlkOiBzdHJpbmcsIHJldHJpZXZlUGFyYW06IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vc2VydmljZS9yZXRyaWV2ZS8ke2lkfWA7XHJcbiAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICBib2R5OiB7IHJldHJpZXZlUGFyYW0sIHJlcXVlc3RJbmZvIH1cclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5YiG6aG15p+l6K+i5LuO6KGoL+S7juS7juihqOaVsOaNrlxyXG4gICAqIEBwYXJhbSBwYXJhbXMg5Y+C5pWwXHJcbiAgICovXHJcbiAgcHVibGljIHF1ZXJ5Q2hpbGQocGFyYW1zOiBhbnkpIHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vc2VydmljZS9xdWVyeWNoaWxkYDtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7IGJvZHk6IHBhcmFtcyB9O1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmo4DntKLmlbDmja7vvIjmianlsZXvvIlcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kUmV0cmlldmUoaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uL3JldHJpZXZlLyR7aWR9YDtcclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmo4DntKLmlbDmja5cclxuICAgKi9cclxuICBwdWJsaWMgZWRpdChpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9zZXJ2aWNlL2VkaXQvJHtpZH1gO1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIm+W7uuS4gOadoeaVsOaNrlxyXG4gICAqL1xyXG4gIHB1YmxpYyBjcmVhdGUoZGVmYXVsdFZhbHVlPzogYW55LCByZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgIGRlZmF1bHRWYWx1ZSxcclxuICAgICAgcmVxdWVzdEluZm86IHJlcXVlc3RJbmZvLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh0aGlzLmJhc2VVcmksIFBPU1QsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5LuO6KGo5paw5aKeXHJcbiAgICogQHBhdGgg5paw5aKe6Lev5b6E77yI5LuO6KGo5b2i5aaC77yaLzEvZWR1c++8jOS7juS7juihqOW9ouWmgu+8mi8xL2VkdXMvMTEvZ3JhZGVz77yJXHJcbiAgICovXHJcbiAgcHVibGljIGNyZWF0ZUJ5UGF0aChmcGF0aDogc3RyaW5nLCByZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHBhdGhVcmwgPSBCZWZEYXRhUGF0aFV0aWwuY29udmVydFBhdGhUb1VybChmcGF0aCk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9JHtwYXRoVXJsfWA7XHJcblxyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUE9TVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmj5DkuqTlj5jmm7RcclxuICAgKi9cclxuICB1cGRhdGUoY2hhbmdlRGV0YWlsOiBDaGFuZ2VEZXRhaWwsIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgY2hhbmdlRGV0YWlsLFxyXG4gICAgICByZXF1ZXN0SW5mbzogcmVxdWVzdEluZm8sXHJcbiAgICB9O1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh0aGlzLmJhc2VVcmksIFBBVENILCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaJp+ihjOS/neWtmFxyXG4gICAqL1xyXG4gIHB1YmxpYyBzYXZlKHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHRoaXMuYmFzZVVyaSwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIoOmZpFxyXG4gICAqL1xyXG4gIHB1YmxpYyBkZWxldGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9LyR7aWR9YDtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBERUxFVEUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6Zmk5bm25L+d5a2YXHJcbiAgICovXHJcbiAgcHVibGljIGRlbGV0ZUFuZFNhdmUoaWQ6IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vc2VydmljZS9kZWxldGUvJHtpZH1gO1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIoOmZpO+8iOaJqeWxle+8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmREZWxldGUoaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uL2RlbGV0ZS8ke2lkfWA7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6Zmk5ZCO5LujXHJcbiAgICogQHBhcmFtIGZwYXRoIOeItui3r+W+hO+8iOS7juihqOW9ouWmgu+8mi8xL2VkdXPvvIzku47ku47ooajlvaLlpoLvvJovMS9lZHVzLzExL2dyYWRlc++8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBkZWxldEJ5UGF0aChmcGF0aDogc3RyaW5nLCBpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHBhdGhVcmwgPSBCZWZEYXRhUGF0aFV0aWwuY29udmVydFBhdGhUb1VybChmcGF0aCk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9JHtwYXRoVXJsfS8ke2lkfWA7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgREVMRVRFKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIoOmZpOWQjuS7o++8iOaJqeWxle+8iVxyXG4gICAqIEBwYXJhbSBmcGF0aCDniLbot6/lvoTvvIjku47ooajlvaLlpoLvvJovMS9lZHVz77yM5LuO5LuO6KGo5b2i5aaC77yaLzEvZWR1cy8xMS9ncmFkZXPvvIlcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kRGVsZXRCeVBhdGgoZnBhdGg6IHN0cmluZywgaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGNvbnN0IHBhdGhVcmwgPSBCZWZEYXRhUGF0aFV0aWwuY29udmVydFBhdGhUb1VybChmcGF0aCk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbiR7cGF0aFVybH0vJHtpZH1gO1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5om56YeP5Yig6ZmkXHJcbiAgICogQHBhcmFtIGlkcyDlvoXliKDpmaTnmoRpZOaVsOe7hFxyXG4gICAqL1xyXG4gIHB1YmxpYyBiYXRjaERlbGV0ZShpZHM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAgICAgaWRzOiBpZHMuam9pbignLCcpXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh0aGlzLmJhc2VVcmksIERFTEVURSwgcGFyYW1zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaJuemHj+WIoOmZpO+8iOaJqeWxle+8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRCYXRjaERlbGV0ZShpZHM6IHN0cmluZ1tdLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vYmF0Y2hkZWxldGVgO1xyXG4gICAgY29uc3QgcGFyYW1zID0ge1xyXG4gICAgICBpZHM6IGlkcy5qb2luKCcsJylcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBwYXJhbXMsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIOWPlua2iFxyXG4gICAqL1xyXG4gIHB1YmxpYyBjYW5jZWwoY29udGV4dD86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvY2FuY2VsYDtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQT1NULCBudWxsLCBudWxsLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBjb250ZXh0KTtcclxuICB9XHJcblxyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgcHVibGljIHJlcXVlc3QoXHJcbiAgICB1cmw6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgb3B0aW9ucz86IGFueSxcclxuICAgIHNlbGZIYW5kRXJyb3I/OiBib29sZWFuLCBpZ25vcmVFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuLCBydW50aW1lQ29udGV4dD86IGFueVxyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcclxuXHJcbiAgICAvLyDmmK/lkKboh6rooYzlpITnkIbplJnor69cclxuICAgIGlmICh0eXBlb2YgKHNlbGZIYW5kRXJyb3IpID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgKHNlbGZIYW5kRXJyb3IpICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgc2VsZkhhbmRFcnJvciA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOaYr+WQpuW/veeVpeW8guW4uOe7p+e7reaJp+ihjFxyXG4gICAgaWYgKHR5cGVvZiAoaWdub3JlRXJyb3IpID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgKGlnbm9yZUVycm9yKSAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIGlnbm9yZUVycm9yID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcGFyYW1zXHJcbiAgICBpZiAocGFyYW1zKSB7XHJcbiAgICAgIC8vIGNvbnN0IGh0dHBQYXJhbXMgPSB0aGlzLmJ1aWxkUGFyYW1zKHBhcmFtcyk7XHJcbiAgICAgIG9wdGlvbnMucGFyYW1zID0gcGFyYW1zO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOWkhOeQhmhlYWRlcnNcclxuICAgIG9wdGlvbnMuaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLmNvbnZlcnRUb0hlYWRlcnMob3B0aW9ucy5oZWFkZXJzKTtcclxuICAgIC8vIDHjgIHliKTmlq3mmK/lkKbluKZyZXF1ZXN0SW5mb++8iOS4jeWMuuWIhummluWtl+avjeWkp+Wwj+WGme+8iTtcclxuICAgIC8vIDLjgIHlpoLmnpzkvKDpgJLnmoTmmK9SZXF1ZXN0SW5mb++8jOWImei9rOaNouS4unJlcXVlc3RJbmZv77ybXHJcbiAgICBjb25zdCBoYXNSZXF1ZXN0SW5mbyA9IHRoaXMuaGFzUmVxdWVzdEluZm8ob3B0aW9ucyk7XHJcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmJvZHkgJiYgb3B0aW9ucy5ib2R5Lmhhc093blByb3BlcnR5KCdSZXF1ZXN0SW5mbycpKSB7XHJcbiAgICAgIG9wdGlvbnMuYm9keS5yZXF1ZXN0SW5mbyA9IG9wdGlvbnMuYm9keS5SZXF1ZXN0SW5mbztcclxuICAgICAgZGVsZXRlIG9wdGlvbnMuYm9keS5SZXF1ZXN0SW5mbztcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnByb3h5RXh0ZW5kLmV4dGVuZEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzLCBydW50aW1lQ29udGV4dCkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKGhlYWRlcnMgPT4ge1xyXG4gICAgICAgIG9wdGlvbnMuaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLnRvSnNvbihoZWFkZXJzKTtcclxuICAgICAgICBvcHRpb25zLm9ic2VydmUgPSAncmVzcG9uc2UnO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnJlcXVlc3QobWV0aG9kLCB1cmwsIG9wdGlvbnMpO1xyXG4gICAgICB9KSxcclxuICAgICAgdGFwKChyZXNwb25zZTogYW55KSA9PiB0aGlzLnByb3h5RXh0ZW5kLnBhcnNlSGVhZGVycyhyZXNwb25zZSkpLFxyXG4gICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiByZXN1bHQuYm9keSksXHJcbiAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoaGFzUmVxdWVzdEluZm8pIHtcclxuICAgICAgICAgIHRoaXMucHJveHlFeHRlbmQub25SZXNwb25zZShyZXN1bHQsIGlnbm9yZUNoYW5nZXMpO1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vIGJvZHnph4zmsqHmnIlyZXF1ZXN0SW5mb+eahOaDheWGte+8jOaooeaLn+iAgeeahOWkhOeQhuaWueW8j++8iOS4jea4heeQhuWPmOabtOOAgeWwhnJldHVyblZhbHVl6Kej5p6Q5Ye65p2l77yJXHJcbiAgICAgICAgICByZXR1cm4gdGhpcy51bldyYXBSZXNwb25zZUluZm8ocmVzdWx0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eUV4dGVuZC5vbkVycm9yKGVycm9yLCBzZWxmSGFuZEVycm9yLCBpZ25vcmVFcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6LCD55SoaHR0cGNsaWVudOWPluaVsFxyXG4gICAqIEBwYXJhbSB1cmwgdXJsXHJcbiAgICogQHBhcmFtIG1ldGhvZCBtZXRob2RzXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgb3B0aW9uc1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBpbnZva2UodXJsOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nLCBvcHRpb25zOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgaWYgKG9wdGlvbnMucGFyYW1zKSB7XHJcbiAgICAgIHVybCA9IHRoaXMucHJveHlFeHRlbmQuZXh0ZW5kVXJsKHVybCwgb3B0aW9ucy5wYXJhbXMpO1xyXG4gICAgICBvcHRpb25zLnBhcmFtcyA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAob3B0aW9ucy5ib2R5KSB7XHJcbiAgICAgIG9wdGlvbnMuYm9keSA9IHRoaXMucHJveHlFeHRlbmQuZXh0ZW5kQm9keShvcHRpb25zLmJvZHkpO1xyXG4gICAgfVxyXG4gICAgb3B0aW9ucy5oZWFkZXJzID0gSHR0cEhlYWRlclV0aWwuY29udmVydFRvSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpO1xyXG4gICAgY29uc3QgaGVhZGVycyQgPSB0aGlzLnByb3h5RXh0ZW5kLmV4dGVuZEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKTtcclxuICAgIHJldHVybiBoZWFkZXJzJC5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoaGVhZGVycyA9PiB7XHJcbiAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gSHR0cEhlYWRlclV0aWwudG9Kc29uKGhlYWRlcnMpO1xyXG4gICAgICAgIG9wdGlvbnMub2JzZXJ2ZSA9ICdyZXNwb25zZSc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UucmVxdWVzdChtZXRob2QsIHVybCwgb3B0aW9ucylcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICB0YXAoKHJlc3BvbnNlOiBhbnkpID0+IHRoaXMucHJveHlFeHRlbmQucGFyc2VIZWFkZXJzKHJlc3BvbnNlKSksXHJcbiAgICAgICAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHJlc3VsdC5ib2R5KSxcclxuICAgICAgICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4gdGhpcy5wcm94eUV4dGVuZC5vblJlc3BvbnNlKHJlc3VsdCkpLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHRoaXMucHJveHlFeHRlbmQub25FcnJvcihlcnJvciwgZmFsc2UsIGZhbHNlKSlcclxuICAgICAgICAgICk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5ZCRSHR0cE9wdGlvbnPlr7nosaHkuK3mt7vliqBib2R5XHJcbiAgICogQHBhcmFtIG9wdGlvbnMg5Y6f5p2l55qEb3B0aW9uc1xyXG4gICAqIEBwYXJhbSBib2R5IGJvZHnlhoXlrrlcclxuICAgKi9cclxuICBwcml2YXRlIGFkZEJvZHlUb09wdGlvbnMob3B0aW9uczogYW55LCBib2R5OiBhbnkpIHtcclxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xyXG4gICAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24ob3B0aW9ucywgeyBib2R5IH0pO1xyXG4gICAgcmV0dXJuIG1lcmdlZE9wdGlvbnM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaehOmAoEh0dHBQYXJhbXPlr7nosaFcclxuICAgKiBAcGFyYW0gcGFyYW1zIOivt+axguWPguaVsFxyXG4gICAqL1xyXG4gIHByaXZhdGUgYnVpbGRQYXJhbXMocGFyYW1zOiBvYmplY3QpOiBIdHRwUGFyYW1zIHtcclxuICAgIHJldHVybiBIdHRwUGFyYW1VdGlsLmJ1aWxkUGFyYW1zKHBhcmFtcyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaYr+WQpuW4puaciVJlcXVlc3RJbmZvXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYXNSZXF1ZXN0SW5mbyhvcHRpb25zOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBSZXF1ZXN0SW5mb1V0aWwuaGFzUmVxdWVzdEluZm8ob3B0aW9ucykgfHwgUmVxdWVzdEluZm9VdGlsLmhhc1JlcXVlc3RJbmZvV2l0aFIob3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOWkhOeQhui/lOWbnuWAvO+8jOWFvOWuueiAgeeJiOacrFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdDogYW55KSB7XHJcbiAgICByZXR1cm4gUmVzcG9uc2VJbmZvVXRpbC51bldyYXBSZXNwb25zZUluZm8ocmVzdWx0KTtcclxuICB9XHJcbn1cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvYmVmX3Byb3h5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUEyQixVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztNQUd2QyxHQUFHLEdBQUcsS0FBSzs7TUFDWCxNQUFNLEdBQUcsUUFBUTs7TUFDakIsR0FBRyxHQUFHLEtBQUs7O01BQ1gsSUFBSSxHQUFHLE1BQU07O01BQ2IsS0FBSyxHQUFHLE9BQU87Ozs7OztBQVFyQixNQUFNLE9BQU8sUUFBUTs7Ozs7SUFPbkIsWUFBbUIsVUFBc0IsRUFBUyxVQUFzQjtRQUFyRCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0RSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0RCxDQUFDOzs7Ozs7SUFLTSxVQUFVLENBQUMsT0FBZTtRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDOzs7Ozs7SUFLTSxjQUFjLENBQUMsV0FBeUI7UUFDN0MsSUFBSSxDQUFDLFdBQVcsR0FB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QUFDLENBQUM7SUFDakcsQ0FBQzs7Ozs7OztJQUlPLGtCQUFrQixDQUFDLE1BQVc7UUFDcEMsT0FBTyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyRCxDQUFDOzs7WUExV0YsVUFBVTs7OztZQW5CdUIsVUFBVTtZQUduQyxVQUFVOzs7Ozs7O0lBa0JqQiwrQkFBb0M7Ozs7OztJQUlwQywyQkFBMEI7Ozs7O0lBQzFCLCtCQUFpQzs7SUFDckIsOEJBQTZCOztJQUFFLDhCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGVtcHR5LCB0aHJvd0Vycm9yLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAsIG1hcCwgY2F0Y2hFcnJvciwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBIdHRwSGVhZGVycywgSHR0cFBhcmFtcywgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSVByb3h5RXh0ZW5kLCBSZXF1ZXN0SW5mbywgUmVzcG9uc2VJbmZvLCBDaGFuZ2VEZXRhaWwgfSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgQmVmRGF0YVBhdGhVdGlsIH0gZnJvbSAnLi9iZWZfZGF0YV9wYXRoX3V0aWwnO1xyXG5pbXBvcnQgeyBVcmlTZXJ2aWNlIH0gZnJvbSAnLi91cmlfc2VydmljZSc7XHJcbmltcG9ydCB7IEh0dHBIZWFkZXJVdGlsLCBIdHRwUGFyYW1VdGlsLCBSZXF1ZXN0SW5mb1V0aWwsIFJlc3BvbnNlSW5mb1V0aWwgfSBmcm9tICcuL3V0aWxzL2luZGV4JztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuL2h0dHBfc2VydmljZSc7XHJcblxyXG5cclxuY29uc3QgR0VUID0gJ0dFVCc7XHJcbmNvbnN0IERFTEVURSA9ICdERUxFVEUnO1xyXG5jb25zdCBQVVQgPSAnUFVUJztcclxuY29uc3QgUE9TVCA9ICdQT1NUJztcclxuY29uc3QgUEFUQ0ggPSAnUEFUQ0gnO1xyXG5cclxuLyoqXHJcbiAqIEJlZuS7o+eQhuexu1xyXG4gKiDku6PnkIbnsbvnmoTogYzotKPmmK/lpITnkIZodHRw6K+35rGC77yM5Y+R6YCB5LiA5LiqaHR0cOivt+axguaJgOmcgOeahOi1hOa6kOacie+8mnVyae+8jG1ldGhvZO+8jGhlYWRlcuOAgWJvZHnjgIFxdWVyeSBwYXJhbWV0ZXJcclxuICogdXJpIOeUsXVyaVNlcnZpY2VcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEJlZlByb3h5IHtcclxuICBwcm90ZWN0ZWQgcHJveHlFeHRlbmQ6IElQcm94eUV4dGVuZDtcclxuICAvKipcclxuICAgKiByZXN0ZnVs5Z+66Lev5b6EXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGJhc2VVcmk6IHN0cmluZztcclxuICBwcml2YXRlIGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZTtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaHR0cENsaWVudDogSHR0cENsaWVudCwgcHVibGljIHVyaVNlcnZpY2U6IFVyaVNlcnZpY2UpIHtcclxuICAgIHRoaXMuaHR0cFNlcnZpY2UgPSBuZXcgSHR0cFNlcnZpY2UodGhpcy5odHRwQ2xpZW50KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog6K6+572u5Z+66Lev5b6EXHJcbiAgICogQHBhcmFtIGJhc2VVcmkg5Z+66Lev5b6EXHJcbiAgICovXHJcbiAgcHVibGljIHNldEJhc2VVcmkoYmFzZVVyaTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmJhc2VVcmkgPSBiYXNlVXJpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDorr7nva7nrZbnlaXmqKHlvI9cclxuICAgKiBAcGFyYW0gc3RyYXRlZ3kg562W55WlXHJcbiAgICovXHJcbiAgcHVibGljIHNldFByb3h5RXh0ZW5kKHByb3h5RXh0ZW5kOiBJUHJveHlFeHRlbmQpIHtcclxuICAgIHRoaXMucHJveHlFeHRlbmQgPSBwcm94eUV4dGVuZDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5p+l6K+iXHJcbiAgICovXHJcbiAgcHVibGljIHF1ZXJ5KGVudGl0eUZpbHRlcj86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBsZXQgdXJsID0gdGhpcy5iYXNlVXJpO1xyXG4gICAgaWYgKGVudGl0eUZpbHRlcikge1xyXG4gICAgICBjb25zdCBlbnRpdHlGaWx0ZXJKc29uID0gSlNPTi5zdHJpbmdpZnkoZW50aXR5RmlsdGVyKTtcclxuICAgICAgdXJsID0gYCR7dXJsfT9lbnRpdHlGaWx0ZXI9JHtlbnRpdHlGaWx0ZXJKc29ufWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgR0VUKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaJqeWxleafpeivolxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRRdWVyeShlbnRpdHlGaWx0ZXI6IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGxldCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9xdWVyeWA7XHJcbiAgICBpZiAoZW50aXR5RmlsdGVyKSB7XHJcbiAgICAgIGNvbnN0IGVudGl0eUZpbHRlckpzb24gPSBKU09OLnN0cmluZ2lmeShlbnRpdHlGaWx0ZXIpO1xyXG4gICAgICB1cmwgPSBgJHt1cmx9P2VudGl0eUZpbHRlcj0ke2VudGl0eUZpbHRlckpzb259YDtcclxuICAgIH1cclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucywgZmFsc2UpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmn6Xor6LmlbDmja7vvIjluKbov4fmu6TmnaHku7bvvIlcclxuICAgKiBAcGFyYW0gZW50aXR5RmlsdGVyIOi/h+a7pOOAgeaOkuW6j+OAgeWIhumhteS/oeaBr1xyXG4gICAqIEBwYXJhbSByZXF1ZXN0SW5mbyByZXF1ZXN0SW5mb1xyXG4gICAqIEBkZXNjcmlwdGlvbiDlkoxleHRlbmRRdWVyeeS4gOiHtO+8jOS7heWwhuafpeivouWPguaVsOaUvuWIsGJvZHnkuK1cclxuICAgKi9cclxuICBwdWJsaWMgZmlsdGVyKGVudGl0eUZpbHRlcjogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgbGV0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uL2ZpbHRlcmA7XHJcbiAgICBsZXQgYm9keTogYW55ID0geyByZXF1ZXN0SW5mbyB9O1xyXG4gICAgaWYgKGVudGl0eUZpbHRlcikge1xyXG4gICAgICBib2R5ID0geyBlbnRpdHlGaWx0ZXIsIHJlcXVlc3RJbmZvIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQT1NULCBudWxsLCBvcHRpb25zLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmo4DntKLmlbDmja5cclxuICAgKiBAcGFyYW0gaWQg5Y2V5o2u5YaF56CBXHJcbiAgICogQHJldHVybiDmlbDmja7lr7nosaFcclxuICAgKi9cclxuICBwdWJsaWMgcmV0cmlldmUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9LyR7aWR9YDtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBHRVQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDliIbpobXmn6Xor6LlkITku47ooajmlbDmja5cclxuICAgKiBAcGFyYW0gaWQg5Li76KGoaWRcclxuICAgKiBAcGFyYW0gb3B0aW9ucyDpgInpoblcclxuICAgKi9cclxuICBwdWJsaWMgc2VydmljZVJldHJpZXZlKGlkOiBzdHJpbmcsIHJldHJpZXZlUGFyYW06IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vc2VydmljZS9yZXRyaWV2ZS8ke2lkfWA7XHJcbiAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICBib2R5OiB7IHJldHJpZXZlUGFyYW0sIHJlcXVlc3RJbmZvIH1cclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5YiG6aG15p+l6K+i5LuO6KGoL+S7juS7juihqOaVsOaNrlxyXG4gICAqIEBwYXJhbSBwYXJhbXMg5Y+C5pWwXHJcbiAgICovXHJcbiAgcHVibGljIHF1ZXJ5Q2hpbGQocGFyYW1zOiBhbnkpIHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vc2VydmljZS9xdWVyeWNoaWxkYDtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7IGJvZHk6IHBhcmFtcyB9O1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmo4DntKLmlbDmja7vvIjmianlsZXvvIlcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kUmV0cmlldmUoaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uL3JldHJpZXZlLyR7aWR9YDtcclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmo4DntKLmlbDmja5cclxuICAgKi9cclxuICBwdWJsaWMgZWRpdChpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9zZXJ2aWNlL2VkaXQvJHtpZH1gO1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIm+W7uuS4gOadoeaVsOaNrlxyXG4gICAqL1xyXG4gIHB1YmxpYyBjcmVhdGUoZGVmYXVsdFZhbHVlPzogYW55LCByZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgIGRlZmF1bHRWYWx1ZSxcclxuICAgICAgcmVxdWVzdEluZm86IHJlcXVlc3RJbmZvLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh0aGlzLmJhc2VVcmksIFBPU1QsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5LuO6KGo5paw5aKeXHJcbiAgICogQHBhdGgg5paw5aKe6Lev5b6E77yI5LuO6KGo5b2i5aaC77yaLzEvZWR1c++8jOS7juS7juihqOW9ouWmgu+8mi8xL2VkdXMvMTEvZ3JhZGVz77yJXHJcbiAgICovXHJcbiAgcHVibGljIGNyZWF0ZUJ5UGF0aChmcGF0aDogc3RyaW5nLCByZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHBhdGhVcmwgPSBCZWZEYXRhUGF0aFV0aWwuY29udmVydFBhdGhUb1VybChmcGF0aCk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9JHtwYXRoVXJsfWA7XHJcblxyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUE9TVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmj5DkuqTlj5jmm7RcclxuICAgKi9cclxuICB1cGRhdGUoY2hhbmdlRGV0YWlsOiBDaGFuZ2VEZXRhaWwsIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgY2hhbmdlRGV0YWlsLFxyXG4gICAgICByZXF1ZXN0SW5mbzogcmVxdWVzdEluZm8sXHJcbiAgICB9O1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh0aGlzLmJhc2VVcmksIFBBVENILCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaJp+ihjOS/neWtmFxyXG4gICAqL1xyXG4gIHB1YmxpYyBzYXZlKHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHRoaXMuYmFzZVVyaSwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIoOmZpFxyXG4gICAqL1xyXG4gIHB1YmxpYyBkZWxldGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9LyR7aWR9YDtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBERUxFVEUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6Zmk5bm25L+d5a2YXHJcbiAgICovXHJcbiAgcHVibGljIGRlbGV0ZUFuZFNhdmUoaWQ6IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vc2VydmljZS9kZWxldGUvJHtpZH1gO1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIoOmZpO+8iOaJqeWxle+8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmREZWxldGUoaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uL2RlbGV0ZS8ke2lkfWA7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6Zmk5ZCO5LujXHJcbiAgICogQHBhcmFtIGZwYXRoIOeItui3r+W+hO+8iOS7juihqOW9ouWmgu+8mi8xL2VkdXPvvIzku47ku47ooajlvaLlpoLvvJovMS9lZHVzLzExL2dyYWRlc++8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBkZWxldEJ5UGF0aChmcGF0aDogc3RyaW5nLCBpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHBhdGhVcmwgPSBCZWZEYXRhUGF0aFV0aWwuY29udmVydFBhdGhUb1VybChmcGF0aCk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9JHtwYXRoVXJsfS8ke2lkfWA7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgREVMRVRFKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIoOmZpOWQjuS7o++8iOaJqeWxle+8iVxyXG4gICAqIEBwYXJhbSBmcGF0aCDniLbot6/lvoTvvIjku47ooajlvaLlpoLvvJovMS9lZHVz77yM5LuO5LuO6KGo5b2i5aaC77yaLzEvZWR1cy8xMS9ncmFkZXPvvIlcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kRGVsZXRCeVBhdGgoZnBhdGg6IHN0cmluZywgaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGNvbnN0IHBhdGhVcmwgPSBCZWZEYXRhUGF0aFV0aWwuY29udmVydFBhdGhUb1VybChmcGF0aCk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbiR7cGF0aFVybH0vJHtpZH1gO1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5om56YeP5Yig6ZmkXHJcbiAgICogQHBhcmFtIGlkcyDlvoXliKDpmaTnmoRpZOaVsOe7hFxyXG4gICAqL1xyXG4gIHB1YmxpYyBiYXRjaERlbGV0ZShpZHM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAgICAgaWRzOiBpZHMuam9pbignLCcpXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh0aGlzLmJhc2VVcmksIERFTEVURSwgcGFyYW1zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaJuemHj+WIoOmZpO+8iOaJqeWxle+8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRCYXRjaERlbGV0ZShpZHM6IHN0cmluZ1tdLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vYmF0Y2hkZWxldGVgO1xyXG4gICAgY29uc3QgcGFyYW1zID0ge1xyXG4gICAgICBpZHM6IGlkcy5qb2luKCcsJylcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBwYXJhbXMsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIOWPlua2iFxyXG4gICAqL1xyXG4gIHB1YmxpYyBjYW5jZWwoY29udGV4dD86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvY2FuY2VsYDtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQT1NULCBudWxsLCBudWxsLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBjb250ZXh0KTtcclxuICB9XHJcblxyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgcHVibGljIHJlcXVlc3QoXHJcbiAgICB1cmw6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgb3B0aW9ucz86IGFueSxcclxuICAgIHNlbGZIYW5kRXJyb3I/OiBib29sZWFuLCBpZ25vcmVFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuLCBydW50aW1lQ29udGV4dD86IGFueVxyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcclxuXHJcbiAgICAvLyDmmK/lkKboh6rooYzlpITnkIbplJnor69cclxuICAgIGlmICh0eXBlb2YgKHNlbGZIYW5kRXJyb3IpID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgKHNlbGZIYW5kRXJyb3IpICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgc2VsZkhhbmRFcnJvciA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOaYr+WQpuW/veeVpeW8guW4uOe7p+e7reaJp+ihjFxyXG4gICAgaWYgKHR5cGVvZiAoaWdub3JlRXJyb3IpID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgKGlnbm9yZUVycm9yKSAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIGlnbm9yZUVycm9yID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcGFyYW1zXHJcbiAgICBpZiAocGFyYW1zKSB7XHJcbiAgICAgIC8vIGNvbnN0IGh0dHBQYXJhbXMgPSB0aGlzLmJ1aWxkUGFyYW1zKHBhcmFtcyk7XHJcbiAgICAgIG9wdGlvbnMucGFyYW1zID0gcGFyYW1zO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOWkhOeQhmhlYWRlcnNcclxuICAgIG9wdGlvbnMuaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLmNvbnZlcnRUb0hlYWRlcnMob3B0aW9ucy5oZWFkZXJzKTtcclxuICAgIC8vIDHjgIHliKTmlq3mmK/lkKbluKZyZXF1ZXN0SW5mb++8iOS4jeWMuuWIhummluWtl+avjeWkp+Wwj+WGme+8iTtcclxuICAgIC8vIDLjgIHlpoLmnpzkvKDpgJLnmoTmmK9SZXF1ZXN0SW5mb++8jOWImei9rOaNouS4unJlcXVlc3RJbmZv77ybXHJcbiAgICBjb25zdCBoYXNSZXF1ZXN0SW5mbyA9IHRoaXMuaGFzUmVxdWVzdEluZm8ob3B0aW9ucyk7XHJcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmJvZHkgJiYgb3B0aW9ucy5ib2R5Lmhhc093blByb3BlcnR5KCdSZXF1ZXN0SW5mbycpKSB7XHJcbiAgICAgIG9wdGlvbnMuYm9keS5yZXF1ZXN0SW5mbyA9IG9wdGlvbnMuYm9keS5SZXF1ZXN0SW5mbztcclxuICAgICAgZGVsZXRlIG9wdGlvbnMuYm9keS5SZXF1ZXN0SW5mbztcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnByb3h5RXh0ZW5kLmV4dGVuZEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzLCBydW50aW1lQ29udGV4dCkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKGhlYWRlcnMgPT4ge1xyXG4gICAgICAgIG9wdGlvbnMuaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLnRvSnNvbihoZWFkZXJzKTtcclxuICAgICAgICBvcHRpb25zLm9ic2VydmUgPSAncmVzcG9uc2UnO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnJlcXVlc3QobWV0aG9kLCB1cmwsIG9wdGlvbnMpO1xyXG4gICAgICB9KSxcclxuICAgICAgdGFwKChyZXNwb25zZTogYW55KSA9PiB0aGlzLnByb3h5RXh0ZW5kLnBhcnNlSGVhZGVycyhyZXNwb25zZSkpLFxyXG4gICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiByZXN1bHQuYm9keSksXHJcbiAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoaGFzUmVxdWVzdEluZm8pIHtcclxuICAgICAgICAgIHRoaXMucHJveHlFeHRlbmQub25SZXNwb25zZShyZXN1bHQsIGlnbm9yZUNoYW5nZXMpO1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vIGJvZHnph4zmsqHmnIlyZXF1ZXN0SW5mb+eahOaDheWGte+8jOaooeaLn+iAgeeahOWkhOeQhuaWueW8j++8iOS4jea4heeQhuWPmOabtOOAgeWwhnJldHVyblZhbHVl6Kej5p6Q5Ye65p2l77yJXHJcbiAgICAgICAgICByZXR1cm4gdGhpcy51bldyYXBSZXNwb25zZUluZm8ocmVzdWx0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eUV4dGVuZC5vbkVycm9yKGVycm9yLCBzZWxmSGFuZEVycm9yLCBpZ25vcmVFcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6LCD55SoaHR0cGNsaWVudOWPluaVsFxyXG4gICAqIEBwYXJhbSB1cmwgdXJsXHJcbiAgICogQHBhcmFtIG1ldGhvZCBtZXRob2RzXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgb3B0aW9uc1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBpbnZva2UodXJsOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nLCBvcHRpb25zOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgaWYgKG9wdGlvbnMucGFyYW1zKSB7XHJcbiAgICAgIHVybCA9IHRoaXMucHJveHlFeHRlbmQuZXh0ZW5kVXJsKHVybCwgb3B0aW9ucy5wYXJhbXMpO1xyXG4gICAgICBvcHRpb25zLnBhcmFtcyA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAob3B0aW9ucy5ib2R5KSB7XHJcbiAgICAgIG9wdGlvbnMuYm9keSA9IHRoaXMucHJveHlFeHRlbmQuZXh0ZW5kQm9keShvcHRpb25zLmJvZHkpO1xyXG4gICAgfVxyXG4gICAgb3B0aW9ucy5oZWFkZXJzID0gSHR0cEhlYWRlclV0aWwuY29udmVydFRvSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpO1xyXG4gICAgY29uc3QgaGVhZGVycyQgPSB0aGlzLnByb3h5RXh0ZW5kLmV4dGVuZEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKTtcclxuICAgIHJldHVybiBoZWFkZXJzJC5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoaGVhZGVycyA9PiB7XHJcbiAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gSHR0cEhlYWRlclV0aWwudG9Kc29uKGhlYWRlcnMpO1xyXG4gICAgICAgIG9wdGlvbnMub2JzZXJ2ZSA9ICdyZXNwb25zZSc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UucmVxdWVzdChtZXRob2QsIHVybCwgb3B0aW9ucylcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICB0YXAoKHJlc3BvbnNlOiBhbnkpID0+IHRoaXMucHJveHlFeHRlbmQucGFyc2VIZWFkZXJzKHJlc3BvbnNlKSksXHJcbiAgICAgICAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHJlc3VsdC5ib2R5KSxcclxuICAgICAgICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4gdGhpcy5wcm94eUV4dGVuZC5vblJlc3BvbnNlKHJlc3VsdCkpLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHRoaXMucHJveHlFeHRlbmQub25FcnJvcihlcnJvciwgZmFsc2UsIGZhbHNlKSlcclxuICAgICAgICAgICk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5ZCRSHR0cE9wdGlvbnPlr7nosaHkuK3mt7vliqBib2R5XHJcbiAgICogQHBhcmFtIG9wdGlvbnMg5Y6f5p2l55qEb3B0aW9uc1xyXG4gICAqIEBwYXJhbSBib2R5IGJvZHnlhoXlrrlcclxuICAgKi9cclxuICBwcml2YXRlIGFkZEJvZHlUb09wdGlvbnMob3B0aW9uczogYW55LCBib2R5OiBhbnkpIHtcclxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xyXG4gICAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24ob3B0aW9ucywgeyBib2R5IH0pO1xyXG4gICAgcmV0dXJuIG1lcmdlZE9wdGlvbnM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaehOmAoEh0dHBQYXJhbXPlr7nosaFcclxuICAgKiBAcGFyYW0gcGFyYW1zIOivt+axguWPguaVsFxyXG4gICAqL1xyXG4gIHByaXZhdGUgYnVpbGRQYXJhbXMocGFyYW1zOiBvYmplY3QpOiBIdHRwUGFyYW1zIHtcclxuICAgIHJldHVybiBIdHRwUGFyYW1VdGlsLmJ1aWxkUGFyYW1zKHBhcmFtcyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaYr+WQpuW4puaciVJlcXVlc3RJbmZvXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYXNSZXF1ZXN0SW5mbyhvcHRpb25zOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBSZXF1ZXN0SW5mb1V0aWwuaGFzUmVxdWVzdEluZm8ob3B0aW9ucykgfHwgUmVxdWVzdEluZm9VdGlsLmhhc1JlcXVlc3RJbmZvV2l0aFIob3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOWkhOeQhui/lOWbnuWAvO+8jOWFvOWuueiAgeeJiOacrFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdDogYW55KSB7XHJcbiAgICByZXR1cm4gUmVzcG9uc2VJbmZvVXRpbC51bldyYXBSZXNwb25zZUluZm8ocmVzdWx0KTtcclxuICB9XHJcbn1cclxuIl19

@@ -14,3 +14,3 @@ /**

import { HttpClient } from '@angular/common/http';
import { empty, throwError, of } from 'rxjs';
import { throwError, of, EMPTY } from 'rxjs';
import { switchMap, map, catchError, tap } from 'rxjs/operators';

@@ -418,2 +418,5 @@ import { EventBus } from '@farris/devkit';

if (!!this.eventBus && isExceptionHandlerExist) {
if (ResponseInfoUtil.isReported401Error(error)) {
return throwError(error);
}
this.eventBus.post('Exception', '', 'onException', error, formAppContext);

@@ -424,3 +427,3 @@ if (ignoreError) {

else {
return empty();
return EMPTY;
}

@@ -554,2 +557,2 @@ }

export { BefRestService };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Jlc3Rfc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2JlZl9yZXN0X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFPQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQTJCLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFjLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQVUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7TUFFdkMsR0FBRyxHQUFHLEtBQUs7O01BQ1gsTUFBTSxHQUFHLFFBQVE7O01BQ2pCLEdBQUcsR0FBRyxLQUFLOztNQUNYLElBQUksR0FBRyxNQUFNOztNQUNiLEtBQUssR0FBRyxPQUFPOzs7OztBQU1yQixN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QTBDOzs7Ozs7SUFLMUMsb0NBQStCOzs7OztJQUMvQixxQ0FBaUM7Ozs7O0lBS2pDLHdDQUF5Qzs7Ozs7SUFLekMsaUNBQXVCOzs7OztJQUt2QixrQ0FBMEI7O0FBc1o5QixPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBAQXV0aG9yOiBXaXR0XHJcbiAqIEBEYXRlOiAyMDE5LTAyLTIzIDEzOjU3OjQ3XHJcbiAqIEBMYXN0IE1vZGlmaWVkIGJ5OiBhYWxpenp3ZWxsXHJcbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMTktMDktMjQgMTQ6MTA6NDBcclxuICovXHJcblxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBlbXB0eSwgdGhyb3dFcnJvciwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwLCBtYXAsIGNhdGNoRXJyb3IsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRW50aXR5LCBFdmVudEJ1cyB9IGZyb20gJ0BmYXJyaXMvZGV2a2l0JztcclxuaW1wb3J0IHsgSHR0cEhlYWRlclV0aWwsIEh0dHBQYXJhbVV0aWwsIFJlcXVlc3RJbmZvVXRpbCwgUmVzcG9uc2VJbmZvVXRpbCB9IGZyb20gJy4vdXRpbHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBCZWZSZXBvc2l0b3J5IH0gZnJvbSAnLi9iZWZfcmVwb3NpdG9yeSc7XHJcbmltcG9ydCB7IEZyYW1ld29ya1Nlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi9mcmFtZXdvcmtfc2Vzc2lvbl9zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVmU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL3Nlc3Npb24vaW5kZXgnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRhaWwsIFJlcXVlc3RJbmZvLCBSZXNwb25zZUluZm8gfSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgQmVmUHJveHkgfSBmcm9tICcuL2JlZl9wcm94eSc7XHJcbmltcG9ydCB7IFVyaVNlcnZpY2UgfSBmcm9tICcuL3VyaV9zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVmUHJveHlFeHRlbmQgfSBmcm9tICcuL2JlZl9wcm94eV9leHRlbmQnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4vaHR0cF9zZXJ2aWNlJztcclxuXHJcbmNvbnN0IEdFVCA9ICdHRVQnO1xyXG5jb25zdCBERUxFVEUgPSAnREVMRVRFJztcclxuY29uc3QgUFVUID0gJ1BVVCc7XHJcbmNvbnN0IFBPU1QgPSAnUE9TVCc7XHJcbmNvbnN0IFBBVENIID0gJ1BBVENIJztcclxuXHJcbi8qKlxyXG4gKiBCRUblj5bmlbDmnI3liqFcclxuICog6K+l5pyN5Yqh55SxQmVmUmVwb3NpdG9yeeWunuS+i+WMlu+8jOS4jeWBmuazqOWFpe+8jOavj+S4qkJlZlJlcG9zaXRvcnnmi6XmnInkuIDkuKpCZWZSZXN0U2VydmljZeWunuS+i+OAglxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5jbGFzcyBCZWZSZXN0U2VydmljZSB7XHJcblxyXG4gICAgcHJpdmF0ZSByZXBvc2l0b3J5OiBCZWZSZXBvc2l0b3J5PEVudGl0eT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBodHRwQ2xpZW50XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudDtcclxuICAgIHByaXZhdGUgaHR0cFNlcnZpY2U6IEh0dHBTZXJ2aWNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICog5Lya6K+d5pyN5YqhXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXNzaW9uU2VydmljZTogQmVmU2Vzc2lvblNlcnZpY2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmjqXlj6PmoLlVcmlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGJhc2VVcmk6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIOS6i+S7tuaAu+e6v1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZXZlbnRCdXM6IEV2ZW50QnVzO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICog5p6E6YCg5Ye95pWwXHJcbiAgICAgKiBAcGFyYW0gaHR0cENsaWVudCBodHRw5pyN5YqhXHJcbiAgICAgKiBAcGFyYW0gc2VydmVyVXJpIOW6lOeUqOacjeWKoeWZqOWcsOWdgFxyXG4gICAgICogQHBhcmFtIGJlVXJpIEJFIEFQSeWcsOWdgFxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBiYXNlVXJpOiBzdHJpbmcsXHJcbiAgICAgICAgZnJtU2Vzc2lvblNlcnZpY2U6IEZyYW1ld29ya1Nlc3Npb25TZXJ2aWNlLFxyXG4gICAgICAgIHJlcG9zaXRvcnk6IEJlZlJlcG9zaXRvcnk8RW50aXR5PixcclxuICAgICAgICBldmVudEJ1cz86IEV2ZW50QnVzXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLmh0dHBDbGllbnQgPSBodHRwQ2xpZW50O1xyXG4gICAgICAgIHRoaXMuaHR0cFNlcnZpY2UgPSBuZXcgSHR0cFNlcnZpY2UodGhpcy5odHRwQ2xpZW50KTtcclxuICAgICAgICB0aGlzLmJhc2VVcmkgPSBiYXNlVXJpO1xyXG4gICAgICAgIGNvbnN0IGluamVjdG9yID0gcmVwb3NpdG9yeS5nZXRJbmplY3RvcigpO1xyXG4gICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2UgPSBuZXcgQmVmU2Vzc2lvblNlcnZpY2UoaHR0cENsaWVudCwgYmFzZVVyaSwgZnJtU2Vzc2lvblNlcnZpY2UsIGluamVjdG9yKTtcclxuICAgICAgICB0aGlzLnJlcG9zaXRvcnkgPSByZXBvc2l0b3J5O1xyXG4gICAgICAgIHRoaXMuZXZlbnRCdXMgPSBldmVudEJ1cztcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gI3JlZ2lvbiDku6PnkIbnm7jlhbNcclxuXHJcbiAgICAvKipcclxuICAgICAqIOiOt+WPlkJlZuS7o+eQhlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IHByb3h5KCk6IEJlZlByb3h5IHtcclxuICAgICAgICBpZiAoISF0aGlzLnJlcG9zaXRvcnkucHJveHkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVwb3NpdG9yeS5wcm94eTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVCZWZQcm94eSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWIm+W7ukJlZuS7o+eQhlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNyZWF0ZUJlZlByb3h5KCkge1xyXG4gICAgICAgIGNvbnN0IHNlcnZlclVyaSA9IHRoaXMucmVwb3NpdG9yeS5zZXJ2ZXJVcmk7XHJcbiAgICAgICAgY29uc3QgdXJpU2VydmljZSA9IG5ldyBVcmlTZXJ2aWNlKHNlcnZlclVyaSk7XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFByb3h5ID0gbmV3IEJlZlByb3h5KHRoaXMuaHR0cENsaWVudCwgdXJpU2VydmljZSk7XHJcbiAgICAgICAgZGVmYXVsdFByb3h5LnNldEJhc2VVcmkodGhpcy5iYXNlVXJpKTtcclxuICAgICAgICBjb25zdCBleHRlbmQgPSBuZXcgQmVmUHJveHlFeHRlbmQodGhpcy5yZXBvc2l0b3J5KTtcclxuICAgICAgICBkZWZhdWx0UHJveHkuc2V0UHJveHlFeHRlbmQoZXh0ZW5kKTtcclxuICAgICAgICByZXR1cm4gZGVmYXVsdFByb3h5O1xyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb25cclxuXHJcblxyXG4gICAgLy8gI3JlZ2lvbiDln7rmnKxDUlVE5pa55rOVXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICAgKiBAZGVwcmVjYXRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcXVlcnkoZW50aXR5RmlsdGVyPzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5xdWVyeShlbnRpdHlGaWx0ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAgICogQGRlcHJlY2F0ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGV4dGVuZFF1ZXJ5KGVudGl0eUZpbHRlcjogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3h5LmV4dGVuZFF1ZXJ5KGVudGl0eUZpbHRlciwgcmVxdWVzdEluZm8pO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiDliIbpobXmn6Xor6LlkITku47ooajmlbDmja5cclxuICAgICAqIEBwYXJhbSBpZCDkuLvooahpZFxyXG4gICAgICogQHBhcmFtIHJldHJpZXZlUGFyYW0g5Y+C5pWwXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXJ2aWNlUmV0cmlldmUoaWQ6IHN0cmluZywgcmV0cmlldmVQYXJhbTogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3h5LnNlcnZpY2VSZXRyaWV2ZShpZCwgcmV0cmlldmVQYXJhbSxyZXF1ZXN0SW5mbyk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIOWIhumhteafpeivouS7juihqC/ku47ku47ooajmlbDmja5cclxuICAgICAqIEBwYXJhbSBwYXJhbXMg5p+l6K+i5Y+C5pWwXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBxdWVyeUNoaWxkKHBhcmFtczogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkucXVlcnlDaGlsZChwYXJhbXMpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICAgKiBAZGVwcmVjYXRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmV0cmlldmUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkucmV0cmlldmUoaWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAgICogQGRlcHJlY2F0ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGV4dGVuZFJldHJpZXZlKGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kUmV0cmlldmUoaWQsIHJlcXVlc3RJbmZvKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgICAqIEBkZXByZWNhdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjcmVhdGUoZGVmYXVsdFZhbHVlPzogYW55LCByZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5jcmVhdGUoZGVmYXVsdFZhbHVlLCByZXF1ZXN0SW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICAgKiBAZGVwcmVjYXRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY3JlYXRlQnlQYXRoKGZwYXRoOiBzdHJpbmcsIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3h5LmNyZWF0ZUJ5UGF0aChmcGF0aCwgcmVxdWVzdEluZm8pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAgICogQGRlcHJlY2F0ZWRcclxuICAgICAqL1xyXG4gICAgdXBkYXRlKGNoYW5nZURldGFpbDogQ2hhbmdlRGV0YWlsLCByZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS51cGRhdGUoY2hhbmdlRGV0YWlsLCByZXF1ZXN0SW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICAgKiBAZGVwcmVjYXRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2F2ZShyZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5zYXZlKHJlcXVlc3RJbmZvKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgICAqIEBkZXByZWNhdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkZWxldGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuZGVsZXRlKGlkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgICAqIEBkZXByZWNhdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBleHRlbmREZWxldGUoaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5leHRlbmREZWxldGUoaWQsIHJlcXVlc3RJbmZvKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgICAqIEBkZXByZWNhdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkZWxldEJ5UGF0aChmcGF0aDogc3RyaW5nLCBpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5kZWxldEJ5UGF0aChmcGF0aCwgaWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAgICogQGRlcHJlY2F0ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGV4dGVuZERlbGV0QnlQYXRoKGZwYXRoOiBzdHJpbmcsIGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kRGVsZXRCeVBhdGgoZnBhdGgsIGlkLCByZXF1ZXN0SW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICAgKiBAZGVwcmVjYXRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYmF0Y2hEZWxldGUoaWRzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuYmF0Y2hEZWxldGUoaWRzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgICAqIEBkZXByZWNhdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBleHRlbmRCYXRjaERlbGV0ZShpZHM6IHN0cmluZ1tdLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3h5LmV4dGVuZEJhdGNoRGVsZXRlKGlkcywgcmVxdWVzdEluZm8pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgICAqIEBkZXByZWNhdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjYW5jZWwob3B0aW9ucz86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuY2FuY2VsKG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb25cclxuXHJcblxyXG4gICAgLy8gI3JlZ2lvbiByZXF1ZXN05pa55rOVXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICAgKiBAZGVwcmVjYXRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVxdWVzdChcclxuICAgICAgICB1cmw6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgb3B0aW9ucz86IGFueSxcclxuICAgICAgICBzZWxmSGFuZEVycm9yPzogYm9vbGVhbiwgaWdub3JlRXJyb3I/OiBib29sZWFuLCBpZ25vcmVDaGFuZ2VzPzogYm9vbGVhblxyXG4gICAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbm5lclJlcXVlc3QodXJsLCBtZXRob2QsIHBhcmFtcywgb3B0aW9ucywgc2VsZkhhbmRFcnJvciwgaWdub3JlRXJyb3IsIGlnbm9yZUNoYW5nZXMsIGZhbHNlKTtcclxuICAgIH1cclxuICAgIC8vIHRzbGludDpkaXNhYmxlOiBhbGlnblxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6LCD55So5ZCO56uv5pa55rOVXHJcbiAgICAgKiBAcGFyYW0gdXJsIHVybFxyXG4gICAgICogQHBhcmFtIG1ldGhvZCBtZXRob2RcclxuICAgICAqIEBwYXJhbSBwYXJhbXMgcGFyYW1zXHJcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBvcHRpb25zXHJcbiAgICAgKiBAcGFyYW0gc2VsZkhhbmRFcnJvciDoh6rlt7HlpITnkIblvILluLhcclxuICAgICAqIEBwYXJhbSBpZ25vcmVFcnJvciDlv73nlaXplJnor69cclxuICAgICAqIEBwYXJhbSBpZ25vcmVDaGFuZ2VzIOW/veeVpeWPmOabtFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaW52b2tlKHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgcGFyYW1zPzogYW55LCBvcHRpb25zPzogYW55LFxyXG4gICAgICAgIHNlbGZIYW5kRXJyb3I/OiBib29sZWFuLCBpZ25vcmVFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5ib2R5ICYmIG9wdGlvbnMuYm9keS5SZXF1ZXN0SW5mbykge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ+ivt+S9v+eUqHJlcXVlc3RJbmZv5o+Q5Lqk5Y+Y5pu0Jyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmlubmVyUmVxdWVzdCh1cmwsIG1ldGhvZCwgcGFyYW1zLCBvcHRpb25zLCBzZWxmSGFuZEVycm9yLCBpZ25vcmVFcnJvciwgaWdub3JlQ2hhbmdlcywgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlhoXpg6jnmoRyZXF1ZXN05pa55rOVXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaW5uZXJSZXF1ZXN0KFxyXG4gICAgICAgIHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgcGFyYW1zPzogYW55LCBvcHRpb25zPzogYW55LFxyXG4gICAgICAgIHNlbGZIYW5kRXJyb3I/OiBib29sZWFuLCBpZ25vcmVFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuLFxyXG4gICAgICAgIHVzZUNvcnJlY3RSZXF1ZXN0SW5mb0NoZWNrTWV0aG9kPzogYm9vbGVhblxyXG4gICAgKSB7XHJcbiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XHJcbiAgICAgICAgY29uc3QgYmVmU2Vzc2lvbklkS2V5ID0gJ0JFRlNlc3Npb25JRCc7XHJcblxyXG4gICAgICAgIC8vIOaYr+WQpuiHquW3seWkhOeQhuW8guW4uFxyXG4gICAgICAgIGlmICh0eXBlb2YgKHNlbGZIYW5kRXJyb3IpID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgKHNlbGZIYW5kRXJyb3IpICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAgICAgc2VsZkhhbmRFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g5piv5ZCm5b+955Wl5byC5bi457un57ut5omn6KGMXHJcbiAgICAgICAgaWYgKHR5cGVvZiAoaWdub3JlRXJyb3IpID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgKGlnbm9yZUVycm9yKSAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgICAgIGlnbm9yZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDpgInmi6nmo4Dmn6VSZXF1ZXN0SW5mb+eahOaWueazlVxyXG4gICAgICAgIGlmICh0eXBlb2YgKHVzZUNvcnJlY3RSZXF1ZXN0SW5mb0NoZWNrTWV0aG9kKSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mICh1c2VDb3JyZWN0UmVxdWVzdEluZm9DaGVja01ldGhvZCkgIT09ICdib29sZWFuJykge1xyXG4gICAgICAgICAgICB1c2VDb3JyZWN0UmVxdWVzdEluZm9DaGVja01ldGhvZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjaGVja1JlcXVlc3RJbmZvTWV0aG9kID0gdXNlQ29ycmVjdFJlcXVlc3RJbmZvQ2hlY2tNZXRob2QgPyB0aGlzLmV4aXN0UmVxdWVzdEluZm8gOiB0aGlzLmhhc1JlcXVlc3RJbmZvO1xyXG5cclxuICAgICAgICAvLyBwYXJhbXNcclxuICAgICAgICBpZiAocGFyYW1zKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IGh0dHBQYXJhbXMgPSB0aGlzLmJ1aWxkUGFyYW1zKHBhcmFtcyk7XHJcbiAgICAgICAgICAgIG9wdGlvbnMucGFyYW1zID0gcGFyYW1zO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g5bim5pyJcmVxdWVzdEluZm/nmoTor7fmsYLvvIzor7fmsYLmiJDlip/lkI7muIXnqbrlj5jmm7Tpm4ZcclxuICAgICAgICBjb25zdCBoYXNSZXF1ZXN0SW5mbyA9IGNoZWNrUmVxdWVzdEluZm9NZXRob2Qob3B0aW9ucyk7XHJcbiAgICAgICAgbGV0IGhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC5jb252ZXJ0VG9IZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XHJcblxyXG4gICAgICAgIC8vIOS4suiBlHNlc3Npb27mtYHlkoxodHRw5rWBXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0QmVTZXNzaW9uSWQoKS5waXBlKFxyXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHNlc3Npb25JZDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBoZWFkZXJzID0gdGhpcy5zZXNzaW9uU2VydmljZS5leHRlbmRSZXF1ZXN0SGVhZGVycyhoZWFkZXJzKTtcclxuICAgICAgICAgICAgICAgIG9wdGlvbnMuaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLnRvSnNvbihoZWFkZXJzKTtcclxuICAgICAgICAgICAgICAgIG9wdGlvbnMub2JzZXJ2ZSA9ICdyZXNwb25zZSc7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5yZXF1ZXN0KG1ldGhvZCwgdXJsLCBvcHRpb25zKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHRhcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmhlYWRlcnMgJiYgcmVzcG9uc2UuaGVhZGVycy5oYXMoYmVmU2Vzc2lvbklkS2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2V0QmVTZXNzaW9uSWQocmVzcG9uc2UuaGVhZGVycy5nZXQoYmVmU2Vzc2lvbklkS2V5KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlLmJvZHkpLFxyXG4gICAgICAgICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVSZXBvbnNlSW5mbyhyZXN1bHQsIGhhc1JlcXVlc3RJbmZvLCBpZ25vcmVDaGFuZ2VzKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUVycm9ycyhlcnJvciwgc2VsZkhhbmRFcnJvciwgaWdub3JlRXJyb3IpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlpITnkIbov5Tlm57nu5PmnpxcclxuICAgICAqL1xyXG4gICAgcHVibGljIGhhbmRsZVJlcG9uc2VJbmZvKHJlc3VsdDogYW55LCBoYXNSZXF1ZXN0SW5mbzogYm9vbGVhbiwgaWdub3JlQ2hhbmdlczogYm9vbGVhbik6IGFueSB7XHJcbiAgICAgICAgaWYgKGhhc1JlcXVlc3RJbmZvKSB7XHJcbiAgICAgICAgICAgIC8vIOWmguaenOacieW4puaciVJlcXVlc3RJbmZv77yM5YiZ5oyJ5paw57uT5p6E5aSE55CGXHJcbiAgICAgICAgICAgIC8vIDHjgIHlupTnlKjmnI3liqHlmajnq6/ov5Tlm57nmoTlj5jmm7TvvJtcclxuICAgICAgICAgICAgLy8gMuOAgea4heepuuacrOWcsOWPmOabtOmbhu+8m1xyXG4gICAgICAgICAgICAvLyAz44CB6L+U5Zue5paw57uT5p6EXHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmlubmVyRGF0YUNoYW5nZSAmJiBpZ25vcmVDaGFuZ2VzICE9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlcG9zaXRvcnkuaGFuZGxlRGF0YUNoYW5nZURldGFpbHMocmVzdWx0LmlubmVyRGF0YUNoYW5nZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gaWYgKGlnbm9yZUNoYW5nZXMgIT09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5yZXBvc2l0b3J5LmNsZWFyQWxsRW50aXR5Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8g5aaC5p6c5pyJ5rKh5pyJUmVxdWVzdEluZm/vvIzliJnmjInogIHnmoTmlrnlvI/lpITnkIZcclxuICAgICAgICAgICAgLy8gMeOAgeS4jeWkhOeQhuacjeWKoeWZqOerr+i/lOWbnueahOWPmOabtO+8mui3n+iAgeeahOihjOS4uuS4gOagt++8m1xyXG4gICAgICAgICAgICAvLyAy44CB5LiN5riF55CG5pys5Zyw5Y+Y5pu077ya5Zug5Li65Y+Y5pu05rKh5pyJ5o+Q5Lqk77ybXHJcbiAgICAgICAgICAgIC8vIDPjgIHov5Tlm57ogIHnmoTnu5PmnoTvvJrlhbzlrrnogIHnmoTku6PnoIFcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6ZSZ6K+v5aSE55CGXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBoYW5kbGVFcnJvcnMoZXJyb3I6IGFueSwgc2VsZkhhbmRFcnJvcjogYm9vbGVhbiwgaWdub3JlRXJyb3I6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHRoaXMuY2xlYXJMb2FkaW5nKCk7XHJcbiAgICAgICAgaWYgKCEhc2VsZkhhbmRFcnJvcikge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgZm9ybUFwcENvbnRleHQgPSB0aGlzLnJlcG9zaXRvcnkuYXBwQ29udGV4dC5nZXRGb3JtQXBwQ29udGV4dCgpO1xyXG4gICAgICAgICAgICBjb25zdCBhcHBsaWNhdGlvbklkID0gZm9ybUFwcENvbnRleHQuQXBwbGljYXRpb25JZDtcclxuICAgICAgICAgICAgY29uc3QgYXBwbGljYXRpb25Db250ZXh0OiBhbnkgPSB3aW5kb3dbYXBwbGljYXRpb25JZF0gfHwge307XHJcbiAgICAgICAgICAgIGNvbnN0IGlzRXhjZXB0aW9uSGFuZGxlckV4aXN0ID0gISFhcHBsaWNhdGlvbkNvbnRleHQuaXNFeGNlcHRpb25IYW5kbGVyRXhpc3Q7XHJcbiAgICAgICAgICAgIGlmICghIXRoaXMuZXZlbnRCdXMgJiYgaXNFeGNlcHRpb25IYW5kbGVyRXhpc3QpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRCdXMucG9zdCgnRXhjZXB0aW9uJywgJycsICdvbkV4Y2VwdGlvbicsIGVycm9yLCBmb3JtQXBwQ29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaWdub3JlRXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgICAvLyAjcmVnaW9uIOW3peWFt+aWueazlVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5riF56m6TG9hZGluZ1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNsZWFyTG9hZGluZygpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBpZkxvYWRpbmdFeGlzdHMgPSB3aW5kb3dbJ0RFVktJVF9MT0FESU5HX1NFUlZJQ0UnXSAmJlxyXG4gICAgICAgICAgICB3aW5kb3dbJ0RFVktJVF9MT0FESU5HX1NFUlZJQ0UnXSBpbnN0YW5jZW9mIEFycmF5ICYmXHJcbiAgICAgICAgICAgIHdpbmRvd1snREVWS0lUX0xPQURJTkdfU0VSVklDRSddLmxlbmd0aCA+IDAgfHwgZmFsc2U7XHJcblxyXG4gICAgICAgIGlmIChpZkxvYWRpbmdFeGlzdHMgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGxvYWRpbmdTZXJ2aWNlczogYW55W10gPSB3aW5kb3dbJ0RFVktJVF9MT0FESU5HX1NFUlZJQ0UnXTtcclxuICAgICAgICBmb3IgKGNvbnN0IHNlcnZpY2Ugb2YgbG9hZGluZ1NlcnZpY2VzKSB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgKHNlcnZpY2UuY2xlYXJBbGwpID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICBzZXJ2aWNlLmNsZWFyQWxsKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlpITnkIbov5Tlm57lgLzvvIzlhbzlrrnogIHniYjmnKxcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB1bldyYXBSZXNwb25zZUluZm8ocmVzdWx0OiBhbnkpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiBSZXNwb25zZUluZm9VdGlsLnVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5piv5ZCm5bim5pyJUmVxdWVzdEluZm9cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBoYXNSZXF1ZXN0SW5mbyhvcHRpb25zOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gUmVxdWVzdEluZm9VdGlsLmhhc1JlcXVlc3RJbmZvV2l0aFIob3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIOaYr+WQpuW4puaciXJlcXVlc3RJbmZvXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZXhpc3RSZXF1ZXN0SW5mbyhvcHRpb25zOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gUmVxdWVzdEluZm9VdGlsLmhhc1JlcXVlc3RJbmZvKG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5p6E6YCgSHR0cFBhcmFtc+WvueixoVxyXG4gICAgICogQHBhcmFtIHBhcmFtcyDor7fmsYLlj4LmlbBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBidWlsZFBhcmFtcyhwYXJhbXM6IGFueSk6IEh0dHBQYXJhbXMge1xyXG4gICAgICAgIHJldHVybiBIdHRwUGFyYW1VdGlsLmJ1aWxkUGFyYW1zKHBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmnoTpgKDluKZSZXF1ZXN0SW5mb+eahEJvZHnvvIjpgILnlKjkuo7lpJrkuKrlj4LmlbDnmoTmg4XlhrXvvIzlpoLmnpzlj6rmnInkuIDkuKpSZXF1ZXN0SW5mb+WPguaVsO+8jGJvZHk9UmVxdWVzdEluZm/vvIlcclxuICAgICAqIEBib2R5IOacquaQuuW4plJlcXVlc3RJbmZv55qEYm9kee+8jOagvOW8j+W9ouWmgjoge2tleTE6IHZhbHVlMSwga2V5MjogdmFsdWUyfVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYnVpbGRCb2R5V2l0aFJlcXVlc3RJbmZvKGJvZHk6IGFueSk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIFJlcXVlc3RJbmZvVXRpbC5idWlsZEJvZHlXaXRoUmVxdWVzdEluZm8oYm9keSwgdGhpcy5yZXBvc2l0b3J5KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOaehOmAoFJlcXVlc3RJbmZvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBidWlsZFJlcXVlc3RJbmZvKCk6IFJlcXVlc3RJbmZvIHtcclxuICAgICAgICByZXR1cm4gUmVxdWVzdEluZm9VdGlsLmJ1aWxkUmVxdWVzdEluZm8odGhpcy5yZXBvc2l0b3J5KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uXHJcblxyXG59XHJcblxyXG5leHBvcnQgeyBCZWZSZXN0U2VydmljZSB9O1xyXG5cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Jlc3Rfc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2JlZl9yZXN0X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFPQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQTJCLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFjLFVBQVUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQVUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7TUFFdkMsR0FBRyxHQUFHLEtBQUs7O01BQ1gsTUFBTSxHQUFHLFFBQVE7O01BQ2pCLEdBQUcsR0FBRyxLQUFLOztNQUNYLElBQUksR0FBRyxNQUFNOztNQUNiLEtBQUssR0FBRyxPQUFPOzs7OztBQU1yQixN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O0lBQzdELENBQUM7OztZQTNhSixVQUFVOzs7O1lBeEJGLFVBQVU7O1lBTVYsdUJBQXVCO1lBRHZCLGFBQWE7WUFGTCxRQUFROzs7Ozs7O0lBd0JyQixvQ0FBMEM7Ozs7OztJQUsxQyxvQ0FBK0I7Ozs7O0lBQy9CLHFDQUFpQzs7Ozs7SUFLakMsd0NBQXlDOzs7OztJQUt6QyxpQ0FBdUI7Ozs7O0lBS3ZCLGtDQUEwQjs7QUF5WjlCLE9BQU8sRUFBRSxjQUFjLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBBdXRob3I6IFdpdHRcclxuICogQERhdGU6IDIwMTktMDItMjMgMTM6NTc6NDdcclxuICogQExhc3QgTW9kaWZpZWQgYnk6IGFhbGl6endlbGxcclxuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAxOS0wOS0yNCAxNDoxMDo0MFxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IsIG9mLCBFTVBUWSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAsIG1hcCwgY2F0Y2hFcnJvciwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBFbnRpdHksIEV2ZW50QnVzIH0gZnJvbSAnQGZhcnJpcy9kZXZraXQnO1xyXG5pbXBvcnQgeyBIdHRwSGVhZGVyVXRpbCwgSHR0cFBhcmFtVXRpbCwgUmVxdWVzdEluZm9VdGlsLCBSZXNwb25zZUluZm9VdGlsIH0gZnJvbSAnLi91dGlscy9pbmRleCc7XHJcbmltcG9ydCB7IEJlZlJlcG9zaXRvcnkgfSBmcm9tICcuL2JlZl9yZXBvc2l0b3J5JztcclxuaW1wb3J0IHsgRnJhbWV3b3JrU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL2ZyYW1ld29ya19zZXNzaW9uX3NlcnZpY2UnO1xyXG5pbXBvcnQgeyBCZWZTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vc2Vzc2lvbi9pbmRleCc7XHJcbmltcG9ydCB7IENoYW5nZURldGFpbCwgUmVxdWVzdEluZm8sIFJlc3BvbnNlSW5mbyB9IGZyb20gJy4vdHlwZXMnO1xyXG5pbXBvcnQgeyBCZWZQcm94eSB9IGZyb20gJy4vYmVmX3Byb3h5JztcclxuaW1wb3J0IHsgVXJpU2VydmljZSB9IGZyb20gJy4vdXJpX3NlcnZpY2UnO1xyXG5pbXBvcnQgeyBCZWZQcm94eUV4dGVuZCB9IGZyb20gJy4vYmVmX3Byb3h5X2V4dGVuZCc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi9odHRwX3NlcnZpY2UnO1xyXG5cclxuY29uc3QgR0VUID0gJ0dFVCc7XHJcbmNvbnN0IERFTEVURSA9ICdERUxFVEUnO1xyXG5jb25zdCBQVVQgPSAnUFVUJztcclxuY29uc3QgUE9TVCA9ICdQT1NUJztcclxuY29uc3QgUEFUQ0ggPSAnUEFUQ0gnO1xyXG5cclxuLyoqXHJcbiAqIEJFRuWPluaVsOacjeWKoVxyXG4gKiDor6XmnI3liqHnlLFCZWZSZXBvc2l0b3J55a6e5L6L5YyW77yM5LiN5YGa5rOo5YWl77yM5q+P5LiqQmVmUmVwb3NpdG9yeeaLpeacieS4gOS4qkJlZlJlc3RTZXJ2aWNl5a6e5L6L44CCXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmNsYXNzIEJlZlJlc3RTZXJ2aWNlIHtcclxuXHJcbiAgICBwcml2YXRlIHJlcG9zaXRvcnk6IEJlZlJlcG9zaXRvcnk8RW50aXR5PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGh0dHBDbGllbnRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50O1xyXG4gICAgcHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFNlcnZpY2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDkvJror53mnI3liqFcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNlc3Npb25TZXJ2aWNlOiBCZWZTZXNzaW9uU2VydmljZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIOaOpeWPo+aguVVyaVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYmFzZVVyaTogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICog5LqL5Lu25oC757q/XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBldmVudEJ1czogRXZlbnRCdXM7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmnoTpgKDlh73mlbBcclxuICAgICAqIEBwYXJhbSBodHRwQ2xpZW50IGh0dHDmnI3liqFcclxuICAgICAqIEBwYXJhbSBzZXJ2ZXJVcmkg5bqU55So5pyN5Yqh5Zmo5Zyw5Z2AXHJcbiAgICAgKiBAcGFyYW0gYmVVcmkgQkUgQVBJ5Zyw5Z2AXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIGJhc2VVcmk6IHN0cmluZyxcclxuICAgICAgICBmcm1TZXNzaW9uU2VydmljZTogRnJhbWV3b3JrU2Vzc2lvblNlcnZpY2UsXHJcbiAgICAgICAgcmVwb3NpdG9yeTogQmVmUmVwb3NpdG9yeTxFbnRpdHk+LFxyXG4gICAgICAgIGV2ZW50QnVzPzogRXZlbnRCdXNcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuaHR0cENsaWVudCA9IGh0dHBDbGllbnQ7XHJcbiAgICAgICAgdGhpcy5odHRwU2VydmljZSA9IG5ldyBIdHRwU2VydmljZSh0aGlzLmh0dHBDbGllbnQpO1xyXG4gICAgICAgIHRoaXMuYmFzZVVyaSA9IGJhc2VVcmk7XHJcbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSByZXBvc2l0b3J5LmdldEluamVjdG9yKCk7XHJcbiAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZSA9IG5ldyBCZWZTZXNzaW9uU2VydmljZShodHRwQ2xpZW50LCBiYXNlVXJpLCBmcm1TZXNzaW9uU2VydmljZSwgaW5qZWN0b3IpO1xyXG4gICAgICAgIHRoaXMucmVwb3NpdG9yeSA9IHJlcG9zaXRvcnk7XHJcbiAgICAgICAgdGhpcy5ldmVudEJ1cyA9IGV2ZW50QnVzO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyAjcmVnaW9uIOS7o+eQhuebuOWFs1xyXG5cclxuICAgIC8qKlxyXG4gICAgICog6I635Y+WQmVm5Luj55CGXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgcHJveHkoKTogQmVmUHJveHkge1xyXG4gICAgICAgIGlmICghIXRoaXMucmVwb3NpdG9yeS5wcm94eSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXBvc2l0b3J5LnByb3h5O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUJlZlByb3h5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5Yib5bu6QmVm5Luj55CGXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgY3JlYXRlQmVmUHJveHkoKSB7XHJcbiAgICAgICAgY29uc3Qgc2VydmVyVXJpID0gdGhpcy5yZXBvc2l0b3J5LnNlcnZlclVyaTtcclxuICAgICAgICBjb25zdCB1cmlTZXJ2aWNlID0gbmV3IFVyaVNlcnZpY2Uoc2VydmVyVXJpKTtcclxuICAgICAgICBjb25zdCBkZWZhdWx0UHJveHkgPSBuZXcgQmVmUHJveHkodGhpcy5odHRwQ2xpZW50LCB1cmlTZXJ2aWNlKTtcclxuICAgICAgICBkZWZhdWx0UHJveHkuc2V0QmFzZVVyaSh0aGlzLmJhc2VVcmkpO1xyXG4gICAgICAgIGNvbnN0IGV4dGVuZCA9IG5ldyBCZWZQcm94eUV4dGVuZCh0aGlzLnJlcG9zaXRvcnkpO1xyXG4gICAgICAgIGRlZmF1bHRQcm94eS5zZXRQcm94eUV4dGVuZChleHRlbmQpO1xyXG4gICAgICAgIHJldHVybiBkZWZhdWx0UHJveHk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgICAvLyAjcmVnaW9uIOWfuuacrENSVUTmlrnms5VcclxuXHJcbiAgICAvKipcclxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgICAqIEBkZXByZWNhdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBxdWVyeShlbnRpdHlGaWx0ZXI/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3h5LnF1ZXJ5KGVudGl0eUZpbHRlcik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICAgKiBAZGVwcmVjYXRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZXh0ZW5kUXVlcnkoZW50aXR5RmlsdGVyOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kUXVlcnkoZW50aXR5RmlsdGVyLCByZXF1ZXN0SW5mbyk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIOWIhumhteafpeivouWQhOS7juihqOaVsOaNrlxyXG4gICAgICogQHBhcmFtIGlkIOS4u+ihqGlkXHJcbiAgICAgKiBAcGFyYW0gcmV0cmlldmVQYXJhbSDlj4LmlbBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNlcnZpY2VSZXRyaWV2ZShpZDogc3RyaW5nLCByZXRyaWV2ZVBhcmFtOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuc2VydmljZVJldHJpZXZlKGlkLCByZXRyaWV2ZVBhcmFtLCByZXF1ZXN0SW5mbyk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIOWIhumhteafpeivouS7juihqC/ku47ku47ooajmlbDmja5cclxuICAgICAqIEBwYXJhbSBwYXJhbXMg5p+l6K+i5Y+C5pWwXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBxdWVyeUNoaWxkKHBhcmFtczogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkucXVlcnlDaGlsZChwYXJhbXMpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICAgKiBAZGVwcmVjYXRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmV0cmlldmUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkucmV0cmlldmUoaWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAgICogQGRlcHJlY2F0ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGV4dGVuZFJldHJpZXZlKGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kUmV0cmlldmUoaWQsIHJlcXVlc3RJbmZvKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgICAqIEBkZXByZWNhdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjcmVhdGUoZGVmYXVsdFZhbHVlPzogYW55LCByZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5jcmVhdGUoZGVmYXVsdFZhbHVlLCByZXF1ZXN0SW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICAgKiBAZGVwcmVjYXRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY3JlYXRlQnlQYXRoKGZwYXRoOiBzdHJpbmcsIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3h5LmNyZWF0ZUJ5UGF0aChmcGF0aCwgcmVxdWVzdEluZm8pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAgICogQGRlcHJlY2F0ZWRcclxuICAgICAqL1xyXG4gICAgdXBkYXRlKGNoYW5nZURldGFpbDogQ2hhbmdlRGV0YWlsLCByZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS51cGRhdGUoY2hhbmdlRGV0YWlsLCByZXF1ZXN0SW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICAgKiBAZGVwcmVjYXRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2F2ZShyZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5zYXZlKHJlcXVlc3RJbmZvKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgICAqIEBkZXByZWNhdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkZWxldGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuZGVsZXRlKGlkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgICAqIEBkZXByZWNhdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBleHRlbmREZWxldGUoaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5leHRlbmREZWxldGUoaWQsIHJlcXVlc3RJbmZvKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgICAqIEBkZXByZWNhdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkZWxldEJ5UGF0aChmcGF0aDogc3RyaW5nLCBpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5kZWxldEJ5UGF0aChmcGF0aCwgaWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAgICogQGRlcHJlY2F0ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGV4dGVuZERlbGV0QnlQYXRoKGZwYXRoOiBzdHJpbmcsIGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kRGVsZXRCeVBhdGgoZnBhdGgsIGlkLCByZXF1ZXN0SW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICAgKiBAZGVwcmVjYXRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYmF0Y2hEZWxldGUoaWRzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuYmF0Y2hEZWxldGUoaWRzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgICAqIEBkZXByZWNhdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBleHRlbmRCYXRjaERlbGV0ZShpZHM6IHN0cmluZ1tdLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3h5LmV4dGVuZEJhdGNoRGVsZXRlKGlkcywgcmVxdWVzdEluZm8pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgICAqIEBkZXByZWNhdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjYW5jZWwob3B0aW9ucz86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuY2FuY2VsKG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb25cclxuXHJcblxyXG4gICAgLy8gI3JlZ2lvbiByZXF1ZXN05pa55rOVXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICAgKiBAZGVwcmVjYXRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVxdWVzdChcclxuICAgICAgICB1cmw6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgb3B0aW9ucz86IGFueSxcclxuICAgICAgICBzZWxmSGFuZEVycm9yPzogYm9vbGVhbiwgaWdub3JlRXJyb3I/OiBib29sZWFuLCBpZ25vcmVDaGFuZ2VzPzogYm9vbGVhblxyXG4gICAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbm5lclJlcXVlc3QodXJsLCBtZXRob2QsIHBhcmFtcywgb3B0aW9ucywgc2VsZkhhbmRFcnJvciwgaWdub3JlRXJyb3IsIGlnbm9yZUNoYW5nZXMsIGZhbHNlKTtcclxuICAgIH1cclxuICAgIC8vIHRzbGludDpkaXNhYmxlOiBhbGlnblxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6LCD55So5ZCO56uv5pa55rOVXHJcbiAgICAgKiBAcGFyYW0gdXJsIHVybFxyXG4gICAgICogQHBhcmFtIG1ldGhvZCBtZXRob2RcclxuICAgICAqIEBwYXJhbSBwYXJhbXMgcGFyYW1zXHJcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBvcHRpb25zXHJcbiAgICAgKiBAcGFyYW0gc2VsZkhhbmRFcnJvciDoh6rlt7HlpITnkIblvILluLhcclxuICAgICAqIEBwYXJhbSBpZ25vcmVFcnJvciDlv73nlaXplJnor69cclxuICAgICAqIEBwYXJhbSBpZ25vcmVDaGFuZ2VzIOW/veeVpeWPmOabtFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaW52b2tlKHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgcGFyYW1zPzogYW55LCBvcHRpb25zPzogYW55LFxyXG4gICAgICAgIHNlbGZIYW5kRXJyb3I/OiBib29sZWFuLCBpZ25vcmVFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5ib2R5ICYmIG9wdGlvbnMuYm9keS5SZXF1ZXN0SW5mbykge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ+ivt+S9v+eUqHJlcXVlc3RJbmZv5o+Q5Lqk5Y+Y5pu0Jyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmlubmVyUmVxdWVzdCh1cmwsIG1ldGhvZCwgcGFyYW1zLCBvcHRpb25zLCBzZWxmSGFuZEVycm9yLCBpZ25vcmVFcnJvciwgaWdub3JlQ2hhbmdlcywgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlhoXpg6jnmoRyZXF1ZXN05pa55rOVXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaW5uZXJSZXF1ZXN0KFxyXG4gICAgICAgIHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgcGFyYW1zPzogYW55LCBvcHRpb25zPzogYW55LFxyXG4gICAgICAgIHNlbGZIYW5kRXJyb3I/OiBib29sZWFuLCBpZ25vcmVFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuLFxyXG4gICAgICAgIHVzZUNvcnJlY3RSZXF1ZXN0SW5mb0NoZWNrTWV0aG9kPzogYm9vbGVhblxyXG4gICAgKSB7XHJcbiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XHJcbiAgICAgICAgY29uc3QgYmVmU2Vzc2lvbklkS2V5ID0gJ0JFRlNlc3Npb25JRCc7XHJcblxyXG4gICAgICAgIC8vIOaYr+WQpuiHquW3seWkhOeQhuW8guW4uFxyXG4gICAgICAgIGlmICh0eXBlb2YgKHNlbGZIYW5kRXJyb3IpID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgKHNlbGZIYW5kRXJyb3IpICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAgICAgc2VsZkhhbmRFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g5piv5ZCm5b+955Wl5byC5bi457un57ut5omn6KGMXHJcbiAgICAgICAgaWYgKHR5cGVvZiAoaWdub3JlRXJyb3IpID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgKGlnbm9yZUVycm9yKSAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgICAgIGlnbm9yZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDpgInmi6nmo4Dmn6VSZXF1ZXN0SW5mb+eahOaWueazlVxyXG4gICAgICAgIGlmICh0eXBlb2YgKHVzZUNvcnJlY3RSZXF1ZXN0SW5mb0NoZWNrTWV0aG9kKSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mICh1c2VDb3JyZWN0UmVxdWVzdEluZm9DaGVja01ldGhvZCkgIT09ICdib29sZWFuJykge1xyXG4gICAgICAgICAgICB1c2VDb3JyZWN0UmVxdWVzdEluZm9DaGVja01ldGhvZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjaGVja1JlcXVlc3RJbmZvTWV0aG9kID0gdXNlQ29ycmVjdFJlcXVlc3RJbmZvQ2hlY2tNZXRob2QgPyB0aGlzLmV4aXN0UmVxdWVzdEluZm8gOiB0aGlzLmhhc1JlcXVlc3RJbmZvO1xyXG5cclxuICAgICAgICAvLyBwYXJhbXNcclxuICAgICAgICBpZiAocGFyYW1zKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IGh0dHBQYXJhbXMgPSB0aGlzLmJ1aWxkUGFyYW1zKHBhcmFtcyk7XHJcbiAgICAgICAgICAgIG9wdGlvbnMucGFyYW1zID0gcGFyYW1zO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g5bim5pyJcmVxdWVzdEluZm/nmoTor7fmsYLvvIzor7fmsYLmiJDlip/lkI7muIXnqbrlj5jmm7Tpm4ZcclxuICAgICAgICBjb25zdCBoYXNSZXF1ZXN0SW5mbyA9IGNoZWNrUmVxdWVzdEluZm9NZXRob2Qob3B0aW9ucyk7XHJcbiAgICAgICAgbGV0IGhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC5jb252ZXJ0VG9IZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XHJcblxyXG4gICAgICAgIC8vIOS4suiBlHNlc3Npb27mtYHlkoxodHRw5rWBXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0QmVTZXNzaW9uSWQoKS5waXBlKFxyXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHNlc3Npb25JZDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBoZWFkZXJzID0gdGhpcy5zZXNzaW9uU2VydmljZS5leHRlbmRSZXF1ZXN0SGVhZGVycyhoZWFkZXJzKTtcclxuICAgICAgICAgICAgICAgIG9wdGlvbnMuaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLnRvSnNvbihoZWFkZXJzKTtcclxuICAgICAgICAgICAgICAgIG9wdGlvbnMub2JzZXJ2ZSA9ICdyZXNwb25zZSc7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5yZXF1ZXN0KG1ldGhvZCwgdXJsLCBvcHRpb25zKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHRhcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmhlYWRlcnMgJiYgcmVzcG9uc2UuaGVhZGVycy5oYXMoYmVmU2Vzc2lvbklkS2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2V0QmVTZXNzaW9uSWQocmVzcG9uc2UuaGVhZGVycy5nZXQoYmVmU2Vzc2lvbklkS2V5KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlLmJvZHkpLFxyXG4gICAgICAgICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVSZXBvbnNlSW5mbyhyZXN1bHQsIGhhc1JlcXVlc3RJbmZvLCBpZ25vcmVDaGFuZ2VzKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUVycm9ycyhlcnJvciwgc2VsZkhhbmRFcnJvciwgaWdub3JlRXJyb3IpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlpITnkIbov5Tlm57nu5PmnpxcclxuICAgICAqL1xyXG4gICAgcHVibGljIGhhbmRsZVJlcG9uc2VJbmZvKHJlc3VsdDogYW55LCBoYXNSZXF1ZXN0SW5mbzogYm9vbGVhbiwgaWdub3JlQ2hhbmdlczogYm9vbGVhbik6IGFueSB7XHJcbiAgICAgICAgaWYgKGhhc1JlcXVlc3RJbmZvKSB7XHJcbiAgICAgICAgICAgIC8vIOWmguaenOacieW4puaciVJlcXVlc3RJbmZv77yM5YiZ5oyJ5paw57uT5p6E5aSE55CGXHJcbiAgICAgICAgICAgIC8vIDHjgIHlupTnlKjmnI3liqHlmajnq6/ov5Tlm57nmoTlj5jmm7TvvJtcclxuICAgICAgICAgICAgLy8gMuOAgea4heepuuacrOWcsOWPmOabtOmbhu+8m1xyXG4gICAgICAgICAgICAvLyAz44CB6L+U5Zue5paw57uT5p6EXHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmlubmVyRGF0YUNoYW5nZSAmJiBpZ25vcmVDaGFuZ2VzICE9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlcG9zaXRvcnkuaGFuZGxlRGF0YUNoYW5nZURldGFpbHMocmVzdWx0LmlubmVyRGF0YUNoYW5nZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gaWYgKGlnbm9yZUNoYW5nZXMgIT09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5yZXBvc2l0b3J5LmNsZWFyQWxsRW50aXR5Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8g5aaC5p6c5pyJ5rKh5pyJUmVxdWVzdEluZm/vvIzliJnmjInogIHnmoTmlrnlvI/lpITnkIZcclxuICAgICAgICAgICAgLy8gMeOAgeS4jeWkhOeQhuacjeWKoeWZqOerr+i/lOWbnueahOWPmOabtO+8mui3n+iAgeeahOihjOS4uuS4gOagt++8m1xyXG4gICAgICAgICAgICAvLyAy44CB5LiN5riF55CG5pys5Zyw5Y+Y5pu077ya5Zug5Li65Y+Y5pu05rKh5pyJ5o+Q5Lqk77ybXHJcbiAgICAgICAgICAgIC8vIDPjgIHov5Tlm57ogIHnmoTnu5PmnoTvvJrlhbzlrrnogIHnmoTku6PnoIFcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6ZSZ6K+v5aSE55CGXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBoYW5kbGVFcnJvcnMoZXJyb3I6IGFueSwgc2VsZkhhbmRFcnJvcjogYm9vbGVhbiwgaWdub3JlRXJyb3I6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHRoaXMuY2xlYXJMb2FkaW5nKCk7XHJcbiAgICAgICAgaWYgKCEhc2VsZkhhbmRFcnJvcikge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgZm9ybUFwcENvbnRleHQgPSB0aGlzLnJlcG9zaXRvcnkuYXBwQ29udGV4dC5nZXRGb3JtQXBwQ29udGV4dCgpO1xyXG4gICAgICAgICAgICBjb25zdCBhcHBsaWNhdGlvbklkID0gZm9ybUFwcENvbnRleHQuQXBwbGljYXRpb25JZDtcclxuICAgICAgICAgICAgY29uc3QgYXBwbGljYXRpb25Db250ZXh0OiBhbnkgPSB3aW5kb3dbYXBwbGljYXRpb25JZF0gfHwge307XHJcbiAgICAgICAgICAgIGNvbnN0IGlzRXhjZXB0aW9uSGFuZGxlckV4aXN0ID0gISFhcHBsaWNhdGlvbkNvbnRleHQuaXNFeGNlcHRpb25IYW5kbGVyRXhpc3Q7XHJcbiAgICAgICAgICAgIGlmICghIXRoaXMuZXZlbnRCdXMgJiYgaXNFeGNlcHRpb25IYW5kbGVyRXhpc3QpIHtcclxuICAgICAgICAgICAgICAgIGlmIChSZXNwb25zZUluZm9VdGlsLmlzUmVwb3J0ZWQ0MDFFcnJvcihlcnJvcikpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmV2ZW50QnVzLnBvc3QoJ0V4Y2VwdGlvbicsICcnLCAnb25FeGNlcHRpb24nLCBlcnJvciwgZm9ybUFwcENvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlnbm9yZUVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyAjZW5kcmVnaW9uXHJcblxyXG5cclxuICAgIC8vICNyZWdpb24g5bel5YW35pa55rOVXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmuIXnqbpMb2FkaW5nXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgY2xlYXJMb2FkaW5nKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGlmTG9hZGluZ0V4aXN0cyA9IHdpbmRvd1snREVWS0lUX0xPQURJTkdfU0VSVklDRSddICYmXHJcbiAgICAgICAgICAgIHdpbmRvd1snREVWS0lUX0xPQURJTkdfU0VSVklDRSddIGluc3RhbmNlb2YgQXJyYXkgJiZcclxuICAgICAgICAgICAgd2luZG93WydERVZLSVRfTE9BRElOR19TRVJWSUNFJ10ubGVuZ3RoID4gMCB8fCBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKGlmTG9hZGluZ0V4aXN0cyA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgbG9hZGluZ1NlcnZpY2VzOiBhbnlbXSA9IHdpbmRvd1snREVWS0lUX0xPQURJTkdfU0VSVklDRSddO1xyXG4gICAgICAgIGZvciAoY29uc3Qgc2VydmljZSBvZiBsb2FkaW5nU2VydmljZXMpIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiAoc2VydmljZS5jbGVhckFsbCkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHNlcnZpY2UuY2xlYXJBbGwoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWkhOeQhui/lOWbnuWAvO+8jOWFvOWuueiAgeeJiOacrFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQ6IGFueSk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIFJlc3BvbnNlSW5mb1V0aWwudW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmmK/lkKbluKbmnIlSZXF1ZXN0SW5mb1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGhhc1JlcXVlc3RJbmZvKG9wdGlvbnM6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBSZXF1ZXN0SW5mb1V0aWwuaGFzUmVxdWVzdEluZm9XaXRoUihvcHRpb25zKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICog5piv5ZCm5bim5pyJcmVxdWVzdEluZm9cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBleGlzdFJlcXVlc3RJbmZvKG9wdGlvbnM6IGFueSkge1xyXG4gICAgICAgIHJldHVybiBSZXF1ZXN0SW5mb1V0aWwuaGFzUmVxdWVzdEluZm8ob3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmnoTpgKBIdHRwUGFyYW1z5a+56LGhXHJcbiAgICAgKiBAcGFyYW0gcGFyYW1zIOivt+axguWPguaVsFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGJ1aWxkUGFyYW1zKHBhcmFtczogYW55KTogSHR0cFBhcmFtcyB7XHJcbiAgICAgICAgcmV0dXJuIEh0dHBQYXJhbVV0aWwuYnVpbGRQYXJhbXMocGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOaehOmAoOW4plJlcXVlc3RJbmZv55qEQm9kee+8iOmAgueUqOS6juWkmuS4quWPguaVsOeahOaDheWGte+8jOWmguaenOWPquacieS4gOS4qlJlcXVlc3RJbmZv5Y+C5pWw77yMYm9keT1SZXF1ZXN0SW5mb++8iVxyXG4gICAgICogQGJvZHkg5pyq5pC65bimUmVxdWVzdEluZm/nmoRib2R577yM5qC85byP5b2i5aaCOiB7a2V5MTogdmFsdWUxLCBrZXkyOiB2YWx1ZTJ9XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBidWlsZEJvZHlXaXRoUmVxdWVzdEluZm8oYm9keTogYW55KTogYW55IHtcclxuICAgICAgICByZXR1cm4gUmVxdWVzdEluZm9VdGlsLmJ1aWxkQm9keVdpdGhSZXF1ZXN0SW5mbyhib2R5LCB0aGlzLnJlcG9zaXRvcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5p6E6YCgUmVxdWVzdEluZm9cclxuICAgICAqL1xyXG4gICAgcHVibGljIGJ1aWxkUmVxdWVzdEluZm8oKTogUmVxdWVzdEluZm8ge1xyXG4gICAgICAgIHJldHVybiBSZXF1ZXN0SW5mb1V0aWwuYnVpbGRSZXF1ZXN0SW5mbyh0aGlzLnJlcG9zaXRvcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb25cclxuXHJcbn1cclxuXHJcbmV4cG9ydCB7IEJlZlJlc3RTZXJ2aWNlIH07XHJcblxyXG4iXX0=

@@ -34,4 +34,11 @@ /**

}
/**
* @param {?} response
* @return {?}
*/
static isReported401Error(response) {
return response.status === 401;
}
}
export { ResponseInfoUtil };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2VfaW5mby51dGlsLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvdXRpbHMvcmVzcG9uc2VfaW5mby51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsTUFBTSxnQkFBZ0I7Ozs7OztJQUtiLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFXO1FBRTFDLG1CQUFtQjtRQUNuQixJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsT0FBTyxNQUFNLENBQUM7U0FDZjtRQUVELGtDQUFrQztRQUNsQyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEtBQUssS0FBSyxFQUFFO1lBQ2xELElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUUxRSxlQUFlO2dCQUNmLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQzthQUN0QjtZQUNELE9BQU8sTUFBTSxDQUFDO1NBQ2Y7OztjQUdLLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVztRQUN0QyxJQUFJLFdBQVcsSUFBSSxXQUFXLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFFbkcsZUFBZTtZQUNmLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQztTQUMzQjtRQUNELE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQztJQUU1QixDQUFDO0NBQ0Y7QUFFRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNsYXNzIFJlc3BvbnNlSW5mb1V0aWwge1xyXG5cclxuICAvKipcclxuICAgKiDlsIZSZXNwb25zZUluZm/ovazmjaLkuLrogIHmjqXlj6PnmoTmlbDmja7ov5Tlm57moLzlvI9cclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIHVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQ6IGFueSkge1xyXG5cclxuICAgIC8vIOWFvOWuuWNhbmNlbOayoeaciei/lOWbnuWAvOeahOaDheWGtVxyXG4gICAgaWYgKCFyZXN1bHQpIHtcclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICAvLyDmsqHmnIlyZXR1cm5WYWx1ZeeahOaDheWGteS4i++8jOWFvOWuuXF1ZXJ55Y+W5pWw55qE55qE5qC85byPXHJcbiAgICBpZiAocmVzdWx0Lmhhc093blByb3BlcnR5KCdyZXR1cm5WYWx1ZScpID09PSBmYWxzZSkge1xyXG4gICAgICBpZiAocmVzdWx0Lmhhc093blByb3BlcnR5KCdyZXN1bHQnKSAmJiByZXN1bHQuaGFzT3duUHJvcGVydHkoJ3BhZ2luYXRpb24nKSkge1xyXG5cclxuICAgICAgICAvLyDlhbzlrrnov5Tlm57luKbliIbpobXnmoTliJfooajmlbDmja5cclxuICAgICAgICByZXR1cm4gcmVzdWx0LnJlc3VsdDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOWFtuS7lu+8mui/lOWbnlJlcXVlc3RJbmZvLnJldHVyblZhbHVl55qE5oOF5Ya1XHJcbiAgICBjb25zdCByZXR1cm5WYWx1ZSA9IHJlc3VsdC5yZXR1cm5WYWx1ZTtcclxuICAgIGlmIChyZXR1cm5WYWx1ZSAmJiByZXR1cm5WYWx1ZS5oYXNPd25Qcm9wZXJ0eSgncmVzdWx0JykgJiYgcmV0dXJuVmFsdWUuaGFzT3duUHJvcGVydHkoJ3BhZ2luYXRpb24nKSkge1xyXG5cclxuICAgICAgLy8g5YW85a656L+U5Zue5bim5YiG6aG155qE5YiX6KGo5pWw5o2uXHJcbiAgICAgIHJldHVybiByZXR1cm5WYWx1ZS5yZXN1bHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0LnJldHVyblZhbHVlO1xyXG5cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB7IFJlc3BvbnNlSW5mb1V0aWwgfTtcclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2VfaW5mby51dGlsLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvdXRpbHMvcmVzcG9uc2VfaW5mby51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsTUFBTSxnQkFBZ0I7Ozs7OztJQUtiLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFXO1FBRTFDLG1CQUFtQjtRQUNuQixJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsT0FBTyxNQUFNLENBQUM7U0FDZjtRQUVELGtDQUFrQztRQUNsQyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEtBQUssS0FBSyxFQUFFO1lBQ2xELElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUUxRSxlQUFlO2dCQUNmLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQzthQUN0QjtZQUNELE9BQU8sTUFBTSxDQUFDO1NBQ2Y7OztjQUdLLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVztRQUN0QyxJQUFJLFdBQVcsSUFBSSxXQUFXLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFFbkcsZUFBZTtZQUNmLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQztTQUMzQjtRQUNELE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQztJQUU1QixDQUFDOzs7OztJQUVNLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxRQUEwQjtRQUN6RCxPQUFPLFFBQVEsQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQUVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJSZXNwb25zZSwgSHR0cFJlc3BvbnNlLCBIdHRwUmVzcG9uc2VCYXNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuY2xhc3MgUmVzcG9uc2VJbmZvVXRpbCB7XHJcblxyXG4gIC8qKlxyXG4gICAqIOWwhlJlc3BvbnNlSW5mb+i9rOaNouS4uuiAgeaOpeWPo+eahOaVsOaNrui/lOWbnuagvOW8j1xyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgdW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdDogYW55KSB7XHJcblxyXG4gICAgLy8g5YW85a65Y2FuY2Vs5rKh5pyJ6L+U5Zue5YC855qE5oOF5Ya1XHJcbiAgICBpZiAoIXJlc3VsdCkge1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOayoeaciXJldHVyblZhbHVl55qE5oOF5Ya15LiL77yM5YW85a65cXVlcnnlj5bmlbDnmoTnmoTmoLzlvI9cclxuICAgIGlmIChyZXN1bHQuaGFzT3duUHJvcGVydHkoJ3JldHVyblZhbHVlJykgPT09IGZhbHNlKSB7XHJcbiAgICAgIGlmIChyZXN1bHQuaGFzT3duUHJvcGVydHkoJ3Jlc3VsdCcpICYmIHJlc3VsdC5oYXNPd25Qcm9wZXJ0eSgncGFnaW5hdGlvbicpKSB7XHJcblxyXG4gICAgICAgIC8vIOWFvOWuuei/lOWbnuW4puWIhumhteeahOWIl+ihqOaVsOaNrlxyXG4gICAgICAgIHJldHVybiByZXN1bHQucmVzdWx0O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5YW25LuW77ya6L+U5ZueUmVxdWVzdEluZm8ucmV0dXJuVmFsdWXnmoTmg4XlhrVcclxuICAgIGNvbnN0IHJldHVyblZhbHVlID0gcmVzdWx0LnJldHVyblZhbHVlO1xyXG4gICAgaWYgKHJldHVyblZhbHVlICYmIHJldHVyblZhbHVlLmhhc093blByb3BlcnR5KCdyZXN1bHQnKSAmJiByZXR1cm5WYWx1ZS5oYXNPd25Qcm9wZXJ0eSgncGFnaW5hdGlvbicpKSB7XHJcblxyXG4gICAgICAvLyDlhbzlrrnov5Tlm57luKbliIbpobXnmoTliJfooajmlbDmja5cclxuICAgICAgcmV0dXJuIHJldHVyblZhbHVlLnJlc3VsdDtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQucmV0dXJuVmFsdWU7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBpc1JlcG9ydGVkNDAxRXJyb3IocmVzcG9uc2U6IEh0dHBSZXNwb25zZUJhc2UpIHtcclxuICAgIHJldHVybiByZXNwb25zZS5zdGF0dXMgPT09IDQwMTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB7IFJlc3BvbnNlSW5mb1V0aWwgfTtcclxuIl19

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

import { switchMap } from 'rxjs/operators';
import { ResponseInfoUtil } from './utils';
// tslint:disable: max-line-length tslint:disable: no-string-literal

@@ -104,2 +105,5 @@ var

if (!!eventBus && isExceptionHandlerExist) {
if (ResponseInfoUtil.isReported401Error(error)) {
return throwError(error);
}
eventBus.post('Exception', '', 'onException', error, formAppContext);

@@ -241,2 +245,2 @@ if (ignoreError) {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5X2V4dGVuZC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2JlZl9wcm94eV9leHRlbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSXpELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFJM0M7OztJQUNFLHdCQUFvQixPQUE4QjtRQUE5QixZQUFPLEdBQVAsT0FBTyxDQUF1QjtJQUFJLENBQUM7SUFDdkQ7Ozs7T0FJRzs7Ozs7OztJQUNJLG1DQUFVOzs7Ozs7SUFBakIsVUFBa0IsUUFBc0IsRUFBRSxhQUF1QjtRQUMvRCxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsZUFBZSxJQUFJLGFBQWEsS0FBSyxJQUFJLEVBQUU7WUFDbEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDaEU7UUFDRCxnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3JDLElBQUk7UUFDSixJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ3RELE9BQU8sUUFBUSxDQUFDLFdBQVcsQ0FBQztTQUM3QjthQUFNO1lBQ0wsT0FBTyxRQUFRLENBQUM7U0FDakI7SUFDSCxDQUFDO0lBQ0Q7Ozs7O09BS0c7Ozs7Ozs7O0lBQ0ksZ0NBQU87Ozs7Ozs7SUFBZCxVQUFlLEtBQVUsRUFBRSxhQUFzQixFQUFFLFdBQW9COzs7WUFDL0QsY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFOztZQUM1RCxhQUFhLEdBQUcsY0FBYyxDQUFDLGFBQWE7O1lBQzVDLGVBQWUsR0FBRyxNQUFNLENBQUMsd0JB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SUFBSSxDQUFDO1NBQ2I7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU87Ozs7UUFBQyxVQUFBLElBQUk7WUFDNUIsSUFBSSxJQUFJLEtBQUssYUFBYSxFQUFFO2dCQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsS0FBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzthQUNuRTtRQUNILENBQUMsRUFBQyxDQUFDO1FBQ0gsbUNBQW1DO1FBQ25DLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQy9CO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzs7OztJQUNNLHFDQUFZOzs7O0lBQW5CLFVBQW9CLFFBQWE7O1lBQ3pCLFlBQVksR0FBRyxjQUFjO1FBQ25DLElBQUksUUFBUSxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUMxRCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7U0FDNUY7SUFDSCxDQUFDO0lBQ0gscUJBQUM7QUFBRCxDQUFDLEFBbEhELElBa0hDOzs7Ozs7OztJQWpIYSxpQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0aHJvd0Vycm9yLCBPYnNlcnZhYmxlLCBvZiwgRU1QVFkgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSAnQGZhcnJpcy9kZXZraXQnO1xyXG5pbXBvcnQgeyBJUHJveHlFeHRlbmQsIFJlc3BvbnNlSW5mbyB9IGZyb20gJy4vdHlwZXMnO1xyXG5pbXBvcnQgeyBCZWZSZXBvc2l0b3J5IH0gZnJvbSAnLi9iZWZfcmVwb3NpdG9yeSc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSHR0cFBhcmFtcywgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG4vLyB0c2xpbnQ6ZGlzYWJsZTogbWF4LWxpbmUtbGVuZ3RoIHRzbGludDpkaXNhYmxlOiBuby1zdHJpbmctbGl0ZXJhbFxyXG5leHBvcnQgY2xhc3MgQmVmUHJveHlFeHRlbmQgaW1wbGVtZW50cyBJUHJveHlFeHRlbmQge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29udGV4dDogQmVmUmVwb3NpdG9yeTxFbnRpdHk+KSB7IH1cclxuICAvKipcclxuICAgKiDor7fmsYLnu5Pmnpzov5Tlm55cclxuICAgKiBAcGFyYW0gcmVzcG9uc2UgcmVzcG9uc2VcclxuICAgKiBAcGFyYW0gaWdub3JlQ2hhbmdlcyDlv73nlaXlj5jmm7RcclxuICAgKi9cclxuICBwdWJsaWMgb25SZXNwb25zZShyZXNwb25zZTogUmVzcG9uc2VJbmZvLCBpZ25vcmVDaGFuZ2VzPzogYm9vbGVhbikge1xyXG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmlubmVyRGF0YUNoYW5nZSAmJiBpZ25vcmVDaGFuZ2VzICE9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuY29udGV4dC5oYW5kbGVEYXRhQ2hhbmdlRGV0YWlscyhyZXNwb25zZS5pbm5lckRhdGFDaGFuZ2UpO1xyXG4gICAgfVxyXG4gICAgLy8gaWYgKGlnbm9yZUNoYW5nZXMgIT09IHRydWUpIHtcclxuICAgIHRoaXMuY29udGV4dC5jbGVhckFsbEVudGl0eUNoYW5nZXMoKTtcclxuICAgIC8vIH1cclxuICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5oYXNPd25Qcm9wZXJ0eSgncmV0dXJuVmFsdWUnKSkge1xyXG4gICAgICByZXR1cm4gcmVzcG9uc2UucmV0dXJuVmFsdWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOWPkeeUn+mUmeivr1xyXG4gICAqIEBwYXJhbSBlcnJvciBlcnJvclxyXG4gICAqIEBwYXJhbSBzZWxmSGFuZEVycm9yIOiHquWumuS5iemUmeivr+WkhOeQhlxyXG4gICAqIEBwYXJhbSBpZ25vcmVFcnJvciDlv73nlaXplJnor69cclxuICAgKi9cclxuICBwdWJsaWMgb25FcnJvcihlcnJvcjogYW55LCBzZWxmSGFuZEVycm9yOiBib29sZWFuLCBpZ25vcmVFcnJvcjogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBmb3JtQXBwQ29udGV4dCA9IHRoaXMuY29udGV4dC5hcHBDb250ZXh0LmdldEZvcm1BcHBDb250ZXh0KCk7XHJcbiAgICBjb25zdCBhcHBsaWNhdGlvbklkID0gZm9ybUFwcENvbnRleHQuQXBwbGljYXRpb25JZDtcclxuICAgIGNvbnN0IGxvYWRpbmdTZXJ2aWNlcyA9IHdpbmRvd1snREVWS0lUX0xPQURJTkdfU0VSVklDRSddO1xyXG4gICAgaWYgKGxvYWRpbmdTZXJ2aWNlcyAmJiBsb2FkaW5nU2VydmljZXMgaW5zdGFuY2VvZiBBcnJheSAmJiBsb2FkaW5nU2VydmljZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3IgKGNvbnN0IGxvYWRpbmdTZXJ2aWNlIG9mIGxvYWRpbmdTZXJ2aWNlcykge1xyXG4gICAgICAgIGlmICh0eXBlb2YgKGxvYWRpbmdTZXJ2aWNlLmNsZWFyQWxsKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgbG9hZGluZ1NlcnZpY2UuY2xlYXJBbGwoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghIXNlbGZIYW5kRXJyb3IpIHtcclxuICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgZXZlbnRCdXMgPSB0aGlzLmNvbnRleHQucmVzdFNlcnZpY2UuZXZlbnRCdXM7XHJcbiAgICAgIGNvbnN0IGFwcGxpY2F0aW9uQ29udGV4dDogYW55ID0gd2luZG93W2FwcGxpY2F0aW9uSWRdIHx8IHt9O1xyXG4gICAgICBjb25zdCBpc0V4Y2VwdGlvbkhhbmRsZXJFeGlzdCA9ICEhYXBwbGljYXRpb25Db250ZXh0LmlzRXhjZXB0aW9uSGFuZGxlckV4aXN0O1xyXG5cclxuICAgICAgaWYgKCEhZXZlbnRCdXMgJiYgaXNFeGNlcHRpb25IYW5kbGVyRXhpc3QpIHtcclxuICAgICAgICBldmVudEJ1cy5wb3N0KCdFeGNlcHRpb24nLCAnJywgJ29uRXhjZXB0aW9uJywgZXJyb3IsIGZvcm1BcHBDb250ZXh0KTtcclxuICAgICAgICBpZiAoaWdub3JlRXJyb3IpIHtcclxuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICog5omp5bGVaHR0cCBoZWFkZXJzXHJcbiAgICogQHBhcmFtIGhlYWRlcnMgaGVhZGVyc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRIZWFkZXJzKGhlYWRlcnM6IEh0dHBIZWFkZXJzLCBydW50aW1lQ29udGV4dD86IGFueSk6IE9ic2VydmFibGU8eyBbcHJvcE5hbWU6IHN0cmluZ106IGFueSB9PiB7XHJcbiAgICBjb25zdCAkZ2V0U2Vzc2lvbklkID0gdGhpcy5jb250ZXh0LnJlc3RTZXJ2aWNlLnNlc3Npb25TZXJ2aWNlLmdldEJlU2Vzc2lvbklkKCk7XHJcbiAgICByZXR1cm4gJGdldFNlc3Npb25JZC5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoc2Vzc2lvbklkID0+IHtcclxuICAgICAgICBoZWFkZXJzID0gdGhpcy5jb250ZXh0LnJlc3RTZXJ2aWNlLnNlc3Npb25TZXJ2aWNlLmV4dGVuZFJlcXVlc3RIZWFkZXJzKGhlYWRlcnMsIHJ1bnRpbWVDb250ZXh0KTtcclxuICAgICAgICByZXR1cm4gb2YoaGVhZGVycyk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmianlsZXor7fmsYLlj4LmlbBcclxuICAgKiBAcGFyYW0gcGFyYW1zIOWPguaVsFxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRVcmwodXJsOiBzdHJpbmcsIHBhcmFtczogeyBbcHJvcE5hbWU6IHN0cmluZ106IGFueSB9KTogc3RyaW5nIHtcclxuICAgIGlmICghcGFyYW1zKSB7XHJcbiAgICAgIHJldHVybiB1cmw7XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBwYXJhbXMpIHtcclxuICAgICAgaWYgKHBhcmFtcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBKU09OLnN0cmluZ2lmeShwYXJhbXNba2V5XSk7XHJcbiAgICAgICAgaWYgKHVybC5pbmRleE9mKCc/JykgPT09IC0xKSB7XHJcbiAgICAgICAgICB1cmwgPSBgJHt1cmx9PyR7a2V5fT0ke3ZhbHVlfWA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHVybCA9IGAke3VybH0mJHtrZXl9PSR7dmFsdWV9YDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB1cmw7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaJqeWxleivt+axguS9k1xyXG4gICAqIEBwYXJhbSBib2R5IGJvZHlcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kQm9keShib2R5KTogeyBbcHJvcE5hbWU6IHN0cmluZ106IGFueSB9IHtcclxuICAgIGlmICghYm9keSB8fCB0eXBlb2YgYm9keSAhPT0gJ29iamVjdCcgfHwgT2JqZWN0LmtleXMoYm9keSkubGVuZ3RoIDwgMSkge1xyXG4gICAgICByZXR1cm4gYm9keTtcclxuICAgIH1cclxuICAgIE9iamVjdC5rZXlzKGJvZHkpLmZvckVhY2gobmFtZSA9PiB7XHJcbiAgICAgIGlmIChuYW1lID09PSAncmVxdWVzdEluZm8nKSB7XHJcbiAgICAgICAgYm9keVsncmVxdWVzdEluZm8nXSA9IHRoaXMuY29udGV4dC5yZXN0U2VydmljZS5idWlsZFJlcXVlc3RJbmZvKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8g5YW85a65SueJiOWQjuerr2JvZHnlj6rmnInkuIDkuKprZXnml7Zib2R55Y+q5LygdmFsdWXnmoTmg4XlhrVcclxuICAgIGlmIChPYmplY3Qua2V5cyhib2R5KS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgYm9keSA9IE9iamVjdC52YWx1ZXMoYm9keSlbMF07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYm9keTtcclxuICB9XHJcbiAgcHVibGljIHBhcnNlSGVhZGVycyhyZXNwb25zZTogYW55KSB7XHJcbiAgICBjb25zdCBzZXNzaW9uSWRLZXkgPSAnQkVGU2Vzc2lvbklEJztcclxuICAgIGlmIChyZXNwb25zZS5oZWFkZXJzICYmIHJlc3BvbnNlLmhlYWRlcnMuaGFzKHNlc3Npb25JZEtleSkpIHtcclxuICAgICAgdGhpcy5jb250ZXh0LnJlc3RTZXJ2aWNlLnNlc3Npb25TZXJ2aWNlLnNldEJlU2Vzc2lvbklkKHJlc3BvbnNlLmhlYWRlcnMuZ2V0KHNlc3Npb25JZEtleSkpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5X2V4dGVuZC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2JlZl9wcm94eV9leHRlbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSXpELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBRzNDOzs7SUFDRSx3QkFBb0IsT0FBOEI7UUFBOUIsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7SUFBSSxDQUFDO0lBQ3ZEOzs7O09BSUc7Ozs7Ozs7SUFDSSxtQ0FBVTs7Ozs7O0lBQWpCLFVBQWtCLFFBQXNCLEVBQUUsYUFBdUI7UUFDL0QsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLGVBQWUsSUFBSSxhQUFhLEtBQUssSUFBSSxFQUFFO1lBQ2xFLElBQUksQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ2hFO1FBQ0QsZ0NBQWdDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNyQyxJQUFJO1FBQ0osSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUN0RCxPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUM7U0FDN0I7YUFBTTtZQUNMLE9BQU8sUUFBUSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQztJQUNEOzs7OztPQUtHOzs7Ozs7OztJQUNJLGdDQUFPOzs7Ozs7O0lBQWQsVUFBZSxLQUFVLEVBQUUsYUFBc0IsRUFBRSxXQUFvQjs7O1lBQy9ELGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRTs7WUFDNUQsYUFBYSxHQUFHLGNB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WSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFbnRpdHkgfSBmcm9tICdAZmFycmlzL2RldmtpdCc7XHJcbmltcG9ydCB7IElQcm94eUV4dGVuZCwgUmVzcG9uc2VJbmZvIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IEJlZlJlcG9zaXRvcnkgfSBmcm9tICcuL2JlZl9yZXBvc2l0b3J5JztcclxuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBIdHRwUGFyYW1zLCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgUmVzcG9uc2VJbmZvVXRpbCB9IGZyb20gJy4vdXRpbHMnO1xyXG5cclxuLy8gdHNsaW50OmRpc2FibGU6IG1heC1saW5lLWxlbmd0aCB0c2xpbnQ6ZGlzYWJsZTogbm8tc3RyaW5nLWxpdGVyYWxcclxuZXhwb3J0IGNsYXNzIEJlZlByb3h5RXh0ZW5kIGltcGxlbWVudHMgSVByb3h5RXh0ZW5kIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbnRleHQ6IEJlZlJlcG9zaXRvcnk8RW50aXR5PikgeyB9XHJcbiAgLyoqXHJcbiAgICog6K+35rGC57uT5p6c6L+U5ZueXHJcbiAgICogQHBhcmFtIHJlc3BvbnNlIHJlc3BvbnNlXHJcbiAgICogQHBhcmFtIGlnbm9yZUNoYW5nZXMg5b+955Wl5Y+Y5pu0XHJcbiAgICovXHJcbiAgcHVibGljIG9uUmVzcG9uc2UocmVzcG9uc2U6IFJlc3BvbnNlSW5mbywgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW4pIHtcclxuICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5pbm5lckRhdGFDaGFuZ2UgJiYgaWdub3JlQ2hhbmdlcyAhPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmNvbnRleHQuaGFuZGxlRGF0YUNoYW5nZURldGFpbHMocmVzcG9uc2UuaW5uZXJEYXRhQ2hhbmdlKTtcclxuICAgIH1cclxuICAgIC8vIGlmIChpZ25vcmVDaGFuZ2VzICE9PSB0cnVlKSB7XHJcbiAgICB0aGlzLmNvbnRleHQuY2xlYXJBbGxFbnRpdHlDaGFuZ2VzKCk7XHJcbiAgICAvLyB9XHJcbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuaGFzT3duUHJvcGVydHkoJ3JldHVyblZhbHVlJykpIHtcclxuICAgICAgcmV0dXJuIHJlc3BvbnNlLnJldHVyblZhbHVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiDlj5HnlJ/plJnor69cclxuICAgKiBAcGFyYW0gZXJyb3IgZXJyb3JcclxuICAgKiBAcGFyYW0gc2VsZkhhbmRFcnJvciDoh6rlrprkuYnplJnor6/lpITnkIZcclxuICAgKiBAcGFyYW0gaWdub3JlRXJyb3Ig5b+955Wl6ZSZ6K+vXHJcbiAgICovXHJcbiAgcHVibGljIG9uRXJyb3IoZXJyb3I6IGFueSwgc2VsZkhhbmRFcnJvcjogYm9vbGVhbiwgaWdub3JlRXJyb3I6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgZm9ybUFwcENvbnRleHQgPSB0aGlzLmNvbnRleHQuYXBwQ29udGV4dC5nZXRGb3JtQXBwQ29udGV4dCgpO1xyXG4gICAgY29uc3QgYXBwbGljYXRpb25JZCA9IGZvcm1BcHBDb250ZXh0LkFwcGxpY2F0aW9uSWQ7XHJcbiAgICBjb25zdCBsb2FkaW5nU2VydmljZXMgPSB3aW5kb3dbJ0RFVktJVF9MT0FESU5HX1NFUlZJQ0UnXTtcclxuICAgIGlmIChsb2FkaW5nU2VydmljZXMgJiYgbG9hZGluZ1NlcnZpY2VzIGluc3RhbmNlb2YgQXJyYXkgJiYgbG9hZGluZ1NlcnZpY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9yIChjb25zdCBsb2FkaW5nU2VydmljZSBvZiBsb2FkaW5nU2VydmljZXMpIHtcclxuICAgICAgICBpZiAodHlwZW9mIChsb2FkaW5nU2VydmljZS5jbGVhckFsbCkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgIGxvYWRpbmdTZXJ2aWNlLmNsZWFyQWxsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoISFzZWxmSGFuZEVycm9yKSB7XHJcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGV2ZW50QnVzID0gdGhpcy5jb250ZXh0LnJlc3RTZXJ2aWNlLmV2ZW50QnVzO1xyXG4gICAgICBjb25zdCBhcHBsaWNhdGlvbkNvbnRleHQ6IGFueSA9IHdpbmRvd1thcHBsaWNhdGlvbklkXSB8fCB7fTtcclxuICAgICAgY29uc3QgaXNFeGNlcHRpb25IYW5kbGVyRXhpc3QgPSAhIWFwcGxpY2F0aW9uQ29udGV4dC5pc0V4Y2VwdGlvbkhhbmRsZXJFeGlzdDtcclxuXHJcbiAgICAgIGlmICghIWV2ZW50QnVzICYmIGlzRXhjZXB0aW9uSGFuZGxlckV4aXN0KSB7XHJcbiAgICAgICAgaWYgKFJlc3BvbnNlSW5mb1V0aWwuaXNSZXBvcnRlZDQwMUVycm9yKGVycm9yKSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBldmVudEJ1cy5wb3N0KCdFeGNlcHRpb24nLCAnJywgJ29uRXhjZXB0aW9uJywgZXJyb3IsIGZvcm1BcHBDb250ZXh0KTtcclxuICAgICAgICBpZiAoaWdub3JlRXJyb3IpIHtcclxuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICog5omp5bGVaHR0cCBoZWFkZXJzXHJcbiAgICogQHBhcmFtIGhlYWRlcnMgaGVhZGVyc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRIZWFkZXJzKGhlYWRlcnM6IEh0dHBIZWFkZXJzLCBydW50aW1lQ29udGV4dD86IGFueSk6IE9ic2VydmFibGU8eyBbcHJvcE5hbWU6IHN0cmluZ106IGFueSB9PiB7XHJcbiAgICBjb25zdCAkZ2V0U2Vzc2lvbklkID0gdGhpcy5jb250ZXh0LnJlc3RTZXJ2aWNlLnNlc3Npb25TZXJ2aWNlLmdldEJlU2Vzc2lvbklkKCk7XHJcbiAgICByZXR1cm4gJGdldFNlc3Npb25JZC5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoc2Vzc2lvbklkID0+IHtcclxuICAgICAgICBoZWFkZXJzID0gdGhpcy5jb250ZXh0LnJlc3RTZXJ2aWNlLnNlc3Npb25TZXJ2aWNlLmV4dGVuZFJlcXVlc3RIZWFkZXJzKGhlYWRlcnMsIHJ1bnRpbWVDb250ZXh0KTtcclxuICAgICAgICByZXR1cm4gb2YoaGVhZGVycyk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmianlsZXor7fmsYLlj4LmlbBcclxuICAgKiBAcGFyYW0gcGFyYW1zIOWPguaVsFxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRVcmwodXJsOiBzdHJpbmcsIHBhcmFtczogeyBbcHJvcE5hbWU6IHN0cmluZ106IGFueSB9KTogc3RyaW5nIHtcclxuICAgIGlmICghcGFyYW1zKSB7XHJcbiAgICAgIHJldHVybiB1cmw7XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBwYXJhbXMpIHtcclxuICAgICAgaWYgKHBhcmFtcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBKU09OLnN0cmluZ2lmeShwYXJhbXNba2V5XSk7XHJcbiAgICAgICAgaWYgKHVybC5pbmRleE9mKCc/JykgPT09IC0xKSB7XHJcbiAgICAgICAgICB1cmwgPSBgJHt1cmx9PyR7a2V5fT0ke3ZhbHVlfWA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHVybCA9IGAke3VybH0mJHtrZXl9PSR7dmFsdWV9YDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB1cmw7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaJqeWxleivt+axguS9k1xyXG4gICAqIEBwYXJhbSBib2R5IGJvZHlcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kQm9keShib2R5KTogeyBbcHJvcE5hbWU6IHN0cmluZ106IGFueSB9IHtcclxuICAgIGlmICghYm9keSB8fCB0eXBlb2YgYm9keSAhPT0gJ29iamVjdCcgfHwgT2JqZWN0LmtleXMoYm9keSkubGVuZ3RoIDwgMSkge1xyXG4gICAgICByZXR1cm4gYm9keTtcclxuICAgIH1cclxuICAgIE9iamVjdC5rZXlzKGJvZHkpLmZvckVhY2gobmFtZSA9PiB7XHJcbiAgICAgIGlmIChuYW1lID09PSAncmVxdWVzdEluZm8nKSB7XHJcbiAgICAgICAgYm9keVsncmVxdWVzdEluZm8nXSA9IHRoaXMuY29udGV4dC5yZXN0U2VydmljZS5idWlsZFJlcXVlc3RJbmZvKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8g5YW85a65SueJiOWQjuerr2JvZHnlj6rmnInkuIDkuKprZXnml7Zib2R55Y+q5LygdmFsdWXnmoTmg4XlhrVcclxuICAgIGlmIChPYmplY3Qua2V5cyhib2R5KS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgYm9keSA9IE9iamVjdC52YWx1ZXMoYm9keSlbMF07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYm9keTtcclxuICB9XHJcbiAgcHVibGljIHBhcnNlSGVhZGVycyhyZXNwb25zZTogYW55KSB7XHJcbiAgICBjb25zdCBzZXNzaW9uSWRLZXkgPSAnQkVGU2Vzc2lvbklEJztcclxuICAgIGlmIChyZXNwb25zZS5oZWFkZXJzICYmIHJlc3BvbnNlLmhlYWRlcnMuaGFzKHNlc3Npb25JZEtleSkpIHtcclxuICAgICAgdGhpcy5jb250ZXh0LnJlc3RTZXJ2aWNlLnNlc3Npb25TZXJ2aWNlLnNldEJlU2Vzc2lvbklkKHJlc3BvbnNlLmhlYWRlcnMuZ2V0KHNlc3Npb25JZEtleSkpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=

@@ -121,2 +121,34 @@ /**

/**
* 查询数据(带过滤条件)
* @param entityFilter 过滤、排序、分页信息
* @param requestInfo requestInfo
* @description 和extendQuery一致,仅将查询参数放到body中
*/
/**
* 查询数据(带过滤条件)
* \@description 和extendQuery一致,仅将查询参数放到body中
* @param {?} entityFilter 过滤、排序、分页信息
* @param {?} requestInfo requestInfo
* @return {?}
*/
BefProxy.prototype.filter = /**
* 查询数据(带过滤条件)
* \@description 和extendQuery一致,仅将查询参数放到body中
* @param {?} entityFilter 过滤、排序、分页信息
* @param {?} requestInfo requestInfo
* @return {?}
*/
function (entityFilter, requestInfo) {
/** @type {?} */
var url = this.baseUri + "/extension/filter";
/** @type {?} */
var body = { requestInfo: requestInfo };
if (entityFilter) {
body = { entityFilter: entityFilter, requestInfo: requestInfo };
}
/** @type {?} */
var options = this.addBodyToOptions({}, body);
return this.request(url, POST, null, options, false);
};
/**
* 检索数据

@@ -785,2 +817,2 @@ * @param id 单据内码

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvYmVmX3Byb3h5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUEyQixVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztJQUd2QyxHQUFHLEdBQUcsS0FBSzs7SUFDWCxNQUFNLEdBQUcsUUFBUTs7SUFDakIsR0FBRyxHQUFHLEtBQUs7O0lBQ1gsSUFBSSxHQUFHLE1BQU07O0lBQ2IsS0FBSyxHQUFHLE9BQU87Ozs7OztBQU9yQjtJQVFFLGtCQUFtQixVQUFzQixFQUFTLFVBQXNCO1FBQXJELGVBQVUsR0FBVixVQUFVLENBQVk7UUFBUyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRDs7O09BR0c7Ozs7OztJQUNJLDZCQUFVOzs7OztJQUFqQixVQUFrQixPQUFlO1FBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFDRDs7O09BR0c7Ozs7OztJQUNJLGlDQUFjOzs7OztJQUFyQixVQUFzQixX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Ozs7SUFBbkIsVUFBb0IsTUFBYztRQUNoQyxPQUFPLGFBQWEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNEOztPQUVHOzs7Ozs7O0lBQ0ssaUNBQWM7Ozs7OztJQUF0QixVQUF1QixPQUFZO1FBQ2pDLE9BQU8sZUFBZSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxlQUFlLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakcsQ0FBQztJQUNEOztPQUVHOzs7Ozs7O0lBQ0sscUNBQWtCOzs7Ozs7SUFBMUIsVUFBMkIsTUFBVztRQUNwQyxPQUFPLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JELENBQUM7O2dCQTNWRixVQUFVOzs7O2dCQW5CdUIsVUFBVTtnQkFHbkMsVUFBVTs7SUE0V25CLGVBQUM7Q0FBQSxBQTVWRCxJQTRWQztTQTNWWSxRQUFROzs7Ozs7SUFDbkIsK0JBQW9DOzs7Ozs7SUFJcEMsMkJBQTBCOzs7OztJQUMxQiwrQkFBaUM7O0lBQ3JCLDhCQUE2Qjs7SUFBRSw4QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBlbXB0eSwgdGhyb3dFcnJvciwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwLCBtYXAsIGNhdGNoRXJyb3IsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMsIEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IElQcm94eUV4dGVuZCwgUmVxdWVzdEluZm8sIFJlc3BvbnNlSW5mbywgQ2hhbmdlRGV0YWlsIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IEJlZkRhdGFQYXRoVXRpbCB9IGZyb20gJy4vYmVmX2RhdGFfcGF0aF91dGlsJztcclxuaW1wb3J0IHsgVXJpU2VydmljZSB9IGZyb20gJy4vdXJpX3NlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdHRwSGVhZGVyVXRpbCwgSHR0cFBhcmFtVXRpbCwgUmVxdWVzdEluZm9VdGlsLCBSZXNwb25zZUluZm9VdGlsIH0gZnJvbSAnLi91dGlscy9pbmRleCc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi9odHRwX3NlcnZpY2UnO1xyXG5cclxuXHJcbmNvbnN0IEdFVCA9ICdHRVQnO1xyXG5jb25zdCBERUxFVEUgPSAnREVMRVRFJztcclxuY29uc3QgUFVUID0gJ1BVVCc7XHJcbmNvbnN0IFBPU1QgPSAnUE9TVCc7XHJcbmNvbnN0IFBBVENIID0gJ1BBVENIJztcclxuXHJcbi8qKlxyXG4gKiBCZWbku6PnkIbnsbtcclxuICog5Luj55CG57G755qE6IGM6LSj5piv5aSE55CGaHR0cOivt+axgu+8jOWPkemAgeS4gOS4qmh0dHDor7fmsYLmiYDpnIDnmoTotYTmupDmnInvvJp1cmnvvIxtZXRob2TvvIxoZWFkZXLjgIFib2R544CBcXVlcnkgcGFyYW1ldGVyXHJcbiAqIHVyaSDnlLF1cmlTZXJ2aWNlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBCZWZQcm94eSB7XHJcbiAgcHJvdGVjdGVkIHByb3h5RXh0ZW5kOiBJUHJveHlFeHRlbmQ7XHJcbiAgLyoqXHJcbiAgICogcmVzdGZ1bOWfuui3r+W+hFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBiYXNlVXJpOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFNlcnZpY2U7XHJcbiAgY29uc3RydWN0b3IocHVibGljIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIHB1YmxpYyB1cmlTZXJ2aWNlOiBVcmlTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmh0dHBTZXJ2aWNlID0gbmV3IEh0dHBTZXJ2aWNlKHRoaXMuaHR0cENsaWVudCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOiuvue9ruWfuui3r+W+hFxyXG4gICAqIEBwYXJhbSBiYXNlVXJpIOWfuui3r+W+hFxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRCYXNlVXJpKGJhc2VVcmk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5iYXNlVXJpID0gYmFzZVVyaTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog6K6+572u562W55Wl5qih5byPXHJcbiAgICogQHBhcmFtIHN0cmF0ZWd5IOetlueVpVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRQcm94eUV4dGVuZChwcm94eUV4dGVuZDogSVByb3h5RXh0ZW5kKSB7XHJcbiAgICB0aGlzLnByb3h5RXh0ZW5kID0gcHJveHlFeHRlbmQ7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOafpeivolxyXG4gICAqL1xyXG4gIHB1YmxpYyBxdWVyeShlbnRpdHlGaWx0ZXI/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IHVybCA9IHRoaXMuYmFzZVVyaTtcclxuICAgIGlmIChlbnRpdHlGaWx0ZXIpIHtcclxuICAgICAgY29uc3QgZW50aXR5RmlsdGVySnNvbiA9IEpTT04uc3RyaW5naWZ5KGVudGl0eUZpbHRlcik7XHJcbiAgICAgIHVybCA9IGAke3VybH0/ZW50aXR5RmlsdGVyPSR7ZW50aXR5RmlsdGVySnNvbn1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIEdFVCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmianlsZXmn6Xor6JcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kUXVlcnkoZW50aXR5RmlsdGVyOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBsZXQgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vcXVlcnlgO1xyXG4gICAgaWYgKGVudGl0eUZpbHRlcikge1xyXG4gICAgICBjb25zdCBlbnRpdHlGaWx0ZXJKc29uID0gSlNPTi5zdHJpbmdpZnkoZW50aXR5RmlsdGVyKTtcclxuICAgICAgdXJsID0gYCR7dXJsfT9lbnRpdHlGaWx0ZXI9JHtlbnRpdHlGaWx0ZXJKc29ufWA7XHJcbiAgICB9XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOajgOe0ouaVsOaNrlxyXG4gICAqIEBwYXJhbSBpZCDljZXmja7lhoXnoIFcclxuICAgKiBAcmV0dXJuIOaVsOaNruWvueixoVxyXG4gICAqL1xyXG4gIHB1YmxpYyByZXRyaWV2ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vJHtpZH1gO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIEdFVCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOWIhumhteafpeivouWQhOS7juihqOaVsOaNrlxyXG4gICAqIEBwYXJhbSBpZCDkuLvooahpZFxyXG4gICAqIEBwYXJhbSBvcHRpb25zIOmAiemhuVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXJ2aWNlUmV0cmlldmUoaWQ6IHN0cmluZywgcmV0cmlldmVQYXJhbTogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9zZXJ2aWNlL3JldHJpZXZlLyR7aWR9YDtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgIGJvZHk6IHsgcmV0cmlldmVQYXJhbSwgcmVxdWVzdEluZm8gfVxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDliIbpobXmn6Xor6Lku47ooagv5LuO5LuO6KGo5pWw5o2uXHJcbiAgICogQHBhcmFtIHBhcmFtcyDlj4LmlbBcclxuICAgKi9cclxuICBwdWJsaWMgcXVlcnlDaGlsZChwYXJhbXM6IGFueSkge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9zZXJ2aWNlL3F1ZXJ5Y2hpbGRgO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgYm9keTogcGFyYW1zIH07XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOajgOe0ouaVsOaNru+8iOaJqeWxle+8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRSZXRyaWV2ZShpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vcmV0cmlldmUvJHtpZH1gO1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOajgOe0ouaVsOaNrlxyXG4gICAqL1xyXG4gIHB1YmxpYyBlZGl0KGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvZWRpdC8ke2lkfWA7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yib5bu65LiA5p2h5pWw5o2uXHJcbiAgICovXHJcbiAgcHVibGljIGNyZWF0ZShkZWZhdWx0VmFsdWU/OiBhbnksIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgZGVmYXVsdFZhbHVlLFxyXG4gICAgICByZXF1ZXN0SW5mbzogcmVxdWVzdEluZm8sXHJcbiAgICB9O1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHRoaXMuYmFzZVVyaSwgUE9TVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDku47ooajmlrDlop5cclxuICAgKiBAcGF0aCDmlrDlop7ot6/lvoTvvIjku47ooajlvaLlpoLvvJovMS9lZHVz77yM5LuO5LuO6KGo5b2i5aaC77yaLzEvZWR1cy8xMS9ncmFkZXPvvIlcclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlQnlQYXRoKGZwYXRoOiBzdHJpbmcsIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKGZwYXRoKTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0ke3BhdGhVcmx9YDtcclxuXHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQT1NULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaPkOS6pOWPmOabtFxyXG4gICAqL1xyXG4gIHVwZGF0ZShjaGFuZ2VEZXRhaWw6IENoYW5nZURldGFpbCwgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICBjaGFuZ2VEZXRhaWwsXHJcbiAgICAgIHJlcXVlc3RJbmZvOiByZXF1ZXN0SW5mbyxcclxuICAgIH07XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHRoaXMuYmFzZVVyaSwgUEFUQ0gsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5omn6KGM5L+d5a2YXHJcbiAgICovXHJcbiAgcHVibGljIHNhdmUocmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodGhpcy5iYXNlVXJpLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6ZmkXHJcbiAgICovXHJcbiAgcHVibGljIGRlbGV0ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vJHtpZH1gO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIERFTEVURSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaTlubbkv53lrZhcclxuICAgKi9cclxuICBwdWJsaWMgZGVsZXRlQW5kU2F2ZShpZDogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9zZXJ2aWNlL2RlbGV0ZS8ke2lkfWA7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6Zmk77yI5omp5bGV77yJXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZERlbGV0ZShpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vZGVsZXRlLyR7aWR9YDtcclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaTlkI7ku6NcclxuICAgKiBAcGFyYW0gZnBhdGgg54i26Lev5b6E77yI5LuO6KGo5b2i5aaC77yaLzEvZWR1c++8jOS7juS7juihqOW9ouWmgu+8mi8xL2VkdXMvMTEvZ3JhZGVz77yJXHJcbiAgICovXHJcbiAgcHVibGljIGRlbGV0QnlQYXRoKGZwYXRoOiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKGZwYXRoKTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0ke3BhdGhVcmx9LyR7aWR9YDtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBERUxFVEUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6Zmk5ZCO5Luj77yI5omp5bGV77yJXHJcbiAgICogQHBhcmFtIGZwYXRoIOeItui3r+W+hO+8iOS7juihqOW9ouWmgu+8mi8xL2VkdXPvvIzku47ku47ooajlvaLlpoLvvJovMS9lZHVzLzExL2dyYWRlc++8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmREZWxldEJ5UGF0aChmcGF0aDogc3RyaW5nLCBpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKGZwYXRoKTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uJHtwYXRoVXJsfS8ke2lkfWA7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmibnph4/liKDpmaRcclxuICAgKiBAcGFyYW0gaWRzIOW+heWIoOmZpOeahGlk5pWw57uEXHJcbiAgICovXHJcbiAgcHVibGljIGJhdGNoRGVsZXRlKGlkczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcGFyYW1zID0ge1xyXG4gICAgICBpZHM6IGlkcy5qb2luKCcsJylcclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHRoaXMuYmFzZVVyaSwgREVMRVRFLCBwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5om56YeP5Yig6Zmk77yI5omp5bGV77yJXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZEJhdGNoRGVsZXRlKGlkczogc3RyaW5nW10sIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9iYXRjaGRlbGV0ZWA7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIGlkczogaWRzLmpvaW4oJywnKVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIHBhcmFtcywgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICog5Y+W5raIXHJcbiAgICovXHJcbiAgcHVibGljIGNhbmNlbChjb250ZXh0PzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vc2VydmljZS9jYW5jZWxgO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBPU1QsIG51bGwsIG51bGwsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGNvbnRleHQpO1xyXG4gIH1cclxuXHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICBwdWJsaWMgcmVxdWVzdChcclxuICAgIHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgcGFyYW1zPzogYW55LCBvcHRpb25zPzogYW55LFxyXG4gICAgc2VsZkhhbmRFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUVycm9yPzogYm9vbGVhbiwgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW4sIHJ1bnRpbWVDb250ZXh0PzogYW55XHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+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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IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZW1wdHksIHRocm93RXJyb3IsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCwgbWFwLCBjYXRjaEVycm9yLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zLCBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJUHJveHlFeHRlbmQsIFJlcXVlc3RJbmZvLCBSZXNwb25zZUluZm8sIENoYW5nZURldGFpbCB9IGZyb20gJy4vdHlwZXMnO1xyXG5pbXBvcnQgeyBCZWZEYXRhUGF0aFV0aWwgfSBmcm9tICcuL2JlZl9kYXRhX3BhdGhfdXRpbCc7XHJcbmltcG9ydCB7IFVyaVNlcnZpY2UgfSBmcm9tICcuL3VyaV9zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cEhlYWRlclV0aWwsIEh0dHBQYXJhbVV0aWwsIFJlcXVlc3RJbmZvVXRpbCwgUmVzcG9uc2VJbmZvVXRpbCB9IGZyb20gJy4vdXRpbHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4vaHR0cF9zZXJ2aWNlJztcclxuXHJcblxyXG5jb25zdCBHRVQgPSAnR0VUJztcclxuY29uc3QgREVMRVRFID0gJ0RFTEVURSc7XHJcbmNvbnN0IFBVVCA9ICdQVVQnO1xyXG5jb25zdCBQT1NUID0gJ1BPU1QnO1xyXG5jb25zdCBQQVRDSCA9ICdQQVRDSCc7XHJcblxyXG4vKipcclxuICogQmVm5Luj55CG57G7XHJcbiAqIOS7o+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/liKDpmaRcclxuICAgKiBAcGFyYW0gaWRzIOW+heWIoOmZpOeahGlk5pWw57uEXHJcbiAgICovXHJcbiAgcHVibGljIGJhdGNoRGVsZXRlKGlkczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcGFyYW1zID0ge1xyXG4gICAgICBpZHM6IGlkcy5qb2luKCcsJylcclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHRoaXMuYmFzZVVyaSwgREVMRVRFLCBwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5om56YeP5Yig6Zmk77yI5omp5bGV77yJXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZEJhdGNoRGVsZXRlKGlkczogc3RyaW5nW10sIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9iYXRjaGRlbGV0ZWA7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIGlkczogaWRzLmpvaW4oJywnKVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIHBhcmFtcywgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICog5Y+W5raIXHJcbiAgICovXHJcbiAgcHVibGljIGNhbmNlbChjb250ZXh0PzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vc2VydmljZS9jYW5jZWxgO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBPU1QsIG51bGwsIG51bGwsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGNvbnRleHQpO1xyXG4gIH1cclxuXHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICBwdWJsaWMgcmVxdWVzdChcclxuICAgIHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgcGFyYW1zPzogYW55LCBvcHRpb25zPzogYW55LFxyXG4gICAgc2VsZkhhbmRFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUVycm9yPzogYm9vbGVhbiwgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW4sIHJ1bnRpbWVDb250ZXh0PzogYW55XHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xyXG5cclxuICAgIC8vIOaYr+WQpuiHquihjOWkhOeQhumUmeivr1xyXG4gICAgaWYgKHR5cGVvZiAoc2VsZkhhbmRFcnJvcikgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAoc2VsZkhhbmRFcnJvcikgIT09ICdib29sZWFuJykge1xyXG4gICAgICBzZWxmSGFuZEVycm9yID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5piv5ZCm5b+955Wl5byC5bi457un57ut5omn6KGMXHJcbiAgICBpZiAodHlwZW9mIChpZ25vcmVFcnJvcikgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAoaWdub3JlRXJyb3IpICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgaWdub3JlRXJyb3IgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBwYXJhbXNcclxuICAgIGlmIChwYXJhbXMpIHtcclxuICAgICAgLy8gY29uc3QgaHR0cFBhcmFtcyA9IHRoaXMuYnVpbGRQYXJhbXMocGFyYW1zKTtcclxuICAgICAgb3B0aW9ucy5wYXJhbXMgPSBwYXJhbXM7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5aSE55CGaGVhZGVyc1xyXG4gICAgb3B0aW9ucy5oZWFkZXJzID0gSHR0cEhlYWRlclV0aWwuY29udmVydFRvSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpO1xyXG4gICAgLy8gMeOAgeWIpOaWreaYr+WQpuW4pnJlcXVlc3RJbmZv77yI5LiN5Yy65YiG6aaW5a2X5q+N5aSn5bCP5YaZ77yJO1xyXG4gICAgLy8gMuOAgeWmguaenOS8oOmAkueahOaYr1JlcXVlc3RJbmZv77yM5YiZ6L2s5o2i5Li6cmVxdWVzdEluZm/vvJtcclxuICAgIGNvbnN0IGhhc1JlcXVlc3RJbmZvID0gdGhpcy5oYXNSZXF1ZXN0SW5mbyhvcHRpb25zKTtcclxuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuYm9keSAmJiBvcHRpb25zLmJvZHkuaGFzT3duUHJvcGVydHkoJ1JlcXVlc3RJbmZvJykpIHtcclxuICAgICAgb3B0aW9ucy5ib2R5LnJlcXVlc3RJbmZvID0gb3B0aW9ucy5ib2R5LlJlcXVlc3RJbmZvO1xyXG4gICAgICBkZWxldGUgb3B0aW9ucy5ib2R5LlJlcXVlc3RJbmZvO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMucHJveHlFeHRlbmQuZXh0ZW5kSGVhZGVycyhvcHRpb25zLmhlYWRlcnMsIHJ1bnRpbWVDb250ZXh0KS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoaGVhZGVycyA9PiB7XHJcbiAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gSHR0cEhlYWRlclV0aWwudG9Kc29uKGhlYWRlcnMpO1xyXG4gICAgICAgIG9wdGlvbnMub2JzZXJ2ZSA9ICdyZXNwb25zZSc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UucmVxdWVzdChtZXRob2QsIHVybCwgb3B0aW9ucyk7XHJcbiAgICAgIH0pLFxyXG4gICAgICB0YXAoKHJlc3BvbnNlOiBhbnkpID0+IHRoaXMucHJveHlFeHRlbmQucGFyc2VIZWFkZXJzKHJlc3BvbnNlKSksXHJcbiAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHJlc3VsdC5ib2R5KSxcclxuICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChoYXNSZXF1ZXN0SW5mbykge1xyXG4gICAgICAgICAgdGhpcy5wcm94eUV4dGVuZC5vblJlc3BvbnNlKHJlc3VsdCwgaWdub3JlQ2hhbmdlcyk7XHJcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgLy8gYm9keemHjOayoeaciXJlcXVlc3RJbmZv55qE5oOF5Ya177yM5qih5ouf6ICB55qE5aSE55CG5pa55byP77yI5LiN5riF55CG5Y+Y5pu044CB5bCGcmV0dXJuVmFsdWXop6PmnpDlh7rmnaXvvIlcclxuICAgICAgICAgIHJldHVybiB0aGlzLnVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3h5RXh0ZW5kLm9uRXJyb3IoZXJyb3IsIHNlbGZIYW5kRXJyb3IsIGlnbm9yZUVycm9yKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDosIPnlKhodHRwY2xpZW505Y+W5pWwXHJcbiAgICogQHBhcmFtIHVybCB1cmxcclxuICAgKiBAcGFyYW0gbWV0aG9kIG1ldGhvZHNcclxuICAgKiBAcGFyYW0gb3B0aW9ucyBvcHRpb25zXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGludm9rZSh1cmw6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcsIG9wdGlvbnM6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBpZiAob3B0aW9ucy5wYXJhbXMpIHtcclxuICAgICAgdXJsID0gdGhpcy5wcm94eUV4dGVuZC5leHRlbmRVcmwodXJsLCBvcHRpb25zLnBhcmFtcyk7XHJcbiAgICAgIG9wdGlvbnMucGFyYW1zID0gbnVsbDtcclxuICAgIH1cclxuICAgIGlmIChvcHRpb25zLmJvZHkpIHtcclxuICAgICAgb3B0aW9ucy5ib2R5ID0gdGhpcy5wcm94eUV4dGVuZC5leHRlbmRCb2R5KG9wdGlvbnMuYm9keSk7XHJcbiAgICB9XHJcbiAgICBvcHRpb25zLmhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC5jb252ZXJ0VG9IZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XHJcbiAgICBjb25zdCBoZWFkZXJzJCA9IHRoaXMucHJveHlFeHRlbmQuZXh0ZW5kSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpO1xyXG4gICAgcmV0dXJuIGhlYWRlcnMkLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcChoZWFkZXJzID0+IHtcclxuICAgICAgICBvcHRpb25zLmhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC50b0pzb24oaGVhZGVycyk7XHJcbiAgICAgICAgb3B0aW9ucy5vYnNlcnZlID0gJ3Jlc3BvbnNlJztcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5yZXF1ZXN0KG1ldGhvZCwgdXJsLCBvcHRpb25zKVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIHRhcCgocmVzcG9uc2U6IGFueSkgPT4gdGhpcy5wcm94eUV4dGVuZC5wYXJzZUhlYWRlcnMocmVzcG9uc2UpKSxcclxuICAgICAgICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0LmJvZHkpLFxyXG4gICAgICAgICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiB0aGlzLnByb3h5RXh0ZW5kLm9uUmVzcG9uc2UocmVzdWx0KSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4gdGhpcy5wcm94eUV4dGVuZC5vbkVycm9yKGVycm9yLCBmYWxzZSwgZmFsc2UpKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlkJFIdHRwT3B0aW9uc+WvueixoeS4rea3u+WKoGJvZHlcclxuICAgKiBAcGFyYW0gb3B0aW9ucyDljp/mnaXnmoRvcHRpb25zXHJcbiAgICogQHBhcmFtIGJvZHkgYm9keeWGheWuuVxyXG4gICAqL1xyXG4gIHByaXZhdGUgYWRkQm9keVRvT3B0aW9ucyhvcHRpb25zOiBhbnksIGJvZHk6IGFueSkge1xyXG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XHJcbiAgICBjb25zdCBtZXJnZWRPcHRpb25zID0gT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7IGJvZHkgfSk7XHJcbiAgICByZXR1cm4gbWVyZ2VkT3B0aW9ucztcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5p6E6YCgSHR0cFBhcmFtc+WvueixoVxyXG4gICAqIEBwYXJhbSBwYXJhbXMg6K+35rGC5Y+C5pWwXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBidWlsZFBhcmFtcyhwYXJhbXM6IG9iamVjdCk6IEh0dHBQYXJhbXMge1xyXG4gICAgcmV0dXJuIEh0dHBQYXJhbVV0aWwuYnVpbGRQYXJhbXMocGFyYW1zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5piv5ZCm5bim5pyJUmVxdWVzdEluZm9cclxuICAgKi9cclxuICBwcml2YXRlIGhhc1JlcXVlc3RJbmZvKG9wdGlvbnM6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIFJlcXVlc3RJbmZvVXRpbC5oYXNSZXF1ZXN0SW5mbyhvcHRpb25zKSB8fCBSZXF1ZXN0SW5mb1V0aWwuaGFzUmVxdWVzdEluZm9XaXRoUihvcHRpb25zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5aSE55CG6L+U5Zue5YC877yM5YW85a656ICB54mI5pysXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1bldyYXBSZXNwb25zZUluZm8ocmVzdWx0OiBhbnkpIHtcclxuICAgIHJldHVybiBSZXNwb25zZUluZm9VdGlsLnVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQpO1xyXG4gIH1cclxufVxyXG4iXX0=

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

import { HttpClient } from '@angular/common/http';
import { empty, throwError, of } from 'rxjs';
import { throwError, of, EMPTY } from 'rxjs';
import { switchMap, map, catchError, tap } from 'rxjs/operators';

@@ -702,2 +702,5 @@ import { EventBus } from '@farris/devkit';

if (!!this.eventBus && isExceptionHandlerExist) {
if (ResponseInfoUtil.isReported401Error(error)) {
return throwError(error);
}
this.eventBus.post('Exception', '', 'onException', error, formAppContext);

@@ -708,3 +711,3 @@ if (ignoreError) {

else {
return empty();
return EMPTY;
}

@@ -917,2 +920,2 @@ }

export { BefRestService };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Jlc3Rfc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2JlZl9yZXN0X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBT0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUEyQixNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBYyxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0lBRXZDLEdBQUcsR0FBRyxLQUFLOztJQUNYLE1BQU0sR0FBRyxRQUFROztJQUNqQixHQUFHLEdBQUcsS0FBSzs7SUFDWCxJQUFJLEdBQUcsTUFBTTs7SUFDYixLQUFLLEdBQUcsT0FBTzs7Ozs7QUFNckI7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QUEsQUE1YUQsSUE0YUM7Ozs7OztJQXphRyxvQ0FBMEM7Ozs7OztJQUsxQyxvQ0FBK0I7Ozs7O0lBQy9CLHFDQUFpQzs7Ozs7SUFLakMsd0NBQXlDOzs7OztJQUt6QyxpQ0FBdUI7Ozs7O0lBS3ZCLGtDQUEwQjs7QUFzWjlCLE9BQU8sRUFBRSxjQUFjLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBBdXRob3I6IFdpdHRcclxuICogQERhdGU6IDIwMTktMDItMjMgMTM6NTc6NDdcclxuICogQExhc3QgTW9kaWZpZWQgYnk6IGFhbGl6endlbGxcclxuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAxOS0wOS0yNCAxNDoxMDo0MFxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGVtcHR5LCB0aHJvd0Vycm9yLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAsIG1hcCwgY2F0Y2hFcnJvciwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBFbnRpdHksIEV2ZW50QnVzIH0gZnJvbSAnQGZhcnJpcy9kZXZraXQnO1xyXG5pbXBvcnQgeyBIdHRwSGVhZGVyVXRpbCwgSHR0cFBhcmFtVXRpbCwgUmVxdWVzdEluZm9VdGlsLCBSZXNwb25zZUluZm9VdGlsIH0gZnJvbSAnLi91dGlscy9pbmRleCc7XHJcbmltcG9ydCB7IEJlZlJlcG9zaXRvcnkgfSBmcm9tICcuL2JlZl9yZXBvc2l0b3J5JztcclxuaW1wb3J0IHsgRnJhbWV3b3JrU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL2ZyYW1ld29ya19zZXNzaW9uX3NlcnZpY2UnO1xyXG5pbXBvcnQgeyBCZWZTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vc2Vzc2lvbi9pbmRleCc7XHJcbmltcG9ydCB7IENoYW5nZURldGFpbCwgUmVxdWVzdEluZm8sIFJlc3BvbnNlSW5mbyB9IGZyb20gJy4vdHlwZXMnO1xyXG5pbXBvcnQgeyBCZWZQcm94eSB9IGZyb20gJy4vYmVmX3Byb3h5JztcclxuaW1wb3J0IHsgVXJpU2VydmljZSB9IGZyb20gJy4vdXJpX3NlcnZpY2UnO1xyXG5pbXBvcnQgeyBCZWZQcm94eUV4dGVuZCB9IGZyb20gJy4vYmVmX3Byb3h5X2V4dGVuZCc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi9odHRwX3NlcnZpY2UnO1xyXG5cclxuY29uc3QgR0VUID0gJ0dFVCc7XHJcbmNvbnN0IERFTEVURSA9ICdERUxFVEUnO1xyXG5jb25zdCBQVVQgPSAnUFVUJztcclxuY29uc3QgUE9TVCA9ICdQT1NUJztcclxuY29uc3QgUEFUQ0ggPSAnUEFUQ0gnO1xyXG5cclxuLyoqXHJcbiAqIEJFRuWPluaVsOacjeWKoVxyXG4gKiDor6XmnI3liqHnlLFCZWZSZXBvc2l0b3J55a6e5L6L5YyW77yM5LiN5YGa5rOo5YWl77yM5q+P5LiqQmVmUmVwb3NpdG9yeeaLpeacieS4gOS4qkJlZlJlc3RTZXJ2aWNl5a6e5L6L44CCXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmNsYXNzIEJlZlJlc3RTZXJ2aWNlIHtcclxuXHJcbiAgICBwcml2YXRlIHJlcG9zaXRvcnk6IEJlZlJlcG9zaXRvcnk8RW50aXR5PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGh0dHBDbGllbnRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50O1xyXG4gICAgcHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFNlcnZpY2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDkvJror53mnI3liqFcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNlc3Npb25TZXJ2aWNlOiBCZWZTZXNzaW9uU2VydmljZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIOaOpeWPo+aguVVyaVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYmFzZVVyaTogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICog5LqL5Lu25oC757q/XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBldmVudEJ1czogRXZlbnRCdXM7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmnoTpgKDlh73mlbBcclxuICAgICAqIEBwYXJhbSBodHRwQ2xpZW50IGh0dHDmnI3liqFcclxuICAgICAqIEBwYXJhbSBzZXJ2ZXJVcmkg5bqU55So5pyN5Yqh5Zmo5Zyw5Z2AXHJcbiAgICAgKiBAcGFyYW0gYmVVcmkgQkUgQVBJ5Zyw5Z2AXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIGJhc2VVcmk6IHN0cmluZyxcclxuICAgICAgICBmcm1TZXNzaW9uU2VydmljZTogRnJhbWV3b3JrU2Vzc2lvblNlcnZpY2UsXHJcbiAgICAgICAgcmVwb3NpdG9yeTogQmVmUmVwb3NpdG9yeTxFbnRpdHk+LFxyXG4gICAgICAgIGV2ZW50QnVzPzogRXZlbnRCdXNcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuaHR0cENsaWVudCA9IGh0dHBDbGllbnQ7XHJcbiAgICAgICAgdGhpcy5odHRwU2VydmljZSA9IG5ldyBIdHRwU2VydmljZSh0aGlzLmh0dHBDbGllbnQpO1xyXG4gICAgICAgIHRoaXMuYmFzZVVyaSA9IGJhc2VVcmk7XHJcbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSByZXBvc2l0b3J5LmdldEluamVjdG9yKCk7XHJcbiAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZSA9IG5ldyBCZWZTZXNzaW9uU2VydmljZShodHRwQ2xpZW50LCBiYXNlVXJpLCBmcm1TZXNzaW9uU2VydmljZSwgaW5qZWN0b3IpO1xyXG4gICAgICAgIHRoaXMucmVwb3NpdG9yeSA9IHJlcG9zaXRvcnk7XHJcbiAgICAgICAgdGhpcy5ldmVudEJ1cyA9IGV2ZW50QnVzO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyAjcmVnaW9uIOS7o+eQhuebuOWFs1xyXG5cclxuICAgIC8qKlxyXG4gICAgICog6I635Y+WQmVm5Luj55CGXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgcHJveHkoKTogQmVmUHJveHkge1xyXG4gICAgICAgIGlmICghIXRoaXMucmVwb3NpdG9yeS5wcm94eSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXBvc2l0b3J5LnByb3h5O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUJlZlByb3h5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5Yib5bu6QmVm5Luj55CGXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgY3JlYXRlQmVmUHJveHkoKSB7XHJcbiAgICAgICAgY29uc3Qgc2VydmVyVXJpID0gdGhpcy5yZXBvc2l0b3J5LnNlcnZlclVyaTtcclxuICAgICAgICBjb25zdCB1cmlTZXJ2aWNlID0gbmV3IFVyaVNlcnZpY2Uoc2VydmVyVXJpKTtcclxuICAgICAgICBjb25zdCBkZWZhdWx0UHJveHkgPSBuZXcgQmVmUHJveHkodGhpcy5odHRwQ2xpZW50LCB1cmlTZXJ2aWNlKTtcclxuICAgICAgICBkZWZhdWx0UHJveHkuc2V0QmFzZVVyaSh0aGlzLmJhc2VVcmkpO1xyXG4gICAgICAgIGNvbnN0IGV4dGVuZCA9IG5ldyBCZWZQcm94eUV4dGVuZCh0aGlzLnJlcG9zaXRvcnkpO1xyXG4gICAgICAgIGRlZmF1bHRQcm94eS5zZXRQcm94eUV4dGVuZChleHRlbmQpO1xyXG4gICAgICAgIHJldHVybiBkZWZhdWx0UHJveHk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgICAvLyAjcmVnaW9uIOWfuuacrENSVUTmlrnms5VcclxuXHJcbiAgICAvKipcclxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgICAqIEBkZXByZWNhdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBxdWVyeShlbnRpdHlGaWx0ZXI/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3h5LnF1ZXJ5KGVudGl0eUZpbHRlcik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICAgKiBAZGVwcmVjYXRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZXh0ZW5kUXVlcnkoZW50aXR5RmlsdGVyOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kUXVlcnkoZW50aXR5RmlsdGVyLCByZXF1ZXN0SW5mbyk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIOWIhumhteafpeivouWQhOS7juihqOaVsOaNrlxyXG4gICAgICogQHBhcmFtIGlkIOS4u+ihqGlkXHJcbiAgICAgKiBAcGFyYW0gcmV0cmlldmVQYXJhbSDlj4LmlbBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNlcnZpY2VSZXRyaWV2ZShpZDogc3RyaW5nLCByZXRyaWV2ZVBhcmFtOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuc2VydmljZVJldHJpZXZlKGlkLCByZXRyaWV2ZVBhcmFtLHJlcXVlc3RJbmZvKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICog5YiG6aG15p+l6K+i5LuO6KGoL+S7juS7juihqOaVsOaNrlxyXG4gICAgICogQHBhcmFtIHBhcmFtcyDmn6Xor6Llj4LmlbBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHF1ZXJ5Q2hpbGQocGFyYW1zOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5xdWVyeUNoaWxkKHBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgICAqIEBkZXByZWNhdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZXRyaWV2ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5yZXRyaWV2ZShpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICAgKiBAZGVwcmVjYXRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZXh0ZW5kUmV0cmlldmUoaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5leHRlbmRSZXRyaWV2ZShpZCwgcmVxdWVzdEluZm8pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAgICogQGRlcHJlY2F0ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNyZWF0ZShkZWZhdWx0VmFsdWU/OiBhbnksIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3h5LmNyZWF0ZShkZWZhdWx0VmFsdWUsIHJlcXVlc3RJbmZvKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgICAqIEBkZXByZWNhdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjcmVhdGVCeVBhdGgoZnBhdGg6IHN0cmluZywgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuY3JlYXRlQnlQYXRoKGZwYXRoLCByZXF1ZXN0SW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICAgKiBAZGVwcmVjYXRlZFxyXG4gICAgICovXHJcbiAgICB1cGRhdGUoY2hhbmdlRGV0YWlsOiBDaGFuZ2VEZXRhaWwsIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3h5LnVwZGF0ZShjaGFuZ2VEZXRhaWwsIHJlcXVlc3RJbmZvKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgICAqIEBkZXByZWNhdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzYXZlKHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3h5LnNhdmUocmVxdWVzdEluZm8pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAgICogQGRlcHJlY2F0ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRlbGV0ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5kZWxldGUoaWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAgICogQGRlcHJlY2F0ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGV4dGVuZERlbGV0ZShpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3h5LmV4dGVuZERlbGV0ZShpZCwgcmVxdWVzdEluZm8pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAgICogQGRlcHJlY2F0ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRlbGV0QnlQYXRoKGZwYXRoOiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3h5LmRlbGV0QnlQYXRoKGZwYXRoLCBpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICAgKiBAZGVwcmVjYXRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZXh0ZW5kRGVsZXRCeVBhdGgoZnBhdGg6IHN0cmluZywgaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5leHRlbmREZWxldEJ5UGF0aChmcGF0aCwgaWQsIHJlcXVlc3RJbmZvKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgICAqIEBkZXByZWNhdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBiYXRjaERlbGV0ZShpZHM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5iYXRjaERlbGV0ZShpZHMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAgICogQGRlcHJlY2F0ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGV4dGVuZEJhdGNoRGVsZXRlKGlkczogc3RyaW5nW10sIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kQmF0Y2hEZWxldGUoaWRzLCByZXF1ZXN0SW5mbyk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAgICogQGRlcHJlY2F0ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNhbmNlbChvcHRpb25zPzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5jYW5jZWwob3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgICAvLyAjcmVnaW9uIHJlcXVlc3Tmlrnms5VcclxuXHJcbiAgICAvKipcclxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgICAqIEBkZXByZWNhdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZXF1ZXN0KFxyXG4gICAgICAgIHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgcGFyYW1zPzogYW55LCBvcHRpb25zPzogYW55LFxyXG4gICAgICAgIHNlbGZIYW5kRXJyb3I/OiBib29sZWFuLCBpZ25vcmVFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuXHJcbiAgICApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlubmVyUmVxdWVzdCh1cmwsIG1ldGhvZCwgcGFyYW1zLCBvcHRpb25zLCBzZWxmSGFuZEVycm9yLCBpZ25vcmVFcnJvciwgaWdub3JlQ2hhbmdlcywgZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgLy8gdHNsaW50OmRpc2FibGU6IGFsaWduXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDosIPnlKjlkI7nq6/mlrnms5VcclxuICAgICAqIEBwYXJhbSB1cmwgdXJsXHJcbiAgICAgKiBAcGFyYW0gbWV0aG9kIG1ldGhvZFxyXG4gICAgICogQHBhcmFtIHBhcmFtcyBwYXJhbXNcclxuICAgICAqIEBwYXJhbSBvcHRpb25zIG9wdGlvbnNcclxuICAgICAqIEBwYXJhbSBzZWxmSGFuZEVycm9yIOiHquW3seWkhOeQhuW8guW4uFxyXG4gICAgICogQHBhcmFtIGlnbm9yZUVycm9yIOW/veeVpemUmeivr1xyXG4gICAgICogQHBhcmFtIGlnbm9yZUNoYW5nZXMg5b+955Wl5Y+Y5pu0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpbnZva2UodXJsOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nLCBwYXJhbXM/OiBhbnksIG9wdGlvbnM/OiBhbnksXHJcbiAgICAgICAgc2VsZkhhbmRFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUVycm9yPzogYm9vbGVhbiwgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW4pIHtcclxuICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmJvZHkgJiYgb3B0aW9ucy5ib2R5LlJlcXVlc3RJbmZvKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcign6K+35L2/55SocmVxdWVzdEluZm/mj5DkuqTlj5jmm7QnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5uZXJSZXF1ZXN0KHVybCwgbWV0aG9kLCBwYXJhbXMsIG9wdGlvbnMsIHNlbGZIYW5kRXJyb3IsIGlnbm9yZUVycm9yLCBpZ25vcmVDaGFuZ2VzLCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWGhemDqOeahHJlcXVlc3Tmlrnms5VcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpbm5lclJlcXVlc3QoXHJcbiAgICAgICAgdXJsOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nLCBwYXJhbXM/OiBhbnksIG9wdGlvbnM/OiBhbnksXHJcbiAgICAgICAgc2VsZkhhbmRFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUVycm9yPzogYm9vbGVhbiwgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW4sXHJcbiAgICAgICAgdXNlQ29ycmVjdFJlcXVlc3RJbmZvQ2hlY2tNZXRob2Q/OiBib29sZWFuXHJcbiAgICApIHtcclxuICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcclxuICAgICAgICBjb25zdCBiZWZTZXNzaW9uSWRLZXkgPSAnQkVGU2Vzc2lvbklEJztcclxuXHJcbiAgICAgICAgLy8g5piv5ZCm6Ieq5bex5aSE55CG5byC5bi4XHJcbiAgICAgICAgaWYgKHR5cGVvZiAoc2VsZkhhbmRFcnJvcikgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAoc2VsZkhhbmRFcnJvcikgIT09ICdib29sZWFuJykge1xyXG4gICAgICAgICAgICBzZWxmSGFuZEVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDmmK/lkKblv73nlaXlvILluLjnu6fnu63miafooYxcclxuICAgICAgICBpZiAodHlwZW9mIChpZ25vcmVFcnJvcikgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAoaWdub3JlRXJyb3IpICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAgICAgaWdub3JlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIOmAieaLqeajgOafpVJlcXVlc3RJbmZv55qE5pa55rOVXHJcbiAgICAgICAgaWYgKHR5cGVvZiAodXNlQ29ycmVjdFJlcXVlc3RJbmZvQ2hlY2tNZXRob2QpID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgKHVzZUNvcnJlY3RSZXF1ZXN0SW5mb0NoZWNrTWV0aG9kKSAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgICAgIHVzZUNvcnJlY3RSZXF1ZXN0SW5mb0NoZWNrTWV0aG9kID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGNoZWNrUmVxdWVzdEluZm9NZXRob2QgPSB1c2VDb3JyZWN0UmVxdWVzdEluZm9DaGVja01ldGhvZCA/IHRoaXMuZXhpc3RSZXF1ZXN0SW5mbyA6IHRoaXMuaGFzUmVxdWVzdEluZm87XHJcblxyXG4gICAgICAgIC8vIHBhcmFtc1xyXG4gICAgICAgIGlmIChwYXJhbXMpIHtcclxuICAgICAgICAgICAgLy8gY29uc3QgaHR0cFBhcmFtcyA9IHRoaXMuYnVpbGRQYXJhbXMocGFyYW1zKTtcclxuICAgICAgICAgICAgb3B0aW9ucy5wYXJhbXMgPSBwYXJhbXM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDluKbmnIlyZXF1ZXN0SW5mb+eahOivt+axgu+8jOivt+axguaIkOWKn+WQjua4heepuuWPmOabtOmbhlxyXG4gICAgICAgIGNvbnN0IGhhc1JlcXVlc3RJbmZvID0gY2hlY2tSZXF1ZXN0SW5mb01ldGhvZChvcHRpb25zKTtcclxuICAgICAgICBsZXQgaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLmNvbnZlcnRUb0hlYWRlcnMob3B0aW9ucy5oZWFkZXJzKTtcclxuXHJcbiAgICAgICAgLy8g5Liy6IGUc2Vzc2lvbua1geWSjGh0dHDmtYFcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRCZVNlc3Npb25JZCgpLnBpcGUoXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoc2Vzc2lvbklkOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgIGhlYWRlcnMgPSB0aGlzLnNlc3Npb25TZXJ2aWNlLmV4dGVuZFJlcXVlc3RIZWFkZXJzKGhlYWRlcnMpO1xyXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gSHR0cEhlYWRlclV0aWwudG9Kc29uKGhlYWRlcnMpO1xyXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5vYnNlcnZlID0gJ3Jlc3BvbnNlJztcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnJlcXVlc3QobWV0aG9kLCB1cmwsIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgdGFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaGVhZGVycyAmJiByZXNwb25zZS5oZWFkZXJzLmhhcyhiZWZTZXNzaW9uSWRLZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5zZXRCZVNlc3Npb25JZChyZXNwb25zZS5oZWFkZXJzLmdldChiZWZTZXNzaW9uSWRLZXkpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuYm9keSksXHJcbiAgICAgICAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZVJlcG9uc2VJbmZvKHJlc3VsdCwgaGFzUmVxdWVzdEluZm8sIGlnbm9yZUNoYW5nZXMpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRXJyb3JzKGVycm9yLCBzZWxmSGFuZEVycm9yLCBpZ25vcmVFcnJvcik7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWkhOeQhui/lOWbnue7k+aenFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGFuZGxlUmVwb25zZUluZm8ocmVzdWx0OiBhbnksIGhhc1JlcXVlc3RJbmZvOiBib29sZWFuLCBpZ25vcmVDaGFuZ2VzOiBib29sZWFuKTogYW55IHtcclxuICAgICAgICBpZiAoaGFzUmVxdWVzdEluZm8pIHtcclxuICAgICAgICAgICAgLy8g5aaC5p6c5pyJ5bim5pyJUmVxdWVzdEluZm/vvIzliJnmjInmlrDnu5PmnoTlpITnkIZcclxuICAgICAgICAgICAgLy8gMeOAgeW6lOeUqOacjeWKoeWZqOerr+i/lOWbnueahOWPmOabtO+8m1xyXG4gICAgICAgICAgICAvLyAy44CB5riF56m65pys5Zyw5Y+Y5pu06ZuG77ybXHJcbiAgICAgICAgICAgIC8vIDPjgIHov5Tlm57mlrDnu5PmnoRcclxuICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQuaW5uZXJEYXRhQ2hhbmdlICYmIGlnbm9yZUNoYW5nZXMgIT09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVwb3NpdG9yeS5oYW5kbGVEYXRhQ2hhbmdlRGV0YWlscyhyZXN1bHQuaW5uZXJEYXRhQ2hhbmdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBpZiAoaWdub3JlQ2hhbmdlcyAhPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlcG9zaXRvcnkuY2xlYXJBbGxFbnRpdHlDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyDlpoLmnpzmnInmsqHmnIlSZXF1ZXN0SW5mb++8jOWImeaMieiAgeeahOaWueW8j+WkhOeQhlxyXG4gICAgICAgICAgICAvLyAx44CB5LiN5aSE55CG5pyN5Yqh5Zmo56uv6L+U5Zue55qE5Y+Y5pu077ya6Lef6ICB55qE6KGM5Li65LiA5qC377ybXHJcbiAgICAgICAgICAgIC8vIDLjgIHkuI3muIXnkIbmnKzlnLDlj5jmm7TvvJrlm6DkuLrlj5jmm7TmsqHmnInmj5DkuqTvvJtcclxuICAgICAgICAgICAgLy8gM+OAgei/lOWbnuiAgeeahOe7k+aehO+8muWFvOWuueiAgeeahOS7o+eggVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy51bldyYXBSZXNwb25zZUluZm8ocmVzdWx0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDplJnor6/lpITnkIZcclxuICAgICAqL1xyXG4gICAgcHVibGljIGhhbmRsZUVycm9ycyhlcnJvcjogYW55LCBzZWxmSGFuZEVycm9yOiBib29sZWFuLCBpZ25vcmVFcnJvcjogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgdGhpcy5jbGVhckxvYWRpbmcoKTtcclxuICAgICAgICBpZiAoISFzZWxmSGFuZEVycm9yKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBmb3JtQXBwQ29udGV4dCA9IHRoaXMucmVwb3NpdG9yeS5hcHBDb250ZXh0LmdldEZvcm1BcHBDb250ZXh0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGFwcGxpY2F0aW9uSWQgPSBmb3JtQXBwQ29udGV4dC5BcHBsaWNhdGlvbklkO1xyXG4gICAgICAgICAgICBjb25zdCBhcHBsaWNhdGlvbkNvbnRleHQ6IGFueSA9IHdpbmRvd1thcHBsaWNhdGlvbklkXSB8fCB7fTtcclxuICAgICAgICAgICAgY29uc3QgaXNFeGNlcHRpb25IYW5kbGVyRXhpc3QgPSAhIWFwcGxpY2F0aW9uQ29udGV4dC5pc0V4Y2VwdGlvbkhhbmRsZXJFeGlzdDtcclxuICAgICAgICAgICAgaWYgKCEhdGhpcy5ldmVudEJ1cyAmJiBpc0V4Y2VwdGlvbkhhbmRsZXJFeGlzdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ldmVudEJ1cy5wb3N0KCdFeGNlcHRpb24nLCAnJywgJ29uRXhjZXB0aW9uJywgZXJyb3IsIGZvcm1BcHBDb250ZXh0KTtcclxuICAgICAgICAgICAgICAgIGlmIChpZ25vcmVFcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyAjZW5kcmVnaW9uXHJcblxyXG5cclxuICAgIC8vICNyZWdpb24g5bel5YW35pa55rOVXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmuIXnqbpMb2FkaW5nXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgY2xlYXJMb2FkaW5nKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGlmTG9hZGluZ0V4aXN0cyA9IHdpbmRvd1snREVWS0lUX0xPQURJTkdfU0VSVklDRSddICYmXHJcbiAgICAgICAgICAgIHdpbmRvd1snREVWS0lUX0xPQURJTkdfU0VSVklDRSddIGluc3RhbmNlb2YgQXJyYXkgJiZcclxuICAgICAgICAgICAgd2luZG93WydERVZLSVRfTE9BRElOR19TRVJWSUNFJ10ubGVuZ3RoID4gMCB8fCBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKGlmTG9hZGluZ0V4aXN0cyA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgbG9hZGluZ1NlcnZpY2VzOiBhbnlbXSA9IHdpbmRvd1snREVWS0lUX0xPQURJTkdfU0VSVklDRSddO1xyXG4gICAgICAgIGZvciAoY29uc3Qgc2VydmljZSBvZiBsb2FkaW5nU2VydmljZXMpIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiAoc2VydmljZS5jbGVhckFsbCkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHNlcnZpY2UuY2xlYXJBbGwoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWkhOeQhui/lOWbnuWAvO+8jOWFvOWuueiAgeeJiOacrFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQ6IGFueSk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIFJlc3BvbnNlSW5mb1V0aWwudW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmmK/lkKbluKbmnIlSZXF1ZXN0SW5mb1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGhhc1JlcXVlc3RJbmZvKG9wdGlvbnM6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBSZXF1ZXN0SW5mb1V0aWwuaGFzUmVxdWVzdEluZm9XaXRoUihvcHRpb25zKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICog5piv5ZCm5bim5pyJcmVxdWVzdEluZm9cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBleGlzdFJlcXVlc3RJbmZvKG9wdGlvbnM6IGFueSkge1xyXG4gICAgICAgIHJldHVybiBSZXF1ZXN0SW5mb1V0aWwuaGFzUmVxdWVzdEluZm8ob3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmnoTpgKBIdHRwUGFyYW1z5a+56LGhXHJcbiAgICAgKiBAcGFyYW0gcGFyYW1zIOivt+axguWPguaVsFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGJ1aWxkUGFyYW1zKHBhcmFtczogYW55KTogSHR0cFBhcmFtcyB7XHJcbiAgICAgICAgcmV0dXJuIEh0dHBQYXJhbVV0aWwuYnVpbGRQYXJhbXMocGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOaehOmAoOW4plJlcXVlc3RJbmZv55qEQm9kee+8iOmAgueUqOS6juWkmuS4quWPguaVsOeahOaDheWGte+8jOWmguaenOWPquacieS4gOS4qlJlcXVlc3RJbmZv5Y+C5pWw77yMYm9keT1SZXF1ZXN0SW5mb++8iVxyXG4gICAgICogQGJvZHkg5pyq5pC65bimUmVxdWVzdEluZm/nmoRib2R577yM5qC85byP5b2i5aaCOiB7a2V5MTogdmFsdWUxLCBrZXkyOiB2YWx1ZTJ9XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBidWlsZEJvZHlXaXRoUmVxdWVzdEluZm8oYm9keTogYW55KTogYW55IHtcclxuICAgICAgICByZXR1cm4gUmVxdWVzdEluZm9VdGlsLmJ1aWxkQm9keVdpdGhSZXF1ZXN0SW5mbyhib2R5LCB0aGlzLnJlcG9zaXRvcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5p6E6YCgUmVxdWVzdEluZm9cclxuICAgICAqL1xyXG4gICAgcHVibGljIGJ1aWxkUmVxdWVzdEluZm8oKTogUmVxdWVzdEluZm8ge1xyXG4gICAgICAgIHJldHVybiBSZXF1ZXN0SW5mb1V0aWwuYnVpbGRSZXF1ZXN0SW5mbyh0aGlzLnJlcG9zaXRvcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb25cclxuXHJcbn1cclxuXHJcbmV4cG9ydCB7IEJlZlJlc3RTZXJ2aWNlIH07XHJcblxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Jlc3Rfc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2JlZl9yZXN0X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBT0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUEyQixNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBYyxVQUFVLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0lBRXZDLEdBQUcsR0FBRyxLQUFLOztJQUNYLE1BQU0sR0FBRyxRQUFROztJQUNqQixHQUFHLEdBQUcsS0FBSzs7SUFDWCxJQUFJLEdBQUcsTUFBTTs7SUFDYixLQUFLLEdBQUcsT0FBTzs7Ozs7QUFNckI7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N0QsQ0FBQzs7Z0JBM2FKLFVBQVU7Ozs7Z0JBeEJGLFVBQVU7O2dCQU1WLHVCQUF1QjtnQkFEdkIsYUFBYTtnQkFGTCxRQUFROztJQW9jekIscUJBQUM7Q0FBQSxBQS9hRCxJQSthQzs7Ozs7O0lBNWFHLG9DQUEwQzs7Ozs7O0lBSzFDLG9DQUErQjs7Ozs7SUFDL0IscUNBQWlDOzs7OztJQUtqQyx3Q0FBeUM7Ozs7O0lBS3pDLGlDQUF1Qjs7Ozs7SUFLdkIsa0NBQTBCOztBQXlaOUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQEF1dGhvcjogV2l0dFxyXG4gKiBARGF0ZTogMjAxOS0wMi0yMyAxMzo1Nzo0N1xyXG4gKiBATGFzdCBNb2RpZmllZCBieTogYWFsaXp6d2VsbFxyXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDE5LTA5LTI0IDE0OjEwOjQwXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciwgb2YsIEVNUFRZIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCwgbWFwLCBjYXRjaEVycm9yLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEVudGl0eSwgRXZlbnRCdXMgfSBmcm9tICdAZmFycmlzL2RldmtpdCc7XHJcbmltcG9ydCB7IEh0dHBIZWFkZXJVdGlsLCBIdHRwUGFyYW1VdGlsLCBSZXF1ZXN0SW5mb1V0aWwsIFJlc3BvbnNlSW5mb1V0aWwgfSBmcm9tICcuL3V0aWxzL2luZGV4JztcclxuaW1wb3J0IHsgQmVmUmVwb3NpdG9yeSB9IGZyb20gJy4vYmVmX3JlcG9zaXRvcnknO1xyXG5pbXBvcnQgeyBGcmFtZXdvcmtTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vZnJhbWV3b3JrX3Nlc3Npb25fc2VydmljZSc7XHJcbmltcG9ydCB7IEJlZlNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXNzaW9uL2luZGV4JztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0YWlsLCBSZXF1ZXN0SW5mbywgUmVzcG9uc2VJbmZvIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IEJlZlByb3h5IH0gZnJvbSAnLi9iZWZfcHJveHknO1xyXG5pbXBvcnQgeyBVcmlTZXJ2aWNlIH0gZnJvbSAnLi91cmlfc2VydmljZSc7XHJcbmltcG9ydCB7IEJlZlByb3h5RXh0ZW5kIH0gZnJvbSAnLi9iZWZfcHJveHlfZXh0ZW5kJztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuL2h0dHBfc2VydmljZSc7XHJcblxyXG5jb25zdCBHRVQgPSAnR0VUJztcclxuY29uc3QgREVMRVRFID0gJ0RFTEVURSc7XHJcbmNvbnN0IFBVVCA9ICdQVVQnO1xyXG5jb25zdCBQT1NUID0gJ1BPU1QnO1xyXG5jb25zdCBQQVRDSCA9ICdQQVRDSCc7XHJcblxyXG4vKipcclxuICogQkVG5Y+W5pWw5pyN5YqhXHJcbiAqIOivpeacjeWKoeeUsUJlZlJlcG9zaXRvcnnlrp7kvovljJbvvIzkuI3lgZrms6jlhaXvvIzmr4/kuKpCZWZSZXBvc2l0b3J55oul5pyJ5LiA5LiqQmVmUmVzdFNlcnZpY2Xlrp7kvovjgIJcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuY2xhc3MgQmVmUmVzdFNlcnZpY2Uge1xyXG5cclxuICAgIHByaXZhdGUgcmVwb3NpdG9yeTogQmVmUmVwb3NpdG9yeTxFbnRpdHk+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogaHR0cENsaWVudFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQ7XHJcbiAgICBwcml2YXRlIGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIOS8muivneacjeWKoVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2Vzc2lvblNlcnZpY2U6IEJlZlNlc3Npb25TZXJ2aWNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICog5o6l5Y+j5qC5VXJpXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBiYXNlVXJpOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDkuovku7bmgLvnur9cclxuICAgICAqL1xyXG4gICAgcHVibGljIGV2ZW50QnVzOiBFdmVudEJ1cztcclxuXHJcbiAgICAvKipcclxuICAgICAqIOaehOmAoOWHveaVsFxyXG4gICAgICogQHBhcmFtIGh0dHBDbGllbnQgaHR0cOacjeWKoVxyXG4gICAgICogQHBhcmFtIHNlcnZlclVyaSDlupTnlKjmnI3liqHlmajlnLDlnYBcclxuICAgICAqIEBwYXJhbSBiZVVyaSBCRSBBUEnlnLDlnYBcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgaHR0cENsaWVudDogSHR0cENsaWVudCwgYmFzZVVyaTogc3RyaW5nLFxyXG4gICAgICAgIGZybVNlc3Npb25TZXJ2aWNlOiBGcmFtZXdvcmtTZXNzaW9uU2VydmljZSxcclxuICAgICAgICByZXBvc2l0b3J5OiBCZWZSZXBvc2l0b3J5PEVudGl0eT4sXHJcbiAgICAgICAgZXZlbnRCdXM/OiBFdmVudEJ1c1xyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5odHRwQ2xpZW50ID0gaHR0cENsaWVudDtcclxuICAgICAgICB0aGlzLmh0dHBTZXJ2aWNlID0gbmV3IEh0dHBTZXJ2aWNlKHRoaXMuaHR0cENsaWVudCk7XHJcbiAgICAgICAgdGhpcy5iYXNlVXJpID0gYmFzZVVyaTtcclxuICAgICAgICBjb25zdCBpbmplY3RvciA9IHJlcG9zaXRvcnkuZ2V0SW5qZWN0b3IoKTtcclxuICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlID0gbmV3IEJlZlNlc3Npb25TZXJ2aWNlKGh0dHBDbGllbnQsIGJhc2VVcmksIGZybVNlc3Npb25TZXJ2aWNlLCBpbmplY3Rvcik7XHJcbiAgICAgICAgdGhpcy5yZXBvc2l0b3J5ID0gcmVwb3NpdG9yeTtcclxuICAgICAgICB0aGlzLmV2ZW50QnVzID0gZXZlbnRCdXM7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vICNyZWdpb24g5Luj55CG55u45YWzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDojrflj5ZCZWbku6PnkIZcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBwcm94eSgpOiBCZWZQcm94eSB7XHJcbiAgICAgICAgaWYgKCEhdGhpcy5yZXBvc2l0b3J5LnByb3h5KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcG9zaXRvcnkucHJveHk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQmVmUHJveHkoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDliJvlu7pCZWbku6PnkIZcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBjcmVhdGVCZWZQcm94eSgpIHtcclxuICAgICAgICBjb25zdCBzZXJ2ZXJVcmkgPSB0aGlzLnJlcG9zaXRvcnkuc2VydmVyVXJpO1xyXG4gICAgICAgIGNvbnN0IHVyaVNlcnZpY2UgPSBuZXcgVXJpU2VydmljZShzZXJ2ZXJVcmkpO1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRQcm94eSA9IG5ldyBCZWZQcm94eSh0aGlzLmh0dHBDbGllbnQsIHVyaVNlcnZpY2UpO1xyXG4gICAgICAgIGRlZmF1bHRQcm94eS5zZXRCYXNlVXJpKHRoaXMuYmFzZVVyaSk7XHJcbiAgICAgICAgY29uc3QgZXh0ZW5kID0gbmV3IEJlZlByb3h5RXh0ZW5kKHRoaXMucmVwb3NpdG9yeSk7XHJcbiAgICAgICAgZGVmYXVsdFByb3h5LnNldFByb3h5RXh0ZW5kKGV4dGVuZCk7XHJcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRQcm94eTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uXHJcblxyXG5cclxuICAgIC8vICNyZWdpb24g5Z+65pysQ1JVROaWueazlVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAgICogQGRlcHJlY2F0ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHF1ZXJ5KGVudGl0eUZpbHRlcj86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkucXVlcnkoZW50aXR5RmlsdGVyKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgICAqIEBkZXByZWNhdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBleHRlbmRRdWVyeShlbnRpdHlGaWx0ZXI6IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5leHRlbmRRdWVyeShlbnRpdHlGaWx0ZXIsIHJlcXVlc3RJbmZvKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICog5YiG6aG15p+l6K+i5ZCE5LuO6KGo5pWw5o2uXHJcbiAgICAgKiBAcGFyYW0gaWQg5Li76KGoaWRcclxuICAgICAqIEBwYXJhbSByZXRyaWV2ZVBhcmFtIOWPguaVsFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2VydmljZVJldHJpZXZlKGlkOiBzdHJpbmcsIHJldHJpZXZlUGFyYW06IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5zZXJ2aWNlUmV0cmlldmUoaWQsIHJldHJpZXZlUGFyYW0sIHJlcXVlc3RJbmZvKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICog5YiG6aG15p+l6K+i5LuO6KGoL+S7juS7juihqOaVsOaNrlxyXG4gICAgICogQHBhcmFtIHBhcmFtcyDmn6Xor6Llj4LmlbBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHF1ZXJ5Q2hpbGQocGFyYW1zOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5xdWVyeUNoaWxkKHBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgICAqIEBkZXByZWNhdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZXRyaWV2ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5yZXRyaWV2ZShpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICAgKiBAZGVwcmVjYXRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZXh0ZW5kUmV0cmlldmUoaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5leHRlbmRSZXRyaWV2ZShpZCwgcmVxdWVzdEluZm8pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAgICogQGRlcHJlY2F0ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNyZWF0ZShkZWZhdWx0VmFsdWU/OiBhbnksIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3h5LmNyZWF0ZShkZWZhdWx0VmFsdWUsIHJlcXVlc3RJbmZvKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgICAqIEBkZXByZWNhdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjcmVhdGVCeVBhdGgoZnBhdGg6IHN0cmluZywgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuY3JlYXRlQnlQYXRoKGZwYXRoLCByZXF1ZXN0SW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICAgKiBAZGVwcmVjYXRlZFxyXG4gICAgICovXHJcbiAgICB1cGRhdGUoY2hhbmdlRGV0YWlsOiBDaGFuZ2VEZXRhaWwsIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3h5LnVwZGF0ZShjaGFuZ2VEZXRhaWwsIHJlcXVlc3RJbmZvKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgICAqIEBkZXByZWNhdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzYXZlKHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3h5LnNhdmUocmVxdWVzdEluZm8pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAgICogQGRlcHJlY2F0ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRlbGV0ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5kZWxldGUoaWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAgICogQGRlcHJlY2F0ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGV4dGVuZERlbGV0ZShpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3h5LmV4dGVuZERlbGV0ZShpZCwgcmVxdWVzdEluZm8pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAgICogQGRlcHJlY2F0ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRlbGV0QnlQYXRoKGZwYXRoOiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3h5LmRlbGV0QnlQYXRoKGZwYXRoLCBpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICAgKiBAZGVwcmVjYXRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZXh0ZW5kRGVsZXRCeVBhdGgoZnBhdGg6IHN0cmluZywgaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5leHRlbmREZWxldEJ5UGF0aChmcGF0aCwgaWQsIHJlcXVlc3RJbmZvKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgICAqIEBkZXByZWNhdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBiYXRjaERlbGV0ZShpZHM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5iYXRjaERlbGV0ZShpZHMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAgICogQGRlcHJlY2F0ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGV4dGVuZEJhdGNoRGVsZXRlKGlkczogc3RyaW5nW10sIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kQmF0Y2hEZWxldGUoaWRzLCByZXF1ZXN0SW5mbyk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAgICogQGRlcHJlY2F0ZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNhbmNlbChvcHRpb25zPzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5jYW5jZWwob3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgICAvLyAjcmVnaW9uIHJlcXVlc3Tmlrnms5VcclxuXHJcbiAgICAvKipcclxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgICAqIEBkZXByZWNhdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZXF1ZXN0KFxyXG4gICAgICAgIHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgcGFyYW1zPzogYW55LCBvcHRpb25zPzogYW55LFxyXG4gICAgICAgIHNlbGZIYW5kRXJyb3I/OiBib29sZWFuLCBpZ25vcmVFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuXHJcbiAgICApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlubmVyUmVxdWVzdCh1cmwsIG1ldGhvZCwgcGFyYW1zLCBvcHRpb25zLCBzZWxmSGFuZEVycm9yLCBpZ25vcmVFcnJvciwgaWdub3JlQ2hhbmdlcywgZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgLy8gdHNsaW50OmRpc2FibGU6IGFsaWduXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDosIPnlKjlkI7nq6/mlrnms5VcclxuICAgICAqIEBwYXJhbSB1cmwgdXJsXHJcbiAgICAgKiBAcGFyYW0gbWV0aG9kIG1ldGhvZFxyXG4gICAgICogQHBhcmFtIHBhcmFtcyBwYXJhbXNcclxuICAgICAqIEBwYXJhbSBvcHRpb25zIG9wdGlvbnNcclxuICAgICAqIEBwYXJhbSBzZWxmSGFuZEVycm9yIOiHquW3seWkhOeQhuW8guW4uFxyXG4gICAgICogQHBhcmFtIGlnbm9yZUVycm9yIOW/veeVpemUmeivr1xyXG4gICAgICogQHBhcmFtIGlnbm9yZUNoYW5nZXMg5b+955Wl5Y+Y5pu0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpbnZva2UodXJsOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nLCBwYXJhbXM/OiBhbnksIG9wdGlvbnM/OiBhbnksXHJcbiAgICAgICAgc2VsZkhhbmRFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUVycm9yPzogYm9vbGVhbiwgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW4pIHtcclxuICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmJvZHkgJiYgb3B0aW9ucy5ib2R5LlJlcXVlc3RJbmZvKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcign6K+35L2/55SocmVxdWVzdEluZm/mj5DkuqTlj5jmm7QnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5uZXJSZXF1ZXN0KHVybCwgbWV0aG9kLCBwYXJhbXMsIG9wdGlvbnMsIHNlbGZIYW5kRXJyb3IsIGlnbm9yZUVycm9yLCBpZ25vcmVDaGFuZ2VzLCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWGhemDqOeahHJlcXVlc3Tmlrnms5VcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpbm5lclJlcXVlc3QoXHJcbiAgICAgICAgdXJsOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nLCBwYXJhbXM/OiBhbnksIG9wdGlvbnM/OiBhbnksXHJcbiAgICAgICAgc2VsZkhhbmRFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUVycm9yPzogYm9vbGVhbiwgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW4sXHJcbiAgICAgICAgdXNlQ29ycmVjdFJlcXVlc3RJbmZvQ2hlY2tNZXRob2Q/OiBib29sZWFuXHJcbiAgICApIHtcclxuICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcclxuICAgICAgICBjb25zdCBiZWZTZXNzaW9uSWRLZXkgPSAnQkVGU2Vzc2lvbklEJztcclxuXHJcbiAgICAgICAgLy8g5piv5ZCm6Ieq5bex5aSE55CG5byC5bi4XHJcbiAgICAgICAgaWYgKHR5cGVvZiAoc2VsZkhhbmRFcnJvcikgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAoc2VsZkhhbmRFcnJvcikgIT09ICdib29sZWFuJykge1xyXG4gICAgICAgICAgICBzZWxmSGFuZEVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDmmK/lkKblv73nlaXlvILluLjnu6fnu63miafooYxcclxuICAgICAgICBpZiAodHlwZW9mIChpZ25vcmVFcnJvcikgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAoaWdub3JlRXJyb3IpICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAgICAgaWdub3JlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIOmAieaLqeajgOafpVJlcXVlc3RJbmZv55qE5pa55rOVXHJcbiAgICAgICAgaWYgKHR5cGVvZiAodXNlQ29ycmVjdFJlcXVlc3RJbmZvQ2hlY2tNZXRob2QpID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgKHVzZUNvcnJlY3RSZXF1ZXN0SW5mb0NoZWNrTWV0aG9kKSAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgICAgIHVzZUNvcnJlY3RSZXF1ZXN0SW5mb0NoZWNrTWV0aG9kID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGNoZWNrUmVxdWVzdEluZm9NZXRob2QgPSB1c2VDb3JyZWN0UmVxdWVzdEluZm9DaGVja01ldGhvZCA/IHRoaXMuZXhpc3RSZXF1ZXN0SW5mbyA6IHRoaXMuaGFzUmVxdWVzdEluZm87XHJcblxyXG4gICAgICAgIC8vIHBhcmFtc1xyXG4gICAgICAgIGlmIChwYXJhbXMpIHtcclxuICAgICAgICAgICAgLy8gY29uc3QgaHR0cFBhcmFtcyA9IHRoaXMuYnVpbGRQYXJhbXMocGFyYW1zKTtcclxuICAgICAgICAgICAgb3B0aW9ucy5wYXJhbXMgPSBwYXJhbXM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDluKbmnIlyZXF1ZXN0SW5mb+eahOivt+axgu+8jOivt+axguaIkOWKn+WQjua4heepuuWPmOabtOmbhlxyXG4gICAgICAgIGNvbnN0IGhhc1JlcXVlc3RJbmZvID0gY2hlY2tSZXF1ZXN0SW5mb01ldGhvZChvcHRpb25zKTtcclxuICAgICAgICBsZXQgaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLmNvbnZlcnRUb0hlYWRlcnMob3B0aW9ucy5oZWFkZXJzKTtcclxuXHJcbiAgICAgICAgLy8g5Liy6IGUc2Vzc2lvbua1geWSjGh0dHDmtYFcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRCZVNlc3Npb25JZCgpLnBpcGUoXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoc2Vzc2lvbklkOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgIGhlYWRlcnMgPSB0aGlzLnNlc3Npb25TZXJ2aWNlLmV4dGVuZFJlcXVlc3RIZWFkZXJzKGhlYWRlcnMpO1xyXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gSHR0cEhlYWRlclV0aWwudG9Kc29uKGhlYWRlcnMpO1xyXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5vYnNlcnZlID0gJ3Jlc3BvbnNlJztcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnJlcXVlc3QobWV0aG9kLCB1cmwsIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgdGFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaGVhZGVycyAmJiByZXNwb25zZS5oZWFkZXJzLmhhcyhiZWZTZXNzaW9uSWRLZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5zZXRCZVNlc3Npb25JZChyZXNwb25zZS5oZWFkZXJzLmdldChiZWZTZXNzaW9uSWRLZXkpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuYm9keSksXHJcbiAgICAgICAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZVJlcG9uc2VJbmZvKHJlc3VsdCwgaGFzUmVxdWVzdEluZm8sIGlnbm9yZUNoYW5nZXMpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRXJyb3JzKGVycm9yLCBzZWxmSGFuZEVycm9yLCBpZ25vcmVFcnJvcik7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWkhOeQhui/lOWbnue7k+aenFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGFuZGxlUmVwb25zZUluZm8ocmVzdWx0OiBhbnksIGhhc1JlcXVlc3RJbmZvOiBib29sZWFuLCBpZ25vcmVDaGFuZ2VzOiBib29sZWFuKTogYW55IHtcclxuICAgICAgICBpZiAoaGFzUmVxdWVzdEluZm8pIHtcclxuICAgICAgICAgICAgLy8g5aaC5p6c5pyJ5bim5pyJUmVxdWVzdEluZm/vvIzliJnmjInmlrDnu5PmnoTlpITnkIZcclxuICAgICAgICAgICAgLy8gMeOAgeW6lOeUqOacjeWKoeWZqOerr+i/lOWbnueahOWPmOabtO+8m1xyXG4gICAgICAgICAgICAvLyAy44CB5riF56m65pys5Zyw5Y+Y5pu06ZuG77ybXHJcbiAgICAgICAgICAgIC8vIDPjgIHov5Tlm57mlrDnu5PmnoRcclxuICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQuaW5uZXJEYXRhQ2hhbmdlICYmIGlnbm9yZUNoYW5nZXMgIT09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVwb3NpdG9yeS5oYW5kbGVEYXRhQ2hhbmdlRGV0YWlscyhyZXN1bHQuaW5uZXJEYXRhQ2hhbmdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBpZiAoaWdub3JlQ2hhbmdlcyAhPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlcG9zaXRvcnkuY2xlYXJBbGxFbnRpdHlDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyDlpoLmnpzmnInmsqHmnIlSZXF1ZXN0SW5mb++8jOWImeaMieiAgeeahOaWueW8j+WkhOeQhlxyXG4gICAgICAgICAgICAvLyAx44CB5LiN5aSE55CG5pyN5Yqh5Zmo56uv6L+U5Zue55qE5Y+Y5pu077ya6Lef6ICB55qE6KGM5Li65LiA5qC377ybXHJcbiAgICAgICAgICAgIC8vIDLjgIHkuI3muIXnkIbmnKzlnLDlj5jmm7TvvJrlm6DkuLrlj5jmm7TmsqHmnInmj5DkuqTvvJtcclxuICAgICAgICAgICAgLy8gM+OAgei/lOWbnuiAgeeahOe7k+aehO+8muWFvOWuueiAgeeahOS7o+eggVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy51bldyYXBSZXNwb25zZUluZm8ocmVzdWx0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDplJnor6/lpITnkIZcclxuICAgICAqL1xyXG4gICAgcHVibGljIGhhbmRsZUVycm9ycyhlcnJvcjogYW55LCBzZWxmSGFuZEVycm9yOiBib29sZWFuLCBpZ25vcmVFcnJvcjogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgdGhpcy5jbGVhckxvYWRpbmcoKTtcclxuICAgICAgICBpZiAoISFzZWxmSGFuZEVycm9yKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBmb3JtQXBwQ29udGV4dCA9IHRoaXMucmVwb3NpdG9yeS5hcHBDb250ZXh0LmdldEZvcm1BcHBDb250ZXh0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGFwcGxpY2F0aW9uSWQgPSBmb3JtQXBwQ29udGV4dC5BcHBsaWNhdGlvbklkO1xyXG4gICAgICAgICAgICBjb25zdCBhcHBsaWNhdGlvbkNvbnRleHQ6IGFueSA9IHdpbmRvd1thcHBsaWNhdGlvbklkXSB8fCB7fTtcclxuICAgICAgICAgICAgY29uc3QgaXNFeGNlcHRpb25IYW5kbGVyRXhpc3QgPSAhIWFwcGxpY2F0aW9uQ29udGV4dC5pc0V4Y2VwdGlvbkhhbmRsZXJFeGlzdDtcclxuICAgICAgICAgICAgaWYgKCEhdGhpcy5ldmVudEJ1cyAmJiBpc0V4Y2VwdGlvbkhhbmRsZXJFeGlzdCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKFJlc3BvbnNlSW5mb1V0aWwuaXNSZXBvcnRlZDQwMUVycm9yKGVycm9yKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRCdXMucG9zdCgnRXhjZXB0aW9uJywgJycsICdvbkV4Y2VwdGlvbicsIGVycm9yLCBmb3JtQXBwQ29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaWdub3JlRXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vICNlbmRyZWdpb25cclxuXHJcblxyXG4gICAgLy8gI3JlZ2lvbiDlt6Xlhbfmlrnms5VcclxuXHJcbiAgICAvKipcclxuICAgICAqIOa4heepukxvYWRpbmdcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBjbGVhckxvYWRpbmcoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgaWZMb2FkaW5nRXhpc3RzID0gd2luZG93WydERVZLSVRfTE9BRElOR19TRVJWSUNFJ10gJiZcclxuICAgICAgICAgICAgd2luZG93WydERVZLSVRfTE9BRElOR19TRVJWSUNFJ10gaW5zdGFuY2VvZiBBcnJheSAmJlxyXG4gICAgICAgICAgICB3aW5kb3dbJ0RFVktJVF9MT0FESU5HX1NFUlZJQ0UnXS5sZW5ndGggPiAwIHx8IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAoaWZMb2FkaW5nRXhpc3RzID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBsb2FkaW5nU2VydmljZXM6IGFueVtdID0gd2luZG93WydERVZLSVRfTE9BRElOR19TRVJWSUNFJ107XHJcbiAgICAgICAgZm9yIChjb25zdCBzZXJ2aWNlIG9mIGxvYWRpbmdTZXJ2aWNlcykge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIChzZXJ2aWNlLmNsZWFyQWxsKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgc2VydmljZS5jbGVhckFsbCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5aSE55CG6L+U5Zue5YC877yM5YW85a656ICB54mI5pysXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdDogYW55KTogYW55IHtcclxuICAgICAgICByZXR1cm4gUmVzcG9uc2VJbmZvVXRpbC51bldyYXBSZXNwb25zZUluZm8ocmVzdWx0KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOaYr+WQpuW4puaciVJlcXVlc3RJbmZvXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaGFzUmVxdWVzdEluZm8ob3B0aW9uczogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIFJlcXVlc3RJbmZvVXRpbC5oYXNSZXF1ZXN0SW5mb1dpdGhSKG9wdGlvbnMpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiDmmK/lkKbluKbmnIlyZXF1ZXN0SW5mb1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGV4aXN0UmVxdWVzdEluZm8ob3B0aW9uczogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIFJlcXVlc3RJbmZvVXRpbC5oYXNSZXF1ZXN0SW5mbyhvcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOaehOmAoEh0dHBQYXJhbXPlr7nosaFcclxuICAgICAqIEBwYXJhbSBwYXJhbXMg6K+35rGC5Y+C5pWwXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgYnVpbGRQYXJhbXMocGFyYW1zOiBhbnkpOiBIdHRwUGFyYW1zIHtcclxuICAgICAgICByZXR1cm4gSHR0cFBhcmFtVXRpbC5idWlsZFBhcmFtcyhwYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5p6E6YCg5bimUmVxdWVzdEluZm/nmoRCb2R577yI6YCC55So5LqO5aSa5Liq5Y+C5pWw55qE5oOF5Ya177yM5aaC5p6c5Y+q5pyJ5LiA5LiqUmVxdWVzdEluZm/lj4LmlbDvvIxib2R5PVJlcXVlc3RJbmZv77yJXHJcbiAgICAgKiBAYm9keSDmnKrmkLrluKZSZXF1ZXN0SW5mb+eahGJvZHnvvIzmoLzlvI/lvaLlpoI6IHtrZXkxOiB2YWx1ZTEsIGtleTI6IHZhbHVlMn1cclxuICAgICAqL1xyXG4gICAgcHVibGljIGJ1aWxkQm9keVdpdGhSZXF1ZXN0SW5mbyhib2R5OiBhbnkpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiBSZXF1ZXN0SW5mb1V0aWwuYnVpbGRCb2R5V2l0aFJlcXVlc3RJbmZvKGJvZHksIHRoaXMucmVwb3NpdG9yeSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmnoTpgKBSZXF1ZXN0SW5mb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYnVpbGRSZXF1ZXN0SW5mbygpOiBSZXF1ZXN0SW5mbyB7XHJcbiAgICAgICAgcmV0dXJuIFJlcXVlc3RJbmZvVXRpbC5idWlsZFJlcXVlc3RJbmZvKHRoaXMucmVwb3NpdG9yeSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvblxyXG5cclxufVxyXG5cclxuZXhwb3J0IHsgQmVmUmVzdFNlcnZpY2UgfTtcclxuXHJcbiJdfQ==

@@ -44,5 +44,16 @@ /**

};
/**
* @param {?} response
* @return {?}
*/
ResponseInfoUtil.isReported401Error = /**
* @param {?} response
* @return {?}
*/
function (response) {
return response.status === 401;
};
return ResponseInfoUtil;
}());
export { ResponseInfoUtil };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2VfaW5mby51dGlsLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvdXRpbHMvcmVzcG9uc2VfaW5mby51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7SUFBQTtJQWdDQSxDQUFDO0lBOUJDOztPQUVHOzs7Ozs7SUFDVyxtQ0FBa0I7Ozs7O0lBQWhDLFVBQWlDLE1BQVc7UUFFMUMsbUJBQW1CO1FBQ25CLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxPQUFPLE1BQU0sQ0FBQztTQUNmO1FBRUQsa0NBQWtDO1FBQ2xDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxLQUFLLEVBQUU7WUFDbEQsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBRTFFLGVBQWU7Z0JBQ2YsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDO2FBQ3RCO1lBQ0QsT0FBTyxNQUFNLENBQUM7U0FDZjs7O1lBR0ssV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXO1FBQ3RDLElBQUksV0FBVyxJQUFJLFdBQVcsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksV0FBVyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUVuRyxlQUFlO1lBQ2YsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDO1NBQzNCO1FBQ0QsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDO0lBRTVCLENBQUM7SUFDSCx1QkFBQztBQUFELENBQUMsQUFoQ0QsSUFnQ0M7QUFFRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNsYXNzIFJlc3BvbnNlSW5mb1V0aWwge1xyXG5cclxuICAvKipcclxuICAgKiDlsIZSZXNwb25zZUluZm/ovazmjaLkuLrogIHmjqXlj6PnmoTmlbDmja7ov5Tlm57moLzlvI9cclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIHVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQ6IGFueSkge1xyXG5cclxuICAgIC8vIOWFvOWuuWNhbmNlbOayoeaciei/lOWbnuWAvOeahOaDheWGtVxyXG4gICAgaWYgKCFyZXN1bHQpIHtcclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICAvLyDmsqHmnIlyZXR1cm5WYWx1ZeeahOaDheWGteS4i++8jOWFvOWuuXF1ZXJ55Y+W5pWw55qE55qE5qC85byPXHJcbiAgICBpZiAocmVzdWx0Lmhhc093blByb3BlcnR5KCdyZXR1cm5WYWx1ZScpID09PSBmYWxzZSkge1xyXG4gICAgICBpZiAocmVzdWx0Lmhhc093blByb3BlcnR5KCdyZXN1bHQnKSAmJiByZXN1bHQuaGFzT3duUHJvcGVydHkoJ3BhZ2luYXRpb24nKSkge1xyXG5cclxuICAgICAgICAvLyDlhbzlrrnov5Tlm57luKbliIbpobXnmoTliJfooajmlbDmja5cclxuICAgICAgICByZXR1cm4gcmVzdWx0LnJlc3VsdDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOWFtuS7lu+8mui/lOWbnlJlcXVlc3RJbmZvLnJldHVyblZhbHVl55qE5oOF5Ya1XHJcbiAgICBjb25zdCByZXR1cm5WYWx1ZSA9IHJlc3VsdC5yZXR1cm5WYWx1ZTtcclxuICAgIGlmIChyZXR1cm5WYWx1ZSAmJiByZXR1cm5WYWx1ZS5oYXNPd25Qcm9wZXJ0eSgncmVzdWx0JykgJiYgcmV0dXJuVmFsdWUuaGFzT3duUHJvcGVydHkoJ3BhZ2luYXRpb24nKSkge1xyXG5cclxuICAgICAgLy8g5YW85a656L+U5Zue5bim5YiG6aG155qE5YiX6KGo5pWw5o2uXHJcbiAgICAgIHJldHVybiByZXR1cm5WYWx1ZS5yZXN1bHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0LnJldHVyblZhbHVlO1xyXG5cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB7IFJlc3BvbnNlSW5mb1V0aWwgfTtcclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2VfaW5mby51dGlsLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvdXRpbHMvcmVzcG9uc2VfaW5mby51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUE7SUFBQTtJQW9DQSxDQUFDO0lBbENDOztPQUVHOzs7Ozs7SUFDVyxtQ0FBa0I7Ozs7O0lBQWhDLFVBQWlDLE1BQVc7UUFFMUMsbUJBQW1CO1FBQ25CLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxPQUFPLE1BQU0sQ0FBQztTQUNmO1FBRUQsa0NBQWtDO1FBQ2xDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxLQUFLLEVBQUU7WUFDbEQsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBRTFFLGVBQWU7Z0JBQ2YsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDO2FBQ3RCO1lBQ0QsT0FBTyxNQUFNLENBQUM7U0FDZjs7O1lBR0ssV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXO1FBQ3RDLElBQUksV0FBVyxJQUFJLFdBQVcsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksV0FBVyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUVuRyxlQUFlO1lBQ2YsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDO1NBQzNCO1FBQ0QsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDO0lBRTVCLENBQUM7Ozs7O0lBRWEsbUNBQWtCOzs7O0lBQWhDLFVBQWlDLFFBQTBCO1FBQ3pELE9BQU8sUUFBUSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUM7SUFDakMsQ0FBQztJQUNILHVCQUFDO0FBQUQsQ0FBQyxBQXBDRCxJQW9DQztBQUVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJSZXNwb25zZSwgSHR0cFJlc3BvbnNlLCBIdHRwUmVzcG9uc2VCYXNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuY2xhc3MgUmVzcG9uc2VJbmZvVXRpbCB7XHJcblxyXG4gIC8qKlxyXG4gICAqIOWwhlJlc3BvbnNlSW5mb+i9rOaNouS4uuiAgeaOpeWPo+eahOaVsOaNrui/lOWbnuagvOW8j1xyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgdW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdDogYW55KSB7XHJcblxyXG4gICAgLy8g5YW85a65Y2FuY2Vs5rKh5pyJ6L+U5Zue5YC855qE5oOF5Ya1XHJcbiAgICBpZiAoIXJlc3VsdCkge1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOayoeaciXJldHVyblZhbHVl55qE5oOF5Ya15LiL77yM5YW85a65cXVlcnnlj5bmlbDnmoTnmoTmoLzlvI9cclxuICAgIGlmIChyZXN1bHQuaGFzT3duUHJvcGVydHkoJ3JldHVyblZhbHVlJykgPT09IGZhbHNlKSB7XHJcbiAgICAgIGlmIChyZXN1bHQuaGFzT3duUHJvcGVydHkoJ3Jlc3VsdCcpICYmIHJlc3VsdC5oYXNPd25Qcm9wZXJ0eSgncGFnaW5hdGlvbicpKSB7XHJcblxyXG4gICAgICAgIC8vIOWFvOWuuei/lOWbnuW4puWIhumhteeahOWIl+ihqOaVsOaNrlxyXG4gICAgICAgIHJldHVybiByZXN1bHQucmVzdWx0O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5YW25LuW77ya6L+U5ZueUmVxdWVzdEluZm8ucmV0dXJuVmFsdWXnmoTmg4XlhrVcclxuICAgIGNvbnN0IHJldHVyblZhbHVlID0gcmVzdWx0LnJldHVyblZhbHVlO1xyXG4gICAgaWYgKHJldHVyblZhbHVlICYmIHJldHVyblZhbHVlLmhhc093blByb3BlcnR5KCdyZXN1bHQnKSAmJiByZXR1cm5WYWx1ZS5oYXNPd25Qcm9wZXJ0eSgncGFnaW5hdGlvbicpKSB7XHJcblxyXG4gICAgICAvLyDlhbzlrrnov5Tlm57luKbliIbpobXnmoTliJfooajmlbDmja5cclxuICAgICAgcmV0dXJuIHJldHVyblZhbHVlLnJlc3VsdDtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQucmV0dXJuVmFsdWU7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBpc1JlcG9ydGVkNDAxRXJyb3IocmVzcG9uc2U6IEh0dHBSZXNwb25zZUJhc2UpIHtcclxuICAgIHJldHVybiByZXNwb25zZS5zdGF0dXMgPT09IDQwMTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB7IFJlc3BvbnNlSW5mb1V0aWwgfTtcclxuIl19

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

{"__symbolic":"module","version":4,"metadata":{"VERSION":"ver.","ChangeDetailType":{"__symbolic":"class","members":{},"statics":{"Added":"Added","Modify":"Modify","Deleted":"Deleted"}},"ChangeDetailInfo":{"__symbolic":"interface"},"ChangeDetail":{"__symbolic":"interface"},"RequestInfo":{"__symbolic":"interface"},"Pagination":{"__symbolic":"interface"},"QueryResult":{"__symbolic":"interface"},"ResponseInfo":{"__symbolic":"interface"},"IProxyExtend":{"__symbolic":"interface"},"BodyWithRequestInfo":{"__symbolic":"interface"},"RequestOption":{"__symbolic":"interface"},"BE_SERVER_URI_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":9,"character":32},"arguments":["@farris/be BE_SERVER_URL"]},"BE_SESSION_HANDLING_STRATEGY_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":15,"character":47},"arguments":["@farris/be BE_SESSION_HANDLING_STRATEGY_TOKEN"]},"BefChangeBuilder":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Type","module":"@angular/core","arguments":[{"__symbolic":"reference","module":"@farris/devkit","name":"Entity","line":28,"character":29}]},{"__symbolic":"reference","name":"EntityCollection","module":"@farris/devkit","arguments":[{"__symbolic":"reference","module":"@farris/devkit","name":"Entity","line":28,"character":29}]}]}],"build":[{"__symbolic":"method"}],"buildChangeDetail":[{"__symbolic":"method"}],"getChangeInfo":[{"__symbolic":"method"}],"createEmptyChangeDetail":[{"__symbolic":"method"}]}},"BefChangeHandler":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor"}],"handle":[{"__symbolic":"method"}],"handleChangeDetails":[{"__symbolic":"method"}],"handleChangeDetail":[{"__symbolic":"method"}],"getEntityById":[{"__symbolic":"method"}]}},"BefSessionService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":29,"character":16},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"FrameworkSessionService"},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":30,"character":59}]}],"getBeSessionId":[{"__symbolic":"method"}],"setBeSessionId":[{"__symbolic":"method"}],"clearBeSessionId":[{"__symbolic":"method"}],"extendRequestHeaders":[{"__symbolic":"method"}],"handleResponseHeaders":[{"__symbolic":"method"}],"createBeSession":[{"__symbolic":"method"}],"createHandlingStrategy":[{"__symbolic":"method"}]}},"BefRestService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":32,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":65,"character":20},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"FrameworkSessionService"},{"__symbolic":"reference","name":"BefRepository"},{"__symbolic":"reference","module":"@farris/devkit","name":"EventBus","line":68,"character":19}]}],"createBefProxy":[{"__symbolic":"method"}],"query":[{"__symbolic":"method"}],"extendQuery":[{"__symbolic":"method"}],"serviceRetrieve":[{"__symbolic":"method"}],"queryChild":[{"__symbolic":"method"}],"retrieve":[{"__symbolic":"method"}],"extendRetrieve":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"createByPath":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"extendDelete":[{"__symbolic":"method"}],"deletByPath":[{"__symbolic":"method"}],"extendDeletByPath":[{"__symbolic":"method"}],"batchDelete":[{"__symbolic":"method"}],"extendBatchDelete":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"request":[{"__symbolic":"method"}],"invoke":[{"__symbolic":"method"}],"innerRequest":[{"__symbolic":"method"}],"handleReponseInfo":[{"__symbolic":"method"}],"handleErrors":[{"__symbolic":"method"}],"clearLoading":[{"__symbolic":"method"}],"unWrapResponseInfo":[{"__symbolic":"method"}],"hasRequestInfo":[{"__symbolic":"method"}],"existRequestInfo":[{"__symbolic":"method"}],"buildParams":[{"__symbolic":"method"}],"buildBodyWithRequestInfo":[{"__symbolic":"method"}],"buildRequestInfo":[{"__symbolic":"method"}]}},"BefProxy":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":22,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":30,"character":33},{"__symbolic":"reference","name":"UriService"}]}],"setBaseUri":[{"__symbolic":"method"}],"setProxyExtend":[{"__symbolic":"method"}],"query":[{"__symbolic":"method"}],"extendQuery":[{"__symbolic":"method"}],"retrieve":[{"__symbolic":"method"}],"serviceRetrieve":[{"__symbolic":"method"}],"queryChild":[{"__symbolic":"method"}],"extendRetrieve":[{"__symbolic":"method"}],"edit":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"createByPath":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"deleteAndSave":[{"__symbolic":"method"}],"extendDelete":[{"__symbolic":"method"}],"deletByPath":[{"__symbolic":"method"}],"extendDeletByPath":[{"__symbolic":"method"}],"batchDelete":[{"__symbolic":"method"}],"extendBatchDelete":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"request":[{"__symbolic":"method"}],"invoke":[{"__symbolic":"method"}],"addBodyToOptions":[{"__symbolic":"method"}],"buildParams":[{"__symbolic":"method"}],"hasRequestInfo":[{"__symbolic":"method"}],"unWrapResponseInfo":[{"__symbolic":"method"}]}},"BefLookupRestService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":26,"character":5}}]],"parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","module":"@farris/devkit","name":"FrameContext","line":26,"character":38}]}],"getData":[{"__symbolic":"method"}],"saveUserSettings":[{"__symbolic":"method"}],"getUserSettings":[{"__symbolic":"method"}],"ifEnableExtendLoadMethod":[{"__symbolic":"method"}],"getHelpData":[{"__symbolic":"method"}],"extendGetHelpData":[{"__symbolic":"method"}],"convert2TreeDataWithPathCode":[{"__symbolic":"method"}]}},"BefLookupDefaultService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":14,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","name":"FrameworkSessionService"}]}],"createSession":[{"__symbolic":"method"}],"getData":[{"__symbolic":"method"}]}},"BefRepository":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"ɵa"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":28,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":65,"character":34}]}],"getEntities":[{"__symbolic":"method"}],"getPagedById":[{"__symbolic":"method"}],"queryChild":[{"__symbolic":"method"}],"getEntityById":[{"__symbolic":"method"}],"updateEntityById":[{"__symbolic":"method"}],"editEntityById":[{"__symbolic":"method"}],"createEntity":[{"__symbolic":"method"}],"appendEntity":[{"__symbolic":"method"}],"insert":[{"__symbolic":"method"}],"insertByPath":[{"__symbolic":"method"}],"appendEntityByPath":[{"__symbolic":"method"}],"removeEntityById":[{"__symbolic":"method"}],"removeEntityAndSaveById":[{"__symbolic":"method"}],"removeEntityByPath":[{"__symbolic":"method"}],"saveEntityById":[{"__symbolic":"method"}],"saveEntities":[{"__symbolic":"method"}],"cancelEntityChanges":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"getInjector":[{"__symbolic":"method"}]}},"FrameworkSessionService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":13,"character":15}}]],"parameters":[{"__symbolic":"reference","module":"@ecp-caf/caf-common","name":"SessionService","line":13,"character":50}]}],"getUserSessionId":[{"__symbolic":"method"}],"getCurrentSessionId":[{"__symbolic":"method"}]}},"NG_VARIABLE":"@farris/bef NG_VARIABLE","NgVariable":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@farris/devkit","name":"makePropDecorator","line":42,"character":2},"arguments":["@farris/bef NG_VARIABLE",{"__symbolic":"error","message":"Lambda not supported","line":42,"character":33,"module":"./lib/decorators"}]},"NgVariableDecorator":{"__symbolic":"interface"},"BefRepositoryUtil":{"__symbolic":"class","members":{}},"BefDataPathUtil":{"__symbolic":"class","members":{},"statics":{"trimTrailingS":{"__symbolic":"function","parameters":["str"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"str"},"member":"substr"},"arguments":[0,{"__symbolic":"binop","operator":"-","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"str"},"member":"length"},"right":1}]}}}},"UriService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":5,"character":17},"arguments":[{"__symbolic":"reference","name":"BE_SERVER_URI_TOKEN"}]}]],"parameters":[{"__symbolic":"reference","name":"string"}]}],"extendUri":[{"__symbolic":"method"}]}},"Uri":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"error","message":"Expression form not supported","line":1,"character":52,"module":"./lib/uri"}]}],"toString":[{"__symbolic":"method"}]}},"DefaultComboHttpService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]}]}],"getData":[{"__symbolic":"method"}]}},"DefaultDynamiControlGroupHttpService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]}]}],"getData":[{"__symbolic":"method"}]}},"ɵa":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","module":"@farris/devkit","name":"Repository","line":26,"character":65},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":25,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"getList":[{"__symbolic":"method"}],"getById":[{"__symbolic":"method"}],"updateById":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"append":[{"__symbolic":"method"}],"appendByPath":[{"__symbolic":"method"}],"removeById":[{"__symbolic":"method"}],"removeByIds":[{"__symbolic":"method"}],"removeByPath":[{"__symbolic":"method"}],"updateChangesById":[{"__symbolic":"method"}],"updateChangesByPath":[{"__symbolic":"method"}],"updateAllChanges":[{"__symbolic":"method"}],"applyChanges":[{"__symbolic":"method"}],"updateDataAndVariableChanges":[{"__symbolic":"method"}],"applyChangesById":[{"__symbolic":"method"}],"cancelChanges":[{"__symbolic":"method"}],"clearAllEntityChanges":[{"__symbolic":"method"}],"getDataChangeDetails":[{"__symbolic":"method"}],"handleDataChangeDetails":[{"__symbolic":"method"}],"getVariableChangeDetail":[{"__symbolic":"method"}],"handleVariableChangeDetail":[{"__symbolic":"method"}],"isEmptyRequestInfo":[{"__symbolic":"method"}]}}},"origins":{"VERSION":"./public-api","ChangeDetailType":"./lib/types","ChangeDetailInfo":"./lib/types","ChangeDetail":"./lib/types","RequestInfo":"./lib/types","Pagination":"./lib/types","QueryResult":"./lib/types","ResponseInfo":"./lib/types","IProxyExtend":"./lib/types","BodyWithRequestInfo":"./lib/types","RequestOption":"./lib/types","BE_SERVER_URI_TOKEN":"./lib/tokens","BE_SESSION_HANDLING_STRATEGY_TOKEN":"./lib/tokens","BefChangeBuilder":"./lib/bef_change_builder","BefChangeHandler":"./lib/bef_change_handler","BefSessionService":"./lib/session/bef_session_service","BefRestService":"./lib/bef_rest_service","BefProxy":"./lib/bef_proxy","BefLookupRestService":"./lib/bef_lookup.service","BefLookupDefaultService":"./lib/bef_lookup_default.service","BefRepository":"./lib/bef_repository","FrameworkSessionService":"./lib/framework_session_service","NG_VARIABLE":"./lib/decorators","NgVariable":"./lib/decorators","NgVariableDecorator":"./lib/decorators","BefRepositoryUtil":"./lib/bef_repository_util","BefDataPathUtil":"./lib/bef_data_path_util","UriService":"./lib/uri_service","Uri":"./lib/uri","DefaultComboHttpService":"./lib/bef_combo.service","DefaultDynamiControlGroupHttpService":"./lib/bef_dynamic_control_group_default.service","ɵa":"./lib/deprecated/deprecated_bef_repository"},"importAs":"@farris/bef"}
{"__symbolic":"module","version":4,"metadata":{"VERSION":"ver.","ChangeDetailType":{"__symbolic":"class","members":{},"statics":{"Added":"Added","Modify":"Modify","Deleted":"Deleted"}},"ChangeDetailInfo":{"__symbolic":"interface"},"ChangeDetail":{"__symbolic":"interface"},"RequestInfo":{"__symbolic":"interface"},"Pagination":{"__symbolic":"interface"},"QueryResult":{"__symbolic":"interface"},"ResponseInfo":{"__symbolic":"interface"},"IProxyExtend":{"__symbolic":"interface"},"BodyWithRequestInfo":{"__symbolic":"interface"},"RequestOption":{"__symbolic":"interface"},"BE_SERVER_URI_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":9,"character":32},"arguments":["@farris/be BE_SERVER_URL"]},"BE_SESSION_HANDLING_STRATEGY_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":15,"character":47},"arguments":["@farris/be BE_SESSION_HANDLING_STRATEGY_TOKEN"]},"BefChangeBuilder":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Type","module":"@angular/core","arguments":[{"__symbolic":"reference","module":"@farris/devkit","name":"Entity","line":28,"character":29}]},{"__symbolic":"reference","name":"EntityCollection","module":"@farris/devkit","arguments":[{"__symbolic":"reference","module":"@farris/devkit","name":"Entity","line":28,"character":29}]}]}],"build":[{"__symbolic":"method"}],"buildChangeDetail":[{"__symbolic":"method"}],"getChangeInfo":[{"__symbolic":"method"}],"createEmptyChangeDetail":[{"__symbolic":"method"}]}},"BefChangeHandler":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor"}],"handle":[{"__symbolic":"method"}],"handleChangeDetails":[{"__symbolic":"method"}],"handleChangeDetail":[{"__symbolic":"method"}],"getEntityById":[{"__symbolic":"method"}]}},"BefSessionService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":29,"character":16},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"FrameworkSessionService"},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":30,"character":59}]}],"getBeSessionId":[{"__symbolic":"method"}],"setBeSessionId":[{"__symbolic":"method"}],"clearBeSessionId":[{"__symbolic":"method"}],"extendRequestHeaders":[{"__symbolic":"method"}],"handleResponseHeaders":[{"__symbolic":"method"}],"createBeSession":[{"__symbolic":"method"}],"createHandlingStrategy":[{"__symbolic":"method"}]}},"BefRestService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":32,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":65,"character":20},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"FrameworkSessionService"},{"__symbolic":"reference","name":"BefRepository"},{"__symbolic":"reference","module":"@farris/devkit","name":"EventBus","line":68,"character":19}]}],"createBefProxy":[{"__symbolic":"method"}],"query":[{"__symbolic":"method"}],"extendQuery":[{"__symbolic":"method"}],"serviceRetrieve":[{"__symbolic":"method"}],"queryChild":[{"__symbolic":"method"}],"retrieve":[{"__symbolic":"method"}],"extendRetrieve":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"createByPath":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"extendDelete":[{"__symbolic":"method"}],"deletByPath":[{"__symbolic":"method"}],"extendDeletByPath":[{"__symbolic":"method"}],"batchDelete":[{"__symbolic":"method"}],"extendBatchDelete":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"request":[{"__symbolic":"method"}],"invoke":[{"__symbolic":"method"}],"innerRequest":[{"__symbolic":"method"}],"handleReponseInfo":[{"__symbolic":"method"}],"handleErrors":[{"__symbolic":"method"}],"clearLoading":[{"__symbolic":"method"}],"unWrapResponseInfo":[{"__symbolic":"method"}],"hasRequestInfo":[{"__symbolic":"method"}],"existRequestInfo":[{"__symbolic":"method"}],"buildParams":[{"__symbolic":"method"}],"buildBodyWithRequestInfo":[{"__symbolic":"method"}],"buildRequestInfo":[{"__symbolic":"method"}]}},"BefProxy":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":22,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":30,"character":33},{"__symbolic":"reference","name":"UriService"}]}],"setBaseUri":[{"__symbolic":"method"}],"setProxyExtend":[{"__symbolic":"method"}],"query":[{"__symbolic":"method"}],"extendQuery":[{"__symbolic":"method"}],"filter":[{"__symbolic":"method"}],"retrieve":[{"__symbolic":"method"}],"serviceRetrieve":[{"__symbolic":"method"}],"queryChild":[{"__symbolic":"method"}],"extendRetrieve":[{"__symbolic":"method"}],"edit":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"createByPath":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"deleteAndSave":[{"__symbolic":"method"}],"extendDelete":[{"__symbolic":"method"}],"deletByPath":[{"__symbolic":"method"}],"extendDeletByPath":[{"__symbolic":"method"}],"batchDelete":[{"__symbolic":"method"}],"extendBatchDelete":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"request":[{"__symbolic":"method"}],"invoke":[{"__symbolic":"method"}],"addBodyToOptions":[{"__symbolic":"method"}],"buildParams":[{"__symbolic":"method"}],"hasRequestInfo":[{"__symbolic":"method"}],"unWrapResponseInfo":[{"__symbolic":"method"}]}},"BefLookupRestService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":26,"character":5}}]],"parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","module":"@farris/devkit","name":"FrameContext","line":26,"character":38}]}],"getData":[{"__symbolic":"method"}],"saveUserSettings":[{"__symbolic":"method"}],"getUserSettings":[{"__symbolic":"method"}],"ifEnableExtendLoadMethod":[{"__symbolic":"method"}],"getHelpData":[{"__symbolic":"method"}],"extendGetHelpData":[{"__symbolic":"method"}],"convert2TreeDataWithPathCode":[{"__symbolic":"method"}]}},"BefLookupDefaultService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":14,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","name":"FrameworkSessionService"}]}],"createSession":[{"__symbolic":"method"}],"getData":[{"__symbolic":"method"}]}},"BefRepository":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"ɵa"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":28,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":65,"character":34}]}],"getEntities":[{"__symbolic":"method"}],"getPagedById":[{"__symbolic":"method"}],"queryChild":[{"__symbolic":"method"}],"getEntityById":[{"__symbolic":"method"}],"updateEntityById":[{"__symbolic":"method"}],"editEntityById":[{"__symbolic":"method"}],"createEntity":[{"__symbolic":"method"}],"appendEntity":[{"__symbolic":"method"}],"insert":[{"__symbolic":"method"}],"insertByPath":[{"__symbolic":"method"}],"appendEntityByPath":[{"__symbolic":"method"}],"removeEntityById":[{"__symbolic":"method"}],"removeEntityAndSaveById":[{"__symbolic":"method"}],"removeEntityByPath":[{"__symbolic":"method"}],"saveEntityById":[{"__symbolic":"method"}],"saveEntities":[{"__symbolic":"method"}],"cancelEntityChanges":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"getInjector":[{"__symbolic":"method"}]}},"FrameworkSessionService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":13,"character":15}}]],"parameters":[{"__symbolic":"reference","module":"@ecp-caf/caf-common","name":"SessionService","line":13,"character":50}]}],"getUserSessionId":[{"__symbolic":"method"}],"getCurrentSessionId":[{"__symbolic":"method"}]}},"NG_VARIABLE":"@farris/bef NG_VARIABLE","NgVariable":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@farris/devkit","name":"makePropDecorator","line":42,"character":2},"arguments":["@farris/bef NG_VARIABLE",{"__symbolic":"error","message":"Lambda not supported","line":42,"character":33,"module":"./lib/decorators"}]},"NgVariableDecorator":{"__symbolic":"interface"},"BefRepositoryUtil":{"__symbolic":"class","members":{}},"BefDataPathUtil":{"__symbolic":"class","members":{},"statics":{"trimTrailingS":{"__symbolic":"function","parameters":["str"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"str"},"member":"substr"},"arguments":[0,{"__symbolic":"binop","operator":"-","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"str"},"member":"length"},"right":1}]}}}},"UriService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":5,"character":17},"arguments":[{"__symbolic":"reference","name":"BE_SERVER_URI_TOKEN"}]}]],"parameters":[{"__symbolic":"reference","name":"string"}]}],"extendUri":[{"__symbolic":"method"}]}},"Uri":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"error","message":"Expression form not supported","line":1,"character":52,"module":"./lib/uri"}]}],"toString":[{"__symbolic":"method"}]}},"DefaultComboHttpService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]}]}],"getData":[{"__symbolic":"method"}]}},"DefaultDynamiControlGroupHttpService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]}]}],"getData":[{"__symbolic":"method"}]}},"ɵa":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","module":"@farris/devkit","name":"Repository","line":26,"character":65},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":25,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"getList":[{"__symbolic":"method"}],"getById":[{"__symbolic":"method"}],"updateById":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"append":[{"__symbolic":"method"}],"appendByPath":[{"__symbolic":"method"}],"removeById":[{"__symbolic":"method"}],"removeByIds":[{"__symbolic":"method"}],"removeByPath":[{"__symbolic":"method"}],"updateChangesById":[{"__symbolic":"method"}],"updateChangesByPath":[{"__symbolic":"method"}],"updateAllChanges":[{"__symbolic":"method"}],"applyChanges":[{"__symbolic":"method"}],"updateDataAndVariableChanges":[{"__symbolic":"method"}],"applyChangesById":[{"__symbolic":"method"}],"cancelChanges":[{"__symbolic":"method"}],"clearAllEntityChanges":[{"__symbolic":"method"}],"getDataChangeDetails":[{"__symbolic":"method"}],"handleDataChangeDetails":[{"__symbolic":"method"}],"getVariableChangeDetail":[{"__symbolic":"method"}],"handleVariableChangeDetail":[{"__symbolic":"method"}],"isEmptyRequestInfo":[{"__symbolic":"method"}]}}},"origins":{"VERSION":"./public-api","ChangeDetailType":"./lib/types","ChangeDetailInfo":"./lib/types","ChangeDetail":"./lib/types","RequestInfo":"./lib/types","Pagination":"./lib/types","QueryResult":"./lib/types","ResponseInfo":"./lib/types","IProxyExtend":"./lib/types","BodyWithRequestInfo":"./lib/types","RequestOption":"./lib/types","BE_SERVER_URI_TOKEN":"./lib/tokens","BE_SESSION_HANDLING_STRATEGY_TOKEN":"./lib/tokens","BefChangeBuilder":"./lib/bef_change_builder","BefChangeHandler":"./lib/bef_change_handler","BefSessionService":"./lib/session/bef_session_service","BefRestService":"./lib/bef_rest_service","BefProxy":"./lib/bef_proxy","BefLookupRestService":"./lib/bef_lookup.service","BefLookupDefaultService":"./lib/bef_lookup_default.service","BefRepository":"./lib/bef_repository","FrameworkSessionService":"./lib/framework_session_service","NG_VARIABLE":"./lib/decorators","NgVariable":"./lib/decorators","NgVariableDecorator":"./lib/decorators","BefRepositoryUtil":"./lib/bef_repository_util","BefDataPathUtil":"./lib/bef_data_path_util","UriService":"./lib/uri_service","Uri":"./lib/uri","DefaultComboHttpService":"./lib/bef_combo.service","DefaultDynamiControlGroupHttpService":"./lib/bef_dynamic_control_group_default.service","ɵa":"./lib/deprecated/deprecated_bef_repository"},"importAs":"@farris/bef"}

@@ -39,2 +39,9 @@ import { Observable } from 'rxjs';

/**
* 查询数据(带过滤条件)
* @param entityFilter 过滤、排序、分页信息
* @param requestInfo requestInfo
* @description 和extendQuery一致,仅将查询参数放到body中
*/
filter(entityFilter: any, requestInfo: RequestInfo): Observable<ResponseInfo>;
/**
* 检索数据

@@ -41,0 +48,0 @@ * @param id 单据内码

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

import { HttpResponseBase } from '@angular/common/http';
declare class ResponseInfoUtil {

@@ -6,3 +7,4 @@ /**

static unWrapResponseInfo(result: any): any;
static isReported401Error(response: HttpResponseBase): boolean;
}
export { ResponseInfoUtil };
{
"name": "@farris/bef",
"version": "0.0.12-20201118104440-dev",
"version": "0.0.12-20210111100158-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 too big to display

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