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

@data-client/core

Package Overview
Dependencies
Maintainers
0
Versions
36
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@data-client/core - npm Package Compare versions

Comparing version 0.14.2 to 0.14.4

15

dist/index.js

@@ -138,6 +138,6 @@ 'use strict';

entities,
endpoints: state.endpoints,
indexes,
endpoints: state.endpoints,
meta: state.meta,
entityMeta,
meta: state.meta,
optimistic: state.optimistic,

@@ -209,5 +209,4 @@ lastReset: state.lastReset

entities,
endpoints,
indexes,
endpoints,
entityMeta,
meta: {

@@ -221,2 +220,3 @@ ...state.meta,

},
entityMeta,
optimistic: filterOptimistic(state, action),

@@ -313,4 +313,4 @@ lastReset: state.lastReset

entities: {},
endpoints: {},
indexes: {},
endpoints: {},
meta: {},

@@ -816,3 +816,6 @@ entityMeta: {},

class NetworkManager {
constructor(dataExpiryLength = 60000, errorExpiryLength = 1000) {
constructor({
dataExpiryLength = 60000,
errorExpiryLength = 1000
} = {}) {
this.fetched = Object.create(null);

@@ -819,0 +822,0 @@ this.resolvers = {};

2

dist/index.umd.min.js

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

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@data-client/normalizr")):"function"==typeof define&&define.amd?define(["exports","@data-client/normalizr"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).RDC=e.RDC||{},e.RDC.Core={}),e.normalizr)}(this,(function(e,t){"use strict";function s(e,t){const s=Date.now();return{fetchedAt:null!=t?t:s,date:s,expiresAt:s+e}}const i="rdc/fetch",n="rdc/set",r="rdc/setresponse",o="rdc/optimistic",a="rdc/reset",c="rdc/subscribe",l="rdc/unsubscribe",h="rdc/invalidate",d="rdc/invalidateall",u="rdc/expireall",p="rdc/gc";var f=Object.freeze({__proto__:null,FETCH_TYPE:i,SET_TYPE:n,SET_RESPONSE_TYPE:r,OPTIMISTIC_TYPE:o,RESET_TYPE:a,SUBSCRIBE_TYPE:c,UNSUBSCRIBE_TYPE:l,INVALIDATE_TYPE:h,INVALIDATEALL_TYPE:d,EXPIREALL_TYPE:u,GC_TYPE:p});function g(e,t,i){var n;return{type:o,key:e.key(...t),args:t,endpoint:e,meta:s(null!=(n=e.dataExpiryLength)?n:6e4,i)}}class y extends Error{}function m(e,t,s){return"AbortError"===s.name?Object.assign({},e,{optimistic:v(e,t)}):Object.assign({},e,{meta:Object.assign({},e.meta,{[t.key]:{date:t.meta.date,error:s,expiresAt:t.meta.expiresAt,errorPolicy:null==t.endpoint.errorPolicy?void 0:t.endpoint.errorPolicy(s)}}),optimistic:v(e,t)})}function v(e,t){return e.optimistic.filter((e=>e.key!==t.key||(e.type===o?e.meta.fetchedAt!==t.meta.fetchedAt:e.meta.date>t.meta.date)))}function E(e){return function(s,c){switch(s||(s=b),c.type){case p:return c.entities.forEach((([e,t])=>{var i,n;null==(i=s.entities[e])||delete i[t],null==(n=s.entityMeta[e])||delete n[t]})),c.endpoints.forEach((e=>{delete s.endpoints[e],delete s.meta[e]})),s;case i:return function(e,t){if(t.endpoint.getOptimisticResponse&&t.endpoint.sideEffect){const s=g(t.endpoint,t.args,t.meta.fetchedAt);return Object.assign({},e,{optimistic:[...e.optimistic,s]})}return e}(s,c);case o:case r:return function(e,s,i){if(s.error)return m(e,s,s.response);try{var n;let r;if(s.type===o){if(!s.endpoint.getOptimisticResponse)return e;try{r=s.endpoint.getOptimisticResponse.call(s.endpoint,i.snapshot(e,s.meta.fetchedAt),...s.args)}catch(t){if(t.constructor===y)return e;throw t}}else r=s.response;const{result:a,entities:c,indexes:l,entityMeta:h}=t.normalize(s.endpoint.schema,r,s.args,e,s.meta),d=Object.assign({},e.endpoints,{[s.key]:a});try{if(s.endpoint.update){const e=s.endpoint.update(a,...s.args);Object.keys(e).forEach((t=>{d[t]=e[t](d[t])}))}}catch(e){console.error(`The following error occured during Endpoint.update() for ${s.key}`),console.error(e)}return{entities:c,indexes:l,endpoints:d,entityMeta:h,meta:Object.assign({},e.meta,{[s.key]:{date:s.meta.date,expiresAt:s.meta.expiresAt,prevExpiresAt:null==(n=e.meta[s.key])?void 0:n.expiresAt}}),optimistic:v(e,s),lastReset:e.lastReset}}catch(t){return"object"==typeof t&&(t.message=`Error processing ${s.key}\n\nFull Schema: ${JSON.stringify(s.endpoint.schema,void 0,2)}\n\nError:\n${t.message}`,"response"in s&&(t.response=s.response),t.status=400),m(e,s,t)}}(s,c,e);case n:return function(e,s,i){let n;if("function"==typeof s.value){const t=i.get(s.schema,...s.args,e);if(void 0===t)return e;n=s.value(t)}else n=s.value;try{const{entities:i,indexes:r,entityMeta:o}=t.normalize(s.schema,n,s.args,e,s.meta);return{entities:i,indexes:r,endpoints:e.endpoints,entityMeta:o,meta:e.meta,optimistic:e.optimistic,lastReset:e.lastReset}}catch(t){return e}}(s,c,e);case d:case h:return function(e,t){const s=Object.assign({},e.endpoints),i=Object.assign({},e.meta),n=e=>{delete s[e];const t=Object.assign({},i[e],{expiresAt:0,invalidated:!0});delete t.error,i[e]=t};return t.type===h?n(t.key):Object.keys(s).forEach((e=>{t.testKey(e)&&n(e)})),Object.assign({},e,{endpoints:s,meta:i})}(s,c);case u:return function(e,t){const s=Object.assign({},e.meta);return Object.keys(s).forEach((e=>{t.testKey(e)&&(s[e]=Object.assign({},s[e],{expiresAt:1}))})),Object.assign({},e,{meta:s})}(s,c);case a:return Object.assign({},b,{lastReset:c.date});default:return s}}}const b={entities:{},indexes:{},endpoints:{},meta:{},entityMeta:{},optimistic:[],lastReset:0};var L=Object.freeze({__proto__:null,MemoCache:t.MemoCache,INVALID:t.INVALID,initialState:b});function O(e,{args:t}){return{type:c,endpoint:e,args:t,key:e.key(...t)}}function S(e,{args:t}){return{type:l,key:e.key(...t),args:t,endpoint:e}}var I="undefined"!=typeof FormData?e=>e instanceof FormData?Object.fromEntries(e.entries()):e:e=>e;function w(e,{args:t,fetchedAt:i,response:n,error:o=!1}){var a,c;const l=o?null!=(a=e.errorExpiryLength)?a:1e3:null!=(c=e.dataExpiryLength)?c:6e4;return{type:r,key:e.key(...t),response:n,args:t.map(I),endpoint:e,meta:s(l,i),error:o}}function x(e,{args:t,fetchedAt:i,value:r}){return{type:n,value:r,args:t.map(I),schema:e,meta:s(6e4,i)}}function A(){return{type:a,date:Date.now()}}function k(e){return{type:d,testKey:e}}function j(e,{args:t}){return{type:h,key:e.key(...t)}}function _(e,{args:t}){let s=0,n=0;const r=new Promise(((e,t)=>{[s,n]=[e,t]})),o={fetchedAt:Date.now(),resolve:s,reject:n,promise:r};return{type:i,key:e.key(...t),args:t,endpoint:e,meta:o}}function R(e){return{type:u,testKey:e}}var T=Object.freeze({__proto__:null,createSubscription:O,createUnsubscription:S,createSetResponse:w,createSet:x,createReset:A,createOptimistic:g,createMeta:s,createInvalidateAll:k,createInvalidate:j,createFetch:_,createExpireAll:R});function P(e,t){return e.meta[t]}const q=e=>{throw new Error("Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.")},D=()=>b;class M{constructor({dispatch:e=q,getState:s=D,memo:i=new t.MemoCache}={}){this.fetch=(e,...s)=>{const i=_(e,{args:s});return this.dispatch(i),e.schema?i.meta.promise.then((i=>t.denormalize(e.schema,i,{},s))):i.meta.promise},this.fetchIfStale=(e,...s)=>{const{data:i,expiresAt:n,expiryStatus:r}=this.getResponse(e,...s,this.getState());return r!==t.ExpiryStatus.Invalid&&Date.now()<=n?i:this.fetch(e,...s)},this.invalidate=(e,...t)=>null!==t[0]?this.dispatch(j(e,{args:t})):Promise.resolve(),this.invalidateAll=e=>this.dispatch(k((t=>e.testKey(t)))),this.expireAll=e=>this.dispatch(R((t=>e.testKey(t)))),this.resetEntireStore=()=>this.dispatch(A()),this.setResponse=(e,...t)=>{const s=t[t.length-1],i=w(e,{args:t.slice(0,t.length-1),response:s});return this.dispatch(i)},this.setError=(e,...t)=>{const s=t[t.length-1],i=w(e,{args:t.slice(0,t.length-1),response:s,error:!0});return this.dispatch(i)},this.resolve=(e,t)=>this.dispatch(w(e,t)),this.subscribe=(e,...t)=>null!==t[0]?this.dispatch(O(e,{args:t})):Promise.resolve(),this.unsubscribe=(e,...t)=>null!==t[0]?this.dispatch(S(e,{args:t})):Promise.resolve(),this.snapshot=(e,t)=>new H(this,e,t),this.dispatch=e,this.getState=s,this.memo=i}set(e,...t){const s=t[t.length-1],i=x(e,{args:t.slice(0,t.length-1),value:s});return this.dispatch(i)}getError(e,...t){if(null===t[0])return;const s=t[t.length-1],i=t.slice(0,t.length-1),n=e.key(...i),r=P(s,n);return void 0===s.endpoints[n]||"soft"!==(null==r?void 0:r.errorPolicy)?null==r?void 0:r.error:void 0}getResponse(e,...s){const i=s[s.length-1],n=s.slice(0,s.length-1).map(I),r=1!==n.length||null!==n[0],o=r?e.key(...n):"",a=r?i.endpoints[o]:void 0,c=e.schema,l=P(i,o);let h=null==l?void 0:l.expiresAt;const d=void 0===a&&void 0!==c,u=d?this.memo.buildQueryKey(c,n,i.entities,i.indexes,o):a;if(!r)return{data:u,expiryStatus:t.ExpiryStatus.Valid,expiresAt:1/0};let p=!1;if(d)p=!t.validateQueryKey(u);else if(!c||!C(c))return{data:a,expiryStatus:null!=l&&l.invalidated?t.ExpiryStatus.Invalid:a&&!e.invalidIfStale?t.ExpiryStatus.Valid:t.ExpiryStatus.InvalidIfStale,expiresAt:h||0};const{data:f,paths:g}=this.memo.denormalize(c,u,i.entities,n);return!h&&p&&(h=1),this.getSchemaResponse(f,g,i.entityMeta,h,e.invalidIfStale||p,l)}get(e,...t){const s=t[t.length-1],i=t.slice(0,t.length-1).map(I);return this.memo.query(e,i,s.entities,s.indexes)}getSchemaResponse(e,s,i,n,r,o={}){const a="symbol"==typeof e;n||(n=function(e,t){let s=1/0;for(const{pk:n,key:r}of e){var i;const e=null==(i=t[r])||null==(i=i[n])?void 0:i.expiresAt;e<s&&(s=e)}return s}(s,i));return{data:e,expiryStatus:null!=o&&o.invalidated||a&&(null==o||!o.error)?t.ExpiryStatus.Invalid:a||r?t.ExpiryStatus.InvalidIfStale:t.ExpiryStatus.Valid,expiresAt:n}}}function C(e){if(t.isEntity(e))return!0;if(Array.isArray(e))return 0!==e.length&&C(e[0]);if(e&&("object"==typeof e||"function"==typeof e)){const t="schema"in e?e.schema:e;return"function"==typeof t?C(t):Object.values(t).some((e=>C(e)))}return!1}class H{constructor(e,t,s=0){this.state=void 0,this.controller=void 0,this.fetchedAt=void 0,this.abort=H.abort,this.state=t,this.controller=e,this.fetchedAt=s}getResponse(e,...t){return this.controller.getResponse(e,...t,this.state)}getError(e,...t){return this.controller.getError(e,...t,this.state)}get(e,...t){return this.controller.get(e,...t,this.state)}}H.abort=new y;class N extends Error{constructor(){super("Aborted due to RESET"),this.name="ResetError"}}class F{isOnline(){return void 0===navigator.onLine||navigator.onLine}addOnlineListener(e){addEventListener("online",e)}removeOnlineListener(e){removeEventListener("online",e)}addOfflineListener(e){addEventListener("offline",e)}removeOfflineListener(e){removeEventListener("offline",e)}}class z{isOnline(){return!0}addOnlineListener(){}removeOnlineListener(){}addOfflineListener(){}removeOfflineListener(){}}let Y;Y="undefined"!=typeof navigator&&"function"==typeof addEventListener?F:z;var V=Y;let B={};Object.hasOwn=Object.hasOwn||function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},Object.defineProperty(e,"ExpiryStatus",{enumerable:!0,get:function(){return t.ExpiryStatus}}),e.Controller=M,e.DefaultConnectionListener=V,e.DevToolsManager=class{constructor(e,t){this.started=!1,this.actions=[],this.maxBufferLength=100,this.devTools="undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION__&&window.__REDUX_DEVTOOLS_EXTENSION__.connect(Object.assign({},B,e)),null!=e&&e.maxAge&&(this.maxBufferLength=2*e.maxAge),this.devTools?this.middleware=e=>{this.controller=e;const s=E(e);let i=e.getState();return n=>r=>{const o=null==t?void 0:t(r),a=n(r);return i=this.started?s(i,r):e.getState(),a.then((()=>{o||this.handleAction(r,i.optimistic.reduce(s,i))})),a}}:this.middleware=()=>e=>t=>e(t)}handleAction(e,t){this.started?this.devTools.send(e,t):(this.actions.length>this.maxBufferLength&&(this.actions=this.actions.slice(this.maxBufferLength/2)),this.actions.push([e,t]))}init(e){this.devTools&&this.devTools.init(e)}cleanup(){}getMiddleware(){return this.middleware}},e.LogoutManager=class{constructor({handleLogout:e,shouldLogout:t}={}){e&&(this.handleLogout=e),t&&(this.shouldLogout=t),this.middleware=e=>t=>async s=>{await t(s),s.type===r&&s.error&&this.shouldLogout(s.response)&&this.handleLogout(e)}}cleanup(){}getMiddleware(){return this.middleware}shouldLogout(e){return 401===e.status}handleLogout(e){e.resetEntireStore()}},e.NetworkManager=class{constructor(e=6e4,t=1e3){this.fetched=Object.create(null),this.resolvers={},this.rejectors={},this.fetchedAt={},this.controller=new M,this.dataExpiryLength=e,this.errorExpiryLength=t,this.middleware=e=>(this.controller=e,t=>s=>{switch(s.type){case i:return this.handleFetch(s),void 0!==s.endpoint.getOptimisticResponse&&s.endpoint.sideEffect?t(s):Promise.resolve();case r:return t(s).then((()=>{if(s.key in this.fetched){var t;const i=null==(t=e.getState().meta[s.key])?void 0:t.error;i?this.handleSet(w(s.endpoint,{args:s.args,response:i,fetchedAt:s.meta.fetchedAt,error:!0})):this.handleSet(s)}}));case a:{const e=Object.assign({},this.rejectors);return this.clearAll(),t(s).then((()=>{for(const t in e)e[t](new N)}))}default:return t(s)}})}skipLogging(e){return e.type===i&&e.key in this.fetched}init(){delete this.cleanupDate}cleanup(){this.cleanupDate=Date.now()}allSettled(){const e=Object.values(this.fetched);if(e.length)return Promise.allSettled(e)}clearAll(){for(const e in this.rejectors)this.clear(e)}clear(e){this.fetched[e].catch((()=>{})),delete this.resolvers[e],delete this.rejectors[e],delete this.fetched[e],delete this.fetchedAt[e]}getLastReset(){return this.cleanupDate?this.cleanupDate:this.controller.getState().lastReset}handleFetch(e){const{resolve:t,reject:s,fetchedAt:i}=e.meta,n=!e.endpoint.sideEffect,r=()=>{let r=e.endpoint(...e.args);return n||(r=(e=>e.then((e=>(t(e),e))).catch((e=>{throw s(e),e})))(r)),r=r.then((t=>{let s=this.getLastReset();return i>=s&&this.controller.resolve(e.endpoint,{args:e.args,response:t,fetchedAt:i}),t})).catch((t=>{const s=this.getLastReset();throw i>=s&&this.controller.resolve(e.endpoint,{args:e.args,response:t,fetchedAt:i,error:!0}),t})),r};return n?this.throttle(e.key,r,i).then((e=>t(e))).catch((e=>s(e))):r().catch((()=>{}))}handleSet(e){if(e.key in this.fetched){let t;t=e.error?this.rejectors[e.key]:this.resolvers[e.key],t(e.response),this.clear(e.key)}}getMiddleware(){return this.middleware}throttle(e,t,s){const i=this.getLastReset();return e in this.fetched&&this.fetchedAt[e]>i||(this.fetched[e]=new Promise(((t,s)=>{this.resolvers[e]=t,this.rejectors[e]=s})),this.fetchedAt[e]=s,this.idleCallback((()=>{t().catch((()=>null))}),{timeout:500})),this.fetched[e]}idleCallback(e,t){e()}},e.PollingSubscription=class{constructor(e,t,s){if(this.frequencyHistogram=new Map,this.offlineListener=()=>{this.cleanup(),this.connectionListener.addOnlineListener(this.onlineListener)},this.onlineListener=()=>{this.connectionListener.removeOnlineListener(this.onlineListener);const e=Date.now();this.startId=setTimeout((()=>{this.startId&&(delete this.startId,this.update(),this.run())}),Math.max(0,this.lastFetchTime()-e+this.frequency)),this.connectionListener.addOfflineListener(this.offlineListener)},void 0===e.endpoint.pollFrequency)throw new Error("frequency needed for polling subscription");this.endpoint=e.endpoint,this.frequency=e.endpoint.pollFrequency,this.args=e.args,this.key=e.key,this.frequencyHistogram.set(this.frequency,1),this.controller=t,this.connectionListener=s||new V,this.connectionListener.isOnline()?this.onlineListener():this.offlineListener()}add(e){void 0!==e&&(this.frequencyHistogram.has(e)?this.frequencyHistogram.set(e,this.frequencyHistogram.get(e)+1):(this.frequencyHistogram.set(e,1),e<this.frequency&&(this.frequency=e,this.run())))}remove(e){if(void 0===e)return!1;if(this.frequencyHistogram.has(e)&&(this.frequencyHistogram.set(e,this.frequencyHistogram.get(e)-1),this.frequencyHistogram.get(e)<1)){if(this.frequencyHistogram.delete(e),0===this.frequencyHistogram.size)return this.cleanup(),!0;e<=this.frequency&&(this.frequency=Math.min(...this.frequencyHistogram.keys()),this.run())}return!1}cleanup(){this.intervalId&&(clearInterval(this.intervalId),delete this.intervalId),this.lastIntervalId&&(clearInterval(this.lastIntervalId),delete this.lastIntervalId),this.startId&&(clearTimeout(this.startId),delete this.startId),this.connectionListener.removeOnlineListener(this.onlineListener),this.connectionListener.removeOfflineListener(this.offlineListener)}update(){const e=this.endpoint,t=function(...t){return e.call(this,...t)};Object.assign(t,this.endpoint),t.dataExpiryLength=this.frequency/2,t.errorExpiryLength=this.frequency/10,t.errorPolicy=()=>"soft",t.key=()=>this.key,this.controller.fetch(t,...this.args).catch((()=>null))}run(){this.startId||(this.intervalId&&(this.lastIntervalId=this.intervalId),this.intervalId=setInterval((()=>{this.lastIntervalId&&(clearInterval(this.lastIntervalId),delete this.lastIntervalId),this.intervalId&&this.update()}),this.frequency))}lastFetchTime(){var e,t;return null!=(e=null==(t=this.controller.getState().meta[this.key])?void 0:t.date)?e:0}},e.ResetError=N,e.SubscriptionManager=class{constructor(e){this.subscriptions={},this.controller=new M,this.Subscription=e,this.middleware=e=>(this.controller=e,e=>t=>{switch(t.type){case c:try{this.handleSubscribe(t)}catch(e){console.error(e)}return Promise.resolve();case l:return this.handleUnsubscribe(t),Promise.resolve();default:return e(t)}})}cleanup(){for(const e in this.subscriptions)this.subscriptions[e].cleanup()}handleSubscribe(e){const t=e.key;if(t in this.subscriptions){const s=e.endpoint.pollFrequency;this.subscriptions[t].add(s)}else this.subscriptions[t]=new this.Subscription(e,this.controller)}handleUnsubscribe(e){const t=e.key;if(t in this.subscriptions){const s=e.endpoint.pollFrequency;this.subscriptions[t].remove(s)&&delete this.subscriptions[t]}}getMiddleware(){return this.middleware}},e.__INTERNAL__=L,e.actionTypes=f,e.actions=T,e.applyManager=function(e,t){return e.map(((e,s)=>{const i=e.getMiddleware();return({dispatch:e,getState:n})=>(0===s&&(t.dispatch=e,t.getState=n),i(t))}))},e.createReducer=E,e.initialState=b,Object.defineProperty(e,"__esModule",{value:!0})}));
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@data-client/normalizr")):"function"==typeof define&&define.amd?define(["exports","@data-client/normalizr"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).RDC=e.RDC||{},e.RDC.Core={}),e.normalizr)}(this,(function(e,t){"use strict";function s(e,t){const s=Date.now();return{fetchedAt:null!=t?t:s,date:s,expiresAt:s+e}}const i="rdc/fetch",n="rdc/set",r="rdc/setresponse",o="rdc/optimistic",a="rdc/reset",c="rdc/subscribe",l="rdc/unsubscribe",h="rdc/invalidate",d="rdc/invalidateall",u="rdc/expireall",p="rdc/gc";var f=Object.freeze({__proto__:null,FETCH_TYPE:i,SET_TYPE:n,SET_RESPONSE_TYPE:r,OPTIMISTIC_TYPE:o,RESET_TYPE:a,SUBSCRIBE_TYPE:c,UNSUBSCRIBE_TYPE:l,INVALIDATE_TYPE:h,INVALIDATEALL_TYPE:d,EXPIREALL_TYPE:u,GC_TYPE:p});function g(e,t,i){var n;return{type:o,key:e.key(...t),args:t,endpoint:e,meta:s(null!=(n=e.dataExpiryLength)?n:6e4,i)}}class y extends Error{}function m(e,t,s){return"AbortError"===s.name?Object.assign({},e,{optimistic:v(e,t)}):Object.assign({},e,{meta:Object.assign({},e.meta,{[t.key]:{date:t.meta.date,error:s,expiresAt:t.meta.expiresAt,errorPolicy:null==t.endpoint.errorPolicy?void 0:t.endpoint.errorPolicy(s)}}),optimistic:v(e,t)})}function v(e,t){return e.optimistic.filter((e=>e.key!==t.key||(e.type===o?e.meta.fetchedAt!==t.meta.fetchedAt:e.meta.date>t.meta.date)))}function E(e){return function(s,c){switch(s||(s=b),c.type){case p:return c.entities.forEach((([e,t])=>{var i,n;null==(i=s.entities[e])||delete i[t],null==(n=s.entityMeta[e])||delete n[t]})),c.endpoints.forEach((e=>{delete s.endpoints[e],delete s.meta[e]})),s;case i:return function(e,t){if(t.endpoint.getOptimisticResponse&&t.endpoint.sideEffect){const s=g(t.endpoint,t.args,t.meta.fetchedAt);return Object.assign({},e,{optimistic:[...e.optimistic,s]})}return e}(s,c);case o:case r:return function(e,s,i){if(s.error)return m(e,s,s.response);try{var n;let r;if(s.type===o){if(!s.endpoint.getOptimisticResponse)return e;try{r=s.endpoint.getOptimisticResponse.call(s.endpoint,i.snapshot(e,s.meta.fetchedAt),...s.args)}catch(t){if(t.constructor===y)return e;throw t}}else r=s.response;const{result:a,entities:c,indexes:l,entityMeta:h}=t.normalize(s.endpoint.schema,r,s.args,e,s.meta),d=Object.assign({},e.endpoints,{[s.key]:a});try{if(s.endpoint.update){const e=s.endpoint.update(a,...s.args);Object.keys(e).forEach((t=>{d[t]=e[t](d[t])}))}}catch(e){console.error(`The following error occured during Endpoint.update() for ${s.key}`),console.error(e)}return{entities:c,endpoints:d,indexes:l,meta:Object.assign({},e.meta,{[s.key]:{date:s.meta.date,expiresAt:s.meta.expiresAt,prevExpiresAt:null==(n=e.meta[s.key])?void 0:n.expiresAt}}),entityMeta:h,optimistic:v(e,s),lastReset:e.lastReset}}catch(t){return"object"==typeof t&&(t.message=`Error processing ${s.key}\n\nFull Schema: ${JSON.stringify(s.endpoint.schema,void 0,2)}\n\nError:\n${t.message}`,"response"in s&&(t.response=s.response),t.status=400),m(e,s,t)}}(s,c,e);case n:return function(e,s,i){let n;if("function"==typeof s.value){const t=i.get(s.schema,...s.args,e);if(void 0===t)return e;n=s.value(t)}else n=s.value;try{const{entities:i,indexes:r,entityMeta:o}=t.normalize(s.schema,n,s.args,e,s.meta);return{entities:i,endpoints:e.endpoints,indexes:r,meta:e.meta,entityMeta:o,optimistic:e.optimistic,lastReset:e.lastReset}}catch(t){return e}}(s,c,e);case d:case h:return function(e,t){const s=Object.assign({},e.endpoints),i=Object.assign({},e.meta),n=e=>{delete s[e];const t=Object.assign({},i[e],{expiresAt:0,invalidated:!0});delete t.error,i[e]=t};return t.type===h?n(t.key):Object.keys(s).forEach((e=>{t.testKey(e)&&n(e)})),Object.assign({},e,{endpoints:s,meta:i})}(s,c);case u:return function(e,t){const s=Object.assign({},e.meta);return Object.keys(s).forEach((e=>{t.testKey(e)&&(s[e]=Object.assign({},s[e],{expiresAt:1}))})),Object.assign({},e,{meta:s})}(s,c);case a:return Object.assign({},b,{lastReset:c.date});default:return s}}}const b={entities:{},endpoints:{},indexes:{},meta:{},entityMeta:{},optimistic:[],lastReset:0};var L=Object.freeze({__proto__:null,MemoCache:t.MemoCache,INVALID:t.INVALID,initialState:b});function O(e,{args:t}){return{type:c,endpoint:e,args:t,key:e.key(...t)}}function S(e,{args:t}){return{type:l,key:e.key(...t),args:t,endpoint:e}}var I="undefined"!=typeof FormData?e=>e instanceof FormData?Object.fromEntries(e.entries()):e:e=>e;function x(e,{args:t,fetchedAt:i,response:n,error:o=!1}){var a,c;const l=o?null!=(a=e.errorExpiryLength)?a:1e3:null!=(c=e.dataExpiryLength)?c:6e4;return{type:r,key:e.key(...t),response:n,args:t.map(I),endpoint:e,meta:s(l,i),error:o}}function w(e,{args:t,fetchedAt:i,value:r}){return{type:n,value:r,args:t.map(I),schema:e,meta:s(6e4,i)}}function A(){return{type:a,date:Date.now()}}function k(e){return{type:d,testKey:e}}function j(e,{args:t}){return{type:h,key:e.key(...t)}}function _(e,{args:t}){let s=0,n=0;const r=new Promise(((e,t)=>{[s,n]=[e,t]})),o={fetchedAt:Date.now(),resolve:s,reject:n,promise:r};return{type:i,key:e.key(...t),args:t,endpoint:e,meta:o}}function R(e){return{type:u,testKey:e}}var T=Object.freeze({__proto__:null,createSubscription:O,createUnsubscription:S,createSetResponse:x,createSet:w,createReset:A,createOptimistic:g,createMeta:s,createInvalidateAll:k,createInvalidate:j,createFetch:_,createExpireAll:R});function P(e,t){return e.meta[t]}const q=e=>{throw new Error("Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.")},D=()=>b;class M{constructor({dispatch:e=q,getState:s=D,memo:i=new t.MemoCache}={}){this.fetch=(e,...s)=>{const i=_(e,{args:s});return this.dispatch(i),e.schema?i.meta.promise.then((i=>t.denormalize(e.schema,i,{},s))):i.meta.promise},this.fetchIfStale=(e,...s)=>{const{data:i,expiresAt:n,expiryStatus:r}=this.getResponse(e,...s,this.getState());return r!==t.ExpiryStatus.Invalid&&Date.now()<=n?i:this.fetch(e,...s)},this.invalidate=(e,...t)=>null!==t[0]?this.dispatch(j(e,{args:t})):Promise.resolve(),this.invalidateAll=e=>this.dispatch(k((t=>e.testKey(t)))),this.expireAll=e=>this.dispatch(R((t=>e.testKey(t)))),this.resetEntireStore=()=>this.dispatch(A()),this.setResponse=(e,...t)=>{const s=t[t.length-1],i=x(e,{args:t.slice(0,t.length-1),response:s});return this.dispatch(i)},this.setError=(e,...t)=>{const s=t[t.length-1],i=x(e,{args:t.slice(0,t.length-1),response:s,error:!0});return this.dispatch(i)},this.resolve=(e,t)=>this.dispatch(x(e,t)),this.subscribe=(e,...t)=>null!==t[0]?this.dispatch(O(e,{args:t})):Promise.resolve(),this.unsubscribe=(e,...t)=>null!==t[0]?this.dispatch(S(e,{args:t})):Promise.resolve(),this.snapshot=(e,t)=>new H(this,e,t),this.dispatch=e,this.getState=s,this.memo=i}set(e,...t){const s=t[t.length-1],i=w(e,{args:t.slice(0,t.length-1),value:s});return this.dispatch(i)}getError(e,...t){if(null===t[0])return;const s=t[t.length-1],i=t.slice(0,t.length-1),n=e.key(...i),r=P(s,n);return void 0===s.endpoints[n]||"soft"!==(null==r?void 0:r.errorPolicy)?null==r?void 0:r.error:void 0}getResponse(e,...s){const i=s[s.length-1],n=s.slice(0,s.length-1).map(I),r=1!==n.length||null!==n[0],o=r?e.key(...n):"",a=r?i.endpoints[o]:void 0,c=e.schema,l=P(i,o);let h=null==l?void 0:l.expiresAt;const d=void 0===a&&void 0!==c,u=d?this.memo.buildQueryKey(c,n,i.entities,i.indexes,o):a;if(!r)return{data:u,expiryStatus:t.ExpiryStatus.Valid,expiresAt:1/0};let p=!1;if(d)p=!t.validateQueryKey(u);else if(!c||!C(c))return{data:a,expiryStatus:null!=l&&l.invalidated?t.ExpiryStatus.Invalid:a&&!e.invalidIfStale?t.ExpiryStatus.Valid:t.ExpiryStatus.InvalidIfStale,expiresAt:h||0};const{data:f,paths:g}=this.memo.denormalize(c,u,i.entities,n);return!h&&p&&(h=1),this.getSchemaResponse(f,g,i.entityMeta,h,e.invalidIfStale||p,l)}get(e,...t){const s=t[t.length-1],i=t.slice(0,t.length-1).map(I);return this.memo.query(e,i,s.entities,s.indexes)}getSchemaResponse(e,s,i,n,r,o={}){const a="symbol"==typeof e;n||(n=function(e,t){let s=1/0;for(const{pk:n,key:r}of e){var i;const e=null==(i=t[r])||null==(i=i[n])?void 0:i.expiresAt;e<s&&(s=e)}return s}(s,i));return{data:e,expiryStatus:null!=o&&o.invalidated||a&&(null==o||!o.error)?t.ExpiryStatus.Invalid:a||r?t.ExpiryStatus.InvalidIfStale:t.ExpiryStatus.Valid,expiresAt:n}}}function C(e){if(t.isEntity(e))return!0;if(Array.isArray(e))return 0!==e.length&&C(e[0]);if(e&&("object"==typeof e||"function"==typeof e)){const t="schema"in e?e.schema:e;return"function"==typeof t?C(t):Object.values(t).some((e=>C(e)))}return!1}class H{constructor(e,t,s=0){this.state=void 0,this.controller=void 0,this.fetchedAt=void 0,this.abort=H.abort,this.state=t,this.controller=e,this.fetchedAt=s}getResponse(e,...t){return this.controller.getResponse(e,...t,this.state)}getError(e,...t){return this.controller.getError(e,...t,this.state)}get(e,...t){return this.controller.get(e,...t,this.state)}}H.abort=new y;class N extends Error{constructor(){super("Aborted due to RESET"),this.name="ResetError"}}class F{isOnline(){return void 0===navigator.onLine||navigator.onLine}addOnlineListener(e){addEventListener("online",e)}removeOnlineListener(e){removeEventListener("online",e)}addOfflineListener(e){addEventListener("offline",e)}removeOfflineListener(e){removeEventListener("offline",e)}}class z{isOnline(){return!0}addOnlineListener(){}removeOnlineListener(){}addOfflineListener(){}removeOfflineListener(){}}let Y;Y="undefined"!=typeof navigator&&"function"==typeof addEventListener?F:z;var V=Y;let B={};Object.hasOwn=Object.hasOwn||function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},Object.defineProperty(e,"ExpiryStatus",{enumerable:!0,get:function(){return t.ExpiryStatus}}),e.Controller=M,e.DefaultConnectionListener=V,e.DevToolsManager=class{constructor(e,t){this.started=!1,this.actions=[],this.maxBufferLength=100,this.devTools="undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION__&&window.__REDUX_DEVTOOLS_EXTENSION__.connect(Object.assign({},B,e)),null!=e&&e.maxAge&&(this.maxBufferLength=2*e.maxAge),this.devTools?this.middleware=e=>{this.controller=e;const s=E(e);let i=e.getState();return n=>r=>{const o=null==t?void 0:t(r),a=n(r);return i=this.started?s(i,r):e.getState(),a.then((()=>{o||this.handleAction(r,i.optimistic.reduce(s,i))})),a}}:this.middleware=()=>e=>t=>e(t)}handleAction(e,t){this.started?this.devTools.send(e,t):(this.actions.length>this.maxBufferLength&&(this.actions=this.actions.slice(this.maxBufferLength/2)),this.actions.push([e,t]))}init(e){this.devTools&&this.devTools.init(e)}cleanup(){}getMiddleware(){return this.middleware}},e.LogoutManager=class{constructor({handleLogout:e,shouldLogout:t}={}){e&&(this.handleLogout=e),t&&(this.shouldLogout=t),this.middleware=e=>t=>async s=>{await t(s),s.type===r&&s.error&&this.shouldLogout(s.response)&&this.handleLogout(e)}}cleanup(){}getMiddleware(){return this.middleware}shouldLogout(e){return 401===e.status}handleLogout(e){e.resetEntireStore()}},e.NetworkManager=class{constructor({dataExpiryLength:e=6e4,errorExpiryLength:t=1e3}={}){this.fetched=Object.create(null),this.resolvers={},this.rejectors={},this.fetchedAt={},this.controller=new M,this.dataExpiryLength=e,this.errorExpiryLength=t,this.middleware=e=>(this.controller=e,t=>s=>{switch(s.type){case i:return this.handleFetch(s),void 0!==s.endpoint.getOptimisticResponse&&s.endpoint.sideEffect?t(s):Promise.resolve();case r:return t(s).then((()=>{if(s.key in this.fetched){var t;const i=null==(t=e.getState().meta[s.key])?void 0:t.error;i?this.handleSet(x(s.endpoint,{args:s.args,response:i,fetchedAt:s.meta.fetchedAt,error:!0})):this.handleSet(s)}}));case a:{const e=Object.assign({},this.rejectors);return this.clearAll(),t(s).then((()=>{for(const t in e)e[t](new N)}))}default:return t(s)}})}skipLogging(e){return e.type===i&&e.key in this.fetched}init(){delete this.cleanupDate}cleanup(){this.cleanupDate=Date.now()}allSettled(){const e=Object.values(this.fetched);if(e.length)return Promise.allSettled(e)}clearAll(){for(const e in this.rejectors)this.clear(e)}clear(e){this.fetched[e].catch((()=>{})),delete this.resolvers[e],delete this.rejectors[e],delete this.fetched[e],delete this.fetchedAt[e]}getLastReset(){return this.cleanupDate?this.cleanupDate:this.controller.getState().lastReset}handleFetch(e){const{resolve:t,reject:s,fetchedAt:i}=e.meta,n=!e.endpoint.sideEffect,r=()=>{let r=e.endpoint(...e.args);return n||(r=(e=>e.then((e=>(t(e),e))).catch((e=>{throw s(e),e})))(r)),r=r.then((t=>{let s=this.getLastReset();return i>=s&&this.controller.resolve(e.endpoint,{args:e.args,response:t,fetchedAt:i}),t})).catch((t=>{const s=this.getLastReset();throw i>=s&&this.controller.resolve(e.endpoint,{args:e.args,response:t,fetchedAt:i,error:!0}),t})),r};return n?this.throttle(e.key,r,i).then((e=>t(e))).catch((e=>s(e))):r().catch((()=>{}))}handleSet(e){if(e.key in this.fetched){let t;t=e.error?this.rejectors[e.key]:this.resolvers[e.key],t(e.response),this.clear(e.key)}}getMiddleware(){return this.middleware}throttle(e,t,s){const i=this.getLastReset();return e in this.fetched&&this.fetchedAt[e]>i||(this.fetched[e]=new Promise(((t,s)=>{this.resolvers[e]=t,this.rejectors[e]=s})),this.fetchedAt[e]=s,this.idleCallback((()=>{t().catch((()=>null))}),{timeout:500})),this.fetched[e]}idleCallback(e,t){e()}},e.PollingSubscription=class{constructor(e,t,s){if(this.frequencyHistogram=new Map,this.offlineListener=()=>{this.cleanup(),this.connectionListener.addOnlineListener(this.onlineListener)},this.onlineListener=()=>{this.connectionListener.removeOnlineListener(this.onlineListener);const e=Date.now();this.startId=setTimeout((()=>{this.startId&&(delete this.startId,this.update(),this.run())}),Math.max(0,this.lastFetchTime()-e+this.frequency)),this.connectionListener.addOfflineListener(this.offlineListener)},void 0===e.endpoint.pollFrequency)throw new Error("frequency needed for polling subscription");this.endpoint=e.endpoint,this.frequency=e.endpoint.pollFrequency,this.args=e.args,this.key=e.key,this.frequencyHistogram.set(this.frequency,1),this.controller=t,this.connectionListener=s||new V,this.connectionListener.isOnline()?this.onlineListener():this.offlineListener()}add(e){void 0!==e&&(this.frequencyHistogram.has(e)?this.frequencyHistogram.set(e,this.frequencyHistogram.get(e)+1):(this.frequencyHistogram.set(e,1),e<this.frequency&&(this.frequency=e,this.run())))}remove(e){if(void 0===e)return!1;if(this.frequencyHistogram.has(e)&&(this.frequencyHistogram.set(e,this.frequencyHistogram.get(e)-1),this.frequencyHistogram.get(e)<1)){if(this.frequencyHistogram.delete(e),0===this.frequencyHistogram.size)return this.cleanup(),!0;e<=this.frequency&&(this.frequency=Math.min(...this.frequencyHistogram.keys()),this.run())}return!1}cleanup(){this.intervalId&&(clearInterval(this.intervalId),delete this.intervalId),this.lastIntervalId&&(clearInterval(this.lastIntervalId),delete this.lastIntervalId),this.startId&&(clearTimeout(this.startId),delete this.startId),this.connectionListener.removeOnlineListener(this.onlineListener),this.connectionListener.removeOfflineListener(this.offlineListener)}update(){const e=this.endpoint,t=function(...t){return e.call(this,...t)};Object.assign(t,this.endpoint),t.dataExpiryLength=this.frequency/2,t.errorExpiryLength=this.frequency/10,t.errorPolicy=()=>"soft",t.key=()=>this.key,this.controller.fetch(t,...this.args).catch((()=>null))}run(){this.startId||(this.intervalId&&(this.lastIntervalId=this.intervalId),this.intervalId=setInterval((()=>{this.lastIntervalId&&(clearInterval(this.lastIntervalId),delete this.lastIntervalId),this.intervalId&&this.update()}),this.frequency))}lastFetchTime(){var e,t;return null!=(e=null==(t=this.controller.getState().meta[this.key])?void 0:t.date)?e:0}},e.ResetError=N,e.SubscriptionManager=class{constructor(e){this.subscriptions={},this.controller=new M,this.Subscription=e,this.middleware=e=>(this.controller=e,e=>t=>{switch(t.type){case c:try{this.handleSubscribe(t)}catch(e){console.error(e)}return Promise.resolve();case l:return this.handleUnsubscribe(t),Promise.resolve();default:return e(t)}})}cleanup(){for(const e in this.subscriptions)this.subscriptions[e].cleanup()}handleSubscribe(e){const t=e.key;if(t in this.subscriptions){const s=e.endpoint.pollFrequency;this.subscriptions[t].add(s)}else this.subscriptions[t]=new this.Subscription(e,this.controller)}handleUnsubscribe(e){const t=e.key;if(t in this.subscriptions){const s=e.endpoint.pollFrequency;this.subscriptions[t].remove(s)&&delete this.subscriptions[t]}}getMiddleware(){return this.middleware}},e.__INTERNAL__=L,e.actionTypes=f,e.actions=T,e.applyManager=function(e,t){return e.map(((e,s)=>{const i=e.getMiddleware();return({dispatch:e,getState:n})=>(0===s&&(t.dispatch=e,t.getState=n),i(t))}))},e.createReducer=E,e.initialState=b,Object.defineProperty(e,"__esModule",{value:!0})}));

@@ -21,3 +21,6 @@ import { SET_RESPONSE_TYPE, FETCH_TYPE, RESET_TYPE } from '../actionTypes.js';

export default class NetworkManager {
constructor(dataExpiryLength = 60000, errorExpiryLength = 1000) {
constructor({
dataExpiryLength = 60000,
errorExpiryLength = 1000
} = {}) {
this.fetched = Object.create(null);

@@ -265,2 +268,2 @@ this.resolvers = {};

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTRVRfUkVTUE9OU0VfVFlQRSIsIkZFVENIX1RZUEUiLCJSRVNFVF9UWVBFIiwiY3JlYXRlU2V0UmVzcG9uc2UiLCJDb250cm9sbGVyIiwiUmVzZXRFcnJvciIsIkVycm9yIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiTmV0d29ya01hbmFnZXIiLCJkYXRhRXhwaXJ5TGVuZ3RoIiwiZXJyb3JFeHBpcnlMZW5ndGgiLCJmZXRjaGVkIiwiT2JqZWN0IiwiY3JlYXRlIiwicmVzb2x2ZXJzIiwicmVqZWN0b3JzIiwiZmV0Y2hlZEF0IiwiY29udHJvbGxlciIsIm1pZGRsZXdhcmUiLCJuZXh0IiwiYWN0aW9uIiwidHlwZSIsImhhbmRsZUZldGNoIiwiZW5kcG9pbnQiLCJnZXRPcHRpbWlzdGljUmVzcG9uc2UiLCJ1bmRlZmluZWQiLCJzaWRlRWZmZWN0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwia2V5IiwiX2NvbnRyb2xsZXIkZ2V0U3RhdGUkIiwiZXJyb3IiLCJnZXRTdGF0ZSIsIm1ldGEiLCJoYW5kbGVTZXQiLCJhcmdzIiwicmVzcG9uc2UiLCJhc3NpZ24iLCJjbGVhckFsbCIsImsiLCJza2lwTG9nZ2luZyIsImluaXQiLCJjbGVhbnVwRGF0ZSIsImNsZWFudXAiLCJEYXRlIiwibm93IiwiYWxsU2V0dGxlZCIsImZldGNoZXMiLCJ2YWx1ZXMiLCJsZW5ndGgiLCJjbGVhciIsImNhdGNoIiwiZ2V0TGFzdFJlc2V0IiwibGFzdFJlc2V0IiwicmVqZWN0IiwidGhyb3R0bGUiLCJkZWZlcmVkRmV0Y2giLCJwcm9taXNlIiwicmVzb2x2ZVByb21pc2UiLCJkYXRhIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiaXNOYU4iLCJjb25zb2xlIiwicHJvbWlzZUhhbmRsZXIiLCJnZXRNaWRkbGV3YXJlIiwiZmV0Y2giLCJpZGxlQ2FsbGJhY2siLCJ0aW1lb3V0IiwiY2FsbGJhY2siLCJvcHRpb25zIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hbmFnZXIvTmV0d29ya01hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU0VUX1JFU1BPTlNFX1RZUEUsIEZFVENIX1RZUEUsIFJFU0VUX1RZUEUgfSBmcm9tICcuLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgeyBjcmVhdGVTZXRSZXNwb25zZSB9IGZyb20gJy4uL2NvbnRyb2xsZXIvYWN0aW9ucy9pbmRleC5qcyc7XG5pbXBvcnQgQ29udHJvbGxlciBmcm9tICcuLi9jb250cm9sbGVyL0NvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHR5cGUge1xuICBGZXRjaEFjdGlvbixcbiAgTWFuYWdlcixcbiAgQWN0aW9uVHlwZXMsXG4gIE1pZGRsZXdhcmVBUEksXG4gIE1pZGRsZXdhcmUsXG4gIFNldFJlc3BvbnNlQWN0aW9uLFxufSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBjbGFzcyBSZXNldEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBuYW1lID0gJ1Jlc2V0RXJyb3InO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdBYm9ydGVkIGR1ZSB0byBSRVNFVCcpO1xuICB9XG59XG5cbi8qKiBIYW5kbGVzIGFsbCBhc3luYyBuZXR3b3JrIGRpc3BhdGNoZXNcbiAqXG4gKiBEZWR1cGVzIGNvbmN1cnJlbnQgcmVxdWVzdHMgYnkga2VlcGluZyB0cmFjayBvZiBhbGwgZmV0Y2hlcyBpbiBmbGlnaHRcbiAqIGFuZCByZXR1cm5pbmcgZXhpc3RpbmcgcHJvbWlzZXMgZm9yIHJlcXVlc3RzIGFscmVhZHkgaW4gZmxpZ2h0LlxuICpcbiAqIEludGVyZmFjZXMgd2l0aCBzdG9yZSB2aWEgYSByZWR1eC1jb21wYXRpYmxlIG1pZGRsZXdhcmUuXG4gKlxuICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvTmV0d29ya01hbmFnZXJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV0d29ya01hbmFnZXIgaW1wbGVtZW50cyBNYW5hZ2VyIHtcbiAgcHJvdGVjdGVkIGZldGNoZWQ6IHsgW2s6IHN0cmluZ106IFByb21pc2U8YW55PiB9ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcHJvdGVjdGVkIHJlc29sdmVyczogeyBbazogc3RyaW5nXTogKHZhbHVlPzogYW55KSA9PiB2b2lkIH0gPSB7fTtcbiAgcHJvdGVjdGVkIHJlamVjdG9yczogeyBbazogc3RyaW5nXTogKHZhbHVlPzogYW55KSA9PiB2b2lkIH0gPSB7fTtcbiAgcHJvdGVjdGVkIGZldGNoZWRBdDogeyBbazogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcbiAgZGVjbGFyZSByZWFkb25seSBkYXRhRXhwaXJ5TGVuZ3RoOiBudW1iZXI7XG4gIGRlY2xhcmUgcmVhZG9ubHkgZXJyb3JFeHBpcnlMZW5ndGg6IG51bWJlcjtcbiAgcHJvdGVjdGVkIGRlY2xhcmUgbWlkZGxld2FyZTogTWlkZGxld2FyZTtcbiAgcHJvdGVjdGVkIGNvbnRyb2xsZXI6IENvbnRyb2xsZXIgPSBuZXcgQ29udHJvbGxlcigpO1xuICBkZWNsYXJlIGNsZWFudXBEYXRlPzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGRhdGFFeHBpcnlMZW5ndGggPSA2MDAwMCwgZXJyb3JFeHBpcnlMZW5ndGggPSAxMDAwKSB7XG4gICAgdGhpcy5kYXRhRXhwaXJ5TGVuZ3RoID0gZGF0YUV4cGlyeUxlbmd0aDtcbiAgICB0aGlzLmVycm9yRXhwaXJ5TGVuZ3RoID0gZXJyb3JFeHBpcnlMZW5ndGg7XG5cbiAgICB0aGlzLm1pZGRsZXdhcmUgPSA8QyBleHRlbmRzIE1pZGRsZXdhcmVBUEk+KGNvbnRyb2xsZXI6IEMpID0+IHtcbiAgICAgIHRoaXMuY29udHJvbGxlciA9IGNvbnRyb2xsZXI7XG4gICAgICByZXR1cm4gKG5leHQ6IENbJ2Rpc3BhdGNoJ10pOiBDWydkaXNwYXRjaCddID0+XG4gICAgICAgIChhY3Rpb24pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIEZFVENIX1RZUEU6XG4gICAgICAgICAgICAgIHRoaXMuaGFuZGxlRmV0Y2goYWN0aW9uKTtcbiAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgb25seSBjYXNlIHRoYXQgY2F1c2VzIGFueSBzdGF0ZSBjaGFuZ2VcbiAgICAgICAgICAgICAgLy8gSXQncyBpbXBvcnRhbnQgdG8gaW50ZXJjZXB0IG90aGVyIGZldGNoZXMgYXMgd2UgZG9uJ3Qgd2FudCB0byB0cmlnZ2VyIHJlZHVjZXJzIGR1cmluZ1xuICAgICAgICAgICAgICAvLyByZW5kZXIgLSBzbyB3ZSBuZWVkIHRvIHN0b3AgJ3JlYWRvbmx5JyBmZXRjaGVzIHdoaWNoIGNhbiBiZSB0cmlnZ2VyZWQgaW4gcmVuZGVyXG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBhY3Rpb24uZW5kcG9pbnQuZ2V0T3B0aW1pc3RpY1Jlc3BvbnNlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICBhY3Rpb24uZW5kcG9pbnQuc2lkZUVmZmVjdFxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV4dChhY3Rpb24pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgIGNhc2UgU0VUX1JFU1BPTlNFX1RZUEU6XG4gICAgICAgICAgICAgIC8vIG9ubHkgc2V0IGFmdGVyIG5ldyBzdGF0ZSBpcyBjb21wdXRlZFxuICAgICAgICAgICAgICByZXR1cm4gbmV4dChhY3Rpb24pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhY3Rpb24ua2V5IGluIHRoaXMuZmV0Y2hlZCkge1xuICAgICAgICAgICAgICAgICAgLy8gTm90ZTogbWV0YSAqbXVzdCogYmUgc2V0IGJ5IHJlZHVjZXIgc28gdGhpcyBzaG91bGQgYmUgc2FmZVxuICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBjb250cm9sbGVyLmdldFN0YXRlKCkubWV0YVthY3Rpb24ua2V5XT8uZXJyb3I7XG4gICAgICAgICAgICAgICAgICAvLyBwcm9jZXNzaW5nIGVycm9ycyByZXN1bHQgaW4gc3RhdGUgbWV0YSBoYXZpbmcgZXJyb3IsIHNvIHdlIHNob3VsZCByZWplY3QgdGhlIHByb21pc2VcbiAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNldChcbiAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTZXRSZXNwb25zZShhY3Rpb24uZW5kcG9pbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M6IGFjdGlvbi5hcmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6IGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hlZEF0OiBhY3Rpb24ubWV0YS5mZXRjaGVkQXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU2V0KGFjdGlvbik7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgUkVTRVRfVFlQRToge1xuICAgICAgICAgICAgICBjb25zdCByZWplY3RvcnMgPSB7IC4uLnRoaXMucmVqZWN0b3JzIH07XG5cbiAgICAgICAgICAgICAgdGhpcy5jbGVhckFsbCgpO1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dChhY3Rpb24pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHRoZXJlIGNvdWxkIGJlIGV4dGVybmFsIGxpc3RlbmVycyB0byB0aGUgcHJvbWlzZVxuICAgICAgICAgICAgICAgIC8vIHRoaXMgbXVzdCBoYXBwZW4gYWZ0ZXIgY29tbWl0IHNvIG91ciBvd24gcmVqZWN0b3Iga25vd3Mgbm90IHRvIGRpc3BhdGNoIGFuIGVycm9yIGJhc2VkIG9uIHRoaXNcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGsgaW4gcmVqZWN0b3JzKSB7XG4gICAgICAgICAgICAgICAgICByZWplY3RvcnNba10obmV3IFJlc2V0RXJyb3IoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KGFjdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG4gIH1cblxuICAvKiogVXNlZCBieSBEZXZ0b29sc01hbmFnZXIgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gbG9nIGFuIGFjdGlvbiAqL1xuICBza2lwTG9nZ2luZyhhY3Rpb246IEFjdGlvblR5cGVzKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gYWN0aW9uLnR5cGUgPT09IEZFVENIX1RZUEUgJiYgYWN0aW9uLmtleSBpbiB0aGlzLmZldGNoZWQ7XG4gIH1cblxuICAvKiogT24gbW91bnQgKi9cbiAgaW5pdCgpIHtcbiAgICBkZWxldGUgdGhpcy5jbGVhbnVwRGF0ZTtcbiAgfVxuXG4gIC8qKiBFbnN1cmVzIGFsbCBwcm9taXNlcyBhcmUgY29tcGxldGVkIGJ5IHJlamVjdGluZyByZW1haW5pbmcuICovXG4gIGNsZWFudXAoKSB7XG4gICAgLy8gZW5zdXJlIG5vIGRpc3BhdGNoZXMgYWZ0ZXIgdW5tb3VudFxuICAgIC8vIHRoaXMgbXVzdCBiZSByZXZlcnNpYmxlIChkb25lIGluIGluaXQpIHNvIHVzZUVmZmVjdCgpIHJlbWFpbnMgc3ltbWV0cmljXG4gICAgdGhpcy5jbGVhbnVwRGF0ZSA9IERhdGUubm93KCk7XG4gIH1cblxuICBhbGxTZXR0bGVkKCkge1xuICAgIGNvbnN0IGZldGNoZXMgPSBPYmplY3QudmFsdWVzKHRoaXMuZmV0Y2hlZCk7XG4gICAgaWYgKGZldGNoZXMubGVuZ3RoKSByZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKGZldGNoZXMpO1xuICB9XG5cbiAgLyoqIENsZWFyIGFsbCBwcm9taXNlIHN0YXRlICovXG4gIHByb3RlY3RlZCBjbGVhckFsbCgpIHtcbiAgICBmb3IgKGNvbnN0IGsgaW4gdGhpcy5yZWplY3RvcnMpIHtcbiAgICAgIHRoaXMuY2xlYXIoayk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENsZWFyIHByb21pc2Ugc3RhdGUgZm9yIGEgZ2l2ZW4ga2V5ICovXG4gIHByb3RlY3RlZCBjbGVhcihrZXk6IHN0cmluZykge1xuICAgIHRoaXMuZmV0Y2hlZFtrZXldLmNhdGNoKCgpID0+IHt9KTtcbiAgICBkZWxldGUgdGhpcy5yZXNvbHZlcnNba2V5XTtcbiAgICBkZWxldGUgdGhpcy5yZWplY3RvcnNba2V5XTtcbiAgICBkZWxldGUgdGhpcy5mZXRjaGVkW2tleV07XG4gICAgZGVsZXRlIHRoaXMuZmV0Y2hlZEF0W2tleV07XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TGFzdFJlc2V0KCkge1xuICAgIGlmICh0aGlzLmNsZWFudXBEYXRlKSByZXR1cm4gdGhpcy5jbGVhbnVwRGF0ZTtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmdldFN0YXRlKCkubGFzdFJlc2V0O1xuICB9XG5cbiAgLyoqIENhbGxlZCB3aGVuIG1pZGRsZXdhcmUgaW50ZXJjZXB0cyAncmRjL2ZldGNoJyBhY3Rpb24uXG4gICAqXG4gICAqIFdpbGwgdGhlbiBzdGFydCBhIHByb21pc2UgZm9yIGEga2V5IGFuZCBwb3RlbnRpYWxseSBzdGFydCB0aGUgbmV0d29ya1xuICAgKiBmZXRjaC5cbiAgICpcbiAgICogVXNlcyB0aHJvdHRsZSBlbmRwb2ludHMgd2l0aG91dCBzaWRlRWZmZWN0cy4gVGhpcyBpcyB2YWx1YWJsZVxuICAgKiBmb3IgZW5zdXJlcyBtdXRhdGlvbiByZXF1ZXN0cyBhbHdheXMgZ28gdGhyb3VnaC5cbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVGZXRjaChhY3Rpb246IEZldGNoQWN0aW9uKSB7XG4gICAgY29uc3QgeyByZXNvbHZlLCByZWplY3QsIGZldGNoZWRBdCB9ID0gYWN0aW9uLm1ldGE7XG4gICAgY29uc3QgdGhyb3R0bGUgPSAhYWN0aW9uLmVuZHBvaW50LnNpZGVFZmZlY3Q7XG5cbiAgICBjb25zdCBkZWZlcmVkRmV0Y2ggPSAoKSA9PiB7XG4gICAgICBsZXQgcHJvbWlzZSA9IGFjdGlvbi5lbmRwb2ludCguLi5hY3Rpb24uYXJncyk7XG4gICAgICBjb25zdCByZXNvbHZlUHJvbWlzZSA9IChcbiAgICAgICAgcHJvbWlzZTogUHJvbWlzZTxzdHJpbmcgfCBudW1iZXIgfCBvYmplY3QgfCBudWxsPixcbiAgICAgICkgPT5cbiAgICAgICAgcHJvbWlzZVxuICAgICAgICAgIC50aGVuKGRhdGEgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICB9KTtcbiAgICAgIC8vIHNjaGVkdWxlIG5vbi10aHJvdHRsZWQgcmVzb2x1dGlvbnMgaW4gYSBtaWNyb3Rhc2sgYmVmb3JlIHNldFxuICAgICAgLy8gdGhpcyBlbmFibGVzIHVzZXJzIGF3YWl0aW5nIHRoZWlyIGZldGNoIHRvIHRyaWdnZXIgYW55IHJlYWN0IHVwZGF0ZXMgbmVlZGVkIHRvIGRlYWxcbiAgICAgIC8vIHdpdGggdXBjb21pbmcgY2hhbmdlcyBiZWNhdXNlIG9mIHRoZSBmZXRjaCAoZm9yIGluc3RhbmNlIGF2b2lkaW5nIHN1c3BlbnNlIGlmIHNvbWV0aGluZyBpcyBkZWxldGVkKVxuICAgICAgaWYgKCF0aHJvdHRsZSkge1xuICAgICAgICBwcm9taXNlID0gcmVzb2x2ZVByb21pc2UocHJvbWlzZSk7XG4gICAgICB9XG4gICAgICBwcm9taXNlID0gcHJvbWlzZVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgbGV0IGxhc3RSZXNldCA9IHRoaXMuZ2V0TGFzdFJlc2V0KCk7XG5cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGlzTmFOKGxhc3RSZXNldCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICdzdGF0ZS5sYXN0UmVzZXQgaXMgTmFOLiBPbmx5IHBvc2l0aXZlIHRpbWVzdGFtcHMgYXJlIHZhbGlkLicsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbGFzdFJlc2V0ID0gMDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBkb24ndCB1cGRhdGUgc3RhdGUgd2l0aCBwcm9taXNlcyBzdGFydGVkIGJlZm9yZSBsYXN0IGNsZWFyXG4gICAgICAgICAgaWYgKGZldGNoZWRBdCA+PSBsYXN0UmVzZXQpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbGxlci5yZXNvbHZlKGFjdGlvbi5lbmRwb2ludCwge1xuICAgICAgICAgICAgICBhcmdzOiBhY3Rpb24uYXJncyxcbiAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgIGZldGNoZWRBdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgY29uc3QgbGFzdFJlc2V0ID0gdGhpcy5nZXRMYXN0UmVzZXQoKTtcbiAgICAgICAgICAvLyBkb24ndCB1cGRhdGUgc3RhdGUgd2l0aCBwcm9taXNlcyBzdGFydGVkIGJlZm9yZSBsYXN0IGNsZWFyXG4gICAgICAgICAgaWYgKGZldGNoZWRBdCA+PSBsYXN0UmVzZXQpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbGxlci5yZXNvbHZlKGFjdGlvbi5lbmRwb2ludCwge1xuICAgICAgICAgICAgICBhcmdzOiBhY3Rpb24uYXJncyxcbiAgICAgICAgICAgICAgcmVzcG9uc2U6IGVycm9yLFxuICAgICAgICAgICAgICBmZXRjaGVkQXQsXG4gICAgICAgICAgICAgIGVycm9yOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KTtcbiAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH07XG5cbiAgICBpZiAodGhyb3R0bGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnRocm90dGxlKGFjdGlvbi5rZXksIGRlZmVyZWRGZXRjaCwgZmV0Y2hlZEF0KVxuICAgICAgICAudGhlbihkYXRhID0+IHJlc29sdmUoZGF0YSkpXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiByZWplY3QoZXJyb3IpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGRlZmVyZWRGZXRjaCgpLmNhdGNoKCgpID0+IHt9KTtcbiAgICB9XG4gIH1cblxuICAvKiogQ2FsbGVkIHdoZW4gbWlkZGxld2FyZSBpbnRlcmNlcHRzIGEgc2V0IGFjdGlvbi5cbiAgICpcbiAgICogV2lsbCByZXNvbHZlIHRoZSBwcm9taXNlIGFzc29jaWF0ZWQgd2l0aCBzZXQga2V5LlxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVNldChhY3Rpb246IFNldFJlc3BvbnNlQWN0aW9uKSB7XG4gICAgLy8gdGhpcyBjYW4gc3RpbGwgdHVybiBvdXQgdG8gYmUgdW50cnVlIHNpbmNlIHRoaXMgaXMgYXN5bmNcbiAgICBpZiAoYWN0aW9uLmtleSBpbiB0aGlzLmZldGNoZWQpIHtcbiAgICAgIGxldCBwcm9taXNlSGFuZGxlcjogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xuICAgICAgaWYgKGFjdGlvbi5lcnJvcikge1xuICAgICAgICBwcm9taXNlSGFuZGxlciA9IHRoaXMucmVqZWN0b3JzW2FjdGlvbi5rZXldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvbWlzZUhhbmRsZXIgPSB0aGlzLnJlc29sdmVyc1thY3Rpb24ua2V5XTtcbiAgICAgIH1cbiAgICAgIHByb21pc2VIYW5kbGVyKGFjdGlvbi5yZXNwb25zZSk7XG4gICAgICAvLyBzaW5jZSB3ZSdyZSByZXNvbHZlZCB3ZSBubyBsb25nZXIgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoaXMgcHJvbWlzZVxuICAgICAgdGhpcy5jbGVhcihhY3Rpb24ua2V5KTtcbiAgICB9XG4gIH1cblxuICAvKiogQXR0YWNoZXMgTmV0d29ya01hbmFnZXIgdG8gc3RvcmVcbiAgICpcbiAgICogSW50ZXJjZXB0cyAncmRjL2ZldGNoJyBhY3Rpb25zIHRvIHN0YXJ0IHJlcXVlc3RzLlxuICAgKlxuICAgKiBSZXNvbHZlL3JlamVjdHMgYSByZXF1ZXN0IHdoZW4gbWF0Y2hpbmcgJ3JkYy9zZXQnIGV2ZW50XG4gICAqIGlzIHNlZW4uXG4gICAqL1xuICBnZXRNaWRkbGV3YXJlKCkge1xuICAgIHJldHVybiB0aGlzLm1pZGRsZXdhcmU7XG4gIH1cblxuICAvKiogRW5zdXJlcyBvbmx5IG9uZSByZXF1ZXN0IGZvciBhIGdpdmVuIGtleSBpcyBpbiBmbGlnaHQgYXQgYW55IHRpbWVcbiAgICpcbiAgICogVXNlcyBrZXkgdG8gZWl0aGVyIHJldHJpZXZlIGluLWZsaWdodCBwcm9taXNlLCBvciBpZiBub3RcbiAgICogY3JlYXRlIGEgbmV3IHByb21pc2UgYW5kIGNhbGwgZmV0Y2guXG4gICAqXG4gICAqIE5vdGU6IFRoZSBuZXcgcHJvbWlzZSBpcyBub3QgYWN0dWFsbHkgdGllZCB0byBmZXRjaCBhdCBhbGwsXG4gICAqIGJ1dCBpcyByZXNvbHZlZCB3aGVuIHRoZSBleHBlY3RlZCAncmVjaWV2ZScgYWN0aW9uIGlzIHByb2Nlc3NlZC5cbiAgICogVGhpcyBlbnN1cmVzIHByb21pc2VzIGFyZSByZXNvbHZlZCBvbmx5IG9uY2UgdGhlaXIgZGF0YSBpcyBwcm9jZXNzZWRcbiAgICogYnkgdGhlIHJlZHVjZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgdGhyb3R0bGUoXG4gICAga2V5OiBzdHJpbmcsXG4gICAgZmV0Y2g6ICgpID0+IFByb21pc2U8YW55PixcbiAgICBmZXRjaGVkQXQ6IG51bWJlcixcbiAgKSB7XG4gICAgY29uc3QgbGFzdFJlc2V0ID0gdGhpcy5nZXRMYXN0UmVzZXQoKTtcbiAgICAvLyB3ZSdyZSBhbHJlYWR5IGZldGNoaW5nIHNvIHJldXNlIHRoZSBwcm9taXNlXG4gICAgLy8gZmV0Y2hlcyBhZnRlciByZXNldCBkbyBub3QgY291bnRcbiAgICBpZiAoa2V5IGluIHRoaXMuZmV0Y2hlZCAmJiB0aGlzLmZldGNoZWRBdFtrZXldID4gbGFzdFJlc2V0KSB7XG4gICAgICByZXR1cm4gdGhpcy5mZXRjaGVkW2tleV07XG4gICAgfVxuXG4gICAgdGhpcy5mZXRjaGVkW2tleV0gPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnJlc29sdmVyc1trZXldID0gcmVzb2x2ZTtcbiAgICAgIHRoaXMucmVqZWN0b3JzW2tleV0gPSByZWplY3Q7XG4gICAgfSk7XG4gICAgdGhpcy5mZXRjaGVkQXRba2V5XSA9IGZldGNoZWRBdDtcblxuICAgIHRoaXMuaWRsZUNhbGxiYWNrKFxuICAgICAgKCkgPT4ge1xuICAgICAgICAvLyBzaW5jZSBvdXIgcmVhbCBwcm9taXNlIGlzIHJlc29sdmVkIHZpYSB0aGUgd3JhcFJlZHVjZXIoKSxcbiAgICAgICAgLy8gd2Ugc2hvdWxkIGp1c3Qgc3RvcCBhbGwgZXJyb3JzIGhlcmUuXG4gICAgICAgIC8vIFRPRE86IGRlY291cGxlIHRoaXMgZnJvbSB1c2VGZXRjaGVyKCkgKHRoYXQncyB3aGF0J3MgZGlzcGF0Y2hpbmcgdGhlIGVycm9yIHRoZSByZXNvbHZlcyBpbiBoZXJlKVxuICAgICAgICBmZXRjaCgpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgICAgfSxcbiAgICAgIHsgdGltZW91dDogNTAwIH0sXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLmZldGNoZWRba2V5XTtcbiAgfVxuXG4gIC8qKiBDYWxscyB0aGUgY2FsbGJhY2sgd2hlbiBjbGllbnQgaXMgbm90ICdidXN5JyB3aXRoIGhpZ2ggcHJpb3JpdHkgaW50ZXJhY3Rpb24gdGFza3NcbiAgICpcbiAgICogT3ZlcnJpZGUgZm9yIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9uc1xuICAgKi9cbiAgcHJvdGVjdGVkIGlkbGVDYWxsYmFjayhcbiAgICBjYWxsYmFjazogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkLFxuICAgIG9wdGlvbnM/OiBJZGxlUmVxdWVzdE9wdGlvbnMsXG4gICkge1xuICAgIGNhbGxiYWNrKCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsaUJBQWlCLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxRQUFRLG1CQUFtQjtBQUM3RSxTQUFTQyxpQkFBaUIsUUFBUSxnQ0FBZ0M7QUFDbEUsT0FBT0MsVUFBVSxNQUFNLDZCQUE2QjtBQVVwRCxPQUFPLE1BQU1DLFVBQVUsU0FBU0MsS0FBSyxDQUFDO0VBR3BDQyxXQUFXQSxDQUFBLEVBQUc7SUFDWixLQUFLLENBQUMsc0JBQXNCLENBQUM7SUFBQyxLQUhoQ0MsSUFBSSxHQUFHLFlBQVk7RUFJbkI7QUFDRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE1BQU1DLGNBQWMsQ0FBb0I7RUFXckRGLFdBQVdBLENBQUNHLGdCQUFnQixHQUFHLEtBQUssRUFBRUMsaUJBQWlCLEdBQUcsSUFBSSxFQUFFO0lBQUEsS0FWdERDLE9BQU8sR0FBa0NDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLElBQUksQ0FBQztJQUFBLEtBQzVEQyxTQUFTLEdBQTJDLENBQUMsQ0FBQztJQUFBLEtBQ3REQyxTQUFTLEdBQTJDLENB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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTRVRfUkVTUE9OU0VfVFlQRSIsIkZFVENIX1RZUEUiLCJSRVNFVF9UWVBFIiwiY3JlYXRlU2V0UmVzcG9uc2UiLCJDb250cm9sbGVyIiwiUmVzZXRFcnJvciIsIkVycm9yIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiTmV0d29ya01hbmFnZXIiLCJkYXRhRXhwaXJ5TGVuZ3RoIiwiZXJyb3JFeHBpcnlMZW5ndGgiLCJmZXRjaGVkIiwiT2JqZWN0IiwiY3JlYXRlIiwicmVzb2x2ZXJzIiwicmVqZWN0b3JzIiwiZmV0Y2hlZEF0IiwiY29udHJvbGxlciIsIm1pZGRsZXdhcmUiLCJuZXh0IiwiYWN0aW9uIiwidHlwZSIsImhhbmRsZUZldGNoIiwiZW5kcG9pbnQiLCJnZXRPcHRpbWlzdGljUmVzcG9uc2UiLCJ1bmRlZmluZWQiLCJzaWRlRWZmZWN0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwia2V5IiwiX2NvbnRyb2xsZXIkZ2V0U3RhdGUkIiwiZXJyb3IiLCJnZXRTdGF0ZSIsIm1ldGEiLCJoYW5kbGVTZXQiLCJhcmdzIiwicmVzcG9uc2UiLCJhc3NpZ24iLCJjbGVhckFsbCIsImsiLCJza2lwTG9nZ2luZyIsImluaXQiLCJjbGVhbnVwRGF0ZSIsImNsZWFudXAiLCJEYXRlIiwibm93IiwiYWxsU2V0dGxlZCIsImZldGNoZXMiLCJ2YWx1ZXMiLCJsZW5ndGgiLCJjbGVhciIsImNhdGNoIiwiZ2V0TGFzdFJlc2V0IiwibGFzdFJlc2V0IiwicmVqZWN0IiwidGhyb3R0bGUiLCJkZWZlcmVkRmV0Y2giLCJwcm9taXNlIiwicmVzb2x2ZVByb21pc2UiLCJkYXRhIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiaXNOYU4iLCJjb25zb2xlIiwicHJvbWlzZUhhbmRsZXIiLCJnZXRNaWRkbGV3YXJlIiwiZmV0Y2giLCJpZGxlQ2FsbGJhY2siLCJ0aW1lb3V0IiwiY2FsbGJhY2siLCJvcHRpb25zIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hbmFnZXIvTmV0d29ya01hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU0VUX1JFU1BPTlNFX1RZUEUsIEZFVENIX1RZUEUsIFJFU0VUX1RZUEUgfSBmcm9tICcuLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgeyBjcmVhdGVTZXRSZXNwb25zZSB9IGZyb20gJy4uL2NvbnRyb2xsZXIvYWN0aW9ucy9pbmRleC5qcyc7XG5pbXBvcnQgQ29udHJvbGxlciBmcm9tICcuLi9jb250cm9sbGVyL0NvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHR5cGUge1xuICBGZXRjaEFjdGlvbixcbiAgTWFuYWdlcixcbiAgQWN0aW9uVHlwZXMsXG4gIE1pZGRsZXdhcmVBUEksXG4gIE1pZGRsZXdhcmUsXG4gIFNldFJlc3BvbnNlQWN0aW9uLFxufSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBjbGFzcyBSZXNldEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBuYW1lID0gJ1Jlc2V0RXJyb3InO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdBYm9ydGVkIGR1ZSB0byBSRVNFVCcpO1xuICB9XG59XG5cbi8qKiBIYW5kbGVzIGFsbCBhc3luYyBuZXR3b3JrIGRpc3BhdGNoZXNcbiAqXG4gKiBEZWR1cGVzIGNvbmN1cnJlbnQgcmVxdWVzdHMgYnkga2VlcGluZyB0cmFjayBvZiBhbGwgZmV0Y2hlcyBpbiBmbGlnaHRcbiAqIGFuZCByZXR1cm5pbmcgZXhpc3RpbmcgcHJvbWlzZXMgZm9yIHJlcXVlc3RzIGFscmVhZHkgaW4gZmxpZ2h0LlxuICpcbiAqIEludGVyZmFjZXMgd2l0aCBzdG9yZSB2aWEgYSByZWR1eC1jb21wYXRpYmxlIG1pZGRsZXdhcmUuXG4gKlxuICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvTmV0d29ya01hbmFnZXJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV0d29ya01hbmFnZXIgaW1wbGVtZW50cyBNYW5hZ2VyIHtcbiAgcHJvdGVjdGVkIGZldGNoZWQ6IHsgW2s6IHN0cmluZ106IFByb21pc2U8YW55PiB9ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcHJvdGVjdGVkIHJlc29sdmVyczogeyBbazogc3RyaW5nXTogKHZhbHVlPzogYW55KSA9PiB2b2lkIH0gPSB7fTtcbiAgcHJvdGVjdGVkIHJlamVjdG9yczogeyBbazogc3RyaW5nXTogKHZhbHVlPzogYW55KSA9PiB2b2lkIH0gPSB7fTtcbiAgcHJvdGVjdGVkIGZldGNoZWRBdDogeyBbazogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcbiAgZGVjbGFyZSByZWFkb25seSBkYXRhRXhwaXJ5TGVuZ3RoOiBudW1iZXI7XG4gIGRlY2xhcmUgcmVhZG9ubHkgZXJyb3JFeHBpcnlMZW5ndGg6IG51bWJlcjtcbiAgcHJvdGVjdGVkIGRlY2xhcmUgbWlkZGxld2FyZTogTWlkZGxld2FyZTtcbiAgcHJvdGVjdGVkIGNvbnRyb2xsZXI6IENvbnRyb2xsZXIgPSBuZXcgQ29udHJvbGxlcigpO1xuICBkZWNsYXJlIGNsZWFudXBEYXRlPzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHsgZGF0YUV4cGlyeUxlbmd0aCA9IDYwMDAwLCBlcnJvckV4cGlyeUxlbmd0aCA9IDEwMDAgfSA9IHt9KSB7XG4gICAgdGhpcy5kYXRhRXhwaXJ5TGVuZ3RoID0gZGF0YUV4cGlyeUxlbmd0aDtcbiAgICB0aGlzLmVycm9yRXhwaXJ5TGVuZ3RoID0gZXJyb3JFeHBpcnlMZW5ndGg7XG5cbiAgICB0aGlzLm1pZGRsZXdhcmUgPSA8QyBleHRlbmRzIE1pZGRsZXdhcmVBUEk+KGNvbnRyb2xsZXI6IEMpID0+IHtcbiAgICAgIHRoaXMuY29udHJvbGxlciA9IGNvbnRyb2xsZXI7XG4gICAgICByZXR1cm4gKG5leHQ6IENbJ2Rpc3BhdGNoJ10pOiBDWydkaXNwYXRjaCddID0+XG4gICAgICAgIChhY3Rpb24pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIEZFVENIX1RZUEU6XG4gICAgICAgICAgICAgIHRoaXMuaGFuZGxlRmV0Y2goYWN0aW9uKTtcbiAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgb25seSBjYXNlIHRoYXQgY2F1c2VzIGFueSBzdGF0ZSBjaGFuZ2VcbiAgICAgICAgICAgICAgLy8gSXQncyBpbXBvcnRhbnQgdG8gaW50ZXJjZXB0IG90aGVyIGZldGNoZXMgYXMgd2UgZG9uJ3Qgd2FudCB0byB0cmlnZ2VyIHJlZHVjZXJzIGR1cmluZ1xuICAgICAgICAgICAgICAvLyByZW5kZXIgLSBzbyB3ZSBuZWVkIHRvIHN0b3AgJ3JlYWRvbmx5JyBmZXRjaGVzIHdoaWNoIGNhbiBiZSB0cmlnZ2VyZWQgaW4gcmVuZGVyXG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBhY3Rpb24uZW5kcG9pbnQuZ2V0T3B0aW1pc3RpY1Jlc3BvbnNlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICBhY3Rpb24uZW5kcG9pbnQuc2lkZUVmZmVjdFxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV4dChhY3Rpb24pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgIGNhc2UgU0VUX1JFU1BPTlNFX1RZUEU6XG4gICAgICAgICAgICAgIC8vIG9ubHkgc2V0IGFmdGVyIG5ldyBzdGF0ZSBpcyBjb21wdXRlZFxuICAgICAgICAgICAgICByZXR1cm4gbmV4dChhY3Rpb24pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhY3Rpb24ua2V5IGluIHRoaXMuZmV0Y2hlZCkge1xuICAgICAgICAgICAgICAgICAgLy8gTm90ZTogbWV0YSAqbXVzdCogYmUgc2V0IGJ5IHJlZHVjZXIgc28gdGhpcyBzaG91bGQgYmUgc2FmZVxuICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBjb250cm9sbGVyLmdldFN0YXRlKCkubWV0YVthY3Rpb24ua2V5XT8uZXJyb3I7XG4gICAgICAgICAgICAgICAgICAvLyBwcm9jZXNzaW5nIGVycm9ycyByZXN1bHQgaW4gc3RhdGUgbWV0YSBoYXZpbmcgZXJyb3IsIHNvIHdlIHNob3VsZCByZWplY3QgdGhlIHByb21pc2VcbiAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNldChcbiAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTZXRSZXNwb25zZShhY3Rpb24uZW5kcG9pbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M6IGFjdGlvbi5hcmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6IGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hlZEF0OiBhY3Rpb24ubWV0YS5mZXRjaGVkQXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU2V0KGFjdGlvbik7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgUkVTRVRfVFlQRToge1xuICAgICAgICAgICAgICBjb25zdCByZWplY3RvcnMgPSB7IC4uLnRoaXMucmVqZWN0b3JzIH07XG5cbiAgICAgICAgICAgICAgdGhpcy5jbGVhckFsbCgpO1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dChhY3Rpb24pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHRoZXJlIGNvdWxkIGJlIGV4dGVybmFsIGxpc3RlbmVycyB0byB0aGUgcHJvbWlzZVxuICAgICAgICAgICAgICAgIC8vIHRoaXMgbXVzdCBoYXBwZW4gYWZ0ZXIgY29tbWl0IHNvIG91ciBvd24gcmVqZWN0b3Iga25vd3Mgbm90IHRvIGRpc3BhdGNoIGFuIGVycm9yIGJhc2VkIG9uIHRoaXNcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGsgaW4gcmVqZWN0b3JzKSB7XG4gICAgICAgICAgICAgICAgICByZWplY3RvcnNba10obmV3IFJlc2V0RXJyb3IoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KGFjdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG4gIH1cblxuICAvKiogVXNlZCBieSBEZXZ0b29sc01hbmFnZXIgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gbG9nIGFuIGFjdGlvbiAqL1xuICBza2lwTG9nZ2luZyhhY3Rpb246IEFjdGlvblR5cGVzKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gYWN0aW9uLnR5cGUgPT09IEZFVENIX1RZUEUgJiYgYWN0aW9uLmtleSBpbiB0aGlzLmZldGNoZWQ7XG4gIH1cblxuICAvKiogT24gbW91bnQgKi9cbiAgaW5pdCgpIHtcbiAgICBkZWxldGUgdGhpcy5jbGVhbnVwRGF0ZTtcbiAgfVxuXG4gIC8qKiBFbnN1cmVzIGFsbCBwcm9taXNlcyBhcmUgY29tcGxldGVkIGJ5IHJlamVjdGluZyByZW1haW5pbmcuICovXG4gIGNsZWFudXAoKSB7XG4gICAgLy8gZW5zdXJlIG5vIGRpc3BhdGNoZXMgYWZ0ZXIgdW5tb3VudFxuICAgIC8vIHRoaXMgbXVzdCBiZSByZXZlcnNpYmxlIChkb25lIGluIGluaXQpIHNvIHVzZUVmZmVjdCgpIHJlbWFpbnMgc3ltbWV0cmljXG4gICAgdGhpcy5jbGVhbnVwRGF0ZSA9IERhdGUubm93KCk7XG4gIH1cblxuICBhbGxTZXR0bGVkKCkge1xuICAgIGNvbnN0IGZldGNoZXMgPSBPYmplY3QudmFsdWVzKHRoaXMuZmV0Y2hlZCk7XG4gICAgaWYgKGZldGNoZXMubGVuZ3RoKSByZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKGZldGNoZXMpO1xuICB9XG5cbiAgLyoqIENsZWFyIGFsbCBwcm9taXNlIHN0YXRlICovXG4gIHByb3RlY3RlZCBjbGVhckFsbCgpIHtcbiAgICBmb3IgKGNvbnN0IGsgaW4gdGhpcy5yZWplY3RvcnMpIHtcbiAgICAgIHRoaXMuY2xlYXIoayk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENsZWFyIHByb21pc2Ugc3RhdGUgZm9yIGEgZ2l2ZW4ga2V5ICovXG4gIHByb3RlY3RlZCBjbGVhcihrZXk6IHN0cmluZykge1xuICAgIHRoaXMuZmV0Y2hlZFtrZXldLmNhdGNoKCgpID0+IHt9KTtcbiAgICBkZWxldGUgdGhpcy5yZXNvbHZlcnNba2V5XTtcbiAgICBkZWxldGUgdGhpcy5yZWplY3RvcnNba2V5XTtcbiAgICBkZWxldGUgdGhpcy5mZXRjaGVkW2tleV07XG4gICAgZGVsZXRlIHRoaXMuZmV0Y2hlZEF0W2tleV07XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TGFzdFJlc2V0KCkge1xuICAgIGlmICh0aGlzLmNsZWFudXBEYXRlKSByZXR1cm4gdGhpcy5jbGVhbnVwRGF0ZTtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmdldFN0YXRlKCkubGFzdFJlc2V0O1xuICB9XG5cbiAgLyoqIENhbGxlZCB3aGVuIG1pZGRsZXdhcmUgaW50ZXJjZXB0cyAncmRjL2ZldGNoJyBhY3Rpb24uXG4gICAqXG4gICAqIFdpbGwgdGhlbiBzdGFydCBhIHByb21pc2UgZm9yIGEga2V5IGFuZCBwb3RlbnRpYWxseSBzdGFydCB0aGUgbmV0d29ya1xuICAgKiBmZXRjaC5cbiAgICpcbiAgICogVXNlcyB0aHJvdHRsZSBlbmRwb2ludHMgd2l0aG91dCBzaWRlRWZmZWN0cy4gVGhpcyBpcyB2YWx1YWJsZVxuICAgKiBmb3IgZW5zdXJlcyBtdXRhdGlvbiByZXF1ZXN0cyBhbHdheXMgZ28gdGhyb3VnaC5cbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVGZXRjaChhY3Rpb246IEZldGNoQWN0aW9uKSB7XG4gICAgY29uc3QgeyByZXNvbHZlLCByZWplY3QsIGZldGNoZWRBdCB9ID0gYWN0aW9uLm1ldGE7XG4gICAgY29uc3QgdGhyb3R0bGUgPSAhYWN0aW9uLmVuZHBvaW50LnNpZGVFZmZlY3Q7XG5cbiAgICBjb25zdCBkZWZlcmVkRmV0Y2ggPSAoKSA9PiB7XG4gICAgICBsZXQgcHJvbWlzZSA9IGFjdGlvbi5lbmRwb2ludCguLi5hY3Rpb24uYXJncyk7XG4gICAgICBjb25zdCByZXNvbHZlUHJvbWlzZSA9IChcbiAgICAgICAgcHJvbWlzZTogUHJvbWlzZTxzdHJpbmcgfCBudW1iZXIgfCBvYmplY3QgfCBudWxsPixcbiAgICAgICkgPT5cbiAgICAgICAgcHJvbWlzZVxuICAgICAgICAgIC50aGVuKGRhdGEgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICB9KTtcbiAgICAgIC8vIHNjaGVkdWxlIG5vbi10aHJvdHRsZWQgcmVzb2x1dGlvbnMgaW4gYSBtaWNyb3Rhc2sgYmVmb3JlIHNldFxuICAgICAgLy8gdGhpcyBlbmFibGVzIHVzZXJzIGF3YWl0aW5nIHRoZWlyIGZldGNoIHRvIHRyaWdnZXIgYW55IHJlYWN0IHVwZGF0ZXMgbmVlZGVkIHRvIGRlYWxcbiAgICAgIC8vIHdpdGggdXBjb21pbmcgY2hhbmdlcyBiZWNhdXNlIG9mIHRoZSBmZXRjaCAoZm9yIGluc3RhbmNlIGF2b2lkaW5nIHN1c3BlbnNlIGlmIHNvbWV0aGluZyBpcyBkZWxldGVkKVxuICAgICAgaWYgKCF0aHJvdHRsZSkge1xuICAgICAgICBwcm9taXNlID0gcmVzb2x2ZVByb21pc2UocHJvbWlzZSk7XG4gICAgICB9XG4gICAgICBwcm9taXNlID0gcHJvbWlzZVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgbGV0IGxhc3RSZXNldCA9IHRoaXMuZ2V0TGFzdFJlc2V0KCk7XG5cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGlzTmFOKGxhc3RSZXNldCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICdzdGF0ZS5sYXN0UmVzZXQgaXMgTmFOLiBPbmx5IHBvc2l0aXZlIHRpbWVzdGFtcHMgYXJlIHZhbGlkLicsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbGFzdFJlc2V0ID0gMDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBkb24ndCB1cGRhdGUgc3RhdGUgd2l0aCBwcm9taXNlcyBzdGFydGVkIGJlZm9yZSBsYXN0IGNsZWFyXG4gICAgICAgICAgaWYgKGZldGNoZWRBdCA+PSBsYXN0UmVzZXQpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbGxlci5yZXNvbHZlKGFjdGlvbi5lbmRwb2ludCwge1xuICAgICAgICAgICAgICBhcmdzOiBhY3Rpb24uYXJncyxcbiAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgIGZldGNoZWRBdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgY29uc3QgbGFzdFJlc2V0ID0gdGhpcy5nZXRMYXN0UmVzZXQoKTtcbiAgICAgICAgICAvLyBkb24ndCB1cGRhdGUgc3RhdGUgd2l0aCBwcm9taXNlcyBzdGFydGVkIGJlZm9yZSBsYXN0IGNsZWFyXG4gICAgICAgICAgaWYgKGZldGNoZWRBdCA+PSBsYXN0UmVzZXQpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbGxlci5yZXNvbHZlKGFjdGlvbi5lbmRwb2ludCwge1xuICAgICAgICAgICAgICBhcmdzOiBhY3Rpb24uYXJncyxcbiAgICAgICAgICAgICAgcmVzcG9uc2U6IGVycm9yLFxuICAgICAgICAgICAgICBmZXRjaGVkQXQsXG4gICAgICAgICAgICAgIGVycm9yOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KTtcbiAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH07XG5cbiAgICBpZiAodGhyb3R0bGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnRocm90dGxlKGFjdGlvbi5rZXksIGRlZmVyZWRGZXRjaCwgZmV0Y2hlZEF0KVxuICAgICAgICAudGhlbihkYXRhID0+IHJlc29sdmUoZGF0YSkpXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiByZWplY3QoZXJyb3IpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGRlZmVyZWRGZXRjaCgpLmNhdGNoKCgpID0+IHt9KTtcbiAgICB9XG4gIH1cblxuICAvKiogQ2FsbGVkIHdoZW4gbWlkZGxld2FyZSBpbnRlcmNlcHRzIGEgc2V0IGFjdGlvbi5cbiAgICpcbiAgICogV2lsbCByZXNvbHZlIHRoZSBwcm9taXNlIGFzc29jaWF0ZWQgd2l0aCBzZXQga2V5LlxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVNldChhY3Rpb246IFNldFJlc3BvbnNlQWN0aW9uKSB7XG4gICAgLy8gdGhpcyBjYW4gc3RpbGwgdHVybiBvdXQgdG8gYmUgdW50cnVlIHNpbmNlIHRoaXMgaXMgYXN5bmNcbiAgICBpZiAoYWN0aW9uLmtleSBpbiB0aGlzLmZldGNoZWQpIHtcbiAgICAgIGxldCBwcm9taXNlSGFuZGxlcjogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xuICAgICAgaWYgKGFjdGlvbi5lcnJvcikge1xuICAgICAgICBwcm9taXNlSGFuZGxlciA9IHRoaXMucmVqZWN0b3JzW2FjdGlvbi5rZXldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvbWlzZUhhbmRsZXIgPSB0aGlzLnJlc29sdmVyc1thY3Rpb24ua2V5XTtcbiAgICAgIH1cbiAgICAgIHByb21pc2VIYW5kbGVyKGFjdGlvbi5yZXNwb25zZSk7XG4gICAgICAvLyBzaW5jZSB3ZSdyZSByZXNvbHZlZCB3ZSBubyBsb25nZXIgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoaXMgcHJvbWlzZVxuICAgICAgdGhpcy5jbGVhcihhY3Rpb24ua2V5KTtcbiAgICB9XG4gIH1cblxuICAvKiogQXR0YWNoZXMgTmV0d29ya01hbmFnZXIgdG8gc3RvcmVcbiAgICpcbiAgICogSW50ZXJjZXB0cyAncmRjL2ZldGNoJyBhY3Rpb25zIHRvIHN0YXJ0IHJlcXVlc3RzLlxuICAgKlxuICAgKiBSZXNvbHZlL3JlamVjdHMgYSByZXF1ZXN0IHdoZW4gbWF0Y2hpbmcgJ3JkYy9zZXQnIGV2ZW50XG4gICAqIGlzIHNlZW4uXG4gICAqL1xuICBnZXRNaWRkbGV3YXJlKCkge1xuICAgIHJldHVybiB0aGlzLm1pZGRsZXdhcmU7XG4gIH1cblxuICAvKiogRW5zdXJlcyBvbmx5IG9uZSByZXF1ZXN0IGZvciBhIGdpdmVuIGtleSBpcyBpbiBmbGlnaHQgYXQgYW55IHRpbWVcbiAgICpcbiAgICogVXNlcyBrZXkgdG8gZWl0aGVyIHJldHJpZXZlIGluLWZsaWdodCBwcm9taXNlLCBvciBpZiBub3RcbiAgICogY3JlYXRlIGEgbmV3IHByb21pc2UgYW5kIGNhbGwgZmV0Y2guXG4gICAqXG4gICAqIE5vdGU6IFRoZSBuZXcgcHJvbWlzZSBpcyBub3QgYWN0dWFsbHkgdGllZCB0byBmZXRjaCBhdCBhbGwsXG4gICAqIGJ1dCBpcyByZXNvbHZlZCB3aGVuIHRoZSBleHBlY3RlZCAncmVjaWV2ZScgYWN0aW9uIGlzIHByb2Nlc3NlZC5cbiAgICogVGhpcyBlbnN1cmVzIHByb21pc2VzIGFyZSByZXNvbHZlZCBvbmx5IG9uY2UgdGhlaXIgZGF0YSBpcyBwcm9jZXNzZWRcbiAgICogYnkgdGhlIHJlZHVjZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgdGhyb3R0bGUoXG4gICAga2V5OiBzdHJpbmcsXG4gICAgZmV0Y2g6ICgpID0+IFByb21pc2U8YW55PixcbiAgICBmZXRjaGVkQXQ6IG51bWJlcixcbiAgKSB7XG4gICAgY29uc3QgbGFzdFJlc2V0ID0gdGhpcy5nZXRMYXN0UmVzZXQoKTtcbiAgICAvLyB3ZSdyZSBhbHJlYWR5IGZldGNoaW5nIHNvIHJldXNlIHRoZSBwcm9taXNlXG4gICAgLy8gZmV0Y2hlcyBhZnRlciByZXNldCBkbyBub3QgY291bnRcbiAgICBpZiAoa2V5IGluIHRoaXMuZmV0Y2hlZCAmJiB0aGlzLmZldGNoZWRBdFtrZXldID4gbGFzdFJlc2V0KSB7XG4gICAgICByZXR1cm4gdGhpcy5mZXRjaGVkW2tleV07XG4gICAgfVxuXG4gICAgdGhpcy5mZXRjaGVkW2tleV0gPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnJlc29sdmVyc1trZXldID0gcmVzb2x2ZTtcbiAgICAgIHRoaXMucmVqZWN0b3JzW2tleV0gPSByZWplY3Q7XG4gICAgfSk7XG4gICAgdGhpcy5mZXRjaGVkQXRba2V5XSA9IGZldGNoZWRBdDtcblxuICAgIHRoaXMuaWRsZUNhbGxiYWNrKFxuICAgICAgKCkgPT4ge1xuICAgICAgICAvLyBzaW5jZSBvdXIgcmVhbCBwcm9taXNlIGlzIHJlc29sdmVkIHZpYSB0aGUgd3JhcFJlZHVjZXIoKSxcbiAgICAgICAgLy8gd2Ugc2hvdWxkIGp1c3Qgc3RvcCBhbGwgZXJyb3JzIGhlcmUuXG4gICAgICAgIC8vIFRPRE86IGRlY291cGxlIHRoaXMgZnJvbSB1c2VGZXRjaGVyKCkgKHRoYXQncyB3aGF0J3MgZGlzcGF0Y2hpbmcgdGhlIGVycm9yIHRoZSByZXNvbHZlcyBpbiBoZXJlKVxuICAgICAgICBmZXRjaCgpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgICAgfSxcbiAgICAgIHsgdGltZW91dDogNTAwIH0sXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLmZldGNoZWRba2V5XTtcbiAgfVxuXG4gIC8qKiBDYWxscyB0aGUgY2FsbGJhY2sgd2hlbiBjbGllbnQgaXMgbm90ICdidXN5JyB3aXRoIGhpZ2ggcHJpb3JpdHkgaW50ZXJhY3Rpb24gdGFza3NcbiAgICpcbiAgICogT3ZlcnJpZGUgZm9yIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9uc1xuICAgKi9cbiAgcHJvdGVjdGVkIGlkbGVDYWxsYmFjayhcbiAgICBjYWxsYmFjazogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkLFxuICAgIG9wdGlvbnM/OiBJZGxlUmVxdWVzdE9wdGlvbnMsXG4gICkge1xuICAgIGNhbGxiYWNrKCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsaUJBQWlCLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxRQUFRLG1CQUFtQjtBQUM3RSxTQUFTQyxpQkFBaUIsUUFBUSxnQ0FBZ0M7QUFDbEUsT0FBT0MsVUFBVSxNQUFNLDZCQUE2QjtBQVVwRCxPQUFPLE1BQU1DLFVBQVUsU0FBU0MsS0FBSyxDQUFDO0VBR3BDQyxXQUFXQSxDQUFBLEVBQUc7SUFDWixLQUFLLENBQUMsc0JBQXNCLENBQUM7SUFBQyxLQUhoQ0MsSUFBSSxHQUFHLFlBQVk7RUFJbkI7QUFDRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE1BQU1DLGNBQWMsQ0FBb0I7RUFXckRGLFdBQVdBLENBQUM7SUFBRUcsZ0JBQWdCLEdBQUcsS0FBSztJQUFFQyxpQkFBaUIsR0FBRztFQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtJQUFBLEtBVi9EQyxPQUFPLEdBQWtDQyxNQUFNLENBQUNDLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFBQSxLQUM1REMsU0FBUyxHQUEyQyxD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

@@ -91,2 +91,2 @@ import { SUBSCRIBE_TYPE, UNSUBSCRIBE_TYPE } from '../actionTypes.js';

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTVUJTQ1JJQkVfVFlQRSIsIlVOU1VCU0NSSUJFX1RZUEUiLCJDb250cm9sbGVyIiwiU3Vic2NyaXB0aW9uTWFuYWdlciIsImNvbnN0cnVjdG9yIiwiU3Vic2NyaXB0aW9uIiwic3Vic2NyaXB0aW9ucyIsImNvbnRyb2xsZXIiLCJtaWRkbGV3YXJlIiwibmV4dCIsImFjdGlvbiIsInR5cGUiLCJoYW5kbGVTdWJzY3JpYmUiLCJlIiwiY29uc29sZSIsImVycm9yIiwiUHJvbWlzZSIsInJlc29sdmUiLCJoYW5kbGVVbnN1YnNjcmliZSIsImNsZWFudXAiLCJrZXkiLCJmcmVxdWVuY3kiLCJlbmRwb2ludCIsInBvbGxGcmVxdWVuY3kiLCJhZGQiLCJlbXB0eSIsInJlbW92ZSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImdldE1pZGRsZXdhcmUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFuYWdlci9TdWJzY3JpcHRpb25NYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNVQlNDUklCRV9UWVBFLCBVTlNVQlNDUklCRV9UWVBFIH0gZnJvbSAnLi4vYWN0aW9uVHlwZXMuanMnO1xuaW1wb3J0IENvbnRyb2xsZXIgZnJvbSAnLi4vY29udHJvbGxlci9Db250cm9sbGVyLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgTWFuYWdlcixcbiAgTWlkZGxld2FyZUFQSSxcbiAgTWlkZGxld2FyZSxcbiAgVW5zdWJzY3JpYmVBY3Rpb24sXG4gIFN1YnNjcmliZUFjdGlvbixcbn0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG50eXBlIEFjdGlvbnMgPSBVbnN1YnNjcmliZUFjdGlvbiB8IFN1YnNjcmliZUFjdGlvbjtcblxuLyoqIEludGVyZmFjZSBoYW5kbGluZyBhIHNpbmdsZSByZXNvdXJjZSBzdWJzY3JpcHRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3Vic2NyaXB0aW9uIHtcbiAgYWRkKGZyZXF1ZW5jeT86IG51bWJlcik6IHZvaWQ7XG4gIHJlbW92ZShmcmVxdWVuY3k/OiBudW1iZXIpOiBib29sZWFuO1xuICBjbGVhbnVwKCk6IHZvaWQ7XG59XG5cbi8qKiBUaGUgc3RhdGljIGNsYXNzIHRoYXQgY29uc3RydWN0cyBTdWJzY3JpcHRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3Vic2NyaXB0aW9uQ29uc3RydWN0YWJsZSB7XG4gIG5ldyAoXG4gICAgYWN0aW9uOiBPbWl0PFN1YnNjcmliZUFjdGlvbiwgJ3R5cGUnPixcbiAgICBjb250cm9sbGVyOiBDb250cm9sbGVyLFxuICApOiBTdWJzY3JpcHRpb247XG59XG5cbi8qKiBIYW5kbGVzIHN1YnNjcmlwdGlvbiBhY3Rpb25zIC0+IGZldGNoIG9yIHNldCBhY3Rpb25zXG4gKlxuICogQ29uc3RydWN0b3IgdGFrZXMgYSBTdWJzY3JpcHRpb25Db25zdHJ1Y3RhYmxlIGNsYXNzIHRvIGNvbnRyb2wgaG93XG4gKiBzdWJzY3JpcHRpb25zIGFyZSBoYW5kbGVkLiAoZS5nLiwgcG9sbGluZywgd2Vic29ja2V0cylcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9TdWJzY3JpcHRpb25NYW5hZ2VyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1YnNjcmlwdGlvbk1hbmFnZXI8UyBleHRlbmRzIFN1YnNjcmlwdGlvbkNvbnN0cnVjdGFibGU+XG4gIGltcGxlbWVudHMgTWFuYWdlcjxBY3Rpb25zPlxue1xuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uczoge1xuICAgIFtrZXk6IHN0cmluZ106IEluc3RhbmNlVHlwZTxTPjtcbiAgfSA9IHt9O1xuXG4gIHByb3RlY3RlZCBkZWNsYXJlIHJlYWRvbmx5IFN1YnNjcmlwdGlvbjogUztcbiAgcHJvdGVjdGVkIGRlY2xhcmUgbWlkZGxld2FyZTogTWlkZGxld2FyZTtcbiAgcHJvdGVjdGVkIGNvbnRyb2xsZXI6IENvbnRyb2xsZXIgPSBuZXcgQ29udHJvbGxlcigpO1xuXG4gIGNvbnN0cnVjdG9yKFN1YnNjcmlwdGlvbjogUykge1xuICAgIHRoaXMuU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uO1xuXG4gICAgdGhpcy5taWRkbGV3YXJlID0gPEMgZXh0ZW5kcyBNaWRkbGV3YXJlQVBJPihjb250cm9sbGVyOiBDKSA9PiB7XG4gICAgICB0aGlzLmNvbnRyb2xsZXIgPSBjb250cm9sbGVyO1xuICAgICAgcmV0dXJuIChuZXh0OiBDWydkaXNwYXRjaCddKTogQ1snZGlzcGF0Y2gnXSA9PlxuICAgICAgICBhY3Rpb24gPT4ge1xuICAgICAgICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgU1VCU0NSSUJFX1RZUEU6XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTdWJzY3JpYmUoYWN0aW9uKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICAgICAgY2FzZSBVTlNVQlNDUklCRV9UWVBFOlxuICAgICAgICAgICAgICB0aGlzLmhhbmRsZVVuc3Vic2NyaWJlKGFjdGlvbik7XG4gICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KGFjdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG4gIH1cblxuICAvKiogRW5zdXJlcyBhbGwgc3Vic2NyaXB0aW9ucyBhcmUgY2xlYW5lZCB1cC4gKi9cbiAgY2xlYW51cCgpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLnN1YnNjcmlwdGlvbnMpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc1trZXldLmNsZWFudXAoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQ2FsbGVkIHdoZW4gbWlkZGxld2FyZSBpbnRlcmNlcHRzICdyZGMvc3Vic2NyaWJlJyBhY3Rpb24uXG4gICAqXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlU3Vic2NyaWJlKGFjdGlvbjogU3Vic2NyaWJlQWN0aW9uKSB7XG4gICAgY29uc3Qga2V5ID0gYWN0aW9uLmtleTtcblxuICAgIGlmIChrZXkgaW4gdGhpcy5zdWJzY3JpcHRpb25zKSB7XG4gICAgICBjb25zdCBmcmVxdWVuY3kgPSBhY3Rpb24uZW5kcG9pbnQucG9sbEZyZXF1ZW5jeTtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc1trZXldLmFkZChmcmVxdWVuY3kpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnNba2V5XSA9IG5ldyB0aGlzLlN1YnNjcmlwdGlvbihcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICB0aGlzLmNvbnRyb2xsZXIsXG4gICAgICApIGFzIEluc3RhbmNlVHlwZTxTPjtcbiAgICB9XG4gIH1cblxuICAvKiogQ2FsbGVkIHdoZW4gbWlkZGxld2FyZSBpbnRlcmNlcHRzICdyZGMvdW5zdWJzY3JpYmUnIGFjdGlvbi5cbiAgICpcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVVbnN1YnNjcmliZShhY3Rpb246IFVuc3Vic2NyaWJlQWN0aW9uKSB7XG4gICAgY29uc3Qga2V5ID0gYWN0aW9uLmtleTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGtleSBpbiB0aGlzLnN1YnNjcmlwdGlvbnMpIHtcbiAgICAgIGNvbnN0IGZyZXF1ZW5jeSA9IGFjdGlvbi5lbmRwb2ludC5wb2xsRnJlcXVlbmN5O1xuICAgICAgY29uc3QgZW1wdHkgPSB0aGlzLnN1YnNjcmlwdGlvbnNba2V5XS5yZW1vdmUoZnJlcXVlbmN5KTtcbiAgICAgIGlmIChlbXB0eSkge1xuICAgICAgICBkZWxldGUgdGhpcy5zdWJzY3JpcHRpb25zW2tleV07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBNaXNtYXRjaGVkIHVuc3Vic2NyaWJlOiAke2tleX0gaXMgbm90IHN1YnNjcmliZWRgKTtcbiAgICB9XG4gIH1cblxuICAvKiogQXR0YWNoZXMgTWFuYWdlciB0byBzdG9yZVxuICAgKlxuICAgKiBJbnRlcmNlcHRzICdyZGMvc3Vic2NyaWJlJy8ncmVzdC1ob3JkYy9yaWJlJyB0byByZWdpc3RlciByZXNvdXJjZXMgdGhhdFxuICAgKiBuZWVkIHRvIGJlIGtlcHQgdXAgdG8gZGF0ZS5cbiAgICpcbiAgICogV2lsbCBwb3NzaWJseSBkaXNwYXRjaCAncmRjL2ZldGNoJyBvciAncmVzdC1ob3JkYy8nIHRvIGtlZXAgcmVzb3VyY2VzIGZyZXNoXG4gICAqXG4gICAqL1xuICBnZXRNaWRkbGV3YXJlKCkge1xuICAgIHJldHVybiB0aGlzLm1pZGRsZXdhcmU7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsY0FBYyxFQUFFQyxnQkFBZ0IsUUFBUSxtQkFBbUI7QUFDcEUsT0FBT0MsVUFBVSxNQUFNLDZCQUE2Qjs7QUFXcEQ7O0FBT0E7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE1BQU1DLG1CQUFtQixDQUV4QztFQVNFQyxXQUFXQSxDQUFDQyxZQUFlLEVBQUU7SUFBQSxLQVJuQkMsYUFBYSxHQUVuQixDQUFDLENBQUM7SUFBQSxLQUlJQyxVQUFVLEdBQWUsSUFBSUwsVUFBVSxDQUFDLENBQUM7SUFHakQsSUFBSSxDQUFDRyxZQUFZLEdBQUdBLFlBQVk7SUFFaEMsSUFBSSxDQUFDRyxVQUFVLEdBQTZCRCxVQUFhLElBQUs7TUFDNUQsSUFBSSxDQUFDQSxVQUFVLEdBQUdBLFVBQVU7TUFDNUIsT0FBUUUsSUFBbUIsSUFDekJDLE1BQU0sSUFBSTtRQUNSLFFBQVFBLE1BQU0sQ0FBQ0MsSUFBSTtVQUNqQixLQUFLWCxjQUFjO1lBQ2pCLElBQUk7Y0FDRixJQUFJLENBQUNZLGVBQWUsQ0FBQ0YsTUFBTSxDQUFDO1lBQzlCLENBQUMsQ0FBQyxPQUFPRyxDQUFDLEVBQUU7Y0FDVkMsT0FBTyxDQUFDQyxLQUFLLENBQUNGLENBQUMsQ0FBQztZQUNsQjtZQUNBLE9BQU9HLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLENBQUM7VUFDMUIsS0FBS2hCLGdCQUFnQjtZQUNuQixJQUFJLENBQUNpQixpQkFBaUIsQ0FBQ1IsTUFBTSxDQUFDO1lBQzlCLE9BQU9NLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLENBQUM7VUFDMUI7WUFDRSxPQUFPUixJQUFJLENBQUNDLE1BQU0sQ0FBQztRQUN2QjtNQUNGLENBQUM7SUFDTCxDQUFDO0VBQ0g7O0VBRUE7RUFDQVMsT0FBT0EsQ0FBQSxFQUFHO0lBQ1IsS0FBSyxNQUFNQyxHQUFHLElBQUksSUFBSSxDQUFDZCxhQUFhLEVBQUU7TUFDcEMsSUFBSSxDQUFDQSxhQUFhLENBQUNjLEdBQUcsQ0FBQyxDQUFDRCxPQUFPLENBQUMsQ0FBQztJQUNuQztFQUNGOztFQUVBO0FBQ0Y7QUFDQTtFQUNZUCxlQUFlQSxDQUFDRixNQUF1QixFQUFFO0lBQ2pELE1BQU1VLEdBQUcsR0FBR1YsTUFBTSxDQUFDVSxHQUFHO0lBRXRCLElBQUlBLEdBQUcsSUFBSSxJQUFJLENBQUNkLGFBQWEsRUFBRTtNQUM3QixNQUFNZSxTQUFTLEdBQUdYLE1BQU0sQ0FBQ1ksUUFBUSxDQUFDQyxhQUFhO01BQy9DLElBQUksQ0FBQ2pCLGFBQWEsQ0FBQ2MsR0FBRyxDQUFDLENBQUNJLEdBQUcsQ0FBQ0gsU0FBUyxDQUFDO0lBQ3hDLENBQUMsTUFBTTtNQUNMLElBQUksQ0FBQ2YsYUFBYSxDQUFDYyxHQUFHLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQ2YsWUFBWSxDQUM3Q0ssTUFBTSxFQUNOLElBQUksQ0FBQ0gsVUFDUCxDQUFvQjtJQUN0QjtFQUNGOztFQUVBO0FBQ0Y7QUFDQTtFQUNZVyxpQkFBaUJBLENBQUNSLE1BQXlCLEVBQUU7SUFDckQsTUFBTVUsR0FBRyxHQUFHVixNQUFNLENBQUNVLEdBQUc7O0lBRXRCO0lBQ0EsSUFBSUEsR0FBRyxJQUFJLElBQUksQ0FBQ2QsYUFBYSxFQUFFO01BQzdCLE1BQU1lLFNBQVMsR0FBR1gsTUFBTSxDQUFDWSxRQUFRLENBQUNDLGFBQWE7TUFDL0MsTUFBTUUsS0FBSyxHQUFHLElBQUksQ0FBQ25CLGFBQWEsQ0FBQ2MsR0FBRyxDQUFDLENBQUNNLE1BQU0sQ0FBQ0wsU0FBUyxDQUFDO01BQ3ZELElBQUlJLEtBQUssRUFBRTtRQUNULE9BQU8sSUFBSSxDQUFDbkIsYUFBYSxDQUFDYyxHQUFHLENBQUM7TUFDaEM7SUFDRixDQUFDLE1BQU0sSUFBSU8sT0FBTyxDQUFDQyxHQUFHLENBQUNDLFFBQVEsS0FBSyxZQUFZLEVBQUU7TUFDaERmLE9BQU8sQ0FBQ0MsS0FBSyxDQUFDLDJCQUEyQkssR0FBRyxvQkFBb0IsQ0FBQztJQUNuRTtFQUNGOztFQUVBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDRVUsYUFBYUEsQ0FBQSxFQUFHO0lBQ2QsT0FBTyxJQUFJLENBQUN0QixVQUFVO0VBQ3hCO0FBQ0YiLCJpZ25vcmVMaXN0IjpbXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTVUJTQ1JJQkVfVFlQRSIsIlVOU1VCU0NSSUJFX1RZUEUiLCJDb250cm9sbGVyIiwiU3Vic2NyaXB0aW9uTWFuYWdlciIsImNvbnN0cnVjdG9yIiwiU3Vic2NyaXB0aW9uIiwic3Vic2NyaXB0aW9ucyIsImNvbnRyb2xsZXIiLCJtaWRkbGV3YXJlIiwibmV4dCIsImFjdGlvbiIsInR5cGUiLCJoYW5kbGVTdWJzY3JpYmUiLCJlIiwiY29uc29sZSIsImVycm9yIiwiUHJvbWlzZSIsInJlc29sdmUiLCJoYW5kbGVVbnN1YnNjcmliZSIsImNsZWFudXAiLCJrZXkiLCJmcmVxdWVuY3kiLCJlbmRwb2ludCIsInBvbGxGcmVxdWVuY3kiLCJhZGQiLCJlbXB0eSIsInJlbW92ZSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImdldE1pZGRsZXdhcmUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFuYWdlci9TdWJzY3JpcHRpb25NYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNVQlNDUklCRV9UWVBFLCBVTlNVQlNDUklCRV9UWVBFIH0gZnJvbSAnLi4vYWN0aW9uVHlwZXMuanMnO1xuaW1wb3J0IENvbnRyb2xsZXIgZnJvbSAnLi4vY29udHJvbGxlci9Db250cm9sbGVyLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgTWFuYWdlcixcbiAgTWlkZGxld2FyZUFQSSxcbiAgTWlkZGxld2FyZSxcbiAgVW5zdWJzY3JpYmVBY3Rpb24sXG4gIFN1YnNjcmliZUFjdGlvbixcbn0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG50eXBlIEFjdGlvbnMgPSBVbnN1YnNjcmliZUFjdGlvbiB8IFN1YnNjcmliZUFjdGlvbjtcblxuLyoqIEludGVyZmFjZSBoYW5kbGluZyBhIHNpbmdsZSByZXNvdXJjZSBzdWJzY3JpcHRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3Vic2NyaXB0aW9uIHtcbiAgYWRkKGZyZXF1ZW5jeT86IG51bWJlcik6IHZvaWQ7XG4gIHJlbW92ZShmcmVxdWVuY3k/OiBudW1iZXIpOiBib29sZWFuO1xuICBjbGVhbnVwKCk6IHZvaWQ7XG59XG5cbi8qKiBUaGUgc3RhdGljIGNsYXNzIHRoYXQgY29uc3RydWN0cyBTdWJzY3JpcHRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3Vic2NyaXB0aW9uQ29uc3RydWN0YWJsZSB7XG4gIG5ldyAoXG4gICAgYWN0aW9uOiBPbWl0PFN1YnNjcmliZUFjdGlvbiwgJ3R5cGUnPixcbiAgICBjb250cm9sbGVyOiBDb250cm9sbGVyLFxuICApOiBTdWJzY3JpcHRpb247XG59XG5cbi8qKiBIYW5kbGVzIHN1YnNjcmlwdGlvbiBhY3Rpb25zIC0+IGZldGNoIG9yIHNldCBhY3Rpb25zXG4gKlxuICogQ29uc3RydWN0b3IgdGFrZXMgYSBTdWJzY3JpcHRpb25Db25zdHJ1Y3RhYmxlIGNsYXNzIHRvIGNvbnRyb2wgaG93XG4gKiBzdWJzY3JpcHRpb25zIGFyZSBoYW5kbGVkLiAoZS5nLiwgcG9sbGluZywgd2Vic29ja2V0cylcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9TdWJzY3JpcHRpb25NYW5hZ2VyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1YnNjcmlwdGlvbk1hbmFnZXI8XG4gIFMgZXh0ZW5kcyBTdWJzY3JpcHRpb25Db25zdHJ1Y3RhYmxlID0gU3Vic2NyaXB0aW9uQ29uc3RydWN0YWJsZSxcbj4gaW1wbGVtZW50cyBNYW5hZ2VyPEFjdGlvbnM+XG57XG4gIHByb3RlY3RlZCBzdWJzY3JpcHRpb25zOiB7XG4gICAgW2tleTogc3RyaW5nXTogSW5zdGFuY2VUeXBlPFM+O1xuICB9ID0ge307XG5cbiAgcHJvdGVjdGVkIGRlY2xhcmUgcmVhZG9ubHkgU3Vic2NyaXB0aW9uOiBTO1xuICBwcm90ZWN0ZWQgZGVjbGFyZSBtaWRkbGV3YXJlOiBNaWRkbGV3YXJlO1xuICBwcm90ZWN0ZWQgY29udHJvbGxlcjogQ29udHJvbGxlciA9IG5ldyBDb250cm9sbGVyKCk7XG5cbiAgY29uc3RydWN0b3IoU3Vic2NyaXB0aW9uOiBTKSB7XG4gICAgdGhpcy5TdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb247XG5cbiAgICB0aGlzLm1pZGRsZXdhcmUgPSA8QyBleHRlbmRzIE1pZGRsZXdhcmVBUEk+KGNvbnRyb2xsZXI6IEMpID0+IHtcbiAgICAgIHRoaXMuY29udHJvbGxlciA9IGNvbnRyb2xsZXI7XG4gICAgICByZXR1cm4gKG5leHQ6IENbJ2Rpc3BhdGNoJ10pOiBDWydkaXNwYXRjaCddID0+XG4gICAgICAgIGFjdGlvbiA9PiB7XG4gICAgICAgICAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgICAgICAgICAgY2FzZSBTVUJTQ1JJQkVfVFlQRTpcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVN1YnNjcmliZShhY3Rpb24pO1xuICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICBjYXNlIFVOU1VCU0NSSUJFX1RZUEU6XG4gICAgICAgICAgICAgIHRoaXMuaGFuZGxlVW5zdWJzY3JpYmUoYWN0aW9uKTtcbiAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQoYWN0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBFbnN1cmVzIGFsbCBzdWJzY3JpcHRpb25zIGFyZSBjbGVhbmVkIHVwLiAqL1xuICBjbGVhbnVwKCkge1xuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuc3Vic2NyaXB0aW9ucykge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zW2tleV0uY2xlYW51cCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDYWxsZWQgd2hlbiBtaWRkbGV3YXJlIGludGVyY2VwdHMgJ3JkYy9zdWJzY3JpYmUnIGFjdGlvbi5cbiAgICpcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVTdWJzY3JpYmUoYWN0aW9uOiBTdWJzY3JpYmVBY3Rpb24pIHtcbiAgICBjb25zdCBrZXkgPSBhY3Rpb24ua2V5O1xuXG4gICAgaWYgKGtleSBpbiB0aGlzLnN1YnNjcmlwdGlvbnMpIHtcbiAgICAgIGNvbnN0IGZyZXF1ZW5jeSA9IGFjdGlvbi5lbmRwb2ludC5wb2xsRnJlcXVlbmN5O1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zW2tleV0uYWRkKGZyZXF1ZW5jeSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc1trZXldID0gbmV3IHRoaXMuU3Vic2NyaXB0aW9uKFxuICAgICAgICBhY3Rpb24sXG4gICAgICAgIHRoaXMuY29udHJvbGxlcixcbiAgICAgICkgYXMgSW5zdGFuY2VUeXBlPFM+O1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDYWxsZWQgd2hlbiBtaWRkbGV3YXJlIGludGVyY2VwdHMgJ3JkYy91bnN1YnNjcmliZScgYWN0aW9uLlxuICAgKlxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVVuc3Vic2NyaWJlKGFjdGlvbjogVW5zdWJzY3JpYmVBY3Rpb24pIHtcbiAgICBjb25zdCBrZXkgPSBhY3Rpb24ua2V5O1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoa2V5IGluIHRoaXMuc3Vic2NyaXB0aW9ucykge1xuICAgICAgY29uc3QgZnJlcXVlbmN5ID0gYWN0aW9uLmVuZHBvaW50LnBvbGxGcmVxdWVuY3k7XG4gICAgICBjb25zdCBlbXB0eSA9IHRoaXMuc3Vic2NyaXB0aW9uc1trZXldLnJlbW92ZShmcmVxdWVuY3kpO1xuICAgICAgaWYgKGVtcHR5KSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLnN1YnNjcmlwdGlvbnNba2V5XTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYE1pc21hdGNoZWQgdW5zdWJzY3JpYmU6ICR7a2V5fSBpcyBub3Qgc3Vic2NyaWJlZGApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBBdHRhY2hlcyBNYW5hZ2VyIHRvIHN0b3JlXG4gICAqXG4gICAqIEludGVyY2VwdHMgJ3JkYy9zdWJzY3JpYmUnLydyZXN0LWhvcmRjL3JpYmUnIHRvIHJlZ2lzdGVyIHJlc291cmNlcyB0aGF0XG4gICAqIG5lZWQgdG8gYmUga2VwdCB1cCB0byBkYXRlLlxuICAgKlxuICAgKiBXaWxsIHBvc3NpYmx5IGRpc3BhdGNoICdyZGMvZmV0Y2gnIG9yICdyZXN0LWhvcmRjLycgdG8ga2VlcCByZXNvdXJjZXMgZnJlc2hcbiAgICpcbiAgICovXG4gIGdldE1pZGRsZXdhcmUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWlkZGxld2FyZTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxjQUFjLEVBQUVDLGdCQUFnQixRQUFRLG1CQUFtQjtBQUNwRSxPQUFPQyxVQUFVLE1BQU0sNkJBQTZCOztBQVdwRDs7QUFPQTs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsTUFBTUMsbUJBQW1CLENBR3hDO0VBU0VDLFdBQVdBLENBQUNDLFlBQWUsRUFBRTtJQUFBLEtBUm5CQyxhQUFhLEdBRW5CLENBQUMsQ0FBQztJQUFBLEtBSUlDLFVBQVUsR0FBZSxJQUFJTCxVQUFVLENBQUMsQ0FBQztJQUdqRCxJQUFJLENBQUNHLFlBQVksR0FBR0EsWUFBWTtJQUVoQyxJQUFJLENBQUNHLFVBQVUsR0FBNkJELFVBQWEsSUFBSztNQUM1RCxJQUFJLENBQUNBLFVBQVUsR0FBR0EsVUFBVTtNQUM1QixPQUFRRSxJQUFtQixJQUN6QkMsTUFBTSxJQUFJO1FBQ1IsUUFBUUEsTUFBTSxDQUFDQyxJQUFJO1VBQ2pCLEtBQUtYLGNBQWM7WUFDakIsSUFBSTtjQUNGLElBQUksQ0FBQ1ksZUFBZSxDQUFDRixNQUFNLENBQUM7WUFDOUIsQ0FBQyxDQUFDLE9BQU9HLENBQUMsRUFBRTtjQUNWQyxPQUFPLENBQUNDLEtBQUssQ0FBQ0YsQ0FBQyxDQUFDO1lBQ2xCO1lBQ0EsT0FBT0csT0FBTyxDQUFDQyxPQUFPLENBQUMsQ0FBQztVQUMxQixLQUFLaEIsZ0JBQWdCO1lBQ25CLElBQUksQ0FBQ2lCLGlCQUFpQixDQUFDUixNQUFNLENBQUM7WUFDOUIsT0FBT00sT0FBTyxDQUFDQyxPQUFPLENBQUMsQ0FBQztVQUMxQjtZQUNFLE9BQU9SLElBQUksQ0FBQ0MsTUFBTSxDQUFDO1FBQ3ZCO01BQ0YsQ0FBQztJQUNMLENBQUM7RUFDSDs7RUFFQTtFQUNBUyxPQUFPQSxDQUFBLEVBQUc7SUFDUixLQUFLLE1BQU1DLEdBQUcsSUFBSSxJQUFJLENBQUNkLGFBQWEsRUFBRTtNQUNwQyxJQUFJLENBQUNBLGFBQWEsQ0FBQ2MsR0FBRyxDQUFDLENBQUNELE9BQU8sQ0FBQyxDQUFDO0lBQ25DO0VBQ0Y7O0VBRUE7QUFDRjtBQUNBO0VBQ1lQLGVBQWVBLENBQUNGLE1BQXVCLEVBQUU7SUFDakQsTUFBTVUsR0FBRyxHQUFHVixNQUFNLENBQUNVLEdBQUc7SUFFdEIsSUFBSUEsR0FBRyxJQUFJLElBQUksQ0FBQ2QsYUFBYSxFQUFFO01BQzdCLE1BQU1lLFNBQVMsR0FBR1gsTUFBTSxDQUFDWSxRQUFRLENBQUNDLGFBQWE7TUFDL0MsSUFBSSxDQUFDakIsYUFBYSxDQUFDYyxHQUFHLENBQUMsQ0FBQ0ksR0FBRyxDQUFDSCxTQUFTLENBQUM7SUFDeEMsQ0FBQyxNQUFNO01BQ0wsSUFBSSxDQUFDZixhQUFhLENBQUNjLEdBQUcsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDZixZQUFZLENBQzdDSyxNQUFNLEVBQ04sSUFBSSxDQUFDSCxVQUNQLENBQW9CO0lBQ3RCO0VBQ0Y7O0VBRUE7QUFDRjtBQUNBO0VBQ1lXLGlCQUFpQkEsQ0FBQ1IsTUFBeUIsRUFBRTtJQUNyRCxNQUFNVSxHQUFHLEdBQUdWLE1BQU0sQ0FBQ1UsR0FBRzs7SUFFdEI7SUFDQSxJQUFJQSxHQUFHLElBQUksSUFBSSxDQUFDZCxhQUFhLEVBQUU7TUFDN0IsTUFBTWUsU0FBUyxHQUFHWCxNQUFNLENBQUNZLFFBQVEsQ0FBQ0MsYUFBYTtNQUMvQyxNQUFNRSxLQUFLLEdBQUcsSUFBSSxDQUFDbkIsYUFBYSxDQUFDYyxHQUFHLENBQUMsQ0FBQ00sTUFBTSxDQUFDTCxTQUFTLENBQUM7TUFDdkQsSUFBSUksS0FBSyxFQUFFO1FBQ1QsT0FBTyxJQUFJLENBQUNuQixhQUFhLENBQUNjLEdBQUcsQ0FBQztNQUNoQztJQUNGLENBQUMsTUFBTSxJQUFJTyxPQUFPLENBQUNDLEdBQUcsQ0FBQ0MsUUFBUSxLQUFLLFlBQVksRUFBRTtNQUNoRGYsT0FBTyxDQUFDQyxLQUFLLENBQUMsMkJBQTJCSyxHQUFHLG9CQUFvQixDQUFDO0lBQ25FO0VBQ0Y7O0VBRUE7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNFVSxhQUFhQSxDQUFBLEVBQUc7SUFDZCxPQUFPLElBQUksQ0FBQ3RCLFVBQVU7RUFDeEI7QUFDRiIsImlnbm9yZUxpc3QiOltdfQ==

@@ -49,4 +49,4 @@ import { expireReducer } from './expireReducer.js';

entities: {},
endpoints: {},
indexes: {},
endpoints: {},
meta: {},

@@ -57,2 +57,2 @@ entityMeta: {},

};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJleHBpcmVSZWR1Y2VyIiwiZmV0Y2hSZWR1Y2VyIiwiaW52YWxpZGF0ZVJlZHVjZXIiLCJzZXRSZWR1Y2VyIiwic2V0UmVzcG9uc2VSZWR1Y2VyIiwiU0VUX1RZUEUiLCJJTlZBTElEQVRFX1RZUEUiLCJSRVNFVF9UWVBFIiwiRkVUQ0hfVFlQRSIsIkdDX1RZUEUiLCJPUFRJTUlTVElDX1RZUEUiLCJJTlZBTElEQVRFQUxMX1RZUEUiLCJFWFBJUkVBTExfVFlQRSIsIlNFVF9SRVNQT05TRV9UWVBFIiwiY3JlYXRlUmVkdWNlciIsImNvbnRyb2xsZXIiLCJyZWR1Y2VyIiwic3RhdGUiLCJhY3Rpb24iLCJpbml0aWFsU3RhdGUiLCJ0eXBlIiwiZW50aXRpZXMiLCJmb3JFYWNoIiwia2V5IiwicGsiLCJfZW50aXRpZXMka2V5IiwiX2VudGl0eU1ldGEka2V5IiwiZW50aXR5TWV0YSIsImVuZHBvaW50cyIsImZldGNoS2V5IiwibWV0YSIsIk9iamVjdCIsImFzc2lnbiIsImxhc3RSZXNldCIsImRhdGUiLCJpbmRleGVzIiwib3B0aW1pc3RpYyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdGF0ZS9yZWR1Y2VyL2NyZWF0ZVJlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhwaXJlUmVkdWNlciB9IGZyb20gJy4vZXhwaXJlUmVkdWNlci5qcyc7XG5pbXBvcnQgeyBmZXRjaFJlZHVjZXIgfSBmcm9tICcuL2ZldGNoUmVkdWNlci5qcyc7XG5pbXBvcnQgeyBpbnZhbGlkYXRlUmVkdWNlciB9IGZyb20gJy4vaW52YWxpZGF0ZVJlZHVjZXIuanMnO1xuaW1wb3J0IHsgc2V0UmVkdWNlciB9IGZyb20gJy4vc2V0UmVkdWNlci5qcyc7XG5pbXBvcnQgeyBzZXRSZXNwb25zZVJlZHVjZXIgfSBmcm9tICcuL3NldFJlc3BvbnNlUmVkdWNlci5qcyc7XG5pbXBvcnQge1xuICBTRVRfVFlQRSxcbiAgSU5WQUxJREFURV9UWVBFLFxuICBSRVNFVF9UWVBFLFxuICBGRVRDSF9UWVBFLFxuICBHQ19UWVBFLFxuICBPUFRJTUlTVElDX1RZUEUsXG4gIElOVkFMSURBVEVBTExfVFlQRSxcbiAgRVhQSVJFQUxMX1RZUEUsXG4gIFNFVF9SRVNQT05TRV9UWVBFLFxufSBmcm9tICcuLi8uLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSBDb250cm9sbGVyIGZyb20gJy4uLy4uL2NvbnRyb2xsZXIvQ29udHJvbGxlci5qcyc7XG5pbXBvcnQgdHlwZSB7IEFjdGlvblR5cGVzLCBTdGF0ZSB9IGZyb20gJy4uLy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlUmVkdWNlcihjb250cm9sbGVyOiBDb250cm9sbGVyKTogUmVkdWNlclR5cGUge1xuICByZXR1cm4gZnVuY3Rpb24gcmVkdWNlcihcbiAgICBzdGF0ZTogU3RhdGU8dW5rbm93bj4gfCB1bmRlZmluZWQsXG4gICAgYWN0aW9uOiBBY3Rpb25UeXBlcyxcbiAgKTogU3RhdGU8dW5rbm93bj4ge1xuICAgIGlmICghc3RhdGUpIHN0YXRlID0gaW5pdGlhbFN0YXRlO1xuICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgR0NfVFlQRTpcbiAgICAgICAgLy8gaW5saW5lIGRlbGV0ZXMgYXJlIGZpbmUgYXMgdGhlc2Ugc2hvdWxkIGhhdmUgMCByZWZjb3VudHNcbiAgICAgICAgYWN0aW9uLmVudGl0aWVzLmZvckVhY2goKFtrZXksIHBrXSkgPT4ge1xuICAgICAgICAgIGRlbGV0ZSAoc3RhdGUgYXMgYW55KS5lbnRpdGllc1trZXldPy5bcGtdO1xuICAgICAgICAgIGRlbGV0ZSAoc3RhdGUgYXMgYW55KS5lbnRpdHlNZXRhW2tleV0/Lltwa107XG4gICAgICAgIH0pO1xuICAgICAgICBhY3Rpb24uZW5kcG9pbnRzLmZvckVhY2goZmV0Y2hLZXkgPT4ge1xuICAgICAgICAgIGRlbGV0ZSAoc3RhdGUgYXMgYW55KS5lbmRwb2ludHNbZmV0Y2hLZXldO1xuICAgICAgICAgIGRlbGV0ZSAoc3RhdGUgYXMgYW55KS5tZXRhW2ZldGNoS2V5XTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgIGNhc2UgRkVUQ0hfVFlQRTpcbiAgICAgICAgcmV0dXJuIGZldGNoUmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcblxuICAgICAgY2FzZSBPUFRJTUlTVElDX1RZUEU6XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZmFsbHRocm91Z2hcbiAgICAgIGNhc2UgU0VUX1JFU1BPTlNFX1RZUEU6XG4gICAgICAgIHJldHVybiBzZXRSZXNwb25zZVJlZHVjZXIoc3RhdGUsIGFjdGlvbiwgY29udHJvbGxlcik7XG5cbiAgICAgIGNhc2UgU0VUX1RZUEU6XG4gICAgICAgIHJldHVybiBzZXRSZWR1Y2VyKHN0YXRlLCBhY3Rpb24sIGNvbnRyb2xsZXIpO1xuXG4gICAgICBjYXNlIElOVkFMSURBVEVBTExfVFlQRTpcbiAgICAgIGNhc2UgSU5WQUxJREFURV9UWVBFOlxuICAgICAgICByZXR1cm4gaW52YWxpZGF0ZVJlZHVjZXIoc3RhdGUsIGFjdGlvbik7XG5cbiAgICAgIGNhc2UgRVhQSVJFQUxMX1RZUEU6XG4gICAgICAgIHJldHVybiBleHBpcmVSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xuXG4gICAgICBjYXNlIFJFU0VUX1RZUEU6XG4gICAgICAgIHJldHVybiB7IC4uLmluaXRpYWxTdGF0ZSwgbGFzdFJlc2V0OiBhY3Rpb24uZGF0ZSB9O1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBBIHJlZHVjZXIgbXVzdCBhbHdheXMgcmV0dXJuIGEgdmFsaWQgc3RhdGUuXG4gICAgICAgIC8vIEFsdGVybmF0aXZlbHkgeW91IGNhbiB0aHJvdyBhbiBlcnJvciBpZiBhbiBpbnZhbGlkIGFjdGlvbiBpcyBkaXNwYXRjaGVkLlxuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuICB9IGFzIGFueTtcbn1cblxuZXhwb3J0IGNvbnN0IGluaXRpYWxTdGF0ZTogU3RhdGU8dW5rbm93bj4gPSB7XG4gIGVudGl0aWVzOiB7fSxcbiAgaW5kZXhlczoge30sXG4gIGVuZHBvaW50czoge30sXG4gIG1ldGE6IHt9LFxuICBlbnRpdHlNZXRhOiB7fSxcbiAgb3B0aW1pc3RpYzogW10sXG4gIGxhc3RSZXNldDogMCxcbn07XG5cbnR5cGUgUmVkdWNlclR5cGUgPSAoXG4gIHN0YXRlOiBTdGF0ZTx1bmtub3duPiB8IHVuZGVmaW5lZCxcbiAgYWN0aW9uOiBBY3Rpb25UeXBlcyxcbikgPT4gU3RhdGU8dW5rbm93bj47XG5cbnR5cGUgV3JpdGFibGU8VD4gPSB7IFtQIGluIGtleW9mIFRdOiBOb25OdWxsYWJsZTxXcml0YWJsZTxUW1BdPj4gfTtcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsYUFBYSxRQUFRLG9CQUFvQjtBQUNsRCxTQUFTQyxZQUFZLFFBQVEsbUJBQW1CO0FBQ2hELFNBQVNDLGlCQUFpQixRQUFRLHdCQUF3QjtBQUMxRCxTQUFTQyxVQUFVLFFBQVEsaUJBQWlCO0FBQzVDLFNBQVNDLGtCQUFrQixRQUFRLHlCQUF5QjtBQUM1RCxTQUNFQyxRQUFRLEVBQ1JDLGVBQWUsRUFDZkMsVUFBVSxFQUNWQyxVQUFVLEVBQ1ZDLE9BQU8sRUFDUEMsZUFBZSxFQUNmQyxrQkFBa0IsRUFDbEJDLGNBQWMsRUFDZEMsaUJBQWlCLFFBQ1osc0JBQXNCO0FBSTdCLGVBQWUsU0FBU0MsYUFBYUEsQ0FBQ0MsVUFBc0IsRUFBZTtFQUN6RSxPQUFPLFNBQVNDLE9BQU9BLENBQ3JCQyxLQUFpQyxFQUNqQ0MsTUFBbUIsRUFDSDtJQUNoQixJQUFJLENBQUNELEtBQUssRUFBRUEsS0FBSyxHQUFHRSxZQUFZO0lBQ2hDLFFBQVFELE1BQU0sQ0FBQ0UsSUFBSTtNQUNqQixLQUFLWCxPQUFPO1FBQ1Y7UUFDQVMsTUFBTSxDQUFDRyxRQUFRLENBQUNDLE9BQU8sQ0FBQyxDQUFDLENBQUNDLEdBQUcsRUFBRUMsRUFBRSxDQUFDLEtBQUs7VUFBQSxJQUFBQyxhQUFBLEVBQUFDLGVBQUE7VUFDckMsQ0FBQUQsYUFBQSxHQUFRUixLQUFLLENBQVNJLFFBQVEsQ0FBQ0UsR0FBRyxDQUFDLGFBQW5DLE9BQU9FLGFBQUEsQ0FBK0JELEVBQUUsQ0FBQztVQUN6QyxDQUFBRSxlQUFBLEdBQVFULEtBQUssQ0FBU1UsVUFBVSxDQUFDSixHQUFHLENBQUMsYUFBckMsT0FBT0csZUFBQSxDQUFpQ0YsRUFBRSxDQUFDO1FBQzdDLENBQUMsQ0FBQztRQUNGTixNQUFNLENBQUNVLFNBQVMsQ0FBQ04sT0FBTyxDQUFDTyxRQUFRLElBQUk7VUFDbkMsT0FBUVosS0FBSyxDQUFTVyxTQUFTLENBQUNDLFFBQVEsQ0FBQztVQUN6QyxPQUFRWixLQUFLLENBQVNhLElBQUksQ0FBQ0QsUUFBUSxDQUFDO1FBQ3RDLENBQUMsQ0FBQztRQUNGLE9BQU9aLEtBQUs7TUFDZCxLQUFLVCxVQUFVO1FBQ2IsT0FBT1AsWUFBWSxDQUFDZ0IsS0FBSyxFQUFFQyxNQUFNLENBQUM7TUFFcEMsS0FBS1IsZUFBZTtNQUNwQjtNQUNBLEtBQUtHLGlCQUFpQjtRQUNwQixPQUFPVCxrQkFBa0IsQ0FBQ2EsS0FBSyxFQUFFQyxNQUFNLEVBQUVILFVBQVUsQ0FBQztNQUV0RCxLQUFLVixRQUFRO1FBQ1gsT0FBT0YsVUFBVSxDQUFDYyxLQUFLLEVBQUVDLE1BQU0sRUFBRUgsVUFBVSxDQUFDO01BRTlDLEtBQUtKLGtCQUFrQjtNQUN2QixLQUFLTCxlQUFlO1FBQ2xCLE9BQU9KLGlCQUFpQixDQUFDZSxLQUFLLEVBQUVDLE1BQU0sQ0FBQztNQUV6QyxLQUFLTixjQUFjO1FBQ2pCLE9BQU9aLGFBQWEsQ0FBQ2lCLEtBQUssRUFBRUMsTUFBTSxDQUFDO01BRXJDLEtBQUtYLFVBQVU7UUFDYixPQUFBd0IsTUFBQSxDQUFBQyxNQUFBLEtBQVliLFlBQVk7VUFBRWMsU0FBUyxFQUFFZixNQUFNLENBQUNnQjtRQUFJO01BRWxEO1FBQ0U7UUFDQTtRQUNBLE9BQU9qQixLQUFLO0lBQ2hCO0VBQ0YsQ0FBQztBQUNIO0FBRUEsT0FBTyxNQUFNRSxZQUE0QixHQUFHO0VBQzFDRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0VBQ1pjLE9BQU8sRUFBRSxDQUFDLENBQUM7RUFDWFAsU0FBUyxFQUFFLENBQUMsQ0FBQztFQUNiRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0VBQ1JILFVBQVUsRUFBRSxDQUFDLENBQUM7RUFDZFMsVUFBVSxFQUFFLEVBQUU7RUFDZEgsU0FBUyxFQUFFO0FBQ2IsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJleHBpcmVSZWR1Y2VyIiwiZmV0Y2hSZWR1Y2VyIiwiaW52YWxpZGF0ZVJlZHVjZXIiLCJzZXRSZWR1Y2VyIiwic2V0UmVzcG9uc2VSZWR1Y2VyIiwiU0VUX1RZUEUiLCJJTlZBTElEQVRFX1RZUEUiLCJSRVNFVF9UWVBFIiwiRkVUQ0hfVFlQRSIsIkdDX1RZUEUiLCJPUFRJTUlTVElDX1RZUEUiLCJJTlZBTElEQVRFQUxMX1RZUEUiLCJFWFBJUkVBTExfVFlQRSIsIlNFVF9SRVNQT05TRV9UWVBFIiwiY3JlYXRlUmVkdWNlciIsImNvbnRyb2xsZXIiLCJyZWR1Y2VyIiwic3RhdGUiLCJhY3Rpb24iLCJpbml0aWFsU3RhdGUiLCJ0eXBlIiwiZW50aXRpZXMiLCJmb3JFYWNoIiwia2V5IiwicGsiLCJfZW50aXRpZXMka2V5IiwiX2VudGl0eU1ldGEka2V5IiwiZW50aXR5TWV0YSIsImVuZHBvaW50cyIsImZldGNoS2V5IiwibWV0YSIsIk9iamVjdCIsImFzc2lnbiIsImxhc3RSZXNldCIsImRhdGUiLCJpbmRleGVzIiwib3B0aW1pc3RpYyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdGF0ZS9yZWR1Y2VyL2NyZWF0ZVJlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhwaXJlUmVkdWNlciB9IGZyb20gJy4vZXhwaXJlUmVkdWNlci5qcyc7XG5pbXBvcnQgeyBmZXRjaFJlZHVjZXIgfSBmcm9tICcuL2ZldGNoUmVkdWNlci5qcyc7XG5pbXBvcnQgeyBpbnZhbGlkYXRlUmVkdWNlciB9IGZyb20gJy4vaW52YWxpZGF0ZVJlZHVjZXIuanMnO1xuaW1wb3J0IHsgc2V0UmVkdWNlciB9IGZyb20gJy4vc2V0UmVkdWNlci5qcyc7XG5pbXBvcnQgeyBzZXRSZXNwb25zZVJlZHVjZXIgfSBmcm9tICcuL3NldFJlc3BvbnNlUmVkdWNlci5qcyc7XG5pbXBvcnQge1xuICBTRVRfVFlQRSxcbiAgSU5WQUxJREFURV9UWVBFLFxuICBSRVNFVF9UWVBFLFxuICBGRVRDSF9UWVBFLFxuICBHQ19UWVBFLFxuICBPUFRJTUlTVElDX1RZUEUsXG4gIElOVkFMSURBVEVBTExfVFlQRSxcbiAgRVhQSVJFQUxMX1RZUEUsXG4gIFNFVF9SRVNQT05TRV9UWVBFLFxufSBmcm9tICcuLi8uLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSBDb250cm9sbGVyIGZyb20gJy4uLy4uL2NvbnRyb2xsZXIvQ29udHJvbGxlci5qcyc7XG5pbXBvcnQgdHlwZSB7IEFjdGlvblR5cGVzLCBTdGF0ZSB9IGZyb20gJy4uLy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlUmVkdWNlcihjb250cm9sbGVyOiBDb250cm9sbGVyKTogUmVkdWNlclR5cGUge1xuICByZXR1cm4gZnVuY3Rpb24gcmVkdWNlcihcbiAgICBzdGF0ZTogU3RhdGU8dW5rbm93bj4gfCB1bmRlZmluZWQsXG4gICAgYWN0aW9uOiBBY3Rpb25UeXBlcyxcbiAgKTogU3RhdGU8dW5rbm93bj4ge1xuICAgIGlmICghc3RhdGUpIHN0YXRlID0gaW5pdGlhbFN0YXRlO1xuICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgR0NfVFlQRTpcbiAgICAgICAgLy8gaW5saW5lIGRlbGV0ZXMgYXJlIGZpbmUgYXMgdGhlc2Ugc2hvdWxkIGhhdmUgMCByZWZjb3VudHNcbiAgICAgICAgYWN0aW9uLmVudGl0aWVzLmZvckVhY2goKFtrZXksIHBrXSkgPT4ge1xuICAgICAgICAgIGRlbGV0ZSAoc3RhdGUgYXMgYW55KS5lbnRpdGllc1trZXldPy5bcGtdO1xuICAgICAgICAgIGRlbGV0ZSAoc3RhdGUgYXMgYW55KS5lbnRpdHlNZXRhW2tleV0/Lltwa107XG4gICAgICAgIH0pO1xuICAgICAgICBhY3Rpb24uZW5kcG9pbnRzLmZvckVhY2goZmV0Y2hLZXkgPT4ge1xuICAgICAgICAgIGRlbGV0ZSAoc3RhdGUgYXMgYW55KS5lbmRwb2ludHNbZmV0Y2hLZXldO1xuICAgICAgICAgIGRlbGV0ZSAoc3RhdGUgYXMgYW55KS5tZXRhW2ZldGNoS2V5XTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgIGNhc2UgRkVUQ0hfVFlQRTpcbiAgICAgICAgcmV0dXJuIGZldGNoUmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcblxuICAgICAgY2FzZSBPUFRJTUlTVElDX1RZUEU6XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZmFsbHRocm91Z2hcbiAgICAgIGNhc2UgU0VUX1JFU1BPTlNFX1RZUEU6XG4gICAgICAgIHJldHVybiBzZXRSZXNwb25zZVJlZHVjZXIoc3RhdGUsIGFjdGlvbiwgY29udHJvbGxlcik7XG5cbiAgICAgIGNhc2UgU0VUX1RZUEU6XG4gICAgICAgIHJldHVybiBzZXRSZWR1Y2VyKHN0YXRlLCBhY3Rpb24sIGNvbnRyb2xsZXIpO1xuXG4gICAgICBjYXNlIElOVkFMSURBVEVBTExfVFlQRTpcbiAgICAgIGNhc2UgSU5WQUxJREFURV9UWVBFOlxuICAgICAgICByZXR1cm4gaW52YWxpZGF0ZVJlZHVjZXIoc3RhdGUsIGFjdGlvbik7XG5cbiAgICAgIGNhc2UgRVhQSVJFQUxMX1RZUEU6XG4gICAgICAgIHJldHVybiBleHBpcmVSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xuXG4gICAgICBjYXNlIFJFU0VUX1RZUEU6XG4gICAgICAgIHJldHVybiB7IC4uLmluaXRpYWxTdGF0ZSwgbGFzdFJlc2V0OiBhY3Rpb24uZGF0ZSB9O1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBBIHJlZHVjZXIgbXVzdCBhbHdheXMgcmV0dXJuIGEgdmFsaWQgc3RhdGUuXG4gICAgICAgIC8vIEFsdGVybmF0aXZlbHkgeW91IGNhbiB0aHJvdyBhbiBlcnJvciBpZiBhbiBpbnZhbGlkIGFjdGlvbiBpcyBkaXNwYXRjaGVkLlxuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuICB9IGFzIGFueTtcbn1cblxuZXhwb3J0IGNvbnN0IGluaXRpYWxTdGF0ZTogU3RhdGU8dW5rbm93bj4gPSB7XG4gIGVudGl0aWVzOiB7fSxcbiAgZW5kcG9pbnRzOiB7fSxcbiAgaW5kZXhlczoge30sXG4gIG1ldGE6IHt9LFxuICBlbnRpdHlNZXRhOiB7fSxcbiAgb3B0aW1pc3RpYzogW10sXG4gIGxhc3RSZXNldDogMCxcbn07XG5cbnR5cGUgUmVkdWNlclR5cGUgPSAoXG4gIHN0YXRlOiBTdGF0ZTx1bmtub3duPiB8IHVuZGVmaW5lZCxcbiAgYWN0aW9uOiBBY3Rpb25UeXBlcyxcbikgPT4gU3RhdGU8dW5rbm93bj47XG5cbnR5cGUgV3JpdGFibGU8VD4gPSB7IFtQIGluIGtleW9mIFRdOiBOb25OdWxsYWJsZTxXcml0YWJsZTxUW1BdPj4gfTtcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsYUFBYSxRQUFRLG9CQUFvQjtBQUNsRCxTQUFTQyxZQUFZLFFBQVEsbUJBQW1CO0FBQ2hELFNBQVNDLGlCQUFpQixRQUFRLHdCQUF3QjtBQUMxRCxTQUFTQyxVQUFVLFFBQVEsaUJBQWlCO0FBQzVDLFNBQVNDLGtCQUFrQixRQUFRLHlCQUF5QjtBQUM1RCxTQUNFQyxRQUFRLEVBQ1JDLGVBQWUsRUFDZkMsVUFBVSxFQUNWQyxVQUFVLEVBQ1ZDLE9BQU8sRUFDUEMsZUFBZSxFQUNmQyxrQkFBa0IsRUFDbEJDLGNBQWMsRUFDZEMsaUJBQWlCLFFBQ1osc0JBQXNCO0FBSTdCLGVBQWUsU0FBU0MsYUFBYUEsQ0FBQ0MsVUFBc0IsRUFBZTtFQUN6RSxPQUFPLFNBQVNDLE9BQU9BLENBQ3JCQyxLQUFpQyxFQUNqQ0MsTUFBbUIsRUFDSDtJQUNoQixJQUFJLENBQUNELEtBQUssRUFBRUEsS0FBSyxHQUFHRSxZQUFZO0lBQ2hDLFFBQVFELE1BQU0sQ0FBQ0UsSUFBSTtNQUNqQixLQUFLWCxPQUFPO1FBQ1Y7UUFDQVMsTUFBTSxDQUFDRyxRQUFRLENBQUNDLE9BQU8sQ0FBQyxDQUFDLENBQUNDLEdBQUcsRUFBRUMsRUFBRSxDQUFDLEtBQUs7VUFBQSxJQUFBQyxhQUFBLEVBQUFDLGVBQUE7VUFDckMsQ0FBQUQsYUFBQSxHQUFRUixLQUFLLENBQVNJLFFBQVEsQ0FBQ0UsR0FBRyxDQUFDLGFBQW5DLE9BQU9FLGFBQUEsQ0FBK0JELEVBQUUsQ0FBQztVQUN6QyxDQUFBRSxlQUFBLEdBQVFULEtBQUssQ0FBU1UsVUFBVSxDQUFDSixHQUFHLENBQUMsYUFBckMsT0FBT0csZUFBQSxDQUFpQ0YsRUFBRSxDQUFDO1FBQzdDLENBQUMsQ0FBQztRQUNGTixNQUFNLENBQUNVLFNBQVMsQ0FBQ04sT0FBTyxDQUFDTyxRQUFRLElBQUk7VUFDbkMsT0FBUVosS0FBSyxDQUFTVyxTQUFTLENBQUNDLFFBQVEsQ0FBQztVQUN6QyxPQUFRWixLQUFLLENBQVNhLElBQUksQ0FBQ0QsUUFBUSxDQUFDO1FBQ3RDLENBQUMsQ0FBQztRQUNGLE9BQU9aLEtBQUs7TUFDZCxLQUFLVCxVQUFVO1FBQ2IsT0FBT1AsWUFBWSxDQUFDZ0IsS0FBSyxFQUFFQyxNQUFNLENBQUM7TUFFcEMsS0FBS1IsZUFBZTtNQUNwQjtNQUNBLEtBQUtHLGlCQUFpQjtRQUNwQixPQUFPVCxrQkFBa0IsQ0FBQ2EsS0FBSyxFQUFFQyxNQUFNLEVBQUVILFVBQVUsQ0FBQztNQUV0RCxLQUFLVixRQUFRO1FBQ1gsT0FBT0YsVUFBVSxDQUFDYyxLQUFLLEVBQUVDLE1BQU0sRUFBRUgsVUFBVSxDQUFDO01BRTlDLEtBQUtKLGtCQUFrQjtNQUN2QixLQUFLTCxlQUFlO1FBQ2xCLE9BQU9KLGlCQUFpQixDQUFDZSxLQUFLLEVBQUVDLE1BQU0sQ0FBQztNQUV6QyxLQUFLTixjQUFjO1FBQ2pCLE9BQU9aLGFBQWEsQ0FBQ2lCLEtBQUssRUFBRUMsTUFBTSxDQUFDO01BRXJDLEtBQUtYLFVBQVU7UUFDYixPQUFBd0IsTUFBQSxDQUFBQyxNQUFBLEtBQVliLFlBQVk7VUFBRWMsU0FBUyxFQUFFZixNQUFNLENBQUNnQjtRQUFJO01BRWxEO1FBQ0U7UUFDQTtRQUNBLE9BQU9qQixLQUFLO0lBQ2hCO0VBQ0YsQ0FBQztBQUNIO0FBRUEsT0FBTyxNQUFNRSxZQUE0QixHQUFHO0VBQzFDRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0VBQ1pPLFNBQVMsRUFBRSxDQUFDLENBQUM7RUFDYk8sT0FBTyxFQUFFLENBQUMsQ0FBQztFQUNYTCxJQUFJLEVBQUUsQ0FBQyxDQUFDO0VBQ1JILFVBQVUsRUFBRSxDQUFDLENBQUM7RUFDZFMsVUFBVSxFQUFFLEVBQUU7RUFDZEgsU0FBUyxFQUFFO0FBQ2IsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==

@@ -19,6 +19,6 @@ import { normalize } from '@data-client/normalizr';

entities,
endpoints: state.endpoints,
indexes,
endpoints: state.endpoints,
meta: state.meta,
entityMeta,
meta: state.meta,
optimistic: state.optimistic,

@@ -37,2 +37,2 @@ lastReset: state.lastReset

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub3JtYWxpemUiLCJzZXRSZWR1Y2VyIiwic3RhdGUiLCJhY3Rpb24iLCJjb250cm9sbGVyIiwidmFsdWUiLCJwcmV2aW91c1ZhbHVlIiwiZ2V0Iiwic2NoZW1hIiwiYXJncyIsInVuZGVmaW5lZCIsImVudGl0aWVzIiwiaW5kZXhlcyIsImVudGl0eU1ldGEiLCJtZXRhIiwiZW5kcG9pbnRzIiwib3B0aW1pc3RpYyIsImxhc3RSZXNldCIsImVycm9yIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiY29uc29sZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdGF0ZS9yZWR1Y2VyL3NldFJlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCBDb250cm9sbGVyIGZyb20gJy4uLy4uL2NvbnRyb2xsZXIvQ29udHJvbGxlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFN0YXRlLCBTZXRBY3Rpb24gfSBmcm9tICcuLi8uLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRSZWR1Y2VyKFxuICBzdGF0ZTogU3RhdGU8dW5rbm93bj4sXG4gIGFjdGlvbjogU2V0QWN0aW9uLFxuICBjb250cm9sbGVyOiBDb250cm9sbGVyLFxuKSB7XG4gIGxldCB2YWx1ZTogYW55O1xuICBpZiAodHlwZW9mIGFjdGlvbi52YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSBjb250cm9sbGVyLmdldChhY3Rpb24uc2NoZW1hLCAuLi5hY3Rpb24uYXJncywgc3RhdGUpO1xuICAgIGlmIChwcmV2aW91c1ZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiBzdGF0ZTtcbiAgICB2YWx1ZSA9IGFjdGlvbi52YWx1ZShwcmV2aW91c1ZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB2YWx1ZSA9IGFjdGlvbi52YWx1ZTtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IHsgZW50aXRpZXMsIGluZGV4ZXMsIGVudGl0eU1ldGEgfSA9IG5vcm1hbGl6ZShcbiAgICAgIGFjdGlvbi5zY2hlbWEsXG4gICAgICB2YWx1ZSxcbiAgICAgIGFjdGlvbi5hcmdzLFxuICAgICAgc3RhdGUsXG4gICAgICBhY3Rpb24ubWV0YSxcbiAgICApO1xuICAgIHJldHVybiB7XG4gICAgICBlbnRpdGllcyxcbiAgICAgIGluZGV4ZXMsXG4gICAgICBlbmRwb2ludHM6IHN0YXRlLmVuZHBvaW50cyxcbiAgICAgIGVudGl0eU1ldGEsXG4gICAgICBtZXRhOiBzdGF0ZS5tZXRhLFxuICAgICAgb3B0aW1pc3RpYzogc3RhdGUub3B0aW1pc3RpYyxcbiAgICAgIGxhc3RSZXNldDogc3RhdGUubGFzdFJlc2V0LFxuICAgIH07XG4gICAgLy8gcmVkdWNlciBtdXN0IHVwZGF0ZSB0aGUgc3RhdGUsIHNvIGluIGNhc2Ugb2YgcHJvY2Vzc2luZyBlcnJvcnMgd2Ugc2ltcGx5IGNvbXB1dGUgdGhlIGVuZHBvaW50cyBpbmxpbmVcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIC8vIHRoaXMgaXMgbm90IGFsd2F5cyBidWJibGVkIHVwLCBzbyBsZXQncyBkb3VibGUgc3VyZSB0aGlzIGRvZXNuJ3QgZmFpbCBzaWxlbnRseVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsU0FBUyxRQUFRLHdCQUF3QjtBQUtsRCxPQUFPLFNBQVNDLFVBQVVBLENBQ3hCQyxLQUFxQixFQUNyQkMsTUFBaUIsRUFDakJDLFVBQXNCLEVBQ3RCO0VBQ0EsSUFBSUMsS0FBVTtFQUNkLElBQUksT0FBT0YsTUFBTSxDQUFDRSxLQUFLLEtBQUssVUFBVSxFQUFFO0lBQ3RDLE1BQU1DLGFBQWEsR0FBR0YsVUFBVSxDQUFDRyxHQUFHLENBQUNKLE1BQU0sQ0FBQ0ssTUFBTSxFQUFFLEdBQUdMLE1BQU0sQ0FBQ00sSUFBSSxFQUFFUCxLQUFLLENBQUM7SUFDMUUsSUFBSUksYUFBYSxLQUFLSSxTQUFTLEVBQUUsT0FBT1IsS0FBSztJQUM3Q0csS0FBSyxHQUFHRixNQUFNLENBQUNFLEtBQUssQ0FBQ0MsYUFBYSxDQUFDO0VBQ3JDLENBQUMsTUFBTTtJQUNMRCxLQUFLLEdBQUdGLE1BQU0sQ0FBQ0UsS0FBSztFQUN0QjtFQUNBLElBQUk7SUFDRixNQUFNO01BQUVNLFFBQVE7TUFBRUMsT0FBTztNQUFFQztJQUFXLENBQUMsR0FBR2IsU0FBUyxDQUNqREcsTUFBTSxDQUFDSyxNQUFNLEVBQ2JILEtBQUssRUFDTEYsTUFBTSxDQUFDTSxJQUFJLEVBQ1hQLEtBQUssRUFDTEMsTUFBTSxDQUFDVyxJQUNULENBQUM7SUFDRCxPQUFPO01BQ0xILFFBQVE7TUFDUkMsT0FBTztNQUNQRyxTQUFTLEVBQUViLEtBQUssQ0FBQ2EsU0FBUztNQUMxQkYsVUFBVTtNQUNWQyxJQUFJLEVBQUVaLEtBQUssQ0FBQ1ksSUFBSTtNQUNoQkUsVUFBVSxFQUFFZCxLQUFLLENBQUNjLFVBQVU7TUFDNUJDLFNBQVMsRUFBRWYsS0FBSyxDQUFDZTtJQUNuQixDQUFDO0lBQ0Q7RUFDRixDQUFDLENBQUMsT0FBT0MsS0FBVSxFQUFFO0lBQ25CO0lBQ0E7SUFDQSxJQUFJQyxPQUFPLENBQUNDLEdBQUcsQ0FBQ0MsUUFBUSxLQUFLLFlBQVksRUFBRTtNQUN6Q0MsT0FBTyxDQUFDSixLQUFLLENBQUNBLEtBQUssQ0FBQztJQUN0QjtJQUNBLE9BQU9oQixLQUFLO0VBQ2Q7QUFDRiIsImlnbm9yZUxpc3QiOltdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub3JtYWxpemUiLCJzZXRSZWR1Y2VyIiwic3RhdGUiLCJhY3Rpb24iLCJjb250cm9sbGVyIiwidmFsdWUiLCJwcmV2aW91c1ZhbHVlIiwiZ2V0Iiwic2NoZW1hIiwiYXJncyIsInVuZGVmaW5lZCIsImVudGl0aWVzIiwiaW5kZXhlcyIsImVudGl0eU1ldGEiLCJtZXRhIiwiZW5kcG9pbnRzIiwib3B0aW1pc3RpYyIsImxhc3RSZXNldCIsImVycm9yIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiY29uc29sZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdGF0ZS9yZWR1Y2VyL3NldFJlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCBDb250cm9sbGVyIGZyb20gJy4uLy4uL2NvbnRyb2xsZXIvQ29udHJvbGxlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFN0YXRlLCBTZXRBY3Rpb24gfSBmcm9tICcuLi8uLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRSZWR1Y2VyKFxuICBzdGF0ZTogU3RhdGU8dW5rbm93bj4sXG4gIGFjdGlvbjogU2V0QWN0aW9uLFxuICBjb250cm9sbGVyOiBDb250cm9sbGVyLFxuKSB7XG4gIGxldCB2YWx1ZTogYW55O1xuICBpZiAodHlwZW9mIGFjdGlvbi52YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSBjb250cm9sbGVyLmdldChhY3Rpb24uc2NoZW1hLCAuLi5hY3Rpb24uYXJncywgc3RhdGUpO1xuICAgIGlmIChwcmV2aW91c1ZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiBzdGF0ZTtcbiAgICB2YWx1ZSA9IGFjdGlvbi52YWx1ZShwcmV2aW91c1ZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB2YWx1ZSA9IGFjdGlvbi52YWx1ZTtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IHsgZW50aXRpZXMsIGluZGV4ZXMsIGVudGl0eU1ldGEgfSA9IG5vcm1hbGl6ZShcbiAgICAgIGFjdGlvbi5zY2hlbWEsXG4gICAgICB2YWx1ZSxcbiAgICAgIGFjdGlvbi5hcmdzLFxuICAgICAgc3RhdGUsXG4gICAgICBhY3Rpb24ubWV0YSxcbiAgICApO1xuICAgIHJldHVybiB7XG4gICAgICBlbnRpdGllcyxcbiAgICAgIGVuZHBvaW50czogc3RhdGUuZW5kcG9pbnRzLFxuICAgICAgaW5kZXhlcyxcbiAgICAgIG1ldGE6IHN0YXRlLm1ldGEsXG4gICAgICBlbnRpdHlNZXRhLFxuICAgICAgb3B0aW1pc3RpYzogc3RhdGUub3B0aW1pc3RpYyxcbiAgICAgIGxhc3RSZXNldDogc3RhdGUubGFzdFJlc2V0LFxuICAgIH07XG4gICAgLy8gcmVkdWNlciBtdXN0IHVwZGF0ZSB0aGUgc3RhdGUsIHNvIGluIGNhc2Ugb2YgcHJvY2Vzc2luZyBlcnJvcnMgd2Ugc2ltcGx5IGNvbXB1dGUgdGhlIGVuZHBvaW50cyBpbmxpbmVcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIC8vIHRoaXMgaXMgbm90IGFsd2F5cyBidWJibGVkIHVwLCBzbyBsZXQncyBkb3VibGUgc3VyZSB0aGlzIGRvZXNuJ3QgZmFpbCBzaWxlbnRseVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsU0FBUyxRQUFRLHdCQUF3QjtBQUtsRCxPQUFPLFNBQVNDLFVBQVVBLENBQ3hCQyxLQUFxQixFQUNyQkMsTUFBaUIsRUFDakJDLFVBQXNCLEVBQ3RCO0VBQ0EsSUFBSUMsS0FBVTtFQUNkLElBQUksT0FBT0YsTUFBTSxDQUFDRSxLQUFLLEtBQUssVUFBVSxFQUFFO0lBQ3RDLE1BQU1DLGFBQWEsR0FBR0YsVUFBVSxDQUFDRyxHQUFHLENBQUNKLE1BQU0sQ0FBQ0ssTUFBTSxFQUFFLEdBQUdMLE1BQU0sQ0FBQ00sSUFBSSxFQUFFUCxLQUFLLENBQUM7SUFDMUUsSUFBSUksYUFBYSxLQUFLSSxTQUFTLEVBQUUsT0FBT1IsS0FBSztJQUM3Q0csS0FBSyxHQUFHRixNQUFNLENBQUNFLEtBQUssQ0FBQ0MsYUFBYSxDQUFDO0VBQ3JDLENBQUMsTUFBTTtJQUNMRCxLQUFLLEdBQUdGLE1BQU0sQ0FBQ0UsS0FBSztFQUN0QjtFQUNBLElBQUk7SUFDRixNQUFNO01BQUVNLFFBQVE7TUFBRUMsT0FBTztNQUFFQztJQUFXLENBQUMsR0FBR2IsU0FBUyxDQUNqREcsTUFBTSxDQUFDSyxNQUFNLEVBQ2JILEtBQUssRUFDTEYsTUFBTSxDQUFDTSxJQUFJLEVBQ1hQLEtBQUssRUFDTEMsTUFBTSxDQUFDVyxJQUNULENBQUM7SUFDRCxPQUFPO01BQ0xILFFBQVE7TUFDUkksU0FBUyxFQUFFYixLQUFLLENBQUNhLFNBQVM7TUFDMUJILE9BQU87TUFDUEUsSUFBSSxFQUFFWixLQUFLLENBQUNZLElBQUk7TUFDaEJELFVBQVU7TUFDVkcsVUFBVSxFQUFFZCxLQUFLLENBQUNjLFVBQVU7TUFDNUJDLFNBQVMsRUFBRWYsS0FBSyxDQUFDZTtJQUNuQixDQUFDO0lBQ0Q7RUFDRixDQUFDLENBQUMsT0FBT0MsS0FBVSxFQUFFO0lBQ25CO0lBQ0E7SUFDQSxJQUFJQyxPQUFPLENBQUNDLEdBQUcsQ0FBQ0MsUUFBUSxLQUFLLFlBQVksRUFBRTtNQUN6Q0MsT0FBTyxDQUFDSixLQUFLLENBQUNBLEtBQUssQ0FBQztJQUN0QjtJQUNBLE9BQU9oQixLQUFLO0VBQ2Q7QUFDRiIsImlnbm9yZUxpc3QiOltdfQ==

@@ -53,5 +53,4 @@ import { normalize } from '@data-client/normalizr';

entities,
endpoints,
indexes,
endpoints,
entityMeta,
meta: Object.assign({}, state.meta, {

@@ -64,2 +63,3 @@ [action.key]: {

}),
entityMeta,
optimistic: filterOptimistic(state, action),

@@ -109,2 +109,2 @@ lastReset: state.lastReset

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub3JtYWxpemUiLCJPUFRJTUlTVElDX1RZUEUiLCJBYm9ydE9wdGltaXN0aWMiLCJzZXRSZXNwb25zZVJlZHVjZXIiLCJzdGF0ZSIsImFjdGlvbiIsImNvbnRyb2xsZXIiLCJlcnJvciIsInJlZHVjZUVycm9yIiwicmVzcG9uc2UiLCJfc3RhdGUkbWV0YSRhY3Rpb24ka2UiLCJ0eXBlIiwiZW5kcG9pbnQiLCJnZXRPcHRpbWlzdGljUmVzcG9uc2UiLCJjYWxsIiwic25hcHNob3QiLCJtZXRhIiwiZmV0Y2hlZEF0IiwiYXJncyIsImUiLCJjb25zdHJ1Y3RvciIsInJlc3VsdCIsImVudGl0aWVzIiwiaW5kZXhlcyIsImVudGl0eU1ldGEiLCJzY2hlbWEiLCJlbmRwb2ludHMiLCJPYmplY3QiLCJhc3NpZ24iLCJrZXkiLCJ1cGRhdGUiLCJ1cGRhdGVycyIsImtleXMiLCJmb3JFYWNoIiwiY29uc29sZSIsImRhdGUiLCJleHBpcmVzQXQiLCJwcmV2RXhwaXJlc0F0Iiwib3B0aW1pc3RpYyIsImZpbHRlck9wdGltaXN0aWMiLCJsYXN0UmVzZXQiLCJtZXNzYWdlIiwiSlNPTiIsInN0cmluZ2lmeSIsInVuZGVmaW5lZCIsInN0YXR1cyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm5hbWUiLCJlcnJvclBvbGljeSIsInJlc29sdmluZ0FjdGlvbiIsImZpbHRlciIsIm9wdGltaXN0aWNBY3Rpb24iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RhdGUvcmVkdWNlci9zZXRSZXNwb25zZVJlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCB7IE9QVElNSVNUSUNfVFlQRSB9IGZyb20gJy4uLy4uL2FjdGlvblR5cGVzLmpzJztcbmltcG9ydCBBYm9ydE9wdGltaXN0aWMgZnJvbSAnLi4vLi4vY29udHJvbGxlci9BYm9ydE9wdGltaXN0aWMuanMnO1xuaW1wb3J0IHR5cGUgQ29udHJvbGxlciBmcm9tICcuLi8uLi9jb250cm9sbGVyL0NvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHR5cGUge1xuICBTdGF0ZSxcbiAgU2V0UmVzcG9uc2VBY3Rpb24sXG4gIE9wdGltaXN0aWNBY3Rpb24sXG59IGZyb20gJy4uLy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHNldFJlc3BvbnNlUmVkdWNlcihcbiAgc3RhdGU6IFN0YXRlPHVua25vd24+LFxuICBhY3Rpb246IE9wdGltaXN0aWNBY3Rpb24gfCBTZXRSZXNwb25zZUFjdGlvbixcbiAgY29udHJvbGxlcjogQ29udHJvbGxlcixcbikge1xuICBpZiAoYWN0aW9uLmVycm9yKSB7XG4gICAgcmV0dXJuIHJlZHVjZUVycm9yKHN0YXRlLCBhY3Rpb24sIGFjdGlvbi5yZXNwb25zZSk7XG4gIH1cbiAgdHJ5IHtcbiAgICBsZXQgcmVzcG9uc2U6IGFueTtcbiAgICAvLyBmb3IgdHJ1ZSBzZXQncyByZXNwb25zZSBpcyBjb250YWluZWQgaW4gYWN0aW9uXG4gICAgaWYgKGFjdGlvbi50eXBlID09PSBPUFRJTUlTVElDX1RZUEUpIHtcbiAgICAgIC8vIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoIWFjdGlvbi5lbmRwb2ludC5nZXRPcHRpbWlzdGljUmVzcG9uc2UpIHJldHVybiBzdGF0ZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIGNvbXB1dGUgb3B0aW1pc3RpYyByZXNwb25zZSBiYXNlZCBvbiBjdXJyZW50IHN0YXRlXG4gICAgICAgIHJlc3BvbnNlID0gYWN0aW9uLmVuZHBvaW50LmdldE9wdGltaXN0aWNSZXNwb25zZS5jYWxsKFxuICAgICAgICAgIGFjdGlvbi5lbmRwb2ludCxcbiAgICAgICAgICBjb250cm9sbGVyLnNuYXBzaG90KHN0YXRlLCBhY3Rpb24ubWV0YS5mZXRjaGVkQXQpLFxuICAgICAgICAgIC4uLmFjdGlvbi5hcmdzLFxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIC8vIEFib3J0T3B0aW1pc3RpYyBtZWFucyAnZG8gbm90aGluZycsIG90aGVyd2lzZSB3ZSBjb3VudCB0aGUgZXhjZXB0aW9uIGFzIGVuZHBvaW50IGZhaWx1cmVcbiAgICAgICAgaWYgKGUuY29uc3RydWN0b3IgPT09IEFib3J0T3B0aW1pc3RpYykge1xuICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXNwb25zZSA9IGFjdGlvbi5yZXNwb25zZTtcbiAgICB9XG4gICAgY29uc3QgeyByZXN1bHQsIGVudGl0aWVzLCBpbmRleGVzLCBlbnRpdHlNZXRhIH0gPSBub3JtYWxpemUoXG4gICAgICBhY3Rpb24uZW5kcG9pbnQuc2NoZW1hLFxuICAgICAgcmVzcG9uc2UsXG4gICAgICBhY3Rpb24uYXJncyxcbiAgICAgIHN0YXRlLFxuICAgICAgYWN0aW9uLm1ldGEsXG4gICAgKTtcbiAgICBjb25zdCBlbmRwb2ludHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgICAgLi4uc3RhdGUuZW5kcG9pbnRzLFxuICAgICAgW2FjdGlvbi5rZXldOiByZXN1bHQsXG4gICAgfTtcbiAgICB0cnkge1xuICAgICAgaWYgKGFjdGlvbi5lbmRwb2ludC51cGRhdGUpIHtcbiAgICAgICAgY29uc3QgdXBkYXRlcnMgPSBhY3Rpb24uZW5kcG9pbnQudXBkYXRlKHJlc3VsdCwgLi4uYWN0aW9uLmFyZ3MpO1xuICAgICAgICBPYmplY3Qua2V5cyh1cGRhdGVycykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIGVuZHBvaW50c1trZXldID0gdXBkYXRlcnNba2V5XShlbmRwb2ludHNba2V5XSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gbm8gcmVhc29uIHRvIGNvbXBsZXRlbHkgZmFpbCBiZWNhdXNlIG9mIHVzZXItY29kZSBlcnJvclxuICAgICAgLy8gaW50ZWdyaXR5IG9mIHRoaXMgc3RhdGUgdXBkYXRlIGlzIHN0aWxsIGd1YXJhbnRlZWRcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFRoZSBmb2xsb3dpbmcgZXJyb3Igb2NjdXJlZCBkdXJpbmcgRW5kcG9pbnQudXBkYXRlKCkgZm9yICR7YWN0aW9uLmtleX1gLFxuICAgICAgKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgZW50aXRpZXMsXG4gICAgICBpbmRleGVzLFxuICAgICAgZW5kcG9pbnRzLFxuICAgICAgZW50aXR5TWV0YSxcbiAgICAgIG1ldGE6IHtcbiAgICAgICAgLi4uc3RhdGUubWV0YSxcbiAgICAgICAgW2FjdGlvbi5rZXldOiB7XG4gICAgICAgICAgZGF0ZTogYWN0aW9uLm1ldGEuZGF0ZSxcbiAgICAgICAgICBleHBpcmVzQXQ6IGFjdGlvbi5tZXRhLmV4cGlyZXNBdCxcbiAgICAgICAgICBwcmV2RXhwaXJlc0F0OiBzdGF0ZS5tZXRhW2FjdGlvbi5rZXldPy5leHBpcmVzQXQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgb3B0aW1pc3RpYzogZmlsdGVyT3B0aW1pc3RpYyhzdGF0ZSwgYWN0aW9uKSxcbiAgICAgIGxhc3RSZXNldDogc3RhdGUubGFzdFJlc2V0LFxuICAgIH07XG4gICAgLy8gcmVkdWNlciBtdXN0IHVwZGF0ZSB0aGUgc3RhdGUsIHNvIGluIGNhc2Ugb2YgcHJvY2Vzc2luZyBlcnJvcnMgd2Ugc2ltcGx5IGNvbXB1dGUgdGhlIGVuZHBvaW50cyBpbmxpbmVcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIGlmICh0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnKSB7XG4gICAgICBlcnJvci5tZXNzYWdlID0gYEVycm9yIHByb2Nlc3NpbmcgJHtcbiAgICAgICAgYWN0aW9uLmtleVxuICAgICAgfVxcblxcbkZ1bGwgU2NoZW1hOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICBhY3Rpb24uZW5kcG9pbnQuc2NoZW1hLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIDIsXG4gICAgICApfVxcblxcbkVycm9yOlxcbiR7ZXJyb3IubWVzc2FnZX1gO1xuICAgICAgaWYgKCdyZXNwb25zZScgaW4gYWN0aW9uKSBlcnJvci5yZXNwb25zZSA9IGFjdGlvbi5yZXNwb25zZTtcbiAgICAgIGVycm9yLnN0YXR1cyA9IDQwMDtcbiAgICB9XG5cbiAgICAvLyB0aGlzIGlzIG5vdCBhbHdheXMgYnViYmxlZCB1cCwgc28gbGV0J3MgZG91YmxlIHN1cmUgdGhpcyBkb2Vzbid0IGZhaWwgc2lsZW50bHlcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlZHVjZUVycm9yKHN0YXRlLCBhY3Rpb24sIGVycm9yKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZWR1Y2VFcnJvcihcbiAgc3RhdGU6IFN0YXRlPHVua25vd24+LFxuICBhY3Rpb246IFNldFJlc3BvbnNlQWN0aW9uIHwgT3B0aW1pc3RpY0FjdGlvbixcbiAgZXJyb3I6IGFueSxcbik6IFN0YXRlPHVua25vd24+IHtcbiAgaWYgKGVycm9yLm5hbWUgPT09ICdBYm9ydEVycm9yJykge1xuICAgIC8vIEluIGNhc2Ugd2UgYWJvcnQgc2ltcGx5IHVuZG8gdGhlIG9wdGltaXN0aWMgdXBkYXRlIGFuZCBhY3QgbGlrZSBubyBmZXRjaCBldmVuIG9jY3VyZWRcbiAgICAvLyBXZSBzdGlsbCB3YW50IHRob3NlIHdhdGNoaW5nIHByb21pc2VzIGZyb20gZmV0Y2ggZGlyZWN0bHkgdG8gb2JzZXJ2ZWQgdGhlIGFib3J0LCBidXQgd2UgZG9uJ3Qgd2FudCB0b1xuICAgIC8vIFRyaWdnZXIgZXJyb3JzIGluIHRoaXMgY2FzZS4gVGhpcyBtZWFucyB0aGVvcmV0aWNhbGx5IGltcHJvcGVybHkgYnVpbHQgYWJvcnRlcyB1c2VSZXNvdXJjZSgpIGNvdWxkIHN1c3BlbmQgZm9yZXZlci5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBvcHRpbWlzdGljOiBmaWx0ZXJPcHRpbWlzdGljKHN0YXRlLCBhY3Rpb24pLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtZXRhOiB7XG4gICAgICAuLi5zdGF0ZS5tZXRhLFxuICAgICAgW2FjdGlvbi5rZXldOiB7XG4gICAgICAgIGRhdGU6IGFjdGlvbi5tZXRhLmRhdGUsXG4gICAgICAgIGVycm9yLFxuICAgICAgICBleHBpcmVzQXQ6IGFjdGlvbi5tZXRhLmV4cGlyZXNBdCxcbiAgICAgICAgZXJyb3JQb2xpY3k6IGFjdGlvbi5lbmRwb2ludC5lcnJvclBvbGljeT8uKGVycm9yKSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBvcHRpbWlzdGljOiBmaWx0ZXJPcHRpbWlzdGljKHN0YXRlLCBhY3Rpb24pLFxuICB9O1xufVxuLyoqIEZpbHRlciBhbGwgcmVxdWVzdHMgd2l0aCBzYW1lIHNlcmlhbGl6YXRpb24gdGhhdCBkaWQgbm90IHN0YXJ0IGFmdGVyIHRoZSByZXNvbHZpbmcgcmVxdWVzdCAqL1xuZnVuY3Rpb24gZmlsdGVyT3B0aW1pc3RpYyhcbiAgc3RhdGU6IFN0YXRlPHVua25vd24+LFxuICByZXNvbHZpbmdBY3Rpb246IFNldFJlc3BvbnNlQWN0aW9uIHwgT3B0aW1pc3RpY0FjdGlvbixcbikge1xuICByZXR1cm4gc3RhdGUub3B0aW1pc3RpYy5maWx0ZXIoXG4gICAgb3B0aW1pc3RpY0FjdGlvbiA9PlxuICAgICAgb3B0aW1pc3RpY0FjdGlvbi5rZXkgIT09IHJlc29sdmluZ0FjdGlvbi5rZXkgfHxcbiAgICAgIChvcHRpbWlzdGljQWN0aW9uLnR5cGUgPT09IE9QVElNSVNUSUNfVFlQRSA/XG4gICAgICAgIG9wdGltaXN0aWNBY3Rpb24ubWV0YS5mZXRjaGVkQXQgIT09IHJlc29sdmluZ0FjdGlvbi5tZXRhLmZldGNoZWRBdFxuICAgICAgOiBvcHRpbWlzdGljQWN0aW9uLm1ldGEuZGF0ZSA+IHJlc29sdmluZ0FjdGlvbi5tZXRhLmRhdGUpLFxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxTQUFTLFFBQVEsd0JBQXdCO0FBRWxELFNBQVNDLGVBQWUsUUFBUSxzQkFBc0I7QUFDdEQsT0FBT0MsZUFBZSxNQUFNLHFDQUFxQztBQVFqRSxPQUFPLFNBQVNDLGtCQUFrQkEsQ0FDaENDLEtBQXFCLEVBQ3JCQyxNQUE0QyxFQUM1Q0MsVUFBc0IsRUFDdEI7RUFDQSxJQUFJRCxNQUFNLENBQUNFLEtBQUssRUFBRTtJQUNoQixPQUFPQyxXQUFXLENBQUNKLEtBQUssRUFBRUMsTUFBTSxFQUFFQSxNQUFNLENBQUNJLFFBQVEsQ0FBQztFQUNwRDtFQUNBLElBQUk7SUFBQSxJQUFBQyxxQkFBQTtJQUNGLElBQUlELFFBQWE7SUFDakI7SUFDQSxJQUFJSixNQUFNLENBQUNNLElBQUksS0FBS1YsZUFBZSxFQUFFO01BQ25DO01BQ0E7TUFDQSxJQUFJLENBQUNJLE1BQU0sQ0FBQ08sUUFBUSxDQUFDQyxxQkFBcUIsRUFBRSxPQUFPVCxLQUFLO01BQ3hELElBQUk7UUFDRjtRQUNBSyxRQUFRLEdBQUdKLE1BQU0sQ0FBQ08sUUFBUSxDQUFDQyxxQkFBcUIsQ0FBQ0MsSUFBSSxDQUNuRFQsTUFBTSxDQUFDTyxRQUFRLEVBQ2ZOLFVBQVUsQ0FBQ1MsUUFBUSxDQUFDWCxLQUFLLEVBQUVDLE1BQU0sQ0FBQ1csSUFBSSxDQUFDQyxTQUFTLENBQUMsRUFDakQsR0FBR1osTUFBTSxDQUFDYSxJQUNaLENBQUM7TUFDSCxDQUFDLENBQUMsT0FBT0MsQ0FBTSxFQUFFO1FBQ2Y7UUFDQSxJQUFJQSxDQUFDLENBQUNDLFdBQVcsS0FBS2xCLGVBQWUsRUFBRTtVQUNyQyxPQUFPRSxL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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub3JtYWxpemUiLCJPUFRJTUlTVElDX1RZUEUiLCJBYm9ydE9wdGltaXN0aWMiLCJzZXRSZXNwb25zZVJlZHVjZXIiLCJzdGF0ZSIsImFjdGlvbiIsImNvbnRyb2xsZXIiLCJlcnJvciIsInJlZHVjZUVycm9yIiwicmVzcG9uc2UiLCJfc3RhdGUkbWV0YSRhY3Rpb24ka2UiLCJ0eXBlIiwiZW5kcG9pbnQiLCJnZXRPcHRpbWlzdGljUmVzcG9uc2UiLCJjYWxsIiwic25hcHNob3QiLCJtZXRhIiwiZmV0Y2hlZEF0IiwiYXJncyIsImUiLCJjb25zdHJ1Y3RvciIsInJlc3VsdCIsImVudGl0aWVzIiwiaW5kZXhlcyIsImVudGl0eU1ldGEiLCJzY2hlbWEiLCJlbmRwb2ludHMiLCJPYmplY3QiLCJhc3NpZ24iLCJrZXkiLCJ1cGRhdGUiLCJ1cGRhdGVycyIsImtleXMiLCJmb3JFYWNoIiwiY29uc29sZSIsImRhdGUiLCJleHBpcmVzQXQiLCJwcmV2RXhwaXJlc0F0Iiwib3B0aW1pc3RpYyIsImZpbHRlck9wdGltaXN0aWMiLCJsYXN0UmVzZXQiLCJtZXNzYWdlIiwiSlNPTiIsInN0cmluZ2lmeSIsInVuZGVmaW5lZCIsInN0YXR1cyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm5hbWUiLCJlcnJvclBvbGljeSIsInJlc29sdmluZ0FjdGlvbiIsImZpbHRlciIsIm9wdGltaXN0aWNBY3Rpb24iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RhdGUvcmVkdWNlci9zZXRSZXNwb25zZVJlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCB7IE9QVElNSVNUSUNfVFlQRSB9IGZyb20gJy4uLy4uL2FjdGlvblR5cGVzLmpzJztcbmltcG9ydCBBYm9ydE9wdGltaXN0aWMgZnJvbSAnLi4vLi4vY29udHJvbGxlci9BYm9ydE9wdGltaXN0aWMuanMnO1xuaW1wb3J0IHR5cGUgQ29udHJvbGxlciBmcm9tICcuLi8uLi9jb250cm9sbGVyL0NvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHR5cGUge1xuICBTdGF0ZSxcbiAgU2V0UmVzcG9uc2VBY3Rpb24sXG4gIE9wdGltaXN0aWNBY3Rpb24sXG59IGZyb20gJy4uLy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHNldFJlc3BvbnNlUmVkdWNlcihcbiAgc3RhdGU6IFN0YXRlPHVua25vd24+LFxuICBhY3Rpb246IE9wdGltaXN0aWNBY3Rpb24gfCBTZXRSZXNwb25zZUFjdGlvbixcbiAgY29udHJvbGxlcjogQ29udHJvbGxlcixcbikge1xuICBpZiAoYWN0aW9uLmVycm9yKSB7XG4gICAgcmV0dXJuIHJlZHVjZUVycm9yKHN0YXRlLCBhY3Rpb24sIGFjdGlvbi5yZXNwb25zZSk7XG4gIH1cbiAgdHJ5IHtcbiAgICBsZXQgcmVzcG9uc2U6IGFueTtcbiAgICAvLyBmb3IgdHJ1ZSBzZXQncyByZXNwb25zZSBpcyBjb250YWluZWQgaW4gYWN0aW9uXG4gICAgaWYgKGFjdGlvbi50eXBlID09PSBPUFRJTUlTVElDX1RZUEUpIHtcbiAgICAgIC8vIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoIWFjdGlvbi5lbmRwb2ludC5nZXRPcHRpbWlzdGljUmVzcG9uc2UpIHJldHVybiBzdGF0ZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIGNvbXB1dGUgb3B0aW1pc3RpYyByZXNwb25zZSBiYXNlZCBvbiBjdXJyZW50IHN0YXRlXG4gICAgICAgIHJlc3BvbnNlID0gYWN0aW9uLmVuZHBvaW50LmdldE9wdGltaXN0aWNSZXNwb25zZS5jYWxsKFxuICAgICAgICAgIGFjdGlvbi5lbmRwb2ludCxcbiAgICAgICAgICBjb250cm9sbGVyLnNuYXBzaG90KHN0YXRlLCBhY3Rpb24ubWV0YS5mZXRjaGVkQXQpLFxuICAgICAgICAgIC4uLmFjdGlvbi5hcmdzLFxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIC8vIEFib3J0T3B0aW1pc3RpYyBtZWFucyAnZG8gbm90aGluZycsIG90aGVyd2lzZSB3ZSBjb3VudCB0aGUgZXhjZXB0aW9uIGFzIGVuZHBvaW50IGZhaWx1cmVcbiAgICAgICAgaWYgKGUuY29uc3RydWN0b3IgPT09IEFib3J0T3B0aW1pc3RpYykge1xuICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXNwb25zZSA9IGFjdGlvbi5yZXNwb25zZTtcbiAgICB9XG4gICAgY29uc3QgeyByZXN1bHQsIGVudGl0aWVzLCBpbmRleGVzLCBlbnRpdHlNZXRhIH0gPSBub3JtYWxpemUoXG4gICAgICBhY3Rpb24uZW5kcG9pbnQuc2NoZW1hLFxuICAgICAgcmVzcG9uc2UsXG4gICAgICBhY3Rpb24uYXJncyxcbiAgICAgIHN0YXRlLFxuICAgICAgYWN0aW9uLm1ldGEsXG4gICAgKTtcbiAgICBjb25zdCBlbmRwb2ludHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgICAgLi4uc3RhdGUuZW5kcG9pbnRzLFxuICAgICAgW2FjdGlvbi5rZXldOiByZXN1bHQsXG4gICAgfTtcbiAgICB0cnkge1xuICAgICAgaWYgKGFjdGlvbi5lbmRwb2ludC51cGRhdGUpIHtcbiAgICAgICAgY29uc3QgdXBkYXRlcnMgPSBhY3Rpb24uZW5kcG9pbnQudXBkYXRlKHJlc3VsdCwgLi4uYWN0aW9uLmFyZ3MpO1xuICAgICAgICBPYmplY3Qua2V5cyh1cGRhdGVycykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIGVuZHBvaW50c1trZXldID0gdXBkYXRlcnNba2V5XShlbmRwb2ludHNba2V5XSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gbm8gcmVhc29uIHRvIGNvbXBsZXRlbHkgZmFpbCBiZWNhdXNlIG9mIHVzZXItY29kZSBlcnJvclxuICAgICAgLy8gaW50ZWdyaXR5IG9mIHRoaXMgc3RhdGUgdXBkYXRlIGlzIHN0aWxsIGd1YXJhbnRlZWRcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFRoZSBmb2xsb3dpbmcgZXJyb3Igb2NjdXJlZCBkdXJpbmcgRW5kcG9pbnQudXBkYXRlKCkgZm9yICR7YWN0aW9uLmtleX1gLFxuICAgICAgKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgZW50aXRpZXMsXG4gICAgICBlbmRwb2ludHMsXG4gICAgICBpbmRleGVzLFxuICAgICAgbWV0YToge1xuICAgICAgICAuLi5zdGF0ZS5tZXRhLFxuICAgICAgICBbYWN0aW9uLmtleV06IHtcbiAgICAgICAgICBkYXRlOiBhY3Rpb24ubWV0YS5kYXRlLFxuICAgICAgICAgIGV4cGlyZXNBdDogYWN0aW9uLm1ldGEuZXhwaXJlc0F0LFxuICAgICAgICAgIHByZXZFeHBpcmVzQXQ6IHN0YXRlLm1ldGFbYWN0aW9uLmtleV0/LmV4cGlyZXNBdCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBlbnRpdHlNZXRhLFxuICAgICAgb3B0aW1pc3RpYzogZmlsdGVyT3B0aW1pc3RpYyhzdGF0ZSwgYWN0aW9uKSxcbiAgICAgIGxhc3RSZXNldDogc3RhdGUubGFzdFJlc2V0LFxuICAgIH07XG4gICAgLy8gcmVkdWNlciBtdXN0IHVwZGF0ZSB0aGUgc3RhdGUsIHNvIGluIGNhc2Ugb2YgcHJvY2Vzc2luZyBlcnJvcnMgd2Ugc2ltcGx5IGNvbXB1dGUgdGhlIGVuZHBvaW50cyBpbmxpbmVcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIGlmICh0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnKSB7XG4gICAgICBlcnJvci5tZXNzYWdlID0gYEVycm9yIHByb2Nlc3NpbmcgJHtcbiAgICAgICAgYWN0aW9uLmtleVxuICAgICAgfVxcblxcbkZ1bGwgU2NoZW1hOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICBhY3Rpb24uZW5kcG9pbnQuc2NoZW1hLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIDIsXG4gICAgICApfVxcblxcbkVycm9yOlxcbiR7ZXJyb3IubWVzc2FnZX1gO1xuICAgICAgaWYgKCdyZXNwb25zZScgaW4gYWN0aW9uKSBlcnJvci5yZXNwb25zZSA9IGFjdGlvbi5yZXNwb25zZTtcbiAgICAgIGVycm9yLnN0YXR1cyA9IDQwMDtcbiAgICB9XG5cbiAgICAvLyB0aGlzIGlzIG5vdCBhbHdheXMgYnViYmxlZCB1cCwgc28gbGV0J3MgZG91YmxlIHN1cmUgdGhpcyBkb2Vzbid0IGZhaWwgc2lsZW50bHlcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlZHVjZUVycm9yKHN0YXRlLCBhY3Rpb24sIGVycm9yKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZWR1Y2VFcnJvcihcbiAgc3RhdGU6IFN0YXRlPHVua25vd24+LFxuICBhY3Rpb246IFNldFJlc3BvbnNlQWN0aW9uIHwgT3B0aW1pc3RpY0FjdGlvbixcbiAgZXJyb3I6IGFueSxcbik6IFN0YXRlPHVua25vd24+IHtcbiAgaWYgKGVycm9yLm5hbWUgPT09ICdBYm9ydEVycm9yJykge1xuICAgIC8vIEluIGNhc2Ugd2UgYWJvcnQgc2ltcGx5IHVuZG8gdGhlIG9wdGltaXN0aWMgdXBkYXRlIGFuZCBhY3QgbGlrZSBubyBmZXRjaCBldmVuIG9jY3VyZWRcbiAgICAvLyBXZSBzdGlsbCB3YW50IHRob3NlIHdhdGNoaW5nIHByb21pc2VzIGZyb20gZmV0Y2ggZGlyZWN0bHkgdG8gb2JzZXJ2ZWQgdGhlIGFib3J0LCBidXQgd2UgZG9uJ3Qgd2FudCB0b1xuICAgIC8vIFRyaWdnZXIgZXJyb3JzIGluIHRoaXMgY2FzZS4gVGhpcyBtZWFucyB0aGVvcmV0aWNhbGx5IGltcHJvcGVybHkgYnVpbHQgYWJvcnRlcyB1c2VSZXNvdXJjZSgpIGNvdWxkIHN1c3BlbmQgZm9yZXZlci5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBvcHRpbWlzdGljOiBmaWx0ZXJPcHRpbWlzdGljKHN0YXRlLCBhY3Rpb24pLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtZXRhOiB7XG4gICAgICAuLi5zdGF0ZS5tZXRhLFxuICAgICAgW2FjdGlvbi5rZXldOiB7XG4gICAgICAgIGRhdGU6IGFjdGlvbi5tZXRhLmRhdGUsXG4gICAgICAgIGVycm9yLFxuICAgICAgICBleHBpcmVzQXQ6IGFjdGlvbi5tZXRhLmV4cGlyZXNBdCxcbiAgICAgICAgZXJyb3JQb2xpY3k6IGFjdGlvbi5lbmRwb2ludC5lcnJvclBvbGljeT8uKGVycm9yKSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBvcHRpbWlzdGljOiBmaWx0ZXJPcHRpbWlzdGljKHN0YXRlLCBhY3Rpb24pLFxuICB9O1xufVxuLyoqIEZpbHRlciBhbGwgcmVxdWVzdHMgd2l0aCBzYW1lIHNlcmlhbGl6YXRpb24gdGhhdCBkaWQgbm90IHN0YXJ0IGFmdGVyIHRoZSByZXNvbHZpbmcgcmVxdWVzdCAqL1xuZnVuY3Rpb24gZmlsdGVyT3B0aW1pc3RpYyhcbiAgc3RhdGU6IFN0YXRlPHVua25vd24+LFxuICByZXNvbHZpbmdBY3Rpb246IFNldFJlc3BvbnNlQWN0aW9uIHwgT3B0aW1pc3RpY0FjdGlvbixcbikge1xuICByZXR1cm4gc3RhdGUub3B0aW1pc3RpYy5maWx0ZXIoXG4gICAgb3B0aW1pc3RpY0FjdGlvbiA9PlxuICAgICAgb3B0aW1pc3RpY0FjdGlvbi5rZXkgIT09IHJlc29sdmluZ0FjdGlvbi5rZXkgfHxcbiAgICAgIChvcHRpbWlzdGljQWN0aW9uLnR5cGUgPT09IE9QVElNSVNUSUNfVFlQRSA/XG4gICAgICAgIG9wdGltaXN0aWNBY3Rpb24ubWV0YS5mZXRjaGVkQXQgIT09IHJlc29sdmluZ0FjdGlvbi5tZXRhLmZldGNoZWRBdFxuICAgICAgOiBvcHRpbWlzdGljQWN0aW9uLm1ldGEuZGF0ZSA+IHJlc29sdmluZ0FjdGlvbi5tZXRhLmRhdGUpLFxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxTQUFTLFFBQVEsd0JBQXdCO0FBRWxELFNBQVNDLGVBQWUsUUFBUSxzQkFBc0I7QUFDdEQsT0FBT0MsZUFBZSxNQUFNLHFDQUFxQztBQVFqRSxPQUFPLFNBQVNDLGtCQUFrQkEsQ0FDaENDLEtBQXFCLEVBQ3JCQyxNQUE0QyxFQUM1Q0MsVUFBc0IsRUFDdEI7RUFDQSxJQUFJRCxNQUFNLENBQUNFLEtBQUssRUFBRTtJQUNoQixPQUFPQyxXQUFXLENBQUNKLEtBQUssRUFBRUMsTUFBTSxFQUFFQSxNQUFNLENBQUNJLFFBQVEsQ0FBQztFQUNwRDtFQUNBLElBQUk7SUFBQSxJQUFBQyxxQkFBQTtJQUNGLElBQUlELFFBQWE7SUFDakI7SUFDQSxJQUFJSixNQUFNLENBQUNNLElBQUksS0FBS1YsZUFBZSxFQUFFO01BQ25DO01BQ0E7TUFDQSxJQUFJLENBQUNJLE1BQU0sQ0FBQ08sUUFBUSxDQUFDQyxxQkFBcUIsRUFBRSxPQUFPVCxLQUFLO01BQ3hELElBQUk7UUFDRjtRQUNBSyxRQUFRLEdBQUdKLE1BQU0sQ0FBQ08sUUFBUSxDQUFDQyxxQkFBcUIsQ0FBQ0MsSUFBSSxDQUNuRFQsTUFBTSxDQUFDTyxRQUFRLEVBQ2ZOLFVBQVUsQ0FBQ1MsUUFBUSxDQUFDWCxLQUFLLEVBQUVDLE1BQU0sQ0FBQ1csSUFBSSxDQUFDQyxTQUFTLENBQUMsRUFDakQsR0FBR1osTUFBTSxDQUFDYSxJQUNaLENBQUM7TUFDSCxDQUFDLENBQUMsT0FBT0MsQ0FBTSxFQUFFO1FBQ2Y7UUFDQSxJQUFJQSxDQUFDLENBQUNDLFdBQVcsS0FBS2xCLGVBQWUsRUFBRTtVQUNyQyxPQUFPRSxL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
export * from './actions.js';
export {};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vcm1hbGl6ZWRJbmRleCB9IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuaW1wb3J0IHR5cGUge1xuICBVcGRhdGVGdW5jdGlvbixcbiAgQWJzdHJhY3RJbnN0YW5jZVR5cGUsXG59IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuaW1wb3J0IHR5cGUgeyBFcnJvclR5cGVzIH0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCB0eXBlIHtcbiAgQWN0aW9uVHlwZXMsXG4gIFNldFJlc3BvbnNlQWN0aW9uLFxuICBPcHRpbWlzdGljQWN0aW9uLFxufSBmcm9tICcuL2FjdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBEaXNwYXRjaCwgTWlkZGxld2FyZSwgTWlkZGxld2FyZUFQSSB9IGZyb20gJy4vbWlkZGxld2FyZVR5cGVzLmpzJztcblxuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb25zLmpzJztcblxuZXhwb3J0IHR5cGUgeyBBYnN0cmFjdEluc3RhbmNlVHlwZSwgVXBkYXRlRnVuY3Rpb24gfTtcblxuZXhwb3J0IHR5cGUgUEsgPSBzdHJpbmc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGU8VD4ge1xuICByZWFkb25seSBlbnRpdGllczoge1xuICAgIHJlYWRvbmx5IFtlbnRpdHlLZXk6IHN0cmluZ106IHsgcmVhZG9ubHkgW3BrOiBzdHJpbmddOiBUIH0gfCB1bmRlZmluZWQ7XG4gIH07XG4gIHJlYWRvbmx5IGluZGV4ZXM6IE5vcm1hbGl6ZWRJbmRleDtcbiAgcmVhZG9ubHkgZW5kcG9pbnRzOiB7XG4gICAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogdW5rbm93biB8IFBLW10gfCBQSyB8IHVuZGVmaW5lZDtcbiAgfTtcbiAgcmVhZG9ubHkgbWV0YToge1xuICAgIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHtcbiAgICAgIHJlYWRvbmx5IGRhdGU6IG51bWJlcjtcbiAgICAgIHJlYWRvbmx5IGV4cGlyZXNBdDogbnVtYmVyO1xuICAgICAgcmVhZG9ubHkgcHJldkV4cGlyZXNBdD86IG51bWJlcjtcbiAgICAgIHJlYWRvbmx5IGVycm9yPzogRXJyb3JUeXBlcztcbiAgICAgIHJlYWRvbmx5IGludmFsaWRhdGVkPzogYm9vbGVhbjtcbiAgICAgIHJlYWRvbmx5IGVycm9yUG9saWN5PzogJ2hhcmQnIHwgJ3NvZnQnIHwgdW5kZWZpbmVkO1xuICAgIH07XG4gIH07XG4gIHJlYWRvbmx5IGVudGl0eU1ldGE6IHtcbiAgICByZWFkb25seSBbZW50aXR5S2V5OiBzdHJpbmddOiB7XG4gICAgICByZWFkb25seSBbcGs6IHN0cmluZ106IHtcbiAgICAgICAgcmVhZG9ubHkgZmV0Y2hlZEF0OiBudW1iZXI7XG4gICAgICAgIHJlYWRvbmx5IGRhdGU6IG51bWJlcjtcbiAgICAgICAgcmVhZG9ubHkgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIHJlYWRvbmx5IG9wdGltaXN0aWM6IChTZXRSZXNwb25zZUFjdGlvbiB8IE9wdGltaXN0aWNBY3Rpb24pW107XG4gIHJlYWRvbmx5IGxhc3RSZXNldDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hbmFnZXI8QWN0aW9ucyA9IEFjdGlvblR5cGVzPiB7XG4gIGdldE1pZGRsZXdhcmUoKTogTWlkZGxld2FyZTxBY3Rpb25zPjtcbiAgY2xlYW51cCgpOiB2b2lkO1xuICBpbml0PzogKHN0YXRlOiBTdGF0ZTxhbnk+KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSB7IERpc3BhdGNoLCBNaWRkbGV3YXJlLCBNaWRkbGV3YXJlQVBJIH07XG4iXSwibWFwcGluZ3MiOiJBQWNBLGNBQWMsY0FBYztBQUFDIiwiaWdub3JlTGlzdCI6W119
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vcm1hbGl6ZWRJbmRleCB9IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuaW1wb3J0IHR5cGUge1xuICBVcGRhdGVGdW5jdGlvbixcbiAgQWJzdHJhY3RJbnN0YW5jZVR5cGUsXG59IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuaW1wb3J0IHR5cGUgeyBFcnJvclR5cGVzIH0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCB0eXBlIHtcbiAgQWN0aW9uVHlwZXMsXG4gIFNldFJlc3BvbnNlQWN0aW9uLFxuICBPcHRpbWlzdGljQWN0aW9uLFxufSBmcm9tICcuL2FjdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBEaXNwYXRjaCwgTWlkZGxld2FyZSwgTWlkZGxld2FyZUFQSSB9IGZyb20gJy4vbWlkZGxld2FyZVR5cGVzLmpzJztcblxuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb25zLmpzJztcblxuZXhwb3J0IHR5cGUgeyBBYnN0cmFjdEluc3RhbmNlVHlwZSwgVXBkYXRlRnVuY3Rpb24gfTtcblxuZXhwb3J0IHR5cGUgUEsgPSBzdHJpbmc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGU8VD4ge1xuICByZWFkb25seSBlbnRpdGllczoge1xuICAgIHJlYWRvbmx5IFtlbnRpdHlLZXk6IHN0cmluZ106IHsgcmVhZG9ubHkgW3BrOiBzdHJpbmddOiBUIH0gfCB1bmRlZmluZWQ7XG4gIH07XG4gIHJlYWRvbmx5IGVuZHBvaW50czoge1xuICAgIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHVua25vd24gfCBQS1tdIHwgUEsgfCB1bmRlZmluZWQ7XG4gIH07XG4gIHJlYWRvbmx5IGluZGV4ZXM6IE5vcm1hbGl6ZWRJbmRleDtcbiAgcmVhZG9ubHkgbWV0YToge1xuICAgIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHtcbiAgICAgIHJlYWRvbmx5IGRhdGU6IG51bWJlcjtcbiAgICAgIHJlYWRvbmx5IGV4cGlyZXNBdDogbnVtYmVyO1xuICAgICAgcmVhZG9ubHkgcHJldkV4cGlyZXNBdD86IG51bWJlcjtcbiAgICAgIHJlYWRvbmx5IGVycm9yPzogRXJyb3JUeXBlcztcbiAgICAgIHJlYWRvbmx5IGludmFsaWRhdGVkPzogYm9vbGVhbjtcbiAgICAgIHJlYWRvbmx5IGVycm9yUG9saWN5PzogJ2hhcmQnIHwgJ3NvZnQnIHwgdW5kZWZpbmVkO1xuICAgIH07XG4gIH07XG4gIHJlYWRvbmx5IGVudGl0eU1ldGE6IHtcbiAgICByZWFkb25seSBbZW50aXR5S2V5OiBzdHJpbmddOiB7XG4gICAgICByZWFkb25seSBbcGs6IHN0cmluZ106IHtcbiAgICAgICAgcmVhZG9ubHkgZmV0Y2hlZEF0OiBudW1iZXI7XG4gICAgICAgIHJlYWRvbmx5IGRhdGU6IG51bWJlcjtcbiAgICAgICAgcmVhZG9ubHkgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIHJlYWRvbmx5IG9wdGltaXN0aWM6IChTZXRSZXNwb25zZUFjdGlvbiB8IE9wdGltaXN0aWNBY3Rpb24pW107XG4gIHJlYWRvbmx5IGxhc3RSZXNldDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hbmFnZXI8QWN0aW9ucyA9IEFjdGlvblR5cGVzPiB7XG4gIGdldE1pZGRsZXdhcmUoKTogTWlkZGxld2FyZTxBY3Rpb25zPjtcbiAgY2xlYW51cCgpOiB2b2lkO1xuICBpbml0PzogKHN0YXRlOiBTdGF0ZTxhbnk+KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSB7IERpc3BhdGNoLCBNaWRkbGV3YXJlLCBNaWRkbGV3YXJlQVBJIH07XG4iXSwibWFwcGluZ3MiOiJBQWNBLGNBQWMsY0FBYztBQUFDIiwiaWdub3JlTGlzdCI6W119

@@ -34,3 +34,6 @@ import Controller from '../controller/Controller.js';

cleanupDate?: number;
constructor(dataExpiryLength?: number, errorExpiryLength?: number);
constructor({ dataExpiryLength, errorExpiryLength }?: {
dataExpiryLength?: number | undefined;
errorExpiryLength?: number | undefined;
});
/** Used by DevtoolsManager to determine whether to log an action */

@@ -37,0 +40,0 @@ skipLogging(action: ActionTypes): boolean;

@@ -21,3 +21,6 @@ import { SET_RESPONSE_TYPE, FETCH_TYPE, RESET_TYPE } from '../actionTypes.js';

export default class NetworkManager {
constructor(dataExpiryLength = 60000, errorExpiryLength = 1000) {
constructor({
dataExpiryLength = 60000,
errorExpiryLength = 1000
} = {}) {
this.fetched = Object.create(null);

@@ -267,2 +270,2 @@ this.resolvers = {};

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTRVRfUkVTUE9OU0VfVFlQRSIsIkZFVENIX1RZUEUiLCJSRVNFVF9UWVBFIiwiY3JlYXRlU2V0UmVzcG9uc2UiLCJDb250cm9sbGVyIiwiUmVzZXRFcnJvciIsIkVycm9yIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiTmV0d29ya01hbmFnZXIiLCJkYXRhRXhwaXJ5TGVuZ3RoIiwiZXJyb3JFeHBpcnlMZW5ndGgiLCJmZXRjaGVkIiwiT2JqZWN0IiwiY3JlYXRlIiwicmVzb2x2ZXJzIiwicmVqZWN0b3JzIiwiZmV0Y2hlZEF0IiwiY29udHJvbGxlciIsIm1pZGRsZXdhcmUiLCJuZXh0IiwiYWN0aW9uIiwidHlwZSIsImhhbmRsZUZldGNoIiwiZW5kcG9pbnQiLCJnZXRPcHRpbWlzdGljUmVzcG9uc2UiLCJ1bmRlZmluZWQiLCJzaWRlRWZmZWN0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwia2V5IiwiX2NvbnRyb2xsZXIkZ2V0U3RhdGUkIiwiZXJyb3IiLCJnZXRTdGF0ZSIsIm1ldGEiLCJoYW5kbGVTZXQiLCJhcmdzIiwicmVzcG9uc2UiLCJjbGVhckFsbCIsImsiLCJza2lwTG9nZ2luZyIsImluaXQiLCJjbGVhbnVwRGF0ZSIsImNsZWFudXAiLCJEYXRlIiwibm93IiwiYWxsU2V0dGxlZCIsImZldGNoZXMiLCJ2YWx1ZXMiLCJsZW5ndGgiLCJjbGVhciIsImNhdGNoIiwiZ2V0TGFzdFJlc2V0IiwibGFzdFJlc2V0IiwicmVqZWN0IiwidGhyb3R0bGUiLCJkZWZlcmVkRmV0Y2giLCJwcm9taXNlIiwicmVzb2x2ZVByb21pc2UiLCJkYXRhIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiaXNOYU4iLCJjb25zb2xlIiwicHJvbWlzZUhhbmRsZXIiLCJnZXRNaWRkbGV3YXJlIiwiZmV0Y2giLCJpZGxlQ2FsbGJhY2siLCJ0aW1lb3V0IiwiY2FsbGJhY2siLCJvcHRpb25zIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hbmFnZXIvTmV0d29ya01hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU0VUX1JFU1BPTlNFX1RZUEUsIEZFVENIX1RZUEUsIFJFU0VUX1RZUEUgfSBmcm9tICcuLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgeyBjcmVhdGVTZXRSZXNwb25zZSB9IGZyb20gJy4uL2NvbnRyb2xsZXIvYWN0aW9ucy9pbmRleC5qcyc7XG5pbXBvcnQgQ29udHJvbGxlciBmcm9tICcuLi9jb250cm9sbGVyL0NvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHR5cGUge1xuICBGZXRjaEFjdGlvbixcbiAgTWFuYWdlcixcbiAgQWN0aW9uVHlwZXMsXG4gIE1pZGRsZXdhcmVBUEksXG4gIE1pZGRsZXdhcmUsXG4gIFNldFJlc3BvbnNlQWN0aW9uLFxufSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBjbGFzcyBSZXNldEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBuYW1lID0gJ1Jlc2V0RXJyb3InO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdBYm9ydGVkIGR1ZSB0byBSRVNFVCcpO1xuICB9XG59XG5cbi8qKiBIYW5kbGVzIGFsbCBhc3luYyBuZXR3b3JrIGRpc3BhdGNoZXNcbiAqXG4gKiBEZWR1cGVzIGNvbmN1cnJlbnQgcmVxdWVzdHMgYnkga2VlcGluZyB0cmFjayBvZiBhbGwgZmV0Y2hlcyBpbiBmbGlnaHRcbiAqIGFuZCByZXR1cm5pbmcgZXhpc3RpbmcgcHJvbWlzZXMgZm9yIHJlcXVlc3RzIGFscmVhZHkgaW4gZmxpZ2h0LlxuICpcbiAqIEludGVyZmFjZXMgd2l0aCBzdG9yZSB2aWEgYSByZWR1eC1jb21wYXRpYmxlIG1pZGRsZXdhcmUuXG4gKlxuICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvTmV0d29ya01hbmFnZXJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV0d29ya01hbmFnZXIgaW1wbGVtZW50cyBNYW5hZ2VyIHtcbiAgcHJvdGVjdGVkIGZldGNoZWQ6IHsgW2s6IHN0cmluZ106IFByb21pc2U8YW55PiB9ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcHJvdGVjdGVkIHJlc29sdmVyczogeyBbazogc3RyaW5nXTogKHZhbHVlPzogYW55KSA9PiB2b2lkIH0gPSB7fTtcbiAgcHJvdGVjdGVkIHJlamVjdG9yczogeyBbazogc3RyaW5nXTogKHZhbHVlPzogYW55KSA9PiB2b2lkIH0gPSB7fTtcbiAgcHJvdGVjdGVkIGZldGNoZWRBdDogeyBbazogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcbiAgZGVjbGFyZSByZWFkb25seSBkYXRhRXhwaXJ5TGVuZ3RoOiBudW1iZXI7XG4gIGRlY2xhcmUgcmVhZG9ubHkgZXJyb3JFeHBpcnlMZW5ndGg6IG51bWJlcjtcbiAgcHJvdGVjdGVkIGRlY2xhcmUgbWlkZGxld2FyZTogTWlkZGxld2FyZTtcbiAgcHJvdGVjdGVkIGNvbnRyb2xsZXI6IENvbnRyb2xsZXIgPSBuZXcgQ29udHJvbGxlcigpO1xuICBkZWNsYXJlIGNsZWFudXBEYXRlPzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGRhdGFFeHBpcnlMZW5ndGggPSA2MDAwMCwgZXJyb3JFeHBpcnlMZW5ndGggPSAxMDAwKSB7XG4gICAgdGhpcy5kYXRhRXhwaXJ5TGVuZ3RoID0gZGF0YUV4cGlyeUxlbmd0aDtcbiAgICB0aGlzLmVycm9yRXhwaXJ5TGVuZ3RoID0gZXJyb3JFeHBpcnlMZW5ndGg7XG5cbiAgICB0aGlzLm1pZGRsZXdhcmUgPSA8QyBleHRlbmRzIE1pZGRsZXdhcmVBUEk+KGNvbnRyb2xsZXI6IEMpID0+IHtcbiAgICAgIHRoaXMuY29udHJvbGxlciA9IGNvbnRyb2xsZXI7XG4gICAgICByZXR1cm4gKG5leHQ6IENbJ2Rpc3BhdGNoJ10pOiBDWydkaXNwYXRjaCddID0+XG4gICAgICAgIChhY3Rpb24pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIEZFVENIX1RZUEU6XG4gICAgICAgICAgICAgIHRoaXMuaGFuZGxlRmV0Y2goYWN0aW9uKTtcbiAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgb25seSBjYXNlIHRoYXQgY2F1c2VzIGFueSBzdGF0ZSBjaGFuZ2VcbiAgICAgICAgICAgICAgLy8gSXQncyBpbXBvcnRhbnQgdG8gaW50ZXJjZXB0IG90aGVyIGZldGNoZXMgYXMgd2UgZG9uJ3Qgd2FudCB0byB0cmlnZ2VyIHJlZHVjZXJzIGR1cmluZ1xuICAgICAgICAgICAgICAvLyByZW5kZXIgLSBzbyB3ZSBuZWVkIHRvIHN0b3AgJ3JlYWRvbmx5JyBmZXRjaGVzIHdoaWNoIGNhbiBiZSB0cmlnZ2VyZWQgaW4gcmVuZGVyXG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBhY3Rpb24uZW5kcG9pbnQuZ2V0T3B0aW1pc3RpY1Jlc3BvbnNlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICBhY3Rpb24uZW5kcG9pbnQuc2lkZUVmZmVjdFxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV4dChhY3Rpb24pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgIGNhc2UgU0VUX1JFU1BPTlNFX1RZUEU6XG4gICAgICAgICAgICAgIC8vIG9ubHkgc2V0IGFmdGVyIG5ldyBzdGF0ZSBpcyBjb21wdXRlZFxuICAgICAgICAgICAgICByZXR1cm4gbmV4dChhY3Rpb24pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhY3Rpb24ua2V5IGluIHRoaXMuZmV0Y2hlZCkge1xuICAgICAgICAgICAgICAgICAgLy8gTm90ZTogbWV0YSAqbXVzdCogYmUgc2V0IGJ5IHJlZHVjZXIgc28gdGhpcyBzaG91bGQgYmUgc2FmZVxuICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBjb250cm9sbGVyLmdldFN0YXRlKCkubWV0YVthY3Rpb24ua2V5XT8uZXJyb3I7XG4gICAgICAgICAgICAgICAgICAvLyBwcm9jZXNzaW5nIGVycm9ycyByZXN1bHQgaW4gc3RhdGUgbWV0YSBoYXZpbmcgZXJyb3IsIHNvIHdlIHNob3VsZCByZWplY3QgdGhlIHByb21pc2VcbiAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNldChcbiAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTZXRSZXNwb25zZShhY3Rpb24uZW5kcG9pbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M6IGFjdGlvbi5hcmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6IGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hlZEF0OiBhY3Rpb24ubWV0YS5mZXRjaGVkQXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU2V0KGFjdGlvbik7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgUkVTRVRfVFlQRToge1xuICAgICAgICAgICAgICBjb25zdCByZWplY3RvcnMgPSB7IC4uLnRoaXMucmVqZWN0b3JzIH07XG5cbiAgICAgICAgICAgICAgdGhpcy5jbGVhckFsbCgpO1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dChhY3Rpb24pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHRoZXJlIGNvdWxkIGJlIGV4dGVybmFsIGxpc3RlbmVycyB0byB0aGUgcHJvbWlzZVxuICAgICAgICAgICAgICAgIC8vIHRoaXMgbXVzdCBoYXBwZW4gYWZ0ZXIgY29tbWl0IHNvIG91ciBvd24gcmVqZWN0b3Iga25vd3Mgbm90IHRvIGRpc3BhdGNoIGFuIGVycm9yIGJhc2VkIG9uIHRoaXNcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGsgaW4gcmVqZWN0b3JzKSB7XG4gICAgICAgICAgICAgICAgICByZWplY3RvcnNba10obmV3IFJlc2V0RXJyb3IoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KGFjdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG4gIH1cblxuICAvKiogVXNlZCBieSBEZXZ0b29sc01hbmFnZXIgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gbG9nIGFuIGFjdGlvbiAqL1xuICBza2lwTG9nZ2luZyhhY3Rpb246IEFjdGlvblR5cGVzKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gYWN0aW9uLnR5cGUgPT09IEZFVENIX1RZUEUgJiYgYWN0aW9uLmtleSBpbiB0aGlzLmZldGNoZWQ7XG4gIH1cblxuICAvKiogT24gbW91bnQgKi9cbiAgaW5pdCgpIHtcbiAgICBkZWxldGUgdGhpcy5jbGVhbnVwRGF0ZTtcbiAgfVxuXG4gIC8qKiBFbnN1cmVzIGFsbCBwcm9taXNlcyBhcmUgY29tcGxldGVkIGJ5IHJlamVjdGluZyByZW1haW5pbmcuICovXG4gIGNsZWFudXAoKSB7XG4gICAgLy8gZW5zdXJlIG5vIGRpc3BhdGNoZXMgYWZ0ZXIgdW5tb3VudFxuICAgIC8vIHRoaXMgbXVzdCBiZSByZXZlcnNpYmxlIChkb25lIGluIGluaXQpIHNvIHVzZUVmZmVjdCgpIHJlbWFpbnMgc3ltbWV0cmljXG4gICAgdGhpcy5jbGVhbnVwRGF0ZSA9IERhdGUubm93KCk7XG4gIH1cblxuICBhbGxTZXR0bGVkKCkge1xuICAgIGNvbnN0IGZldGNoZXMgPSBPYmplY3QudmFsdWVzKHRoaXMuZmV0Y2hlZCk7XG4gICAgaWYgKGZldGNoZXMubGVuZ3RoKSByZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKGZldGNoZXMpO1xuICB9XG5cbiAgLyoqIENsZWFyIGFsbCBwcm9taXNlIHN0YXRlICovXG4gIHByb3RlY3RlZCBjbGVhckFsbCgpIHtcbiAgICBmb3IgKGNvbnN0IGsgaW4gdGhpcy5yZWplY3RvcnMpIHtcbiAgICAgIHRoaXMuY2xlYXIoayk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENsZWFyIHByb21pc2Ugc3RhdGUgZm9yIGEgZ2l2ZW4ga2V5ICovXG4gIHByb3RlY3RlZCBjbGVhcihrZXk6IHN0cmluZykge1xuICAgIHRoaXMuZmV0Y2hlZFtrZXldLmNhdGNoKCgpID0+IHt9KTtcbiAgICBkZWxldGUgdGhpcy5yZXNvbHZlcnNba2V5XTtcbiAgICBkZWxldGUgdGhpcy5yZWplY3RvcnNba2V5XTtcbiAgICBkZWxldGUgdGhpcy5mZXRjaGVkW2tleV07XG4gICAgZGVsZXRlIHRoaXMuZmV0Y2hlZEF0W2tleV07XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TGFzdFJlc2V0KCkge1xuICAgIGlmICh0aGlzLmNsZWFudXBEYXRlKSByZXR1cm4gdGhpcy5jbGVhbnVwRGF0ZTtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmdldFN0YXRlKCkubGFzdFJlc2V0O1xuICB9XG5cbiAgLyoqIENhbGxlZCB3aGVuIG1pZGRsZXdhcmUgaW50ZXJjZXB0cyAncmRjL2ZldGNoJyBhY3Rpb24uXG4gICAqXG4gICAqIFdpbGwgdGhlbiBzdGFydCBhIHByb21pc2UgZm9yIGEga2V5IGFuZCBwb3RlbnRpYWxseSBzdGFydCB0aGUgbmV0d29ya1xuICAgKiBmZXRjaC5cbiAgICpcbiAgICogVXNlcyB0aHJvdHRsZSBlbmRwb2ludHMgd2l0aG91dCBzaWRlRWZmZWN0cy4gVGhpcyBpcyB2YWx1YWJsZVxuICAgKiBmb3IgZW5zdXJlcyBtdXRhdGlvbiByZXF1ZXN0cyBhbHdheXMgZ28gdGhyb3VnaC5cbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVGZXRjaChhY3Rpb246IEZldGNoQWN0aW9uKSB7XG4gICAgY29uc3QgeyByZXNvbHZlLCByZWplY3QsIGZldGNoZWRBdCB9ID0gYWN0aW9uLm1ldGE7XG4gICAgY29uc3QgdGhyb3R0bGUgPSAhYWN0aW9uLmVuZHBvaW50LnNpZGVFZmZlY3Q7XG5cbiAgICBjb25zdCBkZWZlcmVkRmV0Y2ggPSAoKSA9PiB7XG4gICAgICBsZXQgcHJvbWlzZSA9IGFjdGlvbi5lbmRwb2ludCguLi5hY3Rpb24uYXJncyk7XG4gICAgICBjb25zdCByZXNvbHZlUHJvbWlzZSA9IChcbiAgICAgICAgcHJvbWlzZTogUHJvbWlzZTxzdHJpbmcgfCBudW1iZXIgfCBvYmplY3QgfCBudWxsPixcbiAgICAgICkgPT5cbiAgICAgICAgcHJvbWlzZVxuICAgICAgICAgIC50aGVuKGRhdGEgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICB9KTtcbiAgICAgIC8vIHNjaGVkdWxlIG5vbi10aHJvdHRsZWQgcmVzb2x1dGlvbnMgaW4gYSBtaWNyb3Rhc2sgYmVmb3JlIHNldFxuICAgICAgLy8gdGhpcyBlbmFibGVzIHVzZXJzIGF3YWl0aW5nIHRoZWlyIGZldGNoIHRvIHRyaWdnZXIgYW55IHJlYWN0IHVwZGF0ZXMgbmVlZGVkIHRvIGRlYWxcbiAgICAgIC8vIHdpdGggdXBjb21pbmcgY2hhbmdlcyBiZWNhdXNlIG9mIHRoZSBmZXRjaCAoZm9yIGluc3RhbmNlIGF2b2lkaW5nIHN1c3BlbnNlIGlmIHNvbWV0aGluZyBpcyBkZWxldGVkKVxuICAgICAgaWYgKCF0aHJvdHRsZSkge1xuICAgICAgICBwcm9taXNlID0gcmVzb2x2ZVByb21pc2UocHJvbWlzZSk7XG4gICAgICB9XG4gICAgICBwcm9taXNlID0gcHJvbWlzZVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgbGV0IGxhc3RSZXNldCA9IHRoaXMuZ2V0TGFzdFJlc2V0KCk7XG5cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGlzTmFOKGxhc3RSZXNldCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICdzdGF0ZS5sYXN0UmVzZXQgaXMgTmFOLiBPbmx5IHBvc2l0aXZlIHRpbWVzdGFtcHMgYXJlIHZhbGlkLicsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbGFzdFJlc2V0ID0gMDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBkb24ndCB1cGRhdGUgc3RhdGUgd2l0aCBwcm9taXNlcyBzdGFydGVkIGJlZm9yZSBsYXN0IGNsZWFyXG4gICAgICAgICAgaWYgKGZldGNoZWRBdCA+PSBsYXN0UmVzZXQpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbGxlci5yZXNvbHZlKGFjdGlvbi5lbmRwb2ludCwge1xuICAgICAgICAgICAgICBhcmdzOiBhY3Rpb24uYXJncyxcbiAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgIGZldGNoZWRBdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgY29uc3QgbGFzdFJlc2V0ID0gdGhpcy5nZXRMYXN0UmVzZXQoKTtcbiAgICAgICAgICAvLyBkb24ndCB1cGRhdGUgc3RhdGUgd2l0aCBwcm9taXNlcyBzdGFydGVkIGJlZm9yZSBsYXN0IGNsZWFyXG4gICAgICAgICAgaWYgKGZldGNoZWRBdCA+PSBsYXN0UmVzZXQpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbGxlci5yZXNvbHZlKGFjdGlvbi5lbmRwb2ludCwge1xuICAgICAgICAgICAgICBhcmdzOiBhY3Rpb24uYXJncyxcbiAgICAgICAgICAgICAgcmVzcG9uc2U6IGVycm9yLFxuICAgICAgICAgICAgICBmZXRjaGVkQXQsXG4gICAgICAgICAgICAgIGVycm9yOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KTtcbiAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH07XG5cbiAgICBpZiAodGhyb3R0bGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnRocm90dGxlKGFjdGlvbi5rZXksIGRlZmVyZWRGZXRjaCwgZmV0Y2hlZEF0KVxuICAgICAgICAudGhlbihkYXRhID0+IHJlc29sdmUoZGF0YSkpXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiByZWplY3QoZXJyb3IpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGRlZmVyZWRGZXRjaCgpLmNhdGNoKCgpID0+IHt9KTtcbiAgICB9XG4gIH1cblxuICAvKiogQ2FsbGVkIHdoZW4gbWlkZGxld2FyZSBpbnRlcmNlcHRzIGEgc2V0IGFjdGlvbi5cbiAgICpcbiAgICogV2lsbCByZXNvbHZlIHRoZSBwcm9taXNlIGFzc29jaWF0ZWQgd2l0aCBzZXQga2V5LlxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVNldChhY3Rpb246IFNldFJlc3BvbnNlQWN0aW9uKSB7XG4gICAgLy8gdGhpcyBjYW4gc3RpbGwgdHVybiBvdXQgdG8gYmUgdW50cnVlIHNpbmNlIHRoaXMgaXMgYXN5bmNcbiAgICBpZiAoYWN0aW9uLmtleSBpbiB0aGlzLmZldGNoZWQpIHtcbiAgICAgIGxldCBwcm9taXNlSGFuZGxlcjogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xuICAgICAgaWYgKGFjdGlvbi5lcnJvcikge1xuICAgICAgICBwcm9taXNlSGFuZGxlciA9IHRoaXMucmVqZWN0b3JzW2FjdGlvbi5rZXldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvbWlzZUhhbmRsZXIgPSB0aGlzLnJlc29sdmVyc1thY3Rpb24ua2V5XTtcbiAgICAgIH1cbiAgICAgIHByb21pc2VIYW5kbGVyKGFjdGlvbi5yZXNwb25zZSk7XG4gICAgICAvLyBzaW5jZSB3ZSdyZSByZXNvbHZlZCB3ZSBubyBsb25nZXIgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoaXMgcHJvbWlzZVxuICAgICAgdGhpcy5jbGVhcihhY3Rpb24ua2V5KTtcbiAgICB9XG4gIH1cblxuICAvKiogQXR0YWNoZXMgTmV0d29ya01hbmFnZXIgdG8gc3RvcmVcbiAgICpcbiAgICogSW50ZXJjZXB0cyAncmRjL2ZldGNoJyBhY3Rpb25zIHRvIHN0YXJ0IHJlcXVlc3RzLlxuICAgKlxuICAgKiBSZXNvbHZlL3JlamVjdHMgYSByZXF1ZXN0IHdoZW4gbWF0Y2hpbmcgJ3JkYy9zZXQnIGV2ZW50XG4gICAqIGlzIHNlZW4uXG4gICAqL1xuICBnZXRNaWRkbGV3YXJlKCkge1xuICAgIHJldHVybiB0aGlzLm1pZGRsZXdhcmU7XG4gIH1cblxuICAvKiogRW5zdXJlcyBvbmx5IG9uZSByZXF1ZXN0IGZvciBhIGdpdmVuIGtleSBpcyBpbiBmbGlnaHQgYXQgYW55IHRpbWVcbiAgICpcbiAgICogVXNlcyBrZXkgdG8gZWl0aGVyIHJldHJpZXZlIGluLWZsaWdodCBwcm9taXNlLCBvciBpZiBub3RcbiAgICogY3JlYXRlIGEgbmV3IHByb21pc2UgYW5kIGNhbGwgZmV0Y2guXG4gICAqXG4gICAqIE5vdGU6IFRoZSBuZXcgcHJvbWlzZSBpcyBub3QgYWN0dWFsbHkgdGllZCB0byBmZXRjaCBhdCBhbGwsXG4gICAqIGJ1dCBpcyByZXNvbHZlZCB3aGVuIHRoZSBleHBlY3RlZCAncmVjaWV2ZScgYWN0aW9uIGlzIHByb2Nlc3NlZC5cbiAgICogVGhpcyBlbnN1cmVzIHByb21pc2VzIGFyZSByZXNvbHZlZCBvbmx5IG9uY2UgdGhlaXIgZGF0YSBpcyBwcm9jZXNzZWRcbiAgICogYnkgdGhlIHJlZHVjZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgdGhyb3R0bGUoXG4gICAga2V5OiBzdHJpbmcsXG4gICAgZmV0Y2g6ICgpID0+IFByb21pc2U8YW55PixcbiAgICBmZXRjaGVkQXQ6IG51bWJlcixcbiAgKSB7XG4gICAgY29uc3QgbGFzdFJlc2V0ID0gdGhpcy5nZXRMYXN0UmVzZXQoKTtcbiAgICAvLyB3ZSdyZSBhbHJlYWR5IGZldGNoaW5nIHNvIHJldXNlIHRoZSBwcm9taXNlXG4gICAgLy8gZmV0Y2hlcyBhZnRlciByZXNldCBkbyBub3QgY291bnRcbiAgICBpZiAoa2V5IGluIHRoaXMuZmV0Y2hlZCAmJiB0aGlzLmZldGNoZWRBdFtrZXldID4gbGFzdFJlc2V0KSB7XG4gICAgICByZXR1cm4gdGhpcy5mZXRjaGVkW2tleV07XG4gICAgfVxuXG4gICAgdGhpcy5mZXRjaGVkW2tleV0gPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnJlc29sdmVyc1trZXldID0gcmVzb2x2ZTtcbiAgICAgIHRoaXMucmVqZWN0b3JzW2tleV0gPSByZWplY3Q7XG4gICAgfSk7XG4gICAgdGhpcy5mZXRjaGVkQXRba2V5XSA9IGZldGNoZWRBdDtcblxuICAgIHRoaXMuaWRsZUNhbGxiYWNrKFxuICAgICAgKCkgPT4ge1xuICAgICAgICAvLyBzaW5jZSBvdXIgcmVhbCBwcm9taXNlIGlzIHJlc29sdmVkIHZpYSB0aGUgd3JhcFJlZHVjZXIoKSxcbiAgICAgICAgLy8gd2Ugc2hvdWxkIGp1c3Qgc3RvcCBhbGwgZXJyb3JzIGhlcmUuXG4gICAgICAgIC8vIFRPRE86IGRlY291cGxlIHRoaXMgZnJvbSB1c2VGZXRjaGVyKCkgKHRoYXQncyB3aGF0J3MgZGlzcGF0Y2hpbmcgdGhlIGVycm9yIHRoZSByZXNvbHZlcyBpbiBoZXJlKVxuICAgICAgICBmZXRjaCgpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgICAgfSxcbiAgICAgIHsgdGltZW91dDogNTAwIH0sXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLmZldGNoZWRba2V5XTtcbiAgfVxuXG4gIC8qKiBDYWxscyB0aGUgY2FsbGJhY2sgd2hlbiBjbGllbnQgaXMgbm90ICdidXN5JyB3aXRoIGhpZ2ggcHJpb3JpdHkgaW50ZXJhY3Rpb24gdGFza3NcbiAgICpcbiAgICogT3ZlcnJpZGUgZm9yIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9uc1xuICAgKi9cbiAgcHJvdGVjdGVkIGlkbGVDYWxsYmFjayhcbiAgICBjYWxsYmFjazogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkLFxuICAgIG9wdGlvbnM/OiBJZGxlUmVxdWVzdE9wdGlvbnMsXG4gICkge1xuICAgIGNhbGxiYWNrKCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsaUJBQWlCLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxRQUFRLG1CQUFtQjtBQUM3RSxTQUFTQyxpQkFBaUIsUUFBUSxnQ0FBZ0M7QUFDbEUsT0FBT0MsVUFBVSxNQUFNLDZCQUE2QjtBQVVwRCxPQUFPLE1BQU1DLFVBQVUsU0FBU0MsS0FBSyxDQUFDO0VBR3BDQyxXQUFXQSxDQUFBLEVBQUc7SUFDWixLQUFLLENBQUMsc0JBQXNCLENBQUM7SUFBQyxLQUhoQ0MsSUFBSSxHQUFHLFlBQVk7RUFJbkI7QUFDRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE1BQU1DLGNBQWMsQ0FBb0I7RUFXckRGLFdBQVdBLENBQUNHLGdCQUFnQixHQUFHLEtBQUssRUFBRUMsaUJBQWlCLEdBQUcsSUFBSSxFQUFFO0lBQUEsS0FWdERDLE9BQU8sR0FBa0NDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLElBQUksQ0FBQztJQUFBLEtBQzVEQyxTQUFTLEdBQTJDLENBQUMsQ0FBQztJQUFBLEtBQ3REQyxTQUFTLEdBQTJDLENBQUMsQ0FBQztJ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LGNBQWMsR0FBRyxJQUFJLENBQUNuRCxTQUFTLENBQUNNLE1BQU0sQ0FBQ1UsR0FBRyxDQUFDO01BQzdDO01BQ0FtQyxjQUFjLENBQUM3QyxNQUFNLENBQUNpQixRQUFRLENBQUM7TUFDL0I7TUFDQSxJQUFJLENBQUNhLEtBQUssQ0FBQzlCLE1BQU0sQ0FBQ1UsR0FBRyxDQUFDO0lBQ3hCO0VBQ0Y7O0VBRUE7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDRW9DLGFBQWFBLENBQUEsRUFBRztJQUNkLE9BQU8sSUFBSSxDQUFDaEQsVUFBVTtFQUN4Qjs7RUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNZcUMsUUFBUUEsQ0FDaEJ6QixHQUFXLEVBQ1hxQyxLQUF5QixFQUN6Qm5ELFNBQWlCLEVBQ2pCO0lBQ0EsTUFBTXFDLFNBQVMsR0FBRyxJQUFJLENBQUNELFlBQVksQ0FBQyxDQUFDO0lBQ3JDO0lBQ0E7SUFDQSxJQUFJdEIsR0FBRyxJQUFJLElBQUksQ0FBQ25CLE9BQU8sSUFBSSxJQUFJLENBQUNLLFNBQVMsQ0FBQ2MsR0FBRyxDQUFDLEdBQUd1QixTQUFTLEVBQUU7TUFDMUQsT0FBTyxJQUFJLENBQUMxQyxPQUFPLENBQUNtQixHQUFHLENBQUM7SUFDMUI7SUFFQSxJQUFJLENBQUNuQixPQUFPLENBQUNtQixHQUFHLENBQUMsR0FBRyxJQUFJSCxPQUFPLENBQUMsQ0FBQ0MsT0FBTyxFQUFFMEIsTUFBTSxLQUFLO01BQ25ELElBQUksQ0FBQ3hDLFNBQVMsQ0FBQ2dCLEdBQUcsQ0FBQyxHQUFHRixPQUFPO01BQzdCLElBQUksQ0FBQ2IsU0FBUyxDQUFDZSxHQUFHLENBQUMsR0FBR3dCLE1BQU07SUFDOUIsQ0FBQyxDQUFDO0lBQ0YsSUFBSSxDQUFDdEMsU0FBUyxDQUFDYyxHQUFHLENBQUMsR0FBR2QsU0FBUztJQUUvQixJQUFJLENBQUNvRCxZQUFZLENBQ2YsTUFBTTtNQUNKO01BQ0E7TUFDQTtNQUNBRCxLQUFLLENBQUMsQ0FBQyxDQUFDaEIsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDO0lBQzNCLENBQUMsRUFDRDtNQUFFa0IsT0FBTyxFQUFFO0lBQUksQ0FDakIsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDMUQsT0FBTyxDQUFDbUIsR0FBRyxDQUFDO0VBQzFCOztFQUVBO0FBQ0Y7QUFDQTtBQUNBO0VBQ1lzQyxZQUFZQSxDQUNwQkUsUUFBa0MsRUFDbENDLE9BQTRCLEVBQzVCO0lBQ0FELFFBQVEsQ0FBQyxDQUFDO0VBQ1o7QUFDRiIsImlnbm9yZUxpc3QiOltdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTRVRfUkVTUE9OU0VfVFlQRSIsIkZFVENIX1RZUEUiLCJSRVNFVF9UWVBFIiwiY3JlYXRlU2V0UmVzcG9uc2UiLCJDb250cm9sbGVyIiwiUmVzZXRFcnJvciIsIkVycm9yIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiTmV0d29ya01hbmFnZXIiLCJkYXRhRXhwaXJ5TGVuZ3RoIiwiZXJyb3JFeHBpcnlMZW5ndGgiLCJmZXRjaGVkIiwiT2JqZWN0IiwiY3JlYXRlIiwicmVzb2x2ZXJzIiwicmVqZWN0b3JzIiwiZmV0Y2hlZEF0IiwiY29udHJvbGxlciIsIm1pZGRsZXdhcmUiLCJuZXh0IiwiYWN0aW9uIiwidHlwZSIsImhhbmRsZUZldGNoIiwiZW5kcG9pbnQiLCJnZXRPcHRpbWlzdGljUmVzcG9uc2UiLCJ1bmRlZmluZWQiLCJzaWRlRWZmZWN0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwia2V5IiwiX2NvbnRyb2xsZXIkZ2V0U3RhdGUkIiwiZXJyb3IiLCJnZXRTdGF0ZSIsIm1ldGEiLCJoYW5kbGVTZXQiLCJhcmdzIiwicmVzcG9uc2UiLCJjbGVhckFsbCIsImsiLCJza2lwTG9nZ2luZyIsImluaXQiLCJjbGVhbnVwRGF0ZSIsImNsZWFudXAiLCJEYXRlIiwibm93IiwiYWxsU2V0dGxlZCIsImZldGNoZXMiLCJ2YWx1ZXMiLCJsZW5ndGgiLCJjbGVhciIsImNhdGNoIiwiZ2V0TGFzdFJlc2V0IiwibGFzdFJlc2V0IiwicmVqZWN0IiwidGhyb3R0bGUiLCJkZWZlcmVkRmV0Y2giLCJwcm9taXNlIiwicmVzb2x2ZVByb21pc2UiLCJkYXRhIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiaXNOYU4iLCJjb25zb2xlIiwicHJvbWlzZUhhbmRsZXIiLCJnZXRNaWRkbGV3YXJlIiwiZmV0Y2giLCJpZGxlQ2FsbGJhY2siLCJ0aW1lb3V0IiwiY2FsbGJhY2siLCJvcHRpb25zIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hbmFnZXIvTmV0d29ya01hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU0VUX1JFU1BPTlNFX1RZUEUsIEZFVENIX1RZUEUsIFJFU0VUX1RZUEUgfSBmcm9tICcuLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgeyBjcmVhdGVTZXRSZXNwb25zZSB9IGZyb20gJy4uL2NvbnRyb2xsZXIvYWN0aW9ucy9pbmRleC5qcyc7XG5pbXBvcnQgQ29udHJvbGxlciBmcm9tICcuLi9jb250cm9sbGVyL0NvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHR5cGUge1xuICBGZXRjaEFjdGlvbixcbiAgTWFuYWdlcixcbiAgQWN0aW9uVHlwZXMsXG4gIE1pZGRsZXdhcmVBUEksXG4gIE1pZGRsZXdhcmUsXG4gIFNldFJlc3BvbnNlQWN0aW9uLFxufSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBjbGFzcyBSZXNldEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBuYW1lID0gJ1Jlc2V0RXJyb3InO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdBYm9ydGVkIGR1ZSB0byBSRVNFVCcpO1xuICB9XG59XG5cbi8qKiBIYW5kbGVzIGFsbCBhc3luYyBuZXR3b3JrIGRpc3BhdGNoZXNcbiAqXG4gKiBEZWR1cGVzIGNvbmN1cnJlbnQgcmVxdWVzdHMgYnkga2VlcGluZyB0cmFjayBvZiBhbGwgZmV0Y2hlcyBpbiBmbGlnaHRcbiAqIGFuZCByZXR1cm5pbmcgZXhpc3RpbmcgcHJvbWlzZXMgZm9yIHJlcXVlc3RzIGFscmVhZHkgaW4gZmxpZ2h0LlxuICpcbiAqIEludGVyZmFjZXMgd2l0aCBzdG9yZSB2aWEgYSByZWR1eC1jb21wYXRpYmxlIG1pZGRsZXdhcmUuXG4gKlxuICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvTmV0d29ya01hbmFnZXJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV0d29ya01hbmFnZXIgaW1wbGVtZW50cyBNYW5hZ2VyIHtcbiAgcHJvdGVjdGVkIGZldGNoZWQ6IHsgW2s6IHN0cmluZ106IFByb21pc2U8YW55PiB9ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcHJvdGVjdGVkIHJlc29sdmVyczogeyBbazogc3RyaW5nXTogKHZhbHVlPzogYW55KSA9PiB2b2lkIH0gPSB7fTtcbiAgcHJvdGVjdGVkIHJlamVjdG9yczogeyBbazogc3RyaW5nXTogKHZhbHVlPzogYW55KSA9PiB2b2lkIH0gPSB7fTtcbiAgcHJvdGVjdGVkIGZldGNoZWRBdDogeyBbazogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcbiAgZGVjbGFyZSByZWFkb25seSBkYXRhRXhwaXJ5TGVuZ3RoOiBudW1iZXI7XG4gIGRlY2xhcmUgcmVhZG9ubHkgZXJyb3JFeHBpcnlMZW5ndGg6IG51bWJlcjtcbiAgcHJvdGVjdGVkIGRlY2xhcmUgbWlkZGxld2FyZTogTWlkZGxld2FyZTtcbiAgcHJvdGVjdGVkIGNvbnRyb2xsZXI6IENvbnRyb2xsZXIgPSBuZXcgQ29udHJvbGxlcigpO1xuICBkZWNsYXJlIGNsZWFudXBEYXRlPzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHsgZGF0YUV4cGlyeUxlbmd0aCA9IDYwMDAwLCBlcnJvckV4cGlyeUxlbmd0aCA9IDEwMDAgfSA9IHt9KSB7XG4gICAgdGhpcy5kYXRhRXhwaXJ5TGVuZ3RoID0gZGF0YUV4cGlyeUxlbmd0aDtcbiAgICB0aGlzLmVycm9yRXhwaXJ5TGVuZ3RoID0gZXJyb3JFeHBpcnlMZW5ndGg7XG5cbiAgICB0aGlzLm1pZGRsZXdhcmUgPSA8QyBleHRlbmRzIE1pZGRsZXdhcmVBUEk+KGNvbnRyb2xsZXI6IEMpID0+IHtcbiAgICAgIHRoaXMuY29udHJvbGxlciA9IGNvbnRyb2xsZXI7XG4gICAgICByZXR1cm4gKG5leHQ6IENbJ2Rpc3BhdGNoJ10pOiBDWydkaXNwYXRjaCddID0+XG4gICAgICAgIChhY3Rpb24pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIEZFVENIX1RZUEU6XG4gICAgICAgICAgICAgIHRoaXMuaGFuZGxlRmV0Y2goYWN0aW9uKTtcbiAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgb25seSBjYXNlIHRoYXQgY2F1c2VzIGFueSBzdGF0ZSBjaGFuZ2VcbiAgICAgICAgICAgICAgLy8gSXQncyBpbXBvcnRhbnQgdG8gaW50ZXJjZXB0IG90aGVyIGZldGNoZXMgYXMgd2UgZG9uJ3Qgd2FudCB0byB0cmlnZ2VyIHJlZHVjZXJzIGR1cmluZ1xuICAgICAgICAgICAgICAvLyByZW5kZXIgLSBzbyB3ZSBuZWVkIHRvIHN0b3AgJ3JlYWRvbmx5JyBmZXRjaGVzIHdoaWNoIGNhbiBiZSB0cmlnZ2VyZWQgaW4gcmVuZGVyXG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBhY3Rpb24uZW5kcG9pbnQuZ2V0T3B0aW1pc3RpY1Jlc3BvbnNlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICBhY3Rpb24uZW5kcG9pbnQuc2lkZUVmZmVjdFxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV4dChhY3Rpb24pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgIGNhc2UgU0VUX1JFU1BPTlNFX1RZUEU6XG4gICAgICAgICAgICAgIC8vIG9ubHkgc2V0IGFmdGVyIG5ldyBzdGF0ZSBpcyBjb21wdXRlZFxuICAgICAgICAgICAgICByZXR1cm4gbmV4dChhY3Rpb24pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhY3Rpb24ua2V5IGluIHRoaXMuZmV0Y2hlZCkge1xuICAgICAgICAgICAgICAgICAgLy8gTm90ZTogbWV0YSAqbXVzdCogYmUgc2V0IGJ5IHJlZHVjZXIgc28gdGhpcyBzaG91bGQgYmUgc2FmZVxuICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBjb250cm9sbGVyLmdldFN0YXRlKCkubWV0YVthY3Rpb24ua2V5XT8uZXJyb3I7XG4gICAgICAgICAgICAgICAgICAvLyBwcm9jZXNzaW5nIGVycm9ycyByZXN1bHQgaW4gc3RhdGUgbWV0YSBoYXZpbmcgZXJyb3IsIHNvIHdlIHNob3VsZCByZWplY3QgdGhlIHByb21pc2VcbiAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNldChcbiAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTZXRSZXNwb25zZShhY3Rpb24uZW5kcG9pbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M6IGFjdGlvbi5hcmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6IGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hlZEF0OiBhY3Rpb24ubWV0YS5mZXRjaGVkQXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU2V0KGFjdGlvbik7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgUkVTRVRfVFlQRToge1xuICAgICAgICAgICAgICBjb25zdCByZWplY3RvcnMgPSB7IC4uLnRoaXMucmVqZWN0b3JzIH07XG5cbiAgICAgICAgICAgICAgdGhpcy5jbGVhckFsbCgpO1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dChhY3Rpb24pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHRoZXJlIGNvdWxkIGJlIGV4dGVybmFsIGxpc3RlbmVycyB0byB0aGUgcHJvbWlzZVxuICAgICAgICAgICAgICAgIC8vIHRoaXMgbXVzdCBoYXBwZW4gYWZ0ZXIgY29tbWl0IHNvIG91ciBvd24gcmVqZWN0b3Iga25vd3Mgbm90IHRvIGRpc3BhdGNoIGFuIGVycm9yIGJhc2VkIG9uIHRoaXNcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGsgaW4gcmVqZWN0b3JzKSB7XG4gICAgICAgICAgICAgICAgICByZWplY3RvcnNba10obmV3IFJlc2V0RXJyb3IoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KGFjdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG4gIH1cblxuICAvKiogVXNlZCBieSBEZXZ0b29sc01hbmFnZXIgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gbG9nIGFuIGFjdGlvbiAqL1xuICBza2lwTG9nZ2luZyhhY3Rpb246IEFjdGlvblR5cGVzKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gYWN0aW9uLnR5cGUgPT09IEZFVENIX1RZUEUgJiYgYWN0aW9uLmtleSBpbiB0aGlzLmZldGNoZWQ7XG4gIH1cblxuICAvKiogT24gbW91bnQgKi9cbiAgaW5pdCgpIHtcbiAgICBkZWxldGUgdGhpcy5jbGVhbnVwRGF0ZTtcbiAgfVxuXG4gIC8qKiBFbnN1cmVzIGFsbCBwcm9taXNlcyBhcmUgY29tcGxldGVkIGJ5IHJlamVjdGluZyByZW1haW5pbmcuICovXG4gIGNsZWFudXAoKSB7XG4gICAgLy8gZW5zdXJlIG5vIGRpc3BhdGNoZXMgYWZ0ZXIgdW5tb3VudFxuICAgIC8vIHRoaXMgbXVzdCBiZSByZXZlcnNpYmxlIChkb25lIGluIGluaXQpIHNvIHVzZUVmZmVjdCgpIHJlbWFpbnMgc3ltbWV0cmljXG4gICAgdGhpcy5jbGVhbnVwRGF0ZSA9IERhdGUubm93KCk7XG4gIH1cblxuICBhbGxTZXR0bGVkKCkge1xuICAgIGNvbnN0IGZldGNoZXMgPSBPYmplY3QudmFsdWVzKHRoaXMuZmV0Y2hlZCk7XG4gICAgaWYgKGZldGNoZXMubGVuZ3RoKSByZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKGZldGNoZXMpO1xuICB9XG5cbiAgLyoqIENsZWFyIGFsbCBwcm9taXNlIHN0YXRlICovXG4gIHByb3RlY3RlZCBjbGVhckFsbCgpIHtcbiAgICBmb3IgKGNvbnN0IGsgaW4gdGhpcy5yZWplY3RvcnMpIHtcbiAgICAgIHRoaXMuY2xlYXIoayk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENsZWFyIHByb21pc2Ugc3RhdGUgZm9yIGEgZ2l2ZW4ga2V5ICovXG4gIHByb3RlY3RlZCBjbGVhcihrZXk6IHN0cmluZykge1xuICAgIHRoaXMuZmV0Y2hlZFtrZXldLmNhdGNoKCgpID0+IHt9KTtcbiAgICBkZWxldGUgdGhpcy5yZXNvbHZlcnNba2V5XTtcbiAgICBkZWxldGUgdGhpcy5yZWplY3RvcnNba2V5XTtcbiAgICBkZWxldGUgdGhpcy5mZXRjaGVkW2tleV07XG4gICAgZGVsZXRlIHRoaXMuZmV0Y2hlZEF0W2tleV07XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TGFzdFJlc2V0KCkge1xuICAgIGlmICh0aGlzLmNsZWFudXBEYXRlKSByZXR1cm4gdGhpcy5jbGVhbnVwRGF0ZTtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmdldFN0YXRlKCkubGFzdFJlc2V0O1xuICB9XG5cbiAgLyoqIENhbGxlZCB3aGVuIG1pZGRsZXdhcmUgaW50ZXJjZXB0cyAncmRjL2ZldGNoJyBhY3Rpb24uXG4gICAqXG4gICAqIFdpbGwgdGhlbiBzdGFydCBhIHByb21pc2UgZm9yIGEga2V5IGFuZCBwb3RlbnRpYWxseSBzdGFydCB0aGUgbmV0d29ya1xuICAgKiBmZXRjaC5cbiAgICpcbiAgICogVXNlcyB0aHJvdHRsZSBlbmRwb2ludHMgd2l0aG91dCBzaWRlRWZmZWN0cy4gVGhpcyBpcyB2YWx1YWJsZVxuICAgKiBmb3IgZW5zdXJlcyBtdXRhdGlvbiByZXF1ZXN0cyBhbHdheXMgZ28gdGhyb3VnaC5cbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVGZXRjaChhY3Rpb246IEZldGNoQWN0aW9uKSB7XG4gICAgY29uc3QgeyByZXNvbHZlLCByZWplY3QsIGZldGNoZWRBdCB9ID0gYWN0aW9uLm1ldGE7XG4gICAgY29uc3QgdGhyb3R0bGUgPSAhYWN0aW9uLmVuZHBvaW50LnNpZGVFZmZlY3Q7XG5cbiAgICBjb25zdCBkZWZlcmVkRmV0Y2ggPSAoKSA9PiB7XG4gICAgICBsZXQgcHJvbWlzZSA9IGFjdGlvbi5lbmRwb2ludCguLi5hY3Rpb24uYXJncyk7XG4gICAgICBjb25zdCByZXNvbHZlUHJvbWlzZSA9IChcbiAgICAgICAgcHJvbWlzZTogUHJvbWlzZTxzdHJpbmcgfCBudW1iZXIgfCBvYmplY3QgfCBudWxsPixcbiAgICAgICkgPT5cbiAgICAgICAgcHJvbWlzZVxuICAgICAgICAgIC50aGVuKGRhdGEgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICB9KTtcbiAgICAgIC8vIHNjaGVkdWxlIG5vbi10aHJvdHRsZWQgcmVzb2x1dGlvbnMgaW4gYSBtaWNyb3Rhc2sgYmVmb3JlIHNldFxuICAgICAgLy8gdGhpcyBlbmFibGVzIHVzZXJzIGF3YWl0aW5nIHRoZWlyIGZldGNoIHRvIHRyaWdnZXIgYW55IHJlYWN0IHVwZGF0ZXMgbmVlZGVkIHRvIGRlYWxcbiAgICAgIC8vIHdpdGggdXBjb21pbmcgY2hhbmdlcyBiZWNhdXNlIG9mIHRoZSBmZXRjaCAoZm9yIGluc3RhbmNlIGF2b2lkaW5nIHN1c3BlbnNlIGlmIHNvbWV0aGluZyBpcyBkZWxldGVkKVxuICAgICAgaWYgKCF0aHJvdHRsZSkge1xuICAgICAgICBwcm9taXNlID0gcmVzb2x2ZVByb21pc2UocHJvbWlzZSk7XG4gICAgICB9XG4gICAgICBwcm9taXNlID0gcHJvbWlzZVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgbGV0IGxhc3RSZXNldCA9IHRoaXMuZ2V0TGFzdFJlc2V0KCk7XG5cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGlzTmFOKGxhc3RSZXNldCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICdzdGF0ZS5sYXN0UmVzZXQgaXMgTmFOLiBPbmx5IHBvc2l0aXZlIHRpbWVzdGFtcHMgYXJlIHZhbGlkLicsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbGFzdFJlc2V0ID0gMDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBkb24ndCB1cGRhdGUgc3RhdGUgd2l0aCBwcm9taXNlcyBzdGFydGVkIGJlZm9yZSBsYXN0IGNsZWFyXG4gICAgICAgICAgaWYgKGZldGNoZWRBdCA+PSBsYXN0UmVzZXQpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbGxlci5yZXNvbHZlKGFjdGlvbi5lbmRwb2ludCwge1xuICAgICAgICAgICAgICBhcmdzOiBhY3Rpb24uYXJncyxcbiAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgIGZldGNoZWRBdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgY29uc3QgbGFzdFJlc2V0ID0gdGhpcy5nZXRMYXN0UmVzZXQoKTtcbiAgICAgICAgICAvLyBkb24ndCB1cGRhdGUgc3RhdGUgd2l0aCBwcm9taXNlcyBzdGFydGVkIGJlZm9yZSBsYXN0IGNsZWFyXG4gICAgICAgICAgaWYgKGZldGNoZWRBdCA+PSBsYXN0UmVzZXQpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbGxlci5yZXNvbHZlKGFjdGlvbi5lbmRwb2ludCwge1xuICAgICAgICAgICAgICBhcmdzOiBhY3Rpb24uYXJncyxcbiAgICAgICAgICAgICAgcmVzcG9uc2U6IGVycm9yLFxuICAgICAgICAgICAgICBmZXRjaGVkQXQsXG4gICAgICAgICAgICAgIGVycm9yOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KTtcbiAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH07XG5cbiAgICBpZiAodGhyb3R0bGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnRocm90dGxlKGFjdGlvbi5rZXksIGRlZmVyZWRGZXRjaCwgZmV0Y2hlZEF0KVxuICAgICAgICAudGhlbihkYXRhID0+IHJlc29sdmUoZGF0YSkpXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiByZWplY3QoZXJyb3IpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGRlZmVyZWRGZXRjaCgpLmNhdGNoKCgpID0+IHt9KTtcbiAgICB9XG4gIH1cblxuICAvKiogQ2FsbGVkIHdoZW4gbWlkZGxld2FyZSBpbnRlcmNlcHRzIGEgc2V0IGFjdGlvbi5cbiAgICpcbiAgICogV2lsbCByZXNvbHZlIHRoZSBwcm9taXNlIGFzc29jaWF0ZWQgd2l0aCBzZXQga2V5LlxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVNldChhY3Rpb246IFNldFJlc3BvbnNlQWN0aW9uKSB7XG4gICAgLy8gdGhpcyBjYW4gc3RpbGwgdHVybiBvdXQgdG8gYmUgdW50cnVlIHNpbmNlIHRoaXMgaXMgYXN5bmNcbiAgICBpZiAoYWN0aW9uLmtleSBpbiB0aGlzLmZldGNoZWQpIHtcbiAgICAgIGxldCBwcm9taXNlSGFuZGxlcjogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xuICAgICAgaWYgKGFjdGlvbi5lcnJvcikge1xuICAgICAgICBwcm9taXNlSGFuZGxlciA9IHRoaXMucmVqZWN0b3JzW2FjdGlvbi5rZXldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvbWlzZUhhbmRsZXIgPSB0aGlzLnJlc29sdmVyc1thY3Rpb24ua2V5XTtcbiAgICAgIH1cbiAgICAgIHByb21pc2VIYW5kbGVyKGFjdGlvbi5yZXNwb25zZSk7XG4gICAgICAvLyBzaW5jZSB3ZSdyZSByZXNvbHZlZCB3ZSBubyBsb25nZXIgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoaXMgcHJvbWlzZVxuICAgICAgdGhpcy5jbGVhcihhY3Rpb24ua2V5KTtcbiAgICB9XG4gIH1cblxuICAvKiogQXR0YWNoZXMgTmV0d29ya01hbmFnZXIgdG8gc3RvcmVcbiAgICpcbiAgICogSW50ZXJjZXB0cyAncmRjL2ZldGNoJyBhY3Rpb25zIHRvIHN0YXJ0IHJlcXVlc3RzLlxuICAgKlxuICAgKiBSZXNvbHZlL3JlamVjdHMgYSByZXF1ZXN0IHdoZW4gbWF0Y2hpbmcgJ3JkYy9zZXQnIGV2ZW50XG4gICAqIGlzIHNlZW4uXG4gICAqL1xuICBnZXRNaWRkbGV3YXJlKCkge1xuICAgIHJldHVybiB0aGlzLm1pZGRsZXdhcmU7XG4gIH1cblxuICAvKiogRW5zdXJlcyBvbmx5IG9uZSByZXF1ZXN0IGZvciBhIGdpdmVuIGtleSBpcyBpbiBmbGlnaHQgYXQgYW55IHRpbWVcbiAgICpcbiAgICogVXNlcyBrZXkgdG8gZWl0aGVyIHJldHJpZXZlIGluLWZsaWdodCBwcm9taXNlLCBvciBpZiBub3RcbiAgICogY3JlYXRlIGEgbmV3IHByb21pc2UgYW5kIGNhbGwgZmV0Y2guXG4gICAqXG4gICAqIE5vdGU6IFRoZSBuZXcgcHJvbWlzZSBpcyBub3QgYWN0dWFsbHkgdGllZCB0byBmZXRjaCBhdCBhbGwsXG4gICAqIGJ1dCBpcyByZXNvbHZlZCB3aGVuIHRoZSBleHBlY3RlZCAncmVjaWV2ZScgYWN0aW9uIGlzIHByb2Nlc3NlZC5cbiAgICogVGhpcyBlbnN1cmVzIHByb21pc2VzIGFyZSByZXNvbHZlZCBvbmx5IG9uY2UgdGhlaXIgZGF0YSBpcyBwcm9jZXNzZWRcbiAgICogYnkgdGhlIHJlZHVjZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgdGhyb3R0bGUoXG4gICAga2V5OiBzdHJpbmcsXG4gICAgZmV0Y2g6ICgpID0+IFByb21pc2U8YW55PixcbiAgICBmZXRjaGVkQXQ6IG51bWJlcixcbiAgKSB7XG4gICAgY29uc3QgbGFzdFJlc2V0ID0gdGhpcy5nZXRMYXN0UmVzZXQoKTtcbiAgICAvLyB3ZSdyZSBhbHJlYWR5IGZldGNoaW5nIHNvIHJldXNlIHRoZSBwcm9taXNlXG4gICAgLy8gZmV0Y2hlcyBhZnRlciByZXNldCBkbyBub3QgY291bnRcbiAgICBpZiAoa2V5IGluIHRoaXMuZmV0Y2hlZCAmJiB0aGlzLmZldGNoZWRBdFtrZXldID4gbGFzdFJlc2V0KSB7XG4gICAgICByZXR1cm4gdGhpcy5mZXRjaGVkW2tleV07XG4gICAgfVxuXG4gICAgdGhpcy5mZXRjaGVkW2tleV0gPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnJlc29sdmVyc1trZXldID0gcmVzb2x2ZTtcbiAgICAgIHRoaXMucmVqZWN0b3JzW2tleV0gPSByZWplY3Q7XG4gICAgfSk7XG4gICAgdGhpcy5mZXRjaGVkQXRba2V5XSA9IGZldGNoZWRBdDtcblxuICAgIHRoaXMuaWRsZUNhbGxiYWNrKFxuICAgICAgKCkgPT4ge1xuICAgICAgICAvLyBzaW5jZSBvdXIgcmVhbCBwcm9taXNlIGlzIHJlc29sdmVkIHZpYSB0aGUgd3JhcFJlZHVjZXIoKSxcbiAgICAgICAgLy8gd2Ugc2hvdWxkIGp1c3Qgc3RvcCBhbGwgZXJyb3JzIGhlcmUuXG4gICAgICAgIC8vIFRPRE86IGRlY291cGxlIHRoaXMgZnJvbSB1c2VGZXRjaGVyKCkgKHRoYXQncyB3aGF0J3MgZGlzcGF0Y2hpbmcgdGhlIGVycm9yIHRoZSByZXNvbHZlcyBpbiBoZXJlKVxuICAgICAgICBmZXRjaCgpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgICAgfSxcbiAgICAgIHsgdGltZW91dDogNTAwIH0sXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLmZldGNoZWRba2V5XTtcbiAgfVxuXG4gIC8qKiBDYWxscyB0aGUgY2FsbGJhY2sgd2hlbiBjbGllbnQgaXMgbm90ICdidXN5JyB3aXRoIGhpZ2ggcHJpb3JpdHkgaW50ZXJhY3Rpb24gdGFza3NcbiAgICpcbiAgICogT3ZlcnJpZGUgZm9yIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9uc1xuICAgKi9cbiAgcHJvdGVjdGVkIGlkbGVDYWxsYmFjayhcbiAgICBjYWxsYmFjazogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkLFxuICAgIG9wdGlvbnM/OiBJZGxlUmVxdWVzdE9wdGlvbnMsXG4gICkge1xuICAgIGNhbGxiYWNrKCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsaUJBQWlCLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxRQUFRLG1CQUFtQjtBQUM3RSxTQUFTQyxpQkFBaUIsUUFBUSxnQ0FBZ0M7QUFDbEUsT0FBT0MsVUFBVSxNQUFNLDZCQUE2QjtBQVVwRCxPQUFPLE1BQU1DLFVBQVUsU0FBU0MsS0FBSyxDQUFDO0VBR3BDQyxXQUFXQSxDQUFBLEVBQUc7SUFDWixLQUFLLENBQUMsc0JBQXNCLENBQUM7SUFBQyxLQUhoQ0MsSUFBSSxHQUFHLFlBQVk7RUFJbkI7QUFDRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE1BQU1DLGNBQWMsQ0FBb0I7RUFXckRGLFdBQVdBLENBQUM7SUFBRUcsZ0JBQWdCLEdBQUcsS0FBSztJQUFFQyxpQkFBaUIsR0FBRztFQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtJQUFBLEtBVi9EQyxPQUFPLEdBQWtDQyxNQUFNLENBQUNDLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFBQSxLQUM1REMsU0FBUyxHQUEyQyxDQUFDLENBQUM7SUFBQSxLQUN0REMsU0FBUyxHQUEyQyxDQUFDLENBQUM7SUFBQSxLQUN0REMsU0FBUyxHQUE0QixDQUFDLENBQUM7SUFBQSxLQUl2Q0MsVUFBVSxHQUFlLElBQUlkLFVBQVUsQ0FBQyxDQUFDO0lBSWpELElBQUksQ0FBQ00sZ0JBQWdCLEdBQUdBLGdCQUFnQjtJQUN4QyxJQUFJLENBQUNDLGlCQUFpQixHQUFHQSxpQkFBaUI7SUFFMUMsSUFBSSxDQUFDUSxVQUFVLEdBQTZCRCxVQUFhLElBQUs7TUFDNUQsSUFBSSxDQUFDQSxVQUFVLEdBQUdBLFVBQVU7TUFDNUIsT0FBUUUsSUFBbUIsSUFDeEJDLE1BQU0sSUFBb0I7UUFDekIsUUFBUUEsTUFBTSxDQUFDQyxJQUFJO1VBQ2pCLEtBQUtyQixVQUFVO1lBQ2IsSUFBSSxDQUFDc0IsV0FBVyxDQUFDRixNQUFNLENBQUM7WUFDeEI7WUFDQTtZQUNBO1lBQ0EsSUFDRUEsTUFBTSxDQUFDRyxRQUFRLENBQUNDLHFCQUFxQixLQUFLQyxTQUFTLElBQ25ETCxNQUFNLENBQUNHLFFBQVEsQ0FBQ0csVUFBVSxFQUMxQjtjQUNBLE9BQU9QLElBQUksQ0FBQ0MsTUFBTSxDQUFDO1lBQ3JCO1lBQ0EsT0FBT08sT0FBTyxDQUFDQyxPQUFPLENBQUMsQ0FBQztVQUMxQixLQUFLN0IsaUJBQWlCO1lBQ3BCO1lBQ0EsT0FBT29CLElBQUksQ0FBQ0MsTUFBTSxDQUFDLENBQUNTLElBQUksQ0FBQyxNQUFNO2NBQzdCLElBQUlULE1BQU0sQ0FBQ1UsR0FBRyxJQUFJLElBQUksQ0FBQ25CLE9BQU8sRUFBRTtnQkFBQSxJQUFBb0IscUJBQUE7Z0JBQzlCO2dCQUNBLE1BQU1DLEtBQUssSUFBQUQscUJBQUEsR0FBR2QsVUFBVSxDQUFDZ0IsUUFBUSxDQUFDLENBQUMsQ0FBQ0MsSUFBSSxDQUFDZCxNQUFNLENBQUNVLEdBQUcsQ0FBQyxxQkFBdENDLHFCQUFBLENBQXdDQyxLQUFLO2dCQUMzRDtnQkFDQSxJQUFJQSxLQUFLLEVBQUU7a0JBQ1QsSUFBSSxDQUFDRyxTQUFTLENBQ1pqQyxpQkFBaUIsQ0FBQ2tCLE1BQU0sQ0FBQ0csUUFBUSxFQUFFO29CQUNqQ2EsSUFBSSxFQUFFaEIsTUFBTSxDQUFDZ0IsSUFBSTtvQkFDakJDLFFBQVEsRUFBRUwsS0FBSztvQkFDZmhCLFNBQVMsRUFBRUksTUFBTSxDQUFDYyxJQUFJLENBQUNsQixTQUFTO29CQUNoQ2dCLEtBQUssRUFBRTtrQkFDVCxDQUFDLENBQ0gsQ0FBQztnQkFDSCxDQUFDLE1BQU07a0JBQ0wsSUFBSSxDQUFDRyxTQUFTLENBQUNmLE1BQU0sQ0FBQztnQkFDeEI7Y0FDRjtZQUNGLENBQUMsQ0FBQztVQUNKLEtBQUtuQixVQUFVO1lBQUU7Y0FDZixNQUFNYyxTQUFTLEdBQUc7Z0JBQUUsR0FBRyxJQUFJLENBQUNBO2NBQVUsQ0FBQztjQUV2QyxJQUFJLENBQUN1QixRQUFRLENBQUMsQ0FBQztjQUNmLE9BQU9uQixJQUFJLENBQUNDLE1BQU0sQ0FBQyxDQUFDUyxJQUFJLENBQUMsTUFBTTtnQkFDN0I7Z0JBQ0E7Z0JBQ0EsS0FBSyxNQUFNVSxDQUFDLElBQUl4QixTQUFTLEVBQUU7a0JBQ3pCQSxTQUFTLENBQUN3QixDQUFDLENBQUMsQ0FBQyxJQUFJbkMsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDaEM7Y0FDRixDQUFDLENBQUM7WUFDSjtVQUNBO1lBQ0UsT0FBT2UsSUFBSSxDQUFDQyxNQUFNLENBQUM7UUFDdkI7TUFDRixDQUFDO0lBQ0wsQ0FBQztFQUNIOztFQUVBO0VBQ0FvQixXQUFXQSxDQUFDcEIsTUFBbUIsRUFBRTtJQUMvQjtJQUNBLE9BQU9BLE1BQU0sQ0FBQ0MsSUFBSSxLQUFLckIsVUFBVSxJQUFJb0IsTUFBTSxDQUFDVSxHQUFHLElBQUksSUFBSSxDQUFDbkIsT0FBTztFQUNqRTs7RUFFQTtFQUNBOEIsSUFBSUEsQ0FBQSxFQUFHO0lBQ0wsT0FBTyxJQUFJLENBQUNDLFdBQVc7RUFDekI7O0VBRUE7RUFDQUMsT0FBT0EsQ0FBQSxFQUFHO0lBQ1I7SUFDQTtJQUNBLElBQUksQ0FBQ0QsV0FBVyxHQUFHRSxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO0VBQy9CO0VBRUFDLFVBQVVBLENBQUEsRUFBRztJQUNYLE1BQU1DLE9BQU8sR0FBR25DLE1BQU0sQ0FBQ29DLE1BQU0sQ0FBQyxJQUFJLENBQUNyQyxPQUFPLENBQUM7SUFDM0MsSUFBSW9DLE9BQU8sQ0FBQ0UsTUFBTSxFQUFFLE9BQU90QixPQUFPLENBQUNtQixVQUFVLENBQUNDLE9BQU8sQ0FBQztFQUN4RDs7RUFFQTtFQUNVVCxRQUFRQSxDQUFBLEVBQUc7SUFDbkIsS0FBSyxNQUFNQyxDQUFDLElBQUksSUFBSSxDQUFDeEIsU0FBUyxFQUFFO01BQzlCLElBQUksQ0FBQ21DLEtBQUssQ0FBQ1gsQ0FBQyxDQUFDO0lBQ2Y7RUFDRjs7RUFFQTtFQUNVVyxLQUFLQSxDQUFDcEIsR0FBVyxFQUFFO0lBQzNCLElBQUksQ0FBQ25CLE9BQU8sQ0FBQ21CLEdBQUcsQ0FBQyxDQUFDcUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDakMsT0FBTyxJQUFJLENBQUNyQyxTQUFTLENBQUNnQixHQUFHLENBQUM7SUFDMUIsT0FBTyxJQUFJLENBQUNmLFNBQVMsQ0FBQ2UsR0FBRyxDQUFDO0lBQzFCLE9BQU8sSUFBSSxDQUFDbkIsT0FBTyxDQUFDbUIsR0FBRyxDQUFDO0lBQ3hCLE9BQU8sSUFBSSxDQUFDZCxTQUFTLENBQUNjLEdBQUcsQ0FBQztFQUM1QjtFQUVVc0IsWUFBWUEsQ0FBQSxFQUFHO0lBQ3ZCLElBQUksSUFBSSxDQUFDVixXQUFXLEVBQUUsT0FBTyxJQUFJLENBQUNBLFdBQVc7SUFDN0MsT0FBTyxJQUFJLENBQUN6QixVQUFVLENBQUNnQixRQUFRLENBQUMsQ0FBQyxDQUFDb0IsU0FBUztFQUM3Qzs7RUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ1kvQixXQUFXQSxDQUFDRixNQUFtQixFQUFFO0lBQ3pDLE1BQU07TUFBRVEsT0FBTztNQUFFMEIsTUFBTTtNQUFFdEM7SUFBVSxDQUFDLEdBQUdJLE1BQU0sQ0FBQ2MsSUFBSTtJQUNsRCxNQUFNcUIsUUFBUSxHQUFHLENBQUNuQyxNQUFNLENBQUNHLFFBQVEsQ0FBQ0csVUFBVTtJQUU1QyxNQUFNOEIsWUFBWSxHQUFHQSxDQUFBLEtBQU07TUFDekIsSUFBSUMsT0FBTyxHQUFHckMsTUFBTSxDQUFDRyxRQUFRLENBQUMsR0FBR0gsTUFBTSxDQUFDZ0IsSUFBSSxDQUFDO01BQzdDLE1BQU1zQixjQUFjLEdBQ2xCRCxPQUFpRCxJQUVqREEsT0FBTyxDQUNKNUIsSUFBSSxDQUFDOEIsSUFBSSxJQUFJO1FBQ1ovQixPQUFPLENBQUMrQixJQUFJLENBQUM7UUFDYixPQUFPQSxJQUFJO01BQ2IsQ0FBQyxDQUFDLENBQ0RSLEtBQUssQ0FBQ25CLEtBQUssSUFBSTtRQUNkc0IsTUFBTSxDQUFDdEIsS0FBSyxDQUFDO1FBQ2IsTUFBTUEsS0FBSztNQUNiLENBQUMsQ0FBQztNQUNOO01BQ0E7TUFDQTtNQUNBLElBQUksQ0FBQ3VCLFFBQVEsRUFBRTtRQUNiRSxPQUFPLEdBQUdDLGNBQWMsQ0FBQ0QsT0FBTyxDQUFDO01BQ25DO01BQ0FBLE9BQU8sR0FBR0EsT0FBTyxDQUNkNUIsSUFBSSxDQUFDUSxRQUFRLElBQUk7UUFDaEIsSUFBSWdCLFNBQVMsR0FBRyxJQUFJLENBQUNELFlBQVksQ0FBQyxDQUFDOztRQUVuQztRQUNBLElBQUlRLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQyxRQUFRLEtBQUssWUFBWSxJQUFJQyxLQUFLLENBQUNWLFNBQVMsQ0FBQyxFQUFFO1VBQzdEVyxPQUFPLENBQUNoQyxLQUFLLENBQ1gsNkRBQ0YsQ0FBQztVQUNEcUIsU0FBUyxHQUFHLENBQUM7UUFDZjs7UUFFQTtRQUNBLElBQUlyQyxTQUFTLElBQUlxQyxTQUFTLEVBQUU7VUFDMUIsSUFBSSxDQUFDcEMsVUFBVSxDQUFDVyxPQUFPLENBQUNSLE1BQU0sQ0FBQ0csUUFBUSxFQUFFO1lBQ3ZDYSxJQUFJLEVBQUVoQixNQUFNLENBQUNnQixJQUFJO1lBQ2pCQyxRQUFRO1lBQ1JyQjtVQUNGLENBQUMsQ0FBQztRQUNKO1FBQ0EsT0FBT3FCLFFBQVE7TUFDakIsQ0FBQyxDQUFDLENBQ0RjLEtBQUssQ0FBQ25CLEtBQUssSUFBSTtRQUNkLE1BQU1xQixTQUFTLEdBQUcsSUFBSSxDQUFDRCxZQUFZLENBQUMsQ0FBQztRQUNyQztRQUNBLElBQUlwQyxTQUFTLElBQUlxQyxTQUFTLEVBQUU7VUFDMUIsSUFBSSxDQUFDcEMsVUFBVSxDQUFDVyxPQUFPLENBQUNSLE1BQU0sQ0FBQ0csUUFBUSxFQUFFO1lBQ3ZDYSxJQUFJLEVBQUVoQixNQUFNLENBQUNnQixJQUFJO1lBQ2pCQyxRQUFRLEVBQUVMLEtBQUs7WUFDZmhCLFNBQVM7WUFDVGdCLEtBQUssRUFBRTtVQUNULENBQUMsQ0FBQztRQUNKO1FBQ0EsTUFBTUEsS0FBSztNQUNiLENBQUMsQ0FBQztNQUNKLE9BQU95QixPQUFPO0lBQ2hCLENBQUM7SUFFRCxJQUFJRixRQUFRLEVBQUU7TUFDWixPQUFPLElBQUksQ0FBQ0EsUUFBUSxDQUFDbkMsTUFBTSxDQUFDVSxHQUFHLEVBQUUwQixZQUFZLEVBQUV4QyxTQUFTLENBQUMsQ0FDdERhLElBQUksQ0FBQzhCLElBQUksSUFBSS9CLE9BQU8sQ0FBQytCLElBQUksQ0FBQyxDQUFDLENBQzNCUixLQUFLLENBQUNuQixLQUFLLElBQUlzQixNQUFNLENBQUN0QixLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDLE1BQU07TUFDTCxPQUFPd0IsWUFBWSxDQUFDLENBQUMsQ0FBQ0wsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDdkM7RUFDRjs7RUFFQTtBQUNGO0FBQ0E7QUFDQTtFQUNZaEIsU0FBU0EsQ0FBQ2YsTUFBeUIsRUFBRTtJQUM3QztJQUNBLElBQUlBLE1BQU0sQ0FBQ1UsR0FBRyxJQUFJLElBQUksQ0FBQ25CLE9BQU8sRUFBRTtNQUM5QixJQUFJc0QsY0FBcUM7TUFDekMsSUFBSTdDLE1BQU0sQ0FBQ1ksS0FBSyxFQUFFO1FBQ2hCaUMsY0FBYyxHQUFHLElBQUksQ0FBQ2xELFNBQVMsQ0FBQ0ssTUFBTSxDQUFDVSxHQUFHLENBQUM7TUFDN0MsQ0FBQyxNQUFNO1FBQ0xtQyxjQUFjLEdBQUcsSUFBSSxDQUFDbkQsU0FBUyxDQUFDTSxNQUFNLENBQUNVLEdBQUcsQ0FBQztNQUM3QztNQUNBbUMsY0FBYyxDQUFDN0MsTUFBTSxDQUFDaUIsUUFBUSxDQUFDO01BQy9CO01BQ0EsSUFBSSxDQUFDYSxLQUFLLENBQUM5QixNQUFNLENBQUNVLEdBQUcsQ0FBQztJQUN4QjtFQUNGOztFQUVBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0VvQyxhQUFhQSxDQUFBLEVBQUc7SUFDZCxPQUFPLElBQUksQ0FBQ2hELFVBQVU7RUFDeEI7O0VBRUE7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDWXFDLFFBQVFBLENBQ2hCekIsR0FBVyxFQUNYcUMsS0FBeUIsRUFDekJuRCxTQUFpQixFQUNqQjtJQUNBLE1BQU1xQyxTQUFTLEdBQUcsSUFBSSxDQUFDRCxZQUFZLENBQUMsQ0FBQztJQUNyQztJQUNBO0lBQ0EsSUFBSXRCLEdBQUcsSUFBSSxJQUFJLENBQUNuQixPQUFPLElBQUksSUFBSSxDQUFDSyxTQUFTLENBQUNjLEdBQUcsQ0FBQyxHQUFHdUIsU0FBUyxFQUFFO01BQzFELE9BQU8sSUFBSSxDQUFDMUMsT0FBTyxDQUFDbUIsR0FBRyxDQUFDO0lBQzFCO0lBRUEsSUFBSSxDQUFDbkIsT0FBTyxDQUFDbUIsR0FBRyxDQUFDLEdBQUcsSUFBSUgsT0FBTyxDQUFDLENBQUNDLE9BQU8sRUFBRTBCLE1BQU0sS0FBSztNQUNuRCxJQUFJLENBQUN4QyxTQUFTLENBQUNnQixHQUFHLENBQUMsR0FBR0YsT0FBTztNQUM3QixJQUFJLENBQUNiLFNBQVMsQ0FBQ2UsR0FBRyxDQUFDLEdBQUd3QixNQUFNO0lBQzlCLENBQUMsQ0FBQztJQUNGLElBQUksQ0FBQ3RDLFNBQVMsQ0FBQ2MsR0FBRyxDQUFDLEdBQUdkLFNBQVM7SUFFL0IsSUFBSSxDQUFDb0QsWUFBWSxDQUNmLE1BQU07TUFDSjtNQUNBO01BQ0E7TUFDQUQsS0FBSyxDQUFDLENBQUMsQ0FBQ2hCLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQztJQUMzQixDQUFDLEVBQ0Q7TUFBRWtCLE9BQU8sRUFBRTtJQUFJLENBQ2pCLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQzFELE9BQU8sQ0FBQ21CLEdBQUcsQ0FBQztFQUMxQjs7RUFFQTtBQUNGO0FBQ0E7QUFDQTtFQUNZc0MsWUFBWUEsQ0FDcEJFLFFBQWtDLEVBQ2xDQyxPQUE0QixFQUM1QjtJQUNBRCxRQUFRLENBQUMsQ0FBQztFQUNaO0FBQ0YiLCJpZ25vcmVMaXN0IjpbXX0=

@@ -21,3 +21,3 @@ import Controller from '../controller/Controller.js';

*/
export default class SubscriptionManager<S extends SubscriptionConstructable> implements Manager<Actions> {
export default class SubscriptionManager<S extends SubscriptionConstructable = SubscriptionConstructable> implements Manager<Actions> {
protected subscriptions: {

@@ -24,0 +24,0 @@ [key: string]: InstanceType<S>;

@@ -91,2 +91,2 @@ import { SUBSCRIBE_TYPE, UNSUBSCRIBE_TYPE } from '../actionTypes.js';

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTVUJTQ1JJQkVfVFlQRSIsIlVOU1VCU0NSSUJFX1RZUEUiLCJDb250cm9sbGVyIiwiU3Vic2NyaXB0aW9uTWFuYWdlciIsImNvbnN0cnVjdG9yIiwiU3Vic2NyaXB0aW9uIiwic3Vic2NyaXB0aW9ucyIsImNvbnRyb2xsZXIiLCJtaWRkbGV3YXJlIiwibmV4dCIsImFjdGlvbiIsInR5cGUiLCJoYW5kbGVTdWJzY3JpYmUiLCJlIiwiY29uc29sZSIsImVycm9yIiwiUHJvbWlzZSIsInJlc29sdmUiLCJoYW5kbGVVbnN1YnNjcmliZSIsImNsZWFudXAiLCJrZXkiLCJmcmVxdWVuY3kiLCJlbmRwb2ludCIsInBvbGxGcmVxdWVuY3kiLCJhZGQiLCJlbXB0eSIsInJlbW92ZSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImdldE1pZGRsZXdhcmUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFuYWdlci9TdWJzY3JpcHRpb25NYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNVQlNDUklCRV9UWVBFLCBVTlNVQlNDUklCRV9UWVBFIH0gZnJvbSAnLi4vYWN0aW9uVHlwZXMuanMnO1xuaW1wb3J0IENvbnRyb2xsZXIgZnJvbSAnLi4vY29udHJvbGxlci9Db250cm9sbGVyLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgTWFuYWdlcixcbiAgTWlkZGxld2FyZUFQSSxcbiAgTWlkZGxld2FyZSxcbiAgVW5zdWJzY3JpYmVBY3Rpb24sXG4gIFN1YnNjcmliZUFjdGlvbixcbn0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG50eXBlIEFjdGlvbnMgPSBVbnN1YnNjcmliZUFjdGlvbiB8IFN1YnNjcmliZUFjdGlvbjtcblxuLyoqIEludGVyZmFjZSBoYW5kbGluZyBhIHNpbmdsZSByZXNvdXJjZSBzdWJzY3JpcHRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3Vic2NyaXB0aW9uIHtcbiAgYWRkKGZyZXF1ZW5jeT86IG51bWJlcik6IHZvaWQ7XG4gIHJlbW92ZShmcmVxdWVuY3k/OiBudW1iZXIpOiBib29sZWFuO1xuICBjbGVhbnVwKCk6IHZvaWQ7XG59XG5cbi8qKiBUaGUgc3RhdGljIGNsYXNzIHRoYXQgY29uc3RydWN0cyBTdWJzY3JpcHRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3Vic2NyaXB0aW9uQ29uc3RydWN0YWJsZSB7XG4gIG5ldyAoXG4gICAgYWN0aW9uOiBPbWl0PFN1YnNjcmliZUFjdGlvbiwgJ3R5cGUnPixcbiAgICBjb250cm9sbGVyOiBDb250cm9sbGVyLFxuICApOiBTdWJzY3JpcHRpb247XG59XG5cbi8qKiBIYW5kbGVzIHN1YnNjcmlwdGlvbiBhY3Rpb25zIC0+IGZldGNoIG9yIHNldCBhY3Rpb25zXG4gKlxuICogQ29uc3RydWN0b3IgdGFrZXMgYSBTdWJzY3JpcHRpb25Db25zdHJ1Y3RhYmxlIGNsYXNzIHRvIGNvbnRyb2wgaG93XG4gKiBzdWJzY3JpcHRpb25zIGFyZSBoYW5kbGVkLiAoZS5nLiwgcG9sbGluZywgd2Vic29ja2V0cylcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9TdWJzY3JpcHRpb25NYW5hZ2VyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1YnNjcmlwdGlvbk1hbmFnZXI8UyBleHRlbmRzIFN1YnNjcmlwdGlvbkNvbnN0cnVjdGFibGU+XG4gIGltcGxlbWVudHMgTWFuYWdlcjxBY3Rpb25zPlxue1xuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uczoge1xuICAgIFtrZXk6IHN0cmluZ106IEluc3RhbmNlVHlwZTxTPjtcbiAgfSA9IHt9O1xuXG4gIHByb3RlY3RlZCBkZWNsYXJlIHJlYWRvbmx5IFN1YnNjcmlwdGlvbjogUztcbiAgcHJvdGVjdGVkIGRlY2xhcmUgbWlkZGxld2FyZTogTWlkZGxld2FyZTtcbiAgcHJvdGVjdGVkIGNvbnRyb2xsZXI6IENvbnRyb2xsZXIgPSBuZXcgQ29udHJvbGxlcigpO1xuXG4gIGNvbnN0cnVjdG9yKFN1YnNjcmlwdGlvbjogUykge1xuICAgIHRoaXMuU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uO1xuXG4gICAgdGhpcy5taWRkbGV3YXJlID0gPEMgZXh0ZW5kcyBNaWRkbGV3YXJlQVBJPihjb250cm9sbGVyOiBDKSA9PiB7XG4gICAgICB0aGlzLmNvbnRyb2xsZXIgPSBjb250cm9sbGVyO1xuICAgICAgcmV0dXJuIChuZXh0OiBDWydkaXNwYXRjaCddKTogQ1snZGlzcGF0Y2gnXSA9PlxuICAgICAgICBhY3Rpb24gPT4ge1xuICAgICAgICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgU1VCU0NSSUJFX1RZUEU6XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTdWJzY3JpYmUoYWN0aW9uKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICAgICAgY2FzZSBVTlNVQlNDUklCRV9UWVBFOlxuICAgICAgICAgICAgICB0aGlzLmhhbmRsZVVuc3Vic2NyaWJlKGFjdGlvbik7XG4gICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KGFjdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG4gIH1cblxuICAvKiogRW5zdXJlcyBhbGwgc3Vic2NyaXB0aW9ucyBhcmUgY2xlYW5lZCB1cC4gKi9cbiAgY2xlYW51cCgpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLnN1YnNjcmlwdGlvbnMpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc1trZXldLmNsZWFudXAoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQ2FsbGVkIHdoZW4gbWlkZGxld2FyZSBpbnRlcmNlcHRzICdyZGMvc3Vic2NyaWJlJyBhY3Rpb24uXG4gICAqXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlU3Vic2NyaWJlKGFjdGlvbjogU3Vic2NyaWJlQWN0aW9uKSB7XG4gICAgY29uc3Qga2V5ID0gYWN0aW9uLmtleTtcblxuICAgIGlmIChrZXkgaW4gdGhpcy5zdWJzY3JpcHRpb25zKSB7XG4gICAgICBjb25zdCBmcmVxdWVuY3kgPSBhY3Rpb24uZW5kcG9pbnQucG9sbEZyZXF1ZW5jeTtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc1trZXldLmFkZChmcmVxdWVuY3kpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnNba2V5XSA9IG5ldyB0aGlzLlN1YnNjcmlwdGlvbihcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICB0aGlzLmNvbnRyb2xsZXIsXG4gICAgICApIGFzIEluc3RhbmNlVHlwZTxTPjtcbiAgICB9XG4gIH1cblxuICAvKiogQ2FsbGVkIHdoZW4gbWlkZGxld2FyZSBpbnRlcmNlcHRzICdyZGMvdW5zdWJzY3JpYmUnIGFjdGlvbi5cbiAgICpcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVVbnN1YnNjcmliZShhY3Rpb246IFVuc3Vic2NyaWJlQWN0aW9uKSB7XG4gICAgY29uc3Qga2V5ID0gYWN0aW9uLmtleTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGtleSBpbiB0aGlzLnN1YnNjcmlwdGlvbnMpIHtcbiAgICAgIGNvbnN0IGZyZXF1ZW5jeSA9IGFjdGlvbi5lbmRwb2ludC5wb2xsRnJlcXVlbmN5O1xuICAgICAgY29uc3QgZW1wdHkgPSB0aGlzLnN1YnNjcmlwdGlvbnNba2V5XS5yZW1vdmUoZnJlcXVlbmN5KTtcbiAgICAgIGlmIChlbXB0eSkge1xuICAgICAgICBkZWxldGUgdGhpcy5zdWJzY3JpcHRpb25zW2tleV07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBNaXNtYXRjaGVkIHVuc3Vic2NyaWJlOiAke2tleX0gaXMgbm90IHN1YnNjcmliZWRgKTtcbiAgICB9XG4gIH1cblxuICAvKiogQXR0YWNoZXMgTWFuYWdlciB0byBzdG9yZVxuICAgKlxuICAgKiBJbnRlcmNlcHRzICdyZGMvc3Vic2NyaWJlJy8ncmVzdC1ob3JkYy9yaWJlJyB0byByZWdpc3RlciByZXNvdXJjZXMgdGhhdFxuICAgKiBuZWVkIHRvIGJlIGtlcHQgdXAgdG8gZGF0ZS5cbiAgICpcbiAgICogV2lsbCBwb3NzaWJseSBkaXNwYXRjaCAncmRjL2ZldGNoJyBvciAncmVzdC1ob3JkYy8nIHRvIGtlZXAgcmVzb3VyY2VzIGZyZXNoXG4gICAqXG4gICAqL1xuICBnZXRNaWRkbGV3YXJlKCkge1xuICAgIHJldHVybiB0aGlzLm1pZGRsZXdhcmU7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsY0FBYyxFQUFFQyxnQkFBZ0IsUUFBUSxtQkFBbUI7QUFDcEUsT0FBT0MsVUFBVSxNQUFNLDZCQUE2Qjs7QUFXcEQ7O0FBT0E7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE1BQU1DLG1CQUFtQixDQUV4QztFQVNFQyxXQUFXQSxDQUFDQyxZQUFlLEVBQUU7SUFBQSxLQVJuQkMsYUFBYSxHQUVuQixDQUFDLENBQUM7SUFBQSxLQUlJQyxVQUFVLEdBQWUsSUFBSUwsVUFBVSxDQUFDLENBQUM7SUFHakQsSUFBSSxDQUFDRyxZQUFZLEdBQUdBLFlBQVk7SUFFaEMsSUFBSSxDQUFDRyxVQUFVLEdBQTZCRCxVQUFhLElBQUs7TUFDNUQsSUFBSSxDQUFDQSxVQUFVLEdBQUdBLFVBQVU7TUFDNUIsT0FBUUUsSUFBbUIsSUFDekJDLE1BQU0sSUFBSTtRQUNSLFFBQVFBLE1BQU0sQ0FBQ0MsSUFBSTtVQUNqQixLQUFLWCxjQUFjO1lBQ2pCLElBQUk7Y0FDRixJQUFJLENBQUNZLGVBQWUsQ0FBQ0YsTUFBTSxDQUFDO1lBQzlCLENBQUMsQ0FBQyxPQUFPRyxDQUFDLEVBQUU7Y0FDVkMsT0FBTyxDQUFDQyxLQUFLLENBQUNGLENBQUMsQ0FBQztZQUNsQjtZQUNBLE9BQU9HLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLENBQUM7VUFDMUIsS0FBS2hCLGdCQUFnQjtZQUNuQixJQUFJLENBQUNpQixpQkFBaUIsQ0FBQ1IsTUFBTSxDQUFDO1lBQzlCLE9BQU9NLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLENBQUM7VUFDMUI7WUFDRSxPQUFPUixJQUFJLENBQUNDLE1BQU0sQ0FBQztRQUN2QjtNQUNGLENBQUM7SUFDTCxDQUFDO0VBQ0g7O0VBRUE7RUFDQVMsT0FBT0EsQ0FBQSxFQUFHO0lBQ1IsS0FBSyxNQUFNQyxHQUFHLElBQUksSUFBSSxDQUFDZCxhQUFhLEVBQUU7TUFDcEMsSUFBSSxDQUFDQSxhQUFhLENBQUNjLEdBQUcsQ0FBQyxDQUFDRCxPQUFPLENBQUMsQ0FBQztJQUNuQztFQUNGOztFQUVBO0FBQ0Y7QUFDQTtFQUNZUCxlQUFlQSxDQUFDRixNQUF1QixFQUFFO0lBQ2pELE1BQU1VLEdBQUcsR0FBR1YsTUFBTSxDQUFDVSxHQUFHO0lBRXRCLElBQUlBLEdBQUcsSUFBSSxJQUFJLENBQUNkLGFBQWEsRUFBRTtNQUM3QixNQUFNZSxTQUFTLEdBQUdYLE1BQU0sQ0FBQ1ksUUFBUSxDQUFDQyxhQUFhO01BQy9DLElBQUksQ0FBQ2pCLGFBQWEsQ0FBQ2MsR0FBRyxDQUFDLENBQUNJLEdBQUcsQ0FBQ0gsU0FBUyxDQUFDO0lBQ3hDLENBQUMsTUFBTTtNQUNMLElBQUksQ0FBQ2YsYUFBYSxDQUFDYyxHQUFHLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQ2YsWUFBWSxDQUM3Q0ssTUFBTSxFQUNOLElBQUksQ0FBQ0gsVUFDUCxDQUFvQjtJQUN0QjtFQUNGOztFQUVBO0FBQ0Y7QUFDQTtFQUNZVyxpQkFBaUJBLENBQUNSLE1BQXlCLEVBQUU7SUFDckQsTUFBTVUsR0FBRyxHQUFHVixNQUFNLENBQUNVLEdBQUc7O0lBRXRCO0lBQ0EsSUFBSUEsR0FBRyxJQUFJLElBQUksQ0FBQ2QsYUFBYSxFQUFFO01BQzdCLE1BQU1lLFNBQVMsR0FBR1gsTUFBTSxDQUFDWSxRQUFRLENBQUNDLGFBQWE7TUFDL0MsTUFBTUUsS0FBSyxHQUFHLElBQUksQ0FBQ25CLGFBQWEsQ0FBQ2MsR0FBRyxDQUFDLENBQUNNLE1BQU0sQ0FBQ0wsU0FBUyxDQUFDO01BQ3ZELElBQUlJLEtBQUssRUFBRTtRQUNULE9BQU8sSUFBSSxDQUFDbkIsYUFBYSxDQUFDYyxHQUFHLENBQUM7TUFDaEM7SUFDRixDQUFDLE1BQU0sSUFBSU8sT0FBTyxDQUFDQyxHQUFHLENBQUNDLFFBQVEsS0FBSyxZQUFZLEVBQUU7TUFDaERmLE9BQU8sQ0FBQ0MsS0FBSyxDQUFDLDJCQUEyQkssR0FBRyxvQkFBb0IsQ0FBQztJQUNuRTtFQUNGOztFQUVBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDRVUsYUFBYUEsQ0FBQSxFQUFHO0lBQ2QsT0FBTyxJQUFJLENBQUN0QixVQUFVO0VBQ3hCO0FBQ0YiLCJpZ25vcmVMaXN0IjpbXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTVUJTQ1JJQkVfVFlQRSIsIlVOU1VCU0NSSUJFX1RZUEUiLCJDb250cm9sbGVyIiwiU3Vic2NyaXB0aW9uTWFuYWdlciIsImNvbnN0cnVjdG9yIiwiU3Vic2NyaXB0aW9uIiwic3Vic2NyaXB0aW9ucyIsImNvbnRyb2xsZXIiLCJtaWRkbGV3YXJlIiwibmV4dCIsImFjdGlvbiIsInR5cGUiLCJoYW5kbGVTdWJzY3JpYmUiLCJlIiwiY29uc29sZSIsImVycm9yIiwiUHJvbWlzZSIsInJlc29sdmUiLCJoYW5kbGVVbnN1YnNjcmliZSIsImNsZWFudXAiLCJrZXkiLCJmcmVxdWVuY3kiLCJlbmRwb2ludCIsInBvbGxGcmVxdWVuY3kiLCJhZGQiLCJlbXB0eSIsInJlbW92ZSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImdldE1pZGRsZXdhcmUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFuYWdlci9TdWJzY3JpcHRpb25NYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNVQlNDUklCRV9UWVBFLCBVTlNVQlNDUklCRV9UWVBFIH0gZnJvbSAnLi4vYWN0aW9uVHlwZXMuanMnO1xuaW1wb3J0IENvbnRyb2xsZXIgZnJvbSAnLi4vY29udHJvbGxlci9Db250cm9sbGVyLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgTWFuYWdlcixcbiAgTWlkZGxld2FyZUFQSSxcbiAgTWlkZGxld2FyZSxcbiAgVW5zdWJzY3JpYmVBY3Rpb24sXG4gIFN1YnNjcmliZUFjdGlvbixcbn0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG50eXBlIEFjdGlvbnMgPSBVbnN1YnNjcmliZUFjdGlvbiB8IFN1YnNjcmliZUFjdGlvbjtcblxuLyoqIEludGVyZmFjZSBoYW5kbGluZyBhIHNpbmdsZSByZXNvdXJjZSBzdWJzY3JpcHRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3Vic2NyaXB0aW9uIHtcbiAgYWRkKGZyZXF1ZW5jeT86IG51bWJlcik6IHZvaWQ7XG4gIHJlbW92ZShmcmVxdWVuY3k/OiBudW1iZXIpOiBib29sZWFuO1xuICBjbGVhbnVwKCk6IHZvaWQ7XG59XG5cbi8qKiBUaGUgc3RhdGljIGNsYXNzIHRoYXQgY29uc3RydWN0cyBTdWJzY3JpcHRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3Vic2NyaXB0aW9uQ29uc3RydWN0YWJsZSB7XG4gIG5ldyAoXG4gICAgYWN0aW9uOiBPbWl0PFN1YnNjcmliZUFjdGlvbiwgJ3R5cGUnPixcbiAgICBjb250cm9sbGVyOiBDb250cm9sbGVyLFxuICApOiBTdWJzY3JpcHRpb247XG59XG5cbi8qKiBIYW5kbGVzIHN1YnNjcmlwdGlvbiBhY3Rpb25zIC0+IGZldGNoIG9yIHNldCBhY3Rpb25zXG4gKlxuICogQ29uc3RydWN0b3IgdGFrZXMgYSBTdWJzY3JpcHRpb25Db25zdHJ1Y3RhYmxlIGNsYXNzIHRvIGNvbnRyb2wgaG93XG4gKiBzdWJzY3JpcHRpb25zIGFyZSBoYW5kbGVkLiAoZS5nLiwgcG9sbGluZywgd2Vic29ja2V0cylcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9TdWJzY3JpcHRpb25NYW5hZ2VyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1YnNjcmlwdGlvbk1hbmFnZXI8XG4gIFMgZXh0ZW5kcyBTdWJzY3JpcHRpb25Db25zdHJ1Y3RhYmxlID0gU3Vic2NyaXB0aW9uQ29uc3RydWN0YWJsZSxcbj4gaW1wbGVtZW50cyBNYW5hZ2VyPEFjdGlvbnM+XG57XG4gIHByb3RlY3RlZCBzdWJzY3JpcHRpb25zOiB7XG4gICAgW2tleTogc3RyaW5nXTogSW5zdGFuY2VUeXBlPFM+O1xuICB9ID0ge307XG5cbiAgcHJvdGVjdGVkIGRlY2xhcmUgcmVhZG9ubHkgU3Vic2NyaXB0aW9uOiBTO1xuICBwcm90ZWN0ZWQgZGVjbGFyZSBtaWRkbGV3YXJlOiBNaWRkbGV3YXJlO1xuICBwcm90ZWN0ZWQgY29udHJvbGxlcjogQ29udHJvbGxlciA9IG5ldyBDb250cm9sbGVyKCk7XG5cbiAgY29uc3RydWN0b3IoU3Vic2NyaXB0aW9uOiBTKSB7XG4gICAgdGhpcy5TdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb247XG5cbiAgICB0aGlzLm1pZGRsZXdhcmUgPSA8QyBleHRlbmRzIE1pZGRsZXdhcmVBUEk+KGNvbnRyb2xsZXI6IEMpID0+IHtcbiAgICAgIHRoaXMuY29udHJvbGxlciA9IGNvbnRyb2xsZXI7XG4gICAgICByZXR1cm4gKG5leHQ6IENbJ2Rpc3BhdGNoJ10pOiBDWydkaXNwYXRjaCddID0+XG4gICAgICAgIGFjdGlvbiA9PiB7XG4gICAgICAgICAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgICAgICAgICAgY2FzZSBTVUJTQ1JJQkVfVFlQRTpcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVN1YnNjcmliZShhY3Rpb24pO1xuICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICBjYXNlIFVOU1VCU0NSSUJFX1RZUEU6XG4gICAgICAgICAgICAgIHRoaXMuaGFuZGxlVW5zdWJzY3JpYmUoYWN0aW9uKTtcbiAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQoYWN0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBFbnN1cmVzIGFsbCBzdWJzY3JpcHRpb25zIGFyZSBjbGVhbmVkIHVwLiAqL1xuICBjbGVhbnVwKCkge1xuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuc3Vic2NyaXB0aW9ucykge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zW2tleV0uY2xlYW51cCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDYWxsZWQgd2hlbiBtaWRkbGV3YXJlIGludGVyY2VwdHMgJ3JkYy9zdWJzY3JpYmUnIGFjdGlvbi5cbiAgICpcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVTdWJzY3JpYmUoYWN0aW9uOiBTdWJzY3JpYmVBY3Rpb24pIHtcbiAgICBjb25zdCBrZXkgPSBhY3Rpb24ua2V5O1xuXG4gICAgaWYgKGtleSBpbiB0aGlzLnN1YnNjcmlwdGlvbnMpIHtcbiAgICAgIGNvbnN0IGZyZXF1ZW5jeSA9IGFjdGlvbi5lbmRwb2ludC5wb2xsRnJlcXVlbmN5O1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zW2tleV0uYWRkKGZyZXF1ZW5jeSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc1trZXldID0gbmV3IHRoaXMuU3Vic2NyaXB0aW9uKFxuICAgICAgICBhY3Rpb24sXG4gICAgICAgIHRoaXMuY29udHJvbGxlcixcbiAgICAgICkgYXMgSW5zdGFuY2VUeXBlPFM+O1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDYWxsZWQgd2hlbiBtaWRkbGV3YXJlIGludGVyY2VwdHMgJ3JkYy91bnN1YnNjcmliZScgYWN0aW9uLlxuICAgKlxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVVuc3Vic2NyaWJlKGFjdGlvbjogVW5zdWJzY3JpYmVBY3Rpb24pIHtcbiAgICBjb25zdCBrZXkgPSBhY3Rpb24ua2V5O1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoa2V5IGluIHRoaXMuc3Vic2NyaXB0aW9ucykge1xuICAgICAgY29uc3QgZnJlcXVlbmN5ID0gYWN0aW9uLmVuZHBvaW50LnBvbGxGcmVxdWVuY3k7XG4gICAgICBjb25zdCBlbXB0eSA9IHRoaXMuc3Vic2NyaXB0aW9uc1trZXldLnJlbW92ZShmcmVxdWVuY3kpO1xuICAgICAgaWYgKGVtcHR5KSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLnN1YnNjcmlwdGlvbnNba2V5XTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYE1pc21hdGNoZWQgdW5zdWJzY3JpYmU6ICR7a2V5fSBpcyBub3Qgc3Vic2NyaWJlZGApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBBdHRhY2hlcyBNYW5hZ2VyIHRvIHN0b3JlXG4gICAqXG4gICAqIEludGVyY2VwdHMgJ3JkYy9zdWJzY3JpYmUnLydyZXN0LWhvcmRjL3JpYmUnIHRvIHJlZ2lzdGVyIHJlc291cmNlcyB0aGF0XG4gICAqIG5lZWQgdG8gYmUga2VwdCB1cCB0byBkYXRlLlxuICAgKlxuICAgKiBXaWxsIHBvc3NpYmx5IGRpc3BhdGNoICdyZGMvZmV0Y2gnIG9yICdyZXN0LWhvcmRjLycgdG8ga2VlcCByZXNvdXJjZXMgZnJlc2hcbiAgICpcbiAgICovXG4gIGdldE1pZGRsZXdhcmUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWlkZGxld2FyZTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxjQUFjLEVBQUVDLGdCQUFnQixRQUFRLG1CQUFtQjtBQUNwRSxPQUFPQyxVQUFVLE1BQU0sNkJBQTZCOztBQVdwRDs7QUFPQTs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsTUFBTUMsbUJBQW1CLENBR3hDO0VBU0VDLFdBQVdBLENBQUNDLFlBQWUsRUFBRTtJQUFBLEtBUm5CQyxhQUFhLEdBRW5CLENBQUMsQ0FBQztJQUFBLEtBSUlDLFVBQVUsR0FBZSxJQUFJTCxVQUFVLENBQUMsQ0FBQztJQUdqRCxJQUFJLENBQUNHLFlBQVksR0FBR0EsWUFBWTtJQUVoQyxJQUFJLENBQUNHLFVBQVUsR0FBNkJELFVBQWEsSUFBSztNQUM1RCxJQUFJLENBQUNBLFVBQVUsR0FBR0EsVUFBVTtNQUM1QixPQUFRRSxJQUFtQixJQUN6QkMsTUFBTSxJQUFJO1FBQ1IsUUFBUUEsTUFBTSxDQUFDQyxJQUFJO1VBQ2pCLEtBQUtYLGNBQWM7WUFDakIsSUFBSTtjQUNGLElBQUksQ0FBQ1ksZUFBZSxDQUFDRixNQUFNLENBQUM7WUFDOUIsQ0FBQyxDQUFDLE9BQU9HLENBQUMsRUFBRTtjQUNWQyxPQUFPLENBQUNDLEtBQUssQ0FBQ0YsQ0FBQyxDQUFDO1lBQ2xCO1lBQ0EsT0FBT0csT0FBTyxDQUFDQyxPQUFPLENBQUMsQ0FBQztVQUMxQixLQUFLaEIsZ0JBQWdCO1lBQ25CLElBQUksQ0FBQ2lCLGlCQUFpQixDQUFDUixNQUFNLENBQUM7WUFDOUIsT0FBT00sT0FBTyxDQUFDQyxPQUFPLENBQUMsQ0FBQztVQUMxQjtZQUNFLE9BQU9SLElBQUksQ0FBQ0MsTUFBTSxDQUFDO1FBQ3ZCO01BQ0YsQ0FBQztJQUNMLENBQUM7RUFDSDs7RUFFQTtFQUNBUyxPQUFPQSxDQUFBLEVBQUc7SUFDUixLQUFLLE1BQU1DLEdBQUcsSUFBSSxJQUFJLENBQUNkLGFBQWEsRUFBRTtNQUNwQyxJQUFJLENBQUNBLGFBQWEsQ0FBQ2MsR0FBRyxDQUFDLENBQUNELE9BQU8sQ0FBQyxDQUFDO0lBQ25DO0VBQ0Y7O0VBRUE7QUFDRjtBQUNBO0VBQ1lQLGVBQWVBLENBQUNGLE1BQXVCLEVBQUU7SUFDakQsTUFBTVUsR0FBRyxHQUFHVixNQUFNLENBQUNVLEdBQUc7SUFFdEIsSUFBSUEsR0FBRyxJQUFJLElBQUksQ0FBQ2QsYUFBYSxFQUFFO01BQzdCLE1BQU1lLFNBQVMsR0FBR1gsTUFBTSxDQUFDWSxRQUFRLENBQUNDLGFBQWE7TUFDL0MsSUFBSSxDQUFDakIsYUFBYSxDQUFDYyxHQUFHLENBQUMsQ0FBQ0ksR0FBRyxDQUFDSCxTQUFTLENBQUM7SUFDeEMsQ0FBQyxNQUFNO01BQ0wsSUFBSSxDQUFDZixhQUFhLENBQUNjLEdBQUcsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDZixZQUFZLENBQzdDSyxNQUFNLEVBQ04sSUFBSSxDQUFDSCxVQUNQLENBQW9CO0lBQ3RCO0VBQ0Y7O0VBRUE7QUFDRjtBQUNBO0VBQ1lXLGlCQUFpQkEsQ0FBQ1IsTUFBeUIsRUFBRTtJQUNyRCxNQUFNVSxHQUFHLEdBQUdWLE1BQU0sQ0FBQ1UsR0FBRzs7SUFFdEI7SUFDQSxJQUFJQSxHQUFHLElBQUksSUFBSSxDQUFDZCxhQUFhLEVBQUU7TUFDN0IsTUFBTWUsU0FBUyxHQUFHWCxNQUFNLENBQUNZLFFBQVEsQ0FBQ0MsYUFBYTtNQUMvQyxNQUFNRSxLQUFLLEdBQUcsSUFBSSxDQUFDbkIsYUFBYSxDQUFDYyxHQUFHLENBQUMsQ0FBQ00sTUFBTSxDQUFDTCxTQUFTLENBQUM7TUFDdkQsSUFBSUksS0FBSyxFQUFFO1FBQ1QsT0FBTyxJQUFJLENBQUNuQixhQUFhLENBQUNjLEdBQUcsQ0FBQztNQUNoQztJQUNGLENBQUMsTUFBTSxJQUFJTyxPQUFPLENBQUNDLEdBQUcsQ0FBQ0MsUUFBUSxLQUFLLFlBQVksRUFBRTtNQUNoRGYsT0FBTyxDQUFDQyxLQUFLLENBQUMsMkJBQTJCSyxHQUFHLG9CQUFvQixDQUFDO0lBQ25FO0VBQ0Y7O0VBRUE7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNFVSxhQUFhQSxDQUFBLEVBQUc7SUFDZCxPQUFPLElBQUksQ0FBQ3RCLFVBQVU7RUFDeEI7QUFDRiIsImlnbm9yZUxpc3QiOltdfQ==

@@ -50,4 +50,4 @@ import { expireReducer } from './expireReducer.js';

entities: {},
endpoints: {},
indexes: {},
endpoints: {},
meta: {},

@@ -58,2 +58,2 @@ entityMeta: {},

};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJleHBpcmVSZWR1Y2VyIiwiZmV0Y2hSZWR1Y2VyIiwiaW52YWxpZGF0ZVJlZHVjZXIiLCJzZXRSZWR1Y2VyIiwic2V0UmVzcG9uc2VSZWR1Y2VyIiwiU0VUX1RZUEUiLCJJTlZBTElEQVRFX1RZUEUiLCJSRVNFVF9UWVBFIiwiRkVUQ0hfVFlQRSIsIkdDX1RZUEUiLCJPUFRJTUlTVElDX1RZUEUiLCJJTlZBTElEQVRFQUxMX1RZUEUiLCJFWFBJUkVBTExfVFlQRSIsIlNFVF9SRVNQT05TRV9UWVBFIiwiY3JlYXRlUmVkdWNlciIsImNvbnRyb2xsZXIiLCJyZWR1Y2VyIiwic3RhdGUiLCJhY3Rpb24iLCJpbml0aWFsU3RhdGUiLCJ0eXBlIiwiZW50aXRpZXMiLCJmb3JFYWNoIiwia2V5IiwicGsiLCJfZW50aXRpZXMka2V5IiwiX2VudGl0eU1ldGEka2V5IiwiZW50aXR5TWV0YSIsImVuZHBvaW50cyIsImZldGNoS2V5IiwibWV0YSIsImxhc3RSZXNldCIsImRhdGUiLCJpbmRleGVzIiwib3B0aW1pc3RpYyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdGF0ZS9yZWR1Y2VyL2NyZWF0ZVJlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhwaXJlUmVkdWNlciB9IGZyb20gJy4vZXhwaXJlUmVkdWNlci5qcyc7XG5pbXBvcnQgeyBmZXRjaFJlZHVjZXIgfSBmcm9tICcuL2ZldGNoUmVkdWNlci5qcyc7XG5pbXBvcnQgeyBpbnZhbGlkYXRlUmVkdWNlciB9IGZyb20gJy4vaW52YWxpZGF0ZVJlZHVjZXIuanMnO1xuaW1wb3J0IHsgc2V0UmVkdWNlciB9IGZyb20gJy4vc2V0UmVkdWNlci5qcyc7XG5pbXBvcnQgeyBzZXRSZXNwb25zZVJlZHVjZXIgfSBmcm9tICcuL3NldFJlc3BvbnNlUmVkdWNlci5qcyc7XG5pbXBvcnQge1xuICBTRVRfVFlQRSxcbiAgSU5WQUxJREFURV9UWVBFLFxuICBSRVNFVF9UWVBFLFxuICBGRVRDSF9UWVBFLFxuICBHQ19UWVBFLFxuICBPUFRJTUlTVElDX1RZUEUsXG4gIElOVkFMSURBVEVBTExfVFlQRSxcbiAgRVhQSVJFQUxMX1RZUEUsXG4gIFNFVF9SRVNQT05TRV9UWVBFLFxufSBmcm9tICcuLi8uLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSBDb250cm9sbGVyIGZyb20gJy4uLy4uL2NvbnRyb2xsZXIvQ29udHJvbGxlci5qcyc7XG5pbXBvcnQgdHlwZSB7IEFjdGlvblR5cGVzLCBTdGF0ZSB9IGZyb20gJy4uLy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlUmVkdWNlcihjb250cm9sbGVyOiBDb250cm9sbGVyKTogUmVkdWNlclR5cGUge1xuICByZXR1cm4gZnVuY3Rpb24gcmVkdWNlcihcbiAgICBzdGF0ZTogU3RhdGU8dW5rbm93bj4gfCB1bmRlZmluZWQsXG4gICAgYWN0aW9uOiBBY3Rpb25UeXBlcyxcbiAgKTogU3RhdGU8dW5rbm93bj4ge1xuICAgIGlmICghc3RhdGUpIHN0YXRlID0gaW5pdGlhbFN0YXRlO1xuICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgR0NfVFlQRTpcbiAgICAgICAgLy8gaW5saW5lIGRlbGV0ZXMgYXJlIGZpbmUgYXMgdGhlc2Ugc2hvdWxkIGhhdmUgMCByZWZjb3VudHNcbiAgICAgICAgYWN0aW9uLmVudGl0aWVzLmZvckVhY2goKFtrZXksIHBrXSkgPT4ge1xuICAgICAgICAgIGRlbGV0ZSAoc3RhdGUgYXMgYW55KS5lbnRpdGllc1trZXldPy5bcGtdO1xuICAgICAgICAgIGRlbGV0ZSAoc3RhdGUgYXMgYW55KS5lbnRpdHlNZXRhW2tleV0/Lltwa107XG4gICAgICAgIH0pO1xuICAgICAgICBhY3Rpb24uZW5kcG9pbnRzLmZvckVhY2goZmV0Y2hLZXkgPT4ge1xuICAgICAgICAgIGRlbGV0ZSAoc3RhdGUgYXMgYW55KS5lbmRwb2ludHNbZmV0Y2hLZXldO1xuICAgICAgICAgIGRlbGV0ZSAoc3RhdGUgYXMgYW55KS5tZXRhW2ZldGNoS2V5XTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgIGNhc2UgRkVUQ0hfVFlQRTpcbiAgICAgICAgcmV0dXJuIGZldGNoUmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcblxuICAgICAgY2FzZSBPUFRJTUlTVElDX1RZUEU6XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZmFsbHRocm91Z2hcbiAgICAgIGNhc2UgU0VUX1JFU1BPTlNFX1RZUEU6XG4gICAgICAgIHJldHVybiBzZXRSZXNwb25zZVJlZHVjZXIoc3RhdGUsIGFjdGlvbiwgY29udHJvbGxlcik7XG5cbiAgICAgIGNhc2UgU0VUX1RZUEU6XG4gICAgICAgIHJldHVybiBzZXRSZWR1Y2VyKHN0YXRlLCBhY3Rpb24sIGNvbnRyb2xsZXIpO1xuXG4gICAgICBjYXNlIElOVkFMSURBVEVBTExfVFlQRTpcbiAgICAgIGNhc2UgSU5WQUxJREFURV9UWVBFOlxuICAgICAgICByZXR1cm4gaW52YWxpZGF0ZVJlZHVjZXIoc3RhdGUsIGFjdGlvbik7XG5cbiAgICAgIGNhc2UgRVhQSVJFQUxMX1RZUEU6XG4gICAgICAgIHJldHVybiBleHBpcmVSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xuXG4gICAgICBjYXNlIFJFU0VUX1RZUEU6XG4gICAgICAgIHJldHVybiB7IC4uLmluaXRpYWxTdGF0ZSwgbGFzdFJlc2V0OiBhY3Rpb24uZGF0ZSB9O1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBBIHJlZHVjZXIgbXVzdCBhbHdheXMgcmV0dXJuIGEgdmFsaWQgc3RhdGUuXG4gICAgICAgIC8vIEFsdGVybmF0aXZlbHkgeW91IGNhbiB0aHJvdyBhbiBlcnJvciBpZiBhbiBpbnZhbGlkIGFjdGlvbiBpcyBkaXNwYXRjaGVkLlxuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuICB9IGFzIGFueTtcbn1cblxuZXhwb3J0IGNvbnN0IGluaXRpYWxTdGF0ZTogU3RhdGU8dW5rbm93bj4gPSB7XG4gIGVudGl0aWVzOiB7fSxcbiAgaW5kZXhlczoge30sXG4gIGVuZHBvaW50czoge30sXG4gIG1ldGE6IHt9LFxuICBlbnRpdHlNZXRhOiB7fSxcbiAgb3B0aW1pc3RpYzogW10sXG4gIGxhc3RSZXNldDogMCxcbn07XG5cbnR5cGUgUmVkdWNlclR5cGUgPSAoXG4gIHN0YXRlOiBTdGF0ZTx1bmtub3duPiB8IHVuZGVmaW5lZCxcbiAgYWN0aW9uOiBBY3Rpb25UeXBlcyxcbikgPT4gU3RhdGU8dW5rbm93bj47XG5cbnR5cGUgV3JpdGFibGU8VD4gPSB7IFtQIGluIGtleW9mIFRdOiBOb25OdWxsYWJsZTxXcml0YWJsZTxUW1BdPj4gfTtcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsYUFBYSxRQUFRLG9CQUFvQjtBQUNsRCxTQUFTQyxZQUFZLFFBQVEsbUJBQW1CO0FBQ2hELFNBQVNDLGlCQUFpQixRQUFRLHdCQUF3QjtBQUMxRCxTQUFTQyxVQUFVLFFBQVEsaUJBQWlCO0FBQzVDLFNBQVNDLGtCQUFrQixRQUFRLHlCQUF5QjtBQUM1RCxTQUNFQyxRQUFRLEVBQ1JDLGVBQWUsRUFDZkMsVUFBVSxFQUNWQyxVQUFVLEVBQ1ZDLE9BQU8sRUFDUEMsZUFBZSxFQUNmQyxrQkFBa0IsRUFDbEJDLGNBQWMsRUFDZEMsaUJBQWlCLFFBQ1osc0JBQXNCO0FBSTdCLGVBQWUsU0FBU0MsYUFBYUEsQ0FBQ0MsVUFBc0IsRUFBZTtFQUN6RSxPQUFPLFNBQVNDLE9BQU9BLENBQ3JCQyxLQUFpQyxFQUNqQ0MsTUFBbUIsRUFDSDtJQUNoQixJQUFJLENBQUNELEtBQUssRUFBRUEsS0FBSyxHQUFHRSxZQUFZO0lBQ2hDLFFBQVFELE1BQU0sQ0FBQ0UsSUFBSTtNQUNqQixLQUFLWCxPQUFPO1FBQ1Y7UUFDQVMsTUFBTSxDQUFDRyxRQUFRLENBQUNDLE9BQU8sQ0FBQyxDQUFDLENBQUNDLEdBQUcsRUFBRUMsRUFBRSxDQUFDLEtBQUs7VUFBQSxJQUFBQyxhQUFBLEVBQUFDLGVBQUE7VUFDckMsQ0FBQUQsYUFBQSxHQUFRUixLQUFLLENBQVNJLFFBQVEsQ0FBQ0UsR0FBRyxDQUFDLGFBQW5DLE9BQU9FLGFBQUEsQ0FBK0JELEVBQUUsQ0FBQztVQUN6QyxDQUFBRSxlQUFBLEdBQVFULEtBQUssQ0FBU1UsVUFBVSxDQUFDSixHQUFHLENBQUMsYUFBckMsT0FBT0csZUFBQSxDQUFpQ0YsRUFBRSxDQUFDO1FBQzdDLENBQUMsQ0FBQztRQUNGTixNQUFNLENBQUNVLFNBQVMsQ0FBQ04sT0FBTyxDQUFDTyxRQUFRLElBQUk7VUFDbkMsT0FBUVosS0FBSyxDQUFTVyxTQUFTLENBQUNDLFFBQVEsQ0FBQztVQUN6QyxPQUFRWixLQUFLLENBQVNhLElBQUksQ0FBQ0QsUUFBUSxDQUFDO1FBQ3RDLENBQUMsQ0FBQztRQUNGLE9BQU9aLEtBQUs7TUFDZCxLQUFLVCxVQUFVO1FBQ2IsT0FBT1AsWUFBWSxDQUFDZ0IsS0FBSyxFQUFFQyxNQUFNLENBQUM7TUFFcEMsS0FBS1IsZUFBZTtNQUNwQjtNQUNBLEtBQUtHLGlCQUFpQjtRQUNwQixPQUFPVCxrQkFBa0IsQ0FBQ2EsS0FBSyxFQUFFQyxNQUFNLEVBQUVILFVBQVUsQ0FBQztNQUV0RCxLQUFLVixRQUFRO1FBQ1gsT0FBT0YsVUFBVSxDQUFDYyxLQUFLLEVBQUVDLE1BQU0sRUFBRUgsVUFBVSxDQUFDO01BRTlDLEtBQUtKLGtCQUFrQjtNQUN2QixLQUFLTCxlQUFlO1FBQ2xCLE9BQU9KLGlCQUFpQixDQUFDZSxLQUFLLEVBQUVDLE1BQU0sQ0FBQztNQUV6QyxLQUFLTixjQUFjO1FBQ2pCLE9BQU9aLGFBQWEsQ0FBQ2lCLEtBQUssRUFBRUMsTUFBTSxDQUFDO01BRXJDLEtBQUtYLFVBQVU7UUFDYixPQUFPO1VBQUUsR0FBR1ksWUFBWTtVQUFFWSxTQUFTLEVBQUViLE1BQU0sQ0FBQ2M7UUFBSyxDQUFDO01BRXBEO1FBQ0U7UUFDQTtRQUNBLE9BQU9mLEtBQUs7SUFDaEI7RUFDRixDQUFDO0FBQ0g7QUFFQSxPQUFPLE1BQU1FLFlBQTRCLEdBQUc7RUFDMUNFLFFBQVEsRUFBRSxDQUFDLENBQUM7RUFDWlksT0FBTyxFQUFFLENBQUMsQ0FBQztFQUNYTCxTQUFTLEVBQUUsQ0FBQyxDQUFDO0VBQ2JFLElBQUksRUFBRSxDQUFDLENBQUM7RUFDUkgsVUFBVSxFQUFFLENBQUMsQ0FBQztFQUNkTyxVQUFVLEVBQUUsRUFBRTtFQUNkSCxTQUFTLEVBQUU7QUFDYixDQUFDIiwiaWdub3JlTGlzdCI6W119
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJleHBpcmVSZWR1Y2VyIiwiZmV0Y2hSZWR1Y2VyIiwiaW52YWxpZGF0ZVJlZHVjZXIiLCJzZXRSZWR1Y2VyIiwic2V0UmVzcG9uc2VSZWR1Y2VyIiwiU0VUX1RZUEUiLCJJTlZBTElEQVRFX1RZUEUiLCJSRVNFVF9UWVBFIiwiRkVUQ0hfVFlQRSIsIkdDX1RZUEUiLCJPUFRJTUlTVElDX1RZUEUiLCJJTlZBTElEQVRFQUxMX1RZUEUiLCJFWFBJUkVBTExfVFlQRSIsIlNFVF9SRVNQT05TRV9UWVBFIiwiY3JlYXRlUmVkdWNlciIsImNvbnRyb2xsZXIiLCJyZWR1Y2VyIiwic3RhdGUiLCJhY3Rpb24iLCJpbml0aWFsU3RhdGUiLCJ0eXBlIiwiZW50aXRpZXMiLCJmb3JFYWNoIiwia2V5IiwicGsiLCJfZW50aXRpZXMka2V5IiwiX2VudGl0eU1ldGEka2V5IiwiZW50aXR5TWV0YSIsImVuZHBvaW50cyIsImZldGNoS2V5IiwibWV0YSIsImxhc3RSZXNldCIsImRhdGUiLCJpbmRleGVzIiwib3B0aW1pc3RpYyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdGF0ZS9yZWR1Y2VyL2NyZWF0ZVJlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhwaXJlUmVkdWNlciB9IGZyb20gJy4vZXhwaXJlUmVkdWNlci5qcyc7XG5pbXBvcnQgeyBmZXRjaFJlZHVjZXIgfSBmcm9tICcuL2ZldGNoUmVkdWNlci5qcyc7XG5pbXBvcnQgeyBpbnZhbGlkYXRlUmVkdWNlciB9IGZyb20gJy4vaW52YWxpZGF0ZVJlZHVjZXIuanMnO1xuaW1wb3J0IHsgc2V0UmVkdWNlciB9IGZyb20gJy4vc2V0UmVkdWNlci5qcyc7XG5pbXBvcnQgeyBzZXRSZXNwb25zZVJlZHVjZXIgfSBmcm9tICcuL3NldFJlc3BvbnNlUmVkdWNlci5qcyc7XG5pbXBvcnQge1xuICBTRVRfVFlQRSxcbiAgSU5WQUxJREFURV9UWVBFLFxuICBSRVNFVF9UWVBFLFxuICBGRVRDSF9UWVBFLFxuICBHQ19UWVBFLFxuICBPUFRJTUlTVElDX1RZUEUsXG4gIElOVkFMSURBVEVBTExfVFlQRSxcbiAgRVhQSVJFQUxMX1RZUEUsXG4gIFNFVF9SRVNQT05TRV9UWVBFLFxufSBmcm9tICcuLi8uLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSBDb250cm9sbGVyIGZyb20gJy4uLy4uL2NvbnRyb2xsZXIvQ29udHJvbGxlci5qcyc7XG5pbXBvcnQgdHlwZSB7IEFjdGlvblR5cGVzLCBTdGF0ZSB9IGZyb20gJy4uLy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlUmVkdWNlcihjb250cm9sbGVyOiBDb250cm9sbGVyKTogUmVkdWNlclR5cGUge1xuICByZXR1cm4gZnVuY3Rpb24gcmVkdWNlcihcbiAgICBzdGF0ZTogU3RhdGU8dW5rbm93bj4gfCB1bmRlZmluZWQsXG4gICAgYWN0aW9uOiBBY3Rpb25UeXBlcyxcbiAgKTogU3RhdGU8dW5rbm93bj4ge1xuICAgIGlmICghc3RhdGUpIHN0YXRlID0gaW5pdGlhbFN0YXRlO1xuICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgR0NfVFlQRTpcbiAgICAgICAgLy8gaW5saW5lIGRlbGV0ZXMgYXJlIGZpbmUgYXMgdGhlc2Ugc2hvdWxkIGhhdmUgMCByZWZjb3VudHNcbiAgICAgICAgYWN0aW9uLmVudGl0aWVzLmZvckVhY2goKFtrZXksIHBrXSkgPT4ge1xuICAgICAgICAgIGRlbGV0ZSAoc3RhdGUgYXMgYW55KS5lbnRpdGllc1trZXldPy5bcGtdO1xuICAgICAgICAgIGRlbGV0ZSAoc3RhdGUgYXMgYW55KS5lbnRpdHlNZXRhW2tleV0/Lltwa107XG4gICAgICAgIH0pO1xuICAgICAgICBhY3Rpb24uZW5kcG9pbnRzLmZvckVhY2goZmV0Y2hLZXkgPT4ge1xuICAgICAgICAgIGRlbGV0ZSAoc3RhdGUgYXMgYW55KS5lbmRwb2ludHNbZmV0Y2hLZXldO1xuICAgICAgICAgIGRlbGV0ZSAoc3RhdGUgYXMgYW55KS5tZXRhW2ZldGNoS2V5XTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgIGNhc2UgRkVUQ0hfVFlQRTpcbiAgICAgICAgcmV0dXJuIGZldGNoUmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcblxuICAgICAgY2FzZSBPUFRJTUlTVElDX1RZUEU6XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZmFsbHRocm91Z2hcbiAgICAgIGNhc2UgU0VUX1JFU1BPTlNFX1RZUEU6XG4gICAgICAgIHJldHVybiBzZXRSZXNwb25zZVJlZHVjZXIoc3RhdGUsIGFjdGlvbiwgY29udHJvbGxlcik7XG5cbiAgICAgIGNhc2UgU0VUX1RZUEU6XG4gICAgICAgIHJldHVybiBzZXRSZWR1Y2VyKHN0YXRlLCBhY3Rpb24sIGNvbnRyb2xsZXIpO1xuXG4gICAgICBjYXNlIElOVkFMSURBVEVBTExfVFlQRTpcbiAgICAgIGNhc2UgSU5WQUxJREFURV9UWVBFOlxuICAgICAgICByZXR1cm4gaW52YWxpZGF0ZVJlZHVjZXIoc3RhdGUsIGFjdGlvbik7XG5cbiAgICAgIGNhc2UgRVhQSVJFQUxMX1RZUEU6XG4gICAgICAgIHJldHVybiBleHBpcmVSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xuXG4gICAgICBjYXNlIFJFU0VUX1RZUEU6XG4gICAgICAgIHJldHVybiB7IC4uLmluaXRpYWxTdGF0ZSwgbGFzdFJlc2V0OiBhY3Rpb24uZGF0ZSB9O1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBBIHJlZHVjZXIgbXVzdCBhbHdheXMgcmV0dXJuIGEgdmFsaWQgc3RhdGUuXG4gICAgICAgIC8vIEFsdGVybmF0aXZlbHkgeW91IGNhbiB0aHJvdyBhbiBlcnJvciBpZiBhbiBpbnZhbGlkIGFjdGlvbiBpcyBkaXNwYXRjaGVkLlxuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuICB9IGFzIGFueTtcbn1cblxuZXhwb3J0IGNvbnN0IGluaXRpYWxTdGF0ZTogU3RhdGU8dW5rbm93bj4gPSB7XG4gIGVudGl0aWVzOiB7fSxcbiAgZW5kcG9pbnRzOiB7fSxcbiAgaW5kZXhlczoge30sXG4gIG1ldGE6IHt9LFxuICBlbnRpdHlNZXRhOiB7fSxcbiAgb3B0aW1pc3RpYzogW10sXG4gIGxhc3RSZXNldDogMCxcbn07XG5cbnR5cGUgUmVkdWNlclR5cGUgPSAoXG4gIHN0YXRlOiBTdGF0ZTx1bmtub3duPiB8IHVuZGVmaW5lZCxcbiAgYWN0aW9uOiBBY3Rpb25UeXBlcyxcbikgPT4gU3RhdGU8dW5rbm93bj47XG5cbnR5cGUgV3JpdGFibGU8VD4gPSB7IFtQIGluIGtleW9mIFRdOiBOb25OdWxsYWJsZTxXcml0YWJsZTxUW1BdPj4gfTtcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsYUFBYSxRQUFRLG9CQUFvQjtBQUNsRCxTQUFTQyxZQUFZLFFBQVEsbUJBQW1CO0FBQ2hELFNBQVNDLGlCQUFpQixRQUFRLHdCQUF3QjtBQUMxRCxTQUFTQyxVQUFVLFFBQVEsaUJBQWlCO0FBQzVDLFNBQVNDLGtCQUFrQixRQUFRLHlCQUF5QjtBQUM1RCxTQUNFQyxRQUFRLEVBQ1JDLGVBQWUsRUFDZkMsVUFBVSxFQUNWQyxVQUFVLEVBQ1ZDLE9BQU8sRUFDUEMsZUFBZSxFQUNmQyxrQkFBa0IsRUFDbEJDLGNBQWMsRUFDZEMsaUJBQWlCLFFBQ1osc0JBQXNCO0FBSTdCLGVBQWUsU0FBU0MsYUFBYUEsQ0FBQ0MsVUFBc0IsRUFBZTtFQUN6RSxPQUFPLFNBQVNDLE9BQU9BLENBQ3JCQyxLQUFpQyxFQUNqQ0MsTUFBbUIsRUFDSDtJQUNoQixJQUFJLENBQUNELEtBQUssRUFBRUEsS0FBSyxHQUFHRSxZQUFZO0lBQ2hDLFFBQVFELE1BQU0sQ0FBQ0UsSUFBSTtNQUNqQixLQUFLWCxPQUFPO1FBQ1Y7UUFDQVMsTUFBTSxDQUFDRyxRQUFRLENBQUNDLE9BQU8sQ0FBQyxDQUFDLENBQUNDLEdBQUcsRUFBRUMsRUFBRSxDQUFDLEtBQUs7VUFBQSxJQUFBQyxhQUFBLEVBQUFDLGVBQUE7VUFDckMsQ0FBQUQsYUFBQSxHQUFRUixLQUFLLENBQVNJLFFBQVEsQ0FBQ0UsR0FBRyxDQUFDLGFBQW5DLE9BQU9FLGFBQUEsQ0FBK0JELEVBQUUsQ0FBQztVQUN6QyxDQUFBRSxlQUFBLEdBQVFULEtBQUssQ0FBU1UsVUFBVSxDQUFDSixHQUFHLENBQUMsYUFBckMsT0FBT0csZUFBQSxDQUFpQ0YsRUFBRSxDQUFDO1FBQzdDLENBQUMsQ0FBQztRQUNGTixNQUFNLENBQUNVLFNBQVMsQ0FBQ04sT0FBTyxDQUFDTyxRQUFRLElBQUk7VUFDbkMsT0FBUVosS0FBSyxDQUFTVyxTQUFTLENBQUNDLFFBQVEsQ0FBQztVQUN6QyxPQUFRWixLQUFLLENBQVNhLElBQUksQ0FBQ0QsUUFBUSxDQUFDO1FBQ3RDLENBQUMsQ0FBQztRQUNGLE9BQU9aLEtBQUs7TUFDZCxLQUFLVCxVQUFVO1FBQ2IsT0FBT1AsWUFBWSxDQUFDZ0IsS0FBSyxFQUFFQyxNQUFNLENBQUM7TUFFcEMsS0FBS1IsZUFBZTtNQUNwQjtNQUNBLEtBQUtHLGlCQUFpQjtRQUNwQixPQUFPVCxrQkFBa0IsQ0FBQ2EsS0FBSyxFQUFFQyxNQUFNLEVBQUVILFVBQVUsQ0FBQztNQUV0RCxLQUFLVixRQUFRO1FBQ1gsT0FBT0YsVUFBVSxDQUFDYyxLQUFLLEVBQUVDLE1BQU0sRUFBRUgsVUFBVSxDQUFDO01BRTlDLEtBQUtKLGtCQUFrQjtNQUN2QixLQUFLTCxlQUFlO1FBQ2xCLE9BQU9KLGlCQUFpQixDQUFDZSxLQUFLLEVBQUVDLE1BQU0sQ0FBQztNQUV6QyxLQUFLTixjQUFjO1FBQ2pCLE9BQU9aLGFBQWEsQ0FBQ2lCLEtBQUssRUFBRUMsTUFBTSxDQUFDO01BRXJDLEtBQUtYLFVBQVU7UUFDYixPQUFPO1VBQUUsR0FBR1ksWUFBWTtVQUFFWSxTQUFTLEVBQUViLE1BQU0sQ0FBQ2M7UUFBSyxDQUFDO01BRXBEO1FBQ0U7UUFDQTtRQUNBLE9BQU9mLEtBQUs7SUFDaEI7RUFDRixDQUFDO0FBQ0g7QUFFQSxPQUFPLE1BQU1FLFlBQTRCLEdBQUc7RUFDMUNFLFFBQVEsRUFBRSxDQUFDLENBQUM7RUFDWk8sU0FBUyxFQUFFLENBQUMsQ0FBQztFQUNiSyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0VBQ1hILElBQUksRUFBRSxDQUFDLENBQUM7RUFDUkgsVUFBVSxFQUFFLENBQUMsQ0FBQztFQUNkTyxVQUFVLEVBQUUsRUFBRTtFQUNkSCxTQUFTLEVBQUU7QUFDYixDQUFDIiwiaWdub3JlTGlzdCI6W119

@@ -18,6 +18,6 @@ import type { State, ExpireAllAction } from '../../types.js';

};
indexes: import("packages/normalizr/lib/interface.js").NormalizedIndex;
endpoints: {
readonly [key: string]: unknown | import("../../types.js").PK[] | import("../../types.js").PK | undefined;
};
indexes: import("packages/normalizr/lib/interface.js").NormalizedIndex;
entityMeta: {

@@ -24,0 +24,0 @@ readonly [entityKey: string]: {

@@ -7,9 +7,6 @@ import Controller from '../../controller/Controller.js';

};
indexes: import("@data-client/normalizr").NormalizedIndex;
endpoints: {
readonly [key: string]: unknown;
};
entityMeta: import("packages/normalizr/lib/types.js").EntitiesToMeta<{
[x: string]: any;
}>;
indexes: import("@data-client/normalizr").NormalizedIndex;
meta: {

@@ -25,2 +22,5 @@ readonly [key: string]: {

};
entityMeta: import("packages/normalizr/lib/types.js").EntitiesToMeta<{
[x: string]: any;
}>;
optimistic: (import("../../actions.js").SetResponseAction | import("../../actions.js").OptimisticAction<import("@data-client/normalizr").EndpointInterface<import("@data-client/normalizr").FetchFunction, import("@data-client/normalizr").Schema | undefined, boolean | undefined> & {

@@ -27,0 +27,0 @@ update?: import("../../index.js").EndpointUpdateFunction<import("@data-client/normalizr").EndpointInterface>;

@@ -19,6 +19,6 @@ import { normalize } from '@data-client/normalizr';

entities,
endpoints: state.endpoints,
indexes,
endpoints: state.endpoints,
meta: state.meta,
entityMeta,
meta: state.meta,
optimistic: state.optimistic,

@@ -37,2 +37,2 @@ lastReset: state.lastReset

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub3JtYWxpemUiLCJzZXRSZWR1Y2VyIiwic3RhdGUiLCJhY3Rpb24iLCJjb250cm9sbGVyIiwidmFsdWUiLCJwcmV2aW91c1ZhbHVlIiwiZ2V0Iiwic2NoZW1hIiwiYXJncyIsInVuZGVmaW5lZCIsImVudGl0aWVzIiwiaW5kZXhlcyIsImVudGl0eU1ldGEiLCJtZXRhIiwiZW5kcG9pbnRzIiwib3B0aW1pc3RpYyIsImxhc3RSZXNldCIsImVycm9yIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiY29uc29sZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdGF0ZS9yZWR1Y2VyL3NldFJlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCBDb250cm9sbGVyIGZyb20gJy4uLy4uL2NvbnRyb2xsZXIvQ29udHJvbGxlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFN0YXRlLCBTZXRBY3Rpb24gfSBmcm9tICcuLi8uLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRSZWR1Y2VyKFxuICBzdGF0ZTogU3RhdGU8dW5rbm93bj4sXG4gIGFjdGlvbjogU2V0QWN0aW9uLFxuICBjb250cm9sbGVyOiBDb250cm9sbGVyLFxuKSB7XG4gIGxldCB2YWx1ZTogYW55O1xuICBpZiAodHlwZW9mIGFjdGlvbi52YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSBjb250cm9sbGVyLmdldChhY3Rpb24uc2NoZW1hLCAuLi5hY3Rpb24uYXJncywgc3RhdGUpO1xuICAgIGlmIChwcmV2aW91c1ZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiBzdGF0ZTtcbiAgICB2YWx1ZSA9IGFjdGlvbi52YWx1ZShwcmV2aW91c1ZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB2YWx1ZSA9IGFjdGlvbi52YWx1ZTtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IHsgZW50aXRpZXMsIGluZGV4ZXMsIGVudGl0eU1ldGEgfSA9IG5vcm1hbGl6ZShcbiAgICAgIGFjdGlvbi5zY2hlbWEsXG4gICAgICB2YWx1ZSxcbiAgICAgIGFjdGlvbi5hcmdzLFxuICAgICAgc3RhdGUsXG4gICAgICBhY3Rpb24ubWV0YSxcbiAgICApO1xuICAgIHJldHVybiB7XG4gICAgICBlbnRpdGllcyxcbiAgICAgIGluZGV4ZXMsXG4gICAgICBlbmRwb2ludHM6IHN0YXRlLmVuZHBvaW50cyxcbiAgICAgIGVudGl0eU1ldGEsXG4gICAgICBtZXRhOiBzdGF0ZS5tZXRhLFxuICAgICAgb3B0aW1pc3RpYzogc3RhdGUub3B0aW1pc3RpYyxcbiAgICAgIGxhc3RSZXNldDogc3RhdGUubGFzdFJlc2V0LFxuICAgIH07XG4gICAgLy8gcmVkdWNlciBtdXN0IHVwZGF0ZSB0aGUgc3RhdGUsIHNvIGluIGNhc2Ugb2YgcHJvY2Vzc2luZyBlcnJvcnMgd2Ugc2ltcGx5IGNvbXB1dGUgdGhlIGVuZHBvaW50cyBpbmxpbmVcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIC8vIHRoaXMgaXMgbm90IGFsd2F5cyBidWJibGVkIHVwLCBzbyBsZXQncyBkb3VibGUgc3VyZSB0aGlzIGRvZXNuJ3QgZmFpbCBzaWxlbnRseVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsU0FBUyxRQUFRLHdCQUF3QjtBQUtsRCxPQUFPLFNBQVNDLFVBQVVBLENBQ3hCQyxLQUFxQixFQUNyQkMsTUFBaUIsRUFDakJDLFVBQXNCLEVBQ3RCO0VBQ0EsSUFBSUMsS0FBVTtFQUNkLElBQUksT0FBT0YsTUFBTSxDQUFDRSxLQUFLLEtBQUssVUFBVSxFQUFFO0lBQ3RDLE1BQU1DLGFBQWEsR0FBR0YsVUFBVSxDQUFDRyxHQUFHLENBQUNKLE1BQU0sQ0FBQ0ssTUFBTSxFQUFFLEdBQUdMLE1BQU0sQ0FBQ00sSUFBSSxFQUFFUCxLQUFLLENBQUM7SUFDMUUsSUFBSUksYUFBYSxLQUFLSSxTQUFTLEVBQUUsT0FBT1IsS0FBSztJQUM3Q0csS0FBSyxHQUFHRixNQUFNLENBQUNFLEtBQUssQ0FBQ0MsYUFBYSxDQUFDO0VBQ3JDLENBQUMsTUFBTTtJQUNMRCxLQUFLLEdBQUdGLE1BQU0sQ0FBQ0UsS0FBSztFQUN0QjtFQUNBLElBQUk7SUFDRixNQUFNO01BQUVNLFFBQVE7TUFBRUMsT0FBTztNQUFFQztJQUFXLENBQUMsR0FBR2IsU0FBUyxDQUNqREcsTUFBTSxDQUFDSyxNQUFNLEVBQ2JILEtBQUssRUFDTEYsTUFBTSxDQUFDTSxJQUFJLEVBQ1hQLEtBQUssRUFDTEMsTUFBTSxDQUFDVyxJQUNULENBQUM7SUFDRCxPQUFPO01BQ0xILFFBQVE7TUFDUkMsT0FBTztNQUNQRyxTQUFTLEVBQUViLEtBQUssQ0FBQ2EsU0FBUztNQUMxQkYsVUFBVTtNQUNWQyxJQUFJLEVBQUVaLEtBQUssQ0FBQ1ksSUFBSTtNQUNoQkUsVUFBVSxFQUFFZCxLQUFLLENBQUNjLFVBQVU7TUFDNUJDLFNBQVMsRUFBRWYsS0FBSyxDQUFDZTtJQUNuQixDQUFDO0lBQ0Q7RUFDRixDQUFDLENBQUMsT0FBT0MsS0FBVSxFQUFFO0lBQ25CO0lBQ0E7SUFDQSxJQUFJQyxPQUFPLENBQUNDLEdBQUcsQ0FBQ0MsUUFBUSxLQUFLLFlBQVksRUFBRTtNQUN6Q0MsT0FBTyxDQUFDSixLQUFLLENBQUNBLEtBQUssQ0FBQztJQUN0QjtJQUNBLE9BQU9oQixLQUFLO0VBQ2Q7QUFDRiIsImlnbm9yZUxpc3QiOltdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub3JtYWxpemUiLCJzZXRSZWR1Y2VyIiwic3RhdGUiLCJhY3Rpb24iLCJjb250cm9sbGVyIiwidmFsdWUiLCJwcmV2aW91c1ZhbHVlIiwiZ2V0Iiwic2NoZW1hIiwiYXJncyIsInVuZGVmaW5lZCIsImVudGl0aWVzIiwiaW5kZXhlcyIsImVudGl0eU1ldGEiLCJtZXRhIiwiZW5kcG9pbnRzIiwib3B0aW1pc3RpYyIsImxhc3RSZXNldCIsImVycm9yIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiY29uc29sZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdGF0ZS9yZWR1Y2VyL3NldFJlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCBDb250cm9sbGVyIGZyb20gJy4uLy4uL2NvbnRyb2xsZXIvQ29udHJvbGxlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFN0YXRlLCBTZXRBY3Rpb24gfSBmcm9tICcuLi8uLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRSZWR1Y2VyKFxuICBzdGF0ZTogU3RhdGU8dW5rbm93bj4sXG4gIGFjdGlvbjogU2V0QWN0aW9uLFxuICBjb250cm9sbGVyOiBDb250cm9sbGVyLFxuKSB7XG4gIGxldCB2YWx1ZTogYW55O1xuICBpZiAodHlwZW9mIGFjdGlvbi52YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSBjb250cm9sbGVyLmdldChhY3Rpb24uc2NoZW1hLCAuLi5hY3Rpb24uYXJncywgc3RhdGUpO1xuICAgIGlmIChwcmV2aW91c1ZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiBzdGF0ZTtcbiAgICB2YWx1ZSA9IGFjdGlvbi52YWx1ZShwcmV2aW91c1ZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB2YWx1ZSA9IGFjdGlvbi52YWx1ZTtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IHsgZW50aXRpZXMsIGluZGV4ZXMsIGVudGl0eU1ldGEgfSA9IG5vcm1hbGl6ZShcbiAgICAgIGFjdGlvbi5zY2hlbWEsXG4gICAgICB2YWx1ZSxcbiAgICAgIGFjdGlvbi5hcmdzLFxuICAgICAgc3RhdGUsXG4gICAgICBhY3Rpb24ubWV0YSxcbiAgICApO1xuICAgIHJldHVybiB7XG4gICAgICBlbnRpdGllcyxcbiAgICAgIGVuZHBvaW50czogc3RhdGUuZW5kcG9pbnRzLFxuICAgICAgaW5kZXhlcyxcbiAgICAgIG1ldGE6IHN0YXRlLm1ldGEsXG4gICAgICBlbnRpdHlNZXRhLFxuICAgICAgb3B0aW1pc3RpYzogc3RhdGUub3B0aW1pc3RpYyxcbiAgICAgIGxhc3RSZXNldDogc3RhdGUubGFzdFJlc2V0LFxuICAgIH07XG4gICAgLy8gcmVkdWNlciBtdXN0IHVwZGF0ZSB0aGUgc3RhdGUsIHNvIGluIGNhc2Ugb2YgcHJvY2Vzc2luZyBlcnJvcnMgd2Ugc2ltcGx5IGNvbXB1dGUgdGhlIGVuZHBvaW50cyBpbmxpbmVcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIC8vIHRoaXMgaXMgbm90IGFsd2F5cyBidWJibGVkIHVwLCBzbyBsZXQncyBkb3VibGUgc3VyZSB0aGlzIGRvZXNuJ3QgZmFpbCBzaWxlbnRseVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsU0FBUyxRQUFRLHdCQUF3QjtBQUtsRCxPQUFPLFNBQVNDLFVBQVVBLENBQ3hCQyxLQUFxQixFQUNyQkMsTUFBaUIsRUFDakJDLFVBQXNCLEVBQ3RCO0VBQ0EsSUFBSUMsS0FBVTtFQUNkLElBQUksT0FBT0YsTUFBTSxDQUFDRSxLQUFLLEtBQUssVUFBVSxFQUFFO0lBQ3RDLE1BQU1DLGFBQWEsR0FBR0YsVUFBVSxDQUFDRyxHQUFHLENBQUNKLE1BQU0sQ0FBQ0ssTUFBTSxFQUFFLEdBQUdMLE1BQU0sQ0FBQ00sSUFBSSxFQUFFUCxLQUFLLENBQUM7SUFDMUUsSUFBSUksYUFBYSxLQUFLSSxTQUFTLEVBQUUsT0FBT1IsS0FBSztJQUM3Q0csS0FBSyxHQUFHRixNQUFNLENBQUNFLEtBQUssQ0FBQ0MsYUFBYSxDQUFDO0VBQ3JDLENBQUMsTUFBTTtJQUNMRCxLQUFLLEdBQUdGLE1BQU0sQ0FBQ0UsS0FBSztFQUN0QjtFQUNBLElBQUk7SUFDRixNQUFNO01BQUVNLFFBQVE7TUFBRUMsT0FBTztNQUFFQztJQUFXLENBQUMsR0FBR2IsU0FBUyxDQUNqREcsTUFBTSxDQUFDSyxNQUFNLEVBQ2JILEtBQUssRUFDTEYsTUFBTSxDQUFDTSxJQUFJLEVBQ1hQLEtBQUssRUFDTEMsTUFBTSxDQUFDVyxJQUNULENBQUM7SUFDRCxPQUFPO01BQ0xILFFBQVE7TUFDUkksU0FBUyxFQUFFYixLQUFLLENBQUNhLFNBQVM7TUFDMUJILE9BQU87TUFDUEUsSUFBSSxFQUFFWixLQUFLLENBQUNZLElBQUk7TUFDaEJELFVBQVU7TUFDVkcsVUFBVSxFQUFFZCxLQUFLLENBQUNjLFVBQVU7TUFDNUJDLFNBQVMsRUFBRWYsS0FBSyxDQUFDZTtJQUNuQixDQUFDO0lBQ0Q7RUFDRixDQUFDLENBQUMsT0FBT0MsS0FBVSxFQUFFO0lBQ25CO0lBQ0E7SUFDQSxJQUFJQyxPQUFPLENBQUNDLEdBQUcsQ0FBQ0MsUUFBUSxLQUFLLFlBQVksRUFBRTtNQUN6Q0MsT0FBTyxDQUFDSixLQUFLLENBQUNBLEtBQUssQ0FBQztJQUN0QjtJQUNBLE9BQU9oQixLQUFLO0VBQ2Q7QUFDRiIsImlnbm9yZUxpc3QiOltdfQ==

@@ -7,7 +7,4 @@ import type Controller from '../../controller/Controller.js';

};
endpoints: Record<string, unknown>;
indexes: import("@data-client/normalizr").NormalizedIndex;
endpoints: Record<string, unknown>;
entityMeta: import("packages/normalizr/lib/types.js").EntitiesToMeta<{
[x: string]: any;
}>;
meta: {

@@ -27,2 +24,5 @@ [x: string]: {

};
entityMeta: import("packages/normalizr/lib/types.js").EntitiesToMeta<{
[x: string]: any;
}>;
optimistic: (SetResponseAction | OptimisticAction<import("@data-client/normalizr").EndpointInterface<import("@data-client/normalizr").FetchFunction, import("@data-client/normalizr").Schema | undefined, boolean | undefined> & {

@@ -29,0 +29,0 @@ update?: import("../../index.js").EndpointUpdateFunction<import("@data-client/normalizr").EndpointInterface>;

@@ -54,5 +54,4 @@ import { normalize } from '@data-client/normalizr';

entities,
endpoints,
indexes,
endpoints,
entityMeta,
meta: {

@@ -66,2 +65,3 @@ ...state.meta,

},
entityMeta,
optimistic: filterOptimistic(state, action),

@@ -114,2 +114,2 @@ lastReset: state.lastReset

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub3JtYWxpemUiLCJPUFRJTUlTVElDX1RZUEUiLCJBYm9ydE9wdGltaXN0aWMiLCJzZXRSZXNwb25zZVJlZHVjZXIiLCJzdGF0ZSIsImFjdGlvbiIsImNvbnRyb2xsZXIiLCJlcnJvciIsInJlZHVjZUVycm9yIiwicmVzcG9uc2UiLCJfc3RhdGUkbWV0YSRhY3Rpb24ka2UiLCJ0eXBlIiwiZW5kcG9pbnQiLCJnZXRPcHRpbWlzdGljUmVzcG9uc2UiLCJjYWxsIiwic25hcHNob3QiLCJtZXRhIiwiZmV0Y2hlZEF0IiwiYXJncyIsImUiLCJjb25zdHJ1Y3RvciIsInJlc3VsdCIsImVudGl0aWVzIiwiaW5kZXhlcyIsImVudGl0eU1ldGEiLCJzY2hlbWEiLCJlbmRwb2ludHMiLCJrZXkiLCJ1cGRhdGUiLCJ1cGRhdGVycyIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwiY29uc29sZSIsImRhdGUiLCJleHBpcmVzQXQiLCJwcmV2RXhwaXJlc0F0Iiwib3B0aW1pc3RpYyIsImZpbHRlck9wdGltaXN0aWMiLCJsYXN0UmVzZXQiLCJtZXNzYWdlIiwiSlNPTiIsInN0cmluZ2lmeSIsInVuZGVmaW5lZCIsInN0YXR1cyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm5hbWUiLCJlcnJvclBvbGljeSIsInJlc29sdmluZ0FjdGlvbiIsImZpbHRlciIsIm9wdGltaXN0aWNBY3Rpb24iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RhdGUvcmVkdWNlci9zZXRSZXNwb25zZVJlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCB7IE9QVElNSVNUSUNfVFlQRSB9IGZyb20gJy4uLy4uL2FjdGlvblR5cGVzLmpzJztcbmltcG9ydCBBYm9ydE9wdGltaXN0aWMgZnJvbSAnLi4vLi4vY29udHJvbGxlci9BYm9ydE9wdGltaXN0aWMuanMnO1xuaW1wb3J0IHR5cGUgQ29udHJvbGxlciBmcm9tICcuLi8uLi9jb250cm9sbGVyL0NvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHR5cGUge1xuICBTdGF0ZSxcbiAgU2V0UmVzcG9uc2VBY3Rpb24sXG4gIE9wdGltaXN0aWNBY3Rpb24sXG59IGZyb20gJy4uLy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHNldFJlc3BvbnNlUmVkdWNlcihcbiAgc3RhdGU6IFN0YXRlPHVua25vd24+LFxuICBhY3Rpb246IE9wdGltaXN0aWNBY3Rpb24gfCBTZXRSZXNwb25zZUFjdGlvbixcbiAgY29udHJvbGxlcjogQ29udHJvbGxlcixcbikge1xuICBpZiAoYWN0aW9uLmVycm9yKSB7XG4gICAgcmV0dXJuIHJlZHVjZUVycm9yKHN0YXRlLCBhY3Rpb24sIGFjdGlvbi5yZXNwb25zZSk7XG4gIH1cbiAgdHJ5IHtcbiAgICBsZXQgcmVzcG9uc2U6IGFueTtcbiAgICAvLyBmb3IgdHJ1ZSBzZXQncyByZXNwb25zZSBpcyBjb250YWluZWQgaW4gYWN0aW9uXG4gICAgaWYgKGFjdGlvbi50eXBlID09PSBPUFRJTUlTVElDX1RZUEUpIHtcbiAgICAgIC8vIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoIWFjdGlvbi5lbmRwb2ludC5nZXRPcHRpbWlzdGljUmVzcG9uc2UpIHJldHVybiBzdGF0ZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIGNvbXB1dGUgb3B0aW1pc3RpYyByZXNwb25zZSBiYXNlZCBvbiBjdXJyZW50IHN0YXRlXG4gICAgICAgIHJlc3BvbnNlID0gYWN0aW9uLmVuZHBvaW50LmdldE9wdGltaXN0aWNSZXNwb25zZS5jYWxsKFxuICAgICAgICAgIGFjdGlvbi5lbmRwb2ludCxcbiAgICAgICAgICBjb250cm9sbGVyLnNuYXBzaG90KHN0YXRlLCBhY3Rpb24ubWV0YS5mZXRjaGVkQXQpLFxuICAgICAgICAgIC4uLmFjdGlvbi5hcmdzLFxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIC8vIEFib3J0T3B0aW1pc3RpYyBtZWFucyAnZG8gbm90aGluZycsIG90aGVyd2lzZSB3ZSBjb3VudCB0aGUgZXhjZXB0aW9uIGFzIGVuZHBvaW50IGZhaWx1cmVcbiAgICAgICAgaWYgKGUuY29uc3RydWN0b3IgPT09IEFib3J0T3B0aW1pc3RpYykge1xuICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXNwb25zZSA9IGFjdGlvbi5yZXNwb25zZTtcbiAgICB9XG4gICAgY29uc3QgeyByZXN1bHQsIGVudGl0aWVzLCBpbmRleGVzLCBlbnRpdHlNZXRhIH0gPSBub3JtYWxpemUoXG4gICAgICBhY3Rpb24uZW5kcG9pbnQuc2NoZW1hLFxuICAgICAgcmVzcG9uc2UsXG4gICAgICBhY3Rpb24uYXJncyxcbiAgICAgIHN0YXRlLFxuICAgICAgYWN0aW9uLm1ldGEsXG4gICAgKTtcbiAgICBjb25zdCBlbmRwb2ludHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgICAgLi4uc3RhdGUuZW5kcG9pbnRzLFxuICAgICAgW2FjdGlvbi5rZXldOiByZXN1bHQsXG4gICAgfTtcbiAgICB0cnkge1xuICAgICAgaWYgKGFjdGlvbi5lbmRwb2ludC51cGRhdGUpIHtcbiAgICAgICAgY29uc3QgdXBkYXRlcnMgPSBhY3Rpb24uZW5kcG9pbnQudXBkYXRlKHJlc3VsdCwgLi4uYWN0aW9uLmFyZ3MpO1xuICAgICAgICBPYmplY3Qua2V5cyh1cGRhdGVycykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIGVuZHBvaW50c1trZXldID0gdXBkYXRlcnNba2V5XShlbmRwb2ludHNba2V5XSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gbm8gcmVhc29uIHRvIGNvbXBsZXRlbHkgZmFpbCBiZWNhdXNlIG9mIHVzZXItY29kZSBlcnJvclxuICAgICAgLy8gaW50ZWdyaXR5IG9mIHRoaXMgc3RhdGUgdXBkYXRlIGlzIHN0aWxsIGd1YXJhbnRlZWRcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFRoZSBmb2xsb3dpbmcgZXJyb3Igb2NjdXJlZCBkdXJpbmcgRW5kcG9pbnQudXBkYXRlKCkgZm9yICR7YWN0aW9uLmtleX1gLFxuICAgICAgKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgZW50aXRpZXMsXG4gICAgICBpbmRleGVzLFxuICAgICAgZW5kcG9pbnRzLFxuICAgICAgZW50aXR5TWV0YSxcbiAgICAgIG1ldGE6IHtcbiAgICAgICAgLi4uc3RhdGUubWV0YSxcbiAgICAgICAgW2FjdGlvbi5rZXldOiB7XG4gICAgICAgICAgZGF0ZTogYWN0aW9uLm1ldGEuZGF0ZSxcbiAgICAgICAgICBleHBpcmVzQXQ6IGFjdGlvbi5tZXRhLmV4cGlyZXNBdCxcbiAgICAgICAgICBwcmV2RXhwaXJlc0F0OiBzdGF0ZS5tZXRhW2FjdGlvbi5rZXldPy5leHBpcmVzQXQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgb3B0aW1pc3RpYzogZmlsdGVyT3B0aW1pc3RpYyhzdGF0ZSwgYWN0aW9uKSxcbiAgICAgIGxhc3RSZXNldDogc3RhdGUubGFzdFJlc2V0LFxuICAgIH07XG4gICAgLy8gcmVkdWNlciBtdXN0IHVwZGF0ZSB0aGUgc3RhdGUsIHNvIGluIGNhc2Ugb2YgcHJvY2Vzc2luZyBlcnJvcnMgd2Ugc2ltcGx5IGNvbXB1dGUgdGhlIGVuZHBvaW50cyBpbmxpbmVcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIGlmICh0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnKSB7XG4gICAgICBlcnJvci5tZXNzYWdlID0gYEVycm9yIHByb2Nlc3NpbmcgJHtcbiAgICAgICAgYWN0aW9uLmtleVxuICAgICAgfVxcblxcbkZ1bGwgU2NoZW1hOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICBhY3Rpb24uZW5kcG9pbnQuc2NoZW1hLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIDIsXG4gICAgICApfVxcblxcbkVycm9yOlxcbiR7ZXJyb3IubWVzc2FnZX1gO1xuICAgICAgaWYgKCdyZXNwb25zZScgaW4gYWN0aW9uKSBlcnJvci5yZXNwb25zZSA9IGFjdGlvbi5yZXNwb25zZTtcbiAgICAgIGVycm9yLnN0YXR1cyA9IDQwMDtcbiAgICB9XG5cbiAgICAvLyB0aGlzIGlzIG5vdCBhbHdheXMgYnViYmxlZCB1cCwgc28gbGV0J3MgZG91YmxlIHN1cmUgdGhpcyBkb2Vzbid0IGZhaWwgc2lsZW50bHlcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlZHVjZUVycm9yKHN0YXRlLCBhY3Rpb24sIGVycm9yKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZWR1Y2VFcnJvcihcbiAgc3RhdGU6IFN0YXRlPHVua25vd24+LFxuICBhY3Rpb246IFNldFJlc3BvbnNlQWN0aW9uIHwgT3B0aW1pc3RpY0FjdGlvbixcbiAgZXJyb3I6IGFueSxcbik6IFN0YXRlPHVua25vd24+IHtcbiAgaWYgKGVycm9yLm5hbWUgPT09ICdBYm9ydEVycm9yJykge1xuICAgIC8vIEluIGNhc2Ugd2UgYWJvcnQgc2ltcGx5IHVuZG8gdGhlIG9wdGltaXN0aWMgdXBkYXRlIGFuZCBhY3QgbGlrZSBubyBmZXRjaCBldmVuIG9jY3VyZWRcbiAgICAvLyBXZSBzdGlsbCB3YW50IHRob3NlIHdhdGNoaW5nIHByb21pc2VzIGZyb20gZmV0Y2ggZGlyZWN0bHkgdG8gb2JzZXJ2ZWQgdGhlIGFib3J0LCBidXQgd2UgZG9uJ3Qgd2FudCB0b1xuICAgIC8vIFRyaWdnZXIgZXJyb3JzIGluIHRoaXMgY2FzZS4gVGhpcyBtZWFucyB0aGVvcmV0aWNhbGx5IGltcHJvcGVybHkgYnVpbHQgYWJvcnRlcyB1c2VSZXNvdXJjZSgpIGNvdWxkIHN1c3BlbmQgZm9yZXZlci5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBvcHRpbWlzdGljOiBmaWx0ZXJPcHRpbWlzdGljKHN0YXRlLCBhY3Rpb24pLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtZXRhOiB7XG4gICAgICAuLi5zdGF0ZS5tZXRhLFxuICAgICAgW2FjdGlvbi5rZXldOiB7XG4gICAgICAgIGRhdGU6IGFjdGlvbi5tZXRhLmRhdGUsXG4gICAgICAgIGVycm9yLFxuICAgICAgICBleHBpcmVzQXQ6IGFjdGlvbi5tZXRhLmV4cGlyZXNBdCxcbiAgICAgICAgZXJyb3JQb2xpY3k6IGFjdGlvbi5lbmRwb2ludC5lcnJvclBvbGljeT8uKGVycm9yKSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBvcHRpbWlzdGljOiBmaWx0ZXJPcHRpbWlzdGljKHN0YXRlLCBhY3Rpb24pLFxuICB9O1xufVxuLyoqIEZpbHRlciBhbGwgcmVxdWVzdHMgd2l0aCBzYW1lIHNlcmlhbGl6YXRpb24gdGhhdCBkaWQgbm90IHN0YXJ0IGFmdGVyIHRoZSByZXNvbHZpbmcgcmVxdWVzdCAqL1xuZnVuY3Rpb24gZmlsdGVyT3B0aW1pc3RpYyhcbiAgc3RhdGU6IFN0YXRlPHVua25vd24+LFxuICByZXNvbHZpbmdBY3Rpb246IFNldFJlc3BvbnNlQWN0aW9uIHwgT3B0aW1pc3RpY0FjdGlvbixcbikge1xuICByZXR1cm4gc3RhdGUub3B0aW1pc3RpYy5maWx0ZXIoXG4gICAgb3B0aW1pc3RpY0FjdGlvbiA9PlxuICAgICAgb3B0aW1pc3RpY0FjdGlvbi5rZXkgIT09IHJlc29sdmluZ0FjdGlvbi5rZXkgfHxcbiAgICAgIChvcHRpbWlzdGljQWN0aW9uLnR5cGUgPT09IE9QVElNSVNUSUNfVFlQRSA/XG4gICAgICAgIG9wdGltaXN0aWNBY3Rpb24ubWV0YS5mZXRjaGVkQXQgIT09IHJlc29sdmluZ0FjdGlvbi5tZXRhLmZldGNoZWRBdFxuICAgICAgOiBvcHRpbWlzdGljQWN0aW9uLm1ldGEuZGF0ZSA+IHJlc29sdmluZ0FjdGlvbi5tZXRhLmRhdGUpLFxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxTQUFTLFFBQVEsd0JBQXdCO0FBRWxELFNBQVNDLGVBQWUsUUFBUSxzQkFBc0I7QUFDdEQsT0FBT0MsZUFBZSxNQUFNLHFDQUFxQztBQVFqRSxPQUFPLFNBQVNDLGtCQUFrQkEsQ0FDaENDLEtBQXFCLEVBQ3JCQyxNQUE0QyxFQUM1Q0MsVUFBc0IsRUFDdEI7RUFDQSxJQUFJRCxNQUFNLENBQUNFLEtBQUssRUFBRTtJQUNoQixPQUFPQyxXQUFXLENBQUNKLEtBQUssRUFBRUMsTUFBTSxFQUFFQSxNQUFNLENBQUNJLFFBQVEsQ0FBQztFQUNwRDtFQUNBLElBQUk7SUFBQSxJQUFBQyxxQkFBQTtJQUNGLElBQUlELFFBQWE7SUFDakI7SUFDQSxJQUFJSixNQUFNLENBQUNNLElBQUksS0FBS1YsZUFBZSxFQUFFO01BQ25DO01BQ0E7TUFDQSxJQUFJLENBQUNJLE1BQU0sQ0FBQ08sUUFBUSxDQUFDQyxxQkFBcUIsRUFBRSxPQUFPVCxLQUFLO01BQ3hELElBQUk7UUFDRjtRQUNBSyxRQUFRLEdBQUdKLE1BQU0sQ0FBQ08sUUFBUSxDQUFDQyxxQkFBcUIsQ0FBQ0MsSUFBSSxDQUNuRFQsTUFBTSxDQUFDTyxRQUFRLEVBQ2ZOLFVBQVUsQ0FBQ1MsUUFBUSxDQUFDWCxLQUFLLEVBQUVDLE1BQU0sQ0FBQ1csSUFBSSxDQUFDQyxTQUFTLENBQUMsRUFDakQsR0FBR1osTUFBTSxDQUFDYSxJQUNaLENBQUM7TUFDSCxDQUFDLENBQUMsT0FBT0MsQ0FBTSxFQUFFO1FBQ2Y7UUFDQSxJQUFJQSxDQUFDLENBQUNDLFdBQVcsS0FBS2xCLGVBQWUsRUFBRTtVQUNyQyxPQUFPRSxLQUFLO1FBQ2Q7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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub3JtYWxpemUiLCJPUFRJTUlTVElDX1RZUEUiLCJBYm9ydE9wdGltaXN0aWMiLCJzZXRSZXNwb25zZVJlZHVjZXIiLCJzdGF0ZSIsImFjdGlvbiIsImNvbnRyb2xsZXIiLCJlcnJvciIsInJlZHVjZUVycm9yIiwicmVzcG9uc2UiLCJfc3RhdGUkbWV0YSRhY3Rpb24ka2UiLCJ0eXBlIiwiZW5kcG9pbnQiLCJnZXRPcHRpbWlzdGljUmVzcG9uc2UiLCJjYWxsIiwic25hcHNob3QiLCJtZXRhIiwiZmV0Y2hlZEF0IiwiYXJncyIsImUiLCJjb25zdHJ1Y3RvciIsInJlc3VsdCIsImVudGl0aWVzIiwiaW5kZXhlcyIsImVudGl0eU1ldGEiLCJzY2hlbWEiLCJlbmRwb2ludHMiLCJrZXkiLCJ1cGRhdGUiLCJ1cGRhdGVycyIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwiY29uc29sZSIsImRhdGUiLCJleHBpcmVzQXQiLCJwcmV2RXhwaXJlc0F0Iiwib3B0aW1pc3RpYyIsImZpbHRlck9wdGltaXN0aWMiLCJsYXN0UmVzZXQiLCJtZXNzYWdlIiwiSlNPTiIsInN0cmluZ2lmeSIsInVuZGVmaW5lZCIsInN0YXR1cyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm5hbWUiLCJlcnJvclBvbGljeSIsInJlc29sdmluZ0FjdGlvbiIsImZpbHRlciIsIm9wdGltaXN0aWNBY3Rpb24iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RhdGUvcmVkdWNlci9zZXRSZXNwb25zZVJlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCB7IE9QVElNSVNUSUNfVFlQRSB9IGZyb20gJy4uLy4uL2FjdGlvblR5cGVzLmpzJztcbmltcG9ydCBBYm9ydE9wdGltaXN0aWMgZnJvbSAnLi4vLi4vY29udHJvbGxlci9BYm9ydE9wdGltaXN0aWMuanMnO1xuaW1wb3J0IHR5cGUgQ29udHJvbGxlciBmcm9tICcuLi8uLi9jb250cm9sbGVyL0NvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHR5cGUge1xuICBTdGF0ZSxcbiAgU2V0UmVzcG9uc2VBY3Rpb24sXG4gIE9wdGltaXN0aWNBY3Rpb24sXG59IGZyb20gJy4uLy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHNldFJlc3BvbnNlUmVkdWNlcihcbiAgc3RhdGU6IFN0YXRlPHVua25vd24+LFxuICBhY3Rpb246IE9wdGltaXN0aWNBY3Rpb24gfCBTZXRSZXNwb25zZUFjdGlvbixcbiAgY29udHJvbGxlcjogQ29udHJvbGxlcixcbikge1xuICBpZiAoYWN0aW9uLmVycm9yKSB7XG4gICAgcmV0dXJuIHJlZHVjZUVycm9yKHN0YXRlLCBhY3Rpb24sIGFjdGlvbi5yZXNwb25zZSk7XG4gIH1cbiAgdHJ5IHtcbiAgICBsZXQgcmVzcG9uc2U6IGFueTtcbiAgICAvLyBmb3IgdHJ1ZSBzZXQncyByZXNwb25zZSBpcyBjb250YWluZWQgaW4gYWN0aW9uXG4gICAgaWYgKGFjdGlvbi50eXBlID09PSBPUFRJTUlTVElDX1RZUEUpIHtcbiAgICAgIC8vIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoIWFjdGlvbi5lbmRwb2ludC5nZXRPcHRpbWlzdGljUmVzcG9uc2UpIHJldHVybiBzdGF0ZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIGNvbXB1dGUgb3B0aW1pc3RpYyByZXNwb25zZSBiYXNlZCBvbiBjdXJyZW50IHN0YXRlXG4gICAgICAgIHJlc3BvbnNlID0gYWN0aW9uLmVuZHBvaW50LmdldE9wdGltaXN0aWNSZXNwb25zZS5jYWxsKFxuICAgICAgICAgIGFjdGlvbi5lbmRwb2ludCxcbiAgICAgICAgICBjb250cm9sbGVyLnNuYXBzaG90KHN0YXRlLCBhY3Rpb24ubWV0YS5mZXRjaGVkQXQpLFxuICAgICAgICAgIC4uLmFjdGlvbi5hcmdzLFxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIC8vIEFib3J0T3B0aW1pc3RpYyBtZWFucyAnZG8gbm90aGluZycsIG90aGVyd2lzZSB3ZSBjb3VudCB0aGUgZXhjZXB0aW9uIGFzIGVuZHBvaW50IGZhaWx1cmVcbiAgICAgICAgaWYgKGUuY29uc3RydWN0b3IgPT09IEFib3J0T3B0aW1pc3RpYykge1xuICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXNwb25zZSA9IGFjdGlvbi5yZXNwb25zZTtcbiAgICB9XG4gICAgY29uc3QgeyByZXN1bHQsIGVudGl0aWVzLCBpbmRleGVzLCBlbnRpdHlNZXRhIH0gPSBub3JtYWxpemUoXG4gICAgICBhY3Rpb24uZW5kcG9pbnQuc2NoZW1hLFxuICAgICAgcmVzcG9uc2UsXG4gICAgICBhY3Rpb24uYXJncyxcbiAgICAgIHN0YXRlLFxuICAgICAgYWN0aW9uLm1ldGEsXG4gICAgKTtcbiAgICBjb25zdCBlbmRwb2ludHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgICAgLi4uc3RhdGUuZW5kcG9pbnRzLFxuICAgICAgW2FjdGlvbi5rZXldOiByZXN1bHQsXG4gICAgfTtcbiAgICB0cnkge1xuICAgICAgaWYgKGFjdGlvbi5lbmRwb2ludC51cGRhdGUpIHtcbiAgICAgICAgY29uc3QgdXBkYXRlcnMgPSBhY3Rpb24uZW5kcG9pbnQudXBkYXRlKHJlc3VsdCwgLi4uYWN0aW9uLmFyZ3MpO1xuICAgICAgICBPYmplY3Qua2V5cyh1cGRhdGVycykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIGVuZHBvaW50c1trZXldID0gdXBkYXRlcnNba2V5XShlbmRwb2ludHNba2V5XSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gbm8gcmVhc29uIHRvIGNvbXBsZXRlbHkgZmFpbCBiZWNhdXNlIG9mIHVzZXItY29kZSBlcnJvclxuICAgICAgLy8gaW50ZWdyaXR5IG9mIHRoaXMgc3RhdGUgdXBkYXRlIGlzIHN0aWxsIGd1YXJhbnRlZWRcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFRoZSBmb2xsb3dpbmcgZXJyb3Igb2NjdXJlZCBkdXJpbmcgRW5kcG9pbnQudXBkYXRlKCkgZm9yICR7YWN0aW9uLmtleX1gLFxuICAgICAgKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgZW50aXRpZXMsXG4gICAgICBlbmRwb2ludHMsXG4gICAgICBpbmRleGVzLFxuICAgICAgbWV0YToge1xuICAgICAgICAuLi5zdGF0ZS5tZXRhLFxuICAgICAgICBbYWN0aW9uLmtleV06IHtcbiAgICAgICAgICBkYXRlOiBhY3Rpb24ubWV0YS5kYXRlLFxuICAgICAgICAgIGV4cGlyZXNBdDogYWN0aW9uLm1ldGEuZXhwaXJlc0F0LFxuICAgICAgICAgIHByZXZFeHBpcmVzQXQ6IHN0YXRlLm1ldGFbYWN0aW9uLmtleV0/LmV4cGlyZXNBdCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBlbnRpdHlNZXRhLFxuICAgICAgb3B0aW1pc3RpYzogZmlsdGVyT3B0aW1pc3RpYyhzdGF0ZSwgYWN0aW9uKSxcbiAgICAgIGxhc3RSZXNldDogc3RhdGUubGFzdFJlc2V0LFxuICAgIH07XG4gICAgLy8gcmVkdWNlciBtdXN0IHVwZGF0ZSB0aGUgc3RhdGUsIHNvIGluIGNhc2Ugb2YgcHJvY2Vzc2luZyBlcnJvcnMgd2Ugc2ltcGx5IGNvbXB1dGUgdGhlIGVuZHBvaW50cyBpbmxpbmVcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIGlmICh0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnKSB7XG4gICAgICBlcnJvci5tZXNzYWdlID0gYEVycm9yIHByb2Nlc3NpbmcgJHtcbiAgICAgICAgYWN0aW9uLmtleVxuICAgICAgfVxcblxcbkZ1bGwgU2NoZW1hOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICBhY3Rpb24uZW5kcG9pbnQuc2NoZW1hLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIDIsXG4gICAgICApfVxcblxcbkVycm9yOlxcbiR7ZXJyb3IubWVzc2FnZX1gO1xuICAgICAgaWYgKCdyZXNwb25zZScgaW4gYWN0aW9uKSBlcnJvci5yZXNwb25zZSA9IGFjdGlvbi5yZXNwb25zZTtcbiAgICAgIGVycm9yLnN0YXR1cyA9IDQwMDtcbiAgICB9XG5cbiAgICAvLyB0aGlzIGlzIG5vdCBhbHdheXMgYnViYmxlZCB1cCwgc28gbGV0J3MgZG91YmxlIHN1cmUgdGhpcyBkb2Vzbid0IGZhaWwgc2lsZW50bHlcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlZHVjZUVycm9yKHN0YXRlLCBhY3Rpb24sIGVycm9yKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZWR1Y2VFcnJvcihcbiAgc3RhdGU6IFN0YXRlPHVua25vd24+LFxuICBhY3Rpb246IFNldFJlc3BvbnNlQWN0aW9uIHwgT3B0aW1pc3RpY0FjdGlvbixcbiAgZXJyb3I6IGFueSxcbik6IFN0YXRlPHVua25vd24+IHtcbiAgaWYgKGVycm9yLm5hbWUgPT09ICdBYm9ydEVycm9yJykge1xuICAgIC8vIEluIGNhc2Ugd2UgYWJvcnQgc2ltcGx5IHVuZG8gdGhlIG9wdGltaXN0aWMgdXBkYXRlIGFuZCBhY3QgbGlrZSBubyBmZXRjaCBldmVuIG9jY3VyZWRcbiAgICAvLyBXZSBzdGlsbCB3YW50IHRob3NlIHdhdGNoaW5nIHByb21pc2VzIGZyb20gZmV0Y2ggZGlyZWN0bHkgdG8gb2JzZXJ2ZWQgdGhlIGFib3J0LCBidXQgd2UgZG9uJ3Qgd2FudCB0b1xuICAgIC8vIFRyaWdnZXIgZXJyb3JzIGluIHRoaXMgY2FzZS4gVGhpcyBtZWFucyB0aGVvcmV0aWNhbGx5IGltcHJvcGVybHkgYnVpbHQgYWJvcnRlcyB1c2VSZXNvdXJjZSgpIGNvdWxkIHN1c3BlbmQgZm9yZXZlci5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBvcHRpbWlzdGljOiBmaWx0ZXJPcHRpbWlzdGljKHN0YXRlLCBhY3Rpb24pLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtZXRhOiB7XG4gICAgICAuLi5zdGF0ZS5tZXRhLFxuICAgICAgW2FjdGlvbi5rZXldOiB7XG4gICAgICAgIGRhdGU6IGFjdGlvbi5tZXRhLmRhdGUsXG4gICAgICAgIGVycm9yLFxuICAgICAgICBleHBpcmVzQXQ6IGFjdGlvbi5tZXRhLmV4cGlyZXNBdCxcbiAgICAgICAgZXJyb3JQb2xpY3k6IGFjdGlvbi5lbmRwb2ludC5lcnJvclBvbGljeT8uKGVycm9yKSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBvcHRpbWlzdGljOiBmaWx0ZXJPcHRpbWlzdGljKHN0YXRlLCBhY3Rpb24pLFxuICB9O1xufVxuLyoqIEZpbHRlciBhbGwgcmVxdWVzdHMgd2l0aCBzYW1lIHNlcmlhbGl6YXRpb24gdGhhdCBkaWQgbm90IHN0YXJ0IGFmdGVyIHRoZSByZXNvbHZpbmcgcmVxdWVzdCAqL1xuZnVuY3Rpb24gZmlsdGVyT3B0aW1pc3RpYyhcbiAgc3RhdGU6IFN0YXRlPHVua25vd24+LFxuICByZXNvbHZpbmdBY3Rpb246IFNldFJlc3BvbnNlQWN0aW9uIHwgT3B0aW1pc3RpY0FjdGlvbixcbikge1xuICByZXR1cm4gc3RhdGUub3B0aW1pc3RpYy5maWx0ZXIoXG4gICAgb3B0aW1pc3RpY0FjdGlvbiA9PlxuICAgICAgb3B0aW1pc3RpY0FjdGlvbi5rZXkgIT09IHJlc29sdmluZ0FjdGlvbi5rZXkgfHxcbiAgICAgIChvcHRpbWlzdGljQWN0aW9uLnR5cGUgPT09IE9QVElNSVNUSUNfVFlQRSA/XG4gICAgICAgIG9wdGltaXN0aWNBY3Rpb24ubWV0YS5mZXRjaGVkQXQgIT09IHJlc29sdmluZ0FjdGlvbi5tZXRhLmZldGNoZWRBdFxuICAgICAgOiBvcHRpbWlzdGljQWN0aW9uLm1ldGEuZGF0ZSA+IHJlc29sdmluZ0FjdGlvbi5tZXRhLmRhdGUpLFxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxTQUFTLFFBQVEsd0JBQXdCO0FBRWxELFNBQVNDLGVBQWUsUUFBUSxzQkFBc0I7QUFDdEQsT0FBT0MsZUFBZSxNQUFNLHFDQUFxQztBQVFqRSxPQUFPLFNBQVNDLGtCQUFrQkEsQ0FDaENDLEtBQXFCLEVBQ3JCQyxNQUE0QyxFQUM1Q0MsVUFBc0IsRUFDdEI7RUFDQSxJQUFJRCxNQUFNLENBQUNFLEtBQUssRUFBRTtJQUNoQixPQUFPQyxXQUFXLENBQUNKLEtBQUssRUFBRUMsTUFBTSxFQUFFQSxNQUFNLENBQUNJLFFBQVEsQ0FBQztFQUNwRDtFQUNBLElBQUk7SUFBQSxJQUFBQyxxQkFBQTtJQUNGLElBQUlELFFBQWE7SUFDakI7SUFDQSxJQUFJSixNQUFNLENBQUNNLElBQUksS0FBS1YsZUFBZSxFQUFFO01BQ25DO01BQ0E7TUFDQSxJQUFJLENBQUNJLE1BQU0sQ0FBQ08sUUFBUSxDQUFDQyxxQkFBcUIsRUFBRSxPQUFPVCxLQUFLO01BQ3hELElBQUk7UUFDRjtRQUNBSyxRQUFRLEdBQUdKLE1BQU0sQ0FBQ08sUUFBUSxDQUFDQyxxQkFBcUIsQ0FBQ0MsSUFBSSxDQUNuRFQsTUFBTSxDQUFDTyxRQUFRLEVBQ2ZOLFVBQVUsQ0FBQ1MsUUFBUSxDQUFDWCxLQUFLLEVBQUVDLE1BQU0sQ0FBQ1csSUFBSSxDQUFDQyxTQUFTLENBQUMsRUFDakQsR0FBR1osTUFBTSxDQUFDYSxJQUNaLENBQUM7TUFDSCxDQUFDLENBQUMsT0FBT0MsQ0FBTSxFQUFFO1FBQ2Y7UUFDQSxJQUFJQSxDQUFDLENBQUNDLFdBQVcsS0FBS2xCLGVBQWUsRUFBRTtVQUNyQyxPQUFPRSxLQUFLO1FBQ2Q7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

@@ -15,6 +15,6 @@ import { NormalizedIndex } from '@data-client/normalizr';

};
readonly indexes: NormalizedIndex;
readonly endpoints: {
readonly [key: string]: unknown | PK[] | PK | undefined;
};
readonly indexes: NormalizedIndex;
readonly meta: {

@@ -21,0 +21,0 @@ readonly [key: string]: {

export * from './actions.js';
export {};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vcm1hbGl6ZWRJbmRleCB9IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuaW1wb3J0IHR5cGUge1xuICBVcGRhdGVGdW5jdGlvbixcbiAgQWJzdHJhY3RJbnN0YW5jZVR5cGUsXG59IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuaW1wb3J0IHR5cGUgeyBFcnJvclR5cGVzIH0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCB0eXBlIHtcbiAgQWN0aW9uVHlwZXMsXG4gIFNldFJlc3BvbnNlQWN0aW9uLFxuICBPcHRpbWlzdGljQWN0aW9uLFxufSBmcm9tICcuL2FjdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBEaXNwYXRjaCwgTWlkZGxld2FyZSwgTWlkZGxld2FyZUFQSSB9IGZyb20gJy4vbWlkZGxld2FyZVR5cGVzLmpzJztcblxuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb25zLmpzJztcblxuZXhwb3J0IHR5cGUgeyBBYnN0cmFjdEluc3RhbmNlVHlwZSwgVXBkYXRlRnVuY3Rpb24gfTtcblxuZXhwb3J0IHR5cGUgUEsgPSBzdHJpbmc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGU8VD4ge1xuICByZWFkb25seSBlbnRpdGllczoge1xuICAgIHJlYWRvbmx5IFtlbnRpdHlLZXk6IHN0cmluZ106IHsgcmVhZG9ubHkgW3BrOiBzdHJpbmddOiBUIH0gfCB1bmRlZmluZWQ7XG4gIH07XG4gIHJlYWRvbmx5IGluZGV4ZXM6IE5vcm1hbGl6ZWRJbmRleDtcbiAgcmVhZG9ubHkgZW5kcG9pbnRzOiB7XG4gICAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogdW5rbm93biB8IFBLW10gfCBQSyB8IHVuZGVmaW5lZDtcbiAgfTtcbiAgcmVhZG9ubHkgbWV0YToge1xuICAgIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHtcbiAgICAgIHJlYWRvbmx5IGRhdGU6IG51bWJlcjtcbiAgICAgIHJlYWRvbmx5IGV4cGlyZXNBdDogbnVtYmVyO1xuICAgICAgcmVhZG9ubHkgcHJldkV4cGlyZXNBdD86IG51bWJlcjtcbiAgICAgIHJlYWRvbmx5IGVycm9yPzogRXJyb3JUeXBlcztcbiAgICAgIHJlYWRvbmx5IGludmFsaWRhdGVkPzogYm9vbGVhbjtcbiAgICAgIHJlYWRvbmx5IGVycm9yUG9saWN5PzogJ2hhcmQnIHwgJ3NvZnQnIHwgdW5kZWZpbmVkO1xuICAgIH07XG4gIH07XG4gIHJlYWRvbmx5IGVudGl0eU1ldGE6IHtcbiAgICByZWFkb25seSBbZW50aXR5S2V5OiBzdHJpbmddOiB7XG4gICAgICByZWFkb25seSBbcGs6IHN0cmluZ106IHtcbiAgICAgICAgcmVhZG9ubHkgZmV0Y2hlZEF0OiBudW1iZXI7XG4gICAgICAgIHJlYWRvbmx5IGRhdGU6IG51bWJlcjtcbiAgICAgICAgcmVhZG9ubHkgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIHJlYWRvbmx5IG9wdGltaXN0aWM6IChTZXRSZXNwb25zZUFjdGlvbiB8IE9wdGltaXN0aWNBY3Rpb24pW107XG4gIHJlYWRvbmx5IGxhc3RSZXNldDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hbmFnZXI8QWN0aW9ucyA9IEFjdGlvblR5cGVzPiB7XG4gIGdldE1pZGRsZXdhcmUoKTogTWlkZGxld2FyZTxBY3Rpb25zPjtcbiAgY2xlYW51cCgpOiB2b2lkO1xuICBpbml0PzogKHN0YXRlOiBTdGF0ZTxhbnk+KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSB7IERpc3BhdGNoLCBNaWRkbGV3YXJlLCBNaWRkbGV3YXJlQVBJIH07XG4iXSwibWFwcGluZ3MiOiJBQWNBLGNBQWMsY0FBYztBQUFDIiwiaWdub3JlTGlzdCI6W119
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vcm1hbGl6ZWRJbmRleCB9IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuaW1wb3J0IHR5cGUge1xuICBVcGRhdGVGdW5jdGlvbixcbiAgQWJzdHJhY3RJbnN0YW5jZVR5cGUsXG59IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuaW1wb3J0IHR5cGUgeyBFcnJvclR5cGVzIH0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCB0eXBlIHtcbiAgQWN0aW9uVHlwZXMsXG4gIFNldFJlc3BvbnNlQWN0aW9uLFxuICBPcHRpbWlzdGljQWN0aW9uLFxufSBmcm9tICcuL2FjdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBEaXNwYXRjaCwgTWlkZGxld2FyZSwgTWlkZGxld2FyZUFQSSB9IGZyb20gJy4vbWlkZGxld2FyZVR5cGVzLmpzJztcblxuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb25zLmpzJztcblxuZXhwb3J0IHR5cGUgeyBBYnN0cmFjdEluc3RhbmNlVHlwZSwgVXBkYXRlRnVuY3Rpb24gfTtcblxuZXhwb3J0IHR5cGUgUEsgPSBzdHJpbmc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGU8VD4ge1xuICByZWFkb25seSBlbnRpdGllczoge1xuICAgIHJlYWRvbmx5IFtlbnRpdHlLZXk6IHN0cmluZ106IHsgcmVhZG9ubHkgW3BrOiBzdHJpbmddOiBUIH0gfCB1bmRlZmluZWQ7XG4gIH07XG4gIHJlYWRvbmx5IGVuZHBvaW50czoge1xuICAgIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHVua25vd24gfCBQS1tdIHwgUEsgfCB1bmRlZmluZWQ7XG4gIH07XG4gIHJlYWRvbmx5IGluZGV4ZXM6IE5vcm1hbGl6ZWRJbmRleDtcbiAgcmVhZG9ubHkgbWV0YToge1xuICAgIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHtcbiAgICAgIHJlYWRvbmx5IGRhdGU6IG51bWJlcjtcbiAgICAgIHJlYWRvbmx5IGV4cGlyZXNBdDogbnVtYmVyO1xuICAgICAgcmVhZG9ubHkgcHJldkV4cGlyZXNBdD86IG51bWJlcjtcbiAgICAgIHJlYWRvbmx5IGVycm9yPzogRXJyb3JUeXBlcztcbiAgICAgIHJlYWRvbmx5IGludmFsaWRhdGVkPzogYm9vbGVhbjtcbiAgICAgIHJlYWRvbmx5IGVycm9yUG9saWN5PzogJ2hhcmQnIHwgJ3NvZnQnIHwgdW5kZWZpbmVkO1xuICAgIH07XG4gIH07XG4gIHJlYWRvbmx5IGVudGl0eU1ldGE6IHtcbiAgICByZWFkb25seSBbZW50aXR5S2V5OiBzdHJpbmddOiB7XG4gICAgICByZWFkb25seSBbcGs6IHN0cmluZ106IHtcbiAgICAgICAgcmVhZG9ubHkgZmV0Y2hlZEF0OiBudW1iZXI7XG4gICAgICAgIHJlYWRvbmx5IGRhdGU6IG51bWJlcjtcbiAgICAgICAgcmVhZG9ubHkgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIHJlYWRvbmx5IG9wdGltaXN0aWM6IChTZXRSZXNwb25zZUFjdGlvbiB8IE9wdGltaXN0aWNBY3Rpb24pW107XG4gIHJlYWRvbmx5IGxhc3RSZXNldDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hbmFnZXI8QWN0aW9ucyA9IEFjdGlvblR5cGVzPiB7XG4gIGdldE1pZGRsZXdhcmUoKTogTWlkZGxld2FyZTxBY3Rpb25zPjtcbiAgY2xlYW51cCgpOiB2b2lkO1xuICBpbml0PzogKHN0YXRlOiBTdGF0ZTxhbnk+KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSB7IERpc3BhdGNoLCBNaWRkbGV3YXJlLCBNaWRkbGV3YXJlQVBJIH07XG4iXSwibWFwcGluZ3MiOiJBQWNBLGNBQWMsY0FBYztBQUFDIiwiaWdub3JlTGlzdCI6W119
{
"name": "@data-client/core",
"version": "0.14.2",
"version": "0.14.4",
"description": "High performance mutable data framework.",

@@ -5,0 +5,0 @@ "sideEffects": false,

@@ -137,3 +137,3 @@ import { Endpoint } from '@data-client/endpoint';

beforeEach(() => {
NM = new NetworkManager(42, 7);
NM = new NetworkManager({ dataExpiryLength: 42, errorExpiryLength: 7 });
middleware = NM.getMiddleware();

@@ -140,0 +140,0 @@ });

@@ -41,3 +41,3 @@ import { SET_RESPONSE_TYPE, FETCH_TYPE, RESET_TYPE } from '../actionTypes.js';

constructor(dataExpiryLength = 60000, errorExpiryLength = 1000) {
constructor({ dataExpiryLength = 60000, errorExpiryLength = 1000 } = {}) {
this.dataExpiryLength = dataExpiryLength;

@@ -44,0 +44,0 @@ this.errorExpiryLength = errorExpiryLength;

@@ -35,4 +35,5 @@ import { SUBSCRIBE_TYPE, UNSUBSCRIBE_TYPE } from '../actionTypes.js';

*/
export default class SubscriptionManager<S extends SubscriptionConstructable>
implements Manager<Actions>
export default class SubscriptionManager<
S extends SubscriptionConstructable = SubscriptionConstructable,
> implements Manager<Actions>
{

@@ -39,0 +40,0 @@ protected subscriptions: {

@@ -69,4 +69,4 @@ import { expireReducer } from './expireReducer.js';

entities: {},
endpoints: {},
indexes: {},
endpoints: {},
meta: {},

@@ -73,0 +73,0 @@ entityMeta: {},

@@ -29,6 +29,6 @@ import { normalize } from '@data-client/normalizr';

entities,
endpoints: state.endpoints,
indexes,
endpoints: state.endpoints,
meta: state.meta,
entityMeta,
meta: state.meta,
optimistic: state.optimistic,

@@ -35,0 +35,0 @@ lastReset: state.lastReset,

@@ -72,5 +72,4 @@ import { normalize } from '@data-client/normalizr';

entities,
endpoints,
indexes,
endpoints,
entityMeta,
meta: {

@@ -84,2 +83,3 @@ ...state.meta,

},
entityMeta,
optimistic: filterOptimistic(state, action),

@@ -86,0 +86,0 @@ lastReset: state.lastReset,

@@ -25,6 +25,6 @@ import { NormalizedIndex } from '@data-client/normalizr';

};
readonly indexes: NormalizedIndex;
readonly endpoints: {
readonly [key: string]: unknown | PK[] | PK | undefined;
};
readonly indexes: NormalizedIndex;
readonly meta: {

@@ -31,0 +31,0 @@ readonly [key: string]: {

@@ -34,3 +34,6 @@ import Controller from '../controller/Controller.js';

cleanupDate?: number;
constructor(dataExpiryLength?: number, errorExpiryLength?: number);
constructor({ dataExpiryLength, errorExpiryLength }?: {
dataExpiryLength?: number | undefined;
errorExpiryLength?: number | undefined;
});
/** Used by DevtoolsManager to determine whether to log an action */

@@ -37,0 +40,0 @@ skipLogging(action: ActionTypes): boolean;

@@ -21,3 +21,3 @@ import Controller from '../controller/Controller.js';

*/
export default class SubscriptionManager<S extends SubscriptionConstructable> implements Manager<Actions> {
export default class SubscriptionManager<S extends SubscriptionConstructable = SubscriptionConstructable> implements Manager<Actions> {
protected subscriptions: {

@@ -24,0 +24,0 @@ [key: string]: InstanceType<S>;

@@ -18,6 +18,6 @@ import { State, ExpireAllAction } from '../../types.js';

};
indexes: import("packages/normalizr/lib/interface.js").NormalizedIndex;
endpoints: {
readonly [key: string]: unknown | import("../../types.js").PK[] | import("../../types.js").PK | undefined;
};
indexes: import("packages/normalizr/lib/interface.js").NormalizedIndex;
entityMeta: {

@@ -24,0 +24,0 @@ readonly [entityKey: string]: {

@@ -7,9 +7,6 @@ import Controller from '../../controller/Controller.js';

};
indexes: import("@data-client/normalizr").NormalizedIndex;
endpoints: {
readonly [key: string]: unknown;
};
entityMeta: import("packages/normalizr/lib/types.js").EntitiesToMeta<{
[x: string]: any;
}>;
indexes: import("@data-client/normalizr").NormalizedIndex;
meta: {

@@ -25,2 +22,5 @@ readonly [key: string]: {

};
entityMeta: import("packages/normalizr/lib/types.js").EntitiesToMeta<{
[x: string]: any;
}>;
optimistic: (import("../../actions.js").SetResponseAction | import("../../actions.js").OptimisticAction<import("@data-client/normalizr").EndpointInterface<import("@data-client/normalizr").FetchFunction, import("@data-client/normalizr").Schema | undefined, boolean | undefined> & {

@@ -27,0 +27,0 @@ update?: import("../../index.js").EndpointUpdateFunction<import("@data-client/normalizr").EndpointInterface>;

@@ -7,7 +7,4 @@ import Controller from '../../controller/Controller.js';

};
endpoints: Record<string, unknown>;
indexes: import("@data-client/normalizr").NormalizedIndex;
endpoints: Record<string, unknown>;
entityMeta: import("packages/normalizr/lib/types.js").EntitiesToMeta<{
[x: string]: any;
}>;
meta: {

@@ -27,2 +24,5 @@ [x: string]: {

};
entityMeta: import("packages/normalizr/lib/types.js").EntitiesToMeta<{
[x: string]: any;
}>;
optimistic: (SetResponseAction | OptimisticAction<import("@data-client/normalizr").EndpointInterface<import("@data-client/normalizr").FetchFunction, import("@data-client/normalizr").Schema | undefined, boolean | undefined> & {

@@ -29,0 +29,0 @@ update?: import("../../index.js").EndpointUpdateFunction<import("@data-client/normalizr").EndpointInterface>;

@@ -15,6 +15,6 @@ import { NormalizedIndex } from '@data-client/normalizr';

};
readonly indexes: NormalizedIndex;
readonly endpoints: {
readonly [key: string]: unknown | PK[] | PK | undefined;
};
readonly indexes: NormalizedIndex;
readonly meta: {

@@ -21,0 +21,0 @@ readonly [key: string]: {

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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