From 5c09ec15b86dbaa2d68ac7c082318829f5b83360 Mon Sep 17 00:00:00 2001 From: y1j2x34 Date: Fri, 23 Jun 2023 17:18:44 +0800 Subject: [PATCH] release: 1.0.4 --- dist/index.cjs.js | 31 +------------------------------ dist/index.cjs.js.map | 2 +- dist/index.esm.js | 31 +------------------------------ dist/index.esm.js.map | 2 +- dist/index.umd.js | 31 +------------------------------ dist/index.umd.js.map | 2 +- package.json | 2 +- 7 files changed, 7 insertions(+), 94 deletions(-) diff --git a/dist/index.cjs.js b/dist/index.cjs.js index 11d657c..22fe9ce 100644 --- a/dist/index.cjs.js +++ b/dist/index.cjs.js @@ -1,31 +1,2 @@ -"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var n,r,o={};function i(){if(r)return n;function e(e){return"number"==typeof e||(!!/^0x[0-9a-f]+$/i.test(e)||/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(e))}function t(e,t){return"constructor"===t&&"function"==typeof e[t]||"__proto__"===t}return r=1,n=function(n,r){r||(r={});var o={bools:{},strings:{},unknownFn:null};"function"==typeof r.unknown&&(o.unknownFn=r.unknown),"boolean"==typeof r.boolean&&r.boolean?o.allBools=!0:[].concat(r.boolean).filter(Boolean).forEach((function(e){o.bools[e]=!0}));var i={};function a(e){return i[e].some((function(e){return o.bools[e]}))}Object.keys(r.alias||{}).forEach((function(e){i[e]=[].concat(r.alias[e]),i[e].forEach((function(t){i[t]=[e].concat(i[e].filter((function(e){return t!==e})))}))})),[].concat(r.string).filter(Boolean).forEach((function(e){o.strings[e]=!0,i[e]&&[].concat(i[e]).forEach((function(e){o.strings[e]=!0}))}));var s=r.default||{},u={_:[]};function c(e,n,r){for(var i=e,a=0;a0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}function l(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o0)return!0;var o=p.get(t);return o.delete(n),o.size>0||p.delete(t),!0}function A(e,t){for(var n=e.length-1;n>=0;--n){var r=(0,e[n])(t);if(!N(r)&&!D(r)){if(!H(r))throw new TypeError;t=r}}return t}function E(e,t,n,r){for(var o=e.length-1;o>=0;--o){var i=(0,e[o])(t,n,r);if(!N(i)&&!D(i)){if(!V(i))throw new TypeError;r=i}}return r}function j(e,t,n){var r=p.get(e);if(N(r)){if(!n)return;r=new f,p.set(e,r)}var o=r.get(t);if(N(o)){if(!n)return;o=new f,r.set(t,o)}return o}function k(e,t,n){if(x(e,t,n))return!0;var r=Q(t);return!D(r)&&k(e,r,n)}function x(e,t,n){var r=j(t,n,!1);return!N(r)&&U(r.has(e))}function C(e,t,n){if(x(e,t,n))return R(e,t,n);var r=Q(t);return D(r)?void 0:C(e,r,n)}function R(e,t,n){var r=j(t,n,!1);if(!N(r))return r.get(e)}function P(e,t,n,r){j(n,r,!0).set(e,t)}function T(e,t){var n=M(e,t),r=Q(e);if(null===r)return n;var o=T(r,t);if(o.length<=0)return n;if(n.length<=0)return o;for(var i=new h,a=[],s=0,u=n;s=0&&e=this._keys.length?(this._index=-1,this._keys=t,this._values=t):this._index++,{value:n,done:!1}}return{value:void 0,done:!0}},e.prototype.throw=function(e){throw this._index>=0&&(this._index=-1,this._keys=t,this._values=t),e},e.prototype.return=function(e){return this._index>=0&&(this._index=-1,this._keys=t,this._values=t),{value:e,done:!0}},e}();return function(){function t(){this._keys=[],this._values=[],this._cacheKey=e,this._cacheIndex=-2}return Object.defineProperty(t.prototype,"size",{get:function(){return this._keys.length},enumerable:!0,configurable:!0}),t.prototype.has=function(e){return this._find(e,!1)>=0},t.prototype.get=function(e){var t=this._find(e,!1);return t>=0?this._values[t]:void 0},t.prototype.set=function(e,t){var n=this._find(e,!0);return this._values[n]=t,this},t.prototype.delete=function(t){var n=this._find(t,!1);if(n>=0){for(var r=this._keys.length,o=n+1;o-1&&e.splice(r,1)}},e.prototype.emit=function(e){for(var t,n=[],r=1;r=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(u),p=h.next();!p.done;p=h.next()){var d=c(p.value,2);l(d[0],d[1])}}catch(e){t={error:e}}finally{try{p&&!p.done&&(o=h.return)&&o.call(h)}finally{if(t)throw t.error}}},e.prototype.build=function(){var e,t,n=this.getConstructorArgs(),r=this.createPropertiesGetterBuilder();if(this.instAwareProcessorManager.isInstAwareProcessorClass(this.componentClass)){var o=new((e=this.componentClass).bind.apply(e,l([void 0],c(n),!1)));for(var i in this.lifecycleResolver.invokePreInjectMethod(o),r){var a=r[i](o);this.defineProperty(o,i,a)}return this.lifecycleResolver.invokePostInjectMethod(o),o}o=this.instAwareProcessorManager.beforeInstantiation(this.componentClass,n);for(var i in o||(o=new((t=this.componentClass).bind.apply(t,l([void 0],c(n),!1)))),this.lifecycleResolver.invokePreInjectMethod(o),r){a=r[i](o);this.defineProperty(o,i,a)}return o=this.instAwareProcessorManager.afterInstantiation(o),this.lifecycleResolver.invokePostInjectMethod(o),o},e.prototype.defineProperty=function(e,t,n){this.lazyMode?E(e,t,n):e[t]=n()},e.prototype.createPropertiesGetterBuilder=function(){var e=this,t={},n=function(n){var o=r.propertyFactories[n],i=o.factory,a=o.injections;t[n]=function(t){var n=i(e.container,t);return function(){return e.container.invoke(n,{injections:a})}}},r=this;for(var o in this.propertyFactories)n(o);return t},e}(),D=Symbol("ioc:function-metadata"),L=function(){function e(){this.parameters=[],this.isFactory=!1}return e.getReflectKey=function(){return D},e.prototype.setParameterType=function(e,t){this.parameters[e]=t},e.prototype.setScope=function(e){this.scope=e},e.prototype.setIsFactory=function(e){this.isFactory=e},e.prototype.init=function(){},e.prototype.reader=function(){var e=this;return{getParameters:function(){return e.parameters.slice(0)},isFactory:function(){return e.isFactory},getScope:function(){return e.scope}}},e}(),V=-1,B=function(){function e(e){this.instance=e,this.serialNo=++V}return e.prototype.compareTo=function(e){return this.serialNo>e.serialNo?-1:this.serialNo-1)throw new Error("Incorrect expression syntax, The ',' is not allowed in expression: \"".concat(e,'"'));if(e.length>120)throw new Error("Incorrect expression syntax, expression length cannot be greater than 120, but actual: ".concat(e.length));if(/\(.*?\)/.test(e))throw new Error('Incorrect expression syntax, parentheses are not allowed in expression: "'.concat(e,'"'));if(""===(e=e.trim()))return function(e){return e};var t=(n="context",n+""+(H++).toString(16));var n;return new Function(t,'\n "use strict";\n try {\n return '.concat(t,".").concat(e,";\n } catch(error) { throw error }\n "))}(e)(t)}(o,this.namespaceDataMap.get(r))},e.prototype.recordData=function(e,t){this.namespaceDataMap.set(e,t)},e}();var H=Date.now();var q,W=function(){function e(){}return e.prototype.eval=function(e,t){return process.env[t]},e}(),X=function(){function e(){}return e.prototype.eval=function(e,t,n){var r=n||process.argv;return i()(r)[t]},e}();!function(e){e[e.Before=0]="Before",e[e.After=1]="After",e[e.Around=2]="Around",e[e.AfterReturn=3]="AfterReturn",e[e.Thrown=4]="Thrown",e[e.Finally=5]="Finally"}(q||(q={}));var J=function(){function e(e){this.fn=e,this.beforeHooks=[],this.afterHooks=[],this.thrownHooks=[],this.finallyHooks=[],this.afterReturnHooks=[],this.aroundHooks=[]}return e.prototype.append=function(e,t){var n;switch(e){case q.Before:n=this.beforeHooks;break;case q.After:n=this.afterHooks;break;case q.Thrown:n=this.thrownHooks;break;case q.Finally:n=this.finallyHooks;break;case q.AfterReturn:n=this.afterReturnHooks;break;case q.Around:n=this.aroundHooks}n&&n.push(t)},e.prototype.extract=function(){var e=this,t=e.aroundHooks,n=e.beforeHooks,r=e.afterHooks,o=e.afterReturnHooks,i=e.finallyHooks,a=e.thrownHooks,s=t.reduceRight((function(e,t){return function(){for(var n=[],r=0;r0))throw n;a.forEach((function(r){return r.call(e,n,t)}))}),(function(){i.forEach((function(n){return n.call(e,t)}))}),(function(n){return r.forEach((function(n){n.call(e,t)})),o.reduce((function(n,r){return r.call(e,n,t)}),n)}))}},e}();var Y=function(){function e(){this.aspectMap=f((function(){return f((function(){return[]}))}))}return e.getReflectKey=function(){return"aop:use-aspect-metadata"},e.prototype.init=function(){},e.prototype.append=function(e,t,n){var r=this.aspectMap.get(e).get(t);r.push.apply(r,l([],c(n),!1))},e.prototype.reader=function(){var e=this;return{getAspects:function(){return e.aspectMap},getAspectsOf:function(t,n){return e.aspectMap.get(t).get(n)}}},e}(),Z=function(){function e(){}return e.create=function(t){return function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.appCtx=t,n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}(n,e),n}(e)},e.prototype.afterInstantiation=function(e){var t=this,n=e.constructor,r=v.getMetadata(n,Y).reader();if(0===r.getAspects().size)return e;var o=new WeakMap;return o.set(e,new Map),new Proxy(e,{get:function(n,i){var a=n[i];if(i in n&&"function"==typeof a){var s=o.get(e);if(!s)return a;if(s.has(i))return s.get(i);var u=function(e,t,n,r,o){var i=function(e,r,o,i){return void 0===o&&(o=null),void 0===i&&(i=null),{target:t,methodName:n,arguments:r,returnValue:o,error:i,advice:e}},a=new J(r),s=function(t){return e.getInstance(t)},u=o.getAspectsOf(n,q.Before).map(s),c=o.getAspectsOf(n,q.After).map(s),l=o.getAspectsOf(n,q.Thrown).map(s),f=o.getAspectsOf(n,q.Finally).map(s),h=o.getAspectsOf(n,q.AfterReturn).map(s),p=o.getAspectsOf(n,q.Around).map(s);return u.length>0&&a.append(q.Before,(function(e){var t=i(q.Before,e);u.forEach((function(e){e.execute(t)}))})),c.length>0&&a.append(q.After,(function(e){var t=i(q.After,e);c.forEach((function(e){e.execute(t)}))})),l.length>0&&a.append(q.Thrown,(function(e,t){var n=i(q.Thrown,t,null,e);l.forEach((function(e){e.execute(n)}))})),f.length>0&&a.append(q.Finally,(function(e){var t=i(q.Finally,e);f.forEach((function(e){e.execute(t)}))})),h.length>0&&a.append(q.AfterReturn,(function(e,t){return h.reduce((function(n,r){var o=i(q.AfterReturn,t,e);return r.execute(o)}),e)})),p.length>0&&p.forEach((function(e){a.append(q.Around,(function(t,n){var r=i(q.Around,n,null);return r.proceed=function(e){return void 0===e&&(e=n),t(e)},e.execute(r)}))})),a.extract()}(t.appCtx,n,i,a,r);return s.set(i,u),u}return a}})},e}(),Q=function(){function e(e){this.container=e,this.instAwareProcessorClasses=new Set}return e.prototype.appendInstAwareProcessorClass=function(e){this.instAwareProcessorClasses.add(e)},e.prototype.appendInstAwareProcessorClasses=function(e){var t=this;e.forEach((function(e){t.instAwareProcessorClasses.add(e)}))},e.prototype.beforeInstantiation=function(e,t){var n;return this.instAwareProcessorInstances.some((function(r){return!!r.beforeInstantiation&&!!(n=r.beforeInstantiation(e,t))})),n},e.prototype.afterInstantiation=function(e){return this.instAwareProcessorInstances.reduce((function(e,t){if(t.afterInstantiation){var n=t.afterInstantiation(e);if(n)return n}return e}),e)},e.prototype.isInstAwareProcessorClass=function(e){return this.getInstAwareProcessorClasses().indexOf(e)>-1},e.prototype.getInstAwareProcessorClasses=function(){return r.getInstance().reader().getInstAwareProcessorClasses().concat(Array.from(this.instAwareProcessorClasses))},function(e,t,n,r){var o,i=arguments.length,a=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);i>3&&a&&Object.defineProperty(t,n,a)}([j({evaluate:function(e){return r.getInstance().reader().getInstAwareProcessorClasses().concat(Array.from(e.instAwareProcessorClasses)).map((function(t){return e.container.getInstance(t)}))},resetBy:[function(e){return e.instAwareProcessorClasses.size},function(){return r.getInstance().reader().getInstAwareProcessorClasses().length}]}),u("design:type",Array)],e.prototype,"instAwareProcessorInstances",void 0),e}(),ee="container:event:pre-destroy",te=function(){function e(e){void 0===e&&(e={}),this.resolutions=new Map,this.factories=new Map,this.evaluatorClasses=new Map,this.eventEmitter=new O,this.defaultScope=e.defaultScope||t.InstanceScope.SINGLETON,this.lazyMode=void 0===e.lazyMode||e.lazyMode,this.registerInstanceScopeResolution(t.InstanceScope.SINGLETON,U),this.registerInstanceScopeResolution(t.InstanceScope.GLOBAL_SHARED_SINGLETON,K),this.registerInstanceScopeResolution(t.InstanceScope.TRANSIENT,z),this.registerEvaluator(t.ExpressionType.JSON_PATH,$),w&&(this.registerEvaluator(t.ExpressionType.ENV,W),this.registerEvaluator(t.ExpressionType.ARGV,X)),this.instAwareProcessorManager=new Q(this),this.registerInstAwareProcessor(Z.create(this))}return e.prototype.getInstance=function(t,n){if(t===e)return this;if("string"==typeof t||"symbol"==typeof t){var o=this.getFactory(t);if(o){var i=o.factory,a=o.injections,u=i(this,n),c=this.invoke(u,{injections:a}),l=null==c?void 0:c.constructor;if("function"==typeof l){var f=l,h=new I(f,this),p=this.instAwareProcessorManager.isInstAwareProcessorClass(f);h.invokePreInjectMethod(c),p||(c=this.instAwareProcessorManager.afterInstantiation(c)),h.invokePostInjectMethod(c)}return c}var d=r.getInstance().reader().getClassMetadata(t);if(!d)throw new Error("");t=d.reader().getClass()}var v=t,y=g.getInstance(v).reader().getScope(),b=this.resolutions.get(y)||this.resolutions.get(this.defaultScope),_={identifier:v,owner:n,ownerPropertyKey:void 0};if(b.shouldGenerate(_)){var m=this.createComponentInstanceBuilder(v).build(),w=s(s({},_),{instance:m});return b.saveInstance(w),m}return b.getInstance(_)},e.prototype.createComponentInstanceBuilder=function(e){var t=new N(e,this,this.instAwareProcessorManager);return t.appendLazyMode(this.lazyMode),t},e.prototype.getFactory=function(e){var t=r.getInstance().reader().getComponentFactory(e);return t||this.factories.get(e)},e.prototype.bindFactory=function(e,t,r){this.factories.set(e,new n(t,r))},e.prototype.invoke=function(e,t){var n,r=this;if(void 0===t&&(t={}),n=arguments.length>1?e.bind(t.context):e,S(t))return t.args?n.apply(void 0,l([],c(t.args),!1)):n();if(A(t)){var o=t.injections?t.injections.map((function(e){return r.getInstance(e)})):[];return o.length>0?n.apply(void 0,l([],c(o),!1)):n()}var i=v.getMetadata(n,L).reader(),a=i.getParameters(),s=a.map((function(e){return r.getInstance(e)}));return n.apply(void 0,l([],c(s),!1))},e.prototype.destroy=function(){this.eventEmitter.emit(ee),this.resolutions.forEach((function(e){e.destroy()}))},e.prototype.evaluate=function(e,t){var n=this.evaluatorClasses.get(t.type);if(!n)throw new TypeError("Unknown evaluator name: ".concat(t.type));return this.getInstance(n).eval(this,e,t.externalArgs)},e.prototype.recordJSONData=function(e,t){this.getInstance($).recordData(e,t)},e.prototype.bindInstance=function(e,n){var r=this.resolutions.get(t.InstanceScope.SINGLETON);null==r||r.saveInstance({identifier:e,instance:n})},e.prototype.registerInstanceScopeResolution=function(e,t,n){this.resolutions.set(e,new(t.bind.apply(t,l([void 0],c(n||[]),!1))))},e.prototype.registerEvaluator=function(e,n){v.getMetadata(n,g).setScope(t.InstanceScope.SINGLETON),this.evaluatorClasses.set(e,n)},e.prototype.registerInstAwareProcessor=function(e){this.instAwareProcessorManager.appendInstAwareProcessorClass(e)},e.prototype.onPreDestroy=function(e){return this.eventEmitter.on(ee,e)},e.prototype.getClassMetadata=function(e){return g.getInstance(e).reader()},e}();t.ApplicationContext=te,t.Bind=function(e){return function(t){var n=v.getMetadata(t,g);r.getInstance().recordClassAlias(e,n)}},t.Factory=function(e,t){return void 0===t&&(t=[]),function(n,o){var i=r.getInstance(),a=n.constructor;i.recordFactory(e,(function(e,t){var n=e.getInstance(a,t)[o];return"function"==typeof n?function(){for(var t=[],r=0;r1?t-1:0),r=1;r1?t-1:0),r=1;r1){for(var l=Array(c),f=0;f1){for(var h=Array(f),p=0;p import('./MyComponent'))\n\nDid you accidentally put curly braces around the import?",r),"default"in r||j("lazy: Expected the result of a dynamic import() call. Instead received: %s\n\nYour code should look like: \n const MyComponent = lazy(() => import('./MyComponent'))",r),r.default}throw e._result}function de(e){return"string"==typeof e||"function"==typeof e||(e===o||e===a||e===i||e===l||e===f||e===d||"object"==typeof e&&null!==e&&(e.$$typeof===p||e.$$typeof===h||e.$$typeof===s||e.$$typeof===u||e.$$typeof===c||e.$$typeof===he||void 0!==e.getModuleId))}function ve(){var e=b.current;return null===e&&j("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem."),e}he=Symbol.for("react.module.reference");var ye,be,ge,_e,me,we,Oe,Se=0;function Ae(){}Ae.__reactDisabledLog=!0;var Ee,je=A.ReactCurrentDispatcher;function ke(e,t,n){if(void 0===Ee)try{throw Error()}catch(e){var r=e.stack.trim().match(/\n( *(at )?)/);Ee=r&&r[1]||""}return"\n"+Ee+e}var xe,Ce=!1,Re="function"==typeof WeakMap?WeakMap:Map;function Pe(e,t){if(!e||Ce)return"";var n,r=xe.get(e);if(void 0!==r)return r;Ce=!0;var o,i=Error.prepareStackTrace;Error.prepareStackTrace=void 0,o=je.current,je.current=null,function(){if(0===Se){ye=console.log,be=console.info,ge=console.warn,_e=console.error,me=console.group,we=console.groupCollapsed,Oe=console.groupEnd;var e={configurable:!0,enumerable:!0,value:Ae,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}Se++}();try{if(t){var a=function(){throw Error()};if(Object.defineProperty(a.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(a,[])}catch(e){n=e}Reflect.construct(e,[],a)}else{try{a.call()}catch(e){n=e}e.call(a.prototype)}}else{try{throw Error()}catch(e){n=e}e()}}catch(t){if(t&&n&&"string"==typeof t.stack){for(var s=t.stack.split("\n"),u=n.stack.split("\n"),c=s.length-1,l=u.length-1;c>=1&&l>=0&&s[c]!==u[l];)l--;for(;c>=1&&l>=0;c--,l--)if(s[c]!==u[l]){if(1!==c||1!==l)do{if(c--,--l<0||s[c]!==u[l]){var f="\n"+s[c].replace(" at new "," at ");return e.displayName&&f.includes("")&&(f=f.replace("",e.displayName)),"function"==typeof e&&xe.set(e,f),f}}while(c>=1&&l>=0);break}}}finally{Ce=!1,je.current=o,function(){if(0==--Se){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:P({},e,{value:ye}),info:P({},e,{value:be}),warn:P({},e,{value:ge}),error:P({},e,{value:_e}),group:P({},e,{value:me}),groupCollapsed:P({},e,{value:we}),groupEnd:P({},e,{value:Oe})})}Se<0&&j("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}(),Error.prepareStackTrace=i}var h=e?e.displayName||e.name:"",p=h?ke(h):"";return"function"==typeof e&&xe.set(e,p),p}function Te(e,t,n){if(null==e)return"";if("function"==typeof e)return Pe(e,function(e){var t=e.prototype;return!(!t||!t.isReactComponent)}(e));if("string"==typeof e)return ke(e);switch(e){case l:return ke("Suspense");case f:return ke("SuspenseList")}if("object"==typeof e)switch(e.$$typeof){case c:return Pe(e.render,!1);case h:return Te(e.type,t,n);case p:var r=e,o=r._payload,i=r._init;try{return Te(i(o),t,n)}catch(e){}}return""}xe=new Re;var Me,Ie={},Ne=A.ReactDebugCurrentFrame;function De(e){if(e){var t=e._owner,n=Te(e.type,e._source,t?t.type:null);Ne.setExtraStackFrame(n)}else Ne.setExtraStackFrame(null)}function Le(e){if(e){var t=e._owner;S(Te(e.type,e._source,t?t.type:null))}else S(null)}function Ve(){if(m.current){var e=$(m.current.type);if(e)return"\n\nCheck the render method of `"+e+"`."}return""}function Be(e){return null!=e&&void 0!==(t=e.__source)?"\n\nCheck your code at "+t.fileName.replace(/^.*[\\\/]/,"")+":"+t.lineNumber+".":"";var t}Me=!1;var Fe={};function Ue(e,t){if(e._store&&!e._store.validated&&null==e.key){e._store.validated=!0;var n=function(e){var t=Ve();if(!t){var n="string"==typeof e?e:e.displayName||e.name;n&&(t="\n\nCheck the top-level render call using <"+n+">.")}return t}(t);if(!Fe[n]){Fe[n]=!0;var r="";e&&e._owner&&e._owner!==m.current&&(r=" It was passed a child from "+$(e._owner.type)+"."),Le(e),j('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',n,r),Le(null)}}}function Ge(e,t){if("object"==typeof e)if(U(e))for(var n=0;n",a=" Did you accidentally export a JSX literal instead of a component?"):s=typeof e,j("React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",s,a)}var c=re.apply(this,arguments);if(null==c)return c;if(i)for(var l=2;l ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning."));var t=new MessageChannel;t.port1.onmessage=e,t.port2.postMessage(void 0)}}We(t)}((function(){0===o.length?(_.current=null,n(t)):Ze(t,n,r)}))}catch(e){r(e)}else n(t)}var Qe=!1;function et(e){if(!Qe){Qe=!0;var t=0;try{for(;t is not supported and will be removed in a future major release. Did you mean to render instead?")),t.Provider},set:function(e){t.Provider=e}},_currentValue:{get:function(){return t._currentValue},set:function(e){t._currentValue=e}},_currentValue2:{get:function(){return t._currentValue2},set:function(e){t._currentValue2=e}},_threadCount:{get:function(){return t._threadCount},set:function(e){t._threadCount=e}},Consumer:{get:function(){return n||(n=!0,j("Rendering is not supported and will be removed in a future major release. Did you mean to render instead?")),t.Consumer}},displayName:{get:function(){return t.displayName},set:function(e){o||(E("Setting `displayName` on Context.Consumer has no effect. You should set it directly on the context with Context.displayName = '%s'.",e),o=!0)}}}),t.Consumer=i,t._currentRenderer=null,t._currentRenderer2=null,t},t.createElement=tt,t.createFactory=rt,t.createRef=function(){var e={current:null};return Object.seal(e),e},t.forwardRef=function(e){null!=e&&e.$$typeof===h?j("forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))."):"function"!=typeof e?j("forwardRef requires a render function but was given %s.",null===e?"null":typeof e):0!==e.length&&2!==e.length&&j("forwardRef render functions accept exactly two parameters: props and ref. %s",1===e.length?"Did you forget to use the ref parameter?":"Any additional parameter will be undefined."),null!=e&&(null==e.defaultProps&&null==e.propTypes||j("forwardRef render functions do not support propTypes or defaultProps. Did you accidentally pass a React component?"));var t,n={$$typeof:c,render:e};return Object.defineProperty(n,"displayName",{enumerable:!1,configurable:!0,get:function(){return t},set:function(n){t=n,e.name||e.displayName||(e.displayName=n)}}),n},t.isValidElement=ie,t.lazy=function(e){var t,n,r={$$typeof:p,_payload:{_status:-1,_result:e},_init:pe};return Object.defineProperties(r,{defaultProps:{configurable:!0,get:function(){return t},set:function(e){j("React.lazy(...): It is not supported to assign `defaultProps` to a lazy component import. Either specify them where the component is defined, or create a wrapping component around it."),t=e,Object.defineProperty(r,"defaultProps",{enumerable:!0})}},propTypes:{configurable:!0,get:function(){return n},set:function(e){j("React.lazy(...): It is not supported to assign `propTypes` to a lazy component import. Either specify them where the component is defined, or create a wrapping component around it."),n=e,Object.defineProperty(r,"propTypes",{enumerable:!0})}}}),r},t.memo=function(e,t){de(e)||j("memo: The first argument must be a component. Instead received: %s",null===e?"null":typeof e);var n,r={$$typeof:h,type:e,compare:void 0===t?null:t};return Object.defineProperty(r,"displayName",{enumerable:!1,configurable:!0,get:function(){return n},set:function(t){n=t,e.name||e.displayName||(e.displayName=t)}}),r},t.startTransition=function(e,t){var n=g.transition;g.transition={};var r=g.transition;g.transition._updatedFibers=new Set;try{e()}finally{if(g.transition=n,null===n&&r._updatedFibers)r._updatedFibers.size>10&&E("Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table."),r._updatedFibers.clear()}},t.unstable_act=function(e){var t=Xe;Xe++,null===_.current&&(_.current=[]);var n,r=_.isBatchingLegacy;try{if(_.isBatchingLegacy=!0,n=e(),!r&&_.didScheduleLegacyUpdate){var o=_.current;null!==o&&(_.didScheduleLegacyUpdate=!1,et(o))}}catch(e){throw Ye(t),e}finally{_.isBatchingLegacy=r}if(null!==n&&"object"==typeof n&&"function"==typeof n.then){var i=n,a=!1,s={then:function(e,n){a=!0,i.then((function(r){Ye(t),0===Xe?Ze(r,e,n):e(r)}),(function(e){Ye(t),n(e)}))}};return Je||"undefined"==typeof Promise||Promise.resolve().then((function(){})).then((function(){a||(Je=!0,j("You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);"))})),s}var u=n;if(Ye(t),0===Xe){var c=_.current;return null!==c&&(et(c),_.current=null),{then:function(e,t){null===_.current?(_.current=[],Ze(u,e,t)):e(u)}}}return{then:function(e,t){e(u)}}},t.useCallback=function(e,t){return ve().useCallback(e,t)},t.useContext=function(e){var t=ve();if(void 0!==e._context){var n=e._context;n.Consumer===e?j("Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be removed in a future major release. Did you mean to call useContext(Context) instead?"):n.Provider===e&&j("Calling useContext(Context.Provider) is not supported. Did you mean to call useContext(Context) instead?")}return t.useContext(e)},t.useDebugValue=function(e,t){return ve().useDebugValue(e,t)},t.useDeferredValue=function(e){return ve().useDeferredValue(e)},t.useEffect=function(e,t){return ve().useEffect(e,t)},t.useId=function(){return ve().useId()},t.useImperativeHandle=function(e,t,n){return ve().useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return ve().useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return ve().useLayoutEffect(e,t)},t.useMemo=function(e,t){return ve().useMemo(e,t)},t.useReducer=function(e,t,n){return ve().useReducer(e,t,n)},t.useRef=function(e){return ve().useRef(e)},t.useState=function(e){return ve().useState(e)},t.useSyncExternalStore=function(e,t,n){return ve().useSyncExternalStore(e,t,n)},t.useTransition=function(){return ve().useTransition()},t.version="18.2.0","undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error)}()}(p,h)),h}f={get exports(){return s},set exports(e){s=e}},"production"===process.env.NODE_ENV?f.exports=c():f.exports=d();var v,y=t(s),b={},g={};function _(){if(v)return g;function t(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;re.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function j(e){return Object.assign((function(t,n){k(t,n,e)}),e)}function k(e,t,n){b(e,Lt)||l(e,Lt,w({},e[Lt])),function(e){return"override"===e.t}(n)||(e[Lt][t]=n)}function x(e,t,n){void 0===t&&(t=Mt),void 0===n&&(n=Mt);var r=new Bt(e);return t!==Mt&&Ce(r,t),n!==Mt&&Re(r,n),r}function C(e,t,n){return Fe(e)?e:Array.isArray(e)?Zt.array(e,{name:n}):u(e)?Zt.object(e,void 0,{name:n}):p(e)?Zt.map(e,{name:n}):d(e)?Zt.set(e,{name:n}):"function"!=typeof e||je(e)||Le(e)?e:c(e)?In(e):Cn(n,e)}function R(e){return e}function P(e,t){return{t:e,i:t,o:T,u:M}}function T(e,t,n,r){var o;if(null!=(o=this.i)&&o.bound)return null===this.u(e,t,n,!1)?0:1;if(r===e.s)return null===this.u(e,t,n,!1)?0:2;if(je(n.value))return 1;var i=I(e,this,t,n,!1);return kt(r,t,i),2}function M(e,t,n,r){var o=I(e,this,t,n);return e.h(t,o,r)}function I(e,t,n,r,o){var i,a,s,u,c,l,f;void 0===o&&(o=mn.safeDescriptors);var h,p=r.value;return null!=(i=t.i)&&i.bound&&(p=p.bind(null!=(h=e.v)?h:e.s)),{value:Y(null!=(a=null==(s=t.i)?void 0:s.name)?a:n.toString(),p,null!=(u=null==(c=t.i)?void 0:c.autoAction)&&u,null!=(l=t.i)&&l.bound?null!=(f=e.v)?f:e.s:void 0),configurable:!o||e.l,enumerable:!1,writable:!o}}function N(e,t){return{t:e,i:t,o:D,u:L}}function D(e,t,n,r){var o;if(r===e.s)return null===this.u(e,t,n,!1)?0:2;if(null!=(o=this.i)&&o.bound&&(!b(e.s,t)||!Le(e.s[t]))&&null===this.u(e,t,n,!1))return 0;if(Le(n.value))return 1;var i=V(e,0,0,n,!1,!1);return kt(r,t,i),2}function L(e,t,n,r){var o,i=V(e,0,0,n,null==(o=this.i)?void 0:o.bound);return e.h(t,i,r)}function V(e,t,n,r,o,i){void 0===i&&(i=mn.safeDescriptors);var a,s=r.value;return Le(s)||(s=In(s)),o&&((s=s.bind(null!=(a=e.v)?a:e.s)).isMobXFlow=!0),{value:s,configurable:!i||e.l,enumerable:!1,writable:!i}}function B(e,t){return{t:e,i:t,o:F,u:U}}function F(e,t,n){return null===this.u(e,t,n,!1)?0:1}function U(e,t,n,r){return e.p(t,w({},this.i,{get:n.get,set:n.set}),r)}function G(e,t){return{t:e,i:t,o:K,u:z}}function K(e,t,n){return null===this.u(e,t,n,!1)?0:1}function z(e,t,n,r){var o,i;return e.m(t,n.value,null!=(o=null==(i=this.i)?void 0:i.enhancer)?o:C,r)}function $(e){return{t:"true",i:e,o:H,u:q}}function H(e,t,n,r){var o,i,a,s;if(n.get)return tn.o(e,t,n,r);if(n.set){var u=Y(t.toString(),n.set);return r===e.s?null===e.h(t,{configurable:!mn.safeDescriptors||e.l,set:u})?0:2:(kt(r,t,{configurable:!0,set:u}),2)}if(r!==e.s&&"function"==typeof n.value)return c(n.value)?(null!=(s=this.i)&&s.autoBind?In.bound:In).o(e,t,n,r):(null!=(a=this.i)&&a.autoBind?Cn.bound:Cn).o(e,t,n,r);var l,f=!1===(null==(o=this.i)?void 0:o.deep)?Zt.ref:Zt;return"function"==typeof n.value&&null!=(i=this.i)&&i.autoBind&&(n.value=n.value.bind(null!=(l=e.v)?l:e.s)),f.o(e,t,n,r)}function q(e,t,n,r){var o,i,a;return n.get?tn.u(e,t,n,r):n.set?e.h(t,{configurable:!mn.safeDescriptors||e.l,set:Y(t.toString(),n.set)},r):("function"==typeof n.value&&null!=(o=this.i)&&o.autoBind&&(n.value=n.value.bind(null!=(a=e.v)?a:e.s)),(!1===(null==(i=this.i)?void 0:i.deep)?Zt.ref:Zt).u(e,t,n,r))}function W(e){return e||zt}function X(e){return!0===e.deep?C:!1===e.deep?R:(t=e.defaultDecorator)&&null!=(n=null==(r=t.i)?void 0:r.enhancer)?n:C;var t,n,r}function J(e,t,n){if(!a(t))return Fe(e)?e:u(e)?Zt.object(e,t,n):Array.isArray(e)?Zt.array(e,t):p(e)?Zt.map(e,t):d(e)?Zt.set(e,t):"object"==typeof e&&null!==e?e:Zt.box(e,t);k(e,t,$t)}function Y(e,t,n,r){function o(){return Z(0,n,t,r||this,arguments)}return void 0===n&&(n=!1),o.isMobxAction=!0,an&&(sn.value=e,kt(o,"name",sn)),o}function Z(e,t,n,r,o){var i=Q(0,t);try{return n.apply(r,o)}catch(e){throw i.j=e,e}finally{ee(i)}}function Q(e,t){var n=mn.trackingDerivation,r=!t||!n;be();var o=mn.allowStateChanges;r&&(ce(),o=ne(!0));var i={O:r,A:n,g:o,_:fe(!0),S:!1,M:0,N:on++,V:rn};return rn=i.N,i}function ee(e){rn!==e.N&&t(30),rn=e.V,void 0!==e.j&&(mn.suppressReactionErrors=!0),re(e.g),he(e._),ge(),e.O&&le(e.A),mn.suppressReactionErrors=!1}function te(e,t){var n=ne(e);try{return t()}finally{re(n)}}function ne(e){var t=mn.allowStateChanges;return mn.allowStateChanges=e,t}function re(e){mn.allowStateChanges=e}function oe(e){return e instanceof vn}function ie(e){switch(e.R){case fn.T:return!1;case fn.k:case fn.C:return!0;case fn.K:for(var t=fe(!0),n=ce(),r=e.L,o=r.length,i=0;ir&&(r=s.R)}for(n.length=o,e.I=null,i=t.length;i--;){var u=t[i];0===u.B&&ve(u,e),u.B=0}for(;o--;){var c=n[o];1===c.B&&(c.B=0,de(c,e))}r!==fn.T&&(e.R=r,e.q())}(e),he(r),o}function se(e){var t=e.L;e.L=[];for(var n=t.length;n--;)ve(t[n],e);e.R=fn.k}function ue(e){var t=ce();try{return e()}finally{le(t)}}function ce(){var e=mn.trackingDerivation;return mn.trackingDerivation=null,e}function le(e){mn.trackingDerivation=e}function fe(e){var t=mn.allowStateReads;return mn.allowStateReads=e,t}function he(e){mn.allowStateReads=e}function pe(e){if(e.R!==fn.T){e.R=fn.T;for(var t=e.L,n=t.length;n--;)t[n].G=fn.T}}function de(e,t){e.W.add(t),e.G>t.R&&(e.G=t.R)}function ve(e,t){e.W.delete(t),0===e.W.size&&ye(e)}function ye(e){!1===e.H&&(e.H=!0,mn.pendingUnobservations.push(e))}function be(){mn.inBatch++}function ge(){if(0==--mn.inBatch){we();for(var e=mn.pendingUnobservations,t=0;t0&&ye(e),!1)}function me(e){e.G!==fn.C&&(e.G=fn.C,e.W.forEach((function(e){e.R===fn.T&&e.q(),e.R=fn.C})))}function we(){mn.inBatch>0||mn.isRunningReactions||On(Oe)}function Oe(){mn.isRunningReactions=!0;for(var e=mn.pendingReactions,t=0;e.length>0;){100==++t&&(console.error("[mobx] cycle in reaction: "+e[0]),e.splice(0));for(var n=e.splice(0),r=0,o=n.length;r",t,e):i(n)?Y(t,n,e):a(n)?k(t,n,e?jn:An):a(t)?j(P(e?"autoAction":"action",{name:t,autoAction:e})):void 0}}function Ee(e){return Z(0,!1,e,this,void 0)}function je(e){return i(e)&&!0===e.isMobxAction}function ke(e,t){function n(){e(i)}var r,o;void 0===t&&(t=Rt);var i,a=null!=(r=null==(o=t)?void 0:o.name)?r:"Autorun";if(t.scheduler||t.delay){var s=xe(t),u=!1;i=new wn(a,(function(){u||(u=!0,s((function(){u=!1,i.J||i.track(n)})))}),t.onError,t.requiresObservable)}else i=new wn(a,(function(){this.track(n)}),t.onError,t.requiresObservable);return i.Y(),i.Z()}function xe(e){return e.scheduler?e.scheduler:e.delay?function(t){return setTimeout(t,e.delay)}:Rn}function Ce(e,t,n){return Pe("onBO",e,t,n)}function Re(e,t,n){return Pe("onBUO",e,t,n)}function Pe(e,t,n,r){var o="function"==typeof r?bt(t,n):bt(t),a=i(r)?r:n,s=e+"L";return o[s]?o[s].add(a):o[s]=new Set([a]),function(){var e=o[s];e&&(e.delete(a),0===e.size&&delete o[s])}}function Te(e,t,n,r){var o=Dt(t),i=ct(e,r)[Vt];be();try{Nt(o).forEach((function(e){i.u(e,o[e],!n||!(e in n)||n[e])}))}finally{ge()}return e}function Me(e){var t,n={name:e.tt};return e.L&&e.L.length>0&&(n.dependencies=(t=e.L,Array.from(new Set(t))).map(Me)),n}function Ie(e){var t={name:e.tt};return function(e){return e.W&&e.W.size>0}(e)&&(t.observers=Array.from(function(e){return e.W}(e)).map(Ie)),t}function Ne(){this.message="FLOW_CANCELLED"}function De(e){i(e.cancel)&&e.cancel()}function Le(e){return!0===(null==e?void 0:e.isMobXFlow)}function Ve(e,t){if(void 0===t)return dn(e);if(!1===ft(e))return!1;if(!e[Vt].nt.has(t))return!1;var n=bt(e,t);return dn(n)}function Be(e,t){return!!e&&(void 0!==t?!!ft(e)&&e[Vt].nt.has(t):ft(e)||!!e[Vt]||Ft(e)||Sn(e)||dn(e))}function Fe(e){return Be(e)}function Ue(e){return ft(e)?e[Vt].it():Xn(e)||er(e)?Array.from(e.keys()):ut(e)?e.map((function(e,t){return t})):void t(5)}function Ge(e,n){return ft(e)?e[Vt].rt(n):Xn(e)||er(e)?e.has(n):ut(e)?n>=0&&n0}function Ze(e,t){var n=e.ut||(e.ut=[]);return n.push(t),o((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function Qe(e,n){var r=ce();try{for(var o=[].concat(e.ut||[]),i=0,a=o.length;i0}function tt(e,t){var n=e.st||(e.st=[]);return n.push(t),o((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function nt(e,t){var n=ce(),r=e.st;if(r){for(var o=0,i=(r=r.slice()).length;oir){for(var t=ir;t=0&&r++}t=wt(t),n=wt(n);var c="[object Array]"===u;if(!c){if("object"!=typeof t||"object"!=typeof n)return!1;var l=t.constructor,f=n.constructor;if(l!==f&&!(i(l)&&l instanceof l&&i(f)&&f instanceof f)&&"constructor"in t&&"constructor"in n)return!1}if(0===r)return!1;r<0&&(r=-1),a=a||[];for(var h=(o=o||[]).length;h--;)if(o[h]===t)return a[h]===n;if(o.push(t),a.push(n),c){if((h=t.length)!==n.length)return!1;for(;h--;)if(!e(t[h],n[h],r-1,o,a))return!1}else{var p,d=Object.keys(t);if(h=d.length,Object.keys(n).length!==h)return!1;for(;h--;)if(!b(n,p=d[h])||!e(t[p],n[p],r-1,o,a))return!1}return o.pop(),a.pop(),!0}(e,t,n)}function wt(e){return ut(e)?e.slice():p(e)||Xn(e)||d(e)||er(e)?Array.from(e.entries()):e}function Ot(e){return e[Symbol.iterator]=St,e}function St(){return this}v=1,Object.defineProperty(g,"__esModule",{value:!0});var At={},Et=Object.assign,jt=Object.getOwnPropertyDescriptor,kt=Object.defineProperty,xt=Object.prototype,Ct=[];Object.freeze(Ct);var Rt={};Object.freeze(Rt);var Pt="undefined"!=typeof Proxy,Tt=Object.toString(),Mt=function(){},It=void 0!==Object.getOwnPropertySymbols,Nt="undefined"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:It?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,Dt=Object.getOwnPropertyDescriptors||function(e){var t={};return Nt(e).forEach((function(n){t[n]=jt(e,n)})),t},Lt=Symbol("mobx-stored-annotations"),Vt=Symbol("mobx administration"),Bt=function(){function e(e){void 0===e&&(e="Atom"),this.tt=void 0,this.H=!1,this.X=!1,this.W=new Set,this.B=0,this.F=0,this.G=fn.k,this.onBOL=void 0,this.onBUOL=void 0,this.tt=e}var t=e.prototype;return t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.reportObserved=function(){return _e(this)},t.reportChanged=function(){be(),me(this),mn.stateVersion=mn.stateVersion0&&!e.__mobxGlobals&&(gn=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==(new bn).version&&(gn=!1),gn?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new bn):(setTimeout((function(){_n||t(35)}),1),new bn)}(),wn=function(){function e(e,t,n,r){void 0===e&&(e="Reaction"),this.tt=void 0,this.Kt=void 0,this.Lt=void 0,this.It=void 0,this.L=[],this.I=[],this.R=fn.k,this.B=0,this.D=0,this.P=0,this.J=!1,this.Pt=!1,this.Dt=!1,this.Bt=!1,this.ot=hn.NONE,this.tt=e,this.Kt=t,this.Lt=n,this.It=r}var t=e.prototype;return t.q=function(){this.Y()},t.Y=function(){this.Pt||(this.Pt=!0,mn.pendingReactions.push(this),we())},t.isScheduled=function(){return this.Pt},t.$=function(){if(!this.J){be(),this.Pt=!1;var e=mn.trackingContext;if(mn.trackingContext=this,ie(this)){this.Dt=!0;try{this.Kt()}catch(e){this.qt(e)}}mn.trackingContext=e,ge()}},t.track=function(e){if(!this.J){be(),this.Bt=!0;var t=mn.trackingContext;mn.trackingContext=this;var n=ae(this,e,void 0);mn.trackingContext=t,this.Bt=!1,this.Dt=!1,this.J&&se(this),oe(n)&&this.qt(n.cause),ge()}},t.qt=function(e){var t=this;if(this.Lt)this.Lt(e,this);else{if(mn.disableErrorBoundaries)throw e;mn.suppressReactionErrors||console.error("[mobx] uncaught error in '"+this+"'",e),mn.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},t.dispose=function(){this.J||(this.J=!0,this.Bt||(be(),se(this),ge()))},t.Z=function(){var e=this.dispose.bind(this);return e[Vt]=this,e},t.toString=function(){return"Reaction["+this.tt+"]"},t.trace=function(e){void 0===e&&(e=!1),$e(this,e)},e}(),On=function(e){return e()},Sn=h("Reaction",wn),An=P("action"),En=P("action.bound",{bound:!0}),jn=P("autoAction",{autoAction:!0}),kn=P("autoAction.bound",{autoAction:!0,bound:!0}),xn=Ae(!1);Object.assign(xn,An);var Cn=Ae(!0);Object.assign(Cn,jn),xn.bound=j(En),Cn.bound=j(kn);var Rn=function(e){return e()},Pn=0;Ne.prototype=Object.create(Error.prototype);var Tn=N("flow"),Mn=N("flow.bound",{bound:!0}),In=Object.assign((function(e,t){if(a(t))return k(e,t,Tn);var n=e,r=n.name||"",o=function(){var e,t=this,o=arguments,a=++Pn,s=xn(r+" - runid: "+a+" - init",n).apply(t,o),u=void 0,c=new Promise((function(t,n){function o(e){var t;u=void 0;try{t=xn(r+" - runid: "+a+" - yield "+f++,s.next).call(s,e)}catch(e){return n(e)}l(t)}function c(e){var t;u=void 0;try{t=xn(r+" - runid: "+a+" - yield "+f++,s.throw).call(s,e)}catch(e){return n(e)}l(t)}function l(e){if(!i(null==e?void 0:e.then))return e.done?t(e.value):(u=Promise.resolve(e.value)).then(o,c);e.then(l,n)}var f=0;e=n,o(void 0)}));return c.cancel=xn(r+" - runid: "+a+" - cancel",(function(){try{u&&De(u);var t=s.return(void 0),n=Promise.resolve(t.value);n.then(Mt,Mt),De(n),e(new Ne)}catch(t){e(t)}})),c};return o.isMobXFlow=!0,o}),Tn);In.bound=j(Mn);var Nn={has:function(e,t){return Je(e).rt(t)},get:function(e,t){return Je(e).lt(t)},set:function(e,t,n){var r;return!!a(t)&&(null==(r=Je(e).dt(t,n,!0))||r)},deleteProperty:function(e,t){var n;return!!a(t)&&(null==(n=Je(e).Gt(t,!0))||n)},defineProperty:function(e,t,n){var r;return null==(r=Je(e).h(t,n))||r},ownKeys:function(e){return Je(e).et()},preventExtensions:function(){t(13)}},Dn=Symbol("mobx-keys"),Ln="update",Vn={get:function(e,t){var n=e[Vt];return t===Vt?n:"length"===t?n.Wt():"string"!=typeof t||isNaN(t)?b(Fn,t)?Fn[t]:e[t]:n.lt(parseInt(t))},set:function(e,t,n){var r=e[Vt];return"length"===t&&r.Ht(n),"symbol"==typeof t||isNaN(t)?e[t]=n:r.dt(parseInt(t),n),!0},preventExtensions:function(){t(15)}},Bn=function(){function e(e,t,n,r){void 0===e&&(e="ObservableArray"),this.Xt=void 0,this.Ut=void 0,this.at=void 0,this.nt=[],this.ut=void 0,this.st=void 0,this.Ft=void 0,this.dehancer=void 0,this.v=void 0,this.zt=0,this.Xt=n,this.Ut=r,this.at=new Bt(e),this.Ft=function(e,n){return t(e,n,"ObservableArray[..]")}}var n=e.prototype;return n.$t=function(e){return void 0!==this.dehancer?this.dehancer(e):e},n.ct=function(e){return void 0!==this.dehancer&&e.length>0?e.map(this.dehancer):e},n.At=function(e){return Ze(this,e)},n.gt=function(e,t){return void 0===t&&(t=!1),t&&e({observableKind:"array",object:this.v,debugObjectName:this.at.tt,type:"splice",index:0,added:this.nt.slice(),addedCount:this.nt.length,removed:[],removedCount:0}),tt(this,e)},n.Wt=function(){return this.at.reportObserved(),this.nt.length},n.Ht=function(e){("number"!=typeof e||isNaN(e)||e<0)&&t("Out of range: "+e);var n=this.nt.length;if(e!==n)if(e>n){for(var r=new Array(e-n),o=0;o0&&vt(e+n+1)},n.ft=function(e,t,n){var r=this,o=this.nt.length;if(void 0===e?e=0:e>o?e=o:e<0&&(e=Math.max(0,o+e)),t=1===arguments.length?o-e:null==t?0:Math.max(0,Math.min(t,o-e)),void 0===n&&(n=Ct),Ye(this)){var i=Qe(this,{object:this.v,type:"splice",index:e,removedCount:t,added:n});if(!i)return Ct;t=i.removedCount,n=i.added}if(n=0===n.length?n:n.map((function(e){return r.Ft(e,void 0)})),this.Ut){var a=n.length-t;this.Jt(o,a)}var s=this.Yt(e,t,n);return 0===t&&0===n.length||this.Qt(e,n,s),this.ct(s)},n.Yt=function(e,t,n){var r;if(n.length<1e4)return(r=this.nt).splice.apply(r,[e,t].concat(n));var o=this.nt.slice(e,e+t),i=this.nt.slice(e+t);this.nt.length+=n.length-t;for(var a=0;a=this.nt.length))return this.at.reportObserved(),this.$t(this.nt[e]);console.warn("[mobx] Out of bounds read: "+e)},n.dt=function(e,n){var r=this.nt;if(this.Ut&&e>r.length&&t(17,e,r.length),e2?n-2:0),o=2;o-1&&(this.splice(n,1),!0)}};ot("concat",it),ot("flat",it),ot("includes",it),ot("indexOf",it),ot("join",it),ot("lastIndexOf",it),ot("slice",it),ot("toString",it),ot("toLocaleString",it),ot("every",at),ot("filter",at),ot("find",at),ot("findIndex",at),ot("flatMap",at),ot("forEach",at),ot("map",at),ot("some",at),ot("reduce",st),ot("reduceRight",st);var Un,Gn,Kn=h("ObservableArrayAdministration",Bn),zn={},$n="add";Un=Symbol.iterator,Gn=Symbol.toStringTag;var Hn,qn,Wn=function(){function e(e,n,r){var o=this;void 0===n&&(n=C),void 0===r&&(r="ObservableMap"),this.Ft=void 0,this.tt=void 0,this[Vt]=zn,this.pt=void 0,this.yt=void 0,this.bt=void 0,this.ut=void 0,this.st=void 0,this.dehancer=void 0,this.Ft=n,this.tt=r,i(Map)||t(18),this.bt=x("ObservableMap.keys()"),this.pt=new Map,this.yt=new Map,te(!0,(function(){o.merge(e)}))}var n=e.prototype;return n.rt=function(e){return this.pt.has(e)},n.has=function(e){var t=this;if(!mn.trackingDerivation)return this.rt(e);var n=this.yt.get(e);if(!n){var r=n=new cn(this.rt(e),R,"ObservableMap.key?",!1);this.yt.set(e,r),Re(r,(function(){return t.yt.delete(e)}))}return n.get()},n.set=function(e,t){var n=this.rt(e);if(Ye(this)){var r=Qe(this,{type:n?Ln:$n,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.tn(e,t):this.nn(e,t),this},n.delete=function(e){var t=this;if(Ye(this)&&!Qe(this,{type:"delete",object:this,name:e}))return!1;if(this.rt(e)){var n=et(this),r=n?{observableKind:"map",debugObjectName:this.tt,type:"delete",object:this,oldValue:this.pt.get(e).jt,name:e}:null;return qe((function(){var n;t.bt.reportChanged(),null==(n=t.yt.get(e))||n.xt(!1),t.pt.get(e).xt(void 0),t.pt.delete(e)})),n&&nt(this,r),!0}return!1},n.tn=function(e,t){var n=this.pt.get(e);if((t=n.Ot(t))!==mn.UNCHANGED){var r=et(this),o=r?{observableKind:"map",debugObjectName:this.tt,type:Ln,object:this,oldValue:n.jt,name:e,newValue:t}:null;n.xt(t),r&&nt(this,o)}},n.nn=function(e,t){var n=this;qe((function(){var r,o=new cn(t,n.Ft,"ObservableMap.key",!1);n.pt.set(e,o),t=o.jt,null==(r=n.yt.get(e))||r.xt(!0),n.bt.reportChanged()}));var r=et(this);r&&nt(this,r?{observableKind:"map",debugObjectName:this.tt,type:$n,object:this,name:e,newValue:t}:null)},n.get=function(e){return this.has(e)?this.$t(this.pt.get(e).get()):this.$t(void 0)},n.$t=function(e){return void 0!==this.dehancer?this.dehancer(e):e},n.keys=function(){return this.bt.reportObserved(),this.pt.keys()},n.values=function(){var e=this,t=this.keys();return Ot({next:function(){var n=t.next(),r=n.done;return{done:r,value:r?void 0:e.get(n.value)}}})},n.entries=function(){var e=this,t=this.keys();return Ot({next:function(){var n=t.next(),r=n.done,o=n.value;return{done:r,value:r?void 0:[o,e.get(o)]}}})},n[Un]=function(){return this.entries()},n.forEach=function(e,t){for(var n,r=E(this);!(n=r()).done;){var o=n.value;e.call(t,o[1],o[0],this)}},n.merge=function(e){var n=this;return Xn(e)&&(e=new Map(e)),qe((function(){u(e)?function(e){var t=Object.keys(e);if(!It)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter((function(t){return xt.propertyIsEnumerable.call(e,t)}))):t}(e).forEach((function(t){return n.set(t,e[t])})):Array.isArray(e)?e.forEach((function(e){return n.set(e[0],e[1])})):p(e)?(e.constructor!==Map&&t(19,e),e.forEach((function(e,t){return n.set(t,e)}))):null!=e&&t(20,e)})),this},n.clear=function(){var e=this;qe((function(){ue((function(){for(var t,n=E(e.keys());!(t=n()).done;)e.delete(t.value)}))}))},n.replace=function(e){var n=this;return qe((function(){for(var r,o=function(e){if(p(e)||Xn(e))return e;if(Array.isArray(e))return new Map(e);if(u(e)){var n=new Map;for(var r in e)n.set(r,e[r]);return n}return t(21,e)}(e),i=new Map,a=!1,s=E(n.pt.keys());!(r=s()).done;){var c=r.value;if(!o.has(c))if(n.delete(c))a=!0;else{var l=n.pt.get(c);i.set(c,l)}}for(var f,h=E(o.entries());!(f=h()).done;){var d=f.value,v=d[0],y=d[1],b=n.pt.has(v);if(n.set(v,y),n.pt.has(v)){var g=n.pt.get(v);i.set(v,g),b||(a=!0)}}if(!a)if(n.pt.size!==i.size)n.bt.reportChanged();else for(var _=n.pt.keys(),m=i.keys(),w=_.next(),O=m.next();!w.done;){if(w.value!==O.value){n.bt.reportChanged();break}w=_.next(),O=m.next()}n.pt=i})),this},n.toString=function(){return"[object ObservableMap]"},n.toJSON=function(){return Array.from(this)},n.gt=function(e){return tt(this,e)},n.At=function(e){return Ze(this,e)},m(e,[{key:"size",get:function(){return this.bt.reportObserved(),this.pt.size}},{key:Gn,get:function(){return"Map"}}]),e}(),Xn=h("ObservableMap",Wn),Jn={};Hn=Symbol.iterator,qn=Symbol.toStringTag;var Yn,Zn,Qn=function(){function e(e,n,r){void 0===n&&(n=C),void 0===r&&(r="ObservableSet"),this.tt=void 0,this[Vt]=Jn,this.pt=new Set,this.at=void 0,this.st=void 0,this.ut=void 0,this.dehancer=void 0,this.Ft=void 0,this.tt=r,i(Set)||t(22),this.at=x(this.tt),this.Ft=function(e,t){return n(e,t,r)},e&&this.replace(e)}var n=e.prototype;return n.$t=function(e){return void 0!==this.dehancer?this.dehancer(e):e},n.clear=function(){var e=this;qe((function(){ue((function(){for(var t,n=E(e.pt.values());!(t=n()).done;)e.delete(t.value)}))}))},n.forEach=function(e,t){for(var n,r=E(this);!(n=r()).done;){var o=n.value;e.call(t,o,o,this)}},n.add=function(e){var t=this;if(Ye(this)&&!Qe(this,{type:$n,object:this,newValue:e}))return this;if(!this.has(e)){qe((function(){t.pt.add(t.Ft(e,void 0)),t.at.reportChanged()}));var n=et(this);n&&nt(this,n?{observableKind:"set",debugObjectName:this.tt,type:$n,object:this,newValue:e}:null)}return this},n.delete=function(e){var t=this;if(Ye(this)&&!Qe(this,{type:"delete",object:this,oldValue:e}))return!1;if(this.has(e)){var n=et(this),r=n?{observableKind:"set",debugObjectName:this.tt,type:"delete",object:this,oldValue:e}:null;return qe((function(){t.at.reportChanged(),t.pt.delete(e)})),n&&nt(this,r),!0}return!1},n.has=function(e){return this.at.reportObserved(),this.pt.has(this.$t(e))},n.entries=function(){var e=0,t=Array.from(this.keys()),n=Array.from(this.values());return Ot({next:function(){var r=e;return e+=1,r=0&&mn.globalReactionErrorHandlers.splice(t,1)}},g.override=Gt,g.ownKeys=Ke,g.reaction=function(e,t,n){function r(){if(d=!1,!y.J){var t=!1;y.track((function(){var n=te(!1,(function(){return e(y)}));t=p||!v(s,n),u=s,s=n})),(p&&n.fireImmediately||!p&&t)&&l(s,u,y),p=!1}}var o;void 0===n&&(n=Rt);var i,a,s,u,c=null!=(o=n.name)?o:"Reaction",l=xn(c,n.onError?(i=n.onError,a=t,function(){try{return a.apply(this,arguments)}catch(e){i.call(this,e)}}):t),f=!n.scheduler&&!n.delay,h=xe(n),p=!0,d=!1,v=n.compareStructural?Ut.structural:n.equals||Ut.default,y=new wn(c,(function(){p||f?r():d||(d=!0,h(r))}),n.onError,n.requiresObservable);return y.Y(),y.Z()},g.remove=function(e,n){ft(e)?e[Vt].Gt(n):Xn(e)||er(e)?e.delete(n):ut(e)?("number"!=typeof n&&(n=parseInt(n,10)),e.splice(n,1)):t(9)},g.runInAction=Ee,g.set=function e(n,r,o){if(2!==arguments.length||er(n))ft(n)?n[Vt].dt(r,o):Xn(n)?n.set(r,o):er(n)?n.add(r):ut(n)?("number"!=typeof r&&(r=parseInt(r,10)),r<0&&t("Invalid index: '"+r+"'"),be(),r>=n.length&&(n.length=r+1),n[r]=o,ge()):t(8);else{be();var i=r;try{for(var a in i)e(n,a,i[a])}finally{ge()}}},g.spy=Se,g.toJS=function(e){return function e(t,n){if(null==t||"object"!=typeof t||t instanceof Date||!Fe(t))return t;if(ln(t)||dn(t))return e(t.get(),n);if(n.has(t))return n.get(t);if(ut(t)){var r=ze(n,t,new Array(t.length));return t.forEach((function(t,o){r[o]=e(t,n)})),r}if(er(t)){var o=ze(n,t,new Set);return t.forEach((function(t){o.add(e(t,n))})),o}if(Xn(t)){var i=ze(n,t,new Map);return t.forEach((function(t,r){i.set(r,e(t,n))})),i}var a=ze(n,t,{});return Ke(t).forEach((function(r){xt.propertyIsEnumerable.call(t,r)&&(a[r]=e(t[r],n))})),a}(e,new Map)},g.trace=$e,g.transaction=qe,g.untracked=ue,g.values=function(e){return ft(e)?Ue(e).map((function(t){return e[t]})):Xn(e)?Ue(e).map((function(t){return e.get(t)})):er(e)?Array.from(e.values()):ut(e)?e.slice():void t(6)},g.when=function(e,t,n){return 1===arguments.length||t&&"object"==typeof t?Xe(e,t):We(e,t,n||{})},g}var m,w={};function O(){if(m)return w;m=1,Object.defineProperty(w,"__esModule",{value:!0});var t={0:"Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'",1:function(e,t){return"Cannot apply '"+e+"' to '"+t.toString()+"': Field not found."},5:"'keys()' can only be used on observable objects, arrays, sets and maps",6:"'values()' can only be used on observable objects, arrays, sets and maps",7:"'entries()' can only be used on observable objects, arrays and maps",8:"'set()' can only be used on observable objects, arrays and maps",9:"'remove()' can only be used on observable objects, arrays and maps",10:"'has()' can only be used on observable objects, arrays and maps",11:"'get()' can only be used on observable objects, arrays and maps",12:"Invalid annotation",13:"Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)",14:"Intercept handlers should return nothing or a change object",15:"Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)",16:"Modification exception: the internal structure of an observable array was changed.",17:function(e,t){return"[mobx.array] Index out of bounds, "+e+" is larger than "+t},18:"mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js",19:function(e){return"Cannot initialize from classes that inherit from Map: "+e.constructor.name},20:function(e){return"Cannot initialize map from "+e},21:function(e){return"Cannot convert to map from '"+e+"'"},22:"mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js",23:"It is not possible to get index atoms from arrays",24:function(e){return"Cannot obtain administration from "+e},25:function(e,t){return"the entry '"+e+"' does not exist in the observable map '"+t+"'"},26:"please specify a property",27:function(e,t){return"no observable property '"+e.toString()+"' found on the observable object '"+t+"'"},28:function(e){return"Cannot obtain atom from "+e},29:"Expecting some object",30:"invalid action stack. did you forget to finish an action?",31:"missing option for computed: get",32:function(e,t){return"Cycle detected in computation "+e+": "+t},33:function(e){return"The setter of computed value '"+e+"' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?"},34:function(e){return"[ComputedValue '"+e+"'] It is not possible to assign a new value to a computed value."},35:"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`",36:"isolateGlobalState should be called before MobX is running any reactions",37:function(e){return"[mobx] `observableArray."+e+"()` mutates the array in-place, which is not allowed inside a derivation. Use `array.slice()."+e+"()` instead"},38:"'ownKeys()' can only be used on observable objects",39:"'defineProperty()' can only be used on observable objects"};function n(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;oe.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var z=Symbol("mobx-stored-annotations");function $(e){return Object.assign((function(t,n){H(t,n,e)}),e)}function H(e,t,r){(I(e,z)||E(e,z,V({},e[z])),ne(r)&&!I(e[z],t))&&n("'"+(e.constructor.name+".prototype."+t.toString())+"' is decorated with 'override', but no such decorated member was found on prototype.");!function(e,t,r){if(!ne(t)&&I(e[z],r)){var o=e.constructor.name+".prototype."+r.toString(),i=e[z][r].annotationType_;n("Cannot apply '@"+t.annotationType_+"' to '"+o+"':\nThe field is already decorated with '@"+i+"'.\nRe-decorating fields is not allowed.\nUse '@override' decorator for methods overridden by subclass.")}}(e,r,t),ne(r)||(e[z][t]=r)}var q=Symbol("mobx administration"),W=function(){function e(e){void 0===e&&(e="Atom@"+v()),this.name_=void 0,this.isPendingUnobservation_=!1,this.isBeingObserved_=!1,this.observers_=new Set,this.diffValue_=0,this.lastAccessedBy_=0,this.lowestObserverState_=Ze.NOT_TRACKING_,this.onBOL=void 0,this.onBUOL=void 0,this.name_=e}var t=e.prototype;return t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.reportObserved=function(){return At(this)},t.reportChanged=function(){Ot(),Et(this),gt.stateVersion=gt.stateVersion0;gt.allowStateChanges||!t&&"always"!==gt.enforceActions||console.warn("[MobX] "+(gt.enforceActions?"Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: ":"Side effects like changing state are not allowed at this point. Are you trying to modify state from, for example, a computed value or the render function of a React component? You can wrap side effects in 'runInAction' (or decorate functions with 'action') if needed. Tried to modify: ")+e.name_)}function at(e,t,n){var r=ft(!0);pt(e),e.newObserving_=new Array(e.observing_.length+100),e.unboundDepsCount_=0,e.runId_=++gt.runId;var o,i=gt.trackingDerivation;if(gt.trackingDerivation=e,gt.inBatch++,!0===gt.disableErrorBoundaries)o=t.call(n);else try{o=t.call(n)}catch(e){o=new nt(e)}return gt.inBatch--,gt.trackingDerivation=i,function(e){for(var t=e.observing_,n=e.observing_=e.newObserving_,r=Ze.UP_TO_DATE_,o=0,i=e.unboundDepsCount_,a=0;ar&&(r=s.dependenciesState_)}n.length=o,e.newObserving_=null,i=t.length;for(;i--;){var u=t[i];0===u.diffValue_&&mt(u,e),u.diffValue_=0}for(;o--;){var c=n[o];1===c.diffValue_&&(c.diffValue_=0,_t(c,e))}r!==Ze.UP_TO_DATE_&&(e.dependenciesState_=r,e.onBecomeStale_())}(e),function(e){if(0!==e.observing_.length)return;("boolean"==typeof e.requiresObservable_?e.requiresObservable_:gt.reactionRequiresObservable)&&console.warn("[mobx] Derivation '"+e.name_+"' is created/updated without reading any observable value.")}(e),ht(r),o}function st(e){var t=e.observing_;e.observing_=[];for(var n=t.length;n--;)mt(t[n],e);e.dependenciesState_=Ze.NOT_TRACKING_}function ut(e){var t=ct();try{return e()}finally{lt(t)}}function ct(){var e=gt.trackingDerivation;return gt.trackingDerivation=null,e}function lt(e){gt.trackingDerivation=e}function ft(e){var t=gt.allowStateReads;return gt.allowStateReads=e,t}function ht(e){gt.allowStateReads=e}function pt(e){if(e.dependenciesState_!==Ze.UP_TO_DATE_){e.dependenciesState_=Ze.UP_TO_DATE_;for(var t=e.observing_,n=t.length;n--;)t[n].lowestObserverState_=Ze.UP_TO_DATE_}}var dt=["mobxGuid","spyListeners","enforceActions","computedRequiresReaction","reactionRequiresObservable","observableRequiresReaction","allowStateReads","disableErrorBoundaries","runId","UNCHANGED","useProxies"],vt=function(){this.version=6,this.UNCHANGED={},this.trackingDerivation=null,this.trackingContext=null,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!1,this.allowStateReads=!0,this.enforceActions=!0,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1,this.useProxies=!0,this.verifyProxies=!1,this.safeDescriptors=!0,this.stateVersion=Number.MIN_SAFE_INTEGER},yt=!0,bt=!1,gt=function(){var e=o();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(yt=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==(new vt).version&&(yt=!1),yt?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new vt):(setTimeout((function(){bt||n(35)}),1),new vt)}();function _t(e,t){e.observers_.add(t),e.lowestObserverState_>t.dependenciesState_&&(e.lowestObserverState_=t.dependenciesState_)}function mt(e,t){e.observers_.delete(t),0===e.observers_.size&&wt(e)}function wt(e){!1===e.isPendingUnobservation_&&(e.isPendingUnobservation_=!0,gt.pendingUnobservations.push(e))}function Ot(){gt.inBatch++}function St(){if(0==--gt.inBatch){Rt();for(var e=gt.pendingUnobservations,t=0;t0&&wt(e),!1)}function Et(e){e.lowestObserverState_!==Ze.STALE_&&(e.lowestObserverState_=Ze.STALE_,e.observers_.forEach((function(t){t.dependenciesState_===Ze.UP_TO_DATE_&&(t.isTracing_!==Qe.NONE&&jt(t,e),t.onBecomeStale_()),t.dependenciesState_=Ze.STALE_})))}function jt(e,t){if(console.log("[mobx.trace] '"+e.name_+"' is invalidated due to a change in: '"+t.name_+"'"),e.isTracing_===Qe.BREAK){var n=[];kt(an(e),n,1),new Function("debugger;\n/*\nTracing '"+e.name_+"'\n\nYou are entering this break point because derivation '"+e.name_+"' is being traced and '"+t.name_+"' is now forcing it to update.\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\n\n"+(e instanceof et?e.derivation.toString().replace(/[*]\//g,"/"):"")+"\n\nThe dependencies for this derivation are:\n\n"+n.join("\n")+"\n*/\n ")()}}function kt(e,t,n){t.length>=1e3?t.push("(and many more)"):(t.push(""+"\t".repeat(n-1)+e.name),e.dependencies&&e.dependencies.forEach((function(e){return kt(e,t,n+1)})))}var xt=function(){function e(e,t,n,r){void 0===e&&(e="Reaction@"+v()),this.name_=void 0,this.onInvalidate_=void 0,this.errorHandler_=void 0,this.requiresObservable_=void 0,this.observing_=[],this.newObserving_=[],this.dependenciesState_=Ze.NOT_TRACKING_,this.diffValue_=0,this.runId_=0,this.unboundDepsCount_=0,this.isDisposed_=!1,this.isScheduled_=!1,this.isTrackPending_=!1,this.isRunning_=!1,this.isTracing_=Qe.NONE,this.name_=e,this.onInvalidate_=t,this.errorHandler_=n,this.requiresObservable_=r}var t=e.prototype;return t.onBecomeStale_=function(){this.schedule_()},t.schedule_=function(){this.isScheduled_||(this.isScheduled_=!0,gt.pendingReactions.push(this),Rt())},t.isScheduled=function(){return this.isScheduled_},t.runReaction_=function(){if(!this.isDisposed_){Ot(),this.isScheduled_=!1;var e=gt.trackingContext;if(gt.trackingContext=this,ot(this)){this.isTrackPending_=!0;try{this.onInvalidate_(),this.isTrackPending_&&Mt()&&It({name:this.name_,type:"scheduled-reaction"})}catch(e){this.reportExceptionInDerivation_(e)}}gt.trackingContext=e,St()}},t.track=function(e){if(!this.isDisposed_){Ot();var t,n=Mt();n&&(t=Date.now(),Nt({name:this.name_,type:"reaction"})),this.isRunning_=!0;var r=gt.trackingContext;gt.trackingContext=this;var o=at(this,e,void 0);gt.trackingContext=r,this.isRunning_=!1,this.isTrackPending_=!1,this.isDisposed_&&st(this),rt(o)&&this.reportExceptionInDerivation_(o.cause),n&&Lt({time:Date.now()-t}),St()}},t.reportExceptionInDerivation_=function(e){var t=this;if(this.errorHandler_)this.errorHandler_(e,this);else{if(gt.disableErrorBoundaries)throw e;var n="[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '"+this+"'";gt.suppressReactionErrors?console.warn("[mobx] (error in reaction '"+this.name_+"' suppressed, fix error of causing action below)"):console.error(n,e),Mt()&&It({type:"error",name:this.name_,message:n,error:""+e}),gt.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},t.dispose=function(){this.isDisposed_||(this.isDisposed_=!0,this.isRunning_||(Ot(),st(this),St()))},t.getDisposer_=function(){var e=this.dispose.bind(this);return e[q]=this,e},t.toString=function(){return"Reaction["+this.name_+"]"},t.trace=function(e){void 0===e&&(e=!1),An(this,e)},e}();var Ct=function(e){return e()};function Rt(){gt.inBatch>0||gt.isRunningReactions||Ct(Pt)}function Pt(){gt.isRunningReactions=!0;for(var e=gt.pendingReactions,t=0;e.length>0;){100==++t&&(console.error("Reaction doesn't converge to a stable state after 100 iterations. Probably there is a cycle in the reactive function: "+e[0]),e.splice(0));for(var n=e.splice(0),r=0,o=n.length;r4&&n("'extendObservable' expected 2-4 arguments"),"object"!=typeof e&&n("'extendObservable' expects an object as first argument"),or(e)&&n("'extendObservable' should not be used on maps, use map.merge instead"),S(t)||n("'extendObservable' only accepts plain objects as second argument"),(gn(t)||gn(r))&&n("Extending an object with another observable (object) is not supported");var i=N(t),a=fr(e,o)[q];Ot();try{P(i).forEach((function(e){a.extend_(e,i[e],!r||(!(e in r)||r[e]))}))}finally{St()}return e}function an(e,t){return sn(kr(e,t))}function sn(e){var t,n={name:e.name_};return e.observing_&&e.observing_.length>0&&(n.dependencies=(t=e.observing_,Array.from(new Set(t))).map(sn)),n}function un(e){var t={name:e.name_};return function(e){return e.observers_&&e.observers_.size>0}(e)&&(t.observers=Array.from(function(e){return e.observers_}(e)).map(un)),t}var cn=0;function ln(){this.message="FLOW_CANCELLED"}ln.prototype=Object.create(Error.prototype);var fn=se("flow"),hn=se("flow.bound",{bound:!0}),pn=Object.assign((function(e,t){if(_(t))return H(e,t,fn);1!==arguments.length&&n("Flow expects single argument with generator function");var r=e,o=r.name||"",i=function(){var e,t=this,n=arguments,i=++cn,a=qt(o+" - runid: "+i+" - init",r).apply(t,n),s=void 0,u=new Promise((function(t,n){var r=0;function u(e){var t;s=void 0;try{t=qt(o+" - runid: "+i+" - yield "+r++,a.next).call(a,e)}catch(e){return n(e)}l(t)}function c(e){var t;s=void 0;try{t=qt(o+" - runid: "+i+" - yield "+r++,a.throw).call(a,e)}catch(e){return n(e)}l(t)}function l(e){if(!g(null==e?void 0:e.then))return e.done?t(e.value):(s=Promise.resolve(e.value)).then(u,c);e.then(l,n)}e=n,u(void 0)}));return u.cancel=qt(o+" - runid: "+i+" - cancel",(function(){try{s&&dn(s);var t=a.return(void 0),n=Promise.resolve(t.value);n.then(b,b),dn(n),e(new ln)}catch(t){e(t)}})),u};return i.isMobXFlow=!0,i}),fn);function dn(e){g(e.cancel)&&e.cancel()}function vn(e){return!0===(null==e?void 0:e.isMobXFlow)}function yn(e,t){if(void 0===t)return tt(e);if(!1===dr(e))return!1;if(!e[q].values_.has(t))return!1;var n=kr(e,t);return tt(n)}function bn(e,t){return!!e&&(void 0!==t?or(e)||Yn(e)?n("isObservable(object, propertyName) is not supported for arrays and maps. Use map.has or array.length instead."):!!dr(e)&&e[q].values_.has(t):dr(e)||!!e[q]||X(e)||Tt(e)||tt(e))}function gn(e){return 1!==arguments.length&&n("isObservable expects only 1 argument. Use isObservableProp to inspect the observability of a property"),bn(e)}function _n(e){return dr(e)?e[q].keys_():or(e)||sr(e)?Array.from(e.keys()):Yn(e)?e.map((function(e,t){return t})):void n(5)}function mn(e,t){return dr(e)?e[q].has_(t):or(e)||sr(e)?e.has(t):Yn(e)?t>=0&&t0}function Tn(e,t){var n=e.interceptors_||(e.interceptors_=[]);return n.push(t),y((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function Mn(e,t){var r=ct();try{for(var o=[].concat(e.interceptors_||[]),i=0,a=o.length;i0}function Nn(e,t){var n=e.changeListeners_||(e.changeListeners_=[]);return n.push(t),y((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function Dn(e,t){var n=ct(),r=e.changeListeners_;if(r){for(var o=0,i=(r=r.slice()).length;o0?e.map(this.dehancer):e},t.intercept_=function(e){return Tn(this,e)},t.observe_=function(e,t){return void 0===t&&(t=!1),t&&e({observableKind:"array",object:this.proxy_,debugObjectName:this.atom_.name_,type:"splice",index:0,added:this.values_.slice(),addedCount:this.values_.length,removed:[],removedCount:0}),Nn(this,e)},t.getArrayLength_=function(){return this.atom_.reportObserved(),this.values_.length},t.setArrayLength_=function(e){("number"!=typeof e||isNaN(e)||e<0)&&n("Out of range: "+e);var t=this.values_.length;if(e!==t)if(e>t){for(var r=new Array(e-t),o=0;o0&&Er(e+t+1)},t.spliceWithArray_=function(e,t,n){var r=this;it(this.atom_);var o=this.values_.length;if(void 0===e?e=0:e>o?e=o:e<0&&(e=Math.max(0,o+e)),t=1===arguments.length?o-e:null==t?0:Math.max(0,Math.min(t,o-e)),void 0===n&&(n=c),Pn(this)){var i=Mn(this,{object:this.proxy_,type:Vn,index:e,removedCount:t,added:n});if(!i)return c;t=i.removedCount,n=i.added}n=0===n.length?n:n.map((function(e){return r.enhancer_(e,void 0)})),this.legacyMode_;var a=n.length-t;this.updateArrayLength_(o,a);var s=this.spliceItemsIntoValues_(e,t,n);return 0===t&&0===n.length||this.notifyArraySplice_(e,n,s),this.dehanceValues_(s)},t.spliceItemsIntoValues_=function(e,t,n){var r;if(n.length<1e4)return(r=this.values_).splice.apply(r,[e,t].concat(n));var o=this.values_.slice(e,e+t),i=this.values_.slice(e+t);this.values_.length+=n.length-t;for(var a=0;a=this.values_.length))return this.atom_.reportObserved(),this.dehanceValue_(this.values_[e]);console.warn("[mobx.array] Attempt to read an array index ("+e+") that is out of bounds ("+this.values_.length+"). Please check length first. Out of bound indices will not be tracked by MobX")},t.set_=function(e,t){var r=this.values_;if(this.legacyMode_&&e>r.length&&n(17,e,r.length),e2?n-2:0),o=2;o-1&&(this.splice(n,1),!0)}};function zn(e,t){"function"==typeof Array.prototype[e]&&(Kn[e]=t(e))}function $n(e){return function(){var t=this[q];t.atom_.reportObserved();var n=t.dehanceValues_(t.values_);return n[e].apply(n,arguments)}}function Hn(e){return function(t,n){var r=this,o=this[q];return o.atom_.reportObserved(),o.dehanceValues_(o.values_)[e]((function(e,o){return t.call(n,e,o,r)}))}}function qn(e){return function(){var t=this,n=this[q];n.atom_.reportObserved();var r=n.dehanceValues_(n.values_),o=arguments[0];return arguments[0]=function(e,n,r){return o(e,n,r,t)},r[e].apply(r,arguments)}}zn("concat",$n),zn("flat",$n),zn("includes",$n),zn("indexOf",$n),zn("join",$n),zn("lastIndexOf",$n),zn("slice",$n),zn("toString",$n),zn("toLocaleString",$n),zn("every",Hn),zn("filter",Hn),zn("find",Hn),zn("findIndex",Hn),zn("flatMap",Hn),zn("forEach",Hn),zn("map",Hn),zn("some",Hn),zn("reduce",qn),zn("reduceRight",qn);var Wn,Xn,Jn=k("ObservableArrayAdministration",Un);function Yn(e){return O(e)&&Jn(e[q])}var Zn={},Qn="add",er="delete";Wn=Symbol.iterator,Xn=Symbol.toStringTag;var tr,nr,rr=function(){function e(e,t,r){var o=this;void 0===t&&(t=Z),void 0===r&&(r="ObservableMap@"+v()),this.enhancer_=void 0,this.name_=void 0,this[q]=Zn,this.data_=void 0,this.hasMap_=void 0,this.keysAtom_=void 0,this.interceptors_=void 0,this.changeListeners_=void 0,this.dehancer=void 0,this.enhancer_=t,this.name_=r,g(Map)||n(18),this.keysAtom_=J(this.name_+".keys()"),this.data_=new Map,this.hasMap_=new Map,He(!0,(function(){o.merge(e)}))}var t=e.prototype;return t.has_=function(e){return this.data_.has(e)},t.has=function(e){var t=this;if(!gt.trackingDerivation)return this.has_(e);var n=this.hasMap_.get(e);if(!n){var r=n=new Je(this.has_(e),Q,this.name_+"."+T(e)+"?",!1);this.hasMap_.set(e,r),tn(r,(function(){return t.hasMap_.delete(e)}))}return n.get()},t.set=function(e,t){var n=this.has_(e);if(Pn(this)){var r=Mn(this,{type:n?Bn:Qn,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.updateValue_(e,t):this.addValue_(e,t),this},t.delete=function(e){var t=this;if((it(this.keysAtom_),Pn(this))&&!Mn(this,{type:er,object:this,name:e}))return!1;if(this.has_(e)){var n=Mt(),r=In(this),o=r||n?{observableKind:"map",debugObjectName:this.name_,type:er,object:this,oldValue:this.data_.get(e).value_,name:e}:null;return n&&Nt(o),jn((function(){var n;t.keysAtom_.reportChanged(),null==(n=t.hasMap_.get(e))||n.setNewValue_(!1),t.data_.get(e).setNewValue_(void 0),t.data_.delete(e)})),r&&Dn(this,o),n&&Lt(),!0}return!1},t.updateValue_=function(e,t){var n=this.data_.get(e);if((t=n.prepareNewValue_(t))!==gt.UNCHANGED){var r=Mt(),o=In(this),i=o||r?{observableKind:"map",debugObjectName:this.name_,type:Bn,object:this,oldValue:n.value_,name:e,newValue:t}:null;r&&Nt(i),n.setNewValue_(t),o&&Dn(this,i),r&&Lt()}},t.addValue_=function(e,t){var n=this;it(this.keysAtom_),jn((function(){var r,o=new Je(t,n.enhancer_,n.name_+"."+T(e),!1);n.data_.set(e,o),t=o.value_,null==(r=n.hasMap_.get(e))||r.setNewValue_(!0),n.keysAtom_.reportChanged()}));var r=Mt(),o=In(this),i=o||r?{observableKind:"map",debugObjectName:this.name_,type:Qn,object:this,name:e,newValue:t}:null;r&&Nt(i),o&&Dn(this,i),r&&Lt()},t.get=function(e){return this.has(e)?this.dehanceValue_(this.data_.get(e).get()):this.dehanceValue_(void 0)},t.dehanceValue_=function(e){return void 0!==this.dehancer?this.dehancer(e):e},t.keys=function(){return this.keysAtom_.reportObserved(),this.data_.keys()},t.values=function(){var e=this,t=this.keys();return Ir({next:function(){var n=t.next(),r=n.done,o=n.value;return{done:r,value:r?void 0:e.get(o)}}})},t.entries=function(){var e=this,t=this.keys();return Ir({next:function(){var n=t.next(),r=n.done,o=n.value;return{done:r,value:r?void 0:[o,e.get(o)]}}})},t[Wn]=function(){return this.entries()},t.forEach=function(e,t){for(var n,r=K(this);!(n=r()).done;){var o=n.value,i=o[0],a=o[1];e.call(t,a,i,this)}},t.merge=function(e){var t=this;return or(e)&&(e=new Map(e)),jn((function(){S(e)?function(e){var t=Object.keys(e);if(!R)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter((function(t){return u.propertyIsEnumerable.call(e,t)}))):t}(e).forEach((function(n){return t.set(n,e[n])})):Array.isArray(e)?e.forEach((function(e){var n=e[0],r=e[1];return t.set(n,r)})):x(e)?(e.constructor!==Map&&n(19,e),e.forEach((function(e,n){return t.set(n,e)}))):null!=e&&n(20,e)})),this},t.clear=function(){var e=this;jn((function(){ut((function(){for(var t,n=K(e.keys());!(t=n()).done;){var r=t.value;e.delete(r)}}))}))},t.replace=function(e){var t=this;return jn((function(){for(var r,o=function(e){if(x(e)||or(e))return e;if(Array.isArray(e))return new Map(e);if(S(e)){var t=new Map;for(var r in e)t.set(r,e[r]);return t}return n(21,e)}(e),i=new Map,a=!1,s=K(t.data_.keys());!(r=s()).done;){var u=r.value;if(!o.has(u))if(t.delete(u))a=!0;else{var c=t.data_.get(u);i.set(u,c)}}for(var l,f=K(o.entries());!(l=f()).done;){var h=l.value,p=h[0],d=h[1],v=t.data_.has(p);if(t.set(p,d),t.data_.has(p)){var y=t.data_.get(p);i.set(p,y),v||(a=!0)}}if(!a)if(t.data_.size!==i.size)t.keysAtom_.reportChanged();else for(var b=t.data_.keys(),g=i.keys(),_=b.next(),m=g.next();!_.done;){if(_.value!==m.value){t.keysAtom_.reportChanged();break}_=b.next(),m=g.next()}t.data_=i})),this},t.toString=function(){return"[object ObservableMap]"},t.toJSON=function(){return Array.from(this)},t.observe_=function(e,t){return!0===t&&n("`observe` doesn't support fireImmediately=true in combination with maps."),Nn(this,e)},t.intercept_=function(e){return Tn(this,e)},L(e,[{key:"size",get:function(){return this.keysAtom_.reportObserved(),this.data_.size}},{key:Xn,get:function(){return"Map"}}]),e}(),or=k("ObservableMap",rr);var ir={};tr=Symbol.iterator,nr=Symbol.toStringTag;var ar=function(){function e(e,t,r){void 0===t&&(t=Z),void 0===r&&(r="ObservableSet@"+v()),this.name_=void 0,this[q]=ir,this.data_=new Set,this.atom_=void 0,this.changeListeners_=void 0,this.interceptors_=void 0,this.dehancer=void 0,this.enhancer_=void 0,this.name_=r,g(Set)||n(22),this.atom_=J(this.name_),this.enhancer_=function(e,n){return t(e,n,r)},e&&this.replace(e)}var t=e.prototype;return t.dehanceValue_=function(e){return void 0!==this.dehancer?this.dehancer(e):e},t.clear=function(){var e=this;jn((function(){ut((function(){for(var t,n=K(e.data_.values());!(t=n()).done;){var r=t.value;e.delete(r)}}))}))},t.forEach=function(e,t){for(var n,r=K(this);!(n=r()).done;){var o=n.value;e.call(t,o,o,this)}},t.add=function(e){var t=this;if((it(this.atom_),Pn(this))&&!Mn(this,{type:Qn,object:this,newValue:e}))return this;if(!this.has(e)){jn((function(){t.data_.add(t.enhancer_(e,void 0)),t.atom_.reportChanged()}));var n=Mt(),r=In(this),o=r||n?{observableKind:"set",debugObjectName:this.name_,type:Qn,object:this,newValue:e}:null;n&&Nt(o),r&&Dn(this,o),n&&Lt()}return this},t.delete=function(e){var t=this;if(Pn(this)&&!Mn(this,{type:er,object:this,oldValue:e}))return!1;if(this.has(e)){var n=Mt(),r=In(this),o=r||n?{observableKind:"set",debugObjectName:this.name_,type:er,object:this,oldValue:e}:null;return n&&Nt(o),jn((function(){t.atom_.reportChanged(),t.data_.delete(e)})),r&&Dn(this,o),n&&Lt(),!0}return!1},t.has=function(e){return this.atom_.reportObserved(),this.data_.has(this.dehanceValue_(e))},t.entries=function(){var e=0,t=Array.from(this.keys()),n=Array.from(this.values());return Ir({next:function(){var r=e;return e+=1,rmr){for(var t=mr;t=0&&n++}e=Mr(e),t=Mr(t);var s="[object Array]"===a;if(!s){if("object"!=typeof e||"object"!=typeof t)return!1;var u=e.constructor,c=t.constructor;if(u!==c&&!(g(u)&&u instanceof u&&g(c)&&c instanceof c)&&"constructor"in e&&"constructor"in t)return!1}if(0===n)return!1;n<0&&(n=-1),o=o||[];for(var l=(r=r||[]).length;l--;)if(r[l]===e)return o[l]===t;if(r.push(e),o.push(t),s){if((l=e.length)!==t.length)return!1;for(;l--;)if(!Tr(e[l],t[l],n-1,r,o))return!1}else{var f,h=Object.keys(e);if(l=h.length,Object.keys(t).length!==l)return!1;for(;l--;)if(!I(t,f=h[l])||!Tr(e[f],t[f],n-1,r,o))return!1}return r.pop(),o.pop(),!0}function Mr(e){return Yn(e)?e.slice():x(e)||or(e)||C(e)||sr(e)?Array.from(e.entries()):e}function Ir(e){return e[Symbol.iterator]=Nr,e}function Nr(){return this}function Dr(e){return e instanceof Object&&"string"==typeof e.annotationType_&&g(e.make_)&&g(e.extend_)}return["Symbol","Map","Set"].forEach((function(e){void 0===o()[e]&&n("MobX requires global '"+e+"' to be available or polyfilled")})),"object"==typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:Vt,extras:{getDebugName:Cr},$mobx:q}),w.$mobx=q,w.FlowCancellationError=ln,w.ObservableMap=rr,w.ObservableSet=ar,w.Reaction=xt,w._allowStateChanges=He,w._allowStateChangesInsideComputed=Xt,w._allowStateReadsEnd=ht,w._allowStateReadsStart=ft,w._autoAction=Wt,w._endAction=$e,w._getAdministration=xr,w._getGlobalState=function(){return gt},w._interceptReads=function(e,t,r){var o;if(or(e)||Yn(e)||Ye(e))o=xr(e);else{if(!dr(e))return n("Expected observable map, object or array as first array");if(!_(t))return n("InterceptReads can only be used with a specific property, not with an object in general");o=xr(e,t)}return void 0!==o.dehancer?n("An intercept reader was already established"):(o.dehancer="function"==typeof t?t:r,function(){o.dehancer=void 0})},w._isComputingDerivation=function(){return null!==gt.trackingDerivation},w._resetGlobalState=function(){var e=new vt;for(var t in e)-1===dt.indexOf(t)&&(gt[t]=e[t]);gt.allowStateChanges=!gt.enforceActions},w._startAction=ze,w.action=qt,w.autorun=Yt,w.comparer=Y,w.computed=De,w.configure=function(e){!0===e.isolateGlobalState&&function(){if((gt.pendingReactions.length||gt.inBatch||gt.isRunningReactions)&&n(36),bt=!0,yt){var e=o();0==--e.__mobxInstanceCount&&(e.__mobxGlobals=void 0),gt=new vt}}();var t,r,i=e.useProxies,a=e.enforceActions;if(void 0!==i&&(gt.useProxies=i===rn||"never"!==i&&"undefined"!=typeof Proxy),"ifavailable"===i&&(gt.verifyProxies=!0),void 0!==a){var s=a===rn?rn:"observed"===a;gt.enforceActions=s,gt.allowStateChanges=!0!==s&&s!==rn}["computedRequiresReaction","reactionRequiresObservable","observableRequiresReaction","disableErrorBoundaries","safeDescriptors"].forEach((function(t){t in e&&(gt[t]=!!e[t])})),gt.allowStateReads=!gt.observableRequiresReaction,!0===gt.disableErrorBoundaries&&console.warn("WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled."),e.reactionScheduler&&(t=e.reactionScheduler,r=Ct,Ct=function(e){return t((function(){return r(e)}))})},w.createAtom=J,w.defineProperty=function(e,t,r){if(dr(e))return e[q].defineProperty_(t,r);n(39)},w.entries=function(e){return dr(e)?_n(e).map((function(t){return[t,e[t]]})):or(e)?_n(e).map((function(t){return[t,e.get(t)]})):sr(e)?Array.from(e.entries()):Yn(e)?e.map((function(e,t){return[t,e]})):void n(7)},w.extendObservable=on,w.flow=pn,w.flowResult=function(e){return e},w.get=function(e,t){if(mn(e,t))return dr(e)?e[q].get_(t):or(e)?e.get(t):Yn(e)?e[t]:void n(11)},w.getAtom=kr,w.getDebugName=Cr,w.getDependencyTree=an,w.getObserverTree=function(e,t){return un(kr(e,t))},w.has=mn,w.intercept=function(e,t,n){return g(n)?function(e,t,n){return xr(e,t).intercept_(n)}(e,t,n):function(e,t){return xr(e).intercept_(t)}(e,t)},w.isAction=Jt,w.isBoxedObservable=Ye,w.isComputed=function(e){return arguments.length>1?n("isComputed expects only 1 argument. Use isComputedProp to inspect the observability of a property"):yn(e)},w.isComputedProp=function(e,t){return _(t)?yn(e,t):n("isComputed expected a property name as second argument")},w.isFlow=vn,w.isFlowCancellationError=function(e){return e instanceof ln},w.isObservable=gn,w.isObservableArray=Yn,w.isObservableMap=or,w.isObservableObject=dr,w.isObservableProp=function(e,t){return _(t)?bn(e,t):n("expected a property name as second argument")},w.isObservableSet=sr,w.keys=_n,w.makeAutoObservable=function(e,t,r){if(S(e)||S(Object.getPrototypeOf(e))||n("'makeAutoObservable' can only be used for classes that don't have a superclass"),dr(e)&&n("makeAutoObservable can only be used on objects not already made observable"),S(e))return on(e,e,t,r);var o=fr(e,r)[q];if(!e[Ln]){var i=Object.getPrototypeOf(e),a=new Set([].concat(P(e),P(i)));a.delete("constructor"),a.delete(q),E(i,Ln,a)}Ot();try{e[Ln].forEach((function(e){return o.make_(e,!t||(!(e in t)||t[e]))}))}finally{St()}return e},w.makeObservable=function(e,t,r){var o=fr(e,r)[q];Ot();try{t&&e[z]&&n("makeObservable second arg must be nullish when using decorators. Mixing @decorator syntax with annotations is not supported."),null!=t||(t=function(e){return I(e,z)||(e[z]||n("No annotations were passed to makeObservable, but no decorated members have been found either"),E(e,z,V({},e[z]))),e[z]}(e)),P(t).forEach((function(e){return o.make_(e,t[e])}))}finally{St()}return e},w.observable=Te,w.observe=function(e,t,n,r){return g(n)?function(e,t,n,r){return xr(e,t).observe_(n,r)}(e,t,n,r):function(e,t,n){return xr(e).observe_(t,n)}(e,t,n)},w.onBecomeObserved=en,w.onBecomeUnobserved=tn,w.onReactionError=function(e){return gt.globalReactionErrorHandlers.push(e),function(){var t=gt.globalReactionErrorHandlers.indexOf(e);t>=0&>.globalReactionErrorHandlers.splice(t,1)}},w.override=te,w.ownKeys=wn,w.reaction=function(e,t,r){var o;void 0===r&&(r=l),g(e)&&g(t)||n("First and second argument to reaction should be functions"),S(r)||n("Third argument of reactions should be an object");var i,a,s,u,c=null!=(o=r.name)?o:"Reaction@"+v(),f=qt(c,r.onError?(i=r.onError,a=t,function(){try{return a.apply(this,arguments)}catch(e){i.call(this,e)}}):t),h=!r.scheduler&&!r.delay,p=Qt(r),d=!0,y=!1,b=r.compareStructural?Y.structural:r.equals||Y.default,_=new xt(c,(function(){d||h?m():y||(y=!0,p(m))}),r.onError,r.requiresObservable);function m(){if(y=!1,!_.isDisposed_){var t=!1;_.track((function(){var n=He(!1,(function(){return e(_)}));t=d||!b(s,n),u=s,s=n})),(d&&r.fireImmediately||!d&&t)&&f(s,u,_),d=!1}}return _.schedule_(),_.getDisposer_()},w.remove=function(e,t){dr(e)?e[q].delete_(t):or(e)||sr(e)?e.delete(t):Yn(e)?("number"!=typeof t&&(t=parseInt(t,10)),e.splice(t,1)):n(9)},w.runInAction=Xt,w.set=function e(t,r,o){if(2!==arguments.length||sr(t))dr(t)?t[q].set_(r,o):or(t)?t.set(r,o):sr(t)?t.add(r):Yn(t)?("number"!=typeof r&&(r=parseInt(r,10)),r<0&&n("Invalid index: '"+r+"'"),Ot(),r>=t.length&&(t.length=r+1),t[r]=o,St()):n(8);else{Ot();var i=r;try{for(var a in i)e(t,a,i[a])}finally{St()}}},w.spy=Vt,w.toJS=function(e,t){return t&&n("toJS no longer supports options"),Sn(e,new Map)},w.trace=An,w.transaction=jn,w.untracked=ut,w.values=function(e){return dr(e)?_n(e).map((function(t){return e[t]})):or(e)?_n(e).map((function(t){return e.get(t)})):sr(e)?Array.from(e.values()):Yn(e)?e.slice():void n(6)},w.when=function(e,t,n){return 1===arguments.length||t&&"object"==typeof t?xn(e,t):kn(e,t,n||{})},w}!function(e){"production"===process.env.NODE_ENV?e.exports=_():e.exports=O()}({get exports(){return b},set exports(e){b=e}});var S=y.createContext(void 0);exports.IoC=function(e){var t=s.useRef();if(!t.current){var n=new o.ApplicationContext;"function"==typeof e.callback&&e.callback(n),n.registerInstAwareProcessor(function(){function e(){}return e.prototype.afterInstantiation=function(e){return n.getClassMetadata(e.constructor).getCtorMarkInfo()["mark-as-mobx-observable"]&&b.makeObservable(e),e},e}()),t.current=n}return y.createElement(S.Provider,{value:t.current},e.children)},exports.Observable=function(){return o.Mark("mark-as-mobx-observable",!0)},exports.useService=function(e){var t=s.useContext(S);if(!t)throw new Error(" has not been applied to the component.");return t.getInstance(e)}; +"use strict";var e=require("@vgerbot/ioc"),r=require("react"),t=require("mobx"),n=r.createContext(void 0);exports.IoC=function(o){var a=r.useRef();if(!a.current){var c=new e.ApplicationContext;"function"==typeof o.callback&&o.callback(c),c.registerInstAwareProcessor(function(){function e(){}return e.prototype.afterInstantiation=function(e){return c.getClassMetadata(e.constructor).getCtorMarkInfo()["mark-as-mobx-observable"]&&t.makeObservable(e),e},e}()),a.current=c}return r.createElement(n.Provider,{value:a.current},o.children)},exports.Observable=function(){return e.Mark("mark-as-mobx-observable",!0)},exports.useService=function(e){var t=r.useContext(n);if(!t)throw new Error(" has not been applied to the component.");return t.getInstance(e)},Object.keys(e).forEach((function(r){"default"===r||exports.hasOwnProperty(r)||Object.defineProperty(exports,r,{enumerable:!0,get:function(){return e[r]}})})); //# sourceMappingURL=index.cjs.js.map diff --git a/dist/index.cjs.js.map b/dist/index.cjs.js.map index 7325bd4..b1eabca 100644 --- a/dist/index.cjs.js.map +++ b/dist/index.cjs.js.map @@ -1 +1 @@ -{"version":3,"file":"index.cjs.js","sources":["../node_modules/@vgerbot/ioc/node_modules/minimist/index.js","../node_modules/@vgerbot/ioc/dist/index.cjs.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/cjs/react.development.js","../node_modules/react/index.js","../node_modules/mobx/dist/mobx.cjs.production.min.js","../node_modules/mobx/dist/mobx.cjs.development.js","../node_modules/mobx/dist/index.js","../src/index.ts"],"sourcesContent":["'use strict';\n\nfunction hasKey(obj, keys) {\n\tvar o = obj;\n\tkeys.slice(0, -1).forEach(function (key) {\n\t\to = o[key] || {};\n\t});\n\n\tvar key = keys[keys.length - 1];\n\treturn key in o;\n}\n\nfunction isNumber(x) {\n\tif (typeof x === 'number') { return true; }\n\tif ((/^0x[0-9a-f]+$/i).test(x)) { return true; }\n\treturn (/^[-+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(e[-+]?\\d+)?$/).test(x);\n}\n\nfunction isConstructorOrProto(obj, key) {\n\treturn (key === 'constructor' && typeof obj[key] === 'function') || key === '__proto__';\n}\n\nmodule.exports = function (args, opts) {\n\tif (!opts) { opts = {}; }\n\n\tvar flags = {\n\t\tbools: {},\n\t\tstrings: {},\n\t\tunknownFn: null,\n\t};\n\n\tif (typeof opts.unknown === 'function') {\n\t\tflags.unknownFn = opts.unknown;\n\t}\n\n\tif (typeof opts.boolean === 'boolean' && opts.boolean) {\n\t\tflags.allBools = true;\n\t} else {\n\t\t[].concat(opts.boolean).filter(Boolean).forEach(function (key) {\n\t\t\tflags.bools[key] = true;\n\t\t});\n\t}\n\n\tvar aliases = {};\n\n\tfunction aliasIsBoolean(key) {\n\t\treturn aliases[key].some(function (x) {\n\t\t\treturn flags.bools[x];\n\t\t});\n\t}\n\n\tObject.keys(opts.alias || {}).forEach(function (key) {\n\t\taliases[key] = [].concat(opts.alias[key]);\n\t\taliases[key].forEach(function (x) {\n\t\t\taliases[x] = [key].concat(aliases[key].filter(function (y) {\n\t\t\t\treturn x !== y;\n\t\t\t}));\n\t\t});\n\t});\n\n\t[].concat(opts.string).filter(Boolean).forEach(function (key) {\n\t\tflags.strings[key] = true;\n\t\tif (aliases[key]) {\n\t\t\t[].concat(aliases[key]).forEach(function (k) {\n\t\t\t\tflags.strings[k] = true;\n\t\t\t});\n\t\t}\n\t});\n\n\tvar defaults = opts.default || {};\n\n\tvar argv = { _: [] };\n\n\tfunction argDefined(key, arg) {\n\t\treturn (flags.allBools && (/^--[^=]+$/).test(arg))\n\t\t\t|| flags.strings[key]\n\t\t\t|| flags.bools[key]\n\t\t\t|| aliases[key];\n\t}\n\n\tfunction setKey(obj, keys, value) {\n\t\tvar o = obj;\n\t\tfor (var i = 0; i < keys.length - 1; i++) {\n\t\t\tvar key = keys[i];\n\t\t\tif (isConstructorOrProto(o, key)) { return; }\n\t\t\tif (o[key] === undefined) { o[key] = {}; }\n\t\t\tif (\n\t\t\t\to[key] === Object.prototype\n\t\t\t\t|| o[key] === Number.prototype\n\t\t\t\t|| o[key] === String.prototype\n\t\t\t) {\n\t\t\t\to[key] = {};\n\t\t\t}\n\t\t\tif (o[key] === Array.prototype) { o[key] = []; }\n\t\t\to = o[key];\n\t\t}\n\n\t\tvar lastKey = keys[keys.length - 1];\n\t\tif (isConstructorOrProto(o, lastKey)) { return; }\n\t\tif (\n\t\t\to === Object.prototype\n\t\t\t|| o === Number.prototype\n\t\t\t|| o === String.prototype\n\t\t) {\n\t\t\to = {};\n\t\t}\n\t\tif (o === Array.prototype) { o = []; }\n\t\tif (o[lastKey] === undefined || flags.bools[lastKey] || typeof o[lastKey] === 'boolean') {\n\t\t\to[lastKey] = value;\n\t\t} else if (Array.isArray(o[lastKey])) {\n\t\t\to[lastKey].push(value);\n\t\t} else {\n\t\t\to[lastKey] = [o[lastKey], value];\n\t\t}\n\t}\n\n\tfunction setArg(key, val, arg) {\n\t\tif (arg && flags.unknownFn && !argDefined(key, arg)) {\n\t\t\tif (flags.unknownFn(arg) === false) { return; }\n\t\t}\n\n\t\tvar value = !flags.strings[key] && isNumber(val)\n\t\t\t? Number(val)\n\t\t\t: val;\n\t\tsetKey(argv, key.split('.'), value);\n\n\t\t(aliases[key] || []).forEach(function (x) {\n\t\t\tsetKey(argv, x.split('.'), value);\n\t\t});\n\t}\n\n\tObject.keys(flags.bools).forEach(function (key) {\n\t\tsetArg(key, defaults[key] === undefined ? false : defaults[key]);\n\t});\n\n\tvar notFlags = [];\n\n\tif (args.indexOf('--') !== -1) {\n\t\tnotFlags = args.slice(args.indexOf('--') + 1);\n\t\targs = args.slice(0, args.indexOf('--'));\n\t}\n\n\tfor (var i = 0; i < args.length; i++) {\n\t\tvar arg = args[i];\n\t\tvar key;\n\t\tvar next;\n\n\t\tif ((/^--.+=/).test(arg)) {\n\t\t\t// Using [\\s\\S] instead of . because js doesn't support the\n\t\t\t// 'dotall' regex modifier. See:\n\t\t\t// http://stackoverflow.com/a/1068308/13216\n\t\t\tvar m = arg.match(/^--([^=]+)=([\\s\\S]*)$/);\n\t\t\tkey = m[1];\n\t\t\tvar value = m[2];\n\t\t\tif (flags.bools[key]) {\n\t\t\t\tvalue = value !== 'false';\n\t\t\t}\n\t\t\tsetArg(key, value, arg);\n\t\t} else if ((/^--no-.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--no-(.+)/)[1];\n\t\t\tsetArg(key, false, arg);\n\t\t} else if ((/^--.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--(.+)/)[1];\n\t\t\tnext = args[i + 1];\n\t\t\tif (\n\t\t\t\tnext !== undefined\n\t\t\t\t&& !(/^(-|--)[^-]/).test(next)\n\t\t\t\t&& !flags.bools[key]\n\t\t\t\t&& !flags.allBools\n\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t) {\n\t\t\t\tsetArg(key, next, arg);\n\t\t\t\ti += 1;\n\t\t\t} else if ((/^(true|false)$/).test(next)) {\n\t\t\t\tsetArg(key, next === 'true', arg);\n\t\t\t\ti += 1;\n\t\t\t} else {\n\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t}\n\t\t} else if ((/^-[^-]+/).test(arg)) {\n\t\t\tvar letters = arg.slice(1, -1).split('');\n\n\t\t\tvar broken = false;\n\t\t\tfor (var j = 0; j < letters.length; j++) {\n\t\t\t\tnext = arg.slice(j + 2);\n\n\t\t\t\tif (next === '-') {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ((/[A-Za-z]/).test(letters[j]) && next[0] === '=') {\n\t\t\t\t\tsetArg(letters[j], next.slice(1), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(/[A-Za-z]/).test(letters[j])\n\t\t\t\t\t&& (/-?\\d+(\\.\\d*)?(e-?\\d+)?$/).test(next)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (letters[j + 1] && letters[j + 1].match(/\\W/)) {\n\t\t\t\t\tsetArg(letters[j], arg.slice(j + 2), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tkey = arg.slice(-1)[0];\n\t\t\tif (!broken && key !== '-') {\n\t\t\t\tif (\n\t\t\t\t\targs[i + 1]\n\t\t\t\t\t&& !(/^(-|--)[^-]/).test(args[i + 1])\n\t\t\t\t\t&& !flags.bools[key]\n\t\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(key, args[i + 1], arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else if (args[i + 1] && (/^(true|false)$/).test(args[i + 1])) {\n\t\t\t\t\tsetArg(key, args[i + 1] === 'true', arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!flags.unknownFn || flags.unknownFn(arg) !== false) {\n\t\t\t\targv._.push(flags.strings._ || !isNumber(arg) ? arg : Number(arg));\n\t\t\t}\n\t\t\tif (opts.stopEarly) {\n\t\t\t\targv._.push.apply(argv._, args.slice(i + 1));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tObject.keys(defaults).forEach(function (k) {\n\t\tif (!hasKey(argv, k.split('.'))) {\n\t\t\tsetKey(argv, k.split('.'), defaults[k]);\n\n\t\t\t(aliases[k] || []).forEach(function (x) {\n\t\t\t\tsetKey(argv, x.split('.'), defaults[k]);\n\t\t\t});\n\t\t}\n\t});\n\n\tif (opts['--']) {\n\t\targv['--'] = notFlags.slice();\n\t} else {\n\t\tnotFlags.forEach(function (k) {\n\t\t\targv._.push(k);\n\t\t});\n\t}\n\n\treturn argv;\n};\n","'use strict';\n\nvar ServiceFactoryDef = /** @class */ (function () {\r\n function ServiceFactoryDef(factory, injections) {\r\n this.factory = factory;\r\n this.injections = injections;\r\n }\r\n ServiceFactoryDef.createFromClassMetadata = function (metadata) {\r\n return new ServiceFactoryDef(function (container, owner) {\r\n return function () {\r\n var reader = metadata.reader();\r\n var clazz = reader.getClass();\r\n return container.getInstance(clazz, owner);\r\n };\r\n });\r\n };\r\n return ServiceFactoryDef;\r\n}());\n\nvar GlobalMetadata = /** @class */ (function () {\r\n function GlobalMetadata() {\r\n this.classAliasMetadataMap = new Map();\r\n this.componentFactories = new Map();\r\n this.processorClasses = new Set();\r\n }\r\n GlobalMetadata.getInstance = function () {\r\n return GlobalMetadata.INSTANCE;\r\n };\r\n GlobalMetadata.prototype.recordFactory = function (symbol, factory, injections) {\r\n this.componentFactories.set(symbol, new ServiceFactoryDef(factory, injections));\r\n };\r\n GlobalMetadata.prototype.recordClassAlias = function (aliasName, metadata) {\r\n this.classAliasMetadataMap.set(aliasName, metadata);\r\n };\r\n GlobalMetadata.prototype.recordProcessorClass = function (clazz) {\r\n this.processorClasses.add(clazz);\r\n };\r\n GlobalMetadata.prototype.init = function () {\r\n // PASS;\r\n };\r\n GlobalMetadata.prototype.reader = function () {\r\n var _this = this;\r\n return {\r\n getComponentFactory: function (key) {\r\n return _this.componentFactories.get(key);\r\n },\r\n getClassMetadata: function (aliasName) {\r\n return _this.classAliasMetadataMap.get(aliasName);\r\n },\r\n getInstAwareProcessorClasses: function () {\r\n return Array.from(_this.processorClasses);\r\n }\r\n };\r\n };\r\n GlobalMetadata.INSTANCE = new GlobalMetadata();\r\n return GlobalMetadata;\r\n}());\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nfunction __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nfunction __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nexports.InstanceScope = void 0;\r\n(function (InstanceScope) {\r\n InstanceScope[\"SINGLETON\"] = \"ioc-resolution:container-singleton\";\r\n InstanceScope[\"TRANSIENT\"] = \"ioc-resolution:transient\";\r\n InstanceScope[\"GLOBAL_SHARED_SINGLETON\"] = \"ioc-resolution:global-shared-singleton\";\r\n})(exports.InstanceScope || (exports.InstanceScope = {}));\n\nfunction createDefaultValueMap(factory) {\r\n var map = new Map();\r\n var originGet = map.get.bind(map);\r\n map.get = function (key) {\r\n if (map.has(key)) {\r\n return originGet(key);\r\n }\r\n else {\r\n var defaultValue = factory(key);\r\n map.set(key, defaultValue);\r\n return map.get(key);\r\n }\r\n };\r\n return map;\r\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n/*! *****************************************************************************\nCopyright (C) Microsoft. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\nvar Reflect$1;\n(function (Reflect) {\n // Metadata Proposal\n // https://rbuckton.github.io/reflect-metadata/\n (function (factory) {\n var root = typeof commonjsGlobal === \"object\" ? commonjsGlobal :\n typeof self === \"object\" ? self :\n typeof this === \"object\" ? this :\n Function(\"return this;\")();\n var exporter = makeExporter(Reflect);\n if (typeof root.Reflect === \"undefined\") {\n root.Reflect = Reflect;\n }\n else {\n exporter = makeExporter(root.Reflect, exporter);\n }\n factory(exporter);\n function makeExporter(target, previous) {\n return function (key, value) {\n if (typeof target[key] !== \"function\") {\n Object.defineProperty(target, key, { configurable: true, writable: true, value: value });\n }\n if (previous)\n previous(key, value);\n };\n }\n })(function (exporter) {\n var hasOwn = Object.prototype.hasOwnProperty;\n // feature test for Symbol support\n var supportsSymbol = typeof Symbol === \"function\";\n var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== \"undefined\" ? Symbol.toPrimitive : \"@@toPrimitive\";\n var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== \"undefined\" ? Symbol.iterator : \"@@iterator\";\n var supportsCreate = typeof Object.create === \"function\"; // feature test for Object.create support\n var supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support\n var downLevel = !supportsCreate && !supportsProto;\n var HashMap = {\n // create an object in dictionary mode (a.k.a. \"slow\" mode in v8)\n create: supportsCreate\n ? function () { return MakeDictionary(Object.create(null)); }\n : supportsProto\n ? function () { return MakeDictionary({ __proto__: null }); }\n : function () { return MakeDictionary({}); },\n has: downLevel\n ? function (map, key) { return hasOwn.call(map, key); }\n : function (map, key) { return key in map; },\n get: downLevel\n ? function (map, key) { return hasOwn.call(map, key) ? map[key] : undefined; }\n : function (map, key) { return map[key]; },\n };\n // Load global or shim versions of Map, Set, and WeakMap\n var functionPrototype = Object.getPrototypeOf(Function);\n var usePolyfill = typeof process === \"object\" && process.env && process.env[\"REFLECT_METADATA_USE_MAP_POLYFILL\"] === \"true\";\n var _Map = !usePolyfill && typeof Map === \"function\" && typeof Map.prototype.entries === \"function\" ? Map : CreateMapPolyfill();\n var _Set = !usePolyfill && typeof Set === \"function\" && typeof Set.prototype.entries === \"function\" ? Set : CreateSetPolyfill();\n var _WeakMap = !usePolyfill && typeof WeakMap === \"function\" ? WeakMap : CreateWeakMapPolyfill();\n // [[Metadata]] internal slot\n // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots\n var Metadata = new _WeakMap();\n /**\n * Applies a set of decorators to a property of a target object.\n * @param decorators An array of decorators.\n * @param target The target object.\n * @param propertyKey (Optional) The property key to decorate.\n * @param attributes (Optional) The property descriptor for the target key.\n * @remarks Decorators are applied in reverse order.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Example = Reflect.decorate(decoratorsArray, Example);\n *\n * // property (on constructor)\n * Reflect.decorate(decoratorsArray, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.decorate(decoratorsArray, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Object.defineProperty(Example, \"staticMethod\",\n * Reflect.decorate(decoratorsArray, Example, \"staticMethod\",\n * Object.getOwnPropertyDescriptor(Example, \"staticMethod\")));\n *\n * // method (on prototype)\n * Object.defineProperty(Example.prototype, \"method\",\n * Reflect.decorate(decoratorsArray, Example.prototype, \"method\",\n * Object.getOwnPropertyDescriptor(Example.prototype, \"method\")));\n *\n */\n function decorate(decorators, target, propertyKey, attributes) {\n if (!IsUndefined(propertyKey)) {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsObject(target))\n throw new TypeError();\n if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes))\n throw new TypeError();\n if (IsNull(attributes))\n attributes = undefined;\n propertyKey = ToPropertyKey(propertyKey);\n return DecorateProperty(decorators, target, propertyKey, attributes);\n }\n else {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsConstructor(target))\n throw new TypeError();\n return DecorateConstructor(decorators, target);\n }\n }\n exporter(\"decorate\", decorate);\n // 4.1.2 Reflect.metadata(metadataKey, metadataValue)\n // https://rbuckton.github.io/reflect-metadata/#reflect.metadata\n /**\n * A default metadata decorator factory that can be used on a class, class member, or parameter.\n * @param metadataKey The key for the metadata entry.\n * @param metadataValue The value for the metadata entry.\n * @returns A decorator function.\n * @remarks\n * If `metadataKey` is already defined for the target and target key, the\n * metadataValue for that key will be overwritten.\n * @example\n *\n * // constructor\n * @Reflect.metadata(key, value)\n * class Example {\n * }\n *\n * // property (on constructor, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticProperty;\n * }\n *\n * // property (on prototype, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * property;\n * }\n *\n * // method (on constructor)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticMethod() { }\n * }\n *\n * // method (on prototype)\n * class Example {\n * @Reflect.metadata(key, value)\n * method() { }\n * }\n *\n */\n function metadata(metadataKey, metadataValue) {\n function decorator(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey))\n throw new TypeError();\n OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n return decorator;\n }\n exporter(\"metadata\", metadata);\n /**\n * Define a unique metadata entry on the target.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param metadataValue A value that contains attached metadata.\n * @param target The target object on which to define metadata.\n * @param propertyKey (Optional) The property key for the target.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Reflect.defineMetadata(\"custom:annotation\", options, Example);\n *\n * // property (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticMethod\");\n *\n * // method (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"method\");\n *\n * // decorator factory as metadata-producing annotation.\n * function MyAnnotation(options): Decorator {\n * return (target, key?) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\n * }\n *\n */\n function defineMetadata(metadataKey, metadataValue, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n exporter(\"defineMetadata\", defineMetadata);\n /**\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasMetadata\", hasMetadata);\n /**\n * Gets a value indicating whether the target object has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasOwnMetadata\", hasOwnMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getMetadata\", getMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getOwnMetadata\", getOwnMetadata);\n /**\n * Gets the metadata keys defined on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryMetadataKeys(target, propertyKey);\n }\n exporter(\"getMetadataKeys\", getMetadataKeys);\n /**\n * Gets the unique metadata keys defined on the target object.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getOwnMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryOwnMetadataKeys(target, propertyKey);\n }\n exporter(\"getOwnMetadataKeys\", getOwnMetadataKeys);\n /**\n * Deletes the metadata entry from the target object with the provided key.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function deleteMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n var metadataMap = GetOrCreateMetadataMap(target, propertyKey, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n if (!metadataMap.delete(metadataKey))\n return false;\n if (metadataMap.size > 0)\n return true;\n var targetMetadata = Metadata.get(target);\n targetMetadata.delete(propertyKey);\n if (targetMetadata.size > 0)\n return true;\n Metadata.delete(target);\n return true;\n }\n exporter(\"deleteMetadata\", deleteMetadata);\n function DecorateConstructor(decorators, target) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsConstructor(decorated))\n throw new TypeError();\n target = decorated;\n }\n }\n return target;\n }\n function DecorateProperty(decorators, target, propertyKey, descriptor) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target, propertyKey, descriptor);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsObject(decorated))\n throw new TypeError();\n descriptor = decorated;\n }\n }\n return descriptor;\n }\n function GetOrCreateMetadataMap(O, P, Create) {\n var targetMetadata = Metadata.get(O);\n if (IsUndefined(targetMetadata)) {\n if (!Create)\n return undefined;\n targetMetadata = new _Map();\n Metadata.set(O, targetMetadata);\n }\n var metadataMap = targetMetadata.get(P);\n if (IsUndefined(metadataMap)) {\n if (!Create)\n return undefined;\n metadataMap = new _Map();\n targetMetadata.set(P, metadataMap);\n }\n return metadataMap;\n }\n // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata\n function OrdinaryHasMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return true;\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryHasMetadata(MetadataKey, parent, P);\n return false;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n return ToBoolean(metadataMap.has(MetadataKey));\n }\n // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata\n function OrdinaryGetMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return OrdinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryGetMetadata(MetadataKey, parent, P);\n return undefined;\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return undefined;\n return metadataMap.get(MetadataKey);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true);\n metadataMap.set(MetadataKey, MetadataValue);\n }\n // 3.1.6.1 OrdinaryMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys\n function OrdinaryMetadataKeys(O, P) {\n var ownKeys = OrdinaryOwnMetadataKeys(O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (parent === null)\n return ownKeys;\n var parentKeys = OrdinaryMetadataKeys(parent, P);\n if (parentKeys.length <= 0)\n return ownKeys;\n if (ownKeys.length <= 0)\n return parentKeys;\n var set = new _Set();\n var keys = [];\n for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) {\n var key = ownKeys_1[_i];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) {\n var key = parentKeys_1[_a];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n return keys;\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var keys = [];\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return keys;\n var keysObj = metadataMap.keys();\n var iterator = GetIterator(keysObj);\n var k = 0;\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n keys.length = k;\n return keys;\n }\n var nextValue = IteratorValue(next);\n try {\n keys[k] = nextValue;\n }\n catch (e) {\n try {\n IteratorClose(iterator);\n }\n finally {\n throw e;\n }\n }\n k++;\n }\n }\n // 6 ECMAScript Data Typ0es and Values\n // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values\n function Type(x) {\n if (x === null)\n return 1 /* Null */;\n switch (typeof x) {\n case \"undefined\": return 0 /* Undefined */;\n case \"boolean\": return 2 /* Boolean */;\n case \"string\": return 3 /* String */;\n case \"symbol\": return 4 /* Symbol */;\n case \"number\": return 5 /* Number */;\n case \"object\": return x === null ? 1 /* Null */ : 6 /* Object */;\n default: return 6 /* Object */;\n }\n }\n // 6.1.1 The Undefined Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type\n function IsUndefined(x) {\n return x === undefined;\n }\n // 6.1.2 The Null Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type\n function IsNull(x) {\n return x === null;\n }\n // 6.1.5 The Symbol Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type\n function IsSymbol(x) {\n return typeof x === \"symbol\";\n }\n // 6.1.7 The Object Type\n // https://tc39.github.io/ecma262/#sec-object-type\n function IsObject(x) {\n return typeof x === \"object\" ? x !== null : typeof x === \"function\";\n }\n // 7.1 Type Conversion\n // https://tc39.github.io/ecma262/#sec-type-conversion\n // 7.1.1 ToPrimitive(input [, PreferredType])\n // https://tc39.github.io/ecma262/#sec-toprimitive\n function ToPrimitive(input, PreferredType) {\n switch (Type(input)) {\n case 0 /* Undefined */: return input;\n case 1 /* Null */: return input;\n case 2 /* Boolean */: return input;\n case 3 /* String */: return input;\n case 4 /* Symbol */: return input;\n case 5 /* Number */: return input;\n }\n var hint = PreferredType === 3 /* String */ ? \"string\" : PreferredType === 5 /* Number */ ? \"number\" : \"default\";\n var exoticToPrim = GetMethod(input, toPrimitiveSymbol);\n if (exoticToPrim !== undefined) {\n var result = exoticToPrim.call(input, hint);\n if (IsObject(result))\n throw new TypeError();\n return result;\n }\n return OrdinaryToPrimitive(input, hint === \"default\" ? \"number\" : hint);\n }\n // 7.1.1.1 OrdinaryToPrimitive(O, hint)\n // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive\n function OrdinaryToPrimitive(O, hint) {\n if (hint === \"string\") {\n var toString_1 = O.toString;\n if (IsCallable(toString_1)) {\n var result = toString_1.call(O);\n if (!IsObject(result))\n return result;\n }\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n else {\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n var toString_2 = O.toString;\n if (IsCallable(toString_2)) {\n var result = toString_2.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n throw new TypeError();\n }\n // 7.1.2 ToBoolean(argument)\n // https://tc39.github.io/ecma262/2016/#sec-toboolean\n function ToBoolean(argument) {\n return !!argument;\n }\n // 7.1.12 ToString(argument)\n // https://tc39.github.io/ecma262/#sec-tostring\n function ToString(argument) {\n return \"\" + argument;\n }\n // 7.1.14 ToPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-topropertykey\n function ToPropertyKey(argument) {\n var key = ToPrimitive(argument, 3 /* String */);\n if (IsSymbol(key))\n return key;\n return ToString(key);\n }\n // 7.2 Testing and Comparison Operations\n // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations\n // 7.2.2 IsArray(argument)\n // https://tc39.github.io/ecma262/#sec-isarray\n function IsArray(argument) {\n return Array.isArray\n ? Array.isArray(argument)\n : argument instanceof Object\n ? argument instanceof Array\n : Object.prototype.toString.call(argument) === \"[object Array]\";\n }\n // 7.2.3 IsCallable(argument)\n // https://tc39.github.io/ecma262/#sec-iscallable\n function IsCallable(argument) {\n // NOTE: This is an approximation as we cannot check for [[Call]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.4 IsConstructor(argument)\n // https://tc39.github.io/ecma262/#sec-isconstructor\n function IsConstructor(argument) {\n // NOTE: This is an approximation as we cannot check for [[Construct]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.7 IsPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-ispropertykey\n function IsPropertyKey(argument) {\n switch (Type(argument)) {\n case 3 /* String */: return true;\n case 4 /* Symbol */: return true;\n default: return false;\n }\n }\n // 7.3 Operations on Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-objects\n // 7.3.9 GetMethod(V, P)\n // https://tc39.github.io/ecma262/#sec-getmethod\n function GetMethod(V, P) {\n var func = V[P];\n if (func === undefined || func === null)\n return undefined;\n if (!IsCallable(func))\n throw new TypeError();\n return func;\n }\n // 7.4 Operations on Iterator Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects\n function GetIterator(obj) {\n var method = GetMethod(obj, iteratorSymbol);\n if (!IsCallable(method))\n throw new TypeError(); // from Call\n var iterator = method.call(obj);\n if (!IsObject(iterator))\n throw new TypeError();\n return iterator;\n }\n // 7.4.4 IteratorValue(iterResult)\n // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue\n function IteratorValue(iterResult) {\n return iterResult.value;\n }\n // 7.4.5 IteratorStep(iterator)\n // https://tc39.github.io/ecma262/#sec-iteratorstep\n function IteratorStep(iterator) {\n var result = iterator.next();\n return result.done ? false : result;\n }\n // 7.4.6 IteratorClose(iterator, completion)\n // https://tc39.github.io/ecma262/#sec-iteratorclose\n function IteratorClose(iterator) {\n var f = iterator[\"return\"];\n if (f)\n f.call(iterator);\n }\n // 9.1 Ordinary Object Internal Methods and Internal Slots\n // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots\n // 9.1.1.1 OrdinaryGetPrototypeOf(O)\n // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof\n function OrdinaryGetPrototypeOf(O) {\n var proto = Object.getPrototypeOf(O);\n if (typeof O !== \"function\" || O === functionPrototype)\n return proto;\n // TypeScript doesn't set __proto__ in ES5, as it's non-standard.\n // Try to determine the superclass constructor. Compatible implementations\n // must either set __proto__ on a subclass constructor to the superclass constructor,\n // or ensure each class has a valid `constructor` property on its prototype that\n // points back to the constructor.\n // If this is not the same as Function.[[Prototype]], then this is definately inherited.\n // This is the case when in ES6 or when using __proto__ in a compatible browser.\n if (proto !== functionPrototype)\n return proto;\n // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\n var prototype = O.prototype;\n var prototypeProto = prototype && Object.getPrototypeOf(prototype);\n if (prototypeProto == null || prototypeProto === Object.prototype)\n return proto;\n // If the constructor was not a function, then we cannot determine the heritage.\n var constructor = prototypeProto.constructor;\n if (typeof constructor !== \"function\")\n return proto;\n // If we have some kind of self-reference, then we cannot determine the heritage.\n if (constructor === O)\n return proto;\n // we have a pretty good guess at the heritage.\n return constructor;\n }\n // naive Map shim\n function CreateMapPolyfill() {\n var cacheSentinel = {};\n var arraySentinel = [];\n var MapIterator = /** @class */ (function () {\n function MapIterator(keys, values, selector) {\n this._index = 0;\n this._keys = keys;\n this._values = values;\n this._selector = selector;\n }\n MapIterator.prototype[\"@@iterator\"] = function () { return this; };\n MapIterator.prototype[iteratorSymbol] = function () { return this; };\n MapIterator.prototype.next = function () {\n var index = this._index;\n if (index >= 0 && index < this._keys.length) {\n var result = this._selector(this._keys[index], this._values[index]);\n if (index + 1 >= this._keys.length) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n else {\n this._index++;\n }\n return { value: result, done: false };\n }\n return { value: undefined, done: true };\n };\n MapIterator.prototype.throw = function (error) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n throw error;\n };\n MapIterator.prototype.return = function (value) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n return { value: value, done: true };\n };\n return MapIterator;\n }());\n return /** @class */ (function () {\n function Map() {\n this._keys = [];\n this._values = [];\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n Object.defineProperty(Map.prototype, \"size\", {\n get: function () { return this._keys.length; },\n enumerable: true,\n configurable: true\n });\n Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; };\n Map.prototype.get = function (key) {\n var index = this._find(key, /*insert*/ false);\n return index >= 0 ? this._values[index] : undefined;\n };\n Map.prototype.set = function (key, value) {\n var index = this._find(key, /*insert*/ true);\n this._values[index] = value;\n return this;\n };\n Map.prototype.delete = function (key) {\n var index = this._find(key, /*insert*/ false);\n if (index >= 0) {\n var size = this._keys.length;\n for (var i = index + 1; i < size; i++) {\n this._keys[i - 1] = this._keys[i];\n this._values[i - 1] = this._values[i];\n }\n this._keys.length--;\n this._values.length--;\n if (key === this._cacheKey) {\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n return true;\n }\n return false;\n };\n Map.prototype.clear = function () {\n this._keys.length = 0;\n this._values.length = 0;\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n };\n Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); };\n Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); };\n Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); };\n Map.prototype[\"@@iterator\"] = function () { return this.entries(); };\n Map.prototype[iteratorSymbol] = function () { return this.entries(); };\n Map.prototype._find = function (key, insert) {\n if (this._cacheKey !== key) {\n this._cacheIndex = this._keys.indexOf(this._cacheKey = key);\n }\n if (this._cacheIndex < 0 && insert) {\n this._cacheIndex = this._keys.length;\n this._keys.push(key);\n this._values.push(undefined);\n }\n return this._cacheIndex;\n };\n return Map;\n }());\n function getKey(key, _) {\n return key;\n }\n function getValue(_, value) {\n return value;\n }\n function getEntry(key, value) {\n return [key, value];\n }\n }\n // naive Set shim\n function CreateSetPolyfill() {\n return /** @class */ (function () {\n function Set() {\n this._map = new _Map();\n }\n Object.defineProperty(Set.prototype, \"size\", {\n get: function () { return this._map.size; },\n enumerable: true,\n configurable: true\n });\n Set.prototype.has = function (value) { return this._map.has(value); };\n Set.prototype.add = function (value) { return this._map.set(value, value), this; };\n Set.prototype.delete = function (value) { return this._map.delete(value); };\n Set.prototype.clear = function () { this._map.clear(); };\n Set.prototype.keys = function () { return this._map.keys(); };\n Set.prototype.values = function () { return this._map.values(); };\n Set.prototype.entries = function () { return this._map.entries(); };\n Set.prototype[\"@@iterator\"] = function () { return this.keys(); };\n Set.prototype[iteratorSymbol] = function () { return this.keys(); };\n return Set;\n }());\n }\n // naive WeakMap shim\n function CreateWeakMapPolyfill() {\n var UUID_SIZE = 16;\n var keys = HashMap.create();\n var rootKey = CreateUniqueKey();\n return /** @class */ (function () {\n function WeakMap() {\n this._key = CreateUniqueKey();\n }\n WeakMap.prototype.has = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.has(table, this._key) : false;\n };\n WeakMap.prototype.get = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.get(table, this._key) : undefined;\n };\n WeakMap.prototype.set = function (target, value) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ true);\n table[this._key] = value;\n return this;\n };\n WeakMap.prototype.delete = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? delete table[this._key] : false;\n };\n WeakMap.prototype.clear = function () {\n // NOTE: not a real clear, just makes the previous data unreachable\n this._key = CreateUniqueKey();\n };\n return WeakMap;\n }());\n function CreateUniqueKey() {\n var key;\n do\n key = \"@@WeakMap@@\" + CreateUUID();\n while (HashMap.has(keys, key));\n keys[key] = true;\n return key;\n }\n function GetOrCreateWeakMapTable(target, create) {\n if (!hasOwn.call(target, rootKey)) {\n if (!create)\n return undefined;\n Object.defineProperty(target, rootKey, { value: HashMap.create() });\n }\n return target[rootKey];\n }\n function FillRandomBytes(buffer, size) {\n for (var i = 0; i < size; ++i)\n buffer[i] = Math.random() * 0xff | 0;\n return buffer;\n }\n function GenRandomBytes(size) {\n if (typeof Uint8Array === \"function\") {\n if (typeof crypto !== \"undefined\")\n return crypto.getRandomValues(new Uint8Array(size));\n if (typeof msCrypto !== \"undefined\")\n return msCrypto.getRandomValues(new Uint8Array(size));\n return FillRandomBytes(new Uint8Array(size), size);\n }\n return FillRandomBytes(new Array(size), size);\n }\n function CreateUUID() {\n var data = GenRandomBytes(UUID_SIZE);\n // mark as random - RFC 4122 § 4.4\n data[6] = data[6] & 0x4f | 0x40;\n data[8] = data[8] & 0xbf | 0x80;\n var result = \"\";\n for (var offset = 0; offset < UUID_SIZE; ++offset) {\n var byte = data[offset];\n if (offset === 4 || offset === 6 || offset === 8)\n result += \"-\";\n if (byte < 16)\n result += \"0\";\n result += byte.toString(16).toLowerCase();\n }\n return result;\n }\n }\n // uses a heuristic used by v8 and chakra to force an object into dictionary mode.\n function MakeDictionary(obj) {\n obj.__ = undefined;\n delete obj.__;\n return obj;\n }\n });\n})(Reflect$1 || (Reflect$1 = {}));\n\nvar MetadataFactory = /** @class */ (function () {\r\n function MetadataFactory() {\r\n }\r\n MetadataFactory.getMetadata = function (target, metadataClass) {\r\n var key = metadataClass.getReflectKey();\r\n var metadata = Reflect.getMetadata(key, target);\r\n if (!metadata) {\r\n metadata = new metadataClass();\r\n metadata.init(target);\r\n Reflect.defineMetadata(key, metadata, target);\r\n }\r\n return metadata;\r\n };\r\n return MetadataFactory;\r\n}());\n\nvar CLASS_METADATA_KEY = 'ioc:class-metadata';\r\nvar MarkInfoContainer = /** @class */ (function () {\r\n function MarkInfoContainer() {\r\n this.map = createDefaultValueMap(function () { return ({}); });\r\n }\r\n MarkInfoContainer.prototype.getMarkInfo = function (method) {\r\n return this.map.get(method);\r\n };\r\n MarkInfoContainer.prototype.mark = function (method, key, value) {\r\n var markInfo = this.map.get(method);\r\n markInfo[key] = value;\r\n };\r\n return MarkInfoContainer;\r\n}());\r\nvar ParameterMarkInfoContainer = /** @class */ (function () {\r\n function ParameterMarkInfoContainer() {\r\n this.map = createDefaultValueMap(function () {\r\n return {};\r\n });\r\n }\r\n ParameterMarkInfoContainer.prototype.getMarkInfo = function (method) {\r\n return this.map.get(method);\r\n };\r\n ParameterMarkInfoContainer.prototype.mark = function (method, index, key, value) {\r\n var paramsMarkInfo = this.map.get(method);\r\n var markInfo = paramsMarkInfo[index] || {};\r\n markInfo[key] = value;\r\n paramsMarkInfo[index] = markInfo;\r\n };\r\n return ParameterMarkInfoContainer;\r\n}());\r\nvar ClassMetadata = /** @class */ (function () {\r\n function ClassMetadata() {\r\n this.scope = exports.InstanceScope.SINGLETON;\r\n this.constructorParameterTypes = [];\r\n this.lifecycleMethodsMap = {};\r\n this.propertyTypesMap = new Map();\r\n this.marks = {\r\n ctor: {},\r\n members: new MarkInfoContainer(),\r\n params: new ParameterMarkInfoContainer()\r\n };\r\n }\r\n ClassMetadata.getReflectKey = function () {\r\n return CLASS_METADATA_KEY;\r\n };\r\n ClassMetadata.getInstance = function (ctor) {\r\n return MetadataFactory.getMetadata(ctor, ClassMetadata);\r\n };\r\n ClassMetadata.prototype.init = function (target) {\r\n this.clazz = target;\r\n var constr = target;\r\n if (typeof constr.scope === 'function') {\r\n this.setScope(constr.scope());\r\n }\r\n if (typeof constr.inject === 'function') {\r\n var injections = constr.inject();\r\n for (var key in injections) {\r\n this.recordPropertyType(key, injections[key]);\r\n }\r\n }\r\n if (typeof constr.metadata === 'function') {\r\n var metadata = constr.metadata();\r\n if (metadata.scope) {\r\n this.setScope(metadata.scope);\r\n }\r\n var injections = metadata.inject;\r\n if (injections) {\r\n for (var key in injections) {\r\n this.recordPropertyType(key, injections[key]);\r\n }\r\n }\r\n }\r\n };\r\n ClassMetadata.prototype.marker = function () {\r\n var _this = this;\r\n return {\r\n ctor: function (key, value) {\r\n _this.marks.ctor[key] = value;\r\n },\r\n member: function (propertyKey) {\r\n return {\r\n mark: function (key, value) {\r\n _this.marks.members.mark(propertyKey, key, value);\r\n }\r\n };\r\n },\r\n parameter: function (propertyKey, index) {\r\n return {\r\n mark: function (key, value) {\r\n _this.marks.params.mark(propertyKey, index, key, value);\r\n }\r\n };\r\n }\r\n };\r\n };\r\n ClassMetadata.prototype.setScope = function (scope) {\r\n this.scope = scope;\r\n };\r\n ClassMetadata.prototype.setConstructorParameterType = function (index, cls) {\r\n this.constructorParameterTypes[index] = cls;\r\n };\r\n ClassMetadata.prototype.recordPropertyType = function (propertyKey, type) {\r\n this.propertyTypesMap.set(propertyKey, type);\r\n };\r\n ClassMetadata.prototype.addLifecycleMethod = function (methodName, lifecycle) {\r\n var lifecycles = this.getLifecycles(methodName);\r\n lifecycles.add(lifecycle);\r\n this.lifecycleMethodsMap[methodName] = lifecycles;\r\n };\r\n ClassMetadata.prototype.getLifecycles = function (methodName) {\r\n return this.lifecycleMethodsMap[methodName] || new Set();\r\n };\r\n ClassMetadata.prototype.getMethods = function (lifecycle) {\r\n var _this = this;\r\n return Object.keys(this.lifecycleMethodsMap).filter(function (it) {\r\n var lifecycles = _this.lifecycleMethodsMap[it];\r\n return lifecycles.has(lifecycle);\r\n });\r\n };\r\n ClassMetadata.prototype.reader = function () {\r\n var _this = this;\r\n return {\r\n getClass: function () { return _this.clazz; },\r\n getScope: function () {\r\n return _this.scope;\r\n },\r\n getConstructorParameterTypes: function () {\r\n return _this.constructorParameterTypes.slice(0);\r\n },\r\n getMethods: function (lifecycle) {\r\n return _this.getMethods(lifecycle);\r\n },\r\n getPropertyTypeMap: function () { return new Map(_this.propertyTypesMap); },\r\n getCtorMarkInfo: function () {\r\n return __assign({}, _this.marks.ctor);\r\n },\r\n getMembersMarkInfo: function (key) {\r\n return _this.marks.members.getMarkInfo(key);\r\n },\r\n getParameterMarkInfo: function (methodKey) {\r\n return _this.marks.params.getMarkInfo(methodKey);\r\n }\r\n };\r\n };\r\n return ClassMetadata;\r\n}());\n\nfunction Bind(aliasName) {\r\n return function (target) {\r\n var metadata = MetadataFactory.getMetadata(target, ClassMetadata);\r\n GlobalMetadata.getInstance().recordClassAlias(aliasName, metadata);\r\n };\r\n}\n\nfunction Scope(scope) {\r\n return function (target) {\r\n var metadata = MetadataFactory.getMetadata(target, ClassMetadata);\r\n metadata.setScope(scope);\r\n };\r\n}\n\nfunction Inject(constr) {\r\n return function (target, propertyKey, parameterIndex) {\r\n if (typeof target === 'function' && typeof parameterIndex === 'number') {\r\n var targetConstr = target;\r\n var classMetadata = MetadataFactory.getMetadata(targetConstr, ClassMetadata);\r\n classMetadata.setConstructorParameterType(parameterIndex, constr);\r\n }\r\n else if (typeof target === 'object' && target !== null && propertyKey !== undefined) {\r\n var metadata = MetadataFactory.getMetadata(target.constructor, ClassMetadata);\r\n metadata.recordPropertyType(propertyKey, constr);\r\n }\r\n };\r\n}\n\nfunction Factory(identifier, injections) {\r\n if (injections === void 0) { injections = []; }\r\n return function (target, propertyKey) {\r\n var metadata = GlobalMetadata.getInstance();\r\n var clazz = target.constructor;\r\n metadata.recordFactory(identifier, function (container, owner) {\r\n var instance = container.getInstance(clazz, owner);\r\n var func = instance[propertyKey];\r\n if (typeof func === 'function') {\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var instance = container.getInstance(clazz);\r\n return func.apply(instance, args);\r\n };\r\n }\r\n else {\r\n return function () { return func; };\r\n }\r\n }, injections);\r\n };\r\n}\n\nvar Lifecycle;\r\n(function (Lifecycle) {\r\n Lifecycle[\"PRE_INJECT\"] = \"ioc-scope:pre-inject\";\r\n Lifecycle[\"POST_INJECT\"] = \"ioc-scope:post-inject\";\r\n Lifecycle[\"PRE_DESTROY\"] = \"ioc-scope:pre-destroy\";\r\n})(Lifecycle || (Lifecycle = {}));\n\n/**\r\n * Urn calls the methods annotated with @PostInject only once, just after the injection of properties.\r\n * @annotation\r\n */\r\nvar LifecycleDecorator = function (lifecycle) {\r\n return function (target, propertyKey) {\r\n var metadata = MetadataFactory.getMetadata(target.constructor, ClassMetadata);\r\n metadata.addLifecycleMethod(propertyKey, lifecycle);\r\n };\r\n};\n\n/**\r\n * Urn calls the methods annotated with @PostInject only once, just after the injection of properties.\r\n * @annotation\r\n */\r\nvar PostInject = function () { return LifecycleDecorator(Lifecycle.POST_INJECT); };\n\n/**\r\n * Urn calls the methods annotated with @PostInject only once, just after the injection of properties.\r\n * @annotation\r\n */\r\nvar PreInject = function () { return LifecycleDecorator(Lifecycle.PRE_INJECT); };\n\nvar PreDestroy = function () { return LifecycleDecorator(Lifecycle.PRE_DESTROY); };\n\nexports.ExpressionType = void 0;\r\n(function (ExpressionType) {\r\n ExpressionType[\"ENV\"] = \"inject-environment-variables\";\r\n ExpressionType[\"JSON_PATH\"] = \"inject-json-data\";\r\n ExpressionType[\"ARGV\"] = \"inject-argv\";\r\n})(exports.ExpressionType || (exports.ExpressionType = {}));\n\nvar isNodeJs = (function () {\r\n try {\r\n // eslint-disable-next-line @typescript-eslint/no-var-requires\r\n var os = require('os');\r\n os.arch();\r\n return true;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n})();\n\nfunction Value(expression, type, externalArgs) {\r\n switch (type) {\r\n case exports.ExpressionType.ENV:\r\n case exports.ExpressionType.ARGV:\r\n if (!isNodeJs) {\r\n throw new Error(\"The \\\"\".concat(type, \"\\\" evaluator only supports nodejs environment!\"));\r\n }\r\n }\r\n return function (target, propertyKey) {\r\n var metadata = MetadataFactory.getMetadata(target.constructor, ClassMetadata);\r\n var value_symbol = Symbol('');\r\n metadata.recordPropertyType(propertyKey, value_symbol);\r\n GlobalMetadata.getInstance().recordFactory(value_symbol, function (container, owner) {\r\n return function () {\r\n return container.evaluate(expression, {\r\n owner: owner,\r\n type: type,\r\n externalArgs: externalArgs\r\n });\r\n };\r\n });\r\n };\r\n}\n\nfunction Mark(key, value) {\r\n if (value === void 0) { value = true; }\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (args.length === 1) {\r\n // class decorator\r\n var metadata = MetadataFactory.getMetadata(args[0], ClassMetadata);\r\n metadata.marker().ctor(key, value);\r\n }\r\n else if (args.length === 2) {\r\n // property decorator\r\n var _a = __read(args, 2), prototype = _a[0], propertyKey = _a[1];\r\n var metadata = MetadataFactory.getMetadata(prototype.constructor, ClassMetadata);\r\n metadata.marker().member(propertyKey).mark(key, value);\r\n }\r\n else if (args.length === 3 && typeof args[2] === 'number') {\r\n // parameter decorator\r\n var _b = __read(args, 3), prototype = _b[0], propertyKey = _b[1], index = _b[2];\r\n var metadata = MetadataFactory.getMetadata(prototype.constructor, ClassMetadata);\r\n metadata.marker().parameter(propertyKey, index).mark(key, value);\r\n }\r\n else {\r\n // method decorator\r\n var _c = __read(args, 2), prototype = _c[0], propertyKey = _c[1];\r\n var metadata = MetadataFactory.getMetadata(prototype.constructor, ClassMetadata);\r\n metadata.marker().member(propertyKey).mark(key, value);\r\n }\r\n };\r\n}\n\nvar EventEmitter = /** @class */ (function () {\r\n function EventEmitter() {\r\n this.events = new Map();\r\n }\r\n EventEmitter.prototype.on = function (type, listener) {\r\n var listeners = this.events.get(type);\r\n if (listeners) {\r\n if (listeners.indexOf(listener) == -1) {\r\n listeners.push(listener);\r\n }\r\n }\r\n else {\r\n listeners = [listener];\r\n this.events.set(type, listeners);\r\n }\r\n return function () {\r\n var ls = listeners;\r\n var index = ls.indexOf(listener);\r\n if (index > -1) {\r\n ls.splice(index, 1);\r\n }\r\n };\r\n };\r\n EventEmitter.prototype.emit = function (type) {\r\n var _a;\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n (_a = this.events.get(type)) === null || _a === void 0 ? void 0 : _a.forEach(function (fn) {\r\n fn.apply(void 0, __spreadArray([], __read(args), false));\r\n });\r\n };\r\n return EventEmitter;\r\n}());\n\nfunction hasArgs(options) {\r\n return 'args' in options;\r\n}\r\nfunction hasInjections(options) {\r\n return 'injections' in options;\r\n}\n\nvar index_cjs = {};\n\nvar lazyProp;\nvar lazyMember;\nObject.defineProperty(index_cjs,\"__esModule\",{value:!0});\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nvar e=function(){return e=Object.assign||function(e){for(var t,r=1,n=arguments.length;r other.serialNo ? -1 : this.serialNo < other.serialNo ? 1 : 0;\r\n };\r\n return ComponentInstanceWrapper;\r\n}());\n\nfunction invokePreDestroy(instance) {\r\n var clazz = instance === null || instance === void 0 ? void 0 : instance.constructor;\r\n if (!clazz) {\r\n return;\r\n }\r\n var metadata = MetadataFactory.getMetadata(clazz, ClassMetadata);\r\n var preDestroyMethods = metadata.getMethods(Lifecycle.PRE_DESTROY);\r\n preDestroyMethods.forEach(function (methodName) {\r\n var method = clazz.prototype[methodName];\r\n if (typeof method === 'function') {\r\n method.apply(instance);\r\n }\r\n });\r\n}\n\nvar SingletonInstanceResolution = /** @class */ (function () {\r\n function SingletonInstanceResolution() {\r\n this.INSTANCE_MAP = new Map();\r\n }\r\n SingletonInstanceResolution.prototype.getInstance = function (options) {\r\n var _a;\r\n return (_a = this.INSTANCE_MAP.get(options.identifier)) === null || _a === void 0 ? void 0 : _a.instance;\r\n };\r\n SingletonInstanceResolution.prototype.saveInstance = function (options) {\r\n this.INSTANCE_MAP.set(options.identifier, new ComponentInstanceWrapper(options.instance));\r\n };\r\n SingletonInstanceResolution.prototype.shouldGenerate = function (options) {\r\n return !this.INSTANCE_MAP.has(options.identifier);\r\n };\r\n SingletonInstanceResolution.prototype.destroy = function () {\r\n var instanceWrappers = Array.from(this.INSTANCE_MAP.values());\r\n instanceWrappers.sort(function (a, b) { return a.compareTo(b); });\r\n instanceWrappers.forEach(function (instanceWrapper) {\r\n invokePreDestroy(instanceWrapper.instance);\r\n });\r\n this.INSTANCE_MAP.clear();\r\n };\r\n return SingletonInstanceResolution;\r\n}());\n\nvar SINGLETON_INSTANCE_SINGLETON = new SingletonInstanceResolution();\r\nvar GlobalSharedInstanceResolution = /** @class */ (function () {\r\n function GlobalSharedInstanceResolution() {\r\n }\r\n GlobalSharedInstanceResolution.prototype.getInstance = function (options) {\r\n return SINGLETON_INSTANCE_SINGLETON.getInstance(options);\r\n };\r\n GlobalSharedInstanceResolution.prototype.saveInstance = function (options) {\r\n SINGLETON_INSTANCE_SINGLETON.saveInstance(options);\r\n };\r\n GlobalSharedInstanceResolution.prototype.shouldGenerate = function (options) {\r\n return SINGLETON_INSTANCE_SINGLETON.shouldGenerate(options);\r\n };\r\n GlobalSharedInstanceResolution.prototype.destroy = function () {\r\n // PASS;\r\n };\r\n return GlobalSharedInstanceResolution;\r\n}());\n\nvar TransientInstanceResolution = /** @class */ (function () {\r\n function TransientInstanceResolution() {\r\n this.instances = new Set();\r\n }\r\n TransientInstanceResolution.prototype.shouldGenerate = function () {\r\n return true;\r\n };\r\n TransientInstanceResolution.prototype.getInstance = function () {\r\n return;\r\n };\r\n TransientInstanceResolution.prototype.saveInstance = function (options) {\r\n this.instances.add(options.instance);\r\n };\r\n TransientInstanceResolution.prototype.destroy = function () {\r\n this.instances.forEach(function (it) {\r\n if (!it) {\r\n return;\r\n }\r\n invokePreDestroy(it);\r\n });\r\n this.instances.clear();\r\n };\r\n return TransientInstanceResolution;\r\n}());\n\nvar JSONDataEvaluator = /** @class */ (function () {\r\n function JSONDataEvaluator() {\r\n this.namespaceDataMap = new Map();\r\n }\r\n JSONDataEvaluator.prototype.eval = function (context, expression) {\r\n var colonIndex = expression.indexOf(':');\r\n if (colonIndex === -1) {\r\n throw new Error('Incorrect expression, namespace not specified');\r\n }\r\n var namespace = expression.substring(0, colonIndex);\r\n var exp = expression.substring(colonIndex + 1);\r\n if (!this.namespaceDataMap.has(namespace)) {\r\n throw new Error(\"Incorrect expression: namespace not recorded: \\\"\".concat(namespace, \"\\\"\"));\r\n }\r\n var data = this.namespaceDataMap.get(namespace);\r\n return runExpression(exp, data);\r\n };\r\n JSONDataEvaluator.prototype.recordData = function (namespace, data) {\r\n this.namespaceDataMap.set(namespace, data);\r\n };\r\n return JSONDataEvaluator;\r\n}());\r\nfunction runExpression(expression, rootContext) {\r\n var fn = compileExpression(expression);\r\n return fn(rootContext);\r\n}\r\nfunction compileExpression(expression) {\r\n if (expression.indexOf(',') > -1) {\r\n throw new Error(\"Incorrect expression syntax, The ',' is not allowed in expression: \\\"\".concat(expression, \"\\\"\"));\r\n }\r\n if (expression.length > 120) {\r\n throw new Error(\"Incorrect expression syntax, expression length cannot be greater than 120, but actual: \".concat(expression.length));\r\n }\r\n if (/\\(.*?\\)/.test(expression)) {\r\n throw new Error(\"Incorrect expression syntax, parentheses are not allowed in expression: \\\"\".concat(expression, \"\\\"\"));\r\n }\r\n expression = expression.trim();\r\n if (expression === '') {\r\n return function (root) { return root; };\r\n }\r\n var rootVarName = varName('context');\r\n return new Function(rootVarName, \"\\n \\\"use strict\\\";\\n try {\\n return \".concat(rootVarName, \".\").concat(expression, \";\\n } catch(error) { throw error }\\n \"));\r\n}\r\nvar VAR_SEQUENCE = Date.now();\r\nfunction varName(prefix) {\r\n return prefix + '' + (VAR_SEQUENCE++).toString(16);\r\n}\n\nvar EnvironmentEvaluator = /** @class */ (function () {\r\n function EnvironmentEvaluator() {\r\n }\r\n EnvironmentEvaluator.prototype.eval = function (context, expression) {\r\n return process.env[expression];\r\n };\r\n return EnvironmentEvaluator;\r\n}());\n\nvar ArgvEvaluator = /** @class */ (function () {\r\n function ArgvEvaluator() {\r\n }\r\n ArgvEvaluator.prototype.eval = function (context, expression, args) {\r\n var argv = args || process.argv;\r\n // eslint-disable-next-line @typescript-eslint/no-var-requires\r\n var minimist = require('minimist');\r\n var map = minimist(argv);\r\n return map[expression];\r\n };\r\n return ArgvEvaluator;\r\n}());\n\nvar Advice;\r\n(function (Advice) {\r\n Advice[Advice[\"Before\"] = 0] = \"Before\";\r\n Advice[Advice[\"After\"] = 1] = \"After\";\r\n Advice[Advice[\"Around\"] = 2] = \"Around\";\r\n Advice[Advice[\"AfterReturn\"] = 3] = \"AfterReturn\";\r\n Advice[Advice[\"Thrown\"] = 4] = \"Thrown\";\r\n Advice[Advice[\"Finally\"] = 5] = \"Finally\";\r\n})(Advice || (Advice = {}));\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\nvar AspectUtils = /** @class */ (function () {\r\n function AspectUtils(fn) {\r\n this.fn = fn;\r\n this.beforeHooks = [];\r\n this.afterHooks = [];\r\n this.thrownHooks = [];\r\n this.finallyHooks = [];\r\n this.afterReturnHooks = [];\r\n this.aroundHooks = [];\r\n }\r\n AspectUtils.prototype.append = function (advice, hook) {\r\n var hooksArray;\r\n switch (advice) {\r\n case Advice.Before:\r\n hooksArray = this.beforeHooks;\r\n break;\r\n case Advice.After:\r\n hooksArray = this.afterHooks;\r\n break;\r\n case Advice.Thrown:\r\n hooksArray = this.thrownHooks;\r\n break;\r\n case Advice.Finally:\r\n hooksArray = this.finallyHooks;\r\n break;\r\n case Advice.AfterReturn:\r\n hooksArray = this.afterReturnHooks;\r\n break;\r\n case Advice.Around:\r\n hooksArray = this.aroundHooks;\r\n break;\r\n }\r\n if (hooksArray) {\r\n hooksArray.push(hook);\r\n }\r\n };\r\n AspectUtils.prototype.extract = function () {\r\n var _a = this, aroundHooks = _a.aroundHooks, beforeHooks = _a.beforeHooks, afterHooks = _a.afterHooks, afterReturnHooks = _a.afterReturnHooks, finallyHooks = _a.finallyHooks, thrownHooks = _a.thrownHooks;\r\n var fn = aroundHooks.reduceRight(function (prev, next) {\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return next.call(this, prev, args);\r\n };\r\n }, this.fn);\r\n return function () {\r\n var _this = this;\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n beforeHooks.forEach(function (hook) {\r\n hook.call(_this, args);\r\n });\r\n var invoke = function (onError, onFinally, onAfter) {\r\n var returnValue;\r\n var isPromise = false;\r\n try {\r\n returnValue = fn.apply(_this, args);\r\n if (returnValue instanceof Promise) {\r\n isPromise = true;\r\n returnValue = returnValue.catch(onError).finally(onFinally);\r\n }\r\n }\r\n catch (error) {\r\n onError(error);\r\n }\r\n finally {\r\n if (!isPromise) {\r\n onFinally();\r\n }\r\n }\r\n if (isPromise) {\r\n return returnValue.then(function (value) {\r\n return onAfter(value);\r\n });\r\n }\r\n else {\r\n return onAfter(returnValue);\r\n }\r\n };\r\n return invoke(function (error) {\r\n if (thrownHooks.length > 0) {\r\n thrownHooks.forEach(function (hook) { return hook.call(_this, error, args); });\r\n }\r\n else {\r\n throw error;\r\n }\r\n }, function () {\r\n finallyHooks.forEach(function (hook) { return hook.call(_this, args); });\r\n }, function (value) {\r\n afterHooks.forEach(function (hook) {\r\n hook.call(_this, args);\r\n });\r\n return afterReturnHooks.reduce(function (retVal, hook) {\r\n return hook.call(_this, retVal, args);\r\n }, value);\r\n });\r\n };\r\n };\r\n return AspectUtils;\r\n}());\n\nfunction createAspect(appCtx, target, methodName, methodFunc, metadata) {\r\n var createAspectCtx = function (advice, args, returnValue, error) {\r\n if (returnValue === void 0) { returnValue = null; }\r\n if (error === void 0) { error = null; }\r\n return {\r\n target: target,\r\n methodName: methodName,\r\n arguments: args,\r\n returnValue: returnValue,\r\n error: error,\r\n advice: advice\r\n };\r\n };\r\n var aspectUtils = new AspectUtils(methodFunc);\r\n var ClassToInstance = function (AspectClass) { return appCtx.getInstance(AspectClass); };\r\n var beforeAdviceAspects = metadata.getAspectsOf(methodName, Advice.Before).map(ClassToInstance);\r\n var afterAdviceAspects = metadata.getAspectsOf(methodName, Advice.After).map(ClassToInstance);\r\n var tryCatchAdviceAspects = metadata.getAspectsOf(methodName, Advice.Thrown).map(ClassToInstance);\r\n var tryFinallyAdviceAspects = metadata.getAspectsOf(methodName, Advice.Finally).map(ClassToInstance);\r\n var afterReturnAdviceAspects = metadata.getAspectsOf(methodName, Advice.AfterReturn).map(ClassToInstance);\r\n var aroundAdviceAspects = metadata.getAspectsOf(methodName, Advice.Around).map(ClassToInstance);\r\n if (beforeAdviceAspects.length > 0) {\r\n aspectUtils.append(Advice.Before, function (args) {\r\n var joinPoint = createAspectCtx(Advice.Before, args);\r\n beforeAdviceAspects.forEach(function (aspect) {\r\n aspect.execute(joinPoint);\r\n });\r\n });\r\n }\r\n if (afterAdviceAspects.length > 0) {\r\n aspectUtils.append(Advice.After, function (args) {\r\n var joinPoint = createAspectCtx(Advice.After, args);\r\n afterAdviceAspects.forEach(function (aspect) {\r\n aspect.execute(joinPoint);\r\n });\r\n });\r\n }\r\n if (tryCatchAdviceAspects.length > 0) {\r\n aspectUtils.append(Advice.Thrown, function (error, args) {\r\n var joinPoint = createAspectCtx(Advice.Thrown, args, null, error);\r\n tryCatchAdviceAspects.forEach(function (aspect) {\r\n aspect.execute(joinPoint);\r\n });\r\n });\r\n }\r\n if (tryFinallyAdviceAspects.length > 0) {\r\n aspectUtils.append(Advice.Finally, function (args) {\r\n var joinPoint = createAspectCtx(Advice.Finally, args);\r\n tryFinallyAdviceAspects.forEach(function (aspect) {\r\n aspect.execute(joinPoint);\r\n });\r\n });\r\n }\r\n if (afterReturnAdviceAspects.length > 0) {\r\n aspectUtils.append(Advice.AfterReturn, function (returnValue, args) {\r\n return afterReturnAdviceAspects.reduce(function (prevReturnValue, aspect) {\r\n var joinPoint = createAspectCtx(Advice.AfterReturn, args, returnValue);\r\n return aspect.execute(joinPoint);\r\n }, returnValue);\r\n });\r\n }\r\n if (aroundAdviceAspects.length > 0) {\r\n aroundAdviceAspects.forEach(function (aspect) {\r\n aspectUtils.append(Advice.Around, function (originFn, args) {\r\n var joinPoint = createAspectCtx(Advice.Around, args, null);\r\n joinPoint.proceed = function (jpArgs) {\r\n if (jpArgs === void 0) { jpArgs = args; }\r\n return originFn(jpArgs);\r\n };\r\n return aspect.execute(joinPoint);\r\n });\r\n });\r\n }\r\n return aspectUtils.extract();\r\n}\n\nvar AOPClassMetadata = /** @class */ (function () {\r\n function AOPClassMetadata() {\r\n this.aspectMap = createDefaultValueMap(function () { return createDefaultValueMap(function () { return []; }); });\r\n }\r\n AOPClassMetadata.getReflectKey = function () {\r\n return 'aop:use-aspect-metadata';\r\n };\r\n AOPClassMetadata.prototype.init = function () {\r\n // IGNORE\r\n };\r\n AOPClassMetadata.prototype.append = function (methodName, advice, aspects) {\r\n var adviceAspectMap = this.aspectMap.get(methodName);\r\n var exitingAspectArray = adviceAspectMap.get(advice);\r\n exitingAspectArray.push.apply(exitingAspectArray, __spreadArray([], __read(aspects), false));\r\n };\r\n AOPClassMetadata.prototype.reader = function () {\r\n var _this = this;\r\n return {\r\n getAspects: function () {\r\n return _this.aspectMap;\r\n },\r\n getAspectsOf: function (methodName, advice) {\r\n return _this.aspectMap.get(methodName).get(advice);\r\n }\r\n };\r\n };\r\n return AOPClassMetadata;\r\n}());\n\nvar AOPInstantiationAwareProcessor = /** @class */ (function () {\r\n function AOPInstantiationAwareProcessor() {\r\n }\r\n AOPInstantiationAwareProcessor.create = function (appCtx) {\r\n return /** @class */ (function (_super) {\r\n __extends(class_1, _super);\r\n function class_1() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.appCtx = appCtx;\r\n return _this;\r\n }\r\n return class_1;\r\n }(AOPInstantiationAwareProcessor));\r\n };\r\n AOPInstantiationAwareProcessor.prototype.afterInstantiation = function (instance) {\r\n var _this = this;\r\n var clazz = instance.constructor;\r\n var useAspectMetadata = MetadataFactory.getMetadata(clazz, AOPClassMetadata);\r\n var useAspectMetadataReader = useAspectMetadata.reader();\r\n var useAspectsMap = useAspectMetadataReader.getAspects();\r\n if (useAspectsMap.size === 0) {\r\n return instance;\r\n }\r\n var aspectStoreMap = new WeakMap();\r\n aspectStoreMap.set(instance, new Map());\r\n var proxyResult = new Proxy(instance, {\r\n get: function (target, prop) {\r\n var originValue = target[prop];\r\n if (prop in target && typeof originValue === 'function') {\r\n var aspectMap = aspectStoreMap.get(instance);\r\n if (!aspectMap) {\r\n return originValue;\r\n }\r\n if (aspectMap.has(prop)) {\r\n return aspectMap.get(prop);\r\n }\r\n var aspectFn = createAspect(_this.appCtx, target, prop, originValue, useAspectMetadataReader);\r\n aspectMap.set(prop, aspectFn);\r\n return aspectFn;\r\n }\r\n return originValue;\r\n }\r\n });\r\n return proxyResult;\r\n };\r\n return AOPInstantiationAwareProcessor;\r\n}());\n\nvar InstantiationAwareProcessorManager = /** @class */ (function () {\r\n function InstantiationAwareProcessorManager(container) {\r\n this.container = container;\r\n this.instAwareProcessorClasses = new Set();\r\n }\r\n InstantiationAwareProcessorManager.prototype.appendInstAwareProcessorClass = function (instAwareProcessorClass) {\r\n this.instAwareProcessorClasses.add(instAwareProcessorClass);\r\n };\r\n InstantiationAwareProcessorManager.prototype.appendInstAwareProcessorClasses = function (instAwareProcessorClasses) {\r\n var _this = this;\r\n instAwareProcessorClasses.forEach(function (it) {\r\n _this.instAwareProcessorClasses.add(it);\r\n });\r\n };\r\n InstantiationAwareProcessorManager.prototype.beforeInstantiation = function (componentClass, args) {\r\n var instAwareProcessors = this.instAwareProcessorInstances;\r\n var instance;\r\n instAwareProcessors.some(function (processor) {\r\n if (!processor.beforeInstantiation) {\r\n return false;\r\n }\r\n instance = processor.beforeInstantiation(componentClass, args);\r\n return !!instance;\r\n });\r\n return instance;\r\n };\r\n InstantiationAwareProcessorManager.prototype.afterInstantiation = function (instance) {\r\n return this.instAwareProcessorInstances.reduce(function (instance, processor) {\r\n if (processor.afterInstantiation) {\r\n var result = processor.afterInstantiation(instance);\r\n if (!!result) {\r\n return result;\r\n }\r\n }\r\n return instance;\r\n }, instance);\r\n };\r\n InstantiationAwareProcessorManager.prototype.isInstAwareProcessorClass = function (cls) {\r\n var classes = this.getInstAwareProcessorClasses();\r\n return classes.indexOf(cls) > -1;\r\n };\r\n InstantiationAwareProcessorManager.prototype.getInstAwareProcessorClasses = function () {\r\n var globalInstAwareProcessorClasses = GlobalMetadata.getInstance().reader().getInstAwareProcessorClasses();\r\n return globalInstAwareProcessorClasses.concat(Array.from(this.instAwareProcessorClasses));\r\n };\r\n __decorate([\r\n lazyMember({\r\n evaluate: function (instance) {\r\n var globalInstAwareProcessorClasses = GlobalMetadata.getInstance().reader().getInstAwareProcessorClasses();\r\n var instAwareProcessorClasses = globalInstAwareProcessorClasses.concat(Array.from(instance.instAwareProcessorClasses));\r\n return instAwareProcessorClasses.map(function (it) { return instance.container.getInstance(it); });\r\n },\r\n resetBy: [\r\n function (instance) { return instance.instAwareProcessorClasses.size; },\r\n function () {\r\n var globalInstAwareProcessorClasses = GlobalMetadata.getInstance().reader().getInstAwareProcessorClasses();\r\n return globalInstAwareProcessorClasses.length;\r\n }\r\n ]\r\n }),\r\n __metadata(\"design:type\", Array)\r\n ], InstantiationAwareProcessorManager.prototype, \"instAwareProcessorInstances\", void 0);\r\n return InstantiationAwareProcessorManager;\r\n}());\n\nvar PRE_DESTROY_EVENT_KEY = 'container:event:pre-destroy';\r\nvar ApplicationContext = /** @class */ (function () {\r\n function ApplicationContext(options) {\r\n if (options === void 0) { options = {}; }\r\n this.resolutions = new Map();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n this.factories = new Map();\r\n this.evaluatorClasses = new Map();\r\n this.eventEmitter = new EventEmitter();\r\n this.defaultScope = options.defaultScope || exports.InstanceScope.SINGLETON;\r\n this.lazyMode = options.lazyMode === undefined ? true : options.lazyMode;\r\n this.registerInstanceScopeResolution(exports.InstanceScope.SINGLETON, SingletonInstanceResolution);\r\n this.registerInstanceScopeResolution(exports.InstanceScope.GLOBAL_SHARED_SINGLETON, GlobalSharedInstanceResolution);\r\n this.registerInstanceScopeResolution(exports.InstanceScope.TRANSIENT, TransientInstanceResolution);\r\n this.registerEvaluator(exports.ExpressionType.JSON_PATH, JSONDataEvaluator);\r\n if (isNodeJs) {\r\n this.registerEvaluator(exports.ExpressionType.ENV, EnvironmentEvaluator);\r\n this.registerEvaluator(exports.ExpressionType.ARGV, ArgvEvaluator);\r\n }\r\n this.instAwareProcessorManager = new InstantiationAwareProcessorManager(this);\r\n this.registerInstAwareProcessor(AOPInstantiationAwareProcessor.create(this));\r\n }\r\n ApplicationContext.prototype.getInstance = function (symbol, owner) {\r\n if (symbol === ApplicationContext) {\r\n return this;\r\n }\r\n if (typeof symbol === 'string' || typeof symbol === 'symbol') {\r\n var factoryDef = this.getFactory(symbol);\r\n if (factoryDef) {\r\n var factory = factoryDef.factory, injections = factoryDef.injections;\r\n var fn = factory(this, owner);\r\n var result = this.invoke(fn, {\r\n injections: injections\r\n });\r\n var constr = result === null || result === void 0 ? void 0 : result.constructor;\r\n if (typeof constr === 'function') {\r\n var componentClass_1 = constr;\r\n var resolver = new LifecycleManager(componentClass_1, this);\r\n var isInstAwareProcessor = this.instAwareProcessorManager.isInstAwareProcessorClass(componentClass_1);\r\n resolver.invokePreInjectMethod(result);\r\n if (!isInstAwareProcessor) {\r\n result = this.instAwareProcessorManager.afterInstantiation(result);\r\n }\r\n resolver.invokePostInjectMethod(result);\r\n }\r\n return result;\r\n }\r\n else {\r\n var classMetadata = GlobalMetadata.getInstance().reader().getClassMetadata(symbol);\r\n if (!classMetadata) {\r\n throw new Error('');\r\n }\r\n else {\r\n symbol = classMetadata.reader().getClass();\r\n }\r\n }\r\n }\r\n var componentClass = symbol;\r\n var reader = ClassMetadata.getInstance(componentClass).reader();\r\n var scope = reader.getScope();\r\n var resolution = (this.resolutions.get(scope) || this.resolutions.get(this.defaultScope));\r\n var getInstanceOptions = {\r\n identifier: componentClass,\r\n owner: owner,\r\n ownerPropertyKey: undefined\r\n };\r\n if (resolution.shouldGenerate(getInstanceOptions)) {\r\n var builder = this.createComponentInstanceBuilder(componentClass);\r\n var instance = builder.build();\r\n var saveInstanceOptions = __assign(__assign({}, getInstanceOptions), { instance: instance });\r\n resolution.saveInstance(saveInstanceOptions);\r\n return instance;\r\n }\r\n else {\r\n return resolution.getInstance(getInstanceOptions);\r\n }\r\n };\r\n ApplicationContext.prototype.createComponentInstanceBuilder = function (componentClass) {\r\n var builder = new ComponentInstanceBuilder(componentClass, this, this.instAwareProcessorManager);\r\n builder.appendLazyMode(this.lazyMode);\r\n return builder;\r\n };\r\n ApplicationContext.prototype.getFactory = function (key) {\r\n var factory = GlobalMetadata.getInstance().reader().getComponentFactory(key);\r\n if (!factory) {\r\n return this.factories.get(key);\r\n }\r\n return factory;\r\n };\r\n ApplicationContext.prototype.bindFactory = function (symbol, factory, injections) {\r\n this.factories.set(symbol, new ServiceFactoryDef(factory, injections));\r\n };\r\n ApplicationContext.prototype.invoke = function (func, options) {\r\n var _this = this;\r\n if (options === void 0) { options = {}; }\r\n var fn;\r\n if (arguments.length > 1) {\r\n fn = func.bind(options.context);\r\n }\r\n else {\r\n fn = func;\r\n }\r\n if (hasArgs(options)) {\r\n return options.args ? fn.apply(void 0, __spreadArray([], __read(options.args), false)) : fn();\r\n }\r\n if (hasInjections(options)) {\r\n var args_1 = options.injections ? options.injections.map(function (it) { return _this.getInstance(it); }) : [];\r\n return args_1.length > 0 ? fn.apply(void 0, __spreadArray([], __read(args_1), false)) : fn();\r\n }\r\n var metadata = MetadataFactory.getMetadata(fn, FunctionMetadata).reader();\r\n var parameterIdentifiers = metadata.getParameters();\r\n var args = parameterIdentifiers.map(function (identifier) {\r\n return _this.getInstance(identifier);\r\n });\r\n return fn.apply(void 0, __spreadArray([], __read(args), false));\r\n };\r\n ApplicationContext.prototype.destroy = function () {\r\n this.eventEmitter.emit(PRE_DESTROY_EVENT_KEY);\r\n this.resolutions.forEach(function (it) {\r\n it.destroy();\r\n });\r\n };\r\n ApplicationContext.prototype.evaluate = function (expression, options) {\r\n var evaluatorClass = this.evaluatorClasses.get(options.type);\r\n if (!evaluatorClass) {\r\n throw new TypeError(\"Unknown evaluator name: \".concat(options.type));\r\n }\r\n var evaluator = this.getInstance(evaluatorClass);\r\n return evaluator.eval(this, expression, options.externalArgs);\r\n };\r\n ApplicationContext.prototype.recordJSONData = function (namespace, data) {\r\n var evaluator = this.getInstance(JSONDataEvaluator);\r\n evaluator.recordData(namespace, data);\r\n };\r\n ApplicationContext.prototype.bindInstance = function (identifier, instance) {\r\n var resolution = this.resolutions.get(exports.InstanceScope.SINGLETON);\r\n resolution === null || resolution === void 0 ? void 0 : resolution.saveInstance({\r\n identifier: identifier,\r\n instance: instance\r\n });\r\n };\r\n ApplicationContext.prototype.registerInstanceScopeResolution = function (scope, resolutionConstructor, constructorArgs) {\r\n this.resolutions.set(scope, new (resolutionConstructor.bind.apply(resolutionConstructor, __spreadArray([void 0], __read((constructorArgs || [])), false)))());\r\n };\r\n ApplicationContext.prototype.registerEvaluator = function (name, evaluatorClass) {\r\n var metadata = MetadataFactory.getMetadata(evaluatorClass, ClassMetadata);\r\n metadata.setScope(exports.InstanceScope.SINGLETON);\r\n this.evaluatorClasses.set(name, evaluatorClass);\r\n };\r\n ApplicationContext.prototype.registerInstAwareProcessor = function (clazz) {\r\n this.instAwareProcessorManager.appendInstAwareProcessorClass(clazz);\r\n };\r\n ApplicationContext.prototype.onPreDestroy = function (listener) {\r\n return this.eventEmitter.on(PRE_DESTROY_EVENT_KEY, listener);\r\n };\r\n ApplicationContext.prototype.getClassMetadata = function (ctor) {\r\n return ClassMetadata.getInstance(ctor).reader();\r\n };\r\n return ApplicationContext;\r\n}());\n\nexports.ApplicationContext = ApplicationContext;\nexports.Bind = Bind;\nexports.Factory = Factory;\nexports.Inject = Inject;\nexports.Mark = Mark;\nexports.PostInject = PostInject;\nexports.PreDestroy = PreDestroy;\nexports.PreInject = PreInject;\nexports.Scope = Scope;\nexports.Value = Value;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzLmpzIiwic291cmNlcyI6WyIuLi9zcmMvZm91bmRhdGlvbi9TZXJ2aWNlRmFjdG9yeURlZi50cyIsIi4uL3NyYy9tZXRhZGF0YS9HbG9iYWxNZXRhZGF0YS50cyIsIi4uL3NyYy9mb3VuZGF0aW9uL0luc3RhbmNlU2NvcGUudHMiLCIuLi9zcmMvY29tbW9uL0RlZmF1bHRWYWx1ZU1hcC50cyIsIi4uL25vZGVfbW9kdWxlcy9yZWZsZWN0LW1ldGFkYXRhL1JlZmxlY3QuanMiLCIuLi9zcmMvbWV0YWRhdGEvTWV0YWRhdGFGYWN0b3J5LnRzIiwiLi4vc3JjL21ldGFkYXRhL0NsYXNzTWV0YWRhdGEudHMiLCIuLi9zcmMvZGVjb3JhdG9ycy9CaW5kLnRzIiwiLi4vc3JjL2RlY29yYXRvcnMvU2NvcGUudHMiLCIuLi9zcmMvZGVjb3JhdG9ycy9JbmplY3QudHMiLCIuLi9zcmMvZGVjb3JhdG9ycy9GYWN0b3J5LnRzIiwiLi4vc3JjL2ZvdW5kYXRpb24vTGlmZWN5Y2xlLnRzIiwiLi4vc3JjL2RlY29yYXRvcnMvTGlmZWN5Y2xlRGVjb3JhdG9yLnRzIiwiLi4vc3JjL2RlY29yYXRvcnMvUG9zdEluamVjdC50cyIsIi4uL3NyYy9kZWNvcmF0b3JzL1ByZUluamVjdC50cyIsIi4uL3NyYy9kZWNvcmF0b3JzL1ByZURlc3Ryb3kudHMiLCIuLi9zcmMvdHlwZXMvRXZhbHVhdGVPcHRpb25zLnRzIiwiLi4vc3JjL2NvbW1vbi9pc05vZGVKcy50cyIsIi4uL3NyYy9kZWNvcmF0b3JzL1ZhbHVlLnRzIiwiLi4vc3JjL2RlY29yYXRvcnMvTWFyay50cyIsIi4uL3NyYy9mb3VuZGF0aW9uL0V2ZW50RW1pdHRlci50cyIsIi4uL3NyYy9mb3VuZGF0aW9uL0ludm9rZUZ1bmN0aW9uT3B0aW9ucy50cyIsIi4uL25vZGVfbW9kdWxlcy9AdmdlcmJvdC9sYXp5L2Rpc3QvaW5kZXguY2pzLmpzIiwiLi4vc3JjL2ZvdW5kYXRpb24vTGlmZWN5Y2xlTWFuYWdlci50cyIsIi4uL3NyYy9mb3VuZGF0aW9uL0NvbXBvbmVudEluc3RhbmNlQnVpbGRlci50cyIsIi4uL3NyYy9tZXRhZGF0YS9GdW5jdGlvbk1ldGFkYXRhLnRzIiwiLi4vc3JjL2ZvdW5kYXRpb24vQ29tcG9uZW50SW5zdGFuY2VXcmFwcGVyLnRzIiwiLi4vc3JjL2NvbW1vbi9pbnZva2VQcmVEZXN0cm95LnRzIiwiLi4vc3JjL3Jlc29sdXRpb24vU2luZ2xldG9uSW5zdGFuY2VSZXNvbHV0aW9uLnRzIiwiLi4vc3JjL3Jlc29sdXRpb24vR2xvYmFsU2hhcmVkSW5zdGFuY2VSZXNvbHV0aW9uLnRzIiwiLi4vc3JjL3Jlc29sdXRpb24vVHJhbnNpZW50SW5zdGFuY2VSZXNvbHV0aW9uLnRzIiwiLi4vc3JjL2V2YWx1YXRvci9KU09ORGF0YUV2YWx1YXRvci50cyIsIi4uL3NyYy9ldmFsdWF0b3IvRW52aXJvbm1lbnRFdmFsdWF0b3IudHMiLCIuLi9zcmMvZXZhbHVhdG9yL0FyZ3ZFdmFsdWF0b3IudHMiLCIuLi9zcmMvYW9wL0FkdmljZS50cyIsIi4uL3NyYy9hb3AvQXNwZWN0VXRpbHMudHMiLCIuLi9zcmMvYW9wL2NyZWF0ZUFzcGVjdC50cyIsIi4uL3NyYy9hb3AvQU9QQ2xhc3NNZXRhZGF0YS50cyIsIi4uL3NyYy9hb3AvQU9QSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yLnRzIiwiLi4vc3JjL2ZvdW5kYXRpb24vSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yTWFuYWdlci50cyIsIi4uL3NyYy9mb3VuZGF0aW9uL0FwcGxpY2F0aW9uQ29udGV4dC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZXJ2aWNlRmFjdG9yeSB9IGZyb20gJy4uL3R5cGVzL1NlcnZpY2VGYWN0b3J5JztcbmltcG9ydCB7IElkZW50aWZpZXIgfSBmcm9tICcuLi90eXBlcy9JZGVudGlmaWVyJztcbmltcG9ydCB7IENsYXNzTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS9DbGFzc01ldGFkYXRhJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gJy4vQXBwbGljYXRpb25Db250ZXh0JztcblxuZXhwb3J0IGNsYXNzIFNlcnZpY2VGYWN0b3J5RGVmPFQ+IHtcbiAgICBzdGF0aWMgY3JlYXRlRnJvbUNsYXNzTWV0YWRhdGE8VD4obWV0YWRhdGE6IENsYXNzTWV0YWRhdGE8VD4pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXJ2aWNlRmFjdG9yeURlZigoY29udGFpbmVyOiBBcHBsaWNhdGlvbkNvbnRleHQsIG93bmVyOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG1ldGFkYXRhLnJlYWRlcigpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsYXp6ID0gcmVhZGVyLmdldENsYXNzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lci5nZXRJbnN0YW5jZShjbGF6eiwgb3duZXIpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBmYWN0b3J5OiBTZXJ2aWNlRmFjdG9yeTxULCB1bmtub3duPiwgcHVibGljIHJlYWRvbmx5IGluamVjdGlvbnM/OiBJZGVudGlmaWVyW10pIHt9XG59XG4iLCJpbXBvcnQgeyBNZXRhZGF0YSB9IGZyb20gJy4uL3R5cGVzL01ldGFkYXRhJztcbmltcG9ydCB7IElkZW50aWZpZXIgfSBmcm9tICcuLi90eXBlcy9JZGVudGlmaWVyJztcbmltcG9ydCB7IFNlcnZpY2VGYWN0b3J5IH0gZnJvbSAnLi4vdHlwZXMvU2VydmljZUZhY3RvcnknO1xuaW1wb3J0IHsgRmFjdG9yeUlkZW50aWZpZXIgfSBmcm9tICcuLi90eXBlcy9GYWN0b3J5SWRlbnRpZmllcic7XG5pbXBvcnQgeyBDbGFzc01ldGFkYXRhIH0gZnJvbSAnLi9DbGFzc01ldGFkYXRhJztcbmltcG9ydCB7IFNlcnZpY2VGYWN0b3J5RGVmIH0gZnJvbSAnLi4vZm91bmRhdGlvbi9TZXJ2aWNlRmFjdG9yeURlZic7XG5pbXBvcnQgeyBOZXdhYmxlIH0gZnJvbSAnLi4vdHlwZXMvTmV3YWJsZSc7XG5pbXBvcnQgeyBQYXJ0aWFsSW5zdEF3YXJlUHJvY2Vzc29yIH0gZnJvbSAnLi4vdHlwZXMvSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yJztcblxuZXhwb3J0IGludGVyZmFjZSBHbG9iYWxNZXRhZGF0YVJlYWRlciB7XG4gICAgZ2V0Q29tcG9uZW50RmFjdG9yeTxUPihrZXk6IEZhY3RvcnlJZGVudGlmaWVyKTogU2VydmljZUZhY3RvcnlEZWY8VD4gfCB1bmRlZmluZWQ7XG4gICAgZ2V0Q2xhc3NNZXRhZGF0YTxUPihhbGlhc05hbWU6IHN0cmluZyB8IHN5bWJvbCk6IENsYXNzTWV0YWRhdGE8VD4gfCB1bmRlZmluZWQ7XG4gICAgZ2V0SW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcygpOiBBcnJheTxOZXdhYmxlPFBhcnRpYWxJbnN0QXdhcmVQcm9jZXNzb3I+Pjtcbn1cbmV4cG9ydCBjbGFzcyBHbG9iYWxNZXRhZGF0YSBpbXBsZW1lbnRzIE1ldGFkYXRhPEdsb2JhbE1ldGFkYXRhUmVhZGVyLCB2b2lkPiB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSU5TVEFOQ0UgPSBuZXcgR2xvYmFsTWV0YWRhdGEoKTtcbiAgICBzdGF0aWMgZ2V0SW5zdGFuY2UoKSB7XG4gICAgICAgIHJldHVybiBHbG9iYWxNZXRhZGF0YS5JTlNUQU5DRTtcbiAgICB9XG4gICAgcHJpdmF0ZSBjbGFzc0FsaWFzTWV0YWRhdGFNYXAgPSBuZXcgTWFwPHN0cmluZyB8IHN5bWJvbCwgQ2xhc3NNZXRhZGF0YTx1bmtub3duPj4oKTtcbiAgICBwcml2YXRlIGNvbXBvbmVudEZhY3RvcmllcyA9IG5ldyBNYXA8RmFjdG9yeUlkZW50aWZpZXIsIFNlcnZpY2VGYWN0b3J5RGVmPHVua25vd24+PigpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvY2Vzc29yQ2xhc3NlczogU2V0PE5ld2FibGU8UGFydGlhbEluc3RBd2FyZVByb2Nlc3Nvcj4+ID0gbmV3IFNldCgpO1xuICAgIHJlY29yZEZhY3Rvcnk8VD4oc3ltYm9sOiBGYWN0b3J5SWRlbnRpZmllciwgZmFjdG9yeTogU2VydmljZUZhY3Rvcnk8VCwgdW5rbm93bj4sIGluamVjdGlvbnM/OiBJZGVudGlmaWVyW10pIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnRGYWN0b3JpZXMuc2V0KHN5bWJvbCwgbmV3IFNlcnZpY2VGYWN0b3J5RGVmKGZhY3RvcnksIGluamVjdGlvbnMpKTtcbiAgICB9XG4gICAgcmVjb3JkQ2xhc3NBbGlhczxUPihhbGlhc05hbWU6IHN0cmluZyB8IHN5bWJvbCwgbWV0YWRhdGE6IENsYXNzTWV0YWRhdGE8VD4pIHtcbiAgICAgICAgdGhpcy5jbGFzc0FsaWFzTWV0YWRhdGFNYXAuc2V0KGFsaWFzTmFtZSwgbWV0YWRhdGEpO1xuICAgIH1cbiAgICByZWNvcmRQcm9jZXNzb3JDbGFzcyhjbGF6ejogTmV3YWJsZTxQYXJ0aWFsSW5zdEF3YXJlUHJvY2Vzc29yPikge1xuICAgICAgICB0aGlzLnByb2Nlc3NvckNsYXNzZXMuYWRkKGNsYXp6KTtcbiAgICB9XG4gICAgaW5pdCgpIHtcbiAgICAgICAgLy8gUEFTUztcbiAgICB9XG4gICAgcmVhZGVyKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0Q29tcG9uZW50RmFjdG9yeTogPFQ+KGtleTogRmFjdG9yeUlkZW50aWZpZXIpOiBTZXJ2aWNlRmFjdG9yeURlZjxUPiB8IHVuZGVmaW5lZCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50RmFjdG9yaWVzLmdldChrZXkpIGFzIFNlcnZpY2VGYWN0b3J5RGVmPFQ+IHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldENsYXNzTWV0YWRhdGE6IDxUPihhbGlhc05hbWU6IHN0cmluZyB8IHN5bWJvbCk6IENsYXNzTWV0YWRhdGE8VD4gfCB1bmRlZmluZWQgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsYXNzQWxpYXNNZXRhZGF0YU1hcC5nZXQoYWxpYXNOYW1lKSBhcyBDbGFzc01ldGFkYXRhPFQ+IHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldEluc3RBd2FyZVByb2Nlc3NvckNsYXNzZXM6ICgpOiBBcnJheTxOZXdhYmxlPFBhcnRpYWxJbnN0QXdhcmVQcm9jZXNzb3I+PiA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5wcm9jZXNzb3JDbGFzc2VzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCJleHBvcnQgZW51bSBJbnN0YW5jZVNjb3BlIHtcbiAgICBTSU5HTEVUT04gPSAnaW9jLXJlc29sdXRpb246Y29udGFpbmVyLXNpbmdsZXRvbicsXG4gICAgVFJBTlNJRU5UID0gJ2lvYy1yZXNvbHV0aW9uOnRyYW5zaWVudCcsXG4gICAgR0xPQkFMX1NIQVJFRF9TSU5HTEVUT04gPSAnaW9jLXJlc29sdXRpb246Z2xvYmFsLXNoYXJlZC1zaW5nbGV0b24nXG59XG4iLCJleHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVmYXVsdFZhbHVlTWFwPEssIFY+KGZhY3Rvcnk6IChrZXk6IEspID0+IFYpIHtcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPEssIFY+KCk7XG4gICAgY29uc3Qgb3JpZ2luR2V0ID0gbWFwLmdldC5iaW5kKG1hcCk7XG4gICAgbWFwLmdldCA9IGZ1bmN0aW9uIChrZXk6IEspIHtcbiAgICAgICAgaWYgKG1hcC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbkdldChrZXkpIGFzIFY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBmYWN0b3J5KGtleSk7XG4gICAgICAgICAgICBtYXAuc2V0KGtleSwgZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiBtYXAuZ2V0KGtleSkgYXMgVjtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIG1hcCBhcyBEZWZhdWx0VmFsdWVNYXA8SywgVj47XG59XG5leHBvcnQgdHlwZSBEZWZhdWx0VmFsdWVNYXA8SywgVj4gPSBPbWl0PE1hcDxLLCBWPiwgJ2dldCc+ICYge1xuICAgIGdldDogKGtleTogSykgPT4gVjtcbn07XG4iLCIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbkNvcHlyaWdodCAoQykgTWljcm9zb2Z0LiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlXG50aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZVxuTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVEhJUyBDT0RFIElTIFBST1ZJREVEIE9OIEFOICpBUyBJUyogQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxuS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBBTlkgSU1QTElFRFxuV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIFRJVExFLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSxcbk1FUkNIQU5UQUJMSVRZIE9SIE5PTi1JTkZSSU5HRU1FTlQuXG5cblNlZSB0aGUgQXBhY2hlIFZlcnNpb24gMi4wIExpY2Vuc2UgZm9yIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cbnZhciBSZWZsZWN0O1xuKGZ1bmN0aW9uIChSZWZsZWN0KSB7XG4gICAgLy8gTWV0YWRhdGEgUHJvcG9zYWxcbiAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhL1xuICAgIChmdW5jdGlvbiAoZmFjdG9yeSkge1xuICAgICAgICB2YXIgcm9vdCA9IHR5cGVvZiBnbG9iYWwgPT09IFwib2JqZWN0XCIgPyBnbG9iYWwgOlxuICAgICAgICAgICAgdHlwZW9mIHNlbGYgPT09IFwib2JqZWN0XCIgPyBzZWxmIDpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcyA9PT0gXCJvYmplY3RcIiA/IHRoaXMgOlxuICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbihcInJldHVybiB0aGlzO1wiKSgpO1xuICAgICAgICB2YXIgZXhwb3J0ZXIgPSBtYWtlRXhwb3J0ZXIoUmVmbGVjdCk7XG4gICAgICAgIGlmICh0eXBlb2Ygcm9vdC5SZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICByb290LlJlZmxlY3QgPSBSZWZsZWN0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZXhwb3J0ZXIgPSBtYWtlRXhwb3J0ZXIocm9vdC5SZWZsZWN0LCBleHBvcnRlcik7XG4gICAgICAgIH1cbiAgICAgICAgZmFjdG9yeShleHBvcnRlcik7XG4gICAgICAgIGZ1bmN0aW9uIG1ha2VFeHBvcnRlcih0YXJnZXQsIHByZXZpb3VzKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRhcmdldFtrZXldICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzKVxuICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyhrZXksIHZhbHVlKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9KShmdW5jdGlvbiAoZXhwb3J0ZXIpIHtcbiAgICAgICAgdmFyIGhhc093biA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG4gICAgICAgIC8vIGZlYXR1cmUgdGVzdCBmb3IgU3ltYm9sIHN1cHBvcnRcbiAgICAgICAgdmFyIHN1cHBvcnRzU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiO1xuICAgICAgICB2YXIgdG9QcmltaXRpdmVTeW1ib2wgPSBzdXBwb3J0c1N5bWJvbCAmJiB0eXBlb2YgU3ltYm9sLnRvUHJpbWl0aXZlICE9PSBcInVuZGVmaW5lZFwiID8gU3ltYm9sLnRvUHJpbWl0aXZlIDogXCJAQHRvUHJpbWl0aXZlXCI7XG4gICAgICAgIHZhciBpdGVyYXRvclN5bWJvbCA9IHN1cHBvcnRzU3ltYm9sICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgIT09IFwidW5kZWZpbmVkXCIgPyBTeW1ib2wuaXRlcmF0b3IgOiBcIkBAaXRlcmF0b3JcIjtcbiAgICAgICAgdmFyIHN1cHBvcnRzQ3JlYXRlID0gdHlwZW9mIE9iamVjdC5jcmVhdGUgPT09IFwiZnVuY3Rpb25cIjsgLy8gZmVhdHVyZSB0ZXN0IGZvciBPYmplY3QuY3JlYXRlIHN1cHBvcnRcbiAgICAgICAgdmFyIHN1cHBvcnRzUHJvdG8gPSB7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5OyAvLyBmZWF0dXJlIHRlc3QgZm9yIF9fcHJvdG9fXyBzdXBwb3J0XG4gICAgICAgIHZhciBkb3duTGV2ZWwgPSAhc3VwcG9ydHNDcmVhdGUgJiYgIXN1cHBvcnRzUHJvdG87XG4gICAgICAgIHZhciBIYXNoTWFwID0ge1xuICAgICAgICAgICAgLy8gY3JlYXRlIGFuIG9iamVjdCBpbiBkaWN0aW9uYXJ5IG1vZGUgKGEuay5hLiBcInNsb3dcIiBtb2RlIGluIHY4KVxuICAgICAgICAgICAgY3JlYXRlOiBzdXBwb3J0c0NyZWF0ZVxuICAgICAgICAgICAgICAgID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gTWFrZURpY3Rpb25hcnkoT2JqZWN0LmNyZWF0ZShudWxsKSk7IH1cbiAgICAgICAgICAgICAgICA6IHN1cHBvcnRzUHJvdG9cbiAgICAgICAgICAgICAgICAgICAgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBNYWtlRGljdGlvbmFyeSh7IF9fcHJvdG9fXzogbnVsbCB9KTsgfVxuICAgICAgICAgICAgICAgICAgICA6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE1ha2VEaWN0aW9uYXJ5KHt9KTsgfSxcbiAgICAgICAgICAgIGhhczogZG93bkxldmVsXG4gICAgICAgICAgICAgICAgPyBmdW5jdGlvbiAobWFwLCBrZXkpIHsgcmV0dXJuIGhhc093bi5jYWxsKG1hcCwga2V5KTsgfVxuICAgICAgICAgICAgICAgIDogZnVuY3Rpb24gKG1hcCwga2V5KSB7IHJldHVybiBrZXkgaW4gbWFwOyB9LFxuICAgICAgICAgICAgZ2V0OiBkb3duTGV2ZWxcbiAgICAgICAgICAgICAgICA/IGZ1bmN0aW9uIChtYXAsIGtleSkgeyByZXR1cm4gaGFzT3duLmNhbGwobWFwLCBrZXkpID8gbWFwW2tleV0gOiB1bmRlZmluZWQ7IH1cbiAgICAgICAgICAgICAgICA6IGZ1bmN0aW9uIChtYXAsIGtleSkgeyByZXR1cm4gbWFwW2tleV07IH0sXG4gICAgICAgIH07XG4gICAgICAgIC8vIExvYWQgZ2xvYmFsIG9yIHNoaW0gdmVyc2lvbnMgb2YgTWFwLCBTZXQsIGFuZCBXZWFrTWFwXG4gICAgICAgIHZhciBmdW5jdGlvblByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihGdW5jdGlvbik7XG4gICAgICAgIHZhciB1c2VQb2x5ZmlsbCA9IHR5cGVvZiBwcm9jZXNzID09PSBcIm9iamVjdFwiICYmIHByb2Nlc3MuZW52ICYmIHByb2Nlc3MuZW52W1wiUkVGTEVDVF9NRVRBREFUQV9VU0VfTUFQX1BPTFlGSUxMXCJdID09PSBcInRydWVcIjtcbiAgICAgICAgdmFyIF9NYXAgPSAhdXNlUG9seWZpbGwgJiYgdHlwZW9mIE1hcCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBNYXAucHJvdG90eXBlLmVudHJpZXMgPT09IFwiZnVuY3Rpb25cIiA/IE1hcCA6IENyZWF0ZU1hcFBvbHlmaWxsKCk7XG4gICAgICAgIHZhciBfU2V0ID0gIXVzZVBvbHlmaWxsICYmIHR5cGVvZiBTZXQgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU2V0LnByb3RvdHlwZS5lbnRyaWVzID09PSBcImZ1bmN0aW9uXCIgPyBTZXQgOiBDcmVhdGVTZXRQb2x5ZmlsbCgpO1xuICAgICAgICB2YXIgX1dlYWtNYXAgPSAhdXNlUG9seWZpbGwgJiYgdHlwZW9mIFdlYWtNYXAgPT09IFwiZnVuY3Rpb25cIiA/IFdlYWtNYXAgOiBDcmVhdGVXZWFrTWFwUG9seWZpbGwoKTtcbiAgICAgICAgLy8gW1tNZXRhZGF0YV1dIGludGVybmFsIHNsb3RcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnktb2JqZWN0LWludGVybmFsLW1ldGhvZHMtYW5kLWludGVybmFsLXNsb3RzXG4gICAgICAgIHZhciBNZXRhZGF0YSA9IG5ldyBfV2Vha01hcCgpO1xuICAgICAgICAvKipcbiAgICAgICAgICogQXBwbGllcyBhIHNldCBvZiBkZWNvcmF0b3JzIHRvIGEgcHJvcGVydHkgb2YgYSB0YXJnZXQgb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0gZGVjb3JhdG9ycyBBbiBhcnJheSBvZiBkZWNvcmF0b3JzLlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IHRvIGRlY29yYXRlLlxuICAgICAgICAgKiBAcGFyYW0gYXR0cmlidXRlcyAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgdGFyZ2V0IGtleS5cbiAgICAgICAgICogQHJlbWFya3MgRGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpbiByZXZlcnNlIG9yZGVyLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHkgZGVjbGFyYXRpb25zIGFyZSBub3QgcGFydCBvZiBFUzYsIHRob3VnaCB0aGV5IGFyZSB2YWxpZCBpbiBUeXBlU2NyaXB0OlxuICAgICAgICAgKiAgICAgICAgIC8vIHN0YXRpYyBzdGF0aWNQcm9wZXJ0eTtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgICAgICBjb25zdHJ1Y3RvcihwKSB7IH1cbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIG1ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICBFeGFtcGxlID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzQXJyYXksIEV4YW1wbGUpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzQXJyYXksIEV4YW1wbGUsIFwic3RhdGljUHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzQXJyYXksIEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiLFxuICAgICAgICAgKiAgICAgICAgIFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9yc0FycmF5LCBFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiLFxuICAgICAgICAgKiAgICAgICAgICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIpKSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIixcbiAgICAgICAgICogICAgICAgICBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnNBcnJheSwgRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIsXG4gICAgICAgICAqICAgICAgICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIpKSk7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBkZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIHByb3BlcnR5S2V5LCBhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSkge1xuICAgICAgICAgICAgICAgIGlmICghSXNBcnJheShkZWNvcmF0b3JzKSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QoYXR0cmlidXRlcykgJiYgIUlzVW5kZWZpbmVkKGF0dHJpYnV0ZXMpICYmICFJc051bGwoYXR0cmlidXRlcykpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgICAgICBpZiAoSXNOdWxsKGF0dHJpYnV0ZXMpKVxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIERlY29yYXRlUHJvcGVydHkoZGVjb3JhdG9ycywgdGFyZ2V0LCBwcm9wZXJ0eUtleSwgYXR0cmlidXRlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIUlzQXJyYXkoZGVjb3JhdG9ycykpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgICAgICBpZiAoIUlzQ29uc3RydWN0b3IodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIHJldHVybiBEZWNvcmF0ZUNvbnN0cnVjdG9yKGRlY29yYXRvcnMsIHRhcmdldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJkZWNvcmF0ZVwiLCBkZWNvcmF0ZSk7XG4gICAgICAgIC8vIDQuMS4yIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpXG4gICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI3JlZmxlY3QubWV0YWRhdGFcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEEgZGVmYXVsdCBtZXRhZGF0YSBkZWNvcmF0b3IgZmFjdG9yeSB0aGF0IGNhbiBiZSB1c2VkIG9uIGEgY2xhc3MsIGNsYXNzIG1lbWJlciwgb3IgcGFyYW1ldGVyLlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgVGhlIGtleSBmb3IgdGhlIG1ldGFkYXRhIGVudHJ5LlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFWYWx1ZSBUaGUgdmFsdWUgZm9yIHRoZSBtZXRhZGF0YSBlbnRyeS5cbiAgICAgICAgICogQHJldHVybnMgQSBkZWNvcmF0b3IgZnVuY3Rpb24uXG4gICAgICAgICAqIEByZW1hcmtzXG4gICAgICAgICAqIElmIGBtZXRhZGF0YUtleWAgaXMgYWxyZWFkeSBkZWZpbmVkIGZvciB0aGUgdGFyZ2V0IGFuZCB0YXJnZXQga2V5LCB0aGVcbiAgICAgICAgICogbWV0YWRhdGFWYWx1ZSBmb3IgdGhhdCBrZXkgd2lsbCBiZSBvdmVyd3JpdHRlbi5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICBAUmVmbGVjdC5tZXRhZGF0YShrZXksIHZhbHVlKVxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IsIFR5cGVTY3JpcHQgb25seSlcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIEBSZWZsZWN0Lm1ldGFkYXRhKGtleSwgdmFsdWUpXG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSwgVHlwZVNjcmlwdCBvbmx5KVxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgQFJlZmxlY3QubWV0YWRhdGEoa2V5LCB2YWx1ZSlcbiAgICAgICAgICogICAgICAgICBwcm9wZXJ0eTtcbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICBAUmVmbGVjdC5tZXRhZGF0YShrZXksIHZhbHVlKVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QoKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgQFJlZmxlY3QubWV0YWRhdGEoa2V5LCB2YWx1ZSlcbiAgICAgICAgICogICAgICAgICBtZXRob2QoKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIG1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XG4gICAgICAgICAgICBmdW5jdGlvbiBkZWNvcmF0b3IodGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpICYmICFJc1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIE9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRlY29yYXRvcjtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcIm1ldGFkYXRhXCIsIG1ldGFkYXRhKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlZmluZSBhIHVuaXF1ZSBtZXRhZGF0YSBlbnRyeSBvbiB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgQSBrZXkgdXNlZCB0byBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSBtZXRhZGF0YVZhbHVlIEEgdmFsdWUgdGhhdCBjb250YWlucyBhdHRhY2hlZCBtZXRhZGF0YS5cbiAgICAgICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCBvbiB3aGljaCB0byBkZWZpbmUgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBvcHRpb25zLCBFeGFtcGxlKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBvcHRpb25zLCBFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBvcHRpb25zLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJwcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgb3B0aW9ucywgRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBvcHRpb25zLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBkZWNvcmF0b3IgZmFjdG9yeSBhcyBtZXRhZGF0YS1wcm9kdWNpbmcgYW5ub3RhdGlvbi5cbiAgICAgICAgICogICAgIGZ1bmN0aW9uIE15QW5ub3RhdGlvbihvcHRpb25zKTogRGVjb3JhdG9yIHtcbiAgICAgICAgICogICAgICAgICByZXR1cm4gKHRhcmdldCwga2V5PykgPT4gUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIG9wdGlvbnMsIHRhcmdldCwga2V5KTtcbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGRlZmluZU1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlLCB0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHRhcmdldCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkpXG4gICAgICAgICAgICAgICAgcHJvcGVydHlLZXkgPSBUb1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeURlZmluZU93bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcImRlZmluZU1ldGFkYXRhXCIsIGRlZmluZU1ldGFkYXRhKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHRhcmdldCBvYmplY3Qgb3IgaXRzIHByb3RvdHlwZSBjaGFpbiBoYXMgdGhlIHByb3ZpZGVkIG1ldGFkYXRhIGtleSBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgQSBrZXkgdXNlZCB0byBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGFkYXRhIGlzIGRlZmluZWQuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbWV0YWRhdGEga2V5IHdhcyBkZWZpbmVkIG9uIHRoZSB0YXJnZXQgb2JqZWN0IG9yIGl0cyBwcm90b3R5cGUgY2hhaW47IG90aGVyd2lzZSwgYGZhbHNlYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5IGRlY2xhcmF0aW9ucyBhcmUgbm90IHBhcnQgb2YgRVM2LCB0aG91Z2ggdGhleSBhcmUgdmFsaWQgaW4gVHlwZVNjcmlwdDpcbiAgICAgICAgICogICAgICAgICAvLyBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAgICAgY29uc3RydWN0b3IocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgICAgICBtZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBjb25zdHJ1Y3RvclxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUsIFwic3RhdGljUHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuaGFzTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUucHJvdG90eXBlLCBcIm1ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGhhc01ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHRhcmdldCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkpXG4gICAgICAgICAgICAgICAgcHJvcGVydHlLZXkgPSBUb1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeUhhc01ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcImhhc01ldGFkYXRhXCIsIGhhc01ldGFkYXRhKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHRhcmdldCBvYmplY3QgaGFzIHRoZSBwcm92aWRlZCBtZXRhZGF0YSBrZXkgZGVmaW5lZC5cbiAgICAgICAgICogQHBhcmFtIG1ldGFkYXRhS2V5IEEga2V5IHVzZWQgdG8gc3RvcmUgYW5kIHJldHJpZXZlIG1ldGFkYXRhLlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRhZGF0YSBpcyBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IGZvciB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG1ldGFkYXRhIGtleSB3YXMgZGVmaW5lZCBvbiB0aGUgdGFyZ2V0IG9iamVjdDsgb3RoZXJ3aXNlLCBgZmFsc2VgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHkgZGVjbGFyYXRpb25zIGFyZSBub3QgcGFydCBvZiBFUzYsIHRob3VnaCB0aGV5IGFyZSB2YWxpZCBpbiBUeXBlU2NyaXB0OlxuICAgICAgICAgKiAgICAgICAgIC8vIHN0YXRpYyBzdGF0aWNQcm9wZXJ0eTtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgICAgICBjb25zdHJ1Y3RvcihwKSB7IH1cbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIG1ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc093bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc093bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNQcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc093bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwicHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNPd25NZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc093bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gaGFzT3duTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUtleSA9IFRvUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgcmV0dXJuIE9yZGluYXJ5SGFzT3duTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGV4cG9ydGVyKFwiaGFzT3duTWV0YWRhdGFcIiwgaGFzT3duTWV0YWRhdGEpO1xuICAgICAgICAvKipcbiAgICAgICAgICogR2V0cyB0aGUgbWV0YWRhdGEgdmFsdWUgZm9yIHRoZSBwcm92aWRlZCBtZXRhZGF0YSBrZXkgb24gdGhlIHRhcmdldCBvYmplY3Qgb3IgaXRzIHByb3RvdHlwZSBjaGFpbi5cbiAgICAgICAgICogQHBhcmFtIG1ldGFkYXRhS2V5IEEga2V5IHVzZWQgdG8gc3RvcmUgYW5kIHJldHJpZXZlIG1ldGFkYXRhLlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRhZGF0YSBpcyBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IGZvciB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAcmV0dXJucyBUaGUgbWV0YWRhdGEgdmFsdWUgZm9yIHRoZSBtZXRhZGF0YSBrZXkgaWYgZm91bmQ7IG90aGVyd2lzZSwgYHVuZGVmaW5lZGAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJwcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBnZXRNZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlHZXRNZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJnZXRNZXRhZGF0YVwiLCBnZXRNZXRhZGF0YSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBtZXRhZGF0YSB2YWx1ZSBmb3IgdGhlIHByb3ZpZGVkIG1ldGFkYXRhIGtleSBvbiB0aGUgdGFyZ2V0IG9iamVjdC5cbiAgICAgICAgICogQHBhcmFtIG1ldGFkYXRhS2V5IEEga2V5IHVzZWQgdG8gc3RvcmUgYW5kIHJldHJpZXZlIG1ldGFkYXRhLlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRhZGF0YSBpcyBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IGZvciB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAcmV0dXJucyBUaGUgbWV0YWRhdGEgdmFsdWUgZm9yIHRoZSBtZXRhZGF0YSBrZXkgaWYgZm91bmQ7IG90aGVyd2lzZSwgYHVuZGVmaW5lZGAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJwcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBnZXRPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlHZXRPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJnZXRPd25NZXRhZGF0YVwiLCBnZXRPd25NZXRhZGF0YSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBtZXRhZGF0YSBrZXlzIGRlZmluZWQgb24gdGhlIHRhcmdldCBvYmplY3Qgb3IgaXRzIHByb3RvdHlwZSBjaGFpbi5cbiAgICAgICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCBvbiB3aGljaCB0aGUgbWV0YWRhdGEgaXMgZGVmaW5lZC5cbiAgICAgICAgICogQHBhcmFtIHByb3BlcnR5S2V5IChPcHRpb25hbCkgVGhlIHByb3BlcnR5IGtleSBmb3IgdGhlIHRhcmdldC5cbiAgICAgICAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgdW5pcXVlIG1ldGFkYXRhIGtleXMuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGFLZXlzKEV4YW1wbGUpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YUtleXMoRXhhbXBsZSwgXCJzdGF0aWNQcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE1ldGFkYXRhS2V5cyhFeGFtcGxlLnByb3RvdHlwZSwgXCJwcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE1ldGFkYXRhS2V5cyhFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YUtleXMoRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZ2V0TWV0YWRhdGFLZXlzKHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUtleSA9IFRvUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgcmV0dXJuIE9yZGluYXJ5TWV0YWRhdGFLZXlzKHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGV4cG9ydGVyKFwiZ2V0TWV0YWRhdGFLZXlzXCIsIGdldE1ldGFkYXRhS2V5cyk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIHRoZSB1bmlxdWUgbWV0YWRhdGEga2V5cyBkZWZpbmVkIG9uIHRoZSB0YXJnZXQgb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRhZGF0YSBpcyBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IGZvciB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiB1bmlxdWUgbWV0YWRhdGEga2V5cy5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5IGRlY2xhcmF0aW9ucyBhcmUgbm90IHBhcnQgb2YgRVM2LCB0aG91Z2ggdGhleSBhcmUgdmFsaWQgaW4gVHlwZVNjcmlwdDpcbiAgICAgICAgICogICAgICAgICAvLyBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAgICAgY29uc3RydWN0b3IocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgICAgICBtZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBjb25zdHJ1Y3RvclxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YUtleXMoRXhhbXBsZSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhS2V5cyhFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGFLZXlzKEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGFLZXlzKEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhS2V5cyhFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBnZXRPd25NZXRhZGF0YUtleXModGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlPd25NZXRhZGF0YUtleXModGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJnZXRPd25NZXRhZGF0YUtleXNcIiwgZ2V0T3duTWV0YWRhdGFLZXlzKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlbGV0ZXMgdGhlIG1ldGFkYXRhIGVudHJ5IGZyb20gdGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgcHJvdmlkZWQga2V5LlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgQSBrZXkgdXNlZCB0byBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGFkYXRhIGlzIGRlZmluZWQuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbWV0YWRhdGEgZW50cnkgd2FzIGZvdW5kIGFuZCBkZWxldGVkOyBvdGhlcndpc2UsIGZhbHNlLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHkgZGVjbGFyYXRpb25zIGFyZSBub3QgcGFydCBvZiBFUzYsIHRob3VnaCB0aGV5IGFyZSB2YWxpZCBpbiBUeXBlU2NyaXB0OlxuICAgICAgICAgKiAgICAgICAgIC8vIHN0YXRpYyBzdGF0aWNQcm9wZXJ0eTtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgICAgICBjb25zdHJ1Y3RvcihwKSB7IH1cbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIG1ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmRlbGV0ZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmRlbGV0ZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNQcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmRlbGV0ZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwicHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5kZWxldGVNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmRlbGV0ZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZGVsZXRlTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUtleSA9IFRvUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgdmFyIG1ldGFkYXRhTWFwID0gR2V0T3JDcmVhdGVNZXRhZGF0YU1hcCh0YXJnZXQsIHByb3BlcnR5S2V5LCAvKkNyZWF0ZSovIGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZChtZXRhZGF0YU1hcCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgaWYgKCFtZXRhZGF0YU1hcC5kZWxldGUobWV0YWRhdGFLZXkpKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGlmIChtZXRhZGF0YU1hcC5zaXplID4gMClcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIHZhciB0YXJnZXRNZXRhZGF0YSA9IE1ldGFkYXRhLmdldCh0YXJnZXQpO1xuICAgICAgICAgICAgdGFyZ2V0TWV0YWRhdGEuZGVsZXRlKHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIGlmICh0YXJnZXRNZXRhZGF0YS5zaXplID4gMClcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIE1ldGFkYXRhLmRlbGV0ZSh0YXJnZXQpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJkZWxldGVNZXRhZGF0YVwiLCBkZWxldGVNZXRhZGF0YSk7XG4gICAgICAgIGZ1bmN0aW9uIERlY29yYXRlQ29uc3RydWN0b3IoZGVjb3JhdG9ycywgdGFyZ2V0KSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICAgICAgICAgIHZhciBkZWNvcmF0b3IgPSBkZWNvcmF0b3JzW2ldO1xuICAgICAgICAgICAgICAgIHZhciBkZWNvcmF0ZWQgPSBkZWNvcmF0b3IodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKGRlY29yYXRlZCkgJiYgIUlzTnVsbChkZWNvcmF0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNDb25zdHJ1Y3RvcihkZWNvcmF0ZWQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSBkZWNvcmF0ZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBEZWNvcmF0ZVByb3BlcnR5KGRlY29yYXRvcnMsIHRhcmdldCwgcHJvcGVydHlLZXksIGRlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRlY29yYXRvciA9IGRlY29yYXRvcnNbaV07XG4gICAgICAgICAgICAgICAgdmFyIGRlY29yYXRlZCA9IGRlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5S2V5LCBkZXNjcmlwdG9yKTtcbiAgICAgICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKGRlY29yYXRlZCkgJiYgIUlzTnVsbChkZWNvcmF0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QoZGVjb3JhdGVkKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvciA9IGRlY29yYXRlZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBHZXRPckNyZWF0ZU1ldGFkYXRhTWFwKE8sIFAsIENyZWF0ZSkge1xuICAgICAgICAgICAgdmFyIHRhcmdldE1ldGFkYXRhID0gTWV0YWRhdGEuZ2V0KE8pO1xuICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKHRhcmdldE1ldGFkYXRhKSkge1xuICAgICAgICAgICAgICAgIGlmICghQ3JlYXRlKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRhcmdldE1ldGFkYXRhID0gbmV3IF9NYXAoKTtcbiAgICAgICAgICAgICAgICBNZXRhZGF0YS5zZXQoTywgdGFyZ2V0TWV0YWRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIG1ldGFkYXRhTWFwID0gdGFyZ2V0TWV0YWRhdGEuZ2V0KFApO1xuICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKG1ldGFkYXRhTWFwKSkge1xuICAgICAgICAgICAgICAgIGlmICghQ3JlYXRlKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIG1ldGFkYXRhTWFwID0gbmV3IF9NYXAoKTtcbiAgICAgICAgICAgICAgICB0YXJnZXRNZXRhZGF0YS5zZXQoUCwgbWV0YWRhdGFNYXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG1ldGFkYXRhTWFwO1xuICAgICAgICB9XG4gICAgICAgIC8vIDMuMS4xLjEgT3JkaW5hcnlIYXNNZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUClcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnloYXNtZXRhZGF0YVxuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeUhhc01ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gICAgICAgICAgICB2YXIgaGFzT3duID0gT3JkaW5hcnlIYXNPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCk7XG4gICAgICAgICAgICBpZiAoaGFzT3duKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgdmFyIHBhcmVudCA9IE9yZGluYXJ5R2V0UHJvdG90eXBlT2YoTyk7XG4gICAgICAgICAgICBpZiAoIUlzTnVsbChwYXJlbnQpKVxuICAgICAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeUhhc01ldGFkYXRhKE1ldGFkYXRhS2V5LCBwYXJlbnQsIFApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIDMuMS4yLjEgT3JkaW5hcnlIYXNPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUClcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnloYXNvd25tZXRhZGF0YVxuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeUhhc093bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gICAgICAgICAgICB2YXIgbWV0YWRhdGFNYXAgPSBHZXRPckNyZWF0ZU1ldGFkYXRhTWFwKE8sIFAsIC8qQ3JlYXRlKi8gZmFsc2UpO1xuICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKG1ldGFkYXRhTWFwKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gVG9Cb29sZWFuKG1ldGFkYXRhTWFwLmhhcyhNZXRhZGF0YUtleSkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIDMuMS4zLjEgT3JkaW5hcnlHZXRNZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUClcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnlnZXRtZXRhZGF0YVxuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeUdldE1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gICAgICAgICAgICB2YXIgaGFzT3duID0gT3JkaW5hcnlIYXNPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCk7XG4gICAgICAgICAgICBpZiAoaGFzT3duKVxuICAgICAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeUdldE93bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKTtcbiAgICAgICAgICAgIHZhciBwYXJlbnQgPSBPcmRpbmFyeUdldFByb3RvdHlwZU9mKE8pO1xuICAgICAgICAgICAgaWYgKCFJc051bGwocGFyZW50KSlcbiAgICAgICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlHZXRNZXRhZGF0YShNZXRhZGF0YUtleSwgcGFyZW50LCBQKTtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMy4xLjQuMSBPcmRpbmFyeUdldE93bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKVxuICAgICAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhLyNvcmRpbmFyeWdldG93bm1ldGFkYXRhXG4gICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5R2V0T3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApIHtcbiAgICAgICAgICAgIHZhciBtZXRhZGF0YU1hcCA9IEdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoTywgUCwgLypDcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoSXNVbmRlZmluZWQobWV0YWRhdGFNYXApKVxuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICByZXR1cm4gbWV0YWRhdGFNYXAuZ2V0KE1ldGFkYXRhS2V5KTtcbiAgICAgICAgfVxuICAgICAgICAvLyAzLjEuNS4xIE9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE1ldGFkYXRhVmFsdWUsIE8sIFApXG4gICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI29yZGluYXJ5ZGVmaW5lb3dubWV0YWRhdGFcbiAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTWV0YWRhdGFWYWx1ZSwgTywgUCkge1xuICAgICAgICAgICAgdmFyIG1ldGFkYXRhTWFwID0gR2V0T3JDcmVhdGVNZXRhZGF0YU1hcChPLCBQLCAvKkNyZWF0ZSovIHRydWUpO1xuICAgICAgICAgICAgbWV0YWRhdGFNYXAuc2V0KE1ldGFkYXRhS2V5LCBNZXRhZGF0YVZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyAzLjEuNi4xIE9yZGluYXJ5TWV0YWRhdGFLZXlzKE8sIFApXG4gICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI29yZGluYXJ5bWV0YWRhdGFrZXlzXG4gICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5TWV0YWRhdGFLZXlzKE8sIFApIHtcbiAgICAgICAgICAgIHZhciBvd25LZXlzID0gT3JkaW5hcnlPd25NZXRhZGF0YUtleXMoTywgUCk7XG4gICAgICAgICAgICB2YXIgcGFyZW50ID0gT3JkaW5hcnlHZXRQcm90b3R5cGVPZihPKTtcbiAgICAgICAgICAgIGlmIChwYXJlbnQgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG93bktleXM7XG4gICAgICAgICAgICB2YXIgcGFyZW50S2V5cyA9IE9yZGluYXJ5TWV0YWRhdGFLZXlzKHBhcmVudCwgUCk7XG4gICAgICAgICAgICBpZiAocGFyZW50S2V5cy5sZW5ndGggPD0gMClcbiAgICAgICAgICAgICAgICByZXR1cm4gb3duS2V5cztcbiAgICAgICAgICAgIGlmIChvd25LZXlzLmxlbmd0aCA8PSAwKVxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnRLZXlzO1xuICAgICAgICAgICAgdmFyIHNldCA9IG5ldyBfU2V0KCk7XG4gICAgICAgICAgICB2YXIga2V5cyA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBvd25LZXlzXzEgPSBvd25LZXlzOyBfaSA8IG93bktleXNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0gb3duS2V5c18xW19pXTtcbiAgICAgICAgICAgICAgICB2YXIgaGFzS2V5ID0gc2V0LmhhcyhrZXkpO1xuICAgICAgICAgICAgICAgIGlmICghaGFzS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHNldC5hZGQoa2V5KTtcbiAgICAgICAgICAgICAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICh2YXIgX2EgPSAwLCBwYXJlbnRLZXlzXzEgPSBwYXJlbnRLZXlzOyBfYSA8IHBhcmVudEtleXNfMS5sZW5ndGg7IF9hKyspIHtcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0gcGFyZW50S2V5c18xW19hXTtcbiAgICAgICAgICAgICAgICB2YXIgaGFzS2V5ID0gc2V0LmhhcyhrZXkpO1xuICAgICAgICAgICAgICAgIGlmICghaGFzS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHNldC5hZGQoa2V5KTtcbiAgICAgICAgICAgICAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMy4xLjcuMSBPcmRpbmFyeU93bk1ldGFkYXRhS2V5cyhPLCBQKVxuICAgICAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhLyNvcmRpbmFyeW93bm1ldGFkYXRha2V5c1xuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeU93bk1ldGFkYXRhS2V5cyhPLCBQKSB7XG4gICAgICAgICAgICB2YXIga2V5cyA9IFtdO1xuICAgICAgICAgICAgdmFyIG1ldGFkYXRhTWFwID0gR2V0T3JDcmVhdGVNZXRhZGF0YU1hcChPLCBQLCAvKkNyZWF0ZSovIGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZChtZXRhZGF0YU1hcCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgICAgICAgICB2YXIga2V5c09iaiA9IG1ldGFkYXRhTWFwLmtleXMoKTtcbiAgICAgICAgICAgIHZhciBpdGVyYXRvciA9IEdldEl0ZXJhdG9yKGtleXNPYmopO1xuICAgICAgICAgICAgdmFyIGsgPSAwO1xuICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IEl0ZXJhdG9yU3RlcChpdGVyYXRvcik7XG4gICAgICAgICAgICAgICAgaWYgKCFuZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGtleXMubGVuZ3RoID0gaztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBuZXh0VmFsdWUgPSBJdGVyYXRvclZhbHVlKG5leHQpO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGtleXNba10gPSBuZXh0VmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvckNsb3NlKGl0ZXJhdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaysrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIDYgRUNNQVNjcmlwdCBEYXRhIFR5cDBlcyBhbmQgVmFsdWVzXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWVjbWFzY3JpcHQtZGF0YS10eXBlcy1hbmQtdmFsdWVzXG4gICAgICAgIGZ1bmN0aW9uIFR5cGUoeCkge1xuICAgICAgICAgICAgaWYgKHggPT09IG51bGwpXG4gICAgICAgICAgICAgICAgcmV0dXJuIDEgLyogTnVsbCAqLztcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZW9mIHgpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwidW5kZWZpbmVkXCI6IHJldHVybiAwIC8qIFVuZGVmaW5lZCAqLztcbiAgICAgICAgICAgICAgICBjYXNlIFwiYm9vbGVhblwiOiByZXR1cm4gMiAvKiBCb29sZWFuICovO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdcIjogcmV0dXJuIDMgLyogU3RyaW5nICovO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJzeW1ib2xcIjogcmV0dXJuIDQgLyogU3ltYm9sICovO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJudW1iZXJcIjogcmV0dXJuIDUgLyogTnVtYmVyICovO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJvYmplY3RcIjogcmV0dXJuIHggPT09IG51bGwgPyAxIC8qIE51bGwgKi8gOiA2IC8qIE9iamVjdCAqLztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gNiAvKiBPYmplY3QgKi87XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gNi4xLjEgVGhlIFVuZGVmaW5lZCBUeXBlXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMtdW5kZWZpbmVkLXR5cGVcbiAgICAgICAgZnVuY3Rpb24gSXNVbmRlZmluZWQoeCkge1xuICAgICAgICAgICAgcmV0dXJuIHggPT09IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyA2LjEuMiBUaGUgTnVsbCBUeXBlXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMtbnVsbC10eXBlXG4gICAgICAgIGZ1bmN0aW9uIElzTnVsbCh4KSB7XG4gICAgICAgICAgICByZXR1cm4geCA9PT0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICAvLyA2LjEuNSBUaGUgU3ltYm9sIFR5cGVcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcy1zeW1ib2wtdHlwZVxuICAgICAgICBmdW5jdGlvbiBJc1N5bWJvbCh4KSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCI7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNi4xLjcgVGhlIE9iamVjdCBUeXBlXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC10eXBlXG4gICAgICAgIGZ1bmN0aW9uIElzT2JqZWN0KHgpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgeCA9PT0gXCJvYmplY3RcIiA/IHggIT09IG51bGwgOiB0eXBlb2YgeCA9PT0gXCJmdW5jdGlvblwiO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuMSBUeXBlIENvbnZlcnNpb25cbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdHlwZS1jb252ZXJzaW9uXG4gICAgICAgIC8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b3ByaW1pdGl2ZVxuICAgICAgICBmdW5jdGlvbiBUb1ByaW1pdGl2ZShpbnB1dCwgUHJlZmVycmVkVHlwZSkge1xuICAgICAgICAgICAgc3dpdGNoIChUeXBlKGlucHV0KSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMCAvKiBVbmRlZmluZWQgKi86IHJldHVybiBpbnB1dDtcbiAgICAgICAgICAgICAgICBjYXNlIDEgLyogTnVsbCAqLzogcmV0dXJuIGlucHV0O1xuICAgICAgICAgICAgICAgIGNhc2UgMiAvKiBCb29sZWFuICovOiByZXR1cm4gaW5wdXQ7XG4gICAgICAgICAgICAgICAgY2FzZSAzIC8qIFN0cmluZyAqLzogcmV0dXJuIGlucHV0O1xuICAgICAgICAgICAgICAgIGNhc2UgNCAvKiBTeW1ib2wgKi86IHJldHVybiBpbnB1dDtcbiAgICAgICAgICAgICAgICBjYXNlIDUgLyogTnVtYmVyICovOiByZXR1cm4gaW5wdXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgaGludCA9IFByZWZlcnJlZFR5cGUgPT09IDMgLyogU3RyaW5nICovID8gXCJzdHJpbmdcIiA6IFByZWZlcnJlZFR5cGUgPT09IDUgLyogTnVtYmVyICovID8gXCJudW1iZXJcIiA6IFwiZGVmYXVsdFwiO1xuICAgICAgICAgICAgdmFyIGV4b3RpY1RvUHJpbSA9IEdldE1ldGhvZChpbnB1dCwgdG9QcmltaXRpdmVTeW1ib2wpO1xuICAgICAgICAgICAgaWYgKGV4b3RpY1RvUHJpbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGV4b3RpY1RvUHJpbS5jYWxsKGlucHV0LCBoaW50KTtcbiAgICAgICAgICAgICAgICBpZiAoSXNPYmplY3QocmVzdWx0KSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlUb1ByaW1pdGl2ZShpbnB1dCwgaGludCA9PT0gXCJkZWZhdWx0XCIgPyBcIm51bWJlclwiIDogaGludCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4xLjEuMSBPcmRpbmFyeVRvUHJpbWl0aXZlKE8sIGhpbnQpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9yZGluYXJ5dG9wcmltaXRpdmVcbiAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlUb1ByaW1pdGl2ZShPLCBoaW50KSB7XG4gICAgICAgICAgICBpZiAoaGludCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIHZhciB0b1N0cmluZ18xID0gTy50b1N0cmluZztcbiAgICAgICAgICAgICAgICBpZiAoSXNDYWxsYWJsZSh0b1N0cmluZ18xKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdG9TdHJpbmdfMS5jYWxsKE8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHJlc3VsdCkpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgdmFsdWVPZiA9IE8udmFsdWVPZjtcbiAgICAgICAgICAgICAgICBpZiAoSXNDYWxsYWJsZSh2YWx1ZU9mKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdmFsdWVPZi5jYWxsKE8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHJlc3VsdCkpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciB2YWx1ZU9mID0gTy52YWx1ZU9mO1xuICAgICAgICAgICAgICAgIGlmIChJc0NhbGxhYmxlKHZhbHVlT2YpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB2YWx1ZU9mLmNhbGwoTyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QocmVzdWx0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciB0b1N0cmluZ18yID0gTy50b1N0cmluZztcbiAgICAgICAgICAgICAgICBpZiAoSXNDYWxsYWJsZSh0b1N0cmluZ18yKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdG9TdHJpbmdfMi5jYWxsKE8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHJlc3VsdCkpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjEuMiBUb0Jvb2xlYW4oYXJndW1lbnQpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8yMDE2LyNzZWMtdG9ib29sZWFuXG4gICAgICAgIGZ1bmN0aW9uIFRvQm9vbGVhbihhcmd1bWVudCkge1xuICAgICAgICAgICAgcmV0dXJuICEhYXJndW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4xLjEyIFRvU3RyaW5nKGFyZ3VtZW50KVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b3N0cmluZ1xuICAgICAgICBmdW5jdGlvbiBUb1N0cmluZyhhcmd1bWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCIgKyBhcmd1bWVudDtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjEuMTQgVG9Qcm9wZXJ0eUtleShhcmd1bWVudClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdG9wcm9wZXJ0eWtleVxuICAgICAgICBmdW5jdGlvbiBUb1Byb3BlcnR5S2V5KGFyZ3VtZW50KSB7XG4gICAgICAgICAgICB2YXIga2V5ID0gVG9QcmltaXRpdmUoYXJndW1lbnQsIDMgLyogU3RyaW5nICovKTtcbiAgICAgICAgICAgIGlmIChJc1N5bWJvbChrZXkpKVxuICAgICAgICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgICAgICByZXR1cm4gVG9TdHJpbmcoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjIgVGVzdGluZyBhbmQgQ29tcGFyaXNvbiBPcGVyYXRpb25zXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRlc3RpbmctYW5kLWNvbXBhcmlzb24tb3BlcmF0aW9uc1xuICAgICAgICAvLyA3LjIuMiBJc0FycmF5KGFyZ3VtZW50KVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pc2FycmF5XG4gICAgICAgIGZ1bmN0aW9uIElzQXJyYXkoYXJndW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5XG4gICAgICAgICAgICAgICAgPyBBcnJheS5pc0FycmF5KGFyZ3VtZW50KVxuICAgICAgICAgICAgICAgIDogYXJndW1lbnQgaW5zdGFuY2VvZiBPYmplY3RcbiAgICAgICAgICAgICAgICAgICAgPyBhcmd1bWVudCBpbnN0YW5jZW9mIEFycmF5XG4gICAgICAgICAgICAgICAgICAgIDogT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KSA9PT0gXCJbb2JqZWN0IEFycmF5XVwiO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuMi4zIElzQ2FsbGFibGUoYXJndW1lbnQpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzY2FsbGFibGVcbiAgICAgICAgZnVuY3Rpb24gSXNDYWxsYWJsZShhcmd1bWVudCkge1xuICAgICAgICAgICAgLy8gTk9URTogVGhpcyBpcyBhbiBhcHByb3hpbWF0aW9uIGFzIHdlIGNhbm5vdCBjaGVjayBmb3IgW1tDYWxsXV0gaW50ZXJuYWwgbWV0aG9kLlxuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJmdW5jdGlvblwiO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuMi40IElzQ29uc3RydWN0b3IoYXJndW1lbnQpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzY29uc3RydWN0b3JcbiAgICAgICAgZnVuY3Rpb24gSXNDb25zdHJ1Y3Rvcihhcmd1bWVudCkge1xuICAgICAgICAgICAgLy8gTk9URTogVGhpcyBpcyBhbiBhcHByb3hpbWF0aW9uIGFzIHdlIGNhbm5vdCBjaGVjayBmb3IgW1tDb25zdHJ1Y3RdXSBpbnRlcm5hbCBtZXRob2QuXG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09PSBcImZ1bmN0aW9uXCI7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4yLjcgSXNQcm9wZXJ0eUtleShhcmd1bWVudClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaXNwcm9wZXJ0eWtleVxuICAgICAgICBmdW5jdGlvbiBJc1Byb3BlcnR5S2V5KGFyZ3VtZW50KSB7XG4gICAgICAgICAgICBzd2l0Y2ggKFR5cGUoYXJndW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAzIC8qIFN0cmluZyAqLzogcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgY2FzZSA0IC8qIFN5bWJvbCAqLzogcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIDcuMyBPcGVyYXRpb25zIG9uIE9iamVjdHNcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb3BlcmF0aW9ucy1vbi1vYmplY3RzXG4gICAgICAgIC8vIDcuMy45IEdldE1ldGhvZChWLCBQKVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1nZXRtZXRob2RcbiAgICAgICAgZnVuY3Rpb24gR2V0TWV0aG9kKFYsIFApIHtcbiAgICAgICAgICAgIHZhciBmdW5jID0gVltQXTtcbiAgICAgICAgICAgIGlmIChmdW5jID09PSB1bmRlZmluZWQgfHwgZnVuYyA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKCFJc0NhbGxhYmxlKGZ1bmMpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIHJldHVybiBmdW5jO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuNCBPcGVyYXRpb25zIG9uIEl0ZXJhdG9yIE9iamVjdHNcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb3BlcmF0aW9ucy1vbi1pdGVyYXRvci1vYmplY3RzXG4gICAgICAgIGZ1bmN0aW9uIEdldEl0ZXJhdG9yKG9iaikge1xuICAgICAgICAgICAgdmFyIG1ldGhvZCA9IEdldE1ldGhvZChvYmosIGl0ZXJhdG9yU3ltYm9sKTtcbiAgICAgICAgICAgIGlmICghSXNDYWxsYWJsZShtZXRob2QpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTsgLy8gZnJvbSBDYWxsXG4gICAgICAgICAgICB2YXIgaXRlcmF0b3IgPSBtZXRob2QuY2FsbChvYmopO1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdChpdGVyYXRvcikpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuNC40IEl0ZXJhdG9yVmFsdWUoaXRlclJlc3VsdClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLzIwMTYvI3NlYy1pdGVyYXRvcnZhbHVlXG4gICAgICAgIGZ1bmN0aW9uIEl0ZXJhdG9yVmFsdWUoaXRlclJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZXJSZXN1bHQudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy40LjUgSXRlcmF0b3JTdGVwKGl0ZXJhdG9yKVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pdGVyYXRvcnN0ZXBcbiAgICAgICAgZnVuY3Rpb24gSXRlcmF0b3JTdGVwKGl0ZXJhdG9yKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gaXRlcmF0b3IubmV4dCgpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5kb25lID8gZmFsc2UgOiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy40LjYgSXRlcmF0b3JDbG9zZShpdGVyYXRvciwgY29tcGxldGlvbilcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaXRlcmF0b3JjbG9zZVxuICAgICAgICBmdW5jdGlvbiBJdGVyYXRvckNsb3NlKGl0ZXJhdG9yKSB7XG4gICAgICAgICAgICB2YXIgZiA9IGl0ZXJhdG9yW1wicmV0dXJuXCJdO1xuICAgICAgICAgICAgaWYgKGYpXG4gICAgICAgICAgICAgICAgZi5jYWxsKGl0ZXJhdG9yKTtcbiAgICAgICAgfVxuICAgICAgICAvLyA5LjEgT3JkaW5hcnkgT2JqZWN0IEludGVybmFsIE1ldGhvZHMgYW5kIEludGVybmFsIFNsb3RzXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9yZGluYXJ5LW9iamVjdC1pbnRlcm5hbC1tZXRob2RzLWFuZC1pbnRlcm5hbC1zbG90c1xuICAgICAgICAvLyA5LjEuMS4xIE9yZGluYXJ5R2V0UHJvdG90eXBlT2YoTylcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb3JkaW5hcnlnZXRwcm90b3R5cGVvZlxuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeUdldFByb3RvdHlwZU9mKE8pIHtcbiAgICAgICAgICAgIHZhciBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihPKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgTyAhPT0gXCJmdW5jdGlvblwiIHx8IE8gPT09IGZ1bmN0aW9uUHJvdG90eXBlKVxuICAgICAgICAgICAgICAgIHJldHVybiBwcm90bztcbiAgICAgICAgICAgIC8vIFR5cGVTY3JpcHQgZG9lc24ndCBzZXQgX19wcm90b19fIGluIEVTNSwgYXMgaXQncyBub24tc3RhbmRhcmQuXG4gICAgICAgICAgICAvLyBUcnkgdG8gZGV0ZXJtaW5lIHRoZSBzdXBlcmNsYXNzIGNvbnN0cnVjdG9yLiBDb21wYXRpYmxlIGltcGxlbWVudGF0aW9uc1xuICAgICAgICAgICAgLy8gbXVzdCBlaXRoZXIgc2V0IF9fcHJvdG9fXyBvbiBhIHN1YmNsYXNzIGNvbnN0cnVjdG9yIHRvIHRoZSBzdXBlcmNsYXNzIGNvbnN0cnVjdG9yLFxuICAgICAgICAgICAgLy8gb3IgZW5zdXJlIGVhY2ggY2xhc3MgaGFzIGEgdmFsaWQgYGNvbnN0cnVjdG9yYCBwcm9wZXJ0eSBvbiBpdHMgcHJvdG90eXBlIHRoYXRcbiAgICAgICAgICAgIC8vIHBvaW50cyBiYWNrIHRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgbm90IHRoZSBzYW1lIGFzIEZ1bmN0aW9uLltbUHJvdG90eXBlXV0sIHRoZW4gdGhpcyBpcyBkZWZpbmF0ZWx5IGluaGVyaXRlZC5cbiAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGNhc2Ugd2hlbiBpbiBFUzYgb3Igd2hlbiB1c2luZyBfX3Byb3RvX18gaW4gYSBjb21wYXRpYmxlIGJyb3dzZXIuXG4gICAgICAgICAgICBpZiAocHJvdG8gIT09IGZ1bmN0aW9uUHJvdG90eXBlKVxuICAgICAgICAgICAgICAgIHJldHVybiBwcm90bztcbiAgICAgICAgICAgIC8vIElmIHRoZSBzdXBlciBwcm90b3R5cGUgaXMgT2JqZWN0LnByb3RvdHlwZSwgbnVsbCwgb3IgdW5kZWZpbmVkLCB0aGVuIHdlIGNhbm5vdCBkZXRlcm1pbmUgdGhlIGhlcml0YWdlLlxuICAgICAgICAgICAgdmFyIHByb3RvdHlwZSA9IE8ucHJvdG90eXBlO1xuICAgICAgICAgICAgdmFyIHByb3RvdHlwZVByb3RvID0gcHJvdG90eXBlICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90b3R5cGUpO1xuICAgICAgICAgICAgaWYgKHByb3RvdHlwZVByb3RvID09IG51bGwgfHwgcHJvdG90eXBlUHJvdG8gPT09IE9iamVjdC5wcm90b3R5cGUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3RvO1xuICAgICAgICAgICAgLy8gSWYgdGhlIGNvbnN0cnVjdG9yIHdhcyBub3QgYSBmdW5jdGlvbiwgdGhlbiB3ZSBjYW5ub3QgZGV0ZXJtaW5lIHRoZSBoZXJpdGFnZS5cbiAgICAgICAgICAgIHZhciBjb25zdHJ1Y3RvciA9IHByb3RvdHlwZVByb3RvLmNvbnN0cnVjdG9yO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zdHJ1Y3RvciAhPT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgICAgICAgIHJldHVybiBwcm90bztcbiAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgc29tZSBraW5kIG9mIHNlbGYtcmVmZXJlbmNlLCB0aGVuIHdlIGNhbm5vdCBkZXRlcm1pbmUgdGhlIGhlcml0YWdlLlxuICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9yID09PSBPKVxuICAgICAgICAgICAgICAgIHJldHVybiBwcm90bztcbiAgICAgICAgICAgIC8vIHdlIGhhdmUgYSBwcmV0dHkgZ29vZCBndWVzcyBhdCB0aGUgaGVyaXRhZ2UuXG4gICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbmFpdmUgTWFwIHNoaW1cbiAgICAgICAgZnVuY3Rpb24gQ3JlYXRlTWFwUG9seWZpbGwoKSB7XG4gICAgICAgICAgICB2YXIgY2FjaGVTZW50aW5lbCA9IHt9O1xuICAgICAgICAgICAgdmFyIGFycmF5U2VudGluZWwgPSBbXTtcbiAgICAgICAgICAgIHZhciBNYXBJdGVyYXRvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBNYXBJdGVyYXRvcihrZXlzLCB2YWx1ZXMsIHNlbGVjdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5cyA9IGtleXM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlcyA9IHZhbHVlcztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0b3IgPSBzZWxlY3RvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgTWFwSXRlcmF0b3IucHJvdG90eXBlW1wiQEBpdGVyYXRvclwiXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG4gICAgICAgICAgICAgICAgTWFwSXRlcmF0b3IucHJvdG90eXBlW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG4gICAgICAgICAgICAgICAgTWFwSXRlcmF0b3IucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2luZGV4O1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMuX2tleXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fc2VsZWN0b3IodGhpcy5fa2V5c1tpbmRleF0sIHRoaXMuX3ZhbHVlc1tpbmRleF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ICsgMSA+PSB0aGlzLl9rZXlzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4ID0gLTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5cyA9IGFycmF5U2VudGluZWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzID0gYXJyYXlTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogcmVzdWx0LCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIE1hcEl0ZXJhdG9yLnByb3RvdHlwZS50aHJvdyA9IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5faW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXggPSAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleXMgPSBhcnJheVNlbnRpbmVsO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzID0gYXJyYXlTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIE1hcEl0ZXJhdG9yLnByb3RvdHlwZS5yZXR1cm4gPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2luZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4ID0gLTE7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlzID0gYXJyYXlTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlcyA9IGFycmF5U2VudGluZWw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlLCBkb25lOiB0cnVlIH07XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gTWFwSXRlcmF0b3I7XG4gICAgICAgICAgICB9KCkpO1xuICAgICAgICAgICAgcmV0dXJuIC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBNYXAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlS2V5ID0gY2FjaGVTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVJbmRleCA9IC0yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTWFwLnByb3RvdHlwZSwgXCJzaXplXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9rZXlzLmxlbmd0aDsgfSxcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiAoa2V5KSB7IHJldHVybiB0aGlzLl9maW5kKGtleSwgLyppbnNlcnQqLyBmYWxzZSkgPj0gMDsgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZChrZXksIC8qaW5zZXJ0Ki8gZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXggPj0gMCA/IHRoaXMuX3ZhbHVlc1tpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmQoa2V5LCAvKmluc2VydCovIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXNbaW5kZXhdID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZS5kZWxldGUgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmQoa2V5LCAvKmluc2VydCovIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaXplID0gdGhpcy5fa2V5cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gaW5kZXggKyAxOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5c1tpIC0gMV0gPSB0aGlzLl9rZXlzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlc1tpIC0gMV0gPSB0aGlzLl92YWx1ZXNbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlzLmxlbmd0aC0tO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzLmxlbmd0aC0tO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gdGhpcy5fY2FjaGVLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZUtleSA9IGNhY2hlU2VudGluZWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVJbmRleCA9IC0yO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5cy5sZW5ndGggPSAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXMubGVuZ3RoID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVLZXkgPSBjYWNoZVNlbnRpbmVsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZUluZGV4ID0gLTI7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBuZXcgTWFwSXRlcmF0b3IodGhpcy5fa2V5cywgdGhpcy5fdmFsdWVzLCBnZXRLZXkpOyB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbmV3IE1hcEl0ZXJhdG9yKHRoaXMuX2tleXMsIHRoaXMuX3ZhbHVlcywgZ2V0VmFsdWUpOyB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5ldyBNYXBJdGVyYXRvcih0aGlzLl9rZXlzLCB0aGlzLl92YWx1ZXMsIGdldEVudHJ5KTsgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlW1wiQEBpdGVyYXRvclwiXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuZW50cmllcygpOyB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGVbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5lbnRyaWVzKCk7IH07XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZS5fZmluZCA9IGZ1bmN0aW9uIChrZXksIGluc2VydCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2FjaGVLZXkgIT09IGtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVJbmRleCA9IHRoaXMuX2tleXMuaW5kZXhPZih0aGlzLl9jYWNoZUtleSA9IGtleSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NhY2hlSW5kZXggPCAwICYmIGluc2VydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVJbmRleCA9IHRoaXMuX2tleXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5cy5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXMucHVzaCh1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jYWNoZUluZGV4O1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1hcDtcbiAgICAgICAgICAgIH0oKSk7XG4gICAgICAgICAgICBmdW5jdGlvbiBnZXRLZXkoa2V5LCBfKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIGdldFZhbHVlKF8sIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gZ2V0RW50cnkoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBba2V5LCB2YWx1ZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gbmFpdmUgU2V0IHNoaW1cbiAgICAgICAgZnVuY3Rpb24gQ3JlYXRlU2V0UG9seWZpbGwoKSB7XG4gICAgICAgICAgICByZXR1cm4gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFNldCgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWFwID0gbmV3IF9NYXAoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFNldC5wcm90b3R5cGUsIFwic2l6ZVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fbWFwLnNpemU7IH0sXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB0aGlzLl9tYXAuaGFzKHZhbHVlKTsgfTtcbiAgICAgICAgICAgICAgICBTZXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdGhpcy5fbWFwLnNldCh2YWx1ZSwgdmFsdWUpLCB0aGlzOyB9O1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUuZGVsZXRlID0gZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB0aGlzLl9tYXAuZGVsZXRlKHZhbHVlKTsgfTtcbiAgICAgICAgICAgICAgICBTZXQucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkgeyB0aGlzLl9tYXAuY2xlYXIoKTsgfTtcbiAgICAgICAgICAgICAgICBTZXQucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9tYXAua2V5cygpOyB9O1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fbWFwLnZhbHVlcygpOyB9O1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX21hcC5lbnRyaWVzKCk7IH07XG4gICAgICAgICAgICAgICAgU2V0LnByb3RvdHlwZVtcIkBAaXRlcmF0b3JcIl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLmtleXMoKTsgfTtcbiAgICAgICAgICAgICAgICBTZXQucHJvdG90eXBlW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMua2V5cygpOyB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBTZXQ7XG4gICAgICAgICAgICB9KCkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIG5haXZlIFdlYWtNYXAgc2hpbVxuICAgICAgICBmdW5jdGlvbiBDcmVhdGVXZWFrTWFwUG9seWZpbGwoKSB7XG4gICAgICAgICAgICB2YXIgVVVJRF9TSVpFID0gMTY7XG4gICAgICAgICAgICB2YXIga2V5cyA9IEhhc2hNYXAuY3JlYXRlKCk7XG4gICAgICAgICAgICB2YXIgcm9vdEtleSA9IENyZWF0ZVVuaXF1ZUtleSgpO1xuICAgICAgICAgICAgcmV0dXJuIC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBXZWFrTWFwKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXkgPSBDcmVhdGVVbmlxdWVLZXkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgV2Vha01hcC5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFibGUgPSBHZXRPckNyZWF0ZVdlYWtNYXBUYWJsZSh0YXJnZXQsIC8qY3JlYXRlKi8gZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFibGUgIT09IHVuZGVmaW5lZCA/IEhhc2hNYXAuaGFzKHRhYmxlLCB0aGlzLl9rZXkpIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBXZWFrTWFwLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YWJsZSA9IEdldE9yQ3JlYXRlV2Vha01hcFRhYmxlKHRhcmdldCwgLypjcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0YWJsZSAhPT0gdW5kZWZpbmVkID8gSGFzaE1hcC5nZXQodGFibGUsIHRoaXMuX2tleSkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBXZWFrTWFwLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAodGFyZ2V0LCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFibGUgPSBHZXRPckNyZWF0ZVdlYWtNYXBUYWJsZSh0YXJnZXQsIC8qY3JlYXRlKi8gdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRhYmxlW3RoaXMuX2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBXZWFrTWFwLnByb3RvdHlwZS5kZWxldGUgPSBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YWJsZSA9IEdldE9yQ3JlYXRlV2Vha01hcFRhYmxlKHRhcmdldCwgLypjcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0YWJsZSAhPT0gdW5kZWZpbmVkID8gZGVsZXRlIHRhYmxlW3RoaXMuX2tleV0gOiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIFdlYWtNYXAucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiBub3QgYSByZWFsIGNsZWFyLCBqdXN0IG1ha2VzIHRoZSBwcmV2aW91cyBkYXRhIHVucmVhY2hhYmxlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleSA9IENyZWF0ZVVuaXF1ZUtleSgpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIFdlYWtNYXA7XG4gICAgICAgICAgICB9KCkpO1xuICAgICAgICAgICAgZnVuY3Rpb24gQ3JlYXRlVW5pcXVlS2V5KCkge1xuICAgICAgICAgICAgICAgIHZhciBrZXk7XG4gICAgICAgICAgICAgICAgZG9cbiAgICAgICAgICAgICAgICAgICAga2V5ID0gXCJAQFdlYWtNYXBAQFwiICsgQ3JlYXRlVVVJRCgpO1xuICAgICAgICAgICAgICAgIHdoaWxlIChIYXNoTWFwLmhhcyhrZXlzLCBrZXkpKTtcbiAgICAgICAgICAgICAgICBrZXlzW2tleV0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBHZXRPckNyZWF0ZVdlYWtNYXBUYWJsZSh0YXJnZXQsIGNyZWF0ZSkge1xuICAgICAgICAgICAgICAgIGlmICghaGFzT3duLmNhbGwodGFyZ2V0LCByb290S2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNyZWF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHJvb3RLZXksIHsgdmFsdWU6IEhhc2hNYXAuY3JlYXRlKCkgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRbcm9vdEtleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBGaWxsUmFuZG9tQnl0ZXMoYnVmZmVyLCBzaXplKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyArK2kpXG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlcltpXSA9IE1hdGgucmFuZG9tKCkgKiAweGZmIHwgMDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYnVmZmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gR2VuUmFuZG9tQnl0ZXMoc2l6ZSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgVWludDhBcnJheSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY3J5cHRvICE9PSBcInVuZGVmaW5lZFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoc2l6ZSkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG1zQ3J5cHRvICE9PSBcInVuZGVmaW5lZFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheShzaXplKSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBGaWxsUmFuZG9tQnl0ZXMobmV3IFVpbnQ4QXJyYXkoc2l6ZSksIHNpemUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsbFJhbmRvbUJ5dGVzKG5ldyBBcnJheShzaXplKSwgc2l6ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBDcmVhdGVVVUlEKCkge1xuICAgICAgICAgICAgICAgIHZhciBkYXRhID0gR2VuUmFuZG9tQnl0ZXMoVVVJRF9TSVpFKTtcbiAgICAgICAgICAgICAgICAvLyBtYXJrIGFzIHJhbmRvbSAtIFJGQyA0MTIyIMKnIDQuNFxuICAgICAgICAgICAgICAgIGRhdGFbNl0gPSBkYXRhWzZdICYgMHg0ZiB8IDB4NDA7XG4gICAgICAgICAgICAgICAgZGF0YVs4XSA9IGRhdGFbOF0gJiAweGJmIHwgMHg4MDtcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gXCJcIjtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBvZmZzZXQgPSAwOyBvZmZzZXQgPCBVVUlEX1NJWkU7ICsrb2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBieXRlID0gZGF0YVtvZmZzZXRdO1xuICAgICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0ID09PSA0IHx8IG9mZnNldCA9PT0gNiB8fCBvZmZzZXQgPT09IDgpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gXCItXCI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChieXRlIDwgMTYpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gXCIwXCI7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBieXRlLnRvU3RyaW5nKDE2KS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIHVzZXMgYSBoZXVyaXN0aWMgdXNlZCBieSB2OCBhbmQgY2hha3JhIHRvIGZvcmNlIGFuIG9iamVjdCBpbnRvIGRpY3Rpb25hcnkgbW9kZS5cbiAgICAgICAgZnVuY3Rpb24gTWFrZURpY3Rpb25hcnkob2JqKSB7XG4gICAgICAgICAgICBvYmouX18gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBkZWxldGUgb2JqLl9fO1xuICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgfVxuICAgIH0pO1xufSkoUmVmbGVjdCB8fCAoUmVmbGVjdCA9IHt9KSk7XG4iLCJpbXBvcnQgeyBNZXRhZGF0YSwgTWV0YWRhdGFDbGFzcywgTWV0YWRhdGFSZWFkZXIgfSBmcm9tICcuLi90eXBlcy9NZXRhZGF0YSc7XG5pbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuZXhwb3J0IGNsYXNzIE1ldGFkYXRhRmFjdG9yeSB7XG4gICAgc3RhdGljIGdldE1ldGFkYXRhPFIgZXh0ZW5kcyBNZXRhZGF0YVJlYWRlciwgVCBleHRlbmRzIE9iamVjdCwgTSBleHRlbmRzIE1ldGFkYXRhPFIsIFQ+ID0gTWV0YWRhdGE8UiwgVD4+KFxuICAgICAgICB0YXJnZXQ6IFQsXG4gICAgICAgIG1ldGFkYXRhQ2xhc3M6IE1ldGFkYXRhQ2xhc3M8UiwgVCwgTT5cbiAgICApIHtcbiAgICAgICAgY29uc3Qga2V5ID0gbWV0YWRhdGFDbGFzcy5nZXRSZWZsZWN0S2V5KCk7XG4gICAgICAgIGxldCBtZXRhZGF0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoa2V5LCB0YXJnZXQpO1xuICAgICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgICAgICBtZXRhZGF0YSA9IG5ldyBtZXRhZGF0YUNsYXNzKCk7XG4gICAgICAgICAgICBtZXRhZGF0YS5pbml0KHRhcmdldCk7XG4gICAgICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKGtleSwgbWV0YWRhdGEsIHRhcmdldCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1ldGFkYXRhIGFzIE07XG4gICAgfVxufVxuIiwiLy8gZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuaW1wb3J0IHsgSW5zdGFuY2VTY29wZSB9IGZyb20gJy4uL2ZvdW5kYXRpb24vSW5zdGFuY2VTY29wZSc7XG5pbXBvcnQgeyBKc1NlcnZpY2VDbGFzcyB9IGZyb20gJy4uL3R5cGVzL0pzU2VydmljZUNsYXNzJztcbmltcG9ydCB7IE1ldGFkYXRhLCBNZXRhZGF0YVJlYWRlciB9IGZyb20gJy4uL3R5cGVzL01ldGFkYXRhJztcbmltcG9ydCB7IElkZW50aWZpZXIgfSBmcm9tICcuLi90eXBlcy9JZGVudGlmaWVyJztcbmltcG9ydCB7IExpZmVjeWNsZSB9IGZyb20gJy4uL2ZvdW5kYXRpb24vTGlmZWN5Y2xlJztcbmltcG9ydCB7IE5ld2FibGUgfSBmcm9tICcuLi90eXBlcy9OZXdhYmxlJztcbmltcG9ydCB7IGNyZWF0ZURlZmF1bHRWYWx1ZU1hcCB9IGZyb20gJy4uL2NvbW1vbi9EZWZhdWx0VmFsdWVNYXAnO1xuaW1wb3J0IHsgTWV0YWRhdGFGYWN0b3J5IH0gZnJvbSAnLi9NZXRhZGF0YUZhY3RvcnknO1xuaW1wb3J0IHsgTWVtYmVyS2V5IH0gZnJvbSAnLi4vdHlwZXMvTWVtYmVyS2V5JztcblxuY29uc3QgQ0xBU1NfTUVUQURBVEFfS0VZID0gJ2lvYzpjbGFzcy1tZXRhZGF0YSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFya0luZm8ge1xuICAgIFtrZXk6IHN0cmluZyB8IHN5bWJvbF06IHVua25vd247XG59XG5cbmV4cG9ydCBjbGFzcyBNYXJrSW5mb0NvbnRhaW5lciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXAgPSBjcmVhdGVEZWZhdWx0VmFsdWVNYXA8TWVtYmVyS2V5LCBNYXJrSW5mbz4oKCkgPT4gKHt9IGFzIE1hcmtJbmZvKSk7XG4gICAgZ2V0TWFya0luZm8obWV0aG9kOiBNZW1iZXJLZXkpOiBNYXJrSW5mbyB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQobWV0aG9kKTtcbiAgICB9XG4gICAgbWFyayhtZXRob2Q6IE1lbWJlcktleSwga2V5OiBNZW1iZXJLZXksIHZhbHVlOiB1bmtub3duKSB7XG4gICAgICAgIGNvbnN0IG1hcmtJbmZvID0gdGhpcy5tYXAuZ2V0KG1ldGhvZCk7XG4gICAgICAgIG1hcmtJbmZvW2tleV0gPSB2YWx1ZTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJhbWV0ZXJNYXJrSW5mb0NvbnRhaW5lciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXAgPSBjcmVhdGVEZWZhdWx0VmFsdWVNYXA8TWVtYmVyS2V5LCBSZWNvcmQ8bnVtYmVyLCBNYXJrSW5mbz4+KCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH0pO1xuICAgIGdldE1hcmtJbmZvKG1ldGhvZDogTWVtYmVyS2V5KTogUmVjb3JkPG51bWJlciwgTWFya0luZm8+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChtZXRob2QpO1xuICAgIH1cbiAgICBtYXJrKG1ldGhvZDogTWVtYmVyS2V5LCBpbmRleDogbnVtYmVyLCBrZXk6IE1lbWJlcktleSwgdmFsdWU6IHVua25vd24pIHtcbiAgICAgICAgY29uc3QgcGFyYW1zTWFya0luZm8gPSB0aGlzLm1hcC5nZXQobWV0aG9kKTtcbiAgICAgICAgY29uc3QgbWFya0luZm8gPSBwYXJhbXNNYXJrSW5mb1tpbmRleF0gfHwge307XG4gICAgICAgIG1hcmtJbmZvW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgcGFyYW1zTWFya0luZm9baW5kZXhdID0gbWFya0luZm87XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsYXNzTWFya0luZm8ge1xuICAgIGN0b3I6IE1hcmtJbmZvO1xuICAgIG1lbWJlcnM6IE1hcmtJbmZvQ29udGFpbmVyO1xuICAgIHBhcmFtczogUGFyYW1ldGVyTWFya0luZm9Db250YWluZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xhc3NNZXRhZGF0YVJlYWRlcjxUPiBleHRlbmRzIE1ldGFkYXRhUmVhZGVyIHtcbiAgICBnZXRDbGFzcygpOiBOZXdhYmxlPFQ+O1xuICAgIGdldFNjb3BlKCk6IEluc3RhbmNlU2NvcGUgfCBzdHJpbmc7XG4gICAgZ2V0Q29uc3RydWN0b3JQYXJhbWV0ZXJUeXBlcygpOiBBcnJheTxJZGVudGlmaWVyPjtcbiAgICBnZXRNZXRob2RzKGxpZmVjeWNsZTogTGlmZWN5Y2xlKTogQXJyYXk8c3RyaW5nIHwgc3ltYm9sPjtcbiAgICBnZXRQcm9wZXJ0eVR5cGVNYXAoKTogTWFwPHN0cmluZyB8IHN5bWJvbCwgSWRlbnRpZmllcj47XG4gICAgZ2V0Q3Rvck1hcmtJbmZvKCk6IE1hcmtJbmZvO1xuICAgIGdldE1lbWJlcnNNYXJrSW5mbyhtZXRob2RLZXk6IGtleW9mIFQpOiBNYXJrSW5mbztcbiAgICBnZXRQYXJhbWV0ZXJNYXJrSW5mbyhtZXRob2RLZXk6IGtleW9mIFQpOiBSZWNvcmQ8bnVtYmVyLCBNYXJrSW5mbz47XG59XG5cbmV4cG9ydCBjbGFzcyBDbGFzc01ldGFkYXRhPFQ+IGltcGxlbWVudHMgTWV0YWRhdGE8Q2xhc3NNZXRhZGF0YVJlYWRlcjxUPiwgTmV3YWJsZTxUPj4ge1xuICAgIHN0YXRpYyBnZXRSZWZsZWN0S2V5KCkge1xuICAgICAgICByZXR1cm4gQ0xBU1NfTUVUQURBVEFfS0VZO1xuICAgIH1cbiAgICBwcml2YXRlIHNjb3BlOiBJbnN0YW5jZVNjb3BlIHwgc3RyaW5nID0gSW5zdGFuY2VTY29wZS5TSU5HTEVUT047XG4gICAgcHJpdmF0ZSBjb25zdHJ1Y3RvclBhcmFtZXRlclR5cGVzOiBBcnJheTxJZGVudGlmaWVyPiA9IFtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbGlmZWN5Y2xlTWV0aG9kc01hcDogUmVjb3JkPHN0cmluZyB8IHN5bWJvbCwgU2V0PExpZmVjeWNsZT4+ID0ge307XG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9wZXJ0eVR5cGVzTWFwID0gbmV3IE1hcDxzdHJpbmcgfCBzeW1ib2wsIElkZW50aWZpZXI+KCk7XG4gICAgcHJpdmF0ZSBjbGF6eiE6IE5ld2FibGU8VD47XG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXJrczogQ2xhc3NNYXJrSW5mbyA9IHtcbiAgICAgICAgY3Rvcjoge30sXG4gICAgICAgIG1lbWJlcnM6IG5ldyBNYXJrSW5mb0NvbnRhaW5lcigpLFxuICAgICAgICBwYXJhbXM6IG5ldyBQYXJhbWV0ZXJNYXJrSW5mb0NvbnRhaW5lcigpXG4gICAgfTtcblxuICAgIHN0YXRpYyBnZXRJbnN0YW5jZTxUPihjdG9yOiBOZXdhYmxlPFQ+KSB7XG4gICAgICAgIHJldHVybiBNZXRhZGF0YUZhY3RvcnkuZ2V0TWV0YWRhdGEoY3RvciwgQ2xhc3NNZXRhZGF0YSk7XG4gICAgfVxuXG4gICAgaW5pdCh0YXJnZXQ6IE5ld2FibGU8VD4pIHtcbiAgICAgICAgdGhpcy5jbGF6eiA9IHRhcmdldDtcbiAgICAgICAgY29uc3QgY29uc3RyID0gdGFyZ2V0IGFzIEpzU2VydmljZUNsYXNzPHVua25vd24+O1xuICAgICAgICBpZiAodHlwZW9mIGNvbnN0ci5zY29wZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5zZXRTY29wZShjb25zdHIuc2NvcGUoKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBjb25zdHIuaW5qZWN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjb25zdCBpbmplY3Rpb25zID0gY29uc3RyLmluamVjdCgpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5qZWN0aW9ucykge1xuICAgICAgICAgICAgICAgIHRoaXMucmVjb3JkUHJvcGVydHlUeXBlKGtleSwgaW5qZWN0aW9uc1trZXldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGNvbnN0ci5tZXRhZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY29uc3QgbWV0YWRhdGEgPSBjb25zdHIubWV0YWRhdGEoKTtcbiAgICAgICAgICAgIGlmIChtZXRhZGF0YS5zY29wZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U2NvcGUobWV0YWRhdGEuc2NvcGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaW5qZWN0aW9ucyA9IG1ldGFkYXRhLmluamVjdDtcbiAgICAgICAgICAgIGlmIChpbmplY3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5qZWN0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlY29yZFByb3BlcnR5VHlwZShrZXksIGluamVjdGlvbnNba2V5XSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbWFya2VyKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY3RvcjogKGtleTogc3RyaW5nIHwgc3ltYm9sLCB2YWx1ZTogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWFya3MuY3RvcltrZXldID0gdmFsdWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWVtYmVyOiAocHJvcGVydHlLZXk6IHN0cmluZyB8IHN5bWJvbCB8IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIG1hcms6IChrZXk6IHN0cmluZyB8IHN5bWJvbCwgdmFsdWU6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFya3MubWVtYmVycy5tYXJrKHByb3BlcnR5S2V5LCBrZXksIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFyYW1ldGVyOiAocHJvcGVydHlLZXk6IHN0cmluZyB8IHN5bWJvbCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIG1hcms6IChrZXk6IHN0cmluZyB8IHN5bWJvbCwgdmFsdWU6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFya3MucGFyYW1zLm1hcmsocHJvcGVydHlLZXksIGluZGV4LCBrZXksIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuICAgIHNldFNjb3BlKHNjb3BlOiBJbnN0YW5jZVNjb3BlIHwgc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2NvcGUgPSBzY29wZTtcbiAgICB9XG4gICAgc2V0Q29uc3RydWN0b3JQYXJhbWV0ZXJUeXBlKGluZGV4OiBudW1iZXIsIGNsczogSWRlbnRpZmllcikge1xuICAgICAgICB0aGlzLmNvbnN0cnVjdG9yUGFyYW1ldGVyVHlwZXNbaW5kZXhdID0gY2xzO1xuICAgIH1cbiAgICByZWNvcmRQcm9wZXJ0eVR5cGUocHJvcGVydHlLZXk6IHN0cmluZyB8IHN5bWJvbCwgdHlwZTogSWRlbnRpZmllcikge1xuICAgICAgICB0aGlzLnByb3BlcnR5VHlwZXNNYXAuc2V0KHByb3BlcnR5S2V5LCB0eXBlKTtcbiAgICB9XG4gICAgYWRkTGlmZWN5Y2xlTWV0aG9kKG1ldGhvZE5hbWU6IHN0cmluZyB8IHN5bWJvbCwgbGlmZWN5Y2xlOiBMaWZlY3ljbGUpIHtcbiAgICAgICAgY29uc3QgbGlmZWN5Y2xlcyA9IHRoaXMuZ2V0TGlmZWN5Y2xlcyhtZXRob2ROYW1lKTtcbiAgICAgICAgbGlmZWN5Y2xlcy5hZGQobGlmZWN5Y2xlKTtcbiAgICAgICAgdGhpcy5saWZlY3ljbGVNZXRob2RzTWFwW21ldGhvZE5hbWVdID0gbGlmZWN5Y2xlcztcbiAgICB9XG4gICAgcHJpdmF0ZSBnZXRMaWZlY3ljbGVzKG1ldGhvZE5hbWU6IHN0cmluZyB8IHN5bWJvbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5saWZlY3ljbGVNZXRob2RzTWFwW21ldGhvZE5hbWVdIHx8IG5ldyBTZXQ8TGlmZWN5Y2xlPigpO1xuICAgIH1cbiAgICBnZXRNZXRob2RzKGxpZmVjeWNsZTogTGlmZWN5Y2xlKTogQXJyYXk8c3RyaW5nIHwgc3ltYm9sPiB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmxpZmVjeWNsZU1ldGhvZHNNYXApLmZpbHRlcihpdCA9PiB7XG4gICAgICAgICAgICBjb25zdCBsaWZlY3ljbGVzID0gdGhpcy5saWZlY3ljbGVNZXRob2RzTWFwW2l0XTtcbiAgICAgICAgICAgIHJldHVybiBsaWZlY3ljbGVzLmhhcyhsaWZlY3ljbGUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVhZGVyKCk6IENsYXNzTWV0YWRhdGFSZWFkZXI8VD4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0Q2xhc3M6ICgpID0+IHRoaXMuY2xhenosXG4gICAgICAgICAgICBnZXRTY29wZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNjb3BlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldENvbnN0cnVjdG9yUGFyYW1ldGVyVHlwZXM6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3RvclBhcmFtZXRlclR5cGVzLnNsaWNlKDApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldE1ldGhvZHM6IChsaWZlY3ljbGU6IExpZmVjeWNsZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE1ldGhvZHMobGlmZWN5Y2xlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRQcm9wZXJ0eVR5cGVNYXA6ICgpID0+IG5ldyBNYXAodGhpcy5wcm9wZXJ0eVR5cGVzTWFwKSxcbiAgICAgICAgICAgIGdldEN0b3JNYXJrSW5mbzogKCk6IE1hcmtJbmZvID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi50aGlzLm1hcmtzLmN0b3IgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRNZW1iZXJzTWFya0luZm86IChrZXk6IGtleW9mIFQpOiBNYXJrSW5mbyA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFya3MubWVtYmVycy5nZXRNYXJrSW5mbyhrZXkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldFBhcmFtZXRlck1hcmtJbmZvOiAobWV0aG9kS2V5OiBrZXlvZiBUKTogUmVjb3JkPG51bWJlciwgTWFya0luZm8+ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tYXJrcy5wYXJhbXMuZ2V0TWFya0luZm8obWV0aG9kS2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBHbG9iYWxNZXRhZGF0YSB9IGZyb20gJy4uL21ldGFkYXRhL0dsb2JhbE1ldGFkYXRhJztcbmltcG9ydCB7IENsYXNzTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS9DbGFzc01ldGFkYXRhJztcbmltcG9ydCB7IE1ldGFkYXRhRmFjdG9yeSB9IGZyb20gJy4uL21ldGFkYXRhL01ldGFkYXRhRmFjdG9yeSc7XG5pbXBvcnQgeyBOZXdhYmxlIH0gZnJvbSAnLi4vdHlwZXMvTmV3YWJsZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBCaW5kKGFsaWFzTmFtZTogc3RyaW5nIHwgc3ltYm9sKTogQ2xhc3NEZWNvcmF0b3Ige1xuICAgIHJldHVybiA8VEZ1bmN0aW9uIGV4dGVuZHMgRnVuY3Rpb24+KHRhcmdldDogVEZ1bmN0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gTWV0YWRhdGFGYWN0b3J5LmdldE1ldGFkYXRhKHRhcmdldCBhcyB1bmtub3duIGFzIE5ld2FibGU8dW5rbm93bj4sIENsYXNzTWV0YWRhdGEpO1xuICAgICAgICBHbG9iYWxNZXRhZGF0YS5nZXRJbnN0YW5jZSgpLnJlY29yZENsYXNzQWxpYXMoYWxpYXNOYW1lLCBtZXRhZGF0YSk7XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IEluc3RhbmNlU2NvcGUgfSBmcm9tICcuLi9mb3VuZGF0aW9uL0luc3RhbmNlU2NvcGUnO1xuaW1wb3J0IHsgQ2xhc3NNZXRhZGF0YSB9IGZyb20gJy4uL21ldGFkYXRhL0NsYXNzTWV0YWRhdGEnO1xuaW1wb3J0IHsgTWV0YWRhdGFGYWN0b3J5IH0gZnJvbSAnLi4vbWV0YWRhdGEvTWV0YWRhdGFGYWN0b3J5JztcbmltcG9ydCB7IE5ld2FibGUgfSBmcm9tICcuLi90eXBlcy9OZXdhYmxlJztcblxuZXhwb3J0IGZ1bmN0aW9uIFNjb3BlKHNjb3BlOiBJbnN0YW5jZVNjb3BlIHwgc3RyaW5nKTogQ2xhc3NEZWNvcmF0b3Ige1xuICAgIHJldHVybiA8VEZ1bmN0aW9uIGV4dGVuZHMgRnVuY3Rpb24+KHRhcmdldDogVEZ1bmN0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gTWV0YWRhdGFGYWN0b3J5LmdldE1ldGFkYXRhKHRhcmdldCBhcyB1bmtub3duIGFzIE5ld2FibGU8dW5rbm93bj4sIENsYXNzTWV0YWRhdGEpO1xuICAgICAgICBtZXRhZGF0YS5zZXRTY29wZShzY29wZSk7XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IE5ld2FibGUgfSBmcm9tICcuLi90eXBlcy9OZXdhYmxlJztcbmltcG9ydCB7IENsYXNzTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS9DbGFzc01ldGFkYXRhJztcbmltcG9ydCB7IElkZW50aWZpZXIgfSBmcm9tICcuLi90eXBlcy9JZGVudGlmaWVyJztcbmltcG9ydCB7IE1ldGFkYXRhRmFjdG9yeSB9IGZyb20gJy4uL21ldGFkYXRhL01ldGFkYXRhRmFjdG9yeSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBJbmplY3Q8VD4oY29uc3RyOiBJZGVudGlmaWVyPFQ+KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIDxUYXJnZXQ+KHRhcmdldDogVGFyZ2V0LCBwcm9wZXJ0eUtleTogc3RyaW5nIHwgc3ltYm9sLCBwYXJhbWV0ZXJJbmRleD86IG51bWJlcikge1xuICAgICAgICBpZiAodHlwZW9mIHRhcmdldCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgcGFyYW1ldGVySW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRDb25zdHIgPSB0YXJnZXQgYXMgTmV3YWJsZTxUPjtcbiAgICAgICAgICAgIGNvbnN0IGNsYXNzTWV0YWRhdGEgPSBNZXRhZGF0YUZhY3RvcnkuZ2V0TWV0YWRhdGEodGFyZ2V0Q29uc3RyLCBDbGFzc01ldGFkYXRhKTtcbiAgICAgICAgICAgIGNsYXNzTWV0YWRhdGEuc2V0Q29uc3RydWN0b3JQYXJhbWV0ZXJUeXBlKHBhcmFtZXRlckluZGV4LCBjb25zdHIpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0YXJnZXQgPT09ICdvYmplY3QnICYmIHRhcmdldCAhPT0gbnVsbCAmJiBwcm9wZXJ0eUtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YSh0YXJnZXQuY29uc3RydWN0b3IsIENsYXNzTWV0YWRhdGEpO1xuICAgICAgICAgICAgbWV0YWRhdGEucmVjb3JkUHJvcGVydHlUeXBlKHByb3BlcnR5S2V5LCBjb25zdHIpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IEdsb2JhbE1ldGFkYXRhIH0gZnJvbSAnLi4vbWV0YWRhdGEvR2xvYmFsTWV0YWRhdGEnO1xuaW1wb3J0IHsgTmV3YWJsZSB9IGZyb20gJy4uL3R5cGVzL05ld2FibGUnO1xuaW1wb3J0IHsgRmFjdG9yeUlkZW50aWZpZXIgfSBmcm9tICcuLi90eXBlcy9GYWN0b3J5SWRlbnRpZmllcic7XG5pbXBvcnQgeyBJZGVudGlmaWVyIH0gZnJvbSAnLi4vdHlwZXMvSWRlbnRpZmllcic7XG5pbXBvcnQgeyBJbnN0YW5jZSB9IGZyb20gJy4uL3R5cGVzL0luc3RhbmNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIEZhY3RvcnkoaWRlbnRpZmllcjogRmFjdG9yeUlkZW50aWZpZXIsIGluamVjdGlvbnM6IElkZW50aWZpZXJbXSA9IFtdKTogTWV0aG9kRGVjb3JhdG9yIHtcbiAgICByZXR1cm4gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nIHwgc3ltYm9sKSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gR2xvYmFsTWV0YWRhdGEuZ2V0SW5zdGFuY2UoKTtcbiAgICAgICAgY29uc3QgY2xhenogPSB0YXJnZXQuY29uc3RydWN0b3IgYXMgTmV3YWJsZTxJbnN0YW5jZTx1bmtub3duPj47XG5cbiAgICAgICAgbWV0YWRhdGEucmVjb3JkRmFjdG9yeShcbiAgICAgICAgICAgIGlkZW50aWZpZXIsXG4gICAgICAgICAgICAoY29udGFpbmVyLCBvd25lcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gY29udGFpbmVyLmdldEluc3RhbmNlKGNsYXp6LCBvd25lcik7XG4gICAgICAgICAgICAgICAgY29uc3QgZnVuYyA9IGluc3RhbmNlW3Byb3BlcnR5S2V5XTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZ1bmMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnN0YW5jZSA9IGNvbnRhaW5lci5nZXRJbnN0YW5jZShjbGF6eik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseShpbnN0YW5jZSwgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IGZ1bmM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluamVjdGlvbnNcbiAgICAgICAgKTtcbiAgICB9O1xufVxuIiwiZXhwb3J0IGVudW0gTGlmZWN5Y2xlIHtcbiAgICBQUkVfSU5KRUNUID0gJ2lvYy1zY29wZTpwcmUtaW5qZWN0JyxcbiAgICBQT1NUX0lOSkVDVCA9ICdpb2Mtc2NvcGU6cG9zdC1pbmplY3QnLFxuICAgIFBSRV9ERVNUUk9ZID0gJ2lvYy1zY29wZTpwcmUtZGVzdHJveSdcbn1cbiIsImltcG9ydCAncmVmbGVjdC1tZXRhZGF0YSc7XG5pbXBvcnQgeyBMaWZlY3ljbGUgfSBmcm9tICcuLi9mb3VuZGF0aW9uL0xpZmVjeWNsZSc7XG5pbXBvcnQgeyBDbGFzc01ldGFkYXRhIH0gZnJvbSAnLi4vbWV0YWRhdGEvQ2xhc3NNZXRhZGF0YSc7XG5pbXBvcnQgeyBNZXRhZGF0YUZhY3RvcnkgfSBmcm9tICcuLi9tZXRhZGF0YS9NZXRhZGF0YUZhY3RvcnknO1xuXG4vKipcbiAqIFVybiBjYWxscyB0aGUgbWV0aG9kcyBhbm5vdGF0ZWQgd2l0aCBAUG9zdEluamVjdCBvbmx5IG9uY2UsIGp1c3QgYWZ0ZXIgdGhlIGluamVjdGlvbiBvZiBwcm9wZXJ0aWVzLlxuICogQGFubm90YXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IExpZmVjeWNsZURlY29yYXRvciA9IChsaWZlY3ljbGU6IExpZmVjeWNsZSk6IE1ldGhvZERlY29yYXRvciA9PiB7XG4gICAgcmV0dXJuICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZyB8IHN5bWJvbCkgPT4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YSh0YXJnZXQuY29uc3RydWN0b3IsIENsYXNzTWV0YWRhdGEpO1xuICAgICAgICBtZXRhZGF0YS5hZGRMaWZlY3ljbGVNZXRob2QocHJvcGVydHlLZXksIGxpZmVjeWNsZSk7XG4gICAgfTtcbn07XG4iLCJpbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuaW1wb3J0IHsgTGlmZWN5Y2xlIH0gZnJvbSAnLi4vZm91bmRhdGlvbi9MaWZlY3ljbGUnO1xuaW1wb3J0IHsgTGlmZWN5Y2xlRGVjb3JhdG9yIH0gZnJvbSAnLi9MaWZlY3ljbGVEZWNvcmF0b3InO1xuXG4vKipcbiAqIFVybiBjYWxscyB0aGUgbWV0aG9kcyBhbm5vdGF0ZWQgd2l0aCBAUG9zdEluamVjdCBvbmx5IG9uY2UsIGp1c3QgYWZ0ZXIgdGhlIGluamVjdGlvbiBvZiBwcm9wZXJ0aWVzLlxuICogQGFubm90YXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IFBvc3RJbmplY3QgPSAoKTogTWV0aG9kRGVjb3JhdG9yID0+IExpZmVjeWNsZURlY29yYXRvcihMaWZlY3ljbGUuUE9TVF9JTkpFQ1QpO1xuIiwiaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcbmltcG9ydCB7IExpZmVjeWNsZSB9IGZyb20gJy4uL2ZvdW5kYXRpb24vTGlmZWN5Y2xlJztcbmltcG9ydCB7IExpZmVjeWNsZURlY29yYXRvciB9IGZyb20gJy4vTGlmZWN5Y2xlRGVjb3JhdG9yJztcblxuLyoqXG4gKiBVcm4gY2FsbHMgdGhlIG1ldGhvZHMgYW5ub3RhdGVkIHdpdGggQFBvc3RJbmplY3Qgb25seSBvbmNlLCBqdXN0IGFmdGVyIHRoZSBpbmplY3Rpb24gb2YgcHJvcGVydGllcy5cbiAqIEBhbm5vdGF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBQcmVJbmplY3QgPSAoKTogTWV0aG9kRGVjb3JhdG9yID0+IExpZmVjeWNsZURlY29yYXRvcihMaWZlY3ljbGUuUFJFX0lOSkVDVCk7XG4iLCJpbXBvcnQgeyBMaWZlY3ljbGVEZWNvcmF0b3IgfSBmcm9tICcuL0xpZmVjeWNsZURlY29yYXRvcic7XG5pbXBvcnQgeyBMaWZlY3ljbGUgfSBmcm9tICcuLi9mb3VuZGF0aW9uL0xpZmVjeWNsZSc7XG5cbmV4cG9ydCBjb25zdCBQcmVEZXN0cm95ID0gKCkgPT4gTGlmZWN5Y2xlRGVjb3JhdG9yKExpZmVjeWNsZS5QUkVfREVTVFJPWSk7XG4iLCJleHBvcnQgaW50ZXJmYWNlIEV2YWx1YXRpb25PcHRpb25zPE8sIEUgZXh0ZW5kcyBzdHJpbmcsIEEgPSB1bmtub3duPiB7XG4gICAgdHlwZTogRTtcbiAgICBvd25lcj86IE87XG4gICAgcHJvcGVydHlOYW1lPzogc3RyaW5nIHwgc3ltYm9sO1xuICAgIGV4dGVybmFsQXJncz86IEE7XG59XG5cbmV4cG9ydCBlbnVtIEV4cHJlc3Npb25UeXBlIHtcbiAgICBFTlYgPSAnaW5qZWN0LWVudmlyb25tZW50LXZhcmlhYmxlcycsXG4gICAgSlNPTl9QQVRIID0gJ2luamVjdC1qc29uLWRhdGEnLFxuICAgIEFSR1YgPSAnaW5qZWN0LWFyZ3YnXG59XG4iLCJleHBvcnQgY29uc3QgaXNOb2RlSnMgPSAoKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG4gICAgICAgIGNvbnN0IG9zID0gcmVxdWlyZSgnb3MnKTtcbiAgICAgICAgb3MuYXJjaCgpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59KSgpO1xuIiwiaW1wb3J0IHsgQ2xhc3NNZXRhZGF0YSB9IGZyb20gJy4uL21ldGFkYXRhL0NsYXNzTWV0YWRhdGEnO1xuaW1wb3J0IHsgR2xvYmFsTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS9HbG9iYWxNZXRhZGF0YSc7XG5pbXBvcnQgeyBNZXRhZGF0YUZhY3RvcnkgfSBmcm9tICcuLi9tZXRhZGF0YS9NZXRhZGF0YUZhY3RvcnknO1xuaW1wb3J0IHsgRXhwcmVzc2lvblR5cGUgfSBmcm9tICcuLi90eXBlcy9FdmFsdWF0ZU9wdGlvbnMnO1xuaW1wb3J0IHsgaXNOb2RlSnMgfSBmcm9tICcuLi9jb21tb24vaXNOb2RlSnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gVmFsdWU8QSA9IHVua25vd24+KGV4cHJlc3Npb246IHN0cmluZywgdHlwZTogRXhwcmVzc2lvblR5cGUgfCBzdHJpbmcsIGV4dGVybmFsQXJncz86IEEpOiBQcm9wZXJ0eURlY29yYXRvciB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgRXhwcmVzc2lvblR5cGUuRU5WOlxuICAgICAgICBjYXNlIEV4cHJlc3Npb25UeXBlLkFSR1Y6XG4gICAgICAgICAgICBpZiAoIWlzTm9kZUpzKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgXCIke3R5cGV9XCIgZXZhbHVhdG9yIG9ubHkgc3VwcG9ydHMgbm9kZWpzIGVudmlyb25tZW50IWApO1xuICAgICAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nIHwgc3ltYm9sKSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gTWV0YWRhdGFGYWN0b3J5LmdldE1ldGFkYXRhKHRhcmdldC5jb25zdHJ1Y3RvciwgQ2xhc3NNZXRhZGF0YSk7XG4gICAgICAgIGNvbnN0IHZhbHVlX3N5bWJvbCA9IFN5bWJvbCgnJyk7XG4gICAgICAgIG1ldGFkYXRhLnJlY29yZFByb3BlcnR5VHlwZShwcm9wZXJ0eUtleSwgdmFsdWVfc3ltYm9sKTtcbiAgICAgICAgR2xvYmFsTWV0YWRhdGEuZ2V0SW5zdGFuY2UoKS5yZWNvcmRGYWN0b3J5KHZhbHVlX3N5bWJvbCwgKGNvbnRhaW5lciwgb3duZXIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PlxuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5ldmFsdWF0ZTxzdHJpbmcsIHR5cGVvZiBvd25lciwgQT4oZXhwcmVzc2lvbiBhcyBzdHJpbmcsIHtcbiAgICAgICAgICAgICAgICAgICAgb3duZXIsXG4gICAgICAgICAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGV4dGVybmFsQXJnc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xufVxuIiwiaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcbmltcG9ydCB7IE1ldGFkYXRhRmFjdG9yeSB9IGZyb20gJy4uL21ldGFkYXRhL01ldGFkYXRhRmFjdG9yeSc7XG5pbXBvcnQgeyBDbGFzc01ldGFkYXRhIH0gZnJvbSAnLi4vbWV0YWRhdGEvQ2xhc3NNZXRhZGF0YSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBNYXJrKGtleTogc3RyaW5nIHwgc3ltYm9sLCB2YWx1ZTogdW5rbm93biA9IHRydWUpOiBGdW5jdGlvbiB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChcbiAgICAgICAgLi4uYXJnczpcbiAgICAgICAgICAgIHwgUGFyYW1ldGVyczxDbGFzc0RlY29yYXRvcj5cbiAgICAgICAgICAgIHwgUGFyYW1ldGVyczxNZXRob2REZWNvcmF0b3I+XG4gICAgICAgICAgICB8IFBhcmFtZXRlcnM8UHJvcGVydHlEZWNvcmF0b3I+XG4gICAgICAgICAgICB8IFBhcmFtZXRlcnM8UGFyYW1ldGVyRGVjb3JhdG9yPlxuICAgICkge1xuICAgICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIC8vIGNsYXNzIGRlY29yYXRvclxuICAgICAgICAgICAgY29uc3QgbWV0YWRhdGEgPSBNZXRhZGF0YUZhY3RvcnkuZ2V0TWV0YWRhdGEoYXJnc1swXSwgQ2xhc3NNZXRhZGF0YSk7XG4gICAgICAgICAgICBtZXRhZGF0YS5tYXJrZXIoKS5jdG9yKGtleSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAvLyBwcm9wZXJ0eSBkZWNvcmF0b3JcbiAgICAgICAgICAgIGNvbnN0IFtwcm90b3R5cGUsIHByb3BlcnR5S2V5XSA9IGFyZ3M7XG4gICAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YShwcm90b3R5cGUuY29uc3RydWN0b3IsIENsYXNzTWV0YWRhdGEpO1xuICAgICAgICAgICAgbWV0YWRhdGEubWFya2VyKCkubWVtYmVyKHByb3BlcnR5S2V5KS5tYXJrKGtleSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAzICYmIHR5cGVvZiBhcmdzWzJdID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgLy8gcGFyYW1ldGVyIGRlY29yYXRvclxuICAgICAgICAgICAgY29uc3QgW3Byb3RvdHlwZSwgcHJvcGVydHlLZXksIGluZGV4XSA9IGFyZ3M7XG4gICAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YShwcm90b3R5cGUuY29uc3RydWN0b3IsIENsYXNzTWV0YWRhdGEpO1xuICAgICAgICAgICAgbWV0YWRhdGEubWFya2VyKCkucGFyYW1ldGVyKHByb3BlcnR5S2V5LCBpbmRleCkubWFyayhrZXksIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIG1ldGhvZCBkZWNvcmF0b3JcbiAgICAgICAgICAgIGNvbnN0IFtwcm90b3R5cGUsIHByb3BlcnR5S2V5XSA9IGFyZ3M7XG4gICAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YShwcm90b3R5cGUuY29uc3RydWN0b3IsIENsYXNzTWV0YWRhdGEpO1xuICAgICAgICAgICAgbWV0YWRhdGEubWFya2VyKCkubWVtYmVyKHByb3BlcnR5S2V5KS5tYXJrKGtleSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IEFueUZ1bmN0aW9uIH0gZnJvbSAnLi4vdHlwZXMvQW55RnVuY3Rpb24nO1xuXG5leHBvcnQgdHlwZSBFdmVudExpc3RlbmVyID0gQW55RnVuY3Rpb247XG5leHBvcnQgY2xhc3MgRXZlbnRFbWl0dGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV2ZW50cyA9IG5ldyBNYXA8c3RyaW5nIHwgc3ltYm9sLCBFdmVudExpc3RlbmVyW10+KCk7XG5cbiAgICBvbih0eXBlOiBzdHJpbmcgfCBzeW1ib2wsIGxpc3RlbmVyOiBFdmVudExpc3RlbmVyKSB7XG4gICAgICAgIGxldCBsaXN0ZW5lcnMgPSB0aGlzLmV2ZW50cy5nZXQodHlwZSk7XG4gICAgICAgIGlmIChsaXN0ZW5lcnMpIHtcbiAgICAgICAgICAgIGlmIChsaXN0ZW5lcnMuaW5kZXhPZihsaXN0ZW5lcikgPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBsaXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsaXN0ZW5lcnMgPSBbbGlzdGVuZXJdO1xuICAgICAgICAgICAgdGhpcy5ldmVudHMuc2V0KHR5cGUsIGxpc3RlbmVycyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxzID0gbGlzdGVuZXJzIGFzIEV2ZW50TGlzdGVuZXJbXTtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gbHMuaW5kZXhPZihsaXN0ZW5lcik7XG4gICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIGxzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuICAgIGVtaXQodHlwZTogc3RyaW5nIHwgc3ltYm9sLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgICAgdGhpcy5ldmVudHMuZ2V0KHR5cGUpPy5mb3JFYWNoKGZuID0+IHtcbiAgICAgICAgICAgIGZuKC4uLmFyZ3MpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBJZGVudGlmaWVyIH0gZnJvbSAnLi4vdHlwZXMvSWRlbnRpZmllcic7XG5cbnR5cGUgSW52b2tlRnVuY3Rpb25BcmdzID0ge1xuICAgIGFyZ3M/OiB1bmtub3duW107XG59O1xudHlwZSBJbnZva2VGdW5jdGlvbkluamVjdGlvbnMgPSB7XG4gICAgaW5qZWN0aW9ucz86IElkZW50aWZpZXJbXTtcbn07XG5cbnR5cGUgSW52b2tlRnVuY3Rpb25CYXNpY09wdGlvbnM8VD4gPSB7XG4gICAgY29udGV4dD86IFQ7XG59O1xuXG5leHBvcnQgdHlwZSBJbnZva2VGdW5jdGlvbk9wdGlvbnM8VD4gPVxuICAgIHwgKEludm9rZUZ1bmN0aW9uQmFzaWNPcHRpb25zPFQ+ICYgSW52b2tlRnVuY3Rpb25BcmdzKVxuICAgIHwgKEludm9rZUZ1bmN0aW9uQmFzaWNPcHRpb25zPFQ+ICYgSW52b2tlRnVuY3Rpb25JbmplY3Rpb25zKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0FyZ3M8VD4ob3B0aW9uczogSW52b2tlRnVuY3Rpb25PcHRpb25zPFQ+KTogb3B0aW9ucyBpcyBJbnZva2VGdW5jdGlvbkJhc2ljT3B0aW9uczxUPiAmIEludm9rZUZ1bmN0aW9uQXJncyB7XG4gICAgcmV0dXJuICdhcmdzJyBpbiBvcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzSW5qZWN0aW9uczxUPihcbiAgICBvcHRpb25zOiBJbnZva2VGdW5jdGlvbk9wdGlvbnM8VD5cbik6IG9wdGlvbnMgaXMgSW52b2tlRnVuY3Rpb25CYXNpY09wdGlvbnM8VD4gJiBJbnZva2VGdW5jdGlvbkluamVjdGlvbnMge1xuICAgIHJldHVybiAnaW5qZWN0aW9ucycgaW4gb3B0aW9ucztcbn1cbiIsIlwidXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO1xuLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cblxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXG5cblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXG52YXIgZT1mdW5jdGlvbigpe3JldHVybiBlPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPTEsbj1hcmd1bWVudHMubGVuZ3RoO3I8bjtyKyspZm9yKHZhciBvIGluIHQ9YXJndW1lbnRzW3JdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG8pJiYoZVtvXT10W29dKTtyZXR1cm4gZX0sZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Z1bmN0aW9uIHQoKXt9dmFyIHI9e30sbj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5ldmFsdWF0ZVJlc3VsdD1yLHRoaXMuY29udGV4dD1lLnRhcmdldCx0aGlzLmNvbXB1dGVGbj1lLmV2YWx1YXRlLHRoaXMucmVzZXRUZXN0ZXI9ZS5yZXNldFRlc3RlcnN9cmV0dXJuIGUucHJvdG90eXBlLnJlbGVhc2U9ZnVuY3Rpb24oKXt0aGlzLnJlc2V0KHQpfSxlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbihlKXt0aGlzLmV2YWx1YXRlUmVzdWx0PXIsdGhpcy5jb21wdXRlRm49ZXx8dGhpcy5jb21wdXRlRm59LGUucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKCl7dGhpcy5pc1ByZXNlbnQoKSYmIXRoaXMubmVlZFJlc2V0KCl8fCh0aGlzLmV2YWx1YXRlUmVzdWx0PXRoaXMuY29tcHV0ZUZuLmNhbGwodGhpcy5jb250ZXh0LHRoaXMuY29udGV4dCkpfSxlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZSgpLHRoaXMuZXZhbHVhdGVSZXN1bHR9LGUucHJvdG90eXBlLmlzUHJlc2VudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmV2YWx1YXRlUmVzdWx0IT09cn0sZS5wcm90b3R5cGUubmVlZFJlc2V0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5yZXNldFRlc3Rlci5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdChlLmNvbnRleHQpfSkpfSxlfSgpO2Z1bmN0aW9uIG8odCxyLG8pe3ZhciB1O3U9XCJmdW5jdGlvblwiPT10eXBlb2Ygbz97ZXZhbHVhdGU6b306ZSh7fSxvKTt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik7aWYoYSYmIWEuY29uZmlndXJhYmxlKXRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBvdmVycmlkZSBvdmVycmlkZSBwcm9wZXJ0eTogXCIrU3RyaW5nKHIpKTt2YXIgaT1cImJvb2xlYW5cIj09dHlwZW9mIHUuZW51bWVyYWJsZT91LmVudW1lcmFibGU6KG51bGw9PWE/dm9pZCAwOmEuZW51bWVyYWJsZSl8fCEwLHM9dS5yZXNldEJ5fHxbXSxsPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUsdCxyLG8pe2UuX19sYXp5X198fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19sYXp5X19cIix7dmFsdWU6e30sZW51bWVyYWJsZTohMSx3cml0YWJsZTohMSxjb25maWd1cmFibGU6ITF9KTt2YXIgdT1lLl9fbGF6eV9fO2lmKCF1W3RdKXt2YXIgYT1vLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGV8fFwibnVtYmVyXCI9PXR5cGVvZiBlfHxcInN5bWJvbFwiPT10eXBlb2YgZT9mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIG49cltlXSxvPW4hPT10O3JldHVybiB0PW4sb319KGUpOih0PWUsZnVuY3Rpb24oZSl7dmFyIG49dChlKSxvPW4hPT1yO3JldHVybiByPW4sb30pO3ZhciB0LHJ9KSk7dVt0XT1uZXcgbih7dGFyZ2V0OmUsZXZhbHVhdGU6cixyZXNldFRlc3RlcnM6YX0pfXJldHVybiB1W3RdfSh0aGlzLHIsdS5ldmFsdWF0ZSxzKX07cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOmksZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGwuY2FsbCh0aGlzKS5nZXQoKX19KSxsfWZ1bmN0aW9uIHUoZSx0LHIpe3JldHVybiBvKGUsdCxyKS5jYWxsKGUpfWV4cG9ydHMubGF6eU1lbWJlcj1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxyKXtvKHQscixlKX19LGV4cG9ydHMubGF6eU1lbWJlck9mQ2xhc3M9ZnVuY3Rpb24oZSx0LHIpe28oZS5wcm90b3R5cGUsdCxyKX0sZXhwb3J0cy5sYXp5UHJvcD11LGV4cG9ydHMubGF6eVZhbD1mdW5jdGlvbihlKXtyZXR1cm4gdSh7X192YWxfXzpudWxsfSxcIl9fdmFsX19cIixlKX07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5janMuanMubWFwXG4iLCJpbXBvcnQgeyBOZXdhYmxlIH0gZnJvbSAnLi4vdHlwZXMvTmV3YWJsZSc7XG5pbXBvcnQgeyBDbGFzc01ldGFkYXRhLCBDbGFzc01ldGFkYXRhUmVhZGVyIH0gZnJvbSAnLi4vbWV0YWRhdGEvQ2xhc3NNZXRhZGF0YSc7XG5pbXBvcnQgeyBNZXRhZGF0YUZhY3RvcnkgfSBmcm9tICcuLi9tZXRhZGF0YS9NZXRhZGF0YUZhY3RvcnknO1xuaW1wb3J0IHsgTGlmZWN5Y2xlIH0gZnJvbSAnLi9MaWZlY3ljbGUnO1xuaW1wb3J0IHsgSW5zdGFuY2UgfSBmcm9tICcuLi90eXBlcy9JbnN0YW5jZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkNvbnRleHQgfSBmcm9tICcuL0FwcGxpY2F0aW9uQ29udGV4dCc7XG5cbmV4cG9ydCBjbGFzcyBMaWZlY3ljbGVNYW5hZ2VyPFQgPSB1bmtub3duPiB7XG4gICAgcHJpdmF0ZSBjbGFzc01ldGFkYXRhUmVhZGVyOiBDbGFzc01ldGFkYXRhUmVhZGVyPFQ+O1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50Q2xhc3M6IE5ld2FibGU8VD4sIHByaXZhdGUgcmVhZG9ubHkgY29udGFpbmVyOiBBcHBsaWNhdGlvbkNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5jbGFzc01ldGFkYXRhUmVhZGVyID0gTWV0YWRhdGFGYWN0b3J5LmdldE1ldGFkYXRhKHRoaXMuY29tcG9uZW50Q2xhc3MsIENsYXNzTWV0YWRhdGEpLnJlYWRlcigpO1xuICAgIH1cbiAgICBpbnZva2VQcmVJbmplY3RNZXRob2QoaW5zdGFuY2U6IEluc3RhbmNlPFQ+KSB7XG4gICAgICAgIGNvbnN0IG1ldGhvZHMgPSB0aGlzLmNsYXNzTWV0YWRhdGFSZWFkZXIuZ2V0TWV0aG9kcyhMaWZlY3ljbGUuUFJFX0lOSkVDVCk7XG4gICAgICAgIHRoaXMuaW52b2tlTGlmZWN5Y2xlTWV0aG9kcyhpbnN0YW5jZSwgbWV0aG9kcyk7XG4gICAgfVxuICAgIGludm9rZVBvc3RJbmplY3RNZXRob2QoaW5zdGFuY2U6IEluc3RhbmNlPFQ+KSB7XG4gICAgICAgIGNvbnN0IG1ldGhvZHMgPSB0aGlzLmNsYXNzTWV0YWRhdGFSZWFkZXIuZ2V0TWV0aG9kcyhMaWZlY3ljbGUuUE9TVF9JTkpFQ1QpO1xuICAgICAgICB0aGlzLmludm9rZUxpZmVjeWNsZU1ldGhvZHMoaW5zdGFuY2UsIG1ldGhvZHMpO1xuICAgIH1cbiAgICBpbnZva2VQcmVEZXN0cm95SW5qZWN0TWV0aG9kKGluc3RhbmNlOiBJbnN0YW5jZTxUPikge1xuICAgICAgICBjb25zdCBtZXRob2RzID0gdGhpcy5jbGFzc01ldGFkYXRhUmVhZGVyLmdldE1ldGhvZHMoTGlmZWN5Y2xlLlBSRV9ERVNUUk9ZKTtcbiAgICAgICAgdGhpcy5pbnZva2VMaWZlY3ljbGVNZXRob2RzKGluc3RhbmNlLCBtZXRob2RzKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBpbnZva2VMaWZlY3ljbGVNZXRob2RzKGluc3RhbmNlOiBJbnN0YW5jZTxUPiwgbWV0aG9kS2V5czogQXJyYXk8c3RyaW5nIHwgc3ltYm9sPikge1xuICAgICAgICBtZXRob2RLZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyLmludm9rZShpbnN0YW5jZVtrZXldLCB7XG4gICAgICAgICAgICAgICAgY29udGV4dDogaW5zdGFuY2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBOZXdhYmxlIH0gZnJvbSAnLi4vdHlwZXMvTmV3YWJsZSc7XG5pbXBvcnQgeyBDbGFzc01ldGFkYXRhLCBDbGFzc01ldGFkYXRhUmVhZGVyIH0gZnJvbSAnLi4vbWV0YWRhdGEvQ2xhc3NNZXRhZGF0YSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkNvbnRleHQgfSBmcm9tICcuL0FwcGxpY2F0aW9uQ29udGV4dCc7XG5pbXBvcnQgeyBJbnN0YW5jZSB9IGZyb20gJy4uL3R5cGVzL0luc3RhbmNlJztcbmltcG9ydCB7IFNlcnZpY2VGYWN0b3J5RGVmIH0gZnJvbSAnLi9TZXJ2aWNlRmFjdG9yeURlZic7XG5pbXBvcnQgeyBHbG9iYWxNZXRhZGF0YSB9IGZyb20gJy4uL21ldGFkYXRhL0dsb2JhbE1ldGFkYXRhJztcbmltcG9ydCB7IGxhenlQcm9wIH0gZnJvbSAnQHZnZXJib3QvbGF6eSc7XG5pbXBvcnQgeyBNZXRhZGF0YUZhY3RvcnkgfSBmcm9tICcuLi9tZXRhZGF0YS9NZXRhZGF0YUZhY3RvcnknO1xuaW1wb3J0IHsgSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yTWFuYWdlciB9IGZyb20gJy4vSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yTWFuYWdlcic7XG5pbXBvcnQgeyBMaWZlY3ljbGVNYW5hZ2VyIH0gZnJvbSAnLi9MaWZlY3ljbGVNYW5hZ2VyJztcblxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEluc3RhbmNlQnVpbGRlcjxUPiB7XG4gICAgcHJpdmF0ZSBnZXRDb25zdHJ1Y3RvckFyZ3M6ICgpID0+IHVua25vd25bXSA9ICgpID0+IFtdO1xuICAgIHByaXZhdGUgcHJvcGVydHlGYWN0b3JpZXM6IFJlY29yZDxzdHJpbmcgfCBzeW1ib2wsIFNlcnZpY2VGYWN0b3J5RGVmPHVua25vd24+PiA9IHt9O1xuICAgIHByaXZhdGUgbGF6eU1vZGU6IGJvb2xlYW4gPSB0cnVlO1xuICAgIHByaXZhdGUgbGlmZWN5Y2xlUmVzb2x2ZXI6IExpZmVjeWNsZU1hbmFnZXI8VD47XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50Q2xhc3M6IE5ld2FibGU8VD4sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29udGFpbmVyOiBBcHBsaWNhdGlvbkNvbnRleHQsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5zdEF3YXJlUHJvY2Vzc29yTWFuYWdlcjogSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yTWFuYWdlclxuICAgICkge1xuICAgICAgICB0aGlzLmxpZmVjeWNsZVJlc29sdmVyID0gbmV3IExpZmVjeWNsZU1hbmFnZXI8VD4oY29tcG9uZW50Q2xhc3MsIGNvbnRhaW5lcik7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YShjb21wb25lbnRDbGFzcywgQ2xhc3NNZXRhZGF0YSkucmVhZGVyKCk7XG4gICAgICAgIHRoaXMuYXBwZW5kQ2xhc3NNZXRhZGF0YShyZWFkZXIpO1xuICAgIH1cbiAgICBhcHBlbmRMYXp5TW9kZShsYXp5TW9kZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmxhenlNb2RlID0gbGF6eU1vZGU7XG4gICAgfVxuICAgIHByaXZhdGUgYXBwZW5kQ2xhc3NNZXRhZGF0YTxUPihjbGFzc01ldGFkYXRhUmVhZGVyOiBDbGFzc01ldGFkYXRhUmVhZGVyPFQ+KSB7XG4gICAgICAgIGNvbnN0IHR5cGVzID0gY2xhc3NNZXRhZGF0YVJlYWRlci5nZXRDb25zdHJ1Y3RvclBhcmFtZXRlclR5cGVzKCk7XG4gICAgICAgIHRoaXMuZ2V0Q29uc3RydWN0b3JBcmdzID0gKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVzLm1hcChpdCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyLmdldEluc3RhbmNlKGl0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBnbG9iYWxNZXRhZGF0YVJlYWRlciA9IEdsb2JhbE1ldGFkYXRhLmdldEluc3RhbmNlKCkucmVhZGVyKCk7XG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBjbGFzc01ldGFkYXRhUmVhZGVyLmdldFByb3BlcnR5VHlwZU1hcCgpO1xuICAgICAgICBmb3IgKGNvbnN0IFtwcm9wZXJ0eU5hbWUsIHByb3BlcnR5VHlwZV0gb2YgcHJvcGVydGllcykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eVR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BlcnR5RmFjdG9yaWVzW3Byb3BlcnR5TmFtZV0gPSBuZXcgU2VydmljZUZhY3RvcnlEZWYoKGNvbnRhaW5lciwgb3duZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IGNvbnRhaW5lci5nZXRJbnN0YW5jZShwcm9wZXJ0eVR5cGUsIG93bmVyKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLmNvbnRhaW5lci5nZXRGYWN0b3J5KHByb3BlcnR5VHlwZSk7XG4gICAgICAgICAgICBpZiAoZmFjdG9yeSkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvcGVydHlGYWN0b3JpZXNbcHJvcGVydHlOYW1lXSA9IGZhY3Rvcnk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eUNsYXNzTWV0YWRhdGEgPSBnbG9iYWxNZXRhZGF0YVJlYWRlci5nZXRDbGFzc01ldGFkYXRhKHByb3BlcnR5VHlwZSk7XG4gICAgICAgICAgICBpZiAocHJvcGVydHlDbGFzc01ldGFkYXRhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eUZhY3Rvcmllc1twcm9wZXJ0eU5hbWVdID0gU2VydmljZUZhY3RvcnlEZWYuY3JlYXRlRnJvbUNsYXNzTWV0YWRhdGEocHJvcGVydHlDbGFzc01ldGFkYXRhKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5RmFjdG9yeSA9IGdsb2JhbE1ldGFkYXRhUmVhZGVyLmdldENvbXBvbmVudEZhY3RvcnkocHJvcGVydHlUeXBlKTtcbiAgICAgICAgICAgIGlmIChwcm9wZXJ0eUZhY3RvcnkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BlcnR5RmFjdG9yaWVzW3Byb3BlcnR5TmFtZV0gPSBwcm9wZXJ0eUZhY3Rvcnk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYnVpbGQoKSB7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSB0aGlzLmdldENvbnN0cnVjdG9yQXJncygpO1xuICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5jcmVhdGVQcm9wZXJ0aWVzR2V0dGVyQnVpbGRlcigpO1xuICAgICAgICBjb25zdCBpc0NyZWF0aW5nSW5zdEF3YXJlUHJvY2Vzc29yID0gdGhpcy5pbnN0QXdhcmVQcm9jZXNzb3JNYW5hZ2VyLmlzSW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3ModGhpcy5jb21wb25lbnRDbGFzcyk7XG4gICAgICAgIGlmIChpc0NyZWF0aW5nSW5zdEF3YXJlUHJvY2Vzc29yKSB7XG4gICAgICAgICAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyB0aGlzLmNvbXBvbmVudENsYXNzKC4uLmFyZ3MpIGFzIEluc3RhbmNlPFQ+O1xuICAgICAgICAgICAgdGhpcy5saWZlY3ljbGVSZXNvbHZlci5pbnZva2VQcmVJbmplY3RNZXRob2QoaW5zdGFuY2UpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdldHRlciA9IHByb3BlcnRpZXNba2V5XShpbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWZpbmVQcm9wZXJ0eShpbnN0YW5jZSwga2V5LCBnZXR0ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5saWZlY3ljbGVSZXNvbHZlci5pbnZva2VQb3N0SW5qZWN0TWV0aG9kKGluc3RhbmNlKTtcbiAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBpbnN0YW5jZTogdW5kZWZpbmVkIHwgSW5zdGFuY2U8VD4gPSB0aGlzLmluc3RBd2FyZVByb2Nlc3Nvck1hbmFnZXIuYmVmb3JlSW5zdGFudGlhdGlvbih0aGlzLmNvbXBvbmVudENsYXNzLCBhcmdzKTtcbiAgICAgICAgICAgIGlmICghaW5zdGFuY2UpIHtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IG5ldyB0aGlzLmNvbXBvbmVudENsYXNzKC4uLmFyZ3MpIGFzIEluc3RhbmNlPFQ+O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5saWZlY3ljbGVSZXNvbHZlci5pbnZva2VQcmVJbmplY3RNZXRob2QoaW5zdGFuY2UpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdldHRlciA9IHByb3BlcnRpZXNba2V5XShpbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWZpbmVQcm9wZXJ0eShpbnN0YW5jZSwga2V5LCBnZXR0ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5zdGFuY2UgPSB0aGlzLmluc3RBd2FyZVByb2Nlc3Nvck1hbmFnZXIuYWZ0ZXJJbnN0YW50aWF0aW9uKGluc3RhbmNlKTtcbiAgICAgICAgICAgIHRoaXMubGlmZWN5Y2xlUmVzb2x2ZXIuaW52b2tlUG9zdEluamVjdE1ldGhvZChpbnN0YW5jZSk7XG4gICAgICAgICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpdmF0ZSBkZWZpbmVQcm9wZXJ0eTxULCBWPihpbnN0YW5jZTogVCwga2V5OiBzdHJpbmcgfCBzeW1ib2wsIGdldHRlcjogKCkgPT4gVikge1xuICAgICAgICBpZiAodGhpcy5sYXp5TW9kZSkge1xuICAgICAgICAgICAgbGF6eVByb3AoaW5zdGFuY2UsIGtleSwgZ2V0dGVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGluc3RhbmNlW2tleV0gPSBnZXR0ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcml2YXRlIGNyZWF0ZVByb3BlcnRpZXNHZXR0ZXJCdWlsZGVyKCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7fSBhcyBSZWNvcmQ8a2V5b2YgVCwgKGluc3RhbmNlOiBUKSA9PiAoKSA9PiB1bmtub3duPjtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5wcm9wZXJ0eUZhY3Rvcmllcykge1xuICAgICAgICAgICAgY29uc3QgeyBmYWN0b3J5LCBpbmplY3Rpb25zIH0gPSB0aGlzLnByb3BlcnR5RmFjdG9yaWVzW2tleV07XG4gICAgICAgICAgICByZXN1bHRba2V5IGFzIGtleW9mIFRdID0gPFQ+KGluc3RhbmNlOiBUKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm4gPSBmYWN0b3J5KHRoaXMuY29udGFpbmVyLCBpbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyLmludm9rZShmbiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5qZWN0aW9uc1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cbiIsImltcG9ydCAncmVmbGVjdC1tZXRhZGF0YSc7XG5pbXBvcnQgeyBNZXRhZGF0YSB9IGZyb20gJy4uL3R5cGVzL01ldGFkYXRhJztcbmltcG9ydCB7IElkZW50aWZpZXIgfSBmcm9tICcuLi90eXBlcy9JZGVudGlmaWVyJztcbmltcG9ydCB7IEluc3RhbmNlU2NvcGUgfSBmcm9tICcuLi9mb3VuZGF0aW9uL0luc3RhbmNlU2NvcGUnO1xuXG5leHBvcnQgY29uc3QgRlVOQ1RJT05fTUVUQURBVEFfS0VZID0gU3ltYm9sKCdpb2M6ZnVuY3Rpb24tbWV0YWRhdGEnKTtcblxuZXhwb3J0IGludGVyZmFjZSBGdW5jdGlvbk1ldGFkYXRhUmVhZGVyIHtcbiAgICBnZXRQYXJhbWV0ZXJzKCk6IElkZW50aWZpZXJbXTtcbiAgICBpc0ZhY3RvcnkoKTogYm9vbGVhbjtcbiAgICBnZXRTY29wZSgpOiBJbnN0YW5jZVNjb3BlIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25NZXRhZGF0YSBpbXBsZW1lbnRzIE1ldGFkYXRhPEZ1bmN0aW9uTWV0YWRhdGFSZWFkZXIsIEZ1bmN0aW9uPiB7XG4gICAgc3RhdGljIGdldFJlZmxlY3RLZXkoKSB7XG4gICAgICAgIHJldHVybiBGVU5DVElPTl9NRVRBREFUQV9LRVk7XG4gICAgfVxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFyYW1ldGVyczogSWRlbnRpZmllcltdID0gW107XG4gICAgcHJpdmF0ZSBzY29wZT86IEluc3RhbmNlU2NvcGU7XG4gICAgcHJpdmF0ZSBpc0ZhY3Rvcnk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBzZXRQYXJhbWV0ZXJUeXBlKGluZGV4OiBudW1iZXIsIHN5bWJvbDogSWRlbnRpZmllcikge1xuICAgICAgICB0aGlzLnBhcmFtZXRlcnNbaW5kZXhdID0gc3ltYm9sO1xuICAgIH1cbiAgICBzZXRTY29wZShzY29wZTogSW5zdGFuY2VTY29wZSkge1xuICAgICAgICB0aGlzLnNjb3BlID0gc2NvcGU7XG4gICAgfVxuICAgIHNldElzRmFjdG9yeShpc0ZhY3Rvcnk6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5pc0ZhY3RvcnkgPSBpc0ZhY3Rvcnk7XG4gICAgfVxuICAgIGluaXQoKSB7XG4gICAgICAgIC8vIFBBU1M7XG4gICAgfVxuICAgIHJlYWRlcigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldFBhcmFtZXRlcnM6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzLnNsaWNlKDApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzRmFjdG9yeTogKCkgPT4gdGhpcy5pc0ZhY3RvcnksXG4gICAgICAgICAgICBnZXRTY29wZTogKCkgPT4gdGhpcy5zY29wZVxuICAgICAgICB9O1xuICAgIH1cbn1cbiIsImxldCBpbnN0YW5jZVNlcmlhbE5vID0gLTE7XG5cbmV4cG9ydCBjbGFzcyBDb21wb25lbnRJbnN0YW5jZVdyYXBwZXIge1xuICAgIHB1YmxpYyByZWFkb25seSBzZXJpYWxObyA9ICsraW5zdGFuY2VTZXJpYWxObztcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBpbnN0YW5jZTogdW5rbm93bikge31cblxuICAgIHB1YmxpYyBjb21wYXJlVG8ob3RoZXI6IENvbXBvbmVudEluc3RhbmNlV3JhcHBlcik6IC0xIHwgMCB8IDEge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXJpYWxObyA+IG90aGVyLnNlcmlhbE5vID8gLTEgOiB0aGlzLnNlcmlhbE5vIDwgb3RoZXIuc2VyaWFsTm8gPyAxIDogMDtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBNZXRhZGF0YUZhY3RvcnkgfSBmcm9tICcuLi9tZXRhZGF0YS9NZXRhZGF0YUZhY3RvcnknO1xuaW1wb3J0IHsgQ2xhc3NNZXRhZGF0YSB9IGZyb20gJy4uL21ldGFkYXRhL0NsYXNzTWV0YWRhdGEnO1xuaW1wb3J0IHsgTGlmZWN5Y2xlIH0gZnJvbSAnLi4vZm91bmRhdGlvbi9MaWZlY3ljbGUnO1xuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlUHJlRGVzdHJveShpbnN0YW5jZTogdW5rbm93bikge1xuICAgIGNvbnN0IGNsYXp6ID0gaW5zdGFuY2U/LmNvbnN0cnVjdG9yO1xuICAgIGlmICghY2xhenopIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YShjbGF6eiwgQ2xhc3NNZXRhZGF0YSk7XG4gICAgY29uc3QgcHJlRGVzdHJveU1ldGhvZHMgPSBtZXRhZGF0YS5nZXRNZXRob2RzKExpZmVjeWNsZS5QUkVfREVTVFJPWSk7XG4gICAgcHJlRGVzdHJveU1ldGhvZHMuZm9yRWFjaChtZXRob2ROYW1lID0+IHtcbiAgICAgICAgY29uc3QgbWV0aG9kID0gY2xhenoucHJvdG90eXBlW21ldGhvZE5hbWVdO1xuICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgbWV0aG9kLmFwcGx5KGluc3RhbmNlKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuIiwiaW1wb3J0IHsgR2V0SW5zdGFuY2VPcHRpb25zLCBJbnN0YW5jZVJlc29sdXRpb24sIFNhdmVJbnN0YW5jZU9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9JbnN0YW5jZVJlc29sdXRpb24nO1xuaW1wb3J0IHsgSWRlbnRpZmllciB9IGZyb20gJy4uL3R5cGVzL0lkZW50aWZpZXInO1xuaW1wb3J0IHsgQ29tcG9uZW50SW5zdGFuY2VXcmFwcGVyIH0gZnJvbSAnLi4vZm91bmRhdGlvbi9Db21wb25lbnRJbnN0YW5jZVdyYXBwZXInO1xuaW1wb3J0IHsgaW52b2tlUHJlRGVzdHJveSB9IGZyb20gJy4uL2NvbW1vbi9pbnZva2VQcmVEZXN0cm95JztcblxuZXhwb3J0IGNsYXNzIFNpbmdsZXRvbkluc3RhbmNlUmVzb2x1dGlvbiBpbXBsZW1lbnRzIEluc3RhbmNlUmVzb2x1dGlvbiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBJTlNUQU5DRV9NQVAgPSBuZXcgTWFwPElkZW50aWZpZXIsIENvbXBvbmVudEluc3RhbmNlV3JhcHBlcj4oKTtcbiAgICBnZXRJbnN0YW5jZTxULCBPPihvcHRpb25zOiBHZXRJbnN0YW5jZU9wdGlvbnM8VCwgTz4pOiBUIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuSU5TVEFOQ0VfTUFQLmdldChvcHRpb25zLmlkZW50aWZpZXIpPy5pbnN0YW5jZSBhcyBUO1xuICAgIH1cblxuICAgIHNhdmVJbnN0YW5jZTxULCBPPihvcHRpb25zOiBTYXZlSW5zdGFuY2VPcHRpb25zPFQsIE8+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuSU5TVEFOQ0VfTUFQLnNldChvcHRpb25zLmlkZW50aWZpZXIsIG5ldyBDb21wb25lbnRJbnN0YW5jZVdyYXBwZXIob3B0aW9ucy5pbnN0YW5jZSkpO1xuICAgIH1cblxuICAgIHNob3VsZEdlbmVyYXRlPFQsIE8+KG9wdGlvbnM6IEdldEluc3RhbmNlT3B0aW9uczxULCBPPik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuSU5TVEFOQ0VfTUFQLmhhcyhvcHRpb25zLmlkZW50aWZpZXIpO1xuICAgIH1cbiAgICBkZXN0cm95KCkge1xuICAgICAgICBjb25zdCBpbnN0YW5jZVdyYXBwZXJzID0gQXJyYXkuZnJvbSh0aGlzLklOU1RBTkNFX01BUC52YWx1ZXMoKSk7XG4gICAgICAgIGluc3RhbmNlV3JhcHBlcnMuc29ydCgoYSwgYikgPT4gYS5jb21wYXJlVG8oYikpO1xuICAgICAgICBpbnN0YW5jZVdyYXBwZXJzLmZvckVhY2goaW5zdGFuY2VXcmFwcGVyID0+IHtcbiAgICAgICAgICAgIGludm9rZVByZURlc3Ryb3koaW5zdGFuY2VXcmFwcGVyLmluc3RhbmNlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuSU5TVEFOQ0VfTUFQLmNsZWFyKCk7XG4gICAgfVxufVxuIiwiaW1wb3J0IHsgR2V0SW5zdGFuY2VPcHRpb25zLCBJbnN0YW5jZVJlc29sdXRpb24sIFNhdmVJbnN0YW5jZU9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9JbnN0YW5jZVJlc29sdXRpb24nO1xuaW1wb3J0IHsgU2luZ2xldG9uSW5zdGFuY2VSZXNvbHV0aW9uIH0gZnJvbSAnLi9TaW5nbGV0b25JbnN0YW5jZVJlc29sdXRpb24nO1xuXG5jb25zdCBTSU5HTEVUT05fSU5TVEFOQ0VfU0lOR0xFVE9OID0gbmV3IFNpbmdsZXRvbkluc3RhbmNlUmVzb2x1dGlvbigpO1xuXG5leHBvcnQgY2xhc3MgR2xvYmFsU2hhcmVkSW5zdGFuY2VSZXNvbHV0aW9uIGltcGxlbWVudHMgSW5zdGFuY2VSZXNvbHV0aW9uIHtcbiAgICBnZXRJbnN0YW5jZTxULCBPPihvcHRpb25zOiBHZXRJbnN0YW5jZU9wdGlvbnM8VCwgTz4pOiBUIHtcbiAgICAgICAgcmV0dXJuIFNJTkdMRVRPTl9JTlNUQU5DRV9TSU5HTEVUT04uZ2V0SW5zdGFuY2Uob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgc2F2ZUluc3RhbmNlPFQsIE8+KG9wdGlvbnM6IFNhdmVJbnN0YW5jZU9wdGlvbnM8VCwgTz4pOiB2b2lkIHtcbiAgICAgICAgU0lOR0xFVE9OX0lOU1RBTkNFX1NJTkdMRVRPTi5zYXZlSW5zdGFuY2Uob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgc2hvdWxkR2VuZXJhdGU8VCwgTz4ob3B0aW9uczogR2V0SW5zdGFuY2VPcHRpb25zPFQsIE8+KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBTSU5HTEVUT05fSU5TVEFOQ0VfU0lOR0xFVE9OLnNob3VsZEdlbmVyYXRlKG9wdGlvbnMpO1xuICAgIH1cbiAgICBkZXN0cm95KCkge1xuICAgICAgICAvLyBQQVNTO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IEluc3RhbmNlUmVzb2x1dGlvbiwgU2F2ZUluc3RhbmNlT3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0luc3RhbmNlUmVzb2x1dGlvbic7XG5pbXBvcnQgeyBpbnZva2VQcmVEZXN0cm95IH0gZnJvbSAnLi4vY29tbW9uL2ludm9rZVByZURlc3Ryb3knO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNpZW50SW5zdGFuY2VSZXNvbHV0aW9uIGltcGxlbWVudHMgSW5zdGFuY2VSZXNvbHV0aW9uIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluc3RhbmNlcyA9IG5ldyBTZXQ8dW5rbm93bj4oKTtcbiAgICBzaG91bGRHZW5lcmF0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZ2V0SW5zdGFuY2U8VD4oKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzYXZlSW5zdGFuY2U8VCwgTz4ob3B0aW9uczogU2F2ZUluc3RhbmNlT3B0aW9uczxULCBPPik6IHZvaWQge1xuICAgICAgICB0aGlzLmluc3RhbmNlcy5hZGQob3B0aW9ucy5pbnN0YW5jZSk7XG4gICAgfVxuICAgIGRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuaW5zdGFuY2VzLmZvckVhY2goaXQgPT4ge1xuICAgICAgICAgICAgaWYgKCFpdCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGludm9rZVByZURlc3Ryb3koaXQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pbnN0YW5jZXMuY2xlYXIoKTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBFdmFsdWF0b3IgfSBmcm9tICcuLi90eXBlcy9FdmFsdWF0b3InO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnLi4vZm91bmRhdGlvbi9BcHBsaWNhdGlvbkNvbnRleHQnO1xuaW1wb3J0IHsgSlNPTkRhdGEgfSBmcm9tICcuLi90eXBlcy9KU09ORGF0YSc7XG5cbmV4cG9ydCBjbGFzcyBKU09ORGF0YUV2YWx1YXRvciBpbXBsZW1lbnRzIEV2YWx1YXRvciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuYW1lc3BhY2VEYXRhTWFwID0gbmV3IE1hcDxzdHJpbmcsIEpTT05EYXRhPigpO1xuICAgIGV2YWw8VD4oY29udGV4dDogQXBwbGljYXRpb25Db250ZXh0LCBleHByZXNzaW9uOiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgY29sb25JbmRleCA9IGV4cHJlc3Npb24uaW5kZXhPZignOicpO1xuICAgICAgICBpZiAoY29sb25JbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW5jb3JyZWN0IGV4cHJlc3Npb24sIG5hbWVzcGFjZSBub3Qgc3BlY2lmaWVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmFtZXNwYWNlID0gZXhwcmVzc2lvbi5zdWJzdHJpbmcoMCwgY29sb25JbmRleCk7XG4gICAgICAgIGNvbnN0IGV4cCA9IGV4cHJlc3Npb24uc3Vic3RyaW5nKGNvbG9uSW5kZXggKyAxKTtcbiAgICAgICAgaWYgKCF0aGlzLm5hbWVzcGFjZURhdGFNYXAuaGFzKG5hbWVzcGFjZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5jb3JyZWN0IGV4cHJlc3Npb246IG5hbWVzcGFjZSBub3QgcmVjb3JkZWQ6IFwiJHtuYW1lc3BhY2V9XCJgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5uYW1lc3BhY2VEYXRhTWFwLmdldChuYW1lc3BhY2UpIGFzIEpTT05EYXRhO1xuICAgICAgICByZXR1cm4gcnVuRXhwcmVzc2lvbihleHAsIGRhdGEgYXMgT2JqZWN0KTtcbiAgICB9XG4gICAgcmVjb3JkRGF0YShuYW1lc3BhY2U6IHN0cmluZywgZGF0YTogSlNPTkRhdGEpIHtcbiAgICAgICAgdGhpcy5uYW1lc3BhY2VEYXRhTWFwLnNldChuYW1lc3BhY2UsIGRhdGEpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gcnVuRXhwcmVzc2lvbihleHByZXNzaW9uOiBzdHJpbmcsIHJvb3RDb250ZXh0OiBPYmplY3QpIHtcbiAgICBjb25zdCBmbiA9IGNvbXBpbGVFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xuICAgIHJldHVybiBmbihyb290Q29udGV4dCk7XG59XG5cbmZ1bmN0aW9uIGNvbXBpbGVFeHByZXNzaW9uKGV4cHJlc3Npb246IHN0cmluZykge1xuICAgIGlmIChleHByZXNzaW9uLmluZGV4T2YoJywnKSA+IC0xKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5jb3JyZWN0IGV4cHJlc3Npb24gc3ludGF4LCBUaGUgJywnIGlzIG5vdCBhbGxvd2VkIGluIGV4cHJlc3Npb246IFwiJHtleHByZXNzaW9ufVwiYCk7XG4gICAgfVxuICAgIGlmIChleHByZXNzaW9uLmxlbmd0aCA+IDEyMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgSW5jb3JyZWN0IGV4cHJlc3Npb24gc3ludGF4LCBleHByZXNzaW9uIGxlbmd0aCBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIDEyMCwgYnV0IGFjdHVhbDogJHtleHByZXNzaW9uLmxlbmd0aH1gXG4gICAgICAgICk7XG4gICAgfVxuICAgIGlmICgvXFwoLio/XFwpLy50ZXN0KGV4cHJlc3Npb24pKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5jb3JyZWN0IGV4cHJlc3Npb24gc3ludGF4LCBwYXJlbnRoZXNlcyBhcmUgbm90IGFsbG93ZWQgaW4gZXhwcmVzc2lvbjogXCIke2V4cHJlc3Npb259XCJgKTtcbiAgICB9XG4gICAgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb24udHJpbSgpO1xuICAgIGlmIChleHByZXNzaW9uID09PSAnJykge1xuICAgICAgICByZXR1cm4gKHJvb3Q6IE9iamVjdCkgPT4gcm9vdDtcbiAgICB9XG5cbiAgICBjb25zdCByb290VmFyTmFtZSA9IHZhck5hbWUoJ2NvbnRleHQnKTtcbiAgICByZXR1cm4gbmV3IEZ1bmN0aW9uKFxuICAgICAgICByb290VmFyTmFtZSxcbiAgICAgICAgYFxuICAgICAgICBcInVzZSBzdHJpY3RcIjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiAke3Jvb3RWYXJOYW1lfS4ke2V4cHJlc3Npb259O1xuICAgICAgICB9IGNhdGNoKGVycm9yKSB7IHRocm93IGVycm9yIH1cbiAgICBgXG4gICAgKTtcbn1cbmxldCBWQVJfU0VRVUVOQ0UgPSBEYXRlLm5vdygpO1xuZnVuY3Rpb24gdmFyTmFtZShwcmVmaXg6IHN0cmluZykge1xuICAgIHJldHVybiBwcmVmaXggKyAnJyArIChWQVJfU0VRVUVOQ0UrKykudG9TdHJpbmcoMTYpO1xufVxuIiwiaW1wb3J0IHsgRXZhbHVhdG9yIH0gZnJvbSAnLi4vdHlwZXMvRXZhbHVhdG9yJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gJy4uL2ZvdW5kYXRpb24vQXBwbGljYXRpb25Db250ZXh0JztcblxuZXhwb3J0IGNsYXNzIEVudmlyb25tZW50RXZhbHVhdG9yIGltcGxlbWVudHMgRXZhbHVhdG9yIHtcbiAgICBldmFsPFQ+KGNvbnRleHQ6IEFwcGxpY2F0aW9uQ29udGV4dCwgZXhwcmVzc2lvbjogc3RyaW5nKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzLmVudltleHByZXNzaW9uXSBhcyBUIHwgdW5kZWZpbmVkO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IEV2YWx1YXRvciB9IGZyb20gJy4uL3R5cGVzL0V2YWx1YXRvcic7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkNvbnRleHQgfSBmcm9tICcuLi9mb3VuZGF0aW9uL0FwcGxpY2F0aW9uQ29udGV4dCc7XG5cbmV4cG9ydCBjbGFzcyBBcmd2RXZhbHVhdG9yIGltcGxlbWVudHMgRXZhbHVhdG9yIHtcbiAgICBldmFsPFQsIEEgPSBzdHJpbmdbXT4oY29udGV4dDogQXBwbGljYXRpb25Db250ZXh0LCBleHByZXNzaW9uOiBzdHJpbmcsIGFyZ3M/OiBBKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGFyZ3YgPSBhcmdzIHx8IHByb2Nlc3MuYXJndjtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXNcbiAgICAgICAgY29uc3QgbWluaW1pc3QgPSByZXF1aXJlKCdtaW5pbWlzdCcpO1xuICAgICAgICBjb25zdCBtYXAgPSBtaW5pbWlzdChhcmd2KTtcbiAgICAgICAgcmV0dXJuIG1hcFtleHByZXNzaW9uXTtcbiAgICB9XG59XG4iLCJleHBvcnQgZW51bSBBZHZpY2Uge1xuICAgIEJlZm9yZSxcbiAgICBBZnRlcixcbiAgICBBcm91bmQsXG4gICAgQWZ0ZXJSZXR1cm4sXG4gICAgVGhyb3duLFxuICAgIEZpbmFsbHlcbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEFkdmljZSB9IGZyb20gJy4vQWR2aWNlJztcblxudHlwZSBCZWZvcmVIb29rID0gKGFyZ3M6IGFueVtdKSA9PiB2b2lkO1xudHlwZSBBZnRlckhvb2sgPSAoYXJnczogYW55W10pID0+IHZvaWQ7XG50eXBlIFRocm93bkhvb2sgPSAocmVhc29uOiBhbnksIGFyZ3M6IGFueVtdKSA9PiB2b2lkO1xudHlwZSBGaW5hbGx5SG9vayA9IChhcmdzOiBhbnlbXSkgPT4gdm9pZDtcbnR5cGUgQWZ0ZXJSZXR1cm5Ib29rID0gKHJldHVyblZhbHVlOiBhbnksIGFyZ3M6IGFueVtdKSA9PiBhbnk7XG50eXBlIEFyb3VuZEhvb2sgPSAodGhpczogYW55LCBvcmlnaW5mbjogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkLCBhcmdzOiBhbnlbXSkgPT4gdm9pZDtcblxuZXhwb3J0IGNsYXNzIEFzcGVjdFV0aWxzIHtcbiAgICBwcml2YXRlIGJlZm9yZUhvb2tzOiBBcnJheTxCZWZvcmVIb29rPiA9IFtdO1xuICAgIHByaXZhdGUgYWZ0ZXJIb29rczogQXJyYXk8QWZ0ZXJIb29rPiA9IFtdO1xuICAgIHByaXZhdGUgdGhyb3duSG9va3M6IEFycmF5PFRocm93bkhvb2s+ID0gW107XG4gICAgcHJpdmF0ZSBmaW5hbGx5SG9va3M6IEFycmF5PEZpbmFsbHlIb29rPiA9IFtdO1xuICAgIHByaXZhdGUgYWZ0ZXJSZXR1cm5Ib29rczogQXJyYXk8QWZ0ZXJSZXR1cm5Ib29rPiA9IFtdO1xuICAgIHByaXZhdGUgYXJvdW5kSG9va3M6IEFycmF5PEFyb3VuZEhvb2s+ID0gW107XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBmbjogKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkpIHt9XG4gICAgYXBwZW5kKGFkdmljZTogQWR2aWNlLkJlZm9yZSwgaG9vazogQmVmb3JlSG9vayk6IHZvaWQ7XG4gICAgYXBwZW5kKGFkdmljZTogQWR2aWNlLkFmdGVyLCBob29rOiBBZnRlckhvb2spOiB2b2lkO1xuICAgIGFwcGVuZChhZHZpY2U6IEFkdmljZS5UaHJvd24sIGhvb2s6IFRocm93bkhvb2spOiB2b2lkO1xuICAgIGFwcGVuZChhZHZpY2U6IEFkdmljZS5GaW5hbGx5LCBob29rOiBGaW5hbGx5SG9vayk6IHZvaWQ7XG4gICAgYXBwZW5kKGFkdmljZTogQWR2aWNlLkFmdGVyUmV0dXJuLCBob29rOiBBZnRlclJldHVybkhvb2spOiB2b2lkO1xuICAgIGFwcGVuZChhZHZpY2U6IEFkdmljZS5Bcm91bmQsIGhvb2s6IEFyb3VuZEhvb2spOiB2b2lkO1xuICAgIGFwcGVuZChhZHZpY2U6IEFkdmljZSwgaG9vazogRnVuY3Rpb24pIHtcbiAgICAgICAgbGV0IGhvb2tzQXJyYXk6IEZ1bmN0aW9uW10gfCB1bmRlZmluZWQ7XG4gICAgICAgIHN3aXRjaCAoYWR2aWNlKSB7XG4gICAgICAgICAgICBjYXNlIEFkdmljZS5CZWZvcmU6XG4gICAgICAgICAgICAgICAgaG9va3NBcnJheSA9IHRoaXMuYmVmb3JlSG9va3M7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEFkdmljZS5BZnRlcjpcbiAgICAgICAgICAgICAgICBob29rc0FycmF5ID0gdGhpcy5hZnRlckhvb2tzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBBZHZpY2UuVGhyb3duOlxuICAgICAgICAgICAgICAgIGhvb2tzQXJyYXkgPSB0aGlzLnRocm93bkhvb2tzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBBZHZpY2UuRmluYWxseTpcbiAgICAgICAgICAgICAgICBob29rc0FycmF5ID0gdGhpcy5maW5hbGx5SG9va3M7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEFkdmljZS5BZnRlclJldHVybjpcbiAgICAgICAgICAgICAgICBob29rc0FycmF5ID0gdGhpcy5hZnRlclJldHVybkhvb2tzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBBZHZpY2UuQXJvdW5kOlxuICAgICAgICAgICAgICAgIGhvb2tzQXJyYXkgPSB0aGlzLmFyb3VuZEhvb2tzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChob29rc0FycmF5KSB7XG4gICAgICAgICAgICBob29rc0FycmF5LnB1c2goaG9vayk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZXh0cmFjdCgpIHtcbiAgICAgICAgY29uc3QgeyBhcm91bmRIb29rcywgYmVmb3JlSG9va3MsIGFmdGVySG9va3MsIGFmdGVyUmV0dXJuSG9va3MsIGZpbmFsbHlIb29rcywgdGhyb3duSG9va3MgfSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGZuID0gYXJvdW5kSG9va3MucmVkdWNlUmlnaHQoKHByZXYsIG5leHQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXh0LmNhbGwodGhpcywgcHJldiwgYXJncyk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LCB0aGlzLmZuKSBhcyB0eXBlb2YgdGhpcy5mbjtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICAgICAgICBiZWZvcmVIb29rcy5mb3JFYWNoKGhvb2sgPT4ge1xuICAgICAgICAgICAgICAgIGhvb2suY2FsbCh0aGlzLCBhcmdzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgaW52b2tlID0gKG9uRXJyb3I6IChyZWFzb246IGFueSkgPT4gdm9pZCwgb25GaW5hbGx5OiAoKSA9PiB2b2lkLCBvbkFmdGVyOiAocmV0dXJuVmFsdWU6IGFueSkgPT4gYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHJldHVyblZhbHVlOiBhbnk7XG4gICAgICAgICAgICAgICAgbGV0IGlzUHJvbWlzZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gZm4uYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXR1cm5WYWx1ZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUHJvbWlzZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlLmNhdGNoKG9uRXJyb3IpLmZpbmFsbHkob25GaW5hbGx5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkZpbmFsbHkoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZS50aGVuKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25BZnRlcih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvbkFmdGVyKHJldHVyblZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIGludm9rZShcbiAgICAgICAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aHJvd25Ib29rcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd25Ib29rcy5mb3JFYWNoKGhvb2sgPT4gaG9vay5jYWxsKHRoaXMsIGVycm9yLCBhcmdzKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBmaW5hbGx5SG9va3MuZm9yRWFjaChob29rID0+IGhvb2suY2FsbCh0aGlzLCBhcmdzKSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGFmdGVySG9va3MuZm9yRWFjaChob29rID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvb2suY2FsbCh0aGlzLCBhcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhZnRlclJldHVybkhvb2tzLnJlZHVjZSgocmV0VmFsLCBob29rKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaG9vay5jYWxsKHRoaXMsIHJldFZhbCwgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgIH0sIHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9O1xuICAgIH1cbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB0eXBlIHsgQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnLi4vZm91bmRhdGlvbi9BcHBsaWNhdGlvbkNvbnRleHQnO1xuaW1wb3J0IHsgQWR2aWNlIH0gZnJvbSAnLi9BZHZpY2UnO1xuaW1wb3J0IHsgTmV3YWJsZSB9IGZyb20gJy4uL3R5cGVzL05ld2FibGUnO1xuaW1wb3J0IHsgQXNwZWN0LCBKb2luUG9pbnQsIFByb2NlZWRpbmdKb2luUG9pbnQgfSBmcm9tICcuL0FzcGVjdCc7XG5pbXBvcnQgeyBBc3BlY3RVdGlscyB9IGZyb20gJy4vQXNwZWN0VXRpbHMnO1xuaW1wb3J0IHsgVXNlQXNwZWN0TWV0YWRhdGFSZWFkZXIgfSBmcm9tICcuL0FPUENsYXNzTWV0YWRhdGEnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXNwZWN0PFQ+KFxuICAgIGFwcEN0eDogQXBwbGljYXRpb25Db250ZXh0LFxuICAgIHRhcmdldDogVCxcbiAgICBtZXRob2ROYW1lOiBzdHJpbmcgfCBzeW1ib2wsXG4gICAgbWV0aG9kRnVuYzogRnVuY3Rpb24sXG4gICAgbWV0YWRhdGE6IFVzZUFzcGVjdE1ldGFkYXRhUmVhZGVyXG4pIHtcbiAgICBjb25zdCBjcmVhdGVBc3BlY3RDdHggPSAoYWR2aWNlOiBBZHZpY2UsIGFyZ3M6IGFueVtdLCByZXR1cm5WYWx1ZTogYW55ID0gbnVsbCwgZXJyb3I6IGFueSA9IG51bGwpOiBKb2luUG9pbnQgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgICAgIGFyZ3VtZW50czogYXJncyxcbiAgICAgICAgICAgIHJldHVyblZhbHVlLFxuICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICBhZHZpY2VcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGNvbnN0IGFzcGVjdFV0aWxzID0gbmV3IEFzcGVjdFV0aWxzKG1ldGhvZEZ1bmMgYXMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkpO1xuICAgIGNvbnN0IENsYXNzVG9JbnN0YW5jZSA9IChBc3BlY3RDbGFzczogTmV3YWJsZTxBc3BlY3Q+KSA9PiBhcHBDdHguZ2V0SW5zdGFuY2UoQXNwZWN0Q2xhc3MpO1xuICAgIGNvbnN0IGJlZm9yZUFkdmljZUFzcGVjdHMgPSBtZXRhZGF0YS5nZXRBc3BlY3RzT2YobWV0aG9kTmFtZSwgQWR2aWNlLkJlZm9yZSkubWFwKENsYXNzVG9JbnN0YW5jZSk7XG4gICAgY29uc3QgYWZ0ZXJBZHZpY2VBc3BlY3RzID0gbWV0YWRhdGEuZ2V0QXNwZWN0c09mKG1ldGhvZE5hbWUsIEFkdmljZS5BZnRlcikubWFwKENsYXNzVG9JbnN0YW5jZSk7XG4gICAgY29uc3QgdHJ5Q2F0Y2hBZHZpY2VBc3BlY3RzID0gbWV0YWRhdGEuZ2V0QXNwZWN0c09mKG1ldGhvZE5hbWUsIEFkdmljZS5UaHJvd24pLm1hcChDbGFzc1RvSW5zdGFuY2UpO1xuICAgIGNvbnN0IHRyeUZpbmFsbHlBZHZpY2VBc3BlY3RzID0gbWV0YWRhdGEuZ2V0QXNwZWN0c09mKG1ldGhvZE5hbWUsIEFkdmljZS5GaW5hbGx5KS5tYXAoQ2xhc3NUb0luc3RhbmNlKTtcbiAgICBjb25zdCBhZnRlclJldHVybkFkdmljZUFzcGVjdHMgPSBtZXRhZGF0YS5nZXRBc3BlY3RzT2YobWV0aG9kTmFtZSwgQWR2aWNlLkFmdGVyUmV0dXJuKS5tYXAoQ2xhc3NUb0luc3RhbmNlKTtcbiAgICBjb25zdCBhcm91bmRBZHZpY2VBc3BlY3RzID0gbWV0YWRhdGEuZ2V0QXNwZWN0c09mKG1ldGhvZE5hbWUsIEFkdmljZS5Bcm91bmQpLm1hcChDbGFzc1RvSW5zdGFuY2UpO1xuXG4gICAgaWYgKGJlZm9yZUFkdmljZUFzcGVjdHMubGVuZ3RoID4gMCkge1xuICAgICAgICBhc3BlY3RVdGlscy5hcHBlbmQoQWR2aWNlLkJlZm9yZSwgKGFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBqb2luUG9pbnQgPSBjcmVhdGVBc3BlY3RDdHgoQWR2aWNlLkJlZm9yZSwgYXJncyk7XG4gICAgICAgICAgICBiZWZvcmVBZHZpY2VBc3BlY3RzLmZvckVhY2goYXNwZWN0ID0+IHtcbiAgICAgICAgICAgICAgICBhc3BlY3QuZXhlY3V0ZShqb2luUG9pbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoYWZ0ZXJBZHZpY2VBc3BlY3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYXNwZWN0VXRpbHMuYXBwZW5kKEFkdmljZS5BZnRlciwgKGFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBqb2luUG9pbnQgPSBjcmVhdGVBc3BlY3RDdHgoQWR2aWNlLkFmdGVyLCBhcmdzKTtcbiAgICAgICAgICAgIGFmdGVyQWR2aWNlQXNwZWN0cy5mb3JFYWNoKGFzcGVjdCA9PiB7XG4gICAgICAgICAgICAgICAgYXNwZWN0LmV4ZWN1dGUoam9pblBvaW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHRyeUNhdGNoQWR2aWNlQXNwZWN0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFzcGVjdFV0aWxzLmFwcGVuZChBZHZpY2UuVGhyb3duLCAoZXJyb3IsIGFyZ3MpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGpvaW5Qb2ludCA9IGNyZWF0ZUFzcGVjdEN0eChBZHZpY2UuVGhyb3duLCBhcmdzLCBudWxsLCBlcnJvcik7XG4gICAgICAgICAgICB0cnlDYXRjaEFkdmljZUFzcGVjdHMuZm9yRWFjaChhc3BlY3QgPT4ge1xuICAgICAgICAgICAgICAgIGFzcGVjdC5leGVjdXRlKGpvaW5Qb2ludCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRyeUZpbmFsbHlBZHZpY2VBc3BlY3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYXNwZWN0VXRpbHMuYXBwZW5kKEFkdmljZS5GaW5hbGx5LCAoYXJnczogYW55W10pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGpvaW5Qb2ludCA9IGNyZWF0ZUFzcGVjdEN0eChBZHZpY2UuRmluYWxseSwgYXJncyk7XG4gICAgICAgICAgICB0cnlGaW5hbGx5QWR2aWNlQXNwZWN0cy5mb3JFYWNoKGFzcGVjdCA9PiB7XG4gICAgICAgICAgICAgICAgYXNwZWN0LmV4ZWN1dGUoam9pblBvaW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoYWZ0ZXJSZXR1cm5BZHZpY2VBc3BlY3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYXNwZWN0VXRpbHMuYXBwZW5kKEFkdmljZS5BZnRlclJldHVybiwgKHJldHVyblZhbHVlLCBhcmdzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYWZ0ZXJSZXR1cm5BZHZpY2VBc3BlY3RzLnJlZHVjZSgocHJldlJldHVyblZhbHVlLCBhc3BlY3QpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBqb2luUG9pbnQgPSBjcmVhdGVBc3BlY3RDdHgoQWR2aWNlLkFmdGVyUmV0dXJuLCBhcmdzLCByZXR1cm5WYWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFzcGVjdC5leGVjdXRlKGpvaW5Qb2ludCk7XG4gICAgICAgICAgICB9LCByZXR1cm5WYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChhcm91bmRBZHZpY2VBc3BlY3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYXJvdW5kQWR2aWNlQXNwZWN0cy5mb3JFYWNoKGFzcGVjdCA9PiB7XG4gICAgICAgICAgICBhc3BlY3RVdGlscy5hcHBlbmQoQWR2aWNlLkFyb3VuZCwgKG9yaWdpbkZuLCBhcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgam9pblBvaW50ID0gY3JlYXRlQXNwZWN0Q3R4KEFkdmljZS5Bcm91bmQsIGFyZ3MsIG51bGwpIGFzIFByb2NlZWRpbmdKb2luUG9pbnQ7XG4gICAgICAgICAgICAgICAgam9pblBvaW50LnByb2NlZWQgPSAoanBBcmdzID0gYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luRm4oanBBcmdzKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBhc3BlY3QuZXhlY3V0ZShqb2luUG9pbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBhc3BlY3RVdGlscy5leHRyYWN0KCk7XG59XG4iLCJpbXBvcnQgeyBNZXRhZGF0YSwgTWV0YWRhdGFSZWFkZXIgfSBmcm9tICcuLi90eXBlcy9NZXRhZGF0YSc7XG5pbXBvcnQgeyBOZXdhYmxlIH0gZnJvbSAnLi4vdHlwZXMvTmV3YWJsZSc7XG5pbXBvcnQgeyBBc3BlY3QgfSBmcm9tICcuL0FzcGVjdCc7XG5pbXBvcnQgeyBjcmVhdGVEZWZhdWx0VmFsdWVNYXAsIERlZmF1bHRWYWx1ZU1hcCB9IGZyb20gJy4uL2NvbW1vbi9EZWZhdWx0VmFsdWVNYXAnO1xuaW1wb3J0IHsgQWR2aWNlIH0gZnJvbSAnLi9BZHZpY2UnO1xuXG5leHBvcnQgdHlwZSBVc2VBc3BlY3RNYXAgPSBEZWZhdWx0VmFsdWVNYXA8c3RyaW5nIHwgc3ltYm9sLCBEZWZhdWx0VmFsdWVNYXA8QWR2aWNlLCBBcnJheTxOZXdhYmxlPEFzcGVjdD4+Pj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlQXNwZWN0TWV0YWRhdGFSZWFkZXIgZXh0ZW5kcyBNZXRhZGF0YVJlYWRlciB7XG4gICAgZ2V0QXNwZWN0cygpOiBVc2VBc3BlY3RNYXA7XG4gICAgZ2V0QXNwZWN0c09mKG1ldGhvZE5hbWU6IHN0cmluZyB8IHN5bWJvbCwgYWR2aWNlOiBBZHZpY2UpOiBBcnJheTxOZXdhYmxlPEFzcGVjdD4+O1xufVxuZXhwb3J0IGNsYXNzIEFPUENsYXNzTWV0YWRhdGEgaW1wbGVtZW50cyBNZXRhZGF0YTxVc2VBc3BlY3RNZXRhZGF0YVJlYWRlciwgTmV3YWJsZTx1bmtub3duPj4ge1xuICAgIHN0YXRpYyBnZXRSZWZsZWN0S2V5KCkge1xuICAgICAgICByZXR1cm4gJ2FvcDp1c2UtYXNwZWN0LW1ldGFkYXRhJztcbiAgICB9XG4gICAgcHJpdmF0ZSBhc3BlY3RNYXA6IFVzZUFzcGVjdE1hcCA9IGNyZWF0ZURlZmF1bHRWYWx1ZU1hcCgoKSA9PiBjcmVhdGVEZWZhdWx0VmFsdWVNYXAoKCkgPT4gW10pKTtcbiAgICBpbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBJR05PUkVcbiAgICB9XG5cbiAgICBhcHBlbmQobWV0aG9kTmFtZTogc3RyaW5nIHwgc3ltYm9sLCBhZHZpY2U6IEFkdmljZSwgYXNwZWN0czogQXJyYXk8TmV3YWJsZTxBc3BlY3Q+Pikge1xuICAgICAgICBjb25zdCBhZHZpY2VBc3BlY3RNYXAgPSB0aGlzLmFzcGVjdE1hcC5nZXQobWV0aG9kTmFtZSk7XG4gICAgICAgIGNvbnN0IGV4aXRpbmdBc3BlY3RBcnJheSA9IGFkdmljZUFzcGVjdE1hcC5nZXQoYWR2aWNlKTtcbiAgICAgICAgZXhpdGluZ0FzcGVjdEFycmF5LnB1c2goLi4uYXNwZWN0cyk7XG4gICAgfVxuXG4gICAgcmVhZGVyKCk6IFVzZUFzcGVjdE1ldGFkYXRhUmVhZGVyIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldEFzcGVjdHM6ICgpOiBVc2VBc3BlY3RNYXAgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzcGVjdE1hcDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRBc3BlY3RzT2Y6IChtZXRob2ROYW1lOiBzdHJpbmcgfCBzeW1ib2wsIGFkdmljZTogQWR2aWNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNwZWN0TWFwLmdldChtZXRob2ROYW1lKS5nZXQoYWR2aWNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBQYXJ0aWFsSW5zdEF3YXJlUHJvY2Vzc29yIH0gZnJvbSAnLi4vdHlwZXMvSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yJztcbmltcG9ydCB7IE1ldGFkYXRhRmFjdG9yeSB9IGZyb20gJy4uL21ldGFkYXRhL01ldGFkYXRhRmFjdG9yeSc7XG5pbXBvcnQgdHlwZSB7IEFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gJy4uL2ZvdW5kYXRpb24vQXBwbGljYXRpb25Db250ZXh0JztcbmltcG9ydCB7IGNyZWF0ZUFzcGVjdCB9IGZyb20gJy4vY3JlYXRlQXNwZWN0JztcbmltcG9ydCB7IEFPUENsYXNzTWV0YWRhdGEgfSBmcm9tICcuL0FPUENsYXNzTWV0YWRhdGEnO1xuaW1wb3J0IHsgTmV3YWJsZSB9IGZyb20gJy4uL3R5cGVzL05ld2FibGUnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQU9QSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yIGltcGxlbWVudHMgUGFydGlhbEluc3RBd2FyZVByb2Nlc3NvciB7XG4gICAgc3RhdGljIGNyZWF0ZShhcHBDdHg6IEFwcGxpY2F0aW9uQ29udGV4dCk6IE5ld2FibGU8QU9QSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yPiB7XG4gICAgICAgIHJldHVybiBjbGFzcyBleHRlbmRzIEFPUEluc3RhbnRpYXRpb25Bd2FyZVByb2Nlc3NvciB7XG4gICAgICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwQ3R4OiBBcHBsaWNhdGlvbkNvbnRleHQgPSBhcHBDdHg7XG4gICAgICAgIH07XG4gICAgfVxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSBhcHBDdHg6IEFwcGxpY2F0aW9uQ29udGV4dDtcbiAgICBhZnRlckluc3RhbnRpYXRpb248VCBleHRlbmRzIG9iamVjdD4oaW5zdGFuY2U6IFQpOiBUIHtcbiAgICAgICAgY29uc3QgY2xhenogPSBpbnN0YW5jZS5jb25zdHJ1Y3RvcjtcblxuICAgICAgICBjb25zdCB1c2VBc3BlY3RNZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YShjbGF6eiwgQU9QQ2xhc3NNZXRhZGF0YSk7XG4gICAgICAgIGNvbnN0IHVzZUFzcGVjdE1ldGFkYXRhUmVhZGVyID0gdXNlQXNwZWN0TWV0YWRhdGEucmVhZGVyKCk7XG4gICAgICAgIGNvbnN0IHVzZUFzcGVjdHNNYXAgPSB1c2VBc3BlY3RNZXRhZGF0YVJlYWRlci5nZXRBc3BlY3RzKCk7XG4gICAgICAgIGlmICh1c2VBc3BlY3RzTWFwLnNpemUgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFzcGVjdFN0b3JlTWFwID0gbmV3IFdlYWtNYXA8b2JqZWN0LCBNYXA8c3RyaW5nIHwgc3ltYm9sLCBGdW5jdGlvbj4+KCk7XG4gICAgICAgIGFzcGVjdFN0b3JlTWFwLnNldChpbnN0YW5jZSwgbmV3IE1hcDxzdHJpbmcgfCBzeW1ib2wsIEZ1bmN0aW9uPigpKTtcblxuICAgICAgICBjb25zdCBwcm94eVJlc3VsdCA9IG5ldyBQcm94eShpbnN0YW5jZSwge1xuICAgICAgICAgICAgZ2V0OiAodGFyZ2V0LCBwcm9wKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luVmFsdWUgPSAodGFyZ2V0IGFzIFJlY29yZDxzdHJpbmcgfCBzeW1ib2wsIHVua25vd24+KVtwcm9wXTtcbiAgICAgICAgICAgICAgICBpZiAocHJvcCBpbiB0YXJnZXQgJiYgdHlwZW9mIG9yaWdpblZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFzcGVjdE1hcCA9IGFzcGVjdFN0b3JlTWFwLmdldChpbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghYXNwZWN0TWFwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGFzcGVjdE1hcC5oYXMocHJvcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhc3BlY3RNYXAuZ2V0KHByb3ApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFzcGVjdEZuID0gY3JlYXRlQXNwZWN0KHRoaXMuYXBwQ3R4LCB0YXJnZXQsIHByb3AsIG9yaWdpblZhbHVlLCB1c2VBc3BlY3RNZXRhZGF0YVJlYWRlcik7XG4gICAgICAgICAgICAgICAgICAgIGFzcGVjdE1hcC5zZXQocHJvcCwgYXNwZWN0Rm4pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXNwZWN0Rm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5WYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwcm94eVJlc3VsdDtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBOZXdhYmxlIH0gZnJvbSAnLi4vdHlwZXMvTmV3YWJsZSc7XG5pbXBvcnQgeyBJbnN0YW50aWF0aW9uQXdhcmVQcm9jZXNzb3IsIFBhcnRpYWxJbnN0QXdhcmVQcm9jZXNzb3IgfSBmcm9tICcuLi90eXBlcy9JbnN0YW50aWF0aW9uQXdhcmVQcm9jZXNzb3InO1xuaW1wb3J0IHsgbGF6eU1lbWJlciB9IGZyb20gJ0B2Z2VyYm90L2xhenknO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnLi9BcHBsaWNhdGlvbkNvbnRleHQnO1xuaW1wb3J0IHsgSW5zdGFuY2UgfSBmcm9tICcuLi90eXBlcy9JbnN0YW5jZSc7XG5pbXBvcnQgeyBHbG9iYWxNZXRhZGF0YSB9IGZyb20gJy4uL21ldGFkYXRhL0dsb2JhbE1ldGFkYXRhJztcblxuZXhwb3J0IGNsYXNzIEluc3RhbnRpYXRpb25Bd2FyZVByb2Nlc3Nvck1hbmFnZXIge1xuICAgIHByaXZhdGUgaW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlczogU2V0PE5ld2FibGU8UGFydGlhbEluc3RBd2FyZVByb2Nlc3Nvcj4+ID0gbmV3IFNldCgpO1xuICAgIEBsYXp5TWVtYmVyPEluc3RhbnRpYXRpb25Bd2FyZVByb2Nlc3Nvck1hbmFnZXIsIGtleW9mIEluc3RhbnRpYXRpb25Bd2FyZVByb2Nlc3Nvck1hbmFnZXIsIFBhcnRpYWxJbnN0QXdhcmVQcm9jZXNzb3JbXT4oe1xuICAgICAgICBldmFsdWF0ZTogaW5zdGFuY2UgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ2xvYmFsSW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcyA9IEdsb2JhbE1ldGFkYXRhLmdldEluc3RhbmNlKCkucmVhZGVyKCkuZ2V0SW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcygpO1xuICAgICAgICAgICAgY29uc3QgaW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcyA9IGdsb2JhbEluc3RBd2FyZVByb2Nlc3NvckNsYXNzZXMuY29uY2F0KFxuICAgICAgICAgICAgICAgIEFycmF5LmZyb20oaW5zdGFuY2UuaW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gaW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3Nlcy5tYXAoaXQgPT4gaW5zdGFuY2UuY29udGFpbmVyLmdldEluc3RhbmNlPFBhcnRpYWxJbnN0QXdhcmVQcm9jZXNzb3IsIHZvaWQ+KGl0KSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlc2V0Qnk6IFtcbiAgICAgICAgICAgIGluc3RhbmNlID0+IGluc3RhbmNlLmluc3RBd2FyZVByb2Nlc3NvckNsYXNzZXMuc2l6ZSxcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBnbG9iYWxJbnN0QXdhcmVQcm9jZXNzb3JDbGFzc2VzID0gR2xvYmFsTWV0YWRhdGEuZ2V0SW5zdGFuY2UoKS5yZWFkZXIoKS5nZXRJbnN0QXdhcmVQcm9jZXNzb3JDbGFzc2VzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdsb2JhbEluc3RBd2FyZVByb2Nlc3NvckNsYXNzZXMubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICBdXG4gICAgfSlcbiAgICBwcml2YXRlIGluc3RBd2FyZVByb2Nlc3Nvckluc3RhbmNlcyE6IEFycmF5PFBhcnRpYWxJbnN0QXdhcmVQcm9jZXNzb3I+O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjb250YWluZXI6IEFwcGxpY2F0aW9uQ29udGV4dCkge31cbiAgICBhcHBlbmRJbnN0QXdhcmVQcm9jZXNzb3JDbGFzcyhpbnN0QXdhcmVQcm9jZXNzb3JDbGFzczogTmV3YWJsZTxQYXJ0aWFsSW5zdEF3YXJlUHJvY2Vzc29yPikge1xuICAgICAgICB0aGlzLmluc3RBd2FyZVByb2Nlc3NvckNsYXNzZXMuYWRkKGluc3RBd2FyZVByb2Nlc3NvckNsYXNzKTtcbiAgICB9XG4gICAgYXBwZW5kSW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcyhcbiAgICAgICAgaW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlczogU2V0PE5ld2FibGU8UGFydGlhbEluc3RBd2FyZVByb2Nlc3Nvcj4+IHwgQXJyYXk8TmV3YWJsZTxQYXJ0aWFsSW5zdEF3YXJlUHJvY2Vzc29yPj5cbiAgICApIHtcbiAgICAgICAgaW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3Nlcy5mb3JFYWNoKGl0ID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3Nlcy5hZGQoaXQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYmVmb3JlSW5zdGFudGlhdGlvbjxUPihjb21wb25lbnRDbGFzczogTmV3YWJsZTxUPiwgYXJnczogdW5rbm93bltdKSB7XG4gICAgICAgIGNvbnN0IGluc3RBd2FyZVByb2Nlc3NvcnMgPSB0aGlzLmluc3RBd2FyZVByb2Nlc3Nvckluc3RhbmNlcztcbiAgICAgICAgbGV0IGluc3RhbmNlOiB1bmRlZmluZWQgfCBJbnN0YW5jZTxUPjtcbiAgICAgICAgaW5zdEF3YXJlUHJvY2Vzc29ycy5zb21lKHByb2Nlc3NvciA9PiB7XG4gICAgICAgICAgICBpZiAoIXByb2Nlc3Nvci5iZWZvcmVJbnN0YW50aWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5zdGFuY2UgPSBwcm9jZXNzb3IuYmVmb3JlSW5zdGFudGlhdGlvbjxUPihjb21wb25lbnRDbGFzcywgYXJncykgYXMgSW5zdGFuY2U8VD47XG4gICAgICAgICAgICByZXR1cm4gISFpbnN0YW5jZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICB9XG4gICAgYWZ0ZXJJbnN0YW50aWF0aW9uPFQ+KGluc3RhbmNlOiBJbnN0YW5jZTxUPikge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnN0QXdhcmVQcm9jZXNzb3JJbnN0YW5jZXMucmVkdWNlKChpbnN0YW5jZSwgcHJvY2Vzc29yKSA9PiB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzc29yLmFmdGVySW5zdGFudGlhdGlvbikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHByb2Nlc3Nvci5hZnRlckluc3RhbnRpYXRpb24oaW5zdGFuY2UpO1xuICAgICAgICAgICAgICAgIGlmICghIXJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIEluc3RhbmNlPFQ+O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICAgICAgfSwgaW5zdGFuY2UpO1xuICAgIH1cbiAgICBpc0luc3RBd2FyZVByb2Nlc3NvckNsYXNzKGNsczogTmV3YWJsZTx1bmtub3duPikge1xuICAgICAgICBjb25zdCBjbGFzc2VzID0gdGhpcy5nZXRJbnN0QXdhcmVQcm9jZXNzb3JDbGFzc2VzKCk7XG4gICAgICAgIHJldHVybiBjbGFzc2VzLmluZGV4T2YoY2xzIGFzIE5ld2FibGU8SW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yPikgPiAtMTtcbiAgICB9XG4gICAgZ2V0SW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcygpIHtcbiAgICAgICAgY29uc3QgZ2xvYmFsSW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcyA9IEdsb2JhbE1ldGFkYXRhLmdldEluc3RhbmNlKCkucmVhZGVyKCkuZ2V0SW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcygpO1xuICAgICAgICByZXR1cm4gZ2xvYmFsSW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3Nlcy5jb25jYXQoQXJyYXkuZnJvbSh0aGlzLmluc3RBd2FyZVByb2Nlc3NvckNsYXNzZXMpKTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBJbnN0YW5jZVNjb3BlIH0gZnJvbSAnLi9JbnN0YW5jZVNjb3BlJztcbmltcG9ydCB7IEluc3RhbmNlUmVzb2x1dGlvbiB9IGZyb20gJy4uL3R5cGVzL0luc3RhbmNlUmVzb2x1dGlvbic7XG5pbXBvcnQgeyBJZGVudGlmaWVyIH0gZnJvbSAnLi4vdHlwZXMvSWRlbnRpZmllcic7XG5pbXBvcnQgeyBTZXJ2aWNlRmFjdG9yeSB9IGZyb20gJy4uL3R5cGVzL1NlcnZpY2VGYWN0b3J5JztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgRXZlbnRMaXN0ZW5lciB9IGZyb20gJy4vRXZlbnRFbWl0dGVyJztcbmltcG9ydCB7IEFueUZ1bmN0aW9uIH0gZnJvbSAnLi4vdHlwZXMvQW55RnVuY3Rpb24nO1xuaW1wb3J0IHsgaGFzQXJncywgaGFzSW5qZWN0aW9ucywgSW52b2tlRnVuY3Rpb25PcHRpb25zIH0gZnJvbSAnLi9JbnZva2VGdW5jdGlvbk9wdGlvbnMnO1xuaW1wb3J0IHsgR2xvYmFsTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS9HbG9iYWxNZXRhZGF0YSc7XG5pbXBvcnQgeyBGYWN0b3J5SWRlbnRpZmllciB9IGZyb20gJy4uL3R5cGVzL0ZhY3RvcnlJZGVudGlmaWVyJztcbmltcG9ydCB7IENsYXNzTWV0YWRhdGEsIENsYXNzTWV0YWRhdGFSZWFkZXIgfSBmcm9tICcuLi9tZXRhZGF0YS9DbGFzc01ldGFkYXRhJztcbmltcG9ydCB7IENvbXBvbmVudEluc3RhbmNlQnVpbGRlciB9IGZyb20gJy4vQ29tcG9uZW50SW5zdGFuY2VCdWlsZGVyJztcbmltcG9ydCB7IEZ1bmN0aW9uTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS9GdW5jdGlvbk1ldGFkYXRhJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uQ29udGV4dE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbkNvbnRleHRPcHRpb25zJztcbmltcG9ydCB7IE5ld2FibGUgfSBmcm9tICcuLi90eXBlcy9OZXdhYmxlJztcbmltcG9ydCB7IE1ldGFkYXRhRmFjdG9yeSB9IGZyb20gJy4uL21ldGFkYXRhL01ldGFkYXRhRmFjdG9yeSc7XG5pbXBvcnQgeyBTZXJ2aWNlRmFjdG9yeURlZiB9IGZyb20gJy4vU2VydmljZUZhY3RvcnlEZWYnO1xuaW1wb3J0IHsgU2luZ2xldG9uSW5zdGFuY2VSZXNvbHV0aW9uIH0gZnJvbSAnLi4vcmVzb2x1dGlvbi9TaW5nbGV0b25JbnN0YW5jZVJlc29sdXRpb24nO1xuaW1wb3J0IHsgR2xvYmFsU2hhcmVkSW5zdGFuY2VSZXNvbHV0aW9uIH0gZnJvbSAnLi4vcmVzb2x1dGlvbi9HbG9iYWxTaGFyZWRJbnN0YW5jZVJlc29sdXRpb24nO1xuaW1wb3J0IHsgVHJhbnNpZW50SW5zdGFuY2VSZXNvbHV0aW9uIH0gZnJvbSAnLi4vcmVzb2x1dGlvbi9UcmFuc2llbnRJbnN0YW5jZVJlc29sdXRpb24nO1xuaW1wb3J0IHsgRXZhbHVhdGlvbk9wdGlvbnMsIEV4cHJlc3Npb25UeXBlIH0gZnJvbSAnLi4vdHlwZXMvRXZhbHVhdGVPcHRpb25zJztcbmltcG9ydCB7IEpTT05EYXRhIH0gZnJvbSAnLi4vdHlwZXMvSlNPTkRhdGEnO1xuaW1wb3J0IHsgRXZhbHVhdG9yIH0gZnJvbSAnLi4vdHlwZXMvRXZhbHVhdG9yJztcbmltcG9ydCB7IEpTT05EYXRhRXZhbHVhdG9yIH0gZnJvbSAnLi4vZXZhbHVhdG9yL0pTT05EYXRhRXZhbHVhdG9yJztcbmltcG9ydCB7IEVudmlyb25tZW50RXZhbHVhdG9yIH0gZnJvbSAnLi4vZXZhbHVhdG9yL0Vudmlyb25tZW50RXZhbHVhdG9yJztcbmltcG9ydCB7IEFyZ3ZFdmFsdWF0b3IgfSBmcm9tICcuLi9ldmFsdWF0b3IvQXJndkV2YWx1YXRvcic7XG5pbXBvcnQgeyBpc05vZGVKcyB9IGZyb20gJy4uL2NvbW1vbi9pc05vZGVKcyc7XG5pbXBvcnQgeyBQYXJ0aWFsSW5zdEF3YXJlUHJvY2Vzc29yIH0gZnJvbSAnLi4vdHlwZXMvSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yJztcbmltcG9ydCB7IEFPUEluc3RhbnRpYXRpb25Bd2FyZVByb2Nlc3NvciB9IGZyb20gJy4uL2FvcC9BT1BJbnN0YW50aWF0aW9uQXdhcmVQcm9jZXNzb3InO1xuaW1wb3J0IHsgSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yTWFuYWdlciB9IGZyb20gJy4vSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yTWFuYWdlcic7XG5pbXBvcnQgeyBMaWZlY3ljbGVNYW5hZ2VyIH0gZnJvbSAnLi9MaWZlY3ljbGVNYW5hZ2VyJztcbmltcG9ydCB7IEluc3RhbmNlIH0gZnJvbSAnLi4vdHlwZXMvSW5zdGFuY2UnO1xuXG5jb25zdCBQUkVfREVTVFJPWV9FVkVOVF9LRVkgPSAnY29udGFpbmVyOmV2ZW50OnByZS1kZXN0cm95JztcblxuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uQ29udGV4dCB7XG4gICAgcHJpdmF0ZSByZXNvbHV0aW9ucyA9IG5ldyBNYXA8SW5zdGFuY2VTY29wZSB8IHN0cmluZywgSW5zdGFuY2VSZXNvbHV0aW9uPigpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBmYWN0b3JpZXMgPSBuZXcgTWFwPEZhY3RvcnlJZGVudGlmaWVyLCBTZXJ2aWNlRmFjdG9yeURlZjxhbnk+PigpO1xuICAgIHByaXZhdGUgZXZhbHVhdG9yQ2xhc3NlcyA9IG5ldyBNYXA8c3RyaW5nLCBOZXdhYmxlPEV2YWx1YXRvcj4+KCk7XG4gICAgcHJpdmF0ZSBldmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0U2NvcGU6IEluc3RhbmNlU2NvcGU7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsYXp5TW9kZTogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluc3RBd2FyZVByb2Nlc3Nvck1hbmFnZXI6IEluc3RhbnRpYXRpb25Bd2FyZVByb2Nlc3Nvck1hbmFnZXI7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEFwcGxpY2F0aW9uQ29udGV4dE9wdGlvbnMgPSB7fSkge1xuICAgICAgICB0aGlzLmRlZmF1bHRTY29wZSA9IG9wdGlvbnMuZGVmYXVsdFNjb3BlIHx8IEluc3RhbmNlU2NvcGUuU0lOR0xFVE9OO1xuICAgICAgICB0aGlzLmxhenlNb2RlID0gb3B0aW9ucy5sYXp5TW9kZSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IG9wdGlvbnMubGF6eU1vZGU7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJJbnN0YW5jZVNjb3BlUmVzb2x1dGlvbihJbnN0YW5jZVNjb3BlLlNJTkdMRVRPTiwgU2luZ2xldG9uSW5zdGFuY2VSZXNvbHV0aW9uKTtcbiAgICAgICAgdGhpcy5yZWdpc3Rlckluc3RhbmNlU2NvcGVSZXNvbHV0aW9uKEluc3RhbmNlU2NvcGUuR0xPQkFMX1NIQVJFRF9TSU5HTEVUT04sIEdsb2JhbFNoYXJlZEluc3RhbmNlUmVzb2x1dGlvbik7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJJbnN0YW5jZVNjb3BlUmVzb2x1dGlvbihJbnN0YW5jZVNjb3BlLlRSQU5TSUVOVCwgVHJhbnNpZW50SW5zdGFuY2VSZXNvbHV0aW9uKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckV2YWx1YXRvcihFeHByZXNzaW9uVHlwZS5KU09OX1BBVEgsIEpTT05EYXRhRXZhbHVhdG9yKTtcbiAgICAgICAgaWYgKGlzTm9kZUpzKSB7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyRXZhbHVhdG9yKEV4cHJlc3Npb25UeXBlLkVOViwgRW52aXJvbm1lbnRFdmFsdWF0b3IpO1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckV2YWx1YXRvcihFeHByZXNzaW9uVHlwZS5BUkdWLCBBcmd2RXZhbHVhdG9yKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluc3RBd2FyZVByb2Nlc3Nvck1hbmFnZXIgPSBuZXcgSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yTWFuYWdlcih0aGlzKTtcbiAgICAgICAgdGhpcy5yZWdpc3Rlckluc3RBd2FyZVByb2Nlc3NvcihBT1BJbnN0YW50aWF0aW9uQXdhcmVQcm9jZXNzb3IuY3JlYXRlKHRoaXMpKTtcbiAgICB9XG4gICAgZ2V0SW5zdGFuY2U8VCwgTz4oc3ltYm9sOiBJZGVudGlmaWVyPFQ+LCBvd25lcj86IE8pOiBUIHtcbiAgICAgICAgaWYgKHN5bWJvbCA9PT0gQXBwbGljYXRpb25Db250ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcyBhcyB1bmtub3duIGFzIFQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBzeW1ib2wgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBzeW1ib2wgPT09ICdzeW1ib2wnKSB7XG4gICAgICAgICAgICBjb25zdCBmYWN0b3J5RGVmID0gdGhpcy5nZXRGYWN0b3J5KHN5bWJvbCk7XG4gICAgICAgICAgICBpZiAoZmFjdG9yeURlZikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZmFjdG9yeSwgaW5qZWN0aW9ucyB9ID0gZmFjdG9yeURlZjtcbiAgICAgICAgICAgICAgICBjb25zdCBmbiA9IGZhY3RvcnkodGhpcywgb3duZXIpO1xuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmludm9rZShmbiwge1xuICAgICAgICAgICAgICAgICAgICBpbmplY3Rpb25zXG4gICAgICAgICAgICAgICAgfSkgYXMgVDtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25zdHIgPSByZXN1bHQ/LmNvbnN0cnVjdG9yO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY29uc3RyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudENsYXNzID0gY29uc3RyIGFzIE5ld2FibGU8VD47XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc29sdmVyID0gbmV3IExpZmVjeWNsZU1hbmFnZXI8VD4oY29tcG9uZW50Q2xhc3MsIHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0luc3RBd2FyZVByb2Nlc3NvciA9IHRoaXMuaW5zdEF3YXJlUHJvY2Vzc29yTWFuYWdlci5pc0luc3RBd2FyZVByb2Nlc3NvckNsYXNzKGNvbXBvbmVudENsYXNzKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZXIuaW52b2tlUHJlSW5qZWN0TWV0aG9kKHJlc3VsdCBhcyBJbnN0YW5jZTxUPik7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNJbnN0QXdhcmVQcm9jZXNzb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMuaW5zdEF3YXJlUHJvY2Vzc29yTWFuYWdlci5hZnRlckluc3RhbnRpYXRpb24ocmVzdWx0IGFzIEluc3RhbmNlPFQ+KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlci5pbnZva2VQb3N0SW5qZWN0TWV0aG9kKHJlc3VsdCBhcyBJbnN0YW5jZTxUPik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsYXNzTWV0YWRhdGEgPSBHbG9iYWxNZXRhZGF0YS5nZXRJbnN0YW5jZSgpLnJlYWRlcigpLmdldENsYXNzTWV0YWRhdGE8VD4oc3ltYm9sKTtcbiAgICAgICAgICAgICAgICBpZiAoIWNsYXNzTWV0YWRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCcnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzeW1ib2wgPSBjbGFzc01ldGFkYXRhLnJlYWRlcigpLmdldENsYXNzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudENsYXNzID0gc3ltYm9sO1xuICAgICAgICBjb25zdCByZWFkZXIgPSBDbGFzc01ldGFkYXRhLmdldEluc3RhbmNlKGNvbXBvbmVudENsYXNzKS5yZWFkZXIoKTtcbiAgICAgICAgY29uc3Qgc2NvcGUgPSByZWFkZXIuZ2V0U2NvcGUoKTtcbiAgICAgICAgY29uc3QgcmVzb2x1dGlvbiA9ICh0aGlzLnJlc29sdXRpb25zLmdldChzY29wZSkgfHwgdGhpcy5yZXNvbHV0aW9ucy5nZXQodGhpcy5kZWZhdWx0U2NvcGUpKSBhcyBJbnN0YW5jZVJlc29sdXRpb247XG4gICAgICAgIGNvbnN0IGdldEluc3RhbmNlT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGNvbXBvbmVudENsYXNzLFxuICAgICAgICAgICAgb3duZXIsXG4gICAgICAgICAgICBvd25lclByb3BlcnR5S2V5OiB1bmRlZmluZWRcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHJlc29sdXRpb24uc2hvdWxkR2VuZXJhdGUoZ2V0SW5zdGFuY2VPcHRpb25zKSkge1xuICAgICAgICAgICAgY29uc3QgYnVpbGRlciA9IHRoaXMuY3JlYXRlQ29tcG9uZW50SW5zdGFuY2VCdWlsZGVyKGNvbXBvbmVudENsYXNzKTtcbiAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gYnVpbGRlci5idWlsZCgpO1xuICAgICAgICAgICAgY29uc3Qgc2F2ZUluc3RhbmNlT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAuLi5nZXRJbnN0YW5jZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgaW5zdGFuY2VcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXNvbHV0aW9uLnNhdmVJbnN0YW5jZShzYXZlSW5zdGFuY2VPcHRpb25zKTtcbiAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHV0aW9uLmdldEluc3RhbmNlKGdldEluc3RhbmNlT3B0aW9ucykgYXMgVDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQ29tcG9uZW50SW5zdGFuY2VCdWlsZGVyPFQ+KGNvbXBvbmVudENsYXNzOiBOZXdhYmxlPFQ+KSB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ29tcG9uZW50SW5zdGFuY2VCdWlsZGVyKGNvbXBvbmVudENsYXNzLCB0aGlzLCB0aGlzLmluc3RBd2FyZVByb2Nlc3Nvck1hbmFnZXIpO1xuICAgICAgICBidWlsZGVyLmFwcGVuZExhenlNb2RlKHRoaXMubGF6eU1vZGUpO1xuICAgICAgICByZXR1cm4gYnVpbGRlcjtcbiAgICB9XG5cbiAgICBnZXRGYWN0b3J5KGtleTogRmFjdG9yeUlkZW50aWZpZXIpIHtcbiAgICAgICAgY29uc3QgZmFjdG9yeSA9IEdsb2JhbE1ldGFkYXRhLmdldEluc3RhbmNlKCkucmVhZGVyKCkuZ2V0Q29tcG9uZW50RmFjdG9yeShrZXkpO1xuICAgICAgICBpZiAoIWZhY3RvcnkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZhY3Rvcmllcy5nZXQoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFjdG9yeTtcbiAgICB9XG4gICAgYmluZEZhY3Rvcnk8VD4oc3ltYm9sOiBGYWN0b3J5SWRlbnRpZmllciwgZmFjdG9yeTogU2VydmljZUZhY3Rvcnk8VCwgdW5rbm93bj4sIGluamVjdGlvbnM/OiBJZGVudGlmaWVyW10pIHtcbiAgICAgICAgdGhpcy5mYWN0b3JpZXMuc2V0KHN5bWJvbCwgbmV3IFNlcnZpY2VGYWN0b3J5RGVmKGZhY3RvcnksIGluamVjdGlvbnMpKTtcbiAgICB9XG4gICAgaW52b2tlPFIsIEN0eD4oZnVuYzogQW55RnVuY3Rpb248UiwgQ3R4Piwgb3B0aW9uczogSW52b2tlRnVuY3Rpb25PcHRpb25zPEN0eD4gPSB7fSk6IFIge1xuICAgICAgICBsZXQgZm46IEFueUZ1bmN0aW9uPFI+O1xuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGZuID0gZnVuYy5iaW5kKG9wdGlvbnMuY29udGV4dCBhcyBUaGlzUGFyYW1ldGVyVHlwZTx0eXBlb2YgZnVuYz4pIGFzIEFueUZ1bmN0aW9uPFI+O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm4gPSBmdW5jIGFzIEFueUZ1bmN0aW9uPFI+O1xuICAgICAgICB9XG4gICAgICAgIGlmIChoYXNBcmdzKG9wdGlvbnMpKSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5hcmdzID8gZm4oLi4ub3B0aW9ucy5hcmdzKSA6IGZuKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhc0luamVjdGlvbnMob3B0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbnN0IGFyZ3MgPSBvcHRpb25zLmluamVjdGlvbnMgPyBvcHRpb25zLmluamVjdGlvbnMubWFwKGl0ID0+IHRoaXMuZ2V0SW5zdGFuY2UoaXQpKSA6IFtdO1xuICAgICAgICAgICAgcmV0dXJuIGFyZ3MubGVuZ3RoID4gMCA/IGZuKC4uLmFyZ3MpIDogZm4oKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YShmbiwgRnVuY3Rpb25NZXRhZGF0YSkucmVhZGVyKCk7XG4gICAgICAgIGNvbnN0IHBhcmFtZXRlcklkZW50aWZpZXJzID0gbWV0YWRhdGEuZ2V0UGFyYW1ldGVycygpO1xuICAgICAgICBjb25zdCBhcmdzID0gcGFyYW1ldGVySWRlbnRpZmllcnMubWFwKGlkZW50aWZpZXIgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SW5zdGFuY2UoaWRlbnRpZmllcik7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZm4oLi4uYXJncyk7XG4gICAgfVxuICAgIGRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZXZlbnRFbWl0dGVyLmVtaXQoUFJFX0RFU1RST1lfRVZFTlRfS0VZKTtcbiAgICAgICAgdGhpcy5yZXNvbHV0aW9ucy5mb3JFYWNoKGl0ID0+IHtcbiAgICAgICAgICAgIGl0LmRlc3Ryb3koKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGV2YWx1YXRlPFQsIE8sIEE+KGV4cHJlc3Npb246IHN0cmluZywgb3B0aW9uczogRXZhbHVhdGlvbk9wdGlvbnM8Tywgc3RyaW5nLCBBPik6IFQgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBldmFsdWF0b3JDbGFzcyA9IHRoaXMuZXZhbHVhdG9yQ2xhc3Nlcy5nZXQob3B0aW9ucy50eXBlKTtcbiAgICAgICAgaWYgKCFldmFsdWF0b3JDbGFzcykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgVW5rbm93biBldmFsdWF0b3IgbmFtZTogJHtvcHRpb25zLnR5cGV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXZhbHVhdG9yID0gdGhpcy5nZXRJbnN0YW5jZShldmFsdWF0b3JDbGFzcyk7XG4gICAgICAgIHJldHVybiBldmFsdWF0b3IuZXZhbCh0aGlzLCBleHByZXNzaW9uLCBvcHRpb25zLmV4dGVybmFsQXJncyk7XG4gICAgfVxuICAgIHJlY29yZEpTT05EYXRhKG5hbWVzcGFjZTogc3RyaW5nLCBkYXRhOiBKU09ORGF0YSkge1xuICAgICAgICBjb25zdCBldmFsdWF0b3IgPSB0aGlzLmdldEluc3RhbmNlKEpTT05EYXRhRXZhbHVhdG9yKTtcbiAgICAgICAgZXZhbHVhdG9yLnJlY29yZERhdGEobmFtZXNwYWNlLCBkYXRhKTtcbiAgICB9XG4gICAgYmluZEluc3RhbmNlPFQ+KGlkZW50aWZpZXI6IHN0cmluZyB8IHN5bWJvbCwgaW5zdGFuY2U6IFQpIHtcbiAgICAgICAgY29uc3QgcmVzb2x1dGlvbiA9IHRoaXMucmVzb2x1dGlvbnMuZ2V0KEluc3RhbmNlU2NvcGUuU0lOR0xFVE9OKTtcbiAgICAgICAgcmVzb2x1dGlvbj8uc2F2ZUluc3RhbmNlKHtcbiAgICAgICAgICAgIGlkZW50aWZpZXIsXG4gICAgICAgICAgICBpbnN0YW5jZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVnaXN0ZXJJbnN0YW5jZVNjb3BlUmVzb2x1dGlvbjxUIGV4dGVuZHMgTmV3YWJsZTxJbnN0YW5jZVJlc29sdXRpb24+PihcbiAgICAgICAgc2NvcGU6IEluc3RhbmNlU2NvcGUgfCBzdHJpbmcsXG4gICAgICAgIHJlc29sdXRpb25Db25zdHJ1Y3RvcjogVCxcbiAgICAgICAgY29uc3RydWN0b3JBcmdzPzogQ29uc3RydWN0b3JQYXJhbWV0ZXJzPFQ+XG4gICAgKSB7XG4gICAgICAgIHRoaXMucmVzb2x1dGlvbnMuc2V0KHNjb3BlLCBuZXcgcmVzb2x1dGlvbkNvbnN0cnVjdG9yKC4uLihjb25zdHJ1Y3RvckFyZ3MgfHwgW10pKSk7XG4gICAgfVxuICAgIHJlZ2lzdGVyRXZhbHVhdG9yKG5hbWU6IHN0cmluZywgZXZhbHVhdG9yQ2xhc3M6IE5ld2FibGU8RXZhbHVhdG9yPikge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YShldmFsdWF0b3JDbGFzcywgQ2xhc3NNZXRhZGF0YSk7XG4gICAgICAgIG1ldGFkYXRhLnNldFNjb3BlKEluc3RhbmNlU2NvcGUuU0lOR0xFVE9OKTtcbiAgICAgICAgdGhpcy5ldmFsdWF0b3JDbGFzc2VzLnNldChuYW1lLCBldmFsdWF0b3JDbGFzcyk7XG4gICAgfVxuICAgIHJlZ2lzdGVySW5zdEF3YXJlUHJvY2Vzc29yKGNsYXp6OiBOZXdhYmxlPFBhcnRpYWxJbnN0QXdhcmVQcm9jZXNzb3I+KSB7XG4gICAgICAgIHRoaXMuaW5zdEF3YXJlUHJvY2Vzc29yTWFuYWdlci5hcHBlbmRJbnN0QXdhcmVQcm9jZXNzb3JDbGFzcyhjbGF6eik7XG4gICAgfVxuICAgIG9uUHJlRGVzdHJveShsaXN0ZW5lcjogRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICByZXR1cm4gdGhpcy5ldmVudEVtaXR0ZXIub24oUFJFX0RFU1RST1lfRVZFTlRfS0VZLCBsaXN0ZW5lcik7XG4gICAgfVxuICAgIGdldENsYXNzTWV0YWRhdGE8VD4oY3RvcjogTmV3YWJsZTxUPikge1xuICAgICAgICByZXR1cm4gQ2xhc3NNZXRhZGF0YS5nZXRJbnN0YW5jZShjdG9yKS5yZWFkZXIoKSBhcyBDbGFzc01ldGFkYXRhUmVhZGVyPFQ+O1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6WyJJbnN0YW5jZVNjb3BlIiwiUmVmbGVjdCIsImdsb2JhbCIsIkV4cHJlc3Npb25UeXBlIl0sIm1hcHBpbmdzIjoiOztBQUtBLElBQUEsaUJBQUEsa0JBQUEsWUFBQTtJQVVJLFNBQTRCLGlCQUFBLENBQUEsT0FBbUMsRUFBa0IsVUFBeUIsRUFBQTtRQUE5RSxJQUFPLENBQUEsT0FBQSxHQUFQLE9B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QUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsYUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n printWarning('warn', format, args);\n }\n }\n}\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\nvar didWarnStateUpdateForUnmountedComponent = {};\n\nfunction warnNoop(publicInstance, callerName) {\n {\n var _constructor = publicInstance.constructor;\n var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass';\n var warningKey = componentName + \".\" + callerName;\n\n if (didWarnStateUpdateForUnmountedComponent[warningKey]) {\n return;\n }\n\n error(\"Can't call %s on a component that is not yet mounted. \" + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName);\n\n didWarnStateUpdateForUnmountedComponent[warningKey] = true;\n }\n}\n/**\n * This is the abstract API for an update queue.\n */\n\n\nvar ReactNoopUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance, callback, callerName) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} Name of the calling function in the public API.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState, callback, callerName) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\nvar assign = Object.assign;\n\nvar emptyObject = {};\n\n{\n Object.freeze(emptyObject);\n}\n/**\n * Base class helpers for the updating state of a component.\n */\n\n\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n\n this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the\n // renderer.\n\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nComponent.prototype.isReactComponent = {};\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\n\nComponent.prototype.setState = function (partialState, callback) {\n if (typeof partialState !== 'object' && typeof partialState !== 'function' && partialState != null) {\n throw new Error('setState(...): takes an object of state variables to update or a ' + 'function which returns an object of state variables.');\n }\n\n this.updater.enqueueSetState(this, partialState, callback, 'setState');\n};\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\n\n\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');\n};\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\n\n\n{\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n\n var defineDeprecationWarning = function (methodName, info) {\n Object.defineProperty(Component.prototype, methodName, {\n get: function () {\n warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\n\n return undefined;\n }\n });\n };\n\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nfunction ComponentDummy() {}\n\nComponentDummy.prototype = Component.prototype;\n/**\n * Convenience component with default shallow equality check for sCU.\n */\n\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nvar pureComponentPrototype = PureComponent.prototype = new ComponentDummy();\npureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods.\n\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = true;\n\n// an immutable object with a single mutable value\nfunction createRef() {\n var refObject = {\n current: null\n };\n\n {\n Object.seal(refObject);\n }\n\n return refObject;\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n return type;\n }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n\nfunction testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, atrribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n var functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n\n // eslint-disable-next-line no-fallthrough\n }\n }\n\n return null;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function () {\n {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function () {\n {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * Create and return a new ReactElement of the given type.\n * See https://reactjs.org/docs/react-api.html#createelement\n */\n\nfunction createElement(type, config, children) {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n\n {\n warnIfStringRefCannotBeAutoConverted(config);\n }\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n var childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n\n props.children = childArray;\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n {\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n return newElement;\n}\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://reactjs.org/docs/react-api.html#cloneelement\n */\n\nfunction cloneElement(element, config, children) {\n if (element === null || element === undefined) {\n throw new Error(\"React.cloneElement(...): The argument must be a React element, but you passed \" + element + \".\");\n }\n\n var propName; // Original props are copied\n\n var props = assign({}, element.props); // Reserved names are extracted\n\n var key = element.key;\n var ref = element.ref; // Self is preserved since the owner is preserved.\n\n var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n\n var source = element._source; // Owner will be preserved, unless ref is overridden\n\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n } // Remaining properties override existing props\n\n\n var defaultProps;\n\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n var childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\nfunction isValidElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = key.replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n return '$' + escapedString;\n}\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\n\nvar didWarnAboutMaps = false;\nvar userProvidedKeyEscapeRegex = /\\/+/g;\n\nfunction escapeUserProvidedKey(text) {\n return text.replace(userProvidedKeyEscapeRegex, '$&/');\n}\n/**\n * Generate a key string that identifies a element within a set.\n *\n * @param {*} element A element that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\n\n\nfunction getElementKey(element, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (typeof element === 'object' && element !== null && element.key != null) {\n // Explicit key\n {\n checkKeyStringCoercion(element.key);\n }\n\n return escape('' + element.key);\n } // Implicit key determined by the index in the set\n\n\n return index.toString(36);\n}\n\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n var invokeCallback = false;\n\n if (children === null) {\n invokeCallback = true;\n } else {\n switch (type) {\n case 'string':\n case 'number':\n invokeCallback = true;\n break;\n\n case 'object':\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = true;\n }\n\n }\n }\n\n if (invokeCallback) {\n var _child = children;\n var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows:\n\n var childKey = nameSoFar === '' ? SEPARATOR + getElementKey(_child, 0) : nameSoFar;\n\n if (isArray(mappedChild)) {\n var escapedChildKey = '';\n\n if (childKey != null) {\n escapedChildKey = escapeUserProvidedKey(childKey) + '/';\n }\n\n mapIntoArray(mappedChild, array, escapedChildKey, '', function (c) {\n return c;\n });\n } else if (mappedChild != null) {\n if (isValidElement(mappedChild)) {\n {\n // The `if` statement here prevents auto-disabling of the safe\n // coercion ESLint rule, so we must manually disable it below.\n // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n if (mappedChild.key && (!_child || _child.key !== mappedChild.key)) {\n checkKeyStringCoercion(mappedChild.key);\n }\n }\n\n mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n escapedPrefix + ( // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n mappedChild.key && (!_child || _child.key !== mappedChild.key) ? // $FlowFixMe Flow incorrectly thinks existing element's key can be a number\n // eslint-disable-next-line react-internal/safe-string-coercion\n escapeUserProvidedKey('' + mappedChild.key) + '/' : '') + childKey);\n }\n\n array.push(mappedChild);\n }\n\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getElementKey(child, i);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n\n if (typeof iteratorFn === 'function') {\n var iterableChildren = children;\n\n {\n // Warn about using Maps as children\n if (iteratorFn === iterableChildren.entries) {\n if (!didWarnAboutMaps) {\n warn('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.');\n }\n\n didWarnAboutMaps = true;\n }\n }\n\n var iterator = iteratorFn.call(iterableChildren);\n var step;\n var ii = 0;\n\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getElementKey(child, ii++);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else if (type === 'object') {\n // eslint-disable-next-line react-internal/safe-string-coercion\n var childrenString = String(children);\n throw new Error(\"Objects are not valid as a React child (found: \" + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + \"). \" + 'If you meant to render a collection of children, use an array ' + 'instead.');\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenmap\n *\n * The provided mapFunction(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n\n var result = [];\n var count = 0;\n mapIntoArray(children, result, '', '', function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrencount\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\n\n\nfunction countChildren(children) {\n var n = 0;\n mapChildren(children, function () {\n n++; // Don't return anything\n });\n return n;\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenforeach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n mapChildren(children, function () {\n forEachFunc.apply(this, arguments); // Don't return anything.\n }, forEachContext);\n}\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrentoarray\n */\n\n\nfunction toArray(children) {\n return mapChildren(children, function (child) {\n return child;\n }) || [];\n}\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenonly\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\n\n\nfunction onlyChild(children) {\n if (!isValidElement(children)) {\n throw new Error('React.Children.only expected to receive a single React element child.');\n }\n\n return children;\n}\n\nfunction createContext(defaultValue) {\n // TODO: Second argument used to be an optional `calculateChangedBits`\n // function. Warn to reserve for future use?\n var context = {\n $$typeof: REACT_CONTEXT_TYPE,\n // As a workaround to support multiple concurrent renderers, we categorize\n // some renderers as primary and others as secondary. We only expect\n // there to be two concurrent renderers at most: React Native (primary) and\n // Fabric (secondary); React DOM (primary) and React ART (secondary).\n // Secondary renderers store their context values on separate fields.\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n // Used to track how many concurrent renderers this context currently\n // supports within in a single renderer. Such as parallel server rendering.\n _threadCount: 0,\n // These are circular\n Provider: null,\n Consumer: null,\n // Add these to use same hidden class in VM as ServerContext\n _defaultValue: null,\n _globalName: null\n };\n context.Provider = {\n $$typeof: REACT_PROVIDER_TYPE,\n _context: context\n };\n var hasWarnedAboutUsingNestedContextConsumers = false;\n var hasWarnedAboutUsingConsumerProvider = false;\n var hasWarnedAboutDisplayNameOnConsumer = false;\n\n {\n // A separate object, but proxies back to the original context object for\n // backwards compatibility. It has a different $$typeof, so we can properly\n // warn for the incorrect usage of Context as a Consumer.\n var Consumer = {\n $$typeof: REACT_CONTEXT_TYPE,\n _context: context\n }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here\n\n Object.defineProperties(Consumer, {\n Provider: {\n get: function () {\n if (!hasWarnedAboutUsingConsumerProvider) {\n hasWarnedAboutUsingConsumerProvider = true;\n\n error('Rendering is not supported and will be removed in ' + 'a future major release. Did you mean to render instead?');\n }\n\n return context.Provider;\n },\n set: function (_Provider) {\n context.Provider = _Provider;\n }\n },\n _currentValue: {\n get: function () {\n return context._currentValue;\n },\n set: function (_currentValue) {\n context._currentValue = _currentValue;\n }\n },\n _currentValue2: {\n get: function () {\n return context._currentValue2;\n },\n set: function (_currentValue2) {\n context._currentValue2 = _currentValue2;\n }\n },\n _threadCount: {\n get: function () {\n return context._threadCount;\n },\n set: function (_threadCount) {\n context._threadCount = _threadCount;\n }\n },\n Consumer: {\n get: function () {\n if (!hasWarnedAboutUsingNestedContextConsumers) {\n hasWarnedAboutUsingNestedContextConsumers = true;\n\n error('Rendering is not supported and will be removed in ' + 'a future major release. Did you mean to render instead?');\n }\n\n return context.Consumer;\n }\n },\n displayName: {\n get: function () {\n return context.displayName;\n },\n set: function (displayName) {\n if (!hasWarnedAboutDisplayNameOnConsumer) {\n warn('Setting `displayName` on Context.Consumer has no effect. ' + \"You should set it directly on the context with Context.displayName = '%s'.\", displayName);\n\n hasWarnedAboutDisplayNameOnConsumer = true;\n }\n }\n }\n }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty\n\n context.Consumer = Consumer;\n }\n\n {\n context._currentRenderer = null;\n context._currentRenderer2 = null;\n }\n\n return context;\n}\n\nvar Uninitialized = -1;\nvar Pending = 0;\nvar Resolved = 1;\nvar Rejected = 2;\n\nfunction lazyInitializer(payload) {\n if (payload._status === Uninitialized) {\n var ctor = payload._result;\n var thenable = ctor(); // Transition to the next state.\n // This might throw either because it's missing or throws. If so, we treat it\n // as still uninitialized and try again next time. Which is the same as what\n // happens if the ctor or any wrappers processing the ctor throws. This might\n // end up fixing it if the resolution was a concurrency bug.\n\n thenable.then(function (moduleObject) {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n var resolved = payload;\n resolved._status = Resolved;\n resolved._result = moduleObject;\n }\n }, function (error) {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n var rejected = payload;\n rejected._status = Rejected;\n rejected._result = error;\n }\n });\n\n if (payload._status === Uninitialized) {\n // In case, we're still uninitialized, then we're waiting for the thenable\n // to resolve. Set it as pending in the meantime.\n var pending = payload;\n pending._status = Pending;\n pending._result = thenable;\n }\n }\n\n if (payload._status === Resolved) {\n var moduleObject = payload._result;\n\n {\n if (moduleObject === undefined) {\n error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n ' + // Break up imports to avoid accidentally parsing them as dependencies.\n 'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\\n\\n\" + 'Did you accidentally put curly braces around the import?', moduleObject);\n }\n }\n\n {\n if (!('default' in moduleObject)) {\n error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n ' + // Break up imports to avoid accidentally parsing them as dependencies.\n 'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\", moduleObject);\n }\n }\n\n return moduleObject.default;\n } else {\n throw payload._result;\n }\n}\n\nfunction lazy(ctor) {\n var payload = {\n // We use these fields to store the result.\n _status: Uninitialized,\n _result: ctor\n };\n var lazyType = {\n $$typeof: REACT_LAZY_TYPE,\n _payload: payload,\n _init: lazyInitializer\n };\n\n {\n // In production, this would just set it on the object.\n var defaultProps;\n var propTypes; // $FlowFixMe\n\n Object.defineProperties(lazyType, {\n defaultProps: {\n configurable: true,\n get: function () {\n return defaultProps;\n },\n set: function (newDefaultProps) {\n error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n defaultProps = newDefaultProps; // Match production behavior more closely:\n // $FlowFixMe\n\n Object.defineProperty(lazyType, 'defaultProps', {\n enumerable: true\n });\n }\n },\n propTypes: {\n configurable: true,\n get: function () {\n return propTypes;\n },\n set: function (newPropTypes) {\n error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n propTypes = newPropTypes; // Match production behavior more closely:\n // $FlowFixMe\n\n Object.defineProperty(lazyType, 'propTypes', {\n enumerable: true\n });\n }\n }\n });\n }\n\n return lazyType;\n}\n\nfunction forwardRef(render) {\n {\n if (render != null && render.$$typeof === REACT_MEMO_TYPE) {\n error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).');\n } else if (typeof render !== 'function') {\n error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render);\n } else {\n if (render.length !== 0 && render.length !== 2) {\n error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.');\n }\n }\n\n if (render != null) {\n if (render.defaultProps != null || render.propTypes != null) {\n error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?');\n }\n }\n }\n\n var elementType = {\n $$typeof: REACT_FORWARD_REF_TYPE,\n render: render\n };\n\n {\n var ownName;\n Object.defineProperty(elementType, 'displayName', {\n enumerable: false,\n configurable: true,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name; // The inner component shouldn't inherit this display name in most cases,\n // because the component may be used elsewhere.\n // But it's nice for anonymous functions to inherit the name,\n // so that our component-stack generation logic will display their frames.\n // An anonymous function generally suggests a pattern like:\n // React.forwardRef((props, ref) => {...});\n // This kind of inner function is not used elsewhere so the side effect is okay.\n\n if (!render.name && !render.displayName) {\n render.displayName = name;\n }\n }\n });\n }\n\n return elementType;\n}\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction memo(type, compare) {\n {\n if (!isValidElementType(type)) {\n error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type);\n }\n }\n\n var elementType = {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: compare === undefined ? null : compare\n };\n\n {\n var ownName;\n Object.defineProperty(elementType, 'displayName', {\n enumerable: false,\n configurable: true,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name; // The inner component shouldn't inherit this display name in most cases,\n // because the component may be used elsewhere.\n // But it's nice for anonymous functions to inherit the name,\n // so that our component-stack generation logic will display their frames.\n // An anonymous function generally suggests a pattern like:\n // React.memo((props) => {...});\n // This kind of inner function is not used elsewhere so the side effect is okay.\n\n if (!type.name && !type.displayName) {\n type.displayName = name;\n }\n }\n });\n }\n\n return elementType;\n}\n\nfunction resolveDispatcher() {\n var dispatcher = ReactCurrentDispatcher.current;\n\n {\n if (dispatcher === null) {\n error('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for' + ' one of the following reasons:\\n' + '1. You might have mismatching versions of React and the renderer (such as React DOM)\\n' + '2. You might be breaking the Rules of Hooks\\n' + '3. You might have more than one copy of React in the same app\\n' + 'See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.');\n }\n } // Will result in a null access error if accessed outside render phase. We\n // intentionally don't throw our own error because this is in a hot path.\n // Also helps ensure this is inlined.\n\n\n return dispatcher;\n}\nfunction useContext(Context) {\n var dispatcher = resolveDispatcher();\n\n {\n // TODO: add a more generic warning for invalid values.\n if (Context._context !== undefined) {\n var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs\n // and nobody should be using this in existing code.\n\n if (realContext.Consumer === Context) {\n error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?');\n } else if (realContext.Provider === Context) {\n error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?');\n }\n }\n }\n\n return dispatcher.useContext(Context);\n}\nfunction useState(initialState) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useState(initialState);\n}\nfunction useReducer(reducer, initialArg, init) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useReducer(reducer, initialArg, init);\n}\nfunction useRef(initialValue) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useRef(initialValue);\n}\nfunction useEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useEffect(create, deps);\n}\nfunction useInsertionEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useInsertionEffect(create, deps);\n}\nfunction useLayoutEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useLayoutEffect(create, deps);\n}\nfunction useCallback(callback, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useCallback(callback, deps);\n}\nfunction useMemo(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useMemo(create, deps);\n}\nfunction useImperativeHandle(ref, create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useImperativeHandle(ref, create, deps);\n}\nfunction useDebugValue(value, formatterFn) {\n {\n var dispatcher = resolveDispatcher();\n return dispatcher.useDebugValue(value, formatterFn);\n }\n}\nfunction useTransition() {\n var dispatcher = resolveDispatcher();\n return dispatcher.useTransition();\n}\nfunction useDeferredValue(value) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useDeferredValue(value);\n}\nfunction useId() {\n var dispatcher = resolveDispatcher();\n return dispatcher.useId();\n}\nfunction useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if ( !fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher$1.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher$1.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n\n if (fn.displayName && _frame.includes('')) {\n _frame = _frame.replace('', fn.displayName);\n }\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher$1.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n setExtraStackFrame(stack);\n } else {\n setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n\nfunction getDeclarationErrorAddendum() {\n if (ReactCurrentOwner.current) {\n var name = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n}\n\nfunction getSourceInfoErrorAddendumForProps(elementProps) {\n if (elementProps !== null && elementProps !== undefined) {\n return getSourceInfoErrorAddendum(elementProps.__source);\n }\n\n return '';\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n\n {\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n if (typeof node !== 'object') {\n return;\n }\n\n if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentNameFromType(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\nfunction createElementWithValidation(type, props, children) {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendumForProps(props);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n {\n error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n }\n\n var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], type);\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n}\nvar didWarnAboutDeprecatedCreateFactory = false;\nfunction createFactoryWithValidation(type) {\n var validatedFactory = createElementWithValidation.bind(null, type);\n validatedFactory.type = type;\n\n {\n if (!didWarnAboutDeprecatedCreateFactory) {\n didWarnAboutDeprecatedCreateFactory = true;\n\n warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.');\n } // Legacy hook: remove it\n\n\n Object.defineProperty(validatedFactory, 'type', {\n enumerable: false,\n get: function () {\n warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');\n\n Object.defineProperty(this, 'type', {\n value: type\n });\n return type;\n }\n });\n }\n\n return validatedFactory;\n}\nfunction cloneElementWithValidation(element, props, children) {\n var newElement = cloneElement.apply(this, arguments);\n\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], newElement.type);\n }\n\n validatePropTypes(newElement);\n return newElement;\n}\n\nfunction startTransition(scope, options) {\n var prevTransition = ReactCurrentBatchConfig.transition;\n ReactCurrentBatchConfig.transition = {};\n var currentTransition = ReactCurrentBatchConfig.transition;\n\n {\n ReactCurrentBatchConfig.transition._updatedFibers = new Set();\n }\n\n try {\n scope();\n } finally {\n ReactCurrentBatchConfig.transition = prevTransition;\n\n {\n if (prevTransition === null && currentTransition._updatedFibers) {\n var updatedFibersCount = currentTransition._updatedFibers.size;\n\n if (updatedFibersCount > 10) {\n warn('Detected a large number of updates inside startTransition. ' + 'If this is due to a subscription please re-write it to use React provided hooks. ' + 'Otherwise concurrent mode guarantees are off the table.');\n }\n\n currentTransition._updatedFibers.clear();\n }\n }\n }\n}\n\nvar didWarnAboutMessageChannel = false;\nvar enqueueTaskImpl = null;\nfunction enqueueTask(task) {\n if (enqueueTaskImpl === null) {\n try {\n // read require off the module object to get around the bundlers.\n // we don't want them to detect a require and bundle a Node polyfill.\n var requireString = ('require' + Math.random()).slice(0, 7);\n var nodeRequire = module && module[requireString]; // assuming we're in node, let's try to get node's\n // version of setImmediate, bypassing fake timers if any.\n\n enqueueTaskImpl = nodeRequire.call(module, 'timers').setImmediate;\n } catch (_err) {\n // we're in a browser\n // we can't use regular timers because they may still be faked\n // so we try MessageChannel+postMessage instead\n enqueueTaskImpl = function (callback) {\n {\n if (didWarnAboutMessageChannel === false) {\n didWarnAboutMessageChannel = true;\n\n if (typeof MessageChannel === 'undefined') {\n error('This browser does not have a MessageChannel implementation, ' + 'so enqueuing tasks via await act(async () => ...) will fail. ' + 'Please file an issue at https://github.com/facebook/react/issues ' + 'if you encounter this warning.');\n }\n }\n }\n\n var channel = new MessageChannel();\n channel.port1.onmessage = callback;\n channel.port2.postMessage(undefined);\n };\n }\n }\n\n return enqueueTaskImpl(task);\n}\n\nvar actScopeDepth = 0;\nvar didWarnNoAwaitAct = false;\nfunction act(callback) {\n {\n // `act` calls can be nested, so we track the depth. This represents the\n // number of `act` scopes on the stack.\n var prevActScopeDepth = actScopeDepth;\n actScopeDepth++;\n\n if (ReactCurrentActQueue.current === null) {\n // This is the outermost `act` scope. Initialize the queue. The reconciler\n // will detect the queue and use it instead of Scheduler.\n ReactCurrentActQueue.current = [];\n }\n\n var prevIsBatchingLegacy = ReactCurrentActQueue.isBatchingLegacy;\n var result;\n\n try {\n // Used to reproduce behavior of `batchedUpdates` in legacy mode. Only\n // set to `true` while the given callback is executed, not for updates\n // triggered during an async event, because this is how the legacy\n // implementation of `act` behaved.\n ReactCurrentActQueue.isBatchingLegacy = true;\n result = callback(); // Replicate behavior of original `act` implementation in legacy mode,\n // which flushed updates immediately after the scope function exits, even\n // if it's an async function.\n\n if (!prevIsBatchingLegacy && ReactCurrentActQueue.didScheduleLegacyUpdate) {\n var queue = ReactCurrentActQueue.current;\n\n if (queue !== null) {\n ReactCurrentActQueue.didScheduleLegacyUpdate = false;\n flushActQueue(queue);\n }\n }\n } catch (error) {\n popActScope(prevActScopeDepth);\n throw error;\n } finally {\n ReactCurrentActQueue.isBatchingLegacy = prevIsBatchingLegacy;\n }\n\n if (result !== null && typeof result === 'object' && typeof result.then === 'function') {\n var thenableResult = result; // The callback is an async function (i.e. returned a promise). Wait\n // for it to resolve before exiting the current scope.\n\n var wasAwaited = false;\n var thenable = {\n then: function (resolve, reject) {\n wasAwaited = true;\n thenableResult.then(function (returnValue) {\n popActScope(prevActScopeDepth);\n\n if (actScopeDepth === 0) {\n // We've exited the outermost act scope. Recursively flush the\n // queue until there's no remaining work.\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n } else {\n resolve(returnValue);\n }\n }, function (error) {\n // The callback threw an error.\n popActScope(prevActScopeDepth);\n reject(error);\n });\n }\n };\n\n {\n if (!didWarnNoAwaitAct && typeof Promise !== 'undefined') {\n // eslint-disable-next-line no-undef\n Promise.resolve().then(function () {}).then(function () {\n if (!wasAwaited) {\n didWarnNoAwaitAct = true;\n\n error('You called act(async () => ...) without await. ' + 'This could lead to unexpected testing behaviour, ' + 'interleaving multiple act calls and mixing their ' + 'scopes. ' + 'You should - await act(async () => ...);');\n }\n });\n }\n }\n\n return thenable;\n } else {\n var returnValue = result; // The callback is not an async function. Exit the current scope\n // immediately, without awaiting.\n\n popActScope(prevActScopeDepth);\n\n if (actScopeDepth === 0) {\n // Exiting the outermost act scope. Flush the queue.\n var _queue = ReactCurrentActQueue.current;\n\n if (_queue !== null) {\n flushActQueue(_queue);\n ReactCurrentActQueue.current = null;\n } // Return a thenable. If the user awaits it, we'll flush again in\n // case additional work was scheduled by a microtask.\n\n\n var _thenable = {\n then: function (resolve, reject) {\n // Confirm we haven't re-entered another `act` scope, in case\n // the user does something weird like await the thenable\n // multiple times.\n if (ReactCurrentActQueue.current === null) {\n // Recursively flush the queue until there's no remaining work.\n ReactCurrentActQueue.current = [];\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n } else {\n resolve(returnValue);\n }\n }\n };\n return _thenable;\n } else {\n // Since we're inside a nested `act` scope, the returned thenable\n // immediately resolves. The outer scope will flush the queue.\n var _thenable2 = {\n then: function (resolve, reject) {\n resolve(returnValue);\n }\n };\n return _thenable2;\n }\n }\n }\n}\n\nfunction popActScope(prevActScopeDepth) {\n {\n if (prevActScopeDepth !== actScopeDepth - 1) {\n error('You seem to have overlapping act() calls, this is not supported. ' + 'Be sure to await previous act() calls before making a new one. ');\n }\n\n actScopeDepth = prevActScopeDepth;\n }\n}\n\nfunction recursivelyFlushAsyncActWork(returnValue, resolve, reject) {\n {\n var queue = ReactCurrentActQueue.current;\n\n if (queue !== null) {\n try {\n flushActQueue(queue);\n enqueueTask(function () {\n if (queue.length === 0) {\n // No additional work was scheduled. Finish.\n ReactCurrentActQueue.current = null;\n resolve(returnValue);\n } else {\n // Keep flushing work until there's none left.\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n }\n });\n } catch (error) {\n reject(error);\n }\n } else {\n resolve(returnValue);\n }\n }\n}\n\nvar isFlushing = false;\n\nfunction flushActQueue(queue) {\n {\n if (!isFlushing) {\n // Prevent re-entrance.\n isFlushing = true;\n var i = 0;\n\n try {\n for (; i < queue.length; i++) {\n var callback = queue[i];\n\n do {\n callback = callback(true);\n } while (callback !== null);\n }\n\n queue.length = 0;\n } catch (error) {\n // If something throws, leave the remaining callbacks on the queue.\n queue = queue.slice(i + 1);\n throw error;\n } finally {\n isFlushing = false;\n }\n }\n }\n}\n\nvar createElement$1 = createElementWithValidation ;\nvar cloneElement$1 = cloneElementWithValidation ;\nvar createFactory = createFactoryWithValidation ;\nvar Children = {\n map: mapChildren,\n forEach: forEachChildren,\n count: countChildren,\n toArray: toArray,\n only: onlyChild\n};\n\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;\nexports.cloneElement = cloneElement$1;\nexports.createContext = createContext;\nexports.createElement = createElement$1;\nexports.createFactory = createFactory;\nexports.createRef = createRef;\nexports.forwardRef = forwardRef;\nexports.isValidElement = isValidElement;\nexports.lazy = lazy;\nexports.memo = memo;\nexports.startTransition = startTransition;\nexports.unstable_act = act;\nexports.useCallback = useCallback;\nexports.useContext = useContext;\nexports.useDebugValue = useDebugValue;\nexports.useDeferredValue = useDeferredValue;\nexports.useEffect = useEffect;\nexports.useId = useId;\nexports.useImperativeHandle = useImperativeHandle;\nexports.useInsertionEffect = useInsertionEffect;\nexports.useLayoutEffect = useLayoutEffect;\nexports.useMemo = useMemo;\nexports.useReducer = useReducer;\nexports.useRef = useRef;\nexports.useState = useState;\nexports.useSyncExternalStore = useSyncExternalStore;\nexports.useTransition = useTransition;\nexports.version = ReactVersion;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","function t(t){for(var n=arguments.length,i=new Array(n>1?n-1:0),r=1;rt.length)&&(n=t.length);for(var i=0,r=new Array(n);i=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}function A(t){return Object.assign((function(n,i){g(n,i,t)}),t)}function g(t,n,i){b(t,Kn)||a(t,Kn,m({},t[Kn])),function(t){return\"override\"===t.t}(i)||(t[Kn][n]=i)}function _(t,n,i){void 0===n&&(n=Rn),void 0===i&&(i=Rn);var r=new In(t);return n!==Rn&&St(r,n),i!==Rn&&Mt(r,i),r}function S(t,n,i){return It(t)?t:Array.isArray(t)?Jn.array(t,{name:i}):s(t)?Jn.object(t,void 0,{name:i}):v(t)?Jn.map(t,{name:i}):l(t)?Jn.set(t,{name:i}):\"function\"!=typeof t||At(t)||Ct(t)?t:f(t)?Ri(t):Si(i,t)}function M(t){return t}function N(t,n){return{t:t,i:n,o:E,u:V}}function E(t,n,i,r){var e;if(null!=(e=this.i)&&e.bound)return null===this.u(t,n,i,!1)?0:1;if(r===t.s)return null===this.u(t,n,i,!1)?0:2;if(At(i.value))return 1;var o=R(t,this,n,i,!1);return _n(r,n,o),2}function V(t,n,i,r){var e=R(t,this,n,i);return t.h(n,e,r)}function R(t,n,i,r,e){var o,u,s,f,a,c,h;void 0===e&&(e=yi.safeDescriptors);var v,l=r.value;return null!=(o=n.i)&&o.bound&&(l=l.bind(null!=(v=t.v)?v:t.s)),{value:z(null!=(u=null==(s=n.i)?void 0:s.name)?u:i.toString(),l,null!=(f=null==(a=n.i)?void 0:a.autoAction)&&f,null!=(c=n.i)&&c.bound?null!=(h=t.v)?h:t.s:void 0),configurable:!e||t.l,enumerable:!1,writable:!e}}function T(t,n){return{t:t,i:n,o:k,u:C}}function k(t,n,i,r){var e;if(r===t.s)return null===this.u(t,n,i,!1)?0:2;if(null!=(e=this.i)&&e.bound&&(!b(t.s,n)||!Ct(t.s[n]))&&null===this.u(t,n,i,!1))return 0;if(Ct(i.value))return 1;var o=K(t,0,0,i,!1,!1);return _n(r,n,o),2}function C(t,n,i,r){var e,o=K(t,0,0,i,null==(e=this.i)?void 0:e.bound);return t.h(n,o,r)}function K(t,n,i,r,e,o){void 0===o&&(o=yi.safeDescriptors);var u,s=r.value;return Ct(s)||(s=Ri(s)),e&&((s=s.bind(null!=(u=t.v)?u:t.s)).isMobXFlow=!0),{value:s,configurable:!o||t.l,enumerable:!1,writable:!o}}function L(t,n){return{t:t,i:n,o:I,u:P}}function I(t,n,i){return null===this.u(t,n,i,!1)?0:1}function P(t,n,i,r){return t.p(n,m({},this.i,{get:i.get,set:i.set}),r)}function D(t,n){return{t:t,i:n,o:B,u:q}}function B(t,n,i){return null===this.u(t,n,i,!1)?0:1}function q(t,n,i,r){var e,o;return t.m(n,i.value,null!=(e=null==(o=this.i)?void 0:o.enhancer)?e:S,r)}function G(t){return{t:\"true\",i:t,o:W,u:H}}function W(t,n,i,r){var e,o,u,s;if(i.get)return Zn.o(t,n,i,r);if(i.set){var a=z(n.toString(),i.set);return r===t.s?null===t.h(n,{configurable:!yi.safeDescriptors||t.l,set:a})?0:2:(_n(r,n,{configurable:!0,set:a}),2)}if(r!==t.s&&\"function\"==typeof i.value)return f(i.value)?(null!=(s=this.i)&&s.autoBind?Ri.bound:Ri).o(t,n,i,r):(null!=(u=this.i)&&u.autoBind?Si.bound:Si).o(t,n,i,r);var c,h=!1===(null==(e=this.i)?void 0:e.deep)?Jn.ref:Jn;return\"function\"==typeof i.value&&null!=(o=this.i)&&o.autoBind&&(i.value=i.value.bind(null!=(c=t.v)?c:t.s)),h.o(t,n,i,r)}function H(t,n,i,r){var e,o,u;return i.get?Zn.u(t,n,i,r):i.set?t.h(n,{configurable:!yi.safeDescriptors||t.l,set:z(n.toString(),i.set)},r):(\"function\"==typeof i.value&&null!=(e=this.i)&&e.autoBind&&(i.value=i.value.bind(null!=(u=t.v)?u:t.s)),(!1===(null==(o=this.i)?void 0:o.deep)?Jn.ref:Jn).u(t,n,i,r))}function X(t){return t||Gn}function U(t){return!0===t.deep?S:!1===t.deep?M:(n=t.defaultDecorator)&&null!=(i=null==(r=n.i)?void 0:r.enhancer)?i:S;var n,i,r}function F(t,n,i){if(!o(n))return It(t)?t:s(t)?Jn.object(t,n,i):Array.isArray(t)?Jn.array(t,n):v(t)?Jn.map(t,n):l(t)?Jn.set(t,n):\"object\"==typeof t&&null!==t?t:Jn.box(t,n);g(t,n,Wn)}function z(t,n,i,r){function e(){return $(0,i,n,r||this,arguments)}return void 0===i&&(i=!1),e.isMobxAction=!0,ri&&(ei.value=t,_n(e,\"name\",ei)),e}function $(t,n,i,r,e){var o=J(0,n);try{return i.apply(r,e)}catch(t){throw o.j=t,t}finally{Y(o)}}function J(t,n){var i=yi.trackingDerivation,r=!n||!i;dt();var e=yi.allowStateChanges;r&&(ut(),e=Z(!0));var o={O:r,A:i,g:e,_:ft(!0),S:!1,M:0,N:ii++,V:ni};return ni=o.N,o}function Y(n){ni!==n.N&&t(30),ni=n.V,void 0!==n.j&&(yi.suppressReactionErrors=!0),tt(n.g),at(n._),bt(),n.O&&st(n.A),yi.suppressReactionErrors=!1}function Q(t,n){var i=Z(t);try{return n()}finally{tt(i)}}function Z(t){var n=yi.allowStateChanges;return yi.allowStateChanges=t,n}function tt(t){yi.allowStateChanges=t}function nt(t){return t instanceof vi}function it(t){switch(t.R){case fi.T:return!1;case fi.k:case fi.C:return!0;case fi.K:for(var n=ft(!0),i=ut(),r=t.L,e=r.length,o=0;or&&(r=s.R)}for(i.length=e,t.I=null,o=n.length;o--;){var f=n[o];0===f.B&&vt(f,t),f.B=0}for(;e--;){var a=i[e];1===a.B&&(a.B=0,ht(a,t))}r!==fi.T&&(t.R=r,t.q())}(t),at(r),e}function et(t){var n=t.L;t.L=[];for(var i=n.length;i--;)vt(n[i],t);t.R=fi.k}function ot(t){var n=ut();try{return t()}finally{st(n)}}function ut(){var t=yi.trackingDerivation;return yi.trackingDerivation=null,t}function st(t){yi.trackingDerivation=t}function ft(t){var n=yi.allowStateReads;return yi.allowStateReads=t,n}function at(t){yi.allowStateReads=t}function ct(t){if(t.R!==fi.T){t.R=fi.T;for(var n=t.L,i=n.length;i--;)n[i].G=fi.T}}function ht(t,n){t.W.add(n),t.G>n.R&&(t.G=n.R)}function vt(t,n){t.W.delete(n),0===t.W.size&<(t)}function lt(t){!1===t.H&&(t.H=!0,yi.pendingUnobservations.push(t))}function dt(){yi.inBatch++}function bt(){if(0==--yi.inBatch){mt();for(var t=yi.pendingUnobservations,n=0;n0&<(t),!1)}function yt(t){t.G!==fi.C&&(t.G=fi.C,t.W.forEach((function(t){t.R===fi.T&&t.q(),t.R=fi.C})))}function mt(){yi.inBatch>0||yi.isRunningReactions||wi(wt)}function wt(){yi.isRunningReactions=!0;for(var t=yi.pendingReactions,n=0;t.length>0;){100==++n&&(console.error(\"[mobx] cycle in reaction: \"+t[0]),t.splice(0));for(var i=t.splice(0),r=0,e=i.length;r\",n,t):e(i)?z(n,i,t):o(i)?g(n,i,t?Ai:Oi):o(n)?A(N(t?\"autoAction\":\"action\",{name:n,autoAction:t})):void 0}}function xt(t){return $(0,!1,t,this,void 0)}function At(t){return e(t)&&!0===t.isMobxAction}function gt(t,n){function i(){t(o)}var r,e;void 0===n&&(n=Nn);var o,u=null!=(r=null==(e=n)?void 0:e.name)?r:\"Autorun\";if(n.scheduler||n.delay){var s=_t(n),f=!1;o=new mi(u,(function(){f||(f=!0,s((function(){f=!1,o.J||o.track(i)})))}),n.onError,n.requiresObservable)}else o=new mi(u,(function(){this.track(i)}),n.onError,n.requiresObservable);return o.Y(),o.Z()}function _t(t){return t.scheduler?t.scheduler:t.delay?function(n){return setTimeout(n,t.delay)}:Mi}function St(t,n,i){return Nt(\"onBO\",t,n,i)}function Mt(t,n,i){return Nt(\"onBUO\",t,n,i)}function Nt(t,n,i,r){var o=\"function\"==typeof r?bn(n,i):bn(n),u=e(r)?r:i,s=t+\"L\";return o[s]?o[s].add(u):o[s]=new Set([u]),function(){var t=o[s];t&&(t.delete(u),0===t.size&&delete o[s])}}function Et(t,n,i,r){var e=Cn(n),o=sn(t,r)[Ln];dt();try{kn(e).forEach((function(t){o.u(t,e[t],!i||!(t in i)||i[t])}))}finally{bt()}return t}function Vt(t){var n,i={name:t.tt};return t.L&&t.L.length>0&&(i.dependencies=(n=t.L,Array.from(new Set(n))).map(Vt)),i}function Rt(t){var n={name:t.tt};return function(t){return t.W&&t.W.size>0}(t)&&(n.observers=Array.from(function(t){return t.W}(t)).map(Rt)),n}function Tt(){this.message=\"FLOW_CANCELLED\"}function kt(t){e(t.cancel)&&t.cancel()}function Ct(t){return!0===(null==t?void 0:t.isMobXFlow)}function Kt(t,n){if(void 0===n)return hi(t);if(!1===an(t))return!1;if(!t[Ln].nt.has(n))return!1;var i=bn(t,n);return hi(i)}function Lt(t,n){return!!t&&(void 0!==n?!!an(t)&&t[Ln].nt.has(n):an(t)||!!t[Ln]||Pn(t)||ji(t)||hi(t))}function It(t){return Lt(t)}function Pt(n){return an(n)?n[Ln].it():Ui(n)||Yi(n)?Array.from(n.keys()):un(n)?n.map((function(t,n){return n})):void t(5)}function Dt(n,i){return an(n)?n[Ln].rt(i):Ui(n)||Yi(n)?n.has(i):un(n)?i>=0&&i0}function $t(t,n){var i=t.ut||(t.ut=[]);return i.push(n),r((function(){var t=i.indexOf(n);-1!==t&&i.splice(t,1)}))}function Jt(n,i){var r=ut();try{for(var e=[].concat(n.ut||[]),o=0,u=e.length;o0}function Qt(t,n){var i=t.st||(t.st=[]);return i.push(n),r((function(){var t=i.indexOf(n);-1!==t&&i.splice(t,1)}))}function Zt(t,n){var i=ut(),r=t.st;if(r){for(var e=0,o=(r=r.slice()).length;eir){for(var n=ir;n=0&&r++}n=wn(n),i=wn(i);var a=\"[object Array]\"===f;if(!a){if(\"object\"!=typeof n||\"object\"!=typeof i)return!1;var c=n.constructor,h=i.constructor;if(c!==h&&!(e(c)&&c instanceof c&&e(h)&&h instanceof h)&&\"constructor\"in n&&\"constructor\"in i)return!1}if(0===r)return!1;r<0&&(r=-1),u=u||[];for(var v=(o=o||[]).length;v--;)if(o[v]===n)return u[v]===i;if(o.push(n),u.push(i),a){if((v=n.length)!==i.length)return!1;for(;v--;)if(!t(n[v],i[v],r-1,o,u))return!1}else{var l,d=Object.keys(n);if(v=d.length,Object.keys(i).length!==v)return!1;for(;v--;)if(!b(i,l=d[v])||!t(n[l],i[l],r-1,o,u))return!1}return o.pop(),u.pop(),!0}(t,n,i)}function wn(t){return un(t)?t.slice():v(t)||Ui(t)||l(t)||Yi(t)?Array.from(t.entries()):t}function jn(t){return t[Symbol.iterator]=On,t}function On(){return this}Object.defineProperty(exports,\"__esModule\",{value:!0});var xn={},An=Object.assign,gn=Object.getOwnPropertyDescriptor,_n=Object.defineProperty,Sn=Object.prototype,Mn=[];Object.freeze(Mn);var Nn={};Object.freeze(Nn);var En=\"undefined\"!=typeof Proxy,Vn=Object.toString(),Rn=function(){},Tn=void 0!==Object.getOwnPropertySymbols,kn=\"undefined\"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:Tn?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Object.getOwnPropertyNames,Cn=Object.getOwnPropertyDescriptors||function(t){var n={};return kn(t).forEach((function(i){n[i]=gn(t,i)})),n},Kn=Symbol(\"mobx-stored-annotations\"),Ln=Symbol(\"mobx administration\"),In=function(){function t(t){void 0===t&&(t=\"Atom\"),this.tt=void 0,this.H=!1,this.X=!1,this.W=new Set,this.B=0,this.F=0,this.G=fi.k,this.onBOL=void 0,this.onBUOL=void 0,this.tt=t}var n=t.prototype;return n.onBO=function(){this.onBOL&&this.onBOL.forEach((function(t){return t()}))},n.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(t){return t()}))},n.reportObserved=function(){return pt(this)},n.reportChanged=function(){dt(),yt(this),yi.stateVersion=yi.stateVersion0&&!i.__mobxGlobals&&(bi=!1),i.__mobxGlobals&&i.__mobxGlobals.version!==(new di).version&&(bi=!1),bi?i.__mobxGlobals?(i.__mobxInstanceCount+=1,i.__mobxGlobals.UNCHANGED||(i.__mobxGlobals.UNCHANGED={}),i.__mobxGlobals):(i.__mobxInstanceCount=1,i.__mobxGlobals=new di):(setTimeout((function(){pi||t(35)}),1),new di)}(),mi=function(){function t(t,n,i,r){void 0===t&&(t=\"Reaction\"),this.tt=void 0,this.Kt=void 0,this.Lt=void 0,this.It=void 0,this.L=[],this.I=[],this.R=fi.k,this.B=0,this.D=0,this.P=0,this.J=!1,this.Pt=!1,this.Dt=!1,this.Bt=!1,this.ot=ai.NONE,this.tt=t,this.Kt=n,this.Lt=i,this.It=r}var n=t.prototype;return n.q=function(){this.Y()},n.Y=function(){this.Pt||(this.Pt=!0,yi.pendingReactions.push(this),mt())},n.isScheduled=function(){return this.Pt},n.$=function(){if(!this.J){dt(),this.Pt=!1;var t=yi.trackingContext;if(yi.trackingContext=this,it(this)){this.Dt=!0;try{this.Kt()}catch(t){this.qt(t)}}yi.trackingContext=t,bt()}},n.track=function(t){if(!this.J){dt(),this.Bt=!0;var n=yi.trackingContext;yi.trackingContext=this;var i=rt(this,t,void 0);yi.trackingContext=n,this.Bt=!1,this.Dt=!1,this.J&&et(this),nt(i)&&this.qt(i.cause),bt()}},n.qt=function(t){var n=this;if(this.Lt)this.Lt(t,this);else{if(yi.disableErrorBoundaries)throw t;yi.suppressReactionErrors||console.error(\"[mobx] uncaught error in '\"+this+\"'\",t),yi.globalReactionErrorHandlers.forEach((function(i){return i(t,n)}))}},n.dispose=function(){this.J||(this.J=!0,this.Bt||(dt(),et(this),bt()))},n.Z=function(){var t=this.dispose.bind(this);return t[Ln]=this,t},n.toString=function(){return\"Reaction[\"+this.tt+\"]\"},n.trace=function(t){void 0===t&&(t=!1),Gt(this,t)},t}(),wi=function(t){return t()},ji=h(\"Reaction\",mi),Oi=N(\"action\"),xi=N(\"action.bound\",{bound:!0}),Ai=N(\"autoAction\",{autoAction:!0}),gi=N(\"autoAction.bound\",{autoAction:!0,bound:!0}),_i=Ot(!1);Object.assign(_i,Oi);var Si=Ot(!0);Object.assign(Si,Ai),_i.bound=A(xi),Si.bound=A(gi);var Mi=function(t){return t()},Ni=0;Tt.prototype=Object.create(Error.prototype);var Ei=T(\"flow\"),Vi=T(\"flow.bound\",{bound:!0}),Ri=Object.assign((function(t,n){if(o(n))return g(t,n,Ei);var i=t,r=i.name||\"\",u=function(){var t,n=this,o=arguments,u=++Ni,s=_i(r+\" - runid: \"+u+\" - init\",i).apply(n,o),f=void 0,a=new Promise((function(n,i){function o(t){var n;f=void 0;try{n=_i(r+\" - runid: \"+u+\" - yield \"+h++,s.next).call(s,t)}catch(t){return i(t)}c(n)}function a(t){var n;f=void 0;try{n=_i(r+\" - runid: \"+u+\" - yield \"+h++,s.throw).call(s,t)}catch(t){return i(t)}c(n)}function c(t){if(!e(null==t?void 0:t.then))return t.done?n(t.value):(f=Promise.resolve(t.value)).then(o,a);t.then(c,i)}var h=0;t=i,o(void 0)}));return a.cancel=_i(r+\" - runid: \"+u+\" - cancel\",(function(){try{f&&kt(f);var n=s.return(void 0),i=Promise.resolve(n.value);i.then(Rn,Rn),kt(i),t(new Tt)}catch(n){t(n)}})),a};return u.isMobXFlow=!0,u}),Ei);Ri.bound=A(Vi);var Ti={has:function(t,n){return Ft(t).rt(n)},get:function(t,n){return Ft(t).lt(n)},set:function(t,n,i){var r;return!!o(n)&&(null==(r=Ft(t).dt(n,i,!0))||r)},deleteProperty:function(t,n){var i;return!!o(n)&&(null==(i=Ft(t).Gt(n,!0))||i)},defineProperty:function(t,n,i){var r;return null==(r=Ft(t).h(n,i))||r},ownKeys:function(t){return Ft(t).et()},preventExtensions:function(){t(13)}},ki=Symbol(\"mobx-keys\"),Ci=\"update\",Ki={get:function(t,n){var i=t[Ln];return n===Ln?i:\"length\"===n?i.Wt():\"string\"!=typeof n||isNaN(n)?b(Ii,n)?Ii[n]:t[n]:i.lt(parseInt(n))},set:function(t,n,i){var r=t[Ln];return\"length\"===n&&r.Ht(i),\"symbol\"==typeof n||isNaN(n)?t[n]=i:r.dt(parseInt(n),i),!0},preventExtensions:function(){t(15)}},Li=function(){function n(t,n,i,r){void 0===t&&(t=\"ObservableArray\"),this.Xt=void 0,this.Ut=void 0,this.at=void 0,this.nt=[],this.ut=void 0,this.st=void 0,this.Ft=void 0,this.dehancer=void 0,this.v=void 0,this.zt=0,this.Xt=i,this.Ut=r,this.at=new In(t),this.Ft=function(t,i){return n(t,i,\"ObservableArray[..]\")}}var i=n.prototype;return i.$t=function(t){return void 0!==this.dehancer?this.dehancer(t):t},i.ct=function(t){return void 0!==this.dehancer&&t.length>0?t.map(this.dehancer):t},i.At=function(t){return $t(this,t)},i.gt=function(t,n){return void 0===n&&(n=!1),n&&t({observableKind:\"array\",object:this.v,debugObjectName:this.at.tt,type:\"splice\",index:0,added:this.nt.slice(),addedCount:this.nt.length,removed:[],removedCount:0}),Qt(this,t)},i.Wt=function(){return this.at.reportObserved(),this.nt.length},i.Ht=function(n){(\"number\"!=typeof n||isNaN(n)||n<0)&&t(\"Out of range: \"+n);var i=this.nt.length;if(n!==i)if(n>i){for(var r=new Array(n-i),e=0;e0&&ln(n+i+1)},i.ft=function(t,n,i){var r=this,e=this.nt.length;if(void 0===t?t=0:t>e?t=e:t<0&&(t=Math.max(0,e+t)),n=1===arguments.length?e-t:null==n?0:Math.max(0,Math.min(n,e-t)),void 0===i&&(i=Mn),zt(this)){var o=Jt(this,{object:this.v,type:\"splice\",index:t,removedCount:n,added:i});if(!o)return Mn;n=o.removedCount,i=o.added}if(i=0===i.length?i:i.map((function(t){return r.Ft(t,void 0)})),this.Ut){var u=i.length-n;this.Jt(e,u)}var s=this.Yt(t,n,i);return 0===n&&0===i.length||this.Qt(t,i,s),this.ct(s)},i.Yt=function(t,n,i){var r;if(i.length<1e4)return(r=this.nt).splice.apply(r,[t,n].concat(i));var e=this.nt.slice(t,t+n),o=this.nt.slice(t+n);this.nt.length+=i.length-n;for(var u=0;u=this.nt.length))return this.at.reportObserved(),this.$t(this.nt[t]);console.warn(\"[mobx] Out of bounds read: \"+t)},i.dt=function(n,i){var r=this.nt;if(this.Ut&&n>r.length&&t(17,n,r.length),n2?i-2:0),e=2;e-1&&(this.splice(i,1),!0)}};nn(\"concat\",rn),nn(\"flat\",rn),nn(\"includes\",rn),nn(\"indexOf\",rn),nn(\"join\",rn),nn(\"lastIndexOf\",rn),nn(\"slice\",rn),nn(\"toString\",rn),nn(\"toLocaleString\",rn),nn(\"every\",en),nn(\"filter\",en),nn(\"find\",en),nn(\"findIndex\",en),nn(\"flatMap\",en),nn(\"forEach\",en),nn(\"map\",en),nn(\"some\",en),nn(\"reduce\",on),nn(\"reduceRight\",on);var Pi,Di,Bi=h(\"ObservableArrayAdministration\",Li),qi={},Gi=\"add\";Pi=Symbol.iterator,Di=Symbol.toStringTag;var Wi,Hi,Xi=function(){function n(n,i,r){var o=this;void 0===i&&(i=S),void 0===r&&(r=\"ObservableMap\"),this.Ft=void 0,this.tt=void 0,this[Ln]=qi,this.pt=void 0,this.yt=void 0,this.bt=void 0,this.ut=void 0,this.st=void 0,this.dehancer=void 0,this.Ft=i,this.tt=r,e(Map)||t(18),this.bt=_(\"ObservableMap.keys()\"),this.pt=new Map,this.yt=new Map,Q(!0,(function(){o.merge(n)}))}var i=n.prototype;return i.rt=function(t){return this.pt.has(t)},i.has=function(t){var n=this;if(!yi.trackingDerivation)return this.rt(t);var i=this.yt.get(t);if(!i){var r=i=new ui(this.rt(t),M,\"ObservableMap.key?\",!1);this.yt.set(t,r),Mt(r,(function(){return n.yt.delete(t)}))}return i.get()},i.set=function(t,n){var i=this.rt(t);if(zt(this)){var r=Jt(this,{type:i?Ci:Gi,object:this,newValue:n,name:t});if(!r)return this;n=r.newValue}return i?this.tn(t,n):this.nn(t,n),this},i.delete=function(t){var n=this;if(zt(this)&&!Jt(this,{type:\"delete\",object:this,name:t}))return!1;if(this.rt(t)){var i=Yt(this),r=i?{observableKind:\"map\",debugObjectName:this.tt,type:\"delete\",object:this,oldValue:this.pt.get(t).jt,name:t}:null;return Ht((function(){var i;n.bt.reportChanged(),null==(i=n.yt.get(t))||i.xt(!1),n.pt.get(t).xt(void 0),n.pt.delete(t)})),i&&Zt(this,r),!0}return!1},i.tn=function(t,n){var i=this.pt.get(t);if((n=i.Ot(n))!==yi.UNCHANGED){var r=Yt(this),e=r?{observableKind:\"map\",debugObjectName:this.tt,type:Ci,object:this,oldValue:i.jt,name:t,newValue:n}:null;i.xt(n),r&&Zt(this,e)}},i.nn=function(t,n){var i=this;Ht((function(){var r,e=new ui(n,i.Ft,\"ObservableMap.key\",!1);i.pt.set(t,e),n=e.jt,null==(r=i.yt.get(t))||r.xt(!0),i.bt.reportChanged()}));var r=Yt(this);r&&Zt(this,r?{observableKind:\"map\",debugObjectName:this.tt,type:Gi,object:this,name:t,newValue:n}:null)},i.get=function(t){return this.has(t)?this.$t(this.pt.get(t).get()):this.$t(void 0)},i.$t=function(t){return void 0!==this.dehancer?this.dehancer(t):t},i.keys=function(){return this.bt.reportObserved(),this.pt.keys()},i.values=function(){var t=this,n=this.keys();return jn({next:function(){var i=n.next(),r=i.done;return{done:r,value:r?void 0:t.get(i.value)}}})},i.entries=function(){var t=this,n=this.keys();return jn({next:function(){var i=n.next(),r=i.done,e=i.value;return{done:r,value:r?void 0:[e,t.get(e)]}}})},i[Pi]=function(){return this.entries()},i.forEach=function(t,n){for(var i,r=x(this);!(i=r()).done;){var e=i.value;t.call(n,e[1],e[0],this)}},i.merge=function(n){var i=this;return Ui(n)&&(n=new Map(n)),Ht((function(){s(n)?function(t){var n=Object.keys(t);if(!Tn)return n;var i=Object.getOwnPropertySymbols(t);return i.length?[].concat(n,i.filter((function(n){return Sn.propertyIsEnumerable.call(t,n)}))):n}(n).forEach((function(t){return i.set(t,n[t])})):Array.isArray(n)?n.forEach((function(t){return i.set(t[0],t[1])})):v(n)?(n.constructor!==Map&&t(19,n),n.forEach((function(t,n){return i.set(n,t)}))):null!=n&&t(20,n)})),this},i.clear=function(){var t=this;Ht((function(){ot((function(){for(var n,i=x(t.keys());!(n=i()).done;)t.delete(n.value)}))}))},i.replace=function(n){var i=this;return Ht((function(){for(var r,e=function(n){if(v(n)||Ui(n))return n;if(Array.isArray(n))return new Map(n);if(s(n)){var i=new Map;for(var r in n)i.set(r,n[r]);return i}return t(21,n)}(n),o=new Map,u=!1,f=x(i.pt.keys());!(r=f()).done;){var a=r.value;if(!e.has(a))if(i.delete(a))u=!0;else{var c=i.pt.get(a);o.set(a,c)}}for(var h,l=x(e.entries());!(h=l()).done;){var d=h.value,b=d[0],p=d[1],y=i.pt.has(b);if(i.set(b,p),i.pt.has(b)){var m=i.pt.get(b);o.set(b,m),y||(u=!0)}}if(!u)if(i.pt.size!==o.size)i.bt.reportChanged();else for(var w=i.pt.keys(),j=o.keys(),O=w.next(),A=j.next();!O.done;){if(O.value!==A.value){i.bt.reportChanged();break}O=w.next(),A=j.next()}i.pt=o})),this},i.toString=function(){return\"[object ObservableMap]\"},i.toJSON=function(){return Array.from(this)},i.gt=function(t){return Qt(this,t)},i.At=function(t){return $t(this,t)},y(n,[{key:\"size\",get:function(){return this.bt.reportObserved(),this.pt.size}},{key:Di,get:function(){return\"Map\"}}]),n}(),Ui=h(\"ObservableMap\",Xi),Fi={};Wi=Symbol.iterator,Hi=Symbol.toStringTag;var zi,$i,Ji=function(){function n(n,i,r){void 0===i&&(i=S),void 0===r&&(r=\"ObservableSet\"),this.tt=void 0,this[Ln]=Fi,this.pt=new Set,this.at=void 0,this.st=void 0,this.ut=void 0,this.dehancer=void 0,this.Ft=void 0,this.tt=r,e(Set)||t(22),this.at=_(this.tt),this.Ft=function(t,n){return i(t,n,r)},n&&this.replace(n)}var i=n.prototype;return i.$t=function(t){return void 0!==this.dehancer?this.dehancer(t):t},i.clear=function(){var t=this;Ht((function(){ot((function(){for(var n,i=x(t.pt.values());!(n=i()).done;)t.delete(n.value)}))}))},i.forEach=function(t,n){for(var i,r=x(this);!(i=r()).done;){var e=i.value;t.call(n,e,e,this)}},i.add=function(t){var n=this;if(zt(this)&&!Jt(this,{type:Gi,object:this,newValue:t}))return this;if(!this.has(t)){Ht((function(){n.pt.add(n.Ft(t,void 0)),n.at.reportChanged()}));var i=Yt(this);i&&Zt(this,i?{observableKind:\"set\",debugObjectName:this.tt,type:Gi,object:this,newValue:t}:null)}return this},i.delete=function(t){var n=this;if(zt(this)&&!Jt(this,{type:\"delete\",object:this,oldValue:t}))return!1;if(this.has(t)){var i=Yt(this),r=i?{observableKind:\"set\",debugObjectName:this.tt,type:\"delete\",object:this,oldValue:t}:null;return Ht((function(){n.at.reportChanged(),n.pt.delete(t)})),i&&Zt(this,r),!0}return!1},i.has=function(t){return this.at.reportObserved(),this.pt.has(this.$t(t))},i.entries=function(){var t=0,n=Array.from(this.keys()),i=Array.from(this.values());return jn({next:function(){var r=t;return t+=1,r=0&&yi.globalReactionErrorHandlers.splice(n,1)}},exports.override=Bn,exports.ownKeys=Bt,exports.reaction=function(t,n,i){function r(){if(d=!1,!p.J){var n=!1;p.track((function(){var i=Q(!1,(function(){return t(p)}));n=l||!b(s,i),f=s,s=i})),(l&&i.fireImmediately||!l&&n)&&c(s,f,p),l=!1}}var e;void 0===i&&(i=Nn);var o,u,s,f,a=null!=(e=i.name)?e:\"Reaction\",c=_i(a,i.onError?(o=i.onError,u=n,function(){try{return u.apply(this,arguments)}catch(t){o.call(this,t)}}):n),h=!i.scheduler&&!i.delay,v=_t(i),l=!0,d=!1,b=i.compareStructural?Dn.structural:i.equals||Dn.default,p=new mi(a,(function(){l||h?r():d||(d=!0,v(r))}),i.onError,i.requiresObservable);return p.Y(),p.Z()},exports.remove=function(n,i){an(n)?n[Ln].Gt(i):Ui(n)||Yi(n)?n.delete(i):un(n)?(\"number\"!=typeof i&&(i=parseInt(i,10)),n.splice(i,1)):t(9)},exports.runInAction=xt,exports.set=function n(i,r,e){if(2!==arguments.length||Yi(i))an(i)?i[Ln].dt(r,e):Ui(i)?i.set(r,e):Yi(i)?i.add(r):un(i)?(\"number\"!=typeof r&&(r=parseInt(r,10)),r<0&&t(\"Invalid index: '\"+r+\"'\"),dt(),r>=i.length&&(i.length=r+1),i[r]=e,bt()):t(8);else{dt();var o=r;try{for(var u in o)n(i,u,o[u])}finally{bt()}}},exports.spy=jt,exports.toJS=function(t){return function t(n,i){if(null==n||\"object\"!=typeof n||n instanceof Date||!It(n))return n;if(si(n)||hi(n))return t(n.get(),i);if(i.has(n))return i.get(n);if(un(n)){var r=qt(i,n,new Array(n.length));return n.forEach((function(n,e){r[e]=t(n,i)})),r}if(Yi(n)){var e=qt(i,n,new Set);return n.forEach((function(n){e.add(t(n,i))})),e}if(Ui(n)){var o=qt(i,n,new Map);return n.forEach((function(n,r){o.set(r,t(n,i))})),o}var u=qt(i,n,{});return Bt(n).forEach((function(r){Sn.propertyIsEnumerable.call(n,r)&&(u[r]=t(n[r],i))})),u}(t,new Map)},exports.trace=Gt,exports.transaction=Ht,exports.untracked=ot,exports.values=function(n){return an(n)?Pt(n).map((function(t){return n[t]})):Ui(n)?Pt(n).map((function(t){return n.get(t)})):Yi(n)?Array.from(n.values()):un(n)?n.slice():void t(6)},exports.when=function(t,n,i){return 1===arguments.length||n&&\"object\"==typeof n?Ut(t,n):Xt(t,n,i||{})};\n//# sourceMappingURL=mobx.cjs.production.min.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar niceErrors = {\n 0: \"Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'\",\n 1: function _(annotationType, key) {\n return \"Cannot apply '\" + annotationType + \"' to '\" + key.toString() + \"': Field not found.\";\n },\n /*\r\n 2(prop) {\r\n return `invalid decorator for '${prop.toString()}'`\r\n },\r\n 3(prop) {\r\n return `Cannot decorate '${prop.toString()}': action can only be used on properties with a function value.`\r\n },\r\n 4(prop) {\r\n return `Cannot decorate '${prop.toString()}': computed can only be used on getter properties.`\r\n },\r\n */\n 5: \"'keys()' can only be used on observable objects, arrays, sets and maps\",\n 6: \"'values()' can only be used on observable objects, arrays, sets and maps\",\n 7: \"'entries()' can only be used on observable objects, arrays and maps\",\n 8: \"'set()' can only be used on observable objects, arrays and maps\",\n 9: \"'remove()' can only be used on observable objects, arrays and maps\",\n 10: \"'has()' can only be used on observable objects, arrays and maps\",\n 11: \"'get()' can only be used on observable objects, arrays and maps\",\n 12: \"Invalid annotation\",\n 13: \"Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)\",\n 14: \"Intercept handlers should return nothing or a change object\",\n 15: \"Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)\",\n 16: \"Modification exception: the internal structure of an observable array was changed.\",\n 17: function _(index, length) {\n return \"[mobx.array] Index out of bounds, \" + index + \" is larger than \" + length;\n },\n 18: \"mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js\",\n 19: function _(other) {\n return \"Cannot initialize from classes that inherit from Map: \" + other.constructor.name;\n },\n 20: function _(other) {\n return \"Cannot initialize map from \" + other;\n },\n 21: function _(dataStructure) {\n return \"Cannot convert to map from '\" + dataStructure + \"'\";\n },\n 22: \"mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js\",\n 23: \"It is not possible to get index atoms from arrays\",\n 24: function _(thing) {\n return \"Cannot obtain administration from \" + thing;\n },\n 25: function _(property, name) {\n return \"the entry '\" + property + \"' does not exist in the observable map '\" + name + \"'\";\n },\n 26: \"please specify a property\",\n 27: function _(property, name) {\n return \"no observable property '\" + property.toString() + \"' found on the observable object '\" + name + \"'\";\n },\n 28: function _(thing) {\n return \"Cannot obtain atom from \" + thing;\n },\n 29: \"Expecting some object\",\n 30: \"invalid action stack. did you forget to finish an action?\",\n 31: \"missing option for computed: get\",\n 32: function _(name, derivation) {\n return \"Cycle detected in computation \" + name + \": \" + derivation;\n },\n 33: function _(name) {\n return \"The setter of computed value '\" + name + \"' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?\";\n },\n 34: function _(name) {\n return \"[ComputedValue '\" + name + \"'] It is not possible to assign a new value to a computed value.\";\n },\n 35: \"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`\",\n 36: \"isolateGlobalState should be called before MobX is running any reactions\",\n 37: function _(method) {\n return \"[mobx] `observableArray.\" + method + \"()` mutates the array in-place, which is not allowed inside a derivation. Use `array.slice().\" + method + \"()` instead\";\n },\n 38: \"'ownKeys()' can only be used on observable objects\",\n 39: \"'defineProperty()' can only be used on observable objects\"\n};\nvar errors = niceErrors ;\nfunction die(error) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n {\n var e = typeof error === \"string\" ? error : errors[error];\n if (typeof e === \"function\") e = e.apply(null, args);\n throw new Error(\"[MobX] \" + e);\n }\n}\n\nvar mockGlobal = {};\nfunction getGlobal() {\n if (typeof globalThis !== \"undefined\") {\n return globalThis;\n }\n if (typeof window !== \"undefined\") {\n return window;\n }\n if (typeof global !== \"undefined\") {\n return global;\n }\n if (typeof self !== \"undefined\") {\n return self;\n }\n return mockGlobal;\n}\n\n// We shorten anything used > 5 times\nvar assign = Object.assign;\nvar getDescriptor = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar objectPrototype = Object.prototype;\nvar EMPTY_ARRAY = [];\nObject.freeze(EMPTY_ARRAY);\nvar EMPTY_OBJECT = {};\nObject.freeze(EMPTY_OBJECT);\nvar hasProxy = typeof Proxy !== \"undefined\";\nvar plainObjectString = /*#__PURE__*/Object.toString();\nfunction assertProxies() {\n if (!hasProxy) {\n die( \"`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`\" );\n }\n}\nfunction warnAboutProxyRequirement(msg) {\n if ( globalState.verifyProxies) {\n die(\"MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to \" + msg);\n }\n}\nfunction getNextId() {\n return ++globalState.mobxGuid;\n}\n/**\r\n * Makes sure that the provided function is invoked at most once.\r\n */\nfunction once(func) {\n var invoked = false;\n return function () {\n if (invoked) {\n return;\n }\n invoked = true;\n return func.apply(this, arguments);\n };\n}\nvar noop = function noop() {};\nfunction isFunction(fn) {\n return typeof fn === \"function\";\n}\nfunction isStringish(value) {\n var t = typeof value;\n switch (t) {\n case \"string\":\n case \"symbol\":\n case \"number\":\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && typeof value === \"object\";\n}\nfunction isPlainObject(value) {\n if (!isObject(value)) {\n return false;\n }\n var proto = Object.getPrototypeOf(value);\n if (proto == null) {\n return true;\n }\n var protoConstructor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof protoConstructor === \"function\" && protoConstructor.toString() === plainObjectString;\n}\n// https://stackoverflow.com/a/37865170\nfunction isGenerator(obj) {\n var constructor = obj == null ? void 0 : obj.constructor;\n if (!constructor) {\n return false;\n }\n if (\"GeneratorFunction\" === constructor.name || \"GeneratorFunction\" === constructor.displayName) {\n return true;\n }\n return false;\n}\nfunction addHiddenProp(object, propName, value) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: true,\n configurable: true,\n value: value\n });\n}\nfunction addHiddenFinalProp(object, propName, value) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: false,\n configurable: true,\n value: value\n });\n}\nfunction createInstanceofPredicate(name, theClass) {\n var propName = \"isMobX\" + name;\n theClass.prototype[propName] = true;\n return function (x) {\n return isObject(x) && x[propName] === true;\n };\n}\nfunction isES6Map(thing) {\n return thing instanceof Map;\n}\nfunction isES6Set(thing) {\n return thing instanceof Set;\n}\nvar hasGetOwnPropertySymbols = typeof Object.getOwnPropertySymbols !== \"undefined\";\n/**\r\n * Returns the following: own enumerable keys and symbols.\r\n */\nfunction getPlainObjectKeys(object) {\n var keys = Object.keys(object);\n // Not supported in IE, so there are not going to be symbol props anyway...\n if (!hasGetOwnPropertySymbols) {\n return keys;\n }\n var symbols = Object.getOwnPropertySymbols(object);\n if (!symbols.length) {\n return keys;\n }\n return [].concat(keys, symbols.filter(function (s) {\n return objectPrototype.propertyIsEnumerable.call(object, s);\n }));\n}\n// From Immer utils\n// Returns all own keys, including non-enumerable and symbolic\nvar ownKeys = typeof Reflect !== \"undefined\" && Reflect.ownKeys ? Reflect.ownKeys : hasGetOwnPropertySymbols ? function (obj) {\n return Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj));\n} : /* istanbul ignore next */Object.getOwnPropertyNames;\nfunction stringifyKey(key) {\n if (typeof key === \"string\") {\n return key;\n }\n if (typeof key === \"symbol\") {\n return key.toString();\n }\n return new String(key).toString();\n}\nfunction toPrimitive(value) {\n return value === null ? null : typeof value === \"object\" ? \"\" + value : value;\n}\nfunction hasProp(target, prop) {\n return objectPrototype.hasOwnProperty.call(target, prop);\n}\n// From Immer utils\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors || function getOwnPropertyDescriptors(target) {\n // Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n var res = {};\n // Note: without polyfill for ownKeys, symbols won't be picked up\n ownKeys(target).forEach(function (key) {\n res[key] = getDescriptor(target, key);\n });\n return res;\n};\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nvar storedAnnotationsSymbol = /*#__PURE__*/Symbol(\"mobx-stored-annotations\");\n/**\r\n * Creates a function that acts as\r\n * - decorator\r\n * - annotation object\r\n */\nfunction createDecoratorAnnotation(annotation) {\n function decorator(target, property) {\n storeAnnotation(target, property, annotation);\n }\n return Object.assign(decorator, annotation);\n}\n/**\r\n * Stores annotation to prototype,\r\n * so it can be inspected later by `makeObservable` called from constructor\r\n */\nfunction storeAnnotation(prototype, key, annotation) {\n if (!hasProp(prototype, storedAnnotationsSymbol)) {\n addHiddenProp(prototype, storedAnnotationsSymbol, _extends({}, prototype[storedAnnotationsSymbol]));\n }\n // @override must override something\n if ( isOverride(annotation) && !hasProp(prototype[storedAnnotationsSymbol], key)) {\n var fieldName = prototype.constructor.name + \".prototype.\" + key.toString();\n die(\"'\" + fieldName + \"' is decorated with 'override', \" + \"but no such decorated member was found on prototype.\");\n }\n // Cannot re-decorate\n assertNotDecorated(prototype, annotation, key);\n // Ignore override\n if (!isOverride(annotation)) {\n prototype[storedAnnotationsSymbol][key] = annotation;\n }\n}\nfunction assertNotDecorated(prototype, annotation, key) {\n if ( !isOverride(annotation) && hasProp(prototype[storedAnnotationsSymbol], key)) {\n var fieldName = prototype.constructor.name + \".prototype.\" + key.toString();\n var currentAnnotationType = prototype[storedAnnotationsSymbol][key].annotationType_;\n var requestedAnnotationType = annotation.annotationType_;\n die(\"Cannot apply '@\" + requestedAnnotationType + \"' to '\" + fieldName + \"':\" + (\"\\nThe field is already decorated with '@\" + currentAnnotationType + \"'.\") + \"\\nRe-decorating fields is not allowed.\" + \"\\nUse '@override' decorator for methods overridden by subclass.\");\n }\n}\n/**\r\n * Collects annotations from prototypes and stores them on target (instance)\r\n */\nfunction collectStoredAnnotations(target) {\n if (!hasProp(target, storedAnnotationsSymbol)) {\n if ( !target[storedAnnotationsSymbol]) {\n die(\"No annotations were passed to makeObservable, but no decorated members have been found either\");\n }\n // We need a copy as we will remove annotation from the list once it's applied.\n addHiddenProp(target, storedAnnotationsSymbol, _extends({}, target[storedAnnotationsSymbol]));\n }\n return target[storedAnnotationsSymbol];\n}\n\nvar $mobx = /*#__PURE__*/Symbol(\"mobx administration\");\nvar Atom = /*#__PURE__*/function () {\n // for effective unobserving. BaseAtom has true, for extra optimization, so its onBecomeUnobserved never gets called, because it's not needed\n\n /**\r\n * Create a new atom. For debugging purposes it is recommended to give it a name.\r\n * The onBecomeObserved and onBecomeUnobserved callbacks can be used for resource management.\r\n */\n function Atom(name_) {\n if (name_ === void 0) {\n name_ = \"Atom@\" + getNextId() ;\n }\n this.name_ = void 0;\n this.isPendingUnobservation_ = false;\n this.isBeingObserved_ = false;\n this.observers_ = new Set();\n this.diffValue_ = 0;\n this.lastAccessedBy_ = 0;\n this.lowestObserverState_ = IDerivationState_.NOT_TRACKING_;\n this.onBOL = void 0;\n this.onBUOL = void 0;\n this.name_ = name_;\n }\n // onBecomeObservedListeners\n var _proto = Atom.prototype;\n _proto.onBO = function onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(function (listener) {\n return listener();\n });\n }\n };\n _proto.onBUO = function onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(function (listener) {\n return listener();\n });\n }\n }\n /**\r\n * Invoke this method to notify mobx that your atom has been used somehow.\r\n * Returns true if there is currently a reactive context.\r\n */;\n _proto.reportObserved = function reportObserved$1() {\n return reportObserved(this);\n }\n /**\r\n * Invoke this method _after_ this method has changed to signal mobx that all its observers should invalidate.\r\n */;\n _proto.reportChanged = function reportChanged() {\n startBatch();\n propagateChanged(this);\n // We could update state version only at the end of batch,\n // but we would still have to switch some global flag here to signal a change.\n globalState.stateVersion = globalState.stateVersion < Number.MAX_SAFE_INTEGER ? globalState.stateVersion + 1 : Number.MIN_SAFE_INTEGER;\n endBatch();\n };\n _proto.toString = function toString() {\n return this.name_;\n };\n return Atom;\n}();\nvar isAtom = /*#__PURE__*/createInstanceofPredicate(\"Atom\", Atom);\nfunction createAtom(name, onBecomeObservedHandler, onBecomeUnobservedHandler) {\n if (onBecomeObservedHandler === void 0) {\n onBecomeObservedHandler = noop;\n }\n if (onBecomeUnobservedHandler === void 0) {\n onBecomeUnobservedHandler = noop;\n }\n var atom = new Atom(name);\n // default `noop` listener will not initialize the hook Set\n if (onBecomeObservedHandler !== noop) {\n onBecomeObserved(atom, onBecomeObservedHandler);\n }\n if (onBecomeUnobservedHandler !== noop) {\n onBecomeUnobserved(atom, onBecomeUnobservedHandler);\n }\n return atom;\n}\n\nfunction identityComparer(a, b) {\n return a === b;\n}\nfunction structuralComparer(a, b) {\n return deepEqual(a, b);\n}\nfunction shallowComparer(a, b) {\n return deepEqual(a, b, 1);\n}\nfunction defaultComparer(a, b) {\n if (Object.is) {\n return Object.is(a, b);\n }\n return a === b ? a !== 0 || 1 / a === 1 / b : a !== a && b !== b;\n}\nvar comparer = {\n identity: identityComparer,\n structural: structuralComparer,\n \"default\": defaultComparer,\n shallow: shallowComparer\n};\n\nfunction deepEnhancer(v, _, name) {\n // it is an observable already, done\n if (isObservable(v)) {\n return v;\n }\n // something that can be converted and mutated?\n if (Array.isArray(v)) {\n return observable.array(v, {\n name: name\n });\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, {\n name: name\n });\n }\n if (isES6Map(v)) {\n return observable.map(v, {\n name: name\n });\n }\n if (isES6Set(v)) {\n return observable.set(v, {\n name: name\n });\n }\n if (typeof v === \"function\" && !isAction(v) && !isFlow(v)) {\n if (isGenerator(v)) {\n return flow(v);\n } else {\n return autoAction(name, v);\n }\n }\n return v;\n}\nfunction shallowEnhancer(v, _, name) {\n if (v === undefined || v === null) {\n return v;\n }\n if (isObservableObject(v) || isObservableArray(v) || isObservableMap(v) || isObservableSet(v)) {\n return v;\n }\n if (Array.isArray(v)) {\n return observable.array(v, {\n name: name,\n deep: false\n });\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, {\n name: name,\n deep: false\n });\n }\n if (isES6Map(v)) {\n return observable.map(v, {\n name: name,\n deep: false\n });\n }\n if (isES6Set(v)) {\n return observable.set(v, {\n name: name,\n deep: false\n });\n }\n {\n die(\"The shallow modifier / decorator can only used in combination with arrays, objects, maps and sets\");\n }\n}\nfunction referenceEnhancer(newValue) {\n // never turn into an observable\n return newValue;\n}\nfunction refStructEnhancer(v, oldValue) {\n if ( isObservable(v)) {\n die(\"observable.struct should not be used with observable values\");\n }\n if (deepEqual(v, oldValue)) {\n return oldValue;\n }\n return v;\n}\n\nvar OVERRIDE = \"override\";\nvar override = /*#__PURE__*/createDecoratorAnnotation({\n annotationType_: OVERRIDE,\n make_: make_,\n extend_: extend_\n});\nfunction isOverride(annotation) {\n return annotation.annotationType_ === OVERRIDE;\n}\nfunction make_(adm, key) {\n // Must not be plain object\n if ( adm.isPlainObject_) {\n die(\"Cannot apply '\" + this.annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + this.annotationType_ + \"' cannot be used on plain objects.\"));\n }\n // Must override something\n if ( !hasProp(adm.appliedAnnotations_, key)) {\n die(\"'\" + adm.name_ + \".\" + key.toString() + \"' is annotated with '\" + this.annotationType_ + \"', \" + \"but no such annotated member was found on prototype.\");\n }\n return 0 /* Cancel */;\n}\n\nfunction extend_(adm, key, descriptor, proxyTrap) {\n die(\"'\" + this.annotationType_ + \"' can only be used with 'makeObservable'\");\n}\n\nfunction createActionAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$1,\n extend_: extend_$1\n };\n}\nfunction make_$1(adm, key, descriptor, source) {\n var _this$options_;\n // bound\n if ((_this$options_ = this.options_) != null && _this$options_.bound) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* Cancel */ : 1 /* Break */;\n }\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* Cancel */ : 2 /* Continue */;\n }\n // prototype\n if (isAction(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return 1 /* Break */;\n }\n\n var actionDescriptor = createActionDescriptor(adm, this, key, descriptor, false);\n defineProperty(source, key, actionDescriptor);\n return 2 /* Continue */;\n}\n\nfunction extend_$1(adm, key, descriptor, proxyTrap) {\n var actionDescriptor = createActionDescriptor(adm, this, key, descriptor);\n return adm.defineProperty_(key, actionDescriptor, proxyTrap);\n}\nfunction assertActionDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var value = _ref2.value;\n if ( !isFunction(value)) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' can only be used on properties with a function value.\"));\n }\n}\nfunction createActionDescriptor(adm, annotation, key, descriptor,\n// provides ability to disable safeDescriptors for prototypes\nsafeDescriptors) {\n var _annotation$options_, _annotation$options_$, _annotation$options_2, _annotation$options_$2, _annotation$options_3, _annotation$options_4, _adm$proxy_2;\n if (safeDescriptors === void 0) {\n safeDescriptors = globalState.safeDescriptors;\n }\n assertActionDescriptor(adm, annotation, key, descriptor);\n var value = descriptor.value;\n if ((_annotation$options_ = annotation.options_) != null && _annotation$options_.bound) {\n var _adm$proxy_;\n value = value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n }\n return {\n value: createAction((_annotation$options_$ = (_annotation$options_2 = annotation.options_) == null ? void 0 : _annotation$options_2.name) != null ? _annotation$options_$ : key.toString(), value, (_annotation$options_$2 = (_annotation$options_3 = annotation.options_) == null ? void 0 : _annotation$options_3.autoAction) != null ? _annotation$options_$2 : false,\n // https://github.com/mobxjs/mobx/discussions/3140\n (_annotation$options_4 = annotation.options_) != null && _annotation$options_4.bound ? (_adm$proxy_2 = adm.proxy_) != null ? _adm$proxy_2 : adm.target_ : undefined),\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n };\n}\n\nfunction createFlowAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$2,\n extend_: extend_$2\n };\n}\nfunction make_$2(adm, key, descriptor, source) {\n var _this$options_;\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* Cancel */ : 2 /* Continue */;\n }\n // prototype\n // bound - must annotate protos to support super.flow()\n if ((_this$options_ = this.options_) != null && _this$options_.bound && (!hasProp(adm.target_, key) || !isFlow(adm.target_[key]))) {\n if (this.extend_(adm, key, descriptor, false) === null) {\n return 0 /* Cancel */;\n }\n }\n\n if (isFlow(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return 1 /* Break */;\n }\n\n var flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, false, false);\n defineProperty(source, key, flowDescriptor);\n return 2 /* Continue */;\n}\n\nfunction extend_$2(adm, key, descriptor, proxyTrap) {\n var _this$options_2;\n var flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, (_this$options_2 = this.options_) == null ? void 0 : _this$options_2.bound);\n return adm.defineProperty_(key, flowDescriptor, proxyTrap);\n}\nfunction assertFlowDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var value = _ref2.value;\n if ( !isFunction(value)) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' can only be used on properties with a generator function value.\"));\n }\n}\nfunction createFlowDescriptor(adm, annotation, key, descriptor, bound,\n// provides ability to disable safeDescriptors for prototypes\nsafeDescriptors) {\n if (safeDescriptors === void 0) {\n safeDescriptors = globalState.safeDescriptors;\n }\n assertFlowDescriptor(adm, annotation, key, descriptor);\n var value = descriptor.value;\n // In case of flow.bound, the descriptor can be from already annotated prototype\n if (!isFlow(value)) {\n value = flow(value);\n }\n if (bound) {\n var _adm$proxy_;\n // We do not keep original function around, so we bind the existing flow\n value = value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n // This is normally set by `flow`, but `bind` returns new function...\n value.isMobXFlow = true;\n }\n return {\n value: value,\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n };\n}\n\nfunction createComputedAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$3,\n extend_: extend_$3\n };\n}\nfunction make_$3(adm, key, descriptor) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* Cancel */ : 1 /* Break */;\n}\n\nfunction extend_$3(adm, key, descriptor, proxyTrap) {\n assertComputedDescriptor(adm, this, key, descriptor);\n return adm.defineComputedProperty_(key, _extends({}, this.options_, {\n get: descriptor.get,\n set: descriptor.set\n }), proxyTrap);\n}\nfunction assertComputedDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var get = _ref2.get;\n if ( !get) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' can only be used on getter(+setter) properties.\"));\n }\n}\n\nfunction createObservableAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$4,\n extend_: extend_$4\n };\n}\nfunction make_$4(adm, key, descriptor) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* Cancel */ : 1 /* Break */;\n}\n\nfunction extend_$4(adm, key, descriptor, proxyTrap) {\n var _this$options_$enhanc, _this$options_;\n assertObservableDescriptor(adm, this, key, descriptor);\n return adm.defineObservableProperty_(key, descriptor.value, (_this$options_$enhanc = (_this$options_ = this.options_) == null ? void 0 : _this$options_.enhancer) != null ? _this$options_$enhanc : deepEnhancer, proxyTrap);\n}\nfunction assertObservableDescriptor(adm, _ref, key, descriptor) {\n var annotationType_ = _ref.annotationType_;\n if ( !(\"value\" in descriptor)) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' cannot be used on getter/setter properties\"));\n }\n}\n\nvar AUTO = \"true\";\nvar autoAnnotation = /*#__PURE__*/createAutoAnnotation();\nfunction createAutoAnnotation(options) {\n return {\n annotationType_: AUTO,\n options_: options,\n make_: make_$5,\n extend_: extend_$5\n };\n}\nfunction make_$5(adm, key, descriptor, source) {\n var _this$options_3, _this$options_4;\n // getter -> computed\n if (descriptor.get) {\n return computed.make_(adm, key, descriptor, source);\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.make_\n var set = createAction(key.toString(), descriptor.set);\n // own\n if (source === adm.target_) {\n return adm.defineProperty_(key, {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set: set\n }) === null ? 0 /* Cancel */ : 2 /* Continue */;\n }\n // proto\n defineProperty(source, key, {\n configurable: true,\n set: set\n });\n return 2 /* Continue */;\n }\n // function on proto -> autoAction/flow\n if (source !== adm.target_ && typeof descriptor.value === \"function\") {\n var _this$options_2;\n if (isGenerator(descriptor.value)) {\n var _this$options_;\n var flowAnnotation = (_this$options_ = this.options_) != null && _this$options_.autoBind ? flow.bound : flow;\n return flowAnnotation.make_(adm, key, descriptor, source);\n }\n var actionAnnotation = (_this$options_2 = this.options_) != null && _this$options_2.autoBind ? autoAction.bound : autoAction;\n return actionAnnotation.make_(adm, key, descriptor, source);\n }\n // other -> observable\n // Copy props from proto as well, see test:\n // \"decorate should work with Object.create\"\n var observableAnnotation = ((_this$options_3 = this.options_) == null ? void 0 : _this$options_3.deep) === false ? observable.ref : observable;\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && (_this$options_4 = this.options_) != null && _this$options_4.autoBind) {\n var _adm$proxy_;\n descriptor.value = descriptor.value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n }\n return observableAnnotation.make_(adm, key, descriptor, source);\n}\nfunction extend_$5(adm, key, descriptor, proxyTrap) {\n var _this$options_5, _this$options_6;\n // getter -> computed\n if (descriptor.get) {\n return computed.extend_(adm, key, descriptor, proxyTrap);\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.extend_\n return adm.defineProperty_(key, {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set: createAction(key.toString(), descriptor.set)\n }, proxyTrap);\n }\n // other -> observable\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && (_this$options_5 = this.options_) != null && _this$options_5.autoBind) {\n var _adm$proxy_2;\n descriptor.value = descriptor.value.bind((_adm$proxy_2 = adm.proxy_) != null ? _adm$proxy_2 : adm.target_);\n }\n var observableAnnotation = ((_this$options_6 = this.options_) == null ? void 0 : _this$options_6.deep) === false ? observable.ref : observable;\n return observableAnnotation.extend_(adm, key, descriptor, proxyTrap);\n}\n\nvar OBSERVABLE = \"observable\";\nvar OBSERVABLE_REF = \"observable.ref\";\nvar OBSERVABLE_SHALLOW = \"observable.shallow\";\nvar OBSERVABLE_STRUCT = \"observable.struct\";\n// Predefined bags of create observable options, to avoid allocating temporarily option objects\n// in the majority of cases\nvar defaultCreateObservableOptions = {\n deep: true,\n name: undefined,\n defaultDecorator: undefined,\n proxy: true\n};\nObject.freeze(defaultCreateObservableOptions);\nfunction asCreateObservableOptions(thing) {\n return thing || defaultCreateObservableOptions;\n}\nvar observableAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE);\nvar observableRefAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE_REF, {\n enhancer: referenceEnhancer\n});\nvar observableShallowAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE_SHALLOW, {\n enhancer: shallowEnhancer\n});\nvar observableStructAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE_STRUCT, {\n enhancer: refStructEnhancer\n});\nvar observableDecoratorAnnotation = /*#__PURE__*/createDecoratorAnnotation(observableAnnotation);\nfunction getEnhancerFromOptions(options) {\n return options.deep === true ? deepEnhancer : options.deep === false ? referenceEnhancer : getEnhancerFromAnnotation(options.defaultDecorator);\n}\nfunction getAnnotationFromOptions(options) {\n var _options$defaultDecor;\n return options ? (_options$defaultDecor = options.defaultDecorator) != null ? _options$defaultDecor : createAutoAnnotation(options) : undefined;\n}\nfunction getEnhancerFromAnnotation(annotation) {\n var _annotation$options_$, _annotation$options_;\n return !annotation ? deepEnhancer : (_annotation$options_$ = (_annotation$options_ = annotation.options_) == null ? void 0 : _annotation$options_.enhancer) != null ? _annotation$options_$ : deepEnhancer;\n}\n/**\r\n * Turns an object, array or function into a reactive structure.\r\n * @param v the value which should become observable.\r\n */\nfunction createObservable(v, arg2, arg3) {\n // @observable someProp;\n if (isStringish(arg2)) {\n storeAnnotation(v, arg2, observableAnnotation);\n return;\n }\n // already observable - ignore\n if (isObservable(v)) {\n return v;\n }\n // plain object\n if (isPlainObject(v)) {\n return observable.object(v, arg2, arg3);\n }\n // Array\n if (Array.isArray(v)) {\n return observable.array(v, arg2);\n }\n // Map\n if (isES6Map(v)) {\n return observable.map(v, arg2);\n }\n // Set\n if (isES6Set(v)) {\n return observable.set(v, arg2);\n }\n // other object - ignore\n if (typeof v === \"object\" && v !== null) {\n return v;\n }\n // anything else\n return observable.box(v, arg2);\n}\nassign(createObservable, observableDecoratorAnnotation);\nvar observableFactories = {\n box: function box(value, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableValue(value, getEnhancerFromOptions(o), o.name, true, o.equals);\n },\n array: function array(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return (globalState.useProxies === false || o.proxy === false ? createLegacyArray : createObservableArray)(initialValues, getEnhancerFromOptions(o), o.name);\n },\n map: function map(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableMap(initialValues, getEnhancerFromOptions(o), o.name);\n },\n set: function set(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableSet(initialValues, getEnhancerFromOptions(o), o.name);\n },\n object: function object(props, decorators, options) {\n return extendObservable(globalState.useProxies === false || (options == null ? void 0 : options.proxy) === false ? asObservableObject({}, options) : asDynamicObservableObject({}, options), props, decorators);\n },\n ref: /*#__PURE__*/createDecoratorAnnotation(observableRefAnnotation),\n shallow: /*#__PURE__*/createDecoratorAnnotation(observableShallowAnnotation),\n deep: observableDecoratorAnnotation,\n struct: /*#__PURE__*/createDecoratorAnnotation(observableStructAnnotation)\n};\n// eslint-disable-next-line\nvar observable = /*#__PURE__*/assign(createObservable, observableFactories);\n\nvar COMPUTED = \"computed\";\nvar COMPUTED_STRUCT = \"computed.struct\";\nvar computedAnnotation = /*#__PURE__*/createComputedAnnotation(COMPUTED);\nvar computedStructAnnotation = /*#__PURE__*/createComputedAnnotation(COMPUTED_STRUCT, {\n equals: comparer.structural\n});\n/**\r\n * Decorator for class properties: @computed get value() { return expr; }.\r\n * For legacy purposes also invokable as ES5 observable created: `computed(() => expr)`;\r\n */\nvar computed = function computed(arg1, arg2) {\n if (isStringish(arg2)) {\n // @computed\n return storeAnnotation(arg1, arg2, computedAnnotation);\n }\n if (isPlainObject(arg1)) {\n // @computed({ options })\n return createDecoratorAnnotation(createComputedAnnotation(COMPUTED, arg1));\n }\n // computed(expr, options?)\n {\n if (!isFunction(arg1)) {\n die(\"First argument to `computed` should be an expression.\");\n }\n if (isFunction(arg2)) {\n die(\"A setter as second argument is no longer supported, use `{ set: fn }` option instead\");\n }\n }\n var opts = isPlainObject(arg2) ? arg2 : {};\n opts.get = arg1;\n opts.name || (opts.name = arg1.name || \"\"); /* for generated name */\n return new ComputedValue(opts);\n};\nObject.assign(computed, computedAnnotation);\ncomputed.struct = /*#__PURE__*/createDecoratorAnnotation(computedStructAnnotation);\n\nvar _getDescriptor$config, _getDescriptor;\n// we don't use globalState for these in order to avoid possible issues with multiple\n// mobx versions\nvar currentActionId = 0;\nvar nextActionId = 1;\nvar isFunctionNameConfigurable = (_getDescriptor$config = (_getDescriptor = /*#__PURE__*/getDescriptor(function () {}, \"name\")) == null ? void 0 : _getDescriptor.configurable) != null ? _getDescriptor$config : false;\n// we can safely recycle this object\nvar tmpNameDescriptor = {\n value: \"action\",\n configurable: true,\n writable: false,\n enumerable: false\n};\nfunction createAction(actionName, fn, autoAction, ref) {\n if (autoAction === void 0) {\n autoAction = false;\n }\n {\n if (!isFunction(fn)) {\n die(\"`action` can only be invoked on functions\");\n }\n if (typeof actionName !== \"string\" || !actionName) {\n die(\"actions should have valid names, got: '\" + actionName + \"'\");\n }\n }\n function res() {\n return executeAction(actionName, autoAction, fn, ref || this, arguments);\n }\n res.isMobxAction = true;\n if (isFunctionNameConfigurable) {\n tmpNameDescriptor.value = actionName;\n defineProperty(res, \"name\", tmpNameDescriptor);\n }\n return res;\n}\nfunction executeAction(actionName, canRunAsDerivation, fn, scope, args) {\n var runInfo = _startAction(actionName, canRunAsDerivation, scope, args);\n try {\n return fn.apply(scope, args);\n } catch (err) {\n runInfo.error_ = err;\n throw err;\n } finally {\n _endAction(runInfo);\n }\n}\nfunction _startAction(actionName, canRunAsDerivation,\n// true for autoAction\nscope, args) {\n var notifySpy_ = isSpyEnabled() && !!actionName;\n var startTime_ = 0;\n if ( notifySpy_) {\n startTime_ = Date.now();\n var flattenedArgs = args ? Array.from(args) : EMPTY_ARRAY;\n spyReportStart({\n type: ACTION,\n name: actionName,\n object: scope,\n arguments: flattenedArgs\n });\n }\n var prevDerivation_ = globalState.trackingDerivation;\n var runAsAction = !canRunAsDerivation || !prevDerivation_;\n startBatch();\n var prevAllowStateChanges_ = globalState.allowStateChanges; // by default preserve previous allow\n if (runAsAction) {\n untrackedStart();\n prevAllowStateChanges_ = allowStateChangesStart(true);\n }\n var prevAllowStateReads_ = allowStateReadsStart(true);\n var runInfo = {\n runAsAction_: runAsAction,\n prevDerivation_: prevDerivation_,\n prevAllowStateChanges_: prevAllowStateChanges_,\n prevAllowStateReads_: prevAllowStateReads_,\n notifySpy_: notifySpy_,\n startTime_: startTime_,\n actionId_: nextActionId++,\n parentActionId_: currentActionId\n };\n currentActionId = runInfo.actionId_;\n return runInfo;\n}\nfunction _endAction(runInfo) {\n if (currentActionId !== runInfo.actionId_) {\n die(30);\n }\n currentActionId = runInfo.parentActionId_;\n if (runInfo.error_ !== undefined) {\n globalState.suppressReactionErrors = true;\n }\n allowStateChangesEnd(runInfo.prevAllowStateChanges_);\n allowStateReadsEnd(runInfo.prevAllowStateReads_);\n endBatch();\n if (runInfo.runAsAction_) {\n untrackedEnd(runInfo.prevDerivation_);\n }\n if ( runInfo.notifySpy_) {\n spyReportEnd({\n time: Date.now() - runInfo.startTime_\n });\n }\n globalState.suppressReactionErrors = false;\n}\nfunction allowStateChanges(allowStateChanges, func) {\n var prev = allowStateChangesStart(allowStateChanges);\n try {\n return func();\n } finally {\n allowStateChangesEnd(prev);\n }\n}\nfunction allowStateChangesStart(allowStateChanges) {\n var prev = globalState.allowStateChanges;\n globalState.allowStateChanges = allowStateChanges;\n return prev;\n}\nfunction allowStateChangesEnd(prev) {\n globalState.allowStateChanges = prev;\n}\n\nvar _Symbol$toPrimitive;\nvar CREATE = \"create\";\n_Symbol$toPrimitive = Symbol.toPrimitive;\nvar ObservableValue = /*#__PURE__*/function (_Atom) {\n _inheritsLoose(ObservableValue, _Atom);\n function ObservableValue(value, enhancer, name_, notifySpy, equals) {\n var _this;\n if (name_ === void 0) {\n name_ = \"ObservableValue@\" + getNextId() ;\n }\n if (notifySpy === void 0) {\n notifySpy = true;\n }\n if (equals === void 0) {\n equals = comparer[\"default\"];\n }\n _this = _Atom.call(this, name_) || this;\n _this.enhancer = void 0;\n _this.name_ = void 0;\n _this.equals = void 0;\n _this.hasUnreportedChange_ = false;\n _this.interceptors_ = void 0;\n _this.changeListeners_ = void 0;\n _this.value_ = void 0;\n _this.dehancer = void 0;\n _this.enhancer = enhancer;\n _this.name_ = name_;\n _this.equals = equals;\n _this.value_ = enhancer(value, undefined, name_);\n if ( notifySpy && isSpyEnabled()) {\n // only notify spy if this is a stand-alone observable\n spyReport({\n type: CREATE,\n object: _assertThisInitialized(_this),\n observableKind: \"value\",\n debugObjectName: _this.name_,\n newValue: \"\" + _this.value_\n });\n }\n return _this;\n }\n var _proto = ObservableValue.prototype;\n _proto.dehanceValue = function dehanceValue(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.set = function set(newValue) {\n var oldValue = this.value_;\n newValue = this.prepareNewValue_(newValue);\n if (newValue !== globalState.UNCHANGED) {\n var notifySpy = isSpyEnabled();\n if ( notifySpy) {\n spyReportStart({\n type: UPDATE,\n object: this,\n observableKind: \"value\",\n debugObjectName: this.name_,\n newValue: newValue,\n oldValue: oldValue\n });\n }\n this.setNewValue_(newValue);\n if ( notifySpy) {\n spyReportEnd();\n }\n }\n };\n _proto.prepareNewValue_ = function prepareNewValue_(newValue) {\n checkIfStateModificationsAreAllowed(this);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this,\n type: UPDATE,\n newValue: newValue\n });\n if (!change) {\n return globalState.UNCHANGED;\n }\n newValue = change.newValue;\n }\n // apply modifier\n newValue = this.enhancer(newValue, this.value_, this.name_);\n return this.equals(this.value_, newValue) ? globalState.UNCHANGED : newValue;\n };\n _proto.setNewValue_ = function setNewValue_(newValue) {\n var oldValue = this.value_;\n this.value_ = newValue;\n this.reportChanged();\n if (hasListeners(this)) {\n notifyListeners(this, {\n type: UPDATE,\n object: this,\n newValue: newValue,\n oldValue: oldValue\n });\n }\n };\n _proto.get = function get() {\n this.reportObserved();\n return this.dehanceValue(this.value_);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if (fireImmediately) {\n listener({\n observableKind: \"value\",\n debugObjectName: this.name_,\n object: this,\n type: UPDATE,\n newValue: this.value_,\n oldValue: undefined\n });\n }\n return registerListener(this, listener);\n };\n _proto.raw = function raw() {\n // used by MST ot get undehanced value\n return this.value_;\n };\n _proto.toJSON = function toJSON() {\n return this.get();\n };\n _proto.toString = function toString() {\n return this.name_ + \"[\" + this.value_ + \"]\";\n };\n _proto.valueOf = function valueOf() {\n return toPrimitive(this.get());\n };\n _proto[_Symbol$toPrimitive] = function () {\n return this.valueOf();\n };\n return ObservableValue;\n}(Atom);\nvar isObservableValue = /*#__PURE__*/createInstanceofPredicate(\"ObservableValue\", ObservableValue);\n\nvar _Symbol$toPrimitive$1;\n/**\r\n * A node in the state dependency root that observes other nodes, and can be observed itself.\r\n *\r\n * ComputedValue will remember the result of the computation for the duration of the batch, or\r\n * while being observed.\r\n *\r\n * During this time it will recompute only when one of its direct dependencies changed,\r\n * but only when it is being accessed with `ComputedValue.get()`.\r\n *\r\n * Implementation description:\r\n * 1. First time it's being accessed it will compute and remember result\r\n * give back remembered result until 2. happens\r\n * 2. First time any deep dependency change, propagate POSSIBLY_STALE to all observers, wait for 3.\r\n * 3. When it's being accessed, recompute if any shallow dependency changed.\r\n * if result changed: propagate STALE to all observers, that were POSSIBLY_STALE from the last step.\r\n * go to step 2. either way\r\n *\r\n * If at any point it's outside batch and it isn't observed: reset everything and go to 1.\r\n */\n_Symbol$toPrimitive$1 = Symbol.toPrimitive;\nvar ComputedValue = /*#__PURE__*/function () {\n // nodes we are looking at. Our value depends on these nodes\n // during tracking it's an array with new observed observers\n\n // to check for cycles\n\n // N.B: unminified as it is used by MST\n\n /**\r\n * Create a new computed value based on a function expression.\r\n *\r\n * The `name` property is for debug purposes only.\r\n *\r\n * The `equals` property specifies the comparer function to use to determine if a newly produced\r\n * value differs from the previous value. Two comparers are provided in the library; `defaultComparer`\r\n * compares based on identity comparison (===), and `structuralComparer` deeply compares the structure.\r\n * Structural comparison can be convenient if you always produce a new aggregated object and\r\n * don't want to notify observers if it is structurally the same.\r\n * This is useful for working with vectors, mouse coordinates etc.\r\n */\n function ComputedValue(options) {\n this.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n this.observing_ = [];\n this.newObserving_ = null;\n this.isBeingObserved_ = false;\n this.isPendingUnobservation_ = false;\n this.observers_ = new Set();\n this.diffValue_ = 0;\n this.runId_ = 0;\n this.lastAccessedBy_ = 0;\n this.lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n this.unboundDepsCount_ = 0;\n this.value_ = new CaughtException(null);\n this.name_ = void 0;\n this.triggeredBy_ = void 0;\n this.isComputing_ = false;\n this.isRunningSetter_ = false;\n this.derivation = void 0;\n this.setter_ = void 0;\n this.isTracing_ = TraceMode.NONE;\n this.scope_ = void 0;\n this.equals_ = void 0;\n this.requiresReaction_ = void 0;\n this.keepAlive_ = void 0;\n this.onBOL = void 0;\n this.onBUOL = void 0;\n if (!options.get) {\n die(31);\n }\n this.derivation = options.get;\n this.name_ = options.name || ( \"ComputedValue@\" + getNextId() );\n if (options.set) {\n this.setter_ = createAction( this.name_ + \"-setter\" , options.set);\n }\n this.equals_ = options.equals || (options.compareStructural || options.struct ? comparer.structural : comparer[\"default\"]);\n this.scope_ = options.context;\n this.requiresReaction_ = options.requiresReaction;\n this.keepAlive_ = !!options.keepAlive;\n }\n var _proto = ComputedValue.prototype;\n _proto.onBecomeStale_ = function onBecomeStale_() {\n propagateMaybeChanged(this);\n };\n _proto.onBO = function onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(function (listener) {\n return listener();\n });\n }\n };\n _proto.onBUO = function onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(function (listener) {\n return listener();\n });\n }\n }\n /**\r\n * Returns the current value of this computed value.\r\n * Will evaluate its computation first if needed.\r\n */;\n _proto.get = function get() {\n if (this.isComputing_) {\n die(32, this.name_, this.derivation);\n }\n if (globalState.inBatch === 0 &&\n // !globalState.trackingDerivatpion &&\n this.observers_.size === 0 && !this.keepAlive_) {\n if (shouldCompute(this)) {\n this.warnAboutUntrackedRead_();\n startBatch(); // See perf test 'computed memoization'\n this.value_ = this.computeValue_(false);\n endBatch();\n }\n } else {\n reportObserved(this);\n if (shouldCompute(this)) {\n var prevTrackingContext = globalState.trackingContext;\n if (this.keepAlive_ && !prevTrackingContext) {\n globalState.trackingContext = this;\n }\n if (this.trackAndCompute()) {\n propagateChangeConfirmed(this);\n }\n globalState.trackingContext = prevTrackingContext;\n }\n }\n var result = this.value_;\n if (isCaughtException(result)) {\n throw result.cause;\n }\n return result;\n };\n _proto.set = function set(value) {\n if (this.setter_) {\n if (this.isRunningSetter_) {\n die(33, this.name_);\n }\n this.isRunningSetter_ = true;\n try {\n this.setter_.call(this.scope_, value);\n } finally {\n this.isRunningSetter_ = false;\n }\n } else {\n die(34, this.name_);\n }\n };\n _proto.trackAndCompute = function trackAndCompute() {\n // N.B: unminified as it is used by MST\n var oldValue = this.value_;\n var wasSuspended = /* see #1208 */this.dependenciesState_ === IDerivationState_.NOT_TRACKING_;\n var newValue = this.computeValue_(true);\n var changed = wasSuspended || isCaughtException(oldValue) || isCaughtException(newValue) || !this.equals_(oldValue, newValue);\n if (changed) {\n this.value_ = newValue;\n if ( isSpyEnabled()) {\n spyReport({\n observableKind: \"computed\",\n debugObjectName: this.name_,\n object: this.scope_,\n type: \"update\",\n oldValue: oldValue,\n newValue: newValue\n });\n }\n }\n return changed;\n };\n _proto.computeValue_ = function computeValue_(track) {\n this.isComputing_ = true;\n // don't allow state changes during computation\n var prev = allowStateChangesStart(false);\n var res;\n if (track) {\n res = trackDerivedFunction(this, this.derivation, this.scope_);\n } else {\n if (globalState.disableErrorBoundaries === true) {\n res = this.derivation.call(this.scope_);\n } else {\n try {\n res = this.derivation.call(this.scope_);\n } catch (e) {\n res = new CaughtException(e);\n }\n }\n }\n allowStateChangesEnd(prev);\n this.isComputing_ = false;\n return res;\n };\n _proto.suspend_ = function suspend_() {\n if (!this.keepAlive_) {\n clearObserving(this);\n this.value_ = undefined; // don't hold on to computed value!\n if ( this.isTracing_ !== TraceMode.NONE) {\n console.log(\"[mobx.trace] Computed value '\" + this.name_ + \"' was suspended and it will recompute on the next access.\");\n }\n }\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n var _this = this;\n var firstTime = true;\n var prevValue = undefined;\n return autorun(function () {\n // TODO: why is this in a different place than the spyReport() function? in all other observables it's called in the same place\n var newValue = _this.get();\n if (!firstTime || fireImmediately) {\n var prevU = untrackedStart();\n listener({\n observableKind: \"computed\",\n debugObjectName: _this.name_,\n type: UPDATE,\n object: _this,\n newValue: newValue,\n oldValue: prevValue\n });\n untrackedEnd(prevU);\n }\n firstTime = false;\n prevValue = newValue;\n });\n };\n _proto.warnAboutUntrackedRead_ = function warnAboutUntrackedRead_() {\n if (this.isTracing_ !== TraceMode.NONE) {\n console.log(\"[mobx.trace] Computed value '\" + this.name_ + \"' is being read outside a reactive context. Doing a full recompute.\");\n }\n if (typeof this.requiresReaction_ === \"boolean\" ? this.requiresReaction_ : globalState.computedRequiresReaction) {\n console.warn(\"[mobx] Computed value '\" + this.name_ + \"' is being read outside a reactive context. Doing a full recompute.\");\n }\n };\n _proto.toString = function toString() {\n return this.name_ + \"[\" + this.derivation.toString() + \"]\";\n };\n _proto.valueOf = function valueOf() {\n return toPrimitive(this.get());\n };\n _proto[_Symbol$toPrimitive$1] = function () {\n return this.valueOf();\n };\n return ComputedValue;\n}();\nvar isComputedValue = /*#__PURE__*/createInstanceofPredicate(\"ComputedValue\", ComputedValue);\n\nvar IDerivationState_;\n(function (IDerivationState_) {\n // before being run or (outside batch and not being observed)\n // at this point derivation is not holding any data about dependency tree\n IDerivationState_[IDerivationState_[\"NOT_TRACKING_\"] = -1] = \"NOT_TRACKING_\";\n // no shallow dependency changed since last computation\n // won't recalculate derivation\n // this is what makes mobx fast\n IDerivationState_[IDerivationState_[\"UP_TO_DATE_\"] = 0] = \"UP_TO_DATE_\";\n // some deep dependency changed, but don't know if shallow dependency changed\n // will require to check first if UP_TO_DATE or POSSIBLY_STALE\n // currently only ComputedValue will propagate POSSIBLY_STALE\n //\n // having this state is second big optimization:\n // don't have to recompute on every dependency change, but only when it's needed\n IDerivationState_[IDerivationState_[\"POSSIBLY_STALE_\"] = 1] = \"POSSIBLY_STALE_\";\n // A shallow dependency has changed since last computation and the derivation\n // will need to recompute when it's needed next.\n IDerivationState_[IDerivationState_[\"STALE_\"] = 2] = \"STALE_\";\n})(IDerivationState_ || (IDerivationState_ = {}));\nvar TraceMode;\n(function (TraceMode) {\n TraceMode[TraceMode[\"NONE\"] = 0] = \"NONE\";\n TraceMode[TraceMode[\"LOG\"] = 1] = \"LOG\";\n TraceMode[TraceMode[\"BREAK\"] = 2] = \"BREAK\";\n})(TraceMode || (TraceMode = {}));\nvar CaughtException = function CaughtException(cause) {\n this.cause = void 0;\n this.cause = cause;\n // Empty\n};\n\nfunction isCaughtException(e) {\n return e instanceof CaughtException;\n}\n/**\r\n * Finds out whether any dependency of the derivation has actually changed.\r\n * If dependenciesState is 1 then it will recalculate dependencies,\r\n * if any dependency changed it will propagate it by changing dependenciesState to 2.\r\n *\r\n * By iterating over the dependencies in the same order that they were reported and\r\n * stopping on the first change, all the recalculations are only called for ComputedValues\r\n * that will be tracked by derivation. That is because we assume that if the first x\r\n * dependencies of the derivation doesn't change then the derivation should run the same way\r\n * up until accessing x-th dependency.\r\n */\nfunction shouldCompute(derivation) {\n switch (derivation.dependenciesState_) {\n case IDerivationState_.UP_TO_DATE_:\n return false;\n case IDerivationState_.NOT_TRACKING_:\n case IDerivationState_.STALE_:\n return true;\n case IDerivationState_.POSSIBLY_STALE_:\n {\n // state propagation can occur outside of action/reactive context #2195\n var prevAllowStateReads = allowStateReadsStart(true);\n var prevUntracked = untrackedStart(); // no need for those computeds to be reported, they will be picked up in trackDerivedFunction.\n var obs = derivation.observing_,\n l = obs.length;\n for (var i = 0; i < l; i++) {\n var obj = obs[i];\n if (isComputedValue(obj)) {\n if (globalState.disableErrorBoundaries) {\n obj.get();\n } else {\n try {\n obj.get();\n } catch (e) {\n // we are not interested in the value *or* exception at this moment, but if there is one, notify all\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return true;\n }\n }\n // if ComputedValue `obj` actually changed it will be computed and propagated to its observers.\n // and `derivation` is an observer of `obj`\n // invariantShouldCompute(derivation)\n if (derivation.dependenciesState_ === IDerivationState_.STALE_) {\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return true;\n }\n }\n }\n changeDependenciesStateTo0(derivation);\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return false;\n }\n }\n}\nfunction isComputingDerivation() {\n return globalState.trackingDerivation !== null; // filter out actions inside computations\n}\n\nfunction checkIfStateModificationsAreAllowed(atom) {\n var hasObservers = atom.observers_.size > 0;\n // Should not be possible to change observed state outside strict mode, except during initialization, see #563\n if (!globalState.allowStateChanges && (hasObservers || globalState.enforceActions === \"always\")) {\n console.warn(\"[MobX] \" + (globalState.enforceActions ? \"Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: \" : \"Side effects like changing state are not allowed at this point. Are you trying to modify state from, for example, a computed value or the render function of a React component? You can wrap side effects in 'runInAction' (or decorate functions with 'action') if needed. Tried to modify: \") + atom.name_);\n }\n}\nfunction checkIfStateReadsAreAllowed(observable) {\n if ( !globalState.allowStateReads && globalState.observableRequiresReaction) {\n console.warn(\"[mobx] Observable '\" + observable.name_ + \"' being read outside a reactive context.\");\n }\n}\n/**\r\n * Executes the provided function `f` and tracks which observables are being accessed.\r\n * The tracking information is stored on the `derivation` object and the derivation is registered\r\n * as observer of any of the accessed observables.\r\n */\nfunction trackDerivedFunction(derivation, f, context) {\n var prevAllowStateReads = allowStateReadsStart(true);\n // pre allocate array allocation + room for variation in deps\n // array will be trimmed by bindDependencies\n changeDependenciesStateTo0(derivation);\n derivation.newObserving_ = new Array(derivation.observing_.length + 100);\n derivation.unboundDepsCount_ = 0;\n derivation.runId_ = ++globalState.runId;\n var prevTracking = globalState.trackingDerivation;\n globalState.trackingDerivation = derivation;\n globalState.inBatch++;\n var result;\n if (globalState.disableErrorBoundaries === true) {\n result = f.call(context);\n } else {\n try {\n result = f.call(context);\n } catch (e) {\n result = new CaughtException(e);\n }\n }\n globalState.inBatch--;\n globalState.trackingDerivation = prevTracking;\n bindDependencies(derivation);\n warnAboutDerivationWithoutDependencies(derivation);\n allowStateReadsEnd(prevAllowStateReads);\n return result;\n}\nfunction warnAboutDerivationWithoutDependencies(derivation) {\n if (derivation.observing_.length !== 0) {\n return;\n }\n if (typeof derivation.requiresObservable_ === \"boolean\" ? derivation.requiresObservable_ : globalState.reactionRequiresObservable) {\n console.warn(\"[mobx] Derivation '\" + derivation.name_ + \"' is created/updated without reading any observable value.\");\n }\n}\n/**\r\n * diffs newObserving with observing.\r\n * update observing to be newObserving with unique observables\r\n * notify observers that become observed/unobserved\r\n */\nfunction bindDependencies(derivation) {\n // invariant(derivation.dependenciesState !== IDerivationState.NOT_TRACKING, \"INTERNAL ERROR bindDependencies expects derivation.dependenciesState !== -1\");\n var prevObserving = derivation.observing_;\n var observing = derivation.observing_ = derivation.newObserving_;\n var lowestNewObservingDerivationState = IDerivationState_.UP_TO_DATE_;\n // Go through all new observables and check diffValue: (this list can contain duplicates):\n // 0: first occurrence, change to 1 and keep it\n // 1: extra occurrence, drop it\n var i0 = 0,\n l = derivation.unboundDepsCount_;\n for (var i = 0; i < l; i++) {\n var dep = observing[i];\n if (dep.diffValue_ === 0) {\n dep.diffValue_ = 1;\n if (i0 !== i) {\n observing[i0] = dep;\n }\n i0++;\n }\n // Upcast is 'safe' here, because if dep is IObservable, `dependenciesState` will be undefined,\n // not hitting the condition\n if (dep.dependenciesState_ > lowestNewObservingDerivationState) {\n lowestNewObservingDerivationState = dep.dependenciesState_;\n }\n }\n observing.length = i0;\n derivation.newObserving_ = null; // newObserving shouldn't be needed outside tracking (statement moved down to work around FF bug, see #614)\n // Go through all old observables and check diffValue: (it is unique after last bindDependencies)\n // 0: it's not in new observables, unobserve it\n // 1: it keeps being observed, don't want to notify it. change to 0\n l = prevObserving.length;\n while (l--) {\n var _dep = prevObserving[l];\n if (_dep.diffValue_ === 0) {\n removeObserver(_dep, derivation);\n }\n _dep.diffValue_ = 0;\n }\n // Go through all new observables and check diffValue: (now it should be unique)\n // 0: it was set to 0 in last loop. don't need to do anything.\n // 1: it wasn't observed, let's observe it. set back to 0\n while (i0--) {\n var _dep2 = observing[i0];\n if (_dep2.diffValue_ === 1) {\n _dep2.diffValue_ = 0;\n addObserver(_dep2, derivation);\n }\n }\n // Some new observed derivations may become stale during this derivation computation\n // so they have had no chance to propagate staleness (#916)\n if (lowestNewObservingDerivationState !== IDerivationState_.UP_TO_DATE_) {\n derivation.dependenciesState_ = lowestNewObservingDerivationState;\n derivation.onBecomeStale_();\n }\n}\nfunction clearObserving(derivation) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR clearObserving should be called only inside batch\");\n var obs = derivation.observing_;\n derivation.observing_ = [];\n var i = obs.length;\n while (i--) {\n removeObserver(obs[i], derivation);\n }\n derivation.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n}\nfunction untracked(action) {\n var prev = untrackedStart();\n try {\n return action();\n } finally {\n untrackedEnd(prev);\n }\n}\nfunction untrackedStart() {\n var prev = globalState.trackingDerivation;\n globalState.trackingDerivation = null;\n return prev;\n}\nfunction untrackedEnd(prev) {\n globalState.trackingDerivation = prev;\n}\nfunction allowStateReadsStart(allowStateReads) {\n var prev = globalState.allowStateReads;\n globalState.allowStateReads = allowStateReads;\n return prev;\n}\nfunction allowStateReadsEnd(prev) {\n globalState.allowStateReads = prev;\n}\n/**\r\n * needed to keep `lowestObserverState` correct. when changing from (2 or 1) to 0\r\n *\r\n */\nfunction changeDependenciesStateTo0(derivation) {\n if (derivation.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n return;\n }\n derivation.dependenciesState_ = IDerivationState_.UP_TO_DATE_;\n var obs = derivation.observing_;\n var i = obs.length;\n while (i--) {\n obs[i].lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n }\n}\n\n/**\r\n * These values will persist if global state is reset\r\n */\nvar persistentKeys = [\"mobxGuid\", \"spyListeners\", \"enforceActions\", \"computedRequiresReaction\", \"reactionRequiresObservable\", \"observableRequiresReaction\", \"allowStateReads\", \"disableErrorBoundaries\", \"runId\", \"UNCHANGED\", \"useProxies\"];\nvar MobXGlobals = function MobXGlobals() {\n this.version = 6;\n this.UNCHANGED = {};\n this.trackingDerivation = null;\n this.trackingContext = null;\n this.runId = 0;\n this.mobxGuid = 0;\n this.inBatch = 0;\n this.pendingUnobservations = [];\n this.pendingReactions = [];\n this.isRunningReactions = false;\n this.allowStateChanges = false;\n this.allowStateReads = true;\n this.enforceActions = true;\n this.spyListeners = [];\n this.globalReactionErrorHandlers = [];\n this.computedRequiresReaction = false;\n this.reactionRequiresObservable = false;\n this.observableRequiresReaction = false;\n this.disableErrorBoundaries = false;\n this.suppressReactionErrors = false;\n this.useProxies = true;\n this.verifyProxies = false;\n this.safeDescriptors = true;\n this.stateVersion = Number.MIN_SAFE_INTEGER;\n};\nvar canMergeGlobalState = true;\nvar isolateCalled = false;\nvar globalState = /*#__PURE__*/function () {\n var global = /*#__PURE__*/getGlobal();\n if (global.__mobxInstanceCount > 0 && !global.__mobxGlobals) {\n canMergeGlobalState = false;\n }\n if (global.__mobxGlobals && global.__mobxGlobals.version !== new MobXGlobals().version) {\n canMergeGlobalState = false;\n }\n if (!canMergeGlobalState) {\n // Because this is a IIFE we need to let isolateCalled a chance to change\n // so we run it after the event loop completed at least 1 iteration\n setTimeout(function () {\n if (!isolateCalled) {\n die(35);\n }\n }, 1);\n return new MobXGlobals();\n } else if (global.__mobxGlobals) {\n global.__mobxInstanceCount += 1;\n if (!global.__mobxGlobals.UNCHANGED) {\n global.__mobxGlobals.UNCHANGED = {};\n } // make merge backward compatible\n return global.__mobxGlobals;\n } else {\n global.__mobxInstanceCount = 1;\n return global.__mobxGlobals = /*#__PURE__*/new MobXGlobals();\n }\n}();\nfunction isolateGlobalState() {\n if (globalState.pendingReactions.length || globalState.inBatch || globalState.isRunningReactions) {\n die(36);\n }\n isolateCalled = true;\n if (canMergeGlobalState) {\n var global = getGlobal();\n if (--global.__mobxInstanceCount === 0) {\n global.__mobxGlobals = undefined;\n }\n globalState = new MobXGlobals();\n }\n}\nfunction getGlobalState() {\n return globalState;\n}\n/**\r\n * For testing purposes only; this will break the internal state of existing observables,\r\n * but can be used to get back at a stable state after throwing errors\r\n */\nfunction resetGlobalState() {\n var defaultGlobals = new MobXGlobals();\n for (var key in defaultGlobals) {\n if (persistentKeys.indexOf(key) === -1) {\n globalState[key] = defaultGlobals[key];\n }\n }\n globalState.allowStateChanges = !globalState.enforceActions;\n}\n\nfunction hasObservers(observable) {\n return observable.observers_ && observable.observers_.size > 0;\n}\nfunction getObservers(observable) {\n return observable.observers_;\n}\n// function invariantObservers(observable: IObservable) {\n// const list = observable.observers\n// const map = observable.observersIndexes\n// const l = list.length\n// for (let i = 0; i < l; i++) {\n// const id = list[i].__mapid\n// if (i) {\n// invariant(map[id] === i, \"INTERNAL ERROR maps derivation.__mapid to index in list\") // for performance\n// } else {\n// invariant(!(id in map), \"INTERNAL ERROR observer on index 0 shouldn't be held in map.\") // for performance\n// }\n// }\n// invariant(\n// list.length === 0 || Object.keys(map).length === list.length - 1,\n// \"INTERNAL ERROR there is no junk in map\"\n// )\n// }\nfunction addObserver(observable, node) {\n // invariant(node.dependenciesState !== -1, \"INTERNAL ERROR, can add only dependenciesState !== -1\");\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR add already added node\");\n // invariantObservers(observable);\n observable.observers_.add(node);\n if (observable.lowestObserverState_ > node.dependenciesState_) {\n observable.lowestObserverState_ = node.dependenciesState_;\n }\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR didn't add node\");\n}\n\nfunction removeObserver(observable, node) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR, remove should be called only inside batch\");\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR remove already removed node\");\n // invariantObservers(observable);\n observable.observers_[\"delete\"](node);\n if (observable.observers_.size === 0) {\n // deleting last observer\n queueForUnobservation(observable);\n }\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR remove already removed node2\");\n}\n\nfunction queueForUnobservation(observable) {\n if (observable.isPendingUnobservation_ === false) {\n // invariant(observable._observers.length === 0, \"INTERNAL ERROR, should only queue for unobservation unobserved observables\");\n observable.isPendingUnobservation_ = true;\n globalState.pendingUnobservations.push(observable);\n }\n}\n/**\r\n * Batch starts a transaction, at least for purposes of memoizing ComputedValues when nothing else does.\r\n * During a batch `onBecomeUnobserved` will be called at most once per observable.\r\n * Avoids unnecessary recalculations.\r\n */\nfunction startBatch() {\n globalState.inBatch++;\n}\nfunction endBatch() {\n if (--globalState.inBatch === 0) {\n runReactions();\n // the batch is actually about to finish, all unobserving should happen here.\n var list = globalState.pendingUnobservations;\n for (var i = 0; i < list.length; i++) {\n var observable = list[i];\n observable.isPendingUnobservation_ = false;\n if (observable.observers_.size === 0) {\n if (observable.isBeingObserved_) {\n // if this observable had reactive observers, trigger the hooks\n observable.isBeingObserved_ = false;\n observable.onBUO();\n }\n if (observable instanceof ComputedValue) {\n // computed values are automatically teared down when the last observer leaves\n // this process happens recursively, this computed might be the last observabe of another, etc..\n observable.suspend_();\n }\n }\n }\n globalState.pendingUnobservations = [];\n }\n}\nfunction reportObserved(observable) {\n checkIfStateReadsAreAllowed(observable);\n var derivation = globalState.trackingDerivation;\n if (derivation !== null) {\n /**\r\n * Simple optimization, give each derivation run an unique id (runId)\r\n * Check if last time this observable was accessed the same runId is used\r\n * if this is the case, the relation is already known\r\n */\n if (derivation.runId_ !== observable.lastAccessedBy_) {\n observable.lastAccessedBy_ = derivation.runId_;\n // Tried storing newObserving, or observing, or both as Set, but performance didn't come close...\n derivation.newObserving_[derivation.unboundDepsCount_++] = observable;\n if (!observable.isBeingObserved_ && globalState.trackingContext) {\n observable.isBeingObserved_ = true;\n observable.onBO();\n }\n }\n return observable.isBeingObserved_;\n } else if (observable.observers_.size === 0 && globalState.inBatch > 0) {\n queueForUnobservation(observable);\n }\n return false;\n}\n// function invariantLOS(observable: IObservable, msg: string) {\n// // it's expensive so better not run it in produciton. but temporarily helpful for testing\n// const min = getObservers(observable).reduce((a, b) => Math.min(a, b.dependenciesState), 2)\n// if (min >= observable.lowestObserverState) return // <- the only assumption about `lowestObserverState`\n// throw new Error(\n// \"lowestObserverState is wrong for \" +\n// msg +\n// \" because \" +\n// min +\n// \" < \" +\n// observable.lowestObserverState\n// )\n// }\n/**\r\n * NOTE: current propagation mechanism will in case of self reruning autoruns behave unexpectedly\r\n * It will propagate changes to observers from previous run\r\n * It's hard or maybe impossible (with reasonable perf) to get it right with current approach\r\n * Hopefully self reruning autoruns aren't a feature people should depend on\r\n * Also most basic use cases should be ok\r\n */\n// Called by Atom when its value changes\nfunction propagateChanged(observable) {\n // invariantLOS(observable, \"changed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return;\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_;\n // Ideally we use for..of here, but the downcompiled version is really slow...\n observable.observers_.forEach(function (d) {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n if ( d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable);\n }\n d.onBecomeStale_();\n }\n d.dependenciesState_ = IDerivationState_.STALE_;\n });\n // invariantLOS(observable, \"changed end\");\n}\n// Called by ComputedValue when it recalculate and its value changed\nfunction propagateChangeConfirmed(observable) {\n // invariantLOS(observable, \"confirmed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return;\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_;\n observable.observers_.forEach(function (d) {\n if (d.dependenciesState_ === IDerivationState_.POSSIBLY_STALE_) {\n d.dependenciesState_ = IDerivationState_.STALE_;\n if ( d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable);\n }\n } else if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_ // this happens during computing of `d`, just keep lowestObserverState up to date.\n ) {\n observable.lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n }\n });\n // invariantLOS(observable, \"confirmed end\");\n}\n// Used by computed when its dependency changed, but we don't wan't to immediately recompute.\nfunction propagateMaybeChanged(observable) {\n // invariantLOS(observable, \"maybe start\");\n if (observable.lowestObserverState_ !== IDerivationState_.UP_TO_DATE_) {\n return;\n }\n observable.lowestObserverState_ = IDerivationState_.POSSIBLY_STALE_;\n observable.observers_.forEach(function (d) {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n d.dependenciesState_ = IDerivationState_.POSSIBLY_STALE_;\n d.onBecomeStale_();\n }\n });\n // invariantLOS(observable, \"maybe end\");\n}\n\nfunction logTraceInfo(derivation, observable) {\n console.log(\"[mobx.trace] '\" + derivation.name_ + \"' is invalidated due to a change in: '\" + observable.name_ + \"'\");\n if (derivation.isTracing_ === TraceMode.BREAK) {\n var lines = [];\n printDepTree(getDependencyTree(derivation), lines, 1);\n // prettier-ignore\n new Function(\"debugger;\\n/*\\nTracing '\" + derivation.name_ + \"'\\n\\nYou are entering this break point because derivation '\" + derivation.name_ + \"' is being traced and '\" + observable.name_ + \"' is now forcing it to update.\\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\\n\\n\" + (derivation instanceof ComputedValue ? derivation.derivation.toString().replace(/[*]\\//g, \"/\") : \"\") + \"\\n\\nThe dependencies for this derivation are:\\n\\n\" + lines.join(\"\\n\") + \"\\n*/\\n \")();\n }\n}\nfunction printDepTree(tree, lines, depth) {\n if (lines.length >= 1000) {\n lines.push(\"(and many more)\");\n return;\n }\n lines.push(\"\" + \"\\t\".repeat(depth - 1) + tree.name);\n if (tree.dependencies) {\n tree.dependencies.forEach(function (child) {\n return printDepTree(child, lines, depth + 1);\n });\n }\n}\n\nvar Reaction = /*#__PURE__*/function () {\n // nodes we are looking at. Our value depends on these nodes\n\n function Reaction(name_, onInvalidate_, errorHandler_, requiresObservable_) {\n if (name_ === void 0) {\n name_ = \"Reaction@\" + getNextId() ;\n }\n this.name_ = void 0;\n this.onInvalidate_ = void 0;\n this.errorHandler_ = void 0;\n this.requiresObservable_ = void 0;\n this.observing_ = [];\n this.newObserving_ = [];\n this.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n this.diffValue_ = 0;\n this.runId_ = 0;\n this.unboundDepsCount_ = 0;\n this.isDisposed_ = false;\n this.isScheduled_ = false;\n this.isTrackPending_ = false;\n this.isRunning_ = false;\n this.isTracing_ = TraceMode.NONE;\n this.name_ = name_;\n this.onInvalidate_ = onInvalidate_;\n this.errorHandler_ = errorHandler_;\n this.requiresObservable_ = requiresObservable_;\n }\n var _proto = Reaction.prototype;\n _proto.onBecomeStale_ = function onBecomeStale_() {\n this.schedule_();\n };\n _proto.schedule_ = function schedule_() {\n if (!this.isScheduled_) {\n this.isScheduled_ = true;\n globalState.pendingReactions.push(this);\n runReactions();\n }\n };\n _proto.isScheduled = function isScheduled() {\n return this.isScheduled_;\n }\n /**\r\n * internal, use schedule() if you intend to kick off a reaction\r\n */;\n _proto.runReaction_ = function runReaction_() {\n if (!this.isDisposed_) {\n startBatch();\n this.isScheduled_ = false;\n var prev = globalState.trackingContext;\n globalState.trackingContext = this;\n if (shouldCompute(this)) {\n this.isTrackPending_ = true;\n try {\n this.onInvalidate_();\n if (\"development\" !== \"production\" && this.isTrackPending_ && isSpyEnabled()) {\n // onInvalidate didn't trigger track right away..\n spyReport({\n name: this.name_,\n type: \"scheduled-reaction\"\n });\n }\n } catch (e) {\n this.reportExceptionInDerivation_(e);\n }\n }\n globalState.trackingContext = prev;\n endBatch();\n }\n };\n _proto.track = function track(fn) {\n if (this.isDisposed_) {\n return;\n // console.warn(\"Reaction already disposed\") // Note: Not a warning / error in mobx 4 either\n }\n\n startBatch();\n var notify = isSpyEnabled();\n var startTime;\n if ( notify) {\n startTime = Date.now();\n spyReportStart({\n name: this.name_,\n type: \"reaction\"\n });\n }\n this.isRunning_ = true;\n var prevReaction = globalState.trackingContext; // reactions could create reactions...\n globalState.trackingContext = this;\n var result = trackDerivedFunction(this, fn, undefined);\n globalState.trackingContext = prevReaction;\n this.isRunning_ = false;\n this.isTrackPending_ = false;\n if (this.isDisposed_) {\n // disposed during last run. Clean up everything that was bound after the dispose call.\n clearObserving(this);\n }\n if (isCaughtException(result)) {\n this.reportExceptionInDerivation_(result.cause);\n }\n if ( notify) {\n spyReportEnd({\n time: Date.now() - startTime\n });\n }\n endBatch();\n };\n _proto.reportExceptionInDerivation_ = function reportExceptionInDerivation_(error) {\n var _this = this;\n if (this.errorHandler_) {\n this.errorHandler_(error, this);\n return;\n }\n if (globalState.disableErrorBoundaries) {\n throw error;\n }\n var message = \"[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '\" + this + \"'\" ;\n if (!globalState.suppressReactionErrors) {\n console.error(message, error);\n /** If debugging brought you here, please, read the above message :-). Tnx! */\n } else {\n console.warn(\"[mobx] (error in reaction '\" + this.name_ + \"' suppressed, fix error of causing action below)\");\n } // prettier-ignore\n if ( isSpyEnabled()) {\n spyReport({\n type: \"error\",\n name: this.name_,\n message: message,\n error: \"\" + error\n });\n }\n globalState.globalReactionErrorHandlers.forEach(function (f) {\n return f(error, _this);\n });\n };\n _proto.dispose = function dispose() {\n if (!this.isDisposed_) {\n this.isDisposed_ = true;\n if (!this.isRunning_) {\n // if disposed while running, clean up later. Maybe not optimal, but rare case\n startBatch();\n clearObserving(this);\n endBatch();\n }\n }\n };\n _proto.getDisposer_ = function getDisposer_() {\n var r = this.dispose.bind(this);\n r[$mobx] = this;\n return r;\n };\n _proto.toString = function toString() {\n return \"Reaction[\" + this.name_ + \"]\";\n };\n _proto.trace = function trace$1(enterBreakPoint) {\n if (enterBreakPoint === void 0) {\n enterBreakPoint = false;\n }\n trace(this, enterBreakPoint);\n };\n return Reaction;\n}();\nfunction onReactionError(handler) {\n globalState.globalReactionErrorHandlers.push(handler);\n return function () {\n var idx = globalState.globalReactionErrorHandlers.indexOf(handler);\n if (idx >= 0) {\n globalState.globalReactionErrorHandlers.splice(idx, 1);\n }\n };\n}\n/**\r\n * Magic number alert!\r\n * Defines within how many times a reaction is allowed to re-trigger itself\r\n * until it is assumed that this is gonna be a never ending loop...\r\n */\nvar MAX_REACTION_ITERATIONS = 100;\nvar reactionScheduler = function reactionScheduler(f) {\n return f();\n};\nfunction runReactions() {\n // Trampolining, if runReactions are already running, new reactions will be picked up\n if (globalState.inBatch > 0 || globalState.isRunningReactions) {\n return;\n }\n reactionScheduler(runReactionsHelper);\n}\nfunction runReactionsHelper() {\n globalState.isRunningReactions = true;\n var allReactions = globalState.pendingReactions;\n var iterations = 0;\n // While running reactions, new reactions might be triggered.\n // Hence we work with two variables and check whether\n // we converge to no remaining reactions after a while.\n while (allReactions.length > 0) {\n if (++iterations === MAX_REACTION_ITERATIONS) {\n console.error( \"Reaction doesn't converge to a stable state after \" + MAX_REACTION_ITERATIONS + \" iterations.\" + (\" Probably there is a cycle in the reactive function: \" + allReactions[0]) );\n allReactions.splice(0); // clear reactions\n }\n\n var remainingReactions = allReactions.splice(0);\n for (var i = 0, l = remainingReactions.length; i < l; i++) {\n remainingReactions[i].runReaction_();\n }\n }\n globalState.isRunningReactions = false;\n}\nvar isReaction = /*#__PURE__*/createInstanceofPredicate(\"Reaction\", Reaction);\nfunction setReactionScheduler(fn) {\n var baseScheduler = reactionScheduler;\n reactionScheduler = function reactionScheduler(f) {\n return fn(function () {\n return baseScheduler(f);\n });\n };\n}\n\nfunction isSpyEnabled() {\n return !!globalState.spyListeners.length;\n}\nfunction spyReport(event) {\n if (!globalState.spyListeners.length) {\n return;\n }\n var listeners = globalState.spyListeners;\n for (var i = 0, l = listeners.length; i < l; i++) {\n listeners[i](event);\n }\n}\nfunction spyReportStart(event) {\n var change = _extends({}, event, {\n spyReportStart: true\n });\n spyReport(change);\n}\nvar END_EVENT = {\n type: \"report-end\",\n spyReportEnd: true\n};\nfunction spyReportEnd(change) {\n if (change) {\n spyReport(_extends({}, change, {\n type: \"report-end\",\n spyReportEnd: true\n }));\n } else {\n spyReport(END_EVENT);\n }\n}\nfunction spy(listener) {\n {\n globalState.spyListeners.push(listener);\n return once(function () {\n globalState.spyListeners = globalState.spyListeners.filter(function (l) {\n return l !== listener;\n });\n });\n }\n}\n\nvar ACTION = \"action\";\nvar ACTION_BOUND = \"action.bound\";\nvar AUTOACTION = \"autoAction\";\nvar AUTOACTION_BOUND = \"autoAction.bound\";\nvar DEFAULT_ACTION_NAME = \"\";\nvar actionAnnotation = /*#__PURE__*/createActionAnnotation(ACTION);\nvar actionBoundAnnotation = /*#__PURE__*/createActionAnnotation(ACTION_BOUND, {\n bound: true\n});\nvar autoActionAnnotation = /*#__PURE__*/createActionAnnotation(AUTOACTION, {\n autoAction: true\n});\nvar autoActionBoundAnnotation = /*#__PURE__*/createActionAnnotation(AUTOACTION_BOUND, {\n autoAction: true,\n bound: true\n});\nfunction createActionFactory(autoAction) {\n var res = function action(arg1, arg2) {\n // action(fn() {})\n if (isFunction(arg1)) {\n return createAction(arg1.name || DEFAULT_ACTION_NAME, arg1, autoAction);\n }\n // action(\"name\", fn() {})\n if (isFunction(arg2)) {\n return createAction(arg1, arg2, autoAction);\n }\n // @action\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, autoAction ? autoActionAnnotation : actionAnnotation);\n }\n // action(\"name\") & @action(\"name\")\n if (isStringish(arg1)) {\n return createDecoratorAnnotation(createActionAnnotation(autoAction ? AUTOACTION : ACTION, {\n name: arg1,\n autoAction: autoAction\n }));\n }\n {\n die(\"Invalid arguments for `action`\");\n }\n };\n return res;\n}\nvar action = /*#__PURE__*/createActionFactory(false);\nObject.assign(action, actionAnnotation);\nvar autoAction = /*#__PURE__*/createActionFactory(true);\nObject.assign(autoAction, autoActionAnnotation);\naction.bound = /*#__PURE__*/createDecoratorAnnotation(actionBoundAnnotation);\nautoAction.bound = /*#__PURE__*/createDecoratorAnnotation(autoActionBoundAnnotation);\nfunction runInAction(fn) {\n return executeAction(fn.name || DEFAULT_ACTION_NAME, false, fn, this, undefined);\n}\nfunction isAction(thing) {\n return isFunction(thing) && thing.isMobxAction === true;\n}\n\n/**\r\n * Creates a named reactive view and keeps it alive, so that the view is always\r\n * updated if one of the dependencies changes, even when the view is not further used by something else.\r\n * @param view The reactive view\r\n * @returns disposer function, which can be used to stop the view from being updated in the future.\r\n */\nfunction autorun(view, opts) {\n var _opts$name, _opts;\n if (opts === void 0) {\n opts = EMPTY_OBJECT;\n }\n {\n if (!isFunction(view)) {\n die(\"Autorun expects a function as first argument\");\n }\n if (isAction(view)) {\n die(\"Autorun does not accept actions since actions are untrackable\");\n }\n }\n var name = (_opts$name = (_opts = opts) == null ? void 0 : _opts.name) != null ? _opts$name : view.name || \"Autorun@\" + getNextId() ;\n var runSync = !opts.scheduler && !opts.delay;\n var reaction;\n if (runSync) {\n // normal autorun\n reaction = new Reaction(name, function () {\n this.track(reactionRunner);\n }, opts.onError, opts.requiresObservable);\n } else {\n var scheduler = createSchedulerFromOptions(opts);\n // debounced autorun\n var isScheduled = false;\n reaction = new Reaction(name, function () {\n if (!isScheduled) {\n isScheduled = true;\n scheduler(function () {\n isScheduled = false;\n if (!reaction.isDisposed_) {\n reaction.track(reactionRunner);\n }\n });\n }\n }, opts.onError, opts.requiresObservable);\n }\n function reactionRunner() {\n view(reaction);\n }\n reaction.schedule_();\n return reaction.getDisposer_();\n}\nvar run = function run(f) {\n return f();\n};\nfunction createSchedulerFromOptions(opts) {\n return opts.scheduler ? opts.scheduler : opts.delay ? function (f) {\n return setTimeout(f, opts.delay);\n } : run;\n}\nfunction reaction(expression, effect, opts) {\n var _opts$name2;\n if (opts === void 0) {\n opts = EMPTY_OBJECT;\n }\n {\n if (!isFunction(expression) || !isFunction(effect)) {\n die(\"First and second argument to reaction should be functions\");\n }\n if (!isPlainObject(opts)) {\n die(\"Third argument of reactions should be an object\");\n }\n }\n var name = (_opts$name2 = opts.name) != null ? _opts$name2 : \"Reaction@\" + getNextId() ;\n var effectAction = action(name, opts.onError ? wrapErrorHandler(opts.onError, effect) : effect);\n var runSync = !opts.scheduler && !opts.delay;\n var scheduler = createSchedulerFromOptions(opts);\n var firstTime = true;\n var isScheduled = false;\n var value;\n var oldValue;\n var equals = opts.compareStructural ? comparer.structural : opts.equals || comparer[\"default\"];\n var r = new Reaction(name, function () {\n if (firstTime || runSync) {\n reactionRunner();\n } else if (!isScheduled) {\n isScheduled = true;\n scheduler(reactionRunner);\n }\n }, opts.onError, opts.requiresObservable);\n function reactionRunner() {\n isScheduled = false;\n if (r.isDisposed_) {\n return;\n }\n var changed = false;\n r.track(function () {\n var nextValue = allowStateChanges(false, function () {\n return expression(r);\n });\n changed = firstTime || !equals(value, nextValue);\n oldValue = value;\n value = nextValue;\n });\n if (firstTime && opts.fireImmediately) {\n effectAction(value, oldValue, r);\n } else if (!firstTime && changed) {\n effectAction(value, oldValue, r);\n }\n firstTime = false;\n }\n r.schedule_();\n return r.getDisposer_();\n}\nfunction wrapErrorHandler(errorHandler, baseFn) {\n return function () {\n try {\n return baseFn.apply(this, arguments);\n } catch (e) {\n errorHandler.call(this, e);\n }\n };\n}\n\nvar ON_BECOME_OBSERVED = \"onBO\";\nvar ON_BECOME_UNOBSERVED = \"onBUO\";\nfunction onBecomeObserved(thing, arg2, arg3) {\n return interceptHook(ON_BECOME_OBSERVED, thing, arg2, arg3);\n}\nfunction onBecomeUnobserved(thing, arg2, arg3) {\n return interceptHook(ON_BECOME_UNOBSERVED, thing, arg2, arg3);\n}\nfunction interceptHook(hook, thing, arg2, arg3) {\n var atom = typeof arg3 === \"function\" ? getAtom(thing, arg2) : getAtom(thing);\n var cb = isFunction(arg3) ? arg3 : arg2;\n var listenersKey = hook + \"L\";\n if (atom[listenersKey]) {\n atom[listenersKey].add(cb);\n } else {\n atom[listenersKey] = new Set([cb]);\n }\n return function () {\n var hookListeners = atom[listenersKey];\n if (hookListeners) {\n hookListeners[\"delete\"](cb);\n if (hookListeners.size === 0) {\n delete atom[listenersKey];\n }\n }\n };\n}\n\nvar NEVER = \"never\";\nvar ALWAYS = \"always\";\nvar OBSERVED = \"observed\";\n// const IF_AVAILABLE = \"ifavailable\"\nfunction configure(options) {\n if (options.isolateGlobalState === true) {\n isolateGlobalState();\n }\n var useProxies = options.useProxies,\n enforceActions = options.enforceActions;\n if (useProxies !== undefined) {\n globalState.useProxies = useProxies === ALWAYS ? true : useProxies === NEVER ? false : typeof Proxy !== \"undefined\";\n }\n if (useProxies === \"ifavailable\") {\n globalState.verifyProxies = true;\n }\n if (enforceActions !== undefined) {\n var ea = enforceActions === ALWAYS ? ALWAYS : enforceActions === OBSERVED;\n globalState.enforceActions = ea;\n globalState.allowStateChanges = ea === true || ea === ALWAYS ? false : true;\n }\n [\"computedRequiresReaction\", \"reactionRequiresObservable\", \"observableRequiresReaction\", \"disableErrorBoundaries\", \"safeDescriptors\"].forEach(function (key) {\n if (key in options) {\n globalState[key] = !!options[key];\n }\n });\n globalState.allowStateReads = !globalState.observableRequiresReaction;\n if ( globalState.disableErrorBoundaries === true) {\n console.warn(\"WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled.\");\n }\n if (options.reactionScheduler) {\n setReactionScheduler(options.reactionScheduler);\n }\n}\n\nfunction extendObservable(target, properties, annotations, options) {\n {\n if (arguments.length > 4) {\n die(\"'extendObservable' expected 2-4 arguments\");\n }\n if (typeof target !== \"object\") {\n die(\"'extendObservable' expects an object as first argument\");\n }\n if (isObservableMap(target)) {\n die(\"'extendObservable' should not be used on maps, use map.merge instead\");\n }\n if (!isPlainObject(properties)) {\n die(\"'extendObservable' only accepts plain objects as second argument\");\n }\n if (isObservable(properties) || isObservable(annotations)) {\n die(\"Extending an object with another observable (object) is not supported\");\n }\n }\n // Pull descriptors first, so we don't have to deal with props added by administration ($mobx)\n var descriptors = getOwnPropertyDescriptors(properties);\n var adm = asObservableObject(target, options)[$mobx];\n startBatch();\n try {\n ownKeys(descriptors).forEach(function (key) {\n adm.extend_(key, descriptors[key],\n // must pass \"undefined\" for { key: undefined }\n !annotations ? true : key in annotations ? annotations[key] : true);\n });\n } finally {\n endBatch();\n }\n return target;\n}\n\nfunction getDependencyTree(thing, property) {\n return nodeToDependencyTree(getAtom(thing, property));\n}\nfunction nodeToDependencyTree(node) {\n var result = {\n name: node.name_\n };\n if (node.observing_ && node.observing_.length > 0) {\n result.dependencies = unique(node.observing_).map(nodeToDependencyTree);\n }\n return result;\n}\nfunction getObserverTree(thing, property) {\n return nodeToObserverTree(getAtom(thing, property));\n}\nfunction nodeToObserverTree(node) {\n var result = {\n name: node.name_\n };\n if (hasObservers(node)) {\n result.observers = Array.from(getObservers(node)).map(nodeToObserverTree);\n }\n return result;\n}\nfunction unique(list) {\n return Array.from(new Set(list));\n}\n\nvar generatorId = 0;\nfunction FlowCancellationError() {\n this.message = \"FLOW_CANCELLED\";\n}\nFlowCancellationError.prototype = /*#__PURE__*/Object.create(Error.prototype);\nfunction isFlowCancellationError(error) {\n return error instanceof FlowCancellationError;\n}\nvar flowAnnotation = /*#__PURE__*/createFlowAnnotation(\"flow\");\nvar flowBoundAnnotation = /*#__PURE__*/createFlowAnnotation(\"flow.bound\", {\n bound: true\n});\nvar flow = /*#__PURE__*/Object.assign(function flow(arg1, arg2) {\n // @flow\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, flowAnnotation);\n }\n // flow(fn)\n if ( arguments.length !== 1) {\n die(\"Flow expects single argument with generator function\");\n }\n var generator = arg1;\n var name = generator.name || \"\";\n // Implementation based on https://github.com/tj/co/blob/master/index.js\n var res = function res() {\n var ctx = this;\n var args = arguments;\n var runId = ++generatorId;\n var gen = action(name + \" - runid: \" + runId + \" - init\", generator).apply(ctx, args);\n var rejector;\n var pendingPromise = undefined;\n var promise = new Promise(function (resolve, reject) {\n var stepId = 0;\n rejector = reject;\n function onFulfilled(res) {\n pendingPromise = undefined;\n var ret;\n try {\n ret = action(name + \" - runid: \" + runId + \" - yield \" + stepId++, gen.next).call(gen, res);\n } catch (e) {\n return reject(e);\n }\n next(ret);\n }\n function onRejected(err) {\n pendingPromise = undefined;\n var ret;\n try {\n ret = action(name + \" - runid: \" + runId + \" - yield \" + stepId++, gen[\"throw\"]).call(gen, err);\n } catch (e) {\n return reject(e);\n }\n next(ret);\n }\n function next(ret) {\n if (isFunction(ret == null ? void 0 : ret.then)) {\n // an async iterator\n ret.then(next, reject);\n return;\n }\n if (ret.done) {\n return resolve(ret.value);\n }\n pendingPromise = Promise.resolve(ret.value);\n return pendingPromise.then(onFulfilled, onRejected);\n }\n onFulfilled(undefined); // kick off the process\n });\n\n promise.cancel = action(name + \" - runid: \" + runId + \" - cancel\", function () {\n try {\n if (pendingPromise) {\n cancelPromise(pendingPromise);\n }\n // Finally block can return (or yield) stuff..\n var _res = gen[\"return\"](undefined);\n // eat anything that promise would do, it's cancelled!\n var yieldedPromise = Promise.resolve(_res.value);\n yieldedPromise.then(noop, noop);\n cancelPromise(yieldedPromise); // maybe it can be cancelled :)\n // reject our original promise\n rejector(new FlowCancellationError());\n } catch (e) {\n rejector(e); // there could be a throwing finally block\n }\n });\n\n return promise;\n };\n res.isMobXFlow = true;\n return res;\n}, flowAnnotation);\nflow.bound = /*#__PURE__*/createDecoratorAnnotation(flowBoundAnnotation);\nfunction cancelPromise(promise) {\n if (isFunction(promise.cancel)) {\n promise.cancel();\n }\n}\nfunction flowResult(result) {\n return result; // just tricking TypeScript :)\n}\n\nfunction isFlow(fn) {\n return (fn == null ? void 0 : fn.isMobXFlow) === true;\n}\n\nfunction interceptReads(thing, propOrHandler, handler) {\n var target;\n if (isObservableMap(thing) || isObservableArray(thing) || isObservableValue(thing)) {\n target = getAdministration(thing);\n } else if (isObservableObject(thing)) {\n if ( !isStringish(propOrHandler)) {\n return die(\"InterceptReads can only be used with a specific property, not with an object in general\");\n }\n target = getAdministration(thing, propOrHandler);\n } else {\n return die(\"Expected observable map, object or array as first array\");\n }\n if ( target.dehancer !== undefined) {\n return die(\"An intercept reader was already established\");\n }\n target.dehancer = typeof propOrHandler === \"function\" ? propOrHandler : handler;\n return function () {\n target.dehancer = undefined;\n };\n}\n\nfunction intercept(thing, propOrHandler, handler) {\n if (isFunction(handler)) {\n return interceptProperty(thing, propOrHandler, handler);\n } else {\n return interceptInterceptable(thing, propOrHandler);\n }\n}\nfunction interceptInterceptable(thing, handler) {\n return getAdministration(thing).intercept_(handler);\n}\nfunction interceptProperty(thing, property, handler) {\n return getAdministration(thing, property).intercept_(handler);\n}\n\nfunction _isComputed(value, property) {\n if (property === undefined) {\n return isComputedValue(value);\n }\n if (isObservableObject(value) === false) {\n return false;\n }\n if (!value[$mobx].values_.has(property)) {\n return false;\n }\n var atom = getAtom(value, property);\n return isComputedValue(atom);\n}\nfunction isComputed(value) {\n if ( arguments.length > 1) {\n return die(\"isComputed expects only 1 argument. Use isComputedProp to inspect the observability of a property\");\n }\n return _isComputed(value);\n}\nfunction isComputedProp(value, propName) {\n if ( !isStringish(propName)) {\n return die(\"isComputed expected a property name as second argument\");\n }\n return _isComputed(value, propName);\n}\n\nfunction _isObservable(value, property) {\n if (!value) {\n return false;\n }\n if (property !== undefined) {\n if ( (isObservableMap(value) || isObservableArray(value))) {\n return die(\"isObservable(object, propertyName) is not supported for arrays and maps. Use map.has or array.length instead.\");\n }\n if (isObservableObject(value)) {\n return value[$mobx].values_.has(property);\n }\n return false;\n }\n // For first check, see #701\n return isObservableObject(value) || !!value[$mobx] || isAtom(value) || isReaction(value) || isComputedValue(value);\n}\nfunction isObservable(value) {\n if ( arguments.length !== 1) {\n die(\"isObservable expects only 1 argument. Use isObservableProp to inspect the observability of a property\");\n }\n return _isObservable(value);\n}\nfunction isObservableProp(value, propName) {\n if ( !isStringish(propName)) {\n return die(\"expected a property name as second argument\");\n }\n return _isObservable(value, propName);\n}\n\nfunction keys(obj) {\n if (isObservableObject(obj)) {\n return obj[$mobx].keys_();\n }\n if (isObservableMap(obj) || isObservableSet(obj)) {\n return Array.from(obj.keys());\n }\n if (isObservableArray(obj)) {\n return obj.map(function (_, index) {\n return index;\n });\n }\n die(5);\n}\nfunction values(obj) {\n if (isObservableObject(obj)) {\n return keys(obj).map(function (key) {\n return obj[key];\n });\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(function (key) {\n return obj.get(key);\n });\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.values());\n }\n if (isObservableArray(obj)) {\n return obj.slice();\n }\n die(6);\n}\nfunction entries(obj) {\n if (isObservableObject(obj)) {\n return keys(obj).map(function (key) {\n return [key, obj[key]];\n });\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(function (key) {\n return [key, obj.get(key)];\n });\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.entries());\n }\n if (isObservableArray(obj)) {\n return obj.map(function (key, index) {\n return [index, key];\n });\n }\n die(7);\n}\nfunction set(obj, key, value) {\n if (arguments.length === 2 && !isObservableSet(obj)) {\n startBatch();\n var _values = key;\n try {\n for (var _key in _values) {\n set(obj, _key, _values[_key]);\n }\n } finally {\n endBatch();\n }\n return;\n }\n if (isObservableObject(obj)) {\n obj[$mobx].set_(key, value);\n } else if (isObservableMap(obj)) {\n obj.set(key, value);\n } else if (isObservableSet(obj)) {\n obj.add(key);\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") {\n key = parseInt(key, 10);\n }\n if (key < 0) {\n die(\"Invalid index: '\" + key + \"'\");\n }\n startBatch();\n if (key >= obj.length) {\n obj.length = key + 1;\n }\n obj[key] = value;\n endBatch();\n } else {\n die(8);\n }\n}\nfunction remove(obj, key) {\n if (isObservableObject(obj)) {\n obj[$mobx].delete_(key);\n } else if (isObservableMap(obj)) {\n obj[\"delete\"](key);\n } else if (isObservableSet(obj)) {\n obj[\"delete\"](key);\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") {\n key = parseInt(key, 10);\n }\n obj.splice(key, 1);\n } else {\n die(9);\n }\n}\nfunction has(obj, key) {\n if (isObservableObject(obj)) {\n return obj[$mobx].has_(key);\n } else if (isObservableMap(obj)) {\n return obj.has(key);\n } else if (isObservableSet(obj)) {\n return obj.has(key);\n } else if (isObservableArray(obj)) {\n return key >= 0 && key < obj.length;\n }\n die(10);\n}\nfunction get(obj, key) {\n if (!has(obj, key)) {\n return undefined;\n }\n if (isObservableObject(obj)) {\n return obj[$mobx].get_(key);\n } else if (isObservableMap(obj)) {\n return obj.get(key);\n } else if (isObservableArray(obj)) {\n return obj[key];\n }\n die(11);\n}\nfunction apiDefineProperty(obj, key, descriptor) {\n if (isObservableObject(obj)) {\n return obj[$mobx].defineProperty_(key, descriptor);\n }\n die(39);\n}\nfunction apiOwnKeys(obj) {\n if (isObservableObject(obj)) {\n return obj[$mobx].ownKeys_();\n }\n die(38);\n}\n\nfunction observe(thing, propOrCb, cbOrFire, fireImmediately) {\n if (isFunction(cbOrFire)) {\n return observeObservableProperty(thing, propOrCb, cbOrFire, fireImmediately);\n } else {\n return observeObservable(thing, propOrCb, cbOrFire);\n }\n}\nfunction observeObservable(thing, listener, fireImmediately) {\n return getAdministration(thing).observe_(listener, fireImmediately);\n}\nfunction observeObservableProperty(thing, property, listener, fireImmediately) {\n return getAdministration(thing, property).observe_(listener, fireImmediately);\n}\n\nfunction cache(map, key, value) {\n map.set(key, value);\n return value;\n}\nfunction toJSHelper(source, __alreadySeen) {\n if (source == null || typeof source !== \"object\" || source instanceof Date || !isObservable(source)) {\n return source;\n }\n if (isObservableValue(source) || isComputedValue(source)) {\n return toJSHelper(source.get(), __alreadySeen);\n }\n if (__alreadySeen.has(source)) {\n return __alreadySeen.get(source);\n }\n if (isObservableArray(source)) {\n var res = cache(__alreadySeen, source, new Array(source.length));\n source.forEach(function (value, idx) {\n res[idx] = toJSHelper(value, __alreadySeen);\n });\n return res;\n }\n if (isObservableSet(source)) {\n var _res = cache(__alreadySeen, source, new Set());\n source.forEach(function (value) {\n _res.add(toJSHelper(value, __alreadySeen));\n });\n return _res;\n }\n if (isObservableMap(source)) {\n var _res2 = cache(__alreadySeen, source, new Map());\n source.forEach(function (value, key) {\n _res2.set(key, toJSHelper(value, __alreadySeen));\n });\n return _res2;\n } else {\n // must be observable object\n var _res3 = cache(__alreadySeen, source, {});\n apiOwnKeys(source).forEach(function (key) {\n if (objectPrototype.propertyIsEnumerable.call(source, key)) {\n _res3[key] = toJSHelper(source[key], __alreadySeen);\n }\n });\n return _res3;\n }\n}\n/**\r\n * Recursively converts an observable to it's non-observable native counterpart.\r\n * It does NOT recurse into non-observables, these are left as they are, even if they contain observables.\r\n * Computed and other non-enumerable properties are completely ignored.\r\n * Complex scenarios require custom solution, eg implementing `toJSON` or using `serializr` lib.\r\n */\nfunction toJS(source, options) {\n if ( options) {\n die(\"toJS no longer supports options\");\n }\n return toJSHelper(source, new Map());\n}\n\nfunction trace() {\n var enterBreakPoint = false;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof args[args.length - 1] === \"boolean\") {\n enterBreakPoint = args.pop();\n }\n var derivation = getAtomFromArgs(args);\n if (!derivation) {\n return die(\"'trace(break?)' can only be used inside a tracked computed value or a Reaction. Consider passing in the computed value or reaction explicitly\");\n }\n if (derivation.isTracing_ === TraceMode.NONE) {\n console.log(\"[mobx.trace] '\" + derivation.name_ + \"' tracing enabled\");\n }\n derivation.isTracing_ = enterBreakPoint ? TraceMode.BREAK : TraceMode.LOG;\n}\nfunction getAtomFromArgs(args) {\n switch (args.length) {\n case 0:\n return globalState.trackingDerivation;\n case 1:\n return getAtom(args[0]);\n case 2:\n return getAtom(args[0], args[1]);\n }\n}\n\n/**\r\n * During a transaction no views are updated until the end of the transaction.\r\n * The transaction will be run synchronously nonetheless.\r\n *\r\n * @param action a function that updates some reactive state\r\n * @returns any value that was returned by the 'action' parameter.\r\n */\nfunction transaction(action, thisArg) {\n if (thisArg === void 0) {\n thisArg = undefined;\n }\n startBatch();\n try {\n return action.apply(thisArg);\n } finally {\n endBatch();\n }\n}\n\nfunction when(predicate, arg1, arg2) {\n if (arguments.length === 1 || arg1 && typeof arg1 === \"object\") {\n return whenPromise(predicate, arg1);\n }\n return _when(predicate, arg1, arg2 || {});\n}\nfunction _when(predicate, effect, opts) {\n var timeoutHandle;\n if (typeof opts.timeout === \"number\") {\n var error = new Error(\"WHEN_TIMEOUT\");\n timeoutHandle = setTimeout(function () {\n if (!disposer[$mobx].isDisposed_) {\n disposer();\n if (opts.onError) {\n opts.onError(error);\n } else {\n throw error;\n }\n }\n }, opts.timeout);\n }\n opts.name = opts.name || \"When@\" + getNextId() ;\n var effectAction = createAction( opts.name + \"-effect\" , effect);\n // eslint-disable-next-line\n var disposer = autorun(function (r) {\n // predicate should not change state\n var cond = allowStateChanges(false, predicate);\n if (cond) {\n r.dispose();\n if (timeoutHandle) {\n clearTimeout(timeoutHandle);\n }\n effectAction();\n }\n }, opts);\n return disposer;\n}\nfunction whenPromise(predicate, opts) {\n var _opts$signal;\n if ( opts && opts.onError) {\n return die(\"the options 'onError' and 'promise' cannot be combined\");\n }\n if (opts != null && (_opts$signal = opts.signal) != null && _opts$signal.aborted) {\n return Object.assign(Promise.reject(new Error(\"WHEN_ABORTED\")), {\n cancel: function cancel() {\n return null;\n }\n });\n }\n var cancel;\n var abort;\n var res = new Promise(function (resolve, reject) {\n var _opts$signal2;\n var disposer = _when(predicate, resolve, _extends({}, opts, {\n onError: reject\n }));\n cancel = function cancel() {\n disposer();\n reject(new Error(\"WHEN_CANCELLED\"));\n };\n abort = function abort() {\n disposer();\n reject(new Error(\"WHEN_ABORTED\"));\n };\n opts == null ? void 0 : (_opts$signal2 = opts.signal) == null ? void 0 : _opts$signal2.addEventListener == null ? void 0 : _opts$signal2.addEventListener(\"abort\", abort);\n })[\"finally\"](function () {\n var _opts$signal3;\n return opts == null ? void 0 : (_opts$signal3 = opts.signal) == null ? void 0 : _opts$signal3.removeEventListener == null ? void 0 : _opts$signal3.removeEventListener(\"abort\", abort);\n });\n res.cancel = cancel;\n return res;\n}\n\nfunction getAdm(target) {\n return target[$mobx];\n}\n// Optimization: we don't need the intermediate objects and could have a completely custom administration for DynamicObjects,\n// and skip either the internal values map, or the base object with its property descriptors!\nvar objectProxyTraps = {\n has: function has(target, name) {\n if ( globalState.trackingDerivation) {\n warnAboutProxyRequirement(\"detect new properties using the 'in' operator. Use 'has' from 'mobx' instead.\");\n }\n return getAdm(target).has_(name);\n },\n get: function get(target, name) {\n return getAdm(target).get_(name);\n },\n set: function set(target, name, value) {\n var _getAdm$set_;\n if (!isStringish(name)) {\n return false;\n }\n if ( !getAdm(target).values_.has(name)) {\n warnAboutProxyRequirement(\"add a new observable property through direct assignment. Use 'set' from 'mobx' instead.\");\n }\n // null (intercepted) -> true (success)\n return (_getAdm$set_ = getAdm(target).set_(name, value, true)) != null ? _getAdm$set_ : true;\n },\n deleteProperty: function deleteProperty(target, name) {\n var _getAdm$delete_;\n {\n warnAboutProxyRequirement(\"delete properties from an observable object. Use 'remove' from 'mobx' instead.\");\n }\n if (!isStringish(name)) {\n return false;\n }\n // null (intercepted) -> true (success)\n return (_getAdm$delete_ = getAdm(target).delete_(name, true)) != null ? _getAdm$delete_ : true;\n },\n defineProperty: function defineProperty(target, name, descriptor) {\n var _getAdm$definePropert;\n {\n warnAboutProxyRequirement(\"define property on an observable object. Use 'defineProperty' from 'mobx' instead.\");\n }\n // null (intercepted) -> true (success)\n return (_getAdm$definePropert = getAdm(target).defineProperty_(name, descriptor)) != null ? _getAdm$definePropert : true;\n },\n ownKeys: function ownKeys(target) {\n if ( globalState.trackingDerivation) {\n warnAboutProxyRequirement(\"iterate keys to detect added / removed properties. Use 'keys' from 'mobx' instead.\");\n }\n return getAdm(target).ownKeys_();\n },\n preventExtensions: function preventExtensions(target) {\n die(13);\n }\n};\nfunction asDynamicObservableObject(target, options) {\n var _target$$mobx, _target$$mobx$proxy_;\n assertProxies();\n target = asObservableObject(target, options);\n return (_target$$mobx$proxy_ = (_target$$mobx = target[$mobx]).proxy_) != null ? _target$$mobx$proxy_ : _target$$mobx.proxy_ = new Proxy(target, objectProxyTraps);\n}\n\nfunction hasInterceptors(interceptable) {\n return interceptable.interceptors_ !== undefined && interceptable.interceptors_.length > 0;\n}\nfunction registerInterceptor(interceptable, handler) {\n var interceptors = interceptable.interceptors_ || (interceptable.interceptors_ = []);\n interceptors.push(handler);\n return once(function () {\n var idx = interceptors.indexOf(handler);\n if (idx !== -1) {\n interceptors.splice(idx, 1);\n }\n });\n}\nfunction interceptChange(interceptable, change) {\n var prevU = untrackedStart();\n try {\n // Interceptor can modify the array, copy it to avoid concurrent modification, see #1950\n var interceptors = [].concat(interceptable.interceptors_ || []);\n for (var i = 0, l = interceptors.length; i < l; i++) {\n change = interceptors[i](change);\n if (change && !change.type) {\n die(14);\n }\n if (!change) {\n break;\n }\n }\n return change;\n } finally {\n untrackedEnd(prevU);\n }\n}\n\nfunction hasListeners(listenable) {\n return listenable.changeListeners_ !== undefined && listenable.changeListeners_.length > 0;\n}\nfunction registerListener(listenable, handler) {\n var listeners = listenable.changeListeners_ || (listenable.changeListeners_ = []);\n listeners.push(handler);\n return once(function () {\n var idx = listeners.indexOf(handler);\n if (idx !== -1) {\n listeners.splice(idx, 1);\n }\n });\n}\nfunction notifyListeners(listenable, change) {\n var prevU = untrackedStart();\n var listeners = listenable.changeListeners_;\n if (!listeners) {\n return;\n }\n listeners = listeners.slice();\n for (var i = 0, l = listeners.length; i < l; i++) {\n listeners[i](change);\n }\n untrackedEnd(prevU);\n}\n\nfunction makeObservable(target, annotations, options) {\n var adm = asObservableObject(target, options)[$mobx];\n startBatch();\n try {\n var _annotations;\n if (\"development\" !== \"production\" && annotations && target[storedAnnotationsSymbol]) {\n die(\"makeObservable second arg must be nullish when using decorators. Mixing @decorator syntax with annotations is not supported.\");\n }\n // Default to decorators\n (_annotations = annotations) != null ? _annotations : annotations = collectStoredAnnotations(target);\n // Annotate\n ownKeys(annotations).forEach(function (key) {\n return adm.make_(key, annotations[key]);\n });\n } finally {\n endBatch();\n }\n return target;\n}\n// proto[keysSymbol] = new Set()\nvar keysSymbol = /*#__PURE__*/Symbol(\"mobx-keys\");\nfunction makeAutoObservable(target, overrides, options) {\n {\n if (!isPlainObject(target) && !isPlainObject(Object.getPrototypeOf(target))) {\n die(\"'makeAutoObservable' can only be used for classes that don't have a superclass\");\n }\n if (isObservableObject(target)) {\n die(\"makeAutoObservable can only be used on objects not already made observable\");\n }\n }\n // Optimization: avoid visiting protos\n // Assumes that annotation.make_/.extend_ works the same for plain objects\n if (isPlainObject(target)) {\n return extendObservable(target, target, overrides, options);\n }\n var adm = asObservableObject(target, options)[$mobx];\n // Optimization: cache keys on proto\n // Assumes makeAutoObservable can be called only once per object and can't be used in subclass\n if (!target[keysSymbol]) {\n var proto = Object.getPrototypeOf(target);\n var keys = new Set([].concat(ownKeys(target), ownKeys(proto)));\n keys[\"delete\"](\"constructor\");\n keys[\"delete\"]($mobx);\n addHiddenProp(proto, keysSymbol, keys);\n }\n startBatch();\n try {\n target[keysSymbol].forEach(function (key) {\n return adm.make_(key,\n // must pass \"undefined\" for { key: undefined }\n !overrides ? true : key in overrides ? overrides[key] : true);\n });\n } finally {\n endBatch();\n }\n return target;\n}\n\nvar SPLICE = \"splice\";\nvar UPDATE = \"update\";\nvar MAX_SPLICE_SIZE = 10000; // See e.g. https://github.com/mobxjs/mobx/issues/859\nvar arrayTraps = {\n get: function get(target, name) {\n var adm = target[$mobx];\n if (name === $mobx) {\n return adm;\n }\n if (name === \"length\") {\n return adm.getArrayLength_();\n }\n if (typeof name === \"string\" && !isNaN(name)) {\n return adm.get_(parseInt(name));\n }\n if (hasProp(arrayExtensions, name)) {\n return arrayExtensions[name];\n }\n return target[name];\n },\n set: function set(target, name, value) {\n var adm = target[$mobx];\n if (name === \"length\") {\n adm.setArrayLength_(value);\n }\n if (typeof name === \"symbol\" || isNaN(name)) {\n target[name] = value;\n } else {\n // numeric string\n adm.set_(parseInt(name), value);\n }\n return true;\n },\n preventExtensions: function preventExtensions() {\n die(15);\n }\n};\nvar ObservableArrayAdministration = /*#__PURE__*/function () {\n // this is the prop that gets proxied, so can't replace it!\n\n function ObservableArrayAdministration(name, enhancer, owned_, legacyMode_) {\n if (name === void 0) {\n name = \"ObservableArray@\" + getNextId() ;\n }\n this.owned_ = void 0;\n this.legacyMode_ = void 0;\n this.atom_ = void 0;\n this.values_ = [];\n this.interceptors_ = void 0;\n this.changeListeners_ = void 0;\n this.enhancer_ = void 0;\n this.dehancer = void 0;\n this.proxy_ = void 0;\n this.lastKnownLength_ = 0;\n this.owned_ = owned_;\n this.legacyMode_ = legacyMode_;\n this.atom_ = new Atom(name);\n this.enhancer_ = function (newV, oldV) {\n return enhancer(newV, oldV, name + \"[..]\" );\n };\n }\n var _proto = ObservableArrayAdministration.prototype;\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.dehanceValues_ = function dehanceValues_(values) {\n if (this.dehancer !== undefined && values.length > 0) {\n return values.map(this.dehancer);\n }\n return values;\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if (fireImmediately === void 0) {\n fireImmediately = false;\n }\n if (fireImmediately) {\n listener({\n observableKind: \"array\",\n object: this.proxy_,\n debugObjectName: this.atom_.name_,\n type: \"splice\",\n index: 0,\n added: this.values_.slice(),\n addedCount: this.values_.length,\n removed: [],\n removedCount: 0\n });\n }\n return registerListener(this, listener);\n };\n _proto.getArrayLength_ = function getArrayLength_() {\n this.atom_.reportObserved();\n return this.values_.length;\n };\n _proto.setArrayLength_ = function setArrayLength_(newLength) {\n if (typeof newLength !== \"number\" || isNaN(newLength) || newLength < 0) {\n die(\"Out of range: \" + newLength);\n }\n var currentLength = this.values_.length;\n if (newLength === currentLength) {\n return;\n } else if (newLength > currentLength) {\n var newItems = new Array(newLength - currentLength);\n for (var i = 0; i < newLength - currentLength; i++) {\n newItems[i] = undefined;\n } // No Array.fill everywhere...\n this.spliceWithArray_(currentLength, 0, newItems);\n } else {\n this.spliceWithArray_(newLength, currentLength - newLength);\n }\n };\n _proto.updateArrayLength_ = function updateArrayLength_(oldLength, delta) {\n if (oldLength !== this.lastKnownLength_) {\n die(16);\n }\n this.lastKnownLength_ += delta;\n if (this.legacyMode_ && delta > 0) {\n reserveArrayBuffer(oldLength + delta + 1);\n }\n };\n _proto.spliceWithArray_ = function spliceWithArray_(index, deleteCount, newItems) {\n var _this = this;\n checkIfStateModificationsAreAllowed(this.atom_);\n var length = this.values_.length;\n if (index === undefined) {\n index = 0;\n } else if (index > length) {\n index = length;\n } else if (index < 0) {\n index = Math.max(0, length + index);\n }\n if (arguments.length === 1) {\n deleteCount = length - index;\n } else if (deleteCount === undefined || deleteCount === null) {\n deleteCount = 0;\n } else {\n deleteCount = Math.max(0, Math.min(deleteCount, length - index));\n }\n if (newItems === undefined) {\n newItems = EMPTY_ARRAY;\n }\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_,\n type: SPLICE,\n index: index,\n removedCount: deleteCount,\n added: newItems\n });\n if (!change) {\n return EMPTY_ARRAY;\n }\n deleteCount = change.removedCount;\n newItems = change.added;\n }\n newItems = newItems.length === 0 ? newItems : newItems.map(function (v) {\n return _this.enhancer_(v, undefined);\n });\n if (this.legacyMode_ || \"development\" !== \"production\") {\n var lengthDelta = newItems.length - deleteCount;\n this.updateArrayLength_(length, lengthDelta); // checks if internal array wasn't modified\n }\n\n var res = this.spliceItemsIntoValues_(index, deleteCount, newItems);\n if (deleteCount !== 0 || newItems.length !== 0) {\n this.notifyArraySplice_(index, newItems, res);\n }\n return this.dehanceValues_(res);\n };\n _proto.spliceItemsIntoValues_ = function spliceItemsIntoValues_(index, deleteCount, newItems) {\n if (newItems.length < MAX_SPLICE_SIZE) {\n var _this$values_;\n return (_this$values_ = this.values_).splice.apply(_this$values_, [index, deleteCount].concat(newItems));\n } else {\n // The items removed by the splice\n var res = this.values_.slice(index, index + deleteCount);\n // The items that that should remain at the end of the array\n var oldItems = this.values_.slice(index + deleteCount);\n // New length is the previous length + addition count - deletion count\n this.values_.length += newItems.length - deleteCount;\n for (var i = 0; i < newItems.length; i++) {\n this.values_[index + i] = newItems[i];\n }\n for (var _i = 0; _i < oldItems.length; _i++) {\n this.values_[index + newItems.length + _i] = oldItems[_i];\n }\n return res;\n }\n };\n _proto.notifyArrayChildUpdate_ = function notifyArrayChildUpdate_(index, newValue, oldValue) {\n var notifySpy = !this.owned_ && isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"array\",\n object: this.proxy_,\n type: UPDATE,\n debugObjectName: this.atom_.name_,\n index: index,\n newValue: newValue,\n oldValue: oldValue\n } : null;\n // The reason why this is on right hand side here (and not above), is this way the uglifier will drop it, but it won't\n // cause any runtime overhead in development mode without NODE_ENV set, unless spying is enabled\n if ( notifySpy) {\n spyReportStart(change);\n }\n this.atom_.reportChanged();\n if (notify) {\n notifyListeners(this, change);\n }\n if ( notifySpy) {\n spyReportEnd();\n }\n };\n _proto.notifyArraySplice_ = function notifyArraySplice_(index, added, removed) {\n var notifySpy = !this.owned_ && isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"array\",\n object: this.proxy_,\n debugObjectName: this.atom_.name_,\n type: SPLICE,\n index: index,\n removed: removed,\n added: added,\n removedCount: removed.length,\n addedCount: added.length\n } : null;\n if ( notifySpy) {\n spyReportStart(change);\n }\n this.atom_.reportChanged();\n // conform: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/observe\n if (notify) {\n notifyListeners(this, change);\n }\n if ( notifySpy) {\n spyReportEnd();\n }\n };\n _proto.get_ = function get_(index) {\n if (this.legacyMode_ && index >= this.values_.length) {\n console.warn( \"[mobx.array] Attempt to read an array index (\" + index + \") that is out of bounds (\" + this.values_.length + \"). Please check length first. Out of bound indices will not be tracked by MobX\" );\n return undefined;\n }\n this.atom_.reportObserved();\n return this.dehanceValue_(this.values_[index]);\n };\n _proto.set_ = function set_(index, newValue) {\n var values = this.values_;\n if (this.legacyMode_ && index > values.length) {\n // out of bounds\n die(17, index, values.length);\n }\n if (index < values.length) {\n // update at index in range\n checkIfStateModificationsAreAllowed(this.atom_);\n var oldValue = values[index];\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: UPDATE,\n object: this.proxy_,\n index: index,\n newValue: newValue\n });\n if (!change) {\n return;\n }\n newValue = change.newValue;\n }\n newValue = this.enhancer_(newValue, oldValue);\n var changed = newValue !== oldValue;\n if (changed) {\n values[index] = newValue;\n this.notifyArrayChildUpdate_(index, newValue, oldValue);\n }\n } else {\n // For out of bound index, we don't create an actual sparse array,\n // but rather fill the holes with undefined (same as setArrayLength_).\n // This could be considered a bug.\n var newItems = new Array(index + 1 - values.length);\n for (var i = 0; i < newItems.length - 1; i++) {\n newItems[i] = undefined;\n } // No Array.fill everywhere...\n newItems[newItems.length - 1] = newValue;\n this.spliceWithArray_(values.length, 0, newItems);\n }\n };\n return ObservableArrayAdministration;\n}();\nfunction createObservableArray(initialValues, enhancer, name, owned) {\n if (name === void 0) {\n name = \"ObservableArray@\" + getNextId() ;\n }\n if (owned === void 0) {\n owned = false;\n }\n assertProxies();\n var adm = new ObservableArrayAdministration(name, enhancer, owned, false);\n addHiddenFinalProp(adm.values_, $mobx, adm);\n var proxy = new Proxy(adm.values_, arrayTraps);\n adm.proxy_ = proxy;\n if (initialValues && initialValues.length) {\n var prev = allowStateChangesStart(true);\n adm.spliceWithArray_(0, 0, initialValues);\n allowStateChangesEnd(prev);\n }\n return proxy;\n}\n// eslint-disable-next-line\nvar arrayExtensions = {\n clear: function clear() {\n return this.splice(0);\n },\n replace: function replace(newItems) {\n var adm = this[$mobx];\n return adm.spliceWithArray_(0, adm.values_.length, newItems);\n },\n // Used by JSON.stringify\n toJSON: function toJSON() {\n return this.slice();\n },\n /*\r\n * functions that do alter the internal structure of the array, (based on lib.es6.d.ts)\r\n * since these functions alter the inner structure of the array, the have side effects.\r\n * Because the have side effects, they should not be used in computed function,\r\n * and for that reason the do not call dependencyState.notifyObserved\r\n */\n splice: function splice(index, deleteCount) {\n for (var _len = arguments.length, newItems = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n newItems[_key - 2] = arguments[_key];\n }\n var adm = this[$mobx];\n switch (arguments.length) {\n case 0:\n return [];\n case 1:\n return adm.spliceWithArray_(index);\n case 2:\n return adm.spliceWithArray_(index, deleteCount);\n }\n return adm.spliceWithArray_(index, deleteCount, newItems);\n },\n spliceWithArray: function spliceWithArray(index, deleteCount, newItems) {\n return this[$mobx].spliceWithArray_(index, deleteCount, newItems);\n },\n push: function push() {\n var adm = this[$mobx];\n for (var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n adm.spliceWithArray_(adm.values_.length, 0, items);\n return adm.values_.length;\n },\n pop: function pop() {\n return this.splice(Math.max(this[$mobx].values_.length - 1, 0), 1)[0];\n },\n shift: function shift() {\n return this.splice(0, 1)[0];\n },\n unshift: function unshift() {\n var adm = this[$mobx];\n for (var _len3 = arguments.length, items = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n items[_key3] = arguments[_key3];\n }\n adm.spliceWithArray_(0, 0, items);\n return adm.values_.length;\n },\n reverse: function reverse() {\n // reverse by default mutates in place before returning the result\n // which makes it both a 'derivation' and a 'mutation'.\n if (globalState.trackingDerivation) {\n die(37, \"reverse\");\n }\n this.replace(this.slice().reverse());\n return this;\n },\n sort: function sort() {\n // sort by default mutates in place before returning the result\n // which goes against all good practices. Let's not change the array in place!\n if (globalState.trackingDerivation) {\n die(37, \"sort\");\n }\n var copy = this.slice();\n copy.sort.apply(copy, arguments);\n this.replace(copy);\n return this;\n },\n remove: function remove(value) {\n var adm = this[$mobx];\n var idx = adm.dehanceValues_(adm.values_).indexOf(value);\n if (idx > -1) {\n this.splice(idx, 1);\n return true;\n }\n return false;\n }\n};\n/**\r\n * Wrap function from prototype\r\n * Without this, everything works as well, but this works\r\n * faster as everything works on unproxied values\r\n */\naddArrayExtension(\"concat\", simpleFunc);\naddArrayExtension(\"flat\", simpleFunc);\naddArrayExtension(\"includes\", simpleFunc);\naddArrayExtension(\"indexOf\", simpleFunc);\naddArrayExtension(\"join\", simpleFunc);\naddArrayExtension(\"lastIndexOf\", simpleFunc);\naddArrayExtension(\"slice\", simpleFunc);\naddArrayExtension(\"toString\", simpleFunc);\naddArrayExtension(\"toLocaleString\", simpleFunc);\n// map\naddArrayExtension(\"every\", mapLikeFunc);\naddArrayExtension(\"filter\", mapLikeFunc);\naddArrayExtension(\"find\", mapLikeFunc);\naddArrayExtension(\"findIndex\", mapLikeFunc);\naddArrayExtension(\"flatMap\", mapLikeFunc);\naddArrayExtension(\"forEach\", mapLikeFunc);\naddArrayExtension(\"map\", mapLikeFunc);\naddArrayExtension(\"some\", mapLikeFunc);\n// reduce\naddArrayExtension(\"reduce\", reduceLikeFunc);\naddArrayExtension(\"reduceRight\", reduceLikeFunc);\nfunction addArrayExtension(funcName, funcFactory) {\n if (typeof Array.prototype[funcName] === \"function\") {\n arrayExtensions[funcName] = funcFactory(funcName);\n }\n}\n// Report and delegate to dehanced array\nfunction simpleFunc(funcName) {\n return function () {\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_);\n return dehancedValues[funcName].apply(dehancedValues, arguments);\n };\n}\n// Make sure callbacks recieve correct array arg #2326\nfunction mapLikeFunc(funcName) {\n return function (callback, thisArg) {\n var _this2 = this;\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_);\n return dehancedValues[funcName](function (element, index) {\n return callback.call(thisArg, element, index, _this2);\n });\n };\n}\n// Make sure callbacks recieve correct array arg #2326\nfunction reduceLikeFunc(funcName) {\n return function () {\n var _this3 = this;\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_);\n // #2432 - reduce behavior depends on arguments.length\n var callback = arguments[0];\n arguments[0] = function (accumulator, currentValue, index) {\n return callback(accumulator, currentValue, index, _this3);\n };\n return dehancedValues[funcName].apply(dehancedValues, arguments);\n };\n}\nvar isObservableArrayAdministration = /*#__PURE__*/createInstanceofPredicate(\"ObservableArrayAdministration\", ObservableArrayAdministration);\nfunction isObservableArray(thing) {\n return isObject(thing) && isObservableArrayAdministration(thing[$mobx]);\n}\n\nvar _Symbol$iterator, _Symbol$toStringTag;\nvar ObservableMapMarker = {};\nvar ADD = \"add\";\nvar DELETE = \"delete\";\n// just extend Map? See also https://gist.github.com/nestharus/13b4d74f2ef4a2f4357dbd3fc23c1e54\n// But: https://github.com/mobxjs/mobx/issues/1556\n_Symbol$iterator = Symbol.iterator;\n_Symbol$toStringTag = Symbol.toStringTag;\nvar ObservableMap = /*#__PURE__*/function () {\n // hasMap, not hashMap >-).\n\n function ObservableMap(initialData, enhancer_, name_) {\n var _this = this;\n if (enhancer_ === void 0) {\n enhancer_ = deepEnhancer;\n }\n if (name_ === void 0) {\n name_ = \"ObservableMap@\" + getNextId() ;\n }\n this.enhancer_ = void 0;\n this.name_ = void 0;\n this[$mobx] = ObservableMapMarker;\n this.data_ = void 0;\n this.hasMap_ = void 0;\n this.keysAtom_ = void 0;\n this.interceptors_ = void 0;\n this.changeListeners_ = void 0;\n this.dehancer = void 0;\n this.enhancer_ = enhancer_;\n this.name_ = name_;\n if (!isFunction(Map)) {\n die(18);\n }\n this.keysAtom_ = createAtom( this.name_ + \".keys()\" );\n this.data_ = new Map();\n this.hasMap_ = new Map();\n allowStateChanges(true, function () {\n _this.merge(initialData);\n });\n }\n var _proto = ObservableMap.prototype;\n _proto.has_ = function has_(key) {\n return this.data_.has(key);\n };\n _proto.has = function has(key) {\n var _this2 = this;\n if (!globalState.trackingDerivation) {\n return this.has_(key);\n }\n var entry = this.hasMap_.get(key);\n if (!entry) {\n var newEntry = entry = new ObservableValue(this.has_(key), referenceEnhancer, this.name_ + \".\" + stringifyKey(key) + \"?\" , false);\n this.hasMap_.set(key, newEntry);\n onBecomeUnobserved(newEntry, function () {\n return _this2.hasMap_[\"delete\"](key);\n });\n }\n return entry.get();\n };\n _proto.set = function set(key, value) {\n var hasKey = this.has_(key);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: hasKey ? UPDATE : ADD,\n object: this,\n newValue: value,\n name: key\n });\n if (!change) {\n return this;\n }\n value = change.newValue;\n }\n if (hasKey) {\n this.updateValue_(key, value);\n } else {\n this.addValue_(key, value);\n }\n return this;\n };\n _proto[\"delete\"] = function _delete(key) {\n var _this3 = this;\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: DELETE,\n object: this,\n name: key\n });\n if (!change) {\n return false;\n }\n }\n if (this.has_(key)) {\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var _change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: this.data_.get(key).value_,\n name: key\n } : null;\n if ( notifySpy) {\n spyReportStart(_change);\n } // TODO fix type\n transaction(function () {\n var _this3$hasMap_$get;\n _this3.keysAtom_.reportChanged();\n (_this3$hasMap_$get = _this3.hasMap_.get(key)) == null ? void 0 : _this3$hasMap_$get.setNewValue_(false);\n var observable = _this3.data_.get(key);\n observable.setNewValue_(undefined);\n _this3.data_[\"delete\"](key);\n });\n if (notify) {\n notifyListeners(this, _change);\n }\n if ( notifySpy) {\n spyReportEnd();\n }\n return true;\n }\n return false;\n };\n _proto.updateValue_ = function updateValue_(key, newValue) {\n var observable = this.data_.get(key);\n newValue = observable.prepareNewValue_(newValue);\n if (newValue !== globalState.UNCHANGED) {\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: UPDATE,\n object: this,\n oldValue: observable.value_,\n name: key,\n newValue: newValue\n } : null;\n if ( notifySpy) {\n spyReportStart(change);\n } // TODO fix type\n observable.setNewValue_(newValue);\n if (notify) {\n notifyListeners(this, change);\n }\n if ( notifySpy) {\n spyReportEnd();\n }\n }\n };\n _proto.addValue_ = function addValue_(key, newValue) {\n var _this4 = this;\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n transaction(function () {\n var _this4$hasMap_$get;\n var observable = new ObservableValue(newValue, _this4.enhancer_, _this4.name_ + \".\" + stringifyKey(key) , false);\n _this4.data_.set(key, observable);\n newValue = observable.value_; // value might have been changed\n (_this4$hasMap_$get = _this4.hasMap_.get(key)) == null ? void 0 : _this4$hasMap_$get.setNewValue_(true);\n _this4.keysAtom_.reportChanged();\n });\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n name: key,\n newValue: newValue\n } : null;\n if ( notifySpy) {\n spyReportStart(change);\n } // TODO fix type\n if (notify) {\n notifyListeners(this, change);\n }\n if ( notifySpy) {\n spyReportEnd();\n }\n };\n _proto.get = function get(key) {\n if (this.has(key)) {\n return this.dehanceValue_(this.data_.get(key).get());\n }\n return this.dehanceValue_(undefined);\n };\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.keys = function keys() {\n this.keysAtom_.reportObserved();\n return this.data_.keys();\n };\n _proto.values = function values() {\n var self = this;\n var keys = this.keys();\n return makeIterable({\n next: function next() {\n var _keys$next = keys.next(),\n done = _keys$next.done,\n value = _keys$next.value;\n return {\n done: done,\n value: done ? undefined : self.get(value)\n };\n }\n });\n };\n _proto.entries = function entries() {\n var self = this;\n var keys = this.keys();\n return makeIterable({\n next: function next() {\n var _keys$next2 = keys.next(),\n done = _keys$next2.done,\n value = _keys$next2.value;\n return {\n done: done,\n value: done ? undefined : [value, self.get(value)]\n };\n }\n });\n };\n _proto[_Symbol$iterator] = function () {\n return this.entries();\n };\n _proto.forEach = function forEach(callback, thisArg) {\n for (var _iterator = _createForOfIteratorHelperLoose(this), _step; !(_step = _iterator()).done;) {\n var _step$value = _step.value,\n key = _step$value[0],\n value = _step$value[1];\n callback.call(thisArg, value, key, this);\n }\n }\n /** Merge another object into this object, returns this. */;\n _proto.merge = function merge(other) {\n var _this5 = this;\n if (isObservableMap(other)) {\n other = new Map(other);\n }\n transaction(function () {\n if (isPlainObject(other)) {\n getPlainObjectKeys(other).forEach(function (key) {\n return _this5.set(key, other[key]);\n });\n } else if (Array.isArray(other)) {\n other.forEach(function (_ref) {\n var key = _ref[0],\n value = _ref[1];\n return _this5.set(key, value);\n });\n } else if (isES6Map(other)) {\n if (other.constructor !== Map) {\n die(19, other);\n }\n other.forEach(function (value, key) {\n return _this5.set(key, value);\n });\n } else if (other !== null && other !== undefined) {\n die(20, other);\n }\n });\n return this;\n };\n _proto.clear = function clear() {\n var _this6 = this;\n transaction(function () {\n untracked(function () {\n for (var _iterator2 = _createForOfIteratorHelperLoose(_this6.keys()), _step2; !(_step2 = _iterator2()).done;) {\n var key = _step2.value;\n _this6[\"delete\"](key);\n }\n });\n });\n };\n _proto.replace = function replace(values) {\n var _this7 = this;\n // Implementation requirements:\n // - respect ordering of replacement map\n // - allow interceptors to run and potentially prevent individual operations\n // - don't recreate observables that already exist in original map (so we don't destroy existing subscriptions)\n // - don't _keysAtom.reportChanged if the keys of resulting map are indentical (order matters!)\n // - note that result map may differ from replacement map due to the interceptors\n transaction(function () {\n // Convert to map so we can do quick key lookups\n var replacementMap = convertToMap(values);\n var orderedData = new Map();\n // Used for optimization\n var keysReportChangedCalled = false;\n // Delete keys that don't exist in replacement map\n // if the key deletion is prevented by interceptor\n // add entry at the beginning of the result map\n for (var _iterator3 = _createForOfIteratorHelperLoose(_this7.data_.keys()), _step3; !(_step3 = _iterator3()).done;) {\n var key = _step3.value;\n // Concurrently iterating/deleting keys\n // iterator should handle this correctly\n if (!replacementMap.has(key)) {\n var deleted = _this7[\"delete\"](key);\n // Was the key removed?\n if (deleted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true;\n } else {\n // Delete prevented by interceptor\n var value = _this7.data_.get(key);\n orderedData.set(key, value);\n }\n }\n }\n // Merge entries\n for (var _iterator4 = _createForOfIteratorHelperLoose(replacementMap.entries()), _step4; !(_step4 = _iterator4()).done;) {\n var _step4$value = _step4.value,\n _key = _step4$value[0],\n _value = _step4$value[1];\n // We will want to know whether a new key is added\n var keyExisted = _this7.data_.has(_key);\n // Add or update value\n _this7.set(_key, _value);\n // The addition could have been prevent by interceptor\n if (_this7.data_.has(_key)) {\n // The update could have been prevented by interceptor\n // and also we want to preserve existing values\n // so use value from _data map (instead of replacement map)\n var _value2 = _this7.data_.get(_key);\n orderedData.set(_key, _value2);\n // Was a new key added?\n if (!keyExisted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true;\n }\n }\n }\n // Check for possible key order change\n if (!keysReportChangedCalled) {\n if (_this7.data_.size !== orderedData.size) {\n // If size differs, keys are definitely modified\n _this7.keysAtom_.reportChanged();\n } else {\n var iter1 = _this7.data_.keys();\n var iter2 = orderedData.keys();\n var next1 = iter1.next();\n var next2 = iter2.next();\n while (!next1.done) {\n if (next1.value !== next2.value) {\n _this7.keysAtom_.reportChanged();\n break;\n }\n next1 = iter1.next();\n next2 = iter2.next();\n }\n }\n }\n // Use correctly ordered map\n _this7.data_ = orderedData;\n });\n return this;\n };\n _proto.toString = function toString() {\n return \"[object ObservableMap]\";\n };\n _proto.toJSON = function toJSON() {\n return Array.from(this);\n };\n /**\r\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\r\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\r\n * for callback details\r\n */\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if ( fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with maps.\");\n }\n return registerListener(this, listener);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _createClass(ObservableMap, [{\n key: \"size\",\n get: function get() {\n this.keysAtom_.reportObserved();\n return this.data_.size;\n }\n }, {\n key: _Symbol$toStringTag,\n get: function get() {\n return \"Map\";\n }\n }]);\n return ObservableMap;\n}();\n// eslint-disable-next-line\nvar isObservableMap = /*#__PURE__*/createInstanceofPredicate(\"ObservableMap\", ObservableMap);\nfunction convertToMap(dataStructure) {\n if (isES6Map(dataStructure) || isObservableMap(dataStructure)) {\n return dataStructure;\n } else if (Array.isArray(dataStructure)) {\n return new Map(dataStructure);\n } else if (isPlainObject(dataStructure)) {\n var map = new Map();\n for (var key in dataStructure) {\n map.set(key, dataStructure[key]);\n }\n return map;\n } else {\n return die(21, dataStructure);\n }\n}\n\nvar _Symbol$iterator$1, _Symbol$toStringTag$1;\nvar ObservableSetMarker = {};\n_Symbol$iterator$1 = Symbol.iterator;\n_Symbol$toStringTag$1 = Symbol.toStringTag;\nvar ObservableSet = /*#__PURE__*/function () {\n function ObservableSet(initialData, enhancer, name_) {\n if (enhancer === void 0) {\n enhancer = deepEnhancer;\n }\n if (name_ === void 0) {\n name_ = \"ObservableSet@\" + getNextId() ;\n }\n this.name_ = void 0;\n this[$mobx] = ObservableSetMarker;\n this.data_ = new Set();\n this.atom_ = void 0;\n this.changeListeners_ = void 0;\n this.interceptors_ = void 0;\n this.dehancer = void 0;\n this.enhancer_ = void 0;\n this.name_ = name_;\n if (!isFunction(Set)) {\n die(22);\n }\n this.atom_ = createAtom(this.name_);\n this.enhancer_ = function (newV, oldV) {\n return enhancer(newV, oldV, name_);\n };\n if (initialData) {\n this.replace(initialData);\n }\n }\n var _proto = ObservableSet.prototype;\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.clear = function clear() {\n var _this = this;\n transaction(function () {\n untracked(function () {\n for (var _iterator = _createForOfIteratorHelperLoose(_this.data_.values()), _step; !(_step = _iterator()).done;) {\n var value = _step.value;\n _this[\"delete\"](value);\n }\n });\n });\n };\n _proto.forEach = function forEach(callbackFn, thisArg) {\n for (var _iterator2 = _createForOfIteratorHelperLoose(this), _step2; !(_step2 = _iterator2()).done;) {\n var value = _step2.value;\n callbackFn.call(thisArg, value, value, this);\n }\n };\n _proto.add = function add(value) {\n var _this2 = this;\n checkIfStateModificationsAreAllowed(this.atom_);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: ADD,\n object: this,\n newValue: value\n });\n if (!change) {\n return this;\n }\n // ideally, value = change.value would be done here, so that values can be\n // changed by interceptor. Same applies for other Set and Map api's.\n }\n\n if (!this.has(value)) {\n transaction(function () {\n _this2.data_.add(_this2.enhancer_(value, undefined));\n _this2.atom_.reportChanged();\n });\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var _change = notify || notifySpy ? {\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n newValue: value\n } : null;\n if (notifySpy && \"development\" !== \"production\") {\n spyReportStart(_change);\n }\n if (notify) {\n notifyListeners(this, _change);\n }\n if (notifySpy && \"development\" !== \"production\") {\n spyReportEnd();\n }\n }\n return this;\n };\n _proto[\"delete\"] = function _delete(value) {\n var _this3 = this;\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: DELETE,\n object: this,\n oldValue: value\n });\n if (!change) {\n return false;\n }\n }\n if (this.has(value)) {\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var _change2 = notify || notifySpy ? {\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: value\n } : null;\n if (notifySpy && \"development\" !== \"production\") {\n spyReportStart(_change2);\n }\n transaction(function () {\n _this3.atom_.reportChanged();\n _this3.data_[\"delete\"](value);\n });\n if (notify) {\n notifyListeners(this, _change2);\n }\n if (notifySpy && \"development\" !== \"production\") {\n spyReportEnd();\n }\n return true;\n }\n return false;\n };\n _proto.has = function has(value) {\n this.atom_.reportObserved();\n return this.data_.has(this.dehanceValue_(value));\n };\n _proto.entries = function entries() {\n var nextIndex = 0;\n var keys = Array.from(this.keys());\n var values = Array.from(this.values());\n return makeIterable({\n next: function next() {\n var index = nextIndex;\n nextIndex += 1;\n return index < values.length ? {\n value: [keys[index], values[index]],\n done: false\n } : {\n done: true\n };\n }\n });\n };\n _proto.keys = function keys() {\n return this.values();\n };\n _proto.values = function values() {\n this.atom_.reportObserved();\n var self = this;\n var nextIndex = 0;\n var observableValues = Array.from(this.data_.values());\n return makeIterable({\n next: function next() {\n return nextIndex < observableValues.length ? {\n value: self.dehanceValue_(observableValues[nextIndex++]),\n done: false\n } : {\n done: true\n };\n }\n });\n };\n _proto.replace = function replace(other) {\n var _this4 = this;\n if (isObservableSet(other)) {\n other = new Set(other);\n }\n transaction(function () {\n if (Array.isArray(other)) {\n _this4.clear();\n other.forEach(function (value) {\n return _this4.add(value);\n });\n } else if (isES6Set(other)) {\n _this4.clear();\n other.forEach(function (value) {\n return _this4.add(value);\n });\n } else if (other !== null && other !== undefined) {\n die(\"Cannot initialize set from \" + other);\n }\n });\n return this;\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n // ... 'fireImmediately' could also be true?\n if ( fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with sets.\");\n }\n return registerListener(this, listener);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.toJSON = function toJSON() {\n return Array.from(this);\n };\n _proto.toString = function toString() {\n return \"[object ObservableSet]\";\n };\n _proto[_Symbol$iterator$1] = function () {\n return this.values();\n };\n _createClass(ObservableSet, [{\n key: \"size\",\n get: function get() {\n this.atom_.reportObserved();\n return this.data_.size;\n }\n }, {\n key: _Symbol$toStringTag$1,\n get: function get() {\n return \"Set\";\n }\n }]);\n return ObservableSet;\n}();\n// eslint-disable-next-line\nvar isObservableSet = /*#__PURE__*/createInstanceofPredicate(\"ObservableSet\", ObservableSet);\n\nvar descriptorCache = /*#__PURE__*/Object.create(null);\nvar REMOVE = \"remove\";\nvar ObservableObjectAdministration = /*#__PURE__*/function () {\n function ObservableObjectAdministration(target_, values_, name_,\n // Used anytime annotation is not explicitely provided\n defaultAnnotation_) {\n if (values_ === void 0) {\n values_ = new Map();\n }\n if (defaultAnnotation_ === void 0) {\n defaultAnnotation_ = autoAnnotation;\n }\n this.target_ = void 0;\n this.values_ = void 0;\n this.name_ = void 0;\n this.defaultAnnotation_ = void 0;\n this.keysAtom_ = void 0;\n this.changeListeners_ = void 0;\n this.interceptors_ = void 0;\n this.proxy_ = void 0;\n this.isPlainObject_ = void 0;\n this.appliedAnnotations_ = void 0;\n this.pendingKeys_ = void 0;\n this.target_ = target_;\n this.values_ = values_;\n this.name_ = name_;\n this.defaultAnnotation_ = defaultAnnotation_;\n this.keysAtom_ = new Atom( this.name_ + \".keys\" );\n // Optimization: we use this frequently\n this.isPlainObject_ = isPlainObject(this.target_);\n if ( !isAnnotation(this.defaultAnnotation_)) {\n die(\"defaultAnnotation must be valid annotation\");\n }\n {\n // Prepare structure for tracking which fields were already annotated\n this.appliedAnnotations_ = {};\n }\n }\n var _proto = ObservableObjectAdministration.prototype;\n _proto.getObservablePropValue_ = function getObservablePropValue_(key) {\n return this.values_.get(key).get();\n };\n _proto.setObservablePropValue_ = function setObservablePropValue_(key, newValue) {\n var observable = this.values_.get(key);\n if (observable instanceof ComputedValue) {\n observable.set(newValue);\n return true;\n }\n // intercept\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: UPDATE,\n object: this.proxy_ || this.target_,\n name: key,\n newValue: newValue\n });\n if (!change) {\n return null;\n }\n newValue = change.newValue;\n }\n newValue = observable.prepareNewValue_(newValue);\n // notify spy & observers\n if (newValue !== globalState.UNCHANGED) {\n var notify = hasListeners(this);\n var notifySpy = isSpyEnabled();\n var _change = notify || notifySpy ? {\n type: UPDATE,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n oldValue: observable.value_,\n name: key,\n newValue: newValue\n } : null;\n if ( notifySpy) {\n spyReportStart(_change);\n }\n observable.setNewValue_(newValue);\n if (notify) {\n notifyListeners(this, _change);\n }\n if ( notifySpy) {\n spyReportEnd();\n }\n }\n return true;\n };\n _proto.get_ = function get_(key) {\n if (globalState.trackingDerivation && !hasProp(this.target_, key)) {\n // Key doesn't exist yet, subscribe for it in case it's added later\n this.has_(key);\n }\n return this.target_[key];\n }\n /**\r\n * @param {PropertyKey} key\r\n * @param {any} value\r\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\r\n * @param {boolean} proxyTrap whether it's called from proxy trap\r\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\r\n */;\n _proto.set_ = function set_(key, value, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n // Don't use .has(key) - we care about own\n if (hasProp(this.target_, key)) {\n // Existing prop\n if (this.values_.has(key)) {\n // Observable (can be intercepted)\n return this.setObservablePropValue_(key, value);\n } else if (proxyTrap) {\n // Non-observable - proxy\n return Reflect.set(this.target_, key, value);\n } else {\n // Non-observable\n this.target_[key] = value;\n return true;\n }\n } else {\n // New prop\n return this.extend_(key, {\n value: value,\n enumerable: true,\n writable: true,\n configurable: true\n }, this.defaultAnnotation_, proxyTrap);\n }\n }\n // Trap for \"in\"\n ;\n _proto.has_ = function has_(key) {\n if (!globalState.trackingDerivation) {\n // Skip key subscription outside derivation\n return key in this.target_;\n }\n this.pendingKeys_ || (this.pendingKeys_ = new Map());\n var entry = this.pendingKeys_.get(key);\n if (!entry) {\n entry = new ObservableValue(key in this.target_, referenceEnhancer, this.name_ + \".\" + stringifyKey(key) + \"?\" , false);\n this.pendingKeys_.set(key, entry);\n }\n return entry.get();\n }\n /**\r\n * @param {PropertyKey} key\r\n * @param {Annotation|boolean} annotation true - use default annotation, false - ignore prop\r\n */;\n _proto.make_ = function make_(key, annotation) {\n if (annotation === true) {\n annotation = this.defaultAnnotation_;\n }\n if (annotation === false) {\n return;\n }\n assertAnnotable(this, annotation, key);\n if (!(key in this.target_)) {\n var _this$target_$storedA;\n // Throw on missing key, except for decorators:\n // Decorator annotations are collected from whole prototype chain.\n // When called from super() some props may not exist yet.\n // However we don't have to worry about missing prop,\n // because the decorator must have been applied to something.\n if ((_this$target_$storedA = this.target_[storedAnnotationsSymbol]) != null && _this$target_$storedA[key]) {\n return; // will be annotated by subclass constructor\n } else {\n die(1, annotation.annotationType_, this.name_ + \".\" + key.toString());\n }\n }\n var source = this.target_;\n while (source && source !== objectPrototype) {\n var descriptor = getDescriptor(source, key);\n if (descriptor) {\n var outcome = annotation.make_(this, key, descriptor, source);\n if (outcome === 0 /* Cancel */) {\n return;\n }\n if (outcome === 1 /* Break */) {\n break;\n }\n }\n source = Object.getPrototypeOf(source);\n }\n recordAnnotationApplied(this, annotation, key);\n }\n /**\r\n * @param {PropertyKey} key\r\n * @param {PropertyDescriptor} descriptor\r\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\r\n * @param {boolean} proxyTrap whether it's called from proxy trap\r\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\r\n */;\n _proto.extend_ = function extend_(key, descriptor, annotation, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n if (annotation === true) {\n annotation = this.defaultAnnotation_;\n }\n if (annotation === false) {\n return this.defineProperty_(key, descriptor, proxyTrap);\n }\n assertAnnotable(this, annotation, key);\n var outcome = annotation.extend_(this, key, descriptor, proxyTrap);\n if (outcome) {\n recordAnnotationApplied(this, annotation, key);\n }\n return outcome;\n }\n /**\r\n * @param {PropertyKey} key\r\n * @param {PropertyDescriptor} descriptor\r\n * @param {boolean} proxyTrap whether it's called from proxy trap\r\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\r\n */;\n _proto.defineProperty_ = function defineProperty_(key, descriptor, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n try {\n startBatch();\n // Delete\n var deleteOutcome = this.delete_(key);\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome;\n }\n // ADD interceptor\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: descriptor.value\n });\n if (!change) {\n return null;\n }\n var newValue = change.newValue;\n if (descriptor.value !== newValue) {\n descriptor = _extends({}, descriptor, {\n value: newValue\n });\n }\n }\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false;\n }\n } else {\n defineProperty(this.target_, key, descriptor);\n }\n // Notify\n this.notifyPropertyAddition_(key, descriptor.value);\n } finally {\n endBatch();\n }\n return true;\n }\n // If original descriptor becomes relevant, move this to annotation directly\n ;\n _proto.defineObservableProperty_ = function defineObservableProperty_(key, value, enhancer, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n try {\n startBatch();\n // Delete\n var deleteOutcome = this.delete_(key);\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome;\n }\n // ADD interceptor\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: value\n });\n if (!change) {\n return null;\n }\n value = change.newValue;\n }\n var cachedDescriptor = getCachedObservablePropDescriptor(key);\n var descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: true,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n };\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false;\n }\n } else {\n defineProperty(this.target_, key, descriptor);\n }\n var observable = new ObservableValue(value, enhancer, \"development\" !== \"production\" ? this.name_ + \".\" + key.toString() : \"ObservableObject.key\", false);\n this.values_.set(key, observable);\n // Notify (value possibly changed by ObservableValue)\n this.notifyPropertyAddition_(key, observable.value_);\n } finally {\n endBatch();\n }\n return true;\n }\n // If original descriptor becomes relevant, move this to annotation directly\n ;\n _proto.defineComputedProperty_ = function defineComputedProperty_(key, options, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n try {\n startBatch();\n // Delete\n var deleteOutcome = this.delete_(key);\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome;\n }\n // ADD interceptor\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: undefined\n });\n if (!change) {\n return null;\n }\n }\n options.name || (options.name = \"development\" !== \"production\" ? this.name_ + \".\" + key.toString() : \"ObservableObject.key\");\n options.context = this.proxy_ || this.target_;\n var cachedDescriptor = getCachedObservablePropDescriptor(key);\n var descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: false,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n };\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false;\n }\n } else {\n defineProperty(this.target_, key, descriptor);\n }\n this.values_.set(key, new ComputedValue(options));\n // Notify\n this.notifyPropertyAddition_(key, undefined);\n } finally {\n endBatch();\n }\n return true;\n }\n /**\r\n * @param {PropertyKey} key\r\n * @param {PropertyDescriptor} descriptor\r\n * @param {boolean} proxyTrap whether it's called from proxy trap\r\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\r\n */;\n _proto.delete_ = function delete_(key, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n // No such prop\n if (!hasProp(this.target_, key)) {\n return true;\n }\n // Intercept\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: REMOVE\n });\n // Cancelled\n if (!change) {\n return null;\n }\n }\n // Delete\n try {\n var _this$pendingKeys_, _this$pendingKeys_$ge;\n startBatch();\n var notify = hasListeners(this);\n var notifySpy = \"development\" !== \"production\" && isSpyEnabled();\n var observable = this.values_.get(key);\n // Value needed for spies/listeners\n var value = undefined;\n // Optimization: don't pull the value unless we will need it\n if (!observable && (notify || notifySpy)) {\n var _getDescriptor;\n value = (_getDescriptor = getDescriptor(this.target_, key)) == null ? void 0 : _getDescriptor.value;\n }\n // delete prop (do first, may fail)\n if (proxyTrap) {\n if (!Reflect.deleteProperty(this.target_, key)) {\n return false;\n }\n } else {\n delete this.target_[key];\n }\n // Allow re-annotating this field\n if (\"development\" !== \"production\") {\n delete this.appliedAnnotations_[key];\n }\n // Clear observable\n if (observable) {\n this.values_[\"delete\"](key);\n // for computed, value is undefined\n if (observable instanceof ObservableValue) {\n value = observable.value_;\n }\n // Notify: autorun(() => obj[key]), see #1796\n propagateChanged(observable);\n }\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged();\n // Notify \"has\" observers\n // \"in\" as it may still exist in proto\n (_this$pendingKeys_ = this.pendingKeys_) == null ? void 0 : (_this$pendingKeys_$ge = _this$pendingKeys_.get(key)) == null ? void 0 : _this$pendingKeys_$ge.set(key in this.target_);\n // Notify spies/listeners\n if (notify || notifySpy) {\n var _change2 = {\n type: REMOVE,\n observableKind: \"object\",\n object: this.proxy_ || this.target_,\n debugObjectName: this.name_,\n oldValue: value,\n name: key\n };\n if (\"development\" !== \"production\" && notifySpy) {\n spyReportStart(_change2);\n }\n if (notify) {\n notifyListeners(this, _change2);\n }\n if (\"development\" !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n }\n } finally {\n endBatch();\n }\n return true;\n }\n /**\r\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\r\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\r\n * for callback details\r\n */;\n _proto.observe_ = function observe_(callback, fireImmediately) {\n if ( fireImmediately === true) {\n die(\"`observe` doesn't support the fire immediately property for observable objects.\");\n }\n return registerListener(this, callback);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.notifyPropertyAddition_ = function notifyPropertyAddition_(key, value) {\n var _this$pendingKeys_2, _this$pendingKeys_2$g;\n var notify = hasListeners(this);\n var notifySpy = isSpyEnabled();\n if (notify || notifySpy) {\n var change = notify || notifySpy ? {\n type: ADD,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n name: key,\n newValue: value\n } : null;\n if ( notifySpy) {\n spyReportStart(change);\n }\n if (notify) {\n notifyListeners(this, change);\n }\n if ( notifySpy) {\n spyReportEnd();\n }\n }\n (_this$pendingKeys_2 = this.pendingKeys_) == null ? void 0 : (_this$pendingKeys_2$g = _this$pendingKeys_2.get(key)) == null ? void 0 : _this$pendingKeys_2$g.set(true);\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged();\n };\n _proto.ownKeys_ = function ownKeys_() {\n this.keysAtom_.reportObserved();\n return ownKeys(this.target_);\n };\n _proto.keys_ = function keys_() {\n // Returns enumerable && own, but unfortunately keysAtom will report on ANY key change.\n // There is no way to distinguish between Object.keys(object) and Reflect.ownKeys(object) - both are handled by ownKeys trap.\n // We can either over-report in Object.keys(object) or under-report in Reflect.ownKeys(object)\n // We choose to over-report in Object.keys(object), because:\n // - typically it's used with simple data objects\n // - when symbolic/non-enumerable keys are relevant Reflect.ownKeys works as expected\n this.keysAtom_.reportObserved();\n return Object.keys(this.target_);\n };\n return ObservableObjectAdministration;\n}();\nfunction asObservableObject(target, options) {\n var _options$name;\n if ( options && isObservableObject(target)) {\n die(\"Options can't be provided for already observable objects.\");\n }\n if (hasProp(target, $mobx)) {\n if ( !(getAdministration(target) instanceof ObservableObjectAdministration)) {\n die(\"Cannot convert '\" + getDebugName(target) + \"' into observable object:\" + \"\\nThe target is already observable of different type.\" + \"\\nExtending builtins is not supported.\");\n }\n return target;\n }\n if ( !Object.isExtensible(target)) {\n die(\"Cannot make the designated object observable; it is not extensible\");\n }\n var name = (_options$name = options == null ? void 0 : options.name) != null ? _options$name : (isPlainObject(target) ? \"ObservableObject\" : target.constructor.name) + \"@\" + getNextId() ;\n var adm = new ObservableObjectAdministration(target, new Map(), String(name), getAnnotationFromOptions(options));\n addHiddenProp(target, $mobx, adm);\n return target;\n}\nvar isObservableObjectAdministration = /*#__PURE__*/createInstanceofPredicate(\"ObservableObjectAdministration\", ObservableObjectAdministration);\nfunction getCachedObservablePropDescriptor(key) {\n return descriptorCache[key] || (descriptorCache[key] = {\n get: function get() {\n return this[$mobx].getObservablePropValue_(key);\n },\n set: function set(value) {\n return this[$mobx].setObservablePropValue_(key, value);\n }\n });\n}\nfunction isObservableObject(thing) {\n if (isObject(thing)) {\n return isObservableObjectAdministration(thing[$mobx]);\n }\n return false;\n}\nfunction recordAnnotationApplied(adm, annotation, key) {\n var _adm$target_$storedAn;\n {\n adm.appliedAnnotations_[key] = annotation;\n }\n // Remove applied decorator annotation so we don't try to apply it again in subclass constructor\n (_adm$target_$storedAn = adm.target_[storedAnnotationsSymbol]) == null ? true : delete _adm$target_$storedAn[key];\n}\nfunction assertAnnotable(adm, annotation, key) {\n // Valid annotation\n if ( !isAnnotation(annotation)) {\n die(\"Cannot annotate '\" + adm.name_ + \".\" + key.toString() + \"': Invalid annotation.\");\n }\n /*\r\n // Configurable, not sealed, not frozen\r\n // Possibly not needed, just a little better error then the one thrown by engine.\r\n // Cases where this would be useful the most (subclass field initializer) are not interceptable by this.\r\n if (__DEV__) {\r\n const configurable = getDescriptor(adm.target_, key)?.configurable\r\n const frozen = Object.isFrozen(adm.target_)\r\n const sealed = Object.isSealed(adm.target_)\r\n if (!configurable || frozen || sealed) {\r\n const fieldName = `${adm.name_}.${key.toString()}`\r\n const requestedAnnotationType = annotation.annotationType_\r\n let error = `Cannot apply '${requestedAnnotationType}' to '${fieldName}':`\r\n if (frozen) {\r\n error += `\\nObject is frozen.`\r\n }\r\n if (sealed) {\r\n error += `\\nObject is sealed.`\r\n }\r\n if (!configurable) {\r\n error += `\\nproperty is not configurable.`\r\n // Mention only if caused by us to avoid confusion\r\n if (hasProp(adm.appliedAnnotations!, key)) {\r\n error += `\\nTo prevent accidental re-definition of a field by a subclass, `\r\n error += `all annotated fields of non-plain objects (classes) are not configurable.`\r\n }\r\n }\r\n die(error)\r\n }\r\n }\r\n */\n // Not annotated\n if ( !isOverride(annotation) && hasProp(adm.appliedAnnotations_, key)) {\n var fieldName = adm.name_ + \".\" + key.toString();\n var currentAnnotationType = adm.appliedAnnotations_[key].annotationType_;\n var requestedAnnotationType = annotation.annotationType_;\n die(\"Cannot apply '\" + requestedAnnotationType + \"' to '\" + fieldName + \"':\" + (\"\\nThe field is already annotated with '\" + currentAnnotationType + \"'.\") + \"\\nRe-annotating fields is not allowed.\" + \"\\nUse 'override' annotation for methods overridden by subclass.\");\n }\n}\n\n// Bug in safari 9.* (or iOS 9 safari mobile). See #364\nvar ENTRY_0 = /*#__PURE__*/createArrayEntryDescriptor(0);\n/**\r\n * This array buffer contains two lists of properties, so that all arrays\r\n * can recycle their property definitions, which significantly improves performance of creating\r\n * properties on the fly.\r\n */\nvar OBSERVABLE_ARRAY_BUFFER_SIZE = 0;\n// Typescript workaround to make sure ObservableArray extends Array\nvar StubArray = function StubArray() {};\nfunction inherit(ctor, proto) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(ctor.prototype, proto);\n } else if (ctor.prototype.__proto__ !== undefined) {\n ctor.prototype.__proto__ = proto;\n } else {\n ctor.prototype = proto;\n }\n}\ninherit(StubArray, Array.prototype);\n// Weex proto freeze protection was here,\n// but it is unclear why the hack is need as MobX never changed the prototype\n// anyway, so removed it in V6\nvar LegacyObservableArray = /*#__PURE__*/function (_StubArray, _Symbol$toStringTag, _Symbol$iterator) {\n _inheritsLoose(LegacyObservableArray, _StubArray);\n function LegacyObservableArray(initialValues, enhancer, name, owned) {\n var _this;\n if (name === void 0) {\n name = \"ObservableArray@\" + getNextId() ;\n }\n if (owned === void 0) {\n owned = false;\n }\n _this = _StubArray.call(this) || this;\n var adm = new ObservableArrayAdministration(name, enhancer, owned, true);\n adm.proxy_ = _assertThisInitialized(_this);\n addHiddenFinalProp(_assertThisInitialized(_this), $mobx, adm);\n if (initialValues && initialValues.length) {\n var prev = allowStateChangesStart(true);\n // @ts-ignore\n _this.spliceWithArray(0, 0, initialValues);\n allowStateChangesEnd(prev);\n }\n {\n // Seems that Safari won't use numeric prototype setter untill any * numeric property is\n // defined on the instance. After that it works fine, even if this property is deleted.\n Object.defineProperty(_assertThisInitialized(_this), \"0\", ENTRY_0);\n }\n return _this;\n }\n var _proto = LegacyObservableArray.prototype;\n _proto.concat = function concat() {\n this[$mobx].atom_.reportObserved();\n for (var _len = arguments.length, arrays = new Array(_len), _key = 0; _key < _len; _key++) {\n arrays[_key] = arguments[_key];\n }\n return Array.prototype.concat.apply(this.slice(),\n //@ts-ignore\n arrays.map(function (a) {\n return isObservableArray(a) ? a.slice() : a;\n }));\n };\n _proto[_Symbol$iterator] = function () {\n var self = this;\n var nextIndex = 0;\n return makeIterable({\n next: function next() {\n return nextIndex < self.length ? {\n value: self[nextIndex++],\n done: false\n } : {\n done: true,\n value: undefined\n };\n }\n });\n };\n _createClass(LegacyObservableArray, [{\n key: \"length\",\n get: function get() {\n return this[$mobx].getArrayLength_();\n },\n set: function set(newLength) {\n this[$mobx].setArrayLength_(newLength);\n }\n }, {\n key: _Symbol$toStringTag,\n get: function get() {\n return \"Array\";\n }\n }]);\n return LegacyObservableArray;\n}(StubArray, Symbol.toStringTag, Symbol.iterator);\nObject.entries(arrayExtensions).forEach(function (_ref) {\n var prop = _ref[0],\n fn = _ref[1];\n if (prop !== \"concat\") {\n addHiddenProp(LegacyObservableArray.prototype, prop, fn);\n }\n});\nfunction createArrayEntryDescriptor(index) {\n return {\n enumerable: false,\n configurable: true,\n get: function get() {\n return this[$mobx].get_(index);\n },\n set: function set(value) {\n this[$mobx].set_(index, value);\n }\n };\n}\nfunction createArrayBufferItem(index) {\n defineProperty(LegacyObservableArray.prototype, \"\" + index, createArrayEntryDescriptor(index));\n}\nfunction reserveArrayBuffer(max) {\n if (max > OBSERVABLE_ARRAY_BUFFER_SIZE) {\n for (var index = OBSERVABLE_ARRAY_BUFFER_SIZE; index < max + 100; index++) {\n createArrayBufferItem(index);\n }\n OBSERVABLE_ARRAY_BUFFER_SIZE = max;\n }\n}\nreserveArrayBuffer(1000);\nfunction createLegacyArray(initialValues, enhancer, name) {\n return new LegacyObservableArray(initialValues, enhancer, name);\n}\n\nfunction getAtom(thing, property) {\n if (typeof thing === \"object\" && thing !== null) {\n if (isObservableArray(thing)) {\n if (property !== undefined) {\n die(23);\n }\n return thing[$mobx].atom_;\n }\n if (isObservableSet(thing)) {\n return thing.atom_;\n }\n if (isObservableMap(thing)) {\n if (property === undefined) {\n return thing.keysAtom_;\n }\n var observable = thing.data_.get(property) || thing.hasMap_.get(property);\n if (!observable) {\n die(25, property, getDebugName(thing));\n }\n return observable;\n }\n if (isObservableObject(thing)) {\n if (!property) {\n return die(26);\n }\n var _observable = thing[$mobx].values_.get(property);\n if (!_observable) {\n die(27, property, getDebugName(thing));\n }\n return _observable;\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing;\n }\n } else if (isFunction(thing)) {\n if (isReaction(thing[$mobx])) {\n // disposer function\n return thing[$mobx];\n }\n }\n die(28);\n}\nfunction getAdministration(thing, property) {\n if (!thing) {\n die(29);\n }\n if (property !== undefined) {\n return getAdministration(getAtom(thing, property));\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing;\n }\n if (isObservableMap(thing) || isObservableSet(thing)) {\n return thing;\n }\n if (thing[$mobx]) {\n return thing[$mobx];\n }\n die(24, thing);\n}\nfunction getDebugName(thing, property) {\n var named;\n if (property !== undefined) {\n named = getAtom(thing, property);\n } else if (isAction(thing)) {\n return thing.name;\n } else if (isObservableObject(thing) || isObservableMap(thing) || isObservableSet(thing)) {\n named = getAdministration(thing);\n } else {\n // valid for arrays as well\n named = getAtom(thing);\n }\n return named.name_;\n}\n\nvar toString = objectPrototype.toString;\nfunction deepEqual(a, b, depth) {\n if (depth === void 0) {\n depth = -1;\n }\n return eq(a, b, depth);\n}\n// Copied from https://github.com/jashkenas/underscore/blob/5c237a7c682fb68fd5378203f0bf22dce1624854/underscore.js#L1186-L1289\n// Internal recursive comparison function for `isEqual`.\nfunction eq(a, b, depth, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) {\n return a !== 0 || 1 / a === 1 / b;\n }\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) {\n return false;\n }\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) {\n return b !== b;\n }\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== \"function\" && type !== \"object\" && typeof b != \"object\") {\n return false;\n }\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) {\n return false;\n }\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case \"[object RegExp]\":\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case \"[object String]\":\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return \"\" + a === \"\" + b;\n case \"[object Number]\":\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) {\n return +b !== +b;\n }\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case \"[object Date]\":\n case \"[object Boolean]\":\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case \"[object Symbol]\":\n return typeof Symbol !== \"undefined\" && Symbol.valueOf.call(a) === Symbol.valueOf.call(b);\n case \"[object Map]\":\n case \"[object Set]\":\n // Maps and Sets are unwrapped to arrays of entry-pairs, adding an incidental level.\n // Hide this extra level by increasing the depth.\n if (depth >= 0) {\n depth++;\n }\n break;\n }\n // Unwrap any wrapped objects.\n a = unwrap(a);\n b = unwrap(b);\n var areArrays = className === \"[object Array]\";\n if (!areArrays) {\n if (typeof a != \"object\" || typeof b != \"object\") {\n return false;\n }\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor,\n bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor && isFunction(bCtor) && bCtor instanceof bCtor) && \"constructor\" in a && \"constructor\" in b) {\n return false;\n }\n }\n if (depth === 0) {\n return false;\n } else if (depth < 0) {\n depth = -1;\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) {\n return bStack[length] === b;\n }\n }\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) {\n return false;\n }\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], depth - 1, aStack, bStack)) {\n return false;\n }\n }\n } else {\n // Deep compare objects.\n var keys = Object.keys(a);\n var key;\n length = keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (Object.keys(b).length !== length) {\n return false;\n }\n while (length--) {\n // Deep compare each member\n key = keys[length];\n if (!(hasProp(b, key) && eq(a[key], b[key], depth - 1, aStack, bStack))) {\n return false;\n }\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\nfunction unwrap(a) {\n if (isObservableArray(a)) {\n return a.slice();\n }\n if (isES6Map(a) || isObservableMap(a)) {\n return Array.from(a.entries());\n }\n if (isES6Set(a) || isObservableSet(a)) {\n return Array.from(a.entries());\n }\n return a;\n}\n\nfunction makeIterable(iterator) {\n iterator[Symbol.iterator] = getSelf;\n return iterator;\n}\nfunction getSelf() {\n return this;\n}\n\nfunction isAnnotation(thing) {\n return (\n // Can be function\n thing instanceof Object && typeof thing.annotationType_ === \"string\" && isFunction(thing.make_) && isFunction(thing.extend_)\n );\n}\n\n/**\r\n * (c) Michel Weststrate 2015 - 2020\r\n * MIT Licensed\r\n *\r\n * Welcome to the mobx sources! To get a global overview of how MobX internally works,\r\n * this is a good place to start:\r\n * https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\r\n *\r\n * Source folders:\r\n * ===============\r\n *\r\n * - api/ Most of the public static methods exposed by the module can be found here.\r\n * - core/ Implementation of the MobX algorithm; atoms, derivations, reactions, dependency trees, optimizations. Cool stuff can be found here.\r\n * - types/ All the magic that is need to have observable objects, arrays and values is in this folder. Including the modifiers like `asFlat`.\r\n * - utils/ Utility stuff.\r\n *\r\n */\n[\"Symbol\", \"Map\", \"Set\"].forEach(function (m) {\n var g = getGlobal();\n if (typeof g[m] === \"undefined\") {\n die(\"MobX requires global '\" + m + \"' to be available or polyfilled\");\n }\n});\nif (typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__ === \"object\") {\n // See: https://github.com/andykog/mobx-devtools/\n __MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({\n spy: spy,\n extras: {\n getDebugName: getDebugName\n },\n $mobx: $mobx\n });\n}\n\nexports.$mobx = $mobx;\nexports.FlowCancellationError = FlowCancellationError;\nexports.ObservableMap = ObservableMap;\nexports.ObservableSet = ObservableSet;\nexports.Reaction = Reaction;\nexports._allowStateChanges = allowStateChanges;\nexports._allowStateChangesInsideComputed = runInAction;\nexports._allowStateReadsEnd = allowStateReadsEnd;\nexports._allowStateReadsStart = allowStateReadsStart;\nexports._autoAction = autoAction;\nexports._endAction = _endAction;\nexports._getAdministration = getAdministration;\nexports._getGlobalState = getGlobalState;\nexports._interceptReads = interceptReads;\nexports._isComputingDerivation = isComputingDerivation;\nexports._resetGlobalState = resetGlobalState;\nexports._startAction = _startAction;\nexports.action = action;\nexports.autorun = autorun;\nexports.comparer = comparer;\nexports.computed = computed;\nexports.configure = configure;\nexports.createAtom = createAtom;\nexports.defineProperty = apiDefineProperty;\nexports.entries = entries;\nexports.extendObservable = extendObservable;\nexports.flow = flow;\nexports.flowResult = flowResult;\nexports.get = get;\nexports.getAtom = getAtom;\nexports.getDebugName = getDebugName;\nexports.getDependencyTree = getDependencyTree;\nexports.getObserverTree = getObserverTree;\nexports.has = has;\nexports.intercept = intercept;\nexports.isAction = isAction;\nexports.isBoxedObservable = isObservableValue;\nexports.isComputed = isComputed;\nexports.isComputedProp = isComputedProp;\nexports.isFlow = isFlow;\nexports.isFlowCancellationError = isFlowCancellationError;\nexports.isObservable = isObservable;\nexports.isObservableArray = isObservableArray;\nexports.isObservableMap = isObservableMap;\nexports.isObservableObject = isObservableObject;\nexports.isObservableProp = isObservableProp;\nexports.isObservableSet = isObservableSet;\nexports.keys = keys;\nexports.makeAutoObservable = makeAutoObservable;\nexports.makeObservable = makeObservable;\nexports.observable = observable;\nexports.observe = observe;\nexports.onBecomeObserved = onBecomeObserved;\nexports.onBecomeUnobserved = onBecomeUnobserved;\nexports.onReactionError = onReactionError;\nexports.override = override;\nexports.ownKeys = apiOwnKeys;\nexports.reaction = reaction;\nexports.remove = remove;\nexports.runInAction = runInAction;\nexports.set = set;\nexports.spy = spy;\nexports.toJS = toJS;\nexports.trace = trace;\nexports.transaction = transaction;\nexports.untracked = untracked;\nexports.values = values;\nexports.when = when;\n//# sourceMappingURL=mobx.cjs.development.js.map\n","\n'use strict'\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./mobx.cjs.production.min.js')\n} else {\n module.exports = require('./mobx.cjs.development.js')\n}\n","import { ApplicationContext, Mark } from '@vgerbot/ioc';\nimport React, { useContext, useRef } from 'react';\nimport { Newable } from '@vgerbot/ioc/dist/types/Newable';\nimport { PartialInstAwareProcessor } from '@vgerbot/ioc/dist/types/InstantiationAwareProcessor';\nimport { makeObservable } from 'mobx';\n\nconst IoCContext = React.createContext(undefined);\n\nconst MARK_AS_MOBX_OBSERVABLE = 'mark-as-mobx-observable';\n\nexport function Observable() {\n return Mark(MARK_AS_MOBX_OBSERVABLE, true);\n}\n\nexport type IoCProps = React.PropsWithChildren<{\n callback?: (appctx: ApplicationContext) => void;\n}>;\n\nexport function IoC(props: IoCProps) {\n const ref = useRef();\n if (!ref.current) {\n const appctx = new ApplicationContext();\n if (typeof props.callback === 'function') {\n props.callback(appctx);\n }\n appctx.registerInstAwareProcessor(\n class implements PartialInstAwareProcessor {\n afterInstantiation(instance: T): T {\n const markInfo = appctx.getClassMetadata(instance.constructor as Newable).getCtorMarkInfo();\n if (markInfo[MARK_AS_MOBX_OBSERVABLE]) {\n makeObservable(instance);\n }\n return instance;\n }\n }\n );\n ref.current = appctx;\n }\n return React.createElement(\n IoCContext.Provider,\n {\n value: ref.current\n },\n props.children\n );\n}\n\nexport function useService(ctor: Newable): T {\n const ctx = useContext(IoCContext);\n if (!ctx) {\n throw new Error(' has not been applied to the component.');\n }\n return ctx.getInstance(ctor);\n}\n\nexport * from '@vgerbot/ioc';\n"],"names":["minimist","hasRequiredMinimist","requireMinimist","isNumber","x","test","isConstructorOrProto","obj","key","args","opts","flags","bools","strings","unknownFn","unknown","boolean","allBools","concat","filter","Boolean","forEach","aliases","aliasIsBoolean","some","Object","keys","alias","y","string","k","defaults","default","argv","_","setKey","value","o","i","length","undefined","prototype","Number","String","Array","lastKey","isArray","push","setArg","val","arg","argDefined","split","notFlags","indexOf","slice","next","m","match","letters","broken","j","stopEarly","apply","exports","ServiceFactoryDef","factory","injections","this","createFromClassMetadata","metadata","container","owner","clazz","reader","getClass","getInstance","GlobalMetadata","classAliasMetadataMap","Map","componentFactories","processorClasses","Set","INSTANCE","recordFactory","symbol","set","recordClassAlias","aliasName","recordProcessorClass","add","init","_this","getComponentFactory","get","getClassMetadata","getInstAwareProcessorClasses","from","extendStatics","d","b","setPrototypeOf","__proto__","p","hasOwnProperty","call","InstanceScope","__assign","assign","t","s","n","arguments","__metadata","metadataKey","metadataValue","Reflect","__read","Symbol","iterator","r","e","ar","done","error","__spreadArray","to","pack","l","createDefaultValueMap","map","originGet","bind","has","defaultValue","Reflect$1","commonjsGlobal","globalThis","window","commonjsHelpers.commonjsGlobal","self","root","Function","exporter","makeExporter","target","previous","defineProperty","configurable","writable","hasOwn","supportsSymbol","toPrimitiveSymbol","toPrimitive","iteratorSymbol","supportsCreate","create","supportsProto","downLevel","HashMap","MakeDictionary","functionPrototype","getPrototypeOf","usePolyfill","process","env","_Map","entries","CreateMapPolyfill","_Set","CreateSetPolyfill","Metadata","WeakMap","CreateWeakMapPolyfill","decorate","decorators","propertyKey","attributes","IsUndefined","IsArray","TypeError","IsConstructor","DecorateConstructor","IsObject","IsNull","DecorateProperty","ToPropertyKey","decorator","IsPropertyKey","OrdinaryDefineOwnMetadata","defineMetadata","hasMetadata","OrdinaryHasMetadata","hasOwnMetadata","OrdinaryHasOwnMetadata","getMetadata","OrdinaryGetMetadata","getOwnMetadata","OrdinaryGetOwnMetadata","getMetadataKeys","OrdinaryMetadataKeys","getOwnMetadataKeys","OrdinaryOwnMetadataKeys","deleteMetadata","metadataMap","GetOrCreateMetadataMap","delete","size","targetMetadata","decorated","descriptor","O","P","Create","MetadataKey","parent","OrdinaryGetPrototypeOf","ToBoolean","MetadataValue","ownKeys","parentKeys","_i","ownKeys_1","_a","parentKeys_1","GetIterator","IteratorStep","nextValue","IteratorValue","IteratorClose","Type","IsSymbol","ToPrimitive","input","PreferredType","hint","exoticToPrim","GetMethod","result","OrdinaryToPrimitive","toString_1","toString","IsCallable","valueOf","toString_2","argument","ToString","V","func","method","iterResult","f","proto","prototypeProto","constructor","cacheSentinel","arraySentinel","MapIterator","values","selector","_index","_keys","_values","_selector","index","throw","return","_cacheKey","_cacheIndex","enumerable","_find","clear","getKey","getValue","getEntry","insert","_map","UUID_SIZE","rootKey","CreateUniqueKey","_key","table","GetOrCreateWeakMapTable","CreateUUID","FillRandomBytes","buffer","Math","random","GenRandomBytes","Uint8Array","crypto","getRandomValues","msCrypto","data","offset","byte","toLowerCase","__","Lifecycle","MetadataFactory","metadataClass","getReflectKey","MarkInfoContainer","getMarkInfo","mark","ParameterMarkInfoContainer","paramsMarkInfo","markInfo","ClassMetadata","scope","SINGLETON","constructorParameterTypes","lifecycleMethodsMap","propertyTypesMap","marks","ctor","members","params","constr","setScope","inject","recordPropertyType","marker","member","parameter","setConstructorParameterType","cls","type","addLifecycleMethod","methodName","lifecycle","lifecycles","getLifecycles","getMethods","it","getScope","getConstructorParameterTypes","getPropertyTypeMap","getCtorMarkInfo","getMembersMarkInfo","getParameterMarkInfo","methodKey","ExpressionType","LifecycleDecorator","isNodeJs","require","arch","EventEmitter","events","on","listener","listeners","ls","splice","emit","fn","hasArgs","options","hasInjections","lazyProp","lazyMember","index_cjs","evaluateResult","context","computeFn","evaluate","resetTester","resetTesters","release","reset","isPresent","needReset","u","a","getOwnPropertyDescriptor","Error","resetBy","__lazy__","lazyMemberOfClass","lazyVal","__val__","LifecycleManager","componentClass","classMetadataReader","invokePreInjectMethod","instance","methods","PRE_INJECT","invokeLifecycleMethods","invokePostInjectMethod","POST_INJECT","invokePreDestroyInjectMethod","PRE_DESTROY","methodKeys","invoke","ComponentInstanceBuilder","instAwareProcessorManager","getConstructorArgs","propertyFactories","lazyMode","lifecycleResolver","appendClassMetadata","appendLazyMode","e_1","types","globalMetadataReader","properties","_loop_1","propertyName","propertyType","this_1","getFactory","propertyClassMetadata","propertyFactory","properties_1","__values","properties_1_1","_b","e_1_1","build","createPropertiesGetterBuilder","isInstAwareProcessorClass","getter","beforeInstantiation","afterInstantiation","_loop_2","this_2","FUNCTION_METADATA_KEY","FunctionMetadata","parameters","isFactory","setParameterType","setIsFactory","getParameters","instanceSerialNo","ComponentInstanceWrapper","serialNo","compareTo","other","invokePreDestroy","SingletonInstanceResolution","INSTANCE_MAP","identifier","saveInstance","shouldGenerate","destroy","instanceWrappers","sort","instanceWrapper","SINGLETON_INSTANCE_SINGLETON","GlobalSharedInstanceResolution","TransientInstanceResolution","instances","JSONDataEvaluator","namespaceDataMap","eval","expression","colonIndex","namespace","substring","exp","rootContext","trim","rootVarName","prefix","VAR_SEQUENCE","compileExpression","runExpression","recordData","Date","now","Advice","EnvironmentEvaluator","ArgvEvaluator","require$$1","AspectUtils","beforeHooks","afterHooks","thrownHooks","finallyHooks","afterReturnHooks","aroundHooks","append","advice","hook","hooksArray","Before","After","Thrown","Finally","AfterReturn","Around","extract","reduceRight","prev","onError","onFinally","onAfter","returnValue","isPromise","Promise","catch","finally","then","reduce","retVal","AOPClassMetadata","aspectMap","aspects","exitingAspectArray","getAspects","getAspectsOf","AOPInstantiationAwareProcessor","appCtx","_super","class_1","__extends","useAspectMetadataReader","aspectStoreMap","Proxy","prop","originValue","aspectFn","methodFunc","createAspectCtx","aspectUtils","ClassToInstance","AspectClass","beforeAdviceAspects","afterAdviceAspects","tryCatchAdviceAspects","tryFinallyAdviceAspects","afterReturnAdviceAspects","aroundAdviceAspects","joinPoint","aspect","execute","prevReturnValue","originFn","proceed","jpArgs","createAspect","InstantiationAwareProcessorManager","instAwareProcessorClasses","appendInstAwareProcessorClass","instAwareProcessorClass","appendInstAwareProcessorClasses","instAwareProcessorInstances","processor","desc","c","__decorate","PRE_DESTROY_EVENT_KEY","ApplicationContext","resolutions","factories","evaluatorClasses","eventEmitter","defaultScope","registerInstanceScopeResolution","GLOBAL_SHARED_SINGLETON","TRANSIENT","registerEvaluator","JSON_PATH","ENV","ARGV","registerInstAwareProcessor","factoryDef","componentClass_1","resolver","isInstAwareProcessor","classMetadata","resolution","getInstanceOptions","ownerPropertyKey","createComponentInstanceBuilder","saveInstanceOptions","builder","bindFactory","args_1","parameterIdentifiers","evaluatorClass","externalArgs","recordJSONData","bindInstance","resolutionConstructor","constructorArgs","name","onPreDestroy","Bind","Factory","Inject","parameterIndex","targetConstr","Mark","_c","PostInject","PreDestroy","PreInject","Scope","Value","value_symbol","index_cjs_1","hasRequiredReact_production_min","requireReact_production_min","react_production_min","for","q","v","w","z","B","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","C","D","E","props","refs","updater","F","G","isReactComponent","setState","forceUpdate","H","isPureReactComponent","I","J","K","current","L","ref","__self","__source","M","h","g","children","defaultProps","$$typeof","_owner","Q","replace","escape","R","N","A","join","S","T","_status","_result","U","transition","W","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","Children","count","toArray","only","Component","Fragment","Profiler","PureComponent","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","cloneElement","createContext","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","_context","createElement","createFactory","createRef","forwardRef","render","isValidElement","lazy","_payload","_init","memo","compare","startTransition","unstable_act","useCallback","useContext","useDebugValue","useDeferredValue","useEffect","useId","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useSyncExternalStore","useTransition","version","hasRequiredReact_development","module","requireReact_development","NODE_ENV","__REACT_DEVTOOLS_GLOBAL_HOOK__","registerInternalModuleStart","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_OFFSCREEN_TYPE","MAYBE_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","maybeIterator","ReactCurrentActQueue","isBatchingLegacy","didScheduleLegacyUpdate","ReactDebugCurrentFrame","currentExtraStackFrame","setExtraStackFrame","stack","getCurrentStack","getStackAddendum","impl","ReactSharedInternals","warn","format","_len","printWarning","_len2","_key2","level","argsWithFormat","item","unshift","console","didWarnStateUpdateForUnmountedComponent","warnNoop","publicInstance","callerName","_constructor","componentName","displayName","warningKey","ReactNoopUpdateQueue","callback","completeState","partialState","emptyObject","freeze","deprecatedAPIs","replaceState","defineDeprecationWarning","info","fnName","ComponentDummy","pureComponentPrototype","isArrayImpl","testStringCoercion","checkKeyStringCoercion","willCoercionThrow","toStringTag","typeName","getContextName","getComponentNameFromType","tag","outerType","innerType","wrapperName","functionName","getWrappedName","outerName","lazyComponent","payload","specialPropKeyWarningShown","specialPropRefWarningShown","didWarnAboutStringRefs","RESERVED_PROPS","hasValidRef","config","isReactWarning","hasValidKey","defineKeyPropWarningGetter","warnAboutAccessingKey","defineRefPropWarningGetter","warnAboutAccessingRef","warnIfStringRefCannotBeAutoConverted","stateNode","ReactElement","source","element","_store","propName","childrenLength","childArray","_self","_source","object","didWarnAboutMaps","userProvidedKeyEscapeRegex","escapeUserProvidedKey","text","getElementKey","escaperLookup","mapIntoArray","array","escapedPrefix","nameSoFar","oldElement","newKey","child","invokeCallback","_child","mappedChild","childKey","escapedChildKey","subtreeCount","nextNamePrefix","iteratorFn","iterableChildren","step","ii","childrenString","mapChildren","REACT_MODULE_REFERENCE","lazyInitializer","thenable","moduleObject","resolved","rejected","pending","isValidElementType","getModuleId","resolveDispatcher","dispatcher","prevLog","prevInfo","prevWarn","prevError","prevGroup","prevGroupCollapsed","prevGroupEnd","disabledDepth","disabledLog","__reactDisabledLog","ReactCurrentDispatcher$1","describeBuiltInComponentFrame","ownerFn","componentFrameCache","reentry","PossiblyWeakMap","describeNativeComponentFrame","construct","control","frame","previousDispatcher","previousPrepareStackTrace","prepareStackTrace","log","group","groupCollapsed","groupEnd","defineProperties","disableLogs","Fake","sample","sampleLines","controlLines","_frame","includes","reenableLogs","syntheticFrame","describeUnknownElementTypeFrameInDEV","shouldConstruct","propTypesMisspellWarningShown","loggedTypeFailures","ReactDebugCurrentFrame$1","setCurrentlyValidatingElement","setCurrentlyValidatingElement$1","getDeclarationErrorAddendum","getSourceInfoErrorAddendumForProps","elementProps","fileName","lineNumber","ownerHasKeyUseWarning","validateExplicitKey","parentType","validated","currentComponentErrorInfo","parentName","getCurrentComponentErrorInfo","childOwner","validateChildKeys","node","validatePropTypes","propTypes","typeSpecs","location","typeSpecName","error$1","err","ex","message","checkPropTypes","PropTypes","getDefaultProps","isReactClassApproved","validateFragmentProps","fragment","createElementWithValidation","validType","typeString","sourceInfo","didWarnAboutDeprecatedCreateFactory","didWarnAboutMessageChannel","enqueueTaskImpl","actScopeDepth","didWarnNoAwaitAct","popActScope","prevActScopeDepth","recursivelyFlushAsyncActWork","resolve","reject","queue","flushActQueue","task","requireString","nodeRequire","setImmediate","_err","MessageChannel","channel","port1","onmessage","port2","postMessage","enqueueTask","isFlushing","createElement$1","cloneElement$1","newElement","validatedFactory","forEachFunc","forEachContext","hasWarnedAboutUsingNestedContextConsumers","hasWarnedAboutUsingConsumerProvider","hasWarnedAboutDisplayNameOnConsumer","_Provider","_currentRenderer","_currentRenderer2","refObject","seal","ownName","elementType","lazyType","newDefaultProps","newPropTypes","prevTransition","currentTransition","_updatedFibers","prevIsBatchingLegacy","thenableResult","wasAwaited","_queue","deps","Context","realContext","formatterFn","reducer","initialArg","initialValue","initialState","subscribe","getSnapshot","getServerSnapshot","registerInternalModuleStop","react_developmentModule","react_development","require$$0","hasRequiredMobx_cjs_production_min","React","commonjsHelpers.getDefaultExportFromCjs","react","requireMobx_cjs_production_min","mobx_cjs_production_min","xn","En","Vn","_n","Sn","ReferenceError","Kn","Rn","In","St","Mt","It","Jn","At","Ct","Ri","Si","bound","yi","safeDescriptors","autoAction","isMobXFlow","enhancer","Zn","autoBind","deep","X","Gn","defaultDecorator","box","Wn","$","isMobxAction","ri","ei","Y","trackingDerivation","dt","allowStateChanges","ut","Z","ft","ni","suppressReactionErrors","tt","at","bt","st","nt","vi","fi","hi","disableErrorBoundaries","ct","rt","runId","inBatch","vt","ht","et","ot","allowStateReads","lt","pendingUnobservations","mt","onBUO","ci","pt","trackingContext","onBO","yt","isRunningReactions","wi","wt","pendingReactions","jt","Ot","Ai","Oi","xt","gt","Nn","scheduler","delay","_t","mi","track","requiresObservable","setTimeout","Mi","Nt","bn","Et","Cn","sn","Ln","kn","Vt","dependencies","Rt","observers","Tt","kt","cancel","Kt","an","Lt","Pn","ji","Pt","Ui","Yi","un","Dt","Bt","qt","Gt","pop","Wt","ai","NONE","BREAK","LOG","Ht","Xt","timeout","dispose","clearTimeout","Ut","signal","aborted","addEventListener","removeEventListener","Ft","zt","$t","Jt","Yt","Qt","Zt","tn","Li","Ki","nn","Ii","rn","reportObserved","en","Bi","Zi","Qi","tr","cn","hn","vn","er","ln","ir","dn","yn","pn","mn","or","wn","jn","On","An","gn","Mn","Tn","getOwnPropertySymbols","getOwnPropertyNames","getOwnPropertyDescriptors","onBOL","onBUOL","reportChanged","stateVersion","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","Dn","identity","structural","is","shallow","Bn","qn","proxy","Hn","Xn","Un","Fn","zn","$n","ui","equals","useProxies","Xi","Ji","Ti","struct","Yn","Qn","ti","oi","dehancer","dehanceValue","UNCHANGED","Ci","newValue","oldValue","observableKind","debugObjectName","raw","toJSON","si","derivation","compareStructural","requiresReaction","keepAlive","trackAndCompute","cause","li","di","mobxGuid","enforceActions","spyListeners","globalReactionErrorHandlers","computedRequiresReaction","reactionRequiresObservable","observableRequiresReaction","verifyProxies","bi","pi","__mobxInstanceCount","__mobxGlobals","isScheduled","trace","xi","gi","Ni","Ei","Vi","deleteProperty","preventExtensions","ki","isNaN","parseInt","added","addedCount","removed","removedCount","max","min","spliceWithArray","shift","reverse","remove","Pi","Di","qi","Gi","Wi","Hi","merge","propertyIsEnumerable","Fi","zi","$i","in","nr","rr","__MOBX_DEVTOOLS_GLOBAL_HOOK__","injectMobx","spy","extras","getDebugName","$mobx","FlowCancellationError","ObservableMap","ObservableSet","Reaction","_allowStateChanges","_allowStateChangesInsideComputed","_allowStateReadsEnd","_allowStateReadsStart","_autoAction","_endAction","_getAdministration","_getGlobalState","_interceptReads","_isComputingDerivation","_resetGlobalState","_startAction","action","autorun","comparer","computed","configure","isolateGlobalState","reactionScheduler","createAtom","extendObservable","flow","flowResult","getAtom","getDependencyTree","getObserverTree","intercept","isAction","isBoxedObservable","isComputed","isComputedProp","isFlow","isFlowCancellationError","isObservable","isObservableArray","isObservableMap","isObservableObject","isObservableProp","isObservableSet","makeAutoObservable","makeObservable","observable","observe","onBecomeObserved","onBecomeUnobserved","onReactionError","override","reaction","fireImmediately","runInAction","toJS","transaction","untracked","when","hasRequiredMobx_cjs_development","requireMobx_cjs_development","mobx_cjs_development","errors","annotationType","dataStructure","thing","property","die","mockGlobal","getGlobal","getDescriptor","objectPrototype","EMPTY_ARRAY","EMPTY_OBJECT","hasProxy","plainObjectString","assertProxies","warnAboutProxyRequirement","msg","globalState","getNextId","once","invoked","noop","isFunction","isStringish","isObject","isPlainObject","protoConstructor","isGenerator","addHiddenProp","addHiddenFinalProp","createInstanceofPredicate","theClass","isES6Map","isES6Set","hasGetOwnPropertySymbols","stringifyKey","hasProp","res","_defineProperties","prim","_toPrimitive","_createClass","Constructor","protoProps","staticProps","_extends","_inheritsLoose","subClass","superClass","_setPrototypeOf","_assertThisInitialized","_arrayLikeToArray","arr","len","arr2","_createForOfIteratorHelperLoose","allowArrayLike","minLen","_unsupportedIterableToArray","storedAnnotationsSymbol","createDecoratorAnnotation","annotation","storeAnnotation","isOverride","fieldName","currentAnnotationType","annotationType_","assertNotDecorated","Atom","name_","isPendingUnobservation_","isBeingObserved_","observers_","diffValue_","lastAccessedBy_","lowestObserverState_","IDerivationState_","NOT_TRACKING_","_proto","startBatch","propagateChanged","endBatch","isAtom","onBecomeObservedHandler","onBecomeUnobservedHandler","atom","deepEqual","deepEnhancer","referenceEnhancer","OVERRIDE","make_","adm","isPlainObject_","appliedAnnotations_","extend_","proxyTrap","createActionAnnotation","options_","make_$1","extend_$1","_this$options_","target_","actionDescriptor","createActionDescriptor","defineProperty_","_annotation$options_","_annotation$options_$","_annotation$options_2","_annotation$options_$2","_annotation$options_3","_annotation$options_4","_adm$proxy_2","_ref","_ref2","assertActionDescriptor","_adm$proxy_","proxy_","createAction","createFlowAnnotation","make_$2","extend_$2","flowDescriptor","createFlowDescriptor","_this$options_2","assertFlowDescriptor","createComputedAnnotation","make_$3","extend_$3","assertComputedDescriptor","defineComputedProperty_","createObservableAnnotation","make_$4","extend_$4","_this$options_$enhanc","assertObservableDescriptor","defineObservableProperty_","autoAnnotation","createAutoAnnotation","make_$5","extend_$5","_this$options_3","_this$options_4","observableAnnotation","_this$options_5","_this$options_6","defaultCreateObservableOptions","asCreateObservableOptions","observableRefAnnotation","observableShallowAnnotation","observableStructAnnotation","observableDecoratorAnnotation","getEnhancerFromOptions","createObservable","arg2","arg3","_getDescriptor$config","_getDescriptor","ObservableValue","initialValues","createLegacyArray","createObservableArray","asObservableObject","_target$$mobx","_target$$mobx$proxy_","objectProxyTraps","asDynamicObservableObject","COMPUTED","computedAnnotation","computedStructAnnotation","arg1","ComputedValue","_Symbol$toPrimitive","currentActionId","nextActionId","isFunctionNameConfigurable","tmpNameDescriptor","actionName","executeAction","canRunAsDerivation","runInfo","error_","notifySpy_","isSpyEnabled","startTime_","flattenedArgs","spyReportStart","ACTION","prevDerivation_","runAsAction","prevAllowStateChanges_","untrackedStart","allowStateChangesStart","runAsAction_","prevAllowStateReads_","allowStateReadsStart","actionId_","parentActionId_","allowStateChangesEnd","allowStateReadsEnd","untrackedEnd","spyReportEnd","time","_Symbol$toPrimitive$1","_Atom","notifySpy","hasUnreportedChange_","interceptors_","changeListeners_","value_","spyReport","prepareNewValue_","UPDATE","setNewValue_","checkIfStateModificationsAreAllowed","hasInterceptors","change","interceptChange","hasListeners","notifyListeners","intercept_","handler","registerInterceptor","observe_","registerListener","isObservableValue","TraceMode","dependenciesState_","observing_","newObserving_","runId_","UP_TO_DATE_","unboundDepsCount_","CaughtException","triggeredBy_","isComputing_","isRunningSetter_","setter_","isTracing_","scope_","equals_","requiresReaction_","keepAlive_","onBecomeStale_","POSSIBLY_STALE_","propagateMaybeChanged","shouldCompute","prevTrackingContext","STALE_","logTraceInfo","propagateChangeConfirmed","warnAboutUntrackedRead_","computeValue_","isCaughtException","wasSuspended","changed","trackDerivedFunction","suspend_","clearObserving","firstTime","prevValue","prevU","isComputedValue","prevAllowStateReads","prevUntracked","obs","changeDependenciesStateTo0","hasObservers","prevTracking","prevObserving","observing","lowestNewObservingDerivationState","i0","dep","_dep","removeObserver","_dep2","addObserver","bindDependencies","requiresObservable_","warnAboutDerivationWithoutDependencies","persistentKeys","MobXGlobals","canMergeGlobalState","isolateCalled","global","queueForUnobservation","runReactions","list","checkIfStateReadsAreAllowed","lines","printDepTree","tree","depth","repeat","onInvalidate_","errorHandler_","isDisposed_","isScheduled_","isTrackPending_","isRunning_","schedule_","runReaction_","reportExceptionInDerivation_","startTime","notify","prevReaction","getDisposer_","enterBreakPoint","runReactionsHelper","allReactions","iterations","remainingReactions","isReaction","event","END_EVENT","AUTOACTION","DEFAULT_ACTION_NAME","actionAnnotation","actionBoundAnnotation","autoActionAnnotation","autoActionBoundAnnotation","createActionFactory","view","_opts$name","_opts","reactionRunner","createSchedulerFromOptions","run","interceptHook","cb","listenersKey","hookListeners","ALWAYS","annotations","descriptors","nodeToDependencyTree","nodeToObserverTree","getObservers","generatorId","flowAnnotation","flowBoundAnnotation","generator","rejector","ctx","gen","pendingPromise","promise","stepId","onFulfilled","ret","onRejected","cancelPromise","_res","yieldedPromise","_isComputed","values_","_isObservable","keys_","has_","apiOwnKeys","ownKeys_","cache","toJSHelper","__alreadySeen","idx","_res2","_res3","getAtomFromArgs","thisArg","_when","predicate","effect","timeoutHandle","disposer","effectAction","whenPromise","_opts$signal","abort","_opts$signal2","_opts$signal3","getAdm","get_","_getAdm$set_","set_","_getAdm$delete_","delete_","_getAdm$definePropert","interceptable","interceptors","listenable","keysSymbol","SPLICE","arrayTraps","getArrayLength_","arrayExtensions","setArrayLength_","ObservableArrayAdministration","owned_","legacyMode_","atom_","enhancer_","lastKnownLength_","newV","oldV","dehanceValue_","dehanceValues_","newLength","currentLength","newItems","spliceWithArray_","updateArrayLength_","oldLength","delta","reserveArrayBuffer","deleteCount","lengthDelta","spliceItemsIntoValues_","notifyArraySplice_","_this$values_","oldItems","notifyArrayChildUpdate_","owned","items","_len3","_key3","copy","addArrayExtension","funcName","funcFactory","simpleFunc","dehancedValues","mapLikeFunc","_this2","reduceLikeFunc","_this3","accumulator","currentValue","_Symbol$iterator","_Symbol$toStringTag","isObservableArrayAdministration","ObservableMapMarker","ADD","DELETE","_Symbol$iterator$1","_Symbol$toStringTag$1","initialData","data_","hasMap_","keysAtom_","entry","newEntry","hasKey","updateValue_","addValue_","_change","_this3$hasMap_$get","_this4","_this4$hasMap_$get","makeIterable","_keys$next","_keys$next2","_step","_iterator","_step$value","_this5","symbols","getPlainObjectKeys","_this6","_step2","_iterator2","_this7","_step3","replacementMap","convertToMap","orderedData","keysReportChangedCalled","_iterator3","_step4","_iterator4","_step4$value","_value","keyExisted","_value2","iter1","iter2","next1","next2","ObservableSetMarker","callbackFn","_change2","nextIndex","observableValues","descriptorCache","REMOVE","ObservableObjectAdministration","defaultAnnotation_","pendingKeys_","isAnnotation","getObservablePropValue_","setObservablePropValue_","assertAnnotable","_this$target_$storedA","outcome","recordAnnotationApplied","deleteOutcome","notifyPropertyAddition_","cachedDescriptor","getCachedObservablePropDescriptor","_this$pendingKeys_","_this$pendingKeys_$ge","_this$pendingKeys_2","_this$pendingKeys_2$g","_options$name","getAdministration","isExtensible","_options$defaultDecor","getAnnotationFromOptions","isObservableObjectAdministration","_adm$target_$storedAn","ENTRY_0","createArrayEntryDescriptor","OBSERVABLE_ARRAY_BUFFER_SIZE","StubArray","LegacyObservableArray","_StubArray","arrays","createArrayBufferItem","_observable","named","eq","aStack","bStack","className","unwrap","areArrays","aCtor","bCtor","getSelf","propOrHandler","defaultGlobals","baseScheduler","ea","interceptProperty","interceptInterceptable","overrides","collectStoredAnnotations","propOrCb","cbOrFire","observeObservableProperty","observeObservable","_opts$name2","errorHandler","baseFn","runSync","IoCContext","appctx_1"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.cjs.js","sources":["../src/index.ts"],"sourcesContent":["import { ApplicationContext, Mark } from '@vgerbot/ioc';\nimport React, { useContext, useRef } from 'react';\nimport { Newable } from '@vgerbot/ioc/dist/types/Newable';\nimport { PartialInstAwareProcessor } from '@vgerbot/ioc/dist/types/InstantiationAwareProcessor';\nimport { makeObservable } from 'mobx';\n\nconst IoCContext = React.createContext(undefined);\n\nconst MARK_AS_MOBX_OBSERVABLE = 'mark-as-mobx-observable';\n\nexport function Observable() {\n return Mark(MARK_AS_MOBX_OBSERVABLE, true);\n}\n\nexport type IoCProps = React.PropsWithChildren<{\n callback?: (appctx: ApplicationContext) => void;\n}>;\n\nexport function IoC(props: IoCProps) {\n const ref = useRef();\n if (!ref.current) {\n const appctx = new ApplicationContext();\n if (typeof props.callback === 'function') {\n props.callback(appctx);\n }\n appctx.registerInstAwareProcessor(\n class implements PartialInstAwareProcessor {\n afterInstantiation(instance: T): T {\n const markInfo = appctx.getClassMetadata(instance.constructor as Newable).getCtorMarkInfo();\n if (markInfo[MARK_AS_MOBX_OBSERVABLE]) {\n makeObservable(instance);\n }\n return instance;\n }\n }\n );\n ref.current = appctx;\n }\n return React.createElement(\n IoCContext.Provider,\n {\n value: ref.current\n },\n props.children\n );\n}\n\nexport function useService(ctor: Newable): T {\n const ctx = useContext(IoCContext);\n if (!ctx) {\n throw new Error(' has not been applied to the component.');\n }\n return ctx.getInstance(ctor);\n}\n\nexport * from '@vgerbot/ioc';\n"],"names":["IoCContext","React","createContext","undefined","props","ref","useRef","current","appctx_1","ApplicationContext","callback","registerInstAwareProcessor","class_1","prototype","afterInstantiation","instance","getClassMetadata","constructor","getCtorMarkInfo","makeObservable","createElement","Provider","value","children","Mark","ctor","ctx","useContext","Error","getInstance"],"mappings":"gFAMMA,EAAaC,EAAMC,mBAA8CC,eAYjE,SAAcC,GAChB,IAAMC,EAAMC,EAAAA,SACZ,IAAKD,EAAIE,QAAS,CACd,IAAMC,EAAS,IAAIC,EAAAA,mBACW,mBAAnBL,EAAMM,UACbN,EAAMM,SAASF,GAEnBA,EAAOG,2BAA0B,WAC7B,SAAAC,KAQA,OAPIA,EAAkBC,UAAAC,mBAAlB,SAAqCC,GAKjC,OAJiBP,EAAOQ,iBAAiBD,EAASE,aAA2BC,kBApBjE,4BAsBRC,EAAcA,eAACJ,GAEZA,GAEdH,EAT4B,IAWjCP,EAAIE,QAAUC,EAElB,OAAOP,EAAMmB,cACTpB,EAAWqB,SACX,CACIC,MAAOjB,EAAIE,SAEfH,EAAMmB,yCAhCV,OAAOC,EAAIA,KAHiB,2BAGS,uBAoCnC,SAAwBC,GAC1B,IAAMC,EAAMC,aAAW3B,GACvB,IAAK0B,EACD,MAAM,IAAIE,MAAM,sDAEpB,OAAOF,EAAIG,YAAYJ"} \ No newline at end of file diff --git a/dist/index.esm.js b/dist/index.esm.js index 7c46ffa..dc830d2 100644 --- a/dist/index.esm.js +++ b/dist/index.esm.js @@ -1,31 +1,2 @@ -var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var n,r,o={};function i(){if(r)return n;function e(e){return"number"==typeof e||(!!/^0x[0-9a-f]+$/i.test(e)||/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(e))}function t(e,t){return"constructor"===t&&"function"==typeof e[t]||"__proto__"===t}return r=1,n=function(n,r){r||(r={});var o={bools:{},strings:{},unknownFn:null};"function"==typeof r.unknown&&(o.unknownFn=r.unknown),"boolean"==typeof r.boolean&&r.boolean?o.allBools=!0:[].concat(r.boolean).filter(Boolean).forEach((function(e){o.bools[e]=!0}));var i={};function a(e){return i[e].some((function(e){return o.bools[e]}))}Object.keys(r.alias||{}).forEach((function(e){i[e]=[].concat(r.alias[e]),i[e].forEach((function(t){i[t]=[e].concat(i[e].filter((function(e){return t!==e})))}))})),[].concat(r.string).filter(Boolean).forEach((function(e){o.strings[e]=!0,i[e]&&[].concat(i[e]).forEach((function(e){o.strings[e]=!0}))}));var s=r.default||{},u={_:[]};function c(e,n,r){for(var i=e,a=0;a0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}function l(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o0)return!0;var o=p.get(t);return o.delete(n),o.size>0||p.delete(t),!0}function A(e,t){for(var n=e.length-1;n>=0;--n){var r=(0,e[n])(t);if(!N(r)&&!D(r)){if(!H(r))throw new TypeError;t=r}}return t}function E(e,t,n,r){for(var o=e.length-1;o>=0;--o){var i=(0,e[o])(t,n,r);if(!N(i)&&!D(i)){if(!V(i))throw new TypeError;r=i}}return r}function j(e,t,n){var r=p.get(e);if(N(r)){if(!n)return;r=new f,p.set(e,r)}var o=r.get(t);if(N(o)){if(!n)return;o=new f,r.set(t,o)}return o}function k(e,t,n){if(x(e,t,n))return!0;var r=Q(t);return!D(r)&&k(e,r,n)}function x(e,t,n){var r=j(t,n,!1);return!N(r)&&U(r.has(e))}function C(e,t,n){if(x(e,t,n))return R(e,t,n);var r=Q(t);return D(r)?void 0:C(e,r,n)}function R(e,t,n){var r=j(t,n,!1);if(!N(r))return r.get(e)}function P(e,t,n,r){j(n,r,!0).set(e,t)}function T(e,t){var n=M(e,t),r=Q(e);if(null===r)return n;var o=T(r,t);if(o.length<=0)return n;if(n.length<=0)return o;for(var i=new h,a=[],s=0,u=n;s=0&&e=this._keys.length?(this._index=-1,this._keys=t,this._values=t):this._index++,{value:n,done:!1}}return{value:void 0,done:!0}},e.prototype.throw=function(e){throw this._index>=0&&(this._index=-1,this._keys=t,this._values=t),e},e.prototype.return=function(e){return this._index>=0&&(this._index=-1,this._keys=t,this._values=t),{value:e,done:!0}},e}();return function(){function t(){this._keys=[],this._values=[],this._cacheKey=e,this._cacheIndex=-2}return Object.defineProperty(t.prototype,"size",{get:function(){return this._keys.length},enumerable:!0,configurable:!0}),t.prototype.has=function(e){return this._find(e,!1)>=0},t.prototype.get=function(e){var t=this._find(e,!1);return t>=0?this._values[t]:void 0},t.prototype.set=function(e,t){var n=this._find(e,!0);return this._values[n]=t,this},t.prototype.delete=function(t){var n=this._find(t,!1);if(n>=0){for(var r=this._keys.length,o=n+1;o-1&&e.splice(r,1)}},e.prototype.emit=function(e){for(var t,n=[],r=1;r=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(u),p=h.next();!p.done;p=h.next()){var d=c(p.value,2);l(d[0],d[1])}}catch(e){t={error:e}}finally{try{p&&!p.done&&(o=h.return)&&o.call(h)}finally{if(t)throw t.error}}},e.prototype.build=function(){var e,t,n=this.getConstructorArgs(),r=this.createPropertiesGetterBuilder();if(this.instAwareProcessorManager.isInstAwareProcessorClass(this.componentClass)){var o=new((e=this.componentClass).bind.apply(e,l([void 0],c(n),!1)));for(var i in this.lifecycleResolver.invokePreInjectMethod(o),r){var a=r[i](o);this.defineProperty(o,i,a)}return this.lifecycleResolver.invokePostInjectMethod(o),o}o=this.instAwareProcessorManager.beforeInstantiation(this.componentClass,n);for(var i in o||(o=new((t=this.componentClass).bind.apply(t,l([void 0],c(n),!1)))),this.lifecycleResolver.invokePreInjectMethod(o),r){a=r[i](o);this.defineProperty(o,i,a)}return o=this.instAwareProcessorManager.afterInstantiation(o),this.lifecycleResolver.invokePostInjectMethod(o),o},e.prototype.defineProperty=function(e,t,n){this.lazyMode?E(e,t,n):e[t]=n()},e.prototype.createPropertiesGetterBuilder=function(){var e=this,t={},n=function(n){var o=r.propertyFactories[n],i=o.factory,a=o.injections;t[n]=function(t){var n=i(e.container,t);return function(){return e.container.invoke(n,{injections:a})}}},r=this;for(var o in this.propertyFactories)n(o);return t},e}(),D=Symbol("ioc:function-metadata"),L=function(){function e(){this.parameters=[],this.isFactory=!1}return e.getReflectKey=function(){return D},e.prototype.setParameterType=function(e,t){this.parameters[e]=t},e.prototype.setScope=function(e){this.scope=e},e.prototype.setIsFactory=function(e){this.isFactory=e},e.prototype.init=function(){},e.prototype.reader=function(){var e=this;return{getParameters:function(){return e.parameters.slice(0)},isFactory:function(){return e.isFactory},getScope:function(){return e.scope}}},e}(),V=-1,B=function(){function e(e){this.instance=e,this.serialNo=++V}return e.prototype.compareTo=function(e){return this.serialNo>e.serialNo?-1:this.serialNo-1)throw new Error("Incorrect expression syntax, The ',' is not allowed in expression: \"".concat(e,'"'));if(e.length>120)throw new Error("Incorrect expression syntax, expression length cannot be greater than 120, but actual: ".concat(e.length));if(/\(.*?\)/.test(e))throw new Error('Incorrect expression syntax, parentheses are not allowed in expression: "'.concat(e,'"'));if(""===(e=e.trim()))return function(e){return e};var t=(n="context",n+""+(H++).toString(16));var n;return new Function(t,'\n "use strict";\n try {\n return '.concat(t,".").concat(e,";\n } catch(error) { throw error }\n "))}(e)(t)}(o,this.namespaceDataMap.get(r))},e.prototype.recordData=function(e,t){this.namespaceDataMap.set(e,t)},e}();var H=Date.now();var q,W=function(){function e(){}return e.prototype.eval=function(e,t){return process.env[t]},e}(),X=function(){function e(){}return e.prototype.eval=function(e,t,n){var r=n||process.argv;return i()(r)[t]},e}();!function(e){e[e.Before=0]="Before",e[e.After=1]="After",e[e.Around=2]="Around",e[e.AfterReturn=3]="AfterReturn",e[e.Thrown=4]="Thrown",e[e.Finally=5]="Finally"}(q||(q={}));var J=function(){function e(e){this.fn=e,this.beforeHooks=[],this.afterHooks=[],this.thrownHooks=[],this.finallyHooks=[],this.afterReturnHooks=[],this.aroundHooks=[]}return e.prototype.append=function(e,t){var n;switch(e){case q.Before:n=this.beforeHooks;break;case q.After:n=this.afterHooks;break;case q.Thrown:n=this.thrownHooks;break;case q.Finally:n=this.finallyHooks;break;case q.AfterReturn:n=this.afterReturnHooks;break;case q.Around:n=this.aroundHooks}n&&n.push(t)},e.prototype.extract=function(){var e=this,t=e.aroundHooks,n=e.beforeHooks,r=e.afterHooks,o=e.afterReturnHooks,i=e.finallyHooks,a=e.thrownHooks,s=t.reduceRight((function(e,t){return function(){for(var n=[],r=0;r0))throw n;a.forEach((function(r){return r.call(e,n,t)}))}),(function(){i.forEach((function(n){return n.call(e,t)}))}),(function(n){return r.forEach((function(n){n.call(e,t)})),o.reduce((function(n,r){return r.call(e,n,t)}),n)}))}},e}();var Y=function(){function e(){this.aspectMap=f((function(){return f((function(){return[]}))}))}return e.getReflectKey=function(){return"aop:use-aspect-metadata"},e.prototype.init=function(){},e.prototype.append=function(e,t,n){var r=this.aspectMap.get(e).get(t);r.push.apply(r,l([],c(n),!1))},e.prototype.reader=function(){var e=this;return{getAspects:function(){return e.aspectMap},getAspectsOf:function(t,n){return e.aspectMap.get(t).get(n)}}},e}(),Z=function(){function e(){}return e.create=function(t){return function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.appCtx=t,n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}(n,e),n}(e)},e.prototype.afterInstantiation=function(e){var t=this,n=e.constructor,r=v.getMetadata(n,Y).reader();if(0===r.getAspects().size)return e;var o=new WeakMap;return o.set(e,new Map),new Proxy(e,{get:function(n,i){var a=n[i];if(i in n&&"function"==typeof a){var s=o.get(e);if(!s)return a;if(s.has(i))return s.get(i);var u=function(e,t,n,r,o){var i=function(e,r,o,i){return void 0===o&&(o=null),void 0===i&&(i=null),{target:t,methodName:n,arguments:r,returnValue:o,error:i,advice:e}},a=new J(r),s=function(t){return e.getInstance(t)},u=o.getAspectsOf(n,q.Before).map(s),c=o.getAspectsOf(n,q.After).map(s),l=o.getAspectsOf(n,q.Thrown).map(s),f=o.getAspectsOf(n,q.Finally).map(s),h=o.getAspectsOf(n,q.AfterReturn).map(s),p=o.getAspectsOf(n,q.Around).map(s);return u.length>0&&a.append(q.Before,(function(e){var t=i(q.Before,e);u.forEach((function(e){e.execute(t)}))})),c.length>0&&a.append(q.After,(function(e){var t=i(q.After,e);c.forEach((function(e){e.execute(t)}))})),l.length>0&&a.append(q.Thrown,(function(e,t){var n=i(q.Thrown,t,null,e);l.forEach((function(e){e.execute(n)}))})),f.length>0&&a.append(q.Finally,(function(e){var t=i(q.Finally,e);f.forEach((function(e){e.execute(t)}))})),h.length>0&&a.append(q.AfterReturn,(function(e,t){return h.reduce((function(n,r){var o=i(q.AfterReturn,t,e);return r.execute(o)}),e)})),p.length>0&&p.forEach((function(e){a.append(q.Around,(function(t,n){var r=i(q.Around,n,null);return r.proceed=function(e){return void 0===e&&(e=n),t(e)},e.execute(r)}))})),a.extract()}(t.appCtx,n,i,a,r);return s.set(i,u),u}return a}})},e}(),Q=function(){function e(e){this.container=e,this.instAwareProcessorClasses=new Set}return e.prototype.appendInstAwareProcessorClass=function(e){this.instAwareProcessorClasses.add(e)},e.prototype.appendInstAwareProcessorClasses=function(e){var t=this;e.forEach((function(e){t.instAwareProcessorClasses.add(e)}))},e.prototype.beforeInstantiation=function(e,t){var n;return this.instAwareProcessorInstances.some((function(r){return!!r.beforeInstantiation&&!!(n=r.beforeInstantiation(e,t))})),n},e.prototype.afterInstantiation=function(e){return this.instAwareProcessorInstances.reduce((function(e,t){if(t.afterInstantiation){var n=t.afterInstantiation(e);if(n)return n}return e}),e)},e.prototype.isInstAwareProcessorClass=function(e){return this.getInstAwareProcessorClasses().indexOf(e)>-1},e.prototype.getInstAwareProcessorClasses=function(){return r.getInstance().reader().getInstAwareProcessorClasses().concat(Array.from(this.instAwareProcessorClasses))},function(e,t,n,r){var o,i=arguments.length,a=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);i>3&&a&&Object.defineProperty(t,n,a)}([j({evaluate:function(e){return r.getInstance().reader().getInstAwareProcessorClasses().concat(Array.from(e.instAwareProcessorClasses)).map((function(t){return e.container.getInstance(t)}))},resetBy:[function(e){return e.instAwareProcessorClasses.size},function(){return r.getInstance().reader().getInstAwareProcessorClasses().length}]}),u("design:type",Array)],e.prototype,"instAwareProcessorInstances",void 0),e}(),ee="container:event:pre-destroy",te=function(){function e(e){void 0===e&&(e={}),this.resolutions=new Map,this.factories=new Map,this.evaluatorClasses=new Map,this.eventEmitter=new O,this.defaultScope=e.defaultScope||t.InstanceScope.SINGLETON,this.lazyMode=void 0===e.lazyMode||e.lazyMode,this.registerInstanceScopeResolution(t.InstanceScope.SINGLETON,U),this.registerInstanceScopeResolution(t.InstanceScope.GLOBAL_SHARED_SINGLETON,K),this.registerInstanceScopeResolution(t.InstanceScope.TRANSIENT,z),this.registerEvaluator(t.ExpressionType.JSON_PATH,$),w&&(this.registerEvaluator(t.ExpressionType.ENV,W),this.registerEvaluator(t.ExpressionType.ARGV,X)),this.instAwareProcessorManager=new Q(this),this.registerInstAwareProcessor(Z.create(this))}return e.prototype.getInstance=function(t,n){if(t===e)return this;if("string"==typeof t||"symbol"==typeof t){var o=this.getFactory(t);if(o){var i=o.factory,a=o.injections,u=i(this,n),c=this.invoke(u,{injections:a}),l=null==c?void 0:c.constructor;if("function"==typeof l){var f=l,h=new I(f,this),p=this.instAwareProcessorManager.isInstAwareProcessorClass(f);h.invokePreInjectMethod(c),p||(c=this.instAwareProcessorManager.afterInstantiation(c)),h.invokePostInjectMethod(c)}return c}var d=r.getInstance().reader().getClassMetadata(t);if(!d)throw new Error("");t=d.reader().getClass()}var v=t,y=g.getInstance(v).reader().getScope(),b=this.resolutions.get(y)||this.resolutions.get(this.defaultScope),_={identifier:v,owner:n,ownerPropertyKey:void 0};if(b.shouldGenerate(_)){var m=this.createComponentInstanceBuilder(v).build(),w=s(s({},_),{instance:m});return b.saveInstance(w),m}return b.getInstance(_)},e.prototype.createComponentInstanceBuilder=function(e){var t=new N(e,this,this.instAwareProcessorManager);return t.appendLazyMode(this.lazyMode),t},e.prototype.getFactory=function(e){var t=r.getInstance().reader().getComponentFactory(e);return t||this.factories.get(e)},e.prototype.bindFactory=function(e,t,r){this.factories.set(e,new n(t,r))},e.prototype.invoke=function(e,t){var n,r=this;if(void 0===t&&(t={}),n=arguments.length>1?e.bind(t.context):e,S(t))return t.args?n.apply(void 0,l([],c(t.args),!1)):n();if(A(t)){var o=t.injections?t.injections.map((function(e){return r.getInstance(e)})):[];return o.length>0?n.apply(void 0,l([],c(o),!1)):n()}var i=v.getMetadata(n,L).reader(),a=i.getParameters(),s=a.map((function(e){return r.getInstance(e)}));return n.apply(void 0,l([],c(s),!1))},e.prototype.destroy=function(){this.eventEmitter.emit(ee),this.resolutions.forEach((function(e){e.destroy()}))},e.prototype.evaluate=function(e,t){var n=this.evaluatorClasses.get(t.type);if(!n)throw new TypeError("Unknown evaluator name: ".concat(t.type));return this.getInstance(n).eval(this,e,t.externalArgs)},e.prototype.recordJSONData=function(e,t){this.getInstance($).recordData(e,t)},e.prototype.bindInstance=function(e,n){var r=this.resolutions.get(t.InstanceScope.SINGLETON);null==r||r.saveInstance({identifier:e,instance:n})},e.prototype.registerInstanceScopeResolution=function(e,t,n){this.resolutions.set(e,new(t.bind.apply(t,l([void 0],c(n||[]),!1))))},e.prototype.registerEvaluator=function(e,n){v.getMetadata(n,g).setScope(t.InstanceScope.SINGLETON),this.evaluatorClasses.set(e,n)},e.prototype.registerInstAwareProcessor=function(e){this.instAwareProcessorManager.appendInstAwareProcessorClass(e)},e.prototype.onPreDestroy=function(e){return this.eventEmitter.on(ee,e)},e.prototype.getClassMetadata=function(e){return g.getInstance(e).reader()},e}();t.ApplicationContext=te,t.Bind=function(e){return function(t){var n=v.getMetadata(t,g);r.getInstance().recordClassAlias(e,n)}},t.Factory=function(e,t){return void 0===t&&(t=[]),function(n,o){var i=r.getInstance(),a=n.constructor;i.recordFactory(e,(function(e,t){var n=e.getInstance(a,t)[o];return"function"==typeof n?function(){for(var t=[],r=0;r1?t-1:0),r=1;r1?t-1:0),r=1;r1){for(var l=Array(c),f=0;f1){for(var h=Array(f),p=0;p import('./MyComponent'))\n\nDid you accidentally put curly braces around the import?",r),"default"in r||j("lazy: Expected the result of a dynamic import() call. Instead received: %s\n\nYour code should look like: \n const MyComponent = lazy(() => import('./MyComponent'))",r),r.default}throw e._result}function de(e){return"string"==typeof e||"function"==typeof e||e===o||e===a||e===i||e===l||e===f||e===d||"object"==typeof e&&null!==e&&(e.$$typeof===p||e.$$typeof===h||e.$$typeof===s||e.$$typeof===u||e.$$typeof===c||e.$$typeof===ae||void 0!==e.getModuleId)}function ve(){var e=b.current;return null===e&&j("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem."),e}ae=Symbol.for("react.module.reference");var ye,be,ge,_e,me,we,Oe,Se=0;function Ae(){}Ae.__reactDisabledLog=!0;var Ee,je=A.ReactCurrentDispatcher;function ke(e,t,n){if(void 0===Ee)try{throw Error()}catch(e){var r=e.stack.trim().match(/\n( *(at )?)/);Ee=r&&r[1]||""}return"\n"+Ee+e}var xe,Ce=!1,Re="function"==typeof WeakMap?WeakMap:Map;function Pe(e,t){if(!e||Ce)return"";var n,r=xe.get(e);if(void 0!==r)return r;Ce=!0;var o,i=Error.prepareStackTrace;Error.prepareStackTrace=void 0,o=je.current,je.current=null,function(){if(0===Se){ye=console.log,be=console.info,ge=console.warn,_e=console.error,me=console.group,we=console.groupCollapsed,Oe=console.groupEnd;var e={configurable:!0,enumerable:!0,value:Ae,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}Se++}();try{if(t){var a=function(){throw Error()};if(Object.defineProperty(a.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(a,[])}catch(e){n=e}Reflect.construct(e,[],a)}else{try{a.call()}catch(e){n=e}e.call(a.prototype)}}else{try{throw Error()}catch(e){n=e}e()}}catch(t){if(t&&n&&"string"==typeof t.stack){for(var s=t.stack.split("\n"),u=n.stack.split("\n"),c=s.length-1,l=u.length-1;c>=1&&l>=0&&s[c]!==u[l];)l--;for(;c>=1&&l>=0;c--,l--)if(s[c]!==u[l]){if(1!==c||1!==l)do{if(c--,--l<0||s[c]!==u[l]){var f="\n"+s[c].replace(" at new "," at ");return e.displayName&&f.includes("")&&(f=f.replace("",e.displayName)),"function"==typeof e&&xe.set(e,f),f}}while(c>=1&&l>=0);break}}}finally{Ce=!1,je.current=o,function(){if(0==--Se){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:P({},e,{value:ye}),info:P({},e,{value:be}),warn:P({},e,{value:ge}),error:P({},e,{value:_e}),group:P({},e,{value:me}),groupCollapsed:P({},e,{value:we}),groupEnd:P({},e,{value:Oe})})}Se<0&&j("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}(),Error.prepareStackTrace=i}var h=e?e.displayName||e.name:"",p=h?ke(h):"";return"function"==typeof e&&xe.set(e,p),p}function Te(e,t,n){if(null==e)return"";if("function"==typeof e)return Pe(e,function(e){var t=e.prototype;return!(!t||!t.isReactComponent)}(e));if("string"==typeof e)return ke(e);switch(e){case l:return ke("Suspense");case f:return ke("SuspenseList")}if("object"==typeof e)switch(e.$$typeof){case c:return Pe(e.render,!1);case h:return Te(e.type,t,n);case p:var r=e,o=r._payload,i=r._init;try{return Te(i(o),t,n)}catch(e){}}return""}xe=new Re;var Me,Ie={},Ne=A.ReactDebugCurrentFrame;function De(e){if(e){var t=e._owner,n=Te(e.type,e._source,t?t.type:null);Ne.setExtraStackFrame(n)}else Ne.setExtraStackFrame(null)}function Le(e){if(e){var t=e._owner;S(Te(e.type,e._source,t?t.type:null))}else S(null)}function Ve(){if(m.current){var e=$(m.current.type);if(e)return"\n\nCheck the render method of `"+e+"`."}return""}function Be(e){return null!=e&&void 0!==(t=e.__source)?"\n\nCheck your code at "+t.fileName.replace(/^.*[\\\/]/,"")+":"+t.lineNumber+".":"";var t}Me=!1;var Fe={};function Ue(e,t){if(e._store&&!e._store.validated&&null==e.key){e._store.validated=!0;var n=function(e){var t=Ve();if(!t){var n="string"==typeof e?e:e.displayName||e.name;n&&(t="\n\nCheck the top-level render call using <"+n+">.")}return t}(t);if(!Fe[n]){Fe[n]=!0;var r="";e&&e._owner&&e._owner!==m.current&&(r=" It was passed a child from "+$(e._owner.type)+"."),Le(e),j('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',n,r),Le(null)}}}function Ge(e,t){if("object"==typeof e)if(U(e))for(var n=0;n",a=" Did you accidentally export a JSX literal instead of a component?"):s=typeof e,j("React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",s,a)}var c=re.apply(this,arguments);if(null==c)return c;if(i)for(var l=2;l ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning."));var t=new MessageChannel;t.port1.onmessage=e,t.port2.postMessage(void 0)}}We(t)}((function(){0===o.length?(_.current=null,n(t)):Ze(t,n,r)}))}catch(e){r(e)}else n(t)}var Qe=!1;function et(e){if(!Qe){Qe=!0;var t=0;try{for(;t is not supported and will be removed in a future major release. Did you mean to render instead?")),t.Provider},set:function(e){t.Provider=e}},_currentValue:{get:function(){return t._currentValue},set:function(e){t._currentValue=e}},_currentValue2:{get:function(){return t._currentValue2},set:function(e){t._currentValue2=e}},_threadCount:{get:function(){return t._threadCount},set:function(e){t._threadCount=e}},Consumer:{get:function(){return n||(n=!0,j("Rendering is not supported and will be removed in a future major release. Did you mean to render instead?")),t.Consumer}},displayName:{get:function(){return t.displayName},set:function(e){o||(E("Setting `displayName` on Context.Consumer has no effect. You should set it directly on the context with Context.displayName = '%s'.",e),o=!0)}}}),t.Consumer=i,t._currentRenderer=null,t._currentRenderer2=null,t},t.createElement=tt,t.createFactory=rt,t.createRef=function(){var e={current:null};return Object.seal(e),e},t.forwardRef=function(e){null!=e&&e.$$typeof===h?j("forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))."):"function"!=typeof e?j("forwardRef requires a render function but was given %s.",null===e?"null":typeof e):0!==e.length&&2!==e.length&&j("forwardRef render functions accept exactly two parameters: props and ref. %s",1===e.length?"Did you forget to use the ref parameter?":"Any additional parameter will be undefined."),null!=e&&(null==e.defaultProps&&null==e.propTypes||j("forwardRef render functions do not support propTypes or defaultProps. Did you accidentally pass a React component?"));var t,n={$$typeof:c,render:e};return Object.defineProperty(n,"displayName",{enumerable:!1,configurable:!0,get:function(){return t},set:function(n){t=n,e.name||e.displayName||(e.displayName=n)}}),n},t.isValidElement=ie,t.lazy=function(e){var t,n,r={$$typeof:p,_payload:{_status:-1,_result:e},_init:pe};return Object.defineProperties(r,{defaultProps:{configurable:!0,get:function(){return t},set:function(e){j("React.lazy(...): It is not supported to assign `defaultProps` to a lazy component import. Either specify them where the component is defined, or create a wrapping component around it."),t=e,Object.defineProperty(r,"defaultProps",{enumerable:!0})}},propTypes:{configurable:!0,get:function(){return n},set:function(e){j("React.lazy(...): It is not supported to assign `propTypes` to a lazy component import. Either specify them where the component is defined, or create a wrapping component around it."),n=e,Object.defineProperty(r,"propTypes",{enumerable:!0})}}}),r},t.memo=function(e,t){de(e)||j("memo: The first argument must be a component. Instead received: %s",null===e?"null":typeof e);var n,r={$$typeof:h,type:e,compare:void 0===t?null:t};return Object.defineProperty(r,"displayName",{enumerable:!1,configurable:!0,get:function(){return n},set:function(t){n=t,e.name||e.displayName||(e.displayName=t)}}),r},t.startTransition=function(e,t){var n=g.transition;g.transition={};var r=g.transition;g.transition._updatedFibers=new Set;try{e()}finally{g.transition=n,null===n&&r._updatedFibers&&(r._updatedFibers.size>10&&E("Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table."),r._updatedFibers.clear())}},t.unstable_act=function(e){var t=Xe;Xe++,null===_.current&&(_.current=[]);var n,r=_.isBatchingLegacy;try{if(_.isBatchingLegacy=!0,n=e(),!r&&_.didScheduleLegacyUpdate){var o=_.current;null!==o&&(_.didScheduleLegacyUpdate=!1,et(o))}}catch(e){throw Ye(t),e}finally{_.isBatchingLegacy=r}if(null!==n&&"object"==typeof n&&"function"==typeof n.then){var i=n,a=!1,s={then:function(e,n){a=!0,i.then((function(r){Ye(t),0===Xe?Ze(r,e,n):e(r)}),(function(e){Ye(t),n(e)}))}};return Je||"undefined"==typeof Promise||Promise.resolve().then((function(){})).then((function(){a||(Je=!0,j("You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);"))})),s}var u=n;if(Ye(t),0===Xe){var c=_.current;return null!==c&&(et(c),_.current=null),{then:function(e,t){null===_.current?(_.current=[],Ze(u,e,t)):e(u)}}}return{then:function(e,t){e(u)}}},t.useCallback=function(e,t){return ve().useCallback(e,t)},t.useContext=function(e){var t=ve();if(void 0!==e._context){var n=e._context;n.Consumer===e?j("Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be removed in a future major release. Did you mean to call useContext(Context) instead?"):n.Provider===e&&j("Calling useContext(Context.Provider) is not supported. Did you mean to call useContext(Context) instead?")}return t.useContext(e)},t.useDebugValue=function(e,t){return ve().useDebugValue(e,t)},t.useDeferredValue=function(e){return ve().useDeferredValue(e)},t.useEffect=function(e,t){return ve().useEffect(e,t)},t.useId=function(){return ve().useId()},t.useImperativeHandle=function(e,t,n){return ve().useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return ve().useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return ve().useLayoutEffect(e,t)},t.useMemo=function(e,t){return ve().useMemo(e,t)},t.useReducer=function(e,t,n){return ve().useReducer(e,t,n)},t.useRef=function(e){return ve().useRef(e)},t.useState=function(e){return ve().useState(e)},t.useSyncExternalStore=function(e,t,n){return ve().useSyncExternalStore(e,t,n)},t.useTransition=function(){return ve().useTransition()},t.version="18.2.0","undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error)}()),h;var e,t}f={get exports(){return s},set exports(e){s=e}},"production"===process.env.NODE_ENV?f.exports=c():f.exports=d();var v,y=t(s),b={},g={};function _(){if(v)return g;function t(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;re.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function j(e){return Object.assign((function(t,n){k(t,n,e)}),e)}function k(e,t,n){b(e,Lt)||l(e,Lt,w({},e[Lt])),function(e){return"override"===e.t}(n)||(e[Lt][t]=n)}function x(e,t,n){void 0===t&&(t=Mt),void 0===n&&(n=Mt);var r=new Bt(e);return t!==Mt&&Ce(r,t),n!==Mt&&Re(r,n),r}function C(e,t,n){return Fe(e)?e:Array.isArray(e)?Zt.array(e,{name:n}):u(e)?Zt.object(e,void 0,{name:n}):p(e)?Zt.map(e,{name:n}):d(e)?Zt.set(e,{name:n}):"function"!=typeof e||je(e)||Le(e)?e:c(e)?In(e):Cn(n,e)}function R(e){return e}function P(e,t){return{t:e,i:t,o:T,u:M}}function T(e,t,n,r){var o;if(null!=(o=this.i)&&o.bound)return null===this.u(e,t,n,!1)?0:1;if(r===e.s)return null===this.u(e,t,n,!1)?0:2;if(je(n.value))return 1;var i=I(e,this,t,n,!1);return kt(r,t,i),2}function M(e,t,n,r){var o=I(e,this,t,n);return e.h(t,o,r)}function I(e,t,n,r,o){var i,a,s,u,c,l,f;void 0===o&&(o=mn.safeDescriptors);var h,p=r.value;return null!=(i=t.i)&&i.bound&&(p=p.bind(null!=(h=e.v)?h:e.s)),{value:Y(null!=(a=null==(s=t.i)?void 0:s.name)?a:n.toString(),p,null!=(u=null==(c=t.i)?void 0:c.autoAction)&&u,null!=(l=t.i)&&l.bound?null!=(f=e.v)?f:e.s:void 0),configurable:!o||e.l,enumerable:!1,writable:!o}}function N(e,t){return{t:e,i:t,o:D,u:L}}function D(e,t,n,r){var o;if(r===e.s)return null===this.u(e,t,n,!1)?0:2;if(null!=(o=this.i)&&o.bound&&(!b(e.s,t)||!Le(e.s[t]))&&null===this.u(e,t,n,!1))return 0;if(Le(n.value))return 1;var i=V(e,0,0,n,!1,!1);return kt(r,t,i),2}function L(e,t,n,r){var o,i=V(e,0,0,n,null==(o=this.i)?void 0:o.bound);return e.h(t,i,r)}function V(e,t,n,r,o,i){void 0===i&&(i=mn.safeDescriptors);var a,s=r.value;return Le(s)||(s=In(s)),o&&((s=s.bind(null!=(a=e.v)?a:e.s)).isMobXFlow=!0),{value:s,configurable:!i||e.l,enumerable:!1,writable:!i}}function B(e,t){return{t:e,i:t,o:F,u:U}}function F(e,t,n){return null===this.u(e,t,n,!1)?0:1}function U(e,t,n,r){return e.p(t,w({},this.i,{get:n.get,set:n.set}),r)}function G(e,t){return{t:e,i:t,o:K,u:z}}function K(e,t,n){return null===this.u(e,t,n,!1)?0:1}function z(e,t,n,r){var o,i;return e.m(t,n.value,null!=(o=null==(i=this.i)?void 0:i.enhancer)?o:C,r)}function $(e){return{t:"true",i:e,o:H,u:q}}function H(e,t,n,r){var o,i,a,s;if(n.get)return tn.o(e,t,n,r);if(n.set){var u=Y(t.toString(),n.set);return r===e.s?null===e.h(t,{configurable:!mn.safeDescriptors||e.l,set:u})?0:2:(kt(r,t,{configurable:!0,set:u}),2)}if(r!==e.s&&"function"==typeof n.value)return c(n.value)?(null!=(s=this.i)&&s.autoBind?In.bound:In).o(e,t,n,r):(null!=(a=this.i)&&a.autoBind?Cn.bound:Cn).o(e,t,n,r);var l,f=!1===(null==(o=this.i)?void 0:o.deep)?Zt.ref:Zt;return"function"==typeof n.value&&null!=(i=this.i)&&i.autoBind&&(n.value=n.value.bind(null!=(l=e.v)?l:e.s)),f.o(e,t,n,r)}function q(e,t,n,r){var o,i,a;return n.get?tn.u(e,t,n,r):n.set?e.h(t,{configurable:!mn.safeDescriptors||e.l,set:Y(t.toString(),n.set)},r):("function"==typeof n.value&&null!=(o=this.i)&&o.autoBind&&(n.value=n.value.bind(null!=(a=e.v)?a:e.s)),(!1===(null==(i=this.i)?void 0:i.deep)?Zt.ref:Zt).u(e,t,n,r))}function W(e){return e||zt}function X(e){return!0===e.deep?C:!1===e.deep?R:(t=e.defaultDecorator)&&null!=(n=null==(r=t.i)?void 0:r.enhancer)?n:C;var t,n,r}function J(e,t,n){if(!a(t))return Fe(e)?e:u(e)?Zt.object(e,t,n):Array.isArray(e)?Zt.array(e,t):p(e)?Zt.map(e,t):d(e)?Zt.set(e,t):"object"==typeof e&&null!==e?e:Zt.box(e,t);k(e,t,$t)}function Y(e,t,n,r){function o(){return Z(0,n,t,r||this,arguments)}return void 0===n&&(n=!1),o.isMobxAction=!0,an&&(sn.value=e,kt(o,"name",sn)),o}function Z(e,t,n,r,o){var i=Q(0,t);try{return n.apply(r,o)}catch(e){throw i.j=e,e}finally{ee(i)}}function Q(e,t){var n=mn.trackingDerivation,r=!t||!n;be();var o=mn.allowStateChanges;r&&(ce(),o=ne(!0));var i={O:r,A:n,g:o,_:fe(!0),S:!1,M:0,N:on++,V:rn};return rn=i.N,i}function ee(e){rn!==e.N&&t(30),rn=e.V,void 0!==e.j&&(mn.suppressReactionErrors=!0),re(e.g),he(e._),ge(),e.O&&le(e.A),mn.suppressReactionErrors=!1}function te(e,t){var n=ne(e);try{return t()}finally{re(n)}}function ne(e){var t=mn.allowStateChanges;return mn.allowStateChanges=e,t}function re(e){mn.allowStateChanges=e}function oe(e){return e instanceof vn}function ie(e){switch(e.R){case fn.T:return!1;case fn.k:case fn.C:return!0;case fn.K:for(var t=fe(!0),n=ce(),r=e.L,o=r.length,i=0;ir&&(r=s.R)}for(n.length=o,e.I=null,i=t.length;i--;){var u=t[i];0===u.B&&ve(u,e),u.B=0}for(;o--;){var c=n[o];1===c.B&&(c.B=0,de(c,e))}r!==fn.T&&(e.R=r,e.q())}(e),he(r),o}function se(e){var t=e.L;e.L=[];for(var n=t.length;n--;)ve(t[n],e);e.R=fn.k}function ue(e){var t=ce();try{return e()}finally{le(t)}}function ce(){var e=mn.trackingDerivation;return mn.trackingDerivation=null,e}function le(e){mn.trackingDerivation=e}function fe(e){var t=mn.allowStateReads;return mn.allowStateReads=e,t}function he(e){mn.allowStateReads=e}function pe(e){if(e.R!==fn.T){e.R=fn.T;for(var t=e.L,n=t.length;n--;)t[n].G=fn.T}}function de(e,t){e.W.add(t),e.G>t.R&&(e.G=t.R)}function ve(e,t){e.W.delete(t),0===e.W.size&&ye(e)}function ye(e){!1===e.H&&(e.H=!0,mn.pendingUnobservations.push(e))}function be(){mn.inBatch++}function ge(){if(0==--mn.inBatch){we();for(var e=mn.pendingUnobservations,t=0;t0&&ye(e),!1)}function me(e){e.G!==fn.C&&(e.G=fn.C,e.W.forEach((function(e){e.R===fn.T&&e.q(),e.R=fn.C})))}function we(){mn.inBatch>0||mn.isRunningReactions||On(Oe)}function Oe(){mn.isRunningReactions=!0;for(var e=mn.pendingReactions,t=0;e.length>0;){100==++t&&(console.error("[mobx] cycle in reaction: "+e[0]),e.splice(0));for(var n=e.splice(0),r=0,o=n.length;r",t,e):i(n)?Y(t,n,e):a(n)?k(t,n,e?jn:An):a(t)?j(P(e?"autoAction":"action",{name:t,autoAction:e})):void 0}}function Ee(e){return Z(0,!1,e,this,void 0)}function je(e){return i(e)&&!0===e.isMobxAction}function ke(e,t){function n(){e(i)}var r,o;void 0===t&&(t=Rt);var i,a=null!=(r=null==(o=t)?void 0:o.name)?r:"Autorun";if(t.scheduler||t.delay){var s=xe(t),u=!1;i=new wn(a,(function(){u||(u=!0,s((function(){u=!1,i.J||i.track(n)})))}),t.onError,t.requiresObservable)}else i=new wn(a,(function(){this.track(n)}),t.onError,t.requiresObservable);return i.Y(),i.Z()}function xe(e){return e.scheduler?e.scheduler:e.delay?function(t){return setTimeout(t,e.delay)}:Rn}function Ce(e,t,n){return Pe("onBO",e,t,n)}function Re(e,t,n){return Pe("onBUO",e,t,n)}function Pe(e,t,n,r){var o="function"==typeof r?bt(t,n):bt(t),a=i(r)?r:n,s=e+"L";return o[s]?o[s].add(a):o[s]=new Set([a]),function(){var e=o[s];e&&(e.delete(a),0===e.size&&delete o[s])}}function Te(e,t,n,r){var o=Dt(t),i=ct(e,r)[Vt];be();try{Nt(o).forEach((function(e){i.u(e,o[e],!n||!(e in n)||n[e])}))}finally{ge()}return e}function Me(e){var t,n={name:e.tt};return e.L&&e.L.length>0&&(n.dependencies=(t=e.L,Array.from(new Set(t))).map(Me)),n}function Ie(e){var t={name:e.tt};return function(e){return e.W&&e.W.size>0}(e)&&(t.observers=Array.from(function(e){return e.W}(e)).map(Ie)),t}function Ne(){this.message="FLOW_CANCELLED"}function De(e){i(e.cancel)&&e.cancel()}function Le(e){return!0===(null==e?void 0:e.isMobXFlow)}function Ve(e,t){if(void 0===t)return dn(e);if(!1===ft(e))return!1;if(!e[Vt].nt.has(t))return!1;var n=bt(e,t);return dn(n)}function Be(e,t){return!!e&&(void 0!==t?!!ft(e)&&e[Vt].nt.has(t):ft(e)||!!e[Vt]||Ft(e)||Sn(e)||dn(e))}function Fe(e){return Be(e)}function Ue(e){return ft(e)?e[Vt].it():Xn(e)||er(e)?Array.from(e.keys()):ut(e)?e.map((function(e,t){return t})):void t(5)}function Ge(e,n){return ft(e)?e[Vt].rt(n):Xn(e)||er(e)?e.has(n):ut(e)?n>=0&&n0}function Ze(e,t){var n=e.ut||(e.ut=[]);return n.push(t),o((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function Qe(e,n){var r=ce();try{for(var o=[].concat(e.ut||[]),i=0,a=o.length;i0}function tt(e,t){var n=e.st||(e.st=[]);return n.push(t),o((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function nt(e,t){var n=ce(),r=e.st;if(r){for(var o=0,i=(r=r.slice()).length;oir){for(var t=ir;t=0&&r++}t=wt(t),n=wt(n);var c="[object Array]"===u;if(!c){if("object"!=typeof t||"object"!=typeof n)return!1;var l=t.constructor,f=n.constructor;if(l!==f&&!(i(l)&&l instanceof l&&i(f)&&f instanceof f)&&"constructor"in t&&"constructor"in n)return!1}if(0===r)return!1;r<0&&(r=-1),a=a||[];for(var h=(o=o||[]).length;h--;)if(o[h]===t)return a[h]===n;if(o.push(t),a.push(n),c){if((h=t.length)!==n.length)return!1;for(;h--;)if(!e(t[h],n[h],r-1,o,a))return!1}else{var p,d=Object.keys(t);if(h=d.length,Object.keys(n).length!==h)return!1;for(;h--;)if(!b(n,p=d[h])||!e(t[p],n[p],r-1,o,a))return!1}return o.pop(),a.pop(),!0}(e,t,n)}function wt(e){return ut(e)?e.slice():p(e)||Xn(e)||d(e)||er(e)?Array.from(e.entries()):e}function Ot(e){return e[Symbol.iterator]=St,e}function St(){return this}v=1,Object.defineProperty(g,"__esModule",{value:!0});var At={},Et=Object.assign,jt=Object.getOwnPropertyDescriptor,kt=Object.defineProperty,xt=Object.prototype,Ct=[];Object.freeze(Ct);var Rt={};Object.freeze(Rt);var Pt="undefined"!=typeof Proxy,Tt=Object.toString(),Mt=function(){},It=void 0!==Object.getOwnPropertySymbols,Nt="undefined"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:It?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,Dt=Object.getOwnPropertyDescriptors||function(e){var t={};return Nt(e).forEach((function(n){t[n]=jt(e,n)})),t},Lt=Symbol("mobx-stored-annotations"),Vt=Symbol("mobx administration"),Bt=function(){function e(e){void 0===e&&(e="Atom"),this.tt=void 0,this.H=!1,this.X=!1,this.W=new Set,this.B=0,this.F=0,this.G=fn.k,this.onBOL=void 0,this.onBUOL=void 0,this.tt=e}var t=e.prototype;return t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.reportObserved=function(){return _e(this)},t.reportChanged=function(){be(),me(this),mn.stateVersion=mn.stateVersion0&&!e.__mobxGlobals&&(gn=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==(new bn).version&&(gn=!1),gn?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new bn):(setTimeout((function(){_n||t(35)}),1),new bn)}(),wn=function(){function e(e,t,n,r){void 0===e&&(e="Reaction"),this.tt=void 0,this.Kt=void 0,this.Lt=void 0,this.It=void 0,this.L=[],this.I=[],this.R=fn.k,this.B=0,this.D=0,this.P=0,this.J=!1,this.Pt=!1,this.Dt=!1,this.Bt=!1,this.ot=hn.NONE,this.tt=e,this.Kt=t,this.Lt=n,this.It=r}var t=e.prototype;return t.q=function(){this.Y()},t.Y=function(){this.Pt||(this.Pt=!0,mn.pendingReactions.push(this),we())},t.isScheduled=function(){return this.Pt},t.$=function(){if(!this.J){be(),this.Pt=!1;var e=mn.trackingContext;if(mn.trackingContext=this,ie(this)){this.Dt=!0;try{this.Kt()}catch(e){this.qt(e)}}mn.trackingContext=e,ge()}},t.track=function(e){if(!this.J){be(),this.Bt=!0;var t=mn.trackingContext;mn.trackingContext=this;var n=ae(this,e,void 0);mn.trackingContext=t,this.Bt=!1,this.Dt=!1,this.J&&se(this),oe(n)&&this.qt(n.cause),ge()}},t.qt=function(e){var t=this;if(this.Lt)this.Lt(e,this);else{if(mn.disableErrorBoundaries)throw e;mn.suppressReactionErrors||console.error("[mobx] uncaught error in '"+this+"'",e),mn.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},t.dispose=function(){this.J||(this.J=!0,this.Bt||(be(),se(this),ge()))},t.Z=function(){var e=this.dispose.bind(this);return e[Vt]=this,e},t.toString=function(){return"Reaction["+this.tt+"]"},t.trace=function(e){void 0===e&&(e=!1),$e(this,e)},e}(),On=function(e){return e()},Sn=h("Reaction",wn),An=P("action"),En=P("action.bound",{bound:!0}),jn=P("autoAction",{autoAction:!0}),kn=P("autoAction.bound",{autoAction:!0,bound:!0}),xn=Ae(!1);Object.assign(xn,An);var Cn=Ae(!0);Object.assign(Cn,jn),xn.bound=j(En),Cn.bound=j(kn);var Rn=function(e){return e()},Pn=0;Ne.prototype=Object.create(Error.prototype);var Tn=N("flow"),Mn=N("flow.bound",{bound:!0}),In=Object.assign((function(e,t){if(a(t))return k(e,t,Tn);var n=e,r=n.name||"",o=function(){var e,t=this,o=arguments,a=++Pn,s=xn(r+" - runid: "+a+" - init",n).apply(t,o),u=void 0,c=new Promise((function(t,n){function o(e){var t;u=void 0;try{t=xn(r+" - runid: "+a+" - yield "+f++,s.next).call(s,e)}catch(e){return n(e)}l(t)}function c(e){var t;u=void 0;try{t=xn(r+" - runid: "+a+" - yield "+f++,s.throw).call(s,e)}catch(e){return n(e)}l(t)}function l(e){if(!i(null==e?void 0:e.then))return e.done?t(e.value):(u=Promise.resolve(e.value)).then(o,c);e.then(l,n)}var f=0;e=n,o(void 0)}));return c.cancel=xn(r+" - runid: "+a+" - cancel",(function(){try{u&&De(u);var t=s.return(void 0),n=Promise.resolve(t.value);n.then(Mt,Mt),De(n),e(new Ne)}catch(t){e(t)}})),c};return o.isMobXFlow=!0,o}),Tn);In.bound=j(Mn);var Nn={has:function(e,t){return Je(e).rt(t)},get:function(e,t){return Je(e).lt(t)},set:function(e,t,n){var r;return!!a(t)&&(null==(r=Je(e).dt(t,n,!0))||r)},deleteProperty:function(e,t){var n;return!!a(t)&&(null==(n=Je(e).Gt(t,!0))||n)},defineProperty:function(e,t,n){var r;return null==(r=Je(e).h(t,n))||r},ownKeys:function(e){return Je(e).et()},preventExtensions:function(){t(13)}},Dn=Symbol("mobx-keys"),Ln="update",Vn={get:function(e,t){var n=e[Vt];return t===Vt?n:"length"===t?n.Wt():"string"!=typeof t||isNaN(t)?b(Fn,t)?Fn[t]:e[t]:n.lt(parseInt(t))},set:function(e,t,n){var r=e[Vt];return"length"===t&&r.Ht(n),"symbol"==typeof t||isNaN(t)?e[t]=n:r.dt(parseInt(t),n),!0},preventExtensions:function(){t(15)}},Bn=function(){function e(e,t,n,r){void 0===e&&(e="ObservableArray"),this.Xt=void 0,this.Ut=void 0,this.at=void 0,this.nt=[],this.ut=void 0,this.st=void 0,this.Ft=void 0,this.dehancer=void 0,this.v=void 0,this.zt=0,this.Xt=n,this.Ut=r,this.at=new Bt(e),this.Ft=function(e,n){return t(e,n,"ObservableArray[..]")}}var n=e.prototype;return n.$t=function(e){return void 0!==this.dehancer?this.dehancer(e):e},n.ct=function(e){return void 0!==this.dehancer&&e.length>0?e.map(this.dehancer):e},n.At=function(e){return Ze(this,e)},n.gt=function(e,t){return void 0===t&&(t=!1),t&&e({observableKind:"array",object:this.v,debugObjectName:this.at.tt,type:"splice",index:0,added:this.nt.slice(),addedCount:this.nt.length,removed:[],removedCount:0}),tt(this,e)},n.Wt=function(){return this.at.reportObserved(),this.nt.length},n.Ht=function(e){("number"!=typeof e||isNaN(e)||e<0)&&t("Out of range: "+e);var n=this.nt.length;if(e!==n)if(e>n){for(var r=new Array(e-n),o=0;o0&&vt(e+n+1)},n.ft=function(e,t,n){var r=this,o=this.nt.length;if(void 0===e?e=0:e>o?e=o:e<0&&(e=Math.max(0,o+e)),t=1===arguments.length?o-e:null==t?0:Math.max(0,Math.min(t,o-e)),void 0===n&&(n=Ct),Ye(this)){var i=Qe(this,{object:this.v,type:"splice",index:e,removedCount:t,added:n});if(!i)return Ct;t=i.removedCount,n=i.added}if(n=0===n.length?n:n.map((function(e){return r.Ft(e,void 0)})),this.Ut){var a=n.length-t;this.Jt(o,a)}var s=this.Yt(e,t,n);return 0===t&&0===n.length||this.Qt(e,n,s),this.ct(s)},n.Yt=function(e,t,n){var r;if(n.length<1e4)return(r=this.nt).splice.apply(r,[e,t].concat(n));var o=this.nt.slice(e,e+t),i=this.nt.slice(e+t);this.nt.length+=n.length-t;for(var a=0;a=this.nt.length))return this.at.reportObserved(),this.$t(this.nt[e]);console.warn("[mobx] Out of bounds read: "+e)},n.dt=function(e,n){var r=this.nt;if(this.Ut&&e>r.length&&t(17,e,r.length),e2?n-2:0),o=2;o-1&&(this.splice(n,1),!0)}};ot("concat",it),ot("flat",it),ot("includes",it),ot("indexOf",it),ot("join",it),ot("lastIndexOf",it),ot("slice",it),ot("toString",it),ot("toLocaleString",it),ot("every",at),ot("filter",at),ot("find",at),ot("findIndex",at),ot("flatMap",at),ot("forEach",at),ot("map",at),ot("some",at),ot("reduce",st),ot("reduceRight",st);var Un,Gn,Kn=h("ObservableArrayAdministration",Bn),zn={},$n="add";Un=Symbol.iterator,Gn=Symbol.toStringTag;var Hn,qn,Wn=function(){function e(e,n,r){var o=this;void 0===n&&(n=C),void 0===r&&(r="ObservableMap"),this.Ft=void 0,this.tt=void 0,this[Vt]=zn,this.pt=void 0,this.yt=void 0,this.bt=void 0,this.ut=void 0,this.st=void 0,this.dehancer=void 0,this.Ft=n,this.tt=r,i(Map)||t(18),this.bt=x("ObservableMap.keys()"),this.pt=new Map,this.yt=new Map,te(!0,(function(){o.merge(e)}))}var n=e.prototype;return n.rt=function(e){return this.pt.has(e)},n.has=function(e){var t=this;if(!mn.trackingDerivation)return this.rt(e);var n=this.yt.get(e);if(!n){var r=n=new cn(this.rt(e),R,"ObservableMap.key?",!1);this.yt.set(e,r),Re(r,(function(){return t.yt.delete(e)}))}return n.get()},n.set=function(e,t){var n=this.rt(e);if(Ye(this)){var r=Qe(this,{type:n?Ln:$n,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.tn(e,t):this.nn(e,t),this},n.delete=function(e){var t=this;if(Ye(this)&&!Qe(this,{type:"delete",object:this,name:e}))return!1;if(this.rt(e)){var n=et(this),r=n?{observableKind:"map",debugObjectName:this.tt,type:"delete",object:this,oldValue:this.pt.get(e).jt,name:e}:null;return qe((function(){var n;t.bt.reportChanged(),null==(n=t.yt.get(e))||n.xt(!1),t.pt.get(e).xt(void 0),t.pt.delete(e)})),n&&nt(this,r),!0}return!1},n.tn=function(e,t){var n=this.pt.get(e);if((t=n.Ot(t))!==mn.UNCHANGED){var r=et(this),o=r?{observableKind:"map",debugObjectName:this.tt,type:Ln,object:this,oldValue:n.jt,name:e,newValue:t}:null;n.xt(t),r&&nt(this,o)}},n.nn=function(e,t){var n=this;qe((function(){var r,o=new cn(t,n.Ft,"ObservableMap.key",!1);n.pt.set(e,o),t=o.jt,null==(r=n.yt.get(e))||r.xt(!0),n.bt.reportChanged()}));var r=et(this);r&&nt(this,r?{observableKind:"map",debugObjectName:this.tt,type:$n,object:this,name:e,newValue:t}:null)},n.get=function(e){return this.has(e)?this.$t(this.pt.get(e).get()):this.$t(void 0)},n.$t=function(e){return void 0!==this.dehancer?this.dehancer(e):e},n.keys=function(){return this.bt.reportObserved(),this.pt.keys()},n.values=function(){var e=this,t=this.keys();return Ot({next:function(){var n=t.next(),r=n.done;return{done:r,value:r?void 0:e.get(n.value)}}})},n.entries=function(){var e=this,t=this.keys();return Ot({next:function(){var n=t.next(),r=n.done,o=n.value;return{done:r,value:r?void 0:[o,e.get(o)]}}})},n[Un]=function(){return this.entries()},n.forEach=function(e,t){for(var n,r=E(this);!(n=r()).done;){var o=n.value;e.call(t,o[1],o[0],this)}},n.merge=function(e){var n=this;return Xn(e)&&(e=new Map(e)),qe((function(){u(e)?function(e){var t=Object.keys(e);if(!It)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter((function(t){return xt.propertyIsEnumerable.call(e,t)}))):t}(e).forEach((function(t){return n.set(t,e[t])})):Array.isArray(e)?e.forEach((function(e){return n.set(e[0],e[1])})):p(e)?(e.constructor!==Map&&t(19,e),e.forEach((function(e,t){return n.set(t,e)}))):null!=e&&t(20,e)})),this},n.clear=function(){var e=this;qe((function(){ue((function(){for(var t,n=E(e.keys());!(t=n()).done;)e.delete(t.value)}))}))},n.replace=function(e){var n=this;return qe((function(){for(var r,o=function(e){if(p(e)||Xn(e))return e;if(Array.isArray(e))return new Map(e);if(u(e)){var n=new Map;for(var r in e)n.set(r,e[r]);return n}return t(21,e)}(e),i=new Map,a=!1,s=E(n.pt.keys());!(r=s()).done;){var c=r.value;if(!o.has(c))if(n.delete(c))a=!0;else{var l=n.pt.get(c);i.set(c,l)}}for(var f,h=E(o.entries());!(f=h()).done;){var d=f.value,v=d[0],y=d[1],b=n.pt.has(v);if(n.set(v,y),n.pt.has(v)){var g=n.pt.get(v);i.set(v,g),b||(a=!0)}}if(!a)if(n.pt.size!==i.size)n.bt.reportChanged();else for(var _=n.pt.keys(),m=i.keys(),w=_.next(),O=m.next();!w.done;){if(w.value!==O.value){n.bt.reportChanged();break}w=_.next(),O=m.next()}n.pt=i})),this},n.toString=function(){return"[object ObservableMap]"},n.toJSON=function(){return Array.from(this)},n.gt=function(e){return tt(this,e)},n.At=function(e){return Ze(this,e)},m(e,[{key:"size",get:function(){return this.bt.reportObserved(),this.pt.size}},{key:Gn,get:function(){return"Map"}}]),e}(),Xn=h("ObservableMap",Wn),Jn={};Hn=Symbol.iterator,qn=Symbol.toStringTag;var Yn,Zn,Qn=function(){function e(e,n,r){void 0===n&&(n=C),void 0===r&&(r="ObservableSet"),this.tt=void 0,this[Vt]=Jn,this.pt=new Set,this.at=void 0,this.st=void 0,this.ut=void 0,this.dehancer=void 0,this.Ft=void 0,this.tt=r,i(Set)||t(22),this.at=x(this.tt),this.Ft=function(e,t){return n(e,t,r)},e&&this.replace(e)}var n=e.prototype;return n.$t=function(e){return void 0!==this.dehancer?this.dehancer(e):e},n.clear=function(){var e=this;qe((function(){ue((function(){for(var t,n=E(e.pt.values());!(t=n()).done;)e.delete(t.value)}))}))},n.forEach=function(e,t){for(var n,r=E(this);!(n=r()).done;){var o=n.value;e.call(t,o,o,this)}},n.add=function(e){var t=this;if(Ye(this)&&!Qe(this,{type:$n,object:this,newValue:e}))return this;if(!this.has(e)){qe((function(){t.pt.add(t.Ft(e,void 0)),t.at.reportChanged()}));var n=et(this);n&&nt(this,n?{observableKind:"set",debugObjectName:this.tt,type:$n,object:this,newValue:e}:null)}return this},n.delete=function(e){var t=this;if(Ye(this)&&!Qe(this,{type:"delete",object:this,oldValue:e}))return!1;if(this.has(e)){var n=et(this),r=n?{observableKind:"set",debugObjectName:this.tt,type:"delete",object:this,oldValue:e}:null;return qe((function(){t.at.reportChanged(),t.pt.delete(e)})),n&&nt(this,r),!0}return!1},n.has=function(e){return this.at.reportObserved(),this.pt.has(this.$t(e))},n.entries=function(){var e=0,t=Array.from(this.keys()),n=Array.from(this.values());return Ot({next:function(){var r=e;return e+=1,r=0&&mn.globalReactionErrorHandlers.splice(t,1)}},g.override=Gt,g.ownKeys=Ke,g.reaction=function(e,t,n){function r(){if(d=!1,!y.J){var t=!1;y.track((function(){var n=te(!1,(function(){return e(y)}));t=p||!v(s,n),u=s,s=n})),(p&&n.fireImmediately||!p&&t)&&l(s,u,y),p=!1}}var o;void 0===n&&(n=Rt);var i,a,s,u,c=null!=(o=n.name)?o:"Reaction",l=xn(c,n.onError?(i=n.onError,a=t,function(){try{return a.apply(this,arguments)}catch(e){i.call(this,e)}}):t),f=!n.scheduler&&!n.delay,h=xe(n),p=!0,d=!1,v=n.compareStructural?Ut.structural:n.equals||Ut.default,y=new wn(c,(function(){p||f?r():d||(d=!0,h(r))}),n.onError,n.requiresObservable);return y.Y(),y.Z()},g.remove=function(e,n){ft(e)?e[Vt].Gt(n):Xn(e)||er(e)?e.delete(n):ut(e)?("number"!=typeof n&&(n=parseInt(n,10)),e.splice(n,1)):t(9)},g.runInAction=Ee,g.set=function e(n,r,o){if(2!==arguments.length||er(n))ft(n)?n[Vt].dt(r,o):Xn(n)?n.set(r,o):er(n)?n.add(r):ut(n)?("number"!=typeof r&&(r=parseInt(r,10)),r<0&&t("Invalid index: '"+r+"'"),be(),r>=n.length&&(n.length=r+1),n[r]=o,ge()):t(8);else{be();var i=r;try{for(var a in i)e(n,a,i[a])}finally{ge()}}},g.spy=Se,g.toJS=function(e){return function e(t,n){if(null==t||"object"!=typeof t||t instanceof Date||!Fe(t))return t;if(ln(t)||dn(t))return e(t.get(),n);if(n.has(t))return n.get(t);if(ut(t)){var r=ze(n,t,new Array(t.length));return t.forEach((function(t,o){r[o]=e(t,n)})),r}if(er(t)){var o=ze(n,t,new Set);return t.forEach((function(t){o.add(e(t,n))})),o}if(Xn(t)){var i=ze(n,t,new Map);return t.forEach((function(t,r){i.set(r,e(t,n))})),i}var a=ze(n,t,{});return Ke(t).forEach((function(r){xt.propertyIsEnumerable.call(t,r)&&(a[r]=e(t[r],n))})),a}(e,new Map)},g.trace=$e,g.transaction=qe,g.untracked=ue,g.values=function(e){return ft(e)?Ue(e).map((function(t){return e[t]})):Xn(e)?Ue(e).map((function(t){return e.get(t)})):er(e)?Array.from(e.values()):ut(e)?e.slice():void t(6)},g.when=function(e,t,n){return 1===arguments.length||t&&"object"==typeof t?Xe(e,t):We(e,t,n||{})},g}var m,w={};function O(){if(m)return w;m=1,Object.defineProperty(w,"__esModule",{value:!0});var t={0:"Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'",1:function(e,t){return"Cannot apply '"+e+"' to '"+t.toString()+"': Field not found."},5:"'keys()' can only be used on observable objects, arrays, sets and maps",6:"'values()' can only be used on observable objects, arrays, sets and maps",7:"'entries()' can only be used on observable objects, arrays and maps",8:"'set()' can only be used on observable objects, arrays and maps",9:"'remove()' can only be used on observable objects, arrays and maps",10:"'has()' can only be used on observable objects, arrays and maps",11:"'get()' can only be used on observable objects, arrays and maps",12:"Invalid annotation",13:"Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)",14:"Intercept handlers should return nothing or a change object",15:"Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)",16:"Modification exception: the internal structure of an observable array was changed.",17:function(e,t){return"[mobx.array] Index out of bounds, "+e+" is larger than "+t},18:"mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js",19:function(e){return"Cannot initialize from classes that inherit from Map: "+e.constructor.name},20:function(e){return"Cannot initialize map from "+e},21:function(e){return"Cannot convert to map from '"+e+"'"},22:"mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js",23:"It is not possible to get index atoms from arrays",24:function(e){return"Cannot obtain administration from "+e},25:function(e,t){return"the entry '"+e+"' does not exist in the observable map '"+t+"'"},26:"please specify a property",27:function(e,t){return"no observable property '"+e.toString()+"' found on the observable object '"+t+"'"},28:function(e){return"Cannot obtain atom from "+e},29:"Expecting some object",30:"invalid action stack. did you forget to finish an action?",31:"missing option for computed: get",32:function(e,t){return"Cycle detected in computation "+e+": "+t},33:function(e){return"The setter of computed value '"+e+"' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?"},34:function(e){return"[ComputedValue '"+e+"'] It is not possible to assign a new value to a computed value."},35:"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`",36:"isolateGlobalState should be called before MobX is running any reactions",37:function(e){return"[mobx] `observableArray."+e+"()` mutates the array in-place, which is not allowed inside a derivation. Use `array.slice()."+e+"()` instead"},38:"'ownKeys()' can only be used on observable objects",39:"'defineProperty()' can only be used on observable objects"};function n(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;oe.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var z=Symbol("mobx-stored-annotations");function $(e){return Object.assign((function(t,n){H(t,n,e)}),e)}function H(e,t,r){(I(e,z)||E(e,z,V({},e[z])),ne(r)&&!I(e[z],t))&&n("'"+(e.constructor.name+".prototype."+t.toString())+"' is decorated with 'override', but no such decorated member was found on prototype.");!function(e,t,r){if(!ne(t)&&I(e[z],r)){var o=e.constructor.name+".prototype."+r.toString(),i=e[z][r].annotationType_;n("Cannot apply '@"+t.annotationType_+"' to '"+o+"':\nThe field is already decorated with '@"+i+"'.\nRe-decorating fields is not allowed.\nUse '@override' decorator for methods overridden by subclass.")}}(e,r,t),ne(r)||(e[z][t]=r)}var q=Symbol("mobx administration"),W=function(){function e(e){void 0===e&&(e="Atom@"+v()),this.name_=void 0,this.isPendingUnobservation_=!1,this.isBeingObserved_=!1,this.observers_=new Set,this.diffValue_=0,this.lastAccessedBy_=0,this.lowestObserverState_=Ze.NOT_TRACKING_,this.onBOL=void 0,this.onBUOL=void 0,this.name_=e}var t=e.prototype;return t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.reportObserved=function(){return At(this)},t.reportChanged=function(){Ot(),Et(this),gt.stateVersion=gt.stateVersion0;gt.allowStateChanges||!t&&"always"!==gt.enforceActions||console.warn("[MobX] "+(gt.enforceActions?"Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: ":"Side effects like changing state are not allowed at this point. Are you trying to modify state from, for example, a computed value or the render function of a React component? You can wrap side effects in 'runInAction' (or decorate functions with 'action') if needed. Tried to modify: ")+e.name_)}function at(e,t,n){var r=ft(!0);pt(e),e.newObserving_=new Array(e.observing_.length+100),e.unboundDepsCount_=0,e.runId_=++gt.runId;var o,i=gt.trackingDerivation;if(gt.trackingDerivation=e,gt.inBatch++,!0===gt.disableErrorBoundaries)o=t.call(n);else try{o=t.call(n)}catch(e){o=new nt(e)}return gt.inBatch--,gt.trackingDerivation=i,function(e){for(var t=e.observing_,n=e.observing_=e.newObserving_,r=Ze.UP_TO_DATE_,o=0,i=e.unboundDepsCount_,a=0;ar&&(r=s.dependenciesState_)}n.length=o,e.newObserving_=null,i=t.length;for(;i--;){var u=t[i];0===u.diffValue_&&mt(u,e),u.diffValue_=0}for(;o--;){var c=n[o];1===c.diffValue_&&(c.diffValue_=0,_t(c,e))}r!==Ze.UP_TO_DATE_&&(e.dependenciesState_=r,e.onBecomeStale_())}(e),function(e){if(0!==e.observing_.length)return;("boolean"==typeof e.requiresObservable_?e.requiresObservable_:gt.reactionRequiresObservable)&&console.warn("[mobx] Derivation '"+e.name_+"' is created/updated without reading any observable value.")}(e),ht(r),o}function st(e){var t=e.observing_;e.observing_=[];for(var n=t.length;n--;)mt(t[n],e);e.dependenciesState_=Ze.NOT_TRACKING_}function ut(e){var t=ct();try{return e()}finally{lt(t)}}function ct(){var e=gt.trackingDerivation;return gt.trackingDerivation=null,e}function lt(e){gt.trackingDerivation=e}function ft(e){var t=gt.allowStateReads;return gt.allowStateReads=e,t}function ht(e){gt.allowStateReads=e}function pt(e){if(e.dependenciesState_!==Ze.UP_TO_DATE_){e.dependenciesState_=Ze.UP_TO_DATE_;for(var t=e.observing_,n=t.length;n--;)t[n].lowestObserverState_=Ze.UP_TO_DATE_}}var dt=["mobxGuid","spyListeners","enforceActions","computedRequiresReaction","reactionRequiresObservable","observableRequiresReaction","allowStateReads","disableErrorBoundaries","runId","UNCHANGED","useProxies"],vt=function(){this.version=6,this.UNCHANGED={},this.trackingDerivation=null,this.trackingContext=null,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!1,this.allowStateReads=!0,this.enforceActions=!0,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1,this.useProxies=!0,this.verifyProxies=!1,this.safeDescriptors=!0,this.stateVersion=Number.MIN_SAFE_INTEGER},yt=!0,bt=!1,gt=function(){var e=o();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(yt=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==(new vt).version&&(yt=!1),yt?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new vt):(setTimeout((function(){bt||n(35)}),1),new vt)}();function _t(e,t){e.observers_.add(t),e.lowestObserverState_>t.dependenciesState_&&(e.lowestObserverState_=t.dependenciesState_)}function mt(e,t){e.observers_.delete(t),0===e.observers_.size&&wt(e)}function wt(e){!1===e.isPendingUnobservation_&&(e.isPendingUnobservation_=!0,gt.pendingUnobservations.push(e))}function Ot(){gt.inBatch++}function St(){if(0==--gt.inBatch){Rt();for(var e=gt.pendingUnobservations,t=0;t0&&wt(e),!1)}function Et(e){e.lowestObserverState_!==Ze.STALE_&&(e.lowestObserverState_=Ze.STALE_,e.observers_.forEach((function(t){t.dependenciesState_===Ze.UP_TO_DATE_&&(t.isTracing_!==Qe.NONE&&jt(t,e),t.onBecomeStale_()),t.dependenciesState_=Ze.STALE_})))}function jt(e,t){if(console.log("[mobx.trace] '"+e.name_+"' is invalidated due to a change in: '"+t.name_+"'"),e.isTracing_===Qe.BREAK){var n=[];kt(an(e),n,1),new Function("debugger;\n/*\nTracing '"+e.name_+"'\n\nYou are entering this break point because derivation '"+e.name_+"' is being traced and '"+t.name_+"' is now forcing it to update.\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\n\n"+(e instanceof et?e.derivation.toString().replace(/[*]\//g,"/"):"")+"\n\nThe dependencies for this derivation are:\n\n"+n.join("\n")+"\n*/\n ")()}}function kt(e,t,n){t.length>=1e3?t.push("(and many more)"):(t.push(""+"\t".repeat(n-1)+e.name),e.dependencies&&e.dependencies.forEach((function(e){return kt(e,t,n+1)})))}var xt=function(){function e(e,t,n,r){void 0===e&&(e="Reaction@"+v()),this.name_=void 0,this.onInvalidate_=void 0,this.errorHandler_=void 0,this.requiresObservable_=void 0,this.observing_=[],this.newObserving_=[],this.dependenciesState_=Ze.NOT_TRACKING_,this.diffValue_=0,this.runId_=0,this.unboundDepsCount_=0,this.isDisposed_=!1,this.isScheduled_=!1,this.isTrackPending_=!1,this.isRunning_=!1,this.isTracing_=Qe.NONE,this.name_=e,this.onInvalidate_=t,this.errorHandler_=n,this.requiresObservable_=r}var t=e.prototype;return t.onBecomeStale_=function(){this.schedule_()},t.schedule_=function(){this.isScheduled_||(this.isScheduled_=!0,gt.pendingReactions.push(this),Rt())},t.isScheduled=function(){return this.isScheduled_},t.runReaction_=function(){if(!this.isDisposed_){Ot(),this.isScheduled_=!1;var e=gt.trackingContext;if(gt.trackingContext=this,ot(this)){this.isTrackPending_=!0;try{this.onInvalidate_(),this.isTrackPending_&&Mt()&&It({name:this.name_,type:"scheduled-reaction"})}catch(e){this.reportExceptionInDerivation_(e)}}gt.trackingContext=e,St()}},t.track=function(e){if(!this.isDisposed_){Ot();var t,n=Mt();n&&(t=Date.now(),Nt({name:this.name_,type:"reaction"})),this.isRunning_=!0;var r=gt.trackingContext;gt.trackingContext=this;var o=at(this,e,void 0);gt.trackingContext=r,this.isRunning_=!1,this.isTrackPending_=!1,this.isDisposed_&&st(this),rt(o)&&this.reportExceptionInDerivation_(o.cause),n&&Lt({time:Date.now()-t}),St()}},t.reportExceptionInDerivation_=function(e){var t=this;if(this.errorHandler_)this.errorHandler_(e,this);else{if(gt.disableErrorBoundaries)throw e;var n="[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '"+this+"'";gt.suppressReactionErrors?console.warn("[mobx] (error in reaction '"+this.name_+"' suppressed, fix error of causing action below)"):console.error(n,e),Mt()&&It({type:"error",name:this.name_,message:n,error:""+e}),gt.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},t.dispose=function(){this.isDisposed_||(this.isDisposed_=!0,this.isRunning_||(Ot(),st(this),St()))},t.getDisposer_=function(){var e=this.dispose.bind(this);return e[q]=this,e},t.toString=function(){return"Reaction["+this.name_+"]"},t.trace=function(e){void 0===e&&(e=!1),An(this,e)},e}();var Ct=function(e){return e()};function Rt(){gt.inBatch>0||gt.isRunningReactions||Ct(Pt)}function Pt(){gt.isRunningReactions=!0;for(var e=gt.pendingReactions,t=0;e.length>0;){100==++t&&(console.error("Reaction doesn't converge to a stable state after 100 iterations. Probably there is a cycle in the reactive function: "+e[0]),e.splice(0));for(var n=e.splice(0),r=0,o=n.length;r4&&n("'extendObservable' expected 2-4 arguments"),"object"!=typeof e&&n("'extendObservable' expects an object as first argument"),or(e)&&n("'extendObservable' should not be used on maps, use map.merge instead"),S(t)||n("'extendObservable' only accepts plain objects as second argument"),(gn(t)||gn(r))&&n("Extending an object with another observable (object) is not supported");var i=N(t),a=fr(e,o)[q];Ot();try{P(i).forEach((function(e){a.extend_(e,i[e],!r||(!(e in r)||r[e]))}))}finally{St()}return e}function an(e,t){return sn(kr(e,t))}function sn(e){var t,n={name:e.name_};return e.observing_&&e.observing_.length>0&&(n.dependencies=(t=e.observing_,Array.from(new Set(t))).map(sn)),n}function un(e){var t={name:e.name_};return function(e){return e.observers_&&e.observers_.size>0}(e)&&(t.observers=Array.from(function(e){return e.observers_}(e)).map(un)),t}var cn=0;function ln(){this.message="FLOW_CANCELLED"}ln.prototype=Object.create(Error.prototype);var fn=se("flow"),hn=se("flow.bound",{bound:!0}),pn=Object.assign((function(e,t){if(_(t))return H(e,t,fn);1!==arguments.length&&n("Flow expects single argument with generator function");var r=e,o=r.name||"",i=function(){var e,t=this,n=arguments,i=++cn,a=qt(o+" - runid: "+i+" - init",r).apply(t,n),s=void 0,u=new Promise((function(t,n){var r=0;function u(e){var t;s=void 0;try{t=qt(o+" - runid: "+i+" - yield "+r++,a.next).call(a,e)}catch(e){return n(e)}l(t)}function c(e){var t;s=void 0;try{t=qt(o+" - runid: "+i+" - yield "+r++,a.throw).call(a,e)}catch(e){return n(e)}l(t)}function l(e){if(!g(null==e?void 0:e.then))return e.done?t(e.value):(s=Promise.resolve(e.value)).then(u,c);e.then(l,n)}e=n,u(void 0)}));return u.cancel=qt(o+" - runid: "+i+" - cancel",(function(){try{s&&dn(s);var t=a.return(void 0),n=Promise.resolve(t.value);n.then(b,b),dn(n),e(new ln)}catch(t){e(t)}})),u};return i.isMobXFlow=!0,i}),fn);function dn(e){g(e.cancel)&&e.cancel()}function vn(e){return!0===(null==e?void 0:e.isMobXFlow)}function yn(e,t){if(void 0===t)return tt(e);if(!1===dr(e))return!1;if(!e[q].values_.has(t))return!1;var n=kr(e,t);return tt(n)}function bn(e,t){return!!e&&(void 0!==t?or(e)||Yn(e)?n("isObservable(object, propertyName) is not supported for arrays and maps. Use map.has or array.length instead."):!!dr(e)&&e[q].values_.has(t):dr(e)||!!e[q]||X(e)||Tt(e)||tt(e))}function gn(e){return 1!==arguments.length&&n("isObservable expects only 1 argument. Use isObservableProp to inspect the observability of a property"),bn(e)}function _n(e){return dr(e)?e[q].keys_():or(e)||sr(e)?Array.from(e.keys()):Yn(e)?e.map((function(e,t){return t})):void n(5)}function mn(e,t){return dr(e)?e[q].has_(t):or(e)||sr(e)?e.has(t):Yn(e)?t>=0&&t0}function Tn(e,t){var n=e.interceptors_||(e.interceptors_=[]);return n.push(t),y((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function Mn(e,t){var r=ct();try{for(var o=[].concat(e.interceptors_||[]),i=0,a=o.length;i0}function Nn(e,t){var n=e.changeListeners_||(e.changeListeners_=[]);return n.push(t),y((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function Dn(e,t){var n=ct(),r=e.changeListeners_;if(r){for(var o=0,i=(r=r.slice()).length;o0?e.map(this.dehancer):e},t.intercept_=function(e){return Tn(this,e)},t.observe_=function(e,t){return void 0===t&&(t=!1),t&&e({observableKind:"array",object:this.proxy_,debugObjectName:this.atom_.name_,type:"splice",index:0,added:this.values_.slice(),addedCount:this.values_.length,removed:[],removedCount:0}),Nn(this,e)},t.getArrayLength_=function(){return this.atom_.reportObserved(),this.values_.length},t.setArrayLength_=function(e){("number"!=typeof e||isNaN(e)||e<0)&&n("Out of range: "+e);var t=this.values_.length;if(e!==t)if(e>t){for(var r=new Array(e-t),o=0;o0&&Er(e+t+1)},t.spliceWithArray_=function(e,t,n){var r=this;it(this.atom_);var o=this.values_.length;if(void 0===e?e=0:e>o?e=o:e<0&&(e=Math.max(0,o+e)),t=1===arguments.length?o-e:null==t?0:Math.max(0,Math.min(t,o-e)),void 0===n&&(n=c),Pn(this)){var i=Mn(this,{object:this.proxy_,type:Vn,index:e,removedCount:t,added:n});if(!i)return c;t=i.removedCount,n=i.added}n=0===n.length?n:n.map((function(e){return r.enhancer_(e,void 0)})),this.legacyMode_;var a=n.length-t;this.updateArrayLength_(o,a);var s=this.spliceItemsIntoValues_(e,t,n);return 0===t&&0===n.length||this.notifyArraySplice_(e,n,s),this.dehanceValues_(s)},t.spliceItemsIntoValues_=function(e,t,n){var r;if(n.length<1e4)return(r=this.values_).splice.apply(r,[e,t].concat(n));var o=this.values_.slice(e,e+t),i=this.values_.slice(e+t);this.values_.length+=n.length-t;for(var a=0;a=this.values_.length))return this.atom_.reportObserved(),this.dehanceValue_(this.values_[e]);console.warn("[mobx.array] Attempt to read an array index ("+e+") that is out of bounds ("+this.values_.length+"). Please check length first. Out of bound indices will not be tracked by MobX")},t.set_=function(e,t){var r=this.values_;if(this.legacyMode_&&e>r.length&&n(17,e,r.length),e2?n-2:0),o=2;o-1&&(this.splice(n,1),!0)}};function zn(e,t){"function"==typeof Array.prototype[e]&&(Kn[e]=t(e))}function $n(e){return function(){var t=this[q];t.atom_.reportObserved();var n=t.dehanceValues_(t.values_);return n[e].apply(n,arguments)}}function Hn(e){return function(t,n){var r=this,o=this[q];return o.atom_.reportObserved(),o.dehanceValues_(o.values_)[e]((function(e,o){return t.call(n,e,o,r)}))}}function qn(e){return function(){var t=this,n=this[q];n.atom_.reportObserved();var r=n.dehanceValues_(n.values_),o=arguments[0];return arguments[0]=function(e,n,r){return o(e,n,r,t)},r[e].apply(r,arguments)}}zn("concat",$n),zn("flat",$n),zn("includes",$n),zn("indexOf",$n),zn("join",$n),zn("lastIndexOf",$n),zn("slice",$n),zn("toString",$n),zn("toLocaleString",$n),zn("every",Hn),zn("filter",Hn),zn("find",Hn),zn("findIndex",Hn),zn("flatMap",Hn),zn("forEach",Hn),zn("map",Hn),zn("some",Hn),zn("reduce",qn),zn("reduceRight",qn);var Wn,Xn,Jn=k("ObservableArrayAdministration",Un);function Yn(e){return O(e)&&Jn(e[q])}var Zn={},Qn="add",er="delete";Wn=Symbol.iterator,Xn=Symbol.toStringTag;var tr,nr,rr=function(){function e(e,t,r){var o=this;void 0===t&&(t=Z),void 0===r&&(r="ObservableMap@"+v()),this.enhancer_=void 0,this.name_=void 0,this[q]=Zn,this.data_=void 0,this.hasMap_=void 0,this.keysAtom_=void 0,this.interceptors_=void 0,this.changeListeners_=void 0,this.dehancer=void 0,this.enhancer_=t,this.name_=r,g(Map)||n(18),this.keysAtom_=J(this.name_+".keys()"),this.data_=new Map,this.hasMap_=new Map,He(!0,(function(){o.merge(e)}))}var t=e.prototype;return t.has_=function(e){return this.data_.has(e)},t.has=function(e){var t=this;if(!gt.trackingDerivation)return this.has_(e);var n=this.hasMap_.get(e);if(!n){var r=n=new Je(this.has_(e),Q,this.name_+"."+T(e)+"?",!1);this.hasMap_.set(e,r),tn(r,(function(){return t.hasMap_.delete(e)}))}return n.get()},t.set=function(e,t){var n=this.has_(e);if(Pn(this)){var r=Mn(this,{type:n?Bn:Qn,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.updateValue_(e,t):this.addValue_(e,t),this},t.delete=function(e){var t=this;if((it(this.keysAtom_),Pn(this))&&!Mn(this,{type:er,object:this,name:e}))return!1;if(this.has_(e)){var n=Mt(),r=In(this),o=r||n?{observableKind:"map",debugObjectName:this.name_,type:er,object:this,oldValue:this.data_.get(e).value_,name:e}:null;return n&&Nt(o),jn((function(){var n;t.keysAtom_.reportChanged(),null==(n=t.hasMap_.get(e))||n.setNewValue_(!1),t.data_.get(e).setNewValue_(void 0),t.data_.delete(e)})),r&&Dn(this,o),n&&Lt(),!0}return!1},t.updateValue_=function(e,t){var n=this.data_.get(e);if((t=n.prepareNewValue_(t))!==gt.UNCHANGED){var r=Mt(),o=In(this),i=o||r?{observableKind:"map",debugObjectName:this.name_,type:Bn,object:this,oldValue:n.value_,name:e,newValue:t}:null;r&&Nt(i),n.setNewValue_(t),o&&Dn(this,i),r&&Lt()}},t.addValue_=function(e,t){var n=this;it(this.keysAtom_),jn((function(){var r,o=new Je(t,n.enhancer_,n.name_+"."+T(e),!1);n.data_.set(e,o),t=o.value_,null==(r=n.hasMap_.get(e))||r.setNewValue_(!0),n.keysAtom_.reportChanged()}));var r=Mt(),o=In(this),i=o||r?{observableKind:"map",debugObjectName:this.name_,type:Qn,object:this,name:e,newValue:t}:null;r&&Nt(i),o&&Dn(this,i),r&&Lt()},t.get=function(e){return this.has(e)?this.dehanceValue_(this.data_.get(e).get()):this.dehanceValue_(void 0)},t.dehanceValue_=function(e){return void 0!==this.dehancer?this.dehancer(e):e},t.keys=function(){return this.keysAtom_.reportObserved(),this.data_.keys()},t.values=function(){var e=this,t=this.keys();return Ir({next:function(){var n=t.next(),r=n.done,o=n.value;return{done:r,value:r?void 0:e.get(o)}}})},t.entries=function(){var e=this,t=this.keys();return Ir({next:function(){var n=t.next(),r=n.done,o=n.value;return{done:r,value:r?void 0:[o,e.get(o)]}}})},t[Wn]=function(){return this.entries()},t.forEach=function(e,t){for(var n,r=K(this);!(n=r()).done;){var o=n.value,i=o[0],a=o[1];e.call(t,a,i,this)}},t.merge=function(e){var t=this;return or(e)&&(e=new Map(e)),jn((function(){S(e)?function(e){var t=Object.keys(e);if(!R)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter((function(t){return u.propertyIsEnumerable.call(e,t)}))):t}(e).forEach((function(n){return t.set(n,e[n])})):Array.isArray(e)?e.forEach((function(e){var n=e[0],r=e[1];return t.set(n,r)})):x(e)?(e.constructor!==Map&&n(19,e),e.forEach((function(e,n){return t.set(n,e)}))):null!=e&&n(20,e)})),this},t.clear=function(){var e=this;jn((function(){ut((function(){for(var t,n=K(e.keys());!(t=n()).done;){var r=t.value;e.delete(r)}}))}))},t.replace=function(e){var t=this;return jn((function(){for(var r,o=function(e){if(x(e)||or(e))return e;if(Array.isArray(e))return new Map(e);if(S(e)){var t=new Map;for(var r in e)t.set(r,e[r]);return t}return n(21,e)}(e),i=new Map,a=!1,s=K(t.data_.keys());!(r=s()).done;){var u=r.value;if(!o.has(u))if(t.delete(u))a=!0;else{var c=t.data_.get(u);i.set(u,c)}}for(var l,f=K(o.entries());!(l=f()).done;){var h=l.value,p=h[0],d=h[1],v=t.data_.has(p);if(t.set(p,d),t.data_.has(p)){var y=t.data_.get(p);i.set(p,y),v||(a=!0)}}if(!a)if(t.data_.size!==i.size)t.keysAtom_.reportChanged();else for(var b=t.data_.keys(),g=i.keys(),_=b.next(),m=g.next();!_.done;){if(_.value!==m.value){t.keysAtom_.reportChanged();break}_=b.next(),m=g.next()}t.data_=i})),this},t.toString=function(){return"[object ObservableMap]"},t.toJSON=function(){return Array.from(this)},t.observe_=function(e,t){return!0===t&&n("`observe` doesn't support fireImmediately=true in combination with maps."),Nn(this,e)},t.intercept_=function(e){return Tn(this,e)},L(e,[{key:"size",get:function(){return this.keysAtom_.reportObserved(),this.data_.size}},{key:Xn,get:function(){return"Map"}}]),e}(),or=k("ObservableMap",rr);var ir={};tr=Symbol.iterator,nr=Symbol.toStringTag;var ar=function(){function e(e,t,r){void 0===t&&(t=Z),void 0===r&&(r="ObservableSet@"+v()),this.name_=void 0,this[q]=ir,this.data_=new Set,this.atom_=void 0,this.changeListeners_=void 0,this.interceptors_=void 0,this.dehancer=void 0,this.enhancer_=void 0,this.name_=r,g(Set)||n(22),this.atom_=J(this.name_),this.enhancer_=function(e,n){return t(e,n,r)},e&&this.replace(e)}var t=e.prototype;return t.dehanceValue_=function(e){return void 0!==this.dehancer?this.dehancer(e):e},t.clear=function(){var e=this;jn((function(){ut((function(){for(var t,n=K(e.data_.values());!(t=n()).done;){var r=t.value;e.delete(r)}}))}))},t.forEach=function(e,t){for(var n,r=K(this);!(n=r()).done;){var o=n.value;e.call(t,o,o,this)}},t.add=function(e){var t=this;if((it(this.atom_),Pn(this))&&!Mn(this,{type:Qn,object:this,newValue:e}))return this;if(!this.has(e)){jn((function(){t.data_.add(t.enhancer_(e,void 0)),t.atom_.reportChanged()}));var n=Mt(),r=In(this),o=r||n?{observableKind:"set",debugObjectName:this.name_,type:Qn,object:this,newValue:e}:null;n&&Nt(o),r&&Dn(this,o),n&&Lt()}return this},t.delete=function(e){var t=this;if(Pn(this)&&!Mn(this,{type:er,object:this,oldValue:e}))return!1;if(this.has(e)){var n=Mt(),r=In(this),o=r||n?{observableKind:"set",debugObjectName:this.name_,type:er,object:this,oldValue:e}:null;return n&&Nt(o),jn((function(){t.atom_.reportChanged(),t.data_.delete(e)})),r&&Dn(this,o),n&&Lt(),!0}return!1},t.has=function(e){return this.atom_.reportObserved(),this.data_.has(this.dehanceValue_(e))},t.entries=function(){var e=0,t=Array.from(this.keys()),n=Array.from(this.values());return Ir({next:function(){var r=e;return e+=1,rmr){for(var t=mr;t=0&&n++}e=Mr(e),t=Mr(t);var s="[object Array]"===a;if(!s){if("object"!=typeof e||"object"!=typeof t)return!1;var u=e.constructor,c=t.constructor;if(u!==c&&!(g(u)&&u instanceof u&&g(c)&&c instanceof c)&&"constructor"in e&&"constructor"in t)return!1}if(0===n)return!1;n<0&&(n=-1),o=o||[];for(var l=(r=r||[]).length;l--;)if(r[l]===e)return o[l]===t;if(r.push(e),o.push(t),s){if((l=e.length)!==t.length)return!1;for(;l--;)if(!Tr(e[l],t[l],n-1,r,o))return!1}else{var f,h=Object.keys(e);if(l=h.length,Object.keys(t).length!==l)return!1;for(;l--;)if(!I(t,f=h[l])||!Tr(e[f],t[f],n-1,r,o))return!1}return r.pop(),o.pop(),!0}function Mr(e){return Yn(e)?e.slice():x(e)||or(e)||C(e)||sr(e)?Array.from(e.entries()):e}function Ir(e){return e[Symbol.iterator]=Nr,e}function Nr(){return this}function Dr(e){return e instanceof Object&&"string"==typeof e.annotationType_&&g(e.make_)&&g(e.extend_)}return["Symbol","Map","Set"].forEach((function(e){void 0===o()[e]&&n("MobX requires global '"+e+"' to be available or polyfilled")})),"object"==typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:Vt,extras:{getDebugName:Cr},$mobx:q}),w.$mobx=q,w.FlowCancellationError=ln,w.ObservableMap=rr,w.ObservableSet=ar,w.Reaction=xt,w._allowStateChanges=He,w._allowStateChangesInsideComputed=Xt,w._allowStateReadsEnd=ht,w._allowStateReadsStart=ft,w._autoAction=Wt,w._endAction=$e,w._getAdministration=xr,w._getGlobalState=function(){return gt},w._interceptReads=function(e,t,r){var o;if(or(e)||Yn(e)||Ye(e))o=xr(e);else{if(!dr(e))return n("Expected observable map, object or array as first array");if(!_(t))return n("InterceptReads can only be used with a specific property, not with an object in general");o=xr(e,t)}return void 0!==o.dehancer?n("An intercept reader was already established"):(o.dehancer="function"==typeof t?t:r,function(){o.dehancer=void 0})},w._isComputingDerivation=function(){return null!==gt.trackingDerivation},w._resetGlobalState=function(){var e=new vt;for(var t in e)-1===dt.indexOf(t)&&(gt[t]=e[t]);gt.allowStateChanges=!gt.enforceActions},w._startAction=ze,w.action=qt,w.autorun=Yt,w.comparer=Y,w.computed=De,w.configure=function(e){!0===e.isolateGlobalState&&function(){if((gt.pendingReactions.length||gt.inBatch||gt.isRunningReactions)&&n(36),bt=!0,yt){var e=o();0==--e.__mobxInstanceCount&&(e.__mobxGlobals=void 0),gt=new vt}}();var t,r,i=e.useProxies,a=e.enforceActions;if(void 0!==i&&(gt.useProxies=i===rn||"never"!==i&&"undefined"!=typeof Proxy),"ifavailable"===i&&(gt.verifyProxies=!0),void 0!==a){var s=a===rn?rn:"observed"===a;gt.enforceActions=s,gt.allowStateChanges=!0!==s&&s!==rn}["computedRequiresReaction","reactionRequiresObservable","observableRequiresReaction","disableErrorBoundaries","safeDescriptors"].forEach((function(t){t in e&&(gt[t]=!!e[t])})),gt.allowStateReads=!gt.observableRequiresReaction,!0===gt.disableErrorBoundaries&&console.warn("WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled."),e.reactionScheduler&&(t=e.reactionScheduler,r=Ct,Ct=function(e){return t((function(){return r(e)}))})},w.createAtom=J,w.defineProperty=function(e,t,r){if(dr(e))return e[q].defineProperty_(t,r);n(39)},w.entries=function(e){return dr(e)?_n(e).map((function(t){return[t,e[t]]})):or(e)?_n(e).map((function(t){return[t,e.get(t)]})):sr(e)?Array.from(e.entries()):Yn(e)?e.map((function(e,t){return[t,e]})):void n(7)},w.extendObservable=on,w.flow=pn,w.flowResult=function(e){return e},w.get=function(e,t){if(mn(e,t))return dr(e)?e[q].get_(t):or(e)?e.get(t):Yn(e)?e[t]:void n(11)},w.getAtom=kr,w.getDebugName=Cr,w.getDependencyTree=an,w.getObserverTree=function(e,t){return un(kr(e,t))},w.has=mn,w.intercept=function(e,t,n){return g(n)?function(e,t,n){return xr(e,t).intercept_(n)}(e,t,n):function(e,t){return xr(e).intercept_(t)}(e,t)},w.isAction=Jt,w.isBoxedObservable=Ye,w.isComputed=function(e){return arguments.length>1?n("isComputed expects only 1 argument. Use isComputedProp to inspect the observability of a property"):yn(e)},w.isComputedProp=function(e,t){return _(t)?yn(e,t):n("isComputed expected a property name as second argument")},w.isFlow=vn,w.isFlowCancellationError=function(e){return e instanceof ln},w.isObservable=gn,w.isObservableArray=Yn,w.isObservableMap=or,w.isObservableObject=dr,w.isObservableProp=function(e,t){return _(t)?bn(e,t):n("expected a property name as second argument")},w.isObservableSet=sr,w.keys=_n,w.makeAutoObservable=function(e,t,r){if(S(e)||S(Object.getPrototypeOf(e))||n("'makeAutoObservable' can only be used for classes that don't have a superclass"),dr(e)&&n("makeAutoObservable can only be used on objects not already made observable"),S(e))return on(e,e,t,r);var o=fr(e,r)[q];if(!e[Ln]){var i=Object.getPrototypeOf(e),a=new Set([].concat(P(e),P(i)));a.delete("constructor"),a.delete(q),E(i,Ln,a)}Ot();try{e[Ln].forEach((function(e){return o.make_(e,!t||(!(e in t)||t[e]))}))}finally{St()}return e},w.makeObservable=function(e,t,r){var o=fr(e,r)[q];Ot();try{t&&e[z]&&n("makeObservable second arg must be nullish when using decorators. Mixing @decorator syntax with annotations is not supported."),null!=t||(t=function(e){return I(e,z)||(e[z]||n("No annotations were passed to makeObservable, but no decorated members have been found either"),E(e,z,V({},e[z]))),e[z]}(e)),P(t).forEach((function(e){return o.make_(e,t[e])}))}finally{St()}return e},w.observable=Te,w.observe=function(e,t,n,r){return g(n)?function(e,t,n,r){return xr(e,t).observe_(n,r)}(e,t,n,r):function(e,t,n){return xr(e).observe_(t,n)}(e,t,n)},w.onBecomeObserved=en,w.onBecomeUnobserved=tn,w.onReactionError=function(e){return gt.globalReactionErrorHandlers.push(e),function(){var t=gt.globalReactionErrorHandlers.indexOf(e);t>=0&>.globalReactionErrorHandlers.splice(t,1)}},w.override=te,w.ownKeys=wn,w.reaction=function(e,t,r){var o;void 0===r&&(r=l),g(e)&&g(t)||n("First and second argument to reaction should be functions"),S(r)||n("Third argument of reactions should be an object");var i,a,s,u,c=null!=(o=r.name)?o:"Reaction@"+v(),f=qt(c,r.onError?(i=r.onError,a=t,function(){try{return a.apply(this,arguments)}catch(e){i.call(this,e)}}):t),h=!r.scheduler&&!r.delay,p=Qt(r),d=!0,y=!1,b=r.compareStructural?Y.structural:r.equals||Y.default,_=new xt(c,(function(){d||h?m():y||(y=!0,p(m))}),r.onError,r.requiresObservable);function m(){if(y=!1,!_.isDisposed_){var t=!1;_.track((function(){var n=He(!1,(function(){return e(_)}));t=d||!b(s,n),u=s,s=n})),(d&&r.fireImmediately||!d&&t)&&f(s,u,_),d=!1}}return _.schedule_(),_.getDisposer_()},w.remove=function(e,t){dr(e)?e[q].delete_(t):or(e)||sr(e)?e.delete(t):Yn(e)?("number"!=typeof t&&(t=parseInt(t,10)),e.splice(t,1)):n(9)},w.runInAction=Xt,w.set=function e(t,r,o){if(2!==arguments.length||sr(t))dr(t)?t[q].set_(r,o):or(t)?t.set(r,o):sr(t)?t.add(r):Yn(t)?("number"!=typeof r&&(r=parseInt(r,10)),r<0&&n("Invalid index: '"+r+"'"),Ot(),r>=t.length&&(t.length=r+1),t[r]=o,St()):n(8);else{Ot();var i=r;try{for(var a in i)e(t,a,i[a])}finally{St()}}},w.spy=Vt,w.toJS=function(e,t){return t&&n("toJS no longer supports options"),Sn(e,new Map)},w.trace=An,w.transaction=jn,w.untracked=ut,w.values=function(e){return dr(e)?_n(e).map((function(t){return e[t]})):or(e)?_n(e).map((function(t){return e.get(t)})):sr(e)?Array.from(e.values()):Yn(e)?e.slice():void n(6)},w.when=function(e,t,n){return 1===arguments.length||t&&"object"==typeof t?xn(e,t):kn(e,t,n||{})},w}!function(e){"production"===process.env.NODE_ENV?e.exports=_():e.exports=O()}({get exports(){return b},set exports(e){b=e}});var S=y.createContext(void 0);function A(){return o.Mark("mark-as-mobx-observable",!0)}function E(e){var t=s.useRef();if(!t.current){var n=new o.ApplicationContext;"function"==typeof e.callback&&e.callback(n),n.registerInstAwareProcessor(function(){function e(){}return e.prototype.afterInstantiation=function(e){return n.getClassMetadata(e.constructor).getCtorMarkInfo()["mark-as-mobx-observable"]&&b.makeObservable(e),e},e}()),t.current=n}return y.createElement(S.Provider,{value:t.current},e.children)}function j(e){var t=s.useContext(S);if(!t)throw new Error(" has not been applied to the component.");return t.getInstance(e)}export{E as IoC,A as Observable,j as useService}; +import{Mark as r,ApplicationContext as t}from"@vgerbot/ioc";export*from"@vgerbot/ioc";import e,{useRef as o,useContext as n}from"react";import{makeObservable as a}from"mobx";var c=e.createContext(void 0);function i(){return r("mark-as-mobx-observable",!0)}function u(r){var n=o();if(!n.current){var i=new t;"function"==typeof r.callback&&r.callback(i),i.registerInstAwareProcessor(function(){function r(){}return r.prototype.afterInstantiation=function(r){return i.getClassMetadata(r.constructor).getCtorMarkInfo()["mark-as-mobx-observable"]&&a(r),r},r}()),n.current=i}return e.createElement(c.Provider,{value:n.current},r.children)}function f(r){var t=n(c);if(!t)throw new Error(" has not been applied to the component.");return t.getInstance(r)}export{u as IoC,i as Observable,f as useService}; //# sourceMappingURL=index.esm.js.map diff --git a/dist/index.esm.js.map b/dist/index.esm.js.map index 1f48334..46657aa 100644 --- a/dist/index.esm.js.map +++ b/dist/index.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"index.esm.js","sources":["../node_modules/@vgerbot/ioc/node_modules/minimist/index.js","../node_modules/@vgerbot/ioc/dist/index.cjs.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/cjs/react.development.js","../node_modules/react/index.js","../node_modules/mobx/dist/mobx.cjs.production.min.js","../node_modules/mobx/dist/mobx.cjs.development.js","../node_modules/mobx/dist/index.js","../src/index.ts"],"sourcesContent":["'use strict';\n\nfunction hasKey(obj, keys) {\n\tvar o = obj;\n\tkeys.slice(0, -1).forEach(function (key) {\n\t\to = o[key] || {};\n\t});\n\n\tvar key = keys[keys.length - 1];\n\treturn key in o;\n}\n\nfunction isNumber(x) {\n\tif (typeof x === 'number') { return true; }\n\tif ((/^0x[0-9a-f]+$/i).test(x)) { return true; }\n\treturn (/^[-+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(e[-+]?\\d+)?$/).test(x);\n}\n\nfunction isConstructorOrProto(obj, key) {\n\treturn (key === 'constructor' && typeof obj[key] === 'function') || key === '__proto__';\n}\n\nmodule.exports = function (args, opts) {\n\tif (!opts) { opts = {}; }\n\n\tvar flags = {\n\t\tbools: {},\n\t\tstrings: {},\n\t\tunknownFn: null,\n\t};\n\n\tif (typeof opts.unknown === 'function') {\n\t\tflags.unknownFn = opts.unknown;\n\t}\n\n\tif (typeof opts.boolean === 'boolean' && opts.boolean) {\n\t\tflags.allBools = true;\n\t} else {\n\t\t[].concat(opts.boolean).filter(Boolean).forEach(function (key) {\n\t\t\tflags.bools[key] = true;\n\t\t});\n\t}\n\n\tvar aliases = {};\n\n\tfunction aliasIsBoolean(key) {\n\t\treturn aliases[key].some(function (x) {\n\t\t\treturn flags.bools[x];\n\t\t});\n\t}\n\n\tObject.keys(opts.alias || {}).forEach(function (key) {\n\t\taliases[key] = [].concat(opts.alias[key]);\n\t\taliases[key].forEach(function (x) {\n\t\t\taliases[x] = [key].concat(aliases[key].filter(function (y) {\n\t\t\t\treturn x !== y;\n\t\t\t}));\n\t\t});\n\t});\n\n\t[].concat(opts.string).filter(Boolean).forEach(function (key) {\n\t\tflags.strings[key] = true;\n\t\tif (aliases[key]) {\n\t\t\t[].concat(aliases[key]).forEach(function (k) {\n\t\t\t\tflags.strings[k] = true;\n\t\t\t});\n\t\t}\n\t});\n\n\tvar defaults = opts.default || {};\n\n\tvar argv = { _: [] };\n\n\tfunction argDefined(key, arg) {\n\t\treturn (flags.allBools && (/^--[^=]+$/).test(arg))\n\t\t\t|| flags.strings[key]\n\t\t\t|| flags.bools[key]\n\t\t\t|| aliases[key];\n\t}\n\n\tfunction setKey(obj, keys, value) {\n\t\tvar o = obj;\n\t\tfor (var i = 0; i < keys.length - 1; i++) {\n\t\t\tvar key = keys[i];\n\t\t\tif (isConstructorOrProto(o, key)) { return; }\n\t\t\tif (o[key] === undefined) { o[key] = {}; }\n\t\t\tif (\n\t\t\t\to[key] === Object.prototype\n\t\t\t\t|| o[key] === Number.prototype\n\t\t\t\t|| o[key] === String.prototype\n\t\t\t) {\n\t\t\t\to[key] = {};\n\t\t\t}\n\t\t\tif (o[key] === Array.prototype) { o[key] = []; }\n\t\t\to = o[key];\n\t\t}\n\n\t\tvar lastKey = keys[keys.length - 1];\n\t\tif (isConstructorOrProto(o, lastKey)) { return; }\n\t\tif (\n\t\t\to === Object.prototype\n\t\t\t|| o === Number.prototype\n\t\t\t|| o === String.prototype\n\t\t) {\n\t\t\to = {};\n\t\t}\n\t\tif (o === Array.prototype) { o = []; }\n\t\tif (o[lastKey] === undefined || flags.bools[lastKey] || typeof o[lastKey] === 'boolean') {\n\t\t\to[lastKey] = value;\n\t\t} else if (Array.isArray(o[lastKey])) {\n\t\t\to[lastKey].push(value);\n\t\t} else {\n\t\t\to[lastKey] = [o[lastKey], value];\n\t\t}\n\t}\n\n\tfunction setArg(key, val, arg) {\n\t\tif (arg && flags.unknownFn && !argDefined(key, arg)) {\n\t\t\tif (flags.unknownFn(arg) === false) { return; }\n\t\t}\n\n\t\tvar value = !flags.strings[key] && isNumber(val)\n\t\t\t? Number(val)\n\t\t\t: val;\n\t\tsetKey(argv, key.split('.'), value);\n\n\t\t(aliases[key] || []).forEach(function (x) {\n\t\t\tsetKey(argv, x.split('.'), value);\n\t\t});\n\t}\n\n\tObject.keys(flags.bools).forEach(function (key) {\n\t\tsetArg(key, defaults[key] === undefined ? false : defaults[key]);\n\t});\n\n\tvar notFlags = [];\n\n\tif (args.indexOf('--') !== -1) {\n\t\tnotFlags = args.slice(args.indexOf('--') + 1);\n\t\targs = args.slice(0, args.indexOf('--'));\n\t}\n\n\tfor (var i = 0; i < args.length; i++) {\n\t\tvar arg = args[i];\n\t\tvar key;\n\t\tvar next;\n\n\t\tif ((/^--.+=/).test(arg)) {\n\t\t\t// Using [\\s\\S] instead of . because js doesn't support the\n\t\t\t// 'dotall' regex modifier. See:\n\t\t\t// http://stackoverflow.com/a/1068308/13216\n\t\t\tvar m = arg.match(/^--([^=]+)=([\\s\\S]*)$/);\n\t\t\tkey = m[1];\n\t\t\tvar value = m[2];\n\t\t\tif (flags.bools[key]) {\n\t\t\t\tvalue = value !== 'false';\n\t\t\t}\n\t\t\tsetArg(key, value, arg);\n\t\t} else if ((/^--no-.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--no-(.+)/)[1];\n\t\t\tsetArg(key, false, arg);\n\t\t} else if ((/^--.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--(.+)/)[1];\n\t\t\tnext = args[i + 1];\n\t\t\tif (\n\t\t\t\tnext !== undefined\n\t\t\t\t&& !(/^(-|--)[^-]/).test(next)\n\t\t\t\t&& !flags.bools[key]\n\t\t\t\t&& !flags.allBools\n\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t) {\n\t\t\t\tsetArg(key, next, arg);\n\t\t\t\ti += 1;\n\t\t\t} else if ((/^(true|false)$/).test(next)) {\n\t\t\t\tsetArg(key, next === 'true', arg);\n\t\t\t\ti += 1;\n\t\t\t} else {\n\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t}\n\t\t} else if ((/^-[^-]+/).test(arg)) {\n\t\t\tvar letters = arg.slice(1, -1).split('');\n\n\t\t\tvar broken = false;\n\t\t\tfor (var j = 0; j < letters.length; j++) {\n\t\t\t\tnext = arg.slice(j + 2);\n\n\t\t\t\tif (next === '-') {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ((/[A-Za-z]/).test(letters[j]) && next[0] === '=') {\n\t\t\t\t\tsetArg(letters[j], next.slice(1), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(/[A-Za-z]/).test(letters[j])\n\t\t\t\t\t&& (/-?\\d+(\\.\\d*)?(e-?\\d+)?$/).test(next)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (letters[j + 1] && letters[j + 1].match(/\\W/)) {\n\t\t\t\t\tsetArg(letters[j], arg.slice(j + 2), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tkey = arg.slice(-1)[0];\n\t\t\tif (!broken && key !== '-') {\n\t\t\t\tif (\n\t\t\t\t\targs[i + 1]\n\t\t\t\t\t&& !(/^(-|--)[^-]/).test(args[i + 1])\n\t\t\t\t\t&& !flags.bools[key]\n\t\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(key, args[i + 1], arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else if (args[i + 1] && (/^(true|false)$/).test(args[i + 1])) {\n\t\t\t\t\tsetArg(key, args[i + 1] === 'true', arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!flags.unknownFn || flags.unknownFn(arg) !== false) {\n\t\t\t\targv._.push(flags.strings._ || !isNumber(arg) ? arg : Number(arg));\n\t\t\t}\n\t\t\tif (opts.stopEarly) {\n\t\t\t\targv._.push.apply(argv._, args.slice(i + 1));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tObject.keys(defaults).forEach(function (k) {\n\t\tif (!hasKey(argv, k.split('.'))) {\n\t\t\tsetKey(argv, k.split('.'), defaults[k]);\n\n\t\t\t(aliases[k] || []).forEach(function (x) {\n\t\t\t\tsetKey(argv, x.split('.'), defaults[k]);\n\t\t\t});\n\t\t}\n\t});\n\n\tif (opts['--']) {\n\t\targv['--'] = notFlags.slice();\n\t} else {\n\t\tnotFlags.forEach(function (k) {\n\t\t\targv._.push(k);\n\t\t});\n\t}\n\n\treturn argv;\n};\n","'use strict';\n\nvar ServiceFactoryDef = /** @class */ (function () {\r\n function ServiceFactoryDef(factory, injections) {\r\n this.factory = factory;\r\n this.injections = injections;\r\n }\r\n ServiceFactoryDef.createFromClassMetadata = function (metadata) {\r\n return new ServiceFactoryDef(function (container, owner) {\r\n return function () {\r\n var reader = metadata.reader();\r\n var clazz = reader.getClass();\r\n return container.getInstance(clazz, owner);\r\n };\r\n });\r\n };\r\n return ServiceFactoryDef;\r\n}());\n\nvar GlobalMetadata = /** @class */ (function () {\r\n function GlobalMetadata() {\r\n this.classAliasMetadataMap = new Map();\r\n this.componentFactories = new Map();\r\n this.processorClasses = new Set();\r\n }\r\n GlobalMetadata.getInstance = function () {\r\n return GlobalMetadata.INSTANCE;\r\n };\r\n GlobalMetadata.prototype.recordFactory = function (symbol, factory, injections) {\r\n this.componentFactories.set(symbol, new ServiceFactoryDef(factory, injections));\r\n };\r\n GlobalMetadata.prototype.recordClassAlias = function (aliasName, metadata) {\r\n this.classAliasMetadataMap.set(aliasName, metadata);\r\n };\r\n GlobalMetadata.prototype.recordProcessorClass = function (clazz) {\r\n this.processorClasses.add(clazz);\r\n };\r\n GlobalMetadata.prototype.init = function () {\r\n // PASS;\r\n };\r\n GlobalMetadata.prototype.reader = function () {\r\n var _this = this;\r\n return {\r\n getComponentFactory: function (key) {\r\n return _this.componentFactories.get(key);\r\n },\r\n getClassMetadata: function (aliasName) {\r\n return _this.classAliasMetadataMap.get(aliasName);\r\n },\r\n getInstAwareProcessorClasses: function () {\r\n return Array.from(_this.processorClasses);\r\n }\r\n };\r\n };\r\n GlobalMetadata.INSTANCE = new GlobalMetadata();\r\n return GlobalMetadata;\r\n}());\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nfunction __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nfunction __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nexports.InstanceScope = void 0;\r\n(function (InstanceScope) {\r\n InstanceScope[\"SINGLETON\"] = \"ioc-resolution:container-singleton\";\r\n InstanceScope[\"TRANSIENT\"] = \"ioc-resolution:transient\";\r\n InstanceScope[\"GLOBAL_SHARED_SINGLETON\"] = \"ioc-resolution:global-shared-singleton\";\r\n})(exports.InstanceScope || (exports.InstanceScope = {}));\n\nfunction createDefaultValueMap(factory) {\r\n var map = new Map();\r\n var originGet = map.get.bind(map);\r\n map.get = function (key) {\r\n if (map.has(key)) {\r\n return originGet(key);\r\n }\r\n else {\r\n var defaultValue = factory(key);\r\n map.set(key, defaultValue);\r\n return map.get(key);\r\n }\r\n };\r\n return map;\r\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n/*! *****************************************************************************\nCopyright (C) Microsoft. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\nvar Reflect$1;\n(function (Reflect) {\n // Metadata Proposal\n // https://rbuckton.github.io/reflect-metadata/\n (function (factory) {\n var root = typeof commonjsGlobal === \"object\" ? commonjsGlobal :\n typeof self === \"object\" ? self :\n typeof this === \"object\" ? this :\n Function(\"return this;\")();\n var exporter = makeExporter(Reflect);\n if (typeof root.Reflect === \"undefined\") {\n root.Reflect = Reflect;\n }\n else {\n exporter = makeExporter(root.Reflect, exporter);\n }\n factory(exporter);\n function makeExporter(target, previous) {\n return function (key, value) {\n if (typeof target[key] !== \"function\") {\n Object.defineProperty(target, key, { configurable: true, writable: true, value: value });\n }\n if (previous)\n previous(key, value);\n };\n }\n })(function (exporter) {\n var hasOwn = Object.prototype.hasOwnProperty;\n // feature test for Symbol support\n var supportsSymbol = typeof Symbol === \"function\";\n var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== \"undefined\" ? Symbol.toPrimitive : \"@@toPrimitive\";\n var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== \"undefined\" ? Symbol.iterator : \"@@iterator\";\n var supportsCreate = typeof Object.create === \"function\"; // feature test for Object.create support\n var supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support\n var downLevel = !supportsCreate && !supportsProto;\n var HashMap = {\n // create an object in dictionary mode (a.k.a. \"slow\" mode in v8)\n create: supportsCreate\n ? function () { return MakeDictionary(Object.create(null)); }\n : supportsProto\n ? function () { return MakeDictionary({ __proto__: null }); }\n : function () { return MakeDictionary({}); },\n has: downLevel\n ? function (map, key) { return hasOwn.call(map, key); }\n : function (map, key) { return key in map; },\n get: downLevel\n ? function (map, key) { return hasOwn.call(map, key) ? map[key] : undefined; }\n : function (map, key) { return map[key]; },\n };\n // Load global or shim versions of Map, Set, and WeakMap\n var functionPrototype = Object.getPrototypeOf(Function);\n var usePolyfill = typeof process === \"object\" && process.env && process.env[\"REFLECT_METADATA_USE_MAP_POLYFILL\"] === \"true\";\n var _Map = !usePolyfill && typeof Map === \"function\" && typeof Map.prototype.entries === \"function\" ? Map : CreateMapPolyfill();\n var _Set = !usePolyfill && typeof Set === \"function\" && typeof Set.prototype.entries === \"function\" ? Set : CreateSetPolyfill();\n var _WeakMap = !usePolyfill && typeof WeakMap === \"function\" ? WeakMap : CreateWeakMapPolyfill();\n // [[Metadata]] internal slot\n // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots\n var Metadata = new _WeakMap();\n /**\n * Applies a set of decorators to a property of a target object.\n * @param decorators An array of decorators.\n * @param target The target object.\n * @param propertyKey (Optional) The property key to decorate.\n * @param attributes (Optional) The property descriptor for the target key.\n * @remarks Decorators are applied in reverse order.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Example = Reflect.decorate(decoratorsArray, Example);\n *\n * // property (on constructor)\n * Reflect.decorate(decoratorsArray, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.decorate(decoratorsArray, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Object.defineProperty(Example, \"staticMethod\",\n * Reflect.decorate(decoratorsArray, Example, \"staticMethod\",\n * Object.getOwnPropertyDescriptor(Example, \"staticMethod\")));\n *\n * // method (on prototype)\n * Object.defineProperty(Example.prototype, \"method\",\n * Reflect.decorate(decoratorsArray, Example.prototype, \"method\",\n * Object.getOwnPropertyDescriptor(Example.prototype, \"method\")));\n *\n */\n function decorate(decorators, target, propertyKey, attributes) {\n if (!IsUndefined(propertyKey)) {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsObject(target))\n throw new TypeError();\n if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes))\n throw new TypeError();\n if (IsNull(attributes))\n attributes = undefined;\n propertyKey = ToPropertyKey(propertyKey);\n return DecorateProperty(decorators, target, propertyKey, attributes);\n }\n else {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsConstructor(target))\n throw new TypeError();\n return DecorateConstructor(decorators, target);\n }\n }\n exporter(\"decorate\", decorate);\n // 4.1.2 Reflect.metadata(metadataKey, metadataValue)\n // https://rbuckton.github.io/reflect-metadata/#reflect.metadata\n /**\n * A default metadata decorator factory that can be used on a class, class member, or parameter.\n * @param metadataKey The key for the metadata entry.\n * @param metadataValue The value for the metadata entry.\n * @returns A decorator function.\n * @remarks\n * If `metadataKey` is already defined for the target and target key, the\n * metadataValue for that key will be overwritten.\n * @example\n *\n * // constructor\n * @Reflect.metadata(key, value)\n * class Example {\n * }\n *\n * // property (on constructor, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticProperty;\n * }\n *\n * // property (on prototype, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * property;\n * }\n *\n * // method (on constructor)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticMethod() { }\n * }\n *\n * // method (on prototype)\n * class Example {\n * @Reflect.metadata(key, value)\n * method() { }\n * }\n *\n */\n function metadata(metadataKey, metadataValue) {\n function decorator(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey))\n throw new TypeError();\n OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n return decorator;\n }\n exporter(\"metadata\", metadata);\n /**\n * Define a unique metadata entry on the target.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param metadataValue A value that contains attached metadata.\n * @param target The target object on which to define metadata.\n * @param propertyKey (Optional) The property key for the target.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Reflect.defineMetadata(\"custom:annotation\", options, Example);\n *\n * // property (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticMethod\");\n *\n * // method (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"method\");\n *\n * // decorator factory as metadata-producing annotation.\n * function MyAnnotation(options): Decorator {\n * return (target, key?) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\n * }\n *\n */\n function defineMetadata(metadataKey, metadataValue, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n exporter(\"defineMetadata\", defineMetadata);\n /**\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasMetadata\", hasMetadata);\n /**\n * Gets a value indicating whether the target object has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasOwnMetadata\", hasOwnMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getMetadata\", getMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getOwnMetadata\", getOwnMetadata);\n /**\n * Gets the metadata keys defined on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryMetadataKeys(target, propertyKey);\n }\n exporter(\"getMetadataKeys\", getMetadataKeys);\n /**\n * Gets the unique metadata keys defined on the target object.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getOwnMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryOwnMetadataKeys(target, propertyKey);\n }\n exporter(\"getOwnMetadataKeys\", getOwnMetadataKeys);\n /**\n * Deletes the metadata entry from the target object with the provided key.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function deleteMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n var metadataMap = GetOrCreateMetadataMap(target, propertyKey, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n if (!metadataMap.delete(metadataKey))\n return false;\n if (metadataMap.size > 0)\n return true;\n var targetMetadata = Metadata.get(target);\n targetMetadata.delete(propertyKey);\n if (targetMetadata.size > 0)\n return true;\n Metadata.delete(target);\n return true;\n }\n exporter(\"deleteMetadata\", deleteMetadata);\n function DecorateConstructor(decorators, target) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsConstructor(decorated))\n throw new TypeError();\n target = decorated;\n }\n }\n return target;\n }\n function DecorateProperty(decorators, target, propertyKey, descriptor) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target, propertyKey, descriptor);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsObject(decorated))\n throw new TypeError();\n descriptor = decorated;\n }\n }\n return descriptor;\n }\n function GetOrCreateMetadataMap(O, P, Create) {\n var targetMetadata = Metadata.get(O);\n if (IsUndefined(targetMetadata)) {\n if (!Create)\n return undefined;\n targetMetadata = new _Map();\n Metadata.set(O, targetMetadata);\n }\n var metadataMap = targetMetadata.get(P);\n if (IsUndefined(metadataMap)) {\n if (!Create)\n return undefined;\n metadataMap = new _Map();\n targetMetadata.set(P, metadataMap);\n }\n return metadataMap;\n }\n // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata\n function OrdinaryHasMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return true;\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryHasMetadata(MetadataKey, parent, P);\n return false;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n return ToBoolean(metadataMap.has(MetadataKey));\n }\n // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata\n function OrdinaryGetMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return OrdinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryGetMetadata(MetadataKey, parent, P);\n return undefined;\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return undefined;\n return metadataMap.get(MetadataKey);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true);\n metadataMap.set(MetadataKey, MetadataValue);\n }\n // 3.1.6.1 OrdinaryMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys\n function OrdinaryMetadataKeys(O, P) {\n var ownKeys = OrdinaryOwnMetadataKeys(O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (parent === null)\n return ownKeys;\n var parentKeys = OrdinaryMetadataKeys(parent, P);\n if (parentKeys.length <= 0)\n return ownKeys;\n if (ownKeys.length <= 0)\n return parentKeys;\n var set = new _Set();\n var keys = [];\n for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) {\n var key = ownKeys_1[_i];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) {\n var key = parentKeys_1[_a];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n return keys;\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var keys = [];\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return keys;\n var keysObj = metadataMap.keys();\n var iterator = GetIterator(keysObj);\n var k = 0;\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n keys.length = k;\n return keys;\n }\n var nextValue = IteratorValue(next);\n try {\n keys[k] = nextValue;\n }\n catch (e) {\n try {\n IteratorClose(iterator);\n }\n finally {\n throw e;\n }\n }\n k++;\n }\n }\n // 6 ECMAScript Data Typ0es and Values\n // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values\n function Type(x) {\n if (x === null)\n return 1 /* Null */;\n switch (typeof x) {\n case \"undefined\": return 0 /* Undefined */;\n case \"boolean\": return 2 /* Boolean */;\n case \"string\": return 3 /* String */;\n case \"symbol\": return 4 /* Symbol */;\n case \"number\": return 5 /* Number */;\n case \"object\": return x === null ? 1 /* Null */ : 6 /* Object */;\n default: return 6 /* Object */;\n }\n }\n // 6.1.1 The Undefined Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type\n function IsUndefined(x) {\n return x === undefined;\n }\n // 6.1.2 The Null Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type\n function IsNull(x) {\n return x === null;\n }\n // 6.1.5 The Symbol Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type\n function IsSymbol(x) {\n return typeof x === \"symbol\";\n }\n // 6.1.7 The Object Type\n // https://tc39.github.io/ecma262/#sec-object-type\n function IsObject(x) {\n return typeof x === \"object\" ? x !== null : typeof x === \"function\";\n }\n // 7.1 Type Conversion\n // https://tc39.github.io/ecma262/#sec-type-conversion\n // 7.1.1 ToPrimitive(input [, PreferredType])\n // https://tc39.github.io/ecma262/#sec-toprimitive\n function ToPrimitive(input, PreferredType) {\n switch (Type(input)) {\n case 0 /* Undefined */: return input;\n case 1 /* Null */: return input;\n case 2 /* Boolean */: return input;\n case 3 /* String */: return input;\n case 4 /* Symbol */: return input;\n case 5 /* Number */: return input;\n }\n var hint = PreferredType === 3 /* String */ ? \"string\" : PreferredType === 5 /* Number */ ? \"number\" : \"default\";\n var exoticToPrim = GetMethod(input, toPrimitiveSymbol);\n if (exoticToPrim !== undefined) {\n var result = exoticToPrim.call(input, hint);\n if (IsObject(result))\n throw new TypeError();\n return result;\n }\n return OrdinaryToPrimitive(input, hint === \"default\" ? \"number\" : hint);\n }\n // 7.1.1.1 OrdinaryToPrimitive(O, hint)\n // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive\n function OrdinaryToPrimitive(O, hint) {\n if (hint === \"string\") {\n var toString_1 = O.toString;\n if (IsCallable(toString_1)) {\n var result = toString_1.call(O);\n if (!IsObject(result))\n return result;\n }\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n else {\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n var toString_2 = O.toString;\n if (IsCallable(toString_2)) {\n var result = toString_2.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n throw new TypeError();\n }\n // 7.1.2 ToBoolean(argument)\n // https://tc39.github.io/ecma262/2016/#sec-toboolean\n function ToBoolean(argument) {\n return !!argument;\n }\n // 7.1.12 ToString(argument)\n // https://tc39.github.io/ecma262/#sec-tostring\n function ToString(argument) {\n return \"\" + argument;\n }\n // 7.1.14 ToPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-topropertykey\n function ToPropertyKey(argument) {\n var key = ToPrimitive(argument, 3 /* String */);\n if (IsSymbol(key))\n return key;\n return ToString(key);\n }\n // 7.2 Testing and Comparison Operations\n // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations\n // 7.2.2 IsArray(argument)\n // https://tc39.github.io/ecma262/#sec-isarray\n function IsArray(argument) {\n return Array.isArray\n ? Array.isArray(argument)\n : argument instanceof Object\n ? argument instanceof Array\n : Object.prototype.toString.call(argument) === \"[object Array]\";\n }\n // 7.2.3 IsCallable(argument)\n // https://tc39.github.io/ecma262/#sec-iscallable\n function IsCallable(argument) {\n // NOTE: This is an approximation as we cannot check for [[Call]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.4 IsConstructor(argument)\n // https://tc39.github.io/ecma262/#sec-isconstructor\n function IsConstructor(argument) {\n // NOTE: This is an approximation as we cannot check for [[Construct]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.7 IsPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-ispropertykey\n function IsPropertyKey(argument) {\n switch (Type(argument)) {\n case 3 /* String */: return true;\n case 4 /* Symbol */: return true;\n default: return false;\n }\n }\n // 7.3 Operations on Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-objects\n // 7.3.9 GetMethod(V, P)\n // https://tc39.github.io/ecma262/#sec-getmethod\n function GetMethod(V, P) {\n var func = V[P];\n if (func === undefined || func === null)\n return undefined;\n if (!IsCallable(func))\n throw new TypeError();\n return func;\n }\n // 7.4 Operations on Iterator Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects\n function GetIterator(obj) {\n var method = GetMethod(obj, iteratorSymbol);\n if (!IsCallable(method))\n throw new TypeError(); // from Call\n var iterator = method.call(obj);\n if (!IsObject(iterator))\n throw new TypeError();\n return iterator;\n }\n // 7.4.4 IteratorValue(iterResult)\n // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue\n function IteratorValue(iterResult) {\n return iterResult.value;\n }\n // 7.4.5 IteratorStep(iterator)\n // https://tc39.github.io/ecma262/#sec-iteratorstep\n function IteratorStep(iterator) {\n var result = iterator.next();\n return result.done ? false : result;\n }\n // 7.4.6 IteratorClose(iterator, completion)\n // https://tc39.github.io/ecma262/#sec-iteratorclose\n function IteratorClose(iterator) {\n var f = iterator[\"return\"];\n if (f)\n f.call(iterator);\n }\n // 9.1 Ordinary Object Internal Methods and Internal Slots\n // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots\n // 9.1.1.1 OrdinaryGetPrototypeOf(O)\n // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof\n function OrdinaryGetPrototypeOf(O) {\n var proto = Object.getPrototypeOf(O);\n if (typeof O !== \"function\" || O === functionPrototype)\n return proto;\n // TypeScript doesn't set __proto__ in ES5, as it's non-standard.\n // Try to determine the superclass constructor. Compatible implementations\n // must either set __proto__ on a subclass constructor to the superclass constructor,\n // or ensure each class has a valid `constructor` property on its prototype that\n // points back to the constructor.\n // If this is not the same as Function.[[Prototype]], then this is definately inherited.\n // This is the case when in ES6 or when using __proto__ in a compatible browser.\n if (proto !== functionPrototype)\n return proto;\n // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\n var prototype = O.prototype;\n var prototypeProto = prototype && Object.getPrototypeOf(prototype);\n if (prototypeProto == null || prototypeProto === Object.prototype)\n return proto;\n // If the constructor was not a function, then we cannot determine the heritage.\n var constructor = prototypeProto.constructor;\n if (typeof constructor !== \"function\")\n return proto;\n // If we have some kind of self-reference, then we cannot determine the heritage.\n if (constructor === O)\n return proto;\n // we have a pretty good guess at the heritage.\n return constructor;\n }\n // naive Map shim\n function CreateMapPolyfill() {\n var cacheSentinel = {};\n var arraySentinel = [];\n var MapIterator = /** @class */ (function () {\n function MapIterator(keys, values, selector) {\n this._index = 0;\n this._keys = keys;\n this._values = values;\n this._selector = selector;\n }\n MapIterator.prototype[\"@@iterator\"] = function () { return this; };\n MapIterator.prototype[iteratorSymbol] = function () { return this; };\n MapIterator.prototype.next = function () {\n var index = this._index;\n if (index >= 0 && index < this._keys.length) {\n var result = this._selector(this._keys[index], this._values[index]);\n if (index + 1 >= this._keys.length) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n else {\n this._index++;\n }\n return { value: result, done: false };\n }\n return { value: undefined, done: true };\n };\n MapIterator.prototype.throw = function (error) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n throw error;\n };\n MapIterator.prototype.return = function (value) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n return { value: value, done: true };\n };\n return MapIterator;\n }());\n return /** @class */ (function () {\n function Map() {\n this._keys = [];\n this._values = [];\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n Object.defineProperty(Map.prototype, \"size\", {\n get: function () { return this._keys.length; },\n enumerable: true,\n configurable: true\n });\n Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; };\n Map.prototype.get = function (key) {\n var index = this._find(key, /*insert*/ false);\n return index >= 0 ? this._values[index] : undefined;\n };\n Map.prototype.set = function (key, value) {\n var index = this._find(key, /*insert*/ true);\n this._values[index] = value;\n return this;\n };\n Map.prototype.delete = function (key) {\n var index = this._find(key, /*insert*/ false);\n if (index >= 0) {\n var size = this._keys.length;\n for (var i = index + 1; i < size; i++) {\n this._keys[i - 1] = this._keys[i];\n this._values[i - 1] = this._values[i];\n }\n this._keys.length--;\n this._values.length--;\n if (key === this._cacheKey) {\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n return true;\n }\n return false;\n };\n Map.prototype.clear = function () {\n this._keys.length = 0;\n this._values.length = 0;\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n };\n Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); };\n Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); };\n Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); };\n Map.prototype[\"@@iterator\"] = function () { return this.entries(); };\n Map.prototype[iteratorSymbol] = function () { return this.entries(); };\n Map.prototype._find = function (key, insert) {\n if (this._cacheKey !== key) {\n this._cacheIndex = this._keys.indexOf(this._cacheKey = key);\n }\n if (this._cacheIndex < 0 && insert) {\n this._cacheIndex = this._keys.length;\n this._keys.push(key);\n this._values.push(undefined);\n }\n return this._cacheIndex;\n };\n return Map;\n }());\n function getKey(key, _) {\n return key;\n }\n function getValue(_, value) {\n return value;\n }\n function getEntry(key, value) {\n return [key, value];\n }\n }\n // naive Set shim\n function CreateSetPolyfill() {\n return /** @class */ (function () {\n function Set() {\n this._map = new _Map();\n }\n Object.defineProperty(Set.prototype, \"size\", {\n get: function () { return this._map.size; },\n enumerable: true,\n configurable: true\n });\n Set.prototype.has = function (value) { return this._map.has(value); };\n Set.prototype.add = function (value) { return this._map.set(value, value), this; };\n Set.prototype.delete = function (value) { return this._map.delete(value); };\n Set.prototype.clear = function () { this._map.clear(); };\n Set.prototype.keys = function () { return this._map.keys(); };\n Set.prototype.values = function () { return this._map.values(); };\n Set.prototype.entries = function () { return this._map.entries(); };\n Set.prototype[\"@@iterator\"] = function () { return this.keys(); };\n Set.prototype[iteratorSymbol] = function () { return this.keys(); };\n return Set;\n }());\n }\n // naive WeakMap shim\n function CreateWeakMapPolyfill() {\n var UUID_SIZE = 16;\n var keys = HashMap.create();\n var rootKey = CreateUniqueKey();\n return /** @class */ (function () {\n function WeakMap() {\n this._key = CreateUniqueKey();\n }\n WeakMap.prototype.has = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.has(table, this._key) : false;\n };\n WeakMap.prototype.get = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.get(table, this._key) : undefined;\n };\n WeakMap.prototype.set = function (target, value) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ true);\n table[this._key] = value;\n return this;\n };\n WeakMap.prototype.delete = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? delete table[this._key] : false;\n };\n WeakMap.prototype.clear = function () {\n // NOTE: not a real clear, just makes the previous data unreachable\n this._key = CreateUniqueKey();\n };\n return WeakMap;\n }());\n function CreateUniqueKey() {\n var key;\n do\n key = \"@@WeakMap@@\" + CreateUUID();\n while (HashMap.has(keys, key));\n keys[key] = true;\n return key;\n }\n function GetOrCreateWeakMapTable(target, create) {\n if (!hasOwn.call(target, rootKey)) {\n if (!create)\n return undefined;\n Object.defineProperty(target, rootKey, { value: HashMap.create() });\n }\n return target[rootKey];\n }\n function FillRandomBytes(buffer, size) {\n for (var i = 0; i < size; ++i)\n buffer[i] = Math.random() * 0xff | 0;\n return buffer;\n }\n function GenRandomBytes(size) {\n if (typeof Uint8Array === \"function\") {\n if (typeof crypto !== \"undefined\")\n return crypto.getRandomValues(new Uint8Array(size));\n if (typeof msCrypto !== \"undefined\")\n return msCrypto.getRandomValues(new Uint8Array(size));\n return FillRandomBytes(new Uint8Array(size), size);\n }\n return FillRandomBytes(new Array(size), size);\n }\n function CreateUUID() {\n var data = GenRandomBytes(UUID_SIZE);\n // mark as random - RFC 4122 § 4.4\n data[6] = data[6] & 0x4f | 0x40;\n data[8] = data[8] & 0xbf | 0x80;\n var result = \"\";\n for (var offset = 0; offset < UUID_SIZE; ++offset) {\n var byte = data[offset];\n if (offset === 4 || offset === 6 || offset === 8)\n result += \"-\";\n if (byte < 16)\n result += \"0\";\n result += byte.toString(16).toLowerCase();\n }\n return result;\n }\n }\n // uses a heuristic used by v8 and chakra to force an object into dictionary mode.\n function MakeDictionary(obj) {\n obj.__ = undefined;\n delete obj.__;\n return obj;\n }\n });\n})(Reflect$1 || (Reflect$1 = {}));\n\nvar MetadataFactory = /** @class */ (function () {\r\n function MetadataFactory() {\r\n }\r\n MetadataFactory.getMetadata = function (target, metadataClass) {\r\n var key = metadataClass.getReflectKey();\r\n var metadata = Reflect.getMetadata(key, target);\r\n if (!metadata) {\r\n metadata = new metadataClass();\r\n metadata.init(target);\r\n Reflect.defineMetadata(key, metadata, target);\r\n }\r\n return metadata;\r\n };\r\n return MetadataFactory;\r\n}());\n\nvar CLASS_METADATA_KEY = 'ioc:class-metadata';\r\nvar MarkInfoContainer = /** @class */ (function () {\r\n function MarkInfoContainer() {\r\n this.map = createDefaultValueMap(function () { return ({}); });\r\n }\r\n MarkInfoContainer.prototype.getMarkInfo = function (method) {\r\n return this.map.get(method);\r\n };\r\n MarkInfoContainer.prototype.mark = function (method, key, value) {\r\n var markInfo = this.map.get(method);\r\n markInfo[key] = value;\r\n };\r\n return MarkInfoContainer;\r\n}());\r\nvar ParameterMarkInfoContainer = /** @class */ (function () {\r\n function ParameterMarkInfoContainer() {\r\n this.map = createDefaultValueMap(function () {\r\n return {};\r\n });\r\n }\r\n ParameterMarkInfoContainer.prototype.getMarkInfo = function (method) {\r\n return this.map.get(method);\r\n };\r\n ParameterMarkInfoContainer.prototype.mark = function (method, index, key, value) {\r\n var paramsMarkInfo = this.map.get(method);\r\n var markInfo = paramsMarkInfo[index] || {};\r\n markInfo[key] = value;\r\n paramsMarkInfo[index] = markInfo;\r\n };\r\n return ParameterMarkInfoContainer;\r\n}());\r\nvar ClassMetadata = /** @class */ (function () {\r\n function ClassMetadata() {\r\n this.scope = exports.InstanceScope.SINGLETON;\r\n this.constructorParameterTypes = [];\r\n this.lifecycleMethodsMap = {};\r\n this.propertyTypesMap = new Map();\r\n this.marks = {\r\n ctor: {},\r\n members: new MarkInfoContainer(),\r\n params: new ParameterMarkInfoContainer()\r\n };\r\n }\r\n ClassMetadata.getReflectKey = function () {\r\n return CLASS_METADATA_KEY;\r\n };\r\n ClassMetadata.getInstance = function (ctor) {\r\n return MetadataFactory.getMetadata(ctor, ClassMetadata);\r\n };\r\n ClassMetadata.prototype.init = function (target) {\r\n this.clazz = target;\r\n var constr = target;\r\n if (typeof constr.scope === 'function') {\r\n this.setScope(constr.scope());\r\n }\r\n if (typeof constr.inject === 'function') {\r\n var injections = constr.inject();\r\n for (var key in injections) {\r\n this.recordPropertyType(key, injections[key]);\r\n }\r\n }\r\n if (typeof constr.metadata === 'function') {\r\n var metadata = constr.metadata();\r\n if (metadata.scope) {\r\n this.setScope(metadata.scope);\r\n }\r\n var injections = metadata.inject;\r\n if (injections) {\r\n for (var key in injections) {\r\n this.recordPropertyType(key, injections[key]);\r\n }\r\n }\r\n }\r\n };\r\n ClassMetadata.prototype.marker = function () {\r\n var _this = this;\r\n return {\r\n ctor: function (key, value) {\r\n _this.marks.ctor[key] = value;\r\n },\r\n member: function (propertyKey) {\r\n return {\r\n mark: function (key, value) {\r\n _this.marks.members.mark(propertyKey, key, value);\r\n }\r\n };\r\n },\r\n parameter: function (propertyKey, index) {\r\n return {\r\n mark: function (key, value) {\r\n _this.marks.params.mark(propertyKey, index, key, value);\r\n }\r\n };\r\n }\r\n };\r\n };\r\n ClassMetadata.prototype.setScope = function (scope) {\r\n this.scope = scope;\r\n };\r\n ClassMetadata.prototype.setConstructorParameterType = function (index, cls) {\r\n this.constructorParameterTypes[index] = cls;\r\n };\r\n ClassMetadata.prototype.recordPropertyType = function (propertyKey, type) {\r\n this.propertyTypesMap.set(propertyKey, type);\r\n };\r\n ClassMetadata.prototype.addLifecycleMethod = function (methodName, lifecycle) {\r\n var lifecycles = this.getLifecycles(methodName);\r\n lifecycles.add(lifecycle);\r\n this.lifecycleMethodsMap[methodName] = lifecycles;\r\n };\r\n ClassMetadata.prototype.getLifecycles = function (methodName) {\r\n return this.lifecycleMethodsMap[methodName] || new Set();\r\n };\r\n ClassMetadata.prototype.getMethods = function (lifecycle) {\r\n var _this = this;\r\n return Object.keys(this.lifecycleMethodsMap).filter(function (it) {\r\n var lifecycles = _this.lifecycleMethodsMap[it];\r\n return lifecycles.has(lifecycle);\r\n });\r\n };\r\n ClassMetadata.prototype.reader = function () {\r\n var _this = this;\r\n return {\r\n getClass: function () { return _this.clazz; },\r\n getScope: function () {\r\n return _this.scope;\r\n },\r\n getConstructorParameterTypes: function () {\r\n return _this.constructorParameterTypes.slice(0);\r\n },\r\n getMethods: function (lifecycle) {\r\n return _this.getMethods(lifecycle);\r\n },\r\n getPropertyTypeMap: function () { return new Map(_this.propertyTypesMap); },\r\n getCtorMarkInfo: function () {\r\n return __assign({}, _this.marks.ctor);\r\n },\r\n getMembersMarkInfo: function (key) {\r\n return _this.marks.members.getMarkInfo(key);\r\n },\r\n getParameterMarkInfo: function (methodKey) {\r\n return _this.marks.params.getMarkInfo(methodKey);\r\n }\r\n };\r\n };\r\n return ClassMetadata;\r\n}());\n\nfunction Bind(aliasName) {\r\n return function (target) {\r\n var metadata = MetadataFactory.getMetadata(target, ClassMetadata);\r\n GlobalMetadata.getInstance().recordClassAlias(aliasName, metadata);\r\n };\r\n}\n\nfunction Scope(scope) {\r\n return function (target) {\r\n var metadata = MetadataFactory.getMetadata(target, ClassMetadata);\r\n metadata.setScope(scope);\r\n };\r\n}\n\nfunction Inject(constr) {\r\n return function (target, propertyKey, parameterIndex) {\r\n if (typeof target === 'function' && typeof parameterIndex === 'number') {\r\n var targetConstr = target;\r\n var classMetadata = MetadataFactory.getMetadata(targetConstr, ClassMetadata);\r\n classMetadata.setConstructorParameterType(parameterIndex, constr);\r\n }\r\n else if (typeof target === 'object' && target !== null && propertyKey !== undefined) {\r\n var metadata = MetadataFactory.getMetadata(target.constructor, ClassMetadata);\r\n metadata.recordPropertyType(propertyKey, constr);\r\n }\r\n };\r\n}\n\nfunction Factory(identifier, injections) {\r\n if (injections === void 0) { injections = []; }\r\n return function (target, propertyKey) {\r\n var metadata = GlobalMetadata.getInstance();\r\n var clazz = target.constructor;\r\n metadata.recordFactory(identifier, function (container, owner) {\r\n var instance = container.getInstance(clazz, owner);\r\n var func = instance[propertyKey];\r\n if (typeof func === 'function') {\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var instance = container.getInstance(clazz);\r\n return func.apply(instance, args);\r\n };\r\n }\r\n else {\r\n return function () { return func; };\r\n }\r\n }, injections);\r\n };\r\n}\n\nvar Lifecycle;\r\n(function (Lifecycle) {\r\n Lifecycle[\"PRE_INJECT\"] = \"ioc-scope:pre-inject\";\r\n Lifecycle[\"POST_INJECT\"] = \"ioc-scope:post-inject\";\r\n Lifecycle[\"PRE_DESTROY\"] = \"ioc-scope:pre-destroy\";\r\n})(Lifecycle || (Lifecycle = {}));\n\n/**\r\n * Urn calls the methods annotated with @PostInject only once, just after the injection of properties.\r\n * @annotation\r\n */\r\nvar LifecycleDecorator = function (lifecycle) {\r\n return function (target, propertyKey) {\r\n var metadata = MetadataFactory.getMetadata(target.constructor, ClassMetadata);\r\n metadata.addLifecycleMethod(propertyKey, lifecycle);\r\n };\r\n};\n\n/**\r\n * Urn calls the methods annotated with @PostInject only once, just after the injection of properties.\r\n * @annotation\r\n */\r\nvar PostInject = function () { return LifecycleDecorator(Lifecycle.POST_INJECT); };\n\n/**\r\n * Urn calls the methods annotated with @PostInject only once, just after the injection of properties.\r\n * @annotation\r\n */\r\nvar PreInject = function () { return LifecycleDecorator(Lifecycle.PRE_INJECT); };\n\nvar PreDestroy = function () { return LifecycleDecorator(Lifecycle.PRE_DESTROY); };\n\nexports.ExpressionType = void 0;\r\n(function (ExpressionType) {\r\n ExpressionType[\"ENV\"] = \"inject-environment-variables\";\r\n ExpressionType[\"JSON_PATH\"] = \"inject-json-data\";\r\n ExpressionType[\"ARGV\"] = \"inject-argv\";\r\n})(exports.ExpressionType || (exports.ExpressionType = {}));\n\nvar isNodeJs = (function () {\r\n try {\r\n // eslint-disable-next-line @typescript-eslint/no-var-requires\r\n var os = require('os');\r\n os.arch();\r\n return true;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n})();\n\nfunction Value(expression, type, externalArgs) {\r\n switch (type) {\r\n case exports.ExpressionType.ENV:\r\n case exports.ExpressionType.ARGV:\r\n if (!isNodeJs) {\r\n throw new Error(\"The \\\"\".concat(type, \"\\\" evaluator only supports nodejs environment!\"));\r\n }\r\n }\r\n return function (target, propertyKey) {\r\n var metadata = MetadataFactory.getMetadata(target.constructor, ClassMetadata);\r\n var value_symbol = Symbol('');\r\n metadata.recordPropertyType(propertyKey, value_symbol);\r\n GlobalMetadata.getInstance().recordFactory(value_symbol, function (container, owner) {\r\n return function () {\r\n return container.evaluate(expression, {\r\n owner: owner,\r\n type: type,\r\n externalArgs: externalArgs\r\n });\r\n };\r\n });\r\n };\r\n}\n\nfunction Mark(key, value) {\r\n if (value === void 0) { value = true; }\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (args.length === 1) {\r\n // class decorator\r\n var metadata = MetadataFactory.getMetadata(args[0], ClassMetadata);\r\n metadata.marker().ctor(key, value);\r\n }\r\n else if (args.length === 2) {\r\n // property decorator\r\n var _a = __read(args, 2), prototype = _a[0], propertyKey = _a[1];\r\n var metadata = MetadataFactory.getMetadata(prototype.constructor, ClassMetadata);\r\n metadata.marker().member(propertyKey).mark(key, value);\r\n }\r\n else if (args.length === 3 && typeof args[2] === 'number') {\r\n // parameter decorator\r\n var _b = __read(args, 3), prototype = _b[0], propertyKey = _b[1], index = _b[2];\r\n var metadata = MetadataFactory.getMetadata(prototype.constructor, ClassMetadata);\r\n metadata.marker().parameter(propertyKey, index).mark(key, value);\r\n }\r\n else {\r\n // method decorator\r\n var _c = __read(args, 2), prototype = _c[0], propertyKey = _c[1];\r\n var metadata = MetadataFactory.getMetadata(prototype.constructor, ClassMetadata);\r\n metadata.marker().member(propertyKey).mark(key, value);\r\n }\r\n };\r\n}\n\nvar EventEmitter = /** @class */ (function () {\r\n function EventEmitter() {\r\n this.events = new Map();\r\n }\r\n EventEmitter.prototype.on = function (type, listener) {\r\n var listeners = this.events.get(type);\r\n if (listeners) {\r\n if (listeners.indexOf(listener) == -1) {\r\n listeners.push(listener);\r\n }\r\n }\r\n else {\r\n listeners = [listener];\r\n this.events.set(type, listeners);\r\n }\r\n return function () {\r\n var ls = listeners;\r\n var index = ls.indexOf(listener);\r\n if (index > -1) {\r\n ls.splice(index, 1);\r\n }\r\n };\r\n };\r\n EventEmitter.prototype.emit = function (type) {\r\n var _a;\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n (_a = this.events.get(type)) === null || _a === void 0 ? void 0 : _a.forEach(function (fn) {\r\n fn.apply(void 0, __spreadArray([], __read(args), false));\r\n });\r\n };\r\n return EventEmitter;\r\n}());\n\nfunction hasArgs(options) {\r\n return 'args' in options;\r\n}\r\nfunction hasInjections(options) {\r\n return 'injections' in options;\r\n}\n\nvar index_cjs = {};\n\nvar lazyProp;\nvar lazyMember;\nObject.defineProperty(index_cjs,\"__esModule\",{value:!0});\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nvar e=function(){return e=Object.assign||function(e){for(var t,r=1,n=arguments.length;r other.serialNo ? -1 : this.serialNo < other.serialNo ? 1 : 0;\r\n };\r\n return ComponentInstanceWrapper;\r\n}());\n\nfunction invokePreDestroy(instance) {\r\n var clazz = instance === null || instance === void 0 ? void 0 : instance.constructor;\r\n if (!clazz) {\r\n return;\r\n }\r\n var metadata = MetadataFactory.getMetadata(clazz, ClassMetadata);\r\n var preDestroyMethods = metadata.getMethods(Lifecycle.PRE_DESTROY);\r\n preDestroyMethods.forEach(function (methodName) {\r\n var method = clazz.prototype[methodName];\r\n if (typeof method === 'function') {\r\n method.apply(instance);\r\n }\r\n });\r\n}\n\nvar SingletonInstanceResolution = /** @class */ (function () {\r\n function SingletonInstanceResolution() {\r\n this.INSTANCE_MAP = new Map();\r\n }\r\n SingletonInstanceResolution.prototype.getInstance = function (options) {\r\n var _a;\r\n return (_a = this.INSTANCE_MAP.get(options.identifier)) === null || _a === void 0 ? void 0 : _a.instance;\r\n };\r\n SingletonInstanceResolution.prototype.saveInstance = function (options) {\r\n this.INSTANCE_MAP.set(options.identifier, new ComponentInstanceWrapper(options.instance));\r\n };\r\n SingletonInstanceResolution.prototype.shouldGenerate = function (options) {\r\n return !this.INSTANCE_MAP.has(options.identifier);\r\n };\r\n SingletonInstanceResolution.prototype.destroy = function () {\r\n var instanceWrappers = Array.from(this.INSTANCE_MAP.values());\r\n instanceWrappers.sort(function (a, b) { return a.compareTo(b); });\r\n instanceWrappers.forEach(function (instanceWrapper) {\r\n invokePreDestroy(instanceWrapper.instance);\r\n });\r\n this.INSTANCE_MAP.clear();\r\n };\r\n return SingletonInstanceResolution;\r\n}());\n\nvar SINGLETON_INSTANCE_SINGLETON = new SingletonInstanceResolution();\r\nvar GlobalSharedInstanceResolution = /** @class */ (function () {\r\n function GlobalSharedInstanceResolution() {\r\n }\r\n GlobalSharedInstanceResolution.prototype.getInstance = function (options) {\r\n return SINGLETON_INSTANCE_SINGLETON.getInstance(options);\r\n };\r\n GlobalSharedInstanceResolution.prototype.saveInstance = function (options) {\r\n SINGLETON_INSTANCE_SINGLETON.saveInstance(options);\r\n };\r\n GlobalSharedInstanceResolution.prototype.shouldGenerate = function (options) {\r\n return SINGLETON_INSTANCE_SINGLETON.shouldGenerate(options);\r\n };\r\n GlobalSharedInstanceResolution.prototype.destroy = function () {\r\n // PASS;\r\n };\r\n return GlobalSharedInstanceResolution;\r\n}());\n\nvar TransientInstanceResolution = /** @class */ (function () {\r\n function TransientInstanceResolution() {\r\n this.instances = new Set();\r\n }\r\n TransientInstanceResolution.prototype.shouldGenerate = function () {\r\n return true;\r\n };\r\n TransientInstanceResolution.prototype.getInstance = function () {\r\n return;\r\n };\r\n TransientInstanceResolution.prototype.saveInstance = function (options) {\r\n this.instances.add(options.instance);\r\n };\r\n TransientInstanceResolution.prototype.destroy = function () {\r\n this.instances.forEach(function (it) {\r\n if (!it) {\r\n return;\r\n }\r\n invokePreDestroy(it);\r\n });\r\n this.instances.clear();\r\n };\r\n return TransientInstanceResolution;\r\n}());\n\nvar JSONDataEvaluator = /** @class */ (function () {\r\n function JSONDataEvaluator() {\r\n this.namespaceDataMap = new Map();\r\n }\r\n JSONDataEvaluator.prototype.eval = function (context, expression) {\r\n var colonIndex = expression.indexOf(':');\r\n if (colonIndex === -1) {\r\n throw new Error('Incorrect expression, namespace not specified');\r\n }\r\n var namespace = expression.substring(0, colonIndex);\r\n var exp = expression.substring(colonIndex + 1);\r\n if (!this.namespaceDataMap.has(namespace)) {\r\n throw new Error(\"Incorrect expression: namespace not recorded: \\\"\".concat(namespace, \"\\\"\"));\r\n }\r\n var data = this.namespaceDataMap.get(namespace);\r\n return runExpression(exp, data);\r\n };\r\n JSONDataEvaluator.prototype.recordData = function (namespace, data) {\r\n this.namespaceDataMap.set(namespace, data);\r\n };\r\n return JSONDataEvaluator;\r\n}());\r\nfunction runExpression(expression, rootContext) {\r\n var fn = compileExpression(expression);\r\n return fn(rootContext);\r\n}\r\nfunction compileExpression(expression) {\r\n if (expression.indexOf(',') > -1) {\r\n throw new Error(\"Incorrect expression syntax, The ',' is not allowed in expression: \\\"\".concat(expression, \"\\\"\"));\r\n }\r\n if (expression.length > 120) {\r\n throw new Error(\"Incorrect expression syntax, expression length cannot be greater than 120, but actual: \".concat(expression.length));\r\n }\r\n if (/\\(.*?\\)/.test(expression)) {\r\n throw new Error(\"Incorrect expression syntax, parentheses are not allowed in expression: \\\"\".concat(expression, \"\\\"\"));\r\n }\r\n expression = expression.trim();\r\n if (expression === '') {\r\n return function (root) { return root; };\r\n }\r\n var rootVarName = varName('context');\r\n return new Function(rootVarName, \"\\n \\\"use strict\\\";\\n try {\\n return \".concat(rootVarName, \".\").concat(expression, \";\\n } catch(error) { throw error }\\n \"));\r\n}\r\nvar VAR_SEQUENCE = Date.now();\r\nfunction varName(prefix) {\r\n return prefix + '' + (VAR_SEQUENCE++).toString(16);\r\n}\n\nvar EnvironmentEvaluator = /** @class */ (function () {\r\n function EnvironmentEvaluator() {\r\n }\r\n EnvironmentEvaluator.prototype.eval = function (context, expression) {\r\n return process.env[expression];\r\n };\r\n return EnvironmentEvaluator;\r\n}());\n\nvar ArgvEvaluator = /** @class */ (function () {\r\n function ArgvEvaluator() {\r\n }\r\n ArgvEvaluator.prototype.eval = function (context, expression, args) {\r\n var argv = args || process.argv;\r\n // eslint-disable-next-line @typescript-eslint/no-var-requires\r\n var minimist = require('minimist');\r\n var map = minimist(argv);\r\n return map[expression];\r\n };\r\n return ArgvEvaluator;\r\n}());\n\nvar Advice;\r\n(function (Advice) {\r\n Advice[Advice[\"Before\"] = 0] = \"Before\";\r\n Advice[Advice[\"After\"] = 1] = \"After\";\r\n Advice[Advice[\"Around\"] = 2] = \"Around\";\r\n Advice[Advice[\"AfterReturn\"] = 3] = \"AfterReturn\";\r\n Advice[Advice[\"Thrown\"] = 4] = \"Thrown\";\r\n Advice[Advice[\"Finally\"] = 5] = \"Finally\";\r\n})(Advice || (Advice = {}));\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\nvar AspectUtils = /** @class */ (function () {\r\n function AspectUtils(fn) {\r\n this.fn = fn;\r\n this.beforeHooks = [];\r\n this.afterHooks = [];\r\n this.thrownHooks = [];\r\n this.finallyHooks = [];\r\n this.afterReturnHooks = [];\r\n this.aroundHooks = [];\r\n }\r\n AspectUtils.prototype.append = function (advice, hook) {\r\n var hooksArray;\r\n switch (advice) {\r\n case Advice.Before:\r\n hooksArray = this.beforeHooks;\r\n break;\r\n case Advice.After:\r\n hooksArray = this.afterHooks;\r\n break;\r\n case Advice.Thrown:\r\n hooksArray = this.thrownHooks;\r\n break;\r\n case Advice.Finally:\r\n hooksArray = this.finallyHooks;\r\n break;\r\n case Advice.AfterReturn:\r\n hooksArray = this.afterReturnHooks;\r\n break;\r\n case Advice.Around:\r\n hooksArray = this.aroundHooks;\r\n break;\r\n }\r\n if (hooksArray) {\r\n hooksArray.push(hook);\r\n }\r\n };\r\n AspectUtils.prototype.extract = function () {\r\n var _a = this, aroundHooks = _a.aroundHooks, beforeHooks = _a.beforeHooks, afterHooks = _a.afterHooks, afterReturnHooks = _a.afterReturnHooks, finallyHooks = _a.finallyHooks, thrownHooks = _a.thrownHooks;\r\n var fn = aroundHooks.reduceRight(function (prev, next) {\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return next.call(this, prev, args);\r\n };\r\n }, this.fn);\r\n return function () {\r\n var _this = this;\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n beforeHooks.forEach(function (hook) {\r\n hook.call(_this, args);\r\n });\r\n var invoke = function (onError, onFinally, onAfter) {\r\n var returnValue;\r\n var isPromise = false;\r\n try {\r\n returnValue = fn.apply(_this, args);\r\n if (returnValue instanceof Promise) {\r\n isPromise = true;\r\n returnValue = returnValue.catch(onError).finally(onFinally);\r\n }\r\n }\r\n catch (error) {\r\n onError(error);\r\n }\r\n finally {\r\n if (!isPromise) {\r\n onFinally();\r\n }\r\n }\r\n if (isPromise) {\r\n return returnValue.then(function (value) {\r\n return onAfter(value);\r\n });\r\n }\r\n else {\r\n return onAfter(returnValue);\r\n }\r\n };\r\n return invoke(function (error) {\r\n if (thrownHooks.length > 0) {\r\n thrownHooks.forEach(function (hook) { return hook.call(_this, error, args); });\r\n }\r\n else {\r\n throw error;\r\n }\r\n }, function () {\r\n finallyHooks.forEach(function (hook) { return hook.call(_this, args); });\r\n }, function (value) {\r\n afterHooks.forEach(function (hook) {\r\n hook.call(_this, args);\r\n });\r\n return afterReturnHooks.reduce(function (retVal, hook) {\r\n return hook.call(_this, retVal, args);\r\n }, value);\r\n });\r\n };\r\n };\r\n return AspectUtils;\r\n}());\n\nfunction createAspect(appCtx, target, methodName, methodFunc, metadata) {\r\n var createAspectCtx = function (advice, args, returnValue, error) {\r\n if (returnValue === void 0) { returnValue = null; }\r\n if (error === void 0) { error = null; }\r\n return {\r\n target: target,\r\n methodName: methodName,\r\n arguments: args,\r\n returnValue: returnValue,\r\n error: error,\r\n advice: advice\r\n };\r\n };\r\n var aspectUtils = new AspectUtils(methodFunc);\r\n var ClassToInstance = function (AspectClass) { return appCtx.getInstance(AspectClass); };\r\n var beforeAdviceAspects = metadata.getAspectsOf(methodName, Advice.Before).map(ClassToInstance);\r\n var afterAdviceAspects = metadata.getAspectsOf(methodName, Advice.After).map(ClassToInstance);\r\n var tryCatchAdviceAspects = metadata.getAspectsOf(methodName, Advice.Thrown).map(ClassToInstance);\r\n var tryFinallyAdviceAspects = metadata.getAspectsOf(methodName, Advice.Finally).map(ClassToInstance);\r\n var afterReturnAdviceAspects = metadata.getAspectsOf(methodName, Advice.AfterReturn).map(ClassToInstance);\r\n var aroundAdviceAspects = metadata.getAspectsOf(methodName, Advice.Around).map(ClassToInstance);\r\n if (beforeAdviceAspects.length > 0) {\r\n aspectUtils.append(Advice.Before, function (args) {\r\n var joinPoint = createAspectCtx(Advice.Before, args);\r\n beforeAdviceAspects.forEach(function (aspect) {\r\n aspect.execute(joinPoint);\r\n });\r\n });\r\n }\r\n if (afterAdviceAspects.length > 0) {\r\n aspectUtils.append(Advice.After, function (args) {\r\n var joinPoint = createAspectCtx(Advice.After, args);\r\n afterAdviceAspects.forEach(function (aspect) {\r\n aspect.execute(joinPoint);\r\n });\r\n });\r\n }\r\n if (tryCatchAdviceAspects.length > 0) {\r\n aspectUtils.append(Advice.Thrown, function (error, args) {\r\n var joinPoint = createAspectCtx(Advice.Thrown, args, null, error);\r\n tryCatchAdviceAspects.forEach(function (aspect) {\r\n aspect.execute(joinPoint);\r\n });\r\n });\r\n }\r\n if (tryFinallyAdviceAspects.length > 0) {\r\n aspectUtils.append(Advice.Finally, function (args) {\r\n var joinPoint = createAspectCtx(Advice.Finally, args);\r\n tryFinallyAdviceAspects.forEach(function (aspect) {\r\n aspect.execute(joinPoint);\r\n });\r\n });\r\n }\r\n if (afterReturnAdviceAspects.length > 0) {\r\n aspectUtils.append(Advice.AfterReturn, function (returnValue, args) {\r\n return afterReturnAdviceAspects.reduce(function (prevReturnValue, aspect) {\r\n var joinPoint = createAspectCtx(Advice.AfterReturn, args, returnValue);\r\n return aspect.execute(joinPoint);\r\n }, returnValue);\r\n });\r\n }\r\n if (aroundAdviceAspects.length > 0) {\r\n aroundAdviceAspects.forEach(function (aspect) {\r\n aspectUtils.append(Advice.Around, function (originFn, args) {\r\n var joinPoint = createAspectCtx(Advice.Around, args, null);\r\n joinPoint.proceed = function (jpArgs) {\r\n if (jpArgs === void 0) { jpArgs = args; }\r\n return originFn(jpArgs);\r\n };\r\n return aspect.execute(joinPoint);\r\n });\r\n });\r\n }\r\n return aspectUtils.extract();\r\n}\n\nvar AOPClassMetadata = /** @class */ (function () {\r\n function AOPClassMetadata() {\r\n this.aspectMap = createDefaultValueMap(function () { return createDefaultValueMap(function () { return []; }); });\r\n }\r\n AOPClassMetadata.getReflectKey = function () {\r\n return 'aop:use-aspect-metadata';\r\n };\r\n AOPClassMetadata.prototype.init = function () {\r\n // IGNORE\r\n };\r\n AOPClassMetadata.prototype.append = function (methodName, advice, aspects) {\r\n var adviceAspectMap = this.aspectMap.get(methodName);\r\n var exitingAspectArray = adviceAspectMap.get(advice);\r\n exitingAspectArray.push.apply(exitingAspectArray, __spreadArray([], __read(aspects), false));\r\n };\r\n AOPClassMetadata.prototype.reader = function () {\r\n var _this = this;\r\n return {\r\n getAspects: function () {\r\n return _this.aspectMap;\r\n },\r\n getAspectsOf: function (methodName, advice) {\r\n return _this.aspectMap.get(methodName).get(advice);\r\n }\r\n };\r\n };\r\n return AOPClassMetadata;\r\n}());\n\nvar AOPInstantiationAwareProcessor = /** @class */ (function () {\r\n function AOPInstantiationAwareProcessor() {\r\n }\r\n AOPInstantiationAwareProcessor.create = function (appCtx) {\r\n return /** @class */ (function (_super) {\r\n __extends(class_1, _super);\r\n function class_1() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.appCtx = appCtx;\r\n return _this;\r\n }\r\n return class_1;\r\n }(AOPInstantiationAwareProcessor));\r\n };\r\n AOPInstantiationAwareProcessor.prototype.afterInstantiation = function (instance) {\r\n var _this = this;\r\n var clazz = instance.constructor;\r\n var useAspectMetadata = MetadataFactory.getMetadata(clazz, AOPClassMetadata);\r\n var useAspectMetadataReader = useAspectMetadata.reader();\r\n var useAspectsMap = useAspectMetadataReader.getAspects();\r\n if (useAspectsMap.size === 0) {\r\n return instance;\r\n }\r\n var aspectStoreMap = new WeakMap();\r\n aspectStoreMap.set(instance, new Map());\r\n var proxyResult = new Proxy(instance, {\r\n get: function (target, prop) {\r\n var originValue = target[prop];\r\n if (prop in target && typeof originValue === 'function') {\r\n var aspectMap = aspectStoreMap.get(instance);\r\n if (!aspectMap) {\r\n return originValue;\r\n }\r\n if (aspectMap.has(prop)) {\r\n return aspectMap.get(prop);\r\n }\r\n var aspectFn = createAspect(_this.appCtx, target, prop, originValue, useAspectMetadataReader);\r\n aspectMap.set(prop, aspectFn);\r\n return aspectFn;\r\n }\r\n return originValue;\r\n }\r\n });\r\n return proxyResult;\r\n };\r\n return AOPInstantiationAwareProcessor;\r\n}());\n\nvar InstantiationAwareProcessorManager = /** @class */ (function () {\r\n function InstantiationAwareProcessorManager(container) {\r\n this.container = container;\r\n this.instAwareProcessorClasses = new Set();\r\n }\r\n InstantiationAwareProcessorManager.prototype.appendInstAwareProcessorClass = function (instAwareProcessorClass) {\r\n this.instAwareProcessorClasses.add(instAwareProcessorClass);\r\n };\r\n InstantiationAwareProcessorManager.prototype.appendInstAwareProcessorClasses = function (instAwareProcessorClasses) {\r\n var _this = this;\r\n instAwareProcessorClasses.forEach(function (it) {\r\n _this.instAwareProcessorClasses.add(it);\r\n });\r\n };\r\n InstantiationAwareProcessorManager.prototype.beforeInstantiation = function (componentClass, args) {\r\n var instAwareProcessors = this.instAwareProcessorInstances;\r\n var instance;\r\n instAwareProcessors.some(function (processor) {\r\n if (!processor.beforeInstantiation) {\r\n return false;\r\n }\r\n instance = processor.beforeInstantiation(componentClass, args);\r\n return !!instance;\r\n });\r\n return instance;\r\n };\r\n InstantiationAwareProcessorManager.prototype.afterInstantiation = function (instance) {\r\n return this.instAwareProcessorInstances.reduce(function (instance, processor) {\r\n if (processor.afterInstantiation) {\r\n var result = processor.afterInstantiation(instance);\r\n if (!!result) {\r\n return result;\r\n }\r\n }\r\n return instance;\r\n }, instance);\r\n };\r\n InstantiationAwareProcessorManager.prototype.isInstAwareProcessorClass = function (cls) {\r\n var classes = this.getInstAwareProcessorClasses();\r\n return classes.indexOf(cls) > -1;\r\n };\r\n InstantiationAwareProcessorManager.prototype.getInstAwareProcessorClasses = function () {\r\n var globalInstAwareProcessorClasses = GlobalMetadata.getInstance().reader().getInstAwareProcessorClasses();\r\n return globalInstAwareProcessorClasses.concat(Array.from(this.instAwareProcessorClasses));\r\n };\r\n __decorate([\r\n lazyMember({\r\n evaluate: function (instance) {\r\n var globalInstAwareProcessorClasses = GlobalMetadata.getInstance().reader().getInstAwareProcessorClasses();\r\n var instAwareProcessorClasses = globalInstAwareProcessorClasses.concat(Array.from(instance.instAwareProcessorClasses));\r\n return instAwareProcessorClasses.map(function (it) { return instance.container.getInstance(it); });\r\n },\r\n resetBy: [\r\n function (instance) { return instance.instAwareProcessorClasses.size; },\r\n function () {\r\n var globalInstAwareProcessorClasses = GlobalMetadata.getInstance().reader().getInstAwareProcessorClasses();\r\n return globalInstAwareProcessorClasses.length;\r\n }\r\n ]\r\n }),\r\n __metadata(\"design:type\", Array)\r\n ], InstantiationAwareProcessorManager.prototype, \"instAwareProcessorInstances\", void 0);\r\n return InstantiationAwareProcessorManager;\r\n}());\n\nvar PRE_DESTROY_EVENT_KEY = 'container:event:pre-destroy';\r\nvar ApplicationContext = /** @class */ (function () {\r\n function ApplicationContext(options) {\r\n if (options === void 0) { options = {}; }\r\n this.resolutions = new Map();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n this.factories = new Map();\r\n this.evaluatorClasses = new Map();\r\n this.eventEmitter = new EventEmitter();\r\n this.defaultScope = options.defaultScope || exports.InstanceScope.SINGLETON;\r\n this.lazyMode = options.lazyMode === undefined ? true : options.lazyMode;\r\n this.registerInstanceScopeResolution(exports.InstanceScope.SINGLETON, SingletonInstanceResolution);\r\n this.registerInstanceScopeResolution(exports.InstanceScope.GLOBAL_SHARED_SINGLETON, GlobalSharedInstanceResolution);\r\n this.registerInstanceScopeResolution(exports.InstanceScope.TRANSIENT, TransientInstanceResolution);\r\n this.registerEvaluator(exports.ExpressionType.JSON_PATH, JSONDataEvaluator);\r\n if (isNodeJs) {\r\n this.registerEvaluator(exports.ExpressionType.ENV, EnvironmentEvaluator);\r\n this.registerEvaluator(exports.ExpressionType.ARGV, ArgvEvaluator);\r\n }\r\n this.instAwareProcessorManager = new InstantiationAwareProcessorManager(this);\r\n this.registerInstAwareProcessor(AOPInstantiationAwareProcessor.create(this));\r\n }\r\n ApplicationContext.prototype.getInstance = function (symbol, owner) {\r\n if (symbol === ApplicationContext) {\r\n return this;\r\n }\r\n if (typeof symbol === 'string' || typeof symbol === 'symbol') {\r\n var factoryDef = this.getFactory(symbol);\r\n if (factoryDef) {\r\n var factory = factoryDef.factory, injections = factoryDef.injections;\r\n var fn = factory(this, owner);\r\n var result = this.invoke(fn, {\r\n injections: injections\r\n });\r\n var constr = result === null || result === void 0 ? void 0 : result.constructor;\r\n if (typeof constr === 'function') {\r\n var componentClass_1 = constr;\r\n var resolver = new LifecycleManager(componentClass_1, this);\r\n var isInstAwareProcessor = this.instAwareProcessorManager.isInstAwareProcessorClass(componentClass_1);\r\n resolver.invokePreInjectMethod(result);\r\n if (!isInstAwareProcessor) {\r\n result = this.instAwareProcessorManager.afterInstantiation(result);\r\n }\r\n resolver.invokePostInjectMethod(result);\r\n }\r\n return result;\r\n }\r\n else {\r\n var classMetadata = GlobalMetadata.getInstance().reader().getClassMetadata(symbol);\r\n if (!classMetadata) {\r\n throw new Error('');\r\n }\r\n else {\r\n symbol = classMetadata.reader().getClass();\r\n }\r\n }\r\n }\r\n var componentClass = symbol;\r\n var reader = ClassMetadata.getInstance(componentClass).reader();\r\n var scope = reader.getScope();\r\n var resolution = (this.resolutions.get(scope) || this.resolutions.get(this.defaultScope));\r\n var getInstanceOptions = {\r\n identifier: componentClass,\r\n owner: owner,\r\n ownerPropertyKey: undefined\r\n };\r\n if (resolution.shouldGenerate(getInstanceOptions)) {\r\n var builder = this.createComponentInstanceBuilder(componentClass);\r\n var instance = builder.build();\r\n var saveInstanceOptions = __assign(__assign({}, getInstanceOptions), { instance: instance });\r\n resolution.saveInstance(saveInstanceOptions);\r\n return instance;\r\n }\r\n else {\r\n return resolution.getInstance(getInstanceOptions);\r\n }\r\n };\r\n ApplicationContext.prototype.createComponentInstanceBuilder = function (componentClass) {\r\n var builder = new ComponentInstanceBuilder(componentClass, this, this.instAwareProcessorManager);\r\n builder.appendLazyMode(this.lazyMode);\r\n return builder;\r\n };\r\n ApplicationContext.prototype.getFactory = function (key) {\r\n var factory = GlobalMetadata.getInstance().reader().getComponentFactory(key);\r\n if (!factory) {\r\n return this.factories.get(key);\r\n }\r\n return factory;\r\n };\r\n ApplicationContext.prototype.bindFactory = function (symbol, factory, injections) {\r\n this.factories.set(symbol, new ServiceFactoryDef(factory, injections));\r\n };\r\n ApplicationContext.prototype.invoke = function (func, options) {\r\n var _this = this;\r\n if (options === void 0) { options = {}; }\r\n var fn;\r\n if (arguments.length > 1) {\r\n fn = func.bind(options.context);\r\n }\r\n else {\r\n fn = func;\r\n }\r\n if (hasArgs(options)) {\r\n return options.args ? fn.apply(void 0, __spreadArray([], __read(options.args), false)) : fn();\r\n }\r\n if (hasInjections(options)) {\r\n var args_1 = options.injections ? options.injections.map(function (it) { return _this.getInstance(it); }) : [];\r\n return args_1.length > 0 ? fn.apply(void 0, __spreadArray([], __read(args_1), false)) : fn();\r\n }\r\n var metadata = MetadataFactory.getMetadata(fn, FunctionMetadata).reader();\r\n var parameterIdentifiers = metadata.getParameters();\r\n var args = parameterIdentifiers.map(function (identifier) {\r\n return _this.getInstance(identifier);\r\n });\r\n return fn.apply(void 0, __spreadArray([], __read(args), false));\r\n };\r\n ApplicationContext.prototype.destroy = function () {\r\n this.eventEmitter.emit(PRE_DESTROY_EVENT_KEY);\r\n this.resolutions.forEach(function (it) {\r\n it.destroy();\r\n });\r\n };\r\n ApplicationContext.prototype.evaluate = function (expression, options) {\r\n var evaluatorClass = this.evaluatorClasses.get(options.type);\r\n if (!evaluatorClass) {\r\n throw new TypeError(\"Unknown evaluator name: \".concat(options.type));\r\n }\r\n var evaluator = this.getInstance(evaluatorClass);\r\n return evaluator.eval(this, expression, options.externalArgs);\r\n };\r\n ApplicationContext.prototype.recordJSONData = function (namespace, data) {\r\n var evaluator = this.getInstance(JSONDataEvaluator);\r\n evaluator.recordData(namespace, data);\r\n };\r\n ApplicationContext.prototype.bindInstance = function (identifier, instance) {\r\n var resolution = this.resolutions.get(exports.InstanceScope.SINGLETON);\r\n resolution === null || resolution === void 0 ? void 0 : resolution.saveInstance({\r\n identifier: identifier,\r\n instance: instance\r\n });\r\n };\r\n ApplicationContext.prototype.registerInstanceScopeResolution = function (scope, resolutionConstructor, constructorArgs) {\r\n this.resolutions.set(scope, new (resolutionConstructor.bind.apply(resolutionConstructor, __spreadArray([void 0], __read((constructorArgs || [])), false)))());\r\n };\r\n ApplicationContext.prototype.registerEvaluator = function (name, evaluatorClass) {\r\n var metadata = MetadataFactory.getMetadata(evaluatorClass, ClassMetadata);\r\n metadata.setScope(exports.InstanceScope.SINGLETON);\r\n this.evaluatorClasses.set(name, evaluatorClass);\r\n };\r\n ApplicationContext.prototype.registerInstAwareProcessor = function (clazz) {\r\n this.instAwareProcessorManager.appendInstAwareProcessorClass(clazz);\r\n };\r\n ApplicationContext.prototype.onPreDestroy = function (listener) {\r\n return this.eventEmitter.on(PRE_DESTROY_EVENT_KEY, listener);\r\n };\r\n ApplicationContext.prototype.getClassMetadata = function (ctor) {\r\n return ClassMetadata.getInstance(ctor).reader();\r\n };\r\n return ApplicationContext;\r\n}());\n\nexports.ApplicationContext = ApplicationContext;\nexports.Bind = Bind;\nexports.Factory = Factory;\nexports.Inject = Inject;\nexports.Mark = Mark;\nexports.PostInject = PostInject;\nexports.PreDestroy = PreDestroy;\nexports.PreInject = PreInject;\nexports.Scope = Scope;\nexports.Value = Value;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzLmpzIiwic291cmNlcyI6WyIuLi9zcmMvZm91bmRhdGlvbi9TZXJ2aWNlRmFjdG9yeURlZi50cyIsIi4uL3NyYy9tZXRhZGF0YS9HbG9iYWxNZXRhZGF0YS50cyIsIi4uL3NyYy9mb3VuZGF0aW9uL0luc3RhbmNlU2NvcGUudHMiLCIuLi9zcmMvY29tbW9uL0RlZmF1bHRWYWx1ZU1hcC50cyIsIi4uL25vZGVfbW9kdWxlcy9yZWZsZWN0LW1ldGFkYXRhL1JlZmxlY3QuanMiLCIuLi9zcmMvbWV0YWRhdGEvTWV0YWRhdGFGYWN0b3J5LnRzIiwiLi4vc3JjL21ldGFkYXRhL0NsYXNzTWV0YWRhdGEudHMiLCIuLi9zcmMvZGVjb3JhdG9ycy9CaW5kLnRzIiwiLi4vc3JjL2RlY29yYXRvcnMvU2NvcGUudHMiLCIuLi9zcmMvZGVjb3JhdG9ycy9JbmplY3QudHMiLCIuLi9zcmMvZGVjb3JhdG9ycy9GYWN0b3J5LnRzIiwiLi4vc3JjL2ZvdW5kYXRpb24vTGlmZWN5Y2xlLnRzIiwiLi4vc3JjL2RlY29yYXRvcnMvTGlmZWN5Y2xlRGVjb3JhdG9yLnRzIiwiLi4vc3JjL2RlY29yYXRvcnMvUG9zdEluamVjdC50cyIsIi4uL3NyYy9kZWNvcmF0b3JzL1ByZUluamVjdC50cyIsIi4uL3NyYy9kZWNvcmF0b3JzL1ByZURlc3Ryb3kudHMiLCIuLi9zcmMvdHlwZXMvRXZhbHVhdGVPcHRpb25zLnRzIiwiLi4vc3JjL2NvbW1vbi9pc05vZGVKcy50cyIsIi4uL3NyYy9kZWNvcmF0b3JzL1ZhbHVlLnRzIiwiLi4vc3JjL2RlY29yYXRvcnMvTWFyay50cyIsIi4uL3NyYy9mb3VuZGF0aW9uL0V2ZW50RW1pdHRlci50cyIsIi4uL3NyYy9mb3VuZGF0aW9uL0ludm9rZUZ1bmN0aW9uT3B0aW9ucy50cyIsIi4uL25vZGVfbW9kdWxlcy9AdmdlcmJvdC9sYXp5L2Rpc3QvaW5kZXguY2pzLmpzIiwiLi4vc3JjL2ZvdW5kYXRpb24vTGlmZWN5Y2xlTWFuYWdlci50cyIsIi4uL3NyYy9mb3VuZGF0aW9uL0NvbXBvbmVudEluc3RhbmNlQnVpbGRlci50cyIsIi4uL3NyYy9tZXRhZGF0YS9GdW5jdGlvbk1ldGFkYXRhLnRzIiwiLi4vc3JjL2ZvdW5kYXRpb24vQ29tcG9uZW50SW5zdGFuY2VXcmFwcGVyLnRzIiwiLi4vc3JjL2NvbW1vbi9pbnZva2VQcmVEZXN0cm95LnRzIiwiLi4vc3JjL3Jlc29sdXRpb24vU2luZ2xldG9uSW5zdGFuY2VSZXNvbHV0aW9uLnRzIiwiLi4vc3JjL3Jlc29sdXRpb24vR2xvYmFsU2hhcmVkSW5zdGFuY2VSZXNvbHV0aW9uLnRzIiwiLi4vc3JjL3Jlc29sdXRpb24vVHJhbnNpZW50SW5zdGFuY2VSZXNvbHV0aW9uLnRzIiwiLi4vc3JjL2V2YWx1YXRvci9KU09ORGF0YUV2YWx1YXRvci50cyIsIi4uL3NyYy9ldmFsdWF0b3IvRW52aXJvbm1lbnRFdmFsdWF0b3IudHMiLCIuLi9zcmMvZXZhbHVhdG9yL0FyZ3ZFdmFsdWF0b3IudHMiLCIuLi9zcmMvYW9wL0FkdmljZS50cyIsIi4uL3NyYy9hb3AvQXNwZWN0VXRpbHMudHMiLCIuLi9zcmMvYW9wL2NyZWF0ZUFzcGVjdC50cyIsIi4uL3NyYy9hb3AvQU9QQ2xhc3NNZXRhZGF0YS50cyIsIi4uL3NyYy9hb3AvQU9QSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yLnRzIiwiLi4vc3JjL2ZvdW5kYXRpb24vSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yTWFuYWdlci50cyIsIi4uL3NyYy9mb3VuZGF0aW9uL0FwcGxpY2F0aW9uQ29udGV4dC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZXJ2aWNlRmFjdG9yeSB9IGZyb20gJy4uL3R5cGVzL1NlcnZpY2VGYWN0b3J5JztcbmltcG9ydCB7IElkZW50aWZpZXIgfSBmcm9tICcuLi90eXBlcy9JZGVudGlmaWVyJztcbmltcG9ydCB7IENsYXNzTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS9DbGFzc01ldGFkYXRhJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gJy4vQXBwbGljYXRpb25Db250ZXh0JztcblxuZXhwb3J0IGNsYXNzIFNlcnZpY2VGYWN0b3J5RGVmPFQ+IHtcbiAgICBzdGF0aWMgY3JlYXRlRnJvbUNsYXNzTWV0YWRhdGE8VD4obWV0YWRhdGE6IENsYXNzTWV0YWRhdGE8VD4pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXJ2aWNlRmFjdG9yeURlZigoY29udGFpbmVyOiBBcHBsaWNhdGlvbkNvbnRleHQsIG93bmVyOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG1ldGFkYXRhLnJlYWRlcigpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsYXp6ID0gcmVhZGVyLmdldENsYXNzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lci5nZXRJbnN0YW5jZShjbGF6eiwgb3duZXIpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBmYWN0b3J5OiBTZXJ2aWNlRmFjdG9yeTxULCB1bmtub3duPiwgcHVibGljIHJlYWRvbmx5IGluamVjdGlvbnM/OiBJZGVudGlmaWVyW10pIHt9XG59XG4iLCJpbXBvcnQgeyBNZXRhZGF0YSB9IGZyb20gJy4uL3R5cGVzL01ldGFkYXRhJztcbmltcG9ydCB7IElkZW50aWZpZXIgfSBmcm9tICcuLi90eXBlcy9JZGVudGlmaWVyJztcbmltcG9ydCB7IFNlcnZpY2VGYWN0b3J5IH0gZnJvbSAnLi4vdHlwZXMvU2VydmljZUZhY3RvcnknO1xuaW1wb3J0IHsgRmFjdG9yeUlkZW50aWZpZXIgfSBmcm9tICcuLi90eXBlcy9GYWN0b3J5SWRlbnRpZmllcic7XG5pbXBvcnQgeyBDbGFzc01ldGFkYXRhIH0gZnJvbSAnLi9DbGFzc01ldGFkYXRhJztcbmltcG9ydCB7IFNlcnZpY2VGYWN0b3J5RGVmIH0gZnJvbSAnLi4vZm91bmRhdGlvbi9TZXJ2aWNlRmFjdG9yeURlZic7XG5pbXBvcnQgeyBOZXdhYmxlIH0gZnJvbSAnLi4vdHlwZXMvTmV3YWJsZSc7XG5pbXBvcnQgeyBQYXJ0aWFsSW5zdEF3YXJlUHJvY2Vzc29yIH0gZnJvbSAnLi4vdHlwZXMvSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yJztcblxuZXhwb3J0IGludGVyZmFjZSBHbG9iYWxNZXRhZGF0YVJlYWRlciB7XG4gICAgZ2V0Q29tcG9uZW50RmFjdG9yeTxUPihrZXk6IEZhY3RvcnlJZGVudGlmaWVyKTogU2VydmljZUZhY3RvcnlEZWY8VD4gfCB1bmRlZmluZWQ7XG4gICAgZ2V0Q2xhc3NNZXRhZGF0YTxUPihhbGlhc05hbWU6IHN0cmluZyB8IHN5bWJvbCk6IENsYXNzTWV0YWRhdGE8VD4gfCB1bmRlZmluZWQ7XG4gICAgZ2V0SW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcygpOiBBcnJheTxOZXdhYmxlPFBhcnRpYWxJbnN0QXdhcmVQcm9jZXNzb3I+Pjtcbn1cbmV4cG9ydCBjbGFzcyBHbG9iYWxNZXRhZGF0YSBpbXBsZW1lbnRzIE1ldGFkYXRhPEdsb2JhbE1ldGFkYXRhUmVhZGVyLCB2b2lkPiB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSU5TVEFOQ0UgPSBuZXcgR2xvYmFsTWV0YWRhdGEoKTtcbiAgICBzdGF0aWMgZ2V0SW5zdGFuY2UoKSB7XG4gICAgICAgIHJldHVybiBHbG9iYWxNZXRhZGF0YS5JTlNUQU5DRTtcbiAgICB9XG4gICAgcHJpdmF0ZSBjbGFzc0FsaWFzTWV0YWRhdGFNYXAgPSBuZXcgTWFwPHN0cmluZyB8IHN5bWJvbCwgQ2xhc3NNZXRhZGF0YTx1bmtub3duPj4oKTtcbiAgICBwcml2YXRlIGNvbXBvbmVudEZhY3RvcmllcyA9IG5ldyBNYXA8RmFjdG9yeUlkZW50aWZpZXIsIFNlcnZpY2VGYWN0b3J5RGVmPHVua25vd24+PigpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvY2Vzc29yQ2xhc3NlczogU2V0PE5ld2FibGU8UGFydGlhbEluc3RBd2FyZVByb2Nlc3Nvcj4+ID0gbmV3IFNldCgpO1xuICAgIHJlY29yZEZhY3Rvcnk8VD4oc3ltYm9sOiBGYWN0b3J5SWRlbnRpZmllciwgZmFjdG9yeTogU2VydmljZUZhY3Rvcnk8VCwgdW5rbm93bj4sIGluamVjdGlvbnM/OiBJZGVudGlmaWVyW10pIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnRGYWN0b3JpZXMuc2V0KHN5bWJvbCwgbmV3IFNlcnZpY2VGYWN0b3J5RGVmKGZhY3RvcnksIGluamVjdGlvbnMpKTtcbiAgICB9XG4gICAgcmVjb3JkQ2xhc3NBbGlhczxUPihhbGlhc05hbWU6IHN0cmluZyB8IHN5bWJvbCwgbWV0YWRhdGE6IENsYXNzTWV0YWRhdGE8VD4pIHtcbiAgICAgICAgdGhpcy5jbGFzc0FsaWFzTWV0YWRhdGFNYXAuc2V0KGFsaWFzTmFtZSwgbWV0YWRhdGEpO1xuICAgIH1cbiAgICByZWNvcmRQcm9jZXNzb3JDbGFzcyhjbGF6ejogTmV3YWJsZTxQYXJ0aWFsSW5zdEF3YXJlUHJvY2Vzc29yPikge1xuICAgICAgICB0aGlzLnByb2Nlc3NvckNsYXNzZXMuYWRkKGNsYXp6KTtcbiAgICB9XG4gICAgaW5pdCgpIHtcbiAgICAgICAgLy8gUEFTUztcbiAgICB9XG4gICAgcmVhZGVyKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0Q29tcG9uZW50RmFjdG9yeTogPFQ+KGtleTogRmFjdG9yeUlkZW50aWZpZXIpOiBTZXJ2aWNlRmFjdG9yeURlZjxUPiB8IHVuZGVmaW5lZCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50RmFjdG9yaWVzLmdldChrZXkpIGFzIFNlcnZpY2VGYWN0b3J5RGVmPFQ+IHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldENsYXNzTWV0YWRhdGE6IDxUPihhbGlhc05hbWU6IHN0cmluZyB8IHN5bWJvbCk6IENsYXNzTWV0YWRhdGE8VD4gfCB1bmRlZmluZWQgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsYXNzQWxpYXNNZXRhZGF0YU1hcC5nZXQoYWxpYXNOYW1lKSBhcyBDbGFzc01ldGFkYXRhPFQ+IHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldEluc3RBd2FyZVByb2Nlc3NvckNsYXNzZXM6ICgpOiBBcnJheTxOZXdhYmxlPFBhcnRpYWxJbnN0QXdhcmVQcm9jZXNzb3I+PiA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5wcm9jZXNzb3JDbGFzc2VzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCJleHBvcnQgZW51bSBJbnN0YW5jZVNjb3BlIHtcbiAgICBTSU5HTEVUT04gPSAnaW9jLXJlc29sdXRpb246Y29udGFpbmVyLXNpbmdsZXRvbicsXG4gICAgVFJBTlNJRU5UID0gJ2lvYy1yZXNvbHV0aW9uOnRyYW5zaWVudCcsXG4gICAgR0xPQkFMX1NIQVJFRF9TSU5HTEVUT04gPSAnaW9jLXJlc29sdXRpb246Z2xvYmFsLXNoYXJlZC1zaW5nbGV0b24nXG59XG4iLCJleHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVmYXVsdFZhbHVlTWFwPEssIFY+KGZhY3Rvcnk6IChrZXk6IEspID0+IFYpIHtcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPEssIFY+KCk7XG4gICAgY29uc3Qgb3JpZ2luR2V0ID0gbWFwLmdldC5iaW5kKG1hcCk7XG4gICAgbWFwLmdldCA9IGZ1bmN0aW9uIChrZXk6IEspIHtcbiAgICAgICAgaWYgKG1hcC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbkdldChrZXkpIGFzIFY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBmYWN0b3J5KGtleSk7XG4gICAgICAgICAgICBtYXAuc2V0KGtleSwgZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiBtYXAuZ2V0KGtleSkgYXMgVjtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIG1hcCBhcyBEZWZhdWx0VmFsdWVNYXA8SywgVj47XG59XG5leHBvcnQgdHlwZSBEZWZhdWx0VmFsdWVNYXA8SywgVj4gPSBPbWl0PE1hcDxLLCBWPiwgJ2dldCc+ICYge1xuICAgIGdldDogKGtleTogSykgPT4gVjtcbn07XG4iLCIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbkNvcHlyaWdodCAoQykgTWljcm9zb2Z0LiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlXG50aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZVxuTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVEhJUyBDT0RFIElTIFBST1ZJREVEIE9OIEFOICpBUyBJUyogQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxuS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBBTlkgSU1QTElFRFxuV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIFRJVExFLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSxcbk1FUkNIQU5UQUJMSVRZIE9SIE5PTi1JTkZSSU5HRU1FTlQuXG5cblNlZSB0aGUgQXBhY2hlIFZlcnNpb24gMi4wIExpY2Vuc2UgZm9yIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cbnZhciBSZWZsZWN0O1xuKGZ1bmN0aW9uIChSZWZsZWN0KSB7XG4gICAgLy8gTWV0YWRhdGEgUHJvcG9zYWxcbiAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhL1xuICAgIChmdW5jdGlvbiAoZmFjdG9yeSkge1xuICAgICAgICB2YXIgcm9vdCA9IHR5cGVvZiBnbG9iYWwgPT09IFwib2JqZWN0XCIgPyBnbG9iYWwgOlxuICAgICAgICAgICAgdHlwZW9mIHNlbGYgPT09IFwib2JqZWN0XCIgPyBzZWxmIDpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcyA9PT0gXCJvYmplY3RcIiA/IHRoaXMgOlxuICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbihcInJldHVybiB0aGlzO1wiKSgpO1xuICAgICAgICB2YXIgZXhwb3J0ZXIgPSBtYWtlRXhwb3J0ZXIoUmVmbGVjdCk7XG4gICAgICAgIGlmICh0eXBlb2Ygcm9vdC5SZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICByb290LlJlZmxlY3QgPSBSZWZsZWN0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZXhwb3J0ZXIgPSBtYWtlRXhwb3J0ZXIocm9vdC5SZWZsZWN0LCBleHBvcnRlcik7XG4gICAgICAgIH1cbiAgICAgICAgZmFjdG9yeShleHBvcnRlcik7XG4gICAgICAgIGZ1bmN0aW9uIG1ha2VFeHBvcnRlcih0YXJnZXQsIHByZXZpb3VzKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRhcmdldFtrZXldICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzKVxuICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyhrZXksIHZhbHVlKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9KShmdW5jdGlvbiAoZXhwb3J0ZXIpIHtcbiAgICAgICAgdmFyIGhhc093biA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG4gICAgICAgIC8vIGZlYXR1cmUgdGVzdCBmb3IgU3ltYm9sIHN1cHBvcnRcbiAgICAgICAgdmFyIHN1cHBvcnRzU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiO1xuICAgICAgICB2YXIgdG9QcmltaXRpdmVTeW1ib2wgPSBzdXBwb3J0c1N5bWJvbCAmJiB0eXBlb2YgU3ltYm9sLnRvUHJpbWl0aXZlICE9PSBcInVuZGVmaW5lZFwiID8gU3ltYm9sLnRvUHJpbWl0aXZlIDogXCJAQHRvUHJpbWl0aXZlXCI7XG4gICAgICAgIHZhciBpdGVyYXRvclN5bWJvbCA9IHN1cHBvcnRzU3ltYm9sICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgIT09IFwidW5kZWZpbmVkXCIgPyBTeW1ib2wuaXRlcmF0b3IgOiBcIkBAaXRlcmF0b3JcIjtcbiAgICAgICAgdmFyIHN1cHBvcnRzQ3JlYXRlID0gdHlwZW9mIE9iamVjdC5jcmVhdGUgPT09IFwiZnVuY3Rpb25cIjsgLy8gZmVhdHVyZSB0ZXN0IGZvciBPYmplY3QuY3JlYXRlIHN1cHBvcnRcbiAgICAgICAgdmFyIHN1cHBvcnRzUHJvdG8gPSB7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5OyAvLyBmZWF0dXJlIHRlc3QgZm9yIF9fcHJvdG9fXyBzdXBwb3J0XG4gICAgICAgIHZhciBkb3duTGV2ZWwgPSAhc3VwcG9ydHNDcmVhdGUgJiYgIXN1cHBvcnRzUHJvdG87XG4gICAgICAgIHZhciBIYXNoTWFwID0ge1xuICAgICAgICAgICAgLy8gY3JlYXRlIGFuIG9iamVjdCBpbiBkaWN0aW9uYXJ5IG1vZGUgKGEuay5hLiBcInNsb3dcIiBtb2RlIGluIHY4KVxuICAgICAgICAgICAgY3JlYXRlOiBzdXBwb3J0c0NyZWF0ZVxuICAgICAgICAgICAgICAgID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gTWFrZURpY3Rpb25hcnkoT2JqZWN0LmNyZWF0ZShudWxsKSk7IH1cbiAgICAgICAgICAgICAgICA6IHN1cHBvcnRzUHJvdG9cbiAgICAgICAgICAgICAgICAgICAgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBNYWtlRGljdGlvbmFyeSh7IF9fcHJvdG9fXzogbnVsbCB9KTsgfVxuICAgICAgICAgICAgICAgICAgICA6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE1ha2VEaWN0aW9uYXJ5KHt9KTsgfSxcbiAgICAgICAgICAgIGhhczogZG93bkxldmVsXG4gICAgICAgICAgICAgICAgPyBmdW5jdGlvbiAobWFwLCBrZXkpIHsgcmV0dXJuIGhhc093bi5jYWxsKG1hcCwga2V5KTsgfVxuICAgICAgICAgICAgICAgIDogZnVuY3Rpb24gKG1hcCwga2V5KSB7IHJldHVybiBrZXkgaW4gbWFwOyB9LFxuICAgICAgICAgICAgZ2V0OiBkb3duTGV2ZWxcbiAgICAgICAgICAgICAgICA/IGZ1bmN0aW9uIChtYXAsIGtleSkgeyByZXR1cm4gaGFzT3duLmNhbGwobWFwLCBrZXkpID8gbWFwW2tleV0gOiB1bmRlZmluZWQ7IH1cbiAgICAgICAgICAgICAgICA6IGZ1bmN0aW9uIChtYXAsIGtleSkgeyByZXR1cm4gbWFwW2tleV07IH0sXG4gICAgICAgIH07XG4gICAgICAgIC8vIExvYWQgZ2xvYmFsIG9yIHNoaW0gdmVyc2lvbnMgb2YgTWFwLCBTZXQsIGFuZCBXZWFrTWFwXG4gICAgICAgIHZhciBmdW5jdGlvblByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihGdW5jdGlvbik7XG4gICAgICAgIHZhciB1c2VQb2x5ZmlsbCA9IHR5cGVvZiBwcm9jZXNzID09PSBcIm9iamVjdFwiICYmIHByb2Nlc3MuZW52ICYmIHByb2Nlc3MuZW52W1wiUkVGTEVDVF9NRVRBREFUQV9VU0VfTUFQX1BPTFlGSUxMXCJdID09PSBcInRydWVcIjtcbiAgICAgICAgdmFyIF9NYXAgPSAhdXNlUG9seWZpbGwgJiYgdHlwZW9mIE1hcCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBNYXAucHJvdG90eXBlLmVudHJpZXMgPT09IFwiZnVuY3Rpb25cIiA/IE1hcCA6IENyZWF0ZU1hcFBvbHlmaWxsKCk7XG4gICAgICAgIHZhciBfU2V0ID0gIXVzZVBvbHlmaWxsICYmIHR5cGVvZiBTZXQgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU2V0LnByb3RvdHlwZS5lbnRyaWVzID09PSBcImZ1bmN0aW9uXCIgPyBTZXQgOiBDcmVhdGVTZXRQb2x5ZmlsbCgpO1xuICAgICAgICB2YXIgX1dlYWtNYXAgPSAhdXNlUG9seWZpbGwgJiYgdHlwZW9mIFdlYWtNYXAgPT09IFwiZnVuY3Rpb25cIiA/IFdlYWtNYXAgOiBDcmVhdGVXZWFrTWFwUG9seWZpbGwoKTtcbiAgICAgICAgLy8gW1tNZXRhZGF0YV1dIGludGVybmFsIHNsb3RcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnktb2JqZWN0LWludGVybmFsLW1ldGhvZHMtYW5kLWludGVybmFsLXNsb3RzXG4gICAgICAgIHZhciBNZXRhZGF0YSA9IG5ldyBfV2Vha01hcCgpO1xuICAgICAgICAvKipcbiAgICAgICAgICogQXBwbGllcyBhIHNldCBvZiBkZWNvcmF0b3JzIHRvIGEgcHJvcGVydHkgb2YgYSB0YXJnZXQgb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0gZGVjb3JhdG9ycyBBbiBhcnJheSBvZiBkZWNvcmF0b3JzLlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IHRvIGRlY29yYXRlLlxuICAgICAgICAgKiBAcGFyYW0gYXR0cmlidXRlcyAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgdGFyZ2V0IGtleS5cbiAgICAgICAgICogQHJlbWFya3MgRGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpbiByZXZlcnNlIG9yZGVyLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHkgZGVjbGFyYXRpb25zIGFyZSBub3QgcGFydCBvZiBFUzYsIHRob3VnaCB0aGV5IGFyZSB2YWxpZCBpbiBUeXBlU2NyaXB0OlxuICAgICAgICAgKiAgICAgICAgIC8vIHN0YXRpYyBzdGF0aWNQcm9wZXJ0eTtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgICAgICBjb25zdHJ1Y3RvcihwKSB7IH1cbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIG1ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICBFeGFtcGxlID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzQXJyYXksIEV4YW1wbGUpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzQXJyYXksIEV4YW1wbGUsIFwic3RhdGljUHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzQXJyYXksIEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiLFxuICAgICAgICAgKiAgICAgICAgIFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9yc0FycmF5LCBFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiLFxuICAgICAgICAgKiAgICAgICAgICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIpKSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIixcbiAgICAgICAgICogICAgICAgICBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnNBcnJheSwgRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIsXG4gICAgICAgICAqICAgICAgICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIpKSk7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBkZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIHByb3BlcnR5S2V5LCBhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSkge1xuICAgICAgICAgICAgICAgIGlmICghSXNBcnJheShkZWNvcmF0b3JzKSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QoYXR0cmlidXRlcykgJiYgIUlzVW5kZWZpbmVkKGF0dHJpYnV0ZXMpICYmICFJc051bGwoYXR0cmlidXRlcykpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgICAgICBpZiAoSXNOdWxsKGF0dHJpYnV0ZXMpKVxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIERlY29yYXRlUHJvcGVydHkoZGVjb3JhdG9ycywgdGFyZ2V0LCBwcm9wZXJ0eUtleSwgYXR0cmlidXRlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIUlzQXJyYXkoZGVjb3JhdG9ycykpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgICAgICBpZiAoIUlzQ29uc3RydWN0b3IodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIHJldHVybiBEZWNvcmF0ZUNvbnN0cnVjdG9yKGRlY29yYXRvcnMsIHRhcmdldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJkZWNvcmF0ZVwiLCBkZWNvcmF0ZSk7XG4gICAgICAgIC8vIDQuMS4yIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpXG4gICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI3JlZmxlY3QubWV0YWRhdGFcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEEgZGVmYXVsdCBtZXRhZGF0YSBkZWNvcmF0b3IgZmFjdG9yeSB0aGF0IGNhbiBiZSB1c2VkIG9uIGEgY2xhc3MsIGNsYXNzIG1lbWJlciwgb3IgcGFyYW1ldGVyLlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgVGhlIGtleSBmb3IgdGhlIG1ldGFkYXRhIGVudHJ5LlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFWYWx1ZSBUaGUgdmFsdWUgZm9yIHRoZSBtZXRhZGF0YSBlbnRyeS5cbiAgICAgICAgICogQHJldHVybnMgQSBkZWNvcmF0b3IgZnVuY3Rpb24uXG4gICAgICAgICAqIEByZW1hcmtzXG4gICAgICAgICAqIElmIGBtZXRhZGF0YUtleWAgaXMgYWxyZWFkeSBkZWZpbmVkIGZvciB0aGUgdGFyZ2V0IGFuZCB0YXJnZXQga2V5LCB0aGVcbiAgICAgICAgICogbWV0YWRhdGFWYWx1ZSBmb3IgdGhhdCBrZXkgd2lsbCBiZSBvdmVyd3JpdHRlbi5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICBAUmVmbGVjdC5tZXRhZGF0YShrZXksIHZhbHVlKVxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IsIFR5cGVTY3JpcHQgb25seSlcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIEBSZWZsZWN0Lm1ldGFkYXRhKGtleSwgdmFsdWUpXG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSwgVHlwZVNjcmlwdCBvbmx5KVxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgQFJlZmxlY3QubWV0YWRhdGEoa2V5LCB2YWx1ZSlcbiAgICAgICAgICogICAgICAgICBwcm9wZXJ0eTtcbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICBAUmVmbGVjdC5tZXRhZGF0YShrZXksIHZhbHVlKVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QoKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgQFJlZmxlY3QubWV0YWRhdGEoa2V5LCB2YWx1ZSlcbiAgICAgICAgICogICAgICAgICBtZXRob2QoKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIG1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XG4gICAgICAgICAgICBmdW5jdGlvbiBkZWNvcmF0b3IodGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpICYmICFJc1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIE9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRlY29yYXRvcjtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcIm1ldGFkYXRhXCIsIG1ldGFkYXRhKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlZmluZSBhIHVuaXF1ZSBtZXRhZGF0YSBlbnRyeSBvbiB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgQSBrZXkgdXNlZCB0byBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSBtZXRhZGF0YVZhbHVlIEEgdmFsdWUgdGhhdCBjb250YWlucyBhdHRhY2hlZCBtZXRhZGF0YS5cbiAgICAgICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCBvbiB3aGljaCB0byBkZWZpbmUgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBvcHRpb25zLCBFeGFtcGxlKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBvcHRpb25zLCBFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBvcHRpb25zLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJwcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgb3B0aW9ucywgRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBvcHRpb25zLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBkZWNvcmF0b3IgZmFjdG9yeSBhcyBtZXRhZGF0YS1wcm9kdWNpbmcgYW5ub3RhdGlvbi5cbiAgICAgICAgICogICAgIGZ1bmN0aW9uIE15QW5ub3RhdGlvbihvcHRpb25zKTogRGVjb3JhdG9yIHtcbiAgICAgICAgICogICAgICAgICByZXR1cm4gKHRhcmdldCwga2V5PykgPT4gUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIG9wdGlvbnMsIHRhcmdldCwga2V5KTtcbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGRlZmluZU1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlLCB0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHRhcmdldCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkpXG4gICAgICAgICAgICAgICAgcHJvcGVydHlLZXkgPSBUb1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeURlZmluZU93bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcImRlZmluZU1ldGFkYXRhXCIsIGRlZmluZU1ldGFkYXRhKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHRhcmdldCBvYmplY3Qgb3IgaXRzIHByb3RvdHlwZSBjaGFpbiBoYXMgdGhlIHByb3ZpZGVkIG1ldGFkYXRhIGtleSBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgQSBrZXkgdXNlZCB0byBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGFkYXRhIGlzIGRlZmluZWQuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbWV0YWRhdGEga2V5IHdhcyBkZWZpbmVkIG9uIHRoZSB0YXJnZXQgb2JqZWN0IG9yIGl0cyBwcm90b3R5cGUgY2hhaW47IG90aGVyd2lzZSwgYGZhbHNlYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5IGRlY2xhcmF0aW9ucyBhcmUgbm90IHBhcnQgb2YgRVM2LCB0aG91Z2ggdGhleSBhcmUgdmFsaWQgaW4gVHlwZVNjcmlwdDpcbiAgICAgICAgICogICAgICAgICAvLyBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAgICAgY29uc3RydWN0b3IocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgICAgICBtZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBjb25zdHJ1Y3RvclxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUsIFwic3RhdGljUHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuaGFzTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUucHJvdG90eXBlLCBcIm1ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGhhc01ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHRhcmdldCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkpXG4gICAgICAgICAgICAgICAgcHJvcGVydHlLZXkgPSBUb1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeUhhc01ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcImhhc01ldGFkYXRhXCIsIGhhc01ldGFkYXRhKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHRhcmdldCBvYmplY3QgaGFzIHRoZSBwcm92aWRlZCBtZXRhZGF0YSBrZXkgZGVmaW5lZC5cbiAgICAgICAgICogQHBhcmFtIG1ldGFkYXRhS2V5IEEga2V5IHVzZWQgdG8gc3RvcmUgYW5kIHJldHJpZXZlIG1ldGFkYXRhLlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRhZGF0YSBpcyBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IGZvciB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG1ldGFkYXRhIGtleSB3YXMgZGVmaW5lZCBvbiB0aGUgdGFyZ2V0IG9iamVjdDsgb3RoZXJ3aXNlLCBgZmFsc2VgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHkgZGVjbGFyYXRpb25zIGFyZSBub3QgcGFydCBvZiBFUzYsIHRob3VnaCB0aGV5IGFyZSB2YWxpZCBpbiBUeXBlU2NyaXB0OlxuICAgICAgICAgKiAgICAgICAgIC8vIHN0YXRpYyBzdGF0aWNQcm9wZXJ0eTtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgICAgICBjb25zdHJ1Y3RvcihwKSB7IH1cbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIG1ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc093bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc093bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNQcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc093bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwicHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNPd25NZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc093bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gaGFzT3duTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUtleSA9IFRvUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgcmV0dXJuIE9yZGluYXJ5SGFzT3duTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGV4cG9ydGVyKFwiaGFzT3duTWV0YWRhdGFcIiwgaGFzT3duTWV0YWRhdGEpO1xuICAgICAgICAvKipcbiAgICAgICAgICogR2V0cyB0aGUgbWV0YWRhdGEgdmFsdWUgZm9yIHRoZSBwcm92aWRlZCBtZXRhZGF0YSBrZXkgb24gdGhlIHRhcmdldCBvYmplY3Qgb3IgaXRzIHByb3RvdHlwZSBjaGFpbi5cbiAgICAgICAgICogQHBhcmFtIG1ldGFkYXRhS2V5IEEga2V5IHVzZWQgdG8gc3RvcmUgYW5kIHJldHJpZXZlIG1ldGFkYXRhLlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRhZGF0YSBpcyBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IGZvciB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAcmV0dXJucyBUaGUgbWV0YWRhdGEgdmFsdWUgZm9yIHRoZSBtZXRhZGF0YSBrZXkgaWYgZm91bmQ7IG90aGVyd2lzZSwgYHVuZGVmaW5lZGAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJwcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBnZXRNZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlHZXRNZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJnZXRNZXRhZGF0YVwiLCBnZXRNZXRhZGF0YSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBtZXRhZGF0YSB2YWx1ZSBmb3IgdGhlIHByb3ZpZGVkIG1ldGFkYXRhIGtleSBvbiB0aGUgdGFyZ2V0IG9iamVjdC5cbiAgICAgICAgICogQHBhcmFtIG1ldGFkYXRhS2V5IEEga2V5IHVzZWQgdG8gc3RvcmUgYW5kIHJldHJpZXZlIG1ldGFkYXRhLlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRhZGF0YSBpcyBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IGZvciB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAcmV0dXJucyBUaGUgbWV0YWRhdGEgdmFsdWUgZm9yIHRoZSBtZXRhZGF0YSBrZXkgaWYgZm91bmQ7IG90aGVyd2lzZSwgYHVuZGVmaW5lZGAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJwcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBnZXRPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlHZXRPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJnZXRPd25NZXRhZGF0YVwiLCBnZXRPd25NZXRhZGF0YSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBtZXRhZGF0YSBrZXlzIGRlZmluZWQgb24gdGhlIHRhcmdldCBvYmplY3Qgb3IgaXRzIHByb3RvdHlwZSBjaGFpbi5cbiAgICAgICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCBvbiB3aGljaCB0aGUgbWV0YWRhdGEgaXMgZGVmaW5lZC5cbiAgICAgICAgICogQHBhcmFtIHByb3BlcnR5S2V5IChPcHRpb25hbCkgVGhlIHByb3BlcnR5IGtleSBmb3IgdGhlIHRhcmdldC5cbiAgICAgICAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgdW5pcXVlIG1ldGFkYXRhIGtleXMuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGFLZXlzKEV4YW1wbGUpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YUtleXMoRXhhbXBsZSwgXCJzdGF0aWNQcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE1ldGFkYXRhS2V5cyhFeGFtcGxlLnByb3RvdHlwZSwgXCJwcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE1ldGFkYXRhS2V5cyhFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YUtleXMoRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZ2V0TWV0YWRhdGFLZXlzKHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUtleSA9IFRvUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgcmV0dXJuIE9yZGluYXJ5TWV0YWRhdGFLZXlzKHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGV4cG9ydGVyKFwiZ2V0TWV0YWRhdGFLZXlzXCIsIGdldE1ldGFkYXRhS2V5cyk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIHRoZSB1bmlxdWUgbWV0YWRhdGEga2V5cyBkZWZpbmVkIG9uIHRoZSB0YXJnZXQgb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRhZGF0YSBpcyBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IGZvciB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiB1bmlxdWUgbWV0YWRhdGEga2V5cy5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5IGRlY2xhcmF0aW9ucyBhcmUgbm90IHBhcnQgb2YgRVM2LCB0aG91Z2ggdGhleSBhcmUgdmFsaWQgaW4gVHlwZVNjcmlwdDpcbiAgICAgICAgICogICAgICAgICAvLyBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAgICAgY29uc3RydWN0b3IocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgICAgICBtZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBjb25zdHJ1Y3RvclxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YUtleXMoRXhhbXBsZSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhS2V5cyhFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGFLZXlzKEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGFLZXlzKEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhS2V5cyhFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBnZXRPd25NZXRhZGF0YUtleXModGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlPd25NZXRhZGF0YUtleXModGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJnZXRPd25NZXRhZGF0YUtleXNcIiwgZ2V0T3duTWV0YWRhdGFLZXlzKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlbGV0ZXMgdGhlIG1ldGFkYXRhIGVudHJ5IGZyb20gdGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgcHJvdmlkZWQga2V5LlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgQSBrZXkgdXNlZCB0byBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGFkYXRhIGlzIGRlZmluZWQuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbWV0YWRhdGEgZW50cnkgd2FzIGZvdW5kIGFuZCBkZWxldGVkOyBvdGhlcndpc2UsIGZhbHNlLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHkgZGVjbGFyYXRpb25zIGFyZSBub3QgcGFydCBvZiBFUzYsIHRob3VnaCB0aGV5IGFyZSB2YWxpZCBpbiBUeXBlU2NyaXB0OlxuICAgICAgICAgKiAgICAgICAgIC8vIHN0YXRpYyBzdGF0aWNQcm9wZXJ0eTtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgICAgICBjb25zdHJ1Y3RvcihwKSB7IH1cbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIG1ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmRlbGV0ZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmRlbGV0ZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNQcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmRlbGV0ZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwicHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5kZWxldGVNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmRlbGV0ZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZGVsZXRlTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUtleSA9IFRvUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgdmFyIG1ldGFkYXRhTWFwID0gR2V0T3JDcmVhdGVNZXRhZGF0YU1hcCh0YXJnZXQsIHByb3BlcnR5S2V5LCAvKkNyZWF0ZSovIGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZChtZXRhZGF0YU1hcCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgaWYgKCFtZXRhZGF0YU1hcC5kZWxldGUobWV0YWRhdGFLZXkpKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGlmIChtZXRhZGF0YU1hcC5zaXplID4gMClcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIHZhciB0YXJnZXRNZXRhZGF0YSA9IE1ldGFkYXRhLmdldCh0YXJnZXQpO1xuICAgICAgICAgICAgdGFyZ2V0TWV0YWRhdGEuZGVsZXRlKHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIGlmICh0YXJnZXRNZXRhZGF0YS5zaXplID4gMClcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIE1ldGFkYXRhLmRlbGV0ZSh0YXJnZXQpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJkZWxldGVNZXRhZGF0YVwiLCBkZWxldGVNZXRhZGF0YSk7XG4gICAgICAgIGZ1bmN0aW9uIERlY29yYXRlQ29uc3RydWN0b3IoZGVjb3JhdG9ycywgdGFyZ2V0KSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICAgICAgICAgIHZhciBkZWNvcmF0b3IgPSBkZWNvcmF0b3JzW2ldO1xuICAgICAgICAgICAgICAgIHZhciBkZWNvcmF0ZWQgPSBkZWNvcmF0b3IodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKGRlY29yYXRlZCkgJiYgIUlzTnVsbChkZWNvcmF0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNDb25zdHJ1Y3RvcihkZWNvcmF0ZWQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSBkZWNvcmF0ZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBEZWNvcmF0ZVByb3BlcnR5KGRlY29yYXRvcnMsIHRhcmdldCwgcHJvcGVydHlLZXksIGRlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRlY29yYXRvciA9IGRlY29yYXRvcnNbaV07XG4gICAgICAgICAgICAgICAgdmFyIGRlY29yYXRlZCA9IGRlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5S2V5LCBkZXNjcmlwdG9yKTtcbiAgICAgICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKGRlY29yYXRlZCkgJiYgIUlzTnVsbChkZWNvcmF0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QoZGVjb3JhdGVkKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvciA9IGRlY29yYXRlZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBHZXRPckNyZWF0ZU1ldGFkYXRhTWFwKE8sIFAsIENyZWF0ZSkge1xuICAgICAgICAgICAgdmFyIHRhcmdldE1ldGFkYXRhID0gTWV0YWRhdGEuZ2V0KE8pO1xuICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKHRhcmdldE1ldGFkYXRhKSkge1xuICAgICAgICAgICAgICAgIGlmICghQ3JlYXRlKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRhcmdldE1ldGFkYXRhID0gbmV3IF9NYXAoKTtcbiAgICAgICAgICAgICAgICBNZXRhZGF0YS5zZXQoTywgdGFyZ2V0TWV0YWRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIG1ldGFkYXRhTWFwID0gdGFyZ2V0TWV0YWRhdGEuZ2V0KFApO1xuICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKG1ldGFkYXRhTWFwKSkge1xuICAgICAgICAgICAgICAgIGlmICghQ3JlYXRlKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIG1ldGFkYXRhTWFwID0gbmV3IF9NYXAoKTtcbiAgICAgICAgICAgICAgICB0YXJnZXRNZXRhZGF0YS5zZXQoUCwgbWV0YWRhdGFNYXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG1ldGFkYXRhTWFwO1xuICAgICAgICB9XG4gICAgICAgIC8vIDMuMS4xLjEgT3JkaW5hcnlIYXNNZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUClcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnloYXNtZXRhZGF0YVxuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeUhhc01ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gICAgICAgICAgICB2YXIgaGFzT3duID0gT3JkaW5hcnlIYXNPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCk7XG4gICAgICAgICAgICBpZiAoaGFzT3duKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgdmFyIHBhcmVudCA9IE9yZGluYXJ5R2V0UHJvdG90eXBlT2YoTyk7XG4gICAgICAgICAgICBpZiAoIUlzTnVsbChwYXJlbnQpKVxuICAgICAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeUhhc01ldGFkYXRhKE1ldGFkYXRhS2V5LCBwYXJlbnQsIFApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIDMuMS4yLjEgT3JkaW5hcnlIYXNPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUClcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnloYXNvd25tZXRhZGF0YVxuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeUhhc093bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gICAgICAgICAgICB2YXIgbWV0YWRhdGFNYXAgPSBHZXRPckNyZWF0ZU1ldGFkYXRhTWFwKE8sIFAsIC8qQ3JlYXRlKi8gZmFsc2UpO1xuICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKG1ldGFkYXRhTWFwKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gVG9Cb29sZWFuKG1ldGFkYXRhTWFwLmhhcyhNZXRhZGF0YUtleSkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIDMuMS4zLjEgT3JkaW5hcnlHZXRNZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUClcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnlnZXRtZXRhZGF0YVxuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeUdldE1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gICAgICAgICAgICB2YXIgaGFzT3duID0gT3JkaW5hcnlIYXNPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCk7XG4gICAgICAgICAgICBpZiAoaGFzT3duKVxuICAgICAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeUdldE93bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKTtcbiAgICAgICAgICAgIHZhciBwYXJlbnQgPSBPcmRpbmFyeUdldFByb3RvdHlwZU9mKE8pO1xuICAgICAgICAgICAgaWYgKCFJc051bGwocGFyZW50KSlcbiAgICAgICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlHZXRNZXRhZGF0YShNZXRhZGF0YUtleSwgcGFyZW50LCBQKTtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMy4xLjQuMSBPcmRpbmFyeUdldE93bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKVxuICAgICAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhLyNvcmRpbmFyeWdldG93bm1ldGFkYXRhXG4gICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5R2V0T3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApIHtcbiAgICAgICAgICAgIHZhciBtZXRhZGF0YU1hcCA9IEdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoTywgUCwgLypDcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoSXNVbmRlZmluZWQobWV0YWRhdGFNYXApKVxuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICByZXR1cm4gbWV0YWRhdGFNYXAuZ2V0KE1ldGFkYXRhS2V5KTtcbiAgICAgICAgfVxuICAgICAgICAvLyAzLjEuNS4xIE9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE1ldGFkYXRhVmFsdWUsIE8sIFApXG4gICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI29yZGluYXJ5ZGVmaW5lb3dubWV0YWRhdGFcbiAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTWV0YWRhdGFWYWx1ZSwgTywgUCkge1xuICAgICAgICAgICAgdmFyIG1ldGFkYXRhTWFwID0gR2V0T3JDcmVhdGVNZXRhZGF0YU1hcChPLCBQLCAvKkNyZWF0ZSovIHRydWUpO1xuICAgICAgICAgICAgbWV0YWRhdGFNYXAuc2V0KE1ldGFkYXRhS2V5LCBNZXRhZGF0YVZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyAzLjEuNi4xIE9yZGluYXJ5TWV0YWRhdGFLZXlzKE8sIFApXG4gICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI29yZGluYXJ5bWV0YWRhdGFrZXlzXG4gICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5TWV0YWRhdGFLZXlzKE8sIFApIHtcbiAgICAgICAgICAgIHZhciBvd25LZXlzID0gT3JkaW5hcnlPd25NZXRhZGF0YUtleXMoTywgUCk7XG4gICAgICAgICAgICB2YXIgcGFyZW50ID0gT3JkaW5hcnlHZXRQcm90b3R5cGVPZihPKTtcbiAgICAgICAgICAgIGlmIChwYXJlbnQgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG93bktleXM7XG4gICAgICAgICAgICB2YXIgcGFyZW50S2V5cyA9IE9yZGluYXJ5TWV0YWRhdGFLZXlzKHBhcmVudCwgUCk7XG4gICAgICAgICAgICBpZiAocGFyZW50S2V5cy5sZW5ndGggPD0gMClcbiAgICAgICAgICAgICAgICByZXR1cm4gb3duS2V5cztcbiAgICAgICAgICAgIGlmIChvd25LZXlzLmxlbmd0aCA8PSAwKVxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnRLZXlzO1xuICAgICAgICAgICAgdmFyIHNldCA9IG5ldyBfU2V0KCk7XG4gICAgICAgICAgICB2YXIga2V5cyA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBvd25LZXlzXzEgPSBvd25LZXlzOyBfaSA8IG93bktleXNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0gb3duS2V5c18xW19pXTtcbiAgICAgICAgICAgICAgICB2YXIgaGFzS2V5ID0gc2V0LmhhcyhrZXkpO1xuICAgICAgICAgICAgICAgIGlmICghaGFzS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHNldC5hZGQoa2V5KTtcbiAgICAgICAgICAgICAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICh2YXIgX2EgPSAwLCBwYXJlbnRLZXlzXzEgPSBwYXJlbnRLZXlzOyBfYSA8IHBhcmVudEtleXNfMS5sZW5ndGg7IF9hKyspIHtcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0gcGFyZW50S2V5c18xW19hXTtcbiAgICAgICAgICAgICAgICB2YXIgaGFzS2V5ID0gc2V0LmhhcyhrZXkpO1xuICAgICAgICAgICAgICAgIGlmICghaGFzS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHNldC5hZGQoa2V5KTtcbiAgICAgICAgICAgICAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMy4xLjcuMSBPcmRpbmFyeU93bk1ldGFkYXRhS2V5cyhPLCBQKVxuICAgICAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhLyNvcmRpbmFyeW93bm1ldGFkYXRha2V5c1xuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeU93bk1ldGFkYXRhS2V5cyhPLCBQKSB7XG4gICAgICAgICAgICB2YXIga2V5cyA9IFtdO1xuICAgICAgICAgICAgdmFyIG1ldGFkYXRhTWFwID0gR2V0T3JDcmVhdGVNZXRhZGF0YU1hcChPLCBQLCAvKkNyZWF0ZSovIGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZChtZXRhZGF0YU1hcCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgICAgICAgICB2YXIga2V5c09iaiA9IG1ldGFkYXRhTWFwLmtleXMoKTtcbiAgICAgICAgICAgIHZhciBpdGVyYXRvciA9IEdldEl0ZXJhdG9yKGtleXNPYmopO1xuICAgICAgICAgICAgdmFyIGsgPSAwO1xuICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IEl0ZXJhdG9yU3RlcChpdGVyYXRvcik7XG4gICAgICAgICAgICAgICAgaWYgKCFuZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGtleXMubGVuZ3RoID0gaztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBuZXh0VmFsdWUgPSBJdGVyYXRvclZhbHVlKG5leHQpO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGtleXNba10gPSBuZXh0VmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvckNsb3NlKGl0ZXJhdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaysrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIDYgRUNNQVNjcmlwdCBEYXRhIFR5cDBlcyBhbmQgVmFsdWVzXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWVjbWFzY3JpcHQtZGF0YS10eXBlcy1hbmQtdmFsdWVzXG4gICAgICAgIGZ1bmN0aW9uIFR5cGUoeCkge1xuICAgICAgICAgICAgaWYgKHggPT09IG51bGwpXG4gICAgICAgICAgICAgICAgcmV0dXJuIDEgLyogTnVsbCAqLztcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZW9mIHgpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwidW5kZWZpbmVkXCI6IHJldHVybiAwIC8qIFVuZGVmaW5lZCAqLztcbiAgICAgICAgICAgICAgICBjYXNlIFwiYm9vbGVhblwiOiByZXR1cm4gMiAvKiBCb29sZWFuICovO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdcIjogcmV0dXJuIDMgLyogU3RyaW5nICovO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJzeW1ib2xcIjogcmV0dXJuIDQgLyogU3ltYm9sICovO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJudW1iZXJcIjogcmV0dXJuIDUgLyogTnVtYmVyICovO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJvYmplY3RcIjogcmV0dXJuIHggPT09IG51bGwgPyAxIC8qIE51bGwgKi8gOiA2IC8qIE9iamVjdCAqLztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gNiAvKiBPYmplY3QgKi87XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gNi4xLjEgVGhlIFVuZGVmaW5lZCBUeXBlXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMtdW5kZWZpbmVkLXR5cGVcbiAgICAgICAgZnVuY3Rpb24gSXNVbmRlZmluZWQoeCkge1xuICAgICAgICAgICAgcmV0dXJuIHggPT09IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyA2LjEuMiBUaGUgTnVsbCBUeXBlXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMtbnVsbC10eXBlXG4gICAgICAgIGZ1bmN0aW9uIElzTnVsbCh4KSB7XG4gICAgICAgICAgICByZXR1cm4geCA9PT0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICAvLyA2LjEuNSBUaGUgU3ltYm9sIFR5cGVcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcy1zeW1ib2wtdHlwZVxuICAgICAgICBmdW5jdGlvbiBJc1N5bWJvbCh4KSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCI7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNi4xLjcgVGhlIE9iamVjdCBUeXBlXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC10eXBlXG4gICAgICAgIGZ1bmN0aW9uIElzT2JqZWN0KHgpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgeCA9PT0gXCJvYmplY3RcIiA/IHggIT09IG51bGwgOiB0eXBlb2YgeCA9PT0gXCJmdW5jdGlvblwiO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuMSBUeXBlIENvbnZlcnNpb25cbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdHlwZS1jb252ZXJzaW9uXG4gICAgICAgIC8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b3ByaW1pdGl2ZVxuICAgICAgICBmdW5jdGlvbiBUb1ByaW1pdGl2ZShpbnB1dCwgUHJlZmVycmVkVHlwZSkge1xuICAgICAgICAgICAgc3dpdGNoIChUeXBlKGlucHV0KSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMCAvKiBVbmRlZmluZWQgKi86IHJldHVybiBpbnB1dDtcbiAgICAgICAgICAgICAgICBjYXNlIDEgLyogTnVsbCAqLzogcmV0dXJuIGlucHV0O1xuICAgICAgICAgICAgICAgIGNhc2UgMiAvKiBCb29sZWFuICovOiByZXR1cm4gaW5wdXQ7XG4gICAgICAgICAgICAgICAgY2FzZSAzIC8qIFN0cmluZyAqLzogcmV0dXJuIGlucHV0O1xuICAgICAgICAgICAgICAgIGNhc2UgNCAvKiBTeW1ib2wgKi86IHJldHVybiBpbnB1dDtcbiAgICAgICAgICAgICAgICBjYXNlIDUgLyogTnVtYmVyICovOiByZXR1cm4gaW5wdXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgaGludCA9IFByZWZlcnJlZFR5cGUgPT09IDMgLyogU3RyaW5nICovID8gXCJzdHJpbmdcIiA6IFByZWZlcnJlZFR5cGUgPT09IDUgLyogTnVtYmVyICovID8gXCJudW1iZXJcIiA6IFwiZGVmYXVsdFwiO1xuICAgICAgICAgICAgdmFyIGV4b3RpY1RvUHJpbSA9IEdldE1ldGhvZChpbnB1dCwgdG9QcmltaXRpdmVTeW1ib2wpO1xuICAgICAgICAgICAgaWYgKGV4b3RpY1RvUHJpbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGV4b3RpY1RvUHJpbS5jYWxsKGlucHV0LCBoaW50KTtcbiAgICAgICAgICAgICAgICBpZiAoSXNPYmplY3QocmVzdWx0KSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlUb1ByaW1pdGl2ZShpbnB1dCwgaGludCA9PT0gXCJkZWZhdWx0XCIgPyBcIm51bWJlclwiIDogaGludCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4xLjEuMSBPcmRpbmFyeVRvUHJpbWl0aXZlKE8sIGhpbnQpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9yZGluYXJ5dG9wcmltaXRpdmVcbiAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlUb1ByaW1pdGl2ZShPLCBoaW50KSB7XG4gICAgICAgICAgICBpZiAoaGludCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIHZhciB0b1N0cmluZ18xID0gTy50b1N0cmluZztcbiAgICAgICAgICAgICAgICBpZiAoSXNDYWxsYWJsZSh0b1N0cmluZ18xKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdG9TdHJpbmdfMS5jYWxsKE8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHJlc3VsdCkpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgdmFsdWVPZiA9IE8udmFsdWVPZjtcbiAgICAgICAgICAgICAgICBpZiAoSXNDYWxsYWJsZSh2YWx1ZU9mKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdmFsdWVPZi5jYWxsKE8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHJlc3VsdCkpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciB2YWx1ZU9mID0gTy52YWx1ZU9mO1xuICAgICAgICAgICAgICAgIGlmIChJc0NhbGxhYmxlKHZhbHVlT2YpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB2YWx1ZU9mLmNhbGwoTyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QocmVzdWx0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciB0b1N0cmluZ18yID0gTy50b1N0cmluZztcbiAgICAgICAgICAgICAgICBpZiAoSXNDYWxsYWJsZSh0b1N0cmluZ18yKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdG9TdHJpbmdfMi5jYWxsKE8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHJlc3VsdCkpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjEuMiBUb0Jvb2xlYW4oYXJndW1lbnQpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8yMDE2LyNzZWMtdG9ib29sZWFuXG4gICAgICAgIGZ1bmN0aW9uIFRvQm9vbGVhbihhcmd1bWVudCkge1xuICAgICAgICAgICAgcmV0dXJuICEhYXJndW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4xLjEyIFRvU3RyaW5nKGFyZ3VtZW50KVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b3N0cmluZ1xuICAgICAgICBmdW5jdGlvbiBUb1N0cmluZyhhcmd1bWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCIgKyBhcmd1bWVudDtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjEuMTQgVG9Qcm9wZXJ0eUtleShhcmd1bWVudClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdG9wcm9wZXJ0eWtleVxuICAgICAgICBmdW5jdGlvbiBUb1Byb3BlcnR5S2V5KGFyZ3VtZW50KSB7XG4gICAgICAgICAgICB2YXIga2V5ID0gVG9QcmltaXRpdmUoYXJndW1lbnQsIDMgLyogU3RyaW5nICovKTtcbiAgICAgICAgICAgIGlmIChJc1N5bWJvbChrZXkpKVxuICAgICAgICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgICAgICByZXR1cm4gVG9TdHJpbmcoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjIgVGVzdGluZyBhbmQgQ29tcGFyaXNvbiBPcGVyYXRpb25zXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRlc3RpbmctYW5kLWNvbXBhcmlzb24tb3BlcmF0aW9uc1xuICAgICAgICAvLyA3LjIuMiBJc0FycmF5KGFyZ3VtZW50KVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pc2FycmF5XG4gICAgICAgIGZ1bmN0aW9uIElzQXJyYXkoYXJndW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5XG4gICAgICAgICAgICAgICAgPyBBcnJheS5pc0FycmF5KGFyZ3VtZW50KVxuICAgICAgICAgICAgICAgIDogYXJndW1lbnQgaW5zdGFuY2VvZiBPYmplY3RcbiAgICAgICAgICAgICAgICAgICAgPyBhcmd1bWVudCBpbnN0YW5jZW9mIEFycmF5XG4gICAgICAgICAgICAgICAgICAgIDogT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KSA9PT0gXCJbb2JqZWN0IEFycmF5XVwiO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuMi4zIElzQ2FsbGFibGUoYXJndW1lbnQpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzY2FsbGFibGVcbiAgICAgICAgZnVuY3Rpb24gSXNDYWxsYWJsZShhcmd1bWVudCkge1xuICAgICAgICAgICAgLy8gTk9URTogVGhpcyBpcyBhbiBhcHByb3hpbWF0aW9uIGFzIHdlIGNhbm5vdCBjaGVjayBmb3IgW1tDYWxsXV0gaW50ZXJuYWwgbWV0aG9kLlxuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJmdW5jdGlvblwiO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuMi40IElzQ29uc3RydWN0b3IoYXJndW1lbnQpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzY29uc3RydWN0b3JcbiAgICAgICAgZnVuY3Rpb24gSXNDb25zdHJ1Y3Rvcihhcmd1bWVudCkge1xuICAgICAgICAgICAgLy8gTk9URTogVGhpcyBpcyBhbiBhcHByb3hpbWF0aW9uIGFzIHdlIGNhbm5vdCBjaGVjayBmb3IgW1tDb25zdHJ1Y3RdXSBpbnRlcm5hbCBtZXRob2QuXG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09PSBcImZ1bmN0aW9uXCI7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4yLjcgSXNQcm9wZXJ0eUtleShhcmd1bWVudClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaXNwcm9wZXJ0eWtleVxuICAgICAgICBmdW5jdGlvbiBJc1Byb3BlcnR5S2V5KGFyZ3VtZW50KSB7XG4gICAgICAgICAgICBzd2l0Y2ggKFR5cGUoYXJndW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAzIC8qIFN0cmluZyAqLzogcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgY2FzZSA0IC8qIFN5bWJvbCAqLzogcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIDcuMyBPcGVyYXRpb25zIG9uIE9iamVjdHNcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb3BlcmF0aW9ucy1vbi1vYmplY3RzXG4gICAgICAgIC8vIDcuMy45IEdldE1ldGhvZChWLCBQKVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1nZXRtZXRob2RcbiAgICAgICAgZnVuY3Rpb24gR2V0TWV0aG9kKFYsIFApIHtcbiAgICAgICAgICAgIHZhciBmdW5jID0gVltQXTtcbiAgICAgICAgICAgIGlmIChmdW5jID09PSB1bmRlZmluZWQgfHwgZnVuYyA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKCFJc0NhbGxhYmxlKGZ1bmMpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIHJldHVybiBmdW5jO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuNCBPcGVyYXRpb25zIG9uIEl0ZXJhdG9yIE9iamVjdHNcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb3BlcmF0aW9ucy1vbi1pdGVyYXRvci1vYmplY3RzXG4gICAgICAgIGZ1bmN0aW9uIEdldEl0ZXJhdG9yKG9iaikge1xuICAgICAgICAgICAgdmFyIG1ldGhvZCA9IEdldE1ldGhvZChvYmosIGl0ZXJhdG9yU3ltYm9sKTtcbiAgICAgICAgICAgIGlmICghSXNDYWxsYWJsZShtZXRob2QpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTsgLy8gZnJvbSBDYWxsXG4gICAgICAgICAgICB2YXIgaXRlcmF0b3IgPSBtZXRob2QuY2FsbChvYmopO1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdChpdGVyYXRvcikpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuNC40IEl0ZXJhdG9yVmFsdWUoaXRlclJlc3VsdClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLzIwMTYvI3NlYy1pdGVyYXRvcnZhbHVlXG4gICAgICAgIGZ1bmN0aW9uIEl0ZXJhdG9yVmFsdWUoaXRlclJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZXJSZXN1bHQudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy40LjUgSXRlcmF0b3JTdGVwKGl0ZXJhdG9yKVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pdGVyYXRvcnN0ZXBcbiAgICAgICAgZnVuY3Rpb24gSXRlcmF0b3JTdGVwKGl0ZXJhdG9yKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gaXRlcmF0b3IubmV4dCgpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5kb25lID8gZmFsc2UgOiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy40LjYgSXRlcmF0b3JDbG9zZShpdGVyYXRvciwgY29tcGxldGlvbilcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaXRlcmF0b3JjbG9zZVxuICAgICAgICBmdW5jdGlvbiBJdGVyYXRvckNsb3NlKGl0ZXJhdG9yKSB7XG4gICAgICAgICAgICB2YXIgZiA9IGl0ZXJhdG9yW1wicmV0dXJuXCJdO1xuICAgICAgICAgICAgaWYgKGYpXG4gICAgICAgICAgICAgICAgZi5jYWxsKGl0ZXJhdG9yKTtcbiAgICAgICAgfVxuICAgICAgICAvLyA5LjEgT3JkaW5hcnkgT2JqZWN0IEludGVybmFsIE1ldGhvZHMgYW5kIEludGVybmFsIFNsb3RzXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9yZGluYXJ5LW9iamVjdC1pbnRlcm5hbC1tZXRob2RzLWFuZC1pbnRlcm5hbC1zbG90c1xuICAgICAgICAvLyA5LjEuMS4xIE9yZGluYXJ5R2V0UHJvdG90eXBlT2YoTylcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb3JkaW5hcnlnZXRwcm90b3R5cGVvZlxuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeUdldFByb3RvdHlwZU9mKE8pIHtcbiAgICAgICAgICAgIHZhciBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihPKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgTyAhPT0gXCJmdW5jdGlvblwiIHx8IE8gPT09IGZ1bmN0aW9uUHJvdG90eXBlKVxuICAgICAgICAgICAgICAgIHJldHVybiBwcm90bztcbiAgICAgICAgICAgIC8vIFR5cGVTY3JpcHQgZG9lc24ndCBzZXQgX19wcm90b19fIGluIEVTNSwgYXMgaXQncyBub24tc3RhbmRhcmQuXG4gICAgICAgICAgICAvLyBUcnkgdG8gZGV0ZXJtaW5lIHRoZSBzdXBlcmNsYXNzIGNvbnN0cnVjdG9yLiBDb21wYXRpYmxlIGltcGxlbWVudGF0aW9uc1xuICAgICAgICAgICAgLy8gbXVzdCBlaXRoZXIgc2V0IF9fcHJvdG9fXyBvbiBhIHN1YmNsYXNzIGNvbnN0cnVjdG9yIHRvIHRoZSBzdXBlcmNsYXNzIGNvbnN0cnVjdG9yLFxuICAgICAgICAgICAgLy8gb3IgZW5zdXJlIGVhY2ggY2xhc3MgaGFzIGEgdmFsaWQgYGNvbnN0cnVjdG9yYCBwcm9wZXJ0eSBvbiBpdHMgcHJvdG90eXBlIHRoYXRcbiAgICAgICAgICAgIC8vIHBvaW50cyBiYWNrIHRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgbm90IHRoZSBzYW1lIGFzIEZ1bmN0aW9uLltbUHJvdG90eXBlXV0sIHRoZW4gdGhpcyBpcyBkZWZpbmF0ZWx5IGluaGVyaXRlZC5cbiAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGNhc2Ugd2hlbiBpbiBFUzYgb3Igd2hlbiB1c2luZyBfX3Byb3RvX18gaW4gYSBjb21wYXRpYmxlIGJyb3dzZXIuXG4gICAgICAgICAgICBpZiAocHJvdG8gIT09IGZ1bmN0aW9uUHJvdG90eXBlKVxuICAgICAgICAgICAgICAgIHJldHVybiBwcm90bztcbiAgICAgICAgICAgIC8vIElmIHRoZSBzdXBlciBwcm90b3R5cGUgaXMgT2JqZWN0LnByb3RvdHlwZSwgbnVsbCwgb3IgdW5kZWZpbmVkLCB0aGVuIHdlIGNhbm5vdCBkZXRlcm1pbmUgdGhlIGhlcml0YWdlLlxuICAgICAgICAgICAgdmFyIHByb3RvdHlwZSA9IE8ucHJvdG90eXBlO1xuICAgICAgICAgICAgdmFyIHByb3RvdHlwZVByb3RvID0gcHJvdG90eXBlICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90b3R5cGUpO1xuICAgICAgICAgICAgaWYgKHByb3RvdHlwZVByb3RvID09IG51bGwgfHwgcHJvdG90eXBlUHJvdG8gPT09IE9iamVjdC5wcm90b3R5cGUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3RvO1xuICAgICAgICAgICAgLy8gSWYgdGhlIGNvbnN0cnVjdG9yIHdhcyBub3QgYSBmdW5jdGlvbiwgdGhlbiB3ZSBjYW5ub3QgZGV0ZXJtaW5lIHRoZSBoZXJpdGFnZS5cbiAgICAgICAgICAgIHZhciBjb25zdHJ1Y3RvciA9IHByb3RvdHlwZVByb3RvLmNvbnN0cnVjdG9yO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zdHJ1Y3RvciAhPT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgICAgICAgIHJldHVybiBwcm90bztcbiAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgc29tZSBraW5kIG9mIHNlbGYtcmVmZXJlbmNlLCB0aGVuIHdlIGNhbm5vdCBkZXRlcm1pbmUgdGhlIGhlcml0YWdlLlxuICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9yID09PSBPKVxuICAgICAgICAgICAgICAgIHJldHVybiBwcm90bztcbiAgICAgICAgICAgIC8vIHdlIGhhdmUgYSBwcmV0dHkgZ29vZCBndWVzcyBhdCB0aGUgaGVyaXRhZ2UuXG4gICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbmFpdmUgTWFwIHNoaW1cbiAgICAgICAgZnVuY3Rpb24gQ3JlYXRlTWFwUG9seWZpbGwoKSB7XG4gICAgICAgICAgICB2YXIgY2FjaGVTZW50aW5lbCA9IHt9O1xuICAgICAgICAgICAgdmFyIGFycmF5U2VudGluZWwgPSBbXTtcbiAgICAgICAgICAgIHZhciBNYXBJdGVyYXRvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBNYXBJdGVyYXRvcihrZXlzLCB2YWx1ZXMsIHNlbGVjdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5cyA9IGtleXM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlcyA9IHZhbHVlcztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0b3IgPSBzZWxlY3RvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgTWFwSXRlcmF0b3IucHJvdG90eXBlW1wiQEBpdGVyYXRvclwiXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG4gICAgICAgICAgICAgICAgTWFwSXRlcmF0b3IucHJvdG90eXBlW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG4gICAgICAgICAgICAgICAgTWFwSXRlcmF0b3IucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2luZGV4O1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMuX2tleXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fc2VsZWN0b3IodGhpcy5fa2V5c1tpbmRleF0sIHRoaXMuX3ZhbHVlc1tpbmRleF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ICsgMSA+PSB0aGlzLl9rZXlzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4ID0gLTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5cyA9IGFycmF5U2VudGluZWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzID0gYXJyYXlTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogcmVzdWx0LCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIE1hcEl0ZXJhdG9yLnByb3RvdHlwZS50aHJvdyA9IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5faW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXggPSAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleXMgPSBhcnJheVNlbnRpbmVsO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzID0gYXJyYXlTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIE1hcEl0ZXJhdG9yLnByb3RvdHlwZS5yZXR1cm4gPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2luZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4ID0gLTE7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlzID0gYXJyYXlTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlcyA9IGFycmF5U2VudGluZWw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlLCBkb25lOiB0cnVlIH07XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gTWFwSXRlcmF0b3I7XG4gICAgICAgICAgICB9KCkpO1xuICAgICAgICAgICAgcmV0dXJuIC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBNYXAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlS2V5ID0gY2FjaGVTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVJbmRleCA9IC0yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTWFwLnByb3RvdHlwZSwgXCJzaXplXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9rZXlzLmxlbmd0aDsgfSxcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiAoa2V5KSB7IHJldHVybiB0aGlzLl9maW5kKGtleSwgLyppbnNlcnQqLyBmYWxzZSkgPj0gMDsgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZChrZXksIC8qaW5zZXJ0Ki8gZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXggPj0gMCA/IHRoaXMuX3ZhbHVlc1tpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmQoa2V5LCAvKmluc2VydCovIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXNbaW5kZXhdID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZS5kZWxldGUgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmQoa2V5LCAvKmluc2VydCovIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaXplID0gdGhpcy5fa2V5cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gaW5kZXggKyAxOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5c1tpIC0gMV0gPSB0aGlzLl9rZXlzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlc1tpIC0gMV0gPSB0aGlzLl92YWx1ZXNbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlzLmxlbmd0aC0tO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzLmxlbmd0aC0tO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gdGhpcy5fY2FjaGVLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZUtleSA9IGNhY2hlU2VudGluZWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVJbmRleCA9IC0yO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5cy5sZW5ndGggPSAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXMubGVuZ3RoID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVLZXkgPSBjYWNoZVNlbnRpbmVsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZUluZGV4ID0gLTI7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBuZXcgTWFwSXRlcmF0b3IodGhpcy5fa2V5cywgdGhpcy5fdmFsdWVzLCBnZXRLZXkpOyB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbmV3IE1hcEl0ZXJhdG9yKHRoaXMuX2tleXMsIHRoaXMuX3ZhbHVlcywgZ2V0VmFsdWUpOyB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5ldyBNYXBJdGVyYXRvcih0aGlzLl9rZXlzLCB0aGlzLl92YWx1ZXMsIGdldEVudHJ5KTsgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlW1wiQEBpdGVyYXRvclwiXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuZW50cmllcygpOyB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGVbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5lbnRyaWVzKCk7IH07XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZS5fZmluZCA9IGZ1bmN0aW9uIChrZXksIGluc2VydCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2FjaGVLZXkgIT09IGtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVJbmRleCA9IHRoaXMuX2tleXMuaW5kZXhPZih0aGlzLl9jYWNoZUtleSA9IGtleSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NhY2hlSW5kZXggPCAwICYmIGluc2VydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVJbmRleCA9IHRoaXMuX2tleXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5cy5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXMucHVzaCh1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jYWNoZUluZGV4O1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1hcDtcbiAgICAgICAgICAgIH0oKSk7XG4gICAgICAgICAgICBmdW5jdGlvbiBnZXRLZXkoa2V5LCBfKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIGdldFZhbHVlKF8sIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gZ2V0RW50cnkoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBba2V5LCB2YWx1ZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gbmFpdmUgU2V0IHNoaW1cbiAgICAgICAgZnVuY3Rpb24gQ3JlYXRlU2V0UG9seWZpbGwoKSB7XG4gICAgICAgICAgICByZXR1cm4gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFNldCgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWFwID0gbmV3IF9NYXAoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFNldC5wcm90b3R5cGUsIFwic2l6ZVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fbWFwLnNpemU7IH0sXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB0aGlzLl9tYXAuaGFzKHZhbHVlKTsgfTtcbiAgICAgICAgICAgICAgICBTZXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdGhpcy5fbWFwLnNldCh2YWx1ZSwgdmFsdWUpLCB0aGlzOyB9O1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUuZGVsZXRlID0gZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB0aGlzLl9tYXAuZGVsZXRlKHZhbHVlKTsgfTtcbiAgICAgICAgICAgICAgICBTZXQucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkgeyB0aGlzLl9tYXAuY2xlYXIoKTsgfTtcbiAgICAgICAgICAgICAgICBTZXQucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9tYXAua2V5cygpOyB9O1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fbWFwLnZhbHVlcygpOyB9O1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX21hcC5lbnRyaWVzKCk7IH07XG4gICAgICAgICAgICAgICAgU2V0LnByb3RvdHlwZVtcIkBAaXRlcmF0b3JcIl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLmtleXMoKTsgfTtcbiAgICAgICAgICAgICAgICBTZXQucHJvdG90eXBlW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMua2V5cygpOyB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBTZXQ7XG4gICAgICAgICAgICB9KCkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIG5haXZlIFdlYWtNYXAgc2hpbVxuICAgICAgICBmdW5jdGlvbiBDcmVhdGVXZWFrTWFwUG9seWZpbGwoKSB7XG4gICAgICAgICAgICB2YXIgVVVJRF9TSVpFID0gMTY7XG4gICAgICAgICAgICB2YXIga2V5cyA9IEhhc2hNYXAuY3JlYXRlKCk7XG4gICAgICAgICAgICB2YXIgcm9vdEtleSA9IENyZWF0ZVVuaXF1ZUtleSgpO1xuICAgICAgICAgICAgcmV0dXJuIC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBXZWFrTWFwKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXkgPSBDcmVhdGVVbmlxdWVLZXkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgV2Vha01hcC5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFibGUgPSBHZXRPckNyZWF0ZVdlYWtNYXBUYWJsZSh0YXJnZXQsIC8qY3JlYXRlKi8gZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFibGUgIT09IHVuZGVmaW5lZCA/IEhhc2hNYXAuaGFzKHRhYmxlLCB0aGlzLl9rZXkpIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBXZWFrTWFwLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YWJsZSA9IEdldE9yQ3JlYXRlV2Vha01hcFRhYmxlKHRhcmdldCwgLypjcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0YWJsZSAhPT0gdW5kZWZpbmVkID8gSGFzaE1hcC5nZXQodGFibGUsIHRoaXMuX2tleSkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBXZWFrTWFwLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAodGFyZ2V0LCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFibGUgPSBHZXRPckNyZWF0ZVdlYWtNYXBUYWJsZSh0YXJnZXQsIC8qY3JlYXRlKi8gdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRhYmxlW3RoaXMuX2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBXZWFrTWFwLnByb3RvdHlwZS5kZWxldGUgPSBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YWJsZSA9IEdldE9yQ3JlYXRlV2Vha01hcFRhYmxlKHRhcmdldCwgLypjcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0YWJsZSAhPT0gdW5kZWZpbmVkID8gZGVsZXRlIHRhYmxlW3RoaXMuX2tleV0gOiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIFdlYWtNYXAucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiBub3QgYSByZWFsIGNsZWFyLCBqdXN0IG1ha2VzIHRoZSBwcmV2aW91cyBkYXRhIHVucmVhY2hhYmxlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleSA9IENyZWF0ZVVuaXF1ZUtleSgpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIFdlYWtNYXA7XG4gICAgICAgICAgICB9KCkpO1xuICAgICAgICAgICAgZnVuY3Rpb24gQ3JlYXRlVW5pcXVlS2V5KCkge1xuICAgICAgICAgICAgICAgIHZhciBrZXk7XG4gICAgICAgICAgICAgICAgZG9cbiAgICAgICAgICAgICAgICAgICAga2V5ID0gXCJAQFdlYWtNYXBAQFwiICsgQ3JlYXRlVVVJRCgpO1xuICAgICAgICAgICAgICAgIHdoaWxlIChIYXNoTWFwLmhhcyhrZXlzLCBrZXkpKTtcbiAgICAgICAgICAgICAgICBrZXlzW2tleV0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBHZXRPckNyZWF0ZVdlYWtNYXBUYWJsZSh0YXJnZXQsIGNyZWF0ZSkge1xuICAgICAgICAgICAgICAgIGlmICghaGFzT3duLmNhbGwodGFyZ2V0LCByb290S2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNyZWF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHJvb3RLZXksIHsgdmFsdWU6IEhhc2hNYXAuY3JlYXRlKCkgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRbcm9vdEtleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBGaWxsUmFuZG9tQnl0ZXMoYnVmZmVyLCBzaXplKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyArK2kpXG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlcltpXSA9IE1hdGgucmFuZG9tKCkgKiAweGZmIHwgMDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYnVmZmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gR2VuUmFuZG9tQnl0ZXMoc2l6ZSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgVWludDhBcnJheSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY3J5cHRvICE9PSBcInVuZGVmaW5lZFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoc2l6ZSkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG1zQ3J5cHRvICE9PSBcInVuZGVmaW5lZFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheShzaXplKSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBGaWxsUmFuZG9tQnl0ZXMobmV3IFVpbnQ4QXJyYXkoc2l6ZSksIHNpemUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsbFJhbmRvbUJ5dGVzKG5ldyBBcnJheShzaXplKSwgc2l6ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBDcmVhdGVVVUlEKCkge1xuICAgICAgICAgICAgICAgIHZhciBkYXRhID0gR2VuUmFuZG9tQnl0ZXMoVVVJRF9TSVpFKTtcbiAgICAgICAgICAgICAgICAvLyBtYXJrIGFzIHJhbmRvbSAtIFJGQyA0MTIyIMKnIDQuNFxuICAgICAgICAgICAgICAgIGRhdGFbNl0gPSBkYXRhWzZdICYgMHg0ZiB8IDB4NDA7XG4gICAgICAgICAgICAgICAgZGF0YVs4XSA9IGRhdGFbOF0gJiAweGJmIHwgMHg4MDtcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gXCJcIjtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBvZmZzZXQgPSAwOyBvZmZzZXQgPCBVVUlEX1NJWkU7ICsrb2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBieXRlID0gZGF0YVtvZmZzZXRdO1xuICAgICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0ID09PSA0IHx8IG9mZnNldCA9PT0gNiB8fCBvZmZzZXQgPT09IDgpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gXCItXCI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChieXRlIDwgMTYpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gXCIwXCI7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBieXRlLnRvU3RyaW5nKDE2KS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIHVzZXMgYSBoZXVyaXN0aWMgdXNlZCBieSB2OCBhbmQgY2hha3JhIHRvIGZvcmNlIGFuIG9iamVjdCBpbnRvIGRpY3Rpb25hcnkgbW9kZS5cbiAgICAgICAgZnVuY3Rpb24gTWFrZURpY3Rpb25hcnkob2JqKSB7XG4gICAgICAgICAgICBvYmouX18gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBkZWxldGUgb2JqLl9fO1xuICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgfVxuICAgIH0pO1xufSkoUmVmbGVjdCB8fCAoUmVmbGVjdCA9IHt9KSk7XG4iLCJpbXBvcnQgeyBNZXRhZGF0YSwgTWV0YWRhdGFDbGFzcywgTWV0YWRhdGFSZWFkZXIgfSBmcm9tICcuLi90eXBlcy9NZXRhZGF0YSc7XG5pbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuZXhwb3J0IGNsYXNzIE1ldGFkYXRhRmFjdG9yeSB7XG4gICAgc3RhdGljIGdldE1ldGFkYXRhPFIgZXh0ZW5kcyBNZXRhZGF0YVJlYWRlciwgVCBleHRlbmRzIE9iamVjdCwgTSBleHRlbmRzIE1ldGFkYXRhPFIsIFQ+ID0gTWV0YWRhdGE8UiwgVD4+KFxuICAgICAgICB0YXJnZXQ6IFQsXG4gICAgICAgIG1ldGFkYXRhQ2xhc3M6IE1ldGFkYXRhQ2xhc3M8UiwgVCwgTT5cbiAgICApIHtcbiAgICAgICAgY29uc3Qga2V5ID0gbWV0YWRhdGFDbGFzcy5nZXRSZWZsZWN0S2V5KCk7XG4gICAgICAgIGxldCBtZXRhZGF0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoa2V5LCB0YXJnZXQpO1xuICAgICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgICAgICBtZXRhZGF0YSA9IG5ldyBtZXRhZGF0YUNsYXNzKCk7XG4gICAgICAgICAgICBtZXRhZGF0YS5pbml0KHRhcmdldCk7XG4gICAgICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKGtleSwgbWV0YWRhdGEsIHRhcmdldCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1ldGFkYXRhIGFzIE07XG4gICAgfVxufVxuIiwiLy8gZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuaW1wb3J0IHsgSW5zdGFuY2VTY29wZSB9IGZyb20gJy4uL2ZvdW5kYXRpb24vSW5zdGFuY2VTY29wZSc7XG5pbXBvcnQgeyBKc1NlcnZpY2VDbGFzcyB9IGZyb20gJy4uL3R5cGVzL0pzU2VydmljZUNsYXNzJztcbmltcG9ydCB7IE1ldGFkYXRhLCBNZXRhZGF0YVJlYWRlciB9IGZyb20gJy4uL3R5cGVzL01ldGFkYXRhJztcbmltcG9ydCB7IElkZW50aWZpZXIgfSBmcm9tICcuLi90eXBlcy9JZGVudGlmaWVyJztcbmltcG9ydCB7IExpZmVjeWNsZSB9IGZyb20gJy4uL2ZvdW5kYXRpb24vTGlmZWN5Y2xlJztcbmltcG9ydCB7IE5ld2FibGUgfSBmcm9tICcuLi90eXBlcy9OZXdhYmxlJztcbmltcG9ydCB7IGNyZWF0ZURlZmF1bHRWYWx1ZU1hcCB9IGZyb20gJy4uL2NvbW1vbi9EZWZhdWx0VmFsdWVNYXAnO1xuaW1wb3J0IHsgTWV0YWRhdGFGYWN0b3J5IH0gZnJvbSAnLi9NZXRhZGF0YUZhY3RvcnknO1xuaW1wb3J0IHsgTWVtYmVyS2V5IH0gZnJvbSAnLi4vdHlwZXMvTWVtYmVyS2V5JztcblxuY29uc3QgQ0xBU1NfTUVUQURBVEFfS0VZID0gJ2lvYzpjbGFzcy1tZXRhZGF0YSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFya0luZm8ge1xuICAgIFtrZXk6IHN0cmluZyB8IHN5bWJvbF06IHVua25vd247XG59XG5cbmV4cG9ydCBjbGFzcyBNYXJrSW5mb0NvbnRhaW5lciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXAgPSBjcmVhdGVEZWZhdWx0VmFsdWVNYXA8TWVtYmVyS2V5LCBNYXJrSW5mbz4oKCkgPT4gKHt9IGFzIE1hcmtJbmZvKSk7XG4gICAgZ2V0TWFya0luZm8obWV0aG9kOiBNZW1iZXJLZXkpOiBNYXJrSW5mbyB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQobWV0aG9kKTtcbiAgICB9XG4gICAgbWFyayhtZXRob2Q6IE1lbWJlcktleSwga2V5OiBNZW1iZXJLZXksIHZhbHVlOiB1bmtub3duKSB7XG4gICAgICAgIGNvbnN0IG1hcmtJbmZvID0gdGhpcy5tYXAuZ2V0KG1ldGhvZCk7XG4gICAgICAgIG1hcmtJbmZvW2tleV0gPSB2YWx1ZTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJhbWV0ZXJNYXJrSW5mb0NvbnRhaW5lciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXAgPSBjcmVhdGVEZWZhdWx0VmFsdWVNYXA8TWVtYmVyS2V5LCBSZWNvcmQ8bnVtYmVyLCBNYXJrSW5mbz4+KCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH0pO1xuICAgIGdldE1hcmtJbmZvKG1ldGhvZDogTWVtYmVyS2V5KTogUmVjb3JkPG51bWJlciwgTWFya0luZm8+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChtZXRob2QpO1xuICAgIH1cbiAgICBtYXJrKG1ldGhvZDogTWVtYmVyS2V5LCBpbmRleDogbnVtYmVyLCBrZXk6IE1lbWJlcktleSwgdmFsdWU6IHVua25vd24pIHtcbiAgICAgICAgY29uc3QgcGFyYW1zTWFya0luZm8gPSB0aGlzLm1hcC5nZXQobWV0aG9kKTtcbiAgICAgICAgY29uc3QgbWFya0luZm8gPSBwYXJhbXNNYXJrSW5mb1tpbmRleF0gfHwge307XG4gICAgICAgIG1hcmtJbmZvW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgcGFyYW1zTWFya0luZm9baW5kZXhdID0gbWFya0luZm87XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsYXNzTWFya0luZm8ge1xuICAgIGN0b3I6IE1hcmtJbmZvO1xuICAgIG1lbWJlcnM6IE1hcmtJbmZvQ29udGFpbmVyO1xuICAgIHBhcmFtczogUGFyYW1ldGVyTWFya0luZm9Db250YWluZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xhc3NNZXRhZGF0YVJlYWRlcjxUPiBleHRlbmRzIE1ldGFkYXRhUmVhZGVyIHtcbiAgICBnZXRDbGFzcygpOiBOZXdhYmxlPFQ+O1xuICAgIGdldFNjb3BlKCk6IEluc3RhbmNlU2NvcGUgfCBzdHJpbmc7XG4gICAgZ2V0Q29uc3RydWN0b3JQYXJhbWV0ZXJUeXBlcygpOiBBcnJheTxJZGVudGlmaWVyPjtcbiAgICBnZXRNZXRob2RzKGxpZmVjeWNsZTogTGlmZWN5Y2xlKTogQXJyYXk8c3RyaW5nIHwgc3ltYm9sPjtcbiAgICBnZXRQcm9wZXJ0eVR5cGVNYXAoKTogTWFwPHN0cmluZyB8IHN5bWJvbCwgSWRlbnRpZmllcj47XG4gICAgZ2V0Q3Rvck1hcmtJbmZvKCk6IE1hcmtJbmZvO1xuICAgIGdldE1lbWJlcnNNYXJrSW5mbyhtZXRob2RLZXk6IGtleW9mIFQpOiBNYXJrSW5mbztcbiAgICBnZXRQYXJhbWV0ZXJNYXJrSW5mbyhtZXRob2RLZXk6IGtleW9mIFQpOiBSZWNvcmQ8bnVtYmVyLCBNYXJrSW5mbz47XG59XG5cbmV4cG9ydCBjbGFzcyBDbGFzc01ldGFkYXRhPFQ+IGltcGxlbWVudHMgTWV0YWRhdGE8Q2xhc3NNZXRhZGF0YVJlYWRlcjxUPiwgTmV3YWJsZTxUPj4ge1xuICAgIHN0YXRpYyBnZXRSZWZsZWN0S2V5KCkge1xuICAgICAgICByZXR1cm4gQ0xBU1NfTUVUQURBVEFfS0VZO1xuICAgIH1cbiAgICBwcml2YXRlIHNjb3BlOiBJbnN0YW5jZVNjb3BlIHwgc3RyaW5nID0gSW5zdGFuY2VTY29wZS5TSU5HTEVUT047XG4gICAgcHJpdmF0ZSBjb25zdHJ1Y3RvclBhcmFtZXRlclR5cGVzOiBBcnJheTxJZGVudGlmaWVyPiA9IFtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbGlmZWN5Y2xlTWV0aG9kc01hcDogUmVjb3JkPHN0cmluZyB8IHN5bWJvbCwgU2V0PExpZmVjeWNsZT4+ID0ge307XG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9wZXJ0eVR5cGVzTWFwID0gbmV3IE1hcDxzdHJpbmcgfCBzeW1ib2wsIElkZW50aWZpZXI+KCk7XG4gICAgcHJpdmF0ZSBjbGF6eiE6IE5ld2FibGU8VD47XG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXJrczogQ2xhc3NNYXJrSW5mbyA9IHtcbiAgICAgICAgY3Rvcjoge30sXG4gICAgICAgIG1lbWJlcnM6IG5ldyBNYXJrSW5mb0NvbnRhaW5lcigpLFxuICAgICAgICBwYXJhbXM6IG5ldyBQYXJhbWV0ZXJNYXJrSW5mb0NvbnRhaW5lcigpXG4gICAgfTtcblxuICAgIHN0YXRpYyBnZXRJbnN0YW5jZTxUPihjdG9yOiBOZXdhYmxlPFQ+KSB7XG4gICAgICAgIHJldHVybiBNZXRhZGF0YUZhY3RvcnkuZ2V0TWV0YWRhdGEoY3RvciwgQ2xhc3NNZXRhZGF0YSk7XG4gICAgfVxuXG4gICAgaW5pdCh0YXJnZXQ6IE5ld2FibGU8VD4pIHtcbiAgICAgICAgdGhpcy5jbGF6eiA9IHRhcmdldDtcbiAgICAgICAgY29uc3QgY29uc3RyID0gdGFyZ2V0IGFzIEpzU2VydmljZUNsYXNzPHVua25vd24+O1xuICAgICAgICBpZiAodHlwZW9mIGNvbnN0ci5zY29wZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5zZXRTY29wZShjb25zdHIuc2NvcGUoKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBjb25zdHIuaW5qZWN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjb25zdCBpbmplY3Rpb25zID0gY29uc3RyLmluamVjdCgpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5qZWN0aW9ucykge1xuICAgICAgICAgICAgICAgIHRoaXMucmVjb3JkUHJvcGVydHlUeXBlKGtleSwgaW5qZWN0aW9uc1trZXldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGNvbnN0ci5tZXRhZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY29uc3QgbWV0YWRhdGEgPSBjb25zdHIubWV0YWRhdGEoKTtcbiAgICAgICAgICAgIGlmIChtZXRhZGF0YS5zY29wZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U2NvcGUobWV0YWRhdGEuc2NvcGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaW5qZWN0aW9ucyA9IG1ldGFkYXRhLmluamVjdDtcbiAgICAgICAgICAgIGlmIChpbmplY3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5qZWN0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlY29yZFByb3BlcnR5VHlwZShrZXksIGluamVjdGlvbnNba2V5XSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbWFya2VyKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY3RvcjogKGtleTogc3RyaW5nIHwgc3ltYm9sLCB2YWx1ZTogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWFya3MuY3RvcltrZXldID0gdmFsdWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWVtYmVyOiAocHJvcGVydHlLZXk6IHN0cmluZyB8IHN5bWJvbCB8IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIG1hcms6IChrZXk6IHN0cmluZyB8IHN5bWJvbCwgdmFsdWU6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFya3MubWVtYmVycy5tYXJrKHByb3BlcnR5S2V5LCBrZXksIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFyYW1ldGVyOiAocHJvcGVydHlLZXk6IHN0cmluZyB8IHN5bWJvbCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIG1hcms6IChrZXk6IHN0cmluZyB8IHN5bWJvbCwgdmFsdWU6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFya3MucGFyYW1zLm1hcmsocHJvcGVydHlLZXksIGluZGV4LCBrZXksIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuICAgIHNldFNjb3BlKHNjb3BlOiBJbnN0YW5jZVNjb3BlIHwgc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2NvcGUgPSBzY29wZTtcbiAgICB9XG4gICAgc2V0Q29uc3RydWN0b3JQYXJhbWV0ZXJUeXBlKGluZGV4OiBudW1iZXIsIGNsczogSWRlbnRpZmllcikge1xuICAgICAgICB0aGlzLmNvbnN0cnVjdG9yUGFyYW1ldGVyVHlwZXNbaW5kZXhdID0gY2xzO1xuICAgIH1cbiAgICByZWNvcmRQcm9wZXJ0eVR5cGUocHJvcGVydHlLZXk6IHN0cmluZyB8IHN5bWJvbCwgdHlwZTogSWRlbnRpZmllcikge1xuICAgICAgICB0aGlzLnByb3BlcnR5VHlwZXNNYXAuc2V0KHByb3BlcnR5S2V5LCB0eXBlKTtcbiAgICB9XG4gICAgYWRkTGlmZWN5Y2xlTWV0aG9kKG1ldGhvZE5hbWU6IHN0cmluZyB8IHN5bWJvbCwgbGlmZWN5Y2xlOiBMaWZlY3ljbGUpIHtcbiAgICAgICAgY29uc3QgbGlmZWN5Y2xlcyA9IHRoaXMuZ2V0TGlmZWN5Y2xlcyhtZXRob2ROYW1lKTtcbiAgICAgICAgbGlmZWN5Y2xlcy5hZGQobGlmZWN5Y2xlKTtcbiAgICAgICAgdGhpcy5saWZlY3ljbGVNZXRob2RzTWFwW21ldGhvZE5hbWVdID0gbGlmZWN5Y2xlcztcbiAgICB9XG4gICAgcHJpdmF0ZSBnZXRMaWZlY3ljbGVzKG1ldGhvZE5hbWU6IHN0cmluZyB8IHN5bWJvbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5saWZlY3ljbGVNZXRob2RzTWFwW21ldGhvZE5hbWVdIHx8IG5ldyBTZXQ8TGlmZWN5Y2xlPigpO1xuICAgIH1cbiAgICBnZXRNZXRob2RzKGxpZmVjeWNsZTogTGlmZWN5Y2xlKTogQXJyYXk8c3RyaW5nIHwgc3ltYm9sPiB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmxpZmVjeWNsZU1ldGhvZHNNYXApLmZpbHRlcihpdCA9PiB7XG4gICAgICAgICAgICBjb25zdCBsaWZlY3ljbGVzID0gdGhpcy5saWZlY3ljbGVNZXRob2RzTWFwW2l0XTtcbiAgICAgICAgICAgIHJldHVybiBsaWZlY3ljbGVzLmhhcyhsaWZlY3ljbGUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVhZGVyKCk6IENsYXNzTWV0YWRhdGFSZWFkZXI8VD4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0Q2xhc3M6ICgpID0+IHRoaXMuY2xhenosXG4gICAgICAgICAgICBnZXRTY29wZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNjb3BlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldENvbnN0cnVjdG9yUGFyYW1ldGVyVHlwZXM6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3RvclBhcmFtZXRlclR5cGVzLnNsaWNlKDApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldE1ldGhvZHM6IChsaWZlY3ljbGU6IExpZmVjeWNsZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE1ldGhvZHMobGlmZWN5Y2xlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRQcm9wZXJ0eVR5cGVNYXA6ICgpID0+IG5ldyBNYXAodGhpcy5wcm9wZXJ0eVR5cGVzTWFwKSxcbiAgICAgICAgICAgIGdldEN0b3JNYXJrSW5mbzogKCk6IE1hcmtJbmZvID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi50aGlzLm1hcmtzLmN0b3IgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRNZW1iZXJzTWFya0luZm86IChrZXk6IGtleW9mIFQpOiBNYXJrSW5mbyA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFya3MubWVtYmVycy5nZXRNYXJrSW5mbyhrZXkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldFBhcmFtZXRlck1hcmtJbmZvOiAobWV0aG9kS2V5OiBrZXlvZiBUKTogUmVjb3JkPG51bWJlciwgTWFya0luZm8+ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tYXJrcy5wYXJhbXMuZ2V0TWFya0luZm8obWV0aG9kS2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBHbG9iYWxNZXRhZGF0YSB9IGZyb20gJy4uL21ldGFkYXRhL0dsb2JhbE1ldGFkYXRhJztcbmltcG9ydCB7IENsYXNzTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS9DbGFzc01ldGFkYXRhJztcbmltcG9ydCB7IE1ldGFkYXRhRmFjdG9yeSB9IGZyb20gJy4uL21ldGFkYXRhL01ldGFkYXRhRmFjdG9yeSc7XG5pbXBvcnQgeyBOZXdhYmxlIH0gZnJvbSAnLi4vdHlwZXMvTmV3YWJsZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBCaW5kKGFsaWFzTmFtZTogc3RyaW5nIHwgc3ltYm9sKTogQ2xhc3NEZWNvcmF0b3Ige1xuICAgIHJldHVybiA8VEZ1bmN0aW9uIGV4dGVuZHMgRnVuY3Rpb24+KHRhcmdldDogVEZ1bmN0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gTWV0YWRhdGFGYWN0b3J5LmdldE1ldGFkYXRhKHRhcmdldCBhcyB1bmtub3duIGFzIE5ld2FibGU8dW5rbm93bj4sIENsYXNzTWV0YWRhdGEpO1xuICAgICAgICBHbG9iYWxNZXRhZGF0YS5nZXRJbnN0YW5jZSgpLnJlY29yZENsYXNzQWxpYXMoYWxpYXNOYW1lLCBtZXRhZGF0YSk7XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IEluc3RhbmNlU2NvcGUgfSBmcm9tICcuLi9mb3VuZGF0aW9uL0luc3RhbmNlU2NvcGUnO1xuaW1wb3J0IHsgQ2xhc3NNZXRhZGF0YSB9IGZyb20gJy4uL21ldGFkYXRhL0NsYXNzTWV0YWRhdGEnO1xuaW1wb3J0IHsgTWV0YWRhdGFGYWN0b3J5IH0gZnJvbSAnLi4vbWV0YWRhdGEvTWV0YWRhdGFGYWN0b3J5JztcbmltcG9ydCB7IE5ld2FibGUgfSBmcm9tICcuLi90eXBlcy9OZXdhYmxlJztcblxuZXhwb3J0IGZ1bmN0aW9uIFNjb3BlKHNjb3BlOiBJbnN0YW5jZVNjb3BlIHwgc3RyaW5nKTogQ2xhc3NEZWNvcmF0b3Ige1xuICAgIHJldHVybiA8VEZ1bmN0aW9uIGV4dGVuZHMgRnVuY3Rpb24+KHRhcmdldDogVEZ1bmN0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gTWV0YWRhdGFGYWN0b3J5LmdldE1ldGFkYXRhKHRhcmdldCBhcyB1bmtub3duIGFzIE5ld2FibGU8dW5rbm93bj4sIENsYXNzTWV0YWRhdGEpO1xuICAgICAgICBtZXRhZGF0YS5zZXRTY29wZShzY29wZSk7XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IE5ld2FibGUgfSBmcm9tICcuLi90eXBlcy9OZXdhYmxlJztcbmltcG9ydCB7IENsYXNzTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS9DbGFzc01ldGFkYXRhJztcbmltcG9ydCB7IElkZW50aWZpZXIgfSBmcm9tICcuLi90eXBlcy9JZGVudGlmaWVyJztcbmltcG9ydCB7IE1ldGFkYXRhRmFjdG9yeSB9IGZyb20gJy4uL21ldGFkYXRhL01ldGFkYXRhRmFjdG9yeSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBJbmplY3Q8VD4oY29uc3RyOiBJZGVudGlmaWVyPFQ+KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIDxUYXJnZXQ+KHRhcmdldDogVGFyZ2V0LCBwcm9wZXJ0eUtleTogc3RyaW5nIHwgc3ltYm9sLCBwYXJhbWV0ZXJJbmRleD86IG51bWJlcikge1xuICAgICAgICBpZiAodHlwZW9mIHRhcmdldCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgcGFyYW1ldGVySW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRDb25zdHIgPSB0YXJnZXQgYXMgTmV3YWJsZTxUPjtcbiAgICAgICAgICAgIGNvbnN0IGNsYXNzTWV0YWRhdGEgPSBNZXRhZGF0YUZhY3RvcnkuZ2V0TWV0YWRhdGEodGFyZ2V0Q29uc3RyLCBDbGFzc01ldGFkYXRhKTtcbiAgICAgICAgICAgIGNsYXNzTWV0YWRhdGEuc2V0Q29uc3RydWN0b3JQYXJhbWV0ZXJUeXBlKHBhcmFtZXRlckluZGV4LCBjb25zdHIpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0YXJnZXQgPT09ICdvYmplY3QnICYmIHRhcmdldCAhPT0gbnVsbCAmJiBwcm9wZXJ0eUtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YSh0YXJnZXQuY29uc3RydWN0b3IsIENsYXNzTWV0YWRhdGEpO1xuICAgICAgICAgICAgbWV0YWRhdGEucmVjb3JkUHJvcGVydHlUeXBlKHByb3BlcnR5S2V5LCBjb25zdHIpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IEdsb2JhbE1ldGFkYXRhIH0gZnJvbSAnLi4vbWV0YWRhdGEvR2xvYmFsTWV0YWRhdGEnO1xuaW1wb3J0IHsgTmV3YWJsZSB9IGZyb20gJy4uL3R5cGVzL05ld2FibGUnO1xuaW1wb3J0IHsgRmFjdG9yeUlkZW50aWZpZXIgfSBmcm9tICcuLi90eXBlcy9GYWN0b3J5SWRlbnRpZmllcic7XG5pbXBvcnQgeyBJZGVudGlmaWVyIH0gZnJvbSAnLi4vdHlwZXMvSWRlbnRpZmllcic7XG5pbXBvcnQgeyBJbnN0YW5jZSB9IGZyb20gJy4uL3R5cGVzL0luc3RhbmNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIEZhY3RvcnkoaWRlbnRpZmllcjogRmFjdG9yeUlkZW50aWZpZXIsIGluamVjdGlvbnM6IElkZW50aWZpZXJbXSA9IFtdKTogTWV0aG9kRGVjb3JhdG9yIHtcbiAgICByZXR1cm4gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nIHwgc3ltYm9sKSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gR2xvYmFsTWV0YWRhdGEuZ2V0SW5zdGFuY2UoKTtcbiAgICAgICAgY29uc3QgY2xhenogPSB0YXJnZXQuY29uc3RydWN0b3IgYXMgTmV3YWJsZTxJbnN0YW5jZTx1bmtub3duPj47XG5cbiAgICAgICAgbWV0YWRhdGEucmVjb3JkRmFjdG9yeShcbiAgICAgICAgICAgIGlkZW50aWZpZXIsXG4gICAgICAgICAgICAoY29udGFpbmVyLCBvd25lcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gY29udGFpbmVyLmdldEluc3RhbmNlKGNsYXp6LCBvd25lcik7XG4gICAgICAgICAgICAgICAgY29uc3QgZnVuYyA9IGluc3RhbmNlW3Byb3BlcnR5S2V5XTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZ1bmMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnN0YW5jZSA9IGNvbnRhaW5lci5nZXRJbnN0YW5jZShjbGF6eik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseShpbnN0YW5jZSwgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IGZ1bmM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluamVjdGlvbnNcbiAgICAgICAgKTtcbiAgICB9O1xufVxuIiwiZXhwb3J0IGVudW0gTGlmZWN5Y2xlIHtcbiAgICBQUkVfSU5KRUNUID0gJ2lvYy1zY29wZTpwcmUtaW5qZWN0JyxcbiAgICBQT1NUX0lOSkVDVCA9ICdpb2Mtc2NvcGU6cG9zdC1pbmplY3QnLFxuICAgIFBSRV9ERVNUUk9ZID0gJ2lvYy1zY29wZTpwcmUtZGVzdHJveSdcbn1cbiIsImltcG9ydCAncmVmbGVjdC1tZXRhZGF0YSc7XG5pbXBvcnQgeyBMaWZlY3ljbGUgfSBmcm9tICcuLi9mb3VuZGF0aW9uL0xpZmVjeWNsZSc7XG5pbXBvcnQgeyBDbGFzc01ldGFkYXRhIH0gZnJvbSAnLi4vbWV0YWRhdGEvQ2xhc3NNZXRhZGF0YSc7XG5pbXBvcnQgeyBNZXRhZGF0YUZhY3RvcnkgfSBmcm9tICcuLi9tZXRhZGF0YS9NZXRhZGF0YUZhY3RvcnknO1xuXG4vKipcbiAqIFVybiBjYWxscyB0aGUgbWV0aG9kcyBhbm5vdGF0ZWQgd2l0aCBAUG9zdEluamVjdCBvbmx5IG9uY2UsIGp1c3QgYWZ0ZXIgdGhlIGluamVjdGlvbiBvZiBwcm9wZXJ0aWVzLlxuICogQGFubm90YXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IExpZmVjeWNsZURlY29yYXRvciA9IChsaWZlY3ljbGU6IExpZmVjeWNsZSk6IE1ldGhvZERlY29yYXRvciA9PiB7XG4gICAgcmV0dXJuICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZyB8IHN5bWJvbCkgPT4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YSh0YXJnZXQuY29uc3RydWN0b3IsIENsYXNzTWV0YWRhdGEpO1xuICAgICAgICBtZXRhZGF0YS5hZGRMaWZlY3ljbGVNZXRob2QocHJvcGVydHlLZXksIGxpZmVjeWNsZSk7XG4gICAgfTtcbn07XG4iLCJpbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuaW1wb3J0IHsgTGlmZWN5Y2xlIH0gZnJvbSAnLi4vZm91bmRhdGlvbi9MaWZlY3ljbGUnO1xuaW1wb3J0IHsgTGlmZWN5Y2xlRGVjb3JhdG9yIH0gZnJvbSAnLi9MaWZlY3ljbGVEZWNvcmF0b3InO1xuXG4vKipcbiAqIFVybiBjYWxscyB0aGUgbWV0aG9kcyBhbm5vdGF0ZWQgd2l0aCBAUG9zdEluamVjdCBvbmx5IG9uY2UsIGp1c3QgYWZ0ZXIgdGhlIGluamVjdGlvbiBvZiBwcm9wZXJ0aWVzLlxuICogQGFubm90YXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IFBvc3RJbmplY3QgPSAoKTogTWV0aG9kRGVjb3JhdG9yID0+IExpZmVjeWNsZURlY29yYXRvcihMaWZlY3ljbGUuUE9TVF9JTkpFQ1QpO1xuIiwiaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcbmltcG9ydCB7IExpZmVjeWNsZSB9IGZyb20gJy4uL2ZvdW5kYXRpb24vTGlmZWN5Y2xlJztcbmltcG9ydCB7IExpZmVjeWNsZURlY29yYXRvciB9IGZyb20gJy4vTGlmZWN5Y2xlRGVjb3JhdG9yJztcblxuLyoqXG4gKiBVcm4gY2FsbHMgdGhlIG1ldGhvZHMgYW5ub3RhdGVkIHdpdGggQFBvc3RJbmplY3Qgb25seSBvbmNlLCBqdXN0IGFmdGVyIHRoZSBpbmplY3Rpb24gb2YgcHJvcGVydGllcy5cbiAqIEBhbm5vdGF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBQcmVJbmplY3QgPSAoKTogTWV0aG9kRGVjb3JhdG9yID0+IExpZmVjeWNsZURlY29yYXRvcihMaWZlY3ljbGUuUFJFX0lOSkVDVCk7XG4iLCJpbXBvcnQgeyBMaWZlY3ljbGVEZWNvcmF0b3IgfSBmcm9tICcuL0xpZmVjeWNsZURlY29yYXRvcic7XG5pbXBvcnQgeyBMaWZlY3ljbGUgfSBmcm9tICcuLi9mb3VuZGF0aW9uL0xpZmVjeWNsZSc7XG5cbmV4cG9ydCBjb25zdCBQcmVEZXN0cm95ID0gKCkgPT4gTGlmZWN5Y2xlRGVjb3JhdG9yKExpZmVjeWNsZS5QUkVfREVTVFJPWSk7XG4iLCJleHBvcnQgaW50ZXJmYWNlIEV2YWx1YXRpb25PcHRpb25zPE8sIEUgZXh0ZW5kcyBzdHJpbmcsIEEgPSB1bmtub3duPiB7XG4gICAgdHlwZTogRTtcbiAgICBvd25lcj86IE87XG4gICAgcHJvcGVydHlOYW1lPzogc3RyaW5nIHwgc3ltYm9sO1xuICAgIGV4dGVybmFsQXJncz86IEE7XG59XG5cbmV4cG9ydCBlbnVtIEV4cHJlc3Npb25UeXBlIHtcbiAgICBFTlYgPSAnaW5qZWN0LWVudmlyb25tZW50LXZhcmlhYmxlcycsXG4gICAgSlNPTl9QQVRIID0gJ2luamVjdC1qc29uLWRhdGEnLFxuICAgIEFSR1YgPSAnaW5qZWN0LWFyZ3YnXG59XG4iLCJleHBvcnQgY29uc3QgaXNOb2RlSnMgPSAoKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG4gICAgICAgIGNvbnN0IG9zID0gcmVxdWlyZSgnb3MnKTtcbiAgICAgICAgb3MuYXJjaCgpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59KSgpO1xuIiwiaW1wb3J0IHsgQ2xhc3NNZXRhZGF0YSB9IGZyb20gJy4uL21ldGFkYXRhL0NsYXNzTWV0YWRhdGEnO1xuaW1wb3J0IHsgR2xvYmFsTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS9HbG9iYWxNZXRhZGF0YSc7XG5pbXBvcnQgeyBNZXRhZGF0YUZhY3RvcnkgfSBmcm9tICcuLi9tZXRhZGF0YS9NZXRhZGF0YUZhY3RvcnknO1xuaW1wb3J0IHsgRXhwcmVzc2lvblR5cGUgfSBmcm9tICcuLi90eXBlcy9FdmFsdWF0ZU9wdGlvbnMnO1xuaW1wb3J0IHsgaXNOb2RlSnMgfSBmcm9tICcuLi9jb21tb24vaXNOb2RlSnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gVmFsdWU8QSA9IHVua25vd24+KGV4cHJlc3Npb246IHN0cmluZywgdHlwZTogRXhwcmVzc2lvblR5cGUgfCBzdHJpbmcsIGV4dGVybmFsQXJncz86IEEpOiBQcm9wZXJ0eURlY29yYXRvciB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgRXhwcmVzc2lvblR5cGUuRU5WOlxuICAgICAgICBjYXNlIEV4cHJlc3Npb25UeXBlLkFSR1Y6XG4gICAgICAgICAgICBpZiAoIWlzTm9kZUpzKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgXCIke3R5cGV9XCIgZXZhbHVhdG9yIG9ubHkgc3VwcG9ydHMgbm9kZWpzIGVudmlyb25tZW50IWApO1xuICAgICAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nIHwgc3ltYm9sKSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gTWV0YWRhdGFGYWN0b3J5LmdldE1ldGFkYXRhKHRhcmdldC5jb25zdHJ1Y3RvciwgQ2xhc3NNZXRhZGF0YSk7XG4gICAgICAgIGNvbnN0IHZhbHVlX3N5bWJvbCA9IFN5bWJvbCgnJyk7XG4gICAgICAgIG1ldGFkYXRhLnJlY29yZFByb3BlcnR5VHlwZShwcm9wZXJ0eUtleSwgdmFsdWVfc3ltYm9sKTtcbiAgICAgICAgR2xvYmFsTWV0YWRhdGEuZ2V0SW5zdGFuY2UoKS5yZWNvcmRGYWN0b3J5KHZhbHVlX3N5bWJvbCwgKGNvbnRhaW5lciwgb3duZXIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PlxuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5ldmFsdWF0ZTxzdHJpbmcsIHR5cGVvZiBvd25lciwgQT4oZXhwcmVzc2lvbiBhcyBzdHJpbmcsIHtcbiAgICAgICAgICAgICAgICAgICAgb3duZXIsXG4gICAgICAgICAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGV4dGVybmFsQXJnc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xufVxuIiwiaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcbmltcG9ydCB7IE1ldGFkYXRhRmFjdG9yeSB9IGZyb20gJy4uL21ldGFkYXRhL01ldGFkYXRhRmFjdG9yeSc7XG5pbXBvcnQgeyBDbGFzc01ldGFkYXRhIH0gZnJvbSAnLi4vbWV0YWRhdGEvQ2xhc3NNZXRhZGF0YSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBNYXJrKGtleTogc3RyaW5nIHwgc3ltYm9sLCB2YWx1ZTogdW5rbm93biA9IHRydWUpOiBGdW5jdGlvbiB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChcbiAgICAgICAgLi4uYXJnczpcbiAgICAgICAgICAgIHwgUGFyYW1ldGVyczxDbGFzc0RlY29yYXRvcj5cbiAgICAgICAgICAgIHwgUGFyYW1ldGVyczxNZXRob2REZWNvcmF0b3I+XG4gICAgICAgICAgICB8IFBhcmFtZXRlcnM8UHJvcGVydHlEZWNvcmF0b3I+XG4gICAgICAgICAgICB8IFBhcmFtZXRlcnM8UGFyYW1ldGVyRGVjb3JhdG9yPlxuICAgICkge1xuICAgICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIC8vIGNsYXNzIGRlY29yYXRvclxuICAgICAgICAgICAgY29uc3QgbWV0YWRhdGEgPSBNZXRhZGF0YUZhY3RvcnkuZ2V0TWV0YWRhdGEoYXJnc1swXSwgQ2xhc3NNZXRhZGF0YSk7XG4gICAgICAgICAgICBtZXRhZGF0YS5tYXJrZXIoKS5jdG9yKGtleSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAvLyBwcm9wZXJ0eSBkZWNvcmF0b3JcbiAgICAgICAgICAgIGNvbnN0IFtwcm90b3R5cGUsIHByb3BlcnR5S2V5XSA9IGFyZ3M7XG4gICAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YShwcm90b3R5cGUuY29uc3RydWN0b3IsIENsYXNzTWV0YWRhdGEpO1xuICAgICAgICAgICAgbWV0YWRhdGEubWFya2VyKCkubWVtYmVyKHByb3BlcnR5S2V5KS5tYXJrKGtleSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAzICYmIHR5cGVvZiBhcmdzWzJdID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgLy8gcGFyYW1ldGVyIGRlY29yYXRvclxuICAgICAgICAgICAgY29uc3QgW3Byb3RvdHlwZSwgcHJvcGVydHlLZXksIGluZGV4XSA9IGFyZ3M7XG4gICAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YShwcm90b3R5cGUuY29uc3RydWN0b3IsIENsYXNzTWV0YWRhdGEpO1xuICAgICAgICAgICAgbWV0YWRhdGEubWFya2VyKCkucGFyYW1ldGVyKHByb3BlcnR5S2V5LCBpbmRleCkubWFyayhrZXksIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIG1ldGhvZCBkZWNvcmF0b3JcbiAgICAgICAgICAgIGNvbnN0IFtwcm90b3R5cGUsIHByb3BlcnR5S2V5XSA9IGFyZ3M7XG4gICAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YShwcm90b3R5cGUuY29uc3RydWN0b3IsIENsYXNzTWV0YWRhdGEpO1xuICAgICAgICAgICAgbWV0YWRhdGEubWFya2VyKCkubWVtYmVyKHByb3BlcnR5S2V5KS5tYXJrKGtleSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IEFueUZ1bmN0aW9uIH0gZnJvbSAnLi4vdHlwZXMvQW55RnVuY3Rpb24nO1xuXG5leHBvcnQgdHlwZSBFdmVudExpc3RlbmVyID0gQW55RnVuY3Rpb247XG5leHBvcnQgY2xhc3MgRXZlbnRFbWl0dGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV2ZW50cyA9IG5ldyBNYXA8c3RyaW5nIHwgc3ltYm9sLCBFdmVudExpc3RlbmVyW10+KCk7XG5cbiAgICBvbih0eXBlOiBzdHJpbmcgfCBzeW1ib2wsIGxpc3RlbmVyOiBFdmVudExpc3RlbmVyKSB7XG4gICAgICAgIGxldCBsaXN0ZW5lcnMgPSB0aGlzLmV2ZW50cy5nZXQodHlwZSk7XG4gICAgICAgIGlmIChsaXN0ZW5lcnMpIHtcbiAgICAgICAgICAgIGlmIChsaXN0ZW5lcnMuaW5kZXhPZihsaXN0ZW5lcikgPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBsaXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsaXN0ZW5lcnMgPSBbbGlzdGVuZXJdO1xuICAgICAgICAgICAgdGhpcy5ldmVudHMuc2V0KHR5cGUsIGxpc3RlbmVycyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxzID0gbGlzdGVuZXJzIGFzIEV2ZW50TGlzdGVuZXJbXTtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gbHMuaW5kZXhPZihsaXN0ZW5lcik7XG4gICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIGxzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuICAgIGVtaXQodHlwZTogc3RyaW5nIHwgc3ltYm9sLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgICAgdGhpcy5ldmVudHMuZ2V0KHR5cGUpPy5mb3JFYWNoKGZuID0+IHtcbiAgICAgICAgICAgIGZuKC4uLmFyZ3MpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBJZGVudGlmaWVyIH0gZnJvbSAnLi4vdHlwZXMvSWRlbnRpZmllcic7XG5cbnR5cGUgSW52b2tlRnVuY3Rpb25BcmdzID0ge1xuICAgIGFyZ3M/OiB1bmtub3duW107XG59O1xudHlwZSBJbnZva2VGdW5jdGlvbkluamVjdGlvbnMgPSB7XG4gICAgaW5qZWN0aW9ucz86IElkZW50aWZpZXJbXTtcbn07XG5cbnR5cGUgSW52b2tlRnVuY3Rpb25CYXNpY09wdGlvbnM8VD4gPSB7XG4gICAgY29udGV4dD86IFQ7XG59O1xuXG5leHBvcnQgdHlwZSBJbnZva2VGdW5jdGlvbk9wdGlvbnM8VD4gPVxuICAgIHwgKEludm9rZUZ1bmN0aW9uQmFzaWNPcHRpb25zPFQ+ICYgSW52b2tlRnVuY3Rpb25BcmdzKVxuICAgIHwgKEludm9rZUZ1bmN0aW9uQmFzaWNPcHRpb25zPFQ+ICYgSW52b2tlRnVuY3Rpb25JbmplY3Rpb25zKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0FyZ3M8VD4ob3B0aW9uczogSW52b2tlRnVuY3Rpb25PcHRpb25zPFQ+KTogb3B0aW9ucyBpcyBJbnZva2VGdW5jdGlvbkJhc2ljT3B0aW9uczxUPiAmIEludm9rZUZ1bmN0aW9uQXJncyB7XG4gICAgcmV0dXJuICdhcmdzJyBpbiBvcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzSW5qZWN0aW9uczxUPihcbiAgICBvcHRpb25zOiBJbnZva2VGdW5jdGlvbk9wdGlvbnM8VD5cbik6IG9wdGlvbnMgaXMgSW52b2tlRnVuY3Rpb25CYXNpY09wdGlvbnM8VD4gJiBJbnZva2VGdW5jdGlvbkluamVjdGlvbnMge1xuICAgIHJldHVybiAnaW5qZWN0aW9ucycgaW4gb3B0aW9ucztcbn1cbiIsIlwidXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO1xuLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cblxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXG5cblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXG52YXIgZT1mdW5jdGlvbigpe3JldHVybiBlPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPTEsbj1hcmd1bWVudHMubGVuZ3RoO3I8bjtyKyspZm9yKHZhciBvIGluIHQ9YXJndW1lbnRzW3JdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG8pJiYoZVtvXT10W29dKTtyZXR1cm4gZX0sZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Z1bmN0aW9uIHQoKXt9dmFyIHI9e30sbj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5ldmFsdWF0ZVJlc3VsdD1yLHRoaXMuY29udGV4dD1lLnRhcmdldCx0aGlzLmNvbXB1dGVGbj1lLmV2YWx1YXRlLHRoaXMucmVzZXRUZXN0ZXI9ZS5yZXNldFRlc3RlcnN9cmV0dXJuIGUucHJvdG90eXBlLnJlbGVhc2U9ZnVuY3Rpb24oKXt0aGlzLnJlc2V0KHQpfSxlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbihlKXt0aGlzLmV2YWx1YXRlUmVzdWx0PXIsdGhpcy5jb21wdXRlRm49ZXx8dGhpcy5jb21wdXRlRm59LGUucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKCl7dGhpcy5pc1ByZXNlbnQoKSYmIXRoaXMubmVlZFJlc2V0KCl8fCh0aGlzLmV2YWx1YXRlUmVzdWx0PXRoaXMuY29tcHV0ZUZuLmNhbGwodGhpcy5jb250ZXh0LHRoaXMuY29udGV4dCkpfSxlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZSgpLHRoaXMuZXZhbHVhdGVSZXN1bHR9LGUucHJvdG90eXBlLmlzUHJlc2VudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmV2YWx1YXRlUmVzdWx0IT09cn0sZS5wcm90b3R5cGUubmVlZFJlc2V0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5yZXNldFRlc3Rlci5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdChlLmNvbnRleHQpfSkpfSxlfSgpO2Z1bmN0aW9uIG8odCxyLG8pe3ZhciB1O3U9XCJmdW5jdGlvblwiPT10eXBlb2Ygbz97ZXZhbHVhdGU6b306ZSh7fSxvKTt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik7aWYoYSYmIWEuY29uZmlndXJhYmxlKXRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBvdmVycmlkZSBvdmVycmlkZSBwcm9wZXJ0eTogXCIrU3RyaW5nKHIpKTt2YXIgaT1cImJvb2xlYW5cIj09dHlwZW9mIHUuZW51bWVyYWJsZT91LmVudW1lcmFibGU6KG51bGw9PWE/dm9pZCAwOmEuZW51bWVyYWJsZSl8fCEwLHM9dS5yZXNldEJ5fHxbXSxsPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUsdCxyLG8pe2UuX19sYXp5X198fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19sYXp5X19cIix7dmFsdWU6e30sZW51bWVyYWJsZTohMSx3cml0YWJsZTohMSxjb25maWd1cmFibGU6ITF9KTt2YXIgdT1lLl9fbGF6eV9fO2lmKCF1W3RdKXt2YXIgYT1vLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGV8fFwibnVtYmVyXCI9PXR5cGVvZiBlfHxcInN5bWJvbFwiPT10eXBlb2YgZT9mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIG49cltlXSxvPW4hPT10O3JldHVybiB0PW4sb319KGUpOih0PWUsZnVuY3Rpb24oZSl7dmFyIG49dChlKSxvPW4hPT1yO3JldHVybiByPW4sb30pO3ZhciB0LHJ9KSk7dVt0XT1uZXcgbih7dGFyZ2V0OmUsZXZhbHVhdGU6cixyZXNldFRlc3RlcnM6YX0pfXJldHVybiB1W3RdfSh0aGlzLHIsdS5ldmFsdWF0ZSxzKX07cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOmksZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGwuY2FsbCh0aGlzKS5nZXQoKX19KSxsfWZ1bmN0aW9uIHUoZSx0LHIpe3JldHVybiBvKGUsdCxyKS5jYWxsKGUpfWV4cG9ydHMubGF6eU1lbWJlcj1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxyKXtvKHQscixlKX19LGV4cG9ydHMubGF6eU1lbWJlck9mQ2xhc3M9ZnVuY3Rpb24oZSx0LHIpe28oZS5wcm90b3R5cGUsdCxyKX0sZXhwb3J0cy5sYXp5UHJvcD11LGV4cG9ydHMubGF6eVZhbD1mdW5jdGlvbihlKXtyZXR1cm4gdSh7X192YWxfXzpudWxsfSxcIl9fdmFsX19cIixlKX07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5janMuanMubWFwXG4iLCJpbXBvcnQgeyBOZXdhYmxlIH0gZnJvbSAnLi4vdHlwZXMvTmV3YWJsZSc7XG5pbXBvcnQgeyBDbGFzc01ldGFkYXRhLCBDbGFzc01ldGFkYXRhUmVhZGVyIH0gZnJvbSAnLi4vbWV0YWRhdGEvQ2xhc3NNZXRhZGF0YSc7XG5pbXBvcnQgeyBNZXRhZGF0YUZhY3RvcnkgfSBmcm9tICcuLi9tZXRhZGF0YS9NZXRhZGF0YUZhY3RvcnknO1xuaW1wb3J0IHsgTGlmZWN5Y2xlIH0gZnJvbSAnLi9MaWZlY3ljbGUnO1xuaW1wb3J0IHsgSW5zdGFuY2UgfSBmcm9tICcuLi90eXBlcy9JbnN0YW5jZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkNvbnRleHQgfSBmcm9tICcuL0FwcGxpY2F0aW9uQ29udGV4dCc7XG5cbmV4cG9ydCBjbGFzcyBMaWZlY3ljbGVNYW5hZ2VyPFQgPSB1bmtub3duPiB7XG4gICAgcHJpdmF0ZSBjbGFzc01ldGFkYXRhUmVhZGVyOiBDbGFzc01ldGFkYXRhUmVhZGVyPFQ+O1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50Q2xhc3M6IE5ld2FibGU8VD4sIHByaXZhdGUgcmVhZG9ubHkgY29udGFpbmVyOiBBcHBsaWNhdGlvbkNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5jbGFzc01ldGFkYXRhUmVhZGVyID0gTWV0YWRhdGFGYWN0b3J5LmdldE1ldGFkYXRhKHRoaXMuY29tcG9uZW50Q2xhc3MsIENsYXNzTWV0YWRhdGEpLnJlYWRlcigpO1xuICAgIH1cbiAgICBpbnZva2VQcmVJbmplY3RNZXRob2QoaW5zdGFuY2U6IEluc3RhbmNlPFQ+KSB7XG4gICAgICAgIGNvbnN0IG1ldGhvZHMgPSB0aGlzLmNsYXNzTWV0YWRhdGFSZWFkZXIuZ2V0TWV0aG9kcyhMaWZlY3ljbGUuUFJFX0lOSkVDVCk7XG4gICAgICAgIHRoaXMuaW52b2tlTGlmZWN5Y2xlTWV0aG9kcyhpbnN0YW5jZSwgbWV0aG9kcyk7XG4gICAgfVxuICAgIGludm9rZVBvc3RJbmplY3RNZXRob2QoaW5zdGFuY2U6IEluc3RhbmNlPFQ+KSB7XG4gICAgICAgIGNvbnN0IG1ldGhvZHMgPSB0aGlzLmNsYXNzTWV0YWRhdGFSZWFkZXIuZ2V0TWV0aG9kcyhMaWZlY3ljbGUuUE9TVF9JTkpFQ1QpO1xuICAgICAgICB0aGlzLmludm9rZUxpZmVjeWNsZU1ldGhvZHMoaW5zdGFuY2UsIG1ldGhvZHMpO1xuICAgIH1cbiAgICBpbnZva2VQcmVEZXN0cm95SW5qZWN0TWV0aG9kKGluc3RhbmNlOiBJbnN0YW5jZTxUPikge1xuICAgICAgICBjb25zdCBtZXRob2RzID0gdGhpcy5jbGFzc01ldGFkYXRhUmVhZGVyLmdldE1ldGhvZHMoTGlmZWN5Y2xlLlBSRV9ERVNUUk9ZKTtcbiAgICAgICAgdGhpcy5pbnZva2VMaWZlY3ljbGVNZXRob2RzKGluc3RhbmNlLCBtZXRob2RzKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBpbnZva2VMaWZlY3ljbGVNZXRob2RzKGluc3RhbmNlOiBJbnN0YW5jZTxUPiwgbWV0aG9kS2V5czogQXJyYXk8c3RyaW5nIHwgc3ltYm9sPikge1xuICAgICAgICBtZXRob2RLZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyLmludm9rZShpbnN0YW5jZVtrZXldLCB7XG4gICAgICAgICAgICAgICAgY29udGV4dDogaW5zdGFuY2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBOZXdhYmxlIH0gZnJvbSAnLi4vdHlwZXMvTmV3YWJsZSc7XG5pbXBvcnQgeyBDbGFzc01ldGFkYXRhLCBDbGFzc01ldGFkYXRhUmVhZGVyIH0gZnJvbSAnLi4vbWV0YWRhdGEvQ2xhc3NNZXRhZGF0YSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkNvbnRleHQgfSBmcm9tICcuL0FwcGxpY2F0aW9uQ29udGV4dCc7XG5pbXBvcnQgeyBJbnN0YW5jZSB9IGZyb20gJy4uL3R5cGVzL0luc3RhbmNlJztcbmltcG9ydCB7IFNlcnZpY2VGYWN0b3J5RGVmIH0gZnJvbSAnLi9TZXJ2aWNlRmFjdG9yeURlZic7XG5pbXBvcnQgeyBHbG9iYWxNZXRhZGF0YSB9IGZyb20gJy4uL21ldGFkYXRhL0dsb2JhbE1ldGFkYXRhJztcbmltcG9ydCB7IGxhenlQcm9wIH0gZnJvbSAnQHZnZXJib3QvbGF6eSc7XG5pbXBvcnQgeyBNZXRhZGF0YUZhY3RvcnkgfSBmcm9tICcuLi9tZXRhZGF0YS9NZXRhZGF0YUZhY3RvcnknO1xuaW1wb3J0IHsgSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yTWFuYWdlciB9IGZyb20gJy4vSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yTWFuYWdlcic7XG5pbXBvcnQgeyBMaWZlY3ljbGVNYW5hZ2VyIH0gZnJvbSAnLi9MaWZlY3ljbGVNYW5hZ2VyJztcblxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEluc3RhbmNlQnVpbGRlcjxUPiB7XG4gICAgcHJpdmF0ZSBnZXRDb25zdHJ1Y3RvckFyZ3M6ICgpID0+IHVua25vd25bXSA9ICgpID0+IFtdO1xuICAgIHByaXZhdGUgcHJvcGVydHlGYWN0b3JpZXM6IFJlY29yZDxzdHJpbmcgfCBzeW1ib2wsIFNlcnZpY2VGYWN0b3J5RGVmPHVua25vd24+PiA9IHt9O1xuICAgIHByaXZhdGUgbGF6eU1vZGU6IGJvb2xlYW4gPSB0cnVlO1xuICAgIHByaXZhdGUgbGlmZWN5Y2xlUmVzb2x2ZXI6IExpZmVjeWNsZU1hbmFnZXI8VD47XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50Q2xhc3M6IE5ld2FibGU8VD4sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29udGFpbmVyOiBBcHBsaWNhdGlvbkNvbnRleHQsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5zdEF3YXJlUHJvY2Vzc29yTWFuYWdlcjogSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yTWFuYWdlclxuICAgICkge1xuICAgICAgICB0aGlzLmxpZmVjeWNsZVJlc29sdmVyID0gbmV3IExpZmVjeWNsZU1hbmFnZXI8VD4oY29tcG9uZW50Q2xhc3MsIGNvbnRhaW5lcik7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YShjb21wb25lbnRDbGFzcywgQ2xhc3NNZXRhZGF0YSkucmVhZGVyKCk7XG4gICAgICAgIHRoaXMuYXBwZW5kQ2xhc3NNZXRhZGF0YShyZWFkZXIpO1xuICAgIH1cbiAgICBhcHBlbmRMYXp5TW9kZShsYXp5TW9kZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmxhenlNb2RlID0gbGF6eU1vZGU7XG4gICAgfVxuICAgIHByaXZhdGUgYXBwZW5kQ2xhc3NNZXRhZGF0YTxUPihjbGFzc01ldGFkYXRhUmVhZGVyOiBDbGFzc01ldGFkYXRhUmVhZGVyPFQ+KSB7XG4gICAgICAgIGNvbnN0IHR5cGVzID0gY2xhc3NNZXRhZGF0YVJlYWRlci5nZXRDb25zdHJ1Y3RvclBhcmFtZXRlclR5cGVzKCk7XG4gICAgICAgIHRoaXMuZ2V0Q29uc3RydWN0b3JBcmdzID0gKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVzLm1hcChpdCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyLmdldEluc3RhbmNlKGl0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBnbG9iYWxNZXRhZGF0YVJlYWRlciA9IEdsb2JhbE1ldGFkYXRhLmdldEluc3RhbmNlKCkucmVhZGVyKCk7XG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBjbGFzc01ldGFkYXRhUmVhZGVyLmdldFByb3BlcnR5VHlwZU1hcCgpO1xuICAgICAgICBmb3IgKGNvbnN0IFtwcm9wZXJ0eU5hbWUsIHByb3BlcnR5VHlwZV0gb2YgcHJvcGVydGllcykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eVR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BlcnR5RmFjdG9yaWVzW3Byb3BlcnR5TmFtZV0gPSBuZXcgU2VydmljZUZhY3RvcnlEZWYoKGNvbnRhaW5lciwgb3duZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IGNvbnRhaW5lci5nZXRJbnN0YW5jZShwcm9wZXJ0eVR5cGUsIG93bmVyKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLmNvbnRhaW5lci5nZXRGYWN0b3J5KHByb3BlcnR5VHlwZSk7XG4gICAgICAgICAgICBpZiAoZmFjdG9yeSkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvcGVydHlGYWN0b3JpZXNbcHJvcGVydHlOYW1lXSA9IGZhY3Rvcnk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eUNsYXNzTWV0YWRhdGEgPSBnbG9iYWxNZXRhZGF0YVJlYWRlci5nZXRDbGFzc01ldGFkYXRhKHByb3BlcnR5VHlwZSk7XG4gICAgICAgICAgICBpZiAocHJvcGVydHlDbGFzc01ldGFkYXRhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eUZhY3Rvcmllc1twcm9wZXJ0eU5hbWVdID0gU2VydmljZUZhY3RvcnlEZWYuY3JlYXRlRnJvbUNsYXNzTWV0YWRhdGEocHJvcGVydHlDbGFzc01ldGFkYXRhKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5RmFjdG9yeSA9IGdsb2JhbE1ldGFkYXRhUmVhZGVyLmdldENvbXBvbmVudEZhY3RvcnkocHJvcGVydHlUeXBlKTtcbiAgICAgICAgICAgIGlmIChwcm9wZXJ0eUZhY3RvcnkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BlcnR5RmFjdG9yaWVzW3Byb3BlcnR5TmFtZV0gPSBwcm9wZXJ0eUZhY3Rvcnk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYnVpbGQoKSB7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSB0aGlzLmdldENvbnN0cnVjdG9yQXJncygpO1xuICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5jcmVhdGVQcm9wZXJ0aWVzR2V0dGVyQnVpbGRlcigpO1xuICAgICAgICBjb25zdCBpc0NyZWF0aW5nSW5zdEF3YXJlUHJvY2Vzc29yID0gdGhpcy5pbnN0QXdhcmVQcm9jZXNzb3JNYW5hZ2VyLmlzSW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3ModGhpcy5jb21wb25lbnRDbGFzcyk7XG4gICAgICAgIGlmIChpc0NyZWF0aW5nSW5zdEF3YXJlUHJvY2Vzc29yKSB7XG4gICAgICAgICAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyB0aGlzLmNvbXBvbmVudENsYXNzKC4uLmFyZ3MpIGFzIEluc3RhbmNlPFQ+O1xuICAgICAgICAgICAgdGhpcy5saWZlY3ljbGVSZXNvbHZlci5pbnZva2VQcmVJbmplY3RNZXRob2QoaW5zdGFuY2UpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdldHRlciA9IHByb3BlcnRpZXNba2V5XShpbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWZpbmVQcm9wZXJ0eShpbnN0YW5jZSwga2V5LCBnZXR0ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5saWZlY3ljbGVSZXNvbHZlci5pbnZva2VQb3N0SW5qZWN0TWV0aG9kKGluc3RhbmNlKTtcbiAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBpbnN0YW5jZTogdW5kZWZpbmVkIHwgSW5zdGFuY2U8VD4gPSB0aGlzLmluc3RBd2FyZVByb2Nlc3Nvck1hbmFnZXIuYmVmb3JlSW5zdGFudGlhdGlvbih0aGlzLmNvbXBvbmVudENsYXNzLCBhcmdzKTtcbiAgICAgICAgICAgIGlmICghaW5zdGFuY2UpIHtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IG5ldyB0aGlzLmNvbXBvbmVudENsYXNzKC4uLmFyZ3MpIGFzIEluc3RhbmNlPFQ+O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5saWZlY3ljbGVSZXNvbHZlci5pbnZva2VQcmVJbmplY3RNZXRob2QoaW5zdGFuY2UpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdldHRlciA9IHByb3BlcnRpZXNba2V5XShpbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWZpbmVQcm9wZXJ0eShpbnN0YW5jZSwga2V5LCBnZXR0ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5zdGFuY2UgPSB0aGlzLmluc3RBd2FyZVByb2Nlc3Nvck1hbmFnZXIuYWZ0ZXJJbnN0YW50aWF0aW9uKGluc3RhbmNlKTtcbiAgICAgICAgICAgIHRoaXMubGlmZWN5Y2xlUmVzb2x2ZXIuaW52b2tlUG9zdEluamVjdE1ldGhvZChpbnN0YW5jZSk7XG4gICAgICAgICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpdmF0ZSBkZWZpbmVQcm9wZXJ0eTxULCBWPihpbnN0YW5jZTogVCwga2V5OiBzdHJpbmcgfCBzeW1ib2wsIGdldHRlcjogKCkgPT4gVikge1xuICAgICAgICBpZiAodGhpcy5sYXp5TW9kZSkge1xuICAgICAgICAgICAgbGF6eVByb3AoaW5zdGFuY2UsIGtleSwgZ2V0dGVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGluc3RhbmNlW2tleV0gPSBnZXR0ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcml2YXRlIGNyZWF0ZVByb3BlcnRpZXNHZXR0ZXJCdWlsZGVyKCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7fSBhcyBSZWNvcmQ8a2V5b2YgVCwgKGluc3RhbmNlOiBUKSA9PiAoKSA9PiB1bmtub3duPjtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5wcm9wZXJ0eUZhY3Rvcmllcykge1xuICAgICAgICAgICAgY29uc3QgeyBmYWN0b3J5LCBpbmplY3Rpb25zIH0gPSB0aGlzLnByb3BlcnR5RmFjdG9yaWVzW2tleV07XG4gICAgICAgICAgICByZXN1bHRba2V5IGFzIGtleW9mIFRdID0gPFQ+KGluc3RhbmNlOiBUKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm4gPSBmYWN0b3J5KHRoaXMuY29udGFpbmVyLCBpbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyLmludm9rZShmbiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5qZWN0aW9uc1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cbiIsImltcG9ydCAncmVmbGVjdC1tZXRhZGF0YSc7XG5pbXBvcnQgeyBNZXRhZGF0YSB9IGZyb20gJy4uL3R5cGVzL01ldGFkYXRhJztcbmltcG9ydCB7IElkZW50aWZpZXIgfSBmcm9tICcuLi90eXBlcy9JZGVudGlmaWVyJztcbmltcG9ydCB7IEluc3RhbmNlU2NvcGUgfSBmcm9tICcuLi9mb3VuZGF0aW9uL0luc3RhbmNlU2NvcGUnO1xuXG5leHBvcnQgY29uc3QgRlVOQ1RJT05fTUVUQURBVEFfS0VZID0gU3ltYm9sKCdpb2M6ZnVuY3Rpb24tbWV0YWRhdGEnKTtcblxuZXhwb3J0IGludGVyZmFjZSBGdW5jdGlvbk1ldGFkYXRhUmVhZGVyIHtcbiAgICBnZXRQYXJhbWV0ZXJzKCk6IElkZW50aWZpZXJbXTtcbiAgICBpc0ZhY3RvcnkoKTogYm9vbGVhbjtcbiAgICBnZXRTY29wZSgpOiBJbnN0YW5jZVNjb3BlIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25NZXRhZGF0YSBpbXBsZW1lbnRzIE1ldGFkYXRhPEZ1bmN0aW9uTWV0YWRhdGFSZWFkZXIsIEZ1bmN0aW9uPiB7XG4gICAgc3RhdGljIGdldFJlZmxlY3RLZXkoKSB7XG4gICAgICAgIHJldHVybiBGVU5DVElPTl9NRVRBREFUQV9LRVk7XG4gICAgfVxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFyYW1ldGVyczogSWRlbnRpZmllcltdID0gW107XG4gICAgcHJpdmF0ZSBzY29wZT86IEluc3RhbmNlU2NvcGU7XG4gICAgcHJpdmF0ZSBpc0ZhY3Rvcnk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBzZXRQYXJhbWV0ZXJUeXBlKGluZGV4OiBudW1iZXIsIHN5bWJvbDogSWRlbnRpZmllcikge1xuICAgICAgICB0aGlzLnBhcmFtZXRlcnNbaW5kZXhdID0gc3ltYm9sO1xuICAgIH1cbiAgICBzZXRTY29wZShzY29wZTogSW5zdGFuY2VTY29wZSkge1xuICAgICAgICB0aGlzLnNjb3BlID0gc2NvcGU7XG4gICAgfVxuICAgIHNldElzRmFjdG9yeShpc0ZhY3Rvcnk6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5pc0ZhY3RvcnkgPSBpc0ZhY3Rvcnk7XG4gICAgfVxuICAgIGluaXQoKSB7XG4gICAgICAgIC8vIFBBU1M7XG4gICAgfVxuICAgIHJlYWRlcigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldFBhcmFtZXRlcnM6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzLnNsaWNlKDApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzRmFjdG9yeTogKCkgPT4gdGhpcy5pc0ZhY3RvcnksXG4gICAgICAgICAgICBnZXRTY29wZTogKCkgPT4gdGhpcy5zY29wZVxuICAgICAgICB9O1xuICAgIH1cbn1cbiIsImxldCBpbnN0YW5jZVNlcmlhbE5vID0gLTE7XG5cbmV4cG9ydCBjbGFzcyBDb21wb25lbnRJbnN0YW5jZVdyYXBwZXIge1xuICAgIHB1YmxpYyByZWFkb25seSBzZXJpYWxObyA9ICsraW5zdGFuY2VTZXJpYWxObztcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBpbnN0YW5jZTogdW5rbm93bikge31cblxuICAgIHB1YmxpYyBjb21wYXJlVG8ob3RoZXI6IENvbXBvbmVudEluc3RhbmNlV3JhcHBlcik6IC0xIHwgMCB8IDEge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXJpYWxObyA+IG90aGVyLnNlcmlhbE5vID8gLTEgOiB0aGlzLnNlcmlhbE5vIDwgb3RoZXIuc2VyaWFsTm8gPyAxIDogMDtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBNZXRhZGF0YUZhY3RvcnkgfSBmcm9tICcuLi9tZXRhZGF0YS9NZXRhZGF0YUZhY3RvcnknO1xuaW1wb3J0IHsgQ2xhc3NNZXRhZGF0YSB9IGZyb20gJy4uL21ldGFkYXRhL0NsYXNzTWV0YWRhdGEnO1xuaW1wb3J0IHsgTGlmZWN5Y2xlIH0gZnJvbSAnLi4vZm91bmRhdGlvbi9MaWZlY3ljbGUnO1xuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlUHJlRGVzdHJveShpbnN0YW5jZTogdW5rbm93bikge1xuICAgIGNvbnN0IGNsYXp6ID0gaW5zdGFuY2U/LmNvbnN0cnVjdG9yO1xuICAgIGlmICghY2xhenopIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YShjbGF6eiwgQ2xhc3NNZXRhZGF0YSk7XG4gICAgY29uc3QgcHJlRGVzdHJveU1ldGhvZHMgPSBtZXRhZGF0YS5nZXRNZXRob2RzKExpZmVjeWNsZS5QUkVfREVTVFJPWSk7XG4gICAgcHJlRGVzdHJveU1ldGhvZHMuZm9yRWFjaChtZXRob2ROYW1lID0+IHtcbiAgICAgICAgY29uc3QgbWV0aG9kID0gY2xhenoucHJvdG90eXBlW21ldGhvZE5hbWVdO1xuICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgbWV0aG9kLmFwcGx5KGluc3RhbmNlKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuIiwiaW1wb3J0IHsgR2V0SW5zdGFuY2VPcHRpb25zLCBJbnN0YW5jZVJlc29sdXRpb24sIFNhdmVJbnN0YW5jZU9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9JbnN0YW5jZVJlc29sdXRpb24nO1xuaW1wb3J0IHsgSWRlbnRpZmllciB9IGZyb20gJy4uL3R5cGVzL0lkZW50aWZpZXInO1xuaW1wb3J0IHsgQ29tcG9uZW50SW5zdGFuY2VXcmFwcGVyIH0gZnJvbSAnLi4vZm91bmRhdGlvbi9Db21wb25lbnRJbnN0YW5jZVdyYXBwZXInO1xuaW1wb3J0IHsgaW52b2tlUHJlRGVzdHJveSB9IGZyb20gJy4uL2NvbW1vbi9pbnZva2VQcmVEZXN0cm95JztcblxuZXhwb3J0IGNsYXNzIFNpbmdsZXRvbkluc3RhbmNlUmVzb2x1dGlvbiBpbXBsZW1lbnRzIEluc3RhbmNlUmVzb2x1dGlvbiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBJTlNUQU5DRV9NQVAgPSBuZXcgTWFwPElkZW50aWZpZXIsIENvbXBvbmVudEluc3RhbmNlV3JhcHBlcj4oKTtcbiAgICBnZXRJbnN0YW5jZTxULCBPPihvcHRpb25zOiBHZXRJbnN0YW5jZU9wdGlvbnM8VCwgTz4pOiBUIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuSU5TVEFOQ0VfTUFQLmdldChvcHRpb25zLmlkZW50aWZpZXIpPy5pbnN0YW5jZSBhcyBUO1xuICAgIH1cblxuICAgIHNhdmVJbnN0YW5jZTxULCBPPihvcHRpb25zOiBTYXZlSW5zdGFuY2VPcHRpb25zPFQsIE8+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuSU5TVEFOQ0VfTUFQLnNldChvcHRpb25zLmlkZW50aWZpZXIsIG5ldyBDb21wb25lbnRJbnN0YW5jZVdyYXBwZXIob3B0aW9ucy5pbnN0YW5jZSkpO1xuICAgIH1cblxuICAgIHNob3VsZEdlbmVyYXRlPFQsIE8+KG9wdGlvbnM6IEdldEluc3RhbmNlT3B0aW9uczxULCBPPik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuSU5TVEFOQ0VfTUFQLmhhcyhvcHRpb25zLmlkZW50aWZpZXIpO1xuICAgIH1cbiAgICBkZXN0cm95KCkge1xuICAgICAgICBjb25zdCBpbnN0YW5jZVdyYXBwZXJzID0gQXJyYXkuZnJvbSh0aGlzLklOU1RBTkNFX01BUC52YWx1ZXMoKSk7XG4gICAgICAgIGluc3RhbmNlV3JhcHBlcnMuc29ydCgoYSwgYikgPT4gYS5jb21wYXJlVG8oYikpO1xuICAgICAgICBpbnN0YW5jZVdyYXBwZXJzLmZvckVhY2goaW5zdGFuY2VXcmFwcGVyID0+IHtcbiAgICAgICAgICAgIGludm9rZVByZURlc3Ryb3koaW5zdGFuY2VXcmFwcGVyLmluc3RhbmNlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuSU5TVEFOQ0VfTUFQLmNsZWFyKCk7XG4gICAgfVxufVxuIiwiaW1wb3J0IHsgR2V0SW5zdGFuY2VPcHRpb25zLCBJbnN0YW5jZVJlc29sdXRpb24sIFNhdmVJbnN0YW5jZU9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9JbnN0YW5jZVJlc29sdXRpb24nO1xuaW1wb3J0IHsgU2luZ2xldG9uSW5zdGFuY2VSZXNvbHV0aW9uIH0gZnJvbSAnLi9TaW5nbGV0b25JbnN0YW5jZVJlc29sdXRpb24nO1xuXG5jb25zdCBTSU5HTEVUT05fSU5TVEFOQ0VfU0lOR0xFVE9OID0gbmV3IFNpbmdsZXRvbkluc3RhbmNlUmVzb2x1dGlvbigpO1xuXG5leHBvcnQgY2xhc3MgR2xvYmFsU2hhcmVkSW5zdGFuY2VSZXNvbHV0aW9uIGltcGxlbWVudHMgSW5zdGFuY2VSZXNvbHV0aW9uIHtcbiAgICBnZXRJbnN0YW5jZTxULCBPPihvcHRpb25zOiBHZXRJbnN0YW5jZU9wdGlvbnM8VCwgTz4pOiBUIHtcbiAgICAgICAgcmV0dXJuIFNJTkdMRVRPTl9JTlNUQU5DRV9TSU5HTEVUT04uZ2V0SW5zdGFuY2Uob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgc2F2ZUluc3RhbmNlPFQsIE8+KG9wdGlvbnM6IFNhdmVJbnN0YW5jZU9wdGlvbnM8VCwgTz4pOiB2b2lkIHtcbiAgICAgICAgU0lOR0xFVE9OX0lOU1RBTkNFX1NJTkdMRVRPTi5zYXZlSW5zdGFuY2Uob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgc2hvdWxkR2VuZXJhdGU8VCwgTz4ob3B0aW9uczogR2V0SW5zdGFuY2VPcHRpb25zPFQsIE8+KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBTSU5HTEVUT05fSU5TVEFOQ0VfU0lOR0xFVE9OLnNob3VsZEdlbmVyYXRlKG9wdGlvbnMpO1xuICAgIH1cbiAgICBkZXN0cm95KCkge1xuICAgICAgICAvLyBQQVNTO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IEluc3RhbmNlUmVzb2x1dGlvbiwgU2F2ZUluc3RhbmNlT3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0luc3RhbmNlUmVzb2x1dGlvbic7XG5pbXBvcnQgeyBpbnZva2VQcmVEZXN0cm95IH0gZnJvbSAnLi4vY29tbW9uL2ludm9rZVByZURlc3Ryb3knO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNpZW50SW5zdGFuY2VSZXNvbHV0aW9uIGltcGxlbWVudHMgSW5zdGFuY2VSZXNvbHV0aW9uIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluc3RhbmNlcyA9IG5ldyBTZXQ8dW5rbm93bj4oKTtcbiAgICBzaG91bGRHZW5lcmF0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZ2V0SW5zdGFuY2U8VD4oKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzYXZlSW5zdGFuY2U8VCwgTz4ob3B0aW9uczogU2F2ZUluc3RhbmNlT3B0aW9uczxULCBPPik6IHZvaWQge1xuICAgICAgICB0aGlzLmluc3RhbmNlcy5hZGQob3B0aW9ucy5pbnN0YW5jZSk7XG4gICAgfVxuICAgIGRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuaW5zdGFuY2VzLmZvckVhY2goaXQgPT4ge1xuICAgICAgICAgICAgaWYgKCFpdCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGludm9rZVByZURlc3Ryb3koaXQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pbnN0YW5jZXMuY2xlYXIoKTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBFdmFsdWF0b3IgfSBmcm9tICcuLi90eXBlcy9FdmFsdWF0b3InO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnLi4vZm91bmRhdGlvbi9BcHBsaWNhdGlvbkNvbnRleHQnO1xuaW1wb3J0IHsgSlNPTkRhdGEgfSBmcm9tICcuLi90eXBlcy9KU09ORGF0YSc7XG5cbmV4cG9ydCBjbGFzcyBKU09ORGF0YUV2YWx1YXRvciBpbXBsZW1lbnRzIEV2YWx1YXRvciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuYW1lc3BhY2VEYXRhTWFwID0gbmV3IE1hcDxzdHJpbmcsIEpTT05EYXRhPigpO1xuICAgIGV2YWw8VD4oY29udGV4dDogQXBwbGljYXRpb25Db250ZXh0LCBleHByZXNzaW9uOiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgY29sb25JbmRleCA9IGV4cHJlc3Npb24uaW5kZXhPZignOicpO1xuICAgICAgICBpZiAoY29sb25JbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW5jb3JyZWN0IGV4cHJlc3Npb24sIG5hbWVzcGFjZSBub3Qgc3BlY2lmaWVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmFtZXNwYWNlID0gZXhwcmVzc2lvbi5zdWJzdHJpbmcoMCwgY29sb25JbmRleCk7XG4gICAgICAgIGNvbnN0IGV4cCA9IGV4cHJlc3Npb24uc3Vic3RyaW5nKGNvbG9uSW5kZXggKyAxKTtcbiAgICAgICAgaWYgKCF0aGlzLm5hbWVzcGFjZURhdGFNYXAuaGFzKG5hbWVzcGFjZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5jb3JyZWN0IGV4cHJlc3Npb246IG5hbWVzcGFjZSBub3QgcmVjb3JkZWQ6IFwiJHtuYW1lc3BhY2V9XCJgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5uYW1lc3BhY2VEYXRhTWFwLmdldChuYW1lc3BhY2UpIGFzIEpTT05EYXRhO1xuICAgICAgICByZXR1cm4gcnVuRXhwcmVzc2lvbihleHAsIGRhdGEgYXMgT2JqZWN0KTtcbiAgICB9XG4gICAgcmVjb3JkRGF0YShuYW1lc3BhY2U6IHN0cmluZywgZGF0YTogSlNPTkRhdGEpIHtcbiAgICAgICAgdGhpcy5uYW1lc3BhY2VEYXRhTWFwLnNldChuYW1lc3BhY2UsIGRhdGEpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gcnVuRXhwcmVzc2lvbihleHByZXNzaW9uOiBzdHJpbmcsIHJvb3RDb250ZXh0OiBPYmplY3QpIHtcbiAgICBjb25zdCBmbiA9IGNvbXBpbGVFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xuICAgIHJldHVybiBmbihyb290Q29udGV4dCk7XG59XG5cbmZ1bmN0aW9uIGNvbXBpbGVFeHByZXNzaW9uKGV4cHJlc3Npb246IHN0cmluZykge1xuICAgIGlmIChleHByZXNzaW9uLmluZGV4T2YoJywnKSA+IC0xKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5jb3JyZWN0IGV4cHJlc3Npb24gc3ludGF4LCBUaGUgJywnIGlzIG5vdCBhbGxvd2VkIGluIGV4cHJlc3Npb246IFwiJHtleHByZXNzaW9ufVwiYCk7XG4gICAgfVxuICAgIGlmIChleHByZXNzaW9uLmxlbmd0aCA+IDEyMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgSW5jb3JyZWN0IGV4cHJlc3Npb24gc3ludGF4LCBleHByZXNzaW9uIGxlbmd0aCBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIDEyMCwgYnV0IGFjdHVhbDogJHtleHByZXNzaW9uLmxlbmd0aH1gXG4gICAgICAgICk7XG4gICAgfVxuICAgIGlmICgvXFwoLio/XFwpLy50ZXN0KGV4cHJlc3Npb24pKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5jb3JyZWN0IGV4cHJlc3Npb24gc3ludGF4LCBwYXJlbnRoZXNlcyBhcmUgbm90IGFsbG93ZWQgaW4gZXhwcmVzc2lvbjogXCIke2V4cHJlc3Npb259XCJgKTtcbiAgICB9XG4gICAgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb24udHJpbSgpO1xuICAgIGlmIChleHByZXNzaW9uID09PSAnJykge1xuICAgICAgICByZXR1cm4gKHJvb3Q6IE9iamVjdCkgPT4gcm9vdDtcbiAgICB9XG5cbiAgICBjb25zdCByb290VmFyTmFtZSA9IHZhck5hbWUoJ2NvbnRleHQnKTtcbiAgICByZXR1cm4gbmV3IEZ1bmN0aW9uKFxuICAgICAgICByb290VmFyTmFtZSxcbiAgICAgICAgYFxuICAgICAgICBcInVzZSBzdHJpY3RcIjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiAke3Jvb3RWYXJOYW1lfS4ke2V4cHJlc3Npb259O1xuICAgICAgICB9IGNhdGNoKGVycm9yKSB7IHRocm93IGVycm9yIH1cbiAgICBgXG4gICAgKTtcbn1cbmxldCBWQVJfU0VRVUVOQ0UgPSBEYXRlLm5vdygpO1xuZnVuY3Rpb24gdmFyTmFtZShwcmVmaXg6IHN0cmluZykge1xuICAgIHJldHVybiBwcmVmaXggKyAnJyArIChWQVJfU0VRVUVOQ0UrKykudG9TdHJpbmcoMTYpO1xufVxuIiwiaW1wb3J0IHsgRXZhbHVhdG9yIH0gZnJvbSAnLi4vdHlwZXMvRXZhbHVhdG9yJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gJy4uL2ZvdW5kYXRpb24vQXBwbGljYXRpb25Db250ZXh0JztcblxuZXhwb3J0IGNsYXNzIEVudmlyb25tZW50RXZhbHVhdG9yIGltcGxlbWVudHMgRXZhbHVhdG9yIHtcbiAgICBldmFsPFQ+KGNvbnRleHQ6IEFwcGxpY2F0aW9uQ29udGV4dCwgZXhwcmVzc2lvbjogc3RyaW5nKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzLmVudltleHByZXNzaW9uXSBhcyBUIHwgdW5kZWZpbmVkO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IEV2YWx1YXRvciB9IGZyb20gJy4uL3R5cGVzL0V2YWx1YXRvcic7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkNvbnRleHQgfSBmcm9tICcuLi9mb3VuZGF0aW9uL0FwcGxpY2F0aW9uQ29udGV4dCc7XG5cbmV4cG9ydCBjbGFzcyBBcmd2RXZhbHVhdG9yIGltcGxlbWVudHMgRXZhbHVhdG9yIHtcbiAgICBldmFsPFQsIEEgPSBzdHJpbmdbXT4oY29udGV4dDogQXBwbGljYXRpb25Db250ZXh0LCBleHByZXNzaW9uOiBzdHJpbmcsIGFyZ3M/OiBBKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGFyZ3YgPSBhcmdzIHx8IHByb2Nlc3MuYXJndjtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXNcbiAgICAgICAgY29uc3QgbWluaW1pc3QgPSByZXF1aXJlKCdtaW5pbWlzdCcpO1xuICAgICAgICBjb25zdCBtYXAgPSBtaW5pbWlzdChhcmd2KTtcbiAgICAgICAgcmV0dXJuIG1hcFtleHByZXNzaW9uXTtcbiAgICB9XG59XG4iLCJleHBvcnQgZW51bSBBZHZpY2Uge1xuICAgIEJlZm9yZSxcbiAgICBBZnRlcixcbiAgICBBcm91bmQsXG4gICAgQWZ0ZXJSZXR1cm4sXG4gICAgVGhyb3duLFxuICAgIEZpbmFsbHlcbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEFkdmljZSB9IGZyb20gJy4vQWR2aWNlJztcblxudHlwZSBCZWZvcmVIb29rID0gKGFyZ3M6IGFueVtdKSA9PiB2b2lkO1xudHlwZSBBZnRlckhvb2sgPSAoYXJnczogYW55W10pID0+IHZvaWQ7XG50eXBlIFRocm93bkhvb2sgPSAocmVhc29uOiBhbnksIGFyZ3M6IGFueVtdKSA9PiB2b2lkO1xudHlwZSBGaW5hbGx5SG9vayA9IChhcmdzOiBhbnlbXSkgPT4gdm9pZDtcbnR5cGUgQWZ0ZXJSZXR1cm5Ib29rID0gKHJldHVyblZhbHVlOiBhbnksIGFyZ3M6IGFueVtdKSA9PiBhbnk7XG50eXBlIEFyb3VuZEhvb2sgPSAodGhpczogYW55LCBvcmlnaW5mbjogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkLCBhcmdzOiBhbnlbXSkgPT4gdm9pZDtcblxuZXhwb3J0IGNsYXNzIEFzcGVjdFV0aWxzIHtcbiAgICBwcml2YXRlIGJlZm9yZUhvb2tzOiBBcnJheTxCZWZvcmVIb29rPiA9IFtdO1xuICAgIHByaXZhdGUgYWZ0ZXJIb29rczogQXJyYXk8QWZ0ZXJIb29rPiA9IFtdO1xuICAgIHByaXZhdGUgdGhyb3duSG9va3M6IEFycmF5PFRocm93bkhvb2s+ID0gW107XG4gICAgcHJpdmF0ZSBmaW5hbGx5SG9va3M6IEFycmF5PEZpbmFsbHlIb29rPiA9IFtdO1xuICAgIHByaXZhdGUgYWZ0ZXJSZXR1cm5Ib29rczogQXJyYXk8QWZ0ZXJSZXR1cm5Ib29rPiA9IFtdO1xuICAgIHByaXZhdGUgYXJvdW5kSG9va3M6IEFycmF5PEFyb3VuZEhvb2s+ID0gW107XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBmbjogKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkpIHt9XG4gICAgYXBwZW5kKGFkdmljZTogQWR2aWNlLkJlZm9yZSwgaG9vazogQmVmb3JlSG9vayk6IHZvaWQ7XG4gICAgYXBwZW5kKGFkdmljZTogQWR2aWNlLkFmdGVyLCBob29rOiBBZnRlckhvb2spOiB2b2lkO1xuICAgIGFwcGVuZChhZHZpY2U6IEFkdmljZS5UaHJvd24sIGhvb2s6IFRocm93bkhvb2spOiB2b2lkO1xuICAgIGFwcGVuZChhZHZpY2U6IEFkdmljZS5GaW5hbGx5LCBob29rOiBGaW5hbGx5SG9vayk6IHZvaWQ7XG4gICAgYXBwZW5kKGFkdmljZTogQWR2aWNlLkFmdGVyUmV0dXJuLCBob29rOiBBZnRlclJldHVybkhvb2spOiB2b2lkO1xuICAgIGFwcGVuZChhZHZpY2U6IEFkdmljZS5Bcm91bmQsIGhvb2s6IEFyb3VuZEhvb2spOiB2b2lkO1xuICAgIGFwcGVuZChhZHZpY2U6IEFkdmljZSwgaG9vazogRnVuY3Rpb24pIHtcbiAgICAgICAgbGV0IGhvb2tzQXJyYXk6IEZ1bmN0aW9uW10gfCB1bmRlZmluZWQ7XG4gICAgICAgIHN3aXRjaCAoYWR2aWNlKSB7XG4gICAgICAgICAgICBjYXNlIEFkdmljZS5CZWZvcmU6XG4gICAgICAgICAgICAgICAgaG9va3NBcnJheSA9IHRoaXMuYmVmb3JlSG9va3M7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEFkdmljZS5BZnRlcjpcbiAgICAgICAgICAgICAgICBob29rc0FycmF5ID0gdGhpcy5hZnRlckhvb2tzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBBZHZpY2UuVGhyb3duOlxuICAgICAgICAgICAgICAgIGhvb2tzQXJyYXkgPSB0aGlzLnRocm93bkhvb2tzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBBZHZpY2UuRmluYWxseTpcbiAgICAgICAgICAgICAgICBob29rc0FycmF5ID0gdGhpcy5maW5hbGx5SG9va3M7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEFkdmljZS5BZnRlclJldHVybjpcbiAgICAgICAgICAgICAgICBob29rc0FycmF5ID0gdGhpcy5hZnRlclJldHVybkhvb2tzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBBZHZpY2UuQXJvdW5kOlxuICAgICAgICAgICAgICAgIGhvb2tzQXJyYXkgPSB0aGlzLmFyb3VuZEhvb2tzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChob29rc0FycmF5KSB7XG4gICAgICAgICAgICBob29rc0FycmF5LnB1c2goaG9vayk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZXh0cmFjdCgpIHtcbiAgICAgICAgY29uc3QgeyBhcm91bmRIb29rcywgYmVmb3JlSG9va3MsIGFmdGVySG9va3MsIGFmdGVyUmV0dXJuSG9va3MsIGZpbmFsbHlIb29rcywgdGhyb3duSG9va3MgfSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGZuID0gYXJvdW5kSG9va3MucmVkdWNlUmlnaHQoKHByZXYsIG5leHQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXh0LmNhbGwodGhpcywgcHJldiwgYXJncyk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LCB0aGlzLmZuKSBhcyB0eXBlb2YgdGhpcy5mbjtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICAgICAgICBiZWZvcmVIb29rcy5mb3JFYWNoKGhvb2sgPT4ge1xuICAgICAgICAgICAgICAgIGhvb2suY2FsbCh0aGlzLCBhcmdzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgaW52b2tlID0gKG9uRXJyb3I6IChyZWFzb246IGFueSkgPT4gdm9pZCwgb25GaW5hbGx5OiAoKSA9PiB2b2lkLCBvbkFmdGVyOiAocmV0dXJuVmFsdWU6IGFueSkgPT4gYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHJldHVyblZhbHVlOiBhbnk7XG4gICAgICAgICAgICAgICAgbGV0IGlzUHJvbWlzZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gZm4uYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXR1cm5WYWx1ZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUHJvbWlzZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlLmNhdGNoKG9uRXJyb3IpLmZpbmFsbHkob25GaW5hbGx5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkZpbmFsbHkoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZS50aGVuKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25BZnRlcih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvbkFmdGVyKHJldHVyblZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIGludm9rZShcbiAgICAgICAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aHJvd25Ib29rcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd25Ib29rcy5mb3JFYWNoKGhvb2sgPT4gaG9vay5jYWxsKHRoaXMsIGVycm9yLCBhcmdzKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBmaW5hbGx5SG9va3MuZm9yRWFjaChob29rID0+IGhvb2suY2FsbCh0aGlzLCBhcmdzKSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGFmdGVySG9va3MuZm9yRWFjaChob29rID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvb2suY2FsbCh0aGlzLCBhcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhZnRlclJldHVybkhvb2tzLnJlZHVjZSgocmV0VmFsLCBob29rKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaG9vay5jYWxsKHRoaXMsIHJldFZhbCwgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgIH0sIHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9O1xuICAgIH1cbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB0eXBlIHsgQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnLi4vZm91bmRhdGlvbi9BcHBsaWNhdGlvbkNvbnRleHQnO1xuaW1wb3J0IHsgQWR2aWNlIH0gZnJvbSAnLi9BZHZpY2UnO1xuaW1wb3J0IHsgTmV3YWJsZSB9IGZyb20gJy4uL3R5cGVzL05ld2FibGUnO1xuaW1wb3J0IHsgQXNwZWN0LCBKb2luUG9pbnQsIFByb2NlZWRpbmdKb2luUG9pbnQgfSBmcm9tICcuL0FzcGVjdCc7XG5pbXBvcnQgeyBBc3BlY3RVdGlscyB9IGZyb20gJy4vQXNwZWN0VXRpbHMnO1xuaW1wb3J0IHsgVXNlQXNwZWN0TWV0YWRhdGFSZWFkZXIgfSBmcm9tICcuL0FPUENsYXNzTWV0YWRhdGEnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXNwZWN0PFQ+KFxuICAgIGFwcEN0eDogQXBwbGljYXRpb25Db250ZXh0LFxuICAgIHRhcmdldDogVCxcbiAgICBtZXRob2ROYW1lOiBzdHJpbmcgfCBzeW1ib2wsXG4gICAgbWV0aG9kRnVuYzogRnVuY3Rpb24sXG4gICAgbWV0YWRhdGE6IFVzZUFzcGVjdE1ldGFkYXRhUmVhZGVyXG4pIHtcbiAgICBjb25zdCBjcmVhdGVBc3BlY3RDdHggPSAoYWR2aWNlOiBBZHZpY2UsIGFyZ3M6IGFueVtdLCByZXR1cm5WYWx1ZTogYW55ID0gbnVsbCwgZXJyb3I6IGFueSA9IG51bGwpOiBKb2luUG9pbnQgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgICAgIGFyZ3VtZW50czogYXJncyxcbiAgICAgICAgICAgIHJldHVyblZhbHVlLFxuICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICBhZHZpY2VcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGNvbnN0IGFzcGVjdFV0aWxzID0gbmV3IEFzcGVjdFV0aWxzKG1ldGhvZEZ1bmMgYXMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkpO1xuICAgIGNvbnN0IENsYXNzVG9JbnN0YW5jZSA9IChBc3BlY3RDbGFzczogTmV3YWJsZTxBc3BlY3Q+KSA9PiBhcHBDdHguZ2V0SW5zdGFuY2UoQXNwZWN0Q2xhc3MpO1xuICAgIGNvbnN0IGJlZm9yZUFkdmljZUFzcGVjdHMgPSBtZXRhZGF0YS5nZXRBc3BlY3RzT2YobWV0aG9kTmFtZSwgQWR2aWNlLkJlZm9yZSkubWFwKENsYXNzVG9JbnN0YW5jZSk7XG4gICAgY29uc3QgYWZ0ZXJBZHZpY2VBc3BlY3RzID0gbWV0YWRhdGEuZ2V0QXNwZWN0c09mKG1ldGhvZE5hbWUsIEFkdmljZS5BZnRlcikubWFwKENsYXNzVG9JbnN0YW5jZSk7XG4gICAgY29uc3QgdHJ5Q2F0Y2hBZHZpY2VBc3BlY3RzID0gbWV0YWRhdGEuZ2V0QXNwZWN0c09mKG1ldGhvZE5hbWUsIEFkdmljZS5UaHJvd24pLm1hcChDbGFzc1RvSW5zdGFuY2UpO1xuICAgIGNvbnN0IHRyeUZpbmFsbHlBZHZpY2VBc3BlY3RzID0gbWV0YWRhdGEuZ2V0QXNwZWN0c09mKG1ldGhvZE5hbWUsIEFkdmljZS5GaW5hbGx5KS5tYXAoQ2xhc3NUb0luc3RhbmNlKTtcbiAgICBjb25zdCBhZnRlclJldHVybkFkdmljZUFzcGVjdHMgPSBtZXRhZGF0YS5nZXRBc3BlY3RzT2YobWV0aG9kTmFtZSwgQWR2aWNlLkFmdGVyUmV0dXJuKS5tYXAoQ2xhc3NUb0luc3RhbmNlKTtcbiAgICBjb25zdCBhcm91bmRBZHZpY2VBc3BlY3RzID0gbWV0YWRhdGEuZ2V0QXNwZWN0c09mKG1ldGhvZE5hbWUsIEFkdmljZS5Bcm91bmQpLm1hcChDbGFzc1RvSW5zdGFuY2UpO1xuXG4gICAgaWYgKGJlZm9yZUFkdmljZUFzcGVjdHMubGVuZ3RoID4gMCkge1xuICAgICAgICBhc3BlY3RVdGlscy5hcHBlbmQoQWR2aWNlLkJlZm9yZSwgKGFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBqb2luUG9pbnQgPSBjcmVhdGVBc3BlY3RDdHgoQWR2aWNlLkJlZm9yZSwgYXJncyk7XG4gICAgICAgICAgICBiZWZvcmVBZHZpY2VBc3BlY3RzLmZvckVhY2goYXNwZWN0ID0+IHtcbiAgICAgICAgICAgICAgICBhc3BlY3QuZXhlY3V0ZShqb2luUG9pbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoYWZ0ZXJBZHZpY2VBc3BlY3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYXNwZWN0VXRpbHMuYXBwZW5kKEFkdmljZS5BZnRlciwgKGFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBqb2luUG9pbnQgPSBjcmVhdGVBc3BlY3RDdHgoQWR2aWNlLkFmdGVyLCBhcmdzKTtcbiAgICAgICAgICAgIGFmdGVyQWR2aWNlQXNwZWN0cy5mb3JFYWNoKGFzcGVjdCA9PiB7XG4gICAgICAgICAgICAgICAgYXNwZWN0LmV4ZWN1dGUoam9pblBvaW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHRyeUNhdGNoQWR2aWNlQXNwZWN0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFzcGVjdFV0aWxzLmFwcGVuZChBZHZpY2UuVGhyb3duLCAoZXJyb3IsIGFyZ3MpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGpvaW5Qb2ludCA9IGNyZWF0ZUFzcGVjdEN0eChBZHZpY2UuVGhyb3duLCBhcmdzLCBudWxsLCBlcnJvcik7XG4gICAgICAgICAgICB0cnlDYXRjaEFkdmljZUFzcGVjdHMuZm9yRWFjaChhc3BlY3QgPT4ge1xuICAgICAgICAgICAgICAgIGFzcGVjdC5leGVjdXRlKGpvaW5Qb2ludCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRyeUZpbmFsbHlBZHZpY2VBc3BlY3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYXNwZWN0VXRpbHMuYXBwZW5kKEFkdmljZS5GaW5hbGx5LCAoYXJnczogYW55W10pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGpvaW5Qb2ludCA9IGNyZWF0ZUFzcGVjdEN0eChBZHZpY2UuRmluYWxseSwgYXJncyk7XG4gICAgICAgICAgICB0cnlGaW5hbGx5QWR2aWNlQXNwZWN0cy5mb3JFYWNoKGFzcGVjdCA9PiB7XG4gICAgICAgICAgICAgICAgYXNwZWN0LmV4ZWN1dGUoam9pblBvaW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoYWZ0ZXJSZXR1cm5BZHZpY2VBc3BlY3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYXNwZWN0VXRpbHMuYXBwZW5kKEFkdmljZS5BZnRlclJldHVybiwgKHJldHVyblZhbHVlLCBhcmdzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYWZ0ZXJSZXR1cm5BZHZpY2VBc3BlY3RzLnJlZHVjZSgocHJldlJldHVyblZhbHVlLCBhc3BlY3QpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBqb2luUG9pbnQgPSBjcmVhdGVBc3BlY3RDdHgoQWR2aWNlLkFmdGVyUmV0dXJuLCBhcmdzLCByZXR1cm5WYWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFzcGVjdC5leGVjdXRlKGpvaW5Qb2ludCk7XG4gICAgICAgICAgICB9LCByZXR1cm5WYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChhcm91bmRBZHZpY2VBc3BlY3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYXJvdW5kQWR2aWNlQXNwZWN0cy5mb3JFYWNoKGFzcGVjdCA9PiB7XG4gICAgICAgICAgICBhc3BlY3RVdGlscy5hcHBlbmQoQWR2aWNlLkFyb3VuZCwgKG9yaWdpbkZuLCBhcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgam9pblBvaW50ID0gY3JlYXRlQXNwZWN0Q3R4KEFkdmljZS5Bcm91bmQsIGFyZ3MsIG51bGwpIGFzIFByb2NlZWRpbmdKb2luUG9pbnQ7XG4gICAgICAgICAgICAgICAgam9pblBvaW50LnByb2NlZWQgPSAoanBBcmdzID0gYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luRm4oanBBcmdzKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBhc3BlY3QuZXhlY3V0ZShqb2luUG9pbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBhc3BlY3RVdGlscy5leHRyYWN0KCk7XG59XG4iLCJpbXBvcnQgeyBNZXRhZGF0YSwgTWV0YWRhdGFSZWFkZXIgfSBmcm9tICcuLi90eXBlcy9NZXRhZGF0YSc7XG5pbXBvcnQgeyBOZXdhYmxlIH0gZnJvbSAnLi4vdHlwZXMvTmV3YWJsZSc7XG5pbXBvcnQgeyBBc3BlY3QgfSBmcm9tICcuL0FzcGVjdCc7XG5pbXBvcnQgeyBjcmVhdGVEZWZhdWx0VmFsdWVNYXAsIERlZmF1bHRWYWx1ZU1hcCB9IGZyb20gJy4uL2NvbW1vbi9EZWZhdWx0VmFsdWVNYXAnO1xuaW1wb3J0IHsgQWR2aWNlIH0gZnJvbSAnLi9BZHZpY2UnO1xuXG5leHBvcnQgdHlwZSBVc2VBc3BlY3RNYXAgPSBEZWZhdWx0VmFsdWVNYXA8c3RyaW5nIHwgc3ltYm9sLCBEZWZhdWx0VmFsdWVNYXA8QWR2aWNlLCBBcnJheTxOZXdhYmxlPEFzcGVjdD4+Pj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlQXNwZWN0TWV0YWRhdGFSZWFkZXIgZXh0ZW5kcyBNZXRhZGF0YVJlYWRlciB7XG4gICAgZ2V0QXNwZWN0cygpOiBVc2VBc3BlY3RNYXA7XG4gICAgZ2V0QXNwZWN0c09mKG1ldGhvZE5hbWU6IHN0cmluZyB8IHN5bWJvbCwgYWR2aWNlOiBBZHZpY2UpOiBBcnJheTxOZXdhYmxlPEFzcGVjdD4+O1xufVxuZXhwb3J0IGNsYXNzIEFPUENsYXNzTWV0YWRhdGEgaW1wbGVtZW50cyBNZXRhZGF0YTxVc2VBc3BlY3RNZXRhZGF0YVJlYWRlciwgTmV3YWJsZTx1bmtub3duPj4ge1xuICAgIHN0YXRpYyBnZXRSZWZsZWN0S2V5KCkge1xuICAgICAgICByZXR1cm4gJ2FvcDp1c2UtYXNwZWN0LW1ldGFkYXRhJztcbiAgICB9XG4gICAgcHJpdmF0ZSBhc3BlY3RNYXA6IFVzZUFzcGVjdE1hcCA9IGNyZWF0ZURlZmF1bHRWYWx1ZU1hcCgoKSA9PiBjcmVhdGVEZWZhdWx0VmFsdWVNYXAoKCkgPT4gW10pKTtcbiAgICBpbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBJR05PUkVcbiAgICB9XG5cbiAgICBhcHBlbmQobWV0aG9kTmFtZTogc3RyaW5nIHwgc3ltYm9sLCBhZHZpY2U6IEFkdmljZSwgYXNwZWN0czogQXJyYXk8TmV3YWJsZTxBc3BlY3Q+Pikge1xuICAgICAgICBjb25zdCBhZHZpY2VBc3BlY3RNYXAgPSB0aGlzLmFzcGVjdE1hcC5nZXQobWV0aG9kTmFtZSk7XG4gICAgICAgIGNvbnN0IGV4aXRpbmdBc3BlY3RBcnJheSA9IGFkdmljZUFzcGVjdE1hcC5nZXQoYWR2aWNlKTtcbiAgICAgICAgZXhpdGluZ0FzcGVjdEFycmF5LnB1c2goLi4uYXNwZWN0cyk7XG4gICAgfVxuXG4gICAgcmVhZGVyKCk6IFVzZUFzcGVjdE1ldGFkYXRhUmVhZGVyIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldEFzcGVjdHM6ICgpOiBVc2VBc3BlY3RNYXAgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzcGVjdE1hcDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRBc3BlY3RzT2Y6IChtZXRob2ROYW1lOiBzdHJpbmcgfCBzeW1ib2wsIGFkdmljZTogQWR2aWNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNwZWN0TWFwLmdldChtZXRob2ROYW1lKS5nZXQoYWR2aWNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBQYXJ0aWFsSW5zdEF3YXJlUHJvY2Vzc29yIH0gZnJvbSAnLi4vdHlwZXMvSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yJztcbmltcG9ydCB7IE1ldGFkYXRhRmFjdG9yeSB9IGZyb20gJy4uL21ldGFkYXRhL01ldGFkYXRhRmFjdG9yeSc7XG5pbXBvcnQgdHlwZSB7IEFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gJy4uL2ZvdW5kYXRpb24vQXBwbGljYXRpb25Db250ZXh0JztcbmltcG9ydCB7IGNyZWF0ZUFzcGVjdCB9IGZyb20gJy4vY3JlYXRlQXNwZWN0JztcbmltcG9ydCB7IEFPUENsYXNzTWV0YWRhdGEgfSBmcm9tICcuL0FPUENsYXNzTWV0YWRhdGEnO1xuaW1wb3J0IHsgTmV3YWJsZSB9IGZyb20gJy4uL3R5cGVzL05ld2FibGUnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQU9QSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yIGltcGxlbWVudHMgUGFydGlhbEluc3RBd2FyZVByb2Nlc3NvciB7XG4gICAgc3RhdGljIGNyZWF0ZShhcHBDdHg6IEFwcGxpY2F0aW9uQ29udGV4dCk6IE5ld2FibGU8QU9QSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yPiB7XG4gICAgICAgIHJldHVybiBjbGFzcyBleHRlbmRzIEFPUEluc3RhbnRpYXRpb25Bd2FyZVByb2Nlc3NvciB7XG4gICAgICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwQ3R4OiBBcHBsaWNhdGlvbkNvbnRleHQgPSBhcHBDdHg7XG4gICAgICAgIH07XG4gICAgfVxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSBhcHBDdHg6IEFwcGxpY2F0aW9uQ29udGV4dDtcbiAgICBhZnRlckluc3RhbnRpYXRpb248VCBleHRlbmRzIG9iamVjdD4oaW5zdGFuY2U6IFQpOiBUIHtcbiAgICAgICAgY29uc3QgY2xhenogPSBpbnN0YW5jZS5jb25zdHJ1Y3RvcjtcblxuICAgICAgICBjb25zdCB1c2VBc3BlY3RNZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YShjbGF6eiwgQU9QQ2xhc3NNZXRhZGF0YSk7XG4gICAgICAgIGNvbnN0IHVzZUFzcGVjdE1ldGFkYXRhUmVhZGVyID0gdXNlQXNwZWN0TWV0YWRhdGEucmVhZGVyKCk7XG4gICAgICAgIGNvbnN0IHVzZUFzcGVjdHNNYXAgPSB1c2VBc3BlY3RNZXRhZGF0YVJlYWRlci5nZXRBc3BlY3RzKCk7XG4gICAgICAgIGlmICh1c2VBc3BlY3RzTWFwLnNpemUgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFzcGVjdFN0b3JlTWFwID0gbmV3IFdlYWtNYXA8b2JqZWN0LCBNYXA8c3RyaW5nIHwgc3ltYm9sLCBGdW5jdGlvbj4+KCk7XG4gICAgICAgIGFzcGVjdFN0b3JlTWFwLnNldChpbnN0YW5jZSwgbmV3IE1hcDxzdHJpbmcgfCBzeW1ib2wsIEZ1bmN0aW9uPigpKTtcblxuICAgICAgICBjb25zdCBwcm94eVJlc3VsdCA9IG5ldyBQcm94eShpbnN0YW5jZSwge1xuICAgICAgICAgICAgZ2V0OiAodGFyZ2V0LCBwcm9wKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luVmFsdWUgPSAodGFyZ2V0IGFzIFJlY29yZDxzdHJpbmcgfCBzeW1ib2wsIHVua25vd24+KVtwcm9wXTtcbiAgICAgICAgICAgICAgICBpZiAocHJvcCBpbiB0YXJnZXQgJiYgdHlwZW9mIG9yaWdpblZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFzcGVjdE1hcCA9IGFzcGVjdFN0b3JlTWFwLmdldChpbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghYXNwZWN0TWFwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGFzcGVjdE1hcC5oYXMocHJvcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhc3BlY3RNYXAuZ2V0KHByb3ApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFzcGVjdEZuID0gY3JlYXRlQXNwZWN0KHRoaXMuYXBwQ3R4LCB0YXJnZXQsIHByb3AsIG9yaWdpblZhbHVlLCB1c2VBc3BlY3RNZXRhZGF0YVJlYWRlcik7XG4gICAgICAgICAgICAgICAgICAgIGFzcGVjdE1hcC5zZXQocHJvcCwgYXNwZWN0Rm4pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXNwZWN0Rm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5WYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwcm94eVJlc3VsdDtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBOZXdhYmxlIH0gZnJvbSAnLi4vdHlwZXMvTmV3YWJsZSc7XG5pbXBvcnQgeyBJbnN0YW50aWF0aW9uQXdhcmVQcm9jZXNzb3IsIFBhcnRpYWxJbnN0QXdhcmVQcm9jZXNzb3IgfSBmcm9tICcuLi90eXBlcy9JbnN0YW50aWF0aW9uQXdhcmVQcm9jZXNzb3InO1xuaW1wb3J0IHsgbGF6eU1lbWJlciB9IGZyb20gJ0B2Z2VyYm90L2xhenknO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnLi9BcHBsaWNhdGlvbkNvbnRleHQnO1xuaW1wb3J0IHsgSW5zdGFuY2UgfSBmcm9tICcuLi90eXBlcy9JbnN0YW5jZSc7XG5pbXBvcnQgeyBHbG9iYWxNZXRhZGF0YSB9IGZyb20gJy4uL21ldGFkYXRhL0dsb2JhbE1ldGFkYXRhJztcblxuZXhwb3J0IGNsYXNzIEluc3RhbnRpYXRpb25Bd2FyZVByb2Nlc3Nvck1hbmFnZXIge1xuICAgIHByaXZhdGUgaW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlczogU2V0PE5ld2FibGU8UGFydGlhbEluc3RBd2FyZVByb2Nlc3Nvcj4+ID0gbmV3IFNldCgpO1xuICAgIEBsYXp5TWVtYmVyPEluc3RhbnRpYXRpb25Bd2FyZVByb2Nlc3Nvck1hbmFnZXIsIGtleW9mIEluc3RhbnRpYXRpb25Bd2FyZVByb2Nlc3Nvck1hbmFnZXIsIFBhcnRpYWxJbnN0QXdhcmVQcm9jZXNzb3JbXT4oe1xuICAgICAgICBldmFsdWF0ZTogaW5zdGFuY2UgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ2xvYmFsSW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcyA9IEdsb2JhbE1ldGFkYXRhLmdldEluc3RhbmNlKCkucmVhZGVyKCkuZ2V0SW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcygpO1xuICAgICAgICAgICAgY29uc3QgaW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcyA9IGdsb2JhbEluc3RBd2FyZVByb2Nlc3NvckNsYXNzZXMuY29uY2F0KFxuICAgICAgICAgICAgICAgIEFycmF5LmZyb20oaW5zdGFuY2UuaW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gaW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3Nlcy5tYXAoaXQgPT4gaW5zdGFuY2UuY29udGFpbmVyLmdldEluc3RhbmNlPFBhcnRpYWxJbnN0QXdhcmVQcm9jZXNzb3IsIHZvaWQ+KGl0KSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlc2V0Qnk6IFtcbiAgICAgICAgICAgIGluc3RhbmNlID0+IGluc3RhbmNlLmluc3RBd2FyZVByb2Nlc3NvckNsYXNzZXMuc2l6ZSxcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBnbG9iYWxJbnN0QXdhcmVQcm9jZXNzb3JDbGFzc2VzID0gR2xvYmFsTWV0YWRhdGEuZ2V0SW5zdGFuY2UoKS5yZWFkZXIoKS5nZXRJbnN0QXdhcmVQcm9jZXNzb3JDbGFzc2VzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdsb2JhbEluc3RBd2FyZVByb2Nlc3NvckNsYXNzZXMubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICBdXG4gICAgfSlcbiAgICBwcml2YXRlIGluc3RBd2FyZVByb2Nlc3Nvckluc3RhbmNlcyE6IEFycmF5PFBhcnRpYWxJbnN0QXdhcmVQcm9jZXNzb3I+O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjb250YWluZXI6IEFwcGxpY2F0aW9uQ29udGV4dCkge31cbiAgICBhcHBlbmRJbnN0QXdhcmVQcm9jZXNzb3JDbGFzcyhpbnN0QXdhcmVQcm9jZXNzb3JDbGFzczogTmV3YWJsZTxQYXJ0aWFsSW5zdEF3YXJlUHJvY2Vzc29yPikge1xuICAgICAgICB0aGlzLmluc3RBd2FyZVByb2Nlc3NvckNsYXNzZXMuYWRkKGluc3RBd2FyZVByb2Nlc3NvckNsYXNzKTtcbiAgICB9XG4gICAgYXBwZW5kSW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcyhcbiAgICAgICAgaW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlczogU2V0PE5ld2FibGU8UGFydGlhbEluc3RBd2FyZVByb2Nlc3Nvcj4+IHwgQXJyYXk8TmV3YWJsZTxQYXJ0aWFsSW5zdEF3YXJlUHJvY2Vzc29yPj5cbiAgICApIHtcbiAgICAgICAgaW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3Nlcy5mb3JFYWNoKGl0ID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3Nlcy5hZGQoaXQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYmVmb3JlSW5zdGFudGlhdGlvbjxUPihjb21wb25lbnRDbGFzczogTmV3YWJsZTxUPiwgYXJnczogdW5rbm93bltdKSB7XG4gICAgICAgIGNvbnN0IGluc3RBd2FyZVByb2Nlc3NvcnMgPSB0aGlzLmluc3RBd2FyZVByb2Nlc3Nvckluc3RhbmNlcztcbiAgICAgICAgbGV0IGluc3RhbmNlOiB1bmRlZmluZWQgfCBJbnN0YW5jZTxUPjtcbiAgICAgICAgaW5zdEF3YXJlUHJvY2Vzc29ycy5zb21lKHByb2Nlc3NvciA9PiB7XG4gICAgICAgICAgICBpZiAoIXByb2Nlc3Nvci5iZWZvcmVJbnN0YW50aWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5zdGFuY2UgPSBwcm9jZXNzb3IuYmVmb3JlSW5zdGFudGlhdGlvbjxUPihjb21wb25lbnRDbGFzcywgYXJncykgYXMgSW5zdGFuY2U8VD47XG4gICAgICAgICAgICByZXR1cm4gISFpbnN0YW5jZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICB9XG4gICAgYWZ0ZXJJbnN0YW50aWF0aW9uPFQ+KGluc3RhbmNlOiBJbnN0YW5jZTxUPikge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnN0QXdhcmVQcm9jZXNzb3JJbnN0YW5jZXMucmVkdWNlKChpbnN0YW5jZSwgcHJvY2Vzc29yKSA9PiB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzc29yLmFmdGVySW5zdGFudGlhdGlvbikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHByb2Nlc3Nvci5hZnRlckluc3RhbnRpYXRpb24oaW5zdGFuY2UpO1xuICAgICAgICAgICAgICAgIGlmICghIXJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIEluc3RhbmNlPFQ+O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICAgICAgfSwgaW5zdGFuY2UpO1xuICAgIH1cbiAgICBpc0luc3RBd2FyZVByb2Nlc3NvckNsYXNzKGNsczogTmV3YWJsZTx1bmtub3duPikge1xuICAgICAgICBjb25zdCBjbGFzc2VzID0gdGhpcy5nZXRJbnN0QXdhcmVQcm9jZXNzb3JDbGFzc2VzKCk7XG4gICAgICAgIHJldHVybiBjbGFzc2VzLmluZGV4T2YoY2xzIGFzIE5ld2FibGU8SW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yPikgPiAtMTtcbiAgICB9XG4gICAgZ2V0SW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcygpIHtcbiAgICAgICAgY29uc3QgZ2xvYmFsSW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcyA9IEdsb2JhbE1ldGFkYXRhLmdldEluc3RhbmNlKCkucmVhZGVyKCkuZ2V0SW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcygpO1xuICAgICAgICByZXR1cm4gZ2xvYmFsSW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3Nlcy5jb25jYXQoQXJyYXkuZnJvbSh0aGlzLmluc3RBd2FyZVByb2Nlc3NvckNsYXNzZXMpKTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBJbnN0YW5jZVNjb3BlIH0gZnJvbSAnLi9JbnN0YW5jZVNjb3BlJztcbmltcG9ydCB7IEluc3RhbmNlUmVzb2x1dGlvbiB9IGZyb20gJy4uL3R5cGVzL0luc3RhbmNlUmVzb2x1dGlvbic7XG5pbXBvcnQgeyBJZGVudGlmaWVyIH0gZnJvbSAnLi4vdHlwZXMvSWRlbnRpZmllcic7XG5pbXBvcnQgeyBTZXJ2aWNlRmFjdG9yeSB9IGZyb20gJy4uL3R5cGVzL1NlcnZpY2VGYWN0b3J5JztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgRXZlbnRMaXN0ZW5lciB9IGZyb20gJy4vRXZlbnRFbWl0dGVyJztcbmltcG9ydCB7IEFueUZ1bmN0aW9uIH0gZnJvbSAnLi4vdHlwZXMvQW55RnVuY3Rpb24nO1xuaW1wb3J0IHsgaGFzQXJncywgaGFzSW5qZWN0aW9ucywgSW52b2tlRnVuY3Rpb25PcHRpb25zIH0gZnJvbSAnLi9JbnZva2VGdW5jdGlvbk9wdGlvbnMnO1xuaW1wb3J0IHsgR2xvYmFsTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS9HbG9iYWxNZXRhZGF0YSc7XG5pbXBvcnQgeyBGYWN0b3J5SWRlbnRpZmllciB9IGZyb20gJy4uL3R5cGVzL0ZhY3RvcnlJZGVudGlmaWVyJztcbmltcG9ydCB7IENsYXNzTWV0YWRhdGEsIENsYXNzTWV0YWRhdGFSZWFkZXIgfSBmcm9tICcuLi9tZXRhZGF0YS9DbGFzc01ldGFkYXRhJztcbmltcG9ydCB7IENvbXBvbmVudEluc3RhbmNlQnVpbGRlciB9IGZyb20gJy4vQ29tcG9uZW50SW5zdGFuY2VCdWlsZGVyJztcbmltcG9ydCB7IEZ1bmN0aW9uTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS9GdW5jdGlvbk1ldGFkYXRhJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uQ29udGV4dE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbkNvbnRleHRPcHRpb25zJztcbmltcG9ydCB7IE5ld2FibGUgfSBmcm9tICcuLi90eXBlcy9OZXdhYmxlJztcbmltcG9ydCB7IE1ldGFkYXRhRmFjdG9yeSB9IGZyb20gJy4uL21ldGFkYXRhL01ldGFkYXRhRmFjdG9yeSc7XG5pbXBvcnQgeyBTZXJ2aWNlRmFjdG9yeURlZiB9IGZyb20gJy4vU2VydmljZUZhY3RvcnlEZWYnO1xuaW1wb3J0IHsgU2luZ2xldG9uSW5zdGFuY2VSZXNvbHV0aW9uIH0gZnJvbSAnLi4vcmVzb2x1dGlvbi9TaW5nbGV0b25JbnN0YW5jZVJlc29sdXRpb24nO1xuaW1wb3J0IHsgR2xvYmFsU2hhcmVkSW5zdGFuY2VSZXNvbHV0aW9uIH0gZnJvbSAnLi4vcmVzb2x1dGlvbi9HbG9iYWxTaGFyZWRJbnN0YW5jZVJlc29sdXRpb24nO1xuaW1wb3J0IHsgVHJhbnNpZW50SW5zdGFuY2VSZXNvbHV0aW9uIH0gZnJvbSAnLi4vcmVzb2x1dGlvbi9UcmFuc2llbnRJbnN0YW5jZVJlc29sdXRpb24nO1xuaW1wb3J0IHsgRXZhbHVhdGlvbk9wdGlvbnMsIEV4cHJlc3Npb25UeXBlIH0gZnJvbSAnLi4vdHlwZXMvRXZhbHVhdGVPcHRpb25zJztcbmltcG9ydCB7IEpTT05EYXRhIH0gZnJvbSAnLi4vdHlwZXMvSlNPTkRhdGEnO1xuaW1wb3J0IHsgRXZhbHVhdG9yIH0gZnJvbSAnLi4vdHlwZXMvRXZhbHVhdG9yJztcbmltcG9ydCB7IEpTT05EYXRhRXZhbHVhdG9yIH0gZnJvbSAnLi4vZXZhbHVhdG9yL0pTT05EYXRhRXZhbHVhdG9yJztcbmltcG9ydCB7IEVudmlyb25tZW50RXZhbHVhdG9yIH0gZnJvbSAnLi4vZXZhbHVhdG9yL0Vudmlyb25tZW50RXZhbHVhdG9yJztcbmltcG9ydCB7IEFyZ3ZFdmFsdWF0b3IgfSBmcm9tICcuLi9ldmFsdWF0b3IvQXJndkV2YWx1YXRvcic7XG5pbXBvcnQgeyBpc05vZGVKcyB9IGZyb20gJy4uL2NvbW1vbi9pc05vZGVKcyc7XG5pbXBvcnQgeyBQYXJ0aWFsSW5zdEF3YXJlUHJvY2Vzc29yIH0gZnJvbSAnLi4vdHlwZXMvSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yJztcbmltcG9ydCB7IEFPUEluc3RhbnRpYXRpb25Bd2FyZVByb2Nlc3NvciB9IGZyb20gJy4uL2FvcC9BT1BJbnN0YW50aWF0aW9uQXdhcmVQcm9jZXNzb3InO1xuaW1wb3J0IHsgSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yTWFuYWdlciB9IGZyb20gJy4vSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yTWFuYWdlcic7XG5pbXBvcnQgeyBMaWZlY3ljbGVNYW5hZ2VyIH0gZnJvbSAnLi9MaWZlY3ljbGVNYW5hZ2VyJztcbmltcG9ydCB7IEluc3RhbmNlIH0gZnJvbSAnLi4vdHlwZXMvSW5zdGFuY2UnO1xuXG5jb25zdCBQUkVfREVTVFJPWV9FVkVOVF9LRVkgPSAnY29udGFpbmVyOmV2ZW50OnByZS1kZXN0cm95JztcblxuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uQ29udGV4dCB7XG4gICAgcHJpdmF0ZSByZXNvbHV0aW9ucyA9IG5ldyBNYXA8SW5zdGFuY2VTY29wZSB8IHN0cmluZywgSW5zdGFuY2VSZXNvbHV0aW9uPigpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBmYWN0b3JpZXMgPSBuZXcgTWFwPEZhY3RvcnlJZGVudGlmaWVyLCBTZXJ2aWNlRmFjdG9yeURlZjxhbnk+PigpO1xuICAgIHByaXZhdGUgZXZhbHVhdG9yQ2xhc3NlcyA9IG5ldyBNYXA8c3RyaW5nLCBOZXdhYmxlPEV2YWx1YXRvcj4+KCk7XG4gICAgcHJpdmF0ZSBldmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0U2NvcGU6IEluc3RhbmNlU2NvcGU7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsYXp5TW9kZTogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluc3RBd2FyZVByb2Nlc3Nvck1hbmFnZXI6IEluc3RhbnRpYXRpb25Bd2FyZVByb2Nlc3Nvck1hbmFnZXI7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEFwcGxpY2F0aW9uQ29udGV4dE9wdGlvbnMgPSB7fSkge1xuICAgICAgICB0aGlzLmRlZmF1bHRTY29wZSA9IG9wdGlvbnMuZGVmYXVsdFNjb3BlIHx8IEluc3RhbmNlU2NvcGUuU0lOR0xFVE9OO1xuICAgICAgICB0aGlzLmxhenlNb2RlID0gb3B0aW9ucy5sYXp5TW9kZSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IG9wdGlvbnMubGF6eU1vZGU7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJJbnN0YW5jZVNjb3BlUmVzb2x1dGlvbihJbnN0YW5jZVNjb3BlLlNJTkdMRVRPTiwgU2luZ2xldG9uSW5zdGFuY2VSZXNvbHV0aW9uKTtcbiAgICAgICAgdGhpcy5yZWdpc3Rlckluc3RhbmNlU2NvcGVSZXNvbHV0aW9uKEluc3RhbmNlU2NvcGUuR0xPQkFMX1NIQVJFRF9TSU5HTEVUT04sIEdsb2JhbFNoYXJlZEluc3RhbmNlUmVzb2x1dGlvbik7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJJbnN0YW5jZVNjb3BlUmVzb2x1dGlvbihJbnN0YW5jZVNjb3BlLlRSQU5TSUVOVCwgVHJhbnNpZW50SW5zdGFuY2VSZXNvbHV0aW9uKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckV2YWx1YXRvcihFeHByZXNzaW9uVHlwZS5KU09OX1BBVEgsIEpTT05EYXRhRXZhbHVhdG9yKTtcbiAgICAgICAgaWYgKGlzTm9kZUpzKSB7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyRXZhbHVhdG9yKEV4cHJlc3Npb25UeXBlLkVOViwgRW52aXJvbm1lbnRFdmFsdWF0b3IpO1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckV2YWx1YXRvcihFeHByZXNzaW9uVHlwZS5BUkdWLCBBcmd2RXZhbHVhdG9yKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluc3RBd2FyZVByb2Nlc3Nvck1hbmFnZXIgPSBuZXcgSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yTWFuYWdlcih0aGlzKTtcbiAgICAgICAgdGhpcy5yZWdpc3Rlckluc3RBd2FyZVByb2Nlc3NvcihBT1BJbnN0YW50aWF0aW9uQXdhcmVQcm9jZXNzb3IuY3JlYXRlKHRoaXMpKTtcbiAgICB9XG4gICAgZ2V0SW5zdGFuY2U8VCwgTz4oc3ltYm9sOiBJZGVudGlmaWVyPFQ+LCBvd25lcj86IE8pOiBUIHtcbiAgICAgICAgaWYgKHN5bWJvbCA9PT0gQXBwbGljYXRpb25Db250ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcyBhcyB1bmtub3duIGFzIFQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBzeW1ib2wgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBzeW1ib2wgPT09ICdzeW1ib2wnKSB7XG4gICAgICAgICAgICBjb25zdCBmYWN0b3J5RGVmID0gdGhpcy5nZXRGYWN0b3J5KHN5bWJvbCk7XG4gICAgICAgICAgICBpZiAoZmFjdG9yeURlZikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZmFjdG9yeSwgaW5qZWN0aW9ucyB9ID0gZmFjdG9yeURlZjtcbiAgICAgICAgICAgICAgICBjb25zdCBmbiA9IGZhY3RvcnkodGhpcywgb3duZXIpO1xuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmludm9rZShmbiwge1xuICAgICAgICAgICAgICAgICAgICBpbmplY3Rpb25zXG4gICAgICAgICAgICAgICAgfSkgYXMgVDtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25zdHIgPSByZXN1bHQ/LmNvbnN0cnVjdG9yO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY29uc3RyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudENsYXNzID0gY29uc3RyIGFzIE5ld2FibGU8VD47XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc29sdmVyID0gbmV3IExpZmVjeWNsZU1hbmFnZXI8VD4oY29tcG9uZW50Q2xhc3MsIHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0luc3RBd2FyZVByb2Nlc3NvciA9IHRoaXMuaW5zdEF3YXJlUHJvY2Vzc29yTWFuYWdlci5pc0luc3RBd2FyZVByb2Nlc3NvckNsYXNzKGNvbXBvbmVudENsYXNzKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZXIuaW52b2tlUHJlSW5qZWN0TWV0aG9kKHJlc3VsdCBhcyBJbnN0YW5jZTxUPik7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNJbnN0QXdhcmVQcm9jZXNzb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMuaW5zdEF3YXJlUHJvY2Vzc29yTWFuYWdlci5hZnRlckluc3RhbnRpYXRpb24ocmVzdWx0IGFzIEluc3RhbmNlPFQ+KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlci5pbnZva2VQb3N0SW5qZWN0TWV0aG9kKHJlc3VsdCBhcyBJbnN0YW5jZTxUPik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsYXNzTWV0YWRhdGEgPSBHbG9iYWxNZXRhZGF0YS5nZXRJbnN0YW5jZSgpLnJlYWRlcigpLmdldENsYXNzTWV0YWRhdGE8VD4oc3ltYm9sKTtcbiAgICAgICAgICAgICAgICBpZiAoIWNsYXNzTWV0YWRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCcnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzeW1ib2wgPSBjbGFzc01ldGFkYXRhLnJlYWRlcigpLmdldENsYXNzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudENsYXNzID0gc3ltYm9sO1xuICAgICAgICBjb25zdCByZWFkZXIgPSBDbGFzc01ldGFkYXRhLmdldEluc3RhbmNlKGNvbXBvbmVudENsYXNzKS5yZWFkZXIoKTtcbiAgICAgICAgY29uc3Qgc2NvcGUgPSByZWFkZXIuZ2V0U2NvcGUoKTtcbiAgICAgICAgY29uc3QgcmVzb2x1dGlvbiA9ICh0aGlzLnJlc29sdXRpb25zLmdldChzY29wZSkgfHwgdGhpcy5yZXNvbHV0aW9ucy5nZXQodGhpcy5kZWZhdWx0U2NvcGUpKSBhcyBJbnN0YW5jZVJlc29sdXRpb247XG4gICAgICAgIGNvbnN0IGdldEluc3RhbmNlT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGNvbXBvbmVudENsYXNzLFxuICAgICAgICAgICAgb3duZXIsXG4gICAgICAgICAgICBvd25lclByb3BlcnR5S2V5OiB1bmRlZmluZWRcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHJlc29sdXRpb24uc2hvdWxkR2VuZXJhdGUoZ2V0SW5zdGFuY2VPcHRpb25zKSkge1xuICAgICAgICAgICAgY29uc3QgYnVpbGRlciA9IHRoaXMuY3JlYXRlQ29tcG9uZW50SW5zdGFuY2VCdWlsZGVyKGNvbXBvbmVudENsYXNzKTtcbiAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gYnVpbGRlci5idWlsZCgpO1xuICAgICAgICAgICAgY29uc3Qgc2F2ZUluc3RhbmNlT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAuLi5nZXRJbnN0YW5jZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgaW5zdGFuY2VcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXNvbHV0aW9uLnNhdmVJbnN0YW5jZShzYXZlSW5zdGFuY2VPcHRpb25zKTtcbiAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHV0aW9uLmdldEluc3RhbmNlKGdldEluc3RhbmNlT3B0aW9ucykgYXMgVDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQ29tcG9uZW50SW5zdGFuY2VCdWlsZGVyPFQ+KGNvbXBvbmVudENsYXNzOiBOZXdhYmxlPFQ+KSB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ29tcG9uZW50SW5zdGFuY2VCdWlsZGVyKGNvbXBvbmVudENsYXNzLCB0aGlzLCB0aGlzLmluc3RBd2FyZVByb2Nlc3Nvck1hbmFnZXIpO1xuICAgICAgICBidWlsZGVyLmFwcGVuZExhenlNb2RlKHRoaXMubGF6eU1vZGUpO1xuICAgICAgICByZXR1cm4gYnVpbGRlcjtcbiAgICB9XG5cbiAgICBnZXRGYWN0b3J5KGtleTogRmFjdG9yeUlkZW50aWZpZXIpIHtcbiAgICAgICAgY29uc3QgZmFjdG9yeSA9IEdsb2JhbE1ldGFkYXRhLmdldEluc3RhbmNlKCkucmVhZGVyKCkuZ2V0Q29tcG9uZW50RmFjdG9yeShrZXkpO1xuICAgICAgICBpZiAoIWZhY3RvcnkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZhY3Rvcmllcy5nZXQoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFjdG9yeTtcbiAgICB9XG4gICAgYmluZEZhY3Rvcnk8VD4oc3ltYm9sOiBGYWN0b3J5SWRlbnRpZmllciwgZmFjdG9yeTogU2VydmljZUZhY3Rvcnk8VCwgdW5rbm93bj4sIGluamVjdGlvbnM/OiBJZGVudGlmaWVyW10pIHtcbiAgICAgICAgdGhpcy5mYWN0b3JpZXMuc2V0KHN5bWJvbCwgbmV3IFNlcnZpY2VGYWN0b3J5RGVmKGZhY3RvcnksIGluamVjdGlvbnMpKTtcbiAgICB9XG4gICAgaW52b2tlPFIsIEN0eD4oZnVuYzogQW55RnVuY3Rpb248UiwgQ3R4Piwgb3B0aW9uczogSW52b2tlRnVuY3Rpb25PcHRpb25zPEN0eD4gPSB7fSk6IFIge1xuICAgICAgICBsZXQgZm46IEFueUZ1bmN0aW9uPFI+O1xuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGZuID0gZnVuYy5iaW5kKG9wdGlvbnMuY29udGV4dCBhcyBUaGlzUGFyYW1ldGVyVHlwZTx0eXBlb2YgZnVuYz4pIGFzIEFueUZ1bmN0aW9uPFI+O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm4gPSBmdW5jIGFzIEFueUZ1bmN0aW9uPFI+O1xuICAgICAgICB9XG4gICAgICAgIGlmIChoYXNBcmdzKG9wdGlvbnMpKSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5hcmdzID8gZm4oLi4ub3B0aW9ucy5hcmdzKSA6IGZuKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhc0luamVjdGlvbnMob3B0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbnN0IGFyZ3MgPSBvcHRpb25zLmluamVjdGlvbnMgPyBvcHRpb25zLmluamVjdGlvbnMubWFwKGl0ID0+IHRoaXMuZ2V0SW5zdGFuY2UoaXQpKSA6IFtdO1xuICAgICAgICAgICAgcmV0dXJuIGFyZ3MubGVuZ3RoID4gMCA/IGZuKC4uLmFyZ3MpIDogZm4oKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YShmbiwgRnVuY3Rpb25NZXRhZGF0YSkucmVhZGVyKCk7XG4gICAgICAgIGNvbnN0IHBhcmFtZXRlcklkZW50aWZpZXJzID0gbWV0YWRhdGEuZ2V0UGFyYW1ldGVycygpO1xuICAgICAgICBjb25zdCBhcmdzID0gcGFyYW1ldGVySWRlbnRpZmllcnMubWFwKGlkZW50aWZpZXIgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SW5zdGFuY2UoaWRlbnRpZmllcik7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZm4oLi4uYXJncyk7XG4gICAgfVxuICAgIGRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZXZlbnRFbWl0dGVyLmVtaXQoUFJFX0RFU1RST1lfRVZFTlRfS0VZKTtcbiAgICAgICAgdGhpcy5yZXNvbHV0aW9ucy5mb3JFYWNoKGl0ID0+IHtcbiAgICAgICAgICAgIGl0LmRlc3Ryb3koKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGV2YWx1YXRlPFQsIE8sIEE+KGV4cHJlc3Npb246IHN0cmluZywgb3B0aW9uczogRXZhbHVhdGlvbk9wdGlvbnM8Tywgc3RyaW5nLCBBPik6IFQgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBldmFsdWF0b3JDbGFzcyA9IHRoaXMuZXZhbHVhdG9yQ2xhc3Nlcy5nZXQob3B0aW9ucy50eXBlKTtcbiAgICAgICAgaWYgKCFldmFsdWF0b3JDbGFzcykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgVW5rbm93biBldmFsdWF0b3IgbmFtZTogJHtvcHRpb25zLnR5cGV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXZhbHVhdG9yID0gdGhpcy5nZXRJbnN0YW5jZShldmFsdWF0b3JDbGFzcyk7XG4gICAgICAgIHJldHVybiBldmFsdWF0b3IuZXZhbCh0aGlzLCBleHByZXNzaW9uLCBvcHRpb25zLmV4dGVybmFsQXJncyk7XG4gICAgfVxuICAgIHJlY29yZEpTT05EYXRhKG5hbWVzcGFjZTogc3RyaW5nLCBkYXRhOiBKU09ORGF0YSkge1xuICAgICAgICBjb25zdCBldmFsdWF0b3IgPSB0aGlzLmdldEluc3RhbmNlKEpTT05EYXRhRXZhbHVhdG9yKTtcbiAgICAgICAgZXZhbHVhdG9yLnJlY29yZERhdGEobmFtZXNwYWNlLCBkYXRhKTtcbiAgICB9XG4gICAgYmluZEluc3RhbmNlPFQ+KGlkZW50aWZpZXI6IHN0cmluZyB8IHN5bWJvbCwgaW5zdGFuY2U6IFQpIHtcbiAgICAgICAgY29uc3QgcmVzb2x1dGlvbiA9IHRoaXMucmVzb2x1dGlvbnMuZ2V0KEluc3RhbmNlU2NvcGUuU0lOR0xFVE9OKTtcbiAgICAgICAgcmVzb2x1dGlvbj8uc2F2ZUluc3RhbmNlKHtcbiAgICAgICAgICAgIGlkZW50aWZpZXIsXG4gICAgICAgICAgICBpbnN0YW5jZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVnaXN0ZXJJbnN0YW5jZVNjb3BlUmVzb2x1dGlvbjxUIGV4dGVuZHMgTmV3YWJsZTxJbnN0YW5jZVJlc29sdXRpb24+PihcbiAgICAgICAgc2NvcGU6IEluc3RhbmNlU2NvcGUgfCBzdHJpbmcsXG4gICAgICAgIHJlc29sdXRpb25Db25zdHJ1Y3RvcjogVCxcbiAgICAgICAgY29uc3RydWN0b3JBcmdzPzogQ29uc3RydWN0b3JQYXJhbWV0ZXJzPFQ+XG4gICAgKSB7XG4gICAgICAgIHRoaXMucmVzb2x1dGlvbnMuc2V0KHNjb3BlLCBuZXcgcmVzb2x1dGlvbkNvbnN0cnVjdG9yKC4uLihjb25zdHJ1Y3RvckFyZ3MgfHwgW10pKSk7XG4gICAgfVxuICAgIHJlZ2lzdGVyRXZhbHVhdG9yKG5hbWU6IHN0cmluZywgZXZhbHVhdG9yQ2xhc3M6IE5ld2FibGU8RXZhbHVhdG9yPikge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YShldmFsdWF0b3JDbGFzcywgQ2xhc3NNZXRhZGF0YSk7XG4gICAgICAgIG1ldGFkYXRhLnNldFNjb3BlKEluc3RhbmNlU2NvcGUuU0lOR0xFVE9OKTtcbiAgICAgICAgdGhpcy5ldmFsdWF0b3JDbGFzc2VzLnNldChuYW1lLCBldmFsdWF0b3JDbGFzcyk7XG4gICAgfVxuICAgIHJlZ2lzdGVySW5zdEF3YXJlUHJvY2Vzc29yKGNsYXp6OiBOZXdhYmxlPFBhcnRpYWxJbnN0QXdhcmVQcm9jZXNzb3I+KSB7XG4gICAgICAgIHRoaXMuaW5zdEF3YXJlUHJvY2Vzc29yTWFuYWdlci5hcHBlbmRJbnN0QXdhcmVQcm9jZXNzb3JDbGFzcyhjbGF6eik7XG4gICAgfVxuICAgIG9uUHJlRGVzdHJveShsaXN0ZW5lcjogRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICByZXR1cm4gdGhpcy5ldmVudEVtaXR0ZXIub24oUFJFX0RFU1RST1lfRVZFTlRfS0VZLCBsaXN0ZW5lcik7XG4gICAgfVxuICAgIGdldENsYXNzTWV0YWRhdGE8VD4oY3RvcjogTmV3YWJsZTxUPikge1xuICAgICAgICByZXR1cm4gQ2xhc3NNZXRhZGF0YS5nZXRJbnN0YW5jZShjdG9yKS5yZWFkZXIoKSBhcyBDbGFzc01ldGFkYXRhUmVhZGVyPFQ+O1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6WyJJbnN0YW5jZVNjb3BlIiwiUmVmbGVjdCIsImdsb2JhbCIsIkV4cHJlc3Npb25UeXBlIl0sIm1hcHBpbmdzIjoiOztBQUtBLElBQUEsaUJBQUEsa0JBQUEsWUFBQTtJQVVJLFNBQTRCLGlCQUFBLENBQUEsT0FBbUMsRUFBa0IsVUFBeUIsRUFBQTtRQUE5RSxJQUFPLENBQUEsT0FBQSxHQUFQLE9BQU8sQ0FBNEI7UUFBa0IsSUFBVSxDQUFBLFVBQUEsR0FBVixVQUFVLENBQWU7S0FBSTtJQVR2RyxpQkFBdUIsQ0FBQSx1QkFBQSxHQUE5QixVQUFrQyxRQUEwQixFQUFBO0FBQ3hELFFBQUEsT0FBTyxJQUFJLGlCQUFpQixDQUFDLFVBQUMsU0FBNkIsRUFBRSxLQUFjLEVBQUE7WUFDdkUsT0FBTyxZQUFBO0FBQ0gsZ0JBQUEsSUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2pDLGdCQUFBLElBQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEMsT0FBTyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQyxhQUFDLENBQUM7QUFDTixTQUFDLENBQUMsQ0FBQztLQUNOLENBQUE7SUFFTCxPQUFDLGlCQUFBLENBQUE7QUFBRCxDQUFDLEVBQUEsQ0FBQTs7QUNGRCxJQUFBLGNBQUEsa0JBQUEsWUFBQTtBQUFBLElBQUEsU0FBQSxjQUFBLEdBQUE7QUFLWSxRQUFBLElBQUEsQ0FBQSxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsRUFBMkMsQ0FBQztBQUMzRSxRQUFBLElBQUEsQ0FBQSxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFBaUQsQ0FBQztBQUNyRSxRQUFBLElBQUEsQ0FBQSxnQkFBZ0IsR0FBNEMsSUFBSSxHQUFHLEVBQUUsQ0FBQztLQTBCMUY7QUEvQlUsSUFBQSxjQUFBLENBQUEsV0FBVyxHQUFsQixZQUFBO1FBQ0ksT0FBTyxjQUFjLENBQUMsUUFBUSxDQUFDO0tBQ2xDLENBQUE7QUFJRCxJQUFBLGNBQUEsQ0FBQSxTQUFBLENBQUEsYUFBYSxHQUFiLFVBQWlCLE1BQXlCLEVBQUUsT0FBbUMsRUFBRSxVQUF5QixFQUFBO0FBQ3RHLFFBQUEsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztLQUNuRixDQUFBO0FBQ0QsSUFBQSxjQUFBLENBQUEsU0FBQSxDQUFBLGdCQUFnQixHQUFoQixVQUFvQixTQUEwQixFQUFFLFFBQTBCLEVBQUE7UUFDdEUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7S0FDdkQsQ0FBQTtJQUNELGNBQW9CLENBQUEsU0FBQSxDQUFBLG9CQUFBLEdBQXBCLFVBQXFCLEtBQXlDLEVBQUE7QUFDMUQsUUFBQSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3BDLENBQUE7QUFDRCxJQUFBLGNBQUEsQ0FBQSxTQUFBLENBQUEsSUFBSSxHQUFKLFlBQUE7O0tBRUMsQ0FBQTtBQUNELElBQUEsY0FBQSxDQUFBLFNBQUEsQ0FBQSxNQUFNLEdBQU4sWUFBQTtRQUFBLElBWUMsS0FBQSxHQUFBLElBQUEsQ0FBQTtRQVhHLE9BQU87WUFDSCxtQkFBbUIsRUFBRSxVQUFJLEdBQXNCLEVBQUE7Z0JBQzNDLE9BQU8sS0FBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQXFDLENBQUM7YUFDL0U7WUFDRCxnQkFBZ0IsRUFBRSxVQUFJLFNBQTBCLEVBQUE7Z0JBQzVDLE9BQU8sS0FBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQWlDLENBQUM7YUFDcEY7QUFDRCxZQUFBLDRCQUE0QixFQUFFLFlBQUE7Z0JBQzFCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzthQUM1QztTQUNKLENBQUM7S0FDTCxDQUFBO0FBL0J1QixJQUFBLGNBQUEsQ0FBQSxRQUFRLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztJQWdDNUQsT0FBQyxjQUFBLENBQUE7QUFBQSxDQWpDRCxFQWlDQyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDL0NXQSwrQkFJWDtBQUpELENBQUEsVUFBWSxhQUFhLEVBQUE7QUFDckIsSUFBQSxhQUFBLENBQUEsV0FBQSxDQUFBLEdBQUEsb0NBQWdELENBQUE7QUFDaEQsSUFBQSxhQUFBLENBQUEsV0FBQSxDQUFBLEdBQUEsMEJBQXNDLENBQUE7QUFDdEMsSUFBQSxhQUFBLENBQUEseUJBQUEsQ0FBQSxHQUFBLHdDQUFrRSxDQUFBO0FBQ3RFLENBQUMsRUFKV0EscUJBQWEsS0FBYkEscUJBQWEsR0FJeEIsRUFBQSxDQUFBLENBQUE7O0FDSkssU0FBVSxxQkFBcUIsQ0FBTyxPQUFzQixFQUFBO0FBQzlELElBQUEsSUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQVEsQ0FBQztJQUM1QixJQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQyxJQUFBLEdBQUcsQ0FBQyxHQUFHLEdBQUcsVUFBVSxHQUFNLEVBQUE7QUFDdEIsUUFBQSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDZCxZQUFBLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBTSxDQUFDO0FBQzlCLFNBQUE7QUFBTSxhQUFBO0FBQ0gsWUFBQSxJQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEMsWUFBQSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUMzQixZQUFBLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQU0sQ0FBQztBQUM1QixTQUFBO0FBQ0wsS0FBQyxDQUFDO0FBQ0YsSUFBQSxPQUFPLEdBQTRCLENBQUM7QUFDeEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNDQSxJQUFJQyxTQUFPLENBQUM7QUFDWixDQUFDLFVBQVUsT0FBTyxFQUFFO0FBQ3BCO0FBQ0E7QUFDQSxJQUFJLENBQUMsVUFBVSxPQUFPLEVBQUU7QUFDeEIsUUFBUSxJQUFJLElBQUksR0FBRyxPQUFPQyxjQUFNLEtBQUssUUFBUSxHQUFHQSxjQUFNO0FBQ3RELFlBQVksT0FBTyxJQUFJLEtBQUssUUFBUSxHQUFHLElBQUk7QUFDM0MsZ0JBQWdCLE9BQU8sSUFBSSxLQUFLLFFBQVEsR0FBRyxJQUFJO0FBQy9DLG9CQUFvQixRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztBQUMvQyxRQUFRLElBQUksUUFBUSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM3QyxRQUFRLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFdBQVcsRUFBRTtBQUNqRCxZQUFZLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQ25DLFNBQVM7QUFDVCxhQUFhO0FBQ2IsWUFBWSxRQUFRLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDNUQsU0FBUztBQUNULFFBQVEsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFCLFFBQVEsU0FBUyxZQUFZLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRTtBQUNoRCxZQUFZLE9BQU8sVUFBVSxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ3pDLGdCQUFnQixJQUFJLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFVBQVUsRUFBRTtBQUN2RCxvQkFBb0IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQzdHLGlCQUFpQjtBQUNqQixnQkFBZ0IsSUFBSSxRQUFRO0FBQzVCLG9CQUFvQixRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLGFBQWEsQ0FBQztBQUNkLFNBQVM7QUFDVCxLQUFLLEVBQUUsVUFBVSxRQUFRLEVBQUU7QUFDM0IsUUFBUSxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQztBQUNyRDtBQUNBLFFBQVEsSUFBSSxjQUFjLEdBQUcsT0FBTyxNQUFNLEtBQUssVUFBVSxDQUFDO0FBQzFELFFBQVEsSUFBSSxpQkFBaUIsR0FBRyxjQUFjLElBQUksT0FBTyxNQUFNLENBQUMsV0FBVyxLQUFLLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxHQUFHLGVBQWUsQ0FBQztBQUNuSSxRQUFRLElBQUksY0FBYyxHQUFHLGNBQWMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxRQUFRLEtBQUssV0FBVyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDO0FBQ3ZILFFBQVEsSUFBSSxjQUFjLEdBQUcsT0FBTyxNQUFNLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQztBQUNqRSxRQUFRLElBQUksYUFBYSxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxZQUFZLEtBQUssQ0FBQztBQUMvRCxRQUFRLElBQUksU0FBUyxHQUFHLENBQUMsY0FBYyxJQUFJLENBQUMsYUFBYSxDQUFDO0FBQzFELFFBQVEsSUFBSSxPQUFPLEdBQUc7QUFDdEI7QUFDQSxZQUFZLE1BQU0sRUFBRSxjQUFjO0FBQ2xDLGtCQUFrQixZQUFZLEVBQUUsT0FBTyxjQUFjLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDN0Usa0JBQWtCLGFBQWE7QUFDL0Isc0JBQXNCLFlBQVksRUFBRSxPQUFPLGNBQWMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUU7QUFDakYsc0JBQXNCLFlBQVksRUFBRSxPQUFPLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQ2hFLFlBQVksR0FBRyxFQUFFLFNBQVM7QUFDMUIsa0JBQWtCLFVBQVUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRTtBQUN2RSxrQkFBa0IsVUFBVSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLEVBQUU7QUFDNUQsWUFBWSxHQUFHLEVBQUUsU0FBUztBQUMxQixrQkFBa0IsVUFBVSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLEVBQUU7QUFDOUYsa0JBQWtCLFVBQVUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7QUFDMUQsU0FBUyxDQUFDO0FBQ1Y7QUFDQSxRQUFRLElBQUksaUJBQWlCLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNoRSxRQUFRLElBQUksV0FBVyxHQUFHLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUNBQW1DLENBQUMsS0FBSyxNQUFNLENBQUM7QUFDcEksUUFBUSxJQUFJLElBQUksR0FBRyxDQUFDLFdBQVcsSUFBSSxPQUFPLEdBQUcsS0FBSyxVQUFVLElBQUksT0FBTyxHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU8sS0FBSyxVQUFVLEdBQUcsR0FBRyxHQUFHLGlCQUFpQixFQUFFLENBQUM7QUFDeEksUUFBUSxJQUFJLElBQUksR0FBRyxDQUFDLFdBQVcsSUFBSSxPQUFPLEdBQUcsS0FBSyxVQUFVLElBQUksT0FBTyxHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU8sS0FBSyxVQUFVLEdBQUcsR0FBRyxHQUFHLGlCQUFpQixFQUFFLENBQUM7QUFDeEksUUFBUSxJQUFJLFFBQVEsR0FBRyxDQUFDLFdBQVcsSUFBSSxPQUFPLE9BQU8sS0FBSyxVQUFVLEdBQUcsT0FBTyxHQUFHLHFCQUFxQixFQUFFLENBQUM7QUFDekc7QUFDQTtBQUNBLFFBQVEsSUFBSSxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLFNBQVMsUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRTtBQUN2RSxZQUFZLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEVBQUU7QUFDM0MsZ0JBQWdCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO0FBQ3hDLG9CQUFvQixNQUFNLElBQUksU0FBUyxFQUFFLENBQUM7QUFDMUMsZ0JBQWdCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQ3JDLG9CQUFvQixNQUFNLElBQUksU0FBUyxFQUFFLENBQUM7QUFDMUMsZ0JBQWdCLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO0FBQzVGLG9CQUFvQixNQUFNLElBQUksU0FBUyxFQUFFLENBQUM7QUFDMUMsZ0JBQWdCLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUN0QyxvQkFBb0IsVUFBVSxHQUFHLFNBQVMsQ0FBQztBQUMzQyxnQkFBZ0IsV0FBVyxHQUFHLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN6RCxnQkFBZ0IsT0FBTyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNyRixhQUFhO0FBQ2IsaUJBQWlCO0FBQ2pCLGdCQUFnQixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztBQUN4QyxvQkFBb0IsTUFBTSxJQUFJLFNBQVMsRUFBRSxDQUFDO0FBQzFDLGdCQUFnQixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztBQUMxQyxvQkFBb0IsTUFBTSxJQUFJLFNBQVMsRUFBRSxDQUFDO0FBQzFDLGdCQUFnQixPQUFPLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMvRCxhQUFhO0FBQ2IsU0FBUztBQUNULFFBQVEsUUFBUSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLFNBQVMsUUFBUSxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUU7QUFDdEQsWUFBWSxTQUFTLFNBQVMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFO0FBQ3BELGdCQUFnQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztBQUNyQyxvQkFBb0IsTUFBTSxJQUFJLFNBQVMsRUFBRSxDQUFDO0FBQzFDLGdCQUFnQixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztBQUM1RSxvQkFBb0IsTUFBTSxJQUFJLFNBQVMsRUFBRSxDQUFDO0FBQzFDLGdCQUFnQix5QkFBeUIsQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztBQUMzRixhQUFhO0FBQ2IsWUFBWSxPQUFPLFNBQVMsQ0FBQztBQUM3QixTQUFTO0FBQ1QsUUFBUSxRQUFRLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsU0FBUyxjQUFjLENBQUMsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFO0FBQ2pGLFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7QUFDakMsZ0JBQWdCLE1BQU0sSUFBSSxTQUFTLEVBQUUsQ0FBQztBQUN0QyxZQUFZLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDO0FBQ3pDLGdCQUFnQixXQUFXLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3pELFlBQVksT0FBTyx5QkFBeUIsQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztBQUM5RixTQUFTO0FBQ1QsUUFBUSxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLFNBQVMsV0FBVyxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFO0FBQy9ELFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7QUFDakMsZ0JBQWdCLE1BQU0sSUFBSSxTQUFTLEVBQUUsQ0FBQztBQUN0QyxZQUFZLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDO0FBQ3pDLGdCQUFnQixXQUFXLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3pELFlBQVksT0FBTyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ3pFLFNBQVM7QUFDVCxRQUFRLFFBQVEsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLFNBQVMsY0FBYyxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFO0FBQ2xFLFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7QUFDakMsZ0JBQWdCLE1BQU0sSUFBSSxTQUFTLEVBQUUsQ0FBQztBQUN0QyxZQUFZLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDO0FBQ3pDLGdCQUFnQixXQUFXLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3pELFlBQVksT0FBTyxzQkFBc0IsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQzVFLFNBQVM7QUFDVCxRQUFRLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsQ0FBQztBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsU0FBUyxXQUFXLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUU7QUFDL0QsWUFBWSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztBQUNqQyxnQkFBZ0IsTUFBTSxJQUFJLFNBQVMsRUFBRSxDQUFDO0FBQ3RDLFlBQVksSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7QUFDekMsZ0JBQWdCLFdBQVcsR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDekQsWUFBWSxPQUFPLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDekUsU0FBUztBQUNULFFBQVEsUUFBUSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsU0FBUyxjQUFjLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUU7QUFDbEUsWUFBWSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztBQUNqQyxnQkFBZ0IsTUFBTSxJQUFJLFNBQVMsRUFBRSxDQUFDO0FBQ3RDLFlBQVksSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7QUFDekMsZ0JBQWdCLFdBQVcsR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDekQsWUFBWSxPQUFPLHNCQUFzQixDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDNUUsU0FBUztBQUNULFFBQVEsUUFBUSxDQUFDLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsU0FBUyxlQUFlLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRTtBQUN0RCxZQUFZLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQ2pDLGdCQUFnQixNQUFNLElBQUksU0FBUyxFQUFFLENBQUM7QUFDdEMsWUFBWSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQztBQUN6QyxnQkFBZ0IsV0FBVyxHQUFHLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN6RCxZQUFZLE9BQU8sb0JBQW9CLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQzdELFNBQVM7QUFDVCxRQUFRLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxlQUFlLENBQUMsQ0FBQztBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLFNBQVMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRTtBQUN6RCxZQUFZLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQ2pDLGdCQUFnQixNQUFNLElBQUksU0FBUyxFQUFFLENBQUM7QUFDdEMsWUFBWSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQztBQUN6QyxnQkFBZ0IsV0FBVyxHQUFHLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN6RCxZQUFZLE9BQU8sdUJBQXVCLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ2hFLFNBQVM7QUFDVCxRQUFRLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxTQUFTLGNBQWMsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRTtBQUNsRSxZQUFZLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQ2pDLGdCQUFnQixNQUFNLElBQUksU0FBUyxFQUFFLENBQUM7QUFDdEMsWUFBWSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQztBQUN6QyxnQkFBZ0IsV0FBVyxHQUFHLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN6RCxZQUFZLElBQUksV0FBVyxHQUFHLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxXQUFXLGFBQWEsS0FBSyxDQUFDLENBQUM7QUFDNUYsWUFBWSxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUM7QUFDeEMsZ0JBQWdCLE9BQU8sS0FBSyxDQUFDO0FBQzdCLFlBQVksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO0FBQ2hELGdCQUFnQixPQUFPLEtBQUssQ0FBQztBQUM3QixZQUFZLElBQUksV0FBVyxDQUFDLElBQUksR0FBRyxDQUFDO0FBQ3BDLGdCQUFnQixPQUFPLElBQUksQ0FBQztBQUM1QixZQUFZLElBQUksY0FBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdEQsWUFBWSxjQUFjLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQy9DLFlBQVksSUFBSSxjQUFjLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDdkMsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDO0FBQzVCLFlBQVksUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNwQyxZQUFZLE9BQU8sSUFBSSxDQUFDO0FBQ3hCLFNBQVM7QUFDVCxRQUFRLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsQ0FBQztBQUNuRCxRQUFRLFNBQVMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRTtBQUN6RCxZQUFZLEtBQUssSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUM3RCxnQkFBZ0IsSUFBSSxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlDLGdCQUFnQixJQUFJLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbEQsZ0JBQWdCLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUU7QUFDbkUsb0JBQW9CLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO0FBQ2pELHdCQUF3QixNQUFNLElBQUksU0FBUyxFQUFFLENBQUM7QUFDOUMsb0JBQW9CLE1BQU0sR0FBRyxTQUFTLENBQUM7QUFDdkMsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYixZQUFZLE9BQU8sTUFBTSxDQUFDO0FBQzFCLFNBQVM7QUFDVCxRQUFRLFNBQVMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFO0FBQy9FLFlBQVksS0FBSyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQzdELGdCQUFnQixJQUFJLFNBQVMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUMsZ0JBQWdCLElBQUksU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzNFLGdCQUFnQixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFO0FBQ25FLG9CQUFvQixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztBQUM1Qyx3QkFBd0IsTUFBTSxJQUFJLFNBQVMsRUFBRSxDQUFDO0FBQzlDLG9CQUFvQixVQUFVLEdBQUcsU0FBUyxDQUFDO0FBQzNDLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsWUFBWSxPQUFPLFVBQVUsQ0FBQztBQUM5QixTQUFTO0FBQ1QsUUFBUSxTQUFTLHNCQUFzQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFO0FBQ3RELFlBQVksSUFBSSxjQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRCxZQUFZLElBQUksV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFO0FBQzdDLGdCQUFnQixJQUFJLENBQUMsTUFBTTtBQUMzQixvQkFBb0IsT0FBTyxTQUFTLENBQUM7QUFDckMsZ0JBQWdCLGNBQWMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0FBQzVDLGdCQUFnQixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztBQUNoRCxhQUFhO0FBQ2IsWUFBWSxJQUFJLFdBQVcsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BELFlBQVksSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLEVBQUU7QUFDMUMsZ0JBQWdCLElBQUksQ0FBQyxNQUFNO0FBQzNCLG9CQUFvQixPQUFPLFNBQVMsQ0FBQztBQUNyQyxnQkFBZ0IsV0FBVyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7QUFDekMsZ0JBQWdCLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ25ELGFBQWE7QUFDYixZQUFZLE9BQU8sV0FBVyxDQUFDO0FBQy9CLFNBQVM7QUFDVDtBQUNBO0FBQ0EsUUFBUSxTQUFTLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3hELFlBQVksSUFBSSxNQUFNLEdBQUcsc0JBQXNCLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuRSxZQUFZLElBQUksTUFBTTtBQUN0QixnQkFBZ0IsT0FBTyxJQUFJLENBQUM7QUFDNUIsWUFBWSxJQUFJLE1BQU0sR0FBRyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRCxZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQy9CLGdCQUFnQixPQUFPLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkUsWUFBWSxPQUFPLEtBQUssQ0FBQztBQUN6QixTQUFTO0FBQ1Q7QUFDQTtBQUNBLFFBQVEsU0FBUyxzQkFBc0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUMzRCxZQUFZLElBQUksV0FBVyxHQUFHLHNCQUFzQixDQUFDLENBQUMsRUFBRSxDQUFDLGFBQWEsS0FBSyxDQUFDLENBQUM7QUFDN0UsWUFBWSxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUM7QUFDeEMsZ0JBQWdCLE9BQU8sS0FBSyxDQUFDO0FBQzdCLFlBQVksT0FBTyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQzNELFNBQVM7QUFDVDtBQUNBO0FBQ0EsUUFBUSxTQUFTLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3hELFlBQVksSUFBSSxNQUFNLEdBQUcsc0JBQXNCLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuRSxZQUFZLElBQUksTUFBTTtBQUN0QixnQkFBZ0IsT0FBTyxzQkFBc0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLFlBQVksSUFBSSxNQUFNLEdBQUcsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkQsWUFBWSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUMvQixnQkFBZ0IsT0FBTyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ25FLFlBQVksT0FBTyxTQUFTLENBQUM7QUFDN0IsU0FBUztBQUNUO0FBQ0E7QUFDQSxRQUFRLFNBQVMsc0JBQXNCLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDM0QsWUFBWSxJQUFJLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxhQUFhLEtBQUssQ0FBQyxDQUFDO0FBQzdFLFlBQVksSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDO0FBQ3hDLGdCQUFnQixPQUFPLFNBQVMsQ0FBQztBQUNqQyxZQUFZLE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNoRCxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFFBQVEsU0FBUyx5QkFBeUIsQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDN0UsWUFBWSxJQUFJLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDO0FBQzVFLFlBQVksV0FBVyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDeEQsU0FBUztBQUNUO0FBQ0E7QUFDQSxRQUFRLFNBQVMsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUM1QyxZQUFZLElBQUksT0FBTyxHQUFHLHVCQUF1QixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN4RCxZQUFZLElBQUksTUFBTSxHQUFHLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25ELFlBQVksSUFBSSxNQUFNLEtBQUssSUFBSTtBQUMvQixnQkFBZ0IsT0FBTyxPQUFPLENBQUM7QUFDL0IsWUFBWSxJQUFJLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0QsWUFBWSxJQUFJLFVBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQztBQUN0QyxnQkFBZ0IsT0FBTyxPQUFPLENBQUM7QUFDL0IsWUFBWSxJQUFJLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQztBQUNuQyxnQkFBZ0IsT0FBTyxVQUFVLENBQUM7QUFDbEMsWUFBWSxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0FBQ2pDLFlBQVksSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzFCLFlBQVksS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsU0FBUyxHQUFHLE9BQU8sRUFBRSxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRTtBQUMvRSxnQkFBZ0IsSUFBSSxHQUFHLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3hDLGdCQUFnQixJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFDLGdCQUFnQixJQUFJLENBQUMsTUFBTSxFQUFFO0FBQzdCLG9CQUFvQixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pDLG9CQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25DLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsWUFBWSxLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxZQUFZLEdBQUcsVUFBVSxFQUFFLEVBQUUsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQ3hGLGdCQUFnQixJQUFJLEdBQUcsR0FBRyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0MsZ0JBQWdCLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUMsZ0JBQWdCLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDN0Isb0JBQW9CLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakMsb0JBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkMsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYixZQUFZLE9BQU8sSUFBSSxDQUFDO0FBQ3hCLFNBQVM7QUFDVDtBQUNBO0FBQ0EsUUFBUSxTQUFTLHVCQUF1QixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDL0MsWUFBWSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7QUFDMUIsWUFBWSxJQUFJLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxhQUFhLEtBQUssQ0FBQyxDQUFDO0FBQzdFLFlBQVksSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDO0FBQ3hDLGdCQUFnQixPQUFPLElBQUksQ0FBQztBQUM1QixZQUFZLElBQUksT0FBTyxHQUFHLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUM3QyxZQUFZLElBQUksUUFBUSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoRCxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0QixZQUFZLE9BQU8sSUFBSSxFQUFFO0FBQ3pCLGdCQUFnQixJQUFJLElBQUksR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbEQsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLEVBQUU7QUFDM0Isb0JBQW9CLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLG9CQUFvQixPQUFPLElBQUksQ0FBQztBQUNoQyxpQkFBaUI7QUFDakIsZ0JBQWdCLElBQUksU0FBUyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwRCxnQkFBZ0IsSUFBSTtBQUNwQixvQkFBb0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUN4QyxpQkFBaUI7QUFDakIsZ0JBQWdCLE9BQU8sQ0FBQyxFQUFFO0FBQzFCLG9CQUFvQixJQUFJO0FBQ3hCLHdCQUF3QixhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDaEQscUJBQXFCO0FBQ3JCLDRCQUE0QjtBQUM1Qix3QkFBd0IsTUFBTSxDQUFDLENBQUM7QUFDaEMscUJBQXFCO0FBQ3JCLGlCQUFpQjtBQUNqQixnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7QUFDcEIsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0EsUUFBUSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDekIsWUFBWSxJQUFJLENBQUMsS0FBSyxJQUFJO0FBQzFCLGdCQUFnQixPQUFPLENBQUMsWUFBWTtBQUNwQyxZQUFZLFFBQVEsT0FBTyxDQUFDO0FBQzVCLGdCQUFnQixLQUFLLFdBQVcsRUFBRSxPQUFPLENBQUMsaUJBQWlCO0FBQzNELGdCQUFnQixLQUFLLFNBQVMsRUFBRSxPQUFPLENBQUMsZUFBZTtBQUN2RCxnQkFBZ0IsS0FBSyxRQUFRLEVBQUUsT0FBTyxDQUFDLGNBQWM7QUFDckQsZ0JBQWdCLEtBQUssUUFBUSxFQUFFLE9BQU8sQ0FBQyxjQUFjO0FBQ3JELGdCQUFnQixLQUFLLFFBQVEsRUFBRSxPQUFPLENBQUMsY0FBYztBQUNyRCxnQkFBZ0IsS0FBSyxRQUFRLEVBQUUsT0FBTyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLGNBQWM7QUFDakYsZ0JBQWdCLFNBQVMsT0FBTyxDQUFDLGNBQWM7QUFDL0MsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0EsUUFBUSxTQUFTLFdBQVcsQ0FBQyxDQUFDLEVBQUU7QUFDaEMsWUFBWSxPQUFPLENBQUMsS0FBSyxTQUFTLENBQUM7QUFDbkMsU0FBUztBQUNUO0FBQ0E7QUFDQSxRQUFRLFNBQVMsTUFBTSxDQUFDLENBQUMsRUFBRTtBQUMzQixZQUFZLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQztBQUM5QixTQUFTO0FBQ1Q7QUFDQTtBQUNBLFFBQVEsU0FBUyxRQUFRLENBQUMsQ0FBQyxFQUFFO0FBQzdCLFlBQVksT0FBTyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUM7QUFDekMsU0FBUztBQUNUO0FBQ0E7QUFDQSxRQUFRLFNBQVMsUUFBUSxDQUFDLENBQUMsRUFBRTtBQUM3QixZQUFZLE9BQU8sT0FBTyxDQUFDLEtBQUssUUFBUSxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssVUFBVSxDQUFDO0FBQ2hGLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsU0FBUyxXQUFXLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRTtBQUNuRCxZQUFZLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQztBQUMvQixnQkFBZ0IsS0FBSyxDQUFDLGtCQUFrQixPQUFPLEtBQUssQ0FBQztBQUNyRCxnQkFBZ0IsS0FBSyxDQUFDLGFBQWEsT0FBTyxLQUFLLENBQUM7QUFDaEQsZ0JBQWdCLEtBQUssQ0FBQyxnQkFBZ0IsT0FBTyxLQUFLLENBQUM7QUFDbkQsZ0JBQWdCLEtBQUssQ0FBQyxlQUFlLE9BQU8sS0FBSyxDQUFDO0FBQ2xELGdCQUFnQixLQUFLLENBQUMsZUFBZSxPQUFPLEtBQUssQ0FBQztBQUNsRCxnQkFBZ0IsS0FBSyxDQUFDLGVBQWUsT0FBTyxLQUFLLENBQUM7QUFDbEQsYUFBYTtBQUNiLFlBQVksSUFBSSxJQUFJLEdBQUcsYUFBYSxLQUFLLENBQUMsZ0JBQWdCLFFBQVEsR0FBRyxhQUFhLEtBQUssQ0FBQyxnQkFBZ0IsUUFBUSxHQUFHLFNBQVMsQ0FBQztBQUM3SCxZQUFZLElBQUksWUFBWSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztBQUNuRSxZQUFZLElBQUksWUFBWSxLQUFLLFNBQVMsRUFBRTtBQUM1QyxnQkFBZ0IsSUFBSSxNQUFNLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDNUQsZ0JBQWdCLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQztBQUNwQyxvQkFBb0IsTUFBTSxJQUFJLFNBQVMsRUFBRSxDQUFDO0FBQzFDLGdCQUFnQixPQUFPLE1BQU0sQ0FBQztBQUM5QixhQUFhO0FBQ2IsWUFBWSxPQUFPLG1CQUFtQixDQUFDLEtBQUssRUFBRSxJQUFJLEtBQUssU0FBUyxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNwRixTQUFTO0FBQ1Q7QUFDQTtBQUNBLFFBQVEsU0FBUyxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFO0FBQzlDLFlBQVksSUFBSSxJQUFJLEtBQUssUUFBUSxFQUFFO0FBQ25DLGdCQUFnQixJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQzVDLGdCQUFnQixJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUM1QyxvQkFBb0IsSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRCxvQkFBb0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7QUFDekMsd0JBQXdCLE9BQU8sTUFBTSxDQUFDO0FBQ3RDLGlCQUFpQjtBQUNqQixnQkFBZ0IsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUN4QyxnQkFBZ0IsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDekMsb0JBQW9CLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakQsb0JBQW9CLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQ3pDLHdCQUF3QixPQUFPLE1BQU0sQ0FBQztBQUN0QyxpQkFBaUI7QUFDakIsYUFBYTtBQUNiLGlCQUFpQjtBQUNqQixnQkFBZ0IsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUN4QyxnQkFBZ0IsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDekMsb0JBQW9CLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakQsb0JBQW9CLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQ3pDLHdCQUF3QixPQUFPLE1BQU0sQ0FBQztBQUN0QyxpQkFBaUI7QUFDakIsZ0JBQWdCLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDNUMsZ0JBQWdCLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQzVDLG9CQUFvQixJQUFJLE1BQU0sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BELG9CQUFvQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztBQUN6Qyx3QkFBd0IsT0FBTyxNQUFNLENBQUM7QUFDdEMsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYixZQUFZLE1BQU0sSUFBSSxTQUFTLEVBQUUsQ0FBQztBQUNsQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFFBQVEsU0FBUyxTQUFTLENBQUMsUUFBUSxFQUFFO0FBQ3JDLFlBQVksT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQzlCLFNBQVM7QUFDVDtBQUNBO0FBQ0EsUUFBUSxTQUFTLFFBQVEsQ0FBQyxRQUFRLEVBQUU7QUFDcEMsWUFBWSxPQUFPLEVBQUUsR0FBRyxRQUFRLENBQUM7QUFDakMsU0FBUztBQUNUO0FBQ0E7QUFDQSxRQUFRLFNBQVMsYUFBYSxDQUFDLFFBQVEsRUFBRTtBQUN6QyxZQUFZLElBQUksR0FBRyxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxjQUFjLENBQUM7QUFDNUQsWUFBWSxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUM7QUFDN0IsZ0JBQWdCLE9BQU8sR0FBRyxDQUFDO0FBQzNCLFlBQVksT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakMsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxTQUFTLE9BQU8sQ0FBQyxRQUFRLEVBQUU7QUFDbkMsWUFBWSxPQUFPLEtBQUssQ0FBQyxPQUFPO0FBQ2hDLGtCQUFrQixLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztBQUN6QyxrQkFBa0IsUUFBUSxZQUFZLE1BQU07QUFDNUMsc0JBQXNCLFFBQVEsWUFBWSxLQUFLO0FBQy9DLHNCQUFzQixNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssZ0JBQWdCLENBQUM7QUFDcEYsU0FBUztBQUNUO0FBQ0E7QUFDQSxRQUFRLFNBQVMsVUFBVSxDQUFDLFFBQVEsRUFBRTtBQUN0QztBQUNBLFlBQVksT0FBTyxPQUFPLFFBQVEsS0FBSyxVQUFVLENBQUM7QUFDbEQsU0FBUztBQUNUO0FBQ0E7QUFDQSxRQUFRLFNBQVMsYUFBYSxDQUFDLFFBQVEsRUFBRTtBQUN6QztBQUNBLFlBQVksT0FBTyxPQUFPLFFBQVEsS0FBSyxVQUFVLENBQUM7QUFDbEQsU0FBUztBQUNUO0FBQ0E7QUFDQSxRQUFRLFNBQVMsYUFBYSxDQUFDLFFBQVEsRUFBRTtBQUN6QyxZQUFZLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUNsQyxnQkFBZ0IsS0FBSyxDQUFDLGVBQWUsT0FBTyxJQUFJLENBQUM7QUFDakQsZ0JBQWdCLEtBQUssQ0FBQyxlQUFlLE9BQU8sSUFBSSxDQUFDO0FBQ2pELGdCQUFnQixTQUFTLE9BQU8sS0FBSyxDQUFDO0FBQ3RDLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLFNBQVMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDakMsWUFBWSxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsWUFBWSxJQUFJLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxLQUFLLElBQUk7QUFDbkQsZ0JBQWdCLE9BQU8sU0FBUyxDQUFDO0FBQ2pDLFlBQVksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7QUFDakMsZ0JBQWdCLE1BQU0sSUFBSSxTQUFTLEVBQUUsQ0FBQztBQUN0QyxZQUFZLE9BQU8sSUFBSSxDQUFDO0FBQ3hCLFNBQVM7QUFDVDtBQUNBO0FBQ0EsUUFBUSxTQUFTLFdBQVcsQ0FBQyxHQUFHLEVBQUU7QUFDbEMsWUFBWSxJQUFJLE1BQU0sR0FBRyxTQUFTLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQ3hELFlBQVksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7QUFDbkMsZ0JBQWdCLE1BQU0sSUFBSSxTQUFTLEVBQUUsQ0FBQztBQUN0QyxZQUFZLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUMsWUFBWSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztBQUNuQyxnQkFBZ0IsTUFBTSxJQUFJLFNBQVMsRUFBRSxDQUFDO0FBQ3RDLFlBQVksT0FBTyxRQUFRLENBQUM7QUFDNUIsU0FBUztBQUNUO0FBQ0E7QUFDQSxRQUFRLFNBQVMsYUFBYSxDQUFDLFVBQVUsRUFBRTtBQUMzQyxZQUFZLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQztBQUNwQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFFBQVEsU0FBUyxZQUFZLENBQUMsUUFBUSxFQUFFO0FBQ3hDLFlBQVksSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3pDLFlBQVksT0FBTyxNQUFNLENBQUMsSUFBSSxHQUFHLEtBQUssR0FBRyxNQUFNLENBQUM7QUFDaEQsU0FBUztBQUNUO0FBQ0E7QUFDQSxRQUFRLFNBQVMsYUFBYSxDQUFDLFFBQVEsRUFBRTtBQUN6QyxZQUFZLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN2QyxZQUFZLElBQUksQ0FBQztBQUNqQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNqQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLFNBQVMsc0JBQXNCLENBQUMsQ0FBQyxFQUFFO0FBQzNDLFlBQVksSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRCxZQUFZLElBQUksT0FBTyxDQUFDLEtBQUssVUFBVSxJQUFJLENBQUMsS0FBSyxpQkFBaUI7QUFDbEUsZ0JBQWdCLE9BQU8sS0FBSyxDQUFDO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxJQUFJLEtBQUssS0FBSyxpQkFBaUI7QUFDM0MsZ0JBQWdCLE9BQU8sS0FBSyxDQUFDO0FBQzdCO0FBQ0EsWUFBWSxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3hDLFlBQVksSUFBSSxjQUFjLEdBQUcsU0FBUyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDL0UsWUFBWSxJQUFJLGNBQWMsSUFBSSxJQUFJLElBQUksY0FBYyxLQUFLLE1BQU0sQ0FBQyxTQUFTO0FBQzdFLGdCQUFnQixPQUFPLEtBQUssQ0FBQztBQUM3QjtBQUNBLFlBQVksSUFBSSxXQUFXLEdBQUcsY0FBYyxDQUFDLFdBQVcsQ0FBQztBQUN6RCxZQUFZLElBQUksT0FBTyxXQUFXLEtBQUssVUFBVTtBQUNqRCxnQkFBZ0IsT0FBTyxLQUFLLENBQUM7QUFDN0I7QUFDQSxZQUFZLElBQUksV0FBVyxLQUFLLENBQUM7QUFDakMsZ0JBQWdCLE9BQU8sS0FBSyxDQUFDO0FBQzdCO0FBQ0EsWUFBWSxPQUFPLFdBQVcsQ0FBQztBQUMvQixTQUFTO0FBQ1Q7QUFDQSxRQUFRLFNBQVMsaUJBQWlCLEdBQUc7QUFDckMsWUFBWSxJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7QUFDbkMsWUFBWSxJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7QUFDbkMsWUFBWSxJQUFJLFdBQVcsa0JBQWtCLFlBQVk7QUFDekQsZ0JBQWdCLFNBQVMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFO0FBQzdELG9CQUFvQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNwQyxvQkFBb0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDdEMsb0JBQW9CLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0FBQzFDLG9CQUFvQixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztBQUM5QyxpQkFBaUI7QUFDakIsZ0JBQWdCLFdBQVcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEdBQUcsWUFBWSxFQUFFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUNuRixnQkFBZ0IsV0FBVyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsR0FBRyxZQUFZLEVBQUUsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQ3JGLGdCQUFnQixXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxZQUFZO0FBQ3pELG9CQUFvQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQzVDLG9CQUFvQixJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO0FBQ2pFLHdCQUF3QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzVGLHdCQUF3QixJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7QUFDNUQsNEJBQTRCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDN0MsNEJBQTRCLElBQUksQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDO0FBQ3ZELDRCQUE0QixJQUFJLENBQUMsT0FBTyxHQUFHLGFBQWEsQ0FBQztBQUN6RCx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLDRCQUE0QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDMUMseUJBQXlCO0FBQ3pCLHdCQUF3QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDOUQscUJBQXFCO0FBQ3JCLG9CQUFvQixPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDNUQsaUJBQWlCLENBQUM7QUFDbEIsZ0JBQWdCLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFVBQVUsS0FBSyxFQUFFO0FBQy9ELG9CQUFvQixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQzFDLHdCQUF3QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3pDLHdCQUF3QixJQUFJLENBQUMsS0FBSyxHQUFHLGFBQWEsQ0FBQztBQUNuRCx3QkFBd0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUM7QUFDckQscUJBQXFCO0FBQ3JCLG9CQUFvQixNQUFNLEtBQUssQ0FBQztBQUNoQyxpQkFBaUIsQ0FBQztBQUNsQixnQkFBZ0IsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxLQUFLLEVBQUU7QUFDaEUsb0JBQW9CLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7QUFDMUMsd0JBQXdCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDekMsd0JBQXdCLElBQUksQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDO0FBQ25ELHdCQUF3QixJQUFJLENBQUMsT0FBTyxHQUFHLGFBQWEsQ0FBQztBQUNyRCxxQkFBcUI7QUFDckIsb0JBQW9CLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUN4RCxpQkFBaUIsQ0FBQztBQUNsQixnQkFBZ0IsT0FBTyxXQUFXLENBQUM7QUFDbkMsYUFBYSxFQUFFLENBQUMsQ0FBQztBQUNqQixZQUFZLHNCQUFzQixZQUFZO0FBQzlDLGdCQUFnQixTQUFTLEdBQUcsR0FBRztBQUMvQixvQkFBb0IsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDcEMsb0JBQW9CLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBQ3RDLG9CQUFvQixJQUFJLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQztBQUNuRCxvQkFBb0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMxQyxpQkFBaUI7QUFDakIsZ0JBQWdCLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUU7QUFDN0Qsb0JBQW9CLEdBQUcsRUFBRSxZQUFZLEVBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQ2xFLG9CQUFvQixVQUFVLEVBQUUsSUFBSTtBQUNwQyxvQkFBb0IsWUFBWSxFQUFFLElBQUk7QUFDdEMsaUJBQWlCLENBQUMsQ0FBQztBQUNuQixnQkFBZ0IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsVUFBVSxHQUFHLEVBQUUsRUFBRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxhQUFhLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdEcsZ0JBQWdCLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLFVBQVUsR0FBRyxFQUFFO0FBQ25ELG9CQUFvQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsYUFBYSxLQUFLLENBQUMsQ0FBQztBQUNsRSxvQkFBb0IsT0FBTyxLQUFLLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQ3hFLGlCQUFpQixDQUFDO0FBQ2xCLGdCQUFnQixHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxVQUFVLEdBQUcsRUFBRSxLQUFLLEVBQUU7QUFDMUQsb0JBQW9CLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxhQUFhLElBQUksQ0FBQyxDQUFDO0FBQ2pFLG9CQUFvQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUNoRCxvQkFBb0IsT0FBTyxJQUFJLENBQUM7QUFDaEMsaUJBQWlCLENBQUM7QUFDbEIsZ0JBQWdCLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsR0FBRyxFQUFFO0FBQ3RELG9CQUFvQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsYUFBYSxLQUFLLENBQUMsQ0FBQztBQUNsRSxvQkFBb0IsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO0FBQ3BDLHdCQUF3QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUNyRCx3QkFBd0IsS0FBSyxJQUFJLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDL0QsNEJBQTRCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUQsNEJBQTRCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEUseUJBQXlCO0FBQ3pCLHdCQUF3QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQzVDLHdCQUF3QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQzlDLHdCQUF3QixJQUFJLEdBQUcsS0FBSyxJQUFJLENBQUMsU0FBUyxFQUFFO0FBQ3BELDRCQUE0QixJQUFJLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQztBQUMzRCw0QkFBNEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNsRCx5QkFBeUI7QUFDekIsd0JBQXdCLE9BQU8sSUFBSSxDQUFDO0FBQ3BDLHFCQUFxQjtBQUNyQixvQkFBb0IsT0FBTyxLQUFLLENBQUM7QUFDakMsaUJBQWlCLENBQUM7QUFDbEIsZ0JBQWdCLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFlBQVk7QUFDbEQsb0JBQW9CLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUMxQyxvQkFBb0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQzVDLG9CQUFvQixJQUFJLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQztBQUNuRCxvQkFBb0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMxQyxpQkFBaUIsQ0FBQztBQUNsQixnQkFBZ0IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsWUFBWSxFQUFFLE9BQU8sSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUMvRyxnQkFBZ0IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsWUFBWSxFQUFFLE9BQU8sSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNuSCxnQkFBZ0IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsWUFBWSxFQUFFLE9BQU8sSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNwSCxnQkFBZ0IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsR0FBRyxZQUFZLEVBQUUsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQ3JGLGdCQUFnQixHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxHQUFHLFlBQVksRUFBRSxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDdkYsZ0JBQWdCLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFVBQVUsR0FBRyxFQUFFLE1BQU0sRUFBRTtBQUM3RCxvQkFBb0IsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEdBQUcsRUFBRTtBQUNoRCx3QkFBd0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ3BGLHFCQUFxQjtBQUNyQixvQkFBb0IsSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxNQUFNLEVBQUU7QUFDeEQsd0JBQXdCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDN0Qsd0JBQXdCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdDLHdCQUF3QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNyRCxxQkFBcUI7QUFDckIsb0JBQW9CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztBQUM1QyxpQkFBaUIsQ0FBQztBQUNsQixnQkFBZ0IsT0FBTyxHQUFHLENBQUM7QUFDM0IsYUFBYSxFQUFFLEVBQUU7QUFDakIsWUFBWSxTQUFTLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFO0FBQ3BDLGdCQUFnQixPQUFPLEdBQUcsQ0FBQztBQUMzQixhQUFhO0FBQ2IsWUFBWSxTQUFTLFFBQVEsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFO0FBQ3hDLGdCQUFnQixPQUFPLEtBQUssQ0FBQztBQUM3QixhQUFhO0FBQ2IsWUFBWSxTQUFTLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQzFDLGdCQUFnQixPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3BDLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQSxRQUFRLFNBQVMsaUJBQWlCLEdBQUc7QUFDckMsWUFBWSxzQkFBc0IsWUFBWTtBQUM5QyxnQkFBZ0IsU0FBUyxHQUFHLEdBQUc7QUFDL0Isb0JBQW9CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUMzQyxpQkFBaUI7QUFDakIsZ0JBQWdCLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUU7QUFDN0Qsb0JBQW9CLEdBQUcsRUFBRSxZQUFZLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQy9ELG9CQUFvQixVQUFVLEVBQUUsSUFBSTtBQUNwQyxvQkFBb0IsWUFBWSxFQUFFLElBQUk7QUFDdEMsaUJBQWlCLENBQUMsQ0FBQztBQUNuQixnQkFBZ0IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsVUFBVSxLQUFLLEVBQUUsRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN0RixnQkFBZ0IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsVUFBVSxLQUFLLEVBQUUsRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQ25HLGdCQUFnQixHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUFVLEtBQUssRUFBRSxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzVGLGdCQUFnQixHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDekUsZ0JBQWdCLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFlBQVksRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQzlFLGdCQUFnQixHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxZQUFZLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUNsRixnQkFBZ0IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsWUFBWSxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDcEYsZ0JBQWdCLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEdBQUcsWUFBWSxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUNsRixnQkFBZ0IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsR0FBRyxZQUFZLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQ3BGLGdCQUFnQixPQUFPLEdBQUcsQ0FBQztBQUMzQixhQUFhLEVBQUUsRUFBRTtBQUNqQixTQUFTO0FBQ1Q7QUFDQSxRQUFRLFNBQVMscUJBQXFCLEdBQUc7QUFDekMsWUFBWSxJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFDL0IsWUFBWSxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDeEMsWUFBWSxJQUFJLE9BQU8sR0FBRyxlQUFlLEVBQUUsQ0FBQztBQUM1QyxZQUFZLHNCQUFzQixZQUFZO0FBQzlDLGdCQUFnQixTQUFTLE9BQU8sR0FBRztBQUNuQyxvQkFBb0IsSUFBSSxDQUFDLElBQUksR0FBRyxlQUFlLEVBQUUsQ0FBQztBQUNsRCxpQkFBaUI7QUFDakIsZ0JBQWdCLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLFVBQVUsTUFBTSxFQUFFO0FBQzFELG9CQUFvQixJQUFJLEtBQUssR0FBRyx1QkFBdUIsQ0FBQyxNQUFNLGFBQWEsS0FBSyxDQUFDLENBQUM7QUFDbEYsb0JBQW9CLE9BQU8sS0FBSyxLQUFLLFNBQVMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ3ZGLGlCQUFpQixDQUFDO0FBQ2xCLGdCQUFnQixPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxVQUFVLE1BQU0sRUFBRTtBQUMxRCxvQkFBb0IsSUFBSSxLQUFLLEdBQUcsdUJBQXVCLENBQUMsTUFBTSxhQUFhLEtBQUssQ0FBQyxDQUFDO0FBQ2xGLG9CQUFvQixPQUFPLEtBQUssS0FBSyxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUMzRixpQkFBaUIsQ0FBQztBQUNsQixnQkFBZ0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsVUFBVSxNQUFNLEVBQUUsS0FBSyxFQUFFO0FBQ2pFLG9CQUFvQixJQUFJLEtBQUssR0FBRyx1QkFBdUIsQ0FBQyxNQUFNLGFBQWEsSUFBSSxDQUFDLENBQUM7QUFDakYsb0JBQW9CLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQzdDLG9CQUFvQixPQUFPLElBQUksQ0FBQztBQUNoQyxpQkFBaUIsQ0FBQztBQUNsQixnQkFBZ0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxNQUFNLEVBQUU7QUFDN0Qsb0JBQW9CLElBQUksS0FBSyxHQUFHLHVCQUF1QixDQUFDLE1BQU0sYUFBYSxLQUFLLENBQUMsQ0FBQztBQUNsRixvQkFBb0IsT0FBTyxLQUFLLEtBQUssU0FBUyxHQUFHLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDakYsaUJBQWlCLENBQUM7QUFDbEIsZ0JBQWdCLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFlBQVk7QUFDdEQ7QUFDQSxvQkFBb0IsSUFBSSxDQUFDLElBQUksR0FBRyxlQUFlLEVBQUUsQ0FBQztBQUNsRCxpQkFBaUIsQ0FBQztBQUNsQixnQkFBZ0IsT0FBTyxPQUFPLENBQUM7QUFDL0IsYUFBYSxFQUFFLEVBQUU7QUFDakIsWUFBWSxTQUFTLGVBQWUsR0FBRztBQUN2QyxnQkFBZ0IsSUFBSSxHQUFHLENBQUM7QUFDeEIsZ0JBQWdCO0FBQ2hCLG9CQUFvQixHQUFHLEdBQUcsYUFBYSxHQUFHLFVBQVUsRUFBRSxDQUFDO0FBQ3ZELHVCQUF1QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRTtBQUMvQyxnQkFBZ0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNqQyxnQkFBZ0IsT0FBTyxHQUFHLENBQUM7QUFDM0IsYUFBYTtBQUNiLFlBQVksU0FBUyx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQzdELGdCQUFnQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLEVBQUU7QUFDbkQsb0JBQW9CLElBQUksQ0FBQyxNQUFNO0FBQy9CLHdCQUF3QixPQUFPLFNBQVMsQ0FBQztBQUN6QyxvQkFBb0IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDeEYsaUJBQWlCO0FBQ2pCLGdCQUFnQixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2QyxhQUFhO0FBQ2IsWUFBWSxTQUFTLGVBQWUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO0FBQ25ELGdCQUFnQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQztBQUM3QyxvQkFBb0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ3pELGdCQUFnQixPQUFPLE1BQU0sQ0FBQztBQUM5QixhQUFhO0FBQ2IsWUFBWSxTQUFTLGNBQWMsQ0FBQyxJQUFJLEVBQUU7QUFDMUMsZ0JBQWdCLElBQUksT0FBTyxVQUFVLEtBQUssVUFBVSxFQUFFO0FBQ3RELG9CQUFvQixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVc7QUFDckQsd0JBQXdCLE9BQU8sTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzVFLG9CQUFvQixJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVc7QUFDdkQsd0JBQXdCLE9BQU8sUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzlFLG9CQUFvQixPQUFPLGVBQWUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN2RSxpQkFBaUI7QUFDakIsZ0JBQWdCLE9BQU8sZUFBZSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzlELGFBQWE7QUFDYixZQUFZLFNBQVMsVUFBVSxHQUFHO0FBQ2xDLGdCQUFnQixJQUFJLElBQUksR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDckQ7QUFDQSxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2hELGdCQUFnQixJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFDaEQsZ0JBQWdCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNoQyxnQkFBZ0IsS0FBSyxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRTtBQUNuRSxvQkFBb0IsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVDLG9CQUFvQixJQUFJLE1BQU0sS0FBSyxDQUFDLElBQUksTUFBTSxLQUFLLENBQUMsSUFBSSxNQUFNLEtBQUssQ0FBQztBQUNwRSx3QkFBd0IsTUFBTSxJQUFJLEdBQUcsQ0FBQztBQUN0QyxvQkFBb0IsSUFBSSxJQUFJLEdBQUcsRUFBRTtBQUNqQyx3QkFBd0IsTUFBTSxJQUFJLEdBQUcsQ0FBQztBQUN0QyxvQkFBb0IsTUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDOUQsaUJBQWlCO0FBQ2pCLGdCQUFnQixPQUFPLE1BQU0sQ0FBQztBQUM5QixhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0EsUUFBUSxTQUFTLGNBQWMsQ0FBQyxHQUFHLEVBQUU7QUFDckMsWUFBWSxHQUFHLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQztBQUMvQixZQUFZLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQztBQUMxQixZQUFZLE9BQU8sR0FBRyxDQUFDO0FBQ3ZCLFNBQVM7QUFDVCxLQUFLLENBQUMsQ0FBQztBQUNQLENBQUMsRUFBRUQsU0FBTyxLQUFLQSxTQUFPLEdBQUcsRUFBRSxDQUFDLENBQUM7O0FDeG1DN0IsSUFBQSxlQUFBLGtCQUFBLFlBQUE7QUFBQSxJQUFBLFNBQUEsZUFBQSxHQUFBO0tBY0M7QUFiVSxJQUFBLGVBQUEsQ0FBQSxXQUFXLEdBQWxCLFVBQ0ksTUFBUyxFQUNULGFBQXFDLEVBQUE7QUFFckMsUUFBQSxJQUFNLEdBQUcsR0FBRyxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDMUMsSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFFBQVEsRUFBRTtBQUNYLFlBQUEsUUFBUSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7QUFDL0IsWUFBQSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RCLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNqRCxTQUFBO0FBQ0QsUUFBQSxPQUFPLFFBQWEsQ0FBQztLQUN4QixDQUFBO0lBQ0wsT0FBQyxlQUFBLENBQUE7QUFBRCxDQUFDLEVBQUEsQ0FBQTs7QUNMRCxJQUFNLGtCQUFrQixHQUFHLG9CQUFvQixDQUFDO0FBTWhELElBQUEsaUJBQUEsa0JBQUEsWUFBQTtBQUFBLElBQUEsU0FBQSxpQkFBQSxHQUFBO1FBQ3FCLElBQUcsQ0FBQSxHQUFBLEdBQUcscUJBQXFCLENBQXNCLFlBQU0sRUFBQSxRQUFDLEVBQWUsRUFBQSxFQUFBLENBQUMsQ0FBQztLQVE3RjtJQVBHLGlCQUFXLENBQUEsU0FBQSxDQUFBLFdBQUEsR0FBWCxVQUFZLE1BQWlCLEVBQUE7UUFDekIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUMvQixDQUFBO0FBQ0QsSUFBQSxpQkFBQSxDQUFBLFNBQUEsQ0FBQSxJQUFJLEdBQUosVUFBSyxNQUFpQixFQUFFLEdBQWMsRUFBRSxLQUFjLEVBQUE7UUFDbEQsSUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdEMsUUFBQSxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0tBQ3pCLENBQUE7SUFDTCxPQUFDLGlCQUFBLENBQUE7QUFBRCxDQUFDLEVBQUEsQ0FBQSxDQUFBO0FBRUQsSUFBQSwwQkFBQSxrQkFBQSxZQUFBO0FBQUEsSUFBQSxTQUFBLDBCQUFBLEdBQUE7UUFDcUIsSUFBRyxDQUFBLEdBQUEsR0FBRyxxQkFBcUIsQ0FBc0MsWUFBQTtBQUM5RSxZQUFBLE9BQU8sRUFBRSxDQUFDO0FBQ2QsU0FBQyxDQUFDLENBQUM7S0FVTjtJQVRHLDBCQUFXLENBQUEsU0FBQSxDQUFBLFdBQUEsR0FBWCxVQUFZLE1BQWlCLEVBQUE7UUFDekIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUMvQixDQUFBO0lBQ0QsMEJBQUksQ0FBQSxTQUFBLENBQUEsSUFBQSxHQUFKLFVBQUssTUFBaUIsRUFBRSxLQUFhLEVBQUUsR0FBYyxFQUFFLEtBQWMsRUFBQTtRQUNqRSxJQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QyxJQUFNLFFBQVEsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzdDLFFBQUEsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUN0QixRQUFBLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxRQUFRLENBQUM7S0FDcEMsQ0FBQTtJQUNMLE9BQUMsMEJBQUEsQ0FBQTtBQUFELENBQUMsRUFBQSxDQUFBLENBQUE7QUFtQkQsSUFBQSxhQUFBLGtCQUFBLFlBQUE7QUFBQSxJQUFBLFNBQUEsYUFBQSxHQUFBO0FBSVksUUFBQSxJQUFBLENBQUEsS0FBSyxHQUEyQkQscUJBQWEsQ0FBQyxTQUFTLENBQUM7UUFDeEQsSUFBeUIsQ0FBQSx5QkFBQSxHQUFzQixFQUFFLENBQUM7UUFDekMsSUFBbUIsQ0FBQSxtQkFBQSxHQUE0QyxFQUFFLENBQUM7QUFDbEUsUUFBQSxJQUFBLENBQUEsZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUM7QUFFMUQsUUFBQSxJQUFBLENBQUEsS0FBSyxHQUFrQjtBQUNwQyxZQUFBLElBQUksRUFBRSxFQUFFO1lBQ1IsT0FBTyxFQUFFLElBQUksaUJBQWlCLEVBQUU7WUFDaEMsTUFBTSxFQUFFLElBQUksMEJBQTBCLEVBQUU7U0FDM0MsQ0FBQztLQW9HTDtBQWhIVSxJQUFBLGFBQUEsQ0FBQSxhQUFhLEdBQXBCLFlBQUE7QUFDSSxRQUFBLE9BQU8sa0JBQWtCLENBQUM7S0FDN0IsQ0FBQTtJQVlNLGFBQVcsQ0FBQSxXQUFBLEdBQWxCLFVBQXNCLElBQWdCLEVBQUE7UUFDbEMsT0FBTyxlQUFlLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztLQUMzRCxDQUFBO0lBRUQsYUFBSSxDQUFBLFNBQUEsQ0FBQSxJQUFBLEdBQUosVUFBSyxNQUFrQixFQUFBO0FBQ25CLFFBQUEsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7UUFDcEIsSUFBTSxNQUFNLEdBQUcsTUFBaUMsQ0FBQztBQUNqRCxRQUFBLElBQUksT0FBTyxNQUFNLENBQUMsS0FBSyxLQUFLLFVBQVUsRUFBRTtZQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ2pDLFNBQUE7QUFDRCxRQUFBLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxLQUFLLFVBQVUsRUFBRTtBQUNyQyxZQUFBLElBQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNuQyxZQUFBLEtBQUssSUFBTSxHQUFHLElBQUksVUFBVSxFQUFFO2dCQUMxQixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2pELGFBQUE7QUFDSixTQUFBO0FBQ0QsUUFBQSxJQUFJLE9BQU8sTUFBTSxDQUFDLFFBQVEsS0FBSyxVQUFVLEVBQUU7QUFDdkMsWUFBQSxJQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkMsSUFBSSxRQUFRLENBQUMsS0FBSyxFQUFFO0FBQ2hCLGdCQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pDLGFBQUE7QUFDRCxZQUFBLElBQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7QUFDbkMsWUFBQSxJQUFJLFVBQVUsRUFBRTtBQUNaLGdCQUFBLEtBQUssSUFBTSxHQUFHLElBQUksVUFBVSxFQUFFO29CQUMxQixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2pELGlCQUFBO0FBQ0osYUFBQTtBQUNKLFNBQUE7S0FDSixDQUFBO0FBRUQsSUFBQSxhQUFBLENBQUEsU0FBQSxDQUFBLE1BQU0sR0FBTixZQUFBO1FBQUEsSUFvQkMsS0FBQSxHQUFBLElBQUEsQ0FBQTtRQW5CRyxPQUFPO0FBQ0gsWUFBQSxJQUFJLEVBQUUsVUFBQyxHQUFvQixFQUFFLEtBQWMsRUFBQTtnQkFDdkMsS0FBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO2FBQ2hDO1lBQ0QsTUFBTSxFQUFFLFVBQUMsV0FBcUMsRUFBQTtnQkFDMUMsT0FBTztBQUNILG9CQUFBLElBQUksRUFBRSxVQUFDLEdBQW9CLEVBQUUsS0FBYyxFQUFBO0FBQ3ZDLHdCQUFBLEtBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO3FCQUNwRDtpQkFDSixDQUFDO2FBQ0w7QUFDRCxZQUFBLFNBQVMsRUFBRSxVQUFDLFdBQTRCLEVBQUUsS0FBYSxFQUFBO2dCQUNuRCxPQUFPO0FBQ0gsb0JBQUEsSUFBSSxFQUFFLFVBQUMsR0FBb0IsRUFBRSxLQUFjLEVBQUE7QUFDdkMsd0JBQUEsS0FBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO3FCQUMxRDtpQkFDSixDQUFDO2FBQ0w7U0FDSixDQUFDO0tBQ0wsQ0FBQTtJQUNELGFBQVEsQ0FBQSxTQUFBLENBQUEsUUFBQSxHQUFSLFVBQVMsS0FBNkIsRUFBQTtBQUNsQyxRQUFBLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0tBQ3RCLENBQUE7QUFDRCxJQUFBLGFBQUEsQ0FBQSxTQUFBLENBQUEsMkJBQTJCLEdBQTNCLFVBQTRCLEtBQWEsRUFBRSxHQUFlLEVBQUE7QUFDdEQsUUFBQSxJQUFJLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDO0tBQy9DLENBQUE7QUFDRCxJQUFBLGFBQUEsQ0FBQSxTQUFBLENBQUEsa0JBQWtCLEdBQWxCLFVBQW1CLFdBQTRCLEVBQUUsSUFBZ0IsRUFBQTtRQUM3RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUNoRCxDQUFBO0FBQ0QsSUFBQSxhQUFBLENBQUEsU0FBQSxDQUFBLGtCQUFrQixHQUFsQixVQUFtQixVQUEyQixFQUFFLFNBQW9CLEVBQUE7UUFDaEUsSUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNsRCxRQUFBLFVBQVUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDMUIsUUFBQSxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLEdBQUcsVUFBVSxDQUFDO0tBQ3JELENBQUE7SUFDTyxhQUFhLENBQUEsU0FBQSxDQUFBLGFBQUEsR0FBckIsVUFBc0IsVUFBMkIsRUFBQTtRQUM3QyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBYSxDQUFDO0tBQ3ZFLENBQUE7SUFDRCxhQUFVLENBQUEsU0FBQSxDQUFBLFVBQUEsR0FBVixVQUFXLFNBQW9CLEVBQUE7UUFBL0IsSUFLQyxLQUFBLEdBQUEsSUFBQSxDQUFBO0FBSkcsUUFBQSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsTUFBTSxDQUFDLFVBQUEsRUFBRSxFQUFBO1lBQ2xELElBQU0sVUFBVSxHQUFHLEtBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRCxZQUFBLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNyQyxTQUFDLENBQUMsQ0FBQztLQUNOLENBQUE7QUFDRCxJQUFBLGFBQUEsQ0FBQSxTQUFBLENBQUEsTUFBTSxHQUFOLFlBQUE7UUFBQSxJQXVCQyxLQUFBLEdBQUEsSUFBQSxDQUFBO1FBdEJHLE9BQU87QUFDSCxZQUFBLFFBQVEsRUFBRSxZQUFNLEVBQUEsT0FBQSxLQUFJLENBQUMsS0FBSyxHQUFBO0FBQzFCLFlBQUEsUUFBUSxFQUFFLFlBQUE7Z0JBQ04sT0FBTyxLQUFJLENBQUMsS0FBSyxDQUFDO2FBQ3JCO0FBQ0QsWUFBQSw0QkFBNEIsRUFBRSxZQUFBO2dCQUMxQixPQUFPLEtBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbEQ7WUFDRCxVQUFVLEVBQUUsVUFBQyxTQUFvQixFQUFBO0FBQzdCLGdCQUFBLE9BQU8sS0FBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUNyQztZQUNELGtCQUFrQixFQUFFLFlBQU0sRUFBQSxPQUFBLElBQUksR0FBRyxDQUFDLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBLEVBQUE7QUFDeEQsWUFBQSxlQUFlLEVBQUUsWUFBQTtBQUNiLGdCQUFBLE9BQUEsUUFBQSxDQUFBLEVBQUEsRUFBWSxLQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBRyxDQUFBO2FBQ2pDO1lBQ0Qsa0JBQWtCLEVBQUUsVUFBQyxHQUFZLEVBQUE7Z0JBQzdCLE9BQU8sS0FBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzlDO1lBQ0Qsb0JBQW9CLEVBQUUsVUFBQyxTQUFrQixFQUFBO2dCQUNyQyxPQUFPLEtBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUNuRDtTQUNKLENBQUM7S0FDTCxDQUFBO0lBQ0wsT0FBQyxhQUFBLENBQUE7QUFBRCxDQUFDLEVBQUEsQ0FBQTs7QUN4S0ssU0FBVSxJQUFJLENBQUMsU0FBMEIsRUFBQTtBQUMzQyxJQUFBLE9BQU8sVUFBNkIsTUFBaUIsRUFBQTtRQUNqRCxJQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsV0FBVyxDQUFDLE1BQXFDLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDbkcsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN2RSxLQUFDLENBQUM7QUFDTjs7QUNMTSxTQUFVLEtBQUssQ0FBQyxLQUE2QixFQUFBO0FBQy9DLElBQUEsT0FBTyxVQUE2QixNQUFpQixFQUFBO1FBQ2pELElBQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxXQUFXLENBQUMsTUFBcUMsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUNuRyxRQUFBLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0IsS0FBQyxDQUFDO0FBQ047O0FDTE0sU0FBVSxNQUFNLENBQUksTUFBcUIsRUFBQTtBQUMzQyxJQUFBLE9BQU8sVUFBa0IsTUFBYyxFQUFFLFdBQTRCLEVBQUUsY0FBdUIsRUFBQTtRQUMxRixJQUFJLE9BQU8sTUFBTSxLQUFLLFVBQVUsSUFBSSxPQUFPLGNBQWMsS0FBSyxRQUFRLEVBQUU7WUFDcEUsSUFBTSxZQUFZLEdBQUcsTUFBb0IsQ0FBQztZQUMxQyxJQUFNLGFBQWEsR0FBRyxlQUFlLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztBQUMvRSxZQUFBLGFBQWEsQ0FBQywyQkFBMkIsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDckUsU0FBQTtBQUFNLGFBQUEsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFO0FBQ25GLFlBQUEsSUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQ2hGLFlBQUEsUUFBUSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNwRCxTQUFBO0FBQ0wsS0FBQyxDQUFDO0FBQ047O0FDVmdCLFNBQUEsT0FBTyxDQUFDLFVBQTZCLEVBQUUsVUFBNkIsRUFBQTtBQUE3QixJQUFBLElBQUEsVUFBQSxLQUFBLEtBQUEsQ0FBQSxFQUFBLEVBQUEsVUFBNkIsR0FBQSxFQUFBLENBQUEsRUFBQTtJQUNoRixPQUFPLFVBQUMsTUFBYyxFQUFFLFdBQTRCLEVBQUE7QUFDaEQsUUFBQSxJQUFNLFFBQVEsR0FBRyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDOUMsUUFBQSxJQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsV0FBeUMsQ0FBQztRQUUvRCxRQUFRLENBQUMsYUFBYSxDQUNsQixVQUFVLEVBQ1YsVUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFBO1lBQ2IsSUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDckQsWUFBQSxJQUFNLElBQUksR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDbkMsWUFBQSxJQUFJLE9BQU8sSUFBSSxLQUFLLFVBQVUsRUFBRTtnQkFDNUIsT0FBTyxZQUFBO29CQUFDLElBQU8sSUFBQSxHQUFBLEVBQUEsQ0FBQTt5QkFBUCxJQUFPLEVBQUEsR0FBQSxDQUFBLEVBQVAsRUFBTyxHQUFBLFNBQUEsQ0FBQSxNQUFBLEVBQVAsRUFBTyxFQUFBLEVBQUE7d0JBQVAsSUFBTyxDQUFBLEVBQUEsQ0FBQSxHQUFBLFNBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBQTs7b0JBQ1gsSUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDOUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0QyxpQkFBQyxDQUFDO0FBQ0wsYUFBQTtBQUFNLGlCQUFBO0FBQ0gsZ0JBQUEsT0FBTyxZQUFNLEVBQUEsT0FBQSxJQUFJLENBQUEsRUFBQSxDQUFDO0FBQ3JCLGFBQUE7U0FDSixFQUNELFVBQVUsQ0FDYixDQUFDO0FBQ04sS0FBQyxDQUFDO0FBQ047O0FDNUJBLElBQVksU0FJWCxDQUFBO0FBSkQsQ0FBQSxVQUFZLFNBQVMsRUFBQTtBQUNqQixJQUFBLFNBQUEsQ0FBQSxZQUFBLENBQUEsR0FBQSxzQkFBbUMsQ0FBQTtBQUNuQyxJQUFBLFNBQUEsQ0FBQSxhQUFBLENBQUEsR0FBQSx1QkFBcUMsQ0FBQTtBQUNyQyxJQUFBLFNBQUEsQ0FBQSxhQUFBLENBQUEsR0FBQSx1QkFBcUMsQ0FBQTtBQUN6QyxDQUFDLEVBSlcsU0FBUyxLQUFULFNBQVMsR0FJcEIsRUFBQSxDQUFBLENBQUE7O0FDQ0Q7OztBQUdHO0FBQ0ksSUFBTSxrQkFBa0IsR0FBRyxVQUFDLFNBQW9CLEVBQUE7SUFDbkQsT0FBTyxVQUFDLE1BQWMsRUFBRSxXQUE0QixFQUFBO0FBQ2hELFFBQUEsSUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQ2hGLFFBQUEsUUFBUSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN4RCxLQUFDLENBQUM7QUFDTixDQUFDOztBQ1ZEOzs7QUFHRztBQUNJLElBQU0sVUFBVSxHQUFHLGNBQXVCLE9BQUEsa0JBQWtCLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFBOztBQ0oxRjs7O0FBR0c7QUFDSSxJQUFNLFNBQVMsR0FBRyxjQUF1QixPQUFBLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQTs7QUNMakYsSUFBTSxVQUFVLEdBQUcsY0FBTSxPQUFBLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQTs7QUNJN0RHLGdDQUlYO0FBSkQsQ0FBQSxVQUFZLGNBQWMsRUFBQTtBQUN0QixJQUFBLGNBQUEsQ0FBQSxLQUFBLENBQUEsR0FBQSw4QkFBb0MsQ0FBQTtBQUNwQyxJQUFBLGNBQUEsQ0FBQSxXQUFBLENBQUEsR0FBQSxrQkFBOEIsQ0FBQTtBQUM5QixJQUFBLGNBQUEsQ0FBQSxNQUFBLENBQUEsR0FBQSxhQUFvQixDQUFBO0FBQ3hCLENBQUMsRUFKV0Esc0JBQWMsS0FBZEEsc0JBQWMsR0FJekIsRUFBQSxDQUFBLENBQUE7O0FDWE0sSUFBTSxRQUFRLEdBQUcsQ0FBQyxZQUFBO0lBQ3JCLElBQUk7O0FBRUEsUUFBQSxJQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1YsUUFBQSxPQUFPLElBQUksQ0FBQztBQUNmLEtBQUE7QUFBQyxJQUFBLE9BQU8sQ0FBQyxFQUFFO0FBQ1IsUUFBQSxPQUFPLEtBQUssQ0FBQztBQUNoQixLQUFBO0FBQ0wsQ0FBQyxHQUFHOztTQ0hZLEtBQUssQ0FBYyxVQUFrQixFQUFFLElBQTZCLEVBQUUsWUFBZ0IsRUFBQTtBQUNsRyxJQUFBLFFBQVEsSUFBSTtRQUNSLEtBQUtBLHNCQUFjLENBQUMsR0FBRyxDQUFDO1FBQ3hCLEtBQUtBLHNCQUFjLENBQUMsSUFBSTtZQUNwQixJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ1gsZ0JBQUEsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBUSxJQUFJLEVBQUEsZ0RBQUEsQ0FBK0MsQ0FBQyxDQUFDO0FBQ2hGLGFBQUE7QUFDUixLQUFBO0lBQ0QsT0FBTyxVQUFDLE1BQWMsRUFBRSxXQUE0QixFQUFBO0FBQ2hELFFBQUEsSUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQ2hGLFFBQUEsSUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hDLFFBQUEsUUFBUSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN2RCxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxVQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUE7WUFDdEUsT0FBTyxZQUFBO0FBQ0gsZ0JBQUEsT0FBQSxTQUFTLENBQUMsUUFBUSxDQUEwQixVQUFvQixFQUFFO0FBQzlELG9CQUFBLEtBQUssRUFBQSxLQUFBO0FBQ0wsb0JBQUEsSUFBSSxFQUFBLElBQUE7QUFDSixvQkFBQSxZQUFZLEVBQUEsWUFBQTtpQkFDZixDQUFDLENBQUE7QUFKRixhQUlFLENBQUM7QUFDWCxTQUFDLENBQUMsQ0FBQztBQUNQLEtBQUMsQ0FBQztBQUNOOztBQ3ZCZ0IsU0FBQSxJQUFJLENBQUMsR0FBb0IsRUFBRSxLQUFxQixFQUFBO0FBQXJCLElBQUEsSUFBQSxLQUFBLEtBQUEsS0FBQSxDQUFBLEVBQUEsRUFBQSxLQUFxQixHQUFBLElBQUEsQ0FBQSxFQUFBO0lBQzVELE9BQU8sWUFBQTtRQUNILElBSW9DLElBQUEsR0FBQSxFQUFBLENBQUE7YUFKcEMsSUFJb0MsRUFBQSxHQUFBLENBQUEsRUFKcEMsRUFJb0MsR0FBQSxTQUFBLENBQUEsTUFBQSxFQUpwQyxFQUlvQyxFQUFBLEVBQUE7WUFKcEMsSUFJb0MsQ0FBQSxFQUFBLENBQUEsR0FBQSxTQUFBLENBQUEsRUFBQSxDQUFBLENBQUE7O0FBRXBDLFFBQUEsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTs7QUFFbkIsWUFBQSxJQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUNyRSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN0QyxTQUFBO0FBQU0sYUFBQSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFOztZQUVwQixJQUFBLEVBQUEsR0FBQSxNQUEyQixDQUFBLElBQUksRUFBQSxDQUFBLENBQUEsRUFBOUIsU0FBUyxHQUFBLEVBQUEsQ0FBQSxDQUFBLENBQUEsRUFBRSxXQUFXLEdBQUEsRUFBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ3RDLFlBQUEsSUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQ25GLFlBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzFELFNBQUE7QUFBTSxhQUFBLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFOztBQUVuRCxZQUFBLElBQUEsRUFBQSxHQUFBLE1BQUEsQ0FBa0MsSUFBSSxFQUFBLENBQUEsQ0FBQSxFQUFyQyxTQUFTLEdBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFFLFdBQVcsR0FBQSxFQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUUsS0FBSyxRQUFRLENBQUM7QUFDN0MsWUFBQSxJQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDbkYsWUFBQSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3BFLFNBQUE7QUFBTSxhQUFBOztZQUVHLElBQUEsRUFBQSxHQUFBLE1BQTJCLENBQUEsSUFBSSxFQUFBLENBQUEsQ0FBQSxFQUE5QixTQUFTLEdBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFFLFdBQVcsR0FBQSxFQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDdEMsWUFBQSxJQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDbkYsWUFBQSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUQsU0FBQTtBQUNMLEtBQUMsQ0FBQztBQUNOOztBQzlCQSxJQUFBLFlBQUEsa0JBQUEsWUFBQTtBQUFBLElBQUEsU0FBQSxZQUFBLEdBQUE7QUFDcUIsUUFBQSxJQUFBLENBQUEsTUFBTSxHQUFHLElBQUksR0FBRyxFQUFvQyxDQUFDO0tBeUJ6RTtBQXZCRyxJQUFBLFlBQUEsQ0FBQSxTQUFBLENBQUEsRUFBRSxHQUFGLFVBQUcsSUFBcUIsRUFBRSxRQUF1QixFQUFBO1FBQzdDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RDLFFBQUEsSUFBSSxTQUFTLEVBQUU7WUFDWCxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDbkMsZ0JBQUEsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM1QixhQUFBO0FBQ0osU0FBQTtBQUFNLGFBQUE7QUFDSCxZQUFBLFNBQVMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNwQyxTQUFBO1FBQ0QsT0FBTyxZQUFBO1lBQ0gsSUFBTSxFQUFFLEdBQUcsU0FBNEIsQ0FBQztZQUN4QyxJQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ25DLFlBQUEsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUU7QUFDWixnQkFBQSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2QixhQUFBO0FBQ0wsU0FBQyxDQUFDO0tBQ0wsQ0FBQTtJQUNELFlBQUksQ0FBQSxTQUFBLENBQUEsSUFBQSxHQUFKLFVBQUssSUFBcUIsRUFBQTs7UUFBRSxJQUFrQixJQUFBLEdBQUEsRUFBQSxDQUFBO2FBQWxCLElBQWtCLEVBQUEsR0FBQSxDQUFBLEVBQWxCLEVBQWtCLEdBQUEsU0FBQSxDQUFBLE1BQUEsRUFBbEIsRUFBa0IsRUFBQSxFQUFBO1lBQWxCLElBQWtCLENBQUEsRUFBQSxHQUFBLENBQUEsQ0FBQSxHQUFBLFNBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBQTs7QUFDMUMsUUFBQSxDQUFBLEVBQUEsR0FBQSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBRSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQSxPQUFPLENBQUMsVUFBQSxFQUFFLEVBQUE7WUFDN0IsRUFBRSxDQUFBLEtBQUEsQ0FBQSxLQUFBLENBQUEsRUFBQSxhQUFBLENBQUEsRUFBQSxFQUFBLE1BQUEsQ0FBSSxJQUFJLENBQUUsRUFBQSxLQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLFNBQUMsQ0FBQyxDQUFDO0tBQ04sQ0FBQTtJQUNMLE9BQUMsWUFBQSxDQUFBO0FBQUQsQ0FBQyxFQUFBLENBQUE7O0FDWkssU0FBVSxPQUFPLENBQUksT0FBaUMsRUFBQTtJQUN4RCxPQUFPLE1BQU0sSUFBSSxPQUFPLENBQUM7QUFDN0IsQ0FBQztBQUVLLFNBQVUsYUFBYSxDQUN6QixPQUFpQyxFQUFBO0lBRWpDLE9BQU8sWUFBWSxJQUFJLE9BQU8sQ0FBQztBQUNuQzs7Ozs7O0FDekJhLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsYUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n printWarning('warn', format, args);\n }\n }\n}\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\nvar didWarnStateUpdateForUnmountedComponent = {};\n\nfunction warnNoop(publicInstance, callerName) {\n {\n var _constructor = publicInstance.constructor;\n var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass';\n var warningKey = componentName + \".\" + callerName;\n\n if (didWarnStateUpdateForUnmountedComponent[warningKey]) {\n return;\n }\n\n error(\"Can't call %s on a component that is not yet mounted. \" + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName);\n\n didWarnStateUpdateForUnmountedComponent[warningKey] = true;\n }\n}\n/**\n * This is the abstract API for an update queue.\n */\n\n\nvar ReactNoopUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance, callback, callerName) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} Name of the calling function in the public API.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState, callback, callerName) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\nvar assign = Object.assign;\n\nvar emptyObject = {};\n\n{\n Object.freeze(emptyObject);\n}\n/**\n * Base class helpers for the updating state of a component.\n */\n\n\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n\n this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the\n // renderer.\n\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nComponent.prototype.isReactComponent = {};\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\n\nComponent.prototype.setState = function (partialState, callback) {\n if (typeof partialState !== 'object' && typeof partialState !== 'function' && partialState != null) {\n throw new Error('setState(...): takes an object of state variables to update or a ' + 'function which returns an object of state variables.');\n }\n\n this.updater.enqueueSetState(this, partialState, callback, 'setState');\n};\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\n\n\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');\n};\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\n\n\n{\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n\n var defineDeprecationWarning = function (methodName, info) {\n Object.defineProperty(Component.prototype, methodName, {\n get: function () {\n warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\n\n return undefined;\n }\n });\n };\n\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nfunction ComponentDummy() {}\n\nComponentDummy.prototype = Component.prototype;\n/**\n * Convenience component with default shallow equality check for sCU.\n */\n\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nvar pureComponentPrototype = PureComponent.prototype = new ComponentDummy();\npureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods.\n\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = true;\n\n// an immutable object with a single mutable value\nfunction createRef() {\n var refObject = {\n current: null\n };\n\n {\n Object.seal(refObject);\n }\n\n return refObject;\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n return type;\n }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n\nfunction testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, atrribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n var functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n\n // eslint-disable-next-line no-fallthrough\n }\n }\n\n return null;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function () {\n {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function () {\n {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * Create and return a new ReactElement of the given type.\n * See https://reactjs.org/docs/react-api.html#createelement\n */\n\nfunction createElement(type, config, children) {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n\n {\n warnIfStringRefCannotBeAutoConverted(config);\n }\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n var childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n\n props.children = childArray;\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n {\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n return newElement;\n}\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://reactjs.org/docs/react-api.html#cloneelement\n */\n\nfunction cloneElement(element, config, children) {\n if (element === null || element === undefined) {\n throw new Error(\"React.cloneElement(...): The argument must be a React element, but you passed \" + element + \".\");\n }\n\n var propName; // Original props are copied\n\n var props = assign({}, element.props); // Reserved names are extracted\n\n var key = element.key;\n var ref = element.ref; // Self is preserved since the owner is preserved.\n\n var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n\n var source = element._source; // Owner will be preserved, unless ref is overridden\n\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n } // Remaining properties override existing props\n\n\n var defaultProps;\n\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n var childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\nfunction isValidElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = key.replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n return '$' + escapedString;\n}\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\n\nvar didWarnAboutMaps = false;\nvar userProvidedKeyEscapeRegex = /\\/+/g;\n\nfunction escapeUserProvidedKey(text) {\n return text.replace(userProvidedKeyEscapeRegex, '$&/');\n}\n/**\n * Generate a key string that identifies a element within a set.\n *\n * @param {*} element A element that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\n\n\nfunction getElementKey(element, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (typeof element === 'object' && element !== null && element.key != null) {\n // Explicit key\n {\n checkKeyStringCoercion(element.key);\n }\n\n return escape('' + element.key);\n } // Implicit key determined by the index in the set\n\n\n return index.toString(36);\n}\n\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n var invokeCallback = false;\n\n if (children === null) {\n invokeCallback = true;\n } else {\n switch (type) {\n case 'string':\n case 'number':\n invokeCallback = true;\n break;\n\n case 'object':\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = true;\n }\n\n }\n }\n\n if (invokeCallback) {\n var _child = children;\n var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows:\n\n var childKey = nameSoFar === '' ? SEPARATOR + getElementKey(_child, 0) : nameSoFar;\n\n if (isArray(mappedChild)) {\n var escapedChildKey = '';\n\n if (childKey != null) {\n escapedChildKey = escapeUserProvidedKey(childKey) + '/';\n }\n\n mapIntoArray(mappedChild, array, escapedChildKey, '', function (c) {\n return c;\n });\n } else if (mappedChild != null) {\n if (isValidElement(mappedChild)) {\n {\n // The `if` statement here prevents auto-disabling of the safe\n // coercion ESLint rule, so we must manually disable it below.\n // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n if (mappedChild.key && (!_child || _child.key !== mappedChild.key)) {\n checkKeyStringCoercion(mappedChild.key);\n }\n }\n\n mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n escapedPrefix + ( // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n mappedChild.key && (!_child || _child.key !== mappedChild.key) ? // $FlowFixMe Flow incorrectly thinks existing element's key can be a number\n // eslint-disable-next-line react-internal/safe-string-coercion\n escapeUserProvidedKey('' + mappedChild.key) + '/' : '') + childKey);\n }\n\n array.push(mappedChild);\n }\n\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getElementKey(child, i);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n\n if (typeof iteratorFn === 'function') {\n var iterableChildren = children;\n\n {\n // Warn about using Maps as children\n if (iteratorFn === iterableChildren.entries) {\n if (!didWarnAboutMaps) {\n warn('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.');\n }\n\n didWarnAboutMaps = true;\n }\n }\n\n var iterator = iteratorFn.call(iterableChildren);\n var step;\n var ii = 0;\n\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getElementKey(child, ii++);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else if (type === 'object') {\n // eslint-disable-next-line react-internal/safe-string-coercion\n var childrenString = String(children);\n throw new Error(\"Objects are not valid as a React child (found: \" + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + \"). \" + 'If you meant to render a collection of children, use an array ' + 'instead.');\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenmap\n *\n * The provided mapFunction(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n\n var result = [];\n var count = 0;\n mapIntoArray(children, result, '', '', function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrencount\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\n\n\nfunction countChildren(children) {\n var n = 0;\n mapChildren(children, function () {\n n++; // Don't return anything\n });\n return n;\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenforeach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n mapChildren(children, function () {\n forEachFunc.apply(this, arguments); // Don't return anything.\n }, forEachContext);\n}\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrentoarray\n */\n\n\nfunction toArray(children) {\n return mapChildren(children, function (child) {\n return child;\n }) || [];\n}\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenonly\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\n\n\nfunction onlyChild(children) {\n if (!isValidElement(children)) {\n throw new Error('React.Children.only expected to receive a single React element child.');\n }\n\n return children;\n}\n\nfunction createContext(defaultValue) {\n // TODO: Second argument used to be an optional `calculateChangedBits`\n // function. Warn to reserve for future use?\n var context = {\n $$typeof: REACT_CONTEXT_TYPE,\n // As a workaround to support multiple concurrent renderers, we categorize\n // some renderers as primary and others as secondary. We only expect\n // there to be two concurrent renderers at most: React Native (primary) and\n // Fabric (secondary); React DOM (primary) and React ART (secondary).\n // Secondary renderers store their context values on separate fields.\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n // Used to track how many concurrent renderers this context currently\n // supports within in a single renderer. Such as parallel server rendering.\n _threadCount: 0,\n // These are circular\n Provider: null,\n Consumer: null,\n // Add these to use same hidden class in VM as ServerContext\n _defaultValue: null,\n _globalName: null\n };\n context.Provider = {\n $$typeof: REACT_PROVIDER_TYPE,\n _context: context\n };\n var hasWarnedAboutUsingNestedContextConsumers = false;\n var hasWarnedAboutUsingConsumerProvider = false;\n var hasWarnedAboutDisplayNameOnConsumer = false;\n\n {\n // A separate object, but proxies back to the original context object for\n // backwards compatibility. It has a different $$typeof, so we can properly\n // warn for the incorrect usage of Context as a Consumer.\n var Consumer = {\n $$typeof: REACT_CONTEXT_TYPE,\n _context: context\n }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here\n\n Object.defineProperties(Consumer, {\n Provider: {\n get: function () {\n if (!hasWarnedAboutUsingConsumerProvider) {\n hasWarnedAboutUsingConsumerProvider = true;\n\n error('Rendering is not supported and will be removed in ' + 'a future major release. Did you mean to render instead?');\n }\n\n return context.Provider;\n },\n set: function (_Provider) {\n context.Provider = _Provider;\n }\n },\n _currentValue: {\n get: function () {\n return context._currentValue;\n },\n set: function (_currentValue) {\n context._currentValue = _currentValue;\n }\n },\n _currentValue2: {\n get: function () {\n return context._currentValue2;\n },\n set: function (_currentValue2) {\n context._currentValue2 = _currentValue2;\n }\n },\n _threadCount: {\n get: function () {\n return context._threadCount;\n },\n set: function (_threadCount) {\n context._threadCount = _threadCount;\n }\n },\n Consumer: {\n get: function () {\n if (!hasWarnedAboutUsingNestedContextConsumers) {\n hasWarnedAboutUsingNestedContextConsumers = true;\n\n error('Rendering is not supported and will be removed in ' + 'a future major release. Did you mean to render instead?');\n }\n\n return context.Consumer;\n }\n },\n displayName: {\n get: function () {\n return context.displayName;\n },\n set: function (displayName) {\n if (!hasWarnedAboutDisplayNameOnConsumer) {\n warn('Setting `displayName` on Context.Consumer has no effect. ' + \"You should set it directly on the context with Context.displayName = '%s'.\", displayName);\n\n hasWarnedAboutDisplayNameOnConsumer = true;\n }\n }\n }\n }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty\n\n context.Consumer = Consumer;\n }\n\n {\n context._currentRenderer = null;\n context._currentRenderer2 = null;\n }\n\n return context;\n}\n\nvar Uninitialized = -1;\nvar Pending = 0;\nvar Resolved = 1;\nvar Rejected = 2;\n\nfunction lazyInitializer(payload) {\n if (payload._status === Uninitialized) {\n var ctor = payload._result;\n var thenable = ctor(); // Transition to the next state.\n // This might throw either because it's missing or throws. If so, we treat it\n // as still uninitialized and try again next time. Which is the same as what\n // happens if the ctor or any wrappers processing the ctor throws. This might\n // end up fixing it if the resolution was a concurrency bug.\n\n thenable.then(function (moduleObject) {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n var resolved = payload;\n resolved._status = Resolved;\n resolved._result = moduleObject;\n }\n }, function (error) {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n var rejected = payload;\n rejected._status = Rejected;\n rejected._result = error;\n }\n });\n\n if (payload._status === Uninitialized) {\n // In case, we're still uninitialized, then we're waiting for the thenable\n // to resolve. Set it as pending in the meantime.\n var pending = payload;\n pending._status = Pending;\n pending._result = thenable;\n }\n }\n\n if (payload._status === Resolved) {\n var moduleObject = payload._result;\n\n {\n if (moduleObject === undefined) {\n error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n ' + // Break up imports to avoid accidentally parsing them as dependencies.\n 'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\\n\\n\" + 'Did you accidentally put curly braces around the import?', moduleObject);\n }\n }\n\n {\n if (!('default' in moduleObject)) {\n error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n ' + // Break up imports to avoid accidentally parsing them as dependencies.\n 'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\", moduleObject);\n }\n }\n\n return moduleObject.default;\n } else {\n throw payload._result;\n }\n}\n\nfunction lazy(ctor) {\n var payload = {\n // We use these fields to store the result.\n _status: Uninitialized,\n _result: ctor\n };\n var lazyType = {\n $$typeof: REACT_LAZY_TYPE,\n _payload: payload,\n _init: lazyInitializer\n };\n\n {\n // In production, this would just set it on the object.\n var defaultProps;\n var propTypes; // $FlowFixMe\n\n Object.defineProperties(lazyType, {\n defaultProps: {\n configurable: true,\n get: function () {\n return defaultProps;\n },\n set: function (newDefaultProps) {\n error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n defaultProps = newDefaultProps; // Match production behavior more closely:\n // $FlowFixMe\n\n Object.defineProperty(lazyType, 'defaultProps', {\n enumerable: true\n });\n }\n },\n propTypes: {\n configurable: true,\n get: function () {\n return propTypes;\n },\n set: function (newPropTypes) {\n error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n propTypes = newPropTypes; // Match production behavior more closely:\n // $FlowFixMe\n\n Object.defineProperty(lazyType, 'propTypes', {\n enumerable: true\n });\n }\n }\n });\n }\n\n return lazyType;\n}\n\nfunction forwardRef(render) {\n {\n if (render != null && render.$$typeof === REACT_MEMO_TYPE) {\n error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).');\n } else if (typeof render !== 'function') {\n error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render);\n } else {\n if (render.length !== 0 && render.length !== 2) {\n error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.');\n }\n }\n\n if (render != null) {\n if (render.defaultProps != null || render.propTypes != null) {\n error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?');\n }\n }\n }\n\n var elementType = {\n $$typeof: REACT_FORWARD_REF_TYPE,\n render: render\n };\n\n {\n var ownName;\n Object.defineProperty(elementType, 'displayName', {\n enumerable: false,\n configurable: true,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name; // The inner component shouldn't inherit this display name in most cases,\n // because the component may be used elsewhere.\n // But it's nice for anonymous functions to inherit the name,\n // so that our component-stack generation logic will display their frames.\n // An anonymous function generally suggests a pattern like:\n // React.forwardRef((props, ref) => {...});\n // This kind of inner function is not used elsewhere so the side effect is okay.\n\n if (!render.name && !render.displayName) {\n render.displayName = name;\n }\n }\n });\n }\n\n return elementType;\n}\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction memo(type, compare) {\n {\n if (!isValidElementType(type)) {\n error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type);\n }\n }\n\n var elementType = {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: compare === undefined ? null : compare\n };\n\n {\n var ownName;\n Object.defineProperty(elementType, 'displayName', {\n enumerable: false,\n configurable: true,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name; // The inner component shouldn't inherit this display name in most cases,\n // because the component may be used elsewhere.\n // But it's nice for anonymous functions to inherit the name,\n // so that our component-stack generation logic will display their frames.\n // An anonymous function generally suggests a pattern like:\n // React.memo((props) => {...});\n // This kind of inner function is not used elsewhere so the side effect is okay.\n\n if (!type.name && !type.displayName) {\n type.displayName = name;\n }\n }\n });\n }\n\n return elementType;\n}\n\nfunction resolveDispatcher() {\n var dispatcher = ReactCurrentDispatcher.current;\n\n {\n if (dispatcher === null) {\n error('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for' + ' one of the following reasons:\\n' + '1. You might have mismatching versions of React and the renderer (such as React DOM)\\n' + '2. You might be breaking the Rules of Hooks\\n' + '3. You might have more than one copy of React in the same app\\n' + 'See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.');\n }\n } // Will result in a null access error if accessed outside render phase. We\n // intentionally don't throw our own error because this is in a hot path.\n // Also helps ensure this is inlined.\n\n\n return dispatcher;\n}\nfunction useContext(Context) {\n var dispatcher = resolveDispatcher();\n\n {\n // TODO: add a more generic warning for invalid values.\n if (Context._context !== undefined) {\n var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs\n // and nobody should be using this in existing code.\n\n if (realContext.Consumer === Context) {\n error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?');\n } else if (realContext.Provider === Context) {\n error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?');\n }\n }\n }\n\n return dispatcher.useContext(Context);\n}\nfunction useState(initialState) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useState(initialState);\n}\nfunction useReducer(reducer, initialArg, init) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useReducer(reducer, initialArg, init);\n}\nfunction useRef(initialValue) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useRef(initialValue);\n}\nfunction useEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useEffect(create, deps);\n}\nfunction useInsertionEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useInsertionEffect(create, deps);\n}\nfunction useLayoutEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useLayoutEffect(create, deps);\n}\nfunction useCallback(callback, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useCallback(callback, deps);\n}\nfunction useMemo(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useMemo(create, deps);\n}\nfunction useImperativeHandle(ref, create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useImperativeHandle(ref, create, deps);\n}\nfunction useDebugValue(value, formatterFn) {\n {\n var dispatcher = resolveDispatcher();\n return dispatcher.useDebugValue(value, formatterFn);\n }\n}\nfunction useTransition() {\n var dispatcher = resolveDispatcher();\n return dispatcher.useTransition();\n}\nfunction useDeferredValue(value) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useDeferredValue(value);\n}\nfunction useId() {\n var dispatcher = resolveDispatcher();\n return dispatcher.useId();\n}\nfunction useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if ( !fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher$1.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher$1.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n\n if (fn.displayName && _frame.includes('')) {\n _frame = _frame.replace('', fn.displayName);\n }\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher$1.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n setExtraStackFrame(stack);\n } else {\n setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n\nfunction getDeclarationErrorAddendum() {\n if (ReactCurrentOwner.current) {\n var name = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n}\n\nfunction getSourceInfoErrorAddendumForProps(elementProps) {\n if (elementProps !== null && elementProps !== undefined) {\n return getSourceInfoErrorAddendum(elementProps.__source);\n }\n\n return '';\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n\n {\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n if (typeof node !== 'object') {\n return;\n }\n\n if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentNameFromType(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\nfunction createElementWithValidation(type, props, children) {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendumForProps(props);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n {\n error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n }\n\n var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], type);\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n}\nvar didWarnAboutDeprecatedCreateFactory = false;\nfunction createFactoryWithValidation(type) {\n var validatedFactory = createElementWithValidation.bind(null, type);\n validatedFactory.type = type;\n\n {\n if (!didWarnAboutDeprecatedCreateFactory) {\n didWarnAboutDeprecatedCreateFactory = true;\n\n warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.');\n } // Legacy hook: remove it\n\n\n Object.defineProperty(validatedFactory, 'type', {\n enumerable: false,\n get: function () {\n warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');\n\n Object.defineProperty(this, 'type', {\n value: type\n });\n return type;\n }\n });\n }\n\n return validatedFactory;\n}\nfunction cloneElementWithValidation(element, props, children) {\n var newElement = cloneElement.apply(this, arguments);\n\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], newElement.type);\n }\n\n validatePropTypes(newElement);\n return newElement;\n}\n\nfunction startTransition(scope, options) {\n var prevTransition = ReactCurrentBatchConfig.transition;\n ReactCurrentBatchConfig.transition = {};\n var currentTransition = ReactCurrentBatchConfig.transition;\n\n {\n ReactCurrentBatchConfig.transition._updatedFibers = new Set();\n }\n\n try {\n scope();\n } finally {\n ReactCurrentBatchConfig.transition = prevTransition;\n\n {\n if (prevTransition === null && currentTransition._updatedFibers) {\n var updatedFibersCount = currentTransition._updatedFibers.size;\n\n if (updatedFibersCount > 10) {\n warn('Detected a large number of updates inside startTransition. ' + 'If this is due to a subscription please re-write it to use React provided hooks. ' + 'Otherwise concurrent mode guarantees are off the table.');\n }\n\n currentTransition._updatedFibers.clear();\n }\n }\n }\n}\n\nvar didWarnAboutMessageChannel = false;\nvar enqueueTaskImpl = null;\nfunction enqueueTask(task) {\n if (enqueueTaskImpl === null) {\n try {\n // read require off the module object to get around the bundlers.\n // we don't want them to detect a require and bundle a Node polyfill.\n var requireString = ('require' + Math.random()).slice(0, 7);\n var nodeRequire = module && module[requireString]; // assuming we're in node, let's try to get node's\n // version of setImmediate, bypassing fake timers if any.\n\n enqueueTaskImpl = nodeRequire.call(module, 'timers').setImmediate;\n } catch (_err) {\n // we're in a browser\n // we can't use regular timers because they may still be faked\n // so we try MessageChannel+postMessage instead\n enqueueTaskImpl = function (callback) {\n {\n if (didWarnAboutMessageChannel === false) {\n didWarnAboutMessageChannel = true;\n\n if (typeof MessageChannel === 'undefined') {\n error('This browser does not have a MessageChannel implementation, ' + 'so enqueuing tasks via await act(async () => ...) will fail. ' + 'Please file an issue at https://github.com/facebook/react/issues ' + 'if you encounter this warning.');\n }\n }\n }\n\n var channel = new MessageChannel();\n channel.port1.onmessage = callback;\n channel.port2.postMessage(undefined);\n };\n }\n }\n\n return enqueueTaskImpl(task);\n}\n\nvar actScopeDepth = 0;\nvar didWarnNoAwaitAct = false;\nfunction act(callback) {\n {\n // `act` calls can be nested, so we track the depth. This represents the\n // number of `act` scopes on the stack.\n var prevActScopeDepth = actScopeDepth;\n actScopeDepth++;\n\n if (ReactCurrentActQueue.current === null) {\n // This is the outermost `act` scope. Initialize the queue. The reconciler\n // will detect the queue and use it instead of Scheduler.\n ReactCurrentActQueue.current = [];\n }\n\n var prevIsBatchingLegacy = ReactCurrentActQueue.isBatchingLegacy;\n var result;\n\n try {\n // Used to reproduce behavior of `batchedUpdates` in legacy mode. Only\n // set to `true` while the given callback is executed, not for updates\n // triggered during an async event, because this is how the legacy\n // implementation of `act` behaved.\n ReactCurrentActQueue.isBatchingLegacy = true;\n result = callback(); // Replicate behavior of original `act` implementation in legacy mode,\n // which flushed updates immediately after the scope function exits, even\n // if it's an async function.\n\n if (!prevIsBatchingLegacy && ReactCurrentActQueue.didScheduleLegacyUpdate) {\n var queue = ReactCurrentActQueue.current;\n\n if (queue !== null) {\n ReactCurrentActQueue.didScheduleLegacyUpdate = false;\n flushActQueue(queue);\n }\n }\n } catch (error) {\n popActScope(prevActScopeDepth);\n throw error;\n } finally {\n ReactCurrentActQueue.isBatchingLegacy = prevIsBatchingLegacy;\n }\n\n if (result !== null && typeof result === 'object' && typeof result.then === 'function') {\n var thenableResult = result; // The callback is an async function (i.e. returned a promise). Wait\n // for it to resolve before exiting the current scope.\n\n var wasAwaited = false;\n var thenable = {\n then: function (resolve, reject) {\n wasAwaited = true;\n thenableResult.then(function (returnValue) {\n popActScope(prevActScopeDepth);\n\n if (actScopeDepth === 0) {\n // We've exited the outermost act scope. Recursively flush the\n // queue until there's no remaining work.\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n } else {\n resolve(returnValue);\n }\n }, function (error) {\n // The callback threw an error.\n popActScope(prevActScopeDepth);\n reject(error);\n });\n }\n };\n\n {\n if (!didWarnNoAwaitAct && typeof Promise !== 'undefined') {\n // eslint-disable-next-line no-undef\n Promise.resolve().then(function () {}).then(function () {\n if (!wasAwaited) {\n didWarnNoAwaitAct = true;\n\n error('You called act(async () => ...) without await. ' + 'This could lead to unexpected testing behaviour, ' + 'interleaving multiple act calls and mixing their ' + 'scopes. ' + 'You should - await act(async () => ...);');\n }\n });\n }\n }\n\n return thenable;\n } else {\n var returnValue = result; // The callback is not an async function. Exit the current scope\n // immediately, without awaiting.\n\n popActScope(prevActScopeDepth);\n\n if (actScopeDepth === 0) {\n // Exiting the outermost act scope. Flush the queue.\n var _queue = ReactCurrentActQueue.current;\n\n if (_queue !== null) {\n flushActQueue(_queue);\n ReactCurrentActQueue.current = null;\n } // Return a thenable. If the user awaits it, we'll flush again in\n // case additional work was scheduled by a microtask.\n\n\n var _thenable = {\n then: function (resolve, reject) {\n // Confirm we haven't re-entered another `act` scope, in case\n // the user does something weird like await the thenable\n // multiple times.\n if (ReactCurrentActQueue.current === null) {\n // Recursively flush the queue until there's no remaining work.\n ReactCurrentActQueue.current = [];\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n } else {\n resolve(returnValue);\n }\n }\n };\n return _thenable;\n } else {\n // Since we're inside a nested `act` scope, the returned thenable\n // immediately resolves. The outer scope will flush the queue.\n var _thenable2 = {\n then: function (resolve, reject) {\n resolve(returnValue);\n }\n };\n return _thenable2;\n }\n }\n }\n}\n\nfunction popActScope(prevActScopeDepth) {\n {\n if (prevActScopeDepth !== actScopeDepth - 1) {\n error('You seem to have overlapping act() calls, this is not supported. ' + 'Be sure to await previous act() calls before making a new one. ');\n }\n\n actScopeDepth = prevActScopeDepth;\n }\n}\n\nfunction recursivelyFlushAsyncActWork(returnValue, resolve, reject) {\n {\n var queue = ReactCurrentActQueue.current;\n\n if (queue !== null) {\n try {\n flushActQueue(queue);\n enqueueTask(function () {\n if (queue.length === 0) {\n // No additional work was scheduled. Finish.\n ReactCurrentActQueue.current = null;\n resolve(returnValue);\n } else {\n // Keep flushing work until there's none left.\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n }\n });\n } catch (error) {\n reject(error);\n }\n } else {\n resolve(returnValue);\n }\n }\n}\n\nvar isFlushing = false;\n\nfunction flushActQueue(queue) {\n {\n if (!isFlushing) {\n // Prevent re-entrance.\n isFlushing = true;\n var i = 0;\n\n try {\n for (; i < queue.length; i++) {\n var callback = queue[i];\n\n do {\n callback = callback(true);\n } while (callback !== null);\n }\n\n queue.length = 0;\n } catch (error) {\n // If something throws, leave the remaining callbacks on the queue.\n queue = queue.slice(i + 1);\n throw error;\n } finally {\n isFlushing = false;\n }\n }\n }\n}\n\nvar createElement$1 = createElementWithValidation ;\nvar cloneElement$1 = cloneElementWithValidation ;\nvar createFactory = createFactoryWithValidation ;\nvar Children = {\n map: mapChildren,\n forEach: forEachChildren,\n count: countChildren,\n toArray: toArray,\n only: onlyChild\n};\n\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;\nexports.cloneElement = cloneElement$1;\nexports.createContext = createContext;\nexports.createElement = createElement$1;\nexports.createFactory = createFactory;\nexports.createRef = createRef;\nexports.forwardRef = forwardRef;\nexports.isValidElement = isValidElement;\nexports.lazy = lazy;\nexports.memo = memo;\nexports.startTransition = startTransition;\nexports.unstable_act = act;\nexports.useCallback = useCallback;\nexports.useContext = useContext;\nexports.useDebugValue = useDebugValue;\nexports.useDeferredValue = useDeferredValue;\nexports.useEffect = useEffect;\nexports.useId = useId;\nexports.useImperativeHandle = useImperativeHandle;\nexports.useInsertionEffect = useInsertionEffect;\nexports.useLayoutEffect = useLayoutEffect;\nexports.useMemo = useMemo;\nexports.useReducer = useReducer;\nexports.useRef = useRef;\nexports.useState = useState;\nexports.useSyncExternalStore = useSyncExternalStore;\nexports.useTransition = useTransition;\nexports.version = ReactVersion;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","function t(t){for(var n=arguments.length,i=new Array(n>1?n-1:0),r=1;rt.length)&&(n=t.length);for(var i=0,r=new Array(n);i=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}function A(t){return Object.assign((function(n,i){g(n,i,t)}),t)}function g(t,n,i){b(t,Kn)||a(t,Kn,m({},t[Kn])),function(t){return\"override\"===t.t}(i)||(t[Kn][n]=i)}function _(t,n,i){void 0===n&&(n=Rn),void 0===i&&(i=Rn);var r=new In(t);return n!==Rn&&St(r,n),i!==Rn&&Mt(r,i),r}function S(t,n,i){return It(t)?t:Array.isArray(t)?Jn.array(t,{name:i}):s(t)?Jn.object(t,void 0,{name:i}):v(t)?Jn.map(t,{name:i}):l(t)?Jn.set(t,{name:i}):\"function\"!=typeof t||At(t)||Ct(t)?t:f(t)?Ri(t):Si(i,t)}function M(t){return t}function N(t,n){return{t:t,i:n,o:E,u:V}}function E(t,n,i,r){var e;if(null!=(e=this.i)&&e.bound)return null===this.u(t,n,i,!1)?0:1;if(r===t.s)return null===this.u(t,n,i,!1)?0:2;if(At(i.value))return 1;var o=R(t,this,n,i,!1);return _n(r,n,o),2}function V(t,n,i,r){var e=R(t,this,n,i);return t.h(n,e,r)}function R(t,n,i,r,e){var o,u,s,f,a,c,h;void 0===e&&(e=yi.safeDescriptors);var v,l=r.value;return null!=(o=n.i)&&o.bound&&(l=l.bind(null!=(v=t.v)?v:t.s)),{value:z(null!=(u=null==(s=n.i)?void 0:s.name)?u:i.toString(),l,null!=(f=null==(a=n.i)?void 0:a.autoAction)&&f,null!=(c=n.i)&&c.bound?null!=(h=t.v)?h:t.s:void 0),configurable:!e||t.l,enumerable:!1,writable:!e}}function T(t,n){return{t:t,i:n,o:k,u:C}}function k(t,n,i,r){var e;if(r===t.s)return null===this.u(t,n,i,!1)?0:2;if(null!=(e=this.i)&&e.bound&&(!b(t.s,n)||!Ct(t.s[n]))&&null===this.u(t,n,i,!1))return 0;if(Ct(i.value))return 1;var o=K(t,0,0,i,!1,!1);return _n(r,n,o),2}function C(t,n,i,r){var e,o=K(t,0,0,i,null==(e=this.i)?void 0:e.bound);return t.h(n,o,r)}function K(t,n,i,r,e,o){void 0===o&&(o=yi.safeDescriptors);var u,s=r.value;return Ct(s)||(s=Ri(s)),e&&((s=s.bind(null!=(u=t.v)?u:t.s)).isMobXFlow=!0),{value:s,configurable:!o||t.l,enumerable:!1,writable:!o}}function L(t,n){return{t:t,i:n,o:I,u:P}}function I(t,n,i){return null===this.u(t,n,i,!1)?0:1}function P(t,n,i,r){return t.p(n,m({},this.i,{get:i.get,set:i.set}),r)}function D(t,n){return{t:t,i:n,o:B,u:q}}function B(t,n,i){return null===this.u(t,n,i,!1)?0:1}function q(t,n,i,r){var e,o;return t.m(n,i.value,null!=(e=null==(o=this.i)?void 0:o.enhancer)?e:S,r)}function G(t){return{t:\"true\",i:t,o:W,u:H}}function W(t,n,i,r){var e,o,u,s;if(i.get)return Zn.o(t,n,i,r);if(i.set){var a=z(n.toString(),i.set);return r===t.s?null===t.h(n,{configurable:!yi.safeDescriptors||t.l,set:a})?0:2:(_n(r,n,{configurable:!0,set:a}),2)}if(r!==t.s&&\"function\"==typeof i.value)return f(i.value)?(null!=(s=this.i)&&s.autoBind?Ri.bound:Ri).o(t,n,i,r):(null!=(u=this.i)&&u.autoBind?Si.bound:Si).o(t,n,i,r);var c,h=!1===(null==(e=this.i)?void 0:e.deep)?Jn.ref:Jn;return\"function\"==typeof i.value&&null!=(o=this.i)&&o.autoBind&&(i.value=i.value.bind(null!=(c=t.v)?c:t.s)),h.o(t,n,i,r)}function H(t,n,i,r){var e,o,u;return i.get?Zn.u(t,n,i,r):i.set?t.h(n,{configurable:!yi.safeDescriptors||t.l,set:z(n.toString(),i.set)},r):(\"function\"==typeof i.value&&null!=(e=this.i)&&e.autoBind&&(i.value=i.value.bind(null!=(u=t.v)?u:t.s)),(!1===(null==(o=this.i)?void 0:o.deep)?Jn.ref:Jn).u(t,n,i,r))}function X(t){return t||Gn}function U(t){return!0===t.deep?S:!1===t.deep?M:(n=t.defaultDecorator)&&null!=(i=null==(r=n.i)?void 0:r.enhancer)?i:S;var n,i,r}function F(t,n,i){if(!o(n))return It(t)?t:s(t)?Jn.object(t,n,i):Array.isArray(t)?Jn.array(t,n):v(t)?Jn.map(t,n):l(t)?Jn.set(t,n):\"object\"==typeof t&&null!==t?t:Jn.box(t,n);g(t,n,Wn)}function z(t,n,i,r){function e(){return $(0,i,n,r||this,arguments)}return void 0===i&&(i=!1),e.isMobxAction=!0,ri&&(ei.value=t,_n(e,\"name\",ei)),e}function $(t,n,i,r,e){var o=J(0,n);try{return i.apply(r,e)}catch(t){throw o.j=t,t}finally{Y(o)}}function J(t,n){var i=yi.trackingDerivation,r=!n||!i;dt();var e=yi.allowStateChanges;r&&(ut(),e=Z(!0));var o={O:r,A:i,g:e,_:ft(!0),S:!1,M:0,N:ii++,V:ni};return ni=o.N,o}function Y(n){ni!==n.N&&t(30),ni=n.V,void 0!==n.j&&(yi.suppressReactionErrors=!0),tt(n.g),at(n._),bt(),n.O&&st(n.A),yi.suppressReactionErrors=!1}function Q(t,n){var i=Z(t);try{return n()}finally{tt(i)}}function Z(t){var n=yi.allowStateChanges;return yi.allowStateChanges=t,n}function tt(t){yi.allowStateChanges=t}function nt(t){return t instanceof vi}function it(t){switch(t.R){case fi.T:return!1;case fi.k:case fi.C:return!0;case fi.K:for(var n=ft(!0),i=ut(),r=t.L,e=r.length,o=0;or&&(r=s.R)}for(i.length=e,t.I=null,o=n.length;o--;){var f=n[o];0===f.B&&vt(f,t),f.B=0}for(;e--;){var a=i[e];1===a.B&&(a.B=0,ht(a,t))}r!==fi.T&&(t.R=r,t.q())}(t),at(r),e}function et(t){var n=t.L;t.L=[];for(var i=n.length;i--;)vt(n[i],t);t.R=fi.k}function ot(t){var n=ut();try{return t()}finally{st(n)}}function ut(){var t=yi.trackingDerivation;return yi.trackingDerivation=null,t}function st(t){yi.trackingDerivation=t}function ft(t){var n=yi.allowStateReads;return yi.allowStateReads=t,n}function at(t){yi.allowStateReads=t}function ct(t){if(t.R!==fi.T){t.R=fi.T;for(var n=t.L,i=n.length;i--;)n[i].G=fi.T}}function ht(t,n){t.W.add(n),t.G>n.R&&(t.G=n.R)}function vt(t,n){t.W.delete(n),0===t.W.size&<(t)}function lt(t){!1===t.H&&(t.H=!0,yi.pendingUnobservations.push(t))}function dt(){yi.inBatch++}function bt(){if(0==--yi.inBatch){mt();for(var t=yi.pendingUnobservations,n=0;n0&<(t),!1)}function yt(t){t.G!==fi.C&&(t.G=fi.C,t.W.forEach((function(t){t.R===fi.T&&t.q(),t.R=fi.C})))}function mt(){yi.inBatch>0||yi.isRunningReactions||wi(wt)}function wt(){yi.isRunningReactions=!0;for(var t=yi.pendingReactions,n=0;t.length>0;){100==++n&&(console.error(\"[mobx] cycle in reaction: \"+t[0]),t.splice(0));for(var i=t.splice(0),r=0,e=i.length;r\",n,t):e(i)?z(n,i,t):o(i)?g(n,i,t?Ai:Oi):o(n)?A(N(t?\"autoAction\":\"action\",{name:n,autoAction:t})):void 0}}function xt(t){return $(0,!1,t,this,void 0)}function At(t){return e(t)&&!0===t.isMobxAction}function gt(t,n){function i(){t(o)}var r,e;void 0===n&&(n=Nn);var o,u=null!=(r=null==(e=n)?void 0:e.name)?r:\"Autorun\";if(n.scheduler||n.delay){var s=_t(n),f=!1;o=new mi(u,(function(){f||(f=!0,s((function(){f=!1,o.J||o.track(i)})))}),n.onError,n.requiresObservable)}else o=new mi(u,(function(){this.track(i)}),n.onError,n.requiresObservable);return o.Y(),o.Z()}function _t(t){return t.scheduler?t.scheduler:t.delay?function(n){return setTimeout(n,t.delay)}:Mi}function St(t,n,i){return Nt(\"onBO\",t,n,i)}function Mt(t,n,i){return Nt(\"onBUO\",t,n,i)}function Nt(t,n,i,r){var o=\"function\"==typeof r?bn(n,i):bn(n),u=e(r)?r:i,s=t+\"L\";return o[s]?o[s].add(u):o[s]=new Set([u]),function(){var t=o[s];t&&(t.delete(u),0===t.size&&delete o[s])}}function Et(t,n,i,r){var e=Cn(n),o=sn(t,r)[Ln];dt();try{kn(e).forEach((function(t){o.u(t,e[t],!i||!(t in i)||i[t])}))}finally{bt()}return t}function Vt(t){var n,i={name:t.tt};return t.L&&t.L.length>0&&(i.dependencies=(n=t.L,Array.from(new Set(n))).map(Vt)),i}function Rt(t){var n={name:t.tt};return function(t){return t.W&&t.W.size>0}(t)&&(n.observers=Array.from(function(t){return t.W}(t)).map(Rt)),n}function Tt(){this.message=\"FLOW_CANCELLED\"}function kt(t){e(t.cancel)&&t.cancel()}function Ct(t){return!0===(null==t?void 0:t.isMobXFlow)}function Kt(t,n){if(void 0===n)return hi(t);if(!1===an(t))return!1;if(!t[Ln].nt.has(n))return!1;var i=bn(t,n);return hi(i)}function Lt(t,n){return!!t&&(void 0!==n?!!an(t)&&t[Ln].nt.has(n):an(t)||!!t[Ln]||Pn(t)||ji(t)||hi(t))}function It(t){return Lt(t)}function Pt(n){return an(n)?n[Ln].it():Ui(n)||Yi(n)?Array.from(n.keys()):un(n)?n.map((function(t,n){return n})):void t(5)}function Dt(n,i){return an(n)?n[Ln].rt(i):Ui(n)||Yi(n)?n.has(i):un(n)?i>=0&&i0}function $t(t,n){var i=t.ut||(t.ut=[]);return i.push(n),r((function(){var t=i.indexOf(n);-1!==t&&i.splice(t,1)}))}function Jt(n,i){var r=ut();try{for(var e=[].concat(n.ut||[]),o=0,u=e.length;o0}function Qt(t,n){var i=t.st||(t.st=[]);return i.push(n),r((function(){var t=i.indexOf(n);-1!==t&&i.splice(t,1)}))}function Zt(t,n){var i=ut(),r=t.st;if(r){for(var e=0,o=(r=r.slice()).length;eir){for(var n=ir;n=0&&r++}n=wn(n),i=wn(i);var a=\"[object Array]\"===f;if(!a){if(\"object\"!=typeof n||\"object\"!=typeof i)return!1;var c=n.constructor,h=i.constructor;if(c!==h&&!(e(c)&&c instanceof c&&e(h)&&h instanceof h)&&\"constructor\"in n&&\"constructor\"in i)return!1}if(0===r)return!1;r<0&&(r=-1),u=u||[];for(var v=(o=o||[]).length;v--;)if(o[v]===n)return u[v]===i;if(o.push(n),u.push(i),a){if((v=n.length)!==i.length)return!1;for(;v--;)if(!t(n[v],i[v],r-1,o,u))return!1}else{var l,d=Object.keys(n);if(v=d.length,Object.keys(i).length!==v)return!1;for(;v--;)if(!b(i,l=d[v])||!t(n[l],i[l],r-1,o,u))return!1}return o.pop(),u.pop(),!0}(t,n,i)}function wn(t){return un(t)?t.slice():v(t)||Ui(t)||l(t)||Yi(t)?Array.from(t.entries()):t}function jn(t){return t[Symbol.iterator]=On,t}function On(){return this}Object.defineProperty(exports,\"__esModule\",{value:!0});var xn={},An=Object.assign,gn=Object.getOwnPropertyDescriptor,_n=Object.defineProperty,Sn=Object.prototype,Mn=[];Object.freeze(Mn);var Nn={};Object.freeze(Nn);var En=\"undefined\"!=typeof Proxy,Vn=Object.toString(),Rn=function(){},Tn=void 0!==Object.getOwnPropertySymbols,kn=\"undefined\"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:Tn?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Object.getOwnPropertyNames,Cn=Object.getOwnPropertyDescriptors||function(t){var n={};return kn(t).forEach((function(i){n[i]=gn(t,i)})),n},Kn=Symbol(\"mobx-stored-annotations\"),Ln=Symbol(\"mobx administration\"),In=function(){function t(t){void 0===t&&(t=\"Atom\"),this.tt=void 0,this.H=!1,this.X=!1,this.W=new Set,this.B=0,this.F=0,this.G=fi.k,this.onBOL=void 0,this.onBUOL=void 0,this.tt=t}var n=t.prototype;return n.onBO=function(){this.onBOL&&this.onBOL.forEach((function(t){return t()}))},n.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(t){return t()}))},n.reportObserved=function(){return pt(this)},n.reportChanged=function(){dt(),yt(this),yi.stateVersion=yi.stateVersion0&&!i.__mobxGlobals&&(bi=!1),i.__mobxGlobals&&i.__mobxGlobals.version!==(new di).version&&(bi=!1),bi?i.__mobxGlobals?(i.__mobxInstanceCount+=1,i.__mobxGlobals.UNCHANGED||(i.__mobxGlobals.UNCHANGED={}),i.__mobxGlobals):(i.__mobxInstanceCount=1,i.__mobxGlobals=new di):(setTimeout((function(){pi||t(35)}),1),new di)}(),mi=function(){function t(t,n,i,r){void 0===t&&(t=\"Reaction\"),this.tt=void 0,this.Kt=void 0,this.Lt=void 0,this.It=void 0,this.L=[],this.I=[],this.R=fi.k,this.B=0,this.D=0,this.P=0,this.J=!1,this.Pt=!1,this.Dt=!1,this.Bt=!1,this.ot=ai.NONE,this.tt=t,this.Kt=n,this.Lt=i,this.It=r}var n=t.prototype;return n.q=function(){this.Y()},n.Y=function(){this.Pt||(this.Pt=!0,yi.pendingReactions.push(this),mt())},n.isScheduled=function(){return this.Pt},n.$=function(){if(!this.J){dt(),this.Pt=!1;var t=yi.trackingContext;if(yi.trackingContext=this,it(this)){this.Dt=!0;try{this.Kt()}catch(t){this.qt(t)}}yi.trackingContext=t,bt()}},n.track=function(t){if(!this.J){dt(),this.Bt=!0;var n=yi.trackingContext;yi.trackingContext=this;var i=rt(this,t,void 0);yi.trackingContext=n,this.Bt=!1,this.Dt=!1,this.J&&et(this),nt(i)&&this.qt(i.cause),bt()}},n.qt=function(t){var n=this;if(this.Lt)this.Lt(t,this);else{if(yi.disableErrorBoundaries)throw t;yi.suppressReactionErrors||console.error(\"[mobx] uncaught error in '\"+this+\"'\",t),yi.globalReactionErrorHandlers.forEach((function(i){return i(t,n)}))}},n.dispose=function(){this.J||(this.J=!0,this.Bt||(dt(),et(this),bt()))},n.Z=function(){var t=this.dispose.bind(this);return t[Ln]=this,t},n.toString=function(){return\"Reaction[\"+this.tt+\"]\"},n.trace=function(t){void 0===t&&(t=!1),Gt(this,t)},t}(),wi=function(t){return t()},ji=h(\"Reaction\",mi),Oi=N(\"action\"),xi=N(\"action.bound\",{bound:!0}),Ai=N(\"autoAction\",{autoAction:!0}),gi=N(\"autoAction.bound\",{autoAction:!0,bound:!0}),_i=Ot(!1);Object.assign(_i,Oi);var Si=Ot(!0);Object.assign(Si,Ai),_i.bound=A(xi),Si.bound=A(gi);var Mi=function(t){return t()},Ni=0;Tt.prototype=Object.create(Error.prototype);var Ei=T(\"flow\"),Vi=T(\"flow.bound\",{bound:!0}),Ri=Object.assign((function(t,n){if(o(n))return g(t,n,Ei);var i=t,r=i.name||\"\",u=function(){var t,n=this,o=arguments,u=++Ni,s=_i(r+\" - runid: \"+u+\" - init\",i).apply(n,o),f=void 0,a=new Promise((function(n,i){function o(t){var n;f=void 0;try{n=_i(r+\" - runid: \"+u+\" - yield \"+h++,s.next).call(s,t)}catch(t){return i(t)}c(n)}function a(t){var n;f=void 0;try{n=_i(r+\" - runid: \"+u+\" - yield \"+h++,s.throw).call(s,t)}catch(t){return i(t)}c(n)}function c(t){if(!e(null==t?void 0:t.then))return t.done?n(t.value):(f=Promise.resolve(t.value)).then(o,a);t.then(c,i)}var h=0;t=i,o(void 0)}));return a.cancel=_i(r+\" - runid: \"+u+\" - cancel\",(function(){try{f&&kt(f);var n=s.return(void 0),i=Promise.resolve(n.value);i.then(Rn,Rn),kt(i),t(new Tt)}catch(n){t(n)}})),a};return u.isMobXFlow=!0,u}),Ei);Ri.bound=A(Vi);var Ti={has:function(t,n){return Ft(t).rt(n)},get:function(t,n){return Ft(t).lt(n)},set:function(t,n,i){var r;return!!o(n)&&(null==(r=Ft(t).dt(n,i,!0))||r)},deleteProperty:function(t,n){var i;return!!o(n)&&(null==(i=Ft(t).Gt(n,!0))||i)},defineProperty:function(t,n,i){var r;return null==(r=Ft(t).h(n,i))||r},ownKeys:function(t){return Ft(t).et()},preventExtensions:function(){t(13)}},ki=Symbol(\"mobx-keys\"),Ci=\"update\",Ki={get:function(t,n){var i=t[Ln];return n===Ln?i:\"length\"===n?i.Wt():\"string\"!=typeof n||isNaN(n)?b(Ii,n)?Ii[n]:t[n]:i.lt(parseInt(n))},set:function(t,n,i){var r=t[Ln];return\"length\"===n&&r.Ht(i),\"symbol\"==typeof n||isNaN(n)?t[n]=i:r.dt(parseInt(n),i),!0},preventExtensions:function(){t(15)}},Li=function(){function n(t,n,i,r){void 0===t&&(t=\"ObservableArray\"),this.Xt=void 0,this.Ut=void 0,this.at=void 0,this.nt=[],this.ut=void 0,this.st=void 0,this.Ft=void 0,this.dehancer=void 0,this.v=void 0,this.zt=0,this.Xt=i,this.Ut=r,this.at=new In(t),this.Ft=function(t,i){return n(t,i,\"ObservableArray[..]\")}}var i=n.prototype;return i.$t=function(t){return void 0!==this.dehancer?this.dehancer(t):t},i.ct=function(t){return void 0!==this.dehancer&&t.length>0?t.map(this.dehancer):t},i.At=function(t){return $t(this,t)},i.gt=function(t,n){return void 0===n&&(n=!1),n&&t({observableKind:\"array\",object:this.v,debugObjectName:this.at.tt,type:\"splice\",index:0,added:this.nt.slice(),addedCount:this.nt.length,removed:[],removedCount:0}),Qt(this,t)},i.Wt=function(){return this.at.reportObserved(),this.nt.length},i.Ht=function(n){(\"number\"!=typeof n||isNaN(n)||n<0)&&t(\"Out of range: \"+n);var i=this.nt.length;if(n!==i)if(n>i){for(var r=new Array(n-i),e=0;e0&&ln(n+i+1)},i.ft=function(t,n,i){var r=this,e=this.nt.length;if(void 0===t?t=0:t>e?t=e:t<0&&(t=Math.max(0,e+t)),n=1===arguments.length?e-t:null==n?0:Math.max(0,Math.min(n,e-t)),void 0===i&&(i=Mn),zt(this)){var o=Jt(this,{object:this.v,type:\"splice\",index:t,removedCount:n,added:i});if(!o)return Mn;n=o.removedCount,i=o.added}if(i=0===i.length?i:i.map((function(t){return r.Ft(t,void 0)})),this.Ut){var u=i.length-n;this.Jt(e,u)}var s=this.Yt(t,n,i);return 0===n&&0===i.length||this.Qt(t,i,s),this.ct(s)},i.Yt=function(t,n,i){var r;if(i.length<1e4)return(r=this.nt).splice.apply(r,[t,n].concat(i));var e=this.nt.slice(t,t+n),o=this.nt.slice(t+n);this.nt.length+=i.length-n;for(var u=0;u=this.nt.length))return this.at.reportObserved(),this.$t(this.nt[t]);console.warn(\"[mobx] Out of bounds read: \"+t)},i.dt=function(n,i){var r=this.nt;if(this.Ut&&n>r.length&&t(17,n,r.length),n2?i-2:0),e=2;e-1&&(this.splice(i,1),!0)}};nn(\"concat\",rn),nn(\"flat\",rn),nn(\"includes\",rn),nn(\"indexOf\",rn),nn(\"join\",rn),nn(\"lastIndexOf\",rn),nn(\"slice\",rn),nn(\"toString\",rn),nn(\"toLocaleString\",rn),nn(\"every\",en),nn(\"filter\",en),nn(\"find\",en),nn(\"findIndex\",en),nn(\"flatMap\",en),nn(\"forEach\",en),nn(\"map\",en),nn(\"some\",en),nn(\"reduce\",on),nn(\"reduceRight\",on);var Pi,Di,Bi=h(\"ObservableArrayAdministration\",Li),qi={},Gi=\"add\";Pi=Symbol.iterator,Di=Symbol.toStringTag;var Wi,Hi,Xi=function(){function n(n,i,r){var o=this;void 0===i&&(i=S),void 0===r&&(r=\"ObservableMap\"),this.Ft=void 0,this.tt=void 0,this[Ln]=qi,this.pt=void 0,this.yt=void 0,this.bt=void 0,this.ut=void 0,this.st=void 0,this.dehancer=void 0,this.Ft=i,this.tt=r,e(Map)||t(18),this.bt=_(\"ObservableMap.keys()\"),this.pt=new Map,this.yt=new Map,Q(!0,(function(){o.merge(n)}))}var i=n.prototype;return i.rt=function(t){return this.pt.has(t)},i.has=function(t){var n=this;if(!yi.trackingDerivation)return this.rt(t);var i=this.yt.get(t);if(!i){var r=i=new ui(this.rt(t),M,\"ObservableMap.key?\",!1);this.yt.set(t,r),Mt(r,(function(){return n.yt.delete(t)}))}return i.get()},i.set=function(t,n){var i=this.rt(t);if(zt(this)){var r=Jt(this,{type:i?Ci:Gi,object:this,newValue:n,name:t});if(!r)return this;n=r.newValue}return i?this.tn(t,n):this.nn(t,n),this},i.delete=function(t){var n=this;if(zt(this)&&!Jt(this,{type:\"delete\",object:this,name:t}))return!1;if(this.rt(t)){var i=Yt(this),r=i?{observableKind:\"map\",debugObjectName:this.tt,type:\"delete\",object:this,oldValue:this.pt.get(t).jt,name:t}:null;return Ht((function(){var i;n.bt.reportChanged(),null==(i=n.yt.get(t))||i.xt(!1),n.pt.get(t).xt(void 0),n.pt.delete(t)})),i&&Zt(this,r),!0}return!1},i.tn=function(t,n){var i=this.pt.get(t);if((n=i.Ot(n))!==yi.UNCHANGED){var r=Yt(this),e=r?{observableKind:\"map\",debugObjectName:this.tt,type:Ci,object:this,oldValue:i.jt,name:t,newValue:n}:null;i.xt(n),r&&Zt(this,e)}},i.nn=function(t,n){var i=this;Ht((function(){var r,e=new ui(n,i.Ft,\"ObservableMap.key\",!1);i.pt.set(t,e),n=e.jt,null==(r=i.yt.get(t))||r.xt(!0),i.bt.reportChanged()}));var r=Yt(this);r&&Zt(this,r?{observableKind:\"map\",debugObjectName:this.tt,type:Gi,object:this,name:t,newValue:n}:null)},i.get=function(t){return this.has(t)?this.$t(this.pt.get(t).get()):this.$t(void 0)},i.$t=function(t){return void 0!==this.dehancer?this.dehancer(t):t},i.keys=function(){return this.bt.reportObserved(),this.pt.keys()},i.values=function(){var t=this,n=this.keys();return jn({next:function(){var i=n.next(),r=i.done;return{done:r,value:r?void 0:t.get(i.value)}}})},i.entries=function(){var t=this,n=this.keys();return jn({next:function(){var i=n.next(),r=i.done,e=i.value;return{done:r,value:r?void 0:[e,t.get(e)]}}})},i[Pi]=function(){return this.entries()},i.forEach=function(t,n){for(var i,r=x(this);!(i=r()).done;){var e=i.value;t.call(n,e[1],e[0],this)}},i.merge=function(n){var i=this;return Ui(n)&&(n=new Map(n)),Ht((function(){s(n)?function(t){var n=Object.keys(t);if(!Tn)return n;var i=Object.getOwnPropertySymbols(t);return i.length?[].concat(n,i.filter((function(n){return Sn.propertyIsEnumerable.call(t,n)}))):n}(n).forEach((function(t){return i.set(t,n[t])})):Array.isArray(n)?n.forEach((function(t){return i.set(t[0],t[1])})):v(n)?(n.constructor!==Map&&t(19,n),n.forEach((function(t,n){return i.set(n,t)}))):null!=n&&t(20,n)})),this},i.clear=function(){var t=this;Ht((function(){ot((function(){for(var n,i=x(t.keys());!(n=i()).done;)t.delete(n.value)}))}))},i.replace=function(n){var i=this;return Ht((function(){for(var r,e=function(n){if(v(n)||Ui(n))return n;if(Array.isArray(n))return new Map(n);if(s(n)){var i=new Map;for(var r in n)i.set(r,n[r]);return i}return t(21,n)}(n),o=new Map,u=!1,f=x(i.pt.keys());!(r=f()).done;){var a=r.value;if(!e.has(a))if(i.delete(a))u=!0;else{var c=i.pt.get(a);o.set(a,c)}}for(var h,l=x(e.entries());!(h=l()).done;){var d=h.value,b=d[0],p=d[1],y=i.pt.has(b);if(i.set(b,p),i.pt.has(b)){var m=i.pt.get(b);o.set(b,m),y||(u=!0)}}if(!u)if(i.pt.size!==o.size)i.bt.reportChanged();else for(var w=i.pt.keys(),j=o.keys(),O=w.next(),A=j.next();!O.done;){if(O.value!==A.value){i.bt.reportChanged();break}O=w.next(),A=j.next()}i.pt=o})),this},i.toString=function(){return\"[object ObservableMap]\"},i.toJSON=function(){return Array.from(this)},i.gt=function(t){return Qt(this,t)},i.At=function(t){return $t(this,t)},y(n,[{key:\"size\",get:function(){return this.bt.reportObserved(),this.pt.size}},{key:Di,get:function(){return\"Map\"}}]),n}(),Ui=h(\"ObservableMap\",Xi),Fi={};Wi=Symbol.iterator,Hi=Symbol.toStringTag;var zi,$i,Ji=function(){function n(n,i,r){void 0===i&&(i=S),void 0===r&&(r=\"ObservableSet\"),this.tt=void 0,this[Ln]=Fi,this.pt=new Set,this.at=void 0,this.st=void 0,this.ut=void 0,this.dehancer=void 0,this.Ft=void 0,this.tt=r,e(Set)||t(22),this.at=_(this.tt),this.Ft=function(t,n){return i(t,n,r)},n&&this.replace(n)}var i=n.prototype;return i.$t=function(t){return void 0!==this.dehancer?this.dehancer(t):t},i.clear=function(){var t=this;Ht((function(){ot((function(){for(var n,i=x(t.pt.values());!(n=i()).done;)t.delete(n.value)}))}))},i.forEach=function(t,n){for(var i,r=x(this);!(i=r()).done;){var e=i.value;t.call(n,e,e,this)}},i.add=function(t){var n=this;if(zt(this)&&!Jt(this,{type:Gi,object:this,newValue:t}))return this;if(!this.has(t)){Ht((function(){n.pt.add(n.Ft(t,void 0)),n.at.reportChanged()}));var i=Yt(this);i&&Zt(this,i?{observableKind:\"set\",debugObjectName:this.tt,type:Gi,object:this,newValue:t}:null)}return this},i.delete=function(t){var n=this;if(zt(this)&&!Jt(this,{type:\"delete\",object:this,oldValue:t}))return!1;if(this.has(t)){var i=Yt(this),r=i?{observableKind:\"set\",debugObjectName:this.tt,type:\"delete\",object:this,oldValue:t}:null;return Ht((function(){n.at.reportChanged(),n.pt.delete(t)})),i&&Zt(this,r),!0}return!1},i.has=function(t){return this.at.reportObserved(),this.pt.has(this.$t(t))},i.entries=function(){var t=0,n=Array.from(this.keys()),i=Array.from(this.values());return jn({next:function(){var r=t;return t+=1,r=0&&yi.globalReactionErrorHandlers.splice(n,1)}},exports.override=Bn,exports.ownKeys=Bt,exports.reaction=function(t,n,i){function r(){if(d=!1,!p.J){var n=!1;p.track((function(){var i=Q(!1,(function(){return t(p)}));n=l||!b(s,i),f=s,s=i})),(l&&i.fireImmediately||!l&&n)&&c(s,f,p),l=!1}}var e;void 0===i&&(i=Nn);var o,u,s,f,a=null!=(e=i.name)?e:\"Reaction\",c=_i(a,i.onError?(o=i.onError,u=n,function(){try{return u.apply(this,arguments)}catch(t){o.call(this,t)}}):n),h=!i.scheduler&&!i.delay,v=_t(i),l=!0,d=!1,b=i.compareStructural?Dn.structural:i.equals||Dn.default,p=new mi(a,(function(){l||h?r():d||(d=!0,v(r))}),i.onError,i.requiresObservable);return p.Y(),p.Z()},exports.remove=function(n,i){an(n)?n[Ln].Gt(i):Ui(n)||Yi(n)?n.delete(i):un(n)?(\"number\"!=typeof i&&(i=parseInt(i,10)),n.splice(i,1)):t(9)},exports.runInAction=xt,exports.set=function n(i,r,e){if(2!==arguments.length||Yi(i))an(i)?i[Ln].dt(r,e):Ui(i)?i.set(r,e):Yi(i)?i.add(r):un(i)?(\"number\"!=typeof r&&(r=parseInt(r,10)),r<0&&t(\"Invalid index: '\"+r+\"'\"),dt(),r>=i.length&&(i.length=r+1),i[r]=e,bt()):t(8);else{dt();var o=r;try{for(var u in o)n(i,u,o[u])}finally{bt()}}},exports.spy=jt,exports.toJS=function(t){return function t(n,i){if(null==n||\"object\"!=typeof n||n instanceof Date||!It(n))return n;if(si(n)||hi(n))return t(n.get(),i);if(i.has(n))return i.get(n);if(un(n)){var r=qt(i,n,new Array(n.length));return n.forEach((function(n,e){r[e]=t(n,i)})),r}if(Yi(n)){var e=qt(i,n,new Set);return n.forEach((function(n){e.add(t(n,i))})),e}if(Ui(n)){var o=qt(i,n,new Map);return n.forEach((function(n,r){o.set(r,t(n,i))})),o}var u=qt(i,n,{});return Bt(n).forEach((function(r){Sn.propertyIsEnumerable.call(n,r)&&(u[r]=t(n[r],i))})),u}(t,new Map)},exports.trace=Gt,exports.transaction=Ht,exports.untracked=ot,exports.values=function(n){return an(n)?Pt(n).map((function(t){return n[t]})):Ui(n)?Pt(n).map((function(t){return n.get(t)})):Yi(n)?Array.from(n.values()):un(n)?n.slice():void t(6)},exports.when=function(t,n,i){return 1===arguments.length||n&&\"object\"==typeof n?Ut(t,n):Xt(t,n,i||{})};\n//# sourceMappingURL=mobx.cjs.production.min.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar niceErrors = {\n 0: \"Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'\",\n 1: function _(annotationType, key) {\n return \"Cannot apply '\" + annotationType + \"' to '\" + key.toString() + \"': Field not found.\";\n },\n /*\r\n 2(prop) {\r\n return `invalid decorator for '${prop.toString()}'`\r\n },\r\n 3(prop) {\r\n return `Cannot decorate '${prop.toString()}': action can only be used on properties with a function value.`\r\n },\r\n 4(prop) {\r\n return `Cannot decorate '${prop.toString()}': computed can only be used on getter properties.`\r\n },\r\n */\n 5: \"'keys()' can only be used on observable objects, arrays, sets and maps\",\n 6: \"'values()' can only be used on observable objects, arrays, sets and maps\",\n 7: \"'entries()' can only be used on observable objects, arrays and maps\",\n 8: \"'set()' can only be used on observable objects, arrays and maps\",\n 9: \"'remove()' can only be used on observable objects, arrays and maps\",\n 10: \"'has()' can only be used on observable objects, arrays and maps\",\n 11: \"'get()' can only be used on observable objects, arrays and maps\",\n 12: \"Invalid annotation\",\n 13: \"Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)\",\n 14: \"Intercept handlers should return nothing or a change object\",\n 15: \"Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)\",\n 16: \"Modification exception: the internal structure of an observable array was changed.\",\n 17: function _(index, length) {\n return \"[mobx.array] Index out of bounds, \" + index + \" is larger than \" + length;\n },\n 18: \"mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js\",\n 19: function _(other) {\n return \"Cannot initialize from classes that inherit from Map: \" + other.constructor.name;\n },\n 20: function _(other) {\n return \"Cannot initialize map from \" + other;\n },\n 21: function _(dataStructure) {\n return \"Cannot convert to map from '\" + dataStructure + \"'\";\n },\n 22: \"mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js\",\n 23: \"It is not possible to get index atoms from arrays\",\n 24: function _(thing) {\n return \"Cannot obtain administration from \" + thing;\n },\n 25: function _(property, name) {\n return \"the entry '\" + property + \"' does not exist in the observable map '\" + name + \"'\";\n },\n 26: \"please specify a property\",\n 27: function _(property, name) {\n return \"no observable property '\" + property.toString() + \"' found on the observable object '\" + name + \"'\";\n },\n 28: function _(thing) {\n return \"Cannot obtain atom from \" + thing;\n },\n 29: \"Expecting some object\",\n 30: \"invalid action stack. did you forget to finish an action?\",\n 31: \"missing option for computed: get\",\n 32: function _(name, derivation) {\n return \"Cycle detected in computation \" + name + \": \" + derivation;\n },\n 33: function _(name) {\n return \"The setter of computed value '\" + name + \"' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?\";\n },\n 34: function _(name) {\n return \"[ComputedValue '\" + name + \"'] It is not possible to assign a new value to a computed value.\";\n },\n 35: \"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`\",\n 36: \"isolateGlobalState should be called before MobX is running any reactions\",\n 37: function _(method) {\n return \"[mobx] `observableArray.\" + method + \"()` mutates the array in-place, which is not allowed inside a derivation. Use `array.slice().\" + method + \"()` instead\";\n },\n 38: \"'ownKeys()' can only be used on observable objects\",\n 39: \"'defineProperty()' can only be used on observable objects\"\n};\nvar errors = niceErrors ;\nfunction die(error) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n {\n var e = typeof error === \"string\" ? error : errors[error];\n if (typeof e === \"function\") e = e.apply(null, args);\n throw new Error(\"[MobX] \" + e);\n }\n}\n\nvar mockGlobal = {};\nfunction getGlobal() {\n if (typeof globalThis !== \"undefined\") {\n return globalThis;\n }\n if (typeof window !== \"undefined\") {\n return window;\n }\n if (typeof global !== \"undefined\") {\n return global;\n }\n if (typeof self !== \"undefined\") {\n return self;\n }\n return mockGlobal;\n}\n\n// We shorten anything used > 5 times\nvar assign = Object.assign;\nvar getDescriptor = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar objectPrototype = Object.prototype;\nvar EMPTY_ARRAY = [];\nObject.freeze(EMPTY_ARRAY);\nvar EMPTY_OBJECT = {};\nObject.freeze(EMPTY_OBJECT);\nvar hasProxy = typeof Proxy !== \"undefined\";\nvar plainObjectString = /*#__PURE__*/Object.toString();\nfunction assertProxies() {\n if (!hasProxy) {\n die( \"`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`\" );\n }\n}\nfunction warnAboutProxyRequirement(msg) {\n if ( globalState.verifyProxies) {\n die(\"MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to \" + msg);\n }\n}\nfunction getNextId() {\n return ++globalState.mobxGuid;\n}\n/**\r\n * Makes sure that the provided function is invoked at most once.\r\n */\nfunction once(func) {\n var invoked = false;\n return function () {\n if (invoked) {\n return;\n }\n invoked = true;\n return func.apply(this, arguments);\n };\n}\nvar noop = function noop() {};\nfunction isFunction(fn) {\n return typeof fn === \"function\";\n}\nfunction isStringish(value) {\n var t = typeof value;\n switch (t) {\n case \"string\":\n case \"symbol\":\n case \"number\":\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && typeof value === \"object\";\n}\nfunction isPlainObject(value) {\n if (!isObject(value)) {\n return false;\n }\n var proto = Object.getPrototypeOf(value);\n if (proto == null) {\n return true;\n }\n var protoConstructor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof protoConstructor === \"function\" && protoConstructor.toString() === plainObjectString;\n}\n// https://stackoverflow.com/a/37865170\nfunction isGenerator(obj) {\n var constructor = obj == null ? void 0 : obj.constructor;\n if (!constructor) {\n return false;\n }\n if (\"GeneratorFunction\" === constructor.name || \"GeneratorFunction\" === constructor.displayName) {\n return true;\n }\n return false;\n}\nfunction addHiddenProp(object, propName, value) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: true,\n configurable: true,\n value: value\n });\n}\nfunction addHiddenFinalProp(object, propName, value) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: false,\n configurable: true,\n value: value\n });\n}\nfunction createInstanceofPredicate(name, theClass) {\n var propName = \"isMobX\" + name;\n theClass.prototype[propName] = true;\n return function (x) {\n return isObject(x) && x[propName] === true;\n };\n}\nfunction isES6Map(thing) {\n return thing instanceof Map;\n}\nfunction isES6Set(thing) {\n return thing instanceof Set;\n}\nvar hasGetOwnPropertySymbols = typeof Object.getOwnPropertySymbols !== \"undefined\";\n/**\r\n * Returns the following: own enumerable keys and symbols.\r\n */\nfunction getPlainObjectKeys(object) {\n var keys = Object.keys(object);\n // Not supported in IE, so there are not going to be symbol props anyway...\n if (!hasGetOwnPropertySymbols) {\n return keys;\n }\n var symbols = Object.getOwnPropertySymbols(object);\n if (!symbols.length) {\n return keys;\n }\n return [].concat(keys, symbols.filter(function (s) {\n return objectPrototype.propertyIsEnumerable.call(object, s);\n }));\n}\n// From Immer utils\n// Returns all own keys, including non-enumerable and symbolic\nvar ownKeys = typeof Reflect !== \"undefined\" && Reflect.ownKeys ? Reflect.ownKeys : hasGetOwnPropertySymbols ? function (obj) {\n return Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj));\n} : /* istanbul ignore next */Object.getOwnPropertyNames;\nfunction stringifyKey(key) {\n if (typeof key === \"string\") {\n return key;\n }\n if (typeof key === \"symbol\") {\n return key.toString();\n }\n return new String(key).toString();\n}\nfunction toPrimitive(value) {\n return value === null ? null : typeof value === \"object\" ? \"\" + value : value;\n}\nfunction hasProp(target, prop) {\n return objectPrototype.hasOwnProperty.call(target, prop);\n}\n// From Immer utils\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors || function getOwnPropertyDescriptors(target) {\n // Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n var res = {};\n // Note: without polyfill for ownKeys, symbols won't be picked up\n ownKeys(target).forEach(function (key) {\n res[key] = getDescriptor(target, key);\n });\n return res;\n};\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nvar storedAnnotationsSymbol = /*#__PURE__*/Symbol(\"mobx-stored-annotations\");\n/**\r\n * Creates a function that acts as\r\n * - decorator\r\n * - annotation object\r\n */\nfunction createDecoratorAnnotation(annotation) {\n function decorator(target, property) {\n storeAnnotation(target, property, annotation);\n }\n return Object.assign(decorator, annotation);\n}\n/**\r\n * Stores annotation to prototype,\r\n * so it can be inspected later by `makeObservable` called from constructor\r\n */\nfunction storeAnnotation(prototype, key, annotation) {\n if (!hasProp(prototype, storedAnnotationsSymbol)) {\n addHiddenProp(prototype, storedAnnotationsSymbol, _extends({}, prototype[storedAnnotationsSymbol]));\n }\n // @override must override something\n if ( isOverride(annotation) && !hasProp(prototype[storedAnnotationsSymbol], key)) {\n var fieldName = prototype.constructor.name + \".prototype.\" + key.toString();\n die(\"'\" + fieldName + \"' is decorated with 'override', \" + \"but no such decorated member was found on prototype.\");\n }\n // Cannot re-decorate\n assertNotDecorated(prototype, annotation, key);\n // Ignore override\n if (!isOverride(annotation)) {\n prototype[storedAnnotationsSymbol][key] = annotation;\n }\n}\nfunction assertNotDecorated(prototype, annotation, key) {\n if ( !isOverride(annotation) && hasProp(prototype[storedAnnotationsSymbol], key)) {\n var fieldName = prototype.constructor.name + \".prototype.\" + key.toString();\n var currentAnnotationType = prototype[storedAnnotationsSymbol][key].annotationType_;\n var requestedAnnotationType = annotation.annotationType_;\n die(\"Cannot apply '@\" + requestedAnnotationType + \"' to '\" + fieldName + \"':\" + (\"\\nThe field is already decorated with '@\" + currentAnnotationType + \"'.\") + \"\\nRe-decorating fields is not allowed.\" + \"\\nUse '@override' decorator for methods overridden by subclass.\");\n }\n}\n/**\r\n * Collects annotations from prototypes and stores them on target (instance)\r\n */\nfunction collectStoredAnnotations(target) {\n if (!hasProp(target, storedAnnotationsSymbol)) {\n if ( !target[storedAnnotationsSymbol]) {\n die(\"No annotations were passed to makeObservable, but no decorated members have been found either\");\n }\n // We need a copy as we will remove annotation from the list once it's applied.\n addHiddenProp(target, storedAnnotationsSymbol, _extends({}, target[storedAnnotationsSymbol]));\n }\n return target[storedAnnotationsSymbol];\n}\n\nvar $mobx = /*#__PURE__*/Symbol(\"mobx administration\");\nvar Atom = /*#__PURE__*/function () {\n // for effective unobserving. BaseAtom has true, for extra optimization, so its onBecomeUnobserved never gets called, because it's not needed\n\n /**\r\n * Create a new atom. For debugging purposes it is recommended to give it a name.\r\n * The onBecomeObserved and onBecomeUnobserved callbacks can be used for resource management.\r\n */\n function Atom(name_) {\n if (name_ === void 0) {\n name_ = \"Atom@\" + getNextId() ;\n }\n this.name_ = void 0;\n this.isPendingUnobservation_ = false;\n this.isBeingObserved_ = false;\n this.observers_ = new Set();\n this.diffValue_ = 0;\n this.lastAccessedBy_ = 0;\n this.lowestObserverState_ = IDerivationState_.NOT_TRACKING_;\n this.onBOL = void 0;\n this.onBUOL = void 0;\n this.name_ = name_;\n }\n // onBecomeObservedListeners\n var _proto = Atom.prototype;\n _proto.onBO = function onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(function (listener) {\n return listener();\n });\n }\n };\n _proto.onBUO = function onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(function (listener) {\n return listener();\n });\n }\n }\n /**\r\n * Invoke this method to notify mobx that your atom has been used somehow.\r\n * Returns true if there is currently a reactive context.\r\n */;\n _proto.reportObserved = function reportObserved$1() {\n return reportObserved(this);\n }\n /**\r\n * Invoke this method _after_ this method has changed to signal mobx that all its observers should invalidate.\r\n */;\n _proto.reportChanged = function reportChanged() {\n startBatch();\n propagateChanged(this);\n // We could update state version only at the end of batch,\n // but we would still have to switch some global flag here to signal a change.\n globalState.stateVersion = globalState.stateVersion < Number.MAX_SAFE_INTEGER ? globalState.stateVersion + 1 : Number.MIN_SAFE_INTEGER;\n endBatch();\n };\n _proto.toString = function toString() {\n return this.name_;\n };\n return Atom;\n}();\nvar isAtom = /*#__PURE__*/createInstanceofPredicate(\"Atom\", Atom);\nfunction createAtom(name, onBecomeObservedHandler, onBecomeUnobservedHandler) {\n if (onBecomeObservedHandler === void 0) {\n onBecomeObservedHandler = noop;\n }\n if (onBecomeUnobservedHandler === void 0) {\n onBecomeUnobservedHandler = noop;\n }\n var atom = new Atom(name);\n // default `noop` listener will not initialize the hook Set\n if (onBecomeObservedHandler !== noop) {\n onBecomeObserved(atom, onBecomeObservedHandler);\n }\n if (onBecomeUnobservedHandler !== noop) {\n onBecomeUnobserved(atom, onBecomeUnobservedHandler);\n }\n return atom;\n}\n\nfunction identityComparer(a, b) {\n return a === b;\n}\nfunction structuralComparer(a, b) {\n return deepEqual(a, b);\n}\nfunction shallowComparer(a, b) {\n return deepEqual(a, b, 1);\n}\nfunction defaultComparer(a, b) {\n if (Object.is) {\n return Object.is(a, b);\n }\n return a === b ? a !== 0 || 1 / a === 1 / b : a !== a && b !== b;\n}\nvar comparer = {\n identity: identityComparer,\n structural: structuralComparer,\n \"default\": defaultComparer,\n shallow: shallowComparer\n};\n\nfunction deepEnhancer(v, _, name) {\n // it is an observable already, done\n if (isObservable(v)) {\n return v;\n }\n // something that can be converted and mutated?\n if (Array.isArray(v)) {\n return observable.array(v, {\n name: name\n });\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, {\n name: name\n });\n }\n if (isES6Map(v)) {\n return observable.map(v, {\n name: name\n });\n }\n if (isES6Set(v)) {\n return observable.set(v, {\n name: name\n });\n }\n if (typeof v === \"function\" && !isAction(v) && !isFlow(v)) {\n if (isGenerator(v)) {\n return flow(v);\n } else {\n return autoAction(name, v);\n }\n }\n return v;\n}\nfunction shallowEnhancer(v, _, name) {\n if (v === undefined || v === null) {\n return v;\n }\n if (isObservableObject(v) || isObservableArray(v) || isObservableMap(v) || isObservableSet(v)) {\n return v;\n }\n if (Array.isArray(v)) {\n return observable.array(v, {\n name: name,\n deep: false\n });\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, {\n name: name,\n deep: false\n });\n }\n if (isES6Map(v)) {\n return observable.map(v, {\n name: name,\n deep: false\n });\n }\n if (isES6Set(v)) {\n return observable.set(v, {\n name: name,\n deep: false\n });\n }\n {\n die(\"The shallow modifier / decorator can only used in combination with arrays, objects, maps and sets\");\n }\n}\nfunction referenceEnhancer(newValue) {\n // never turn into an observable\n return newValue;\n}\nfunction refStructEnhancer(v, oldValue) {\n if ( isObservable(v)) {\n die(\"observable.struct should not be used with observable values\");\n }\n if (deepEqual(v, oldValue)) {\n return oldValue;\n }\n return v;\n}\n\nvar OVERRIDE = \"override\";\nvar override = /*#__PURE__*/createDecoratorAnnotation({\n annotationType_: OVERRIDE,\n make_: make_,\n extend_: extend_\n});\nfunction isOverride(annotation) {\n return annotation.annotationType_ === OVERRIDE;\n}\nfunction make_(adm, key) {\n // Must not be plain object\n if ( adm.isPlainObject_) {\n die(\"Cannot apply '\" + this.annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + this.annotationType_ + \"' cannot be used on plain objects.\"));\n }\n // Must override something\n if ( !hasProp(adm.appliedAnnotations_, key)) {\n die(\"'\" + adm.name_ + \".\" + key.toString() + \"' is annotated with '\" + this.annotationType_ + \"', \" + \"but no such annotated member was found on prototype.\");\n }\n return 0 /* Cancel */;\n}\n\nfunction extend_(adm, key, descriptor, proxyTrap) {\n die(\"'\" + this.annotationType_ + \"' can only be used with 'makeObservable'\");\n}\n\nfunction createActionAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$1,\n extend_: extend_$1\n };\n}\nfunction make_$1(adm, key, descriptor, source) {\n var _this$options_;\n // bound\n if ((_this$options_ = this.options_) != null && _this$options_.bound) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* Cancel */ : 1 /* Break */;\n }\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* Cancel */ : 2 /* Continue */;\n }\n // prototype\n if (isAction(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return 1 /* Break */;\n }\n\n var actionDescriptor = createActionDescriptor(adm, this, key, descriptor, false);\n defineProperty(source, key, actionDescriptor);\n return 2 /* Continue */;\n}\n\nfunction extend_$1(adm, key, descriptor, proxyTrap) {\n var actionDescriptor = createActionDescriptor(adm, this, key, descriptor);\n return adm.defineProperty_(key, actionDescriptor, proxyTrap);\n}\nfunction assertActionDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var value = _ref2.value;\n if ( !isFunction(value)) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' can only be used on properties with a function value.\"));\n }\n}\nfunction createActionDescriptor(adm, annotation, key, descriptor,\n// provides ability to disable safeDescriptors for prototypes\nsafeDescriptors) {\n var _annotation$options_, _annotation$options_$, _annotation$options_2, _annotation$options_$2, _annotation$options_3, _annotation$options_4, _adm$proxy_2;\n if (safeDescriptors === void 0) {\n safeDescriptors = globalState.safeDescriptors;\n }\n assertActionDescriptor(adm, annotation, key, descriptor);\n var value = descriptor.value;\n if ((_annotation$options_ = annotation.options_) != null && _annotation$options_.bound) {\n var _adm$proxy_;\n value = value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n }\n return {\n value: createAction((_annotation$options_$ = (_annotation$options_2 = annotation.options_) == null ? void 0 : _annotation$options_2.name) != null ? _annotation$options_$ : key.toString(), value, (_annotation$options_$2 = (_annotation$options_3 = annotation.options_) == null ? void 0 : _annotation$options_3.autoAction) != null ? _annotation$options_$2 : false,\n // https://github.com/mobxjs/mobx/discussions/3140\n (_annotation$options_4 = annotation.options_) != null && _annotation$options_4.bound ? (_adm$proxy_2 = adm.proxy_) != null ? _adm$proxy_2 : adm.target_ : undefined),\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n };\n}\n\nfunction createFlowAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$2,\n extend_: extend_$2\n };\n}\nfunction make_$2(adm, key, descriptor, source) {\n var _this$options_;\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* Cancel */ : 2 /* Continue */;\n }\n // prototype\n // bound - must annotate protos to support super.flow()\n if ((_this$options_ = this.options_) != null && _this$options_.bound && (!hasProp(adm.target_, key) || !isFlow(adm.target_[key]))) {\n if (this.extend_(adm, key, descriptor, false) === null) {\n return 0 /* Cancel */;\n }\n }\n\n if (isFlow(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return 1 /* Break */;\n }\n\n var flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, false, false);\n defineProperty(source, key, flowDescriptor);\n return 2 /* Continue */;\n}\n\nfunction extend_$2(adm, key, descriptor, proxyTrap) {\n var _this$options_2;\n var flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, (_this$options_2 = this.options_) == null ? void 0 : _this$options_2.bound);\n return adm.defineProperty_(key, flowDescriptor, proxyTrap);\n}\nfunction assertFlowDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var value = _ref2.value;\n if ( !isFunction(value)) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' can only be used on properties with a generator function value.\"));\n }\n}\nfunction createFlowDescriptor(adm, annotation, key, descriptor, bound,\n// provides ability to disable safeDescriptors for prototypes\nsafeDescriptors) {\n if (safeDescriptors === void 0) {\n safeDescriptors = globalState.safeDescriptors;\n }\n assertFlowDescriptor(adm, annotation, key, descriptor);\n var value = descriptor.value;\n // In case of flow.bound, the descriptor can be from already annotated prototype\n if (!isFlow(value)) {\n value = flow(value);\n }\n if (bound) {\n var _adm$proxy_;\n // We do not keep original function around, so we bind the existing flow\n value = value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n // This is normally set by `flow`, but `bind` returns new function...\n value.isMobXFlow = true;\n }\n return {\n value: value,\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n };\n}\n\nfunction createComputedAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$3,\n extend_: extend_$3\n };\n}\nfunction make_$3(adm, key, descriptor) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* Cancel */ : 1 /* Break */;\n}\n\nfunction extend_$3(adm, key, descriptor, proxyTrap) {\n assertComputedDescriptor(adm, this, key, descriptor);\n return adm.defineComputedProperty_(key, _extends({}, this.options_, {\n get: descriptor.get,\n set: descriptor.set\n }), proxyTrap);\n}\nfunction assertComputedDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var get = _ref2.get;\n if ( !get) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' can only be used on getter(+setter) properties.\"));\n }\n}\n\nfunction createObservableAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$4,\n extend_: extend_$4\n };\n}\nfunction make_$4(adm, key, descriptor) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* Cancel */ : 1 /* Break */;\n}\n\nfunction extend_$4(adm, key, descriptor, proxyTrap) {\n var _this$options_$enhanc, _this$options_;\n assertObservableDescriptor(adm, this, key, descriptor);\n return adm.defineObservableProperty_(key, descriptor.value, (_this$options_$enhanc = (_this$options_ = this.options_) == null ? void 0 : _this$options_.enhancer) != null ? _this$options_$enhanc : deepEnhancer, proxyTrap);\n}\nfunction assertObservableDescriptor(adm, _ref, key, descriptor) {\n var annotationType_ = _ref.annotationType_;\n if ( !(\"value\" in descriptor)) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' cannot be used on getter/setter properties\"));\n }\n}\n\nvar AUTO = \"true\";\nvar autoAnnotation = /*#__PURE__*/createAutoAnnotation();\nfunction createAutoAnnotation(options) {\n return {\n annotationType_: AUTO,\n options_: options,\n make_: make_$5,\n extend_: extend_$5\n };\n}\nfunction make_$5(adm, key, descriptor, source) {\n var _this$options_3, _this$options_4;\n // getter -> computed\n if (descriptor.get) {\n return computed.make_(adm, key, descriptor, source);\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.make_\n var set = createAction(key.toString(), descriptor.set);\n // own\n if (source === adm.target_) {\n return adm.defineProperty_(key, {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set: set\n }) === null ? 0 /* Cancel */ : 2 /* Continue */;\n }\n // proto\n defineProperty(source, key, {\n configurable: true,\n set: set\n });\n return 2 /* Continue */;\n }\n // function on proto -> autoAction/flow\n if (source !== adm.target_ && typeof descriptor.value === \"function\") {\n var _this$options_2;\n if (isGenerator(descriptor.value)) {\n var _this$options_;\n var flowAnnotation = (_this$options_ = this.options_) != null && _this$options_.autoBind ? flow.bound : flow;\n return flowAnnotation.make_(adm, key, descriptor, source);\n }\n var actionAnnotation = (_this$options_2 = this.options_) != null && _this$options_2.autoBind ? autoAction.bound : autoAction;\n return actionAnnotation.make_(adm, key, descriptor, source);\n }\n // other -> observable\n // Copy props from proto as well, see test:\n // \"decorate should work with Object.create\"\n var observableAnnotation = ((_this$options_3 = this.options_) == null ? void 0 : _this$options_3.deep) === false ? observable.ref : observable;\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && (_this$options_4 = this.options_) != null && _this$options_4.autoBind) {\n var _adm$proxy_;\n descriptor.value = descriptor.value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n }\n return observableAnnotation.make_(adm, key, descriptor, source);\n}\nfunction extend_$5(adm, key, descriptor, proxyTrap) {\n var _this$options_5, _this$options_6;\n // getter -> computed\n if (descriptor.get) {\n return computed.extend_(adm, key, descriptor, proxyTrap);\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.extend_\n return adm.defineProperty_(key, {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set: createAction(key.toString(), descriptor.set)\n }, proxyTrap);\n }\n // other -> observable\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && (_this$options_5 = this.options_) != null && _this$options_5.autoBind) {\n var _adm$proxy_2;\n descriptor.value = descriptor.value.bind((_adm$proxy_2 = adm.proxy_) != null ? _adm$proxy_2 : adm.target_);\n }\n var observableAnnotation = ((_this$options_6 = this.options_) == null ? void 0 : _this$options_6.deep) === false ? observable.ref : observable;\n return observableAnnotation.extend_(adm, key, descriptor, proxyTrap);\n}\n\nvar OBSERVABLE = \"observable\";\nvar OBSERVABLE_REF = \"observable.ref\";\nvar OBSERVABLE_SHALLOW = \"observable.shallow\";\nvar OBSERVABLE_STRUCT = \"observable.struct\";\n// Predefined bags of create observable options, to avoid allocating temporarily option objects\n// in the majority of cases\nvar defaultCreateObservableOptions = {\n deep: true,\n name: undefined,\n defaultDecorator: undefined,\n proxy: true\n};\nObject.freeze(defaultCreateObservableOptions);\nfunction asCreateObservableOptions(thing) {\n return thing || defaultCreateObservableOptions;\n}\nvar observableAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE);\nvar observableRefAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE_REF, {\n enhancer: referenceEnhancer\n});\nvar observableShallowAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE_SHALLOW, {\n enhancer: shallowEnhancer\n});\nvar observableStructAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE_STRUCT, {\n enhancer: refStructEnhancer\n});\nvar observableDecoratorAnnotation = /*#__PURE__*/createDecoratorAnnotation(observableAnnotation);\nfunction getEnhancerFromOptions(options) {\n return options.deep === true ? deepEnhancer : options.deep === false ? referenceEnhancer : getEnhancerFromAnnotation(options.defaultDecorator);\n}\nfunction getAnnotationFromOptions(options) {\n var _options$defaultDecor;\n return options ? (_options$defaultDecor = options.defaultDecorator) != null ? _options$defaultDecor : createAutoAnnotation(options) : undefined;\n}\nfunction getEnhancerFromAnnotation(annotation) {\n var _annotation$options_$, _annotation$options_;\n return !annotation ? deepEnhancer : (_annotation$options_$ = (_annotation$options_ = annotation.options_) == null ? void 0 : _annotation$options_.enhancer) != null ? _annotation$options_$ : deepEnhancer;\n}\n/**\r\n * Turns an object, array or function into a reactive structure.\r\n * @param v the value which should become observable.\r\n */\nfunction createObservable(v, arg2, arg3) {\n // @observable someProp;\n if (isStringish(arg2)) {\n storeAnnotation(v, arg2, observableAnnotation);\n return;\n }\n // already observable - ignore\n if (isObservable(v)) {\n return v;\n }\n // plain object\n if (isPlainObject(v)) {\n return observable.object(v, arg2, arg3);\n }\n // Array\n if (Array.isArray(v)) {\n return observable.array(v, arg2);\n }\n // Map\n if (isES6Map(v)) {\n return observable.map(v, arg2);\n }\n // Set\n if (isES6Set(v)) {\n return observable.set(v, arg2);\n }\n // other object - ignore\n if (typeof v === \"object\" && v !== null) {\n return v;\n }\n // anything else\n return observable.box(v, arg2);\n}\nassign(createObservable, observableDecoratorAnnotation);\nvar observableFactories = {\n box: function box(value, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableValue(value, getEnhancerFromOptions(o), o.name, true, o.equals);\n },\n array: function array(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return (globalState.useProxies === false || o.proxy === false ? createLegacyArray : createObservableArray)(initialValues, getEnhancerFromOptions(o), o.name);\n },\n map: function map(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableMap(initialValues, getEnhancerFromOptions(o), o.name);\n },\n set: function set(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableSet(initialValues, getEnhancerFromOptions(o), o.name);\n },\n object: function object(props, decorators, options) {\n return extendObservable(globalState.useProxies === false || (options == null ? void 0 : options.proxy) === false ? asObservableObject({}, options) : asDynamicObservableObject({}, options), props, decorators);\n },\n ref: /*#__PURE__*/createDecoratorAnnotation(observableRefAnnotation),\n shallow: /*#__PURE__*/createDecoratorAnnotation(observableShallowAnnotation),\n deep: observableDecoratorAnnotation,\n struct: /*#__PURE__*/createDecoratorAnnotation(observableStructAnnotation)\n};\n// eslint-disable-next-line\nvar observable = /*#__PURE__*/assign(createObservable, observableFactories);\n\nvar COMPUTED = \"computed\";\nvar COMPUTED_STRUCT = \"computed.struct\";\nvar computedAnnotation = /*#__PURE__*/createComputedAnnotation(COMPUTED);\nvar computedStructAnnotation = /*#__PURE__*/createComputedAnnotation(COMPUTED_STRUCT, {\n equals: comparer.structural\n});\n/**\r\n * Decorator for class properties: @computed get value() { return expr; }.\r\n * For legacy purposes also invokable as ES5 observable created: `computed(() => expr)`;\r\n */\nvar computed = function computed(arg1, arg2) {\n if (isStringish(arg2)) {\n // @computed\n return storeAnnotation(arg1, arg2, computedAnnotation);\n }\n if (isPlainObject(arg1)) {\n // @computed({ options })\n return createDecoratorAnnotation(createComputedAnnotation(COMPUTED, arg1));\n }\n // computed(expr, options?)\n {\n if (!isFunction(arg1)) {\n die(\"First argument to `computed` should be an expression.\");\n }\n if (isFunction(arg2)) {\n die(\"A setter as second argument is no longer supported, use `{ set: fn }` option instead\");\n }\n }\n var opts = isPlainObject(arg2) ? arg2 : {};\n opts.get = arg1;\n opts.name || (opts.name = arg1.name || \"\"); /* for generated name */\n return new ComputedValue(opts);\n};\nObject.assign(computed, computedAnnotation);\ncomputed.struct = /*#__PURE__*/createDecoratorAnnotation(computedStructAnnotation);\n\nvar _getDescriptor$config, _getDescriptor;\n// we don't use globalState for these in order to avoid possible issues with multiple\n// mobx versions\nvar currentActionId = 0;\nvar nextActionId = 1;\nvar isFunctionNameConfigurable = (_getDescriptor$config = (_getDescriptor = /*#__PURE__*/getDescriptor(function () {}, \"name\")) == null ? void 0 : _getDescriptor.configurable) != null ? _getDescriptor$config : false;\n// we can safely recycle this object\nvar tmpNameDescriptor = {\n value: \"action\",\n configurable: true,\n writable: false,\n enumerable: false\n};\nfunction createAction(actionName, fn, autoAction, ref) {\n if (autoAction === void 0) {\n autoAction = false;\n }\n {\n if (!isFunction(fn)) {\n die(\"`action` can only be invoked on functions\");\n }\n if (typeof actionName !== \"string\" || !actionName) {\n die(\"actions should have valid names, got: '\" + actionName + \"'\");\n }\n }\n function res() {\n return executeAction(actionName, autoAction, fn, ref || this, arguments);\n }\n res.isMobxAction = true;\n if (isFunctionNameConfigurable) {\n tmpNameDescriptor.value = actionName;\n defineProperty(res, \"name\", tmpNameDescriptor);\n }\n return res;\n}\nfunction executeAction(actionName, canRunAsDerivation, fn, scope, args) {\n var runInfo = _startAction(actionName, canRunAsDerivation, scope, args);\n try {\n return fn.apply(scope, args);\n } catch (err) {\n runInfo.error_ = err;\n throw err;\n } finally {\n _endAction(runInfo);\n }\n}\nfunction _startAction(actionName, canRunAsDerivation,\n// true for autoAction\nscope, args) {\n var notifySpy_ = isSpyEnabled() && !!actionName;\n var startTime_ = 0;\n if ( notifySpy_) {\n startTime_ = Date.now();\n var flattenedArgs = args ? Array.from(args) : EMPTY_ARRAY;\n spyReportStart({\n type: ACTION,\n name: actionName,\n object: scope,\n arguments: flattenedArgs\n });\n }\n var prevDerivation_ = globalState.trackingDerivation;\n var runAsAction = !canRunAsDerivation || !prevDerivation_;\n startBatch();\n var prevAllowStateChanges_ = globalState.allowStateChanges; // by default preserve previous allow\n if (runAsAction) {\n untrackedStart();\n prevAllowStateChanges_ = allowStateChangesStart(true);\n }\n var prevAllowStateReads_ = allowStateReadsStart(true);\n var runInfo = {\n runAsAction_: runAsAction,\n prevDerivation_: prevDerivation_,\n prevAllowStateChanges_: prevAllowStateChanges_,\n prevAllowStateReads_: prevAllowStateReads_,\n notifySpy_: notifySpy_,\n startTime_: startTime_,\n actionId_: nextActionId++,\n parentActionId_: currentActionId\n };\n currentActionId = runInfo.actionId_;\n return runInfo;\n}\nfunction _endAction(runInfo) {\n if (currentActionId !== runInfo.actionId_) {\n die(30);\n }\n currentActionId = runInfo.parentActionId_;\n if (runInfo.error_ !== undefined) {\n globalState.suppressReactionErrors = true;\n }\n allowStateChangesEnd(runInfo.prevAllowStateChanges_);\n allowStateReadsEnd(runInfo.prevAllowStateReads_);\n endBatch();\n if (runInfo.runAsAction_) {\n untrackedEnd(runInfo.prevDerivation_);\n }\n if ( runInfo.notifySpy_) {\n spyReportEnd({\n time: Date.now() - runInfo.startTime_\n });\n }\n globalState.suppressReactionErrors = false;\n}\nfunction allowStateChanges(allowStateChanges, func) {\n var prev = allowStateChangesStart(allowStateChanges);\n try {\n return func();\n } finally {\n allowStateChangesEnd(prev);\n }\n}\nfunction allowStateChangesStart(allowStateChanges) {\n var prev = globalState.allowStateChanges;\n globalState.allowStateChanges = allowStateChanges;\n return prev;\n}\nfunction allowStateChangesEnd(prev) {\n globalState.allowStateChanges = prev;\n}\n\nvar _Symbol$toPrimitive;\nvar CREATE = \"create\";\n_Symbol$toPrimitive = Symbol.toPrimitive;\nvar ObservableValue = /*#__PURE__*/function (_Atom) {\n _inheritsLoose(ObservableValue, _Atom);\n function ObservableValue(value, enhancer, name_, notifySpy, equals) {\n var _this;\n if (name_ === void 0) {\n name_ = \"ObservableValue@\" + getNextId() ;\n }\n if (notifySpy === void 0) {\n notifySpy = true;\n }\n if (equals === void 0) {\n equals = comparer[\"default\"];\n }\n _this = _Atom.call(this, name_) || this;\n _this.enhancer = void 0;\n _this.name_ = void 0;\n _this.equals = void 0;\n _this.hasUnreportedChange_ = false;\n _this.interceptors_ = void 0;\n _this.changeListeners_ = void 0;\n _this.value_ = void 0;\n _this.dehancer = void 0;\n _this.enhancer = enhancer;\n _this.name_ = name_;\n _this.equals = equals;\n _this.value_ = enhancer(value, undefined, name_);\n if ( notifySpy && isSpyEnabled()) {\n // only notify spy if this is a stand-alone observable\n spyReport({\n type: CREATE,\n object: _assertThisInitialized(_this),\n observableKind: \"value\",\n debugObjectName: _this.name_,\n newValue: \"\" + _this.value_\n });\n }\n return _this;\n }\n var _proto = ObservableValue.prototype;\n _proto.dehanceValue = function dehanceValue(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.set = function set(newValue) {\n var oldValue = this.value_;\n newValue = this.prepareNewValue_(newValue);\n if (newValue !== globalState.UNCHANGED) {\n var notifySpy = isSpyEnabled();\n if ( notifySpy) {\n spyReportStart({\n type: UPDATE,\n object: this,\n observableKind: \"value\",\n debugObjectName: this.name_,\n newValue: newValue,\n oldValue: oldValue\n });\n }\n this.setNewValue_(newValue);\n if ( notifySpy) {\n spyReportEnd();\n }\n }\n };\n _proto.prepareNewValue_ = function prepareNewValue_(newValue) {\n checkIfStateModificationsAreAllowed(this);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this,\n type: UPDATE,\n newValue: newValue\n });\n if (!change) {\n return globalState.UNCHANGED;\n }\n newValue = change.newValue;\n }\n // apply modifier\n newValue = this.enhancer(newValue, this.value_, this.name_);\n return this.equals(this.value_, newValue) ? globalState.UNCHANGED : newValue;\n };\n _proto.setNewValue_ = function setNewValue_(newValue) {\n var oldValue = this.value_;\n this.value_ = newValue;\n this.reportChanged();\n if (hasListeners(this)) {\n notifyListeners(this, {\n type: UPDATE,\n object: this,\n newValue: newValue,\n oldValue: oldValue\n });\n }\n };\n _proto.get = function get() {\n this.reportObserved();\n return this.dehanceValue(this.value_);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if (fireImmediately) {\n listener({\n observableKind: \"value\",\n debugObjectName: this.name_,\n object: this,\n type: UPDATE,\n newValue: this.value_,\n oldValue: undefined\n });\n }\n return registerListener(this, listener);\n };\n _proto.raw = function raw() {\n // used by MST ot get undehanced value\n return this.value_;\n };\n _proto.toJSON = function toJSON() {\n return this.get();\n };\n _proto.toString = function toString() {\n return this.name_ + \"[\" + this.value_ + \"]\";\n };\n _proto.valueOf = function valueOf() {\n return toPrimitive(this.get());\n };\n _proto[_Symbol$toPrimitive] = function () {\n return this.valueOf();\n };\n return ObservableValue;\n}(Atom);\nvar isObservableValue = /*#__PURE__*/createInstanceofPredicate(\"ObservableValue\", ObservableValue);\n\nvar _Symbol$toPrimitive$1;\n/**\r\n * A node in the state dependency root that observes other nodes, and can be observed itself.\r\n *\r\n * ComputedValue will remember the result of the computation for the duration of the batch, or\r\n * while being observed.\r\n *\r\n * During this time it will recompute only when one of its direct dependencies changed,\r\n * but only when it is being accessed with `ComputedValue.get()`.\r\n *\r\n * Implementation description:\r\n * 1. First time it's being accessed it will compute and remember result\r\n * give back remembered result until 2. happens\r\n * 2. First time any deep dependency change, propagate POSSIBLY_STALE to all observers, wait for 3.\r\n * 3. When it's being accessed, recompute if any shallow dependency changed.\r\n * if result changed: propagate STALE to all observers, that were POSSIBLY_STALE from the last step.\r\n * go to step 2. either way\r\n *\r\n * If at any point it's outside batch and it isn't observed: reset everything and go to 1.\r\n */\n_Symbol$toPrimitive$1 = Symbol.toPrimitive;\nvar ComputedValue = /*#__PURE__*/function () {\n // nodes we are looking at. Our value depends on these nodes\n // during tracking it's an array with new observed observers\n\n // to check for cycles\n\n // N.B: unminified as it is used by MST\n\n /**\r\n * Create a new computed value based on a function expression.\r\n *\r\n * The `name` property is for debug purposes only.\r\n *\r\n * The `equals` property specifies the comparer function to use to determine if a newly produced\r\n * value differs from the previous value. Two comparers are provided in the library; `defaultComparer`\r\n * compares based on identity comparison (===), and `structuralComparer` deeply compares the structure.\r\n * Structural comparison can be convenient if you always produce a new aggregated object and\r\n * don't want to notify observers if it is structurally the same.\r\n * This is useful for working with vectors, mouse coordinates etc.\r\n */\n function ComputedValue(options) {\n this.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n this.observing_ = [];\n this.newObserving_ = null;\n this.isBeingObserved_ = false;\n this.isPendingUnobservation_ = false;\n this.observers_ = new Set();\n this.diffValue_ = 0;\n this.runId_ = 0;\n this.lastAccessedBy_ = 0;\n this.lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n this.unboundDepsCount_ = 0;\n this.value_ = new CaughtException(null);\n this.name_ = void 0;\n this.triggeredBy_ = void 0;\n this.isComputing_ = false;\n this.isRunningSetter_ = false;\n this.derivation = void 0;\n this.setter_ = void 0;\n this.isTracing_ = TraceMode.NONE;\n this.scope_ = void 0;\n this.equals_ = void 0;\n this.requiresReaction_ = void 0;\n this.keepAlive_ = void 0;\n this.onBOL = void 0;\n this.onBUOL = void 0;\n if (!options.get) {\n die(31);\n }\n this.derivation = options.get;\n this.name_ = options.name || ( \"ComputedValue@\" + getNextId() );\n if (options.set) {\n this.setter_ = createAction( this.name_ + \"-setter\" , options.set);\n }\n this.equals_ = options.equals || (options.compareStructural || options.struct ? comparer.structural : comparer[\"default\"]);\n this.scope_ = options.context;\n this.requiresReaction_ = options.requiresReaction;\n this.keepAlive_ = !!options.keepAlive;\n }\n var _proto = ComputedValue.prototype;\n _proto.onBecomeStale_ = function onBecomeStale_() {\n propagateMaybeChanged(this);\n };\n _proto.onBO = function onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(function (listener) {\n return listener();\n });\n }\n };\n _proto.onBUO = function onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(function (listener) {\n return listener();\n });\n }\n }\n /**\r\n * Returns the current value of this computed value.\r\n * Will evaluate its computation first if needed.\r\n */;\n _proto.get = function get() {\n if (this.isComputing_) {\n die(32, this.name_, this.derivation);\n }\n if (globalState.inBatch === 0 &&\n // !globalState.trackingDerivatpion &&\n this.observers_.size === 0 && !this.keepAlive_) {\n if (shouldCompute(this)) {\n this.warnAboutUntrackedRead_();\n startBatch(); // See perf test 'computed memoization'\n this.value_ = this.computeValue_(false);\n endBatch();\n }\n } else {\n reportObserved(this);\n if (shouldCompute(this)) {\n var prevTrackingContext = globalState.trackingContext;\n if (this.keepAlive_ && !prevTrackingContext) {\n globalState.trackingContext = this;\n }\n if (this.trackAndCompute()) {\n propagateChangeConfirmed(this);\n }\n globalState.trackingContext = prevTrackingContext;\n }\n }\n var result = this.value_;\n if (isCaughtException(result)) {\n throw result.cause;\n }\n return result;\n };\n _proto.set = function set(value) {\n if (this.setter_) {\n if (this.isRunningSetter_) {\n die(33, this.name_);\n }\n this.isRunningSetter_ = true;\n try {\n this.setter_.call(this.scope_, value);\n } finally {\n this.isRunningSetter_ = false;\n }\n } else {\n die(34, this.name_);\n }\n };\n _proto.trackAndCompute = function trackAndCompute() {\n // N.B: unminified as it is used by MST\n var oldValue = this.value_;\n var wasSuspended = /* see #1208 */this.dependenciesState_ === IDerivationState_.NOT_TRACKING_;\n var newValue = this.computeValue_(true);\n var changed = wasSuspended || isCaughtException(oldValue) || isCaughtException(newValue) || !this.equals_(oldValue, newValue);\n if (changed) {\n this.value_ = newValue;\n if ( isSpyEnabled()) {\n spyReport({\n observableKind: \"computed\",\n debugObjectName: this.name_,\n object: this.scope_,\n type: \"update\",\n oldValue: oldValue,\n newValue: newValue\n });\n }\n }\n return changed;\n };\n _proto.computeValue_ = function computeValue_(track) {\n this.isComputing_ = true;\n // don't allow state changes during computation\n var prev = allowStateChangesStart(false);\n var res;\n if (track) {\n res = trackDerivedFunction(this, this.derivation, this.scope_);\n } else {\n if (globalState.disableErrorBoundaries === true) {\n res = this.derivation.call(this.scope_);\n } else {\n try {\n res = this.derivation.call(this.scope_);\n } catch (e) {\n res = new CaughtException(e);\n }\n }\n }\n allowStateChangesEnd(prev);\n this.isComputing_ = false;\n return res;\n };\n _proto.suspend_ = function suspend_() {\n if (!this.keepAlive_) {\n clearObserving(this);\n this.value_ = undefined; // don't hold on to computed value!\n if ( this.isTracing_ !== TraceMode.NONE) {\n console.log(\"[mobx.trace] Computed value '\" + this.name_ + \"' was suspended and it will recompute on the next access.\");\n }\n }\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n var _this = this;\n var firstTime = true;\n var prevValue = undefined;\n return autorun(function () {\n // TODO: why is this in a different place than the spyReport() function? in all other observables it's called in the same place\n var newValue = _this.get();\n if (!firstTime || fireImmediately) {\n var prevU = untrackedStart();\n listener({\n observableKind: \"computed\",\n debugObjectName: _this.name_,\n type: UPDATE,\n object: _this,\n newValue: newValue,\n oldValue: prevValue\n });\n untrackedEnd(prevU);\n }\n firstTime = false;\n prevValue = newValue;\n });\n };\n _proto.warnAboutUntrackedRead_ = function warnAboutUntrackedRead_() {\n if (this.isTracing_ !== TraceMode.NONE) {\n console.log(\"[mobx.trace] Computed value '\" + this.name_ + \"' is being read outside a reactive context. Doing a full recompute.\");\n }\n if (typeof this.requiresReaction_ === \"boolean\" ? this.requiresReaction_ : globalState.computedRequiresReaction) {\n console.warn(\"[mobx] Computed value '\" + this.name_ + \"' is being read outside a reactive context. Doing a full recompute.\");\n }\n };\n _proto.toString = function toString() {\n return this.name_ + \"[\" + this.derivation.toString() + \"]\";\n };\n _proto.valueOf = function valueOf() {\n return toPrimitive(this.get());\n };\n _proto[_Symbol$toPrimitive$1] = function () {\n return this.valueOf();\n };\n return ComputedValue;\n}();\nvar isComputedValue = /*#__PURE__*/createInstanceofPredicate(\"ComputedValue\", ComputedValue);\n\nvar IDerivationState_;\n(function (IDerivationState_) {\n // before being run or (outside batch and not being observed)\n // at this point derivation is not holding any data about dependency tree\n IDerivationState_[IDerivationState_[\"NOT_TRACKING_\"] = -1] = \"NOT_TRACKING_\";\n // no shallow dependency changed since last computation\n // won't recalculate derivation\n // this is what makes mobx fast\n IDerivationState_[IDerivationState_[\"UP_TO_DATE_\"] = 0] = \"UP_TO_DATE_\";\n // some deep dependency changed, but don't know if shallow dependency changed\n // will require to check first if UP_TO_DATE or POSSIBLY_STALE\n // currently only ComputedValue will propagate POSSIBLY_STALE\n //\n // having this state is second big optimization:\n // don't have to recompute on every dependency change, but only when it's needed\n IDerivationState_[IDerivationState_[\"POSSIBLY_STALE_\"] = 1] = \"POSSIBLY_STALE_\";\n // A shallow dependency has changed since last computation and the derivation\n // will need to recompute when it's needed next.\n IDerivationState_[IDerivationState_[\"STALE_\"] = 2] = \"STALE_\";\n})(IDerivationState_ || (IDerivationState_ = {}));\nvar TraceMode;\n(function (TraceMode) {\n TraceMode[TraceMode[\"NONE\"] = 0] = \"NONE\";\n TraceMode[TraceMode[\"LOG\"] = 1] = \"LOG\";\n TraceMode[TraceMode[\"BREAK\"] = 2] = \"BREAK\";\n})(TraceMode || (TraceMode = {}));\nvar CaughtException = function CaughtException(cause) {\n this.cause = void 0;\n this.cause = cause;\n // Empty\n};\n\nfunction isCaughtException(e) {\n return e instanceof CaughtException;\n}\n/**\r\n * Finds out whether any dependency of the derivation has actually changed.\r\n * If dependenciesState is 1 then it will recalculate dependencies,\r\n * if any dependency changed it will propagate it by changing dependenciesState to 2.\r\n *\r\n * By iterating over the dependencies in the same order that they were reported and\r\n * stopping on the first change, all the recalculations are only called for ComputedValues\r\n * that will be tracked by derivation. That is because we assume that if the first x\r\n * dependencies of the derivation doesn't change then the derivation should run the same way\r\n * up until accessing x-th dependency.\r\n */\nfunction shouldCompute(derivation) {\n switch (derivation.dependenciesState_) {\n case IDerivationState_.UP_TO_DATE_:\n return false;\n case IDerivationState_.NOT_TRACKING_:\n case IDerivationState_.STALE_:\n return true;\n case IDerivationState_.POSSIBLY_STALE_:\n {\n // state propagation can occur outside of action/reactive context #2195\n var prevAllowStateReads = allowStateReadsStart(true);\n var prevUntracked = untrackedStart(); // no need for those computeds to be reported, they will be picked up in trackDerivedFunction.\n var obs = derivation.observing_,\n l = obs.length;\n for (var i = 0; i < l; i++) {\n var obj = obs[i];\n if (isComputedValue(obj)) {\n if (globalState.disableErrorBoundaries) {\n obj.get();\n } else {\n try {\n obj.get();\n } catch (e) {\n // we are not interested in the value *or* exception at this moment, but if there is one, notify all\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return true;\n }\n }\n // if ComputedValue `obj` actually changed it will be computed and propagated to its observers.\n // and `derivation` is an observer of `obj`\n // invariantShouldCompute(derivation)\n if (derivation.dependenciesState_ === IDerivationState_.STALE_) {\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return true;\n }\n }\n }\n changeDependenciesStateTo0(derivation);\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return false;\n }\n }\n}\nfunction isComputingDerivation() {\n return globalState.trackingDerivation !== null; // filter out actions inside computations\n}\n\nfunction checkIfStateModificationsAreAllowed(atom) {\n var hasObservers = atom.observers_.size > 0;\n // Should not be possible to change observed state outside strict mode, except during initialization, see #563\n if (!globalState.allowStateChanges && (hasObservers || globalState.enforceActions === \"always\")) {\n console.warn(\"[MobX] \" + (globalState.enforceActions ? \"Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: \" : \"Side effects like changing state are not allowed at this point. Are you trying to modify state from, for example, a computed value or the render function of a React component? You can wrap side effects in 'runInAction' (or decorate functions with 'action') if needed. Tried to modify: \") + atom.name_);\n }\n}\nfunction checkIfStateReadsAreAllowed(observable) {\n if ( !globalState.allowStateReads && globalState.observableRequiresReaction) {\n console.warn(\"[mobx] Observable '\" + observable.name_ + \"' being read outside a reactive context.\");\n }\n}\n/**\r\n * Executes the provided function `f` and tracks which observables are being accessed.\r\n * The tracking information is stored on the `derivation` object and the derivation is registered\r\n * as observer of any of the accessed observables.\r\n */\nfunction trackDerivedFunction(derivation, f, context) {\n var prevAllowStateReads = allowStateReadsStart(true);\n // pre allocate array allocation + room for variation in deps\n // array will be trimmed by bindDependencies\n changeDependenciesStateTo0(derivation);\n derivation.newObserving_ = new Array(derivation.observing_.length + 100);\n derivation.unboundDepsCount_ = 0;\n derivation.runId_ = ++globalState.runId;\n var prevTracking = globalState.trackingDerivation;\n globalState.trackingDerivation = derivation;\n globalState.inBatch++;\n var result;\n if (globalState.disableErrorBoundaries === true) {\n result = f.call(context);\n } else {\n try {\n result = f.call(context);\n } catch (e) {\n result = new CaughtException(e);\n }\n }\n globalState.inBatch--;\n globalState.trackingDerivation = prevTracking;\n bindDependencies(derivation);\n warnAboutDerivationWithoutDependencies(derivation);\n allowStateReadsEnd(prevAllowStateReads);\n return result;\n}\nfunction warnAboutDerivationWithoutDependencies(derivation) {\n if (derivation.observing_.length !== 0) {\n return;\n }\n if (typeof derivation.requiresObservable_ === \"boolean\" ? derivation.requiresObservable_ : globalState.reactionRequiresObservable) {\n console.warn(\"[mobx] Derivation '\" + derivation.name_ + \"' is created/updated without reading any observable value.\");\n }\n}\n/**\r\n * diffs newObserving with observing.\r\n * update observing to be newObserving with unique observables\r\n * notify observers that become observed/unobserved\r\n */\nfunction bindDependencies(derivation) {\n // invariant(derivation.dependenciesState !== IDerivationState.NOT_TRACKING, \"INTERNAL ERROR bindDependencies expects derivation.dependenciesState !== -1\");\n var prevObserving = derivation.observing_;\n var observing = derivation.observing_ = derivation.newObserving_;\n var lowestNewObservingDerivationState = IDerivationState_.UP_TO_DATE_;\n // Go through all new observables and check diffValue: (this list can contain duplicates):\n // 0: first occurrence, change to 1 and keep it\n // 1: extra occurrence, drop it\n var i0 = 0,\n l = derivation.unboundDepsCount_;\n for (var i = 0; i < l; i++) {\n var dep = observing[i];\n if (dep.diffValue_ === 0) {\n dep.diffValue_ = 1;\n if (i0 !== i) {\n observing[i0] = dep;\n }\n i0++;\n }\n // Upcast is 'safe' here, because if dep is IObservable, `dependenciesState` will be undefined,\n // not hitting the condition\n if (dep.dependenciesState_ > lowestNewObservingDerivationState) {\n lowestNewObservingDerivationState = dep.dependenciesState_;\n }\n }\n observing.length = i0;\n derivation.newObserving_ = null; // newObserving shouldn't be needed outside tracking (statement moved down to work around FF bug, see #614)\n // Go through all old observables and check diffValue: (it is unique after last bindDependencies)\n // 0: it's not in new observables, unobserve it\n // 1: it keeps being observed, don't want to notify it. change to 0\n l = prevObserving.length;\n while (l--) {\n var _dep = prevObserving[l];\n if (_dep.diffValue_ === 0) {\n removeObserver(_dep, derivation);\n }\n _dep.diffValue_ = 0;\n }\n // Go through all new observables and check diffValue: (now it should be unique)\n // 0: it was set to 0 in last loop. don't need to do anything.\n // 1: it wasn't observed, let's observe it. set back to 0\n while (i0--) {\n var _dep2 = observing[i0];\n if (_dep2.diffValue_ === 1) {\n _dep2.diffValue_ = 0;\n addObserver(_dep2, derivation);\n }\n }\n // Some new observed derivations may become stale during this derivation computation\n // so they have had no chance to propagate staleness (#916)\n if (lowestNewObservingDerivationState !== IDerivationState_.UP_TO_DATE_) {\n derivation.dependenciesState_ = lowestNewObservingDerivationState;\n derivation.onBecomeStale_();\n }\n}\nfunction clearObserving(derivation) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR clearObserving should be called only inside batch\");\n var obs = derivation.observing_;\n derivation.observing_ = [];\n var i = obs.length;\n while (i--) {\n removeObserver(obs[i], derivation);\n }\n derivation.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n}\nfunction untracked(action) {\n var prev = untrackedStart();\n try {\n return action();\n } finally {\n untrackedEnd(prev);\n }\n}\nfunction untrackedStart() {\n var prev = globalState.trackingDerivation;\n globalState.trackingDerivation = null;\n return prev;\n}\nfunction untrackedEnd(prev) {\n globalState.trackingDerivation = prev;\n}\nfunction allowStateReadsStart(allowStateReads) {\n var prev = globalState.allowStateReads;\n globalState.allowStateReads = allowStateReads;\n return prev;\n}\nfunction allowStateReadsEnd(prev) {\n globalState.allowStateReads = prev;\n}\n/**\r\n * needed to keep `lowestObserverState` correct. when changing from (2 or 1) to 0\r\n *\r\n */\nfunction changeDependenciesStateTo0(derivation) {\n if (derivation.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n return;\n }\n derivation.dependenciesState_ = IDerivationState_.UP_TO_DATE_;\n var obs = derivation.observing_;\n var i = obs.length;\n while (i--) {\n obs[i].lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n }\n}\n\n/**\r\n * These values will persist if global state is reset\r\n */\nvar persistentKeys = [\"mobxGuid\", \"spyListeners\", \"enforceActions\", \"computedRequiresReaction\", \"reactionRequiresObservable\", \"observableRequiresReaction\", \"allowStateReads\", \"disableErrorBoundaries\", \"runId\", \"UNCHANGED\", \"useProxies\"];\nvar MobXGlobals = function MobXGlobals() {\n this.version = 6;\n this.UNCHANGED = {};\n this.trackingDerivation = null;\n this.trackingContext = null;\n this.runId = 0;\n this.mobxGuid = 0;\n this.inBatch = 0;\n this.pendingUnobservations = [];\n this.pendingReactions = [];\n this.isRunningReactions = false;\n this.allowStateChanges = false;\n this.allowStateReads = true;\n this.enforceActions = true;\n this.spyListeners = [];\n this.globalReactionErrorHandlers = [];\n this.computedRequiresReaction = false;\n this.reactionRequiresObservable = false;\n this.observableRequiresReaction = false;\n this.disableErrorBoundaries = false;\n this.suppressReactionErrors = false;\n this.useProxies = true;\n this.verifyProxies = false;\n this.safeDescriptors = true;\n this.stateVersion = Number.MIN_SAFE_INTEGER;\n};\nvar canMergeGlobalState = true;\nvar isolateCalled = false;\nvar globalState = /*#__PURE__*/function () {\n var global = /*#__PURE__*/getGlobal();\n if (global.__mobxInstanceCount > 0 && !global.__mobxGlobals) {\n canMergeGlobalState = false;\n }\n if (global.__mobxGlobals && global.__mobxGlobals.version !== new MobXGlobals().version) {\n canMergeGlobalState = false;\n }\n if (!canMergeGlobalState) {\n // Because this is a IIFE we need to let isolateCalled a chance to change\n // so we run it after the event loop completed at least 1 iteration\n setTimeout(function () {\n if (!isolateCalled) {\n die(35);\n }\n }, 1);\n return new MobXGlobals();\n } else if (global.__mobxGlobals) {\n global.__mobxInstanceCount += 1;\n if (!global.__mobxGlobals.UNCHANGED) {\n global.__mobxGlobals.UNCHANGED = {};\n } // make merge backward compatible\n return global.__mobxGlobals;\n } else {\n global.__mobxInstanceCount = 1;\n return global.__mobxGlobals = /*#__PURE__*/new MobXGlobals();\n }\n}();\nfunction isolateGlobalState() {\n if (globalState.pendingReactions.length || globalState.inBatch || globalState.isRunningReactions) {\n die(36);\n }\n isolateCalled = true;\n if (canMergeGlobalState) {\n var global = getGlobal();\n if (--global.__mobxInstanceCount === 0) {\n global.__mobxGlobals = undefined;\n }\n globalState = new MobXGlobals();\n }\n}\nfunction getGlobalState() {\n return globalState;\n}\n/**\r\n * For testing purposes only; this will break the internal state of existing observables,\r\n * but can be used to get back at a stable state after throwing errors\r\n */\nfunction resetGlobalState() {\n var defaultGlobals = new MobXGlobals();\n for (var key in defaultGlobals) {\n if (persistentKeys.indexOf(key) === -1) {\n globalState[key] = defaultGlobals[key];\n }\n }\n globalState.allowStateChanges = !globalState.enforceActions;\n}\n\nfunction hasObservers(observable) {\n return observable.observers_ && observable.observers_.size > 0;\n}\nfunction getObservers(observable) {\n return observable.observers_;\n}\n// function invariantObservers(observable: IObservable) {\n// const list = observable.observers\n// const map = observable.observersIndexes\n// const l = list.length\n// for (let i = 0; i < l; i++) {\n// const id = list[i].__mapid\n// if (i) {\n// invariant(map[id] === i, \"INTERNAL ERROR maps derivation.__mapid to index in list\") // for performance\n// } else {\n// invariant(!(id in map), \"INTERNAL ERROR observer on index 0 shouldn't be held in map.\") // for performance\n// }\n// }\n// invariant(\n// list.length === 0 || Object.keys(map).length === list.length - 1,\n// \"INTERNAL ERROR there is no junk in map\"\n// )\n// }\nfunction addObserver(observable, node) {\n // invariant(node.dependenciesState !== -1, \"INTERNAL ERROR, can add only dependenciesState !== -1\");\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR add already added node\");\n // invariantObservers(observable);\n observable.observers_.add(node);\n if (observable.lowestObserverState_ > node.dependenciesState_) {\n observable.lowestObserverState_ = node.dependenciesState_;\n }\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR didn't add node\");\n}\n\nfunction removeObserver(observable, node) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR, remove should be called only inside batch\");\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR remove already removed node\");\n // invariantObservers(observable);\n observable.observers_[\"delete\"](node);\n if (observable.observers_.size === 0) {\n // deleting last observer\n queueForUnobservation(observable);\n }\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR remove already removed node2\");\n}\n\nfunction queueForUnobservation(observable) {\n if (observable.isPendingUnobservation_ === false) {\n // invariant(observable._observers.length === 0, \"INTERNAL ERROR, should only queue for unobservation unobserved observables\");\n observable.isPendingUnobservation_ = true;\n globalState.pendingUnobservations.push(observable);\n }\n}\n/**\r\n * Batch starts a transaction, at least for purposes of memoizing ComputedValues when nothing else does.\r\n * During a batch `onBecomeUnobserved` will be called at most once per observable.\r\n * Avoids unnecessary recalculations.\r\n */\nfunction startBatch() {\n globalState.inBatch++;\n}\nfunction endBatch() {\n if (--globalState.inBatch === 0) {\n runReactions();\n // the batch is actually about to finish, all unobserving should happen here.\n var list = globalState.pendingUnobservations;\n for (var i = 0; i < list.length; i++) {\n var observable = list[i];\n observable.isPendingUnobservation_ = false;\n if (observable.observers_.size === 0) {\n if (observable.isBeingObserved_) {\n // if this observable had reactive observers, trigger the hooks\n observable.isBeingObserved_ = false;\n observable.onBUO();\n }\n if (observable instanceof ComputedValue) {\n // computed values are automatically teared down when the last observer leaves\n // this process happens recursively, this computed might be the last observabe of another, etc..\n observable.suspend_();\n }\n }\n }\n globalState.pendingUnobservations = [];\n }\n}\nfunction reportObserved(observable) {\n checkIfStateReadsAreAllowed(observable);\n var derivation = globalState.trackingDerivation;\n if (derivation !== null) {\n /**\r\n * Simple optimization, give each derivation run an unique id (runId)\r\n * Check if last time this observable was accessed the same runId is used\r\n * if this is the case, the relation is already known\r\n */\n if (derivation.runId_ !== observable.lastAccessedBy_) {\n observable.lastAccessedBy_ = derivation.runId_;\n // Tried storing newObserving, or observing, or both as Set, but performance didn't come close...\n derivation.newObserving_[derivation.unboundDepsCount_++] = observable;\n if (!observable.isBeingObserved_ && globalState.trackingContext) {\n observable.isBeingObserved_ = true;\n observable.onBO();\n }\n }\n return observable.isBeingObserved_;\n } else if (observable.observers_.size === 0 && globalState.inBatch > 0) {\n queueForUnobservation(observable);\n }\n return false;\n}\n// function invariantLOS(observable: IObservable, msg: string) {\n// // it's expensive so better not run it in produciton. but temporarily helpful for testing\n// const min = getObservers(observable).reduce((a, b) => Math.min(a, b.dependenciesState), 2)\n// if (min >= observable.lowestObserverState) return // <- the only assumption about `lowestObserverState`\n// throw new Error(\n// \"lowestObserverState is wrong for \" +\n// msg +\n// \" because \" +\n// min +\n// \" < \" +\n// observable.lowestObserverState\n// )\n// }\n/**\r\n * NOTE: current propagation mechanism will in case of self reruning autoruns behave unexpectedly\r\n * It will propagate changes to observers from previous run\r\n * It's hard or maybe impossible (with reasonable perf) to get it right with current approach\r\n * Hopefully self reruning autoruns aren't a feature people should depend on\r\n * Also most basic use cases should be ok\r\n */\n// Called by Atom when its value changes\nfunction propagateChanged(observable) {\n // invariantLOS(observable, \"changed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return;\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_;\n // Ideally we use for..of here, but the downcompiled version is really slow...\n observable.observers_.forEach(function (d) {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n if ( d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable);\n }\n d.onBecomeStale_();\n }\n d.dependenciesState_ = IDerivationState_.STALE_;\n });\n // invariantLOS(observable, \"changed end\");\n}\n// Called by ComputedValue when it recalculate and its value changed\nfunction propagateChangeConfirmed(observable) {\n // invariantLOS(observable, \"confirmed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return;\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_;\n observable.observers_.forEach(function (d) {\n if (d.dependenciesState_ === IDerivationState_.POSSIBLY_STALE_) {\n d.dependenciesState_ = IDerivationState_.STALE_;\n if ( d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable);\n }\n } else if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_ // this happens during computing of `d`, just keep lowestObserverState up to date.\n ) {\n observable.lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n }\n });\n // invariantLOS(observable, \"confirmed end\");\n}\n// Used by computed when its dependency changed, but we don't wan't to immediately recompute.\nfunction propagateMaybeChanged(observable) {\n // invariantLOS(observable, \"maybe start\");\n if (observable.lowestObserverState_ !== IDerivationState_.UP_TO_DATE_) {\n return;\n }\n observable.lowestObserverState_ = IDerivationState_.POSSIBLY_STALE_;\n observable.observers_.forEach(function (d) {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n d.dependenciesState_ = IDerivationState_.POSSIBLY_STALE_;\n d.onBecomeStale_();\n }\n });\n // invariantLOS(observable, \"maybe end\");\n}\n\nfunction logTraceInfo(derivation, observable) {\n console.log(\"[mobx.trace] '\" + derivation.name_ + \"' is invalidated due to a change in: '\" + observable.name_ + \"'\");\n if (derivation.isTracing_ === TraceMode.BREAK) {\n var lines = [];\n printDepTree(getDependencyTree(derivation), lines, 1);\n // prettier-ignore\n new Function(\"debugger;\\n/*\\nTracing '\" + derivation.name_ + \"'\\n\\nYou are entering this break point because derivation '\" + derivation.name_ + \"' is being traced and '\" + observable.name_ + \"' is now forcing it to update.\\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\\n\\n\" + (derivation instanceof ComputedValue ? derivation.derivation.toString().replace(/[*]\\//g, \"/\") : \"\") + \"\\n\\nThe dependencies for this derivation are:\\n\\n\" + lines.join(\"\\n\") + \"\\n*/\\n \")();\n }\n}\nfunction printDepTree(tree, lines, depth) {\n if (lines.length >= 1000) {\n lines.push(\"(and many more)\");\n return;\n }\n lines.push(\"\" + \"\\t\".repeat(depth - 1) + tree.name);\n if (tree.dependencies) {\n tree.dependencies.forEach(function (child) {\n return printDepTree(child, lines, depth + 1);\n });\n }\n}\n\nvar Reaction = /*#__PURE__*/function () {\n // nodes we are looking at. Our value depends on these nodes\n\n function Reaction(name_, onInvalidate_, errorHandler_, requiresObservable_) {\n if (name_ === void 0) {\n name_ = \"Reaction@\" + getNextId() ;\n }\n this.name_ = void 0;\n this.onInvalidate_ = void 0;\n this.errorHandler_ = void 0;\n this.requiresObservable_ = void 0;\n this.observing_ = [];\n this.newObserving_ = [];\n this.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n this.diffValue_ = 0;\n this.runId_ = 0;\n this.unboundDepsCount_ = 0;\n this.isDisposed_ = false;\n this.isScheduled_ = false;\n this.isTrackPending_ = false;\n this.isRunning_ = false;\n this.isTracing_ = TraceMode.NONE;\n this.name_ = name_;\n this.onInvalidate_ = onInvalidate_;\n this.errorHandler_ = errorHandler_;\n this.requiresObservable_ = requiresObservable_;\n }\n var _proto = Reaction.prototype;\n _proto.onBecomeStale_ = function onBecomeStale_() {\n this.schedule_();\n };\n _proto.schedule_ = function schedule_() {\n if (!this.isScheduled_) {\n this.isScheduled_ = true;\n globalState.pendingReactions.push(this);\n runReactions();\n }\n };\n _proto.isScheduled = function isScheduled() {\n return this.isScheduled_;\n }\n /**\r\n * internal, use schedule() if you intend to kick off a reaction\r\n */;\n _proto.runReaction_ = function runReaction_() {\n if (!this.isDisposed_) {\n startBatch();\n this.isScheduled_ = false;\n var prev = globalState.trackingContext;\n globalState.trackingContext = this;\n if (shouldCompute(this)) {\n this.isTrackPending_ = true;\n try {\n this.onInvalidate_();\n if (\"development\" !== \"production\" && this.isTrackPending_ && isSpyEnabled()) {\n // onInvalidate didn't trigger track right away..\n spyReport({\n name: this.name_,\n type: \"scheduled-reaction\"\n });\n }\n } catch (e) {\n this.reportExceptionInDerivation_(e);\n }\n }\n globalState.trackingContext = prev;\n endBatch();\n }\n };\n _proto.track = function track(fn) {\n if (this.isDisposed_) {\n return;\n // console.warn(\"Reaction already disposed\") // Note: Not a warning / error in mobx 4 either\n }\n\n startBatch();\n var notify = isSpyEnabled();\n var startTime;\n if ( notify) {\n startTime = Date.now();\n spyReportStart({\n name: this.name_,\n type: \"reaction\"\n });\n }\n this.isRunning_ = true;\n var prevReaction = globalState.trackingContext; // reactions could create reactions...\n globalState.trackingContext = this;\n var result = trackDerivedFunction(this, fn, undefined);\n globalState.trackingContext = prevReaction;\n this.isRunning_ = false;\n this.isTrackPending_ = false;\n if (this.isDisposed_) {\n // disposed during last run. Clean up everything that was bound after the dispose call.\n clearObserving(this);\n }\n if (isCaughtException(result)) {\n this.reportExceptionInDerivation_(result.cause);\n }\n if ( notify) {\n spyReportEnd({\n time: Date.now() - startTime\n });\n }\n endBatch();\n };\n _proto.reportExceptionInDerivation_ = function reportExceptionInDerivation_(error) {\n var _this = this;\n if (this.errorHandler_) {\n this.errorHandler_(error, this);\n return;\n }\n if (globalState.disableErrorBoundaries) {\n throw error;\n }\n var message = \"[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '\" + this + \"'\" ;\n if (!globalState.suppressReactionErrors) {\n console.error(message, error);\n /** If debugging brought you here, please, read the above message :-). Tnx! */\n } else {\n console.warn(\"[mobx] (error in reaction '\" + this.name_ + \"' suppressed, fix error of causing action below)\");\n } // prettier-ignore\n if ( isSpyEnabled()) {\n spyReport({\n type: \"error\",\n name: this.name_,\n message: message,\n error: \"\" + error\n });\n }\n globalState.globalReactionErrorHandlers.forEach(function (f) {\n return f(error, _this);\n });\n };\n _proto.dispose = function dispose() {\n if (!this.isDisposed_) {\n this.isDisposed_ = true;\n if (!this.isRunning_) {\n // if disposed while running, clean up later. Maybe not optimal, but rare case\n startBatch();\n clearObserving(this);\n endBatch();\n }\n }\n };\n _proto.getDisposer_ = function getDisposer_() {\n var r = this.dispose.bind(this);\n r[$mobx] = this;\n return r;\n };\n _proto.toString = function toString() {\n return \"Reaction[\" + this.name_ + \"]\";\n };\n _proto.trace = function trace$1(enterBreakPoint) {\n if (enterBreakPoint === void 0) {\n enterBreakPoint = false;\n }\n trace(this, enterBreakPoint);\n };\n return Reaction;\n}();\nfunction onReactionError(handler) {\n globalState.globalReactionErrorHandlers.push(handler);\n return function () {\n var idx = globalState.globalReactionErrorHandlers.indexOf(handler);\n if (idx >= 0) {\n globalState.globalReactionErrorHandlers.splice(idx, 1);\n }\n };\n}\n/**\r\n * Magic number alert!\r\n * Defines within how many times a reaction is allowed to re-trigger itself\r\n * until it is assumed that this is gonna be a never ending loop...\r\n */\nvar MAX_REACTION_ITERATIONS = 100;\nvar reactionScheduler = function reactionScheduler(f) {\n return f();\n};\nfunction runReactions() {\n // Trampolining, if runReactions are already running, new reactions will be picked up\n if (globalState.inBatch > 0 || globalState.isRunningReactions) {\n return;\n }\n reactionScheduler(runReactionsHelper);\n}\nfunction runReactionsHelper() {\n globalState.isRunningReactions = true;\n var allReactions = globalState.pendingReactions;\n var iterations = 0;\n // While running reactions, new reactions might be triggered.\n // Hence we work with two variables and check whether\n // we converge to no remaining reactions after a while.\n while (allReactions.length > 0) {\n if (++iterations === MAX_REACTION_ITERATIONS) {\n console.error( \"Reaction doesn't converge to a stable state after \" + MAX_REACTION_ITERATIONS + \" iterations.\" + (\" Probably there is a cycle in the reactive function: \" + allReactions[0]) );\n allReactions.splice(0); // clear reactions\n }\n\n var remainingReactions = allReactions.splice(0);\n for (var i = 0, l = remainingReactions.length; i < l; i++) {\n remainingReactions[i].runReaction_();\n }\n }\n globalState.isRunningReactions = false;\n}\nvar isReaction = /*#__PURE__*/createInstanceofPredicate(\"Reaction\", Reaction);\nfunction setReactionScheduler(fn) {\n var baseScheduler = reactionScheduler;\n reactionScheduler = function reactionScheduler(f) {\n return fn(function () {\n return baseScheduler(f);\n });\n };\n}\n\nfunction isSpyEnabled() {\n return !!globalState.spyListeners.length;\n}\nfunction spyReport(event) {\n if (!globalState.spyListeners.length) {\n return;\n }\n var listeners = globalState.spyListeners;\n for (var i = 0, l = listeners.length; i < l; i++) {\n listeners[i](event);\n }\n}\nfunction spyReportStart(event) {\n var change = _extends({}, event, {\n spyReportStart: true\n });\n spyReport(change);\n}\nvar END_EVENT = {\n type: \"report-end\",\n spyReportEnd: true\n};\nfunction spyReportEnd(change) {\n if (change) {\n spyReport(_extends({}, change, {\n type: \"report-end\",\n spyReportEnd: true\n }));\n } else {\n spyReport(END_EVENT);\n }\n}\nfunction spy(listener) {\n {\n globalState.spyListeners.push(listener);\n return once(function () {\n globalState.spyListeners = globalState.spyListeners.filter(function (l) {\n return l !== listener;\n });\n });\n }\n}\n\nvar ACTION = \"action\";\nvar ACTION_BOUND = \"action.bound\";\nvar AUTOACTION = \"autoAction\";\nvar AUTOACTION_BOUND = \"autoAction.bound\";\nvar DEFAULT_ACTION_NAME = \"\";\nvar actionAnnotation = /*#__PURE__*/createActionAnnotation(ACTION);\nvar actionBoundAnnotation = /*#__PURE__*/createActionAnnotation(ACTION_BOUND, {\n bound: true\n});\nvar autoActionAnnotation = /*#__PURE__*/createActionAnnotation(AUTOACTION, {\n autoAction: true\n});\nvar autoActionBoundAnnotation = /*#__PURE__*/createActionAnnotation(AUTOACTION_BOUND, {\n autoAction: true,\n bound: true\n});\nfunction createActionFactory(autoAction) {\n var res = function action(arg1, arg2) {\n // action(fn() {})\n if (isFunction(arg1)) {\n return createAction(arg1.name || DEFAULT_ACTION_NAME, arg1, autoAction);\n }\n // action(\"name\", fn() {})\n if (isFunction(arg2)) {\n return createAction(arg1, arg2, autoAction);\n }\n // @action\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, autoAction ? autoActionAnnotation : actionAnnotation);\n }\n // action(\"name\") & @action(\"name\")\n if (isStringish(arg1)) {\n return createDecoratorAnnotation(createActionAnnotation(autoAction ? AUTOACTION : ACTION, {\n name: arg1,\n autoAction: autoAction\n }));\n }\n {\n die(\"Invalid arguments for `action`\");\n }\n };\n return res;\n}\nvar action = /*#__PURE__*/createActionFactory(false);\nObject.assign(action, actionAnnotation);\nvar autoAction = /*#__PURE__*/createActionFactory(true);\nObject.assign(autoAction, autoActionAnnotation);\naction.bound = /*#__PURE__*/createDecoratorAnnotation(actionBoundAnnotation);\nautoAction.bound = /*#__PURE__*/createDecoratorAnnotation(autoActionBoundAnnotation);\nfunction runInAction(fn) {\n return executeAction(fn.name || DEFAULT_ACTION_NAME, false, fn, this, undefined);\n}\nfunction isAction(thing) {\n return isFunction(thing) && thing.isMobxAction === true;\n}\n\n/**\r\n * Creates a named reactive view and keeps it alive, so that the view is always\r\n * updated if one of the dependencies changes, even when the view is not further used by something else.\r\n * @param view The reactive view\r\n * @returns disposer function, which can be used to stop the view from being updated in the future.\r\n */\nfunction autorun(view, opts) {\n var _opts$name, _opts;\n if (opts === void 0) {\n opts = EMPTY_OBJECT;\n }\n {\n if (!isFunction(view)) {\n die(\"Autorun expects a function as first argument\");\n }\n if (isAction(view)) {\n die(\"Autorun does not accept actions since actions are untrackable\");\n }\n }\n var name = (_opts$name = (_opts = opts) == null ? void 0 : _opts.name) != null ? _opts$name : view.name || \"Autorun@\" + getNextId() ;\n var runSync = !opts.scheduler && !opts.delay;\n var reaction;\n if (runSync) {\n // normal autorun\n reaction = new Reaction(name, function () {\n this.track(reactionRunner);\n }, opts.onError, opts.requiresObservable);\n } else {\n var scheduler = createSchedulerFromOptions(opts);\n // debounced autorun\n var isScheduled = false;\n reaction = new Reaction(name, function () {\n if (!isScheduled) {\n isScheduled = true;\n scheduler(function () {\n isScheduled = false;\n if (!reaction.isDisposed_) {\n reaction.track(reactionRunner);\n }\n });\n }\n }, opts.onError, opts.requiresObservable);\n }\n function reactionRunner() {\n view(reaction);\n }\n reaction.schedule_();\n return reaction.getDisposer_();\n}\nvar run = function run(f) {\n return f();\n};\nfunction createSchedulerFromOptions(opts) {\n return opts.scheduler ? opts.scheduler : opts.delay ? function (f) {\n return setTimeout(f, opts.delay);\n } : run;\n}\nfunction reaction(expression, effect, opts) {\n var _opts$name2;\n if (opts === void 0) {\n opts = EMPTY_OBJECT;\n }\n {\n if (!isFunction(expression) || !isFunction(effect)) {\n die(\"First and second argument to reaction should be functions\");\n }\n if (!isPlainObject(opts)) {\n die(\"Third argument of reactions should be an object\");\n }\n }\n var name = (_opts$name2 = opts.name) != null ? _opts$name2 : \"Reaction@\" + getNextId() ;\n var effectAction = action(name, opts.onError ? wrapErrorHandler(opts.onError, effect) : effect);\n var runSync = !opts.scheduler && !opts.delay;\n var scheduler = createSchedulerFromOptions(opts);\n var firstTime = true;\n var isScheduled = false;\n var value;\n var oldValue;\n var equals = opts.compareStructural ? comparer.structural : opts.equals || comparer[\"default\"];\n var r = new Reaction(name, function () {\n if (firstTime || runSync) {\n reactionRunner();\n } else if (!isScheduled) {\n isScheduled = true;\n scheduler(reactionRunner);\n }\n }, opts.onError, opts.requiresObservable);\n function reactionRunner() {\n isScheduled = false;\n if (r.isDisposed_) {\n return;\n }\n var changed = false;\n r.track(function () {\n var nextValue = allowStateChanges(false, function () {\n return expression(r);\n });\n changed = firstTime || !equals(value, nextValue);\n oldValue = value;\n value = nextValue;\n });\n if (firstTime && opts.fireImmediately) {\n effectAction(value, oldValue, r);\n } else if (!firstTime && changed) {\n effectAction(value, oldValue, r);\n }\n firstTime = false;\n }\n r.schedule_();\n return r.getDisposer_();\n}\nfunction wrapErrorHandler(errorHandler, baseFn) {\n return function () {\n try {\n return baseFn.apply(this, arguments);\n } catch (e) {\n errorHandler.call(this, e);\n }\n };\n}\n\nvar ON_BECOME_OBSERVED = \"onBO\";\nvar ON_BECOME_UNOBSERVED = \"onBUO\";\nfunction onBecomeObserved(thing, arg2, arg3) {\n return interceptHook(ON_BECOME_OBSERVED, thing, arg2, arg3);\n}\nfunction onBecomeUnobserved(thing, arg2, arg3) {\n return interceptHook(ON_BECOME_UNOBSERVED, thing, arg2, arg3);\n}\nfunction interceptHook(hook, thing, arg2, arg3) {\n var atom = typeof arg3 === \"function\" ? getAtom(thing, arg2) : getAtom(thing);\n var cb = isFunction(arg3) ? arg3 : arg2;\n var listenersKey = hook + \"L\";\n if (atom[listenersKey]) {\n atom[listenersKey].add(cb);\n } else {\n atom[listenersKey] = new Set([cb]);\n }\n return function () {\n var hookListeners = atom[listenersKey];\n if (hookListeners) {\n hookListeners[\"delete\"](cb);\n if (hookListeners.size === 0) {\n delete atom[listenersKey];\n }\n }\n };\n}\n\nvar NEVER = \"never\";\nvar ALWAYS = \"always\";\nvar OBSERVED = \"observed\";\n// const IF_AVAILABLE = \"ifavailable\"\nfunction configure(options) {\n if (options.isolateGlobalState === true) {\n isolateGlobalState();\n }\n var useProxies = options.useProxies,\n enforceActions = options.enforceActions;\n if (useProxies !== undefined) {\n globalState.useProxies = useProxies === ALWAYS ? true : useProxies === NEVER ? false : typeof Proxy !== \"undefined\";\n }\n if (useProxies === \"ifavailable\") {\n globalState.verifyProxies = true;\n }\n if (enforceActions !== undefined) {\n var ea = enforceActions === ALWAYS ? ALWAYS : enforceActions === OBSERVED;\n globalState.enforceActions = ea;\n globalState.allowStateChanges = ea === true || ea === ALWAYS ? false : true;\n }\n [\"computedRequiresReaction\", \"reactionRequiresObservable\", \"observableRequiresReaction\", \"disableErrorBoundaries\", \"safeDescriptors\"].forEach(function (key) {\n if (key in options) {\n globalState[key] = !!options[key];\n }\n });\n globalState.allowStateReads = !globalState.observableRequiresReaction;\n if ( globalState.disableErrorBoundaries === true) {\n console.warn(\"WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled.\");\n }\n if (options.reactionScheduler) {\n setReactionScheduler(options.reactionScheduler);\n }\n}\n\nfunction extendObservable(target, properties, annotations, options) {\n {\n if (arguments.length > 4) {\n die(\"'extendObservable' expected 2-4 arguments\");\n }\n if (typeof target !== \"object\") {\n die(\"'extendObservable' expects an object as first argument\");\n }\n if (isObservableMap(target)) {\n die(\"'extendObservable' should not be used on maps, use map.merge instead\");\n }\n if (!isPlainObject(properties)) {\n die(\"'extendObservable' only accepts plain objects as second argument\");\n }\n if (isObservable(properties) || isObservable(annotations)) {\n die(\"Extending an object with another observable (object) is not supported\");\n }\n }\n // Pull descriptors first, so we don't have to deal with props added by administration ($mobx)\n var descriptors = getOwnPropertyDescriptors(properties);\n var adm = asObservableObject(target, options)[$mobx];\n startBatch();\n try {\n ownKeys(descriptors).forEach(function (key) {\n adm.extend_(key, descriptors[key],\n // must pass \"undefined\" for { key: undefined }\n !annotations ? true : key in annotations ? annotations[key] : true);\n });\n } finally {\n endBatch();\n }\n return target;\n}\n\nfunction getDependencyTree(thing, property) {\n return nodeToDependencyTree(getAtom(thing, property));\n}\nfunction nodeToDependencyTree(node) {\n var result = {\n name: node.name_\n };\n if (node.observing_ && node.observing_.length > 0) {\n result.dependencies = unique(node.observing_).map(nodeToDependencyTree);\n }\n return result;\n}\nfunction getObserverTree(thing, property) {\n return nodeToObserverTree(getAtom(thing, property));\n}\nfunction nodeToObserverTree(node) {\n var result = {\n name: node.name_\n };\n if (hasObservers(node)) {\n result.observers = Array.from(getObservers(node)).map(nodeToObserverTree);\n }\n return result;\n}\nfunction unique(list) {\n return Array.from(new Set(list));\n}\n\nvar generatorId = 0;\nfunction FlowCancellationError() {\n this.message = \"FLOW_CANCELLED\";\n}\nFlowCancellationError.prototype = /*#__PURE__*/Object.create(Error.prototype);\nfunction isFlowCancellationError(error) {\n return error instanceof FlowCancellationError;\n}\nvar flowAnnotation = /*#__PURE__*/createFlowAnnotation(\"flow\");\nvar flowBoundAnnotation = /*#__PURE__*/createFlowAnnotation(\"flow.bound\", {\n bound: true\n});\nvar flow = /*#__PURE__*/Object.assign(function flow(arg1, arg2) {\n // @flow\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, flowAnnotation);\n }\n // flow(fn)\n if ( arguments.length !== 1) {\n die(\"Flow expects single argument with generator function\");\n }\n var generator = arg1;\n var name = generator.name || \"\";\n // Implementation based on https://github.com/tj/co/blob/master/index.js\n var res = function res() {\n var ctx = this;\n var args = arguments;\n var runId = ++generatorId;\n var gen = action(name + \" - runid: \" + runId + \" - init\", generator).apply(ctx, args);\n var rejector;\n var pendingPromise = undefined;\n var promise = new Promise(function (resolve, reject) {\n var stepId = 0;\n rejector = reject;\n function onFulfilled(res) {\n pendingPromise = undefined;\n var ret;\n try {\n ret = action(name + \" - runid: \" + runId + \" - yield \" + stepId++, gen.next).call(gen, res);\n } catch (e) {\n return reject(e);\n }\n next(ret);\n }\n function onRejected(err) {\n pendingPromise = undefined;\n var ret;\n try {\n ret = action(name + \" - runid: \" + runId + \" - yield \" + stepId++, gen[\"throw\"]).call(gen, err);\n } catch (e) {\n return reject(e);\n }\n next(ret);\n }\n function next(ret) {\n if (isFunction(ret == null ? void 0 : ret.then)) {\n // an async iterator\n ret.then(next, reject);\n return;\n }\n if (ret.done) {\n return resolve(ret.value);\n }\n pendingPromise = Promise.resolve(ret.value);\n return pendingPromise.then(onFulfilled, onRejected);\n }\n onFulfilled(undefined); // kick off the process\n });\n\n promise.cancel = action(name + \" - runid: \" + runId + \" - cancel\", function () {\n try {\n if (pendingPromise) {\n cancelPromise(pendingPromise);\n }\n // Finally block can return (or yield) stuff..\n var _res = gen[\"return\"](undefined);\n // eat anything that promise would do, it's cancelled!\n var yieldedPromise = Promise.resolve(_res.value);\n yieldedPromise.then(noop, noop);\n cancelPromise(yieldedPromise); // maybe it can be cancelled :)\n // reject our original promise\n rejector(new FlowCancellationError());\n } catch (e) {\n rejector(e); // there could be a throwing finally block\n }\n });\n\n return promise;\n };\n res.isMobXFlow = true;\n return res;\n}, flowAnnotation);\nflow.bound = /*#__PURE__*/createDecoratorAnnotation(flowBoundAnnotation);\nfunction cancelPromise(promise) {\n if (isFunction(promise.cancel)) {\n promise.cancel();\n }\n}\nfunction flowResult(result) {\n return result; // just tricking TypeScript :)\n}\n\nfunction isFlow(fn) {\n return (fn == null ? void 0 : fn.isMobXFlow) === true;\n}\n\nfunction interceptReads(thing, propOrHandler, handler) {\n var target;\n if (isObservableMap(thing) || isObservableArray(thing) || isObservableValue(thing)) {\n target = getAdministration(thing);\n } else if (isObservableObject(thing)) {\n if ( !isStringish(propOrHandler)) {\n return die(\"InterceptReads can only be used with a specific property, not with an object in general\");\n }\n target = getAdministration(thing, propOrHandler);\n } else {\n return die(\"Expected observable map, object or array as first array\");\n }\n if ( target.dehancer !== undefined) {\n return die(\"An intercept reader was already established\");\n }\n target.dehancer = typeof propOrHandler === \"function\" ? propOrHandler : handler;\n return function () {\n target.dehancer = undefined;\n };\n}\n\nfunction intercept(thing, propOrHandler, handler) {\n if (isFunction(handler)) {\n return interceptProperty(thing, propOrHandler, handler);\n } else {\n return interceptInterceptable(thing, propOrHandler);\n }\n}\nfunction interceptInterceptable(thing, handler) {\n return getAdministration(thing).intercept_(handler);\n}\nfunction interceptProperty(thing, property, handler) {\n return getAdministration(thing, property).intercept_(handler);\n}\n\nfunction _isComputed(value, property) {\n if (property === undefined) {\n return isComputedValue(value);\n }\n if (isObservableObject(value) === false) {\n return false;\n }\n if (!value[$mobx].values_.has(property)) {\n return false;\n }\n var atom = getAtom(value, property);\n return isComputedValue(atom);\n}\nfunction isComputed(value) {\n if ( arguments.length > 1) {\n return die(\"isComputed expects only 1 argument. Use isComputedProp to inspect the observability of a property\");\n }\n return _isComputed(value);\n}\nfunction isComputedProp(value, propName) {\n if ( !isStringish(propName)) {\n return die(\"isComputed expected a property name as second argument\");\n }\n return _isComputed(value, propName);\n}\n\nfunction _isObservable(value, property) {\n if (!value) {\n return false;\n }\n if (property !== undefined) {\n if ( (isObservableMap(value) || isObservableArray(value))) {\n return die(\"isObservable(object, propertyName) is not supported for arrays and maps. Use map.has or array.length instead.\");\n }\n if (isObservableObject(value)) {\n return value[$mobx].values_.has(property);\n }\n return false;\n }\n // For first check, see #701\n return isObservableObject(value) || !!value[$mobx] || isAtom(value) || isReaction(value) || isComputedValue(value);\n}\nfunction isObservable(value) {\n if ( arguments.length !== 1) {\n die(\"isObservable expects only 1 argument. Use isObservableProp to inspect the observability of a property\");\n }\n return _isObservable(value);\n}\nfunction isObservableProp(value, propName) {\n if ( !isStringish(propName)) {\n return die(\"expected a property name as second argument\");\n }\n return _isObservable(value, propName);\n}\n\nfunction keys(obj) {\n if (isObservableObject(obj)) {\n return obj[$mobx].keys_();\n }\n if (isObservableMap(obj) || isObservableSet(obj)) {\n return Array.from(obj.keys());\n }\n if (isObservableArray(obj)) {\n return obj.map(function (_, index) {\n return index;\n });\n }\n die(5);\n}\nfunction values(obj) {\n if (isObservableObject(obj)) {\n return keys(obj).map(function (key) {\n return obj[key];\n });\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(function (key) {\n return obj.get(key);\n });\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.values());\n }\n if (isObservableArray(obj)) {\n return obj.slice();\n }\n die(6);\n}\nfunction entries(obj) {\n if (isObservableObject(obj)) {\n return keys(obj).map(function (key) {\n return [key, obj[key]];\n });\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(function (key) {\n return [key, obj.get(key)];\n });\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.entries());\n }\n if (isObservableArray(obj)) {\n return obj.map(function (key, index) {\n return [index, key];\n });\n }\n die(7);\n}\nfunction set(obj, key, value) {\n if (arguments.length === 2 && !isObservableSet(obj)) {\n startBatch();\n var _values = key;\n try {\n for (var _key in _values) {\n set(obj, _key, _values[_key]);\n }\n } finally {\n endBatch();\n }\n return;\n }\n if (isObservableObject(obj)) {\n obj[$mobx].set_(key, value);\n } else if (isObservableMap(obj)) {\n obj.set(key, value);\n } else if (isObservableSet(obj)) {\n obj.add(key);\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") {\n key = parseInt(key, 10);\n }\n if (key < 0) {\n die(\"Invalid index: '\" + key + \"'\");\n }\n startBatch();\n if (key >= obj.length) {\n obj.length = key + 1;\n }\n obj[key] = value;\n endBatch();\n } else {\n die(8);\n }\n}\nfunction remove(obj, key) {\n if (isObservableObject(obj)) {\n obj[$mobx].delete_(key);\n } else if (isObservableMap(obj)) {\n obj[\"delete\"](key);\n } else if (isObservableSet(obj)) {\n obj[\"delete\"](key);\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") {\n key = parseInt(key, 10);\n }\n obj.splice(key, 1);\n } else {\n die(9);\n }\n}\nfunction has(obj, key) {\n if (isObservableObject(obj)) {\n return obj[$mobx].has_(key);\n } else if (isObservableMap(obj)) {\n return obj.has(key);\n } else if (isObservableSet(obj)) {\n return obj.has(key);\n } else if (isObservableArray(obj)) {\n return key >= 0 && key < obj.length;\n }\n die(10);\n}\nfunction get(obj, key) {\n if (!has(obj, key)) {\n return undefined;\n }\n if (isObservableObject(obj)) {\n return obj[$mobx].get_(key);\n } else if (isObservableMap(obj)) {\n return obj.get(key);\n } else if (isObservableArray(obj)) {\n return obj[key];\n }\n die(11);\n}\nfunction apiDefineProperty(obj, key, descriptor) {\n if (isObservableObject(obj)) {\n return obj[$mobx].defineProperty_(key, descriptor);\n }\n die(39);\n}\nfunction apiOwnKeys(obj) {\n if (isObservableObject(obj)) {\n return obj[$mobx].ownKeys_();\n }\n die(38);\n}\n\nfunction observe(thing, propOrCb, cbOrFire, fireImmediately) {\n if (isFunction(cbOrFire)) {\n return observeObservableProperty(thing, propOrCb, cbOrFire, fireImmediately);\n } else {\n return observeObservable(thing, propOrCb, cbOrFire);\n }\n}\nfunction observeObservable(thing, listener, fireImmediately) {\n return getAdministration(thing).observe_(listener, fireImmediately);\n}\nfunction observeObservableProperty(thing, property, listener, fireImmediately) {\n return getAdministration(thing, property).observe_(listener, fireImmediately);\n}\n\nfunction cache(map, key, value) {\n map.set(key, value);\n return value;\n}\nfunction toJSHelper(source, __alreadySeen) {\n if (source == null || typeof source !== \"object\" || source instanceof Date || !isObservable(source)) {\n return source;\n }\n if (isObservableValue(source) || isComputedValue(source)) {\n return toJSHelper(source.get(), __alreadySeen);\n }\n if (__alreadySeen.has(source)) {\n return __alreadySeen.get(source);\n }\n if (isObservableArray(source)) {\n var res = cache(__alreadySeen, source, new Array(source.length));\n source.forEach(function (value, idx) {\n res[idx] = toJSHelper(value, __alreadySeen);\n });\n return res;\n }\n if (isObservableSet(source)) {\n var _res = cache(__alreadySeen, source, new Set());\n source.forEach(function (value) {\n _res.add(toJSHelper(value, __alreadySeen));\n });\n return _res;\n }\n if (isObservableMap(source)) {\n var _res2 = cache(__alreadySeen, source, new Map());\n source.forEach(function (value, key) {\n _res2.set(key, toJSHelper(value, __alreadySeen));\n });\n return _res2;\n } else {\n // must be observable object\n var _res3 = cache(__alreadySeen, source, {});\n apiOwnKeys(source).forEach(function (key) {\n if (objectPrototype.propertyIsEnumerable.call(source, key)) {\n _res3[key] = toJSHelper(source[key], __alreadySeen);\n }\n });\n return _res3;\n }\n}\n/**\r\n * Recursively converts an observable to it's non-observable native counterpart.\r\n * It does NOT recurse into non-observables, these are left as they are, even if they contain observables.\r\n * Computed and other non-enumerable properties are completely ignored.\r\n * Complex scenarios require custom solution, eg implementing `toJSON` or using `serializr` lib.\r\n */\nfunction toJS(source, options) {\n if ( options) {\n die(\"toJS no longer supports options\");\n }\n return toJSHelper(source, new Map());\n}\n\nfunction trace() {\n var enterBreakPoint = false;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof args[args.length - 1] === \"boolean\") {\n enterBreakPoint = args.pop();\n }\n var derivation = getAtomFromArgs(args);\n if (!derivation) {\n return die(\"'trace(break?)' can only be used inside a tracked computed value or a Reaction. Consider passing in the computed value or reaction explicitly\");\n }\n if (derivation.isTracing_ === TraceMode.NONE) {\n console.log(\"[mobx.trace] '\" + derivation.name_ + \"' tracing enabled\");\n }\n derivation.isTracing_ = enterBreakPoint ? TraceMode.BREAK : TraceMode.LOG;\n}\nfunction getAtomFromArgs(args) {\n switch (args.length) {\n case 0:\n return globalState.trackingDerivation;\n case 1:\n return getAtom(args[0]);\n case 2:\n return getAtom(args[0], args[1]);\n }\n}\n\n/**\r\n * During a transaction no views are updated until the end of the transaction.\r\n * The transaction will be run synchronously nonetheless.\r\n *\r\n * @param action a function that updates some reactive state\r\n * @returns any value that was returned by the 'action' parameter.\r\n */\nfunction transaction(action, thisArg) {\n if (thisArg === void 0) {\n thisArg = undefined;\n }\n startBatch();\n try {\n return action.apply(thisArg);\n } finally {\n endBatch();\n }\n}\n\nfunction when(predicate, arg1, arg2) {\n if (arguments.length === 1 || arg1 && typeof arg1 === \"object\") {\n return whenPromise(predicate, arg1);\n }\n return _when(predicate, arg1, arg2 || {});\n}\nfunction _when(predicate, effect, opts) {\n var timeoutHandle;\n if (typeof opts.timeout === \"number\") {\n var error = new Error(\"WHEN_TIMEOUT\");\n timeoutHandle = setTimeout(function () {\n if (!disposer[$mobx].isDisposed_) {\n disposer();\n if (opts.onError) {\n opts.onError(error);\n } else {\n throw error;\n }\n }\n }, opts.timeout);\n }\n opts.name = opts.name || \"When@\" + getNextId() ;\n var effectAction = createAction( opts.name + \"-effect\" , effect);\n // eslint-disable-next-line\n var disposer = autorun(function (r) {\n // predicate should not change state\n var cond = allowStateChanges(false, predicate);\n if (cond) {\n r.dispose();\n if (timeoutHandle) {\n clearTimeout(timeoutHandle);\n }\n effectAction();\n }\n }, opts);\n return disposer;\n}\nfunction whenPromise(predicate, opts) {\n var _opts$signal;\n if ( opts && opts.onError) {\n return die(\"the options 'onError' and 'promise' cannot be combined\");\n }\n if (opts != null && (_opts$signal = opts.signal) != null && _opts$signal.aborted) {\n return Object.assign(Promise.reject(new Error(\"WHEN_ABORTED\")), {\n cancel: function cancel() {\n return null;\n }\n });\n }\n var cancel;\n var abort;\n var res = new Promise(function (resolve, reject) {\n var _opts$signal2;\n var disposer = _when(predicate, resolve, _extends({}, opts, {\n onError: reject\n }));\n cancel = function cancel() {\n disposer();\n reject(new Error(\"WHEN_CANCELLED\"));\n };\n abort = function abort() {\n disposer();\n reject(new Error(\"WHEN_ABORTED\"));\n };\n opts == null ? void 0 : (_opts$signal2 = opts.signal) == null ? void 0 : _opts$signal2.addEventListener == null ? void 0 : _opts$signal2.addEventListener(\"abort\", abort);\n })[\"finally\"](function () {\n var _opts$signal3;\n return opts == null ? void 0 : (_opts$signal3 = opts.signal) == null ? void 0 : _opts$signal3.removeEventListener == null ? void 0 : _opts$signal3.removeEventListener(\"abort\", abort);\n });\n res.cancel = cancel;\n return res;\n}\n\nfunction getAdm(target) {\n return target[$mobx];\n}\n// Optimization: we don't need the intermediate objects and could have a completely custom administration for DynamicObjects,\n// and skip either the internal values map, or the base object with its property descriptors!\nvar objectProxyTraps = {\n has: function has(target, name) {\n if ( globalState.trackingDerivation) {\n warnAboutProxyRequirement(\"detect new properties using the 'in' operator. Use 'has' from 'mobx' instead.\");\n }\n return getAdm(target).has_(name);\n },\n get: function get(target, name) {\n return getAdm(target).get_(name);\n },\n set: function set(target, name, value) {\n var _getAdm$set_;\n if (!isStringish(name)) {\n return false;\n }\n if ( !getAdm(target).values_.has(name)) {\n warnAboutProxyRequirement(\"add a new observable property through direct assignment. Use 'set' from 'mobx' instead.\");\n }\n // null (intercepted) -> true (success)\n return (_getAdm$set_ = getAdm(target).set_(name, value, true)) != null ? _getAdm$set_ : true;\n },\n deleteProperty: function deleteProperty(target, name) {\n var _getAdm$delete_;\n {\n warnAboutProxyRequirement(\"delete properties from an observable object. Use 'remove' from 'mobx' instead.\");\n }\n if (!isStringish(name)) {\n return false;\n }\n // null (intercepted) -> true (success)\n return (_getAdm$delete_ = getAdm(target).delete_(name, true)) != null ? _getAdm$delete_ : true;\n },\n defineProperty: function defineProperty(target, name, descriptor) {\n var _getAdm$definePropert;\n {\n warnAboutProxyRequirement(\"define property on an observable object. Use 'defineProperty' from 'mobx' instead.\");\n }\n // null (intercepted) -> true (success)\n return (_getAdm$definePropert = getAdm(target).defineProperty_(name, descriptor)) != null ? _getAdm$definePropert : true;\n },\n ownKeys: function ownKeys(target) {\n if ( globalState.trackingDerivation) {\n warnAboutProxyRequirement(\"iterate keys to detect added / removed properties. Use 'keys' from 'mobx' instead.\");\n }\n return getAdm(target).ownKeys_();\n },\n preventExtensions: function preventExtensions(target) {\n die(13);\n }\n};\nfunction asDynamicObservableObject(target, options) {\n var _target$$mobx, _target$$mobx$proxy_;\n assertProxies();\n target = asObservableObject(target, options);\n return (_target$$mobx$proxy_ = (_target$$mobx = target[$mobx]).proxy_) != null ? _target$$mobx$proxy_ : _target$$mobx.proxy_ = new Proxy(target, objectProxyTraps);\n}\n\nfunction hasInterceptors(interceptable) {\n return interceptable.interceptors_ !== undefined && interceptable.interceptors_.length > 0;\n}\nfunction registerInterceptor(interceptable, handler) {\n var interceptors = interceptable.interceptors_ || (interceptable.interceptors_ = []);\n interceptors.push(handler);\n return once(function () {\n var idx = interceptors.indexOf(handler);\n if (idx !== -1) {\n interceptors.splice(idx, 1);\n }\n });\n}\nfunction interceptChange(interceptable, change) {\n var prevU = untrackedStart();\n try {\n // Interceptor can modify the array, copy it to avoid concurrent modification, see #1950\n var interceptors = [].concat(interceptable.interceptors_ || []);\n for (var i = 0, l = interceptors.length; i < l; i++) {\n change = interceptors[i](change);\n if (change && !change.type) {\n die(14);\n }\n if (!change) {\n break;\n }\n }\n return change;\n } finally {\n untrackedEnd(prevU);\n }\n}\n\nfunction hasListeners(listenable) {\n return listenable.changeListeners_ !== undefined && listenable.changeListeners_.length > 0;\n}\nfunction registerListener(listenable, handler) {\n var listeners = listenable.changeListeners_ || (listenable.changeListeners_ = []);\n listeners.push(handler);\n return once(function () {\n var idx = listeners.indexOf(handler);\n if (idx !== -1) {\n listeners.splice(idx, 1);\n }\n });\n}\nfunction notifyListeners(listenable, change) {\n var prevU = untrackedStart();\n var listeners = listenable.changeListeners_;\n if (!listeners) {\n return;\n }\n listeners = listeners.slice();\n for (var i = 0, l = listeners.length; i < l; i++) {\n listeners[i](change);\n }\n untrackedEnd(prevU);\n}\n\nfunction makeObservable(target, annotations, options) {\n var adm = asObservableObject(target, options)[$mobx];\n startBatch();\n try {\n var _annotations;\n if (\"development\" !== \"production\" && annotations && target[storedAnnotationsSymbol]) {\n die(\"makeObservable second arg must be nullish when using decorators. Mixing @decorator syntax with annotations is not supported.\");\n }\n // Default to decorators\n (_annotations = annotations) != null ? _annotations : annotations = collectStoredAnnotations(target);\n // Annotate\n ownKeys(annotations).forEach(function (key) {\n return adm.make_(key, annotations[key]);\n });\n } finally {\n endBatch();\n }\n return target;\n}\n// proto[keysSymbol] = new Set()\nvar keysSymbol = /*#__PURE__*/Symbol(\"mobx-keys\");\nfunction makeAutoObservable(target, overrides, options) {\n {\n if (!isPlainObject(target) && !isPlainObject(Object.getPrototypeOf(target))) {\n die(\"'makeAutoObservable' can only be used for classes that don't have a superclass\");\n }\n if (isObservableObject(target)) {\n die(\"makeAutoObservable can only be used on objects not already made observable\");\n }\n }\n // Optimization: avoid visiting protos\n // Assumes that annotation.make_/.extend_ works the same for plain objects\n if (isPlainObject(target)) {\n return extendObservable(target, target, overrides, options);\n }\n var adm = asObservableObject(target, options)[$mobx];\n // Optimization: cache keys on proto\n // Assumes makeAutoObservable can be called only once per object and can't be used in subclass\n if (!target[keysSymbol]) {\n var proto = Object.getPrototypeOf(target);\n var keys = new Set([].concat(ownKeys(target), ownKeys(proto)));\n keys[\"delete\"](\"constructor\");\n keys[\"delete\"]($mobx);\n addHiddenProp(proto, keysSymbol, keys);\n }\n startBatch();\n try {\n target[keysSymbol].forEach(function (key) {\n return adm.make_(key,\n // must pass \"undefined\" for { key: undefined }\n !overrides ? true : key in overrides ? overrides[key] : true);\n });\n } finally {\n endBatch();\n }\n return target;\n}\n\nvar SPLICE = \"splice\";\nvar UPDATE = \"update\";\nvar MAX_SPLICE_SIZE = 10000; // See e.g. https://github.com/mobxjs/mobx/issues/859\nvar arrayTraps = {\n get: function get(target, name) {\n var adm = target[$mobx];\n if (name === $mobx) {\n return adm;\n }\n if (name === \"length\") {\n return adm.getArrayLength_();\n }\n if (typeof name === \"string\" && !isNaN(name)) {\n return adm.get_(parseInt(name));\n }\n if (hasProp(arrayExtensions, name)) {\n return arrayExtensions[name];\n }\n return target[name];\n },\n set: function set(target, name, value) {\n var adm = target[$mobx];\n if (name === \"length\") {\n adm.setArrayLength_(value);\n }\n if (typeof name === \"symbol\" || isNaN(name)) {\n target[name] = value;\n } else {\n // numeric string\n adm.set_(parseInt(name), value);\n }\n return true;\n },\n preventExtensions: function preventExtensions() {\n die(15);\n }\n};\nvar ObservableArrayAdministration = /*#__PURE__*/function () {\n // this is the prop that gets proxied, so can't replace it!\n\n function ObservableArrayAdministration(name, enhancer, owned_, legacyMode_) {\n if (name === void 0) {\n name = \"ObservableArray@\" + getNextId() ;\n }\n this.owned_ = void 0;\n this.legacyMode_ = void 0;\n this.atom_ = void 0;\n this.values_ = [];\n this.interceptors_ = void 0;\n this.changeListeners_ = void 0;\n this.enhancer_ = void 0;\n this.dehancer = void 0;\n this.proxy_ = void 0;\n this.lastKnownLength_ = 0;\n this.owned_ = owned_;\n this.legacyMode_ = legacyMode_;\n this.atom_ = new Atom(name);\n this.enhancer_ = function (newV, oldV) {\n return enhancer(newV, oldV, name + \"[..]\" );\n };\n }\n var _proto = ObservableArrayAdministration.prototype;\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.dehanceValues_ = function dehanceValues_(values) {\n if (this.dehancer !== undefined && values.length > 0) {\n return values.map(this.dehancer);\n }\n return values;\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if (fireImmediately === void 0) {\n fireImmediately = false;\n }\n if (fireImmediately) {\n listener({\n observableKind: \"array\",\n object: this.proxy_,\n debugObjectName: this.atom_.name_,\n type: \"splice\",\n index: 0,\n added: this.values_.slice(),\n addedCount: this.values_.length,\n removed: [],\n removedCount: 0\n });\n }\n return registerListener(this, listener);\n };\n _proto.getArrayLength_ = function getArrayLength_() {\n this.atom_.reportObserved();\n return this.values_.length;\n };\n _proto.setArrayLength_ = function setArrayLength_(newLength) {\n if (typeof newLength !== \"number\" || isNaN(newLength) || newLength < 0) {\n die(\"Out of range: \" + newLength);\n }\n var currentLength = this.values_.length;\n if (newLength === currentLength) {\n return;\n } else if (newLength > currentLength) {\n var newItems = new Array(newLength - currentLength);\n for (var i = 0; i < newLength - currentLength; i++) {\n newItems[i] = undefined;\n } // No Array.fill everywhere...\n this.spliceWithArray_(currentLength, 0, newItems);\n } else {\n this.spliceWithArray_(newLength, currentLength - newLength);\n }\n };\n _proto.updateArrayLength_ = function updateArrayLength_(oldLength, delta) {\n if (oldLength !== this.lastKnownLength_) {\n die(16);\n }\n this.lastKnownLength_ += delta;\n if (this.legacyMode_ && delta > 0) {\n reserveArrayBuffer(oldLength + delta + 1);\n }\n };\n _proto.spliceWithArray_ = function spliceWithArray_(index, deleteCount, newItems) {\n var _this = this;\n checkIfStateModificationsAreAllowed(this.atom_);\n var length = this.values_.length;\n if (index === undefined) {\n index = 0;\n } else if (index > length) {\n index = length;\n } else if (index < 0) {\n index = Math.max(0, length + index);\n }\n if (arguments.length === 1) {\n deleteCount = length - index;\n } else if (deleteCount === undefined || deleteCount === null) {\n deleteCount = 0;\n } else {\n deleteCount = Math.max(0, Math.min(deleteCount, length - index));\n }\n if (newItems === undefined) {\n newItems = EMPTY_ARRAY;\n }\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_,\n type: SPLICE,\n index: index,\n removedCount: deleteCount,\n added: newItems\n });\n if (!change) {\n return EMPTY_ARRAY;\n }\n deleteCount = change.removedCount;\n newItems = change.added;\n }\n newItems = newItems.length === 0 ? newItems : newItems.map(function (v) {\n return _this.enhancer_(v, undefined);\n });\n if (this.legacyMode_ || \"development\" !== \"production\") {\n var lengthDelta = newItems.length - deleteCount;\n this.updateArrayLength_(length, lengthDelta); // checks if internal array wasn't modified\n }\n\n var res = this.spliceItemsIntoValues_(index, deleteCount, newItems);\n if (deleteCount !== 0 || newItems.length !== 0) {\n this.notifyArraySplice_(index, newItems, res);\n }\n return this.dehanceValues_(res);\n };\n _proto.spliceItemsIntoValues_ = function spliceItemsIntoValues_(index, deleteCount, newItems) {\n if (newItems.length < MAX_SPLICE_SIZE) {\n var _this$values_;\n return (_this$values_ = this.values_).splice.apply(_this$values_, [index, deleteCount].concat(newItems));\n } else {\n // The items removed by the splice\n var res = this.values_.slice(index, index + deleteCount);\n // The items that that should remain at the end of the array\n var oldItems = this.values_.slice(index + deleteCount);\n // New length is the previous length + addition count - deletion count\n this.values_.length += newItems.length - deleteCount;\n for (var i = 0; i < newItems.length; i++) {\n this.values_[index + i] = newItems[i];\n }\n for (var _i = 0; _i < oldItems.length; _i++) {\n this.values_[index + newItems.length + _i] = oldItems[_i];\n }\n return res;\n }\n };\n _proto.notifyArrayChildUpdate_ = function notifyArrayChildUpdate_(index, newValue, oldValue) {\n var notifySpy = !this.owned_ && isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"array\",\n object: this.proxy_,\n type: UPDATE,\n debugObjectName: this.atom_.name_,\n index: index,\n newValue: newValue,\n oldValue: oldValue\n } : null;\n // The reason why this is on right hand side here (and not above), is this way the uglifier will drop it, but it won't\n // cause any runtime overhead in development mode without NODE_ENV set, unless spying is enabled\n if ( notifySpy) {\n spyReportStart(change);\n }\n this.atom_.reportChanged();\n if (notify) {\n notifyListeners(this, change);\n }\n if ( notifySpy) {\n spyReportEnd();\n }\n };\n _proto.notifyArraySplice_ = function notifyArraySplice_(index, added, removed) {\n var notifySpy = !this.owned_ && isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"array\",\n object: this.proxy_,\n debugObjectName: this.atom_.name_,\n type: SPLICE,\n index: index,\n removed: removed,\n added: added,\n removedCount: removed.length,\n addedCount: added.length\n } : null;\n if ( notifySpy) {\n spyReportStart(change);\n }\n this.atom_.reportChanged();\n // conform: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/observe\n if (notify) {\n notifyListeners(this, change);\n }\n if ( notifySpy) {\n spyReportEnd();\n }\n };\n _proto.get_ = function get_(index) {\n if (this.legacyMode_ && index >= this.values_.length) {\n console.warn( \"[mobx.array] Attempt to read an array index (\" + index + \") that is out of bounds (\" + this.values_.length + \"). Please check length first. Out of bound indices will not be tracked by MobX\" );\n return undefined;\n }\n this.atom_.reportObserved();\n return this.dehanceValue_(this.values_[index]);\n };\n _proto.set_ = function set_(index, newValue) {\n var values = this.values_;\n if (this.legacyMode_ && index > values.length) {\n // out of bounds\n die(17, index, values.length);\n }\n if (index < values.length) {\n // update at index in range\n checkIfStateModificationsAreAllowed(this.atom_);\n var oldValue = values[index];\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: UPDATE,\n object: this.proxy_,\n index: index,\n newValue: newValue\n });\n if (!change) {\n return;\n }\n newValue = change.newValue;\n }\n newValue = this.enhancer_(newValue, oldValue);\n var changed = newValue !== oldValue;\n if (changed) {\n values[index] = newValue;\n this.notifyArrayChildUpdate_(index, newValue, oldValue);\n }\n } else {\n // For out of bound index, we don't create an actual sparse array,\n // but rather fill the holes with undefined (same as setArrayLength_).\n // This could be considered a bug.\n var newItems = new Array(index + 1 - values.length);\n for (var i = 0; i < newItems.length - 1; i++) {\n newItems[i] = undefined;\n } // No Array.fill everywhere...\n newItems[newItems.length - 1] = newValue;\n this.spliceWithArray_(values.length, 0, newItems);\n }\n };\n return ObservableArrayAdministration;\n}();\nfunction createObservableArray(initialValues, enhancer, name, owned) {\n if (name === void 0) {\n name = \"ObservableArray@\" + getNextId() ;\n }\n if (owned === void 0) {\n owned = false;\n }\n assertProxies();\n var adm = new ObservableArrayAdministration(name, enhancer, owned, false);\n addHiddenFinalProp(adm.values_, $mobx, adm);\n var proxy = new Proxy(adm.values_, arrayTraps);\n adm.proxy_ = proxy;\n if (initialValues && initialValues.length) {\n var prev = allowStateChangesStart(true);\n adm.spliceWithArray_(0, 0, initialValues);\n allowStateChangesEnd(prev);\n }\n return proxy;\n}\n// eslint-disable-next-line\nvar arrayExtensions = {\n clear: function clear() {\n return this.splice(0);\n },\n replace: function replace(newItems) {\n var adm = this[$mobx];\n return adm.spliceWithArray_(0, adm.values_.length, newItems);\n },\n // Used by JSON.stringify\n toJSON: function toJSON() {\n return this.slice();\n },\n /*\r\n * functions that do alter the internal structure of the array, (based on lib.es6.d.ts)\r\n * since these functions alter the inner structure of the array, the have side effects.\r\n * Because the have side effects, they should not be used in computed function,\r\n * and for that reason the do not call dependencyState.notifyObserved\r\n */\n splice: function splice(index, deleteCount) {\n for (var _len = arguments.length, newItems = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n newItems[_key - 2] = arguments[_key];\n }\n var adm = this[$mobx];\n switch (arguments.length) {\n case 0:\n return [];\n case 1:\n return adm.spliceWithArray_(index);\n case 2:\n return adm.spliceWithArray_(index, deleteCount);\n }\n return adm.spliceWithArray_(index, deleteCount, newItems);\n },\n spliceWithArray: function spliceWithArray(index, deleteCount, newItems) {\n return this[$mobx].spliceWithArray_(index, deleteCount, newItems);\n },\n push: function push() {\n var adm = this[$mobx];\n for (var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n adm.spliceWithArray_(adm.values_.length, 0, items);\n return adm.values_.length;\n },\n pop: function pop() {\n return this.splice(Math.max(this[$mobx].values_.length - 1, 0), 1)[0];\n },\n shift: function shift() {\n return this.splice(0, 1)[0];\n },\n unshift: function unshift() {\n var adm = this[$mobx];\n for (var _len3 = arguments.length, items = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n items[_key3] = arguments[_key3];\n }\n adm.spliceWithArray_(0, 0, items);\n return adm.values_.length;\n },\n reverse: function reverse() {\n // reverse by default mutates in place before returning the result\n // which makes it both a 'derivation' and a 'mutation'.\n if (globalState.trackingDerivation) {\n die(37, \"reverse\");\n }\n this.replace(this.slice().reverse());\n return this;\n },\n sort: function sort() {\n // sort by default mutates in place before returning the result\n // which goes against all good practices. Let's not change the array in place!\n if (globalState.trackingDerivation) {\n die(37, \"sort\");\n }\n var copy = this.slice();\n copy.sort.apply(copy, arguments);\n this.replace(copy);\n return this;\n },\n remove: function remove(value) {\n var adm = this[$mobx];\n var idx = adm.dehanceValues_(adm.values_).indexOf(value);\n if (idx > -1) {\n this.splice(idx, 1);\n return true;\n }\n return false;\n }\n};\n/**\r\n * Wrap function from prototype\r\n * Without this, everything works as well, but this works\r\n * faster as everything works on unproxied values\r\n */\naddArrayExtension(\"concat\", simpleFunc);\naddArrayExtension(\"flat\", simpleFunc);\naddArrayExtension(\"includes\", simpleFunc);\naddArrayExtension(\"indexOf\", simpleFunc);\naddArrayExtension(\"join\", simpleFunc);\naddArrayExtension(\"lastIndexOf\", simpleFunc);\naddArrayExtension(\"slice\", simpleFunc);\naddArrayExtension(\"toString\", simpleFunc);\naddArrayExtension(\"toLocaleString\", simpleFunc);\n// map\naddArrayExtension(\"every\", mapLikeFunc);\naddArrayExtension(\"filter\", mapLikeFunc);\naddArrayExtension(\"find\", mapLikeFunc);\naddArrayExtension(\"findIndex\", mapLikeFunc);\naddArrayExtension(\"flatMap\", mapLikeFunc);\naddArrayExtension(\"forEach\", mapLikeFunc);\naddArrayExtension(\"map\", mapLikeFunc);\naddArrayExtension(\"some\", mapLikeFunc);\n// reduce\naddArrayExtension(\"reduce\", reduceLikeFunc);\naddArrayExtension(\"reduceRight\", reduceLikeFunc);\nfunction addArrayExtension(funcName, funcFactory) {\n if (typeof Array.prototype[funcName] === \"function\") {\n arrayExtensions[funcName] = funcFactory(funcName);\n }\n}\n// Report and delegate to dehanced array\nfunction simpleFunc(funcName) {\n return function () {\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_);\n return dehancedValues[funcName].apply(dehancedValues, arguments);\n };\n}\n// Make sure callbacks recieve correct array arg #2326\nfunction mapLikeFunc(funcName) {\n return function (callback, thisArg) {\n var _this2 = this;\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_);\n return dehancedValues[funcName](function (element, index) {\n return callback.call(thisArg, element, index, _this2);\n });\n };\n}\n// Make sure callbacks recieve correct array arg #2326\nfunction reduceLikeFunc(funcName) {\n return function () {\n var _this3 = this;\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_);\n // #2432 - reduce behavior depends on arguments.length\n var callback = arguments[0];\n arguments[0] = function (accumulator, currentValue, index) {\n return callback(accumulator, currentValue, index, _this3);\n };\n return dehancedValues[funcName].apply(dehancedValues, arguments);\n };\n}\nvar isObservableArrayAdministration = /*#__PURE__*/createInstanceofPredicate(\"ObservableArrayAdministration\", ObservableArrayAdministration);\nfunction isObservableArray(thing) {\n return isObject(thing) && isObservableArrayAdministration(thing[$mobx]);\n}\n\nvar _Symbol$iterator, _Symbol$toStringTag;\nvar ObservableMapMarker = {};\nvar ADD = \"add\";\nvar DELETE = \"delete\";\n// just extend Map? See also https://gist.github.com/nestharus/13b4d74f2ef4a2f4357dbd3fc23c1e54\n// But: https://github.com/mobxjs/mobx/issues/1556\n_Symbol$iterator = Symbol.iterator;\n_Symbol$toStringTag = Symbol.toStringTag;\nvar ObservableMap = /*#__PURE__*/function () {\n // hasMap, not hashMap >-).\n\n function ObservableMap(initialData, enhancer_, name_) {\n var _this = this;\n if (enhancer_ === void 0) {\n enhancer_ = deepEnhancer;\n }\n if (name_ === void 0) {\n name_ = \"ObservableMap@\" + getNextId() ;\n }\n this.enhancer_ = void 0;\n this.name_ = void 0;\n this[$mobx] = ObservableMapMarker;\n this.data_ = void 0;\n this.hasMap_ = void 0;\n this.keysAtom_ = void 0;\n this.interceptors_ = void 0;\n this.changeListeners_ = void 0;\n this.dehancer = void 0;\n this.enhancer_ = enhancer_;\n this.name_ = name_;\n if (!isFunction(Map)) {\n die(18);\n }\n this.keysAtom_ = createAtom( this.name_ + \".keys()\" );\n this.data_ = new Map();\n this.hasMap_ = new Map();\n allowStateChanges(true, function () {\n _this.merge(initialData);\n });\n }\n var _proto = ObservableMap.prototype;\n _proto.has_ = function has_(key) {\n return this.data_.has(key);\n };\n _proto.has = function has(key) {\n var _this2 = this;\n if (!globalState.trackingDerivation) {\n return this.has_(key);\n }\n var entry = this.hasMap_.get(key);\n if (!entry) {\n var newEntry = entry = new ObservableValue(this.has_(key), referenceEnhancer, this.name_ + \".\" + stringifyKey(key) + \"?\" , false);\n this.hasMap_.set(key, newEntry);\n onBecomeUnobserved(newEntry, function () {\n return _this2.hasMap_[\"delete\"](key);\n });\n }\n return entry.get();\n };\n _proto.set = function set(key, value) {\n var hasKey = this.has_(key);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: hasKey ? UPDATE : ADD,\n object: this,\n newValue: value,\n name: key\n });\n if (!change) {\n return this;\n }\n value = change.newValue;\n }\n if (hasKey) {\n this.updateValue_(key, value);\n } else {\n this.addValue_(key, value);\n }\n return this;\n };\n _proto[\"delete\"] = function _delete(key) {\n var _this3 = this;\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: DELETE,\n object: this,\n name: key\n });\n if (!change) {\n return false;\n }\n }\n if (this.has_(key)) {\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var _change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: this.data_.get(key).value_,\n name: key\n } : null;\n if ( notifySpy) {\n spyReportStart(_change);\n } // TODO fix type\n transaction(function () {\n var _this3$hasMap_$get;\n _this3.keysAtom_.reportChanged();\n (_this3$hasMap_$get = _this3.hasMap_.get(key)) == null ? void 0 : _this3$hasMap_$get.setNewValue_(false);\n var observable = _this3.data_.get(key);\n observable.setNewValue_(undefined);\n _this3.data_[\"delete\"](key);\n });\n if (notify) {\n notifyListeners(this, _change);\n }\n if ( notifySpy) {\n spyReportEnd();\n }\n return true;\n }\n return false;\n };\n _proto.updateValue_ = function updateValue_(key, newValue) {\n var observable = this.data_.get(key);\n newValue = observable.prepareNewValue_(newValue);\n if (newValue !== globalState.UNCHANGED) {\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: UPDATE,\n object: this,\n oldValue: observable.value_,\n name: key,\n newValue: newValue\n } : null;\n if ( notifySpy) {\n spyReportStart(change);\n } // TODO fix type\n observable.setNewValue_(newValue);\n if (notify) {\n notifyListeners(this, change);\n }\n if ( notifySpy) {\n spyReportEnd();\n }\n }\n };\n _proto.addValue_ = function addValue_(key, newValue) {\n var _this4 = this;\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n transaction(function () {\n var _this4$hasMap_$get;\n var observable = new ObservableValue(newValue, _this4.enhancer_, _this4.name_ + \".\" + stringifyKey(key) , false);\n _this4.data_.set(key, observable);\n newValue = observable.value_; // value might have been changed\n (_this4$hasMap_$get = _this4.hasMap_.get(key)) == null ? void 0 : _this4$hasMap_$get.setNewValue_(true);\n _this4.keysAtom_.reportChanged();\n });\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n name: key,\n newValue: newValue\n } : null;\n if ( notifySpy) {\n spyReportStart(change);\n } // TODO fix type\n if (notify) {\n notifyListeners(this, change);\n }\n if ( notifySpy) {\n spyReportEnd();\n }\n };\n _proto.get = function get(key) {\n if (this.has(key)) {\n return this.dehanceValue_(this.data_.get(key).get());\n }\n return this.dehanceValue_(undefined);\n };\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.keys = function keys() {\n this.keysAtom_.reportObserved();\n return this.data_.keys();\n };\n _proto.values = function values() {\n var self = this;\n var keys = this.keys();\n return makeIterable({\n next: function next() {\n var _keys$next = keys.next(),\n done = _keys$next.done,\n value = _keys$next.value;\n return {\n done: done,\n value: done ? undefined : self.get(value)\n };\n }\n });\n };\n _proto.entries = function entries() {\n var self = this;\n var keys = this.keys();\n return makeIterable({\n next: function next() {\n var _keys$next2 = keys.next(),\n done = _keys$next2.done,\n value = _keys$next2.value;\n return {\n done: done,\n value: done ? undefined : [value, self.get(value)]\n };\n }\n });\n };\n _proto[_Symbol$iterator] = function () {\n return this.entries();\n };\n _proto.forEach = function forEach(callback, thisArg) {\n for (var _iterator = _createForOfIteratorHelperLoose(this), _step; !(_step = _iterator()).done;) {\n var _step$value = _step.value,\n key = _step$value[0],\n value = _step$value[1];\n callback.call(thisArg, value, key, this);\n }\n }\n /** Merge another object into this object, returns this. */;\n _proto.merge = function merge(other) {\n var _this5 = this;\n if (isObservableMap(other)) {\n other = new Map(other);\n }\n transaction(function () {\n if (isPlainObject(other)) {\n getPlainObjectKeys(other).forEach(function (key) {\n return _this5.set(key, other[key]);\n });\n } else if (Array.isArray(other)) {\n other.forEach(function (_ref) {\n var key = _ref[0],\n value = _ref[1];\n return _this5.set(key, value);\n });\n } else if (isES6Map(other)) {\n if (other.constructor !== Map) {\n die(19, other);\n }\n other.forEach(function (value, key) {\n return _this5.set(key, value);\n });\n } else if (other !== null && other !== undefined) {\n die(20, other);\n }\n });\n return this;\n };\n _proto.clear = function clear() {\n var _this6 = this;\n transaction(function () {\n untracked(function () {\n for (var _iterator2 = _createForOfIteratorHelperLoose(_this6.keys()), _step2; !(_step2 = _iterator2()).done;) {\n var key = _step2.value;\n _this6[\"delete\"](key);\n }\n });\n });\n };\n _proto.replace = function replace(values) {\n var _this7 = this;\n // Implementation requirements:\n // - respect ordering of replacement map\n // - allow interceptors to run and potentially prevent individual operations\n // - don't recreate observables that already exist in original map (so we don't destroy existing subscriptions)\n // - don't _keysAtom.reportChanged if the keys of resulting map are indentical (order matters!)\n // - note that result map may differ from replacement map due to the interceptors\n transaction(function () {\n // Convert to map so we can do quick key lookups\n var replacementMap = convertToMap(values);\n var orderedData = new Map();\n // Used for optimization\n var keysReportChangedCalled = false;\n // Delete keys that don't exist in replacement map\n // if the key deletion is prevented by interceptor\n // add entry at the beginning of the result map\n for (var _iterator3 = _createForOfIteratorHelperLoose(_this7.data_.keys()), _step3; !(_step3 = _iterator3()).done;) {\n var key = _step3.value;\n // Concurrently iterating/deleting keys\n // iterator should handle this correctly\n if (!replacementMap.has(key)) {\n var deleted = _this7[\"delete\"](key);\n // Was the key removed?\n if (deleted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true;\n } else {\n // Delete prevented by interceptor\n var value = _this7.data_.get(key);\n orderedData.set(key, value);\n }\n }\n }\n // Merge entries\n for (var _iterator4 = _createForOfIteratorHelperLoose(replacementMap.entries()), _step4; !(_step4 = _iterator4()).done;) {\n var _step4$value = _step4.value,\n _key = _step4$value[0],\n _value = _step4$value[1];\n // We will want to know whether a new key is added\n var keyExisted = _this7.data_.has(_key);\n // Add or update value\n _this7.set(_key, _value);\n // The addition could have been prevent by interceptor\n if (_this7.data_.has(_key)) {\n // The update could have been prevented by interceptor\n // and also we want to preserve existing values\n // so use value from _data map (instead of replacement map)\n var _value2 = _this7.data_.get(_key);\n orderedData.set(_key, _value2);\n // Was a new key added?\n if (!keyExisted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true;\n }\n }\n }\n // Check for possible key order change\n if (!keysReportChangedCalled) {\n if (_this7.data_.size !== orderedData.size) {\n // If size differs, keys are definitely modified\n _this7.keysAtom_.reportChanged();\n } else {\n var iter1 = _this7.data_.keys();\n var iter2 = orderedData.keys();\n var next1 = iter1.next();\n var next2 = iter2.next();\n while (!next1.done) {\n if (next1.value !== next2.value) {\n _this7.keysAtom_.reportChanged();\n break;\n }\n next1 = iter1.next();\n next2 = iter2.next();\n }\n }\n }\n // Use correctly ordered map\n _this7.data_ = orderedData;\n });\n return this;\n };\n _proto.toString = function toString() {\n return \"[object ObservableMap]\";\n };\n _proto.toJSON = function toJSON() {\n return Array.from(this);\n };\n /**\r\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\r\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\r\n * for callback details\r\n */\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if ( fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with maps.\");\n }\n return registerListener(this, listener);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _createClass(ObservableMap, [{\n key: \"size\",\n get: function get() {\n this.keysAtom_.reportObserved();\n return this.data_.size;\n }\n }, {\n key: _Symbol$toStringTag,\n get: function get() {\n return \"Map\";\n }\n }]);\n return ObservableMap;\n}();\n// eslint-disable-next-line\nvar isObservableMap = /*#__PURE__*/createInstanceofPredicate(\"ObservableMap\", ObservableMap);\nfunction convertToMap(dataStructure) {\n if (isES6Map(dataStructure) || isObservableMap(dataStructure)) {\n return dataStructure;\n } else if (Array.isArray(dataStructure)) {\n return new Map(dataStructure);\n } else if (isPlainObject(dataStructure)) {\n var map = new Map();\n for (var key in dataStructure) {\n map.set(key, dataStructure[key]);\n }\n return map;\n } else {\n return die(21, dataStructure);\n }\n}\n\nvar _Symbol$iterator$1, _Symbol$toStringTag$1;\nvar ObservableSetMarker = {};\n_Symbol$iterator$1 = Symbol.iterator;\n_Symbol$toStringTag$1 = Symbol.toStringTag;\nvar ObservableSet = /*#__PURE__*/function () {\n function ObservableSet(initialData, enhancer, name_) {\n if (enhancer === void 0) {\n enhancer = deepEnhancer;\n }\n if (name_ === void 0) {\n name_ = \"ObservableSet@\" + getNextId() ;\n }\n this.name_ = void 0;\n this[$mobx] = ObservableSetMarker;\n this.data_ = new Set();\n this.atom_ = void 0;\n this.changeListeners_ = void 0;\n this.interceptors_ = void 0;\n this.dehancer = void 0;\n this.enhancer_ = void 0;\n this.name_ = name_;\n if (!isFunction(Set)) {\n die(22);\n }\n this.atom_ = createAtom(this.name_);\n this.enhancer_ = function (newV, oldV) {\n return enhancer(newV, oldV, name_);\n };\n if (initialData) {\n this.replace(initialData);\n }\n }\n var _proto = ObservableSet.prototype;\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.clear = function clear() {\n var _this = this;\n transaction(function () {\n untracked(function () {\n for (var _iterator = _createForOfIteratorHelperLoose(_this.data_.values()), _step; !(_step = _iterator()).done;) {\n var value = _step.value;\n _this[\"delete\"](value);\n }\n });\n });\n };\n _proto.forEach = function forEach(callbackFn, thisArg) {\n for (var _iterator2 = _createForOfIteratorHelperLoose(this), _step2; !(_step2 = _iterator2()).done;) {\n var value = _step2.value;\n callbackFn.call(thisArg, value, value, this);\n }\n };\n _proto.add = function add(value) {\n var _this2 = this;\n checkIfStateModificationsAreAllowed(this.atom_);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: ADD,\n object: this,\n newValue: value\n });\n if (!change) {\n return this;\n }\n // ideally, value = change.value would be done here, so that values can be\n // changed by interceptor. Same applies for other Set and Map api's.\n }\n\n if (!this.has(value)) {\n transaction(function () {\n _this2.data_.add(_this2.enhancer_(value, undefined));\n _this2.atom_.reportChanged();\n });\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var _change = notify || notifySpy ? {\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n newValue: value\n } : null;\n if (notifySpy && \"development\" !== \"production\") {\n spyReportStart(_change);\n }\n if (notify) {\n notifyListeners(this, _change);\n }\n if (notifySpy && \"development\" !== \"production\") {\n spyReportEnd();\n }\n }\n return this;\n };\n _proto[\"delete\"] = function _delete(value) {\n var _this3 = this;\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: DELETE,\n object: this,\n oldValue: value\n });\n if (!change) {\n return false;\n }\n }\n if (this.has(value)) {\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var _change2 = notify || notifySpy ? {\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: value\n } : null;\n if (notifySpy && \"development\" !== \"production\") {\n spyReportStart(_change2);\n }\n transaction(function () {\n _this3.atom_.reportChanged();\n _this3.data_[\"delete\"](value);\n });\n if (notify) {\n notifyListeners(this, _change2);\n }\n if (notifySpy && \"development\" !== \"production\") {\n spyReportEnd();\n }\n return true;\n }\n return false;\n };\n _proto.has = function has(value) {\n this.atom_.reportObserved();\n return this.data_.has(this.dehanceValue_(value));\n };\n _proto.entries = function entries() {\n var nextIndex = 0;\n var keys = Array.from(this.keys());\n var values = Array.from(this.values());\n return makeIterable({\n next: function next() {\n var index = nextIndex;\n nextIndex += 1;\n return index < values.length ? {\n value: [keys[index], values[index]],\n done: false\n } : {\n done: true\n };\n }\n });\n };\n _proto.keys = function keys() {\n return this.values();\n };\n _proto.values = function values() {\n this.atom_.reportObserved();\n var self = this;\n var nextIndex = 0;\n var observableValues = Array.from(this.data_.values());\n return makeIterable({\n next: function next() {\n return nextIndex < observableValues.length ? {\n value: self.dehanceValue_(observableValues[nextIndex++]),\n done: false\n } : {\n done: true\n };\n }\n });\n };\n _proto.replace = function replace(other) {\n var _this4 = this;\n if (isObservableSet(other)) {\n other = new Set(other);\n }\n transaction(function () {\n if (Array.isArray(other)) {\n _this4.clear();\n other.forEach(function (value) {\n return _this4.add(value);\n });\n } else if (isES6Set(other)) {\n _this4.clear();\n other.forEach(function (value) {\n return _this4.add(value);\n });\n } else if (other !== null && other !== undefined) {\n die(\"Cannot initialize set from \" + other);\n }\n });\n return this;\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n // ... 'fireImmediately' could also be true?\n if ( fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with sets.\");\n }\n return registerListener(this, listener);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.toJSON = function toJSON() {\n return Array.from(this);\n };\n _proto.toString = function toString() {\n return \"[object ObservableSet]\";\n };\n _proto[_Symbol$iterator$1] = function () {\n return this.values();\n };\n _createClass(ObservableSet, [{\n key: \"size\",\n get: function get() {\n this.atom_.reportObserved();\n return this.data_.size;\n }\n }, {\n key: _Symbol$toStringTag$1,\n get: function get() {\n return \"Set\";\n }\n }]);\n return ObservableSet;\n}();\n// eslint-disable-next-line\nvar isObservableSet = /*#__PURE__*/createInstanceofPredicate(\"ObservableSet\", ObservableSet);\n\nvar descriptorCache = /*#__PURE__*/Object.create(null);\nvar REMOVE = \"remove\";\nvar ObservableObjectAdministration = /*#__PURE__*/function () {\n function ObservableObjectAdministration(target_, values_, name_,\n // Used anytime annotation is not explicitely provided\n defaultAnnotation_) {\n if (values_ === void 0) {\n values_ = new Map();\n }\n if (defaultAnnotation_ === void 0) {\n defaultAnnotation_ = autoAnnotation;\n }\n this.target_ = void 0;\n this.values_ = void 0;\n this.name_ = void 0;\n this.defaultAnnotation_ = void 0;\n this.keysAtom_ = void 0;\n this.changeListeners_ = void 0;\n this.interceptors_ = void 0;\n this.proxy_ = void 0;\n this.isPlainObject_ = void 0;\n this.appliedAnnotations_ = void 0;\n this.pendingKeys_ = void 0;\n this.target_ = target_;\n this.values_ = values_;\n this.name_ = name_;\n this.defaultAnnotation_ = defaultAnnotation_;\n this.keysAtom_ = new Atom( this.name_ + \".keys\" );\n // Optimization: we use this frequently\n this.isPlainObject_ = isPlainObject(this.target_);\n if ( !isAnnotation(this.defaultAnnotation_)) {\n die(\"defaultAnnotation must be valid annotation\");\n }\n {\n // Prepare structure for tracking which fields were already annotated\n this.appliedAnnotations_ = {};\n }\n }\n var _proto = ObservableObjectAdministration.prototype;\n _proto.getObservablePropValue_ = function getObservablePropValue_(key) {\n return this.values_.get(key).get();\n };\n _proto.setObservablePropValue_ = function setObservablePropValue_(key, newValue) {\n var observable = this.values_.get(key);\n if (observable instanceof ComputedValue) {\n observable.set(newValue);\n return true;\n }\n // intercept\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: UPDATE,\n object: this.proxy_ || this.target_,\n name: key,\n newValue: newValue\n });\n if (!change) {\n return null;\n }\n newValue = change.newValue;\n }\n newValue = observable.prepareNewValue_(newValue);\n // notify spy & observers\n if (newValue !== globalState.UNCHANGED) {\n var notify = hasListeners(this);\n var notifySpy = isSpyEnabled();\n var _change = notify || notifySpy ? {\n type: UPDATE,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n oldValue: observable.value_,\n name: key,\n newValue: newValue\n } : null;\n if ( notifySpy) {\n spyReportStart(_change);\n }\n observable.setNewValue_(newValue);\n if (notify) {\n notifyListeners(this, _change);\n }\n if ( notifySpy) {\n spyReportEnd();\n }\n }\n return true;\n };\n _proto.get_ = function get_(key) {\n if (globalState.trackingDerivation && !hasProp(this.target_, key)) {\n // Key doesn't exist yet, subscribe for it in case it's added later\n this.has_(key);\n }\n return this.target_[key];\n }\n /**\r\n * @param {PropertyKey} key\r\n * @param {any} value\r\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\r\n * @param {boolean} proxyTrap whether it's called from proxy trap\r\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\r\n */;\n _proto.set_ = function set_(key, value, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n // Don't use .has(key) - we care about own\n if (hasProp(this.target_, key)) {\n // Existing prop\n if (this.values_.has(key)) {\n // Observable (can be intercepted)\n return this.setObservablePropValue_(key, value);\n } else if (proxyTrap) {\n // Non-observable - proxy\n return Reflect.set(this.target_, key, value);\n } else {\n // Non-observable\n this.target_[key] = value;\n return true;\n }\n } else {\n // New prop\n return this.extend_(key, {\n value: value,\n enumerable: true,\n writable: true,\n configurable: true\n }, this.defaultAnnotation_, proxyTrap);\n }\n }\n // Trap for \"in\"\n ;\n _proto.has_ = function has_(key) {\n if (!globalState.trackingDerivation) {\n // Skip key subscription outside derivation\n return key in this.target_;\n }\n this.pendingKeys_ || (this.pendingKeys_ = new Map());\n var entry = this.pendingKeys_.get(key);\n if (!entry) {\n entry = new ObservableValue(key in this.target_, referenceEnhancer, this.name_ + \".\" + stringifyKey(key) + \"?\" , false);\n this.pendingKeys_.set(key, entry);\n }\n return entry.get();\n }\n /**\r\n * @param {PropertyKey} key\r\n * @param {Annotation|boolean} annotation true - use default annotation, false - ignore prop\r\n */;\n _proto.make_ = function make_(key, annotation) {\n if (annotation === true) {\n annotation = this.defaultAnnotation_;\n }\n if (annotation === false) {\n return;\n }\n assertAnnotable(this, annotation, key);\n if (!(key in this.target_)) {\n var _this$target_$storedA;\n // Throw on missing key, except for decorators:\n // Decorator annotations are collected from whole prototype chain.\n // When called from super() some props may not exist yet.\n // However we don't have to worry about missing prop,\n // because the decorator must have been applied to something.\n if ((_this$target_$storedA = this.target_[storedAnnotationsSymbol]) != null && _this$target_$storedA[key]) {\n return; // will be annotated by subclass constructor\n } else {\n die(1, annotation.annotationType_, this.name_ + \".\" + key.toString());\n }\n }\n var source = this.target_;\n while (source && source !== objectPrototype) {\n var descriptor = getDescriptor(source, key);\n if (descriptor) {\n var outcome = annotation.make_(this, key, descriptor, source);\n if (outcome === 0 /* Cancel */) {\n return;\n }\n if (outcome === 1 /* Break */) {\n break;\n }\n }\n source = Object.getPrototypeOf(source);\n }\n recordAnnotationApplied(this, annotation, key);\n }\n /**\r\n * @param {PropertyKey} key\r\n * @param {PropertyDescriptor} descriptor\r\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\r\n * @param {boolean} proxyTrap whether it's called from proxy trap\r\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\r\n */;\n _proto.extend_ = function extend_(key, descriptor, annotation, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n if (annotation === true) {\n annotation = this.defaultAnnotation_;\n }\n if (annotation === false) {\n return this.defineProperty_(key, descriptor, proxyTrap);\n }\n assertAnnotable(this, annotation, key);\n var outcome = annotation.extend_(this, key, descriptor, proxyTrap);\n if (outcome) {\n recordAnnotationApplied(this, annotation, key);\n }\n return outcome;\n }\n /**\r\n * @param {PropertyKey} key\r\n * @param {PropertyDescriptor} descriptor\r\n * @param {boolean} proxyTrap whether it's called from proxy trap\r\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\r\n */;\n _proto.defineProperty_ = function defineProperty_(key, descriptor, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n try {\n startBatch();\n // Delete\n var deleteOutcome = this.delete_(key);\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome;\n }\n // ADD interceptor\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: descriptor.value\n });\n if (!change) {\n return null;\n }\n var newValue = change.newValue;\n if (descriptor.value !== newValue) {\n descriptor = _extends({}, descriptor, {\n value: newValue\n });\n }\n }\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false;\n }\n } else {\n defineProperty(this.target_, key, descriptor);\n }\n // Notify\n this.notifyPropertyAddition_(key, descriptor.value);\n } finally {\n endBatch();\n }\n return true;\n }\n // If original descriptor becomes relevant, move this to annotation directly\n ;\n _proto.defineObservableProperty_ = function defineObservableProperty_(key, value, enhancer, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n try {\n startBatch();\n // Delete\n var deleteOutcome = this.delete_(key);\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome;\n }\n // ADD interceptor\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: value\n });\n if (!change) {\n return null;\n }\n value = change.newValue;\n }\n var cachedDescriptor = getCachedObservablePropDescriptor(key);\n var descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: true,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n };\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false;\n }\n } else {\n defineProperty(this.target_, key, descriptor);\n }\n var observable = new ObservableValue(value, enhancer, \"development\" !== \"production\" ? this.name_ + \".\" + key.toString() : \"ObservableObject.key\", false);\n this.values_.set(key, observable);\n // Notify (value possibly changed by ObservableValue)\n this.notifyPropertyAddition_(key, observable.value_);\n } finally {\n endBatch();\n }\n return true;\n }\n // If original descriptor becomes relevant, move this to annotation directly\n ;\n _proto.defineComputedProperty_ = function defineComputedProperty_(key, options, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n try {\n startBatch();\n // Delete\n var deleteOutcome = this.delete_(key);\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome;\n }\n // ADD interceptor\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: undefined\n });\n if (!change) {\n return null;\n }\n }\n options.name || (options.name = \"development\" !== \"production\" ? this.name_ + \".\" + key.toString() : \"ObservableObject.key\");\n options.context = this.proxy_ || this.target_;\n var cachedDescriptor = getCachedObservablePropDescriptor(key);\n var descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: false,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n };\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false;\n }\n } else {\n defineProperty(this.target_, key, descriptor);\n }\n this.values_.set(key, new ComputedValue(options));\n // Notify\n this.notifyPropertyAddition_(key, undefined);\n } finally {\n endBatch();\n }\n return true;\n }\n /**\r\n * @param {PropertyKey} key\r\n * @param {PropertyDescriptor} descriptor\r\n * @param {boolean} proxyTrap whether it's called from proxy trap\r\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\r\n */;\n _proto.delete_ = function delete_(key, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n // No such prop\n if (!hasProp(this.target_, key)) {\n return true;\n }\n // Intercept\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: REMOVE\n });\n // Cancelled\n if (!change) {\n return null;\n }\n }\n // Delete\n try {\n var _this$pendingKeys_, _this$pendingKeys_$ge;\n startBatch();\n var notify = hasListeners(this);\n var notifySpy = \"development\" !== \"production\" && isSpyEnabled();\n var observable = this.values_.get(key);\n // Value needed for spies/listeners\n var value = undefined;\n // Optimization: don't pull the value unless we will need it\n if (!observable && (notify || notifySpy)) {\n var _getDescriptor;\n value = (_getDescriptor = getDescriptor(this.target_, key)) == null ? void 0 : _getDescriptor.value;\n }\n // delete prop (do first, may fail)\n if (proxyTrap) {\n if (!Reflect.deleteProperty(this.target_, key)) {\n return false;\n }\n } else {\n delete this.target_[key];\n }\n // Allow re-annotating this field\n if (\"development\" !== \"production\") {\n delete this.appliedAnnotations_[key];\n }\n // Clear observable\n if (observable) {\n this.values_[\"delete\"](key);\n // for computed, value is undefined\n if (observable instanceof ObservableValue) {\n value = observable.value_;\n }\n // Notify: autorun(() => obj[key]), see #1796\n propagateChanged(observable);\n }\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged();\n // Notify \"has\" observers\n // \"in\" as it may still exist in proto\n (_this$pendingKeys_ = this.pendingKeys_) == null ? void 0 : (_this$pendingKeys_$ge = _this$pendingKeys_.get(key)) == null ? void 0 : _this$pendingKeys_$ge.set(key in this.target_);\n // Notify spies/listeners\n if (notify || notifySpy) {\n var _change2 = {\n type: REMOVE,\n observableKind: \"object\",\n object: this.proxy_ || this.target_,\n debugObjectName: this.name_,\n oldValue: value,\n name: key\n };\n if (\"development\" !== \"production\" && notifySpy) {\n spyReportStart(_change2);\n }\n if (notify) {\n notifyListeners(this, _change2);\n }\n if (\"development\" !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n }\n } finally {\n endBatch();\n }\n return true;\n }\n /**\r\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\r\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\r\n * for callback details\r\n */;\n _proto.observe_ = function observe_(callback, fireImmediately) {\n if ( fireImmediately === true) {\n die(\"`observe` doesn't support the fire immediately property for observable objects.\");\n }\n return registerListener(this, callback);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.notifyPropertyAddition_ = function notifyPropertyAddition_(key, value) {\n var _this$pendingKeys_2, _this$pendingKeys_2$g;\n var notify = hasListeners(this);\n var notifySpy = isSpyEnabled();\n if (notify || notifySpy) {\n var change = notify || notifySpy ? {\n type: ADD,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n name: key,\n newValue: value\n } : null;\n if ( notifySpy) {\n spyReportStart(change);\n }\n if (notify) {\n notifyListeners(this, change);\n }\n if ( notifySpy) {\n spyReportEnd();\n }\n }\n (_this$pendingKeys_2 = this.pendingKeys_) == null ? void 0 : (_this$pendingKeys_2$g = _this$pendingKeys_2.get(key)) == null ? void 0 : _this$pendingKeys_2$g.set(true);\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged();\n };\n _proto.ownKeys_ = function ownKeys_() {\n this.keysAtom_.reportObserved();\n return ownKeys(this.target_);\n };\n _proto.keys_ = function keys_() {\n // Returns enumerable && own, but unfortunately keysAtom will report on ANY key change.\n // There is no way to distinguish between Object.keys(object) and Reflect.ownKeys(object) - both are handled by ownKeys trap.\n // We can either over-report in Object.keys(object) or under-report in Reflect.ownKeys(object)\n // We choose to over-report in Object.keys(object), because:\n // - typically it's used with simple data objects\n // - when symbolic/non-enumerable keys are relevant Reflect.ownKeys works as expected\n this.keysAtom_.reportObserved();\n return Object.keys(this.target_);\n };\n return ObservableObjectAdministration;\n}();\nfunction asObservableObject(target, options) {\n var _options$name;\n if ( options && isObservableObject(target)) {\n die(\"Options can't be provided for already observable objects.\");\n }\n if (hasProp(target, $mobx)) {\n if ( !(getAdministration(target) instanceof ObservableObjectAdministration)) {\n die(\"Cannot convert '\" + getDebugName(target) + \"' into observable object:\" + \"\\nThe target is already observable of different type.\" + \"\\nExtending builtins is not supported.\");\n }\n return target;\n }\n if ( !Object.isExtensible(target)) {\n die(\"Cannot make the designated object observable; it is not extensible\");\n }\n var name = (_options$name = options == null ? void 0 : options.name) != null ? _options$name : (isPlainObject(target) ? \"ObservableObject\" : target.constructor.name) + \"@\" + getNextId() ;\n var adm = new ObservableObjectAdministration(target, new Map(), String(name), getAnnotationFromOptions(options));\n addHiddenProp(target, $mobx, adm);\n return target;\n}\nvar isObservableObjectAdministration = /*#__PURE__*/createInstanceofPredicate(\"ObservableObjectAdministration\", ObservableObjectAdministration);\nfunction getCachedObservablePropDescriptor(key) {\n return descriptorCache[key] || (descriptorCache[key] = {\n get: function get() {\n return this[$mobx].getObservablePropValue_(key);\n },\n set: function set(value) {\n return this[$mobx].setObservablePropValue_(key, value);\n }\n });\n}\nfunction isObservableObject(thing) {\n if (isObject(thing)) {\n return isObservableObjectAdministration(thing[$mobx]);\n }\n return false;\n}\nfunction recordAnnotationApplied(adm, annotation, key) {\n var _adm$target_$storedAn;\n {\n adm.appliedAnnotations_[key] = annotation;\n }\n // Remove applied decorator annotation so we don't try to apply it again in subclass constructor\n (_adm$target_$storedAn = adm.target_[storedAnnotationsSymbol]) == null ? true : delete _adm$target_$storedAn[key];\n}\nfunction assertAnnotable(adm, annotation, key) {\n // Valid annotation\n if ( !isAnnotation(annotation)) {\n die(\"Cannot annotate '\" + adm.name_ + \".\" + key.toString() + \"': Invalid annotation.\");\n }\n /*\r\n // Configurable, not sealed, not frozen\r\n // Possibly not needed, just a little better error then the one thrown by engine.\r\n // Cases where this would be useful the most (subclass field initializer) are not interceptable by this.\r\n if (__DEV__) {\r\n const configurable = getDescriptor(adm.target_, key)?.configurable\r\n const frozen = Object.isFrozen(adm.target_)\r\n const sealed = Object.isSealed(adm.target_)\r\n if (!configurable || frozen || sealed) {\r\n const fieldName = `${adm.name_}.${key.toString()}`\r\n const requestedAnnotationType = annotation.annotationType_\r\n let error = `Cannot apply '${requestedAnnotationType}' to '${fieldName}':`\r\n if (frozen) {\r\n error += `\\nObject is frozen.`\r\n }\r\n if (sealed) {\r\n error += `\\nObject is sealed.`\r\n }\r\n if (!configurable) {\r\n error += `\\nproperty is not configurable.`\r\n // Mention only if caused by us to avoid confusion\r\n if (hasProp(adm.appliedAnnotations!, key)) {\r\n error += `\\nTo prevent accidental re-definition of a field by a subclass, `\r\n error += `all annotated fields of non-plain objects (classes) are not configurable.`\r\n }\r\n }\r\n die(error)\r\n }\r\n }\r\n */\n // Not annotated\n if ( !isOverride(annotation) && hasProp(adm.appliedAnnotations_, key)) {\n var fieldName = adm.name_ + \".\" + key.toString();\n var currentAnnotationType = adm.appliedAnnotations_[key].annotationType_;\n var requestedAnnotationType = annotation.annotationType_;\n die(\"Cannot apply '\" + requestedAnnotationType + \"' to '\" + fieldName + \"':\" + (\"\\nThe field is already annotated with '\" + currentAnnotationType + \"'.\") + \"\\nRe-annotating fields is not allowed.\" + \"\\nUse 'override' annotation for methods overridden by subclass.\");\n }\n}\n\n// Bug in safari 9.* (or iOS 9 safari mobile). See #364\nvar ENTRY_0 = /*#__PURE__*/createArrayEntryDescriptor(0);\n/**\r\n * This array buffer contains two lists of properties, so that all arrays\r\n * can recycle their property definitions, which significantly improves performance of creating\r\n * properties on the fly.\r\n */\nvar OBSERVABLE_ARRAY_BUFFER_SIZE = 0;\n// Typescript workaround to make sure ObservableArray extends Array\nvar StubArray = function StubArray() {};\nfunction inherit(ctor, proto) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(ctor.prototype, proto);\n } else if (ctor.prototype.__proto__ !== undefined) {\n ctor.prototype.__proto__ = proto;\n } else {\n ctor.prototype = proto;\n }\n}\ninherit(StubArray, Array.prototype);\n// Weex proto freeze protection was here,\n// but it is unclear why the hack is need as MobX never changed the prototype\n// anyway, so removed it in V6\nvar LegacyObservableArray = /*#__PURE__*/function (_StubArray, _Symbol$toStringTag, _Symbol$iterator) {\n _inheritsLoose(LegacyObservableArray, _StubArray);\n function LegacyObservableArray(initialValues, enhancer, name, owned) {\n var _this;\n if (name === void 0) {\n name = \"ObservableArray@\" + getNextId() ;\n }\n if (owned === void 0) {\n owned = false;\n }\n _this = _StubArray.call(this) || this;\n var adm = new ObservableArrayAdministration(name, enhancer, owned, true);\n adm.proxy_ = _assertThisInitialized(_this);\n addHiddenFinalProp(_assertThisInitialized(_this), $mobx, adm);\n if (initialValues && initialValues.length) {\n var prev = allowStateChangesStart(true);\n // @ts-ignore\n _this.spliceWithArray(0, 0, initialValues);\n allowStateChangesEnd(prev);\n }\n {\n // Seems that Safari won't use numeric prototype setter untill any * numeric property is\n // defined on the instance. After that it works fine, even if this property is deleted.\n Object.defineProperty(_assertThisInitialized(_this), \"0\", ENTRY_0);\n }\n return _this;\n }\n var _proto = LegacyObservableArray.prototype;\n _proto.concat = function concat() {\n this[$mobx].atom_.reportObserved();\n for (var _len = arguments.length, arrays = new Array(_len), _key = 0; _key < _len; _key++) {\n arrays[_key] = arguments[_key];\n }\n return Array.prototype.concat.apply(this.slice(),\n //@ts-ignore\n arrays.map(function (a) {\n return isObservableArray(a) ? a.slice() : a;\n }));\n };\n _proto[_Symbol$iterator] = function () {\n var self = this;\n var nextIndex = 0;\n return makeIterable({\n next: function next() {\n return nextIndex < self.length ? {\n value: self[nextIndex++],\n done: false\n } : {\n done: true,\n value: undefined\n };\n }\n });\n };\n _createClass(LegacyObservableArray, [{\n key: \"length\",\n get: function get() {\n return this[$mobx].getArrayLength_();\n },\n set: function set(newLength) {\n this[$mobx].setArrayLength_(newLength);\n }\n }, {\n key: _Symbol$toStringTag,\n get: function get() {\n return \"Array\";\n }\n }]);\n return LegacyObservableArray;\n}(StubArray, Symbol.toStringTag, Symbol.iterator);\nObject.entries(arrayExtensions).forEach(function (_ref) {\n var prop = _ref[0],\n fn = _ref[1];\n if (prop !== \"concat\") {\n addHiddenProp(LegacyObservableArray.prototype, prop, fn);\n }\n});\nfunction createArrayEntryDescriptor(index) {\n return {\n enumerable: false,\n configurable: true,\n get: function get() {\n return this[$mobx].get_(index);\n },\n set: function set(value) {\n this[$mobx].set_(index, value);\n }\n };\n}\nfunction createArrayBufferItem(index) {\n defineProperty(LegacyObservableArray.prototype, \"\" + index, createArrayEntryDescriptor(index));\n}\nfunction reserveArrayBuffer(max) {\n if (max > OBSERVABLE_ARRAY_BUFFER_SIZE) {\n for (var index = OBSERVABLE_ARRAY_BUFFER_SIZE; index < max + 100; index++) {\n createArrayBufferItem(index);\n }\n OBSERVABLE_ARRAY_BUFFER_SIZE = max;\n }\n}\nreserveArrayBuffer(1000);\nfunction createLegacyArray(initialValues, enhancer, name) {\n return new LegacyObservableArray(initialValues, enhancer, name);\n}\n\nfunction getAtom(thing, property) {\n if (typeof thing === \"object\" && thing !== null) {\n if (isObservableArray(thing)) {\n if (property !== undefined) {\n die(23);\n }\n return thing[$mobx].atom_;\n }\n if (isObservableSet(thing)) {\n return thing.atom_;\n }\n if (isObservableMap(thing)) {\n if (property === undefined) {\n return thing.keysAtom_;\n }\n var observable = thing.data_.get(property) || thing.hasMap_.get(property);\n if (!observable) {\n die(25, property, getDebugName(thing));\n }\n return observable;\n }\n if (isObservableObject(thing)) {\n if (!property) {\n return die(26);\n }\n var _observable = thing[$mobx].values_.get(property);\n if (!_observable) {\n die(27, property, getDebugName(thing));\n }\n return _observable;\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing;\n }\n } else if (isFunction(thing)) {\n if (isReaction(thing[$mobx])) {\n // disposer function\n return thing[$mobx];\n }\n }\n die(28);\n}\nfunction getAdministration(thing, property) {\n if (!thing) {\n die(29);\n }\n if (property !== undefined) {\n return getAdministration(getAtom(thing, property));\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing;\n }\n if (isObservableMap(thing) || isObservableSet(thing)) {\n return thing;\n }\n if (thing[$mobx]) {\n return thing[$mobx];\n }\n die(24, thing);\n}\nfunction getDebugName(thing, property) {\n var named;\n if (property !== undefined) {\n named = getAtom(thing, property);\n } else if (isAction(thing)) {\n return thing.name;\n } else if (isObservableObject(thing) || isObservableMap(thing) || isObservableSet(thing)) {\n named = getAdministration(thing);\n } else {\n // valid for arrays as well\n named = getAtom(thing);\n }\n return named.name_;\n}\n\nvar toString = objectPrototype.toString;\nfunction deepEqual(a, b, depth) {\n if (depth === void 0) {\n depth = -1;\n }\n return eq(a, b, depth);\n}\n// Copied from https://github.com/jashkenas/underscore/blob/5c237a7c682fb68fd5378203f0bf22dce1624854/underscore.js#L1186-L1289\n// Internal recursive comparison function for `isEqual`.\nfunction eq(a, b, depth, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) {\n return a !== 0 || 1 / a === 1 / b;\n }\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) {\n return false;\n }\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) {\n return b !== b;\n }\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== \"function\" && type !== \"object\" && typeof b != \"object\") {\n return false;\n }\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) {\n return false;\n }\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case \"[object RegExp]\":\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case \"[object String]\":\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return \"\" + a === \"\" + b;\n case \"[object Number]\":\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) {\n return +b !== +b;\n }\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case \"[object Date]\":\n case \"[object Boolean]\":\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case \"[object Symbol]\":\n return typeof Symbol !== \"undefined\" && Symbol.valueOf.call(a) === Symbol.valueOf.call(b);\n case \"[object Map]\":\n case \"[object Set]\":\n // Maps and Sets are unwrapped to arrays of entry-pairs, adding an incidental level.\n // Hide this extra level by increasing the depth.\n if (depth >= 0) {\n depth++;\n }\n break;\n }\n // Unwrap any wrapped objects.\n a = unwrap(a);\n b = unwrap(b);\n var areArrays = className === \"[object Array]\";\n if (!areArrays) {\n if (typeof a != \"object\" || typeof b != \"object\") {\n return false;\n }\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor,\n bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor && isFunction(bCtor) && bCtor instanceof bCtor) && \"constructor\" in a && \"constructor\" in b) {\n return false;\n }\n }\n if (depth === 0) {\n return false;\n } else if (depth < 0) {\n depth = -1;\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) {\n return bStack[length] === b;\n }\n }\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) {\n return false;\n }\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], depth - 1, aStack, bStack)) {\n return false;\n }\n }\n } else {\n // Deep compare objects.\n var keys = Object.keys(a);\n var key;\n length = keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (Object.keys(b).length !== length) {\n return false;\n }\n while (length--) {\n // Deep compare each member\n key = keys[length];\n if (!(hasProp(b, key) && eq(a[key], b[key], depth - 1, aStack, bStack))) {\n return false;\n }\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\nfunction unwrap(a) {\n if (isObservableArray(a)) {\n return a.slice();\n }\n if (isES6Map(a) || isObservableMap(a)) {\n return Array.from(a.entries());\n }\n if (isES6Set(a) || isObservableSet(a)) {\n return Array.from(a.entries());\n }\n return a;\n}\n\nfunction makeIterable(iterator) {\n iterator[Symbol.iterator] = getSelf;\n return iterator;\n}\nfunction getSelf() {\n return this;\n}\n\nfunction isAnnotation(thing) {\n return (\n // Can be function\n thing instanceof Object && typeof thing.annotationType_ === \"string\" && isFunction(thing.make_) && isFunction(thing.extend_)\n );\n}\n\n/**\r\n * (c) Michel Weststrate 2015 - 2020\r\n * MIT Licensed\r\n *\r\n * Welcome to the mobx sources! To get a global overview of how MobX internally works,\r\n * this is a good place to start:\r\n * https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\r\n *\r\n * Source folders:\r\n * ===============\r\n *\r\n * - api/ Most of the public static methods exposed by the module can be found here.\r\n * - core/ Implementation of the MobX algorithm; atoms, derivations, reactions, dependency trees, optimizations. Cool stuff can be found here.\r\n * - types/ All the magic that is need to have observable objects, arrays and values is in this folder. Including the modifiers like `asFlat`.\r\n * - utils/ Utility stuff.\r\n *\r\n */\n[\"Symbol\", \"Map\", \"Set\"].forEach(function (m) {\n var g = getGlobal();\n if (typeof g[m] === \"undefined\") {\n die(\"MobX requires global '\" + m + \"' to be available or polyfilled\");\n }\n});\nif (typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__ === \"object\") {\n // See: https://github.com/andykog/mobx-devtools/\n __MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({\n spy: spy,\n extras: {\n getDebugName: getDebugName\n },\n $mobx: $mobx\n });\n}\n\nexports.$mobx = $mobx;\nexports.FlowCancellationError = FlowCancellationError;\nexports.ObservableMap = ObservableMap;\nexports.ObservableSet = ObservableSet;\nexports.Reaction = Reaction;\nexports._allowStateChanges = allowStateChanges;\nexports._allowStateChangesInsideComputed = runInAction;\nexports._allowStateReadsEnd = allowStateReadsEnd;\nexports._allowStateReadsStart = allowStateReadsStart;\nexports._autoAction = autoAction;\nexports._endAction = _endAction;\nexports._getAdministration = getAdministration;\nexports._getGlobalState = getGlobalState;\nexports._interceptReads = interceptReads;\nexports._isComputingDerivation = isComputingDerivation;\nexports._resetGlobalState = resetGlobalState;\nexports._startAction = _startAction;\nexports.action = action;\nexports.autorun = autorun;\nexports.comparer = comparer;\nexports.computed = computed;\nexports.configure = configure;\nexports.createAtom = createAtom;\nexports.defineProperty = apiDefineProperty;\nexports.entries = entries;\nexports.extendObservable = extendObservable;\nexports.flow = flow;\nexports.flowResult = flowResult;\nexports.get = get;\nexports.getAtom = getAtom;\nexports.getDebugName = getDebugName;\nexports.getDependencyTree = getDependencyTree;\nexports.getObserverTree = getObserverTree;\nexports.has = has;\nexports.intercept = intercept;\nexports.isAction = isAction;\nexports.isBoxedObservable = isObservableValue;\nexports.isComputed = isComputed;\nexports.isComputedProp = isComputedProp;\nexports.isFlow = isFlow;\nexports.isFlowCancellationError = isFlowCancellationError;\nexports.isObservable = isObservable;\nexports.isObservableArray = isObservableArray;\nexports.isObservableMap = isObservableMap;\nexports.isObservableObject = isObservableObject;\nexports.isObservableProp = isObservableProp;\nexports.isObservableSet = isObservableSet;\nexports.keys = keys;\nexports.makeAutoObservable = makeAutoObservable;\nexports.makeObservable = makeObservable;\nexports.observable = observable;\nexports.observe = observe;\nexports.onBecomeObserved = onBecomeObserved;\nexports.onBecomeUnobserved = onBecomeUnobserved;\nexports.onReactionError = onReactionError;\nexports.override = override;\nexports.ownKeys = apiOwnKeys;\nexports.reaction = reaction;\nexports.remove = remove;\nexports.runInAction = runInAction;\nexports.set = set;\nexports.spy = spy;\nexports.toJS = toJS;\nexports.trace = trace;\nexports.transaction = transaction;\nexports.untracked = untracked;\nexports.values = values;\nexports.when = when;\n//# sourceMappingURL=mobx.cjs.development.js.map\n","\n'use strict'\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./mobx.cjs.production.min.js')\n} else {\n module.exports = require('./mobx.cjs.development.js')\n}\n","import { ApplicationContext, Mark } from '@vgerbot/ioc';\nimport React, { useContext, useRef } from 'react';\nimport { Newable } from '@vgerbot/ioc/dist/types/Newable';\nimport { PartialInstAwareProcessor } from '@vgerbot/ioc/dist/types/InstantiationAwareProcessor';\nimport { makeObservable } from 'mobx';\n\nconst IoCContext = React.createContext(undefined);\n\nconst MARK_AS_MOBX_OBSERVABLE = 'mark-as-mobx-observable';\n\nexport function Observable() {\n return Mark(MARK_AS_MOBX_OBSERVABLE, true);\n}\n\nexport type IoCProps = React.PropsWithChildren<{\n callback?: (appctx: ApplicationContext) => void;\n}>;\n\nexport function IoC(props: IoCProps) {\n const ref = useRef();\n if (!ref.current) {\n const appctx = new ApplicationContext();\n if (typeof props.callback === 'function') {\n props.callback(appctx);\n }\n appctx.registerInstAwareProcessor(\n class implements PartialInstAwareProcessor {\n afterInstantiation(instance: T): T {\n const markInfo = appctx.getClassMetadata(instance.constructor as Newable).getCtorMarkInfo();\n if (markInfo[MARK_AS_MOBX_OBSERVABLE]) {\n makeObservable(instance);\n }\n return instance;\n }\n }\n );\n ref.current = appctx;\n }\n return React.createElement(\n IoCContext.Provider,\n {\n value: ref.current\n },\n props.children\n );\n}\n\nexport function useService(ctor: Newable): T {\n const ctx = useContext(IoCContext);\n if (!ctx) {\n throw new Error(' has not been applied to the component.');\n }\n return ctx.getInstance(ctor);\n}\n\nexport * from '@vgerbot/ioc';\n"],"names":["minimist","hasRequiredMinimist","requireMinimist","isNumber","x","test","isConstructorOrProto","obj","key","args","opts","flags","bools","strings","unknownFn","unknown","boolean","allBools","concat","filter","Boolean","forEach","aliases","aliasIsBoolean","some","Object","keys","alias","y","string","k","defaults","default","argv","_","setKey","value","o","i","length","undefined","prototype","Number","String","Array","lastKey","isArray","push","setArg","val","arg","argDefined","split","notFlags","indexOf","slice","next","m","match","letters","broken","j","stopEarly","apply","exports","ServiceFactoryDef","factory","injections","this","createFromClassMetadata","metadata","container","owner","clazz","reader","getClass","getInstance","GlobalMetadata","classAliasMetadataMap","Map","componentFactories","processorClasses","Set","INSTANCE","recordFactory","symbol","set","recordClassAlias","aliasName","recordProcessorClass","add","init","_this","getComponentFactory","get","getClassMetadata","getInstAwareProcessorClasses","from","extendStatics","d","b","setPrototypeOf","__proto__","p","hasOwnProperty","call","InstanceScope","__assign","assign","t","s","n","arguments","__metadata","metadataKey","metadataValue","Reflect","__read","Symbol","iterator","r","e","ar","done","error","__spreadArray","to","pack","l","createDefaultValueMap","map","originGet","bind","has","defaultValue","Reflect$1","commonjsGlobal","globalThis","window","commonjsHelpers.commonjsGlobal","self","root","Function","exporter","makeExporter","target","previous","defineProperty","configurable","writable","hasOwn","supportsSymbol","toPrimitiveSymbol","toPrimitive","iteratorSymbol","supportsCreate","create","supportsProto","downLevel","HashMap","MakeDictionary","functionPrototype","getPrototypeOf","usePolyfill","process","env","_Map","entries","CreateMapPolyfill","_Set","CreateSetPolyfill","Metadata","WeakMap","CreateWeakMapPolyfill","decorate","decorators","propertyKey","attributes","IsUndefined","IsArray","TypeError","IsConstructor","DecorateConstructor","IsObject","IsNull","DecorateProperty","ToPropertyKey","decorator","IsPropertyKey","OrdinaryDefineOwnMetadata","defineMetadata","hasMetadata","OrdinaryHasMetadata","hasOwnMetadata","OrdinaryHasOwnMetadata","getMetadata","OrdinaryGetMetadata","getOwnMetadata","OrdinaryGetOwnMetadata","getMetadataKeys","OrdinaryMetadataKeys","getOwnMetadataKeys","OrdinaryOwnMetadataKeys","deleteMetadata","metadataMap","GetOrCreateMetadataMap","delete","size","targetMetadata","decorated","descriptor","O","P","Create","MetadataKey","parent","OrdinaryGetPrototypeOf","ToBoolean","MetadataValue","ownKeys","parentKeys","_i","ownKeys_1","_a","parentKeys_1","GetIterator","IteratorStep","nextValue","IteratorValue","IteratorClose","Type","IsSymbol","ToPrimitive","input","PreferredType","hint","exoticToPrim","GetMethod","result","OrdinaryToPrimitive","toString_1","toString","IsCallable","valueOf","toString_2","argument","ToString","V","func","method","iterResult","f","proto","prototypeProto","constructor","cacheSentinel","arraySentinel","MapIterator","values","selector","_index","_keys","_values","_selector","index","throw","return","_cacheKey","_cacheIndex","enumerable","_find","clear","getKey","getValue","getEntry","insert","_map","UUID_SIZE","rootKey","CreateUniqueKey","_key","table","GetOrCreateWeakMapTable","CreateUUID","FillRandomBytes","buffer","Math","random","GenRandomBytes","Uint8Array","crypto","getRandomValues","msCrypto","data","offset","byte","toLowerCase","__","Lifecycle","MetadataFactory","metadataClass","getReflectKey","MarkInfoContainer","getMarkInfo","mark","ParameterMarkInfoContainer","paramsMarkInfo","markInfo","ClassMetadata","scope","SINGLETON","constructorParameterTypes","lifecycleMethodsMap","propertyTypesMap","marks","ctor","members","params","constr","setScope","inject","recordPropertyType","marker","member","parameter","setConstructorParameterType","cls","type","addLifecycleMethod","methodName","lifecycle","lifecycles","getLifecycles","getMethods","it","getScope","getConstructorParameterTypes","getPropertyTypeMap","getCtorMarkInfo","getMembersMarkInfo","getParameterMarkInfo","methodKey","ExpressionType","LifecycleDecorator","isNodeJs","require","arch","EventEmitter","events","on","listener","listeners","ls","splice","emit","fn","hasArgs","options","hasInjections","lazyProp","lazyMember","index_cjs","evaluateResult","context","computeFn","evaluate","resetTester","resetTesters","release","reset","isPresent","needReset","u","a","getOwnPropertyDescriptor","Error","resetBy","__lazy__","lazyMemberOfClass","lazyVal","__val__","LifecycleManager","componentClass","classMetadataReader","invokePreInjectMethod","instance","methods","PRE_INJECT","invokeLifecycleMethods","invokePostInjectMethod","POST_INJECT","invokePreDestroyInjectMethod","PRE_DESTROY","methodKeys","invoke","ComponentInstanceBuilder","instAwareProcessorManager","getConstructorArgs","propertyFactories","lazyMode","lifecycleResolver","appendClassMetadata","appendLazyMode","e_1","types","globalMetadataReader","properties","_loop_1","propertyName","propertyType","this_1","getFactory","propertyClassMetadata","propertyFactory","properties_1","__values","properties_1_1","_b","e_1_1","build","createPropertiesGetterBuilder","isInstAwareProcessorClass","getter","beforeInstantiation","afterInstantiation","_loop_2","this_2","FUNCTION_METADATA_KEY","FunctionMetadata","parameters","isFactory","setParameterType","setIsFactory","getParameters","instanceSerialNo","ComponentInstanceWrapper","serialNo","compareTo","other","invokePreDestroy","SingletonInstanceResolution","INSTANCE_MAP","identifier","saveInstance","shouldGenerate","destroy","instanceWrappers","sort","instanceWrapper","SINGLETON_INSTANCE_SINGLETON","GlobalSharedInstanceResolution","TransientInstanceResolution","instances","JSONDataEvaluator","namespaceDataMap","eval","expression","colonIndex","namespace","substring","exp","rootContext","trim","rootVarName","prefix","VAR_SEQUENCE","compileExpression","runExpression","recordData","Date","now","Advice","EnvironmentEvaluator","ArgvEvaluator","require$$1","AspectUtils","beforeHooks","afterHooks","thrownHooks","finallyHooks","afterReturnHooks","aroundHooks","append","advice","hook","hooksArray","Before","After","Thrown","Finally","AfterReturn","Around","extract","reduceRight","prev","onError","onFinally","onAfter","returnValue","isPromise","Promise","catch","finally","then","reduce","retVal","AOPClassMetadata","aspectMap","aspects","exitingAspectArray","getAspects","getAspectsOf","AOPInstantiationAwareProcessor","appCtx","_super","class_1","__extends","useAspectMetadataReader","aspectStoreMap","Proxy","prop","originValue","aspectFn","methodFunc","createAspectCtx","aspectUtils","ClassToInstance","AspectClass","beforeAdviceAspects","afterAdviceAspects","tryCatchAdviceAspects","tryFinallyAdviceAspects","afterReturnAdviceAspects","aroundAdviceAspects","joinPoint","aspect","execute","prevReturnValue","originFn","proceed","jpArgs","createAspect","InstantiationAwareProcessorManager","instAwareProcessorClasses","appendInstAwareProcessorClass","instAwareProcessorClass","appendInstAwareProcessorClasses","instAwareProcessorInstances","processor","desc","c","__decorate","PRE_DESTROY_EVENT_KEY","ApplicationContext","resolutions","factories","evaluatorClasses","eventEmitter","defaultScope","registerInstanceScopeResolution","GLOBAL_SHARED_SINGLETON","TRANSIENT","registerEvaluator","JSON_PATH","ENV","ARGV","registerInstAwareProcessor","factoryDef","componentClass_1","resolver","isInstAwareProcessor","classMetadata","resolution","getInstanceOptions","ownerPropertyKey","createComponentInstanceBuilder","saveInstanceOptions","builder","bindFactory","args_1","parameterIdentifiers","evaluatorClass","externalArgs","recordJSONData","bindInstance","resolutionConstructor","constructorArgs","name","onPreDestroy","Bind","Factory","Inject","parameterIndex","targetConstr","Mark","_c","PostInject","PreDestroy","PreInject","Scope","Value","value_symbol","index_cjs_1","hasRequiredReact_production_min","requireReact_production_min","react_production_min","for","q","v","w","z","B","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","C","D","E","props","refs","updater","F","G","isReactComponent","setState","forceUpdate","H","isPureReactComponent","I","J","K","current","L","ref","__self","__source","M","h","g","children","defaultProps","$$typeof","_owner","Q","replace","escape","R","N","A","join","S","T","_status","_result","U","transition","W","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","Children","count","toArray","only","Component","Fragment","Profiler","PureComponent","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","cloneElement","createContext","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","_context","createElement","createFactory","createRef","forwardRef","render","isValidElement","lazy","_payload","_init","memo","compare","startTransition","unstable_act","useCallback","useContext","useDebugValue","useDeferredValue","useEffect","useId","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useSyncExternalStore","useTransition","version","hasRequiredReact_development","module","requireReact_development","react_developmentModule","react_development","NODE_ENV","__REACT_DEVTOOLS_GLOBAL_HOOK__","registerInternalModuleStart","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_OFFSCREEN_TYPE","MAYBE_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","maybeIterator","ReactCurrentActQueue","isBatchingLegacy","didScheduleLegacyUpdate","ReactDebugCurrentFrame","currentExtraStackFrame","setExtraStackFrame","stack","getCurrentStack","getStackAddendum","impl","ReactSharedInternals","warn","format","_len","printWarning","_len2","_key2","level","argsWithFormat","item","unshift","console","didWarnStateUpdateForUnmountedComponent","warnNoop","publicInstance","callerName","_constructor","componentName","displayName","warningKey","ReactNoopUpdateQueue","callback","completeState","partialState","emptyObject","freeze","deprecatedAPIs","replaceState","defineDeprecationWarning","info","fnName","ComponentDummy","pureComponentPrototype","isArrayImpl","testStringCoercion","checkKeyStringCoercion","willCoercionThrow","toStringTag","typeName","getContextName","getComponentNameFromType","tag","outerType","innerType","wrapperName","functionName","getWrappedName","outerName","lazyComponent","payload","specialPropKeyWarningShown","specialPropRefWarningShown","didWarnAboutStringRefs","RESERVED_PROPS","hasValidRef","config","isReactWarning","hasValidKey","defineKeyPropWarningGetter","warnAboutAccessingKey","defineRefPropWarningGetter","warnAboutAccessingRef","warnIfStringRefCannotBeAutoConverted","stateNode","ReactElement","source","element","_store","propName","childrenLength","childArray","_self","_source","object","REACT_MODULE_REFERENCE","didWarnAboutMaps","userProvidedKeyEscapeRegex","escapeUserProvidedKey","text","getElementKey","escaperLookup","mapIntoArray","array","escapedPrefix","nameSoFar","oldElement","newKey","child","invokeCallback","_child","mappedChild","childKey","escapedChildKey","subtreeCount","nextNamePrefix","iteratorFn","iterableChildren","step","ii","childrenString","mapChildren","lazyInitializer","thenable","moduleObject","resolved","rejected","pending","isValidElementType","getModuleId","resolveDispatcher","dispatcher","prevLog","prevInfo","prevWarn","prevError","prevGroup","prevGroupCollapsed","prevGroupEnd","disabledDepth","disabledLog","__reactDisabledLog","ReactCurrentDispatcher$1","describeBuiltInComponentFrame","ownerFn","componentFrameCache","reentry","PossiblyWeakMap","describeNativeComponentFrame","construct","control","frame","previousDispatcher","previousPrepareStackTrace","prepareStackTrace","log","group","groupCollapsed","groupEnd","defineProperties","disableLogs","Fake","sample","sampleLines","controlLines","_frame","includes","reenableLogs","syntheticFrame","describeUnknownElementTypeFrameInDEV","shouldConstruct","propTypesMisspellWarningShown","loggedTypeFailures","ReactDebugCurrentFrame$1","setCurrentlyValidatingElement","setCurrentlyValidatingElement$1","getDeclarationErrorAddendum","getSourceInfoErrorAddendumForProps","elementProps","fileName","lineNumber","ownerHasKeyUseWarning","validateExplicitKey","parentType","validated","currentComponentErrorInfo","parentName","getCurrentComponentErrorInfo","childOwner","validateChildKeys","node","validatePropTypes","propTypes","typeSpecs","location","typeSpecName","error$1","err","ex","message","checkPropTypes","PropTypes","getDefaultProps","isReactClassApproved","validateFragmentProps","fragment","createElementWithValidation","validType","typeString","sourceInfo","didWarnAboutDeprecatedCreateFactory","didWarnAboutMessageChannel","enqueueTaskImpl","actScopeDepth","didWarnNoAwaitAct","popActScope","prevActScopeDepth","recursivelyFlushAsyncActWork","resolve","reject","queue","flushActQueue","task","requireString","nodeRequire","setImmediate","_err","MessageChannel","channel","port1","onmessage","port2","postMessage","enqueueTask","isFlushing","createElement$1","cloneElement$1","newElement","validatedFactory","forEachFunc","forEachContext","hasWarnedAboutUsingNestedContextConsumers","hasWarnedAboutUsingConsumerProvider","hasWarnedAboutDisplayNameOnConsumer","_Provider","_currentRenderer","_currentRenderer2","refObject","seal","ownName","elementType","lazyType","newDefaultProps","newPropTypes","prevTransition","currentTransition","_updatedFibers","prevIsBatchingLegacy","thenableResult","wasAwaited","_queue","deps","Context","realContext","formatterFn","reducer","initialArg","initialValue","initialState","subscribe","getSnapshot","getServerSnapshot","registerInternalModuleStop","require$$0","hasRequiredMobx_cjs_production_min","React","commonjsHelpers.getDefaultExportFromCjs","react","requireMobx_cjs_production_min","mobx_cjs_production_min","xn","En","Vn","_n","Sn","ReferenceError","Kn","Rn","In","St","Mt","It","Jn","At","Ct","Ri","Si","bound","yi","safeDescriptors","autoAction","isMobXFlow","enhancer","Zn","autoBind","deep","X","Gn","defaultDecorator","box","Wn","$","isMobxAction","ri","ei","Y","trackingDerivation","dt","allowStateChanges","ut","Z","ft","ni","suppressReactionErrors","tt","at","bt","st","nt","vi","fi","hi","disableErrorBoundaries","ct","rt","runId","inBatch","vt","ht","et","ot","allowStateReads","lt","pendingUnobservations","mt","onBUO","ci","pt","trackingContext","onBO","yt","isRunningReactions","wi","wt","pendingReactions","jt","Ot","Ai","Oi","xt","gt","Nn","scheduler","delay","_t","mi","track","requiresObservable","setTimeout","Mi","Nt","bn","Et","Cn","sn","Ln","kn","Vt","dependencies","Rt","observers","Tt","kt","cancel","Kt","an","Lt","Pn","ji","Pt","Ui","Yi","un","Dt","Bt","qt","Gt","pop","Wt","ai","NONE","BREAK","LOG","Ht","Xt","timeout","dispose","clearTimeout","Ut","signal","aborted","addEventListener","removeEventListener","Ft","zt","$t","Jt","Yt","Qt","Zt","tn","Li","Ki","nn","Ii","rn","reportObserved","en","Bi","Zi","Qi","tr","cn","hn","vn","er","ln","ir","dn","yn","pn","mn","or","wn","jn","On","An","gn","Mn","Tn","getOwnPropertySymbols","getOwnPropertyNames","getOwnPropertyDescriptors","onBOL","onBUOL","reportChanged","stateVersion","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","Dn","identity","structural","is","shallow","Bn","qn","proxy","Hn","Xn","Un","Fn","zn","$n","ui","equals","useProxies","Xi","Ji","Ti","struct","Yn","Qn","ti","oi","dehancer","dehanceValue","UNCHANGED","Ci","newValue","oldValue","observableKind","debugObjectName","raw","toJSON","si","derivation","compareStructural","requiresReaction","keepAlive","trackAndCompute","cause","li","di","mobxGuid","enforceActions","spyListeners","globalReactionErrorHandlers","computedRequiresReaction","reactionRequiresObservable","observableRequiresReaction","verifyProxies","bi","pi","__mobxInstanceCount","__mobxGlobals","isScheduled","trace","xi","gi","Ni","Ei","Vi","deleteProperty","preventExtensions","ki","isNaN","parseInt","added","addedCount","removed","removedCount","max","min","spliceWithArray","shift","reverse","remove","Pi","Di","qi","Gi","Wi","Hi","merge","propertyIsEnumerable","Fi","zi","$i","in","nr","rr","__MOBX_DEVTOOLS_GLOBAL_HOOK__","injectMobx","spy","extras","getDebugName","$mobx","FlowCancellationError","ObservableMap","ObservableSet","Reaction","_allowStateChanges","_allowStateChangesInsideComputed","_allowStateReadsEnd","_allowStateReadsStart","_autoAction","_endAction","_getAdministration","_getGlobalState","_interceptReads","_isComputingDerivation","_resetGlobalState","_startAction","action","autorun","comparer","computed","configure","isolateGlobalState","reactionScheduler","createAtom","extendObservable","flow","flowResult","getAtom","getDependencyTree","getObserverTree","intercept","isAction","isBoxedObservable","isComputed","isComputedProp","isFlow","isFlowCancellationError","isObservable","isObservableArray","isObservableMap","isObservableObject","isObservableProp","isObservableSet","makeAutoObservable","makeObservable","observable","observe","onBecomeObserved","onBecomeUnobserved","onReactionError","override","reaction","fireImmediately","runInAction","toJS","transaction","untracked","when","hasRequiredMobx_cjs_development","requireMobx_cjs_development","mobx_cjs_development","errors","annotationType","dataStructure","thing","property","die","mockGlobal","getGlobal","getDescriptor","objectPrototype","EMPTY_ARRAY","EMPTY_OBJECT","hasProxy","plainObjectString","assertProxies","warnAboutProxyRequirement","msg","globalState","getNextId","once","invoked","noop","isFunction","isStringish","isObject","isPlainObject","protoConstructor","isGenerator","addHiddenProp","addHiddenFinalProp","createInstanceofPredicate","theClass","isES6Map","isES6Set","hasGetOwnPropertySymbols","stringifyKey","hasProp","res","_defineProperties","prim","_toPrimitive","_createClass","Constructor","protoProps","staticProps","_extends","_inheritsLoose","subClass","superClass","_setPrototypeOf","_assertThisInitialized","_arrayLikeToArray","arr","len","arr2","_createForOfIteratorHelperLoose","allowArrayLike","minLen","_unsupportedIterableToArray","storedAnnotationsSymbol","createDecoratorAnnotation","annotation","storeAnnotation","isOverride","fieldName","currentAnnotationType","annotationType_","assertNotDecorated","Atom","name_","isPendingUnobservation_","isBeingObserved_","observers_","diffValue_","lastAccessedBy_","lowestObserverState_","IDerivationState_","NOT_TRACKING_","_proto","startBatch","propagateChanged","endBatch","isAtom","onBecomeObservedHandler","onBecomeUnobservedHandler","atom","deepEqual","deepEnhancer","referenceEnhancer","OVERRIDE","make_","adm","isPlainObject_","appliedAnnotations_","extend_","proxyTrap","createActionAnnotation","options_","make_$1","extend_$1","_this$options_","target_","actionDescriptor","createActionDescriptor","defineProperty_","_annotation$options_","_annotation$options_$","_annotation$options_2","_annotation$options_$2","_annotation$options_3","_annotation$options_4","_adm$proxy_2","_ref","_ref2","assertActionDescriptor","_adm$proxy_","proxy_","createAction","createFlowAnnotation","make_$2","extend_$2","flowDescriptor","createFlowDescriptor","_this$options_2","assertFlowDescriptor","createComputedAnnotation","make_$3","extend_$3","assertComputedDescriptor","defineComputedProperty_","createObservableAnnotation","make_$4","extend_$4","_this$options_$enhanc","assertObservableDescriptor","defineObservableProperty_","autoAnnotation","createAutoAnnotation","make_$5","extend_$5","_this$options_3","_this$options_4","observableAnnotation","_this$options_5","_this$options_6","defaultCreateObservableOptions","asCreateObservableOptions","observableRefAnnotation","observableShallowAnnotation","observableStructAnnotation","observableDecoratorAnnotation","getEnhancerFromOptions","createObservable","arg2","arg3","_getDescriptor$config","_getDescriptor","ObservableValue","initialValues","createLegacyArray","createObservableArray","asObservableObject","_target$$mobx","_target$$mobx$proxy_","objectProxyTraps","asDynamicObservableObject","COMPUTED","computedAnnotation","computedStructAnnotation","arg1","ComputedValue","_Symbol$toPrimitive","currentActionId","nextActionId","isFunctionNameConfigurable","tmpNameDescriptor","actionName","executeAction","canRunAsDerivation","runInfo","error_","notifySpy_","isSpyEnabled","startTime_","flattenedArgs","spyReportStart","ACTION","prevDerivation_","runAsAction","prevAllowStateChanges_","untrackedStart","allowStateChangesStart","runAsAction_","prevAllowStateReads_","allowStateReadsStart","actionId_","parentActionId_","allowStateChangesEnd","allowStateReadsEnd","untrackedEnd","spyReportEnd","time","_Symbol$toPrimitive$1","_Atom","notifySpy","hasUnreportedChange_","interceptors_","changeListeners_","value_","spyReport","prepareNewValue_","UPDATE","setNewValue_","checkIfStateModificationsAreAllowed","hasInterceptors","change","interceptChange","hasListeners","notifyListeners","intercept_","handler","registerInterceptor","observe_","registerListener","isObservableValue","TraceMode","dependenciesState_","observing_","newObserving_","runId_","UP_TO_DATE_","unboundDepsCount_","CaughtException","triggeredBy_","isComputing_","isRunningSetter_","setter_","isTracing_","scope_","equals_","requiresReaction_","keepAlive_","onBecomeStale_","POSSIBLY_STALE_","propagateMaybeChanged","shouldCompute","prevTrackingContext","STALE_","logTraceInfo","propagateChangeConfirmed","warnAboutUntrackedRead_","computeValue_","isCaughtException","wasSuspended","changed","trackDerivedFunction","suspend_","clearObserving","firstTime","prevValue","prevU","isComputedValue","prevAllowStateReads","prevUntracked","obs","changeDependenciesStateTo0","hasObservers","prevTracking","prevObserving","observing","lowestNewObservingDerivationState","i0","dep","_dep","removeObserver","_dep2","addObserver","bindDependencies","requiresObservable_","warnAboutDerivationWithoutDependencies","persistentKeys","MobXGlobals","canMergeGlobalState","isolateCalled","global","queueForUnobservation","runReactions","list","checkIfStateReadsAreAllowed","lines","printDepTree","tree","depth","repeat","onInvalidate_","errorHandler_","isDisposed_","isScheduled_","isTrackPending_","isRunning_","schedule_","runReaction_","reportExceptionInDerivation_","startTime","notify","prevReaction","getDisposer_","enterBreakPoint","runReactionsHelper","allReactions","iterations","remainingReactions","isReaction","event","END_EVENT","AUTOACTION","DEFAULT_ACTION_NAME","actionAnnotation","actionBoundAnnotation","autoActionAnnotation","autoActionBoundAnnotation","createActionFactory","view","_opts$name","_opts","reactionRunner","createSchedulerFromOptions","run","interceptHook","cb","listenersKey","hookListeners","ALWAYS","annotations","descriptors","nodeToDependencyTree","nodeToObserverTree","getObservers","generatorId","flowAnnotation","flowBoundAnnotation","generator","rejector","ctx","gen","pendingPromise","promise","stepId","onFulfilled","ret","onRejected","cancelPromise","_res","yieldedPromise","_isComputed","values_","_isObservable","keys_","has_","apiOwnKeys","ownKeys_","cache","toJSHelper","__alreadySeen","idx","_res2","_res3","getAtomFromArgs","thisArg","_when","predicate","effect","timeoutHandle","disposer","effectAction","whenPromise","_opts$signal","abort","_opts$signal2","_opts$signal3","getAdm","get_","_getAdm$set_","set_","_getAdm$delete_","delete_","_getAdm$definePropert","interceptable","interceptors","listenable","keysSymbol","SPLICE","arrayTraps","getArrayLength_","arrayExtensions","setArrayLength_","ObservableArrayAdministration","owned_","legacyMode_","atom_","enhancer_","lastKnownLength_","newV","oldV","dehanceValue_","dehanceValues_","newLength","currentLength","newItems","spliceWithArray_","updateArrayLength_","oldLength","delta","reserveArrayBuffer","deleteCount","lengthDelta","spliceItemsIntoValues_","notifyArraySplice_","_this$values_","oldItems","notifyArrayChildUpdate_","owned","items","_len3","_key3","copy","addArrayExtension","funcName","funcFactory","simpleFunc","dehancedValues","mapLikeFunc","_this2","reduceLikeFunc","_this3","accumulator","currentValue","_Symbol$iterator","_Symbol$toStringTag","isObservableArrayAdministration","ObservableMapMarker","ADD","DELETE","_Symbol$iterator$1","_Symbol$toStringTag$1","initialData","data_","hasMap_","keysAtom_","entry","newEntry","hasKey","updateValue_","addValue_","_change","_this3$hasMap_$get","_this4","_this4$hasMap_$get","makeIterable","_keys$next","_keys$next2","_step","_iterator","_step$value","_this5","symbols","getPlainObjectKeys","_this6","_step2","_iterator2","_this7","_step3","replacementMap","convertToMap","orderedData","keysReportChangedCalled","_iterator3","_step4","_iterator4","_step4$value","_value","keyExisted","_value2","iter1","iter2","next1","next2","ObservableSetMarker","callbackFn","_change2","nextIndex","observableValues","descriptorCache","REMOVE","ObservableObjectAdministration","defaultAnnotation_","pendingKeys_","isAnnotation","getObservablePropValue_","setObservablePropValue_","assertAnnotable","_this$target_$storedA","outcome","recordAnnotationApplied","deleteOutcome","notifyPropertyAddition_","cachedDescriptor","getCachedObservablePropDescriptor","_this$pendingKeys_","_this$pendingKeys_$ge","_this$pendingKeys_2","_this$pendingKeys_2$g","_options$name","getAdministration","isExtensible","_options$defaultDecor","getAnnotationFromOptions","isObservableObjectAdministration","_adm$target_$storedAn","ENTRY_0","createArrayEntryDescriptor","OBSERVABLE_ARRAY_BUFFER_SIZE","StubArray","LegacyObservableArray","_StubArray","arrays","createArrayBufferItem","_observable","named","eq","aStack","bStack","className","unwrap","areArrays","aCtor","bCtor","getSelf","propOrHandler","defaultGlobals","baseScheduler","ea","interceptProperty","interceptInterceptable","overrides","collectStoredAnnotations","propOrCb","cbOrFire","observeObservableProperty","observeObservable","_opts$name2","errorHandler","baseFn","runSync","IoCContext","Observable","IoC","appctx_1","useService"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.esm.js","sources":["../src/index.ts"],"sourcesContent":["import { ApplicationContext, Mark } from '@vgerbot/ioc';\nimport React, { useContext, useRef } from 'react';\nimport { Newable } from '@vgerbot/ioc/dist/types/Newable';\nimport { PartialInstAwareProcessor } from '@vgerbot/ioc/dist/types/InstantiationAwareProcessor';\nimport { makeObservable } from 'mobx';\n\nconst IoCContext = React.createContext(undefined);\n\nconst MARK_AS_MOBX_OBSERVABLE = 'mark-as-mobx-observable';\n\nexport function Observable() {\n return Mark(MARK_AS_MOBX_OBSERVABLE, true);\n}\n\nexport type IoCProps = React.PropsWithChildren<{\n callback?: (appctx: ApplicationContext) => void;\n}>;\n\nexport function IoC(props: IoCProps) {\n const ref = useRef();\n if (!ref.current) {\n const appctx = new ApplicationContext();\n if (typeof props.callback === 'function') {\n props.callback(appctx);\n }\n appctx.registerInstAwareProcessor(\n class implements PartialInstAwareProcessor {\n afterInstantiation(instance: T): T {\n const markInfo = appctx.getClassMetadata(instance.constructor as Newable).getCtorMarkInfo();\n if (markInfo[MARK_AS_MOBX_OBSERVABLE]) {\n makeObservable(instance);\n }\n return instance;\n }\n }\n );\n ref.current = appctx;\n }\n return React.createElement(\n IoCContext.Provider,\n {\n value: ref.current\n },\n props.children\n );\n}\n\nexport function useService(ctor: Newable): T {\n const ctx = useContext(IoCContext);\n if (!ctx) {\n throw new Error(' has not been applied to the component.');\n }\n return ctx.getInstance(ctor);\n}\n\nexport * from '@vgerbot/ioc';\n"],"names":["IoCContext","React","createContext","undefined","Observable","Mark","IoC","props","ref","useRef","current","appctx_1","ApplicationContext","callback","registerInstAwareProcessor","class_1","prototype","afterInstantiation","instance","getClassMetadata","constructor","getCtorMarkInfo","makeObservable","createElement","Provider","value","children","useService","ctor","ctx","useContext","Error","getInstance"],"mappings":"8KAMA,IAAMA,EAAaC,EAAMC,mBAA8CC,YAIvDC,IACZ,OAAOC,EAHqB,2BAGS,GAOnC,SAAUC,EAAIC,GAChB,IAAMC,EAAMC,IACZ,IAAKD,EAAIE,QAAS,CACd,IAAMC,EAAS,IAAIC,EACW,mBAAnBL,EAAMM,UACbN,EAAMM,SAASF,GAEnBA,EAAOG,2BAA0B,WAC7B,SAAAC,KAQA,OAPIA,EAAkBC,UAAAC,mBAAlB,SAAqCC,GAKjC,OAJiBP,EAAOQ,iBAAiBD,EAASE,aAA2BC,kBApBjE,4BAsBRC,EAAeJ,GAEZA,GAEdH,EAT4B,IAWjCP,EAAIE,QAAUC,EAElB,OAAOV,EAAMsB,cACTvB,EAAWwB,SACX,CACIC,MAAOjB,EAAIE,SAEfH,EAAMmB,UAIR,SAAUC,EAAcC,GAC1B,IAAMC,EAAMC,EAAW9B,GACvB,IAAK6B,EACD,MAAM,IAAIE,MAAM,sDAEpB,OAAOF,EAAIG,YAAYJ"} \ No newline at end of file diff --git a/dist/index.umd.js b/dist/index.umd.js index 5ef72a2..f8ea302 100644 --- a/dist/index.umd.js +++ b/dist/index.umd.js @@ -1,31 +1,2 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).useService={})}(this,(function(e){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function n(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var r,o,i={};function a(){if(o)return r;function e(e){return"number"==typeof e||(!!/^0x[0-9a-f]+$/i.test(e)||/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(e))}function t(e,t){return"constructor"===t&&"function"==typeof e[t]||"__proto__"===t}return o=1,r=function(n,r){r||(r={});var o={bools:{},strings:{},unknownFn:null};"function"==typeof r.unknown&&(o.unknownFn=r.unknown),"boolean"==typeof r.boolean&&r.boolean?o.allBools=!0:[].concat(r.boolean).filter(Boolean).forEach((function(e){o.bools[e]=!0}));var i={};function a(e){return i[e].some((function(e){return o.bools[e]}))}Object.keys(r.alias||{}).forEach((function(e){i[e]=[].concat(r.alias[e]),i[e].forEach((function(t){i[t]=[e].concat(i[e].filter((function(e){return t!==e})))}))})),[].concat(r.string).filter(Boolean).forEach((function(e){o.strings[e]=!0,i[e]&&[].concat(i[e]).forEach((function(e){o.strings[e]=!0}))}));var s=r.default||{},u={_:[]};function c(e,n,r){for(var i=e,a=0;a0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}function l(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o0)return!0;var o=p.get(t);return o.delete(n),o.size>0||p.delete(t),!0}function A(e,t){for(var n=e.length-1;n>=0;--n){var r=(0,e[n])(t);if(!N(r)&&!D(r)){if(!H(r))throw new TypeError;t=r}}return t}function E(e,t,n,r){for(var o=e.length-1;o>=0;--o){var i=(0,e[o])(t,n,r);if(!N(i)&&!D(i)){if(!V(i))throw new TypeError;r=i}}return r}function j(e,t,n){var r=p.get(e);if(N(r)){if(!n)return;r=new f,p.set(e,r)}var o=r.get(t);if(N(o)){if(!n)return;o=new f,r.set(t,o)}return o}function k(e,t,n){if(x(e,t,n))return!0;var r=Q(t);return!D(r)&&k(e,r,n)}function x(e,t,n){var r=j(t,n,!1);return!N(r)&&U(r.has(e))}function C(e,t,n){if(x(e,t,n))return R(e,t,n);var r=Q(t);return D(r)?void 0:C(e,r,n)}function R(e,t,n){var r=j(t,n,!1);if(!N(r))return r.get(e)}function P(e,t,n,r){j(n,r,!0).set(e,t)}function T(e,t){var n=M(e,t),r=Q(e);if(null===r)return n;var o=T(r,t);if(o.length<=0)return n;if(n.length<=0)return o;for(var i=new h,a=[],s=0,u=n;s=0&&e=this._keys.length?(this._index=-1,this._keys=t,this._values=t):this._index++,{value:n,done:!1}}return{value:void 0,done:!0}},e.prototype.throw=function(e){throw this._index>=0&&(this._index=-1,this._keys=t,this._values=t),e},e.prototype.return=function(e){return this._index>=0&&(this._index=-1,this._keys=t,this._values=t),{value:e,done:!0}},e}();return function(){function t(){this._keys=[],this._values=[],this._cacheKey=e,this._cacheIndex=-2}return Object.defineProperty(t.prototype,"size",{get:function(){return this._keys.length},enumerable:!0,configurable:!0}),t.prototype.has=function(e){return this._find(e,!1)>=0},t.prototype.get=function(e){var t=this._find(e,!1);return t>=0?this._values[t]:void 0},t.prototype.set=function(e,t){var n=this._find(e,!0);return this._values[n]=t,this},t.prototype.delete=function(t){var n=this._find(t,!1);if(n>=0){for(var r=this._keys.length,o=n+1;o-1&&e.splice(r,1)}},e.prototype.emit=function(e){for(var t,n=[],r=1;r=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(u),p=h.next();!p.done;p=h.next()){var d=c(p.value,2);l(d[0],d[1])}}catch(e){t={error:e}}finally{try{p&&!p.done&&(o=h.return)&&o.call(h)}finally{if(t)throw t.error}}},e.prototype.build=function(){var e,t,n=this.getConstructorArgs(),r=this.createPropertiesGetterBuilder();if(this.instAwareProcessorManager.isInstAwareProcessorClass(this.componentClass)){var o=new((e=this.componentClass).bind.apply(e,l([void 0],c(n),!1)));for(var i in this.lifecycleResolver.invokePreInjectMethod(o),r){var a=r[i](o);this.defineProperty(o,i,a)}return this.lifecycleResolver.invokePostInjectMethod(o),o}o=this.instAwareProcessorManager.beforeInstantiation(this.componentClass,n);for(var i in o||(o=new((t=this.componentClass).bind.apply(t,l([void 0],c(n),!1)))),this.lifecycleResolver.invokePreInjectMethod(o),r){a=r[i](o);this.defineProperty(o,i,a)}return o=this.instAwareProcessorManager.afterInstantiation(o),this.lifecycleResolver.invokePostInjectMethod(o),o},e.prototype.defineProperty=function(e,t,n){this.lazyMode?E(e,t,n):e[t]=n()},e.prototype.createPropertiesGetterBuilder=function(){var e=this,t={},n=function(n){var o=r.propertyFactories[n],i=o.factory,a=o.injections;t[n]=function(t){var n=i(e.container,t);return function(){return e.container.invoke(n,{injections:a})}}},r=this;for(var o in this.propertyFactories)n(o);return t},e}(),D=Symbol("ioc:function-metadata"),L=function(){function e(){this.parameters=[],this.isFactory=!1}return e.getReflectKey=function(){return D},e.prototype.setParameterType=function(e,t){this.parameters[e]=t},e.prototype.setScope=function(e){this.scope=e},e.prototype.setIsFactory=function(e){this.isFactory=e},e.prototype.init=function(){},e.prototype.reader=function(){var e=this;return{getParameters:function(){return e.parameters.slice(0)},isFactory:function(){return e.isFactory},getScope:function(){return e.scope}}},e}(),V=-1,B=function(){function e(e){this.instance=e,this.serialNo=++V}return e.prototype.compareTo=function(e){return this.serialNo>e.serialNo?-1:this.serialNo-1)throw new Error("Incorrect expression syntax, The ',' is not allowed in expression: \"".concat(e,'"'));if(e.length>120)throw new Error("Incorrect expression syntax, expression length cannot be greater than 120, but actual: ".concat(e.length));if(/\(.*?\)/.test(e))throw new Error('Incorrect expression syntax, parentheses are not allowed in expression: "'.concat(e,'"'));if(""===(e=e.trim()))return function(e){return e};var t=(n="context",n+""+(H++).toString(16));var n;return new Function(t,'\n "use strict";\n try {\n return '.concat(t,".").concat(e,";\n } catch(error) { throw error }\n "))}(e)(t)}(o,this.namespaceDataMap.get(r))},e.prototype.recordData=function(e,t){this.namespaceDataMap.set(e,t)},e}();var H=Date.now();var q,W=function(){function e(){}return e.prototype.eval=function(e,t){return process.env[t]},e}(),X=function(){function e(){}return e.prototype.eval=function(e,t,n){var r=n||process.argv;return a()(r)[t]},e}();!function(e){e[e.Before=0]="Before",e[e.After=1]="After",e[e.Around=2]="Around",e[e.AfterReturn=3]="AfterReturn",e[e.Thrown=4]="Thrown",e[e.Finally=5]="Finally"}(q||(q={}));var J=function(){function e(e){this.fn=e,this.beforeHooks=[],this.afterHooks=[],this.thrownHooks=[],this.finallyHooks=[],this.afterReturnHooks=[],this.aroundHooks=[]}return e.prototype.append=function(e,t){var n;switch(e){case q.Before:n=this.beforeHooks;break;case q.After:n=this.afterHooks;break;case q.Thrown:n=this.thrownHooks;break;case q.Finally:n=this.finallyHooks;break;case q.AfterReturn:n=this.afterReturnHooks;break;case q.Around:n=this.aroundHooks}n&&n.push(t)},e.prototype.extract=function(){var e=this,t=e.aroundHooks,n=e.beforeHooks,r=e.afterHooks,o=e.afterReturnHooks,i=e.finallyHooks,a=e.thrownHooks,s=t.reduceRight((function(e,t){return function(){for(var n=[],r=0;r0))throw n;a.forEach((function(r){return r.call(e,n,t)}))}),(function(){i.forEach((function(n){return n.call(e,t)}))}),(function(n){return r.forEach((function(n){n.call(e,t)})),o.reduce((function(n,r){return r.call(e,n,t)}),n)}))}},e}();var Y=function(){function e(){this.aspectMap=f((function(){return f((function(){return[]}))}))}return e.getReflectKey=function(){return"aop:use-aspect-metadata"},e.prototype.init=function(){},e.prototype.append=function(e,t,n){var r=this.aspectMap.get(e).get(t);r.push.apply(r,l([],c(n),!1))},e.prototype.reader=function(){var e=this;return{getAspects:function(){return e.aspectMap},getAspectsOf:function(t,n){return e.aspectMap.get(t).get(n)}}},e}(),Z=function(){function e(){}return e.create=function(t){return function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.appCtx=t,n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}(n,e),n}(e)},e.prototype.afterInstantiation=function(e){var t=this,n=e.constructor,r=v.getMetadata(n,Y).reader();if(0===r.getAspects().size)return e;var o=new WeakMap;return o.set(e,new Map),new Proxy(e,{get:function(n,i){var a=n[i];if(i in n&&"function"==typeof a){var s=o.get(e);if(!s)return a;if(s.has(i))return s.get(i);var u=function(e,t,n,r,o){var i=function(e,r,o,i){return void 0===o&&(o=null),void 0===i&&(i=null),{target:t,methodName:n,arguments:r,returnValue:o,error:i,advice:e}},a=new J(r),s=function(t){return e.getInstance(t)},u=o.getAspectsOf(n,q.Before).map(s),c=o.getAspectsOf(n,q.After).map(s),l=o.getAspectsOf(n,q.Thrown).map(s),f=o.getAspectsOf(n,q.Finally).map(s),h=o.getAspectsOf(n,q.AfterReturn).map(s),p=o.getAspectsOf(n,q.Around).map(s);return u.length>0&&a.append(q.Before,(function(e){var t=i(q.Before,e);u.forEach((function(e){e.execute(t)}))})),c.length>0&&a.append(q.After,(function(e){var t=i(q.After,e);c.forEach((function(e){e.execute(t)}))})),l.length>0&&a.append(q.Thrown,(function(e,t){var n=i(q.Thrown,t,null,e);l.forEach((function(e){e.execute(n)}))})),f.length>0&&a.append(q.Finally,(function(e){var t=i(q.Finally,e);f.forEach((function(e){e.execute(t)}))})),h.length>0&&a.append(q.AfterReturn,(function(e,t){return h.reduce((function(n,r){var o=i(q.AfterReturn,t,e);return r.execute(o)}),e)})),p.length>0&&p.forEach((function(e){a.append(q.Around,(function(t,n){var r=i(q.Around,n,null);return r.proceed=function(e){return void 0===e&&(e=n),t(e)},e.execute(r)}))})),a.extract()}(t.appCtx,n,i,a,r);return s.set(i,u),u}return a}})},e}(),Q=function(){function e(e){this.container=e,this.instAwareProcessorClasses=new Set}return e.prototype.appendInstAwareProcessorClass=function(e){this.instAwareProcessorClasses.add(e)},e.prototype.appendInstAwareProcessorClasses=function(e){var t=this;e.forEach((function(e){t.instAwareProcessorClasses.add(e)}))},e.prototype.beforeInstantiation=function(e,t){var n;return this.instAwareProcessorInstances.some((function(r){return!!r.beforeInstantiation&&!!(n=r.beforeInstantiation(e,t))})),n},e.prototype.afterInstantiation=function(e){return this.instAwareProcessorInstances.reduce((function(e,t){if(t.afterInstantiation){var n=t.afterInstantiation(e);if(n)return n}return e}),e)},e.prototype.isInstAwareProcessorClass=function(e){return this.getInstAwareProcessorClasses().indexOf(e)>-1},e.prototype.getInstAwareProcessorClasses=function(){return r.getInstance().reader().getInstAwareProcessorClasses().concat(Array.from(this.instAwareProcessorClasses))},function(e,t,n,r){var o,i=arguments.length,a=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);i>3&&a&&Object.defineProperty(t,n,a)}([j({evaluate:function(e){return r.getInstance().reader().getInstAwareProcessorClasses().concat(Array.from(e.instAwareProcessorClasses)).map((function(t){return e.container.getInstance(t)}))},resetBy:[function(e){return e.instAwareProcessorClasses.size},function(){return r.getInstance().reader().getInstAwareProcessorClasses().length}]}),u("design:type",Array)],e.prototype,"instAwareProcessorInstances",void 0),e}(),ee="container:event:pre-destroy",te=function(){function t(t){void 0===t&&(t={}),this.resolutions=new Map,this.factories=new Map,this.evaluatorClasses=new Map,this.eventEmitter=new O,this.defaultScope=t.defaultScope||e.InstanceScope.SINGLETON,this.lazyMode=void 0===t.lazyMode||t.lazyMode,this.registerInstanceScopeResolution(e.InstanceScope.SINGLETON,U),this.registerInstanceScopeResolution(e.InstanceScope.GLOBAL_SHARED_SINGLETON,K),this.registerInstanceScopeResolution(e.InstanceScope.TRANSIENT,z),this.registerEvaluator(e.ExpressionType.JSON_PATH,$),w&&(this.registerEvaluator(e.ExpressionType.ENV,W),this.registerEvaluator(e.ExpressionType.ARGV,X)),this.instAwareProcessorManager=new Q(this),this.registerInstAwareProcessor(Z.create(this))}return t.prototype.getInstance=function(e,n){if(e===t)return this;if("string"==typeof e||"symbol"==typeof e){var o=this.getFactory(e);if(o){var i=o.factory,a=o.injections,u=i(this,n),c=this.invoke(u,{injections:a}),l=null==c?void 0:c.constructor;if("function"==typeof l){var f=l,h=new I(f,this),p=this.instAwareProcessorManager.isInstAwareProcessorClass(f);h.invokePreInjectMethod(c),p||(c=this.instAwareProcessorManager.afterInstantiation(c)),h.invokePostInjectMethod(c)}return c}var d=r.getInstance().reader().getClassMetadata(e);if(!d)throw new Error("");e=d.reader().getClass()}var v=e,y=g.getInstance(v).reader().getScope(),b=this.resolutions.get(y)||this.resolutions.get(this.defaultScope),_={identifier:v,owner:n,ownerPropertyKey:void 0};if(b.shouldGenerate(_)){var m=this.createComponentInstanceBuilder(v).build(),w=s(s({},_),{instance:m});return b.saveInstance(w),m}return b.getInstance(_)},t.prototype.createComponentInstanceBuilder=function(e){var t=new N(e,this,this.instAwareProcessorManager);return t.appendLazyMode(this.lazyMode),t},t.prototype.getFactory=function(e){var t=r.getInstance().reader().getComponentFactory(e);return t||this.factories.get(e)},t.prototype.bindFactory=function(e,t,r){this.factories.set(e,new n(t,r))},t.prototype.invoke=function(e,t){var n,r=this;if(void 0===t&&(t={}),n=arguments.length>1?e.bind(t.context):e,S(t))return t.args?n.apply(void 0,l([],c(t.args),!1)):n();if(A(t)){var o=t.injections?t.injections.map((function(e){return r.getInstance(e)})):[];return o.length>0?n.apply(void 0,l([],c(o),!1)):n()}var i=v.getMetadata(n,L).reader(),a=i.getParameters(),s=a.map((function(e){return r.getInstance(e)}));return n.apply(void 0,l([],c(s),!1))},t.prototype.destroy=function(){this.eventEmitter.emit(ee),this.resolutions.forEach((function(e){e.destroy()}))},t.prototype.evaluate=function(e,t){var n=this.evaluatorClasses.get(t.type);if(!n)throw new TypeError("Unknown evaluator name: ".concat(t.type));return this.getInstance(n).eval(this,e,t.externalArgs)},t.prototype.recordJSONData=function(e,t){this.getInstance($).recordData(e,t)},t.prototype.bindInstance=function(t,n){var r=this.resolutions.get(e.InstanceScope.SINGLETON);null==r||r.saveInstance({identifier:t,instance:n})},t.prototype.registerInstanceScopeResolution=function(e,t,n){this.resolutions.set(e,new(t.bind.apply(t,l([void 0],c(n||[]),!1))))},t.prototype.registerEvaluator=function(t,n){v.getMetadata(n,g).setScope(e.InstanceScope.SINGLETON),this.evaluatorClasses.set(t,n)},t.prototype.registerInstAwareProcessor=function(e){this.instAwareProcessorManager.appendInstAwareProcessorClass(e)},t.prototype.onPreDestroy=function(e){return this.eventEmitter.on(ee,e)},t.prototype.getClassMetadata=function(e){return g.getInstance(e).reader()},t}();e.ApplicationContext=te,e.Bind=function(e){return function(t){var n=v.getMetadata(t,g);r.getInstance().recordClassAlias(e,n)}},e.Factory=function(e,t){return void 0===t&&(t=[]),function(n,o){var i=r.getInstance(),a=n.constructor;i.recordFactory(e,(function(e,t){var n=e.getInstance(a,t)[o];return"function"==typeof n?function(){for(var t=[],r=0;r1?t-1:0),r=1;r1?t-1:0),r=1;r1){for(var l=Array(c),f=0;f1){for(var h=Array(f),p=0;p import('./MyComponent'))\n\nDid you accidentally put curly braces around the import?",r),"default"in r||j("lazy: Expected the result of a dynamic import() call. Instead received: %s\n\nYour code should look like: \n const MyComponent = lazy(() => import('./MyComponent'))",r),r.default}throw e._result}function de(e){return"string"==typeof e||"function"==typeof e||(e===o||e===a||e===i||e===l||e===f||e===d||"object"==typeof e&&null!==e&&(e.$$typeof===p||e.$$typeof===h||e.$$typeof===s||e.$$typeof===u||e.$$typeof===c||e.$$typeof===he||void 0!==e.getModuleId))}function ve(){var e=b.current;return null===e&&j("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem."),e}he=Symbol.for("react.module.reference");var ye,be,ge,_e,me,we,Oe,Se=0;function Ae(){}Ae.__reactDisabledLog=!0;var Ee,je=A.ReactCurrentDispatcher;function ke(e,t,n){if(void 0===Ee)try{throw Error()}catch(e){var r=e.stack.trim().match(/\n( *(at )?)/);Ee=r&&r[1]||""}return"\n"+Ee+e}var xe,Ce=!1,Re="function"==typeof WeakMap?WeakMap:Map;function Pe(e,t){if(!e||Ce)return"";var n,r=xe.get(e);if(void 0!==r)return r;Ce=!0;var o,i=Error.prepareStackTrace;Error.prepareStackTrace=void 0,o=je.current,je.current=null,function(){if(0===Se){ye=console.log,be=console.info,ge=console.warn,_e=console.error,me=console.group,we=console.groupCollapsed,Oe=console.groupEnd;var e={configurable:!0,enumerable:!0,value:Ae,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}Se++}();try{if(t){var a=function(){throw Error()};if(Object.defineProperty(a.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(a,[])}catch(e){n=e}Reflect.construct(e,[],a)}else{try{a.call()}catch(e){n=e}e.call(a.prototype)}}else{try{throw Error()}catch(e){n=e}e()}}catch(t){if(t&&n&&"string"==typeof t.stack){for(var s=t.stack.split("\n"),u=n.stack.split("\n"),c=s.length-1,l=u.length-1;c>=1&&l>=0&&s[c]!==u[l];)l--;for(;c>=1&&l>=0;c--,l--)if(s[c]!==u[l]){if(1!==c||1!==l)do{if(c--,--l<0||s[c]!==u[l]){var f="\n"+s[c].replace(" at new "," at ");return e.displayName&&f.includes("")&&(f=f.replace("",e.displayName)),"function"==typeof e&&xe.set(e,f),f}}while(c>=1&&l>=0);break}}}finally{Ce=!1,je.current=o,function(){if(0==--Se){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:P({},e,{value:ye}),info:P({},e,{value:be}),warn:P({},e,{value:ge}),error:P({},e,{value:_e}),group:P({},e,{value:me}),groupCollapsed:P({},e,{value:we}),groupEnd:P({},e,{value:Oe})})}Se<0&&j("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}(),Error.prepareStackTrace=i}var h=e?e.displayName||e.name:"",p=h?ke(h):"";return"function"==typeof e&&xe.set(e,p),p}function Te(e,t,n){if(null==e)return"";if("function"==typeof e)return Pe(e,function(e){var t=e.prototype;return!(!t||!t.isReactComponent)}(e));if("string"==typeof e)return ke(e);switch(e){case l:return ke("Suspense");case f:return ke("SuspenseList")}if("object"==typeof e)switch(e.$$typeof){case c:return Pe(e.render,!1);case h:return Te(e.type,t,n);case p:var r=e,o=r._payload,i=r._init;try{return Te(i(o),t,n)}catch(e){}}return""}xe=new Re;var Me,Ie={},Ne=A.ReactDebugCurrentFrame;function De(e){if(e){var t=e._owner,n=Te(e.type,e._source,t?t.type:null);Ne.setExtraStackFrame(n)}else Ne.setExtraStackFrame(null)}function Le(e){if(e){var t=e._owner;S(Te(e.type,e._source,t?t.type:null))}else S(null)}function Ve(){if(m.current){var e=$(m.current.type);if(e)return"\n\nCheck the render method of `"+e+"`."}return""}function Be(e){return null!=e&&void 0!==(t=e.__source)?"\n\nCheck your code at "+t.fileName.replace(/^.*[\\\/]/,"")+":"+t.lineNumber+".":"";var t}Me=!1;var Fe={};function Ue(e,t){if(e._store&&!e._store.validated&&null==e.key){e._store.validated=!0;var n=function(e){var t=Ve();if(!t){var n="string"==typeof e?e:e.displayName||e.name;n&&(t="\n\nCheck the top-level render call using <"+n+">.")}return t}(t);if(!Fe[n]){Fe[n]=!0;var r="";e&&e._owner&&e._owner!==m.current&&(r=" It was passed a child from "+$(e._owner.type)+"."),Le(e),j('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',n,r),Le(null)}}}function Ge(e,t){if("object"==typeof e)if(U(e))for(var n=0;n",a=" Did you accidentally export a JSX literal instead of a component?"):s=typeof e,j("React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",s,a)}var c=re.apply(this,arguments);if(null==c)return c;if(i)for(var l=2;l ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning."));var t=new MessageChannel;t.port1.onmessage=e,t.port2.postMessage(void 0)}}We(t)}((function(){0===o.length?(_.current=null,n(t)):Ze(t,n,r)}))}catch(e){r(e)}else n(t)}var Qe=!1;function et(e){if(!Qe){Qe=!0;var t=0;try{for(;t is not supported and will be removed in a future major release. Did you mean to render instead?")),t.Provider},set:function(e){t.Provider=e}},_currentValue:{get:function(){return t._currentValue},set:function(e){t._currentValue=e}},_currentValue2:{get:function(){return t._currentValue2},set:function(e){t._currentValue2=e}},_threadCount:{get:function(){return t._threadCount},set:function(e){t._threadCount=e}},Consumer:{get:function(){return n||(n=!0,j("Rendering is not supported and will be removed in a future major release. Did you mean to render instead?")),t.Consumer}},displayName:{get:function(){return t.displayName},set:function(e){o||(E("Setting `displayName` on Context.Consumer has no effect. You should set it directly on the context with Context.displayName = '%s'.",e),o=!0)}}}),t.Consumer=i,t._currentRenderer=null,t._currentRenderer2=null,t},t.createElement=tt,t.createFactory=rt,t.createRef=function(){var e={current:null};return Object.seal(e),e},t.forwardRef=function(e){null!=e&&e.$$typeof===h?j("forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))."):"function"!=typeof e?j("forwardRef requires a render function but was given %s.",null===e?"null":typeof e):0!==e.length&&2!==e.length&&j("forwardRef render functions accept exactly two parameters: props and ref. %s",1===e.length?"Did you forget to use the ref parameter?":"Any additional parameter will be undefined."),null!=e&&(null==e.defaultProps&&null==e.propTypes||j("forwardRef render functions do not support propTypes or defaultProps. Did you accidentally pass a React component?"));var t,n={$$typeof:c,render:e};return Object.defineProperty(n,"displayName",{enumerable:!1,configurable:!0,get:function(){return t},set:function(n){t=n,e.name||e.displayName||(e.displayName=n)}}),n},t.isValidElement=ie,t.lazy=function(e){var t,n,r={$$typeof:p,_payload:{_status:-1,_result:e},_init:pe};return Object.defineProperties(r,{defaultProps:{configurable:!0,get:function(){return t},set:function(e){j("React.lazy(...): It is not supported to assign `defaultProps` to a lazy component import. Either specify them where the component is defined, or create a wrapping component around it."),t=e,Object.defineProperty(r,"defaultProps",{enumerable:!0})}},propTypes:{configurable:!0,get:function(){return n},set:function(e){j("React.lazy(...): It is not supported to assign `propTypes` to a lazy component import. Either specify them where the component is defined, or create a wrapping component around it."),n=e,Object.defineProperty(r,"propTypes",{enumerable:!0})}}}),r},t.memo=function(e,t){de(e)||j("memo: The first argument must be a component. Instead received: %s",null===e?"null":typeof e);var n,r={$$typeof:h,type:e,compare:void 0===t?null:t};return Object.defineProperty(r,"displayName",{enumerable:!1,configurable:!0,get:function(){return n},set:function(t){n=t,e.name||e.displayName||(e.displayName=t)}}),r},t.startTransition=function(e,t){var n=g.transition;g.transition={};var r=g.transition;g.transition._updatedFibers=new Set;try{e()}finally{if(g.transition=n,null===n&&r._updatedFibers)r._updatedFibers.size>10&&E("Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table."),r._updatedFibers.clear()}},t.unstable_act=function(e){var t=Xe;Xe++,null===_.current&&(_.current=[]);var n,r=_.isBatchingLegacy;try{if(_.isBatchingLegacy=!0,n=e(),!r&&_.didScheduleLegacyUpdate){var o=_.current;null!==o&&(_.didScheduleLegacyUpdate=!1,et(o))}}catch(e){throw Ye(t),e}finally{_.isBatchingLegacy=r}if(null!==n&&"object"==typeof n&&"function"==typeof n.then){var i=n,a=!1,s={then:function(e,n){a=!0,i.then((function(r){Ye(t),0===Xe?Ze(r,e,n):e(r)}),(function(e){Ye(t),n(e)}))}};return Je||"undefined"==typeof Promise||Promise.resolve().then((function(){})).then((function(){a||(Je=!0,j("You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);"))})),s}var u=n;if(Ye(t),0===Xe){var c=_.current;return null!==c&&(et(c),_.current=null),{then:function(e,t){null===_.current?(_.current=[],Ze(u,e,t)):e(u)}}}return{then:function(e,t){e(u)}}},t.useCallback=function(e,t){return ve().useCallback(e,t)},t.useContext=function(e){var t=ve();if(void 0!==e._context){var n=e._context;n.Consumer===e?j("Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be removed in a future major release. Did you mean to call useContext(Context) instead?"):n.Provider===e&&j("Calling useContext(Context.Provider) is not supported. Did you mean to call useContext(Context) instead?")}return t.useContext(e)},t.useDebugValue=function(e,t){return ve().useDebugValue(e,t)},t.useDeferredValue=function(e){return ve().useDeferredValue(e)},t.useEffect=function(e,t){return ve().useEffect(e,t)},t.useId=function(){return ve().useId()},t.useImperativeHandle=function(e,t,n){return ve().useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return ve().useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return ve().useLayoutEffect(e,t)},t.useMemo=function(e,t){return ve().useMemo(e,t)},t.useReducer=function(e,t,n){return ve().useReducer(e,t,n)},t.useRef=function(e){return ve().useRef(e)},t.useState=function(e){return ve().useState(e)},t.useSyncExternalStore=function(e,t,n){return ve().useSyncExternalStore(e,t,n)},t.useTransition=function(){return ve().useTransition()},t.version="18.2.0","undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error)}()}(p,h)),h}!function(e){"production"===process.env.NODE_ENV?e.exports=l():e.exports=d()}({get exports(){return u},set exports(e){u=e}});var v,y=n(u),b={},g={};function _(){if(v)return g;function e(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;re.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function j(e){return Object.assign((function(t,n){k(t,n,e)}),e)}function k(e,t,n){b(e,Lt)||l(e,Lt,w({},e[Lt])),function(e){return"override"===e.t}(n)||(e[Lt][t]=n)}function x(e,t,n){void 0===t&&(t=Mt),void 0===n&&(n=Mt);var r=new Bt(e);return t!==Mt&&Ce(r,t),n!==Mt&&Re(r,n),r}function C(e,t,n){return Fe(e)?e:Array.isArray(e)?Zt.array(e,{name:n}):u(e)?Zt.object(e,void 0,{name:n}):p(e)?Zt.map(e,{name:n}):d(e)?Zt.set(e,{name:n}):"function"!=typeof e||je(e)||Le(e)?e:c(e)?In(e):Cn(n,e)}function R(e){return e}function P(e,t){return{t:e,i:t,o:T,u:M}}function T(e,t,n,r){var o;if(null!=(o=this.i)&&o.bound)return null===this.u(e,t,n,!1)?0:1;if(r===e.s)return null===this.u(e,t,n,!1)?0:2;if(je(n.value))return 1;var i=I(e,this,t,n,!1);return kt(r,t,i),2}function M(e,t,n,r){var o=I(e,this,t,n);return e.h(t,o,r)}function I(e,t,n,r,o){var i,a,s,u,c,l,f;void 0===o&&(o=mn.safeDescriptors);var h,p=r.value;return null!=(i=t.i)&&i.bound&&(p=p.bind(null!=(h=e.v)?h:e.s)),{value:Y(null!=(a=null==(s=t.i)?void 0:s.name)?a:n.toString(),p,null!=(u=null==(c=t.i)?void 0:c.autoAction)&&u,null!=(l=t.i)&&l.bound?null!=(f=e.v)?f:e.s:void 0),configurable:!o||e.l,enumerable:!1,writable:!o}}function N(e,t){return{t:e,i:t,o:D,u:L}}function D(e,t,n,r){var o;if(r===e.s)return null===this.u(e,t,n,!1)?0:2;if(null!=(o=this.i)&&o.bound&&(!b(e.s,t)||!Le(e.s[t]))&&null===this.u(e,t,n,!1))return 0;if(Le(n.value))return 1;var i=V(e,0,0,n,!1,!1);return kt(r,t,i),2}function L(e,t,n,r){var o,i=V(e,0,0,n,null==(o=this.i)?void 0:o.bound);return e.h(t,i,r)}function V(e,t,n,r,o,i){void 0===i&&(i=mn.safeDescriptors);var a,s=r.value;return Le(s)||(s=In(s)),o&&((s=s.bind(null!=(a=e.v)?a:e.s)).isMobXFlow=!0),{value:s,configurable:!i||e.l,enumerable:!1,writable:!i}}function B(e,t){return{t:e,i:t,o:F,u:U}}function F(e,t,n){return null===this.u(e,t,n,!1)?0:1}function U(e,t,n,r){return e.p(t,w({},this.i,{get:n.get,set:n.set}),r)}function G(e,t){return{t:e,i:t,o:K,u:z}}function K(e,t,n){return null===this.u(e,t,n,!1)?0:1}function z(e,t,n,r){var o,i;return e.m(t,n.value,null!=(o=null==(i=this.i)?void 0:i.enhancer)?o:C,r)}function $(e){return{t:"true",i:e,o:H,u:q}}function H(e,t,n,r){var o,i,a,s;if(n.get)return tn.o(e,t,n,r);if(n.set){var u=Y(t.toString(),n.set);return r===e.s?null===e.h(t,{configurable:!mn.safeDescriptors||e.l,set:u})?0:2:(kt(r,t,{configurable:!0,set:u}),2)}if(r!==e.s&&"function"==typeof n.value)return c(n.value)?(null!=(s=this.i)&&s.autoBind?In.bound:In).o(e,t,n,r):(null!=(a=this.i)&&a.autoBind?Cn.bound:Cn).o(e,t,n,r);var l,f=!1===(null==(o=this.i)?void 0:o.deep)?Zt.ref:Zt;return"function"==typeof n.value&&null!=(i=this.i)&&i.autoBind&&(n.value=n.value.bind(null!=(l=e.v)?l:e.s)),f.o(e,t,n,r)}function q(e,t,n,r){var o,i,a;return n.get?tn.u(e,t,n,r):n.set?e.h(t,{configurable:!mn.safeDescriptors||e.l,set:Y(t.toString(),n.set)},r):("function"==typeof n.value&&null!=(o=this.i)&&o.autoBind&&(n.value=n.value.bind(null!=(a=e.v)?a:e.s)),(!1===(null==(i=this.i)?void 0:i.deep)?Zt.ref:Zt).u(e,t,n,r))}function W(e){return e||zt}function X(e){return!0===e.deep?C:!1===e.deep?R:(t=e.defaultDecorator)&&null!=(n=null==(r=t.i)?void 0:r.enhancer)?n:C;var t,n,r}function J(e,t,n){if(!a(t))return Fe(e)?e:u(e)?Zt.object(e,t,n):Array.isArray(e)?Zt.array(e,t):p(e)?Zt.map(e,t):d(e)?Zt.set(e,t):"object"==typeof e&&null!==e?e:Zt.box(e,t);k(e,t,$t)}function Y(e,t,n,r){function o(){return Z(0,n,t,r||this,arguments)}return void 0===n&&(n=!1),o.isMobxAction=!0,an&&(sn.value=e,kt(o,"name",sn)),o}function Z(e,t,n,r,o){var i=Q(0,t);try{return n.apply(r,o)}catch(e){throw i.j=e,e}finally{ee(i)}}function Q(e,t){var n=mn.trackingDerivation,r=!t||!n;be();var o=mn.allowStateChanges;r&&(ce(),o=ne(!0));var i={O:r,A:n,g:o,_:fe(!0),S:!1,M:0,N:on++,V:rn};return rn=i.N,i}function ee(t){rn!==t.N&&e(30),rn=t.V,void 0!==t.j&&(mn.suppressReactionErrors=!0),re(t.g),he(t._),ge(),t.O&&le(t.A),mn.suppressReactionErrors=!1}function te(e,t){var n=ne(e);try{return t()}finally{re(n)}}function ne(e){var t=mn.allowStateChanges;return mn.allowStateChanges=e,t}function re(e){mn.allowStateChanges=e}function oe(e){return e instanceof vn}function ie(e){switch(e.R){case fn.T:return!1;case fn.k:case fn.C:return!0;case fn.K:for(var t=fe(!0),n=ce(),r=e.L,o=r.length,i=0;ir&&(r=s.R)}for(n.length=o,e.I=null,i=t.length;i--;){var u=t[i];0===u.B&&ve(u,e),u.B=0}for(;o--;){var c=n[o];1===c.B&&(c.B=0,de(c,e))}r!==fn.T&&(e.R=r,e.q())}(e),he(r),o}function se(e){var t=e.L;e.L=[];for(var n=t.length;n--;)ve(t[n],e);e.R=fn.k}function ue(e){var t=ce();try{return e()}finally{le(t)}}function ce(){var e=mn.trackingDerivation;return mn.trackingDerivation=null,e}function le(e){mn.trackingDerivation=e}function fe(e){var t=mn.allowStateReads;return mn.allowStateReads=e,t}function he(e){mn.allowStateReads=e}function pe(e){if(e.R!==fn.T){e.R=fn.T;for(var t=e.L,n=t.length;n--;)t[n].G=fn.T}}function de(e,t){e.W.add(t),e.G>t.R&&(e.G=t.R)}function ve(e,t){e.W.delete(t),0===e.W.size&&ye(e)}function ye(e){!1===e.H&&(e.H=!0,mn.pendingUnobservations.push(e))}function be(){mn.inBatch++}function ge(){if(0==--mn.inBatch){we();for(var e=mn.pendingUnobservations,t=0;t0&&ye(e),!1)}function me(e){e.G!==fn.C&&(e.G=fn.C,e.W.forEach((function(e){e.R===fn.T&&e.q(),e.R=fn.C})))}function we(){mn.inBatch>0||mn.isRunningReactions||On(Oe)}function Oe(){mn.isRunningReactions=!0;for(var e=mn.pendingReactions,t=0;e.length>0;){100==++t&&(console.error("[mobx] cycle in reaction: "+e[0]),e.splice(0));for(var n=e.splice(0),r=0,o=n.length;r",t,e):i(n)?Y(t,n,e):a(n)?k(t,n,e?jn:An):a(t)?j(P(e?"autoAction":"action",{name:t,autoAction:e})):void 0}}function Ee(e){return Z(0,!1,e,this,void 0)}function je(e){return i(e)&&!0===e.isMobxAction}function ke(e,t){function n(){e(i)}var r,o;void 0===t&&(t=Rt);var i,a=null!=(r=null==(o=t)?void 0:o.name)?r:"Autorun";if(t.scheduler||t.delay){var s=xe(t),u=!1;i=new wn(a,(function(){u||(u=!0,s((function(){u=!1,i.J||i.track(n)})))}),t.onError,t.requiresObservable)}else i=new wn(a,(function(){this.track(n)}),t.onError,t.requiresObservable);return i.Y(),i.Z()}function xe(e){return e.scheduler?e.scheduler:e.delay?function(t){return setTimeout(t,e.delay)}:Rn}function Ce(e,t,n){return Pe("onBO",e,t,n)}function Re(e,t,n){return Pe("onBUO",e,t,n)}function Pe(e,t,n,r){var o="function"==typeof r?bt(t,n):bt(t),a=i(r)?r:n,s=e+"L";return o[s]?o[s].add(a):o[s]=new Set([a]),function(){var e=o[s];e&&(e.delete(a),0===e.size&&delete o[s])}}function Te(e,t,n,r){var o=Dt(t),i=ct(e,r)[Vt];be();try{Nt(o).forEach((function(e){i.u(e,o[e],!n||!(e in n)||n[e])}))}finally{ge()}return e}function Me(e){var t,n={name:e.tt};return e.L&&e.L.length>0&&(n.dependencies=(t=e.L,Array.from(new Set(t))).map(Me)),n}function Ie(e){var t={name:e.tt};return function(e){return e.W&&e.W.size>0}(e)&&(t.observers=Array.from(function(e){return e.W}(e)).map(Ie)),t}function Ne(){this.message="FLOW_CANCELLED"}function De(e){i(e.cancel)&&e.cancel()}function Le(e){return!0===(null==e?void 0:e.isMobXFlow)}function Ve(e,t){if(void 0===t)return dn(e);if(!1===ft(e))return!1;if(!e[Vt].nt.has(t))return!1;var n=bt(e,t);return dn(n)}function Be(e,t){return!!e&&(void 0!==t?!!ft(e)&&e[Vt].nt.has(t):ft(e)||!!e[Vt]||Ft(e)||Sn(e)||dn(e))}function Fe(e){return Be(e)}function Ue(t){return ft(t)?t[Vt].it():Xn(t)||er(t)?Array.from(t.keys()):ut(t)?t.map((function(e,t){return t})):void e(5)}function Ge(t,n){return ft(t)?t[Vt].rt(n):Xn(t)||er(t)?t.has(n):ut(t)?n>=0&&n0}function Ze(e,t){var n=e.ut||(e.ut=[]);return n.push(t),o((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function Qe(t,n){var r=ce();try{for(var o=[].concat(t.ut||[]),i=0,a=o.length;i0}function tt(e,t){var n=e.st||(e.st=[]);return n.push(t),o((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function nt(e,t){var n=ce(),r=e.st;if(r){for(var o=0,i=(r=r.slice()).length;oir){for(var t=ir;t=0&&r++}t=wt(t),n=wt(n);var c="[object Array]"===u;if(!c){if("object"!=typeof t||"object"!=typeof n)return!1;var l=t.constructor,f=n.constructor;if(l!==f&&!(i(l)&&l instanceof l&&i(f)&&f instanceof f)&&"constructor"in t&&"constructor"in n)return!1}if(0===r)return!1;r<0&&(r=-1),a=a||[];for(var h=(o=o||[]).length;h--;)if(o[h]===t)return a[h]===n;if(o.push(t),a.push(n),c){if((h=t.length)!==n.length)return!1;for(;h--;)if(!e(t[h],n[h],r-1,o,a))return!1}else{var p,d=Object.keys(t);if(h=d.length,Object.keys(n).length!==h)return!1;for(;h--;)if(!b(n,p=d[h])||!e(t[p],n[p],r-1,o,a))return!1}return o.pop(),a.pop(),!0}(e,t,n)}function wt(e){return ut(e)?e.slice():p(e)||Xn(e)||d(e)||er(e)?Array.from(e.entries()):e}function Ot(e){return e[Symbol.iterator]=St,e}function St(){return this}v=1,Object.defineProperty(g,"__esModule",{value:!0});var At={},Et=Object.assign,jt=Object.getOwnPropertyDescriptor,kt=Object.defineProperty,xt=Object.prototype,Ct=[];Object.freeze(Ct);var Rt={};Object.freeze(Rt);var Pt="undefined"!=typeof Proxy,Tt=Object.toString(),Mt=function(){},It=void 0!==Object.getOwnPropertySymbols,Nt="undefined"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:It?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,Dt=Object.getOwnPropertyDescriptors||function(e){var t={};return Nt(e).forEach((function(n){t[n]=jt(e,n)})),t},Lt=Symbol("mobx-stored-annotations"),Vt=Symbol("mobx administration"),Bt=function(){function e(e){void 0===e&&(e="Atom"),this.tt=void 0,this.H=!1,this.X=!1,this.W=new Set,this.B=0,this.F=0,this.G=fn.k,this.onBOL=void 0,this.onBUOL=void 0,this.tt=e}var t=e.prototype;return t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.reportObserved=function(){return _e(this)},t.reportChanged=function(){be(),me(this),mn.stateVersion=mn.stateVersion0&&!t.__mobxGlobals&&(gn=!1),t.__mobxGlobals&&t.__mobxGlobals.version!==(new bn).version&&(gn=!1),gn?t.__mobxGlobals?(t.__mobxInstanceCount+=1,t.__mobxGlobals.UNCHANGED||(t.__mobxGlobals.UNCHANGED={}),t.__mobxGlobals):(t.__mobxInstanceCount=1,t.__mobxGlobals=new bn):(setTimeout((function(){_n||e(35)}),1),new bn)}(),wn=function(){function e(e,t,n,r){void 0===e&&(e="Reaction"),this.tt=void 0,this.Kt=void 0,this.Lt=void 0,this.It=void 0,this.L=[],this.I=[],this.R=fn.k,this.B=0,this.D=0,this.P=0,this.J=!1,this.Pt=!1,this.Dt=!1,this.Bt=!1,this.ot=hn.NONE,this.tt=e,this.Kt=t,this.Lt=n,this.It=r}var t=e.prototype;return t.q=function(){this.Y()},t.Y=function(){this.Pt||(this.Pt=!0,mn.pendingReactions.push(this),we())},t.isScheduled=function(){return this.Pt},t.$=function(){if(!this.J){be(),this.Pt=!1;var e=mn.trackingContext;if(mn.trackingContext=this,ie(this)){this.Dt=!0;try{this.Kt()}catch(e){this.qt(e)}}mn.trackingContext=e,ge()}},t.track=function(e){if(!this.J){be(),this.Bt=!0;var t=mn.trackingContext;mn.trackingContext=this;var n=ae(this,e,void 0);mn.trackingContext=t,this.Bt=!1,this.Dt=!1,this.J&&se(this),oe(n)&&this.qt(n.cause),ge()}},t.qt=function(e){var t=this;if(this.Lt)this.Lt(e,this);else{if(mn.disableErrorBoundaries)throw e;mn.suppressReactionErrors||console.error("[mobx] uncaught error in '"+this+"'",e),mn.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},t.dispose=function(){this.J||(this.J=!0,this.Bt||(be(),se(this),ge()))},t.Z=function(){var e=this.dispose.bind(this);return e[Vt]=this,e},t.toString=function(){return"Reaction["+this.tt+"]"},t.trace=function(e){void 0===e&&(e=!1),$e(this,e)},e}(),On=function(e){return e()},Sn=h("Reaction",wn),An=P("action"),En=P("action.bound",{bound:!0}),jn=P("autoAction",{autoAction:!0}),kn=P("autoAction.bound",{autoAction:!0,bound:!0}),xn=Ae(!1);Object.assign(xn,An);var Cn=Ae(!0);Object.assign(Cn,jn),xn.bound=j(En),Cn.bound=j(kn);var Rn=function(e){return e()},Pn=0;Ne.prototype=Object.create(Error.prototype);var Tn=N("flow"),Mn=N("flow.bound",{bound:!0}),In=Object.assign((function(e,t){if(a(t))return k(e,t,Tn);var n=e,r=n.name||"",o=function(){var e,t=this,o=arguments,a=++Pn,s=xn(r+" - runid: "+a+" - init",n).apply(t,o),u=void 0,c=new Promise((function(t,n){function o(e){var t;u=void 0;try{t=xn(r+" - runid: "+a+" - yield "+f++,s.next).call(s,e)}catch(e){return n(e)}l(t)}function c(e){var t;u=void 0;try{t=xn(r+" - runid: "+a+" - yield "+f++,s.throw).call(s,e)}catch(e){return n(e)}l(t)}function l(e){if(!i(null==e?void 0:e.then))return e.done?t(e.value):(u=Promise.resolve(e.value)).then(o,c);e.then(l,n)}var f=0;e=n,o(void 0)}));return c.cancel=xn(r+" - runid: "+a+" - cancel",(function(){try{u&&De(u);var t=s.return(void 0),n=Promise.resolve(t.value);n.then(Mt,Mt),De(n),e(new Ne)}catch(t){e(t)}})),c};return o.isMobXFlow=!0,o}),Tn);In.bound=j(Mn);var Nn={has:function(e,t){return Je(e).rt(t)},get:function(e,t){return Je(e).lt(t)},set:function(e,t,n){var r;return!!a(t)&&(null==(r=Je(e).dt(t,n,!0))||r)},deleteProperty:function(e,t){var n;return!!a(t)&&(null==(n=Je(e).Gt(t,!0))||n)},defineProperty:function(e,t,n){var r;return null==(r=Je(e).h(t,n))||r},ownKeys:function(e){return Je(e).et()},preventExtensions:function(){e(13)}},Dn=Symbol("mobx-keys"),Ln="update",Vn={get:function(e,t){var n=e[Vt];return t===Vt?n:"length"===t?n.Wt():"string"!=typeof t||isNaN(t)?b(Fn,t)?Fn[t]:e[t]:n.lt(parseInt(t))},set:function(e,t,n){var r=e[Vt];return"length"===t&&r.Ht(n),"symbol"==typeof t||isNaN(t)?e[t]=n:r.dt(parseInt(t),n),!0},preventExtensions:function(){e(15)}},Bn=function(){function t(e,t,n,r){void 0===e&&(e="ObservableArray"),this.Xt=void 0,this.Ut=void 0,this.at=void 0,this.nt=[],this.ut=void 0,this.st=void 0,this.Ft=void 0,this.dehancer=void 0,this.v=void 0,this.zt=0,this.Xt=n,this.Ut=r,this.at=new Bt(e),this.Ft=function(e,n){return t(e,n,"ObservableArray[..]")}}var n=t.prototype;return n.$t=function(e){return void 0!==this.dehancer?this.dehancer(e):e},n.ct=function(e){return void 0!==this.dehancer&&e.length>0?e.map(this.dehancer):e},n.At=function(e){return Ze(this,e)},n.gt=function(e,t){return void 0===t&&(t=!1),t&&e({observableKind:"array",object:this.v,debugObjectName:this.at.tt,type:"splice",index:0,added:this.nt.slice(),addedCount:this.nt.length,removed:[],removedCount:0}),tt(this,e)},n.Wt=function(){return this.at.reportObserved(),this.nt.length},n.Ht=function(t){("number"!=typeof t||isNaN(t)||t<0)&&e("Out of range: "+t);var n=this.nt.length;if(t!==n)if(t>n){for(var r=new Array(t-n),o=0;o0&&vt(t+n+1)},n.ft=function(e,t,n){var r=this,o=this.nt.length;if(void 0===e?e=0:e>o?e=o:e<0&&(e=Math.max(0,o+e)),t=1===arguments.length?o-e:null==t?0:Math.max(0,Math.min(t,o-e)),void 0===n&&(n=Ct),Ye(this)){var i=Qe(this,{object:this.v,type:"splice",index:e,removedCount:t,added:n});if(!i)return Ct;t=i.removedCount,n=i.added}if(n=0===n.length?n:n.map((function(e){return r.Ft(e,void 0)})),this.Ut){var a=n.length-t;this.Jt(o,a)}var s=this.Yt(e,t,n);return 0===t&&0===n.length||this.Qt(e,n,s),this.ct(s)},n.Yt=function(e,t,n){var r;if(n.length<1e4)return(r=this.nt).splice.apply(r,[e,t].concat(n));var o=this.nt.slice(e,e+t),i=this.nt.slice(e+t);this.nt.length+=n.length-t;for(var a=0;a=this.nt.length))return this.at.reportObserved(),this.$t(this.nt[e]);console.warn("[mobx] Out of bounds read: "+e)},n.dt=function(t,n){var r=this.nt;if(this.Ut&&t>r.length&&e(17,t,r.length),t2?n-2:0),o=2;o-1&&(this.splice(n,1),!0)}};ot("concat",it),ot("flat",it),ot("includes",it),ot("indexOf",it),ot("join",it),ot("lastIndexOf",it),ot("slice",it),ot("toString",it),ot("toLocaleString",it),ot("every",at),ot("filter",at),ot("find",at),ot("findIndex",at),ot("flatMap",at),ot("forEach",at),ot("map",at),ot("some",at),ot("reduce",st),ot("reduceRight",st);var Un,Gn,Kn=h("ObservableArrayAdministration",Bn),zn={},$n="add";Un=Symbol.iterator,Gn=Symbol.toStringTag;var Hn,qn,Wn=function(){function t(t,n,r){var o=this;void 0===n&&(n=C),void 0===r&&(r="ObservableMap"),this.Ft=void 0,this.tt=void 0,this[Vt]=zn,this.pt=void 0,this.yt=void 0,this.bt=void 0,this.ut=void 0,this.st=void 0,this.dehancer=void 0,this.Ft=n,this.tt=r,i(Map)||e(18),this.bt=x("ObservableMap.keys()"),this.pt=new Map,this.yt=new Map,te(!0,(function(){o.merge(t)}))}var n=t.prototype;return n.rt=function(e){return this.pt.has(e)},n.has=function(e){var t=this;if(!mn.trackingDerivation)return this.rt(e);var n=this.yt.get(e);if(!n){var r=n=new cn(this.rt(e),R,"ObservableMap.key?",!1);this.yt.set(e,r),Re(r,(function(){return t.yt.delete(e)}))}return n.get()},n.set=function(e,t){var n=this.rt(e);if(Ye(this)){var r=Qe(this,{type:n?Ln:$n,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.tn(e,t):this.nn(e,t),this},n.delete=function(e){var t=this;if(Ye(this)&&!Qe(this,{type:"delete",object:this,name:e}))return!1;if(this.rt(e)){var n=et(this),r=n?{observableKind:"map",debugObjectName:this.tt,type:"delete",object:this,oldValue:this.pt.get(e).jt,name:e}:null;return qe((function(){var n;t.bt.reportChanged(),null==(n=t.yt.get(e))||n.xt(!1),t.pt.get(e).xt(void 0),t.pt.delete(e)})),n&&nt(this,r),!0}return!1},n.tn=function(e,t){var n=this.pt.get(e);if((t=n.Ot(t))!==mn.UNCHANGED){var r=et(this),o=r?{observableKind:"map",debugObjectName:this.tt,type:Ln,object:this,oldValue:n.jt,name:e,newValue:t}:null;n.xt(t),r&&nt(this,o)}},n.nn=function(e,t){var n=this;qe((function(){var r,o=new cn(t,n.Ft,"ObservableMap.key",!1);n.pt.set(e,o),t=o.jt,null==(r=n.yt.get(e))||r.xt(!0),n.bt.reportChanged()}));var r=et(this);r&&nt(this,r?{observableKind:"map",debugObjectName:this.tt,type:$n,object:this,name:e,newValue:t}:null)},n.get=function(e){return this.has(e)?this.$t(this.pt.get(e).get()):this.$t(void 0)},n.$t=function(e){return void 0!==this.dehancer?this.dehancer(e):e},n.keys=function(){return this.bt.reportObserved(),this.pt.keys()},n.values=function(){var e=this,t=this.keys();return Ot({next:function(){var n=t.next(),r=n.done;return{done:r,value:r?void 0:e.get(n.value)}}})},n.entries=function(){var e=this,t=this.keys();return Ot({next:function(){var n=t.next(),r=n.done,o=n.value;return{done:r,value:r?void 0:[o,e.get(o)]}}})},n[Un]=function(){return this.entries()},n.forEach=function(e,t){for(var n,r=E(this);!(n=r()).done;){var o=n.value;e.call(t,o[1],o[0],this)}},n.merge=function(t){var n=this;return Xn(t)&&(t=new Map(t)),qe((function(){u(t)?function(e){var t=Object.keys(e);if(!It)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter((function(t){return xt.propertyIsEnumerable.call(e,t)}))):t}(t).forEach((function(e){return n.set(e,t[e])})):Array.isArray(t)?t.forEach((function(e){return n.set(e[0],e[1])})):p(t)?(t.constructor!==Map&&e(19,t),t.forEach((function(e,t){return n.set(t,e)}))):null!=t&&e(20,t)})),this},n.clear=function(){var e=this;qe((function(){ue((function(){for(var t,n=E(e.keys());!(t=n()).done;)e.delete(t.value)}))}))},n.replace=function(t){var n=this;return qe((function(){for(var r,o=function(t){if(p(t)||Xn(t))return t;if(Array.isArray(t))return new Map(t);if(u(t)){var n=new Map;for(var r in t)n.set(r,t[r]);return n}return e(21,t)}(t),i=new Map,a=!1,s=E(n.pt.keys());!(r=s()).done;){var c=r.value;if(!o.has(c))if(n.delete(c))a=!0;else{var l=n.pt.get(c);i.set(c,l)}}for(var f,h=E(o.entries());!(f=h()).done;){var d=f.value,v=d[0],y=d[1],b=n.pt.has(v);if(n.set(v,y),n.pt.has(v)){var g=n.pt.get(v);i.set(v,g),b||(a=!0)}}if(!a)if(n.pt.size!==i.size)n.bt.reportChanged();else for(var _=n.pt.keys(),m=i.keys(),w=_.next(),O=m.next();!w.done;){if(w.value!==O.value){n.bt.reportChanged();break}w=_.next(),O=m.next()}n.pt=i})),this},n.toString=function(){return"[object ObservableMap]"},n.toJSON=function(){return Array.from(this)},n.gt=function(e){return tt(this,e)},n.At=function(e){return Ze(this,e)},m(t,[{key:"size",get:function(){return this.bt.reportObserved(),this.pt.size}},{key:Gn,get:function(){return"Map"}}]),t}(),Xn=h("ObservableMap",Wn),Jn={};Hn=Symbol.iterator,qn=Symbol.toStringTag;var Yn,Zn,Qn=function(){function t(t,n,r){void 0===n&&(n=C),void 0===r&&(r="ObservableSet"),this.tt=void 0,this[Vt]=Jn,this.pt=new Set,this.at=void 0,this.st=void 0,this.ut=void 0,this.dehancer=void 0,this.Ft=void 0,this.tt=r,i(Set)||e(22),this.at=x(this.tt),this.Ft=function(e,t){return n(e,t,r)},t&&this.replace(t)}var n=t.prototype;return n.$t=function(e){return void 0!==this.dehancer?this.dehancer(e):e},n.clear=function(){var e=this;qe((function(){ue((function(){for(var t,n=E(e.pt.values());!(t=n()).done;)e.delete(t.value)}))}))},n.forEach=function(e,t){for(var n,r=E(this);!(n=r()).done;){var o=n.value;e.call(t,o,o,this)}},n.add=function(e){var t=this;if(Ye(this)&&!Qe(this,{type:$n,object:this,newValue:e}))return this;if(!this.has(e)){qe((function(){t.pt.add(t.Ft(e,void 0)),t.at.reportChanged()}));var n=et(this);n&&nt(this,n?{observableKind:"set",debugObjectName:this.tt,type:$n,object:this,newValue:e}:null)}return this},n.delete=function(e){var t=this;if(Ye(this)&&!Qe(this,{type:"delete",object:this,oldValue:e}))return!1;if(this.has(e)){var n=et(this),r=n?{observableKind:"set",debugObjectName:this.tt,type:"delete",object:this,oldValue:e}:null;return qe((function(){t.at.reportChanged(),t.pt.delete(e)})),n&&nt(this,r),!0}return!1},n.has=function(e){return this.at.reportObserved(),this.pt.has(this.$t(e))},n.entries=function(){var e=0,t=Array.from(this.keys()),n=Array.from(this.values());return Ot({next:function(){var r=e;return e+=1,r=0&&mn.globalReactionErrorHandlers.splice(t,1)}},g.override=Gt,g.ownKeys=Ke,g.reaction=function(e,t,n){function r(){if(d=!1,!y.J){var t=!1;y.track((function(){var n=te(!1,(function(){return e(y)}));t=p||!v(s,n),u=s,s=n})),(p&&n.fireImmediately||!p&&t)&&l(s,u,y),p=!1}}var o;void 0===n&&(n=Rt);var i,a,s,u,c=null!=(o=n.name)?o:"Reaction",l=xn(c,n.onError?(i=n.onError,a=t,function(){try{return a.apply(this,arguments)}catch(e){i.call(this,e)}}):t),f=!n.scheduler&&!n.delay,h=xe(n),p=!0,d=!1,v=n.compareStructural?Ut.structural:n.equals||Ut.default,y=new wn(c,(function(){p||f?r():d||(d=!0,h(r))}),n.onError,n.requiresObservable);return y.Y(),y.Z()},g.remove=function(t,n){ft(t)?t[Vt].Gt(n):Xn(t)||er(t)?t.delete(n):ut(t)?("number"!=typeof n&&(n=parseInt(n,10)),t.splice(n,1)):e(9)},g.runInAction=Ee,g.set=function t(n,r,o){if(2!==arguments.length||er(n))ft(n)?n[Vt].dt(r,o):Xn(n)?n.set(r,o):er(n)?n.add(r):ut(n)?("number"!=typeof r&&(r=parseInt(r,10)),r<0&&e("Invalid index: '"+r+"'"),be(),r>=n.length&&(n.length=r+1),n[r]=o,ge()):e(8);else{be();var i=r;try{for(var a in i)t(n,a,i[a])}finally{ge()}}},g.spy=Se,g.toJS=function(e){return function e(t,n){if(null==t||"object"!=typeof t||t instanceof Date||!Fe(t))return t;if(ln(t)||dn(t))return e(t.get(),n);if(n.has(t))return n.get(t);if(ut(t)){var r=ze(n,t,new Array(t.length));return t.forEach((function(t,o){r[o]=e(t,n)})),r}if(er(t)){var o=ze(n,t,new Set);return t.forEach((function(t){o.add(e(t,n))})),o}if(Xn(t)){var i=ze(n,t,new Map);return t.forEach((function(t,r){i.set(r,e(t,n))})),i}var a=ze(n,t,{});return Ke(t).forEach((function(r){xt.propertyIsEnumerable.call(t,r)&&(a[r]=e(t[r],n))})),a}(e,new Map)},g.trace=$e,g.transaction=qe,g.untracked=ue,g.values=function(t){return ft(t)?Ue(t).map((function(e){return t[e]})):Xn(t)?Ue(t).map((function(e){return t.get(e)})):er(t)?Array.from(t.values()):ut(t)?t.slice():void e(6)},g.when=function(e,t,n){return 1===arguments.length||t&&"object"==typeof t?Xe(e,t):We(e,t,n||{})},g}var m,w={};function O(){if(m)return w;m=1,Object.defineProperty(w,"__esModule",{value:!0});var e={0:"Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'",1:function(e,t){return"Cannot apply '"+e+"' to '"+t.toString()+"': Field not found."},5:"'keys()' can only be used on observable objects, arrays, sets and maps",6:"'values()' can only be used on observable objects, arrays, sets and maps",7:"'entries()' can only be used on observable objects, arrays and maps",8:"'set()' can only be used on observable objects, arrays and maps",9:"'remove()' can only be used on observable objects, arrays and maps",10:"'has()' can only be used on observable objects, arrays and maps",11:"'get()' can only be used on observable objects, arrays and maps",12:"Invalid annotation",13:"Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)",14:"Intercept handlers should return nothing or a change object",15:"Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)",16:"Modification exception: the internal structure of an observable array was changed.",17:function(e,t){return"[mobx.array] Index out of bounds, "+e+" is larger than "+t},18:"mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js",19:function(e){return"Cannot initialize from classes that inherit from Map: "+e.constructor.name},20:function(e){return"Cannot initialize map from "+e},21:function(e){return"Cannot convert to map from '"+e+"'"},22:"mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js",23:"It is not possible to get index atoms from arrays",24:function(e){return"Cannot obtain administration from "+e},25:function(e,t){return"the entry '"+e+"' does not exist in the observable map '"+t+"'"},26:"please specify a property",27:function(e,t){return"no observable property '"+e.toString()+"' found on the observable object '"+t+"'"},28:function(e){return"Cannot obtain atom from "+e},29:"Expecting some object",30:"invalid action stack. did you forget to finish an action?",31:"missing option for computed: get",32:function(e,t){return"Cycle detected in computation "+e+": "+t},33:function(e){return"The setter of computed value '"+e+"' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?"},34:function(e){return"[ComputedValue '"+e+"'] It is not possible to assign a new value to a computed value."},35:"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`",36:"isolateGlobalState should be called before MobX is running any reactions",37:function(e){return"[mobx] `observableArray."+e+"()` mutates the array in-place, which is not allowed inside a derivation. Use `array.slice()."+e+"()` instead"},38:"'ownKeys()' can only be used on observable objects",39:"'defineProperty()' can only be used on observable objects"};function n(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;oe.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var z=Symbol("mobx-stored-annotations");function $(e){return Object.assign((function(t,n){H(t,n,e)}),e)}function H(e,t,r){(I(e,z)||E(e,z,V({},e[z])),ne(r)&&!I(e[z],t))&&n("'"+(e.constructor.name+".prototype."+t.toString())+"' is decorated with 'override', but no such decorated member was found on prototype.");!function(e,t,r){if(!ne(t)&&I(e[z],r)){var o=e.constructor.name+".prototype."+r.toString(),i=e[z][r].annotationType_;n("Cannot apply '@"+t.annotationType_+"' to '"+o+"':\nThe field is already decorated with '@"+i+"'.\nRe-decorating fields is not allowed.\nUse '@override' decorator for methods overridden by subclass.")}}(e,r,t),ne(r)||(e[z][t]=r)}var q=Symbol("mobx administration"),W=function(){function e(e){void 0===e&&(e="Atom@"+v()),this.name_=void 0,this.isPendingUnobservation_=!1,this.isBeingObserved_=!1,this.observers_=new Set,this.diffValue_=0,this.lastAccessedBy_=0,this.lowestObserverState_=Ze.NOT_TRACKING_,this.onBOL=void 0,this.onBUOL=void 0,this.name_=e}var t=e.prototype;return t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.reportObserved=function(){return At(this)},t.reportChanged=function(){Ot(),Et(this),gt.stateVersion=gt.stateVersion0;gt.allowStateChanges||!t&&"always"!==gt.enforceActions||console.warn("[MobX] "+(gt.enforceActions?"Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: ":"Side effects like changing state are not allowed at this point. Are you trying to modify state from, for example, a computed value or the render function of a React component? You can wrap side effects in 'runInAction' (or decorate functions with 'action') if needed. Tried to modify: ")+e.name_)}function at(e,t,n){var r=ft(!0);pt(e),e.newObserving_=new Array(e.observing_.length+100),e.unboundDepsCount_=0,e.runId_=++gt.runId;var o,i=gt.trackingDerivation;if(gt.trackingDerivation=e,gt.inBatch++,!0===gt.disableErrorBoundaries)o=t.call(n);else try{o=t.call(n)}catch(e){o=new nt(e)}return gt.inBatch--,gt.trackingDerivation=i,function(e){for(var t=e.observing_,n=e.observing_=e.newObserving_,r=Ze.UP_TO_DATE_,o=0,i=e.unboundDepsCount_,a=0;ar&&(r=s.dependenciesState_)}n.length=o,e.newObserving_=null,i=t.length;for(;i--;){var u=t[i];0===u.diffValue_&&mt(u,e),u.diffValue_=0}for(;o--;){var c=n[o];1===c.diffValue_&&(c.diffValue_=0,_t(c,e))}r!==Ze.UP_TO_DATE_&&(e.dependenciesState_=r,e.onBecomeStale_())}(e),function(e){if(0!==e.observing_.length)return;("boolean"==typeof e.requiresObservable_?e.requiresObservable_:gt.reactionRequiresObservable)&&console.warn("[mobx] Derivation '"+e.name_+"' is created/updated without reading any observable value.")}(e),ht(r),o}function st(e){var t=e.observing_;e.observing_=[];for(var n=t.length;n--;)mt(t[n],e);e.dependenciesState_=Ze.NOT_TRACKING_}function ut(e){var t=ct();try{return e()}finally{lt(t)}}function ct(){var e=gt.trackingDerivation;return gt.trackingDerivation=null,e}function lt(e){gt.trackingDerivation=e}function ft(e){var t=gt.allowStateReads;return gt.allowStateReads=e,t}function ht(e){gt.allowStateReads=e}function pt(e){if(e.dependenciesState_!==Ze.UP_TO_DATE_){e.dependenciesState_=Ze.UP_TO_DATE_;for(var t=e.observing_,n=t.length;n--;)t[n].lowestObserverState_=Ze.UP_TO_DATE_}}var dt=["mobxGuid","spyListeners","enforceActions","computedRequiresReaction","reactionRequiresObservable","observableRequiresReaction","allowStateReads","disableErrorBoundaries","runId","UNCHANGED","useProxies"],vt=function(){this.version=6,this.UNCHANGED={},this.trackingDerivation=null,this.trackingContext=null,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!1,this.allowStateReads=!0,this.enforceActions=!0,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1,this.useProxies=!0,this.verifyProxies=!1,this.safeDescriptors=!0,this.stateVersion=Number.MIN_SAFE_INTEGER},yt=!0,bt=!1,gt=function(){var e=o();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(yt=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==(new vt).version&&(yt=!1),yt?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new vt):(setTimeout((function(){bt||n(35)}),1),new vt)}();function _t(e,t){e.observers_.add(t),e.lowestObserverState_>t.dependenciesState_&&(e.lowestObserverState_=t.dependenciesState_)}function mt(e,t){e.observers_.delete(t),0===e.observers_.size&&wt(e)}function wt(e){!1===e.isPendingUnobservation_&&(e.isPendingUnobservation_=!0,gt.pendingUnobservations.push(e))}function Ot(){gt.inBatch++}function St(){if(0==--gt.inBatch){Rt();for(var e=gt.pendingUnobservations,t=0;t0&&wt(e),!1)}function Et(e){e.lowestObserverState_!==Ze.STALE_&&(e.lowestObserverState_=Ze.STALE_,e.observers_.forEach((function(t){t.dependenciesState_===Ze.UP_TO_DATE_&&(t.isTracing_!==Qe.NONE&&jt(t,e),t.onBecomeStale_()),t.dependenciesState_=Ze.STALE_})))}function jt(e,t){if(console.log("[mobx.trace] '"+e.name_+"' is invalidated due to a change in: '"+t.name_+"'"),e.isTracing_===Qe.BREAK){var n=[];kt(an(e),n,1),new Function("debugger;\n/*\nTracing '"+e.name_+"'\n\nYou are entering this break point because derivation '"+e.name_+"' is being traced and '"+t.name_+"' is now forcing it to update.\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\n\n"+(e instanceof et?e.derivation.toString().replace(/[*]\//g,"/"):"")+"\n\nThe dependencies for this derivation are:\n\n"+n.join("\n")+"\n*/\n ")()}}function kt(e,t,n){t.length>=1e3?t.push("(and many more)"):(t.push(""+"\t".repeat(n-1)+e.name),e.dependencies&&e.dependencies.forEach((function(e){return kt(e,t,n+1)})))}var xt=function(){function e(e,t,n,r){void 0===e&&(e="Reaction@"+v()),this.name_=void 0,this.onInvalidate_=void 0,this.errorHandler_=void 0,this.requiresObservable_=void 0,this.observing_=[],this.newObserving_=[],this.dependenciesState_=Ze.NOT_TRACKING_,this.diffValue_=0,this.runId_=0,this.unboundDepsCount_=0,this.isDisposed_=!1,this.isScheduled_=!1,this.isTrackPending_=!1,this.isRunning_=!1,this.isTracing_=Qe.NONE,this.name_=e,this.onInvalidate_=t,this.errorHandler_=n,this.requiresObservable_=r}var t=e.prototype;return t.onBecomeStale_=function(){this.schedule_()},t.schedule_=function(){this.isScheduled_||(this.isScheduled_=!0,gt.pendingReactions.push(this),Rt())},t.isScheduled=function(){return this.isScheduled_},t.runReaction_=function(){if(!this.isDisposed_){Ot(),this.isScheduled_=!1;var e=gt.trackingContext;if(gt.trackingContext=this,ot(this)){this.isTrackPending_=!0;try{this.onInvalidate_(),this.isTrackPending_&&Mt()&&It({name:this.name_,type:"scheduled-reaction"})}catch(e){this.reportExceptionInDerivation_(e)}}gt.trackingContext=e,St()}},t.track=function(e){if(!this.isDisposed_){Ot();var t,n=Mt();n&&(t=Date.now(),Nt({name:this.name_,type:"reaction"})),this.isRunning_=!0;var r=gt.trackingContext;gt.trackingContext=this;var o=at(this,e,void 0);gt.trackingContext=r,this.isRunning_=!1,this.isTrackPending_=!1,this.isDisposed_&&st(this),rt(o)&&this.reportExceptionInDerivation_(o.cause),n&&Lt({time:Date.now()-t}),St()}},t.reportExceptionInDerivation_=function(e){var t=this;if(this.errorHandler_)this.errorHandler_(e,this);else{if(gt.disableErrorBoundaries)throw e;var n="[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '"+this+"'";gt.suppressReactionErrors?console.warn("[mobx] (error in reaction '"+this.name_+"' suppressed, fix error of causing action below)"):console.error(n,e),Mt()&&It({type:"error",name:this.name_,message:n,error:""+e}),gt.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},t.dispose=function(){this.isDisposed_||(this.isDisposed_=!0,this.isRunning_||(Ot(),st(this),St()))},t.getDisposer_=function(){var e=this.dispose.bind(this);return e[q]=this,e},t.toString=function(){return"Reaction["+this.name_+"]"},t.trace=function(e){void 0===e&&(e=!1),An(this,e)},e}();var Ct=function(e){return e()};function Rt(){gt.inBatch>0||gt.isRunningReactions||Ct(Pt)}function Pt(){gt.isRunningReactions=!0;for(var e=gt.pendingReactions,t=0;e.length>0;){100==++t&&(console.error("Reaction doesn't converge to a stable state after 100 iterations. Probably there is a cycle in the reactive function: "+e[0]),e.splice(0));for(var n=e.splice(0),r=0,o=n.length;r4&&n("'extendObservable' expected 2-4 arguments"),"object"!=typeof e&&n("'extendObservable' expects an object as first argument"),or(e)&&n("'extendObservable' should not be used on maps, use map.merge instead"),S(t)||n("'extendObservable' only accepts plain objects as second argument"),(gn(t)||gn(r))&&n("Extending an object with another observable (object) is not supported");var i=N(t),a=fr(e,o)[q];Ot();try{P(i).forEach((function(e){a.extend_(e,i[e],!r||(!(e in r)||r[e]))}))}finally{St()}return e}function an(e,t){return sn(kr(e,t))}function sn(e){var t,n={name:e.name_};return e.observing_&&e.observing_.length>0&&(n.dependencies=(t=e.observing_,Array.from(new Set(t))).map(sn)),n}function un(e){var t={name:e.name_};return function(e){return e.observers_&&e.observers_.size>0}(e)&&(t.observers=Array.from(function(e){return e.observers_}(e)).map(un)),t}var cn=0;function ln(){this.message="FLOW_CANCELLED"}ln.prototype=Object.create(Error.prototype);var fn=se("flow"),hn=se("flow.bound",{bound:!0}),pn=Object.assign((function(e,t){if(_(t))return H(e,t,fn);1!==arguments.length&&n("Flow expects single argument with generator function");var r=e,o=r.name||"",i=function(){var e,t=this,n=arguments,i=++cn,a=qt(o+" - runid: "+i+" - init",r).apply(t,n),s=void 0,u=new Promise((function(t,n){var r=0;function u(e){var t;s=void 0;try{t=qt(o+" - runid: "+i+" - yield "+r++,a.next).call(a,e)}catch(e){return n(e)}l(t)}function c(e){var t;s=void 0;try{t=qt(o+" - runid: "+i+" - yield "+r++,a.throw).call(a,e)}catch(e){return n(e)}l(t)}function l(e){if(!g(null==e?void 0:e.then))return e.done?t(e.value):(s=Promise.resolve(e.value)).then(u,c);e.then(l,n)}e=n,u(void 0)}));return u.cancel=qt(o+" - runid: "+i+" - cancel",(function(){try{s&&dn(s);var t=a.return(void 0),n=Promise.resolve(t.value);n.then(b,b),dn(n),e(new ln)}catch(t){e(t)}})),u};return i.isMobXFlow=!0,i}),fn);function dn(e){g(e.cancel)&&e.cancel()}function vn(e){return!0===(null==e?void 0:e.isMobXFlow)}function yn(e,t){if(void 0===t)return tt(e);if(!1===dr(e))return!1;if(!e[q].values_.has(t))return!1;var n=kr(e,t);return tt(n)}function bn(e,t){return!!e&&(void 0!==t?or(e)||Yn(e)?n("isObservable(object, propertyName) is not supported for arrays and maps. Use map.has or array.length instead."):!!dr(e)&&e[q].values_.has(t):dr(e)||!!e[q]||X(e)||Tt(e)||tt(e))}function gn(e){return 1!==arguments.length&&n("isObservable expects only 1 argument. Use isObservableProp to inspect the observability of a property"),bn(e)}function _n(e){return dr(e)?e[q].keys_():or(e)||sr(e)?Array.from(e.keys()):Yn(e)?e.map((function(e,t){return t})):void n(5)}function mn(e,t){return dr(e)?e[q].has_(t):or(e)||sr(e)?e.has(t):Yn(e)?t>=0&&t0}function Tn(e,t){var n=e.interceptors_||(e.interceptors_=[]);return n.push(t),y((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function Mn(e,t){var r=ct();try{for(var o=[].concat(e.interceptors_||[]),i=0,a=o.length;i0}function Nn(e,t){var n=e.changeListeners_||(e.changeListeners_=[]);return n.push(t),y((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function Dn(e,t){var n=ct(),r=e.changeListeners_;if(r){for(var o=0,i=(r=r.slice()).length;o0?e.map(this.dehancer):e},t.intercept_=function(e){return Tn(this,e)},t.observe_=function(e,t){return void 0===t&&(t=!1),t&&e({observableKind:"array",object:this.proxy_,debugObjectName:this.atom_.name_,type:"splice",index:0,added:this.values_.slice(),addedCount:this.values_.length,removed:[],removedCount:0}),Nn(this,e)},t.getArrayLength_=function(){return this.atom_.reportObserved(),this.values_.length},t.setArrayLength_=function(e){("number"!=typeof e||isNaN(e)||e<0)&&n("Out of range: "+e);var t=this.values_.length;if(e!==t)if(e>t){for(var r=new Array(e-t),o=0;o0&&Er(e+t+1)},t.spliceWithArray_=function(e,t,n){var r=this;it(this.atom_);var o=this.values_.length;if(void 0===e?e=0:e>o?e=o:e<0&&(e=Math.max(0,o+e)),t=1===arguments.length?o-e:null==t?0:Math.max(0,Math.min(t,o-e)),void 0===n&&(n=c),Pn(this)){var i=Mn(this,{object:this.proxy_,type:Vn,index:e,removedCount:t,added:n});if(!i)return c;t=i.removedCount,n=i.added}n=0===n.length?n:n.map((function(e){return r.enhancer_(e,void 0)})),this.legacyMode_;var a=n.length-t;this.updateArrayLength_(o,a);var s=this.spliceItemsIntoValues_(e,t,n);return 0===t&&0===n.length||this.notifyArraySplice_(e,n,s),this.dehanceValues_(s)},t.spliceItemsIntoValues_=function(e,t,n){var r;if(n.length<1e4)return(r=this.values_).splice.apply(r,[e,t].concat(n));var o=this.values_.slice(e,e+t),i=this.values_.slice(e+t);this.values_.length+=n.length-t;for(var a=0;a=this.values_.length))return this.atom_.reportObserved(),this.dehanceValue_(this.values_[e]);console.warn("[mobx.array] Attempt to read an array index ("+e+") that is out of bounds ("+this.values_.length+"). Please check length first. Out of bound indices will not be tracked by MobX")},t.set_=function(e,t){var r=this.values_;if(this.legacyMode_&&e>r.length&&n(17,e,r.length),e2?n-2:0),o=2;o-1&&(this.splice(n,1),!0)}};function zn(e,t){"function"==typeof Array.prototype[e]&&(Kn[e]=t(e))}function $n(e){return function(){var t=this[q];t.atom_.reportObserved();var n=t.dehanceValues_(t.values_);return n[e].apply(n,arguments)}}function Hn(e){return function(t,n){var r=this,o=this[q];return o.atom_.reportObserved(),o.dehanceValues_(o.values_)[e]((function(e,o){return t.call(n,e,o,r)}))}}function qn(e){return function(){var t=this,n=this[q];n.atom_.reportObserved();var r=n.dehanceValues_(n.values_),o=arguments[0];return arguments[0]=function(e,n,r){return o(e,n,r,t)},r[e].apply(r,arguments)}}zn("concat",$n),zn("flat",$n),zn("includes",$n),zn("indexOf",$n),zn("join",$n),zn("lastIndexOf",$n),zn("slice",$n),zn("toString",$n),zn("toLocaleString",$n),zn("every",Hn),zn("filter",Hn),zn("find",Hn),zn("findIndex",Hn),zn("flatMap",Hn),zn("forEach",Hn),zn("map",Hn),zn("some",Hn),zn("reduce",qn),zn("reduceRight",qn);var Wn,Xn,Jn=k("ObservableArrayAdministration",Un);function Yn(e){return O(e)&&Jn(e[q])}var Zn={},Qn="add",er="delete";Wn=Symbol.iterator,Xn=Symbol.toStringTag;var tr,nr,rr=function(){function e(e,t,r){var o=this;void 0===t&&(t=Z),void 0===r&&(r="ObservableMap@"+v()),this.enhancer_=void 0,this.name_=void 0,this[q]=Zn,this.data_=void 0,this.hasMap_=void 0,this.keysAtom_=void 0,this.interceptors_=void 0,this.changeListeners_=void 0,this.dehancer=void 0,this.enhancer_=t,this.name_=r,g(Map)||n(18),this.keysAtom_=J(this.name_+".keys()"),this.data_=new Map,this.hasMap_=new Map,He(!0,(function(){o.merge(e)}))}var t=e.prototype;return t.has_=function(e){return this.data_.has(e)},t.has=function(e){var t=this;if(!gt.trackingDerivation)return this.has_(e);var n=this.hasMap_.get(e);if(!n){var r=n=new Je(this.has_(e),Q,this.name_+"."+T(e)+"?",!1);this.hasMap_.set(e,r),tn(r,(function(){return t.hasMap_.delete(e)}))}return n.get()},t.set=function(e,t){var n=this.has_(e);if(Pn(this)){var r=Mn(this,{type:n?Bn:Qn,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.updateValue_(e,t):this.addValue_(e,t),this},t.delete=function(e){var t=this;if((it(this.keysAtom_),Pn(this))&&!Mn(this,{type:er,object:this,name:e}))return!1;if(this.has_(e)){var n=Mt(),r=In(this),o=r||n?{observableKind:"map",debugObjectName:this.name_,type:er,object:this,oldValue:this.data_.get(e).value_,name:e}:null;return n&&Nt(o),jn((function(){var n;t.keysAtom_.reportChanged(),null==(n=t.hasMap_.get(e))||n.setNewValue_(!1),t.data_.get(e).setNewValue_(void 0),t.data_.delete(e)})),r&&Dn(this,o),n&&Lt(),!0}return!1},t.updateValue_=function(e,t){var n=this.data_.get(e);if((t=n.prepareNewValue_(t))!==gt.UNCHANGED){var r=Mt(),o=In(this),i=o||r?{observableKind:"map",debugObjectName:this.name_,type:Bn,object:this,oldValue:n.value_,name:e,newValue:t}:null;r&&Nt(i),n.setNewValue_(t),o&&Dn(this,i),r&&Lt()}},t.addValue_=function(e,t){var n=this;it(this.keysAtom_),jn((function(){var r,o=new Je(t,n.enhancer_,n.name_+"."+T(e),!1);n.data_.set(e,o),t=o.value_,null==(r=n.hasMap_.get(e))||r.setNewValue_(!0),n.keysAtom_.reportChanged()}));var r=Mt(),o=In(this),i=o||r?{observableKind:"map",debugObjectName:this.name_,type:Qn,object:this,name:e,newValue:t}:null;r&&Nt(i),o&&Dn(this,i),r&&Lt()},t.get=function(e){return this.has(e)?this.dehanceValue_(this.data_.get(e).get()):this.dehanceValue_(void 0)},t.dehanceValue_=function(e){return void 0!==this.dehancer?this.dehancer(e):e},t.keys=function(){return this.keysAtom_.reportObserved(),this.data_.keys()},t.values=function(){var e=this,t=this.keys();return Ir({next:function(){var n=t.next(),r=n.done,o=n.value;return{done:r,value:r?void 0:e.get(o)}}})},t.entries=function(){var e=this,t=this.keys();return Ir({next:function(){var n=t.next(),r=n.done,o=n.value;return{done:r,value:r?void 0:[o,e.get(o)]}}})},t[Wn]=function(){return this.entries()},t.forEach=function(e,t){for(var n,r=K(this);!(n=r()).done;){var o=n.value,i=o[0],a=o[1];e.call(t,a,i,this)}},t.merge=function(e){var t=this;return or(e)&&(e=new Map(e)),jn((function(){S(e)?function(e){var t=Object.keys(e);if(!R)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter((function(t){return u.propertyIsEnumerable.call(e,t)}))):t}(e).forEach((function(n){return t.set(n,e[n])})):Array.isArray(e)?e.forEach((function(e){var n=e[0],r=e[1];return t.set(n,r)})):x(e)?(e.constructor!==Map&&n(19,e),e.forEach((function(e,n){return t.set(n,e)}))):null!=e&&n(20,e)})),this},t.clear=function(){var e=this;jn((function(){ut((function(){for(var t,n=K(e.keys());!(t=n()).done;){var r=t.value;e.delete(r)}}))}))},t.replace=function(e){var t=this;return jn((function(){for(var r,o=function(e){if(x(e)||or(e))return e;if(Array.isArray(e))return new Map(e);if(S(e)){var t=new Map;for(var r in e)t.set(r,e[r]);return t}return n(21,e)}(e),i=new Map,a=!1,s=K(t.data_.keys());!(r=s()).done;){var u=r.value;if(!o.has(u))if(t.delete(u))a=!0;else{var c=t.data_.get(u);i.set(u,c)}}for(var l,f=K(o.entries());!(l=f()).done;){var h=l.value,p=h[0],d=h[1],v=t.data_.has(p);if(t.set(p,d),t.data_.has(p)){var y=t.data_.get(p);i.set(p,y),v||(a=!0)}}if(!a)if(t.data_.size!==i.size)t.keysAtom_.reportChanged();else for(var b=t.data_.keys(),g=i.keys(),_=b.next(),m=g.next();!_.done;){if(_.value!==m.value){t.keysAtom_.reportChanged();break}_=b.next(),m=g.next()}t.data_=i})),this},t.toString=function(){return"[object ObservableMap]"},t.toJSON=function(){return Array.from(this)},t.observe_=function(e,t){return!0===t&&n("`observe` doesn't support fireImmediately=true in combination with maps."),Nn(this,e)},t.intercept_=function(e){return Tn(this,e)},L(e,[{key:"size",get:function(){return this.keysAtom_.reportObserved(),this.data_.size}},{key:Xn,get:function(){return"Map"}}]),e}(),or=k("ObservableMap",rr);var ir={};tr=Symbol.iterator,nr=Symbol.toStringTag;var ar=function(){function e(e,t,r){void 0===t&&(t=Z),void 0===r&&(r="ObservableSet@"+v()),this.name_=void 0,this[q]=ir,this.data_=new Set,this.atom_=void 0,this.changeListeners_=void 0,this.interceptors_=void 0,this.dehancer=void 0,this.enhancer_=void 0,this.name_=r,g(Set)||n(22),this.atom_=J(this.name_),this.enhancer_=function(e,n){return t(e,n,r)},e&&this.replace(e)}var t=e.prototype;return t.dehanceValue_=function(e){return void 0!==this.dehancer?this.dehancer(e):e},t.clear=function(){var e=this;jn((function(){ut((function(){for(var t,n=K(e.data_.values());!(t=n()).done;){var r=t.value;e.delete(r)}}))}))},t.forEach=function(e,t){for(var n,r=K(this);!(n=r()).done;){var o=n.value;e.call(t,o,o,this)}},t.add=function(e){var t=this;if((it(this.atom_),Pn(this))&&!Mn(this,{type:Qn,object:this,newValue:e}))return this;if(!this.has(e)){jn((function(){t.data_.add(t.enhancer_(e,void 0)),t.atom_.reportChanged()}));var n=Mt(),r=In(this),o=r||n?{observableKind:"set",debugObjectName:this.name_,type:Qn,object:this,newValue:e}:null;n&&Nt(o),r&&Dn(this,o),n&&Lt()}return this},t.delete=function(e){var t=this;if(Pn(this)&&!Mn(this,{type:er,object:this,oldValue:e}))return!1;if(this.has(e)){var n=Mt(),r=In(this),o=r||n?{observableKind:"set",debugObjectName:this.name_,type:er,object:this,oldValue:e}:null;return n&&Nt(o),jn((function(){t.atom_.reportChanged(),t.data_.delete(e)})),r&&Dn(this,o),n&&Lt(),!0}return!1},t.has=function(e){return this.atom_.reportObserved(),this.data_.has(this.dehanceValue_(e))},t.entries=function(){var e=0,t=Array.from(this.keys()),n=Array.from(this.values());return Ir({next:function(){var r=e;return e+=1,rmr){for(var t=mr;t=0&&n++}e=Mr(e),t=Mr(t);var s="[object Array]"===a;if(!s){if("object"!=typeof e||"object"!=typeof t)return!1;var u=e.constructor,c=t.constructor;if(u!==c&&!(g(u)&&u instanceof u&&g(c)&&c instanceof c)&&"constructor"in e&&"constructor"in t)return!1}if(0===n)return!1;n<0&&(n=-1),o=o||[];for(var l=(r=r||[]).length;l--;)if(r[l]===e)return o[l]===t;if(r.push(e),o.push(t),s){if((l=e.length)!==t.length)return!1;for(;l--;)if(!Tr(e[l],t[l],n-1,r,o))return!1}else{var f,h=Object.keys(e);if(l=h.length,Object.keys(t).length!==l)return!1;for(;l--;)if(!I(t,f=h[l])||!Tr(e[f],t[f],n-1,r,o))return!1}return r.pop(),o.pop(),!0}function Mr(e){return Yn(e)?e.slice():x(e)||or(e)||C(e)||sr(e)?Array.from(e.entries()):e}function Ir(e){return e[Symbol.iterator]=Nr,e}function Nr(){return this}function Dr(e){return e instanceof Object&&"string"==typeof e.annotationType_&&g(e.make_)&&g(e.extend_)}return["Symbol","Map","Set"].forEach((function(e){void 0===o()[e]&&n("MobX requires global '"+e+"' to be available or polyfilled")})),"object"==typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:Vt,extras:{getDebugName:Cr},$mobx:q}),w.$mobx=q,w.FlowCancellationError=ln,w.ObservableMap=rr,w.ObservableSet=ar,w.Reaction=xt,w._allowStateChanges=He,w._allowStateChangesInsideComputed=Xt,w._allowStateReadsEnd=ht,w._allowStateReadsStart=ft,w._autoAction=Wt,w._endAction=$e,w._getAdministration=xr,w._getGlobalState=function(){return gt},w._interceptReads=function(e,t,r){var o;if(or(e)||Yn(e)||Ye(e))o=xr(e);else{if(!dr(e))return n("Expected observable map, object or array as first array");if(!_(t))return n("InterceptReads can only be used with a specific property, not with an object in general");o=xr(e,t)}return void 0!==o.dehancer?n("An intercept reader was already established"):(o.dehancer="function"==typeof t?t:r,function(){o.dehancer=void 0})},w._isComputingDerivation=function(){return null!==gt.trackingDerivation},w._resetGlobalState=function(){var e=new vt;for(var t in e)-1===dt.indexOf(t)&&(gt[t]=e[t]);gt.allowStateChanges=!gt.enforceActions},w._startAction=ze,w.action=qt,w.autorun=Yt,w.comparer=Y,w.computed=De,w.configure=function(e){!0===e.isolateGlobalState&&function(){if((gt.pendingReactions.length||gt.inBatch||gt.isRunningReactions)&&n(36),bt=!0,yt){var e=o();0==--e.__mobxInstanceCount&&(e.__mobxGlobals=void 0),gt=new vt}}();var t,r,i=e.useProxies,a=e.enforceActions;if(void 0!==i&&(gt.useProxies=i===rn||"never"!==i&&"undefined"!=typeof Proxy),"ifavailable"===i&&(gt.verifyProxies=!0),void 0!==a){var s=a===rn?rn:"observed"===a;gt.enforceActions=s,gt.allowStateChanges=!0!==s&&s!==rn}["computedRequiresReaction","reactionRequiresObservable","observableRequiresReaction","disableErrorBoundaries","safeDescriptors"].forEach((function(t){t in e&&(gt[t]=!!e[t])})),gt.allowStateReads=!gt.observableRequiresReaction,!0===gt.disableErrorBoundaries&&console.warn("WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled."),e.reactionScheduler&&(t=e.reactionScheduler,r=Ct,Ct=function(e){return t((function(){return r(e)}))})},w.createAtom=J,w.defineProperty=function(e,t,r){if(dr(e))return e[q].defineProperty_(t,r);n(39)},w.entries=function(e){return dr(e)?_n(e).map((function(t){return[t,e[t]]})):or(e)?_n(e).map((function(t){return[t,e.get(t)]})):sr(e)?Array.from(e.entries()):Yn(e)?e.map((function(e,t){return[t,e]})):void n(7)},w.extendObservable=on,w.flow=pn,w.flowResult=function(e){return e},w.get=function(e,t){if(mn(e,t))return dr(e)?e[q].get_(t):or(e)?e.get(t):Yn(e)?e[t]:void n(11)},w.getAtom=kr,w.getDebugName=Cr,w.getDependencyTree=an,w.getObserverTree=function(e,t){return un(kr(e,t))},w.has=mn,w.intercept=function(e,t,n){return g(n)?function(e,t,n){return xr(e,t).intercept_(n)}(e,t,n):function(e,t){return xr(e).intercept_(t)}(e,t)},w.isAction=Jt,w.isBoxedObservable=Ye,w.isComputed=function(e){return arguments.length>1?n("isComputed expects only 1 argument. Use isComputedProp to inspect the observability of a property"):yn(e)},w.isComputedProp=function(e,t){return _(t)?yn(e,t):n("isComputed expected a property name as second argument")},w.isFlow=vn,w.isFlowCancellationError=function(e){return e instanceof ln},w.isObservable=gn,w.isObservableArray=Yn,w.isObservableMap=or,w.isObservableObject=dr,w.isObservableProp=function(e,t){return _(t)?bn(e,t):n("expected a property name as second argument")},w.isObservableSet=sr,w.keys=_n,w.makeAutoObservable=function(e,t,r){if(S(e)||S(Object.getPrototypeOf(e))||n("'makeAutoObservable' can only be used for classes that don't have a superclass"),dr(e)&&n("makeAutoObservable can only be used on objects not already made observable"),S(e))return on(e,e,t,r);var o=fr(e,r)[q];if(!e[Ln]){var i=Object.getPrototypeOf(e),a=new Set([].concat(P(e),P(i)));a.delete("constructor"),a.delete(q),E(i,Ln,a)}Ot();try{e[Ln].forEach((function(e){return o.make_(e,!t||(!(e in t)||t[e]))}))}finally{St()}return e},w.makeObservable=function(e,t,r){var o=fr(e,r)[q];Ot();try{t&&e[z]&&n("makeObservable second arg must be nullish when using decorators. Mixing @decorator syntax with annotations is not supported."),null!=t||(t=function(e){return I(e,z)||(e[z]||n("No annotations were passed to makeObservable, but no decorated members have been found either"),E(e,z,V({},e[z]))),e[z]}(e)),P(t).forEach((function(e){return o.make_(e,t[e])}))}finally{St()}return e},w.observable=Te,w.observe=function(e,t,n,r){return g(n)?function(e,t,n,r){return xr(e,t).observe_(n,r)}(e,t,n,r):function(e,t,n){return xr(e).observe_(t,n)}(e,t,n)},w.onBecomeObserved=en,w.onBecomeUnobserved=tn,w.onReactionError=function(e){return gt.globalReactionErrorHandlers.push(e),function(){var t=gt.globalReactionErrorHandlers.indexOf(e);t>=0&>.globalReactionErrorHandlers.splice(t,1)}},w.override=te,w.ownKeys=wn,w.reaction=function(e,t,r){var o;void 0===r&&(r=l),g(e)&&g(t)||n("First and second argument to reaction should be functions"),S(r)||n("Third argument of reactions should be an object");var i,a,s,u,c=null!=(o=r.name)?o:"Reaction@"+v(),f=qt(c,r.onError?(i=r.onError,a=t,function(){try{return a.apply(this,arguments)}catch(e){i.call(this,e)}}):t),h=!r.scheduler&&!r.delay,p=Qt(r),d=!0,y=!1,b=r.compareStructural?Y.structural:r.equals||Y.default,_=new xt(c,(function(){d||h?m():y||(y=!0,p(m))}),r.onError,r.requiresObservable);function m(){if(y=!1,!_.isDisposed_){var t=!1;_.track((function(){var n=He(!1,(function(){return e(_)}));t=d||!b(s,n),u=s,s=n})),(d&&r.fireImmediately||!d&&t)&&f(s,u,_),d=!1}}return _.schedule_(),_.getDisposer_()},w.remove=function(e,t){dr(e)?e[q].delete_(t):or(e)||sr(e)?e.delete(t):Yn(e)?("number"!=typeof t&&(t=parseInt(t,10)),e.splice(t,1)):n(9)},w.runInAction=Xt,w.set=function e(t,r,o){if(2!==arguments.length||sr(t))dr(t)?t[q].set_(r,o):or(t)?t.set(r,o):sr(t)?t.add(r):Yn(t)?("number"!=typeof r&&(r=parseInt(r,10)),r<0&&n("Invalid index: '"+r+"'"),Ot(),r>=t.length&&(t.length=r+1),t[r]=o,St()):n(8);else{Ot();var i=r;try{for(var a in i)e(t,a,i[a])}finally{St()}}},w.spy=Vt,w.toJS=function(e,t){return t&&n("toJS no longer supports options"),Sn(e,new Map)},w.trace=An,w.transaction=jn,w.untracked=ut,w.values=function(e){return dr(e)?_n(e).map((function(t){return e[t]})):or(e)?_n(e).map((function(t){return e.get(t)})):sr(e)?Array.from(e.values()):Yn(e)?e.slice():void n(6)},w.when=function(e,t,n){return 1===arguments.length||t&&"object"==typeof t?xn(e,t):kn(e,t,n||{})},w}!function(e){"production"===process.env.NODE_ENV?e.exports=_():e.exports=O()}({get exports(){return b},set exports(e){b=e}});var S=y.createContext(void 0),A="mark-as-mobx-observable";e.IoC=function(e){var t=u.useRef();if(!t.current){var n=new i.ApplicationContext;"function"==typeof e.callback&&e.callback(n),n.registerInstAwareProcessor(function(){function e(){}return e.prototype.afterInstantiation=function(e){return n.getClassMetadata(e.constructor).getCtorMarkInfo()[A]&&b.makeObservable(e),e},e}()),t.current=n}return y.createElement(S.Provider,{value:t.current},e.children)},e.Observable=function(){return i.Mark(A,!0)},e.useService=function(e){var t=u.useContext(S);if(!t)throw new Error(" has not been applied to the component.");return t.getInstance(e)}})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@vgerbot/ioc"),require("react"),require("mobx")):"function"==typeof define&&define.amd?define(["exports","@vgerbot/ioc","react","mobx"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).useService={},e.ioc,e.React,e.mobx)}(this,(function(e,t,r,n){"use strict";var o=r.createContext(void 0),a="mark-as-mobx-observable";e.IoC=function(e){var c=r.useRef();if(!c.current){var i=new t.ApplicationContext;"function"==typeof e.callback&&e.callback(i),i.registerInstAwareProcessor(function(){function e(){}return e.prototype.afterInstantiation=function(e){return i.getClassMetadata(e.constructor).getCtorMarkInfo()[a]&&n.makeObservable(e),e},e}()),c.current=i}return r.createElement(o.Provider,{value:c.current},e.children)},e.Observable=function(){return t.Mark(a,!0)},e.useService=function(e){var t=r.useContext(o);if(!t)throw new Error(" has not been applied to the component.");return t.getInstance(e)},Object.keys(t).forEach((function(r){"default"===r||e.hasOwnProperty(r)||Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[r]}})}))})); //# sourceMappingURL=index.umd.js.map diff --git a/dist/index.umd.js.map b/dist/index.umd.js.map index 585e967..787f2db 100644 --- a/dist/index.umd.js.map +++ b/dist/index.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"index.umd.js","sources":["../node_modules/@vgerbot/ioc/node_modules/minimist/index.js","../node_modules/@vgerbot/ioc/dist/index.cjs.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/cjs/react.development.js","../node_modules/react/index.js","../node_modules/mobx/dist/mobx.cjs.production.min.js","../node_modules/mobx/dist/mobx.cjs.development.js","../node_modules/mobx/dist/index.js","../src/index.ts"],"sourcesContent":["'use strict';\n\nfunction hasKey(obj, keys) {\n\tvar o = obj;\n\tkeys.slice(0, -1).forEach(function (key) {\n\t\to = o[key] || {};\n\t});\n\n\tvar key = keys[keys.length - 1];\n\treturn key in o;\n}\n\nfunction isNumber(x) {\n\tif (typeof x === 'number') { return true; }\n\tif ((/^0x[0-9a-f]+$/i).test(x)) { return true; }\n\treturn (/^[-+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(e[-+]?\\d+)?$/).test(x);\n}\n\nfunction isConstructorOrProto(obj, key) {\n\treturn (key === 'constructor' && typeof obj[key] === 'function') || key === '__proto__';\n}\n\nmodule.exports = function (args, opts) {\n\tif (!opts) { opts = {}; }\n\n\tvar flags = {\n\t\tbools: {},\n\t\tstrings: {},\n\t\tunknownFn: null,\n\t};\n\n\tif (typeof opts.unknown === 'function') {\n\t\tflags.unknownFn = opts.unknown;\n\t}\n\n\tif (typeof opts.boolean === 'boolean' && opts.boolean) {\n\t\tflags.allBools = true;\n\t} else {\n\t\t[].concat(opts.boolean).filter(Boolean).forEach(function (key) {\n\t\t\tflags.bools[key] = true;\n\t\t});\n\t}\n\n\tvar aliases = {};\n\n\tfunction aliasIsBoolean(key) {\n\t\treturn aliases[key].some(function (x) {\n\t\t\treturn flags.bools[x];\n\t\t});\n\t}\n\n\tObject.keys(opts.alias || {}).forEach(function (key) {\n\t\taliases[key] = [].concat(opts.alias[key]);\n\t\taliases[key].forEach(function (x) {\n\t\t\taliases[x] = [key].concat(aliases[key].filter(function (y) {\n\t\t\t\treturn x !== y;\n\t\t\t}));\n\t\t});\n\t});\n\n\t[].concat(opts.string).filter(Boolean).forEach(function (key) {\n\t\tflags.strings[key] = true;\n\t\tif (aliases[key]) {\n\t\t\t[].concat(aliases[key]).forEach(function (k) {\n\t\t\t\tflags.strings[k] = true;\n\t\t\t});\n\t\t}\n\t});\n\n\tvar defaults = opts.default || {};\n\n\tvar argv = { _: [] };\n\n\tfunction argDefined(key, arg) {\n\t\treturn (flags.allBools && (/^--[^=]+$/).test(arg))\n\t\t\t|| flags.strings[key]\n\t\t\t|| flags.bools[key]\n\t\t\t|| aliases[key];\n\t}\n\n\tfunction setKey(obj, keys, value) {\n\t\tvar o = obj;\n\t\tfor (var i = 0; i < keys.length - 1; i++) {\n\t\t\tvar key = keys[i];\n\t\t\tif (isConstructorOrProto(o, key)) { return; }\n\t\t\tif (o[key] === undefined) { o[key] = {}; }\n\t\t\tif (\n\t\t\t\to[key] === Object.prototype\n\t\t\t\t|| o[key] === Number.prototype\n\t\t\t\t|| o[key] === String.prototype\n\t\t\t) {\n\t\t\t\to[key] = {};\n\t\t\t}\n\t\t\tif (o[key] === Array.prototype) { o[key] = []; }\n\t\t\to = o[key];\n\t\t}\n\n\t\tvar lastKey = keys[keys.length - 1];\n\t\tif (isConstructorOrProto(o, lastKey)) { return; }\n\t\tif (\n\t\t\to === Object.prototype\n\t\t\t|| o === Number.prototype\n\t\t\t|| o === String.prototype\n\t\t) {\n\t\t\to = {};\n\t\t}\n\t\tif (o === Array.prototype) { o = []; }\n\t\tif (o[lastKey] === undefined || flags.bools[lastKey] || typeof o[lastKey] === 'boolean') {\n\t\t\to[lastKey] = value;\n\t\t} else if (Array.isArray(o[lastKey])) {\n\t\t\to[lastKey].push(value);\n\t\t} else {\n\t\t\to[lastKey] = [o[lastKey], value];\n\t\t}\n\t}\n\n\tfunction setArg(key, val, arg) {\n\t\tif (arg && flags.unknownFn && !argDefined(key, arg)) {\n\t\t\tif (flags.unknownFn(arg) === false) { return; }\n\t\t}\n\n\t\tvar value = !flags.strings[key] && isNumber(val)\n\t\t\t? Number(val)\n\t\t\t: val;\n\t\tsetKey(argv, key.split('.'), value);\n\n\t\t(aliases[key] || []).forEach(function (x) {\n\t\t\tsetKey(argv, x.split('.'), value);\n\t\t});\n\t}\n\n\tObject.keys(flags.bools).forEach(function (key) {\n\t\tsetArg(key, defaults[key] === undefined ? false : defaults[key]);\n\t});\n\n\tvar notFlags = [];\n\n\tif (args.indexOf('--') !== -1) {\n\t\tnotFlags = args.slice(args.indexOf('--') + 1);\n\t\targs = args.slice(0, args.indexOf('--'));\n\t}\n\n\tfor (var i = 0; i < args.length; i++) {\n\t\tvar arg = args[i];\n\t\tvar key;\n\t\tvar next;\n\n\t\tif ((/^--.+=/).test(arg)) {\n\t\t\t// Using [\\s\\S] instead of . because js doesn't support the\n\t\t\t// 'dotall' regex modifier. See:\n\t\t\t// http://stackoverflow.com/a/1068308/13216\n\t\t\tvar m = arg.match(/^--([^=]+)=([\\s\\S]*)$/);\n\t\t\tkey = m[1];\n\t\t\tvar value = m[2];\n\t\t\tif (flags.bools[key]) {\n\t\t\t\tvalue = value !== 'false';\n\t\t\t}\n\t\t\tsetArg(key, value, arg);\n\t\t} else if ((/^--no-.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--no-(.+)/)[1];\n\t\t\tsetArg(key, false, arg);\n\t\t} else if ((/^--.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--(.+)/)[1];\n\t\t\tnext = args[i + 1];\n\t\t\tif (\n\t\t\t\tnext !== undefined\n\t\t\t\t&& !(/^(-|--)[^-]/).test(next)\n\t\t\t\t&& !flags.bools[key]\n\t\t\t\t&& !flags.allBools\n\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t) {\n\t\t\t\tsetArg(key, next, arg);\n\t\t\t\ti += 1;\n\t\t\t} else if ((/^(true|false)$/).test(next)) {\n\t\t\t\tsetArg(key, next === 'true', arg);\n\t\t\t\ti += 1;\n\t\t\t} else {\n\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t}\n\t\t} else if ((/^-[^-]+/).test(arg)) {\n\t\t\tvar letters = arg.slice(1, -1).split('');\n\n\t\t\tvar broken = false;\n\t\t\tfor (var j = 0; j < letters.length; j++) {\n\t\t\t\tnext = arg.slice(j + 2);\n\n\t\t\t\tif (next === '-') {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ((/[A-Za-z]/).test(letters[j]) && next[0] === '=') {\n\t\t\t\t\tsetArg(letters[j], next.slice(1), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(/[A-Za-z]/).test(letters[j])\n\t\t\t\t\t&& (/-?\\d+(\\.\\d*)?(e-?\\d+)?$/).test(next)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (letters[j + 1] && letters[j + 1].match(/\\W/)) {\n\t\t\t\t\tsetArg(letters[j], arg.slice(j + 2), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tkey = arg.slice(-1)[0];\n\t\t\tif (!broken && key !== '-') {\n\t\t\t\tif (\n\t\t\t\t\targs[i + 1]\n\t\t\t\t\t&& !(/^(-|--)[^-]/).test(args[i + 1])\n\t\t\t\t\t&& !flags.bools[key]\n\t\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(key, args[i + 1], arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else if (args[i + 1] && (/^(true|false)$/).test(args[i + 1])) {\n\t\t\t\t\tsetArg(key, args[i + 1] === 'true', arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!flags.unknownFn || flags.unknownFn(arg) !== false) {\n\t\t\t\targv._.push(flags.strings._ || !isNumber(arg) ? arg : Number(arg));\n\t\t\t}\n\t\t\tif (opts.stopEarly) {\n\t\t\t\targv._.push.apply(argv._, args.slice(i + 1));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tObject.keys(defaults).forEach(function (k) {\n\t\tif (!hasKey(argv, k.split('.'))) {\n\t\t\tsetKey(argv, k.split('.'), defaults[k]);\n\n\t\t\t(aliases[k] || []).forEach(function (x) {\n\t\t\t\tsetKey(argv, x.split('.'), defaults[k]);\n\t\t\t});\n\t\t}\n\t});\n\n\tif (opts['--']) {\n\t\targv['--'] = notFlags.slice();\n\t} else {\n\t\tnotFlags.forEach(function (k) {\n\t\t\targv._.push(k);\n\t\t});\n\t}\n\n\treturn argv;\n};\n","'use strict';\n\nvar ServiceFactoryDef = /** @class */ (function () {\r\n function ServiceFactoryDef(factory, injections) {\r\n this.factory = factory;\r\n this.injections = injections;\r\n }\r\n ServiceFactoryDef.createFromClassMetadata = function (metadata) {\r\n return new ServiceFactoryDef(function (container, owner) {\r\n return function () {\r\n var reader = metadata.reader();\r\n var clazz = reader.getClass();\r\n return container.getInstance(clazz, owner);\r\n };\r\n });\r\n };\r\n return ServiceFactoryDef;\r\n}());\n\nvar GlobalMetadata = /** @class */ (function () {\r\n function GlobalMetadata() {\r\n this.classAliasMetadataMap = new Map();\r\n this.componentFactories = new Map();\r\n this.processorClasses = new Set();\r\n }\r\n GlobalMetadata.getInstance = function () {\r\n return GlobalMetadata.INSTANCE;\r\n };\r\n GlobalMetadata.prototype.recordFactory = function (symbol, factory, injections) {\r\n this.componentFactories.set(symbol, new ServiceFactoryDef(factory, injections));\r\n };\r\n GlobalMetadata.prototype.recordClassAlias = function (aliasName, metadata) {\r\n this.classAliasMetadataMap.set(aliasName, metadata);\r\n };\r\n GlobalMetadata.prototype.recordProcessorClass = function (clazz) {\r\n this.processorClasses.add(clazz);\r\n };\r\n GlobalMetadata.prototype.init = function () {\r\n // PASS;\r\n };\r\n GlobalMetadata.prototype.reader = function () {\r\n var _this = this;\r\n return {\r\n getComponentFactory: function (key) {\r\n return _this.componentFactories.get(key);\r\n },\r\n getClassMetadata: function (aliasName) {\r\n return _this.classAliasMetadataMap.get(aliasName);\r\n },\r\n getInstAwareProcessorClasses: function () {\r\n return Array.from(_this.processorClasses);\r\n }\r\n };\r\n };\r\n GlobalMetadata.INSTANCE = new GlobalMetadata();\r\n return GlobalMetadata;\r\n}());\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nfunction __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nfunction __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nexports.InstanceScope = void 0;\r\n(function (InstanceScope) {\r\n InstanceScope[\"SINGLETON\"] = \"ioc-resolution:container-singleton\";\r\n InstanceScope[\"TRANSIENT\"] = \"ioc-resolution:transient\";\r\n InstanceScope[\"GLOBAL_SHARED_SINGLETON\"] = \"ioc-resolution:global-shared-singleton\";\r\n})(exports.InstanceScope || (exports.InstanceScope = {}));\n\nfunction createDefaultValueMap(factory) {\r\n var map = new Map();\r\n var originGet = map.get.bind(map);\r\n map.get = function (key) {\r\n if (map.has(key)) {\r\n return originGet(key);\r\n }\r\n else {\r\n var defaultValue = factory(key);\r\n map.set(key, defaultValue);\r\n return map.get(key);\r\n }\r\n };\r\n return map;\r\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n/*! *****************************************************************************\nCopyright (C) Microsoft. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\nvar Reflect$1;\n(function (Reflect) {\n // Metadata Proposal\n // https://rbuckton.github.io/reflect-metadata/\n (function (factory) {\n var root = typeof commonjsGlobal === \"object\" ? commonjsGlobal :\n typeof self === \"object\" ? self :\n typeof this === \"object\" ? this :\n Function(\"return this;\")();\n var exporter = makeExporter(Reflect);\n if (typeof root.Reflect === \"undefined\") {\n root.Reflect = Reflect;\n }\n else {\n exporter = makeExporter(root.Reflect, exporter);\n }\n factory(exporter);\n function makeExporter(target, previous) {\n return function (key, value) {\n if (typeof target[key] !== \"function\") {\n Object.defineProperty(target, key, { configurable: true, writable: true, value: value });\n }\n if (previous)\n previous(key, value);\n };\n }\n })(function (exporter) {\n var hasOwn = Object.prototype.hasOwnProperty;\n // feature test for Symbol support\n var supportsSymbol = typeof Symbol === \"function\";\n var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== \"undefined\" ? Symbol.toPrimitive : \"@@toPrimitive\";\n var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== \"undefined\" ? Symbol.iterator : \"@@iterator\";\n var supportsCreate = typeof Object.create === \"function\"; // feature test for Object.create support\n var supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support\n var downLevel = !supportsCreate && !supportsProto;\n var HashMap = {\n // create an object in dictionary mode (a.k.a. \"slow\" mode in v8)\n create: supportsCreate\n ? function () { return MakeDictionary(Object.create(null)); }\n : supportsProto\n ? function () { return MakeDictionary({ __proto__: null }); }\n : function () { return MakeDictionary({}); },\n has: downLevel\n ? function (map, key) { return hasOwn.call(map, key); }\n : function (map, key) { return key in map; },\n get: downLevel\n ? function (map, key) { return hasOwn.call(map, key) ? map[key] : undefined; }\n : function (map, key) { return map[key]; },\n };\n // Load global or shim versions of Map, Set, and WeakMap\n var functionPrototype = Object.getPrototypeOf(Function);\n var usePolyfill = typeof process === \"object\" && process.env && process.env[\"REFLECT_METADATA_USE_MAP_POLYFILL\"] === \"true\";\n var _Map = !usePolyfill && typeof Map === \"function\" && typeof Map.prototype.entries === \"function\" ? Map : CreateMapPolyfill();\n var _Set = !usePolyfill && typeof Set === \"function\" && typeof Set.prototype.entries === \"function\" ? Set : CreateSetPolyfill();\n var _WeakMap = !usePolyfill && typeof WeakMap === \"function\" ? WeakMap : CreateWeakMapPolyfill();\n // [[Metadata]] internal slot\n // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots\n var Metadata = new _WeakMap();\n /**\n * Applies a set of decorators to a property of a target object.\n * @param decorators An array of decorators.\n * @param target The target object.\n * @param propertyKey (Optional) The property key to decorate.\n * @param attributes (Optional) The property descriptor for the target key.\n * @remarks Decorators are applied in reverse order.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Example = Reflect.decorate(decoratorsArray, Example);\n *\n * // property (on constructor)\n * Reflect.decorate(decoratorsArray, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.decorate(decoratorsArray, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Object.defineProperty(Example, \"staticMethod\",\n * Reflect.decorate(decoratorsArray, Example, \"staticMethod\",\n * Object.getOwnPropertyDescriptor(Example, \"staticMethod\")));\n *\n * // method (on prototype)\n * Object.defineProperty(Example.prototype, \"method\",\n * Reflect.decorate(decoratorsArray, Example.prototype, \"method\",\n * Object.getOwnPropertyDescriptor(Example.prototype, \"method\")));\n *\n */\n function decorate(decorators, target, propertyKey, attributes) {\n if (!IsUndefined(propertyKey)) {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsObject(target))\n throw new TypeError();\n if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes))\n throw new TypeError();\n if (IsNull(attributes))\n attributes = undefined;\n propertyKey = ToPropertyKey(propertyKey);\n return DecorateProperty(decorators, target, propertyKey, attributes);\n }\n else {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsConstructor(target))\n throw new TypeError();\n return DecorateConstructor(decorators, target);\n }\n }\n exporter(\"decorate\", decorate);\n // 4.1.2 Reflect.metadata(metadataKey, metadataValue)\n // https://rbuckton.github.io/reflect-metadata/#reflect.metadata\n /**\n * A default metadata decorator factory that can be used on a class, class member, or parameter.\n * @param metadataKey The key for the metadata entry.\n * @param metadataValue The value for the metadata entry.\n * @returns A decorator function.\n * @remarks\n * If `metadataKey` is already defined for the target and target key, the\n * metadataValue for that key will be overwritten.\n * @example\n *\n * // constructor\n * @Reflect.metadata(key, value)\n * class Example {\n * }\n *\n * // property (on constructor, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticProperty;\n * }\n *\n * // property (on prototype, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * property;\n * }\n *\n * // method (on constructor)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticMethod() { }\n * }\n *\n * // method (on prototype)\n * class Example {\n * @Reflect.metadata(key, value)\n * method() { }\n * }\n *\n */\n function metadata(metadataKey, metadataValue) {\n function decorator(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey))\n throw new TypeError();\n OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n return decorator;\n }\n exporter(\"metadata\", metadata);\n /**\n * Define a unique metadata entry on the target.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param metadataValue A value that contains attached metadata.\n * @param target The target object on which to define metadata.\n * @param propertyKey (Optional) The property key for the target.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Reflect.defineMetadata(\"custom:annotation\", options, Example);\n *\n * // property (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticMethod\");\n *\n * // method (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"method\");\n *\n * // decorator factory as metadata-producing annotation.\n * function MyAnnotation(options): Decorator {\n * return (target, key?) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\n * }\n *\n */\n function defineMetadata(metadataKey, metadataValue, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n exporter(\"defineMetadata\", defineMetadata);\n /**\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasMetadata\", hasMetadata);\n /**\n * Gets a value indicating whether the target object has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasOwnMetadata\", hasOwnMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getMetadata\", getMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getOwnMetadata\", getOwnMetadata);\n /**\n * Gets the metadata keys defined on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryMetadataKeys(target, propertyKey);\n }\n exporter(\"getMetadataKeys\", getMetadataKeys);\n /**\n * Gets the unique metadata keys defined on the target object.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getOwnMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryOwnMetadataKeys(target, propertyKey);\n }\n exporter(\"getOwnMetadataKeys\", getOwnMetadataKeys);\n /**\n * Deletes the metadata entry from the target object with the provided key.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function deleteMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n var metadataMap = GetOrCreateMetadataMap(target, propertyKey, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n if (!metadataMap.delete(metadataKey))\n return false;\n if (metadataMap.size > 0)\n return true;\n var targetMetadata = Metadata.get(target);\n targetMetadata.delete(propertyKey);\n if (targetMetadata.size > 0)\n return true;\n Metadata.delete(target);\n return true;\n }\n exporter(\"deleteMetadata\", deleteMetadata);\n function DecorateConstructor(decorators, target) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsConstructor(decorated))\n throw new TypeError();\n target = decorated;\n }\n }\n return target;\n }\n function DecorateProperty(decorators, target, propertyKey, descriptor) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target, propertyKey, descriptor);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsObject(decorated))\n throw new TypeError();\n descriptor = decorated;\n }\n }\n return descriptor;\n }\n function GetOrCreateMetadataMap(O, P, Create) {\n var targetMetadata = Metadata.get(O);\n if (IsUndefined(targetMetadata)) {\n if (!Create)\n return undefined;\n targetMetadata = new _Map();\n Metadata.set(O, targetMetadata);\n }\n var metadataMap = targetMetadata.get(P);\n if (IsUndefined(metadataMap)) {\n if (!Create)\n return undefined;\n metadataMap = new _Map();\n targetMetadata.set(P, metadataMap);\n }\n return metadataMap;\n }\n // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata\n function OrdinaryHasMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return true;\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryHasMetadata(MetadataKey, parent, P);\n return false;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n return ToBoolean(metadataMap.has(MetadataKey));\n }\n // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata\n function OrdinaryGetMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return OrdinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryGetMetadata(MetadataKey, parent, P);\n return undefined;\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return undefined;\n return metadataMap.get(MetadataKey);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true);\n metadataMap.set(MetadataKey, MetadataValue);\n }\n // 3.1.6.1 OrdinaryMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys\n function OrdinaryMetadataKeys(O, P) {\n var ownKeys = OrdinaryOwnMetadataKeys(O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (parent === null)\n return ownKeys;\n var parentKeys = OrdinaryMetadataKeys(parent, P);\n if (parentKeys.length <= 0)\n return ownKeys;\n if (ownKeys.length <= 0)\n return parentKeys;\n var set = new _Set();\n var keys = [];\n for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) {\n var key = ownKeys_1[_i];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) {\n var key = parentKeys_1[_a];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n return keys;\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var keys = [];\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return keys;\n var keysObj = metadataMap.keys();\n var iterator = GetIterator(keysObj);\n var k = 0;\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n keys.length = k;\n return keys;\n }\n var nextValue = IteratorValue(next);\n try {\n keys[k] = nextValue;\n }\n catch (e) {\n try {\n IteratorClose(iterator);\n }\n finally {\n throw e;\n }\n }\n k++;\n }\n }\n // 6 ECMAScript Data Typ0es and Values\n // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values\n function Type(x) {\n if (x === null)\n return 1 /* Null */;\n switch (typeof x) {\n case \"undefined\": return 0 /* Undefined */;\n case \"boolean\": return 2 /* Boolean */;\n case \"string\": return 3 /* String */;\n case \"symbol\": return 4 /* Symbol */;\n case \"number\": return 5 /* Number */;\n case \"object\": return x === null ? 1 /* Null */ : 6 /* Object */;\n default: return 6 /* Object */;\n }\n }\n // 6.1.1 The Undefined Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type\n function IsUndefined(x) {\n return x === undefined;\n }\n // 6.1.2 The Null Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type\n function IsNull(x) {\n return x === null;\n }\n // 6.1.5 The Symbol Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type\n function IsSymbol(x) {\n return typeof x === \"symbol\";\n }\n // 6.1.7 The Object Type\n // https://tc39.github.io/ecma262/#sec-object-type\n function IsObject(x) {\n return typeof x === \"object\" ? x !== null : typeof x === \"function\";\n }\n // 7.1 Type Conversion\n // https://tc39.github.io/ecma262/#sec-type-conversion\n // 7.1.1 ToPrimitive(input [, PreferredType])\n // https://tc39.github.io/ecma262/#sec-toprimitive\n function ToPrimitive(input, PreferredType) {\n switch (Type(input)) {\n case 0 /* Undefined */: return input;\n case 1 /* Null */: return input;\n case 2 /* Boolean */: return input;\n case 3 /* String */: return input;\n case 4 /* Symbol */: return input;\n case 5 /* Number */: return input;\n }\n var hint = PreferredType === 3 /* String */ ? \"string\" : PreferredType === 5 /* Number */ ? \"number\" : \"default\";\n var exoticToPrim = GetMethod(input, toPrimitiveSymbol);\n if (exoticToPrim !== undefined) {\n var result = exoticToPrim.call(input, hint);\n if (IsObject(result))\n throw new TypeError();\n return result;\n }\n return OrdinaryToPrimitive(input, hint === \"default\" ? \"number\" : hint);\n }\n // 7.1.1.1 OrdinaryToPrimitive(O, hint)\n // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive\n function OrdinaryToPrimitive(O, hint) {\n if (hint === \"string\") {\n var toString_1 = O.toString;\n if (IsCallable(toString_1)) {\n var result = toString_1.call(O);\n if (!IsObject(result))\n return result;\n }\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n else {\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n var toString_2 = O.toString;\n if (IsCallable(toString_2)) {\n var result = toString_2.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n throw new TypeError();\n }\n // 7.1.2 ToBoolean(argument)\n // https://tc39.github.io/ecma262/2016/#sec-toboolean\n function ToBoolean(argument) {\n return !!argument;\n }\n // 7.1.12 ToString(argument)\n // https://tc39.github.io/ecma262/#sec-tostring\n function ToString(argument) {\n return \"\" + argument;\n }\n // 7.1.14 ToPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-topropertykey\n function ToPropertyKey(argument) {\n var key = ToPrimitive(argument, 3 /* String */);\n if (IsSymbol(key))\n return key;\n return ToString(key);\n }\n // 7.2 Testing and Comparison Operations\n // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations\n // 7.2.2 IsArray(argument)\n // https://tc39.github.io/ecma262/#sec-isarray\n function IsArray(argument) {\n return Array.isArray\n ? Array.isArray(argument)\n : argument instanceof Object\n ? argument instanceof Array\n : Object.prototype.toString.call(argument) === \"[object Array]\";\n }\n // 7.2.3 IsCallable(argument)\n // https://tc39.github.io/ecma262/#sec-iscallable\n function IsCallable(argument) {\n // NOTE: This is an approximation as we cannot check for [[Call]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.4 IsConstructor(argument)\n // https://tc39.github.io/ecma262/#sec-isconstructor\n function IsConstructor(argument) {\n // NOTE: This is an approximation as we cannot check for [[Construct]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.7 IsPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-ispropertykey\n function IsPropertyKey(argument) {\n switch (Type(argument)) {\n case 3 /* String */: return true;\n case 4 /* Symbol */: return true;\n default: return false;\n }\n }\n // 7.3 Operations on Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-objects\n // 7.3.9 GetMethod(V, P)\n // https://tc39.github.io/ecma262/#sec-getmethod\n function GetMethod(V, P) {\n var func = V[P];\n if (func === undefined || func === null)\n return undefined;\n if (!IsCallable(func))\n throw new TypeError();\n return func;\n }\n // 7.4 Operations on Iterator Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects\n function GetIterator(obj) {\n var method = GetMethod(obj, iteratorSymbol);\n if (!IsCallable(method))\n throw new TypeError(); // from Call\n var iterator = method.call(obj);\n if (!IsObject(iterator))\n throw new TypeError();\n return iterator;\n }\n // 7.4.4 IteratorValue(iterResult)\n // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue\n function IteratorValue(iterResult) {\n return iterResult.value;\n }\n // 7.4.5 IteratorStep(iterator)\n // https://tc39.github.io/ecma262/#sec-iteratorstep\n function IteratorStep(iterator) {\n var result = iterator.next();\n return result.done ? false : result;\n }\n // 7.4.6 IteratorClose(iterator, completion)\n // https://tc39.github.io/ecma262/#sec-iteratorclose\n function IteratorClose(iterator) {\n var f = iterator[\"return\"];\n if (f)\n f.call(iterator);\n }\n // 9.1 Ordinary Object Internal Methods and Internal Slots\n // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots\n // 9.1.1.1 OrdinaryGetPrototypeOf(O)\n // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof\n function OrdinaryGetPrototypeOf(O) {\n var proto = Object.getPrototypeOf(O);\n if (typeof O !== \"function\" || O === functionPrototype)\n return proto;\n // TypeScript doesn't set __proto__ in ES5, as it's non-standard.\n // Try to determine the superclass constructor. Compatible implementations\n // must either set __proto__ on a subclass constructor to the superclass constructor,\n // or ensure each class has a valid `constructor` property on its prototype that\n // points back to the constructor.\n // If this is not the same as Function.[[Prototype]], then this is definately inherited.\n // This is the case when in ES6 or when using __proto__ in a compatible browser.\n if (proto !== functionPrototype)\n return proto;\n // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\n var prototype = O.prototype;\n var prototypeProto = prototype && Object.getPrototypeOf(prototype);\n if (prototypeProto == null || prototypeProto === Object.prototype)\n return proto;\n // If the constructor was not a function, then we cannot determine the heritage.\n var constructor = prototypeProto.constructor;\n if (typeof constructor !== \"function\")\n return proto;\n // If we have some kind of self-reference, then we cannot determine the heritage.\n if (constructor === O)\n return proto;\n // we have a pretty good guess at the heritage.\n return constructor;\n }\n // naive Map shim\n function CreateMapPolyfill() {\n var cacheSentinel = {};\n var arraySentinel = [];\n var MapIterator = /** @class */ (function () {\n function MapIterator(keys, values, selector) {\n this._index = 0;\n this._keys = keys;\n this._values = values;\n this._selector = selector;\n }\n MapIterator.prototype[\"@@iterator\"] = function () { return this; };\n MapIterator.prototype[iteratorSymbol] = function () { return this; };\n MapIterator.prototype.next = function () {\n var index = this._index;\n if (index >= 0 && index < this._keys.length) {\n var result = this._selector(this._keys[index], this._values[index]);\n if (index + 1 >= this._keys.length) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n else {\n this._index++;\n }\n return { value: result, done: false };\n }\n return { value: undefined, done: true };\n };\n MapIterator.prototype.throw = function (error) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n throw error;\n };\n MapIterator.prototype.return = function (value) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n return { value: value, done: true };\n };\n return MapIterator;\n }());\n return /** @class */ (function () {\n function Map() {\n this._keys = [];\n this._values = [];\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n Object.defineProperty(Map.prototype, \"size\", {\n get: function () { return this._keys.length; },\n enumerable: true,\n configurable: true\n });\n Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; };\n Map.prototype.get = function (key) {\n var index = this._find(key, /*insert*/ false);\n return index >= 0 ? this._values[index] : undefined;\n };\n Map.prototype.set = function (key, value) {\n var index = this._find(key, /*insert*/ true);\n this._values[index] = value;\n return this;\n };\n Map.prototype.delete = function (key) {\n var index = this._find(key, /*insert*/ false);\n if (index >= 0) {\n var size = this._keys.length;\n for (var i = index + 1; i < size; i++) {\n this._keys[i - 1] = this._keys[i];\n this._values[i - 1] = this._values[i];\n }\n this._keys.length--;\n this._values.length--;\n if (key === this._cacheKey) {\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n return true;\n }\n return false;\n };\n Map.prototype.clear = function () {\n this._keys.length = 0;\n this._values.length = 0;\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n };\n Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); };\n Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); };\n Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); };\n Map.prototype[\"@@iterator\"] = function () { return this.entries(); };\n Map.prototype[iteratorSymbol] = function () { return this.entries(); };\n Map.prototype._find = function (key, insert) {\n if (this._cacheKey !== key) {\n this._cacheIndex = this._keys.indexOf(this._cacheKey = key);\n }\n if (this._cacheIndex < 0 && insert) {\n this._cacheIndex = this._keys.length;\n this._keys.push(key);\n this._values.push(undefined);\n }\n return this._cacheIndex;\n };\n return Map;\n }());\n function getKey(key, _) {\n return key;\n }\n function getValue(_, value) {\n return value;\n }\n function getEntry(key, value) {\n return [key, value];\n }\n }\n // naive Set shim\n function CreateSetPolyfill() {\n return /** @class */ (function () {\n function Set() {\n this._map = new _Map();\n }\n Object.defineProperty(Set.prototype, \"size\", {\n get: function () { return this._map.size; },\n enumerable: true,\n configurable: true\n });\n Set.prototype.has = function (value) { return this._map.has(value); };\n Set.prototype.add = function (value) { return this._map.set(value, value), this; };\n Set.prototype.delete = function (value) { return this._map.delete(value); };\n Set.prototype.clear = function () { this._map.clear(); };\n Set.prototype.keys = function () { return this._map.keys(); };\n Set.prototype.values = function () { return this._map.values(); };\n Set.prototype.entries = function () { return this._map.entries(); };\n Set.prototype[\"@@iterator\"] = function () { return this.keys(); };\n Set.prototype[iteratorSymbol] = function () { return this.keys(); };\n return Set;\n }());\n }\n // naive WeakMap shim\n function CreateWeakMapPolyfill() {\n var UUID_SIZE = 16;\n var keys = HashMap.create();\n var rootKey = CreateUniqueKey();\n return /** @class */ (function () {\n function WeakMap() {\n this._key = CreateUniqueKey();\n }\n WeakMap.prototype.has = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.has(table, this._key) : false;\n };\n WeakMap.prototype.get = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.get(table, this._key) : undefined;\n };\n WeakMap.prototype.set = function (target, value) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ true);\n table[this._key] = value;\n return this;\n };\n WeakMap.prototype.delete = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? delete table[this._key] : false;\n };\n WeakMap.prototype.clear = function () {\n // NOTE: not a real clear, just makes the previous data unreachable\n this._key = CreateUniqueKey();\n };\n return WeakMap;\n }());\n function CreateUniqueKey() {\n var key;\n do\n key = \"@@WeakMap@@\" + CreateUUID();\n while (HashMap.has(keys, key));\n keys[key] = true;\n return key;\n }\n function GetOrCreateWeakMapTable(target, create) {\n if (!hasOwn.call(target, rootKey)) {\n if (!create)\n return undefined;\n Object.defineProperty(target, rootKey, { value: HashMap.create() });\n }\n return target[rootKey];\n }\n function FillRandomBytes(buffer, size) {\n for (var i = 0; i < size; ++i)\n buffer[i] = Math.random() * 0xff | 0;\n return buffer;\n }\n function GenRandomBytes(size) {\n if (typeof Uint8Array === \"function\") {\n if (typeof crypto !== \"undefined\")\n return crypto.getRandomValues(new Uint8Array(size));\n if (typeof msCrypto !== \"undefined\")\n return msCrypto.getRandomValues(new Uint8Array(size));\n return FillRandomBytes(new Uint8Array(size), size);\n }\n return FillRandomBytes(new Array(size), size);\n }\n function CreateUUID() {\n var data = GenRandomBytes(UUID_SIZE);\n // mark as random - RFC 4122 § 4.4\n data[6] = data[6] & 0x4f | 0x40;\n data[8] = data[8] & 0xbf | 0x80;\n var result = \"\";\n for (var offset = 0; offset < UUID_SIZE; ++offset) {\n var byte = data[offset];\n if (offset === 4 || offset === 6 || offset === 8)\n result += \"-\";\n if (byte < 16)\n result += \"0\";\n result += byte.toString(16).toLowerCase();\n }\n return result;\n }\n }\n // uses a heuristic used by v8 and chakra to force an object into dictionary mode.\n function MakeDictionary(obj) {\n obj.__ = undefined;\n delete obj.__;\n return obj;\n }\n });\n})(Reflect$1 || (Reflect$1 = {}));\n\nvar MetadataFactory = /** @class */ (function () {\r\n function MetadataFactory() {\r\n }\r\n MetadataFactory.getMetadata = function (target, metadataClass) {\r\n var key = metadataClass.getReflectKey();\r\n var metadata = Reflect.getMetadata(key, target);\r\n if (!metadata) {\r\n metadata = new metadataClass();\r\n metadata.init(target);\r\n Reflect.defineMetadata(key, metadata, target);\r\n }\r\n return metadata;\r\n };\r\n return MetadataFactory;\r\n}());\n\nvar CLASS_METADATA_KEY = 'ioc:class-metadata';\r\nvar MarkInfoContainer = /** @class */ (function () {\r\n function MarkInfoContainer() {\r\n this.map = createDefaultValueMap(function () { return ({}); });\r\n }\r\n MarkInfoContainer.prototype.getMarkInfo = function (method) {\r\n return this.map.get(method);\r\n };\r\n MarkInfoContainer.prototype.mark = function (method, key, value) {\r\n var markInfo = this.map.get(method);\r\n markInfo[key] = value;\r\n };\r\n return MarkInfoContainer;\r\n}());\r\nvar ParameterMarkInfoContainer = /** @class */ (function () {\r\n function ParameterMarkInfoContainer() {\r\n this.map = createDefaultValueMap(function () {\r\n return {};\r\n });\r\n }\r\n ParameterMarkInfoContainer.prototype.getMarkInfo = function (method) {\r\n return this.map.get(method);\r\n };\r\n ParameterMarkInfoContainer.prototype.mark = function (method, index, key, value) {\r\n var paramsMarkInfo = this.map.get(method);\r\n var markInfo = paramsMarkInfo[index] || {};\r\n markInfo[key] = value;\r\n paramsMarkInfo[index] = markInfo;\r\n };\r\n return ParameterMarkInfoContainer;\r\n}());\r\nvar ClassMetadata = /** @class */ (function () {\r\n function ClassMetadata() {\r\n this.scope = exports.InstanceScope.SINGLETON;\r\n this.constructorParameterTypes = [];\r\n this.lifecycleMethodsMap = {};\r\n this.propertyTypesMap = new Map();\r\n this.marks = {\r\n ctor: {},\r\n members: new MarkInfoContainer(),\r\n params: new ParameterMarkInfoContainer()\r\n };\r\n }\r\n ClassMetadata.getReflectKey = function () {\r\n return CLASS_METADATA_KEY;\r\n };\r\n ClassMetadata.getInstance = function (ctor) {\r\n return MetadataFactory.getMetadata(ctor, ClassMetadata);\r\n };\r\n ClassMetadata.prototype.init = function (target) {\r\n this.clazz = target;\r\n var constr = target;\r\n if (typeof constr.scope === 'function') {\r\n this.setScope(constr.scope());\r\n }\r\n if (typeof constr.inject === 'function') {\r\n var injections = constr.inject();\r\n for (var key in injections) {\r\n this.recordPropertyType(key, injections[key]);\r\n }\r\n }\r\n if (typeof constr.metadata === 'function') {\r\n var metadata = constr.metadata();\r\n if (metadata.scope) {\r\n this.setScope(metadata.scope);\r\n }\r\n var injections = metadata.inject;\r\n if (injections) {\r\n for (var key in injections) {\r\n this.recordPropertyType(key, injections[key]);\r\n }\r\n }\r\n }\r\n };\r\n ClassMetadata.prototype.marker = function () {\r\n var _this = this;\r\n return {\r\n ctor: function (key, value) {\r\n _this.marks.ctor[key] = value;\r\n },\r\n member: function (propertyKey) {\r\n return {\r\n mark: function (key, value) {\r\n _this.marks.members.mark(propertyKey, key, value);\r\n }\r\n };\r\n },\r\n parameter: function (propertyKey, index) {\r\n return {\r\n mark: function (key, value) {\r\n _this.marks.params.mark(propertyKey, index, key, value);\r\n }\r\n };\r\n }\r\n };\r\n };\r\n ClassMetadata.prototype.setScope = function (scope) {\r\n this.scope = scope;\r\n };\r\n ClassMetadata.prototype.setConstructorParameterType = function (index, cls) {\r\n this.constructorParameterTypes[index] = cls;\r\n };\r\n ClassMetadata.prototype.recordPropertyType = function (propertyKey, type) {\r\n this.propertyTypesMap.set(propertyKey, type);\r\n };\r\n ClassMetadata.prototype.addLifecycleMethod = function (methodName, lifecycle) {\r\n var lifecycles = this.getLifecycles(methodName);\r\n lifecycles.add(lifecycle);\r\n this.lifecycleMethodsMap[methodName] = lifecycles;\r\n };\r\n ClassMetadata.prototype.getLifecycles = function (methodName) {\r\n return this.lifecycleMethodsMap[methodName] || new Set();\r\n };\r\n ClassMetadata.prototype.getMethods = function (lifecycle) {\r\n var _this = this;\r\n return Object.keys(this.lifecycleMethodsMap).filter(function (it) {\r\n var lifecycles = _this.lifecycleMethodsMap[it];\r\n return lifecycles.has(lifecycle);\r\n });\r\n };\r\n ClassMetadata.prototype.reader = function () {\r\n var _this = this;\r\n return {\r\n getClass: function () { return _this.clazz; },\r\n getScope: function () {\r\n return _this.scope;\r\n },\r\n getConstructorParameterTypes: function () {\r\n return _this.constructorParameterTypes.slice(0);\r\n },\r\n getMethods: function (lifecycle) {\r\n return _this.getMethods(lifecycle);\r\n },\r\n getPropertyTypeMap: function () { return new Map(_this.propertyTypesMap); },\r\n getCtorMarkInfo: function () {\r\n return __assign({}, _this.marks.ctor);\r\n },\r\n getMembersMarkInfo: function (key) {\r\n return _this.marks.members.getMarkInfo(key);\r\n },\r\n getParameterMarkInfo: function (methodKey) {\r\n return _this.marks.params.getMarkInfo(methodKey);\r\n }\r\n };\r\n };\r\n return ClassMetadata;\r\n}());\n\nfunction Bind(aliasName) {\r\n return function (target) {\r\n var metadata = MetadataFactory.getMetadata(target, ClassMetadata);\r\n GlobalMetadata.getInstance().recordClassAlias(aliasName, metadata);\r\n };\r\n}\n\nfunction Scope(scope) {\r\n return function (target) {\r\n var metadata = MetadataFactory.getMetadata(target, ClassMetadata);\r\n metadata.setScope(scope);\r\n };\r\n}\n\nfunction Inject(constr) {\r\n return function (target, propertyKey, parameterIndex) {\r\n if (typeof target === 'function' && typeof parameterIndex === 'number') {\r\n var targetConstr = target;\r\n var classMetadata = MetadataFactory.getMetadata(targetConstr, ClassMetadata);\r\n classMetadata.setConstructorParameterType(parameterIndex, constr);\r\n }\r\n else if (typeof target === 'object' && target !== null && propertyKey !== undefined) {\r\n var metadata = MetadataFactory.getMetadata(target.constructor, ClassMetadata);\r\n metadata.recordPropertyType(propertyKey, constr);\r\n }\r\n };\r\n}\n\nfunction Factory(identifier, injections) {\r\n if (injections === void 0) { injections = []; }\r\n return function (target, propertyKey) {\r\n var metadata = GlobalMetadata.getInstance();\r\n var clazz = target.constructor;\r\n metadata.recordFactory(identifier, function (container, owner) {\r\n var instance = container.getInstance(clazz, owner);\r\n var func = instance[propertyKey];\r\n if (typeof func === 'function') {\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var instance = container.getInstance(clazz);\r\n return func.apply(instance, args);\r\n };\r\n }\r\n else {\r\n return function () { return func; };\r\n }\r\n }, injections);\r\n };\r\n}\n\nvar Lifecycle;\r\n(function (Lifecycle) {\r\n Lifecycle[\"PRE_INJECT\"] = \"ioc-scope:pre-inject\";\r\n Lifecycle[\"POST_INJECT\"] = \"ioc-scope:post-inject\";\r\n Lifecycle[\"PRE_DESTROY\"] = \"ioc-scope:pre-destroy\";\r\n})(Lifecycle || (Lifecycle = {}));\n\n/**\r\n * Urn calls the methods annotated with @PostInject only once, just after the injection of properties.\r\n * @annotation\r\n */\r\nvar LifecycleDecorator = function (lifecycle) {\r\n return function (target, propertyKey) {\r\n var metadata = MetadataFactory.getMetadata(target.constructor, ClassMetadata);\r\n metadata.addLifecycleMethod(propertyKey, lifecycle);\r\n };\r\n};\n\n/**\r\n * Urn calls the methods annotated with @PostInject only once, just after the injection of properties.\r\n * @annotation\r\n */\r\nvar PostInject = function () { return LifecycleDecorator(Lifecycle.POST_INJECT); };\n\n/**\r\n * Urn calls the methods annotated with @PostInject only once, just after the injection of properties.\r\n * @annotation\r\n */\r\nvar PreInject = function () { return LifecycleDecorator(Lifecycle.PRE_INJECT); };\n\nvar PreDestroy = function () { return LifecycleDecorator(Lifecycle.PRE_DESTROY); };\n\nexports.ExpressionType = void 0;\r\n(function (ExpressionType) {\r\n ExpressionType[\"ENV\"] = \"inject-environment-variables\";\r\n ExpressionType[\"JSON_PATH\"] = \"inject-json-data\";\r\n ExpressionType[\"ARGV\"] = \"inject-argv\";\r\n})(exports.ExpressionType || (exports.ExpressionType = {}));\n\nvar isNodeJs = (function () {\r\n try {\r\n // eslint-disable-next-line @typescript-eslint/no-var-requires\r\n var os = require('os');\r\n os.arch();\r\n return true;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n})();\n\nfunction Value(expression, type, externalArgs) {\r\n switch (type) {\r\n case exports.ExpressionType.ENV:\r\n case exports.ExpressionType.ARGV:\r\n if (!isNodeJs) {\r\n throw new Error(\"The \\\"\".concat(type, \"\\\" evaluator only supports nodejs environment!\"));\r\n }\r\n }\r\n return function (target, propertyKey) {\r\n var metadata = MetadataFactory.getMetadata(target.constructor, ClassMetadata);\r\n var value_symbol = Symbol('');\r\n metadata.recordPropertyType(propertyKey, value_symbol);\r\n GlobalMetadata.getInstance().recordFactory(value_symbol, function (container, owner) {\r\n return function () {\r\n return container.evaluate(expression, {\r\n owner: owner,\r\n type: type,\r\n externalArgs: externalArgs\r\n });\r\n };\r\n });\r\n };\r\n}\n\nfunction Mark(key, value) {\r\n if (value === void 0) { value = true; }\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (args.length === 1) {\r\n // class decorator\r\n var metadata = MetadataFactory.getMetadata(args[0], ClassMetadata);\r\n metadata.marker().ctor(key, value);\r\n }\r\n else if (args.length === 2) {\r\n // property decorator\r\n var _a = __read(args, 2), prototype = _a[0], propertyKey = _a[1];\r\n var metadata = MetadataFactory.getMetadata(prototype.constructor, ClassMetadata);\r\n metadata.marker().member(propertyKey).mark(key, value);\r\n }\r\n else if (args.length === 3 && typeof args[2] === 'number') {\r\n // parameter decorator\r\n var _b = __read(args, 3), prototype = _b[0], propertyKey = _b[1], index = _b[2];\r\n var metadata = MetadataFactory.getMetadata(prototype.constructor, ClassMetadata);\r\n metadata.marker().parameter(propertyKey, index).mark(key, value);\r\n }\r\n else {\r\n // method decorator\r\n var _c = __read(args, 2), prototype = _c[0], propertyKey = _c[1];\r\n var metadata = MetadataFactory.getMetadata(prototype.constructor, ClassMetadata);\r\n metadata.marker().member(propertyKey).mark(key, value);\r\n }\r\n };\r\n}\n\nvar EventEmitter = /** @class */ (function () {\r\n function EventEmitter() {\r\n this.events = new Map();\r\n }\r\n EventEmitter.prototype.on = function (type, listener) {\r\n var listeners = this.events.get(type);\r\n if (listeners) {\r\n if (listeners.indexOf(listener) == -1) {\r\n listeners.push(listener);\r\n }\r\n }\r\n else {\r\n listeners = [listener];\r\n this.events.set(type, listeners);\r\n }\r\n return function () {\r\n var ls = listeners;\r\n var index = ls.indexOf(listener);\r\n if (index > -1) {\r\n ls.splice(index, 1);\r\n }\r\n };\r\n };\r\n EventEmitter.prototype.emit = function (type) {\r\n var _a;\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n (_a = this.events.get(type)) === null || _a === void 0 ? void 0 : _a.forEach(function (fn) {\r\n fn.apply(void 0, __spreadArray([], __read(args), false));\r\n });\r\n };\r\n return EventEmitter;\r\n}());\n\nfunction hasArgs(options) {\r\n return 'args' in options;\r\n}\r\nfunction hasInjections(options) {\r\n return 'injections' in options;\r\n}\n\nvar index_cjs = {};\n\nvar lazyProp;\nvar lazyMember;\nObject.defineProperty(index_cjs,\"__esModule\",{value:!0});\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nvar e=function(){return e=Object.assign||function(e){for(var t,r=1,n=arguments.length;r other.serialNo ? -1 : this.serialNo < other.serialNo ? 1 : 0;\r\n };\r\n return ComponentInstanceWrapper;\r\n}());\n\nfunction invokePreDestroy(instance) {\r\n var clazz = instance === null || instance === void 0 ? void 0 : instance.constructor;\r\n if (!clazz) {\r\n return;\r\n }\r\n var metadata = MetadataFactory.getMetadata(clazz, ClassMetadata);\r\n var preDestroyMethods = metadata.getMethods(Lifecycle.PRE_DESTROY);\r\n preDestroyMethods.forEach(function (methodName) {\r\n var method = clazz.prototype[methodName];\r\n if (typeof method === 'function') {\r\n method.apply(instance);\r\n }\r\n });\r\n}\n\nvar SingletonInstanceResolution = /** @class */ (function () {\r\n function SingletonInstanceResolution() {\r\n this.INSTANCE_MAP = new Map();\r\n }\r\n SingletonInstanceResolution.prototype.getInstance = function (options) {\r\n var _a;\r\n return (_a = this.INSTANCE_MAP.get(options.identifier)) === null || _a === void 0 ? void 0 : _a.instance;\r\n };\r\n SingletonInstanceResolution.prototype.saveInstance = function (options) {\r\n this.INSTANCE_MAP.set(options.identifier, new ComponentInstanceWrapper(options.instance));\r\n };\r\n SingletonInstanceResolution.prototype.shouldGenerate = function (options) {\r\n return !this.INSTANCE_MAP.has(options.identifier);\r\n };\r\n SingletonInstanceResolution.prototype.destroy = function () {\r\n var instanceWrappers = Array.from(this.INSTANCE_MAP.values());\r\n instanceWrappers.sort(function (a, b) { return a.compareTo(b); });\r\n instanceWrappers.forEach(function (instanceWrapper) {\r\n invokePreDestroy(instanceWrapper.instance);\r\n });\r\n this.INSTANCE_MAP.clear();\r\n };\r\n return SingletonInstanceResolution;\r\n}());\n\nvar SINGLETON_INSTANCE_SINGLETON = new SingletonInstanceResolution();\r\nvar GlobalSharedInstanceResolution = /** @class */ (function () {\r\n function GlobalSharedInstanceResolution() {\r\n }\r\n GlobalSharedInstanceResolution.prototype.getInstance = function (options) {\r\n return SINGLETON_INSTANCE_SINGLETON.getInstance(options);\r\n };\r\n GlobalSharedInstanceResolution.prototype.saveInstance = function (options) {\r\n SINGLETON_INSTANCE_SINGLETON.saveInstance(options);\r\n };\r\n GlobalSharedInstanceResolution.prototype.shouldGenerate = function (options) {\r\n return SINGLETON_INSTANCE_SINGLETON.shouldGenerate(options);\r\n };\r\n GlobalSharedInstanceResolution.prototype.destroy = function () {\r\n // PASS;\r\n };\r\n return GlobalSharedInstanceResolution;\r\n}());\n\nvar TransientInstanceResolution = /** @class */ (function () {\r\n function TransientInstanceResolution() {\r\n this.instances = new Set();\r\n }\r\n TransientInstanceResolution.prototype.shouldGenerate = function () {\r\n return true;\r\n };\r\n TransientInstanceResolution.prototype.getInstance = function () {\r\n return;\r\n };\r\n TransientInstanceResolution.prototype.saveInstance = function (options) {\r\n this.instances.add(options.instance);\r\n };\r\n TransientInstanceResolution.prototype.destroy = function () {\r\n this.instances.forEach(function (it) {\r\n if (!it) {\r\n return;\r\n }\r\n invokePreDestroy(it);\r\n });\r\n this.instances.clear();\r\n };\r\n return TransientInstanceResolution;\r\n}());\n\nvar JSONDataEvaluator = /** @class */ (function () {\r\n function JSONDataEvaluator() {\r\n this.namespaceDataMap = new Map();\r\n }\r\n JSONDataEvaluator.prototype.eval = function (context, expression) {\r\n var colonIndex = expression.indexOf(':');\r\n if (colonIndex === -1) {\r\n throw new Error('Incorrect expression, namespace not specified');\r\n }\r\n var namespace = expression.substring(0, colonIndex);\r\n var exp = expression.substring(colonIndex + 1);\r\n if (!this.namespaceDataMap.has(namespace)) {\r\n throw new Error(\"Incorrect expression: namespace not recorded: \\\"\".concat(namespace, \"\\\"\"));\r\n }\r\n var data = this.namespaceDataMap.get(namespace);\r\n return runExpression(exp, data);\r\n };\r\n JSONDataEvaluator.prototype.recordData = function (namespace, data) {\r\n this.namespaceDataMap.set(namespace, data);\r\n };\r\n return JSONDataEvaluator;\r\n}());\r\nfunction runExpression(expression, rootContext) {\r\n var fn = compileExpression(expression);\r\n return fn(rootContext);\r\n}\r\nfunction compileExpression(expression) {\r\n if (expression.indexOf(',') > -1) {\r\n throw new Error(\"Incorrect expression syntax, The ',' is not allowed in expression: \\\"\".concat(expression, \"\\\"\"));\r\n }\r\n if (expression.length > 120) {\r\n throw new Error(\"Incorrect expression syntax, expression length cannot be greater than 120, but actual: \".concat(expression.length));\r\n }\r\n if (/\\(.*?\\)/.test(expression)) {\r\n throw new Error(\"Incorrect expression syntax, parentheses are not allowed in expression: \\\"\".concat(expression, \"\\\"\"));\r\n }\r\n expression = expression.trim();\r\n if (expression === '') {\r\n return function (root) { return root; };\r\n }\r\n var rootVarName = varName('context');\r\n return new Function(rootVarName, \"\\n \\\"use strict\\\";\\n try {\\n return \".concat(rootVarName, \".\").concat(expression, \";\\n } catch(error) { throw error }\\n \"));\r\n}\r\nvar VAR_SEQUENCE = Date.now();\r\nfunction varName(prefix) {\r\n return prefix + '' + (VAR_SEQUENCE++).toString(16);\r\n}\n\nvar EnvironmentEvaluator = /** @class */ (function () {\r\n function EnvironmentEvaluator() {\r\n }\r\n EnvironmentEvaluator.prototype.eval = function (context, expression) {\r\n return process.env[expression];\r\n };\r\n return EnvironmentEvaluator;\r\n}());\n\nvar ArgvEvaluator = /** @class */ (function () {\r\n function ArgvEvaluator() {\r\n }\r\n ArgvEvaluator.prototype.eval = function (context, expression, args) {\r\n var argv = args || process.argv;\r\n // eslint-disable-next-line @typescript-eslint/no-var-requires\r\n var minimist = require('minimist');\r\n var map = minimist(argv);\r\n return map[expression];\r\n };\r\n return ArgvEvaluator;\r\n}());\n\nvar Advice;\r\n(function (Advice) {\r\n Advice[Advice[\"Before\"] = 0] = \"Before\";\r\n Advice[Advice[\"After\"] = 1] = \"After\";\r\n Advice[Advice[\"Around\"] = 2] = \"Around\";\r\n Advice[Advice[\"AfterReturn\"] = 3] = \"AfterReturn\";\r\n Advice[Advice[\"Thrown\"] = 4] = \"Thrown\";\r\n Advice[Advice[\"Finally\"] = 5] = \"Finally\";\r\n})(Advice || (Advice = {}));\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\nvar AspectUtils = /** @class */ (function () {\r\n function AspectUtils(fn) {\r\n this.fn = fn;\r\n this.beforeHooks = [];\r\n this.afterHooks = [];\r\n this.thrownHooks = [];\r\n this.finallyHooks = [];\r\n this.afterReturnHooks = [];\r\n this.aroundHooks = [];\r\n }\r\n AspectUtils.prototype.append = function (advice, hook) {\r\n var hooksArray;\r\n switch (advice) {\r\n case Advice.Before:\r\n hooksArray = this.beforeHooks;\r\n break;\r\n case Advice.After:\r\n hooksArray = this.afterHooks;\r\n break;\r\n case Advice.Thrown:\r\n hooksArray = this.thrownHooks;\r\n break;\r\n case Advice.Finally:\r\n hooksArray = this.finallyHooks;\r\n break;\r\n case Advice.AfterReturn:\r\n hooksArray = this.afterReturnHooks;\r\n break;\r\n case Advice.Around:\r\n hooksArray = this.aroundHooks;\r\n break;\r\n }\r\n if (hooksArray) {\r\n hooksArray.push(hook);\r\n }\r\n };\r\n AspectUtils.prototype.extract = function () {\r\n var _a = this, aroundHooks = _a.aroundHooks, beforeHooks = _a.beforeHooks, afterHooks = _a.afterHooks, afterReturnHooks = _a.afterReturnHooks, finallyHooks = _a.finallyHooks, thrownHooks = _a.thrownHooks;\r\n var fn = aroundHooks.reduceRight(function (prev, next) {\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return next.call(this, prev, args);\r\n };\r\n }, this.fn);\r\n return function () {\r\n var _this = this;\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n beforeHooks.forEach(function (hook) {\r\n hook.call(_this, args);\r\n });\r\n var invoke = function (onError, onFinally, onAfter) {\r\n var returnValue;\r\n var isPromise = false;\r\n try {\r\n returnValue = fn.apply(_this, args);\r\n if (returnValue instanceof Promise) {\r\n isPromise = true;\r\n returnValue = returnValue.catch(onError).finally(onFinally);\r\n }\r\n }\r\n catch (error) {\r\n onError(error);\r\n }\r\n finally {\r\n if (!isPromise) {\r\n onFinally();\r\n }\r\n }\r\n if (isPromise) {\r\n return returnValue.then(function (value) {\r\n return onAfter(value);\r\n });\r\n }\r\n else {\r\n return onAfter(returnValue);\r\n }\r\n };\r\n return invoke(function (error) {\r\n if (thrownHooks.length > 0) {\r\n thrownHooks.forEach(function (hook) { return hook.call(_this, error, args); });\r\n }\r\n else {\r\n throw error;\r\n }\r\n }, function () {\r\n finallyHooks.forEach(function (hook) { return hook.call(_this, args); });\r\n }, function (value) {\r\n afterHooks.forEach(function (hook) {\r\n hook.call(_this, args);\r\n });\r\n return afterReturnHooks.reduce(function (retVal, hook) {\r\n return hook.call(_this, retVal, args);\r\n }, value);\r\n });\r\n };\r\n };\r\n return AspectUtils;\r\n}());\n\nfunction createAspect(appCtx, target, methodName, methodFunc, metadata) {\r\n var createAspectCtx = function (advice, args, returnValue, error) {\r\n if (returnValue === void 0) { returnValue = null; }\r\n if (error === void 0) { error = null; }\r\n return {\r\n target: target,\r\n methodName: methodName,\r\n arguments: args,\r\n returnValue: returnValue,\r\n error: error,\r\n advice: advice\r\n };\r\n };\r\n var aspectUtils = new AspectUtils(methodFunc);\r\n var ClassToInstance = function (AspectClass) { return appCtx.getInstance(AspectClass); };\r\n var beforeAdviceAspects = metadata.getAspectsOf(methodName, Advice.Before).map(ClassToInstance);\r\n var afterAdviceAspects = metadata.getAspectsOf(methodName, Advice.After).map(ClassToInstance);\r\n var tryCatchAdviceAspects = metadata.getAspectsOf(methodName, Advice.Thrown).map(ClassToInstance);\r\n var tryFinallyAdviceAspects = metadata.getAspectsOf(methodName, Advice.Finally).map(ClassToInstance);\r\n var afterReturnAdviceAspects = metadata.getAspectsOf(methodName, Advice.AfterReturn).map(ClassToInstance);\r\n var aroundAdviceAspects = metadata.getAspectsOf(methodName, Advice.Around).map(ClassToInstance);\r\n if (beforeAdviceAspects.length > 0) {\r\n aspectUtils.append(Advice.Before, function (args) {\r\n var joinPoint = createAspectCtx(Advice.Before, args);\r\n beforeAdviceAspects.forEach(function (aspect) {\r\n aspect.execute(joinPoint);\r\n });\r\n });\r\n }\r\n if (afterAdviceAspects.length > 0) {\r\n aspectUtils.append(Advice.After, function (args) {\r\n var joinPoint = createAspectCtx(Advice.After, args);\r\n afterAdviceAspects.forEach(function (aspect) {\r\n aspect.execute(joinPoint);\r\n });\r\n });\r\n }\r\n if (tryCatchAdviceAspects.length > 0) {\r\n aspectUtils.append(Advice.Thrown, function (error, args) {\r\n var joinPoint = createAspectCtx(Advice.Thrown, args, null, error);\r\n tryCatchAdviceAspects.forEach(function (aspect) {\r\n aspect.execute(joinPoint);\r\n });\r\n });\r\n }\r\n if (tryFinallyAdviceAspects.length > 0) {\r\n aspectUtils.append(Advice.Finally, function (args) {\r\n var joinPoint = createAspectCtx(Advice.Finally, args);\r\n tryFinallyAdviceAspects.forEach(function (aspect) {\r\n aspect.execute(joinPoint);\r\n });\r\n });\r\n }\r\n if (afterReturnAdviceAspects.length > 0) {\r\n aspectUtils.append(Advice.AfterReturn, function (returnValue, args) {\r\n return afterReturnAdviceAspects.reduce(function (prevReturnValue, aspect) {\r\n var joinPoint = createAspectCtx(Advice.AfterReturn, args, returnValue);\r\n return aspect.execute(joinPoint);\r\n }, returnValue);\r\n });\r\n }\r\n if (aroundAdviceAspects.length > 0) {\r\n aroundAdviceAspects.forEach(function (aspect) {\r\n aspectUtils.append(Advice.Around, function (originFn, args) {\r\n var joinPoint = createAspectCtx(Advice.Around, args, null);\r\n joinPoint.proceed = function (jpArgs) {\r\n if (jpArgs === void 0) { jpArgs = args; }\r\n return originFn(jpArgs);\r\n };\r\n return aspect.execute(joinPoint);\r\n });\r\n });\r\n }\r\n return aspectUtils.extract();\r\n}\n\nvar AOPClassMetadata = /** @class */ (function () {\r\n function AOPClassMetadata() {\r\n this.aspectMap = createDefaultValueMap(function () { return createDefaultValueMap(function () { return []; }); });\r\n }\r\n AOPClassMetadata.getReflectKey = function () {\r\n return 'aop:use-aspect-metadata';\r\n };\r\n AOPClassMetadata.prototype.init = function () {\r\n // IGNORE\r\n };\r\n AOPClassMetadata.prototype.append = function (methodName, advice, aspects) {\r\n var adviceAspectMap = this.aspectMap.get(methodName);\r\n var exitingAspectArray = adviceAspectMap.get(advice);\r\n exitingAspectArray.push.apply(exitingAspectArray, __spreadArray([], __read(aspects), false));\r\n };\r\n AOPClassMetadata.prototype.reader = function () {\r\n var _this = this;\r\n return {\r\n getAspects: function () {\r\n return _this.aspectMap;\r\n },\r\n getAspectsOf: function (methodName, advice) {\r\n return _this.aspectMap.get(methodName).get(advice);\r\n }\r\n };\r\n };\r\n return AOPClassMetadata;\r\n}());\n\nvar AOPInstantiationAwareProcessor = /** @class */ (function () {\r\n function AOPInstantiationAwareProcessor() {\r\n }\r\n AOPInstantiationAwareProcessor.create = function (appCtx) {\r\n return /** @class */ (function (_super) {\r\n __extends(class_1, _super);\r\n function class_1() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.appCtx = appCtx;\r\n return _this;\r\n }\r\n return class_1;\r\n }(AOPInstantiationAwareProcessor));\r\n };\r\n AOPInstantiationAwareProcessor.prototype.afterInstantiation = function (instance) {\r\n var _this = this;\r\n var clazz = instance.constructor;\r\n var useAspectMetadata = MetadataFactory.getMetadata(clazz, AOPClassMetadata);\r\n var useAspectMetadataReader = useAspectMetadata.reader();\r\n var useAspectsMap = useAspectMetadataReader.getAspects();\r\n if (useAspectsMap.size === 0) {\r\n return instance;\r\n }\r\n var aspectStoreMap = new WeakMap();\r\n aspectStoreMap.set(instance, new Map());\r\n var proxyResult = new Proxy(instance, {\r\n get: function (target, prop) {\r\n var originValue = target[prop];\r\n if (prop in target && typeof originValue === 'function') {\r\n var aspectMap = aspectStoreMap.get(instance);\r\n if (!aspectMap) {\r\n return originValue;\r\n }\r\n if (aspectMap.has(prop)) {\r\n return aspectMap.get(prop);\r\n }\r\n var aspectFn = createAspect(_this.appCtx, target, prop, originValue, useAspectMetadataReader);\r\n aspectMap.set(prop, aspectFn);\r\n return aspectFn;\r\n }\r\n return originValue;\r\n }\r\n });\r\n return proxyResult;\r\n };\r\n return AOPInstantiationAwareProcessor;\r\n}());\n\nvar InstantiationAwareProcessorManager = /** @class */ (function () {\r\n function InstantiationAwareProcessorManager(container) {\r\n this.container = container;\r\n this.instAwareProcessorClasses = new Set();\r\n }\r\n InstantiationAwareProcessorManager.prototype.appendInstAwareProcessorClass = function (instAwareProcessorClass) {\r\n this.instAwareProcessorClasses.add(instAwareProcessorClass);\r\n };\r\n InstantiationAwareProcessorManager.prototype.appendInstAwareProcessorClasses = function (instAwareProcessorClasses) {\r\n var _this = this;\r\n instAwareProcessorClasses.forEach(function (it) {\r\n _this.instAwareProcessorClasses.add(it);\r\n });\r\n };\r\n InstantiationAwareProcessorManager.prototype.beforeInstantiation = function (componentClass, args) {\r\n var instAwareProcessors = this.instAwareProcessorInstances;\r\n var instance;\r\n instAwareProcessors.some(function (processor) {\r\n if (!processor.beforeInstantiation) {\r\n return false;\r\n }\r\n instance = processor.beforeInstantiation(componentClass, args);\r\n return !!instance;\r\n });\r\n return instance;\r\n };\r\n InstantiationAwareProcessorManager.prototype.afterInstantiation = function (instance) {\r\n return this.instAwareProcessorInstances.reduce(function (instance, processor) {\r\n if (processor.afterInstantiation) {\r\n var result = processor.afterInstantiation(instance);\r\n if (!!result) {\r\n return result;\r\n }\r\n }\r\n return instance;\r\n }, instance);\r\n };\r\n InstantiationAwareProcessorManager.prototype.isInstAwareProcessorClass = function (cls) {\r\n var classes = this.getInstAwareProcessorClasses();\r\n return classes.indexOf(cls) > -1;\r\n };\r\n InstantiationAwareProcessorManager.prototype.getInstAwareProcessorClasses = function () {\r\n var globalInstAwareProcessorClasses = GlobalMetadata.getInstance().reader().getInstAwareProcessorClasses();\r\n return globalInstAwareProcessorClasses.concat(Array.from(this.instAwareProcessorClasses));\r\n };\r\n __decorate([\r\n lazyMember({\r\n evaluate: function (instance) {\r\n var globalInstAwareProcessorClasses = GlobalMetadata.getInstance().reader().getInstAwareProcessorClasses();\r\n var instAwareProcessorClasses = globalInstAwareProcessorClasses.concat(Array.from(instance.instAwareProcessorClasses));\r\n return instAwareProcessorClasses.map(function (it) { return instance.container.getInstance(it); });\r\n },\r\n resetBy: [\r\n function (instance) { return instance.instAwareProcessorClasses.size; },\r\n function () {\r\n var globalInstAwareProcessorClasses = GlobalMetadata.getInstance().reader().getInstAwareProcessorClasses();\r\n return globalInstAwareProcessorClasses.length;\r\n }\r\n ]\r\n }),\r\n __metadata(\"design:type\", Array)\r\n ], InstantiationAwareProcessorManager.prototype, \"instAwareProcessorInstances\", void 0);\r\n return InstantiationAwareProcessorManager;\r\n}());\n\nvar PRE_DESTROY_EVENT_KEY = 'container:event:pre-destroy';\r\nvar ApplicationContext = /** @class */ (function () {\r\n function ApplicationContext(options) {\r\n if (options === void 0) { options = {}; }\r\n this.resolutions = new Map();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n this.factories = new Map();\r\n this.evaluatorClasses = new Map();\r\n this.eventEmitter = new EventEmitter();\r\n this.defaultScope = options.defaultScope || exports.InstanceScope.SINGLETON;\r\n this.lazyMode = options.lazyMode === undefined ? true : options.lazyMode;\r\n this.registerInstanceScopeResolution(exports.InstanceScope.SINGLETON, SingletonInstanceResolution);\r\n this.registerInstanceScopeResolution(exports.InstanceScope.GLOBAL_SHARED_SINGLETON, GlobalSharedInstanceResolution);\r\n this.registerInstanceScopeResolution(exports.InstanceScope.TRANSIENT, TransientInstanceResolution);\r\n this.registerEvaluator(exports.ExpressionType.JSON_PATH, JSONDataEvaluator);\r\n if (isNodeJs) {\r\n this.registerEvaluator(exports.ExpressionType.ENV, EnvironmentEvaluator);\r\n this.registerEvaluator(exports.ExpressionType.ARGV, ArgvEvaluator);\r\n }\r\n this.instAwareProcessorManager = new InstantiationAwareProcessorManager(this);\r\n this.registerInstAwareProcessor(AOPInstantiationAwareProcessor.create(this));\r\n }\r\n ApplicationContext.prototype.getInstance = function (symbol, owner) {\r\n if (symbol === ApplicationContext) {\r\n return this;\r\n }\r\n if (typeof symbol === 'string' || typeof symbol === 'symbol') {\r\n var factoryDef = this.getFactory(symbol);\r\n if (factoryDef) {\r\n var factory = factoryDef.factory, injections = factoryDef.injections;\r\n var fn = factory(this, owner);\r\n var result = this.invoke(fn, {\r\n injections: injections\r\n });\r\n var constr = result === null || result === void 0 ? void 0 : result.constructor;\r\n if (typeof constr === 'function') {\r\n var componentClass_1 = constr;\r\n var resolver = new LifecycleManager(componentClass_1, this);\r\n var isInstAwareProcessor = this.instAwareProcessorManager.isInstAwareProcessorClass(componentClass_1);\r\n resolver.invokePreInjectMethod(result);\r\n if (!isInstAwareProcessor) {\r\n result = this.instAwareProcessorManager.afterInstantiation(result);\r\n }\r\n resolver.invokePostInjectMethod(result);\r\n }\r\n return result;\r\n }\r\n else {\r\n var classMetadata = GlobalMetadata.getInstance().reader().getClassMetadata(symbol);\r\n if (!classMetadata) {\r\n throw new Error('');\r\n }\r\n else {\r\n symbol = classMetadata.reader().getClass();\r\n }\r\n }\r\n }\r\n var componentClass = symbol;\r\n var reader = ClassMetadata.getInstance(componentClass).reader();\r\n var scope = reader.getScope();\r\n var resolution = (this.resolutions.get(scope) || this.resolutions.get(this.defaultScope));\r\n var getInstanceOptions = {\r\n identifier: componentClass,\r\n owner: owner,\r\n ownerPropertyKey: undefined\r\n };\r\n if (resolution.shouldGenerate(getInstanceOptions)) {\r\n var builder = this.createComponentInstanceBuilder(componentClass);\r\n var instance = builder.build();\r\n var saveInstanceOptions = __assign(__assign({}, getInstanceOptions), { instance: instance });\r\n resolution.saveInstance(saveInstanceOptions);\r\n return instance;\r\n }\r\n else {\r\n return resolution.getInstance(getInstanceOptions);\r\n }\r\n };\r\n ApplicationContext.prototype.createComponentInstanceBuilder = function (componentClass) {\r\n var builder = new ComponentInstanceBuilder(componentClass, this, this.instAwareProcessorManager);\r\n builder.appendLazyMode(this.lazyMode);\r\n return builder;\r\n };\r\n ApplicationContext.prototype.getFactory = function (key) {\r\n var factory = GlobalMetadata.getInstance().reader().getComponentFactory(key);\r\n if (!factory) {\r\n return this.factories.get(key);\r\n }\r\n return factory;\r\n };\r\n ApplicationContext.prototype.bindFactory = function (symbol, factory, injections) {\r\n this.factories.set(symbol, new ServiceFactoryDef(factory, injections));\r\n };\r\n ApplicationContext.prototype.invoke = function (func, options) {\r\n var _this = this;\r\n if (options === void 0) { options = {}; }\r\n var fn;\r\n if (arguments.length > 1) {\r\n fn = func.bind(options.context);\r\n }\r\n else {\r\n fn = func;\r\n }\r\n if (hasArgs(options)) {\r\n return options.args ? fn.apply(void 0, __spreadArray([], __read(options.args), false)) : fn();\r\n }\r\n if (hasInjections(options)) {\r\n var args_1 = options.injections ? options.injections.map(function (it) { return _this.getInstance(it); }) : [];\r\n return args_1.length > 0 ? fn.apply(void 0, __spreadArray([], __read(args_1), false)) : fn();\r\n }\r\n var metadata = MetadataFactory.getMetadata(fn, FunctionMetadata).reader();\r\n var parameterIdentifiers = metadata.getParameters();\r\n var args = parameterIdentifiers.map(function (identifier) {\r\n return _this.getInstance(identifier);\r\n });\r\n return fn.apply(void 0, __spreadArray([], __read(args), false));\r\n };\r\n ApplicationContext.prototype.destroy = function () {\r\n this.eventEmitter.emit(PRE_DESTROY_EVENT_KEY);\r\n this.resolutions.forEach(function (it) {\r\n it.destroy();\r\n });\r\n };\r\n ApplicationContext.prototype.evaluate = function (expression, options) {\r\n var evaluatorClass = this.evaluatorClasses.get(options.type);\r\n if (!evaluatorClass) {\r\n throw new TypeError(\"Unknown evaluator name: \".concat(options.type));\r\n }\r\n var evaluator = this.getInstance(evaluatorClass);\r\n return evaluator.eval(this, expression, options.externalArgs);\r\n };\r\n ApplicationContext.prototype.recordJSONData = function (namespace, data) {\r\n var evaluator = this.getInstance(JSONDataEvaluator);\r\n evaluator.recordData(namespace, data);\r\n };\r\n ApplicationContext.prototype.bindInstance = function (identifier, instance) {\r\n var resolution = this.resolutions.get(exports.InstanceScope.SINGLETON);\r\n resolution === null || resolution === void 0 ? void 0 : resolution.saveInstance({\r\n identifier: identifier,\r\n instance: instance\r\n });\r\n };\r\n ApplicationContext.prototype.registerInstanceScopeResolution = function (scope, resolutionConstructor, constructorArgs) {\r\n this.resolutions.set(scope, new (resolutionConstructor.bind.apply(resolutionConstructor, __spreadArray([void 0], __read((constructorArgs || [])), false)))());\r\n };\r\n ApplicationContext.prototype.registerEvaluator = function (name, evaluatorClass) {\r\n var metadata = MetadataFactory.getMetadata(evaluatorClass, ClassMetadata);\r\n metadata.setScope(exports.InstanceScope.SINGLETON);\r\n this.evaluatorClasses.set(name, evaluatorClass);\r\n };\r\n ApplicationContext.prototype.registerInstAwareProcessor = function (clazz) {\r\n this.instAwareProcessorManager.appendInstAwareProcessorClass(clazz);\r\n };\r\n ApplicationContext.prototype.onPreDestroy = function (listener) {\r\n return this.eventEmitter.on(PRE_DESTROY_EVENT_KEY, listener);\r\n };\r\n ApplicationContext.prototype.getClassMetadata = function (ctor) {\r\n return ClassMetadata.getInstance(ctor).reader();\r\n };\r\n return ApplicationContext;\r\n}());\n\nexports.ApplicationContext = ApplicationContext;\nexports.Bind = Bind;\nexports.Factory = Factory;\nexports.Inject = Inject;\nexports.Mark = Mark;\nexports.PostInject = PostInject;\nexports.PreDestroy = PreDestroy;\nexports.PreInject = PreInject;\nexports.Scope = Scope;\nexports.Value = Value;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzLmpzIiwic291cmNlcyI6WyIuLi9zcmMvZm91bmRhdGlvbi9TZXJ2aWNlRmFjdG9yeURlZi50cyIsIi4uL3NyYy9tZXRhZGF0YS9HbG9iYWxNZXRhZGF0YS50cyIsIi4uL3NyYy9mb3VuZGF0aW9uL0luc3RhbmNlU2NvcGUudHMiLCIuLi9zcmMvY29tbW9uL0RlZmF1bHRWYWx1ZU1hcC50cyIsIi4uL25vZGVfbW9kdWxlcy9yZWZsZWN0LW1ldGFkYXRhL1JlZmxlY3QuanMiLCIuLi9zcmMvbWV0YWRhdGEvTWV0YWRhdGFGYWN0b3J5LnRzIiwiLi4vc3JjL21ldGFkYXRhL0NsYXNzTWV0YWRhdGEudHMiLCIuLi9zcmMvZGVjb3JhdG9ycy9CaW5kLnRzIiwiLi4vc3JjL2RlY29yYXRvcnMvU2NvcGUudHMiLCIuLi9zcmMvZGVjb3JhdG9ycy9JbmplY3QudHMiLCIuLi9zcmMvZGVjb3JhdG9ycy9GYWN0b3J5LnRzIiwiLi4vc3JjL2ZvdW5kYXRpb24vTGlmZWN5Y2xlLnRzIiwiLi4vc3JjL2RlY29yYXRvcnMvTGlmZWN5Y2xlRGVjb3JhdG9yLnRzIiwiLi4vc3JjL2RlY29yYXRvcnMvUG9zdEluamVjdC50cyIsIi4uL3NyYy9kZWNvcmF0b3JzL1ByZUluamVjdC50cyIsIi4uL3NyYy9kZWNvcmF0b3JzL1ByZURlc3Ryb3kudHMiLCIuLi9zcmMvdHlwZXMvRXZhbHVhdGVPcHRpb25zLnRzIiwiLi4vc3JjL2NvbW1vbi9pc05vZGVKcy50cyIsIi4uL3NyYy9kZWNvcmF0b3JzL1ZhbHVlLnRzIiwiLi4vc3JjL2RlY29yYXRvcnMvTWFyay50cyIsIi4uL3NyYy9mb3VuZGF0aW9uL0V2ZW50RW1pdHRlci50cyIsIi4uL3NyYy9mb3VuZGF0aW9uL0ludm9rZUZ1bmN0aW9uT3B0aW9ucy50cyIsIi4uL25vZGVfbW9kdWxlcy9AdmdlcmJvdC9sYXp5L2Rpc3QvaW5kZXguY2pzLmpzIiwiLi4vc3JjL2ZvdW5kYXRpb24vTGlmZWN5Y2xlTWFuYWdlci50cyIsIi4uL3NyYy9mb3VuZGF0aW9uL0NvbXBvbmVudEluc3RhbmNlQnVpbGRlci50cyIsIi4uL3NyYy9tZXRhZGF0YS9GdW5jdGlvbk1ldGFkYXRhLnRzIiwiLi4vc3JjL2ZvdW5kYXRpb24vQ29tcG9uZW50SW5zdGFuY2VXcmFwcGVyLnRzIiwiLi4vc3JjL2NvbW1vbi9pbnZva2VQcmVEZXN0cm95LnRzIiwiLi4vc3JjL3Jlc29sdXRpb24vU2luZ2xldG9uSW5zdGFuY2VSZXNvbHV0aW9uLnRzIiwiLi4vc3JjL3Jlc29sdXRpb24vR2xvYmFsU2hhcmVkSW5zdGFuY2VSZXNvbHV0aW9uLnRzIiwiLi4vc3JjL3Jlc29sdXRpb24vVHJhbnNpZW50SW5zdGFuY2VSZXNvbHV0aW9uLnRzIiwiLi4vc3JjL2V2YWx1YXRvci9KU09ORGF0YUV2YWx1YXRvci50cyIsIi4uL3NyYy9ldmFsdWF0b3IvRW52aXJvbm1lbnRFdmFsdWF0b3IudHMiLCIuLi9zcmMvZXZhbHVhdG9yL0FyZ3ZFdmFsdWF0b3IudHMiLCIuLi9zcmMvYW9wL0FkdmljZS50cyIsIi4uL3NyYy9hb3AvQXNwZWN0VXRpbHMudHMiLCIuLi9zcmMvYW9wL2NyZWF0ZUFzcGVjdC50cyIsIi4uL3NyYy9hb3AvQU9QQ2xhc3NNZXRhZGF0YS50cyIsIi4uL3NyYy9hb3AvQU9QSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yLnRzIiwiLi4vc3JjL2ZvdW5kYXRpb24vSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yTWFuYWdlci50cyIsIi4uL3NyYy9mb3VuZGF0aW9uL0FwcGxpY2F0aW9uQ29udGV4dC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZXJ2aWNlRmFjdG9yeSB9IGZyb20gJy4uL3R5cGVzL1NlcnZpY2VGYWN0b3J5JztcbmltcG9ydCB7IElkZW50aWZpZXIgfSBmcm9tICcuLi90eXBlcy9JZGVudGlmaWVyJztcbmltcG9ydCB7IENsYXNzTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS9DbGFzc01ldGFkYXRhJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gJy4vQXBwbGljYXRpb25Db250ZXh0JztcblxuZXhwb3J0IGNsYXNzIFNlcnZpY2VGYWN0b3J5RGVmPFQ+IHtcbiAgICBzdGF0aWMgY3JlYXRlRnJvbUNsYXNzTWV0YWRhdGE8VD4obWV0YWRhdGE6IENsYXNzTWV0YWRhdGE8VD4pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXJ2aWNlRmFjdG9yeURlZigoY29udGFpbmVyOiBBcHBsaWNhdGlvbkNvbnRleHQsIG93bmVyOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG1ldGFkYXRhLnJlYWRlcigpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsYXp6ID0gcmVhZGVyLmdldENsYXNzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lci5nZXRJbnN0YW5jZShjbGF6eiwgb3duZXIpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBmYWN0b3J5OiBTZXJ2aWNlRmFjdG9yeTxULCB1bmtub3duPiwgcHVibGljIHJlYWRvbmx5IGluamVjdGlvbnM/OiBJZGVudGlmaWVyW10pIHt9XG59XG4iLCJpbXBvcnQgeyBNZXRhZGF0YSB9IGZyb20gJy4uL3R5cGVzL01ldGFkYXRhJztcbmltcG9ydCB7IElkZW50aWZpZXIgfSBmcm9tICcuLi90eXBlcy9JZGVudGlmaWVyJztcbmltcG9ydCB7IFNlcnZpY2VGYWN0b3J5IH0gZnJvbSAnLi4vdHlwZXMvU2VydmljZUZhY3RvcnknO1xuaW1wb3J0IHsgRmFjdG9yeUlkZW50aWZpZXIgfSBmcm9tICcuLi90eXBlcy9GYWN0b3J5SWRlbnRpZmllcic7XG5pbXBvcnQgeyBDbGFzc01ldGFkYXRhIH0gZnJvbSAnLi9DbGFzc01ldGFkYXRhJztcbmltcG9ydCB7IFNlcnZpY2VGYWN0b3J5RGVmIH0gZnJvbSAnLi4vZm91bmRhdGlvbi9TZXJ2aWNlRmFjdG9yeURlZic7XG5pbXBvcnQgeyBOZXdhYmxlIH0gZnJvbSAnLi4vdHlwZXMvTmV3YWJsZSc7XG5pbXBvcnQgeyBQYXJ0aWFsSW5zdEF3YXJlUHJvY2Vzc29yIH0gZnJvbSAnLi4vdHlwZXMvSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yJztcblxuZXhwb3J0IGludGVyZmFjZSBHbG9iYWxNZXRhZGF0YVJlYWRlciB7XG4gICAgZ2V0Q29tcG9uZW50RmFjdG9yeTxUPihrZXk6IEZhY3RvcnlJZGVudGlmaWVyKTogU2VydmljZUZhY3RvcnlEZWY8VD4gfCB1bmRlZmluZWQ7XG4gICAgZ2V0Q2xhc3NNZXRhZGF0YTxUPihhbGlhc05hbWU6IHN0cmluZyB8IHN5bWJvbCk6IENsYXNzTWV0YWRhdGE8VD4gfCB1bmRlZmluZWQ7XG4gICAgZ2V0SW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcygpOiBBcnJheTxOZXdhYmxlPFBhcnRpYWxJbnN0QXdhcmVQcm9jZXNzb3I+Pjtcbn1cbmV4cG9ydCBjbGFzcyBHbG9iYWxNZXRhZGF0YSBpbXBsZW1lbnRzIE1ldGFkYXRhPEdsb2JhbE1ldGFkYXRhUmVhZGVyLCB2b2lkPiB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSU5TVEFOQ0UgPSBuZXcgR2xvYmFsTWV0YWRhdGEoKTtcbiAgICBzdGF0aWMgZ2V0SW5zdGFuY2UoKSB7XG4gICAgICAgIHJldHVybiBHbG9iYWxNZXRhZGF0YS5JTlNUQU5DRTtcbiAgICB9XG4gICAgcHJpdmF0ZSBjbGFzc0FsaWFzTWV0YWRhdGFNYXAgPSBuZXcgTWFwPHN0cmluZyB8IHN5bWJvbCwgQ2xhc3NNZXRhZGF0YTx1bmtub3duPj4oKTtcbiAgICBwcml2YXRlIGNvbXBvbmVudEZhY3RvcmllcyA9IG5ldyBNYXA8RmFjdG9yeUlkZW50aWZpZXIsIFNlcnZpY2VGYWN0b3J5RGVmPHVua25vd24+PigpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvY2Vzc29yQ2xhc3NlczogU2V0PE5ld2FibGU8UGFydGlhbEluc3RBd2FyZVByb2Nlc3Nvcj4+ID0gbmV3IFNldCgpO1xuICAgIHJlY29yZEZhY3Rvcnk8VD4oc3ltYm9sOiBGYWN0b3J5SWRlbnRpZmllciwgZmFjdG9yeTogU2VydmljZUZhY3Rvcnk8VCwgdW5rbm93bj4sIGluamVjdGlvbnM/OiBJZGVudGlmaWVyW10pIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnRGYWN0b3JpZXMuc2V0KHN5bWJvbCwgbmV3IFNlcnZpY2VGYWN0b3J5RGVmKGZhY3RvcnksIGluamVjdGlvbnMpKTtcbiAgICB9XG4gICAgcmVjb3JkQ2xhc3NBbGlhczxUPihhbGlhc05hbWU6IHN0cmluZyB8IHN5bWJvbCwgbWV0YWRhdGE6IENsYXNzTWV0YWRhdGE8VD4pIHtcbiAgICAgICAgdGhpcy5jbGFzc0FsaWFzTWV0YWRhdGFNYXAuc2V0KGFsaWFzTmFtZSwgbWV0YWRhdGEpO1xuICAgIH1cbiAgICByZWNvcmRQcm9jZXNzb3JDbGFzcyhjbGF6ejogTmV3YWJsZTxQYXJ0aWFsSW5zdEF3YXJlUHJvY2Vzc29yPikge1xuICAgICAgICB0aGlzLnByb2Nlc3NvckNsYXNzZXMuYWRkKGNsYXp6KTtcbiAgICB9XG4gICAgaW5pdCgpIHtcbiAgICAgICAgLy8gUEFTUztcbiAgICB9XG4gICAgcmVhZGVyKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0Q29tcG9uZW50RmFjdG9yeTogPFQ+KGtleTogRmFjdG9yeUlkZW50aWZpZXIpOiBTZXJ2aWNlRmFjdG9yeURlZjxUPiB8IHVuZGVmaW5lZCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50RmFjdG9yaWVzLmdldChrZXkpIGFzIFNlcnZpY2VGYWN0b3J5RGVmPFQ+IHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldENsYXNzTWV0YWRhdGE6IDxUPihhbGlhc05hbWU6IHN0cmluZyB8IHN5bWJvbCk6IENsYXNzTWV0YWRhdGE8VD4gfCB1bmRlZmluZWQgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsYXNzQWxpYXNNZXRhZGF0YU1hcC5nZXQoYWxpYXNOYW1lKSBhcyBDbGFzc01ldGFkYXRhPFQ+IHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldEluc3RBd2FyZVByb2Nlc3NvckNsYXNzZXM6ICgpOiBBcnJheTxOZXdhYmxlPFBhcnRpYWxJbnN0QXdhcmVQcm9jZXNzb3I+PiA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5wcm9jZXNzb3JDbGFzc2VzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCJleHBvcnQgZW51bSBJbnN0YW5jZVNjb3BlIHtcbiAgICBTSU5HTEVUT04gPSAnaW9jLXJlc29sdXRpb246Y29udGFpbmVyLXNpbmdsZXRvbicsXG4gICAgVFJBTlNJRU5UID0gJ2lvYy1yZXNvbHV0aW9uOnRyYW5zaWVudCcsXG4gICAgR0xPQkFMX1NIQVJFRF9TSU5HTEVUT04gPSAnaW9jLXJlc29sdXRpb246Z2xvYmFsLXNoYXJlZC1zaW5nbGV0b24nXG59XG4iLCJleHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVmYXVsdFZhbHVlTWFwPEssIFY+KGZhY3Rvcnk6IChrZXk6IEspID0+IFYpIHtcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPEssIFY+KCk7XG4gICAgY29uc3Qgb3JpZ2luR2V0ID0gbWFwLmdldC5iaW5kKG1hcCk7XG4gICAgbWFwLmdldCA9IGZ1bmN0aW9uIChrZXk6IEspIHtcbiAgICAgICAgaWYgKG1hcC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbkdldChrZXkpIGFzIFY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBmYWN0b3J5KGtleSk7XG4gICAgICAgICAgICBtYXAuc2V0KGtleSwgZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiBtYXAuZ2V0KGtleSkgYXMgVjtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIG1hcCBhcyBEZWZhdWx0VmFsdWVNYXA8SywgVj47XG59XG5leHBvcnQgdHlwZSBEZWZhdWx0VmFsdWVNYXA8SywgVj4gPSBPbWl0PE1hcDxLLCBWPiwgJ2dldCc+ICYge1xuICAgIGdldDogKGtleTogSykgPT4gVjtcbn07XG4iLCIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbkNvcHlyaWdodCAoQykgTWljcm9zb2Z0LiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlXG50aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZVxuTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVEhJUyBDT0RFIElTIFBST1ZJREVEIE9OIEFOICpBUyBJUyogQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxuS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBBTlkgSU1QTElFRFxuV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIFRJVExFLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSxcbk1FUkNIQU5UQUJMSVRZIE9SIE5PTi1JTkZSSU5HRU1FTlQuXG5cblNlZSB0aGUgQXBhY2hlIFZlcnNpb24gMi4wIExpY2Vuc2UgZm9yIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cbnZhciBSZWZsZWN0O1xuKGZ1bmN0aW9uIChSZWZsZWN0KSB7XG4gICAgLy8gTWV0YWRhdGEgUHJvcG9zYWxcbiAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhL1xuICAgIChmdW5jdGlvbiAoZmFjdG9yeSkge1xuICAgICAgICB2YXIgcm9vdCA9IHR5cGVvZiBnbG9iYWwgPT09IFwib2JqZWN0XCIgPyBnbG9iYWwgOlxuICAgICAgICAgICAgdHlwZW9mIHNlbGYgPT09IFwib2JqZWN0XCIgPyBzZWxmIDpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcyA9PT0gXCJvYmplY3RcIiA/IHRoaXMgOlxuICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbihcInJldHVybiB0aGlzO1wiKSgpO1xuICAgICAgICB2YXIgZXhwb3J0ZXIgPSBtYWtlRXhwb3J0ZXIoUmVmbGVjdCk7XG4gICAgICAgIGlmICh0eXBlb2Ygcm9vdC5SZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICByb290LlJlZmxlY3QgPSBSZWZsZWN0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZXhwb3J0ZXIgPSBtYWtlRXhwb3J0ZXIocm9vdC5SZWZsZWN0LCBleHBvcnRlcik7XG4gICAgICAgIH1cbiAgICAgICAgZmFjdG9yeShleHBvcnRlcik7XG4gICAgICAgIGZ1bmN0aW9uIG1ha2VFeHBvcnRlcih0YXJnZXQsIHByZXZpb3VzKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRhcmdldFtrZXldICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzKVxuICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyhrZXksIHZhbHVlKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9KShmdW5jdGlvbiAoZXhwb3J0ZXIpIHtcbiAgICAgICAgdmFyIGhhc093biA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG4gICAgICAgIC8vIGZlYXR1cmUgdGVzdCBmb3IgU3ltYm9sIHN1cHBvcnRcbiAgICAgICAgdmFyIHN1cHBvcnRzU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiO1xuICAgICAgICB2YXIgdG9QcmltaXRpdmVTeW1ib2wgPSBzdXBwb3J0c1N5bWJvbCAmJiB0eXBlb2YgU3ltYm9sLnRvUHJpbWl0aXZlICE9PSBcInVuZGVmaW5lZFwiID8gU3ltYm9sLnRvUHJpbWl0aXZlIDogXCJAQHRvUHJpbWl0aXZlXCI7XG4gICAgICAgIHZhciBpdGVyYXRvclN5bWJvbCA9IHN1cHBvcnRzU3ltYm9sICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgIT09IFwidW5kZWZpbmVkXCIgPyBTeW1ib2wuaXRlcmF0b3IgOiBcIkBAaXRlcmF0b3JcIjtcbiAgICAgICAgdmFyIHN1cHBvcnRzQ3JlYXRlID0gdHlwZW9mIE9iamVjdC5jcmVhdGUgPT09IFwiZnVuY3Rpb25cIjsgLy8gZmVhdHVyZSB0ZXN0IGZvciBPYmplY3QuY3JlYXRlIHN1cHBvcnRcbiAgICAgICAgdmFyIHN1cHBvcnRzUHJvdG8gPSB7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5OyAvLyBmZWF0dXJlIHRlc3QgZm9yIF9fcHJvdG9fXyBzdXBwb3J0XG4gICAgICAgIHZhciBkb3duTGV2ZWwgPSAhc3VwcG9ydHNDcmVhdGUgJiYgIXN1cHBvcnRzUHJvdG87XG4gICAgICAgIHZhciBIYXNoTWFwID0ge1xuICAgICAgICAgICAgLy8gY3JlYXRlIGFuIG9iamVjdCBpbiBkaWN0aW9uYXJ5IG1vZGUgKGEuay5hLiBcInNsb3dcIiBtb2RlIGluIHY4KVxuICAgICAgICAgICAgY3JlYXRlOiBzdXBwb3J0c0NyZWF0ZVxuICAgICAgICAgICAgICAgID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gTWFrZURpY3Rpb25hcnkoT2JqZWN0LmNyZWF0ZShudWxsKSk7IH1cbiAgICAgICAgICAgICAgICA6IHN1cHBvcnRzUHJvdG9cbiAgICAgICAgICAgICAgICAgICAgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBNYWtlRGljdGlvbmFyeSh7IF9fcHJvdG9fXzogbnVsbCB9KTsgfVxuICAgICAgICAgICAgICAgICAgICA6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE1ha2VEaWN0aW9uYXJ5KHt9KTsgfSxcbiAgICAgICAgICAgIGhhczogZG93bkxldmVsXG4gICAgICAgICAgICAgICAgPyBmdW5jdGlvbiAobWFwLCBrZXkpIHsgcmV0dXJuIGhhc093bi5jYWxsKG1hcCwga2V5KTsgfVxuICAgICAgICAgICAgICAgIDogZnVuY3Rpb24gKG1hcCwga2V5KSB7IHJldHVybiBrZXkgaW4gbWFwOyB9LFxuICAgICAgICAgICAgZ2V0OiBkb3duTGV2ZWxcbiAgICAgICAgICAgICAgICA/IGZ1bmN0aW9uIChtYXAsIGtleSkgeyByZXR1cm4gaGFzT3duLmNhbGwobWFwLCBrZXkpID8gbWFwW2tleV0gOiB1bmRlZmluZWQ7IH1cbiAgICAgICAgICAgICAgICA6IGZ1bmN0aW9uIChtYXAsIGtleSkgeyByZXR1cm4gbWFwW2tleV07IH0sXG4gICAgICAgIH07XG4gICAgICAgIC8vIExvYWQgZ2xvYmFsIG9yIHNoaW0gdmVyc2lvbnMgb2YgTWFwLCBTZXQsIGFuZCBXZWFrTWFwXG4gICAgICAgIHZhciBmdW5jdGlvblByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihGdW5jdGlvbik7XG4gICAgICAgIHZhciB1c2VQb2x5ZmlsbCA9IHR5cGVvZiBwcm9jZXNzID09PSBcIm9iamVjdFwiICYmIHByb2Nlc3MuZW52ICYmIHByb2Nlc3MuZW52W1wiUkVGTEVDVF9NRVRBREFUQV9VU0VfTUFQX1BPTFlGSUxMXCJdID09PSBcInRydWVcIjtcbiAgICAgICAgdmFyIF9NYXAgPSAhdXNlUG9seWZpbGwgJiYgdHlwZW9mIE1hcCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBNYXAucHJvdG90eXBlLmVudHJpZXMgPT09IFwiZnVuY3Rpb25cIiA/IE1hcCA6IENyZWF0ZU1hcFBvbHlmaWxsKCk7XG4gICAgICAgIHZhciBfU2V0ID0gIXVzZVBvbHlmaWxsICYmIHR5cGVvZiBTZXQgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU2V0LnByb3RvdHlwZS5lbnRyaWVzID09PSBcImZ1bmN0aW9uXCIgPyBTZXQgOiBDcmVhdGVTZXRQb2x5ZmlsbCgpO1xuICAgICAgICB2YXIgX1dlYWtNYXAgPSAhdXNlUG9seWZpbGwgJiYgdHlwZW9mIFdlYWtNYXAgPT09IFwiZnVuY3Rpb25cIiA/IFdlYWtNYXAgOiBDcmVhdGVXZWFrTWFwUG9seWZpbGwoKTtcbiAgICAgICAgLy8gW1tNZXRhZGF0YV1dIGludGVybmFsIHNsb3RcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnktb2JqZWN0LWludGVybmFsLW1ldGhvZHMtYW5kLWludGVybmFsLXNsb3RzXG4gICAgICAgIHZhciBNZXRhZGF0YSA9IG5ldyBfV2Vha01hcCgpO1xuICAgICAgICAvKipcbiAgICAgICAgICogQXBwbGllcyBhIHNldCBvZiBkZWNvcmF0b3JzIHRvIGEgcHJvcGVydHkgb2YgYSB0YXJnZXQgb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0gZGVjb3JhdG9ycyBBbiBhcnJheSBvZiBkZWNvcmF0b3JzLlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IHRvIGRlY29yYXRlLlxuICAgICAgICAgKiBAcGFyYW0gYXR0cmlidXRlcyAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgdGFyZ2V0IGtleS5cbiAgICAgICAgICogQHJlbWFya3MgRGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpbiByZXZlcnNlIG9yZGVyLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHkgZGVjbGFyYXRpb25zIGFyZSBub3QgcGFydCBvZiBFUzYsIHRob3VnaCB0aGV5IGFyZSB2YWxpZCBpbiBUeXBlU2NyaXB0OlxuICAgICAgICAgKiAgICAgICAgIC8vIHN0YXRpYyBzdGF0aWNQcm9wZXJ0eTtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgICAgICBjb25zdHJ1Y3RvcihwKSB7IH1cbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIG1ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICBFeGFtcGxlID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzQXJyYXksIEV4YW1wbGUpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzQXJyYXksIEV4YW1wbGUsIFwic3RhdGljUHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzQXJyYXksIEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiLFxuICAgICAgICAgKiAgICAgICAgIFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9yc0FycmF5LCBFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiLFxuICAgICAgICAgKiAgICAgICAgICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIpKSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIixcbiAgICAgICAgICogICAgICAgICBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnNBcnJheSwgRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIsXG4gICAgICAgICAqICAgICAgICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIpKSk7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBkZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIHByb3BlcnR5S2V5LCBhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSkge1xuICAgICAgICAgICAgICAgIGlmICghSXNBcnJheShkZWNvcmF0b3JzKSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QoYXR0cmlidXRlcykgJiYgIUlzVW5kZWZpbmVkKGF0dHJpYnV0ZXMpICYmICFJc051bGwoYXR0cmlidXRlcykpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgICAgICBpZiAoSXNOdWxsKGF0dHJpYnV0ZXMpKVxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIERlY29yYXRlUHJvcGVydHkoZGVjb3JhdG9ycywgdGFyZ2V0LCBwcm9wZXJ0eUtleSwgYXR0cmlidXRlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIUlzQXJyYXkoZGVjb3JhdG9ycykpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgICAgICBpZiAoIUlzQ29uc3RydWN0b3IodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIHJldHVybiBEZWNvcmF0ZUNvbnN0cnVjdG9yKGRlY29yYXRvcnMsIHRhcmdldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJkZWNvcmF0ZVwiLCBkZWNvcmF0ZSk7XG4gICAgICAgIC8vIDQuMS4yIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpXG4gICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI3JlZmxlY3QubWV0YWRhdGFcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEEgZGVmYXVsdCBtZXRhZGF0YSBkZWNvcmF0b3IgZmFjdG9yeSB0aGF0IGNhbiBiZSB1c2VkIG9uIGEgY2xhc3MsIGNsYXNzIG1lbWJlciwgb3IgcGFyYW1ldGVyLlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgVGhlIGtleSBmb3IgdGhlIG1ldGFkYXRhIGVudHJ5LlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFWYWx1ZSBUaGUgdmFsdWUgZm9yIHRoZSBtZXRhZGF0YSBlbnRyeS5cbiAgICAgICAgICogQHJldHVybnMgQSBkZWNvcmF0b3IgZnVuY3Rpb24uXG4gICAgICAgICAqIEByZW1hcmtzXG4gICAgICAgICAqIElmIGBtZXRhZGF0YUtleWAgaXMgYWxyZWFkeSBkZWZpbmVkIGZvciB0aGUgdGFyZ2V0IGFuZCB0YXJnZXQga2V5LCB0aGVcbiAgICAgICAgICogbWV0YWRhdGFWYWx1ZSBmb3IgdGhhdCBrZXkgd2lsbCBiZSBvdmVyd3JpdHRlbi5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICBAUmVmbGVjdC5tZXRhZGF0YShrZXksIHZhbHVlKVxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IsIFR5cGVTY3JpcHQgb25seSlcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIEBSZWZsZWN0Lm1ldGFkYXRhKGtleSwgdmFsdWUpXG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSwgVHlwZVNjcmlwdCBvbmx5KVxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgQFJlZmxlY3QubWV0YWRhdGEoa2V5LCB2YWx1ZSlcbiAgICAgICAgICogICAgICAgICBwcm9wZXJ0eTtcbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICBAUmVmbGVjdC5tZXRhZGF0YShrZXksIHZhbHVlKVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QoKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgQFJlZmxlY3QubWV0YWRhdGEoa2V5LCB2YWx1ZSlcbiAgICAgICAgICogICAgICAgICBtZXRob2QoKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIG1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XG4gICAgICAgICAgICBmdW5jdGlvbiBkZWNvcmF0b3IodGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpICYmICFJc1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIE9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRlY29yYXRvcjtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcIm1ldGFkYXRhXCIsIG1ldGFkYXRhKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlZmluZSBhIHVuaXF1ZSBtZXRhZGF0YSBlbnRyeSBvbiB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgQSBrZXkgdXNlZCB0byBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSBtZXRhZGF0YVZhbHVlIEEgdmFsdWUgdGhhdCBjb250YWlucyBhdHRhY2hlZCBtZXRhZGF0YS5cbiAgICAgICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCBvbiB3aGljaCB0byBkZWZpbmUgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBvcHRpb25zLCBFeGFtcGxlKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBvcHRpb25zLCBFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBvcHRpb25zLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJwcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgb3B0aW9ucywgRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBvcHRpb25zLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBkZWNvcmF0b3IgZmFjdG9yeSBhcyBtZXRhZGF0YS1wcm9kdWNpbmcgYW5ub3RhdGlvbi5cbiAgICAgICAgICogICAgIGZ1bmN0aW9uIE15QW5ub3RhdGlvbihvcHRpb25zKTogRGVjb3JhdG9yIHtcbiAgICAgICAgICogICAgICAgICByZXR1cm4gKHRhcmdldCwga2V5PykgPT4gUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIG9wdGlvbnMsIHRhcmdldCwga2V5KTtcbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGRlZmluZU1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlLCB0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHRhcmdldCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkpXG4gICAgICAgICAgICAgICAgcHJvcGVydHlLZXkgPSBUb1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeURlZmluZU93bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlLCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcImRlZmluZU1ldGFkYXRhXCIsIGRlZmluZU1ldGFkYXRhKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHRhcmdldCBvYmplY3Qgb3IgaXRzIHByb3RvdHlwZSBjaGFpbiBoYXMgdGhlIHByb3ZpZGVkIG1ldGFkYXRhIGtleSBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgQSBrZXkgdXNlZCB0byBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGFkYXRhIGlzIGRlZmluZWQuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbWV0YWRhdGEga2V5IHdhcyBkZWZpbmVkIG9uIHRoZSB0YXJnZXQgb2JqZWN0IG9yIGl0cyBwcm90b3R5cGUgY2hhaW47IG90aGVyd2lzZSwgYGZhbHNlYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5IGRlY2xhcmF0aW9ucyBhcmUgbm90IHBhcnQgb2YgRVM2LCB0aG91Z2ggdGhleSBhcmUgdmFsaWQgaW4gVHlwZVNjcmlwdDpcbiAgICAgICAgICogICAgICAgICAvLyBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAgICAgY29uc3RydWN0b3IocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgICAgICBtZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBjb25zdHJ1Y3RvclxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUsIFwic3RhdGljUHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuaGFzTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUucHJvdG90eXBlLCBcIm1ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGhhc01ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHRhcmdldCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkpXG4gICAgICAgICAgICAgICAgcHJvcGVydHlLZXkgPSBUb1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeUhhc01ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcImhhc01ldGFkYXRhXCIsIGhhc01ldGFkYXRhKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHRhcmdldCBvYmplY3QgaGFzIHRoZSBwcm92aWRlZCBtZXRhZGF0YSBrZXkgZGVmaW5lZC5cbiAgICAgICAgICogQHBhcmFtIG1ldGFkYXRhS2V5IEEga2V5IHVzZWQgdG8gc3RvcmUgYW5kIHJldHJpZXZlIG1ldGFkYXRhLlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRhZGF0YSBpcyBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IGZvciB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG1ldGFkYXRhIGtleSB3YXMgZGVmaW5lZCBvbiB0aGUgdGFyZ2V0IG9iamVjdDsgb3RoZXJ3aXNlLCBgZmFsc2VgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHkgZGVjbGFyYXRpb25zIGFyZSBub3QgcGFydCBvZiBFUzYsIHRob3VnaCB0aGV5IGFyZSB2YWxpZCBpbiBUeXBlU2NyaXB0OlxuICAgICAgICAgKiAgICAgICAgIC8vIHN0YXRpYyBzdGF0aWNQcm9wZXJ0eTtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgICAgICBjb25zdHJ1Y3RvcihwKSB7IH1cbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIG1ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc093bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc093bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNQcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc093bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwicHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNPd25NZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc093bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gaGFzT3duTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUtleSA9IFRvUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgcmV0dXJuIE9yZGluYXJ5SGFzT3duTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGV4cG9ydGVyKFwiaGFzT3duTWV0YWRhdGFcIiwgaGFzT3duTWV0YWRhdGEpO1xuICAgICAgICAvKipcbiAgICAgICAgICogR2V0cyB0aGUgbWV0YWRhdGEgdmFsdWUgZm9yIHRoZSBwcm92aWRlZCBtZXRhZGF0YSBrZXkgb24gdGhlIHRhcmdldCBvYmplY3Qgb3IgaXRzIHByb3RvdHlwZSBjaGFpbi5cbiAgICAgICAgICogQHBhcmFtIG1ldGFkYXRhS2V5IEEga2V5IHVzZWQgdG8gc3RvcmUgYW5kIHJldHJpZXZlIG1ldGFkYXRhLlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRhZGF0YSBpcyBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IGZvciB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAcmV0dXJucyBUaGUgbWV0YWRhdGEgdmFsdWUgZm9yIHRoZSBtZXRhZGF0YSBrZXkgaWYgZm91bmQ7IG90aGVyd2lzZSwgYHVuZGVmaW5lZGAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJwcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBnZXRNZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlHZXRNZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJnZXRNZXRhZGF0YVwiLCBnZXRNZXRhZGF0YSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBtZXRhZGF0YSB2YWx1ZSBmb3IgdGhlIHByb3ZpZGVkIG1ldGFkYXRhIGtleSBvbiB0aGUgdGFyZ2V0IG9iamVjdC5cbiAgICAgICAgICogQHBhcmFtIG1ldGFkYXRhS2V5IEEga2V5IHVzZWQgdG8gc3RvcmUgYW5kIHJldHJpZXZlIG1ldGFkYXRhLlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRhZGF0YSBpcyBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IGZvciB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAcmV0dXJucyBUaGUgbWV0YWRhdGEgdmFsdWUgZm9yIHRoZSBtZXRhZGF0YSBrZXkgaWYgZm91bmQ7IG90aGVyd2lzZSwgYHVuZGVmaW5lZGAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJwcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBnZXRPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlHZXRPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJnZXRPd25NZXRhZGF0YVwiLCBnZXRPd25NZXRhZGF0YSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBtZXRhZGF0YSBrZXlzIGRlZmluZWQgb24gdGhlIHRhcmdldCBvYmplY3Qgb3IgaXRzIHByb3RvdHlwZSBjaGFpbi5cbiAgICAgICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCBvbiB3aGljaCB0aGUgbWV0YWRhdGEgaXMgZGVmaW5lZC5cbiAgICAgICAgICogQHBhcmFtIHByb3BlcnR5S2V5IChPcHRpb25hbCkgVGhlIHByb3BlcnR5IGtleSBmb3IgdGhlIHRhcmdldC5cbiAgICAgICAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgdW5pcXVlIG1ldGFkYXRhIGtleXMuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGFLZXlzKEV4YW1wbGUpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YUtleXMoRXhhbXBsZSwgXCJzdGF0aWNQcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE1ldGFkYXRhS2V5cyhFeGFtcGxlLnByb3RvdHlwZSwgXCJwcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE1ldGFkYXRhS2V5cyhFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YUtleXMoRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZ2V0TWV0YWRhdGFLZXlzKHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUtleSA9IFRvUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgcmV0dXJuIE9yZGluYXJ5TWV0YWRhdGFLZXlzKHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGV4cG9ydGVyKFwiZ2V0TWV0YWRhdGFLZXlzXCIsIGdldE1ldGFkYXRhS2V5cyk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIHRoZSB1bmlxdWUgbWV0YWRhdGEga2V5cyBkZWZpbmVkIG9uIHRoZSB0YXJnZXQgb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRhZGF0YSBpcyBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IGZvciB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiB1bmlxdWUgbWV0YWRhdGEga2V5cy5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5IGRlY2xhcmF0aW9ucyBhcmUgbm90IHBhcnQgb2YgRVM2LCB0aG91Z2ggdGhleSBhcmUgdmFsaWQgaW4gVHlwZVNjcmlwdDpcbiAgICAgICAgICogICAgICAgICAvLyBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAgICAgY29uc3RydWN0b3IocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgICAgICBtZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBjb25zdHJ1Y3RvclxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YUtleXMoRXhhbXBsZSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhS2V5cyhFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGFLZXlzKEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGFLZXlzKEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhS2V5cyhFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBnZXRPd25NZXRhZGF0YUtleXModGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlPd25NZXRhZGF0YUtleXModGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJnZXRPd25NZXRhZGF0YUtleXNcIiwgZ2V0T3duTWV0YWRhdGFLZXlzKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlbGV0ZXMgdGhlIG1ldGFkYXRhIGVudHJ5IGZyb20gdGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgcHJvdmlkZWQga2V5LlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgQSBrZXkgdXNlZCB0byBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGFkYXRhIGlzIGRlZmluZWQuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbWV0YWRhdGEgZW50cnkgd2FzIGZvdW5kIGFuZCBkZWxldGVkOyBvdGhlcndpc2UsIGZhbHNlLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHkgZGVjbGFyYXRpb25zIGFyZSBub3QgcGFydCBvZiBFUzYsIHRob3VnaCB0aGV5IGFyZSB2YWxpZCBpbiBUeXBlU2NyaXB0OlxuICAgICAgICAgKiAgICAgICAgIC8vIHN0YXRpYyBzdGF0aWNQcm9wZXJ0eTtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgICAgICBjb25zdHJ1Y3RvcihwKSB7IH1cbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIG1ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmRlbGV0ZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmRlbGV0ZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNQcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmRlbGV0ZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwicHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5kZWxldGVNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmRlbGV0ZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZGVsZXRlTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUtleSA9IFRvUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgdmFyIG1ldGFkYXRhTWFwID0gR2V0T3JDcmVhdGVNZXRhZGF0YU1hcCh0YXJnZXQsIHByb3BlcnR5S2V5LCAvKkNyZWF0ZSovIGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZChtZXRhZGF0YU1hcCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgaWYgKCFtZXRhZGF0YU1hcC5kZWxldGUobWV0YWRhdGFLZXkpKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGlmIChtZXRhZGF0YU1hcC5zaXplID4gMClcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIHZhciB0YXJnZXRNZXRhZGF0YSA9IE1ldGFkYXRhLmdldCh0YXJnZXQpO1xuICAgICAgICAgICAgdGFyZ2V0TWV0YWRhdGEuZGVsZXRlKHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIGlmICh0YXJnZXRNZXRhZGF0YS5zaXplID4gMClcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIE1ldGFkYXRhLmRlbGV0ZSh0YXJnZXQpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJkZWxldGVNZXRhZGF0YVwiLCBkZWxldGVNZXRhZGF0YSk7XG4gICAgICAgIGZ1bmN0aW9uIERlY29yYXRlQ29uc3RydWN0b3IoZGVjb3JhdG9ycywgdGFyZ2V0KSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICAgICAgICAgIHZhciBkZWNvcmF0b3IgPSBkZWNvcmF0b3JzW2ldO1xuICAgICAgICAgICAgICAgIHZhciBkZWNvcmF0ZWQgPSBkZWNvcmF0b3IodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKGRlY29yYXRlZCkgJiYgIUlzTnVsbChkZWNvcmF0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNDb25zdHJ1Y3RvcihkZWNvcmF0ZWQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSBkZWNvcmF0ZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBEZWNvcmF0ZVByb3BlcnR5KGRlY29yYXRvcnMsIHRhcmdldCwgcHJvcGVydHlLZXksIGRlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRlY29yYXRvciA9IGRlY29yYXRvcnNbaV07XG4gICAgICAgICAgICAgICAgdmFyIGRlY29yYXRlZCA9IGRlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5S2V5LCBkZXNjcmlwdG9yKTtcbiAgICAgICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKGRlY29yYXRlZCkgJiYgIUlzTnVsbChkZWNvcmF0ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QoZGVjb3JhdGVkKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvciA9IGRlY29yYXRlZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBHZXRPckNyZWF0ZU1ldGFkYXRhTWFwKE8sIFAsIENyZWF0ZSkge1xuICAgICAgICAgICAgdmFyIHRhcmdldE1ldGFkYXRhID0gTWV0YWRhdGEuZ2V0KE8pO1xuICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKHRhcmdldE1ldGFkYXRhKSkge1xuICAgICAgICAgICAgICAgIGlmICghQ3JlYXRlKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRhcmdldE1ldGFkYXRhID0gbmV3IF9NYXAoKTtcbiAgICAgICAgICAgICAgICBNZXRhZGF0YS5zZXQoTywgdGFyZ2V0TWV0YWRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIG1ldGFkYXRhTWFwID0gdGFyZ2V0TWV0YWRhdGEuZ2V0KFApO1xuICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKG1ldGFkYXRhTWFwKSkge1xuICAgICAgICAgICAgICAgIGlmICghQ3JlYXRlKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIG1ldGFkYXRhTWFwID0gbmV3IF9NYXAoKTtcbiAgICAgICAgICAgICAgICB0YXJnZXRNZXRhZGF0YS5zZXQoUCwgbWV0YWRhdGFNYXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG1ldGFkYXRhTWFwO1xuICAgICAgICB9XG4gICAgICAgIC8vIDMuMS4xLjEgT3JkaW5hcnlIYXNNZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUClcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnloYXNtZXRhZGF0YVxuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeUhhc01ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gICAgICAgICAgICB2YXIgaGFzT3duID0gT3JkaW5hcnlIYXNPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCk7XG4gICAgICAgICAgICBpZiAoaGFzT3duKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgdmFyIHBhcmVudCA9IE9yZGluYXJ5R2V0UHJvdG90eXBlT2YoTyk7XG4gICAgICAgICAgICBpZiAoIUlzTnVsbChwYXJlbnQpKVxuICAgICAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeUhhc01ldGFkYXRhKE1ldGFkYXRhS2V5LCBwYXJlbnQsIFApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIDMuMS4yLjEgT3JkaW5hcnlIYXNPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUClcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnloYXNvd25tZXRhZGF0YVxuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeUhhc093bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gICAgICAgICAgICB2YXIgbWV0YWRhdGFNYXAgPSBHZXRPckNyZWF0ZU1ldGFkYXRhTWFwKE8sIFAsIC8qQ3JlYXRlKi8gZmFsc2UpO1xuICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKG1ldGFkYXRhTWFwKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gVG9Cb29sZWFuKG1ldGFkYXRhTWFwLmhhcyhNZXRhZGF0YUtleSkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIDMuMS4zLjEgT3JkaW5hcnlHZXRNZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUClcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnlnZXRtZXRhZGF0YVxuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeUdldE1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gICAgICAgICAgICB2YXIgaGFzT3duID0gT3JkaW5hcnlIYXNPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCk7XG4gICAgICAgICAgICBpZiAoaGFzT3duKVxuICAgICAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeUdldE93bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKTtcbiAgICAgICAgICAgIHZhciBwYXJlbnQgPSBPcmRpbmFyeUdldFByb3RvdHlwZU9mKE8pO1xuICAgICAgICAgICAgaWYgKCFJc051bGwocGFyZW50KSlcbiAgICAgICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlHZXRNZXRhZGF0YShNZXRhZGF0YUtleSwgcGFyZW50LCBQKTtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMy4xLjQuMSBPcmRpbmFyeUdldE93bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKVxuICAgICAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhLyNvcmRpbmFyeWdldG93bm1ldGFkYXRhXG4gICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5R2V0T3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApIHtcbiAgICAgICAgICAgIHZhciBtZXRhZGF0YU1hcCA9IEdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoTywgUCwgLypDcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoSXNVbmRlZmluZWQobWV0YWRhdGFNYXApKVxuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICByZXR1cm4gbWV0YWRhdGFNYXAuZ2V0KE1ldGFkYXRhS2V5KTtcbiAgICAgICAgfVxuICAgICAgICAvLyAzLjEuNS4xIE9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE1ldGFkYXRhVmFsdWUsIE8sIFApXG4gICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI29yZGluYXJ5ZGVmaW5lb3dubWV0YWRhdGFcbiAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTWV0YWRhdGFWYWx1ZSwgTywgUCkge1xuICAgICAgICAgICAgdmFyIG1ldGFkYXRhTWFwID0gR2V0T3JDcmVhdGVNZXRhZGF0YU1hcChPLCBQLCAvKkNyZWF0ZSovIHRydWUpO1xuICAgICAgICAgICAgbWV0YWRhdGFNYXAuc2V0KE1ldGFkYXRhS2V5LCBNZXRhZGF0YVZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyAzLjEuNi4xIE9yZGluYXJ5TWV0YWRhdGFLZXlzKE8sIFApXG4gICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI29yZGluYXJ5bWV0YWRhdGFrZXlzXG4gICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5TWV0YWRhdGFLZXlzKE8sIFApIHtcbiAgICAgICAgICAgIHZhciBvd25LZXlzID0gT3JkaW5hcnlPd25NZXRhZGF0YUtleXMoTywgUCk7XG4gICAgICAgICAgICB2YXIgcGFyZW50ID0gT3JkaW5hcnlHZXRQcm90b3R5cGVPZihPKTtcbiAgICAgICAgICAgIGlmIChwYXJlbnQgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG93bktleXM7XG4gICAgICAgICAgICB2YXIgcGFyZW50S2V5cyA9IE9yZGluYXJ5TWV0YWRhdGFLZXlzKHBhcmVudCwgUCk7XG4gICAgICAgICAgICBpZiAocGFyZW50S2V5cy5sZW5ndGggPD0gMClcbiAgICAgICAgICAgICAgICByZXR1cm4gb3duS2V5cztcbiAgICAgICAgICAgIGlmIChvd25LZXlzLmxlbmd0aCA8PSAwKVxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnRLZXlzO1xuICAgICAgICAgICAgdmFyIHNldCA9IG5ldyBfU2V0KCk7XG4gICAgICAgICAgICB2YXIga2V5cyA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBvd25LZXlzXzEgPSBvd25LZXlzOyBfaSA8IG93bktleXNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0gb3duS2V5c18xW19pXTtcbiAgICAgICAgICAgICAgICB2YXIgaGFzS2V5ID0gc2V0LmhhcyhrZXkpO1xuICAgICAgICAgICAgICAgIGlmICghaGFzS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHNldC5hZGQoa2V5KTtcbiAgICAgICAgICAgICAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICh2YXIgX2EgPSAwLCBwYXJlbnRLZXlzXzEgPSBwYXJlbnRLZXlzOyBfYSA8IHBhcmVudEtleXNfMS5sZW5ndGg7IF9hKyspIHtcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0gcGFyZW50S2V5c18xW19hXTtcbiAgICAgICAgICAgICAgICB2YXIgaGFzS2V5ID0gc2V0LmhhcyhrZXkpO1xuICAgICAgICAgICAgICAgIGlmICghaGFzS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHNldC5hZGQoa2V5KTtcbiAgICAgICAgICAgICAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMy4xLjcuMSBPcmRpbmFyeU93bk1ldGFkYXRhS2V5cyhPLCBQKVxuICAgICAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhLyNvcmRpbmFyeW93bm1ldGFkYXRha2V5c1xuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeU93bk1ldGFkYXRhS2V5cyhPLCBQKSB7XG4gICAgICAgICAgICB2YXIga2V5cyA9IFtdO1xuICAgICAgICAgICAgdmFyIG1ldGFkYXRhTWFwID0gR2V0T3JDcmVhdGVNZXRhZGF0YU1hcChPLCBQLCAvKkNyZWF0ZSovIGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZChtZXRhZGF0YU1hcCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgICAgICAgICB2YXIga2V5c09iaiA9IG1ldGFkYXRhTWFwLmtleXMoKTtcbiAgICAgICAgICAgIHZhciBpdGVyYXRvciA9IEdldEl0ZXJhdG9yKGtleXNPYmopO1xuICAgICAgICAgICAgdmFyIGsgPSAwO1xuICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IEl0ZXJhdG9yU3RlcChpdGVyYXRvcik7XG4gICAgICAgICAgICAgICAgaWYgKCFuZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGtleXMubGVuZ3RoID0gaztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBuZXh0VmFsdWUgPSBJdGVyYXRvclZhbHVlKG5leHQpO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGtleXNba10gPSBuZXh0VmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvckNsb3NlKGl0ZXJhdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaysrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIDYgRUNNQVNjcmlwdCBEYXRhIFR5cDBlcyBhbmQgVmFsdWVzXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWVjbWFzY3JpcHQtZGF0YS10eXBlcy1hbmQtdmFsdWVzXG4gICAgICAgIGZ1bmN0aW9uIFR5cGUoeCkge1xuICAgICAgICAgICAgaWYgKHggPT09IG51bGwpXG4gICAgICAgICAgICAgICAgcmV0dXJuIDEgLyogTnVsbCAqLztcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZW9mIHgpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwidW5kZWZpbmVkXCI6IHJldHVybiAwIC8qIFVuZGVmaW5lZCAqLztcbiAgICAgICAgICAgICAgICBjYXNlIFwiYm9vbGVhblwiOiByZXR1cm4gMiAvKiBCb29sZWFuICovO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdcIjogcmV0dXJuIDMgLyogU3RyaW5nICovO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJzeW1ib2xcIjogcmV0dXJuIDQgLyogU3ltYm9sICovO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJudW1iZXJcIjogcmV0dXJuIDUgLyogTnVtYmVyICovO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJvYmplY3RcIjogcmV0dXJuIHggPT09IG51bGwgPyAxIC8qIE51bGwgKi8gOiA2IC8qIE9iamVjdCAqLztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gNiAvKiBPYmplY3QgKi87XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gNi4xLjEgVGhlIFVuZGVmaW5lZCBUeXBlXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMtdW5kZWZpbmVkLXR5cGVcbiAgICAgICAgZnVuY3Rpb24gSXNVbmRlZmluZWQoeCkge1xuICAgICAgICAgICAgcmV0dXJuIHggPT09IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyA2LjEuMiBUaGUgTnVsbCBUeXBlXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMtbnVsbC10eXBlXG4gICAgICAgIGZ1bmN0aW9uIElzTnVsbCh4KSB7XG4gICAgICAgICAgICByZXR1cm4geCA9PT0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICAvLyA2LjEuNSBUaGUgU3ltYm9sIFR5cGVcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcy1zeW1ib2wtdHlwZVxuICAgICAgICBmdW5jdGlvbiBJc1N5bWJvbCh4KSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCI7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNi4xLjcgVGhlIE9iamVjdCBUeXBlXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC10eXBlXG4gICAgICAgIGZ1bmN0aW9uIElzT2JqZWN0KHgpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgeCA9PT0gXCJvYmplY3RcIiA/IHggIT09IG51bGwgOiB0eXBlb2YgeCA9PT0gXCJmdW5jdGlvblwiO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuMSBUeXBlIENvbnZlcnNpb25cbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdHlwZS1jb252ZXJzaW9uXG4gICAgICAgIC8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b3ByaW1pdGl2ZVxuICAgICAgICBmdW5jdGlvbiBUb1ByaW1pdGl2ZShpbnB1dCwgUHJlZmVycmVkVHlwZSkge1xuICAgICAgICAgICAgc3dpdGNoIChUeXBlKGlucHV0KSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMCAvKiBVbmRlZmluZWQgKi86IHJldHVybiBpbnB1dDtcbiAgICAgICAgICAgICAgICBjYXNlIDEgLyogTnVsbCAqLzogcmV0dXJuIGlucHV0O1xuICAgICAgICAgICAgICAgIGNhc2UgMiAvKiBCb29sZWFuICovOiByZXR1cm4gaW5wdXQ7XG4gICAgICAgICAgICAgICAgY2FzZSAzIC8qIFN0cmluZyAqLzogcmV0dXJuIGlucHV0O1xuICAgICAgICAgICAgICAgIGNhc2UgNCAvKiBTeW1ib2wgKi86IHJldHVybiBpbnB1dDtcbiAgICAgICAgICAgICAgICBjYXNlIDUgLyogTnVtYmVyICovOiByZXR1cm4gaW5wdXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgaGludCA9IFByZWZlcnJlZFR5cGUgPT09IDMgLyogU3RyaW5nICovID8gXCJzdHJpbmdcIiA6IFByZWZlcnJlZFR5cGUgPT09IDUgLyogTnVtYmVyICovID8gXCJudW1iZXJcIiA6IFwiZGVmYXVsdFwiO1xuICAgICAgICAgICAgdmFyIGV4b3RpY1RvUHJpbSA9IEdldE1ldGhvZChpbnB1dCwgdG9QcmltaXRpdmVTeW1ib2wpO1xuICAgICAgICAgICAgaWYgKGV4b3RpY1RvUHJpbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGV4b3RpY1RvUHJpbS5jYWxsKGlucHV0LCBoaW50KTtcbiAgICAgICAgICAgICAgICBpZiAoSXNPYmplY3QocmVzdWx0KSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlUb1ByaW1pdGl2ZShpbnB1dCwgaGludCA9PT0gXCJkZWZhdWx0XCIgPyBcIm51bWJlclwiIDogaGludCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4xLjEuMSBPcmRpbmFyeVRvUHJpbWl0aXZlKE8sIGhpbnQpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9yZGluYXJ5dG9wcmltaXRpdmVcbiAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlUb1ByaW1pdGl2ZShPLCBoaW50KSB7XG4gICAgICAgICAgICBpZiAoaGludCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIHZhciB0b1N0cmluZ18xID0gTy50b1N0cmluZztcbiAgICAgICAgICAgICAgICBpZiAoSXNDYWxsYWJsZSh0b1N0cmluZ18xKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdG9TdHJpbmdfMS5jYWxsKE8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHJlc3VsdCkpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgdmFsdWVPZiA9IE8udmFsdWVPZjtcbiAgICAgICAgICAgICAgICBpZiAoSXNDYWxsYWJsZSh2YWx1ZU9mKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdmFsdWVPZi5jYWxsKE8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHJlc3VsdCkpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciB2YWx1ZU9mID0gTy52YWx1ZU9mO1xuICAgICAgICAgICAgICAgIGlmIChJc0NhbGxhYmxlKHZhbHVlT2YpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB2YWx1ZU9mLmNhbGwoTyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QocmVzdWx0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciB0b1N0cmluZ18yID0gTy50b1N0cmluZztcbiAgICAgICAgICAgICAgICBpZiAoSXNDYWxsYWJsZSh0b1N0cmluZ18yKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdG9TdHJpbmdfMi5jYWxsKE8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHJlc3VsdCkpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjEuMiBUb0Jvb2xlYW4oYXJndW1lbnQpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8yMDE2LyNzZWMtdG9ib29sZWFuXG4gICAgICAgIGZ1bmN0aW9uIFRvQm9vbGVhbihhcmd1bWVudCkge1xuICAgICAgICAgICAgcmV0dXJuICEhYXJndW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4xLjEyIFRvU3RyaW5nKGFyZ3VtZW50KVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b3N0cmluZ1xuICAgICAgICBmdW5jdGlvbiBUb1N0cmluZyhhcmd1bWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCIgKyBhcmd1bWVudDtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjEuMTQgVG9Qcm9wZXJ0eUtleShhcmd1bWVudClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdG9wcm9wZXJ0eWtleVxuICAgICAgICBmdW5jdGlvbiBUb1Byb3BlcnR5S2V5KGFyZ3VtZW50KSB7XG4gICAgICAgICAgICB2YXIga2V5ID0gVG9QcmltaXRpdmUoYXJndW1lbnQsIDMgLyogU3RyaW5nICovKTtcbiAgICAgICAgICAgIGlmIChJc1N5bWJvbChrZXkpKVxuICAgICAgICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgICAgICByZXR1cm4gVG9TdHJpbmcoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjIgVGVzdGluZyBhbmQgQ29tcGFyaXNvbiBPcGVyYXRpb25zXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRlc3RpbmctYW5kLWNvbXBhcmlzb24tb3BlcmF0aW9uc1xuICAgICAgICAvLyA3LjIuMiBJc0FycmF5KGFyZ3VtZW50KVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pc2FycmF5XG4gICAgICAgIGZ1bmN0aW9uIElzQXJyYXkoYXJndW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5XG4gICAgICAgICAgICAgICAgPyBBcnJheS5pc0FycmF5KGFyZ3VtZW50KVxuICAgICAgICAgICAgICAgIDogYXJndW1lbnQgaW5zdGFuY2VvZiBPYmplY3RcbiAgICAgICAgICAgICAgICAgICAgPyBhcmd1bWVudCBpbnN0YW5jZW9mIEFycmF5XG4gICAgICAgICAgICAgICAgICAgIDogT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KSA9PT0gXCJbb2JqZWN0IEFycmF5XVwiO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuMi4zIElzQ2FsbGFibGUoYXJndW1lbnQpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzY2FsbGFibGVcbiAgICAgICAgZnVuY3Rpb24gSXNDYWxsYWJsZShhcmd1bWVudCkge1xuICAgICAgICAgICAgLy8gTk9URTogVGhpcyBpcyBhbiBhcHByb3hpbWF0aW9uIGFzIHdlIGNhbm5vdCBjaGVjayBmb3IgW1tDYWxsXV0gaW50ZXJuYWwgbWV0aG9kLlxuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBhcmd1bWVudCA9PT0gXCJmdW5jdGlvblwiO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuMi40IElzQ29uc3RydWN0b3IoYXJndW1lbnQpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzY29uc3RydWN0b3JcbiAgICAgICAgZnVuY3Rpb24gSXNDb25zdHJ1Y3Rvcihhcmd1bWVudCkge1xuICAgICAgICAgICAgLy8gTk9URTogVGhpcyBpcyBhbiBhcHByb3hpbWF0aW9uIGFzIHdlIGNhbm5vdCBjaGVjayBmb3IgW1tDb25zdHJ1Y3RdXSBpbnRlcm5hbCBtZXRob2QuXG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09PSBcImZ1bmN0aW9uXCI7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4yLjcgSXNQcm9wZXJ0eUtleShhcmd1bWVudClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaXNwcm9wZXJ0eWtleVxuICAgICAgICBmdW5jdGlvbiBJc1Byb3BlcnR5S2V5KGFyZ3VtZW50KSB7XG4gICAgICAgICAgICBzd2l0Y2ggKFR5cGUoYXJndW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAzIC8qIFN0cmluZyAqLzogcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgY2FzZSA0IC8qIFN5bWJvbCAqLzogcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIDcuMyBPcGVyYXRpb25zIG9uIE9iamVjdHNcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb3BlcmF0aW9ucy1vbi1vYmplY3RzXG4gICAgICAgIC8vIDcuMy45IEdldE1ldGhvZChWLCBQKVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1nZXRtZXRob2RcbiAgICAgICAgZnVuY3Rpb24gR2V0TWV0aG9kKFYsIFApIHtcbiAgICAgICAgICAgIHZhciBmdW5jID0gVltQXTtcbiAgICAgICAgICAgIGlmIChmdW5jID09PSB1bmRlZmluZWQgfHwgZnVuYyA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKCFJc0NhbGxhYmxlKGZ1bmMpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIHJldHVybiBmdW5jO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuNCBPcGVyYXRpb25zIG9uIEl0ZXJhdG9yIE9iamVjdHNcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb3BlcmF0aW9ucy1vbi1pdGVyYXRvci1vYmplY3RzXG4gICAgICAgIGZ1bmN0aW9uIEdldEl0ZXJhdG9yKG9iaikge1xuICAgICAgICAgICAgdmFyIG1ldGhvZCA9IEdldE1ldGhvZChvYmosIGl0ZXJhdG9yU3ltYm9sKTtcbiAgICAgICAgICAgIGlmICghSXNDYWxsYWJsZShtZXRob2QpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTsgLy8gZnJvbSBDYWxsXG4gICAgICAgICAgICB2YXIgaXRlcmF0b3IgPSBtZXRob2QuY2FsbChvYmopO1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdChpdGVyYXRvcikpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuNC40IEl0ZXJhdG9yVmFsdWUoaXRlclJlc3VsdClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLzIwMTYvI3NlYy1pdGVyYXRvcnZhbHVlXG4gICAgICAgIGZ1bmN0aW9uIEl0ZXJhdG9yVmFsdWUoaXRlclJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZXJSZXN1bHQudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy40LjUgSXRlcmF0b3JTdGVwKGl0ZXJhdG9yKVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pdGVyYXRvcnN0ZXBcbiAgICAgICAgZnVuY3Rpb24gSXRlcmF0b3JTdGVwKGl0ZXJhdG9yKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gaXRlcmF0b3IubmV4dCgpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5kb25lID8gZmFsc2UgOiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy40LjYgSXRlcmF0b3JDbG9zZShpdGVyYXRvciwgY29tcGxldGlvbilcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaXRlcmF0b3JjbG9zZVxuICAgICAgICBmdW5jdGlvbiBJdGVyYXRvckNsb3NlKGl0ZXJhdG9yKSB7XG4gICAgICAgICAgICB2YXIgZiA9IGl0ZXJhdG9yW1wicmV0dXJuXCJdO1xuICAgICAgICAgICAgaWYgKGYpXG4gICAgICAgICAgICAgICAgZi5jYWxsKGl0ZXJhdG9yKTtcbiAgICAgICAgfVxuICAgICAgICAvLyA5LjEgT3JkaW5hcnkgT2JqZWN0IEludGVybmFsIE1ldGhvZHMgYW5kIEludGVybmFsIFNsb3RzXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9yZGluYXJ5LW9iamVjdC1pbnRlcm5hbC1tZXRob2RzLWFuZC1pbnRlcm5hbC1zbG90c1xuICAgICAgICAvLyA5LjEuMS4xIE9yZGluYXJ5R2V0UHJvdG90eXBlT2YoTylcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb3JkaW5hcnlnZXRwcm90b3R5cGVvZlxuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeUdldFByb3RvdHlwZU9mKE8pIHtcbiAgICAgICAgICAgIHZhciBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihPKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgTyAhPT0gXCJmdW5jdGlvblwiIHx8IE8gPT09IGZ1bmN0aW9uUHJvdG90eXBlKVxuICAgICAgICAgICAgICAgIHJldHVybiBwcm90bztcbiAgICAgICAgICAgIC8vIFR5cGVTY3JpcHQgZG9lc24ndCBzZXQgX19wcm90b19fIGluIEVTNSwgYXMgaXQncyBub24tc3RhbmRhcmQuXG4gICAgICAgICAgICAvLyBUcnkgdG8gZGV0ZXJtaW5lIHRoZSBzdXBlcmNsYXNzIGNvbnN0cnVjdG9yLiBDb21wYXRpYmxlIGltcGxlbWVudGF0aW9uc1xuICAgICAgICAgICAgLy8gbXVzdCBlaXRoZXIgc2V0IF9fcHJvdG9fXyBvbiBhIHN1YmNsYXNzIGNvbnN0cnVjdG9yIHRvIHRoZSBzdXBlcmNsYXNzIGNvbnN0cnVjdG9yLFxuICAgICAgICAgICAgLy8gb3IgZW5zdXJlIGVhY2ggY2xhc3MgaGFzIGEgdmFsaWQgYGNvbnN0cnVjdG9yYCBwcm9wZXJ0eSBvbiBpdHMgcHJvdG90eXBlIHRoYXRcbiAgICAgICAgICAgIC8vIHBvaW50cyBiYWNrIHRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgbm90IHRoZSBzYW1lIGFzIEZ1bmN0aW9uLltbUHJvdG90eXBlXV0sIHRoZW4gdGhpcyBpcyBkZWZpbmF0ZWx5IGluaGVyaXRlZC5cbiAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGNhc2Ugd2hlbiBpbiBFUzYgb3Igd2hlbiB1c2luZyBfX3Byb3RvX18gaW4gYSBjb21wYXRpYmxlIGJyb3dzZXIuXG4gICAgICAgICAgICBpZiAocHJvdG8gIT09IGZ1bmN0aW9uUHJvdG90eXBlKVxuICAgICAgICAgICAgICAgIHJldHVybiBwcm90bztcbiAgICAgICAgICAgIC8vIElmIHRoZSBzdXBlciBwcm90b3R5cGUgaXMgT2JqZWN0LnByb3RvdHlwZSwgbnVsbCwgb3IgdW5kZWZpbmVkLCB0aGVuIHdlIGNhbm5vdCBkZXRlcm1pbmUgdGhlIGhlcml0YWdlLlxuICAgICAgICAgICAgdmFyIHByb3RvdHlwZSA9IE8ucHJvdG90eXBlO1xuICAgICAgICAgICAgdmFyIHByb3RvdHlwZVByb3RvID0gcHJvdG90eXBlICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90b3R5cGUpO1xuICAgICAgICAgICAgaWYgKHByb3RvdHlwZVByb3RvID09IG51bGwgfHwgcHJvdG90eXBlUHJvdG8gPT09IE9iamVjdC5wcm90b3R5cGUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3RvO1xuICAgICAgICAgICAgLy8gSWYgdGhlIGNvbnN0cnVjdG9yIHdhcyBub3QgYSBmdW5jdGlvbiwgdGhlbiB3ZSBjYW5ub3QgZGV0ZXJtaW5lIHRoZSBoZXJpdGFnZS5cbiAgICAgICAgICAgIHZhciBjb25zdHJ1Y3RvciA9IHByb3RvdHlwZVByb3RvLmNvbnN0cnVjdG9yO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zdHJ1Y3RvciAhPT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgICAgICAgIHJldHVybiBwcm90bztcbiAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgc29tZSBraW5kIG9mIHNlbGYtcmVmZXJlbmNlLCB0aGVuIHdlIGNhbm5vdCBkZXRlcm1pbmUgdGhlIGhlcml0YWdlLlxuICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9yID09PSBPKVxuICAgICAgICAgICAgICAgIHJldHVybiBwcm90bztcbiAgICAgICAgICAgIC8vIHdlIGhhdmUgYSBwcmV0dHkgZ29vZCBndWVzcyBhdCB0aGUgaGVyaXRhZ2UuXG4gICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbmFpdmUgTWFwIHNoaW1cbiAgICAgICAgZnVuY3Rpb24gQ3JlYXRlTWFwUG9seWZpbGwoKSB7XG4gICAgICAgICAgICB2YXIgY2FjaGVTZW50aW5lbCA9IHt9O1xuICAgICAgICAgICAgdmFyIGFycmF5U2VudGluZWwgPSBbXTtcbiAgICAgICAgICAgIHZhciBNYXBJdGVyYXRvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBNYXBJdGVyYXRvcihrZXlzLCB2YWx1ZXMsIHNlbGVjdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5cyA9IGtleXM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlcyA9IHZhbHVlcztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0b3IgPSBzZWxlY3RvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgTWFwSXRlcmF0b3IucHJvdG90eXBlW1wiQEBpdGVyYXRvclwiXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG4gICAgICAgICAgICAgICAgTWFwSXRlcmF0b3IucHJvdG90eXBlW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG4gICAgICAgICAgICAgICAgTWFwSXRlcmF0b3IucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2luZGV4O1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMuX2tleXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fc2VsZWN0b3IodGhpcy5fa2V5c1tpbmRleF0sIHRoaXMuX3ZhbHVlc1tpbmRleF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ICsgMSA+PSB0aGlzLl9rZXlzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4ID0gLTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5cyA9IGFycmF5U2VudGluZWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzID0gYXJyYXlTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogcmVzdWx0LCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIE1hcEl0ZXJhdG9yLnByb3RvdHlwZS50aHJvdyA9IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5faW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXggPSAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleXMgPSBhcnJheVNlbnRpbmVsO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzID0gYXJyYXlTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIE1hcEl0ZXJhdG9yLnByb3RvdHlwZS5yZXR1cm4gPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2luZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4ID0gLTE7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlzID0gYXJyYXlTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlcyA9IGFycmF5U2VudGluZWw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlLCBkb25lOiB0cnVlIH07XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gTWFwSXRlcmF0b3I7XG4gICAgICAgICAgICB9KCkpO1xuICAgICAgICAgICAgcmV0dXJuIC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBNYXAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlS2V5ID0gY2FjaGVTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVJbmRleCA9IC0yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTWFwLnByb3RvdHlwZSwgXCJzaXplXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9rZXlzLmxlbmd0aDsgfSxcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiAoa2V5KSB7IHJldHVybiB0aGlzLl9maW5kKGtleSwgLyppbnNlcnQqLyBmYWxzZSkgPj0gMDsgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZChrZXksIC8qaW5zZXJ0Ki8gZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXggPj0gMCA/IHRoaXMuX3ZhbHVlc1tpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmQoa2V5LCAvKmluc2VydCovIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXNbaW5kZXhdID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZS5kZWxldGUgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmQoa2V5LCAvKmluc2VydCovIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaXplID0gdGhpcy5fa2V5cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gaW5kZXggKyAxOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5c1tpIC0gMV0gPSB0aGlzLl9rZXlzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlc1tpIC0gMV0gPSB0aGlzLl92YWx1ZXNbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlzLmxlbmd0aC0tO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzLmxlbmd0aC0tO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gdGhpcy5fY2FjaGVLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZUtleSA9IGNhY2hlU2VudGluZWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVJbmRleCA9IC0yO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5cy5sZW5ndGggPSAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXMubGVuZ3RoID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVLZXkgPSBjYWNoZVNlbnRpbmVsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZUluZGV4ID0gLTI7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBuZXcgTWFwSXRlcmF0b3IodGhpcy5fa2V5cywgdGhpcy5fdmFsdWVzLCBnZXRLZXkpOyB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbmV3IE1hcEl0ZXJhdG9yKHRoaXMuX2tleXMsIHRoaXMuX3ZhbHVlcywgZ2V0VmFsdWUpOyB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5ldyBNYXBJdGVyYXRvcih0aGlzLl9rZXlzLCB0aGlzLl92YWx1ZXMsIGdldEVudHJ5KTsgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlW1wiQEBpdGVyYXRvclwiXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuZW50cmllcygpOyB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGVbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5lbnRyaWVzKCk7IH07XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZS5fZmluZCA9IGZ1bmN0aW9uIChrZXksIGluc2VydCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2FjaGVLZXkgIT09IGtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVJbmRleCA9IHRoaXMuX2tleXMuaW5kZXhPZih0aGlzLl9jYWNoZUtleSA9IGtleSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NhY2hlSW5kZXggPCAwICYmIGluc2VydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVJbmRleCA9IHRoaXMuX2tleXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5cy5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXMucHVzaCh1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jYWNoZUluZGV4O1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1hcDtcbiAgICAgICAgICAgIH0oKSk7XG4gICAgICAgICAgICBmdW5jdGlvbiBnZXRLZXkoa2V5LCBfKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIGdldFZhbHVlKF8sIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gZ2V0RW50cnkoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBba2V5LCB2YWx1ZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gbmFpdmUgU2V0IHNoaW1cbiAgICAgICAgZnVuY3Rpb24gQ3JlYXRlU2V0UG9seWZpbGwoKSB7XG4gICAgICAgICAgICByZXR1cm4gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFNldCgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWFwID0gbmV3IF9NYXAoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFNldC5wcm90b3R5cGUsIFwic2l6ZVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fbWFwLnNpemU7IH0sXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB0aGlzLl9tYXAuaGFzKHZhbHVlKTsgfTtcbiAgICAgICAgICAgICAgICBTZXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdGhpcy5fbWFwLnNldCh2YWx1ZSwgdmFsdWUpLCB0aGlzOyB9O1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUuZGVsZXRlID0gZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB0aGlzLl9tYXAuZGVsZXRlKHZhbHVlKTsgfTtcbiAgICAgICAgICAgICAgICBTZXQucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkgeyB0aGlzLl9tYXAuY2xlYXIoKTsgfTtcbiAgICAgICAgICAgICAgICBTZXQucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9tYXAua2V5cygpOyB9O1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fbWFwLnZhbHVlcygpOyB9O1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX21hcC5lbnRyaWVzKCk7IH07XG4gICAgICAgICAgICAgICAgU2V0LnByb3RvdHlwZVtcIkBAaXRlcmF0b3JcIl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLmtleXMoKTsgfTtcbiAgICAgICAgICAgICAgICBTZXQucHJvdG90eXBlW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMua2V5cygpOyB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBTZXQ7XG4gICAgICAgICAgICB9KCkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIG5haXZlIFdlYWtNYXAgc2hpbVxuICAgICAgICBmdW5jdGlvbiBDcmVhdGVXZWFrTWFwUG9seWZpbGwoKSB7XG4gICAgICAgICAgICB2YXIgVVVJRF9TSVpFID0gMTY7XG4gICAgICAgICAgICB2YXIga2V5cyA9IEhhc2hNYXAuY3JlYXRlKCk7XG4gICAgICAgICAgICB2YXIgcm9vdEtleSA9IENyZWF0ZVVuaXF1ZUtleSgpO1xuICAgICAgICAgICAgcmV0dXJuIC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBXZWFrTWFwKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXkgPSBDcmVhdGVVbmlxdWVLZXkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgV2Vha01hcC5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFibGUgPSBHZXRPckNyZWF0ZVdlYWtNYXBUYWJsZSh0YXJnZXQsIC8qY3JlYXRlKi8gZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFibGUgIT09IHVuZGVmaW5lZCA/IEhhc2hNYXAuaGFzKHRhYmxlLCB0aGlzLl9rZXkpIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBXZWFrTWFwLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YWJsZSA9IEdldE9yQ3JlYXRlV2Vha01hcFRhYmxlKHRhcmdldCwgLypjcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0YWJsZSAhPT0gdW5kZWZpbmVkID8gSGFzaE1hcC5nZXQodGFibGUsIHRoaXMuX2tleSkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBXZWFrTWFwLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAodGFyZ2V0LCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFibGUgPSBHZXRPckNyZWF0ZVdlYWtNYXBUYWJsZSh0YXJnZXQsIC8qY3JlYXRlKi8gdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRhYmxlW3RoaXMuX2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBXZWFrTWFwLnByb3RvdHlwZS5kZWxldGUgPSBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YWJsZSA9IEdldE9yQ3JlYXRlV2Vha01hcFRhYmxlKHRhcmdldCwgLypjcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0YWJsZSAhPT0gdW5kZWZpbmVkID8gZGVsZXRlIHRhYmxlW3RoaXMuX2tleV0gOiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIFdlYWtNYXAucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiBub3QgYSByZWFsIGNsZWFyLCBqdXN0IG1ha2VzIHRoZSBwcmV2aW91cyBkYXRhIHVucmVhY2hhYmxlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleSA9IENyZWF0ZVVuaXF1ZUtleSgpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIFdlYWtNYXA7XG4gICAgICAgICAgICB9KCkpO1xuICAgICAgICAgICAgZnVuY3Rpb24gQ3JlYXRlVW5pcXVlS2V5KCkge1xuICAgICAgICAgICAgICAgIHZhciBrZXk7XG4gICAgICAgICAgICAgICAgZG9cbiAgICAgICAgICAgICAgICAgICAga2V5ID0gXCJAQFdlYWtNYXBAQFwiICsgQ3JlYXRlVVVJRCgpO1xuICAgICAgICAgICAgICAgIHdoaWxlIChIYXNoTWFwLmhhcyhrZXlzLCBrZXkpKTtcbiAgICAgICAgICAgICAgICBrZXlzW2tleV0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBHZXRPckNyZWF0ZVdlYWtNYXBUYWJsZSh0YXJnZXQsIGNyZWF0ZSkge1xuICAgICAgICAgICAgICAgIGlmICghaGFzT3duLmNhbGwodGFyZ2V0LCByb290S2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNyZWF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHJvb3RLZXksIHsgdmFsdWU6IEhhc2hNYXAuY3JlYXRlKCkgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRbcm9vdEtleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBGaWxsUmFuZG9tQnl0ZXMoYnVmZmVyLCBzaXplKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyArK2kpXG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlcltpXSA9IE1hdGgucmFuZG9tKCkgKiAweGZmIHwgMDtcbiAgICAgICAgICAgICAgICByZXR1cm4gYnVmZmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gR2VuUmFuZG9tQnl0ZXMoc2l6ZSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgVWludDhBcnJheSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY3J5cHRvICE9PSBcInVuZGVmaW5lZFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoc2l6ZSkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG1zQ3J5cHRvICE9PSBcInVuZGVmaW5lZFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheShzaXplKSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBGaWxsUmFuZG9tQnl0ZXMobmV3IFVpbnQ4QXJyYXkoc2l6ZSksIHNpemUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsbFJhbmRvbUJ5dGVzKG5ldyBBcnJheShzaXplKSwgc2l6ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBDcmVhdGVVVUlEKCkge1xuICAgICAgICAgICAgICAgIHZhciBkYXRhID0gR2VuUmFuZG9tQnl0ZXMoVVVJRF9TSVpFKTtcbiAgICAgICAgICAgICAgICAvLyBtYXJrIGFzIHJhbmRvbSAtIFJGQyA0MTIyIMKnIDQuNFxuICAgICAgICAgICAgICAgIGRhdGFbNl0gPSBkYXRhWzZdICYgMHg0ZiB8IDB4NDA7XG4gICAgICAgICAgICAgICAgZGF0YVs4XSA9IGRhdGFbOF0gJiAweGJmIHwgMHg4MDtcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gXCJcIjtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBvZmZzZXQgPSAwOyBvZmZzZXQgPCBVVUlEX1NJWkU7ICsrb2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBieXRlID0gZGF0YVtvZmZzZXRdO1xuICAgICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0ID09PSA0IHx8IG9mZnNldCA9PT0gNiB8fCBvZmZzZXQgPT09IDgpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gXCItXCI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChieXRlIDwgMTYpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gXCIwXCI7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBieXRlLnRvU3RyaW5nKDE2KS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIHVzZXMgYSBoZXVyaXN0aWMgdXNlZCBieSB2OCBhbmQgY2hha3JhIHRvIGZvcmNlIGFuIG9iamVjdCBpbnRvIGRpY3Rpb25hcnkgbW9kZS5cbiAgICAgICAgZnVuY3Rpb24gTWFrZURpY3Rpb25hcnkob2JqKSB7XG4gICAgICAgICAgICBvYmouX18gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBkZWxldGUgb2JqLl9fO1xuICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgfVxuICAgIH0pO1xufSkoUmVmbGVjdCB8fCAoUmVmbGVjdCA9IHt9KSk7XG4iLCJpbXBvcnQgeyBNZXRhZGF0YSwgTWV0YWRhdGFDbGFzcywgTWV0YWRhdGFSZWFkZXIgfSBmcm9tICcuLi90eXBlcy9NZXRhZGF0YSc7XG5pbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuZXhwb3J0IGNsYXNzIE1ldGFkYXRhRmFjdG9yeSB7XG4gICAgc3RhdGljIGdldE1ldGFkYXRhPFIgZXh0ZW5kcyBNZXRhZGF0YVJlYWRlciwgVCBleHRlbmRzIE9iamVjdCwgTSBleHRlbmRzIE1ldGFkYXRhPFIsIFQ+ID0gTWV0YWRhdGE8UiwgVD4+KFxuICAgICAgICB0YXJnZXQ6IFQsXG4gICAgICAgIG1ldGFkYXRhQ2xhc3M6IE1ldGFkYXRhQ2xhc3M8UiwgVCwgTT5cbiAgICApIHtcbiAgICAgICAgY29uc3Qga2V5ID0gbWV0YWRhdGFDbGFzcy5nZXRSZWZsZWN0S2V5KCk7XG4gICAgICAgIGxldCBtZXRhZGF0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoa2V5LCB0YXJnZXQpO1xuICAgICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgICAgICBtZXRhZGF0YSA9IG5ldyBtZXRhZGF0YUNsYXNzKCk7XG4gICAgICAgICAgICBtZXRhZGF0YS5pbml0KHRhcmdldCk7XG4gICAgICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKGtleSwgbWV0YWRhdGEsIHRhcmdldCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1ldGFkYXRhIGFzIE07XG4gICAgfVxufVxuIiwiLy8gZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuaW1wb3J0IHsgSW5zdGFuY2VTY29wZSB9IGZyb20gJy4uL2ZvdW5kYXRpb24vSW5zdGFuY2VTY29wZSc7XG5pbXBvcnQgeyBKc1NlcnZpY2VDbGFzcyB9IGZyb20gJy4uL3R5cGVzL0pzU2VydmljZUNsYXNzJztcbmltcG9ydCB7IE1ldGFkYXRhLCBNZXRhZGF0YVJlYWRlciB9IGZyb20gJy4uL3R5cGVzL01ldGFkYXRhJztcbmltcG9ydCB7IElkZW50aWZpZXIgfSBmcm9tICcuLi90eXBlcy9JZGVudGlmaWVyJztcbmltcG9ydCB7IExpZmVjeWNsZSB9IGZyb20gJy4uL2ZvdW5kYXRpb24vTGlmZWN5Y2xlJztcbmltcG9ydCB7IE5ld2FibGUgfSBmcm9tICcuLi90eXBlcy9OZXdhYmxlJztcbmltcG9ydCB7IGNyZWF0ZURlZmF1bHRWYWx1ZU1hcCB9IGZyb20gJy4uL2NvbW1vbi9EZWZhdWx0VmFsdWVNYXAnO1xuaW1wb3J0IHsgTWV0YWRhdGFGYWN0b3J5IH0gZnJvbSAnLi9NZXRhZGF0YUZhY3RvcnknO1xuaW1wb3J0IHsgTWVtYmVyS2V5IH0gZnJvbSAnLi4vdHlwZXMvTWVtYmVyS2V5JztcblxuY29uc3QgQ0xBU1NfTUVUQURBVEFfS0VZID0gJ2lvYzpjbGFzcy1tZXRhZGF0YSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFya0luZm8ge1xuICAgIFtrZXk6IHN0cmluZyB8IHN5bWJvbF06IHVua25vd247XG59XG5cbmV4cG9ydCBjbGFzcyBNYXJrSW5mb0NvbnRhaW5lciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXAgPSBjcmVhdGVEZWZhdWx0VmFsdWVNYXA8TWVtYmVyS2V5LCBNYXJrSW5mbz4oKCkgPT4gKHt9IGFzIE1hcmtJbmZvKSk7XG4gICAgZ2V0TWFya0luZm8obWV0aG9kOiBNZW1iZXJLZXkpOiBNYXJrSW5mbyB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQobWV0aG9kKTtcbiAgICB9XG4gICAgbWFyayhtZXRob2Q6IE1lbWJlcktleSwga2V5OiBNZW1iZXJLZXksIHZhbHVlOiB1bmtub3duKSB7XG4gICAgICAgIGNvbnN0IG1hcmtJbmZvID0gdGhpcy5tYXAuZ2V0KG1ldGhvZCk7XG4gICAgICAgIG1hcmtJbmZvW2tleV0gPSB2YWx1ZTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJhbWV0ZXJNYXJrSW5mb0NvbnRhaW5lciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXAgPSBjcmVhdGVEZWZhdWx0VmFsdWVNYXA8TWVtYmVyS2V5LCBSZWNvcmQ8bnVtYmVyLCBNYXJrSW5mbz4+KCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH0pO1xuICAgIGdldE1hcmtJbmZvKG1ldGhvZDogTWVtYmVyS2V5KTogUmVjb3JkPG51bWJlciwgTWFya0luZm8+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChtZXRob2QpO1xuICAgIH1cbiAgICBtYXJrKG1ldGhvZDogTWVtYmVyS2V5LCBpbmRleDogbnVtYmVyLCBrZXk6IE1lbWJlcktleSwgdmFsdWU6IHVua25vd24pIHtcbiAgICAgICAgY29uc3QgcGFyYW1zTWFya0luZm8gPSB0aGlzLm1hcC5nZXQobWV0aG9kKTtcbiAgICAgICAgY29uc3QgbWFya0luZm8gPSBwYXJhbXNNYXJrSW5mb1tpbmRleF0gfHwge307XG4gICAgICAgIG1hcmtJbmZvW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgcGFyYW1zTWFya0luZm9baW5kZXhdID0gbWFya0luZm87XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsYXNzTWFya0luZm8ge1xuICAgIGN0b3I6IE1hcmtJbmZvO1xuICAgIG1lbWJlcnM6IE1hcmtJbmZvQ29udGFpbmVyO1xuICAgIHBhcmFtczogUGFyYW1ldGVyTWFya0luZm9Db250YWluZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xhc3NNZXRhZGF0YVJlYWRlcjxUPiBleHRlbmRzIE1ldGFkYXRhUmVhZGVyIHtcbiAgICBnZXRDbGFzcygpOiBOZXdhYmxlPFQ+O1xuICAgIGdldFNjb3BlKCk6IEluc3RhbmNlU2NvcGUgfCBzdHJpbmc7XG4gICAgZ2V0Q29uc3RydWN0b3JQYXJhbWV0ZXJUeXBlcygpOiBBcnJheTxJZGVudGlmaWVyPjtcbiAgICBnZXRNZXRob2RzKGxpZmVjeWNsZTogTGlmZWN5Y2xlKTogQXJyYXk8c3RyaW5nIHwgc3ltYm9sPjtcbiAgICBnZXRQcm9wZXJ0eVR5cGVNYXAoKTogTWFwPHN0cmluZyB8IHN5bWJvbCwgSWRlbnRpZmllcj47XG4gICAgZ2V0Q3Rvck1hcmtJbmZvKCk6IE1hcmtJbmZvO1xuICAgIGdldE1lbWJlcnNNYXJrSW5mbyhtZXRob2RLZXk6IGtleW9mIFQpOiBNYXJrSW5mbztcbiAgICBnZXRQYXJhbWV0ZXJNYXJrSW5mbyhtZXRob2RLZXk6IGtleW9mIFQpOiBSZWNvcmQ8bnVtYmVyLCBNYXJrSW5mbz47XG59XG5cbmV4cG9ydCBjbGFzcyBDbGFzc01ldGFkYXRhPFQ+IGltcGxlbWVudHMgTWV0YWRhdGE8Q2xhc3NNZXRhZGF0YVJlYWRlcjxUPiwgTmV3YWJsZTxUPj4ge1xuICAgIHN0YXRpYyBnZXRSZWZsZWN0S2V5KCkge1xuICAgICAgICByZXR1cm4gQ0xBU1NfTUVUQURBVEFfS0VZO1xuICAgIH1cbiAgICBwcml2YXRlIHNjb3BlOiBJbnN0YW5jZVNjb3BlIHwgc3RyaW5nID0gSW5zdGFuY2VTY29wZS5TSU5HTEVUT047XG4gICAgcHJpdmF0ZSBjb25zdHJ1Y3RvclBhcmFtZXRlclR5cGVzOiBBcnJheTxJZGVudGlmaWVyPiA9IFtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbGlmZWN5Y2xlTWV0aG9kc01hcDogUmVjb3JkPHN0cmluZyB8IHN5bWJvbCwgU2V0PExpZmVjeWNsZT4+ID0ge307XG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9wZXJ0eVR5cGVzTWFwID0gbmV3IE1hcDxzdHJpbmcgfCBzeW1ib2wsIElkZW50aWZpZXI+KCk7XG4gICAgcHJpdmF0ZSBjbGF6eiE6IE5ld2FibGU8VD47XG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXJrczogQ2xhc3NNYXJrSW5mbyA9IHtcbiAgICAgICAgY3Rvcjoge30sXG4gICAgICAgIG1lbWJlcnM6IG5ldyBNYXJrSW5mb0NvbnRhaW5lcigpLFxuICAgICAgICBwYXJhbXM6IG5ldyBQYXJhbWV0ZXJNYXJrSW5mb0NvbnRhaW5lcigpXG4gICAgfTtcblxuICAgIHN0YXRpYyBnZXRJbnN0YW5jZTxUPihjdG9yOiBOZXdhYmxlPFQ+KSB7XG4gICAgICAgIHJldHVybiBNZXRhZGF0YUZhY3RvcnkuZ2V0TWV0YWRhdGEoY3RvciwgQ2xhc3NNZXRhZGF0YSk7XG4gICAgfVxuXG4gICAgaW5pdCh0YXJnZXQ6IE5ld2FibGU8VD4pIHtcbiAgICAgICAgdGhpcy5jbGF6eiA9IHRhcmdldDtcbiAgICAgICAgY29uc3QgY29uc3RyID0gdGFyZ2V0IGFzIEpzU2VydmljZUNsYXNzPHVua25vd24+O1xuICAgICAgICBpZiAodHlwZW9mIGNvbnN0ci5zY29wZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5zZXRTY29wZShjb25zdHIuc2NvcGUoKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBjb25zdHIuaW5qZWN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjb25zdCBpbmplY3Rpb25zID0gY29uc3RyLmluamVjdCgpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5qZWN0aW9ucykge1xuICAgICAgICAgICAgICAgIHRoaXMucmVjb3JkUHJvcGVydHlUeXBlKGtleSwgaW5qZWN0aW9uc1trZXldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGNvbnN0ci5tZXRhZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY29uc3QgbWV0YWRhdGEgPSBjb25zdHIubWV0YWRhdGEoKTtcbiAgICAgICAgICAgIGlmIChtZXRhZGF0YS5zY29wZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U2NvcGUobWV0YWRhdGEuc2NvcGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaW5qZWN0aW9ucyA9IG1ldGFkYXRhLmluamVjdDtcbiAgICAgICAgICAgIGlmIChpbmplY3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5qZWN0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlY29yZFByb3BlcnR5VHlwZShrZXksIGluamVjdGlvbnNba2V5XSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbWFya2VyKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY3RvcjogKGtleTogc3RyaW5nIHwgc3ltYm9sLCB2YWx1ZTogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWFya3MuY3RvcltrZXldID0gdmFsdWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWVtYmVyOiAocHJvcGVydHlLZXk6IHN0cmluZyB8IHN5bWJvbCB8IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIG1hcms6IChrZXk6IHN0cmluZyB8IHN5bWJvbCwgdmFsdWU6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFya3MubWVtYmVycy5tYXJrKHByb3BlcnR5S2V5LCBrZXksIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFyYW1ldGVyOiAocHJvcGVydHlLZXk6IHN0cmluZyB8IHN5bWJvbCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIG1hcms6IChrZXk6IHN0cmluZyB8IHN5bWJvbCwgdmFsdWU6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFya3MucGFyYW1zLm1hcmsocHJvcGVydHlLZXksIGluZGV4LCBrZXksIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuICAgIHNldFNjb3BlKHNjb3BlOiBJbnN0YW5jZVNjb3BlIHwgc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2NvcGUgPSBzY29wZTtcbiAgICB9XG4gICAgc2V0Q29uc3RydWN0b3JQYXJhbWV0ZXJUeXBlKGluZGV4OiBudW1iZXIsIGNsczogSWRlbnRpZmllcikge1xuICAgICAgICB0aGlzLmNvbnN0cnVjdG9yUGFyYW1ldGVyVHlwZXNbaW5kZXhdID0gY2xzO1xuICAgIH1cbiAgICByZWNvcmRQcm9wZXJ0eVR5cGUocHJvcGVydHlLZXk6IHN0cmluZyB8IHN5bWJvbCwgdHlwZTogSWRlbnRpZmllcikge1xuICAgICAgICB0aGlzLnByb3BlcnR5VHlwZXNNYXAuc2V0KHByb3BlcnR5S2V5LCB0eXBlKTtcbiAgICB9XG4gICAgYWRkTGlmZWN5Y2xlTWV0aG9kKG1ldGhvZE5hbWU6IHN0cmluZyB8IHN5bWJvbCwgbGlmZWN5Y2xlOiBMaWZlY3ljbGUpIHtcbiAgICAgICAgY29uc3QgbGlmZWN5Y2xlcyA9IHRoaXMuZ2V0TGlmZWN5Y2xlcyhtZXRob2ROYW1lKTtcbiAgICAgICAgbGlmZWN5Y2xlcy5hZGQobGlmZWN5Y2xlKTtcbiAgICAgICAgdGhpcy5saWZlY3ljbGVNZXRob2RzTWFwW21ldGhvZE5hbWVdID0gbGlmZWN5Y2xlcztcbiAgICB9XG4gICAgcHJpdmF0ZSBnZXRMaWZlY3ljbGVzKG1ldGhvZE5hbWU6IHN0cmluZyB8IHN5bWJvbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5saWZlY3ljbGVNZXRob2RzTWFwW21ldGhvZE5hbWVdIHx8IG5ldyBTZXQ8TGlmZWN5Y2xlPigpO1xuICAgIH1cbiAgICBnZXRNZXRob2RzKGxpZmVjeWNsZTogTGlmZWN5Y2xlKTogQXJyYXk8c3RyaW5nIHwgc3ltYm9sPiB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmxpZmVjeWNsZU1ldGhvZHNNYXApLmZpbHRlcihpdCA9PiB7XG4gICAgICAgICAgICBjb25zdCBsaWZlY3ljbGVzID0gdGhpcy5saWZlY3ljbGVNZXRob2RzTWFwW2l0XTtcbiAgICAgICAgICAgIHJldHVybiBsaWZlY3ljbGVzLmhhcyhsaWZlY3ljbGUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVhZGVyKCk6IENsYXNzTWV0YWRhdGFSZWFkZXI8VD4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0Q2xhc3M6ICgpID0+IHRoaXMuY2xhenosXG4gICAgICAgICAgICBnZXRTY29wZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNjb3BlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldENvbnN0cnVjdG9yUGFyYW1ldGVyVHlwZXM6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3RvclBhcmFtZXRlclR5cGVzLnNsaWNlKDApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldE1ldGhvZHM6IChsaWZlY3ljbGU6IExpZmVjeWNsZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE1ldGhvZHMobGlmZWN5Y2xlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRQcm9wZXJ0eVR5cGVNYXA6ICgpID0+IG5ldyBNYXAodGhpcy5wcm9wZXJ0eVR5cGVzTWFwKSxcbiAgICAgICAgICAgIGdldEN0b3JNYXJrSW5mbzogKCk6IE1hcmtJbmZvID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi50aGlzLm1hcmtzLmN0b3IgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRNZW1iZXJzTWFya0luZm86IChrZXk6IGtleW9mIFQpOiBNYXJrSW5mbyA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFya3MubWVtYmVycy5nZXRNYXJrSW5mbyhrZXkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldFBhcmFtZXRlck1hcmtJbmZvOiAobWV0aG9kS2V5OiBrZXlvZiBUKTogUmVjb3JkPG51bWJlciwgTWFya0luZm8+ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tYXJrcy5wYXJhbXMuZ2V0TWFya0luZm8obWV0aG9kS2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBHbG9iYWxNZXRhZGF0YSB9IGZyb20gJy4uL21ldGFkYXRhL0dsb2JhbE1ldGFkYXRhJztcbmltcG9ydCB7IENsYXNzTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS9DbGFzc01ldGFkYXRhJztcbmltcG9ydCB7IE1ldGFkYXRhRmFjdG9yeSB9IGZyb20gJy4uL21ldGFkYXRhL01ldGFkYXRhRmFjdG9yeSc7XG5pbXBvcnQgeyBOZXdhYmxlIH0gZnJvbSAnLi4vdHlwZXMvTmV3YWJsZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBCaW5kKGFsaWFzTmFtZTogc3RyaW5nIHwgc3ltYm9sKTogQ2xhc3NEZWNvcmF0b3Ige1xuICAgIHJldHVybiA8VEZ1bmN0aW9uIGV4dGVuZHMgRnVuY3Rpb24+KHRhcmdldDogVEZ1bmN0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gTWV0YWRhdGFGYWN0b3J5LmdldE1ldGFkYXRhKHRhcmdldCBhcyB1bmtub3duIGFzIE5ld2FibGU8dW5rbm93bj4sIENsYXNzTWV0YWRhdGEpO1xuICAgICAgICBHbG9iYWxNZXRhZGF0YS5nZXRJbnN0YW5jZSgpLnJlY29yZENsYXNzQWxpYXMoYWxpYXNOYW1lLCBtZXRhZGF0YSk7XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IEluc3RhbmNlU2NvcGUgfSBmcm9tICcuLi9mb3VuZGF0aW9uL0luc3RhbmNlU2NvcGUnO1xuaW1wb3J0IHsgQ2xhc3NNZXRhZGF0YSB9IGZyb20gJy4uL21ldGFkYXRhL0NsYXNzTWV0YWRhdGEnO1xuaW1wb3J0IHsgTWV0YWRhdGFGYWN0b3J5IH0gZnJvbSAnLi4vbWV0YWRhdGEvTWV0YWRhdGFGYWN0b3J5JztcbmltcG9ydCB7IE5ld2FibGUgfSBmcm9tICcuLi90eXBlcy9OZXdhYmxlJztcblxuZXhwb3J0IGZ1bmN0aW9uIFNjb3BlKHNjb3BlOiBJbnN0YW5jZVNjb3BlIHwgc3RyaW5nKTogQ2xhc3NEZWNvcmF0b3Ige1xuICAgIHJldHVybiA8VEZ1bmN0aW9uIGV4dGVuZHMgRnVuY3Rpb24+KHRhcmdldDogVEZ1bmN0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gTWV0YWRhdGFGYWN0b3J5LmdldE1ldGFkYXRhKHRhcmdldCBhcyB1bmtub3duIGFzIE5ld2FibGU8dW5rbm93bj4sIENsYXNzTWV0YWRhdGEpO1xuICAgICAgICBtZXRhZGF0YS5zZXRTY29wZShzY29wZSk7XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IE5ld2FibGUgfSBmcm9tICcuLi90eXBlcy9OZXdhYmxlJztcbmltcG9ydCB7IENsYXNzTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS9DbGFzc01ldGFkYXRhJztcbmltcG9ydCB7IElkZW50aWZpZXIgfSBmcm9tICcuLi90eXBlcy9JZGVudGlmaWVyJztcbmltcG9ydCB7IE1ldGFkYXRhRmFjdG9yeSB9IGZyb20gJy4uL21ldGFkYXRhL01ldGFkYXRhRmFjdG9yeSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBJbmplY3Q8VD4oY29uc3RyOiBJZGVudGlmaWVyPFQ+KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIDxUYXJnZXQ+KHRhcmdldDogVGFyZ2V0LCBwcm9wZXJ0eUtleTogc3RyaW5nIHwgc3ltYm9sLCBwYXJhbWV0ZXJJbmRleD86IG51bWJlcikge1xuICAgICAgICBpZiAodHlwZW9mIHRhcmdldCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgcGFyYW1ldGVySW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRDb25zdHIgPSB0YXJnZXQgYXMgTmV3YWJsZTxUPjtcbiAgICAgICAgICAgIGNvbnN0IGNsYXNzTWV0YWRhdGEgPSBNZXRhZGF0YUZhY3RvcnkuZ2V0TWV0YWRhdGEodGFyZ2V0Q29uc3RyLCBDbGFzc01ldGFkYXRhKTtcbiAgICAgICAgICAgIGNsYXNzTWV0YWRhdGEuc2V0Q29uc3RydWN0b3JQYXJhbWV0ZXJUeXBlKHBhcmFtZXRlckluZGV4LCBjb25zdHIpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0YXJnZXQgPT09ICdvYmplY3QnICYmIHRhcmdldCAhPT0gbnVsbCAmJiBwcm9wZXJ0eUtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YSh0YXJnZXQuY29uc3RydWN0b3IsIENsYXNzTWV0YWRhdGEpO1xuICAgICAgICAgICAgbWV0YWRhdGEucmVjb3JkUHJvcGVydHlUeXBlKHByb3BlcnR5S2V5LCBjb25zdHIpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IEdsb2JhbE1ldGFkYXRhIH0gZnJvbSAnLi4vbWV0YWRhdGEvR2xvYmFsTWV0YWRhdGEnO1xuaW1wb3J0IHsgTmV3YWJsZSB9IGZyb20gJy4uL3R5cGVzL05ld2FibGUnO1xuaW1wb3J0IHsgRmFjdG9yeUlkZW50aWZpZXIgfSBmcm9tICcuLi90eXBlcy9GYWN0b3J5SWRlbnRpZmllcic7XG5pbXBvcnQgeyBJZGVudGlmaWVyIH0gZnJvbSAnLi4vdHlwZXMvSWRlbnRpZmllcic7XG5pbXBvcnQgeyBJbnN0YW5jZSB9IGZyb20gJy4uL3R5cGVzL0luc3RhbmNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIEZhY3RvcnkoaWRlbnRpZmllcjogRmFjdG9yeUlkZW50aWZpZXIsIGluamVjdGlvbnM6IElkZW50aWZpZXJbXSA9IFtdKTogTWV0aG9kRGVjb3JhdG9yIHtcbiAgICByZXR1cm4gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nIHwgc3ltYm9sKSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gR2xvYmFsTWV0YWRhdGEuZ2V0SW5zdGFuY2UoKTtcbiAgICAgICAgY29uc3QgY2xhenogPSB0YXJnZXQuY29uc3RydWN0b3IgYXMgTmV3YWJsZTxJbnN0YW5jZTx1bmtub3duPj47XG5cbiAgICAgICAgbWV0YWRhdGEucmVjb3JkRmFjdG9yeShcbiAgICAgICAgICAgIGlkZW50aWZpZXIsXG4gICAgICAgICAgICAoY29udGFpbmVyLCBvd25lcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gY29udGFpbmVyLmdldEluc3RhbmNlKGNsYXp6LCBvd25lcik7XG4gICAgICAgICAgICAgICAgY29uc3QgZnVuYyA9IGluc3RhbmNlW3Byb3BlcnR5S2V5XTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZ1bmMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnN0YW5jZSA9IGNvbnRhaW5lci5nZXRJbnN0YW5jZShjbGF6eik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseShpbnN0YW5jZSwgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IGZ1bmM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluamVjdGlvbnNcbiAgICAgICAgKTtcbiAgICB9O1xufVxuIiwiZXhwb3J0IGVudW0gTGlmZWN5Y2xlIHtcbiAgICBQUkVfSU5KRUNUID0gJ2lvYy1zY29wZTpwcmUtaW5qZWN0JyxcbiAgICBQT1NUX0lOSkVDVCA9ICdpb2Mtc2NvcGU6cG9zdC1pbmplY3QnLFxuICAgIFBSRV9ERVNUUk9ZID0gJ2lvYy1zY29wZTpwcmUtZGVzdHJveSdcbn1cbiIsImltcG9ydCAncmVmbGVjdC1tZXRhZGF0YSc7XG5pbXBvcnQgeyBMaWZlY3ljbGUgfSBmcm9tICcuLi9mb3VuZGF0aW9uL0xpZmVjeWNsZSc7XG5pbXBvcnQgeyBDbGFzc01ldGFkYXRhIH0gZnJvbSAnLi4vbWV0YWRhdGEvQ2xhc3NNZXRhZGF0YSc7XG5pbXBvcnQgeyBNZXRhZGF0YUZhY3RvcnkgfSBmcm9tICcuLi9tZXRhZGF0YS9NZXRhZGF0YUZhY3RvcnknO1xuXG4vKipcbiAqIFVybiBjYWxscyB0aGUgbWV0aG9kcyBhbm5vdGF0ZWQgd2l0aCBAUG9zdEluamVjdCBvbmx5IG9uY2UsIGp1c3QgYWZ0ZXIgdGhlIGluamVjdGlvbiBvZiBwcm9wZXJ0aWVzLlxuICogQGFubm90YXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IExpZmVjeWNsZURlY29yYXRvciA9IChsaWZlY3ljbGU6IExpZmVjeWNsZSk6IE1ldGhvZERlY29yYXRvciA9PiB7XG4gICAgcmV0dXJuICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZyB8IHN5bWJvbCkgPT4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YSh0YXJnZXQuY29uc3RydWN0b3IsIENsYXNzTWV0YWRhdGEpO1xuICAgICAgICBtZXRhZGF0YS5hZGRMaWZlY3ljbGVNZXRob2QocHJvcGVydHlLZXksIGxpZmVjeWNsZSk7XG4gICAgfTtcbn07XG4iLCJpbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuaW1wb3J0IHsgTGlmZWN5Y2xlIH0gZnJvbSAnLi4vZm91bmRhdGlvbi9MaWZlY3ljbGUnO1xuaW1wb3J0IHsgTGlmZWN5Y2xlRGVjb3JhdG9yIH0gZnJvbSAnLi9MaWZlY3ljbGVEZWNvcmF0b3InO1xuXG4vKipcbiAqIFVybiBjYWxscyB0aGUgbWV0aG9kcyBhbm5vdGF0ZWQgd2l0aCBAUG9zdEluamVjdCBvbmx5IG9uY2UsIGp1c3QgYWZ0ZXIgdGhlIGluamVjdGlvbiBvZiBwcm9wZXJ0aWVzLlxuICogQGFubm90YXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IFBvc3RJbmplY3QgPSAoKTogTWV0aG9kRGVjb3JhdG9yID0+IExpZmVjeWNsZURlY29yYXRvcihMaWZlY3ljbGUuUE9TVF9JTkpFQ1QpO1xuIiwiaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcbmltcG9ydCB7IExpZmVjeWNsZSB9IGZyb20gJy4uL2ZvdW5kYXRpb24vTGlmZWN5Y2xlJztcbmltcG9ydCB7IExpZmVjeWNsZURlY29yYXRvciB9IGZyb20gJy4vTGlmZWN5Y2xlRGVjb3JhdG9yJztcblxuLyoqXG4gKiBVcm4gY2FsbHMgdGhlIG1ldGhvZHMgYW5ub3RhdGVkIHdpdGggQFBvc3RJbmplY3Qgb25seSBvbmNlLCBqdXN0IGFmdGVyIHRoZSBpbmplY3Rpb24gb2YgcHJvcGVydGllcy5cbiAqIEBhbm5vdGF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBQcmVJbmplY3QgPSAoKTogTWV0aG9kRGVjb3JhdG9yID0+IExpZmVjeWNsZURlY29yYXRvcihMaWZlY3ljbGUuUFJFX0lOSkVDVCk7XG4iLCJpbXBvcnQgeyBMaWZlY3ljbGVEZWNvcmF0b3IgfSBmcm9tICcuL0xpZmVjeWNsZURlY29yYXRvcic7XG5pbXBvcnQgeyBMaWZlY3ljbGUgfSBmcm9tICcuLi9mb3VuZGF0aW9uL0xpZmVjeWNsZSc7XG5cbmV4cG9ydCBjb25zdCBQcmVEZXN0cm95ID0gKCkgPT4gTGlmZWN5Y2xlRGVjb3JhdG9yKExpZmVjeWNsZS5QUkVfREVTVFJPWSk7XG4iLCJleHBvcnQgaW50ZXJmYWNlIEV2YWx1YXRpb25PcHRpb25zPE8sIEUgZXh0ZW5kcyBzdHJpbmcsIEEgPSB1bmtub3duPiB7XG4gICAgdHlwZTogRTtcbiAgICBvd25lcj86IE87XG4gICAgcHJvcGVydHlOYW1lPzogc3RyaW5nIHwgc3ltYm9sO1xuICAgIGV4dGVybmFsQXJncz86IEE7XG59XG5cbmV4cG9ydCBlbnVtIEV4cHJlc3Npb25UeXBlIHtcbiAgICBFTlYgPSAnaW5qZWN0LWVudmlyb25tZW50LXZhcmlhYmxlcycsXG4gICAgSlNPTl9QQVRIID0gJ2luamVjdC1qc29uLWRhdGEnLFxuICAgIEFSR1YgPSAnaW5qZWN0LWFyZ3YnXG59XG4iLCJleHBvcnQgY29uc3QgaXNOb2RlSnMgPSAoKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG4gICAgICAgIGNvbnN0IG9zID0gcmVxdWlyZSgnb3MnKTtcbiAgICAgICAgb3MuYXJjaCgpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59KSgpO1xuIiwiaW1wb3J0IHsgQ2xhc3NNZXRhZGF0YSB9IGZyb20gJy4uL21ldGFkYXRhL0NsYXNzTWV0YWRhdGEnO1xuaW1wb3J0IHsgR2xvYmFsTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS9HbG9iYWxNZXRhZGF0YSc7XG5pbXBvcnQgeyBNZXRhZGF0YUZhY3RvcnkgfSBmcm9tICcuLi9tZXRhZGF0YS9NZXRhZGF0YUZhY3RvcnknO1xuaW1wb3J0IHsgRXhwcmVzc2lvblR5cGUgfSBmcm9tICcuLi90eXBlcy9FdmFsdWF0ZU9wdGlvbnMnO1xuaW1wb3J0IHsgaXNOb2RlSnMgfSBmcm9tICcuLi9jb21tb24vaXNOb2RlSnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gVmFsdWU8QSA9IHVua25vd24+KGV4cHJlc3Npb246IHN0cmluZywgdHlwZTogRXhwcmVzc2lvblR5cGUgfCBzdHJpbmcsIGV4dGVybmFsQXJncz86IEEpOiBQcm9wZXJ0eURlY29yYXRvciB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgRXhwcmVzc2lvblR5cGUuRU5WOlxuICAgICAgICBjYXNlIEV4cHJlc3Npb25UeXBlLkFSR1Y6XG4gICAgICAgICAgICBpZiAoIWlzTm9kZUpzKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgXCIke3R5cGV9XCIgZXZhbHVhdG9yIG9ubHkgc3VwcG9ydHMgbm9kZWpzIGVudmlyb25tZW50IWApO1xuICAgICAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nIHwgc3ltYm9sKSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gTWV0YWRhdGFGYWN0b3J5LmdldE1ldGFkYXRhKHRhcmdldC5jb25zdHJ1Y3RvciwgQ2xhc3NNZXRhZGF0YSk7XG4gICAgICAgIGNvbnN0IHZhbHVlX3N5bWJvbCA9IFN5bWJvbCgnJyk7XG4gICAgICAgIG1ldGFkYXRhLnJlY29yZFByb3BlcnR5VHlwZShwcm9wZXJ0eUtleSwgdmFsdWVfc3ltYm9sKTtcbiAgICAgICAgR2xvYmFsTWV0YWRhdGEuZ2V0SW5zdGFuY2UoKS5yZWNvcmRGYWN0b3J5KHZhbHVlX3N5bWJvbCwgKGNvbnRhaW5lciwgb3duZXIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PlxuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5ldmFsdWF0ZTxzdHJpbmcsIHR5cGVvZiBvd25lciwgQT4oZXhwcmVzc2lvbiBhcyBzdHJpbmcsIHtcbiAgICAgICAgICAgICAgICAgICAgb3duZXIsXG4gICAgICAgICAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGV4dGVybmFsQXJnc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xufVxuIiwiaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcbmltcG9ydCB7IE1ldGFkYXRhRmFjdG9yeSB9IGZyb20gJy4uL21ldGFkYXRhL01ldGFkYXRhRmFjdG9yeSc7XG5pbXBvcnQgeyBDbGFzc01ldGFkYXRhIH0gZnJvbSAnLi4vbWV0YWRhdGEvQ2xhc3NNZXRhZGF0YSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBNYXJrKGtleTogc3RyaW5nIHwgc3ltYm9sLCB2YWx1ZTogdW5rbm93biA9IHRydWUpOiBGdW5jdGlvbiB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChcbiAgICAgICAgLi4uYXJnczpcbiAgICAgICAgICAgIHwgUGFyYW1ldGVyczxDbGFzc0RlY29yYXRvcj5cbiAgICAgICAgICAgIHwgUGFyYW1ldGVyczxNZXRob2REZWNvcmF0b3I+XG4gICAgICAgICAgICB8IFBhcmFtZXRlcnM8UHJvcGVydHlEZWNvcmF0b3I+XG4gICAgICAgICAgICB8IFBhcmFtZXRlcnM8UGFyYW1ldGVyRGVjb3JhdG9yPlxuICAgICkge1xuICAgICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIC8vIGNsYXNzIGRlY29yYXRvclxuICAgICAgICAgICAgY29uc3QgbWV0YWRhdGEgPSBNZXRhZGF0YUZhY3RvcnkuZ2V0TWV0YWRhdGEoYXJnc1swXSwgQ2xhc3NNZXRhZGF0YSk7XG4gICAgICAgICAgICBtZXRhZGF0YS5tYXJrZXIoKS5jdG9yKGtleSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAvLyBwcm9wZXJ0eSBkZWNvcmF0b3JcbiAgICAgICAgICAgIGNvbnN0IFtwcm90b3R5cGUsIHByb3BlcnR5S2V5XSA9IGFyZ3M7XG4gICAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YShwcm90b3R5cGUuY29uc3RydWN0b3IsIENsYXNzTWV0YWRhdGEpO1xuICAgICAgICAgICAgbWV0YWRhdGEubWFya2VyKCkubWVtYmVyKHByb3BlcnR5S2V5KS5tYXJrKGtleSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAzICYmIHR5cGVvZiBhcmdzWzJdID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgLy8gcGFyYW1ldGVyIGRlY29yYXRvclxuICAgICAgICAgICAgY29uc3QgW3Byb3RvdHlwZSwgcHJvcGVydHlLZXksIGluZGV4XSA9IGFyZ3M7XG4gICAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YShwcm90b3R5cGUuY29uc3RydWN0b3IsIENsYXNzTWV0YWRhdGEpO1xuICAgICAgICAgICAgbWV0YWRhdGEubWFya2VyKCkucGFyYW1ldGVyKHByb3BlcnR5S2V5LCBpbmRleCkubWFyayhrZXksIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIG1ldGhvZCBkZWNvcmF0b3JcbiAgICAgICAgICAgIGNvbnN0IFtwcm90b3R5cGUsIHByb3BlcnR5S2V5XSA9IGFyZ3M7XG4gICAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YShwcm90b3R5cGUuY29uc3RydWN0b3IsIENsYXNzTWV0YWRhdGEpO1xuICAgICAgICAgICAgbWV0YWRhdGEubWFya2VyKCkubWVtYmVyKHByb3BlcnR5S2V5KS5tYXJrKGtleSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IEFueUZ1bmN0aW9uIH0gZnJvbSAnLi4vdHlwZXMvQW55RnVuY3Rpb24nO1xuXG5leHBvcnQgdHlwZSBFdmVudExpc3RlbmVyID0gQW55RnVuY3Rpb247XG5leHBvcnQgY2xhc3MgRXZlbnRFbWl0dGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV2ZW50cyA9IG5ldyBNYXA8c3RyaW5nIHwgc3ltYm9sLCBFdmVudExpc3RlbmVyW10+KCk7XG5cbiAgICBvbih0eXBlOiBzdHJpbmcgfCBzeW1ib2wsIGxpc3RlbmVyOiBFdmVudExpc3RlbmVyKSB7XG4gICAgICAgIGxldCBsaXN0ZW5lcnMgPSB0aGlzLmV2ZW50cy5nZXQodHlwZSk7XG4gICAgICAgIGlmIChsaXN0ZW5lcnMpIHtcbiAgICAgICAgICAgIGlmIChsaXN0ZW5lcnMuaW5kZXhPZihsaXN0ZW5lcikgPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBsaXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsaXN0ZW5lcnMgPSBbbGlzdGVuZXJdO1xuICAgICAgICAgICAgdGhpcy5ldmVudHMuc2V0KHR5cGUsIGxpc3RlbmVycyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxzID0gbGlzdGVuZXJzIGFzIEV2ZW50TGlzdGVuZXJbXTtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gbHMuaW5kZXhPZihsaXN0ZW5lcik7XG4gICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIGxzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuICAgIGVtaXQodHlwZTogc3RyaW5nIHwgc3ltYm9sLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgICAgdGhpcy5ldmVudHMuZ2V0KHR5cGUpPy5mb3JFYWNoKGZuID0+IHtcbiAgICAgICAgICAgIGZuKC4uLmFyZ3MpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBJZGVudGlmaWVyIH0gZnJvbSAnLi4vdHlwZXMvSWRlbnRpZmllcic7XG5cbnR5cGUgSW52b2tlRnVuY3Rpb25BcmdzID0ge1xuICAgIGFyZ3M/OiB1bmtub3duW107XG59O1xudHlwZSBJbnZva2VGdW5jdGlvbkluamVjdGlvbnMgPSB7XG4gICAgaW5qZWN0aW9ucz86IElkZW50aWZpZXJbXTtcbn07XG5cbnR5cGUgSW52b2tlRnVuY3Rpb25CYXNpY09wdGlvbnM8VD4gPSB7XG4gICAgY29udGV4dD86IFQ7XG59O1xuXG5leHBvcnQgdHlwZSBJbnZva2VGdW5jdGlvbk9wdGlvbnM8VD4gPVxuICAgIHwgKEludm9rZUZ1bmN0aW9uQmFzaWNPcHRpb25zPFQ+ICYgSW52b2tlRnVuY3Rpb25BcmdzKVxuICAgIHwgKEludm9rZUZ1bmN0aW9uQmFzaWNPcHRpb25zPFQ+ICYgSW52b2tlRnVuY3Rpb25JbmplY3Rpb25zKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0FyZ3M8VD4ob3B0aW9uczogSW52b2tlRnVuY3Rpb25PcHRpb25zPFQ+KTogb3B0aW9ucyBpcyBJbnZva2VGdW5jdGlvbkJhc2ljT3B0aW9uczxUPiAmIEludm9rZUZ1bmN0aW9uQXJncyB7XG4gICAgcmV0dXJuICdhcmdzJyBpbiBvcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzSW5qZWN0aW9uczxUPihcbiAgICBvcHRpb25zOiBJbnZva2VGdW5jdGlvbk9wdGlvbnM8VD5cbik6IG9wdGlvbnMgaXMgSW52b2tlRnVuY3Rpb25CYXNpY09wdGlvbnM8VD4gJiBJbnZva2VGdW5jdGlvbkluamVjdGlvbnMge1xuICAgIHJldHVybiAnaW5qZWN0aW9ucycgaW4gb3B0aW9ucztcbn1cbiIsIlwidXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO1xuLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cblxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXG5cblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXG52YXIgZT1mdW5jdGlvbigpe3JldHVybiBlPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPTEsbj1hcmd1bWVudHMubGVuZ3RoO3I8bjtyKyspZm9yKHZhciBvIGluIHQ9YXJndW1lbnRzW3JdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG8pJiYoZVtvXT10W29dKTtyZXR1cm4gZX0sZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Z1bmN0aW9uIHQoKXt9dmFyIHI9e30sbj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5ldmFsdWF0ZVJlc3VsdD1yLHRoaXMuY29udGV4dD1lLnRhcmdldCx0aGlzLmNvbXB1dGVGbj1lLmV2YWx1YXRlLHRoaXMucmVzZXRUZXN0ZXI9ZS5yZXNldFRlc3RlcnN9cmV0dXJuIGUucHJvdG90eXBlLnJlbGVhc2U9ZnVuY3Rpb24oKXt0aGlzLnJlc2V0KHQpfSxlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbihlKXt0aGlzLmV2YWx1YXRlUmVzdWx0PXIsdGhpcy5jb21wdXRlRm49ZXx8dGhpcy5jb21wdXRlRm59LGUucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKCl7dGhpcy5pc1ByZXNlbnQoKSYmIXRoaXMubmVlZFJlc2V0KCl8fCh0aGlzLmV2YWx1YXRlUmVzdWx0PXRoaXMuY29tcHV0ZUZuLmNhbGwodGhpcy5jb250ZXh0LHRoaXMuY29udGV4dCkpfSxlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZSgpLHRoaXMuZXZhbHVhdGVSZXN1bHR9LGUucHJvdG90eXBlLmlzUHJlc2VudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmV2YWx1YXRlUmVzdWx0IT09cn0sZS5wcm90b3R5cGUubmVlZFJlc2V0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5yZXNldFRlc3Rlci5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdChlLmNvbnRleHQpfSkpfSxlfSgpO2Z1bmN0aW9uIG8odCxyLG8pe3ZhciB1O3U9XCJmdW5jdGlvblwiPT10eXBlb2Ygbz97ZXZhbHVhdGU6b306ZSh7fSxvKTt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik7aWYoYSYmIWEuY29uZmlndXJhYmxlKXRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBvdmVycmlkZSBvdmVycmlkZSBwcm9wZXJ0eTogXCIrU3RyaW5nKHIpKTt2YXIgaT1cImJvb2xlYW5cIj09dHlwZW9mIHUuZW51bWVyYWJsZT91LmVudW1lcmFibGU6KG51bGw9PWE/dm9pZCAwOmEuZW51bWVyYWJsZSl8fCEwLHM9dS5yZXNldEJ5fHxbXSxsPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUsdCxyLG8pe2UuX19sYXp5X198fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19sYXp5X19cIix7dmFsdWU6e30sZW51bWVyYWJsZTohMSx3cml0YWJsZTohMSxjb25maWd1cmFibGU6ITF9KTt2YXIgdT1lLl9fbGF6eV9fO2lmKCF1W3RdKXt2YXIgYT1vLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGV8fFwibnVtYmVyXCI9PXR5cGVvZiBlfHxcInN5bWJvbFwiPT10eXBlb2YgZT9mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIG49cltlXSxvPW4hPT10O3JldHVybiB0PW4sb319KGUpOih0PWUsZnVuY3Rpb24oZSl7dmFyIG49dChlKSxvPW4hPT1yO3JldHVybiByPW4sb30pO3ZhciB0LHJ9KSk7dVt0XT1uZXcgbih7dGFyZ2V0OmUsZXZhbHVhdGU6cixyZXNldFRlc3RlcnM6YX0pfXJldHVybiB1W3RdfSh0aGlzLHIsdS5ldmFsdWF0ZSxzKX07cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOmksZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGwuY2FsbCh0aGlzKS5nZXQoKX19KSxsfWZ1bmN0aW9uIHUoZSx0LHIpe3JldHVybiBvKGUsdCxyKS5jYWxsKGUpfWV4cG9ydHMubGF6eU1lbWJlcj1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxyKXtvKHQscixlKX19LGV4cG9ydHMubGF6eU1lbWJlck9mQ2xhc3M9ZnVuY3Rpb24oZSx0LHIpe28oZS5wcm90b3R5cGUsdCxyKX0sZXhwb3J0cy5sYXp5UHJvcD11LGV4cG9ydHMubGF6eVZhbD1mdW5jdGlvbihlKXtyZXR1cm4gdSh7X192YWxfXzpudWxsfSxcIl9fdmFsX19cIixlKX07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5janMuanMubWFwXG4iLCJpbXBvcnQgeyBOZXdhYmxlIH0gZnJvbSAnLi4vdHlwZXMvTmV3YWJsZSc7XG5pbXBvcnQgeyBDbGFzc01ldGFkYXRhLCBDbGFzc01ldGFkYXRhUmVhZGVyIH0gZnJvbSAnLi4vbWV0YWRhdGEvQ2xhc3NNZXRhZGF0YSc7XG5pbXBvcnQgeyBNZXRhZGF0YUZhY3RvcnkgfSBmcm9tICcuLi9tZXRhZGF0YS9NZXRhZGF0YUZhY3RvcnknO1xuaW1wb3J0IHsgTGlmZWN5Y2xlIH0gZnJvbSAnLi9MaWZlY3ljbGUnO1xuaW1wb3J0IHsgSW5zdGFuY2UgfSBmcm9tICcuLi90eXBlcy9JbnN0YW5jZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkNvbnRleHQgfSBmcm9tICcuL0FwcGxpY2F0aW9uQ29udGV4dCc7XG5cbmV4cG9ydCBjbGFzcyBMaWZlY3ljbGVNYW5hZ2VyPFQgPSB1bmtub3duPiB7XG4gICAgcHJpdmF0ZSBjbGFzc01ldGFkYXRhUmVhZGVyOiBDbGFzc01ldGFkYXRhUmVhZGVyPFQ+O1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50Q2xhc3M6IE5ld2FibGU8VD4sIHByaXZhdGUgcmVhZG9ubHkgY29udGFpbmVyOiBBcHBsaWNhdGlvbkNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5jbGFzc01ldGFkYXRhUmVhZGVyID0gTWV0YWRhdGFGYWN0b3J5LmdldE1ldGFkYXRhKHRoaXMuY29tcG9uZW50Q2xhc3MsIENsYXNzTWV0YWRhdGEpLnJlYWRlcigpO1xuICAgIH1cbiAgICBpbnZva2VQcmVJbmplY3RNZXRob2QoaW5zdGFuY2U6IEluc3RhbmNlPFQ+KSB7XG4gICAgICAgIGNvbnN0IG1ldGhvZHMgPSB0aGlzLmNsYXNzTWV0YWRhdGFSZWFkZXIuZ2V0TWV0aG9kcyhMaWZlY3ljbGUuUFJFX0lOSkVDVCk7XG4gICAgICAgIHRoaXMuaW52b2tlTGlmZWN5Y2xlTWV0aG9kcyhpbnN0YW5jZSwgbWV0aG9kcyk7XG4gICAgfVxuICAgIGludm9rZVBvc3RJbmplY3RNZXRob2QoaW5zdGFuY2U6IEluc3RhbmNlPFQ+KSB7XG4gICAgICAgIGNvbnN0IG1ldGhvZHMgPSB0aGlzLmNsYXNzTWV0YWRhdGFSZWFkZXIuZ2V0TWV0aG9kcyhMaWZlY3ljbGUuUE9TVF9JTkpFQ1QpO1xuICAgICAgICB0aGlzLmludm9rZUxpZmVjeWNsZU1ldGhvZHMoaW5zdGFuY2UsIG1ldGhvZHMpO1xuICAgIH1cbiAgICBpbnZva2VQcmVEZXN0cm95SW5qZWN0TWV0aG9kKGluc3RhbmNlOiBJbnN0YW5jZTxUPikge1xuICAgICAgICBjb25zdCBtZXRob2RzID0gdGhpcy5jbGFzc01ldGFkYXRhUmVhZGVyLmdldE1ldGhvZHMoTGlmZWN5Y2xlLlBSRV9ERVNUUk9ZKTtcbiAgICAgICAgdGhpcy5pbnZva2VMaWZlY3ljbGVNZXRob2RzKGluc3RhbmNlLCBtZXRob2RzKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBpbnZva2VMaWZlY3ljbGVNZXRob2RzKGluc3RhbmNlOiBJbnN0YW5jZTxUPiwgbWV0aG9kS2V5czogQXJyYXk8c3RyaW5nIHwgc3ltYm9sPikge1xuICAgICAgICBtZXRob2RLZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyLmludm9rZShpbnN0YW5jZVtrZXldLCB7XG4gICAgICAgICAgICAgICAgY29udGV4dDogaW5zdGFuY2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBOZXdhYmxlIH0gZnJvbSAnLi4vdHlwZXMvTmV3YWJsZSc7XG5pbXBvcnQgeyBDbGFzc01ldGFkYXRhLCBDbGFzc01ldGFkYXRhUmVhZGVyIH0gZnJvbSAnLi4vbWV0YWRhdGEvQ2xhc3NNZXRhZGF0YSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkNvbnRleHQgfSBmcm9tICcuL0FwcGxpY2F0aW9uQ29udGV4dCc7XG5pbXBvcnQgeyBJbnN0YW5jZSB9IGZyb20gJy4uL3R5cGVzL0luc3RhbmNlJztcbmltcG9ydCB7IFNlcnZpY2VGYWN0b3J5RGVmIH0gZnJvbSAnLi9TZXJ2aWNlRmFjdG9yeURlZic7XG5pbXBvcnQgeyBHbG9iYWxNZXRhZGF0YSB9IGZyb20gJy4uL21ldGFkYXRhL0dsb2JhbE1ldGFkYXRhJztcbmltcG9ydCB7IGxhenlQcm9wIH0gZnJvbSAnQHZnZXJib3QvbGF6eSc7XG5pbXBvcnQgeyBNZXRhZGF0YUZhY3RvcnkgfSBmcm9tICcuLi9tZXRhZGF0YS9NZXRhZGF0YUZhY3RvcnknO1xuaW1wb3J0IHsgSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yTWFuYWdlciB9IGZyb20gJy4vSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yTWFuYWdlcic7XG5pbXBvcnQgeyBMaWZlY3ljbGVNYW5hZ2VyIH0gZnJvbSAnLi9MaWZlY3ljbGVNYW5hZ2VyJztcblxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEluc3RhbmNlQnVpbGRlcjxUPiB7XG4gICAgcHJpdmF0ZSBnZXRDb25zdHJ1Y3RvckFyZ3M6ICgpID0+IHVua25vd25bXSA9ICgpID0+IFtdO1xuICAgIHByaXZhdGUgcHJvcGVydHlGYWN0b3JpZXM6IFJlY29yZDxzdHJpbmcgfCBzeW1ib2wsIFNlcnZpY2VGYWN0b3J5RGVmPHVua25vd24+PiA9IHt9O1xuICAgIHByaXZhdGUgbGF6eU1vZGU6IGJvb2xlYW4gPSB0cnVlO1xuICAgIHByaXZhdGUgbGlmZWN5Y2xlUmVzb2x2ZXI6IExpZmVjeWNsZU1hbmFnZXI8VD47XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50Q2xhc3M6IE5ld2FibGU8VD4sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29udGFpbmVyOiBBcHBsaWNhdGlvbkNvbnRleHQsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5zdEF3YXJlUHJvY2Vzc29yTWFuYWdlcjogSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yTWFuYWdlclxuICAgICkge1xuICAgICAgICB0aGlzLmxpZmVjeWNsZVJlc29sdmVyID0gbmV3IExpZmVjeWNsZU1hbmFnZXI8VD4oY29tcG9uZW50Q2xhc3MsIGNvbnRhaW5lcik7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YShjb21wb25lbnRDbGFzcywgQ2xhc3NNZXRhZGF0YSkucmVhZGVyKCk7XG4gICAgICAgIHRoaXMuYXBwZW5kQ2xhc3NNZXRhZGF0YShyZWFkZXIpO1xuICAgIH1cbiAgICBhcHBlbmRMYXp5TW9kZShsYXp5TW9kZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmxhenlNb2RlID0gbGF6eU1vZGU7XG4gICAgfVxuICAgIHByaXZhdGUgYXBwZW5kQ2xhc3NNZXRhZGF0YTxUPihjbGFzc01ldGFkYXRhUmVhZGVyOiBDbGFzc01ldGFkYXRhUmVhZGVyPFQ+KSB7XG4gICAgICAgIGNvbnN0IHR5cGVzID0gY2xhc3NNZXRhZGF0YVJlYWRlci5nZXRDb25zdHJ1Y3RvclBhcmFtZXRlclR5cGVzKCk7XG4gICAgICAgIHRoaXMuZ2V0Q29uc3RydWN0b3JBcmdzID0gKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVzLm1hcChpdCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyLmdldEluc3RhbmNlKGl0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBnbG9iYWxNZXRhZGF0YVJlYWRlciA9IEdsb2JhbE1ldGFkYXRhLmdldEluc3RhbmNlKCkucmVhZGVyKCk7XG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBjbGFzc01ldGFkYXRhUmVhZGVyLmdldFByb3BlcnR5VHlwZU1hcCgpO1xuICAgICAgICBmb3IgKGNvbnN0IFtwcm9wZXJ0eU5hbWUsIHByb3BlcnR5VHlwZV0gb2YgcHJvcGVydGllcykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eVR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BlcnR5RmFjdG9yaWVzW3Byb3BlcnR5TmFtZV0gPSBuZXcgU2VydmljZUZhY3RvcnlEZWYoKGNvbnRhaW5lciwgb3duZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IGNvbnRhaW5lci5nZXRJbnN0YW5jZShwcm9wZXJ0eVR5cGUsIG93bmVyKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLmNvbnRhaW5lci5nZXRGYWN0b3J5KHByb3BlcnR5VHlwZSk7XG4gICAgICAgICAgICBpZiAoZmFjdG9yeSkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvcGVydHlGYWN0b3JpZXNbcHJvcGVydHlOYW1lXSA9IGZhY3Rvcnk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eUNsYXNzTWV0YWRhdGEgPSBnbG9iYWxNZXRhZGF0YVJlYWRlci5nZXRDbGFzc01ldGFkYXRhKHByb3BlcnR5VHlwZSk7XG4gICAgICAgICAgICBpZiAocHJvcGVydHlDbGFzc01ldGFkYXRhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eUZhY3Rvcmllc1twcm9wZXJ0eU5hbWVdID0gU2VydmljZUZhY3RvcnlEZWYuY3JlYXRlRnJvbUNsYXNzTWV0YWRhdGEocHJvcGVydHlDbGFzc01ldGFkYXRhKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5RmFjdG9yeSA9IGdsb2JhbE1ldGFkYXRhUmVhZGVyLmdldENvbXBvbmVudEZhY3RvcnkocHJvcGVydHlUeXBlKTtcbiAgICAgICAgICAgIGlmIChwcm9wZXJ0eUZhY3RvcnkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BlcnR5RmFjdG9yaWVzW3Byb3BlcnR5TmFtZV0gPSBwcm9wZXJ0eUZhY3Rvcnk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYnVpbGQoKSB7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSB0aGlzLmdldENvbnN0cnVjdG9yQXJncygpO1xuICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5jcmVhdGVQcm9wZXJ0aWVzR2V0dGVyQnVpbGRlcigpO1xuICAgICAgICBjb25zdCBpc0NyZWF0aW5nSW5zdEF3YXJlUHJvY2Vzc29yID0gdGhpcy5pbnN0QXdhcmVQcm9jZXNzb3JNYW5hZ2VyLmlzSW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3ModGhpcy5jb21wb25lbnRDbGFzcyk7XG4gICAgICAgIGlmIChpc0NyZWF0aW5nSW5zdEF3YXJlUHJvY2Vzc29yKSB7XG4gICAgICAgICAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyB0aGlzLmNvbXBvbmVudENsYXNzKC4uLmFyZ3MpIGFzIEluc3RhbmNlPFQ+O1xuICAgICAgICAgICAgdGhpcy5saWZlY3ljbGVSZXNvbHZlci5pbnZva2VQcmVJbmplY3RNZXRob2QoaW5zdGFuY2UpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdldHRlciA9IHByb3BlcnRpZXNba2V5XShpbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWZpbmVQcm9wZXJ0eShpbnN0YW5jZSwga2V5LCBnZXR0ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5saWZlY3ljbGVSZXNvbHZlci5pbnZva2VQb3N0SW5qZWN0TWV0aG9kKGluc3RhbmNlKTtcbiAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBpbnN0YW5jZTogdW5kZWZpbmVkIHwgSW5zdGFuY2U8VD4gPSB0aGlzLmluc3RBd2FyZVByb2Nlc3Nvck1hbmFnZXIuYmVmb3JlSW5zdGFudGlhdGlvbih0aGlzLmNvbXBvbmVudENsYXNzLCBhcmdzKTtcbiAgICAgICAgICAgIGlmICghaW5zdGFuY2UpIHtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IG5ldyB0aGlzLmNvbXBvbmVudENsYXNzKC4uLmFyZ3MpIGFzIEluc3RhbmNlPFQ+O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5saWZlY3ljbGVSZXNvbHZlci5pbnZva2VQcmVJbmplY3RNZXRob2QoaW5zdGFuY2UpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdldHRlciA9IHByb3BlcnRpZXNba2V5XShpbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWZpbmVQcm9wZXJ0eShpbnN0YW5jZSwga2V5LCBnZXR0ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5zdGFuY2UgPSB0aGlzLmluc3RBd2FyZVByb2Nlc3Nvck1hbmFnZXIuYWZ0ZXJJbnN0YW50aWF0aW9uKGluc3RhbmNlKTtcbiAgICAgICAgICAgIHRoaXMubGlmZWN5Y2xlUmVzb2x2ZXIuaW52b2tlUG9zdEluamVjdE1ldGhvZChpbnN0YW5jZSk7XG4gICAgICAgICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpdmF0ZSBkZWZpbmVQcm9wZXJ0eTxULCBWPihpbnN0YW5jZTogVCwga2V5OiBzdHJpbmcgfCBzeW1ib2wsIGdldHRlcjogKCkgPT4gVikge1xuICAgICAgICBpZiAodGhpcy5sYXp5TW9kZSkge1xuICAgICAgICAgICAgbGF6eVByb3AoaW5zdGFuY2UsIGtleSwgZ2V0dGVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGluc3RhbmNlW2tleV0gPSBnZXR0ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcml2YXRlIGNyZWF0ZVByb3BlcnRpZXNHZXR0ZXJCdWlsZGVyKCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7fSBhcyBSZWNvcmQ8a2V5b2YgVCwgKGluc3RhbmNlOiBUKSA9PiAoKSA9PiB1bmtub3duPjtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5wcm9wZXJ0eUZhY3Rvcmllcykge1xuICAgICAgICAgICAgY29uc3QgeyBmYWN0b3J5LCBpbmplY3Rpb25zIH0gPSB0aGlzLnByb3BlcnR5RmFjdG9yaWVzW2tleV07XG4gICAgICAgICAgICByZXN1bHRba2V5IGFzIGtleW9mIFRdID0gPFQ+KGluc3RhbmNlOiBUKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm4gPSBmYWN0b3J5KHRoaXMuY29udGFpbmVyLCBpbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyLmludm9rZShmbiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5qZWN0aW9uc1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cbiIsImltcG9ydCAncmVmbGVjdC1tZXRhZGF0YSc7XG5pbXBvcnQgeyBNZXRhZGF0YSB9IGZyb20gJy4uL3R5cGVzL01ldGFkYXRhJztcbmltcG9ydCB7IElkZW50aWZpZXIgfSBmcm9tICcuLi90eXBlcy9JZGVudGlmaWVyJztcbmltcG9ydCB7IEluc3RhbmNlU2NvcGUgfSBmcm9tICcuLi9mb3VuZGF0aW9uL0luc3RhbmNlU2NvcGUnO1xuXG5leHBvcnQgY29uc3QgRlVOQ1RJT05fTUVUQURBVEFfS0VZID0gU3ltYm9sKCdpb2M6ZnVuY3Rpb24tbWV0YWRhdGEnKTtcblxuZXhwb3J0IGludGVyZmFjZSBGdW5jdGlvbk1ldGFkYXRhUmVhZGVyIHtcbiAgICBnZXRQYXJhbWV0ZXJzKCk6IElkZW50aWZpZXJbXTtcbiAgICBpc0ZhY3RvcnkoKTogYm9vbGVhbjtcbiAgICBnZXRTY29wZSgpOiBJbnN0YW5jZVNjb3BlIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25NZXRhZGF0YSBpbXBsZW1lbnRzIE1ldGFkYXRhPEZ1bmN0aW9uTWV0YWRhdGFSZWFkZXIsIEZ1bmN0aW9uPiB7XG4gICAgc3RhdGljIGdldFJlZmxlY3RLZXkoKSB7XG4gICAgICAgIHJldHVybiBGVU5DVElPTl9NRVRBREFUQV9LRVk7XG4gICAgfVxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFyYW1ldGVyczogSWRlbnRpZmllcltdID0gW107XG4gICAgcHJpdmF0ZSBzY29wZT86IEluc3RhbmNlU2NvcGU7XG4gICAgcHJpdmF0ZSBpc0ZhY3Rvcnk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBzZXRQYXJhbWV0ZXJUeXBlKGluZGV4OiBudW1iZXIsIHN5bWJvbDogSWRlbnRpZmllcikge1xuICAgICAgICB0aGlzLnBhcmFtZXRlcnNbaW5kZXhdID0gc3ltYm9sO1xuICAgIH1cbiAgICBzZXRTY29wZShzY29wZTogSW5zdGFuY2VTY29wZSkge1xuICAgICAgICB0aGlzLnNjb3BlID0gc2NvcGU7XG4gICAgfVxuICAgIHNldElzRmFjdG9yeShpc0ZhY3Rvcnk6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5pc0ZhY3RvcnkgPSBpc0ZhY3Rvcnk7XG4gICAgfVxuICAgIGluaXQoKSB7XG4gICAgICAgIC8vIFBBU1M7XG4gICAgfVxuICAgIHJlYWRlcigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldFBhcmFtZXRlcnM6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzLnNsaWNlKDApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzRmFjdG9yeTogKCkgPT4gdGhpcy5pc0ZhY3RvcnksXG4gICAgICAgICAgICBnZXRTY29wZTogKCkgPT4gdGhpcy5zY29wZVxuICAgICAgICB9O1xuICAgIH1cbn1cbiIsImxldCBpbnN0YW5jZVNlcmlhbE5vID0gLTE7XG5cbmV4cG9ydCBjbGFzcyBDb21wb25lbnRJbnN0YW5jZVdyYXBwZXIge1xuICAgIHB1YmxpYyByZWFkb25seSBzZXJpYWxObyA9ICsraW5zdGFuY2VTZXJpYWxObztcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBpbnN0YW5jZTogdW5rbm93bikge31cblxuICAgIHB1YmxpYyBjb21wYXJlVG8ob3RoZXI6IENvbXBvbmVudEluc3RhbmNlV3JhcHBlcik6IC0xIHwgMCB8IDEge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXJpYWxObyA+IG90aGVyLnNlcmlhbE5vID8gLTEgOiB0aGlzLnNlcmlhbE5vIDwgb3RoZXIuc2VyaWFsTm8gPyAxIDogMDtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBNZXRhZGF0YUZhY3RvcnkgfSBmcm9tICcuLi9tZXRhZGF0YS9NZXRhZGF0YUZhY3RvcnknO1xuaW1wb3J0IHsgQ2xhc3NNZXRhZGF0YSB9IGZyb20gJy4uL21ldGFkYXRhL0NsYXNzTWV0YWRhdGEnO1xuaW1wb3J0IHsgTGlmZWN5Y2xlIH0gZnJvbSAnLi4vZm91bmRhdGlvbi9MaWZlY3ljbGUnO1xuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlUHJlRGVzdHJveShpbnN0YW5jZTogdW5rbm93bikge1xuICAgIGNvbnN0IGNsYXp6ID0gaW5zdGFuY2U/LmNvbnN0cnVjdG9yO1xuICAgIGlmICghY2xhenopIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YShjbGF6eiwgQ2xhc3NNZXRhZGF0YSk7XG4gICAgY29uc3QgcHJlRGVzdHJveU1ldGhvZHMgPSBtZXRhZGF0YS5nZXRNZXRob2RzKExpZmVjeWNsZS5QUkVfREVTVFJPWSk7XG4gICAgcHJlRGVzdHJveU1ldGhvZHMuZm9yRWFjaChtZXRob2ROYW1lID0+IHtcbiAgICAgICAgY29uc3QgbWV0aG9kID0gY2xhenoucHJvdG90eXBlW21ldGhvZE5hbWVdO1xuICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgbWV0aG9kLmFwcGx5KGluc3RhbmNlKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuIiwiaW1wb3J0IHsgR2V0SW5zdGFuY2VPcHRpb25zLCBJbnN0YW5jZVJlc29sdXRpb24sIFNhdmVJbnN0YW5jZU9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9JbnN0YW5jZVJlc29sdXRpb24nO1xuaW1wb3J0IHsgSWRlbnRpZmllciB9IGZyb20gJy4uL3R5cGVzL0lkZW50aWZpZXInO1xuaW1wb3J0IHsgQ29tcG9uZW50SW5zdGFuY2VXcmFwcGVyIH0gZnJvbSAnLi4vZm91bmRhdGlvbi9Db21wb25lbnRJbnN0YW5jZVdyYXBwZXInO1xuaW1wb3J0IHsgaW52b2tlUHJlRGVzdHJveSB9IGZyb20gJy4uL2NvbW1vbi9pbnZva2VQcmVEZXN0cm95JztcblxuZXhwb3J0IGNsYXNzIFNpbmdsZXRvbkluc3RhbmNlUmVzb2x1dGlvbiBpbXBsZW1lbnRzIEluc3RhbmNlUmVzb2x1dGlvbiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBJTlNUQU5DRV9NQVAgPSBuZXcgTWFwPElkZW50aWZpZXIsIENvbXBvbmVudEluc3RhbmNlV3JhcHBlcj4oKTtcbiAgICBnZXRJbnN0YW5jZTxULCBPPihvcHRpb25zOiBHZXRJbnN0YW5jZU9wdGlvbnM8VCwgTz4pOiBUIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuSU5TVEFOQ0VfTUFQLmdldChvcHRpb25zLmlkZW50aWZpZXIpPy5pbnN0YW5jZSBhcyBUO1xuICAgIH1cblxuICAgIHNhdmVJbnN0YW5jZTxULCBPPihvcHRpb25zOiBTYXZlSW5zdGFuY2VPcHRpb25zPFQsIE8+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuSU5TVEFOQ0VfTUFQLnNldChvcHRpb25zLmlkZW50aWZpZXIsIG5ldyBDb21wb25lbnRJbnN0YW5jZVdyYXBwZXIob3B0aW9ucy5pbnN0YW5jZSkpO1xuICAgIH1cblxuICAgIHNob3VsZEdlbmVyYXRlPFQsIE8+KG9wdGlvbnM6IEdldEluc3RhbmNlT3B0aW9uczxULCBPPik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuSU5TVEFOQ0VfTUFQLmhhcyhvcHRpb25zLmlkZW50aWZpZXIpO1xuICAgIH1cbiAgICBkZXN0cm95KCkge1xuICAgICAgICBjb25zdCBpbnN0YW5jZVdyYXBwZXJzID0gQXJyYXkuZnJvbSh0aGlzLklOU1RBTkNFX01BUC52YWx1ZXMoKSk7XG4gICAgICAgIGluc3RhbmNlV3JhcHBlcnMuc29ydCgoYSwgYikgPT4gYS5jb21wYXJlVG8oYikpO1xuICAgICAgICBpbnN0YW5jZVdyYXBwZXJzLmZvckVhY2goaW5zdGFuY2VXcmFwcGVyID0+IHtcbiAgICAgICAgICAgIGludm9rZVByZURlc3Ryb3koaW5zdGFuY2VXcmFwcGVyLmluc3RhbmNlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuSU5TVEFOQ0VfTUFQLmNsZWFyKCk7XG4gICAgfVxufVxuIiwiaW1wb3J0IHsgR2V0SW5zdGFuY2VPcHRpb25zLCBJbnN0YW5jZVJlc29sdXRpb24sIFNhdmVJbnN0YW5jZU9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9JbnN0YW5jZVJlc29sdXRpb24nO1xuaW1wb3J0IHsgU2luZ2xldG9uSW5zdGFuY2VSZXNvbHV0aW9uIH0gZnJvbSAnLi9TaW5nbGV0b25JbnN0YW5jZVJlc29sdXRpb24nO1xuXG5jb25zdCBTSU5HTEVUT05fSU5TVEFOQ0VfU0lOR0xFVE9OID0gbmV3IFNpbmdsZXRvbkluc3RhbmNlUmVzb2x1dGlvbigpO1xuXG5leHBvcnQgY2xhc3MgR2xvYmFsU2hhcmVkSW5zdGFuY2VSZXNvbHV0aW9uIGltcGxlbWVudHMgSW5zdGFuY2VSZXNvbHV0aW9uIHtcbiAgICBnZXRJbnN0YW5jZTxULCBPPihvcHRpb25zOiBHZXRJbnN0YW5jZU9wdGlvbnM8VCwgTz4pOiBUIHtcbiAgICAgICAgcmV0dXJuIFNJTkdMRVRPTl9JTlNUQU5DRV9TSU5HTEVUT04uZ2V0SW5zdGFuY2Uob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgc2F2ZUluc3RhbmNlPFQsIE8+KG9wdGlvbnM6IFNhdmVJbnN0YW5jZU9wdGlvbnM8VCwgTz4pOiB2b2lkIHtcbiAgICAgICAgU0lOR0xFVE9OX0lOU1RBTkNFX1NJTkdMRVRPTi5zYXZlSW5zdGFuY2Uob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgc2hvdWxkR2VuZXJhdGU8VCwgTz4ob3B0aW9uczogR2V0SW5zdGFuY2VPcHRpb25zPFQsIE8+KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBTSU5HTEVUT05fSU5TVEFOQ0VfU0lOR0xFVE9OLnNob3VsZEdlbmVyYXRlKG9wdGlvbnMpO1xuICAgIH1cbiAgICBkZXN0cm95KCkge1xuICAgICAgICAvLyBQQVNTO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IEluc3RhbmNlUmVzb2x1dGlvbiwgU2F2ZUluc3RhbmNlT3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0luc3RhbmNlUmVzb2x1dGlvbic7XG5pbXBvcnQgeyBpbnZva2VQcmVEZXN0cm95IH0gZnJvbSAnLi4vY29tbW9uL2ludm9rZVByZURlc3Ryb3knO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNpZW50SW5zdGFuY2VSZXNvbHV0aW9uIGltcGxlbWVudHMgSW5zdGFuY2VSZXNvbHV0aW9uIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluc3RhbmNlcyA9IG5ldyBTZXQ8dW5rbm93bj4oKTtcbiAgICBzaG91bGRHZW5lcmF0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZ2V0SW5zdGFuY2U8VD4oKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzYXZlSW5zdGFuY2U8VCwgTz4ob3B0aW9uczogU2F2ZUluc3RhbmNlT3B0aW9uczxULCBPPik6IHZvaWQge1xuICAgICAgICB0aGlzLmluc3RhbmNlcy5hZGQob3B0aW9ucy5pbnN0YW5jZSk7XG4gICAgfVxuICAgIGRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuaW5zdGFuY2VzLmZvckVhY2goaXQgPT4ge1xuICAgICAgICAgICAgaWYgKCFpdCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGludm9rZVByZURlc3Ryb3koaXQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pbnN0YW5jZXMuY2xlYXIoKTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBFdmFsdWF0b3IgfSBmcm9tICcuLi90eXBlcy9FdmFsdWF0b3InO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnLi4vZm91bmRhdGlvbi9BcHBsaWNhdGlvbkNvbnRleHQnO1xuaW1wb3J0IHsgSlNPTkRhdGEgfSBmcm9tICcuLi90eXBlcy9KU09ORGF0YSc7XG5cbmV4cG9ydCBjbGFzcyBKU09ORGF0YUV2YWx1YXRvciBpbXBsZW1lbnRzIEV2YWx1YXRvciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuYW1lc3BhY2VEYXRhTWFwID0gbmV3IE1hcDxzdHJpbmcsIEpTT05EYXRhPigpO1xuICAgIGV2YWw8VD4oY29udGV4dDogQXBwbGljYXRpb25Db250ZXh0LCBleHByZXNzaW9uOiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgY29sb25JbmRleCA9IGV4cHJlc3Npb24uaW5kZXhPZignOicpO1xuICAgICAgICBpZiAoY29sb25JbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW5jb3JyZWN0IGV4cHJlc3Npb24sIG5hbWVzcGFjZSBub3Qgc3BlY2lmaWVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmFtZXNwYWNlID0gZXhwcmVzc2lvbi5zdWJzdHJpbmcoMCwgY29sb25JbmRleCk7XG4gICAgICAgIGNvbnN0IGV4cCA9IGV4cHJlc3Npb24uc3Vic3RyaW5nKGNvbG9uSW5kZXggKyAxKTtcbiAgICAgICAgaWYgKCF0aGlzLm5hbWVzcGFjZURhdGFNYXAuaGFzKG5hbWVzcGFjZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5jb3JyZWN0IGV4cHJlc3Npb246IG5hbWVzcGFjZSBub3QgcmVjb3JkZWQ6IFwiJHtuYW1lc3BhY2V9XCJgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5uYW1lc3BhY2VEYXRhTWFwLmdldChuYW1lc3BhY2UpIGFzIEpTT05EYXRhO1xuICAgICAgICByZXR1cm4gcnVuRXhwcmVzc2lvbihleHAsIGRhdGEgYXMgT2JqZWN0KTtcbiAgICB9XG4gICAgcmVjb3JkRGF0YShuYW1lc3BhY2U6IHN0cmluZywgZGF0YTogSlNPTkRhdGEpIHtcbiAgICAgICAgdGhpcy5uYW1lc3BhY2VEYXRhTWFwLnNldChuYW1lc3BhY2UsIGRhdGEpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gcnVuRXhwcmVzc2lvbihleHByZXNzaW9uOiBzdHJpbmcsIHJvb3RDb250ZXh0OiBPYmplY3QpIHtcbiAgICBjb25zdCBmbiA9IGNvbXBpbGVFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xuICAgIHJldHVybiBmbihyb290Q29udGV4dCk7XG59XG5cbmZ1bmN0aW9uIGNvbXBpbGVFeHByZXNzaW9uKGV4cHJlc3Npb246IHN0cmluZykge1xuICAgIGlmIChleHByZXNzaW9uLmluZGV4T2YoJywnKSA+IC0xKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5jb3JyZWN0IGV4cHJlc3Npb24gc3ludGF4LCBUaGUgJywnIGlzIG5vdCBhbGxvd2VkIGluIGV4cHJlc3Npb246IFwiJHtleHByZXNzaW9ufVwiYCk7XG4gICAgfVxuICAgIGlmIChleHByZXNzaW9uLmxlbmd0aCA+IDEyMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgSW5jb3JyZWN0IGV4cHJlc3Npb24gc3ludGF4LCBleHByZXNzaW9uIGxlbmd0aCBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIDEyMCwgYnV0IGFjdHVhbDogJHtleHByZXNzaW9uLmxlbmd0aH1gXG4gICAgICAgICk7XG4gICAgfVxuICAgIGlmICgvXFwoLio/XFwpLy50ZXN0KGV4cHJlc3Npb24pKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5jb3JyZWN0IGV4cHJlc3Npb24gc3ludGF4LCBwYXJlbnRoZXNlcyBhcmUgbm90IGFsbG93ZWQgaW4gZXhwcmVzc2lvbjogXCIke2V4cHJlc3Npb259XCJgKTtcbiAgICB9XG4gICAgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb24udHJpbSgpO1xuICAgIGlmIChleHByZXNzaW9uID09PSAnJykge1xuICAgICAgICByZXR1cm4gKHJvb3Q6IE9iamVjdCkgPT4gcm9vdDtcbiAgICB9XG5cbiAgICBjb25zdCByb290VmFyTmFtZSA9IHZhck5hbWUoJ2NvbnRleHQnKTtcbiAgICByZXR1cm4gbmV3IEZ1bmN0aW9uKFxuICAgICAgICByb290VmFyTmFtZSxcbiAgICAgICAgYFxuICAgICAgICBcInVzZSBzdHJpY3RcIjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiAke3Jvb3RWYXJOYW1lfS4ke2V4cHJlc3Npb259O1xuICAgICAgICB9IGNhdGNoKGVycm9yKSB7IHRocm93IGVycm9yIH1cbiAgICBgXG4gICAgKTtcbn1cbmxldCBWQVJfU0VRVUVOQ0UgPSBEYXRlLm5vdygpO1xuZnVuY3Rpb24gdmFyTmFtZShwcmVmaXg6IHN0cmluZykge1xuICAgIHJldHVybiBwcmVmaXggKyAnJyArIChWQVJfU0VRVUVOQ0UrKykudG9TdHJpbmcoMTYpO1xufVxuIiwiaW1wb3J0IHsgRXZhbHVhdG9yIH0gZnJvbSAnLi4vdHlwZXMvRXZhbHVhdG9yJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gJy4uL2ZvdW5kYXRpb24vQXBwbGljYXRpb25Db250ZXh0JztcblxuZXhwb3J0IGNsYXNzIEVudmlyb25tZW50RXZhbHVhdG9yIGltcGxlbWVudHMgRXZhbHVhdG9yIHtcbiAgICBldmFsPFQ+KGNvbnRleHQ6IEFwcGxpY2F0aW9uQ29udGV4dCwgZXhwcmVzc2lvbjogc3RyaW5nKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzLmVudltleHByZXNzaW9uXSBhcyBUIHwgdW5kZWZpbmVkO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IEV2YWx1YXRvciB9IGZyb20gJy4uL3R5cGVzL0V2YWx1YXRvcic7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkNvbnRleHQgfSBmcm9tICcuLi9mb3VuZGF0aW9uL0FwcGxpY2F0aW9uQ29udGV4dCc7XG5cbmV4cG9ydCBjbGFzcyBBcmd2RXZhbHVhdG9yIGltcGxlbWVudHMgRXZhbHVhdG9yIHtcbiAgICBldmFsPFQsIEEgPSBzdHJpbmdbXT4oY29udGV4dDogQXBwbGljYXRpb25Db250ZXh0LCBleHByZXNzaW9uOiBzdHJpbmcsIGFyZ3M/OiBBKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGFyZ3YgPSBhcmdzIHx8IHByb2Nlc3MuYXJndjtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXNcbiAgICAgICAgY29uc3QgbWluaW1pc3QgPSByZXF1aXJlKCdtaW5pbWlzdCcpO1xuICAgICAgICBjb25zdCBtYXAgPSBtaW5pbWlzdChhcmd2KTtcbiAgICAgICAgcmV0dXJuIG1hcFtleHByZXNzaW9uXTtcbiAgICB9XG59XG4iLCJleHBvcnQgZW51bSBBZHZpY2Uge1xuICAgIEJlZm9yZSxcbiAgICBBZnRlcixcbiAgICBBcm91bmQsXG4gICAgQWZ0ZXJSZXR1cm4sXG4gICAgVGhyb3duLFxuICAgIEZpbmFsbHlcbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEFkdmljZSB9IGZyb20gJy4vQWR2aWNlJztcblxudHlwZSBCZWZvcmVIb29rID0gKGFyZ3M6IGFueVtdKSA9PiB2b2lkO1xudHlwZSBBZnRlckhvb2sgPSAoYXJnczogYW55W10pID0+IHZvaWQ7XG50eXBlIFRocm93bkhvb2sgPSAocmVhc29uOiBhbnksIGFyZ3M6IGFueVtdKSA9PiB2b2lkO1xudHlwZSBGaW5hbGx5SG9vayA9IChhcmdzOiBhbnlbXSkgPT4gdm9pZDtcbnR5cGUgQWZ0ZXJSZXR1cm5Ib29rID0gKHJldHVyblZhbHVlOiBhbnksIGFyZ3M6IGFueVtdKSA9PiBhbnk7XG50eXBlIEFyb3VuZEhvb2sgPSAodGhpczogYW55LCBvcmlnaW5mbjogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkLCBhcmdzOiBhbnlbXSkgPT4gdm9pZDtcblxuZXhwb3J0IGNsYXNzIEFzcGVjdFV0aWxzIHtcbiAgICBwcml2YXRlIGJlZm9yZUhvb2tzOiBBcnJheTxCZWZvcmVIb29rPiA9IFtdO1xuICAgIHByaXZhdGUgYWZ0ZXJIb29rczogQXJyYXk8QWZ0ZXJIb29rPiA9IFtdO1xuICAgIHByaXZhdGUgdGhyb3duSG9va3M6IEFycmF5PFRocm93bkhvb2s+ID0gW107XG4gICAgcHJpdmF0ZSBmaW5hbGx5SG9va3M6IEFycmF5PEZpbmFsbHlIb29rPiA9IFtdO1xuICAgIHByaXZhdGUgYWZ0ZXJSZXR1cm5Ib29rczogQXJyYXk8QWZ0ZXJSZXR1cm5Ib29rPiA9IFtdO1xuICAgIHByaXZhdGUgYXJvdW5kSG9va3M6IEFycmF5PEFyb3VuZEhvb2s+ID0gW107XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBmbjogKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkpIHt9XG4gICAgYXBwZW5kKGFkdmljZTogQWR2aWNlLkJlZm9yZSwgaG9vazogQmVmb3JlSG9vayk6IHZvaWQ7XG4gICAgYXBwZW5kKGFkdmljZTogQWR2aWNlLkFmdGVyLCBob29rOiBBZnRlckhvb2spOiB2b2lkO1xuICAgIGFwcGVuZChhZHZpY2U6IEFkdmljZS5UaHJvd24sIGhvb2s6IFRocm93bkhvb2spOiB2b2lkO1xuICAgIGFwcGVuZChhZHZpY2U6IEFkdmljZS5GaW5hbGx5LCBob29rOiBGaW5hbGx5SG9vayk6IHZvaWQ7XG4gICAgYXBwZW5kKGFkdmljZTogQWR2aWNlLkFmdGVyUmV0dXJuLCBob29rOiBBZnRlclJldHVybkhvb2spOiB2b2lkO1xuICAgIGFwcGVuZChhZHZpY2U6IEFkdmljZS5Bcm91bmQsIGhvb2s6IEFyb3VuZEhvb2spOiB2b2lkO1xuICAgIGFwcGVuZChhZHZpY2U6IEFkdmljZSwgaG9vazogRnVuY3Rpb24pIHtcbiAgICAgICAgbGV0IGhvb2tzQXJyYXk6IEZ1bmN0aW9uW10gfCB1bmRlZmluZWQ7XG4gICAgICAgIHN3aXRjaCAoYWR2aWNlKSB7XG4gICAgICAgICAgICBjYXNlIEFkdmljZS5CZWZvcmU6XG4gICAgICAgICAgICAgICAgaG9va3NBcnJheSA9IHRoaXMuYmVmb3JlSG9va3M7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEFkdmljZS5BZnRlcjpcbiAgICAgICAgICAgICAgICBob29rc0FycmF5ID0gdGhpcy5hZnRlckhvb2tzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBBZHZpY2UuVGhyb3duOlxuICAgICAgICAgICAgICAgIGhvb2tzQXJyYXkgPSB0aGlzLnRocm93bkhvb2tzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBBZHZpY2UuRmluYWxseTpcbiAgICAgICAgICAgICAgICBob29rc0FycmF5ID0gdGhpcy5maW5hbGx5SG9va3M7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEFkdmljZS5BZnRlclJldHVybjpcbiAgICAgICAgICAgICAgICBob29rc0FycmF5ID0gdGhpcy5hZnRlclJldHVybkhvb2tzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBBZHZpY2UuQXJvdW5kOlxuICAgICAgICAgICAgICAgIGhvb2tzQXJyYXkgPSB0aGlzLmFyb3VuZEhvb2tzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChob29rc0FycmF5KSB7XG4gICAgICAgICAgICBob29rc0FycmF5LnB1c2goaG9vayk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZXh0cmFjdCgpIHtcbiAgICAgICAgY29uc3QgeyBhcm91bmRIb29rcywgYmVmb3JlSG9va3MsIGFmdGVySG9va3MsIGFmdGVyUmV0dXJuSG9va3MsIGZpbmFsbHlIb29rcywgdGhyb3duSG9va3MgfSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGZuID0gYXJvdW5kSG9va3MucmVkdWNlUmlnaHQoKHByZXYsIG5leHQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXh0LmNhbGwodGhpcywgcHJldiwgYXJncyk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LCB0aGlzLmZuKSBhcyB0eXBlb2YgdGhpcy5mbjtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICAgICAgICBiZWZvcmVIb29rcy5mb3JFYWNoKGhvb2sgPT4ge1xuICAgICAgICAgICAgICAgIGhvb2suY2FsbCh0aGlzLCBhcmdzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgaW52b2tlID0gKG9uRXJyb3I6IChyZWFzb246IGFueSkgPT4gdm9pZCwgb25GaW5hbGx5OiAoKSA9PiB2b2lkLCBvbkFmdGVyOiAocmV0dXJuVmFsdWU6IGFueSkgPT4gYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHJldHVyblZhbHVlOiBhbnk7XG4gICAgICAgICAgICAgICAgbGV0IGlzUHJvbWlzZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gZm4uYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXR1cm5WYWx1ZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUHJvbWlzZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlLmNhdGNoKG9uRXJyb3IpLmZpbmFsbHkob25GaW5hbGx5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkZpbmFsbHkoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZS50aGVuKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25BZnRlcih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvbkFmdGVyKHJldHVyblZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIGludm9rZShcbiAgICAgICAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aHJvd25Ib29rcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd25Ib29rcy5mb3JFYWNoKGhvb2sgPT4gaG9vay5jYWxsKHRoaXMsIGVycm9yLCBhcmdzKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBmaW5hbGx5SG9va3MuZm9yRWFjaChob29rID0+IGhvb2suY2FsbCh0aGlzLCBhcmdzKSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGFmdGVySG9va3MuZm9yRWFjaChob29rID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvb2suY2FsbCh0aGlzLCBhcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhZnRlclJldHVybkhvb2tzLnJlZHVjZSgocmV0VmFsLCBob29rKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaG9vay5jYWxsKHRoaXMsIHJldFZhbCwgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgIH0sIHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9O1xuICAgIH1cbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB0eXBlIHsgQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnLi4vZm91bmRhdGlvbi9BcHBsaWNhdGlvbkNvbnRleHQnO1xuaW1wb3J0IHsgQWR2aWNlIH0gZnJvbSAnLi9BZHZpY2UnO1xuaW1wb3J0IHsgTmV3YWJsZSB9IGZyb20gJy4uL3R5cGVzL05ld2FibGUnO1xuaW1wb3J0IHsgQXNwZWN0LCBKb2luUG9pbnQsIFByb2NlZWRpbmdKb2luUG9pbnQgfSBmcm9tICcuL0FzcGVjdCc7XG5pbXBvcnQgeyBBc3BlY3RVdGlscyB9IGZyb20gJy4vQXNwZWN0VXRpbHMnO1xuaW1wb3J0IHsgVXNlQXNwZWN0TWV0YWRhdGFSZWFkZXIgfSBmcm9tICcuL0FPUENsYXNzTWV0YWRhdGEnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXNwZWN0PFQ+KFxuICAgIGFwcEN0eDogQXBwbGljYXRpb25Db250ZXh0LFxuICAgIHRhcmdldDogVCxcbiAgICBtZXRob2ROYW1lOiBzdHJpbmcgfCBzeW1ib2wsXG4gICAgbWV0aG9kRnVuYzogRnVuY3Rpb24sXG4gICAgbWV0YWRhdGE6IFVzZUFzcGVjdE1ldGFkYXRhUmVhZGVyXG4pIHtcbiAgICBjb25zdCBjcmVhdGVBc3BlY3RDdHggPSAoYWR2aWNlOiBBZHZpY2UsIGFyZ3M6IGFueVtdLCByZXR1cm5WYWx1ZTogYW55ID0gbnVsbCwgZXJyb3I6IGFueSA9IG51bGwpOiBKb2luUG9pbnQgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgICAgIGFyZ3VtZW50czogYXJncyxcbiAgICAgICAgICAgIHJldHVyblZhbHVlLFxuICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICBhZHZpY2VcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGNvbnN0IGFzcGVjdFV0aWxzID0gbmV3IEFzcGVjdFV0aWxzKG1ldGhvZEZ1bmMgYXMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkpO1xuICAgIGNvbnN0IENsYXNzVG9JbnN0YW5jZSA9IChBc3BlY3RDbGFzczogTmV3YWJsZTxBc3BlY3Q+KSA9PiBhcHBDdHguZ2V0SW5zdGFuY2UoQXNwZWN0Q2xhc3MpO1xuICAgIGNvbnN0IGJlZm9yZUFkdmljZUFzcGVjdHMgPSBtZXRhZGF0YS5nZXRBc3BlY3RzT2YobWV0aG9kTmFtZSwgQWR2aWNlLkJlZm9yZSkubWFwKENsYXNzVG9JbnN0YW5jZSk7XG4gICAgY29uc3QgYWZ0ZXJBZHZpY2VBc3BlY3RzID0gbWV0YWRhdGEuZ2V0QXNwZWN0c09mKG1ldGhvZE5hbWUsIEFkdmljZS5BZnRlcikubWFwKENsYXNzVG9JbnN0YW5jZSk7XG4gICAgY29uc3QgdHJ5Q2F0Y2hBZHZpY2VBc3BlY3RzID0gbWV0YWRhdGEuZ2V0QXNwZWN0c09mKG1ldGhvZE5hbWUsIEFkdmljZS5UaHJvd24pLm1hcChDbGFzc1RvSW5zdGFuY2UpO1xuICAgIGNvbnN0IHRyeUZpbmFsbHlBZHZpY2VBc3BlY3RzID0gbWV0YWRhdGEuZ2V0QXNwZWN0c09mKG1ldGhvZE5hbWUsIEFkdmljZS5GaW5hbGx5KS5tYXAoQ2xhc3NUb0luc3RhbmNlKTtcbiAgICBjb25zdCBhZnRlclJldHVybkFkdmljZUFzcGVjdHMgPSBtZXRhZGF0YS5nZXRBc3BlY3RzT2YobWV0aG9kTmFtZSwgQWR2aWNlLkFmdGVyUmV0dXJuKS5tYXAoQ2xhc3NUb0luc3RhbmNlKTtcbiAgICBjb25zdCBhcm91bmRBZHZpY2VBc3BlY3RzID0gbWV0YWRhdGEuZ2V0QXNwZWN0c09mKG1ldGhvZE5hbWUsIEFkdmljZS5Bcm91bmQpLm1hcChDbGFzc1RvSW5zdGFuY2UpO1xuXG4gICAgaWYgKGJlZm9yZUFkdmljZUFzcGVjdHMubGVuZ3RoID4gMCkge1xuICAgICAgICBhc3BlY3RVdGlscy5hcHBlbmQoQWR2aWNlLkJlZm9yZSwgKGFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBqb2luUG9pbnQgPSBjcmVhdGVBc3BlY3RDdHgoQWR2aWNlLkJlZm9yZSwgYXJncyk7XG4gICAgICAgICAgICBiZWZvcmVBZHZpY2VBc3BlY3RzLmZvckVhY2goYXNwZWN0ID0+IHtcbiAgICAgICAgICAgICAgICBhc3BlY3QuZXhlY3V0ZShqb2luUG9pbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoYWZ0ZXJBZHZpY2VBc3BlY3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYXNwZWN0VXRpbHMuYXBwZW5kKEFkdmljZS5BZnRlciwgKGFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBqb2luUG9pbnQgPSBjcmVhdGVBc3BlY3RDdHgoQWR2aWNlLkFmdGVyLCBhcmdzKTtcbiAgICAgICAgICAgIGFmdGVyQWR2aWNlQXNwZWN0cy5mb3JFYWNoKGFzcGVjdCA9PiB7XG4gICAgICAgICAgICAgICAgYXNwZWN0LmV4ZWN1dGUoam9pblBvaW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHRyeUNhdGNoQWR2aWNlQXNwZWN0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFzcGVjdFV0aWxzLmFwcGVuZChBZHZpY2UuVGhyb3duLCAoZXJyb3IsIGFyZ3MpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGpvaW5Qb2ludCA9IGNyZWF0ZUFzcGVjdEN0eChBZHZpY2UuVGhyb3duLCBhcmdzLCBudWxsLCBlcnJvcik7XG4gICAgICAgICAgICB0cnlDYXRjaEFkdmljZUFzcGVjdHMuZm9yRWFjaChhc3BlY3QgPT4ge1xuICAgICAgICAgICAgICAgIGFzcGVjdC5leGVjdXRlKGpvaW5Qb2ludCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRyeUZpbmFsbHlBZHZpY2VBc3BlY3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYXNwZWN0VXRpbHMuYXBwZW5kKEFkdmljZS5GaW5hbGx5LCAoYXJnczogYW55W10pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGpvaW5Qb2ludCA9IGNyZWF0ZUFzcGVjdEN0eChBZHZpY2UuRmluYWxseSwgYXJncyk7XG4gICAgICAgICAgICB0cnlGaW5hbGx5QWR2aWNlQXNwZWN0cy5mb3JFYWNoKGFzcGVjdCA9PiB7XG4gICAgICAgICAgICAgICAgYXNwZWN0LmV4ZWN1dGUoam9pblBvaW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoYWZ0ZXJSZXR1cm5BZHZpY2VBc3BlY3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYXNwZWN0VXRpbHMuYXBwZW5kKEFkdmljZS5BZnRlclJldHVybiwgKHJldHVyblZhbHVlLCBhcmdzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYWZ0ZXJSZXR1cm5BZHZpY2VBc3BlY3RzLnJlZHVjZSgocHJldlJldHVyblZhbHVlLCBhc3BlY3QpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBqb2luUG9pbnQgPSBjcmVhdGVBc3BlY3RDdHgoQWR2aWNlLkFmdGVyUmV0dXJuLCBhcmdzLCByZXR1cm5WYWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFzcGVjdC5leGVjdXRlKGpvaW5Qb2ludCk7XG4gICAgICAgICAgICB9LCByZXR1cm5WYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChhcm91bmRBZHZpY2VBc3BlY3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYXJvdW5kQWR2aWNlQXNwZWN0cy5mb3JFYWNoKGFzcGVjdCA9PiB7XG4gICAgICAgICAgICBhc3BlY3RVdGlscy5hcHBlbmQoQWR2aWNlLkFyb3VuZCwgKG9yaWdpbkZuLCBhcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgam9pblBvaW50ID0gY3JlYXRlQXNwZWN0Q3R4KEFkdmljZS5Bcm91bmQsIGFyZ3MsIG51bGwpIGFzIFByb2NlZWRpbmdKb2luUG9pbnQ7XG4gICAgICAgICAgICAgICAgam9pblBvaW50LnByb2NlZWQgPSAoanBBcmdzID0gYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luRm4oanBBcmdzKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBhc3BlY3QuZXhlY3V0ZShqb2luUG9pbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBhc3BlY3RVdGlscy5leHRyYWN0KCk7XG59XG4iLCJpbXBvcnQgeyBNZXRhZGF0YSwgTWV0YWRhdGFSZWFkZXIgfSBmcm9tICcuLi90eXBlcy9NZXRhZGF0YSc7XG5pbXBvcnQgeyBOZXdhYmxlIH0gZnJvbSAnLi4vdHlwZXMvTmV3YWJsZSc7XG5pbXBvcnQgeyBBc3BlY3QgfSBmcm9tICcuL0FzcGVjdCc7XG5pbXBvcnQgeyBjcmVhdGVEZWZhdWx0VmFsdWVNYXAsIERlZmF1bHRWYWx1ZU1hcCB9IGZyb20gJy4uL2NvbW1vbi9EZWZhdWx0VmFsdWVNYXAnO1xuaW1wb3J0IHsgQWR2aWNlIH0gZnJvbSAnLi9BZHZpY2UnO1xuXG5leHBvcnQgdHlwZSBVc2VBc3BlY3RNYXAgPSBEZWZhdWx0VmFsdWVNYXA8c3RyaW5nIHwgc3ltYm9sLCBEZWZhdWx0VmFsdWVNYXA8QWR2aWNlLCBBcnJheTxOZXdhYmxlPEFzcGVjdD4+Pj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlQXNwZWN0TWV0YWRhdGFSZWFkZXIgZXh0ZW5kcyBNZXRhZGF0YVJlYWRlciB7XG4gICAgZ2V0QXNwZWN0cygpOiBVc2VBc3BlY3RNYXA7XG4gICAgZ2V0QXNwZWN0c09mKG1ldGhvZE5hbWU6IHN0cmluZyB8IHN5bWJvbCwgYWR2aWNlOiBBZHZpY2UpOiBBcnJheTxOZXdhYmxlPEFzcGVjdD4+O1xufVxuZXhwb3J0IGNsYXNzIEFPUENsYXNzTWV0YWRhdGEgaW1wbGVtZW50cyBNZXRhZGF0YTxVc2VBc3BlY3RNZXRhZGF0YVJlYWRlciwgTmV3YWJsZTx1bmtub3duPj4ge1xuICAgIHN0YXRpYyBnZXRSZWZsZWN0S2V5KCkge1xuICAgICAgICByZXR1cm4gJ2FvcDp1c2UtYXNwZWN0LW1ldGFkYXRhJztcbiAgICB9XG4gICAgcHJpdmF0ZSBhc3BlY3RNYXA6IFVzZUFzcGVjdE1hcCA9IGNyZWF0ZURlZmF1bHRWYWx1ZU1hcCgoKSA9PiBjcmVhdGVEZWZhdWx0VmFsdWVNYXAoKCkgPT4gW10pKTtcbiAgICBpbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBJR05PUkVcbiAgICB9XG5cbiAgICBhcHBlbmQobWV0aG9kTmFtZTogc3RyaW5nIHwgc3ltYm9sLCBhZHZpY2U6IEFkdmljZSwgYXNwZWN0czogQXJyYXk8TmV3YWJsZTxBc3BlY3Q+Pikge1xuICAgICAgICBjb25zdCBhZHZpY2VBc3BlY3RNYXAgPSB0aGlzLmFzcGVjdE1hcC5nZXQobWV0aG9kTmFtZSk7XG4gICAgICAgIGNvbnN0IGV4aXRpbmdBc3BlY3RBcnJheSA9IGFkdmljZUFzcGVjdE1hcC5nZXQoYWR2aWNlKTtcbiAgICAgICAgZXhpdGluZ0FzcGVjdEFycmF5LnB1c2goLi4uYXNwZWN0cyk7XG4gICAgfVxuXG4gICAgcmVhZGVyKCk6IFVzZUFzcGVjdE1ldGFkYXRhUmVhZGVyIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldEFzcGVjdHM6ICgpOiBVc2VBc3BlY3RNYXAgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzcGVjdE1hcDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRBc3BlY3RzT2Y6IChtZXRob2ROYW1lOiBzdHJpbmcgfCBzeW1ib2wsIGFkdmljZTogQWR2aWNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNwZWN0TWFwLmdldChtZXRob2ROYW1lKS5nZXQoYWR2aWNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBQYXJ0aWFsSW5zdEF3YXJlUHJvY2Vzc29yIH0gZnJvbSAnLi4vdHlwZXMvSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yJztcbmltcG9ydCB7IE1ldGFkYXRhRmFjdG9yeSB9IGZyb20gJy4uL21ldGFkYXRhL01ldGFkYXRhRmFjdG9yeSc7XG5pbXBvcnQgdHlwZSB7IEFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gJy4uL2ZvdW5kYXRpb24vQXBwbGljYXRpb25Db250ZXh0JztcbmltcG9ydCB7IGNyZWF0ZUFzcGVjdCB9IGZyb20gJy4vY3JlYXRlQXNwZWN0JztcbmltcG9ydCB7IEFPUENsYXNzTWV0YWRhdGEgfSBmcm9tICcuL0FPUENsYXNzTWV0YWRhdGEnO1xuaW1wb3J0IHsgTmV3YWJsZSB9IGZyb20gJy4uL3R5cGVzL05ld2FibGUnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQU9QSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yIGltcGxlbWVudHMgUGFydGlhbEluc3RBd2FyZVByb2Nlc3NvciB7XG4gICAgc3RhdGljIGNyZWF0ZShhcHBDdHg6IEFwcGxpY2F0aW9uQ29udGV4dCk6IE5ld2FibGU8QU9QSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yPiB7XG4gICAgICAgIHJldHVybiBjbGFzcyBleHRlbmRzIEFPUEluc3RhbnRpYXRpb25Bd2FyZVByb2Nlc3NvciB7XG4gICAgICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwQ3R4OiBBcHBsaWNhdGlvbkNvbnRleHQgPSBhcHBDdHg7XG4gICAgICAgIH07XG4gICAgfVxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSBhcHBDdHg6IEFwcGxpY2F0aW9uQ29udGV4dDtcbiAgICBhZnRlckluc3RhbnRpYXRpb248VCBleHRlbmRzIG9iamVjdD4oaW5zdGFuY2U6IFQpOiBUIHtcbiAgICAgICAgY29uc3QgY2xhenogPSBpbnN0YW5jZS5jb25zdHJ1Y3RvcjtcblxuICAgICAgICBjb25zdCB1c2VBc3BlY3RNZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YShjbGF6eiwgQU9QQ2xhc3NNZXRhZGF0YSk7XG4gICAgICAgIGNvbnN0IHVzZUFzcGVjdE1ldGFkYXRhUmVhZGVyID0gdXNlQXNwZWN0TWV0YWRhdGEucmVhZGVyKCk7XG4gICAgICAgIGNvbnN0IHVzZUFzcGVjdHNNYXAgPSB1c2VBc3BlY3RNZXRhZGF0YVJlYWRlci5nZXRBc3BlY3RzKCk7XG4gICAgICAgIGlmICh1c2VBc3BlY3RzTWFwLnNpemUgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFzcGVjdFN0b3JlTWFwID0gbmV3IFdlYWtNYXA8b2JqZWN0LCBNYXA8c3RyaW5nIHwgc3ltYm9sLCBGdW5jdGlvbj4+KCk7XG4gICAgICAgIGFzcGVjdFN0b3JlTWFwLnNldChpbnN0YW5jZSwgbmV3IE1hcDxzdHJpbmcgfCBzeW1ib2wsIEZ1bmN0aW9uPigpKTtcblxuICAgICAgICBjb25zdCBwcm94eVJlc3VsdCA9IG5ldyBQcm94eShpbnN0YW5jZSwge1xuICAgICAgICAgICAgZ2V0OiAodGFyZ2V0LCBwcm9wKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luVmFsdWUgPSAodGFyZ2V0IGFzIFJlY29yZDxzdHJpbmcgfCBzeW1ib2wsIHVua25vd24+KVtwcm9wXTtcbiAgICAgICAgICAgICAgICBpZiAocHJvcCBpbiB0YXJnZXQgJiYgdHlwZW9mIG9yaWdpblZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFzcGVjdE1hcCA9IGFzcGVjdFN0b3JlTWFwLmdldChpbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghYXNwZWN0TWFwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGFzcGVjdE1hcC5oYXMocHJvcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhc3BlY3RNYXAuZ2V0KHByb3ApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFzcGVjdEZuID0gY3JlYXRlQXNwZWN0KHRoaXMuYXBwQ3R4LCB0YXJnZXQsIHByb3AsIG9yaWdpblZhbHVlLCB1c2VBc3BlY3RNZXRhZGF0YVJlYWRlcik7XG4gICAgICAgICAgICAgICAgICAgIGFzcGVjdE1hcC5zZXQocHJvcCwgYXNwZWN0Rm4pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXNwZWN0Rm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5WYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwcm94eVJlc3VsdDtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBOZXdhYmxlIH0gZnJvbSAnLi4vdHlwZXMvTmV3YWJsZSc7XG5pbXBvcnQgeyBJbnN0YW50aWF0aW9uQXdhcmVQcm9jZXNzb3IsIFBhcnRpYWxJbnN0QXdhcmVQcm9jZXNzb3IgfSBmcm9tICcuLi90eXBlcy9JbnN0YW50aWF0aW9uQXdhcmVQcm9jZXNzb3InO1xuaW1wb3J0IHsgbGF6eU1lbWJlciB9IGZyb20gJ0B2Z2VyYm90L2xhenknO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnLi9BcHBsaWNhdGlvbkNvbnRleHQnO1xuaW1wb3J0IHsgSW5zdGFuY2UgfSBmcm9tICcuLi90eXBlcy9JbnN0YW5jZSc7XG5pbXBvcnQgeyBHbG9iYWxNZXRhZGF0YSB9IGZyb20gJy4uL21ldGFkYXRhL0dsb2JhbE1ldGFkYXRhJztcblxuZXhwb3J0IGNsYXNzIEluc3RhbnRpYXRpb25Bd2FyZVByb2Nlc3Nvck1hbmFnZXIge1xuICAgIHByaXZhdGUgaW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlczogU2V0PE5ld2FibGU8UGFydGlhbEluc3RBd2FyZVByb2Nlc3Nvcj4+ID0gbmV3IFNldCgpO1xuICAgIEBsYXp5TWVtYmVyPEluc3RhbnRpYXRpb25Bd2FyZVByb2Nlc3Nvck1hbmFnZXIsIGtleW9mIEluc3RhbnRpYXRpb25Bd2FyZVByb2Nlc3Nvck1hbmFnZXIsIFBhcnRpYWxJbnN0QXdhcmVQcm9jZXNzb3JbXT4oe1xuICAgICAgICBldmFsdWF0ZTogaW5zdGFuY2UgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ2xvYmFsSW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcyA9IEdsb2JhbE1ldGFkYXRhLmdldEluc3RhbmNlKCkucmVhZGVyKCkuZ2V0SW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcygpO1xuICAgICAgICAgICAgY29uc3QgaW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcyA9IGdsb2JhbEluc3RBd2FyZVByb2Nlc3NvckNsYXNzZXMuY29uY2F0KFxuICAgICAgICAgICAgICAgIEFycmF5LmZyb20oaW5zdGFuY2UuaW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gaW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3Nlcy5tYXAoaXQgPT4gaW5zdGFuY2UuY29udGFpbmVyLmdldEluc3RhbmNlPFBhcnRpYWxJbnN0QXdhcmVQcm9jZXNzb3IsIHZvaWQ+KGl0KSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlc2V0Qnk6IFtcbiAgICAgICAgICAgIGluc3RhbmNlID0+IGluc3RhbmNlLmluc3RBd2FyZVByb2Nlc3NvckNsYXNzZXMuc2l6ZSxcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBnbG9iYWxJbnN0QXdhcmVQcm9jZXNzb3JDbGFzc2VzID0gR2xvYmFsTWV0YWRhdGEuZ2V0SW5zdGFuY2UoKS5yZWFkZXIoKS5nZXRJbnN0QXdhcmVQcm9jZXNzb3JDbGFzc2VzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdsb2JhbEluc3RBd2FyZVByb2Nlc3NvckNsYXNzZXMubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICBdXG4gICAgfSlcbiAgICBwcml2YXRlIGluc3RBd2FyZVByb2Nlc3Nvckluc3RhbmNlcyE6IEFycmF5PFBhcnRpYWxJbnN0QXdhcmVQcm9jZXNzb3I+O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjb250YWluZXI6IEFwcGxpY2F0aW9uQ29udGV4dCkge31cbiAgICBhcHBlbmRJbnN0QXdhcmVQcm9jZXNzb3JDbGFzcyhpbnN0QXdhcmVQcm9jZXNzb3JDbGFzczogTmV3YWJsZTxQYXJ0aWFsSW5zdEF3YXJlUHJvY2Vzc29yPikge1xuICAgICAgICB0aGlzLmluc3RBd2FyZVByb2Nlc3NvckNsYXNzZXMuYWRkKGluc3RBd2FyZVByb2Nlc3NvckNsYXNzKTtcbiAgICB9XG4gICAgYXBwZW5kSW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcyhcbiAgICAgICAgaW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlczogU2V0PE5ld2FibGU8UGFydGlhbEluc3RBd2FyZVByb2Nlc3Nvcj4+IHwgQXJyYXk8TmV3YWJsZTxQYXJ0aWFsSW5zdEF3YXJlUHJvY2Vzc29yPj5cbiAgICApIHtcbiAgICAgICAgaW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3Nlcy5mb3JFYWNoKGl0ID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3Nlcy5hZGQoaXQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYmVmb3JlSW5zdGFudGlhdGlvbjxUPihjb21wb25lbnRDbGFzczogTmV3YWJsZTxUPiwgYXJnczogdW5rbm93bltdKSB7XG4gICAgICAgIGNvbnN0IGluc3RBd2FyZVByb2Nlc3NvcnMgPSB0aGlzLmluc3RBd2FyZVByb2Nlc3Nvckluc3RhbmNlcztcbiAgICAgICAgbGV0IGluc3RhbmNlOiB1bmRlZmluZWQgfCBJbnN0YW5jZTxUPjtcbiAgICAgICAgaW5zdEF3YXJlUHJvY2Vzc29ycy5zb21lKHByb2Nlc3NvciA9PiB7XG4gICAgICAgICAgICBpZiAoIXByb2Nlc3Nvci5iZWZvcmVJbnN0YW50aWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5zdGFuY2UgPSBwcm9jZXNzb3IuYmVmb3JlSW5zdGFudGlhdGlvbjxUPihjb21wb25lbnRDbGFzcywgYXJncykgYXMgSW5zdGFuY2U8VD47XG4gICAgICAgICAgICByZXR1cm4gISFpbnN0YW5jZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICB9XG4gICAgYWZ0ZXJJbnN0YW50aWF0aW9uPFQ+KGluc3RhbmNlOiBJbnN0YW5jZTxUPikge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnN0QXdhcmVQcm9jZXNzb3JJbnN0YW5jZXMucmVkdWNlKChpbnN0YW5jZSwgcHJvY2Vzc29yKSA9PiB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzc29yLmFmdGVySW5zdGFudGlhdGlvbikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHByb2Nlc3Nvci5hZnRlckluc3RhbnRpYXRpb24oaW5zdGFuY2UpO1xuICAgICAgICAgICAgICAgIGlmICghIXJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIEluc3RhbmNlPFQ+O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICAgICAgfSwgaW5zdGFuY2UpO1xuICAgIH1cbiAgICBpc0luc3RBd2FyZVByb2Nlc3NvckNsYXNzKGNsczogTmV3YWJsZTx1bmtub3duPikge1xuICAgICAgICBjb25zdCBjbGFzc2VzID0gdGhpcy5nZXRJbnN0QXdhcmVQcm9jZXNzb3JDbGFzc2VzKCk7XG4gICAgICAgIHJldHVybiBjbGFzc2VzLmluZGV4T2YoY2xzIGFzIE5ld2FibGU8SW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yPikgPiAtMTtcbiAgICB9XG4gICAgZ2V0SW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcygpIHtcbiAgICAgICAgY29uc3QgZ2xvYmFsSW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcyA9IEdsb2JhbE1ldGFkYXRhLmdldEluc3RhbmNlKCkucmVhZGVyKCkuZ2V0SW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3NlcygpO1xuICAgICAgICByZXR1cm4gZ2xvYmFsSW5zdEF3YXJlUHJvY2Vzc29yQ2xhc3Nlcy5jb25jYXQoQXJyYXkuZnJvbSh0aGlzLmluc3RBd2FyZVByb2Nlc3NvckNsYXNzZXMpKTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBJbnN0YW5jZVNjb3BlIH0gZnJvbSAnLi9JbnN0YW5jZVNjb3BlJztcbmltcG9ydCB7IEluc3RhbmNlUmVzb2x1dGlvbiB9IGZyb20gJy4uL3R5cGVzL0luc3RhbmNlUmVzb2x1dGlvbic7XG5pbXBvcnQgeyBJZGVudGlmaWVyIH0gZnJvbSAnLi4vdHlwZXMvSWRlbnRpZmllcic7XG5pbXBvcnQgeyBTZXJ2aWNlRmFjdG9yeSB9IGZyb20gJy4uL3R5cGVzL1NlcnZpY2VGYWN0b3J5JztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgRXZlbnRMaXN0ZW5lciB9IGZyb20gJy4vRXZlbnRFbWl0dGVyJztcbmltcG9ydCB7IEFueUZ1bmN0aW9uIH0gZnJvbSAnLi4vdHlwZXMvQW55RnVuY3Rpb24nO1xuaW1wb3J0IHsgaGFzQXJncywgaGFzSW5qZWN0aW9ucywgSW52b2tlRnVuY3Rpb25PcHRpb25zIH0gZnJvbSAnLi9JbnZva2VGdW5jdGlvbk9wdGlvbnMnO1xuaW1wb3J0IHsgR2xvYmFsTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS9HbG9iYWxNZXRhZGF0YSc7XG5pbXBvcnQgeyBGYWN0b3J5SWRlbnRpZmllciB9IGZyb20gJy4uL3R5cGVzL0ZhY3RvcnlJZGVudGlmaWVyJztcbmltcG9ydCB7IENsYXNzTWV0YWRhdGEsIENsYXNzTWV0YWRhdGFSZWFkZXIgfSBmcm9tICcuLi9tZXRhZGF0YS9DbGFzc01ldGFkYXRhJztcbmltcG9ydCB7IENvbXBvbmVudEluc3RhbmNlQnVpbGRlciB9IGZyb20gJy4vQ29tcG9uZW50SW5zdGFuY2VCdWlsZGVyJztcbmltcG9ydCB7IEZ1bmN0aW9uTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS9GdW5jdGlvbk1ldGFkYXRhJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uQ29udGV4dE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbkNvbnRleHRPcHRpb25zJztcbmltcG9ydCB7IE5ld2FibGUgfSBmcm9tICcuLi90eXBlcy9OZXdhYmxlJztcbmltcG9ydCB7IE1ldGFkYXRhRmFjdG9yeSB9IGZyb20gJy4uL21ldGFkYXRhL01ldGFkYXRhRmFjdG9yeSc7XG5pbXBvcnQgeyBTZXJ2aWNlRmFjdG9yeURlZiB9IGZyb20gJy4vU2VydmljZUZhY3RvcnlEZWYnO1xuaW1wb3J0IHsgU2luZ2xldG9uSW5zdGFuY2VSZXNvbHV0aW9uIH0gZnJvbSAnLi4vcmVzb2x1dGlvbi9TaW5nbGV0b25JbnN0YW5jZVJlc29sdXRpb24nO1xuaW1wb3J0IHsgR2xvYmFsU2hhcmVkSW5zdGFuY2VSZXNvbHV0aW9uIH0gZnJvbSAnLi4vcmVzb2x1dGlvbi9HbG9iYWxTaGFyZWRJbnN0YW5jZVJlc29sdXRpb24nO1xuaW1wb3J0IHsgVHJhbnNpZW50SW5zdGFuY2VSZXNvbHV0aW9uIH0gZnJvbSAnLi4vcmVzb2x1dGlvbi9UcmFuc2llbnRJbnN0YW5jZVJlc29sdXRpb24nO1xuaW1wb3J0IHsgRXZhbHVhdGlvbk9wdGlvbnMsIEV4cHJlc3Npb25UeXBlIH0gZnJvbSAnLi4vdHlwZXMvRXZhbHVhdGVPcHRpb25zJztcbmltcG9ydCB7IEpTT05EYXRhIH0gZnJvbSAnLi4vdHlwZXMvSlNPTkRhdGEnO1xuaW1wb3J0IHsgRXZhbHVhdG9yIH0gZnJvbSAnLi4vdHlwZXMvRXZhbHVhdG9yJztcbmltcG9ydCB7IEpTT05EYXRhRXZhbHVhdG9yIH0gZnJvbSAnLi4vZXZhbHVhdG9yL0pTT05EYXRhRXZhbHVhdG9yJztcbmltcG9ydCB7IEVudmlyb25tZW50RXZhbHVhdG9yIH0gZnJvbSAnLi4vZXZhbHVhdG9yL0Vudmlyb25tZW50RXZhbHVhdG9yJztcbmltcG9ydCB7IEFyZ3ZFdmFsdWF0b3IgfSBmcm9tICcuLi9ldmFsdWF0b3IvQXJndkV2YWx1YXRvcic7XG5pbXBvcnQgeyBpc05vZGVKcyB9IGZyb20gJy4uL2NvbW1vbi9pc05vZGVKcyc7XG5pbXBvcnQgeyBQYXJ0aWFsSW5zdEF3YXJlUHJvY2Vzc29yIH0gZnJvbSAnLi4vdHlwZXMvSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yJztcbmltcG9ydCB7IEFPUEluc3RhbnRpYXRpb25Bd2FyZVByb2Nlc3NvciB9IGZyb20gJy4uL2FvcC9BT1BJbnN0YW50aWF0aW9uQXdhcmVQcm9jZXNzb3InO1xuaW1wb3J0IHsgSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yTWFuYWdlciB9IGZyb20gJy4vSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yTWFuYWdlcic7XG5pbXBvcnQgeyBMaWZlY3ljbGVNYW5hZ2VyIH0gZnJvbSAnLi9MaWZlY3ljbGVNYW5hZ2VyJztcbmltcG9ydCB7IEluc3RhbmNlIH0gZnJvbSAnLi4vdHlwZXMvSW5zdGFuY2UnO1xuXG5jb25zdCBQUkVfREVTVFJPWV9FVkVOVF9LRVkgPSAnY29udGFpbmVyOmV2ZW50OnByZS1kZXN0cm95JztcblxuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uQ29udGV4dCB7XG4gICAgcHJpdmF0ZSByZXNvbHV0aW9ucyA9IG5ldyBNYXA8SW5zdGFuY2VTY29wZSB8IHN0cmluZywgSW5zdGFuY2VSZXNvbHV0aW9uPigpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBmYWN0b3JpZXMgPSBuZXcgTWFwPEZhY3RvcnlJZGVudGlmaWVyLCBTZXJ2aWNlRmFjdG9yeURlZjxhbnk+PigpO1xuICAgIHByaXZhdGUgZXZhbHVhdG9yQ2xhc3NlcyA9IG5ldyBNYXA8c3RyaW5nLCBOZXdhYmxlPEV2YWx1YXRvcj4+KCk7XG4gICAgcHJpdmF0ZSBldmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0U2NvcGU6IEluc3RhbmNlU2NvcGU7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsYXp5TW9kZTogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluc3RBd2FyZVByb2Nlc3Nvck1hbmFnZXI6IEluc3RhbnRpYXRpb25Bd2FyZVByb2Nlc3Nvck1hbmFnZXI7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEFwcGxpY2F0aW9uQ29udGV4dE9wdGlvbnMgPSB7fSkge1xuICAgICAgICB0aGlzLmRlZmF1bHRTY29wZSA9IG9wdGlvbnMuZGVmYXVsdFNjb3BlIHx8IEluc3RhbmNlU2NvcGUuU0lOR0xFVE9OO1xuICAgICAgICB0aGlzLmxhenlNb2RlID0gb3B0aW9ucy5sYXp5TW9kZSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IG9wdGlvbnMubGF6eU1vZGU7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJJbnN0YW5jZVNjb3BlUmVzb2x1dGlvbihJbnN0YW5jZVNjb3BlLlNJTkdMRVRPTiwgU2luZ2xldG9uSW5zdGFuY2VSZXNvbHV0aW9uKTtcbiAgICAgICAgdGhpcy5yZWdpc3Rlckluc3RhbmNlU2NvcGVSZXNvbHV0aW9uKEluc3RhbmNlU2NvcGUuR0xPQkFMX1NIQVJFRF9TSU5HTEVUT04sIEdsb2JhbFNoYXJlZEluc3RhbmNlUmVzb2x1dGlvbik7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJJbnN0YW5jZVNjb3BlUmVzb2x1dGlvbihJbnN0YW5jZVNjb3BlLlRSQU5TSUVOVCwgVHJhbnNpZW50SW5zdGFuY2VSZXNvbHV0aW9uKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckV2YWx1YXRvcihFeHByZXNzaW9uVHlwZS5KU09OX1BBVEgsIEpTT05EYXRhRXZhbHVhdG9yKTtcbiAgICAgICAgaWYgKGlzTm9kZUpzKSB7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyRXZhbHVhdG9yKEV4cHJlc3Npb25UeXBlLkVOViwgRW52aXJvbm1lbnRFdmFsdWF0b3IpO1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckV2YWx1YXRvcihFeHByZXNzaW9uVHlwZS5BUkdWLCBBcmd2RXZhbHVhdG9yKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluc3RBd2FyZVByb2Nlc3Nvck1hbmFnZXIgPSBuZXcgSW5zdGFudGlhdGlvbkF3YXJlUHJvY2Vzc29yTWFuYWdlcih0aGlzKTtcbiAgICAgICAgdGhpcy5yZWdpc3Rlckluc3RBd2FyZVByb2Nlc3NvcihBT1BJbnN0YW50aWF0aW9uQXdhcmVQcm9jZXNzb3IuY3JlYXRlKHRoaXMpKTtcbiAgICB9XG4gICAgZ2V0SW5zdGFuY2U8VCwgTz4oc3ltYm9sOiBJZGVudGlmaWVyPFQ+LCBvd25lcj86IE8pOiBUIHtcbiAgICAgICAgaWYgKHN5bWJvbCA9PT0gQXBwbGljYXRpb25Db250ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcyBhcyB1bmtub3duIGFzIFQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBzeW1ib2wgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBzeW1ib2wgPT09ICdzeW1ib2wnKSB7XG4gICAgICAgICAgICBjb25zdCBmYWN0b3J5RGVmID0gdGhpcy5nZXRGYWN0b3J5KHN5bWJvbCk7XG4gICAgICAgICAgICBpZiAoZmFjdG9yeURlZikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZmFjdG9yeSwgaW5qZWN0aW9ucyB9ID0gZmFjdG9yeURlZjtcbiAgICAgICAgICAgICAgICBjb25zdCBmbiA9IGZhY3RvcnkodGhpcywgb3duZXIpO1xuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmludm9rZShmbiwge1xuICAgICAgICAgICAgICAgICAgICBpbmplY3Rpb25zXG4gICAgICAgICAgICAgICAgfSkgYXMgVDtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25zdHIgPSByZXN1bHQ/LmNvbnN0cnVjdG9yO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY29uc3RyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudENsYXNzID0gY29uc3RyIGFzIE5ld2FibGU8VD47XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc29sdmVyID0gbmV3IExpZmVjeWNsZU1hbmFnZXI8VD4oY29tcG9uZW50Q2xhc3MsIHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0luc3RBd2FyZVByb2Nlc3NvciA9IHRoaXMuaW5zdEF3YXJlUHJvY2Vzc29yTWFuYWdlci5pc0luc3RBd2FyZVByb2Nlc3NvckNsYXNzKGNvbXBvbmVudENsYXNzKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZXIuaW52b2tlUHJlSW5qZWN0TWV0aG9kKHJlc3VsdCBhcyBJbnN0YW5jZTxUPik7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNJbnN0QXdhcmVQcm9jZXNzb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMuaW5zdEF3YXJlUHJvY2Vzc29yTWFuYWdlci5hZnRlckluc3RhbnRpYXRpb24ocmVzdWx0IGFzIEluc3RhbmNlPFQ+KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlci5pbnZva2VQb3N0SW5qZWN0TWV0aG9kKHJlc3VsdCBhcyBJbnN0YW5jZTxUPik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsYXNzTWV0YWRhdGEgPSBHbG9iYWxNZXRhZGF0YS5nZXRJbnN0YW5jZSgpLnJlYWRlcigpLmdldENsYXNzTWV0YWRhdGE8VD4oc3ltYm9sKTtcbiAgICAgICAgICAgICAgICBpZiAoIWNsYXNzTWV0YWRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCcnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzeW1ib2wgPSBjbGFzc01ldGFkYXRhLnJlYWRlcigpLmdldENsYXNzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudENsYXNzID0gc3ltYm9sO1xuICAgICAgICBjb25zdCByZWFkZXIgPSBDbGFzc01ldGFkYXRhLmdldEluc3RhbmNlKGNvbXBvbmVudENsYXNzKS5yZWFkZXIoKTtcbiAgICAgICAgY29uc3Qgc2NvcGUgPSByZWFkZXIuZ2V0U2NvcGUoKTtcbiAgICAgICAgY29uc3QgcmVzb2x1dGlvbiA9ICh0aGlzLnJlc29sdXRpb25zLmdldChzY29wZSkgfHwgdGhpcy5yZXNvbHV0aW9ucy5nZXQodGhpcy5kZWZhdWx0U2NvcGUpKSBhcyBJbnN0YW5jZVJlc29sdXRpb247XG4gICAgICAgIGNvbnN0IGdldEluc3RhbmNlT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGNvbXBvbmVudENsYXNzLFxuICAgICAgICAgICAgb3duZXIsXG4gICAgICAgICAgICBvd25lclByb3BlcnR5S2V5OiB1bmRlZmluZWRcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHJlc29sdXRpb24uc2hvdWxkR2VuZXJhdGUoZ2V0SW5zdGFuY2VPcHRpb25zKSkge1xuICAgICAgICAgICAgY29uc3QgYnVpbGRlciA9IHRoaXMuY3JlYXRlQ29tcG9uZW50SW5zdGFuY2VCdWlsZGVyKGNvbXBvbmVudENsYXNzKTtcbiAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gYnVpbGRlci5idWlsZCgpO1xuICAgICAgICAgICAgY29uc3Qgc2F2ZUluc3RhbmNlT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAuLi5nZXRJbnN0YW5jZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgaW5zdGFuY2VcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXNvbHV0aW9uLnNhdmVJbnN0YW5jZShzYXZlSW5zdGFuY2VPcHRpb25zKTtcbiAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHV0aW9uLmdldEluc3RhbmNlKGdldEluc3RhbmNlT3B0aW9ucykgYXMgVDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQ29tcG9uZW50SW5zdGFuY2VCdWlsZGVyPFQ+KGNvbXBvbmVudENsYXNzOiBOZXdhYmxlPFQ+KSB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ29tcG9uZW50SW5zdGFuY2VCdWlsZGVyKGNvbXBvbmVudENsYXNzLCB0aGlzLCB0aGlzLmluc3RBd2FyZVByb2Nlc3Nvck1hbmFnZXIpO1xuICAgICAgICBidWlsZGVyLmFwcGVuZExhenlNb2RlKHRoaXMubGF6eU1vZGUpO1xuICAgICAgICByZXR1cm4gYnVpbGRlcjtcbiAgICB9XG5cbiAgICBnZXRGYWN0b3J5KGtleTogRmFjdG9yeUlkZW50aWZpZXIpIHtcbiAgICAgICAgY29uc3QgZmFjdG9yeSA9IEdsb2JhbE1ldGFkYXRhLmdldEluc3RhbmNlKCkucmVhZGVyKCkuZ2V0Q29tcG9uZW50RmFjdG9yeShrZXkpO1xuICAgICAgICBpZiAoIWZhY3RvcnkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZhY3Rvcmllcy5nZXQoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFjdG9yeTtcbiAgICB9XG4gICAgYmluZEZhY3Rvcnk8VD4oc3ltYm9sOiBGYWN0b3J5SWRlbnRpZmllciwgZmFjdG9yeTogU2VydmljZUZhY3Rvcnk8VCwgdW5rbm93bj4sIGluamVjdGlvbnM/OiBJZGVudGlmaWVyW10pIHtcbiAgICAgICAgdGhpcy5mYWN0b3JpZXMuc2V0KHN5bWJvbCwgbmV3IFNlcnZpY2VGYWN0b3J5RGVmKGZhY3RvcnksIGluamVjdGlvbnMpKTtcbiAgICB9XG4gICAgaW52b2tlPFIsIEN0eD4oZnVuYzogQW55RnVuY3Rpb248UiwgQ3R4Piwgb3B0aW9uczogSW52b2tlRnVuY3Rpb25PcHRpb25zPEN0eD4gPSB7fSk6IFIge1xuICAgICAgICBsZXQgZm46IEFueUZ1bmN0aW9uPFI+O1xuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGZuID0gZnVuYy5iaW5kKG9wdGlvbnMuY29udGV4dCBhcyBUaGlzUGFyYW1ldGVyVHlwZTx0eXBlb2YgZnVuYz4pIGFzIEFueUZ1bmN0aW9uPFI+O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm4gPSBmdW5jIGFzIEFueUZ1bmN0aW9uPFI+O1xuICAgICAgICB9XG4gICAgICAgIGlmIChoYXNBcmdzKG9wdGlvbnMpKSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5hcmdzID8gZm4oLi4ub3B0aW9ucy5hcmdzKSA6IGZuKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhc0luamVjdGlvbnMob3B0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbnN0IGFyZ3MgPSBvcHRpb25zLmluamVjdGlvbnMgPyBvcHRpb25zLmluamVjdGlvbnMubWFwKGl0ID0+IHRoaXMuZ2V0SW5zdGFuY2UoaXQpKSA6IFtdO1xuICAgICAgICAgICAgcmV0dXJuIGFyZ3MubGVuZ3RoID4gMCA/IGZuKC4uLmFyZ3MpIDogZm4oKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YShmbiwgRnVuY3Rpb25NZXRhZGF0YSkucmVhZGVyKCk7XG4gICAgICAgIGNvbnN0IHBhcmFtZXRlcklkZW50aWZpZXJzID0gbWV0YWRhdGEuZ2V0UGFyYW1ldGVycygpO1xuICAgICAgICBjb25zdCBhcmdzID0gcGFyYW1ldGVySWRlbnRpZmllcnMubWFwKGlkZW50aWZpZXIgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SW5zdGFuY2UoaWRlbnRpZmllcik7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZm4oLi4uYXJncyk7XG4gICAgfVxuICAgIGRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZXZlbnRFbWl0dGVyLmVtaXQoUFJFX0RFU1RST1lfRVZFTlRfS0VZKTtcbiAgICAgICAgdGhpcy5yZXNvbHV0aW9ucy5mb3JFYWNoKGl0ID0+IHtcbiAgICAgICAgICAgIGl0LmRlc3Ryb3koKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGV2YWx1YXRlPFQsIE8sIEE+KGV4cHJlc3Npb246IHN0cmluZywgb3B0aW9uczogRXZhbHVhdGlvbk9wdGlvbnM8Tywgc3RyaW5nLCBBPik6IFQgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBldmFsdWF0b3JDbGFzcyA9IHRoaXMuZXZhbHVhdG9yQ2xhc3Nlcy5nZXQob3B0aW9ucy50eXBlKTtcbiAgICAgICAgaWYgKCFldmFsdWF0b3JDbGFzcykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgVW5rbm93biBldmFsdWF0b3IgbmFtZTogJHtvcHRpb25zLnR5cGV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXZhbHVhdG9yID0gdGhpcy5nZXRJbnN0YW5jZShldmFsdWF0b3JDbGFzcyk7XG4gICAgICAgIHJldHVybiBldmFsdWF0b3IuZXZhbCh0aGlzLCBleHByZXNzaW9uLCBvcHRpb25zLmV4dGVybmFsQXJncyk7XG4gICAgfVxuICAgIHJlY29yZEpTT05EYXRhKG5hbWVzcGFjZTogc3RyaW5nLCBkYXRhOiBKU09ORGF0YSkge1xuICAgICAgICBjb25zdCBldmFsdWF0b3IgPSB0aGlzLmdldEluc3RhbmNlKEpTT05EYXRhRXZhbHVhdG9yKTtcbiAgICAgICAgZXZhbHVhdG9yLnJlY29yZERhdGEobmFtZXNwYWNlLCBkYXRhKTtcbiAgICB9XG4gICAgYmluZEluc3RhbmNlPFQ+KGlkZW50aWZpZXI6IHN0cmluZyB8IHN5bWJvbCwgaW5zdGFuY2U6IFQpIHtcbiAgICAgICAgY29uc3QgcmVzb2x1dGlvbiA9IHRoaXMucmVzb2x1dGlvbnMuZ2V0KEluc3RhbmNlU2NvcGUuU0lOR0xFVE9OKTtcbiAgICAgICAgcmVzb2x1dGlvbj8uc2F2ZUluc3RhbmNlKHtcbiAgICAgICAgICAgIGlkZW50aWZpZXIsXG4gICAgICAgICAgICBpbnN0YW5jZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVnaXN0ZXJJbnN0YW5jZVNjb3BlUmVzb2x1dGlvbjxUIGV4dGVuZHMgTmV3YWJsZTxJbnN0YW5jZVJlc29sdXRpb24+PihcbiAgICAgICAgc2NvcGU6IEluc3RhbmNlU2NvcGUgfCBzdHJpbmcsXG4gICAgICAgIHJlc29sdXRpb25Db25zdHJ1Y3RvcjogVCxcbiAgICAgICAgY29uc3RydWN0b3JBcmdzPzogQ29uc3RydWN0b3JQYXJhbWV0ZXJzPFQ+XG4gICAgKSB7XG4gICAgICAgIHRoaXMucmVzb2x1dGlvbnMuc2V0KHNjb3BlLCBuZXcgcmVzb2x1dGlvbkNvbnN0cnVjdG9yKC4uLihjb25zdHJ1Y3RvckFyZ3MgfHwgW10pKSk7XG4gICAgfVxuICAgIHJlZ2lzdGVyRXZhbHVhdG9yKG5hbWU6IHN0cmluZywgZXZhbHVhdG9yQ2xhc3M6IE5ld2FibGU8RXZhbHVhdG9yPikge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IE1ldGFkYXRhRmFjdG9yeS5nZXRNZXRhZGF0YShldmFsdWF0b3JDbGFzcywgQ2xhc3NNZXRhZGF0YSk7XG4gICAgICAgIG1ldGFkYXRhLnNldFNjb3BlKEluc3RhbmNlU2NvcGUuU0lOR0xFVE9OKTtcbiAgICAgICAgdGhpcy5ldmFsdWF0b3JDbGFzc2VzLnNldChuYW1lLCBldmFsdWF0b3JDbGFzcyk7XG4gICAgfVxuICAgIHJlZ2lzdGVySW5zdEF3YXJlUHJvY2Vzc29yKGNsYXp6OiBOZXdhYmxlPFBhcnRpYWxJbnN0QXdhcmVQcm9jZXNzb3I+KSB7XG4gICAgICAgIHRoaXMuaW5zdEF3YXJlUHJvY2Vzc29yTWFuYWdlci5hcHBlbmRJbnN0QXdhcmVQcm9jZXNzb3JDbGFzcyhjbGF6eik7XG4gICAgfVxuICAgIG9uUHJlRGVzdHJveShsaXN0ZW5lcjogRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICByZXR1cm4gdGhpcy5ldmVudEVtaXR0ZXIub24oUFJFX0RFU1RST1lfRVZFTlRfS0VZLCBsaXN0ZW5lcik7XG4gICAgfVxuICAgIGdldENsYXNzTWV0YWRhdGE8VD4oY3RvcjogTmV3YWJsZTxUPikge1xuICAgICAgICByZXR1cm4gQ2xhc3NNZXRhZGF0YS5nZXRJbnN0YW5jZShjdG9yKS5yZWFkZXIoKSBhcyBDbGFzc01ldGFkYXRhUmVhZGVyPFQ+O1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6WyJJbnN0YW5jZVNjb3BlIiwiUmVmbGVjdCIsImdsb2JhbCIsIkV4cHJlc3Npb25UeXBlIl0sIm1hcHBpbmdzIjoiOztBQUtBLElBQUEsaUJBQUEsa0JBQUEsWUFBQTtJQVVJLFNBQTRCLGlCQUFBLENBQUEsT0FBbUMsRUFBa0IsVUFBeUIsRUFBQTtRQUE5RSxJQUFPLENBQUEsT0FBQSxHQUFQLE9B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QUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsYUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n printWarning('warn', format, args);\n }\n }\n}\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\nvar didWarnStateUpdateForUnmountedComponent = {};\n\nfunction warnNoop(publicInstance, callerName) {\n {\n var _constructor = publicInstance.constructor;\n var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass';\n var warningKey = componentName + \".\" + callerName;\n\n if (didWarnStateUpdateForUnmountedComponent[warningKey]) {\n return;\n }\n\n error(\"Can't call %s on a component that is not yet mounted. \" + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName);\n\n didWarnStateUpdateForUnmountedComponent[warningKey] = true;\n }\n}\n/**\n * This is the abstract API for an update queue.\n */\n\n\nvar ReactNoopUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance, callback, callerName) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} Name of the calling function in the public API.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState, callback, callerName) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\nvar assign = Object.assign;\n\nvar emptyObject = {};\n\n{\n Object.freeze(emptyObject);\n}\n/**\n * Base class helpers for the updating state of a component.\n */\n\n\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n\n this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the\n // renderer.\n\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nComponent.prototype.isReactComponent = {};\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\n\nComponent.prototype.setState = function (partialState, callback) {\n if (typeof partialState !== 'object' && typeof partialState !== 'function' && partialState != null) {\n throw new Error('setState(...): takes an object of state variables to update or a ' + 'function which returns an object of state variables.');\n }\n\n this.updater.enqueueSetState(this, partialState, callback, 'setState');\n};\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\n\n\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');\n};\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\n\n\n{\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n\n var defineDeprecationWarning = function (methodName, info) {\n Object.defineProperty(Component.prototype, methodName, {\n get: function () {\n warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\n\n return undefined;\n }\n });\n };\n\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nfunction ComponentDummy() {}\n\nComponentDummy.prototype = Component.prototype;\n/**\n * Convenience component with default shallow equality check for sCU.\n */\n\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nvar pureComponentPrototype = PureComponent.prototype = new ComponentDummy();\npureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods.\n\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = true;\n\n// an immutable object with a single mutable value\nfunction createRef() {\n var refObject = {\n current: null\n };\n\n {\n Object.seal(refObject);\n }\n\n return refObject;\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n return type;\n }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n\nfunction testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, atrribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n var functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n\n // eslint-disable-next-line no-fallthrough\n }\n }\n\n return null;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function () {\n {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function () {\n {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * Create and return a new ReactElement of the given type.\n * See https://reactjs.org/docs/react-api.html#createelement\n */\n\nfunction createElement(type, config, children) {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n\n {\n warnIfStringRefCannotBeAutoConverted(config);\n }\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n var childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n\n props.children = childArray;\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n {\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n return newElement;\n}\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://reactjs.org/docs/react-api.html#cloneelement\n */\n\nfunction cloneElement(element, config, children) {\n if (element === null || element === undefined) {\n throw new Error(\"React.cloneElement(...): The argument must be a React element, but you passed \" + element + \".\");\n }\n\n var propName; // Original props are copied\n\n var props = assign({}, element.props); // Reserved names are extracted\n\n var key = element.key;\n var ref = element.ref; // Self is preserved since the owner is preserved.\n\n var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n\n var source = element._source; // Owner will be preserved, unless ref is overridden\n\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n } // Remaining properties override existing props\n\n\n var defaultProps;\n\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n var childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\nfunction isValidElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = key.replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n return '$' + escapedString;\n}\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\n\nvar didWarnAboutMaps = false;\nvar userProvidedKeyEscapeRegex = /\\/+/g;\n\nfunction escapeUserProvidedKey(text) {\n return text.replace(userProvidedKeyEscapeRegex, '$&/');\n}\n/**\n * Generate a key string that identifies a element within a set.\n *\n * @param {*} element A element that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\n\n\nfunction getElementKey(element, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (typeof element === 'object' && element !== null && element.key != null) {\n // Explicit key\n {\n checkKeyStringCoercion(element.key);\n }\n\n return escape('' + element.key);\n } // Implicit key determined by the index in the set\n\n\n return index.toString(36);\n}\n\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n var invokeCallback = false;\n\n if (children === null) {\n invokeCallback = true;\n } else {\n switch (type) {\n case 'string':\n case 'number':\n invokeCallback = true;\n break;\n\n case 'object':\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = true;\n }\n\n }\n }\n\n if (invokeCallback) {\n var _child = children;\n var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows:\n\n var childKey = nameSoFar === '' ? SEPARATOR + getElementKey(_child, 0) : nameSoFar;\n\n if (isArray(mappedChild)) {\n var escapedChildKey = '';\n\n if (childKey != null) {\n escapedChildKey = escapeUserProvidedKey(childKey) + '/';\n }\n\n mapIntoArray(mappedChild, array, escapedChildKey, '', function (c) {\n return c;\n });\n } else if (mappedChild != null) {\n if (isValidElement(mappedChild)) {\n {\n // The `if` statement here prevents auto-disabling of the safe\n // coercion ESLint rule, so we must manually disable it below.\n // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n if (mappedChild.key && (!_child || _child.key !== mappedChild.key)) {\n checkKeyStringCoercion(mappedChild.key);\n }\n }\n\n mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n escapedPrefix + ( // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n mappedChild.key && (!_child || _child.key !== mappedChild.key) ? // $FlowFixMe Flow incorrectly thinks existing element's key can be a number\n // eslint-disable-next-line react-internal/safe-string-coercion\n escapeUserProvidedKey('' + mappedChild.key) + '/' : '') + childKey);\n }\n\n array.push(mappedChild);\n }\n\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getElementKey(child, i);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n\n if (typeof iteratorFn === 'function') {\n var iterableChildren = children;\n\n {\n // Warn about using Maps as children\n if (iteratorFn === iterableChildren.entries) {\n if (!didWarnAboutMaps) {\n warn('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.');\n }\n\n didWarnAboutMaps = true;\n }\n }\n\n var iterator = iteratorFn.call(iterableChildren);\n var step;\n var ii = 0;\n\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getElementKey(child, ii++);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else if (type === 'object') {\n // eslint-disable-next-line react-internal/safe-string-coercion\n var childrenString = String(children);\n throw new Error(\"Objects are not valid as a React child (found: \" + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + \"). \" + 'If you meant to render a collection of children, use an array ' + 'instead.');\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenmap\n *\n * The provided mapFunction(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n\n var result = [];\n var count = 0;\n mapIntoArray(children, result, '', '', function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrencount\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\n\n\nfunction countChildren(children) {\n var n = 0;\n mapChildren(children, function () {\n n++; // Don't return anything\n });\n return n;\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenforeach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n mapChildren(children, function () {\n forEachFunc.apply(this, arguments); // Don't return anything.\n }, forEachContext);\n}\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrentoarray\n */\n\n\nfunction toArray(children) {\n return mapChildren(children, function (child) {\n return child;\n }) || [];\n}\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenonly\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\n\n\nfunction onlyChild(children) {\n if (!isValidElement(children)) {\n throw new Error('React.Children.only expected to receive a single React element child.');\n }\n\n return children;\n}\n\nfunction createContext(defaultValue) {\n // TODO: Second argument used to be an optional `calculateChangedBits`\n // function. Warn to reserve for future use?\n var context = {\n $$typeof: REACT_CONTEXT_TYPE,\n // As a workaround to support multiple concurrent renderers, we categorize\n // some renderers as primary and others as secondary. We only expect\n // there to be two concurrent renderers at most: React Native (primary) and\n // Fabric (secondary); React DOM (primary) and React ART (secondary).\n // Secondary renderers store their context values on separate fields.\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n // Used to track how many concurrent renderers this context currently\n // supports within in a single renderer. Such as parallel server rendering.\n _threadCount: 0,\n // These are circular\n Provider: null,\n Consumer: null,\n // Add these to use same hidden class in VM as ServerContext\n _defaultValue: null,\n _globalName: null\n };\n context.Provider = {\n $$typeof: REACT_PROVIDER_TYPE,\n _context: context\n };\n var hasWarnedAboutUsingNestedContextConsumers = false;\n var hasWarnedAboutUsingConsumerProvider = false;\n var hasWarnedAboutDisplayNameOnConsumer = false;\n\n {\n // A separate object, but proxies back to the original context object for\n // backwards compatibility. It has a different $$typeof, so we can properly\n // warn for the incorrect usage of Context as a Consumer.\n var Consumer = {\n $$typeof: REACT_CONTEXT_TYPE,\n _context: context\n }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here\n\n Object.defineProperties(Consumer, {\n Provider: {\n get: function () {\n if (!hasWarnedAboutUsingConsumerProvider) {\n hasWarnedAboutUsingConsumerProvider = true;\n\n error('Rendering is not supported and will be removed in ' + 'a future major release. Did you mean to render instead?');\n }\n\n return context.Provider;\n },\n set: function (_Provider) {\n context.Provider = _Provider;\n }\n },\n _currentValue: {\n get: function () {\n return context._currentValue;\n },\n set: function (_currentValue) {\n context._currentValue = _currentValue;\n }\n },\n _currentValue2: {\n get: function () {\n return context._currentValue2;\n },\n set: function (_currentValue2) {\n context._currentValue2 = _currentValue2;\n }\n },\n _threadCount: {\n get: function () {\n return context._threadCount;\n },\n set: function (_threadCount) {\n context._threadCount = _threadCount;\n }\n },\n Consumer: {\n get: function () {\n if (!hasWarnedAboutUsingNestedContextConsumers) {\n hasWarnedAboutUsingNestedContextConsumers = true;\n\n error('Rendering is not supported and will be removed in ' + 'a future major release. Did you mean to render instead?');\n }\n\n return context.Consumer;\n }\n },\n displayName: {\n get: function () {\n return context.displayName;\n },\n set: function (displayName) {\n if (!hasWarnedAboutDisplayNameOnConsumer) {\n warn('Setting `displayName` on Context.Consumer has no effect. ' + \"You should set it directly on the context with Context.displayName = '%s'.\", displayName);\n\n hasWarnedAboutDisplayNameOnConsumer = true;\n }\n }\n }\n }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty\n\n context.Consumer = Consumer;\n }\n\n {\n context._currentRenderer = null;\n context._currentRenderer2 = null;\n }\n\n return context;\n}\n\nvar Uninitialized = -1;\nvar Pending = 0;\nvar Resolved = 1;\nvar Rejected = 2;\n\nfunction lazyInitializer(payload) {\n if (payload._status === Uninitialized) {\n var ctor = payload._result;\n var thenable = ctor(); // Transition to the next state.\n // This might throw either because it's missing or throws. If so, we treat it\n // as still uninitialized and try again next time. Which is the same as what\n // happens if the ctor or any wrappers processing the ctor throws. This might\n // end up fixing it if the resolution was a concurrency bug.\n\n thenable.then(function (moduleObject) {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n var resolved = payload;\n resolved._status = Resolved;\n resolved._result = moduleObject;\n }\n }, function (error) {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n var rejected = payload;\n rejected._status = Rejected;\n rejected._result = error;\n }\n });\n\n if (payload._status === Uninitialized) {\n // In case, we're still uninitialized, then we're waiting for the thenable\n // to resolve. Set it as pending in the meantime.\n var pending = payload;\n pending._status = Pending;\n pending._result = thenable;\n }\n }\n\n if (payload._status === Resolved) {\n var moduleObject = payload._result;\n\n {\n if (moduleObject === undefined) {\n error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n ' + // Break up imports to avoid accidentally parsing them as dependencies.\n 'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\\n\\n\" + 'Did you accidentally put curly braces around the import?', moduleObject);\n }\n }\n\n {\n if (!('default' in moduleObject)) {\n error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n ' + // Break up imports to avoid accidentally parsing them as dependencies.\n 'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\", moduleObject);\n }\n }\n\n return moduleObject.default;\n } else {\n throw payload._result;\n }\n}\n\nfunction lazy(ctor) {\n var payload = {\n // We use these fields to store the result.\n _status: Uninitialized,\n _result: ctor\n };\n var lazyType = {\n $$typeof: REACT_LAZY_TYPE,\n _payload: payload,\n _init: lazyInitializer\n };\n\n {\n // In production, this would just set it on the object.\n var defaultProps;\n var propTypes; // $FlowFixMe\n\n Object.defineProperties(lazyType, {\n defaultProps: {\n configurable: true,\n get: function () {\n return defaultProps;\n },\n set: function (newDefaultProps) {\n error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n defaultProps = newDefaultProps; // Match production behavior more closely:\n // $FlowFixMe\n\n Object.defineProperty(lazyType, 'defaultProps', {\n enumerable: true\n });\n }\n },\n propTypes: {\n configurable: true,\n get: function () {\n return propTypes;\n },\n set: function (newPropTypes) {\n error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n propTypes = newPropTypes; // Match production behavior more closely:\n // $FlowFixMe\n\n Object.defineProperty(lazyType, 'propTypes', {\n enumerable: true\n });\n }\n }\n });\n }\n\n return lazyType;\n}\n\nfunction forwardRef(render) {\n {\n if (render != null && render.$$typeof === REACT_MEMO_TYPE) {\n error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).');\n } else if (typeof render !== 'function') {\n error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render);\n } else {\n if (render.length !== 0 && render.length !== 2) {\n error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.');\n }\n }\n\n if (render != null) {\n if (render.defaultProps != null || render.propTypes != null) {\n error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?');\n }\n }\n }\n\n var elementType = {\n $$typeof: REACT_FORWARD_REF_TYPE,\n render: render\n };\n\n {\n var ownName;\n Object.defineProperty(elementType, 'displayName', {\n enumerable: false,\n configurable: true,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name; // The inner component shouldn't inherit this display name in most cases,\n // because the component may be used elsewhere.\n // But it's nice for anonymous functions to inherit the name,\n // so that our component-stack generation logic will display their frames.\n // An anonymous function generally suggests a pattern like:\n // React.forwardRef((props, ref) => {...});\n // This kind of inner function is not used elsewhere so the side effect is okay.\n\n if (!render.name && !render.displayName) {\n render.displayName = name;\n }\n }\n });\n }\n\n return elementType;\n}\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction memo(type, compare) {\n {\n if (!isValidElementType(type)) {\n error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type);\n }\n }\n\n var elementType = {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: compare === undefined ? null : compare\n };\n\n {\n var ownName;\n Object.defineProperty(elementType, 'displayName', {\n enumerable: false,\n configurable: true,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name; // The inner component shouldn't inherit this display name in most cases,\n // because the component may be used elsewhere.\n // But it's nice for anonymous functions to inherit the name,\n // so that our component-stack generation logic will display their frames.\n // An anonymous function generally suggests a pattern like:\n // React.memo((props) => {...});\n // This kind of inner function is not used elsewhere so the side effect is okay.\n\n if (!type.name && !type.displayName) {\n type.displayName = name;\n }\n }\n });\n }\n\n return elementType;\n}\n\nfunction resolveDispatcher() {\n var dispatcher = ReactCurrentDispatcher.current;\n\n {\n if (dispatcher === null) {\n error('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for' + ' one of the following reasons:\\n' + '1. You might have mismatching versions of React and the renderer (such as React DOM)\\n' + '2. You might be breaking the Rules of Hooks\\n' + '3. You might have more than one copy of React in the same app\\n' + 'See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.');\n }\n } // Will result in a null access error if accessed outside render phase. We\n // intentionally don't throw our own error because this is in a hot path.\n // Also helps ensure this is inlined.\n\n\n return dispatcher;\n}\nfunction useContext(Context) {\n var dispatcher = resolveDispatcher();\n\n {\n // TODO: add a more generic warning for invalid values.\n if (Context._context !== undefined) {\n var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs\n // and nobody should be using this in existing code.\n\n if (realContext.Consumer === Context) {\n error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?');\n } else if (realContext.Provider === Context) {\n error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?');\n }\n }\n }\n\n return dispatcher.useContext(Context);\n}\nfunction useState(initialState) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useState(initialState);\n}\nfunction useReducer(reducer, initialArg, init) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useReducer(reducer, initialArg, init);\n}\nfunction useRef(initialValue) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useRef(initialValue);\n}\nfunction useEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useEffect(create, deps);\n}\nfunction useInsertionEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useInsertionEffect(create, deps);\n}\nfunction useLayoutEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useLayoutEffect(create, deps);\n}\nfunction useCallback(callback, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useCallback(callback, deps);\n}\nfunction useMemo(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useMemo(create, deps);\n}\nfunction useImperativeHandle(ref, create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useImperativeHandle(ref, create, deps);\n}\nfunction useDebugValue(value, formatterFn) {\n {\n var dispatcher = resolveDispatcher();\n return dispatcher.useDebugValue(value, formatterFn);\n }\n}\nfunction useTransition() {\n var dispatcher = resolveDispatcher();\n return dispatcher.useTransition();\n}\nfunction useDeferredValue(value) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useDeferredValue(value);\n}\nfunction useId() {\n var dispatcher = resolveDispatcher();\n return dispatcher.useId();\n}\nfunction useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if ( !fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher$1.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher$1.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n\n if (fn.displayName && _frame.includes('')) {\n _frame = _frame.replace('', fn.displayName);\n }\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher$1.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n setExtraStackFrame(stack);\n } else {\n setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n\nfunction getDeclarationErrorAddendum() {\n if (ReactCurrentOwner.current) {\n var name = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n}\n\nfunction getSourceInfoErrorAddendumForProps(elementProps) {\n if (elementProps !== null && elementProps !== undefined) {\n return getSourceInfoErrorAddendum(elementProps.__source);\n }\n\n return '';\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n\n {\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n if (typeof node !== 'object') {\n return;\n }\n\n if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentNameFromType(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\nfunction createElementWithValidation(type, props, children) {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendumForProps(props);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n {\n error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n }\n\n var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], type);\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n}\nvar didWarnAboutDeprecatedCreateFactory = false;\nfunction createFactoryWithValidation(type) {\n var validatedFactory = createElementWithValidation.bind(null, type);\n validatedFactory.type = type;\n\n {\n if (!didWarnAboutDeprecatedCreateFactory) {\n didWarnAboutDeprecatedCreateFactory = true;\n\n warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.');\n } // Legacy hook: remove it\n\n\n Object.defineProperty(validatedFactory, 'type', {\n enumerable: false,\n get: function () {\n warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');\n\n Object.defineProperty(this, 'type', {\n value: type\n });\n return type;\n }\n });\n }\n\n return validatedFactory;\n}\nfunction cloneElementWithValidation(element, props, children) {\n var newElement = cloneElement.apply(this, arguments);\n\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], newElement.type);\n }\n\n validatePropTypes(newElement);\n return newElement;\n}\n\nfunction startTransition(scope, options) {\n var prevTransition = ReactCurrentBatchConfig.transition;\n ReactCurrentBatchConfig.transition = {};\n var currentTransition = ReactCurrentBatchConfig.transition;\n\n {\n ReactCurrentBatchConfig.transition._updatedFibers = new Set();\n }\n\n try {\n scope();\n } finally {\n ReactCurrentBatchConfig.transition = prevTransition;\n\n {\n if (prevTransition === null && currentTransition._updatedFibers) {\n var updatedFibersCount = currentTransition._updatedFibers.size;\n\n if (updatedFibersCount > 10) {\n warn('Detected a large number of updates inside startTransition. ' + 'If this is due to a subscription please re-write it to use React provided hooks. ' + 'Otherwise concurrent mode guarantees are off the table.');\n }\n\n currentTransition._updatedFibers.clear();\n }\n }\n }\n}\n\nvar didWarnAboutMessageChannel = false;\nvar enqueueTaskImpl = null;\nfunction enqueueTask(task) {\n if (enqueueTaskImpl === null) {\n try {\n // read require off the module object to get around the bundlers.\n // we don't want them to detect a require and bundle a Node polyfill.\n var requireString = ('require' + Math.random()).slice(0, 7);\n var nodeRequire = module && module[requireString]; // assuming we're in node, let's try to get node's\n // version of setImmediate, bypassing fake timers if any.\n\n enqueueTaskImpl = nodeRequire.call(module, 'timers').setImmediate;\n } catch (_err) {\n // we're in a browser\n // we can't use regular timers because they may still be faked\n // so we try MessageChannel+postMessage instead\n enqueueTaskImpl = function (callback) {\n {\n if (didWarnAboutMessageChannel === false) {\n didWarnAboutMessageChannel = true;\n\n if (typeof MessageChannel === 'undefined') {\n error('This browser does not have a MessageChannel implementation, ' + 'so enqueuing tasks via await act(async () => ...) will fail. ' + 'Please file an issue at https://github.com/facebook/react/issues ' + 'if you encounter this warning.');\n }\n }\n }\n\n var channel = new MessageChannel();\n channel.port1.onmessage = callback;\n channel.port2.postMessage(undefined);\n };\n }\n }\n\n return enqueueTaskImpl(task);\n}\n\nvar actScopeDepth = 0;\nvar didWarnNoAwaitAct = false;\nfunction act(callback) {\n {\n // `act` calls can be nested, so we track the depth. This represents the\n // number of `act` scopes on the stack.\n var prevActScopeDepth = actScopeDepth;\n actScopeDepth++;\n\n if (ReactCurrentActQueue.current === null) {\n // This is the outermost `act` scope. Initialize the queue. The reconciler\n // will detect the queue and use it instead of Scheduler.\n ReactCurrentActQueue.current = [];\n }\n\n var prevIsBatchingLegacy = ReactCurrentActQueue.isBatchingLegacy;\n var result;\n\n try {\n // Used to reproduce behavior of `batchedUpdates` in legacy mode. Only\n // set to `true` while the given callback is executed, not for updates\n // triggered during an async event, because this is how the legacy\n // implementation of `act` behaved.\n ReactCurrentActQueue.isBatchingLegacy = true;\n result = callback(); // Replicate behavior of original `act` implementation in legacy mode,\n // which flushed updates immediately after the scope function exits, even\n // if it's an async function.\n\n if (!prevIsBatchingLegacy && ReactCurrentActQueue.didScheduleLegacyUpdate) {\n var queue = ReactCurrentActQueue.current;\n\n if (queue !== null) {\n ReactCurrentActQueue.didScheduleLegacyUpdate = false;\n flushActQueue(queue);\n }\n }\n } catch (error) {\n popActScope(prevActScopeDepth);\n throw error;\n } finally {\n ReactCurrentActQueue.isBatchingLegacy = prevIsBatchingLegacy;\n }\n\n if (result !== null && typeof result === 'object' && typeof result.then === 'function') {\n var thenableResult = result; // The callback is an async function (i.e. returned a promise). Wait\n // for it to resolve before exiting the current scope.\n\n var wasAwaited = false;\n var thenable = {\n then: function (resolve, reject) {\n wasAwaited = true;\n thenableResult.then(function (returnValue) {\n popActScope(prevActScopeDepth);\n\n if (actScopeDepth === 0) {\n // We've exited the outermost act scope. Recursively flush the\n // queue until there's no remaining work.\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n } else {\n resolve(returnValue);\n }\n }, function (error) {\n // The callback threw an error.\n popActScope(prevActScopeDepth);\n reject(error);\n });\n }\n };\n\n {\n if (!didWarnNoAwaitAct && typeof Promise !== 'undefined') {\n // eslint-disable-next-line no-undef\n Promise.resolve().then(function () {}).then(function () {\n if (!wasAwaited) {\n didWarnNoAwaitAct = true;\n\n error('You called act(async () => ...) without await. ' + 'This could lead to unexpected testing behaviour, ' + 'interleaving multiple act calls and mixing their ' + 'scopes. ' + 'You should - await act(async () => ...);');\n }\n });\n }\n }\n\n return thenable;\n } else {\n var returnValue = result; // The callback is not an async function. Exit the current scope\n // immediately, without awaiting.\n\n popActScope(prevActScopeDepth);\n\n if (actScopeDepth === 0) {\n // Exiting the outermost act scope. Flush the queue.\n var _queue = ReactCurrentActQueue.current;\n\n if (_queue !== null) {\n flushActQueue(_queue);\n ReactCurrentActQueue.current = null;\n } // Return a thenable. If the user awaits it, we'll flush again in\n // case additional work was scheduled by a microtask.\n\n\n var _thenable = {\n then: function (resolve, reject) {\n // Confirm we haven't re-entered another `act` scope, in case\n // the user does something weird like await the thenable\n // multiple times.\n if (ReactCurrentActQueue.current === null) {\n // Recursively flush the queue until there's no remaining work.\n ReactCurrentActQueue.current = [];\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n } else {\n resolve(returnValue);\n }\n }\n };\n return _thenable;\n } else {\n // Since we're inside a nested `act` scope, the returned thenable\n // immediately resolves. The outer scope will flush the queue.\n var _thenable2 = {\n then: function (resolve, reject) {\n resolve(returnValue);\n }\n };\n return _thenable2;\n }\n }\n }\n}\n\nfunction popActScope(prevActScopeDepth) {\n {\n if (prevActScopeDepth !== actScopeDepth - 1) {\n error('You seem to have overlapping act() calls, this is not supported. ' + 'Be sure to await previous act() calls before making a new one. ');\n }\n\n actScopeDepth = prevActScopeDepth;\n }\n}\n\nfunction recursivelyFlushAsyncActWork(returnValue, resolve, reject) {\n {\n var queue = ReactCurrentActQueue.current;\n\n if (queue !== null) {\n try {\n flushActQueue(queue);\n enqueueTask(function () {\n if (queue.length === 0) {\n // No additional work was scheduled. Finish.\n ReactCurrentActQueue.current = null;\n resolve(returnValue);\n } else {\n // Keep flushing work until there's none left.\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n }\n });\n } catch (error) {\n reject(error);\n }\n } else {\n resolve(returnValue);\n }\n }\n}\n\nvar isFlushing = false;\n\nfunction flushActQueue(queue) {\n {\n if (!isFlushing) {\n // Prevent re-entrance.\n isFlushing = true;\n var i = 0;\n\n try {\n for (; i < queue.length; i++) {\n var callback = queue[i];\n\n do {\n callback = callback(true);\n } while (callback !== null);\n }\n\n queue.length = 0;\n } catch (error) {\n // If something throws, leave the remaining callbacks on the queue.\n queue = queue.slice(i + 1);\n throw error;\n } finally {\n isFlushing = false;\n }\n }\n }\n}\n\nvar createElement$1 = createElementWithValidation ;\nvar cloneElement$1 = cloneElementWithValidation ;\nvar createFactory = createFactoryWithValidation ;\nvar Children = {\n map: mapChildren,\n forEach: forEachChildren,\n count: countChildren,\n toArray: toArray,\n only: onlyChild\n};\n\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;\nexports.cloneElement = cloneElement$1;\nexports.createContext = createContext;\nexports.createElement = createElement$1;\nexports.createFactory = createFactory;\nexports.createRef = createRef;\nexports.forwardRef = forwardRef;\nexports.isValidElement = isValidElement;\nexports.lazy = lazy;\nexports.memo = memo;\nexports.startTransition = startTransition;\nexports.unstable_act = act;\nexports.useCallback = useCallback;\nexports.useContext = useContext;\nexports.useDebugValue = useDebugValue;\nexports.useDeferredValue = useDeferredValue;\nexports.useEffect = useEffect;\nexports.useId = useId;\nexports.useImperativeHandle = useImperativeHandle;\nexports.useInsertionEffect = useInsertionEffect;\nexports.useLayoutEffect = useLayoutEffect;\nexports.useMemo = useMemo;\nexports.useReducer = useReducer;\nexports.useRef = useRef;\nexports.useState = useState;\nexports.useSyncExternalStore = useSyncExternalStore;\nexports.useTransition = useTransition;\nexports.version = ReactVersion;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","function t(t){for(var n=arguments.length,i=new Array(n>1?n-1:0),r=1;rt.length)&&(n=t.length);for(var i=0,r=new Array(n);i=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}function A(t){return Object.assign((function(n,i){g(n,i,t)}),t)}function g(t,n,i){b(t,Kn)||a(t,Kn,m({},t[Kn])),function(t){return\"override\"===t.t}(i)||(t[Kn][n]=i)}function _(t,n,i){void 0===n&&(n=Rn),void 0===i&&(i=Rn);var r=new In(t);return n!==Rn&&St(r,n),i!==Rn&&Mt(r,i),r}function S(t,n,i){return It(t)?t:Array.isArray(t)?Jn.array(t,{name:i}):s(t)?Jn.object(t,void 0,{name:i}):v(t)?Jn.map(t,{name:i}):l(t)?Jn.set(t,{name:i}):\"function\"!=typeof t||At(t)||Ct(t)?t:f(t)?Ri(t):Si(i,t)}function M(t){return t}function N(t,n){return{t:t,i:n,o:E,u:V}}function E(t,n,i,r){var e;if(null!=(e=this.i)&&e.bound)return null===this.u(t,n,i,!1)?0:1;if(r===t.s)return null===this.u(t,n,i,!1)?0:2;if(At(i.value))return 1;var o=R(t,this,n,i,!1);return _n(r,n,o),2}function V(t,n,i,r){var e=R(t,this,n,i);return t.h(n,e,r)}function R(t,n,i,r,e){var o,u,s,f,a,c,h;void 0===e&&(e=yi.safeDescriptors);var v,l=r.value;return null!=(o=n.i)&&o.bound&&(l=l.bind(null!=(v=t.v)?v:t.s)),{value:z(null!=(u=null==(s=n.i)?void 0:s.name)?u:i.toString(),l,null!=(f=null==(a=n.i)?void 0:a.autoAction)&&f,null!=(c=n.i)&&c.bound?null!=(h=t.v)?h:t.s:void 0),configurable:!e||t.l,enumerable:!1,writable:!e}}function T(t,n){return{t:t,i:n,o:k,u:C}}function k(t,n,i,r){var e;if(r===t.s)return null===this.u(t,n,i,!1)?0:2;if(null!=(e=this.i)&&e.bound&&(!b(t.s,n)||!Ct(t.s[n]))&&null===this.u(t,n,i,!1))return 0;if(Ct(i.value))return 1;var o=K(t,0,0,i,!1,!1);return _n(r,n,o),2}function C(t,n,i,r){var e,o=K(t,0,0,i,null==(e=this.i)?void 0:e.bound);return t.h(n,o,r)}function K(t,n,i,r,e,o){void 0===o&&(o=yi.safeDescriptors);var u,s=r.value;return Ct(s)||(s=Ri(s)),e&&((s=s.bind(null!=(u=t.v)?u:t.s)).isMobXFlow=!0),{value:s,configurable:!o||t.l,enumerable:!1,writable:!o}}function L(t,n){return{t:t,i:n,o:I,u:P}}function I(t,n,i){return null===this.u(t,n,i,!1)?0:1}function P(t,n,i,r){return t.p(n,m({},this.i,{get:i.get,set:i.set}),r)}function D(t,n){return{t:t,i:n,o:B,u:q}}function B(t,n,i){return null===this.u(t,n,i,!1)?0:1}function q(t,n,i,r){var e,o;return t.m(n,i.value,null!=(e=null==(o=this.i)?void 0:o.enhancer)?e:S,r)}function G(t){return{t:\"true\",i:t,o:W,u:H}}function W(t,n,i,r){var e,o,u,s;if(i.get)return Zn.o(t,n,i,r);if(i.set){var a=z(n.toString(),i.set);return r===t.s?null===t.h(n,{configurable:!yi.safeDescriptors||t.l,set:a})?0:2:(_n(r,n,{configurable:!0,set:a}),2)}if(r!==t.s&&\"function\"==typeof i.value)return f(i.value)?(null!=(s=this.i)&&s.autoBind?Ri.bound:Ri).o(t,n,i,r):(null!=(u=this.i)&&u.autoBind?Si.bound:Si).o(t,n,i,r);var c,h=!1===(null==(e=this.i)?void 0:e.deep)?Jn.ref:Jn;return\"function\"==typeof i.value&&null!=(o=this.i)&&o.autoBind&&(i.value=i.value.bind(null!=(c=t.v)?c:t.s)),h.o(t,n,i,r)}function H(t,n,i,r){var e,o,u;return i.get?Zn.u(t,n,i,r):i.set?t.h(n,{configurable:!yi.safeDescriptors||t.l,set:z(n.toString(),i.set)},r):(\"function\"==typeof i.value&&null!=(e=this.i)&&e.autoBind&&(i.value=i.value.bind(null!=(u=t.v)?u:t.s)),(!1===(null==(o=this.i)?void 0:o.deep)?Jn.ref:Jn).u(t,n,i,r))}function X(t){return t||Gn}function U(t){return!0===t.deep?S:!1===t.deep?M:(n=t.defaultDecorator)&&null!=(i=null==(r=n.i)?void 0:r.enhancer)?i:S;var n,i,r}function F(t,n,i){if(!o(n))return It(t)?t:s(t)?Jn.object(t,n,i):Array.isArray(t)?Jn.array(t,n):v(t)?Jn.map(t,n):l(t)?Jn.set(t,n):\"object\"==typeof t&&null!==t?t:Jn.box(t,n);g(t,n,Wn)}function z(t,n,i,r){function e(){return $(0,i,n,r||this,arguments)}return void 0===i&&(i=!1),e.isMobxAction=!0,ri&&(ei.value=t,_n(e,\"name\",ei)),e}function $(t,n,i,r,e){var o=J(0,n);try{return i.apply(r,e)}catch(t){throw o.j=t,t}finally{Y(o)}}function J(t,n){var i=yi.trackingDerivation,r=!n||!i;dt();var e=yi.allowStateChanges;r&&(ut(),e=Z(!0));var o={O:r,A:i,g:e,_:ft(!0),S:!1,M:0,N:ii++,V:ni};return ni=o.N,o}function Y(n){ni!==n.N&&t(30),ni=n.V,void 0!==n.j&&(yi.suppressReactionErrors=!0),tt(n.g),at(n._),bt(),n.O&&st(n.A),yi.suppressReactionErrors=!1}function Q(t,n){var i=Z(t);try{return n()}finally{tt(i)}}function Z(t){var n=yi.allowStateChanges;return yi.allowStateChanges=t,n}function tt(t){yi.allowStateChanges=t}function nt(t){return t instanceof vi}function it(t){switch(t.R){case fi.T:return!1;case fi.k:case fi.C:return!0;case fi.K:for(var n=ft(!0),i=ut(),r=t.L,e=r.length,o=0;or&&(r=s.R)}for(i.length=e,t.I=null,o=n.length;o--;){var f=n[o];0===f.B&&vt(f,t),f.B=0}for(;e--;){var a=i[e];1===a.B&&(a.B=0,ht(a,t))}r!==fi.T&&(t.R=r,t.q())}(t),at(r),e}function et(t){var n=t.L;t.L=[];for(var i=n.length;i--;)vt(n[i],t);t.R=fi.k}function ot(t){var n=ut();try{return t()}finally{st(n)}}function ut(){var t=yi.trackingDerivation;return yi.trackingDerivation=null,t}function st(t){yi.trackingDerivation=t}function ft(t){var n=yi.allowStateReads;return yi.allowStateReads=t,n}function at(t){yi.allowStateReads=t}function ct(t){if(t.R!==fi.T){t.R=fi.T;for(var n=t.L,i=n.length;i--;)n[i].G=fi.T}}function ht(t,n){t.W.add(n),t.G>n.R&&(t.G=n.R)}function vt(t,n){t.W.delete(n),0===t.W.size&<(t)}function lt(t){!1===t.H&&(t.H=!0,yi.pendingUnobservations.push(t))}function dt(){yi.inBatch++}function bt(){if(0==--yi.inBatch){mt();for(var t=yi.pendingUnobservations,n=0;n0&<(t),!1)}function yt(t){t.G!==fi.C&&(t.G=fi.C,t.W.forEach((function(t){t.R===fi.T&&t.q(),t.R=fi.C})))}function mt(){yi.inBatch>0||yi.isRunningReactions||wi(wt)}function wt(){yi.isRunningReactions=!0;for(var t=yi.pendingReactions,n=0;t.length>0;){100==++n&&(console.error(\"[mobx] cycle in reaction: \"+t[0]),t.splice(0));for(var i=t.splice(0),r=0,e=i.length;r\",n,t):e(i)?z(n,i,t):o(i)?g(n,i,t?Ai:Oi):o(n)?A(N(t?\"autoAction\":\"action\",{name:n,autoAction:t})):void 0}}function xt(t){return $(0,!1,t,this,void 0)}function At(t){return e(t)&&!0===t.isMobxAction}function gt(t,n){function i(){t(o)}var r,e;void 0===n&&(n=Nn);var o,u=null!=(r=null==(e=n)?void 0:e.name)?r:\"Autorun\";if(n.scheduler||n.delay){var s=_t(n),f=!1;o=new mi(u,(function(){f||(f=!0,s((function(){f=!1,o.J||o.track(i)})))}),n.onError,n.requiresObservable)}else o=new mi(u,(function(){this.track(i)}),n.onError,n.requiresObservable);return o.Y(),o.Z()}function _t(t){return t.scheduler?t.scheduler:t.delay?function(n){return setTimeout(n,t.delay)}:Mi}function St(t,n,i){return Nt(\"onBO\",t,n,i)}function Mt(t,n,i){return Nt(\"onBUO\",t,n,i)}function Nt(t,n,i,r){var o=\"function\"==typeof r?bn(n,i):bn(n),u=e(r)?r:i,s=t+\"L\";return o[s]?o[s].add(u):o[s]=new Set([u]),function(){var t=o[s];t&&(t.delete(u),0===t.size&&delete o[s])}}function Et(t,n,i,r){var e=Cn(n),o=sn(t,r)[Ln];dt();try{kn(e).forEach((function(t){o.u(t,e[t],!i||!(t in i)||i[t])}))}finally{bt()}return t}function Vt(t){var n,i={name:t.tt};return t.L&&t.L.length>0&&(i.dependencies=(n=t.L,Array.from(new Set(n))).map(Vt)),i}function Rt(t){var n={name:t.tt};return function(t){return t.W&&t.W.size>0}(t)&&(n.observers=Array.from(function(t){return t.W}(t)).map(Rt)),n}function Tt(){this.message=\"FLOW_CANCELLED\"}function kt(t){e(t.cancel)&&t.cancel()}function Ct(t){return!0===(null==t?void 0:t.isMobXFlow)}function Kt(t,n){if(void 0===n)return hi(t);if(!1===an(t))return!1;if(!t[Ln].nt.has(n))return!1;var i=bn(t,n);return hi(i)}function Lt(t,n){return!!t&&(void 0!==n?!!an(t)&&t[Ln].nt.has(n):an(t)||!!t[Ln]||Pn(t)||ji(t)||hi(t))}function It(t){return Lt(t)}function Pt(n){return an(n)?n[Ln].it():Ui(n)||Yi(n)?Array.from(n.keys()):un(n)?n.map((function(t,n){return n})):void t(5)}function Dt(n,i){return an(n)?n[Ln].rt(i):Ui(n)||Yi(n)?n.has(i):un(n)?i>=0&&i0}function $t(t,n){var i=t.ut||(t.ut=[]);return i.push(n),r((function(){var t=i.indexOf(n);-1!==t&&i.splice(t,1)}))}function Jt(n,i){var r=ut();try{for(var e=[].concat(n.ut||[]),o=0,u=e.length;o0}function Qt(t,n){var i=t.st||(t.st=[]);return i.push(n),r((function(){var t=i.indexOf(n);-1!==t&&i.splice(t,1)}))}function Zt(t,n){var i=ut(),r=t.st;if(r){for(var e=0,o=(r=r.slice()).length;eir){for(var n=ir;n=0&&r++}n=wn(n),i=wn(i);var a=\"[object Array]\"===f;if(!a){if(\"object\"!=typeof n||\"object\"!=typeof i)return!1;var c=n.constructor,h=i.constructor;if(c!==h&&!(e(c)&&c instanceof c&&e(h)&&h instanceof h)&&\"constructor\"in n&&\"constructor\"in i)return!1}if(0===r)return!1;r<0&&(r=-1),u=u||[];for(var v=(o=o||[]).length;v--;)if(o[v]===n)return u[v]===i;if(o.push(n),u.push(i),a){if((v=n.length)!==i.length)return!1;for(;v--;)if(!t(n[v],i[v],r-1,o,u))return!1}else{var l,d=Object.keys(n);if(v=d.length,Object.keys(i).length!==v)return!1;for(;v--;)if(!b(i,l=d[v])||!t(n[l],i[l],r-1,o,u))return!1}return o.pop(),u.pop(),!0}(t,n,i)}function wn(t){return un(t)?t.slice():v(t)||Ui(t)||l(t)||Yi(t)?Array.from(t.entries()):t}function jn(t){return t[Symbol.iterator]=On,t}function On(){return this}Object.defineProperty(exports,\"__esModule\",{value:!0});var xn={},An=Object.assign,gn=Object.getOwnPropertyDescriptor,_n=Object.defineProperty,Sn=Object.prototype,Mn=[];Object.freeze(Mn);var Nn={};Object.freeze(Nn);var En=\"undefined\"!=typeof Proxy,Vn=Object.toString(),Rn=function(){},Tn=void 0!==Object.getOwnPropertySymbols,kn=\"undefined\"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:Tn?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Object.getOwnPropertyNames,Cn=Object.getOwnPropertyDescriptors||function(t){var n={};return kn(t).forEach((function(i){n[i]=gn(t,i)})),n},Kn=Symbol(\"mobx-stored-annotations\"),Ln=Symbol(\"mobx administration\"),In=function(){function t(t){void 0===t&&(t=\"Atom\"),this.tt=void 0,this.H=!1,this.X=!1,this.W=new Set,this.B=0,this.F=0,this.G=fi.k,this.onBOL=void 0,this.onBUOL=void 0,this.tt=t}var n=t.prototype;return n.onBO=function(){this.onBOL&&this.onBOL.forEach((function(t){return t()}))},n.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(t){return t()}))},n.reportObserved=function(){return pt(this)},n.reportChanged=function(){dt(),yt(this),yi.stateVersion=yi.stateVersion0&&!i.__mobxGlobals&&(bi=!1),i.__mobxGlobals&&i.__mobxGlobals.version!==(new di).version&&(bi=!1),bi?i.__mobxGlobals?(i.__mobxInstanceCount+=1,i.__mobxGlobals.UNCHANGED||(i.__mobxGlobals.UNCHANGED={}),i.__mobxGlobals):(i.__mobxInstanceCount=1,i.__mobxGlobals=new di):(setTimeout((function(){pi||t(35)}),1),new di)}(),mi=function(){function t(t,n,i,r){void 0===t&&(t=\"Reaction\"),this.tt=void 0,this.Kt=void 0,this.Lt=void 0,this.It=void 0,this.L=[],this.I=[],this.R=fi.k,this.B=0,this.D=0,this.P=0,this.J=!1,this.Pt=!1,this.Dt=!1,this.Bt=!1,this.ot=ai.NONE,this.tt=t,this.Kt=n,this.Lt=i,this.It=r}var n=t.prototype;return n.q=function(){this.Y()},n.Y=function(){this.Pt||(this.Pt=!0,yi.pendingReactions.push(this),mt())},n.isScheduled=function(){return this.Pt},n.$=function(){if(!this.J){dt(),this.Pt=!1;var t=yi.trackingContext;if(yi.trackingContext=this,it(this)){this.Dt=!0;try{this.Kt()}catch(t){this.qt(t)}}yi.trackingContext=t,bt()}},n.track=function(t){if(!this.J){dt(),this.Bt=!0;var n=yi.trackingContext;yi.trackingContext=this;var i=rt(this,t,void 0);yi.trackingContext=n,this.Bt=!1,this.Dt=!1,this.J&&et(this),nt(i)&&this.qt(i.cause),bt()}},n.qt=function(t){var n=this;if(this.Lt)this.Lt(t,this);else{if(yi.disableErrorBoundaries)throw t;yi.suppressReactionErrors||console.error(\"[mobx] uncaught error in '\"+this+\"'\",t),yi.globalReactionErrorHandlers.forEach((function(i){return i(t,n)}))}},n.dispose=function(){this.J||(this.J=!0,this.Bt||(dt(),et(this),bt()))},n.Z=function(){var t=this.dispose.bind(this);return t[Ln]=this,t},n.toString=function(){return\"Reaction[\"+this.tt+\"]\"},n.trace=function(t){void 0===t&&(t=!1),Gt(this,t)},t}(),wi=function(t){return t()},ji=h(\"Reaction\",mi),Oi=N(\"action\"),xi=N(\"action.bound\",{bound:!0}),Ai=N(\"autoAction\",{autoAction:!0}),gi=N(\"autoAction.bound\",{autoAction:!0,bound:!0}),_i=Ot(!1);Object.assign(_i,Oi);var Si=Ot(!0);Object.assign(Si,Ai),_i.bound=A(xi),Si.bound=A(gi);var Mi=function(t){return t()},Ni=0;Tt.prototype=Object.create(Error.prototype);var Ei=T(\"flow\"),Vi=T(\"flow.bound\",{bound:!0}),Ri=Object.assign((function(t,n){if(o(n))return g(t,n,Ei);var i=t,r=i.name||\"\",u=function(){var t,n=this,o=arguments,u=++Ni,s=_i(r+\" - runid: \"+u+\" - init\",i).apply(n,o),f=void 0,a=new Promise((function(n,i){function o(t){var n;f=void 0;try{n=_i(r+\" - runid: \"+u+\" - yield \"+h++,s.next).call(s,t)}catch(t){return i(t)}c(n)}function a(t){var n;f=void 0;try{n=_i(r+\" - runid: \"+u+\" - yield \"+h++,s.throw).call(s,t)}catch(t){return i(t)}c(n)}function c(t){if(!e(null==t?void 0:t.then))return t.done?n(t.value):(f=Promise.resolve(t.value)).then(o,a);t.then(c,i)}var h=0;t=i,o(void 0)}));return a.cancel=_i(r+\" - runid: \"+u+\" - cancel\",(function(){try{f&&kt(f);var n=s.return(void 0),i=Promise.resolve(n.value);i.then(Rn,Rn),kt(i),t(new Tt)}catch(n){t(n)}})),a};return u.isMobXFlow=!0,u}),Ei);Ri.bound=A(Vi);var Ti={has:function(t,n){return Ft(t).rt(n)},get:function(t,n){return Ft(t).lt(n)},set:function(t,n,i){var r;return!!o(n)&&(null==(r=Ft(t).dt(n,i,!0))||r)},deleteProperty:function(t,n){var i;return!!o(n)&&(null==(i=Ft(t).Gt(n,!0))||i)},defineProperty:function(t,n,i){var r;return null==(r=Ft(t).h(n,i))||r},ownKeys:function(t){return Ft(t).et()},preventExtensions:function(){t(13)}},ki=Symbol(\"mobx-keys\"),Ci=\"update\",Ki={get:function(t,n){var i=t[Ln];return n===Ln?i:\"length\"===n?i.Wt():\"string\"!=typeof n||isNaN(n)?b(Ii,n)?Ii[n]:t[n]:i.lt(parseInt(n))},set:function(t,n,i){var r=t[Ln];return\"length\"===n&&r.Ht(i),\"symbol\"==typeof n||isNaN(n)?t[n]=i:r.dt(parseInt(n),i),!0},preventExtensions:function(){t(15)}},Li=function(){function n(t,n,i,r){void 0===t&&(t=\"ObservableArray\"),this.Xt=void 0,this.Ut=void 0,this.at=void 0,this.nt=[],this.ut=void 0,this.st=void 0,this.Ft=void 0,this.dehancer=void 0,this.v=void 0,this.zt=0,this.Xt=i,this.Ut=r,this.at=new In(t),this.Ft=function(t,i){return n(t,i,\"ObservableArray[..]\")}}var i=n.prototype;return i.$t=function(t){return void 0!==this.dehancer?this.dehancer(t):t},i.ct=function(t){return void 0!==this.dehancer&&t.length>0?t.map(this.dehancer):t},i.At=function(t){return $t(this,t)},i.gt=function(t,n){return void 0===n&&(n=!1),n&&t({observableKind:\"array\",object:this.v,debugObjectName:this.at.tt,type:\"splice\",index:0,added:this.nt.slice(),addedCount:this.nt.length,removed:[],removedCount:0}),Qt(this,t)},i.Wt=function(){return this.at.reportObserved(),this.nt.length},i.Ht=function(n){(\"number\"!=typeof n||isNaN(n)||n<0)&&t(\"Out of range: \"+n);var i=this.nt.length;if(n!==i)if(n>i){for(var r=new Array(n-i),e=0;e0&&ln(n+i+1)},i.ft=function(t,n,i){var r=this,e=this.nt.length;if(void 0===t?t=0:t>e?t=e:t<0&&(t=Math.max(0,e+t)),n=1===arguments.length?e-t:null==n?0:Math.max(0,Math.min(n,e-t)),void 0===i&&(i=Mn),zt(this)){var o=Jt(this,{object:this.v,type:\"splice\",index:t,removedCount:n,added:i});if(!o)return Mn;n=o.removedCount,i=o.added}if(i=0===i.length?i:i.map((function(t){return r.Ft(t,void 0)})),this.Ut){var u=i.length-n;this.Jt(e,u)}var s=this.Yt(t,n,i);return 0===n&&0===i.length||this.Qt(t,i,s),this.ct(s)},i.Yt=function(t,n,i){var r;if(i.length<1e4)return(r=this.nt).splice.apply(r,[t,n].concat(i));var e=this.nt.slice(t,t+n),o=this.nt.slice(t+n);this.nt.length+=i.length-n;for(var u=0;u=this.nt.length))return this.at.reportObserved(),this.$t(this.nt[t]);console.warn(\"[mobx] Out of bounds read: \"+t)},i.dt=function(n,i){var r=this.nt;if(this.Ut&&n>r.length&&t(17,n,r.length),n2?i-2:0),e=2;e-1&&(this.splice(i,1),!0)}};nn(\"concat\",rn),nn(\"flat\",rn),nn(\"includes\",rn),nn(\"indexOf\",rn),nn(\"join\",rn),nn(\"lastIndexOf\",rn),nn(\"slice\",rn),nn(\"toString\",rn),nn(\"toLocaleString\",rn),nn(\"every\",en),nn(\"filter\",en),nn(\"find\",en),nn(\"findIndex\",en),nn(\"flatMap\",en),nn(\"forEach\",en),nn(\"map\",en),nn(\"some\",en),nn(\"reduce\",on),nn(\"reduceRight\",on);var Pi,Di,Bi=h(\"ObservableArrayAdministration\",Li),qi={},Gi=\"add\";Pi=Symbol.iterator,Di=Symbol.toStringTag;var Wi,Hi,Xi=function(){function n(n,i,r){var o=this;void 0===i&&(i=S),void 0===r&&(r=\"ObservableMap\"),this.Ft=void 0,this.tt=void 0,this[Ln]=qi,this.pt=void 0,this.yt=void 0,this.bt=void 0,this.ut=void 0,this.st=void 0,this.dehancer=void 0,this.Ft=i,this.tt=r,e(Map)||t(18),this.bt=_(\"ObservableMap.keys()\"),this.pt=new Map,this.yt=new Map,Q(!0,(function(){o.merge(n)}))}var i=n.prototype;return i.rt=function(t){return this.pt.has(t)},i.has=function(t){var n=this;if(!yi.trackingDerivation)return this.rt(t);var i=this.yt.get(t);if(!i){var r=i=new ui(this.rt(t),M,\"ObservableMap.key?\",!1);this.yt.set(t,r),Mt(r,(function(){return n.yt.delete(t)}))}return i.get()},i.set=function(t,n){var i=this.rt(t);if(zt(this)){var r=Jt(this,{type:i?Ci:Gi,object:this,newValue:n,name:t});if(!r)return this;n=r.newValue}return i?this.tn(t,n):this.nn(t,n),this},i.delete=function(t){var n=this;if(zt(this)&&!Jt(this,{type:\"delete\",object:this,name:t}))return!1;if(this.rt(t)){var i=Yt(this),r=i?{observableKind:\"map\",debugObjectName:this.tt,type:\"delete\",object:this,oldValue:this.pt.get(t).jt,name:t}:null;return Ht((function(){var i;n.bt.reportChanged(),null==(i=n.yt.get(t))||i.xt(!1),n.pt.get(t).xt(void 0),n.pt.delete(t)})),i&&Zt(this,r),!0}return!1},i.tn=function(t,n){var i=this.pt.get(t);if((n=i.Ot(n))!==yi.UNCHANGED){var r=Yt(this),e=r?{observableKind:\"map\",debugObjectName:this.tt,type:Ci,object:this,oldValue:i.jt,name:t,newValue:n}:null;i.xt(n),r&&Zt(this,e)}},i.nn=function(t,n){var i=this;Ht((function(){var r,e=new ui(n,i.Ft,\"ObservableMap.key\",!1);i.pt.set(t,e),n=e.jt,null==(r=i.yt.get(t))||r.xt(!0),i.bt.reportChanged()}));var r=Yt(this);r&&Zt(this,r?{observableKind:\"map\",debugObjectName:this.tt,type:Gi,object:this,name:t,newValue:n}:null)},i.get=function(t){return this.has(t)?this.$t(this.pt.get(t).get()):this.$t(void 0)},i.$t=function(t){return void 0!==this.dehancer?this.dehancer(t):t},i.keys=function(){return this.bt.reportObserved(),this.pt.keys()},i.values=function(){var t=this,n=this.keys();return jn({next:function(){var i=n.next(),r=i.done;return{done:r,value:r?void 0:t.get(i.value)}}})},i.entries=function(){var t=this,n=this.keys();return jn({next:function(){var i=n.next(),r=i.done,e=i.value;return{done:r,value:r?void 0:[e,t.get(e)]}}})},i[Pi]=function(){return this.entries()},i.forEach=function(t,n){for(var i,r=x(this);!(i=r()).done;){var e=i.value;t.call(n,e[1],e[0],this)}},i.merge=function(n){var i=this;return Ui(n)&&(n=new Map(n)),Ht((function(){s(n)?function(t){var n=Object.keys(t);if(!Tn)return n;var i=Object.getOwnPropertySymbols(t);return i.length?[].concat(n,i.filter((function(n){return Sn.propertyIsEnumerable.call(t,n)}))):n}(n).forEach((function(t){return i.set(t,n[t])})):Array.isArray(n)?n.forEach((function(t){return i.set(t[0],t[1])})):v(n)?(n.constructor!==Map&&t(19,n),n.forEach((function(t,n){return i.set(n,t)}))):null!=n&&t(20,n)})),this},i.clear=function(){var t=this;Ht((function(){ot((function(){for(var n,i=x(t.keys());!(n=i()).done;)t.delete(n.value)}))}))},i.replace=function(n){var i=this;return Ht((function(){for(var r,e=function(n){if(v(n)||Ui(n))return n;if(Array.isArray(n))return new Map(n);if(s(n)){var i=new Map;for(var r in n)i.set(r,n[r]);return i}return t(21,n)}(n),o=new Map,u=!1,f=x(i.pt.keys());!(r=f()).done;){var a=r.value;if(!e.has(a))if(i.delete(a))u=!0;else{var c=i.pt.get(a);o.set(a,c)}}for(var h,l=x(e.entries());!(h=l()).done;){var d=h.value,b=d[0],p=d[1],y=i.pt.has(b);if(i.set(b,p),i.pt.has(b)){var m=i.pt.get(b);o.set(b,m),y||(u=!0)}}if(!u)if(i.pt.size!==o.size)i.bt.reportChanged();else for(var w=i.pt.keys(),j=o.keys(),O=w.next(),A=j.next();!O.done;){if(O.value!==A.value){i.bt.reportChanged();break}O=w.next(),A=j.next()}i.pt=o})),this},i.toString=function(){return\"[object ObservableMap]\"},i.toJSON=function(){return Array.from(this)},i.gt=function(t){return Qt(this,t)},i.At=function(t){return $t(this,t)},y(n,[{key:\"size\",get:function(){return this.bt.reportObserved(),this.pt.size}},{key:Di,get:function(){return\"Map\"}}]),n}(),Ui=h(\"ObservableMap\",Xi),Fi={};Wi=Symbol.iterator,Hi=Symbol.toStringTag;var zi,$i,Ji=function(){function n(n,i,r){void 0===i&&(i=S),void 0===r&&(r=\"ObservableSet\"),this.tt=void 0,this[Ln]=Fi,this.pt=new Set,this.at=void 0,this.st=void 0,this.ut=void 0,this.dehancer=void 0,this.Ft=void 0,this.tt=r,e(Set)||t(22),this.at=_(this.tt),this.Ft=function(t,n){return i(t,n,r)},n&&this.replace(n)}var i=n.prototype;return i.$t=function(t){return void 0!==this.dehancer?this.dehancer(t):t},i.clear=function(){var t=this;Ht((function(){ot((function(){for(var n,i=x(t.pt.values());!(n=i()).done;)t.delete(n.value)}))}))},i.forEach=function(t,n){for(var i,r=x(this);!(i=r()).done;){var e=i.value;t.call(n,e,e,this)}},i.add=function(t){var n=this;if(zt(this)&&!Jt(this,{type:Gi,object:this,newValue:t}))return this;if(!this.has(t)){Ht((function(){n.pt.add(n.Ft(t,void 0)),n.at.reportChanged()}));var i=Yt(this);i&&Zt(this,i?{observableKind:\"set\",debugObjectName:this.tt,type:Gi,object:this,newValue:t}:null)}return this},i.delete=function(t){var n=this;if(zt(this)&&!Jt(this,{type:\"delete\",object:this,oldValue:t}))return!1;if(this.has(t)){var i=Yt(this),r=i?{observableKind:\"set\",debugObjectName:this.tt,type:\"delete\",object:this,oldValue:t}:null;return Ht((function(){n.at.reportChanged(),n.pt.delete(t)})),i&&Zt(this,r),!0}return!1},i.has=function(t){return this.at.reportObserved(),this.pt.has(this.$t(t))},i.entries=function(){var t=0,n=Array.from(this.keys()),i=Array.from(this.values());return jn({next:function(){var r=t;return t+=1,r=0&&yi.globalReactionErrorHandlers.splice(n,1)}},exports.override=Bn,exports.ownKeys=Bt,exports.reaction=function(t,n,i){function r(){if(d=!1,!p.J){var n=!1;p.track((function(){var i=Q(!1,(function(){return t(p)}));n=l||!b(s,i),f=s,s=i})),(l&&i.fireImmediately||!l&&n)&&c(s,f,p),l=!1}}var e;void 0===i&&(i=Nn);var o,u,s,f,a=null!=(e=i.name)?e:\"Reaction\",c=_i(a,i.onError?(o=i.onError,u=n,function(){try{return u.apply(this,arguments)}catch(t){o.call(this,t)}}):n),h=!i.scheduler&&!i.delay,v=_t(i),l=!0,d=!1,b=i.compareStructural?Dn.structural:i.equals||Dn.default,p=new mi(a,(function(){l||h?r():d||(d=!0,v(r))}),i.onError,i.requiresObservable);return p.Y(),p.Z()},exports.remove=function(n,i){an(n)?n[Ln].Gt(i):Ui(n)||Yi(n)?n.delete(i):un(n)?(\"number\"!=typeof i&&(i=parseInt(i,10)),n.splice(i,1)):t(9)},exports.runInAction=xt,exports.set=function n(i,r,e){if(2!==arguments.length||Yi(i))an(i)?i[Ln].dt(r,e):Ui(i)?i.set(r,e):Yi(i)?i.add(r):un(i)?(\"number\"!=typeof r&&(r=parseInt(r,10)),r<0&&t(\"Invalid index: '\"+r+\"'\"),dt(),r>=i.length&&(i.length=r+1),i[r]=e,bt()):t(8);else{dt();var o=r;try{for(var u in o)n(i,u,o[u])}finally{bt()}}},exports.spy=jt,exports.toJS=function(t){return function t(n,i){if(null==n||\"object\"!=typeof n||n instanceof Date||!It(n))return n;if(si(n)||hi(n))return t(n.get(),i);if(i.has(n))return i.get(n);if(un(n)){var r=qt(i,n,new Array(n.length));return n.forEach((function(n,e){r[e]=t(n,i)})),r}if(Yi(n)){var e=qt(i,n,new Set);return n.forEach((function(n){e.add(t(n,i))})),e}if(Ui(n)){var o=qt(i,n,new Map);return n.forEach((function(n,r){o.set(r,t(n,i))})),o}var u=qt(i,n,{});return Bt(n).forEach((function(r){Sn.propertyIsEnumerable.call(n,r)&&(u[r]=t(n[r],i))})),u}(t,new Map)},exports.trace=Gt,exports.transaction=Ht,exports.untracked=ot,exports.values=function(n){return an(n)?Pt(n).map((function(t){return n[t]})):Ui(n)?Pt(n).map((function(t){return n.get(t)})):Yi(n)?Array.from(n.values()):un(n)?n.slice():void t(6)},exports.when=function(t,n,i){return 1===arguments.length||n&&\"object\"==typeof n?Ut(t,n):Xt(t,n,i||{})};\n//# sourceMappingURL=mobx.cjs.production.min.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar niceErrors = {\n 0: \"Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'\",\n 1: function _(annotationType, key) {\n return \"Cannot apply '\" + annotationType + \"' to '\" + key.toString() + \"': Field not found.\";\n },\n /*\r\n 2(prop) {\r\n return `invalid decorator for '${prop.toString()}'`\r\n },\r\n 3(prop) {\r\n return `Cannot decorate '${prop.toString()}': action can only be used on properties with a function value.`\r\n },\r\n 4(prop) {\r\n return `Cannot decorate '${prop.toString()}': computed can only be used on getter properties.`\r\n },\r\n */\n 5: \"'keys()' can only be used on observable objects, arrays, sets and maps\",\n 6: \"'values()' can only be used on observable objects, arrays, sets and maps\",\n 7: \"'entries()' can only be used on observable objects, arrays and maps\",\n 8: \"'set()' can only be used on observable objects, arrays and maps\",\n 9: \"'remove()' can only be used on observable objects, arrays and maps\",\n 10: \"'has()' can only be used on observable objects, arrays and maps\",\n 11: \"'get()' can only be used on observable objects, arrays and maps\",\n 12: \"Invalid annotation\",\n 13: \"Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)\",\n 14: \"Intercept handlers should return nothing or a change object\",\n 15: \"Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)\",\n 16: \"Modification exception: the internal structure of an observable array was changed.\",\n 17: function _(index, length) {\n return \"[mobx.array] Index out of bounds, \" + index + \" is larger than \" + length;\n },\n 18: \"mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js\",\n 19: function _(other) {\n return \"Cannot initialize from classes that inherit from Map: \" + other.constructor.name;\n },\n 20: function _(other) {\n return \"Cannot initialize map from \" + other;\n },\n 21: function _(dataStructure) {\n return \"Cannot convert to map from '\" + dataStructure + \"'\";\n },\n 22: \"mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js\",\n 23: \"It is not possible to get index atoms from arrays\",\n 24: function _(thing) {\n return \"Cannot obtain administration from \" + thing;\n },\n 25: function _(property, name) {\n return \"the entry '\" + property + \"' does not exist in the observable map '\" + name + \"'\";\n },\n 26: \"please specify a property\",\n 27: function _(property, name) {\n return \"no observable property '\" + property.toString() + \"' found on the observable object '\" + name + \"'\";\n },\n 28: function _(thing) {\n return \"Cannot obtain atom from \" + thing;\n },\n 29: \"Expecting some object\",\n 30: \"invalid action stack. did you forget to finish an action?\",\n 31: \"missing option for computed: get\",\n 32: function _(name, derivation) {\n return \"Cycle detected in computation \" + name + \": \" + derivation;\n },\n 33: function _(name) {\n return \"The setter of computed value '\" + name + \"' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?\";\n },\n 34: function _(name) {\n return \"[ComputedValue '\" + name + \"'] It is not possible to assign a new value to a computed value.\";\n },\n 35: \"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`\",\n 36: \"isolateGlobalState should be called before MobX is running any reactions\",\n 37: function _(method) {\n return \"[mobx] `observableArray.\" + method + \"()` mutates the array in-place, which is not allowed inside a derivation. Use `array.slice().\" + method + \"()` instead\";\n },\n 38: \"'ownKeys()' can only be used on observable objects\",\n 39: \"'defineProperty()' can only be used on observable objects\"\n};\nvar errors = niceErrors ;\nfunction die(error) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n {\n var e = typeof error === \"string\" ? error : errors[error];\n if (typeof e === \"function\") e = e.apply(null, args);\n throw new Error(\"[MobX] \" + e);\n }\n}\n\nvar mockGlobal = {};\nfunction getGlobal() {\n if (typeof globalThis !== \"undefined\") {\n return globalThis;\n }\n if (typeof window !== \"undefined\") {\n return window;\n }\n if (typeof global !== \"undefined\") {\n return global;\n }\n if (typeof self !== \"undefined\") {\n return self;\n }\n return mockGlobal;\n}\n\n// We shorten anything used > 5 times\nvar assign = Object.assign;\nvar getDescriptor = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar objectPrototype = Object.prototype;\nvar EMPTY_ARRAY = [];\nObject.freeze(EMPTY_ARRAY);\nvar EMPTY_OBJECT = {};\nObject.freeze(EMPTY_OBJECT);\nvar hasProxy = typeof Proxy !== \"undefined\";\nvar plainObjectString = /*#__PURE__*/Object.toString();\nfunction assertProxies() {\n if (!hasProxy) {\n die( \"`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`\" );\n }\n}\nfunction warnAboutProxyRequirement(msg) {\n if ( globalState.verifyProxies) {\n die(\"MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to \" + msg);\n }\n}\nfunction getNextId() {\n return ++globalState.mobxGuid;\n}\n/**\r\n * Makes sure that the provided function is invoked at most once.\r\n */\nfunction once(func) {\n var invoked = false;\n return function () {\n if (invoked) {\n return;\n }\n invoked = true;\n return func.apply(this, arguments);\n };\n}\nvar noop = function noop() {};\nfunction isFunction(fn) {\n return typeof fn === \"function\";\n}\nfunction isStringish(value) {\n var t = typeof value;\n switch (t) {\n case \"string\":\n case \"symbol\":\n case \"number\":\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && typeof value === \"object\";\n}\nfunction isPlainObject(value) {\n if (!isObject(value)) {\n return false;\n }\n var proto = Object.getPrototypeOf(value);\n if (proto == null) {\n return true;\n }\n var protoConstructor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof protoConstructor === \"function\" && protoConstructor.toString() === plainObjectString;\n}\n// https://stackoverflow.com/a/37865170\nfunction isGenerator(obj) {\n var constructor = obj == null ? void 0 : obj.constructor;\n if (!constructor) {\n return false;\n }\n if (\"GeneratorFunction\" === constructor.name || \"GeneratorFunction\" === constructor.displayName) {\n return true;\n }\n return false;\n}\nfunction addHiddenProp(object, propName, value) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: true,\n configurable: true,\n value: value\n });\n}\nfunction addHiddenFinalProp(object, propName, value) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: false,\n configurable: true,\n value: value\n });\n}\nfunction createInstanceofPredicate(name, theClass) {\n var propName = \"isMobX\" + name;\n theClass.prototype[propName] = true;\n return function (x) {\n return isObject(x) && x[propName] === true;\n };\n}\nfunction isES6Map(thing) {\n return thing instanceof Map;\n}\nfunction isES6Set(thing) {\n return thing instanceof Set;\n}\nvar hasGetOwnPropertySymbols = typeof Object.getOwnPropertySymbols !== \"undefined\";\n/**\r\n * Returns the following: own enumerable keys and symbols.\r\n */\nfunction getPlainObjectKeys(object) {\n var keys = Object.keys(object);\n // Not supported in IE, so there are not going to be symbol props anyway...\n if (!hasGetOwnPropertySymbols) {\n return keys;\n }\n var symbols = Object.getOwnPropertySymbols(object);\n if (!symbols.length) {\n return keys;\n }\n return [].concat(keys, symbols.filter(function (s) {\n return objectPrototype.propertyIsEnumerable.call(object, s);\n }));\n}\n// From Immer utils\n// Returns all own keys, including non-enumerable and symbolic\nvar ownKeys = typeof Reflect !== \"undefined\" && Reflect.ownKeys ? Reflect.ownKeys : hasGetOwnPropertySymbols ? function (obj) {\n return Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj));\n} : /* istanbul ignore next */Object.getOwnPropertyNames;\nfunction stringifyKey(key) {\n if (typeof key === \"string\") {\n return key;\n }\n if (typeof key === \"symbol\") {\n return key.toString();\n }\n return new String(key).toString();\n}\nfunction toPrimitive(value) {\n return value === null ? null : typeof value === \"object\" ? \"\" + value : value;\n}\nfunction hasProp(target, prop) {\n return objectPrototype.hasOwnProperty.call(target, prop);\n}\n// From Immer utils\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors || function getOwnPropertyDescriptors(target) {\n // Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n var res = {};\n // Note: without polyfill for ownKeys, symbols won't be picked up\n ownKeys(target).forEach(function (key) {\n res[key] = getDescriptor(target, key);\n });\n return res;\n};\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nvar storedAnnotationsSymbol = /*#__PURE__*/Symbol(\"mobx-stored-annotations\");\n/**\r\n * Creates a function that acts as\r\n * - decorator\r\n * - annotation object\r\n */\nfunction createDecoratorAnnotation(annotation) {\n function decorator(target, property) {\n storeAnnotation(target, property, annotation);\n }\n return Object.assign(decorator, annotation);\n}\n/**\r\n * Stores annotation to prototype,\r\n * so it can be inspected later by `makeObservable` called from constructor\r\n */\nfunction storeAnnotation(prototype, key, annotation) {\n if (!hasProp(prototype, storedAnnotationsSymbol)) {\n addHiddenProp(prototype, storedAnnotationsSymbol, _extends({}, prototype[storedAnnotationsSymbol]));\n }\n // @override must override something\n if ( isOverride(annotation) && !hasProp(prototype[storedAnnotationsSymbol], key)) {\n var fieldName = prototype.constructor.name + \".prototype.\" + key.toString();\n die(\"'\" + fieldName + \"' is decorated with 'override', \" + \"but no such decorated member was found on prototype.\");\n }\n // Cannot re-decorate\n assertNotDecorated(prototype, annotation, key);\n // Ignore override\n if (!isOverride(annotation)) {\n prototype[storedAnnotationsSymbol][key] = annotation;\n }\n}\nfunction assertNotDecorated(prototype, annotation, key) {\n if ( !isOverride(annotation) && hasProp(prototype[storedAnnotationsSymbol], key)) {\n var fieldName = prototype.constructor.name + \".prototype.\" + key.toString();\n var currentAnnotationType = prototype[storedAnnotationsSymbol][key].annotationType_;\n var requestedAnnotationType = annotation.annotationType_;\n die(\"Cannot apply '@\" + requestedAnnotationType + \"' to '\" + fieldName + \"':\" + (\"\\nThe field is already decorated with '@\" + currentAnnotationType + \"'.\") + \"\\nRe-decorating fields is not allowed.\" + \"\\nUse '@override' decorator for methods overridden by subclass.\");\n }\n}\n/**\r\n * Collects annotations from prototypes and stores them on target (instance)\r\n */\nfunction collectStoredAnnotations(target) {\n if (!hasProp(target, storedAnnotationsSymbol)) {\n if ( !target[storedAnnotationsSymbol]) {\n die(\"No annotations were passed to makeObservable, but no decorated members have been found either\");\n }\n // We need a copy as we will remove annotation from the list once it's applied.\n addHiddenProp(target, storedAnnotationsSymbol, _extends({}, target[storedAnnotationsSymbol]));\n }\n return target[storedAnnotationsSymbol];\n}\n\nvar $mobx = /*#__PURE__*/Symbol(\"mobx administration\");\nvar Atom = /*#__PURE__*/function () {\n // for effective unobserving. BaseAtom has true, for extra optimization, so its onBecomeUnobserved never gets called, because it's not needed\n\n /**\r\n * Create a new atom. For debugging purposes it is recommended to give it a name.\r\n * The onBecomeObserved and onBecomeUnobserved callbacks can be used for resource management.\r\n */\n function Atom(name_) {\n if (name_ === void 0) {\n name_ = \"Atom@\" + getNextId() ;\n }\n this.name_ = void 0;\n this.isPendingUnobservation_ = false;\n this.isBeingObserved_ = false;\n this.observers_ = new Set();\n this.diffValue_ = 0;\n this.lastAccessedBy_ = 0;\n this.lowestObserverState_ = IDerivationState_.NOT_TRACKING_;\n this.onBOL = void 0;\n this.onBUOL = void 0;\n this.name_ = name_;\n }\n // onBecomeObservedListeners\n var _proto = Atom.prototype;\n _proto.onBO = function onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(function (listener) {\n return listener();\n });\n }\n };\n _proto.onBUO = function onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(function (listener) {\n return listener();\n });\n }\n }\n /**\r\n * Invoke this method to notify mobx that your atom has been used somehow.\r\n * Returns true if there is currently a reactive context.\r\n */;\n _proto.reportObserved = function reportObserved$1() {\n return reportObserved(this);\n }\n /**\r\n * Invoke this method _after_ this method has changed to signal mobx that all its observers should invalidate.\r\n */;\n _proto.reportChanged = function reportChanged() {\n startBatch();\n propagateChanged(this);\n // We could update state version only at the end of batch,\n // but we would still have to switch some global flag here to signal a change.\n globalState.stateVersion = globalState.stateVersion < Number.MAX_SAFE_INTEGER ? globalState.stateVersion + 1 : Number.MIN_SAFE_INTEGER;\n endBatch();\n };\n _proto.toString = function toString() {\n return this.name_;\n };\n return Atom;\n}();\nvar isAtom = /*#__PURE__*/createInstanceofPredicate(\"Atom\", Atom);\nfunction createAtom(name, onBecomeObservedHandler, onBecomeUnobservedHandler) {\n if (onBecomeObservedHandler === void 0) {\n onBecomeObservedHandler = noop;\n }\n if (onBecomeUnobservedHandler === void 0) {\n onBecomeUnobservedHandler = noop;\n }\n var atom = new Atom(name);\n // default `noop` listener will not initialize the hook Set\n if (onBecomeObservedHandler !== noop) {\n onBecomeObserved(atom, onBecomeObservedHandler);\n }\n if (onBecomeUnobservedHandler !== noop) {\n onBecomeUnobserved(atom, onBecomeUnobservedHandler);\n }\n return atom;\n}\n\nfunction identityComparer(a, b) {\n return a === b;\n}\nfunction structuralComparer(a, b) {\n return deepEqual(a, b);\n}\nfunction shallowComparer(a, b) {\n return deepEqual(a, b, 1);\n}\nfunction defaultComparer(a, b) {\n if (Object.is) {\n return Object.is(a, b);\n }\n return a === b ? a !== 0 || 1 / a === 1 / b : a !== a && b !== b;\n}\nvar comparer = {\n identity: identityComparer,\n structural: structuralComparer,\n \"default\": defaultComparer,\n shallow: shallowComparer\n};\n\nfunction deepEnhancer(v, _, name) {\n // it is an observable already, done\n if (isObservable(v)) {\n return v;\n }\n // something that can be converted and mutated?\n if (Array.isArray(v)) {\n return observable.array(v, {\n name: name\n });\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, {\n name: name\n });\n }\n if (isES6Map(v)) {\n return observable.map(v, {\n name: name\n });\n }\n if (isES6Set(v)) {\n return observable.set(v, {\n name: name\n });\n }\n if (typeof v === \"function\" && !isAction(v) && !isFlow(v)) {\n if (isGenerator(v)) {\n return flow(v);\n } else {\n return autoAction(name, v);\n }\n }\n return v;\n}\nfunction shallowEnhancer(v, _, name) {\n if (v === undefined || v === null) {\n return v;\n }\n if (isObservableObject(v) || isObservableArray(v) || isObservableMap(v) || isObservableSet(v)) {\n return v;\n }\n if (Array.isArray(v)) {\n return observable.array(v, {\n name: name,\n deep: false\n });\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, {\n name: name,\n deep: false\n });\n }\n if (isES6Map(v)) {\n return observable.map(v, {\n name: name,\n deep: false\n });\n }\n if (isES6Set(v)) {\n return observable.set(v, {\n name: name,\n deep: false\n });\n }\n {\n die(\"The shallow modifier / decorator can only used in combination with arrays, objects, maps and sets\");\n }\n}\nfunction referenceEnhancer(newValue) {\n // never turn into an observable\n return newValue;\n}\nfunction refStructEnhancer(v, oldValue) {\n if ( isObservable(v)) {\n die(\"observable.struct should not be used with observable values\");\n }\n if (deepEqual(v, oldValue)) {\n return oldValue;\n }\n return v;\n}\n\nvar OVERRIDE = \"override\";\nvar override = /*#__PURE__*/createDecoratorAnnotation({\n annotationType_: OVERRIDE,\n make_: make_,\n extend_: extend_\n});\nfunction isOverride(annotation) {\n return annotation.annotationType_ === OVERRIDE;\n}\nfunction make_(adm, key) {\n // Must not be plain object\n if ( adm.isPlainObject_) {\n die(\"Cannot apply '\" + this.annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + this.annotationType_ + \"' cannot be used on plain objects.\"));\n }\n // Must override something\n if ( !hasProp(adm.appliedAnnotations_, key)) {\n die(\"'\" + adm.name_ + \".\" + key.toString() + \"' is annotated with '\" + this.annotationType_ + \"', \" + \"but no such annotated member was found on prototype.\");\n }\n return 0 /* Cancel */;\n}\n\nfunction extend_(adm, key, descriptor, proxyTrap) {\n die(\"'\" + this.annotationType_ + \"' can only be used with 'makeObservable'\");\n}\n\nfunction createActionAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$1,\n extend_: extend_$1\n };\n}\nfunction make_$1(adm, key, descriptor, source) {\n var _this$options_;\n // bound\n if ((_this$options_ = this.options_) != null && _this$options_.bound) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* Cancel */ : 1 /* Break */;\n }\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* Cancel */ : 2 /* Continue */;\n }\n // prototype\n if (isAction(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return 1 /* Break */;\n }\n\n var actionDescriptor = createActionDescriptor(adm, this, key, descriptor, false);\n defineProperty(source, key, actionDescriptor);\n return 2 /* Continue */;\n}\n\nfunction extend_$1(adm, key, descriptor, proxyTrap) {\n var actionDescriptor = createActionDescriptor(adm, this, key, descriptor);\n return adm.defineProperty_(key, actionDescriptor, proxyTrap);\n}\nfunction assertActionDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var value = _ref2.value;\n if ( !isFunction(value)) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' can only be used on properties with a function value.\"));\n }\n}\nfunction createActionDescriptor(adm, annotation, key, descriptor,\n// provides ability to disable safeDescriptors for prototypes\nsafeDescriptors) {\n var _annotation$options_, _annotation$options_$, _annotation$options_2, _annotation$options_$2, _annotation$options_3, _annotation$options_4, _adm$proxy_2;\n if (safeDescriptors === void 0) {\n safeDescriptors = globalState.safeDescriptors;\n }\n assertActionDescriptor(adm, annotation, key, descriptor);\n var value = descriptor.value;\n if ((_annotation$options_ = annotation.options_) != null && _annotation$options_.bound) {\n var _adm$proxy_;\n value = value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n }\n return {\n value: createAction((_annotation$options_$ = (_annotation$options_2 = annotation.options_) == null ? void 0 : _annotation$options_2.name) != null ? _annotation$options_$ : key.toString(), value, (_annotation$options_$2 = (_annotation$options_3 = annotation.options_) == null ? void 0 : _annotation$options_3.autoAction) != null ? _annotation$options_$2 : false,\n // https://github.com/mobxjs/mobx/discussions/3140\n (_annotation$options_4 = annotation.options_) != null && _annotation$options_4.bound ? (_adm$proxy_2 = adm.proxy_) != null ? _adm$proxy_2 : adm.target_ : undefined),\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n };\n}\n\nfunction createFlowAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$2,\n extend_: extend_$2\n };\n}\nfunction make_$2(adm, key, descriptor, source) {\n var _this$options_;\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* Cancel */ : 2 /* Continue */;\n }\n // prototype\n // bound - must annotate protos to support super.flow()\n if ((_this$options_ = this.options_) != null && _this$options_.bound && (!hasProp(adm.target_, key) || !isFlow(adm.target_[key]))) {\n if (this.extend_(adm, key, descriptor, false) === null) {\n return 0 /* Cancel */;\n }\n }\n\n if (isFlow(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return 1 /* Break */;\n }\n\n var flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, false, false);\n defineProperty(source, key, flowDescriptor);\n return 2 /* Continue */;\n}\n\nfunction extend_$2(adm, key, descriptor, proxyTrap) {\n var _this$options_2;\n var flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, (_this$options_2 = this.options_) == null ? void 0 : _this$options_2.bound);\n return adm.defineProperty_(key, flowDescriptor, proxyTrap);\n}\nfunction assertFlowDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var value = _ref2.value;\n if ( !isFunction(value)) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' can only be used on properties with a generator function value.\"));\n }\n}\nfunction createFlowDescriptor(adm, annotation, key, descriptor, bound,\n// provides ability to disable safeDescriptors for prototypes\nsafeDescriptors) {\n if (safeDescriptors === void 0) {\n safeDescriptors = globalState.safeDescriptors;\n }\n assertFlowDescriptor(adm, annotation, key, descriptor);\n var value = descriptor.value;\n // In case of flow.bound, the descriptor can be from already annotated prototype\n if (!isFlow(value)) {\n value = flow(value);\n }\n if (bound) {\n var _adm$proxy_;\n // We do not keep original function around, so we bind the existing flow\n value = value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n // This is normally set by `flow`, but `bind` returns new function...\n value.isMobXFlow = true;\n }\n return {\n value: value,\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n };\n}\n\nfunction createComputedAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$3,\n extend_: extend_$3\n };\n}\nfunction make_$3(adm, key, descriptor) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* Cancel */ : 1 /* Break */;\n}\n\nfunction extend_$3(adm, key, descriptor, proxyTrap) {\n assertComputedDescriptor(adm, this, key, descriptor);\n return adm.defineComputedProperty_(key, _extends({}, this.options_, {\n get: descriptor.get,\n set: descriptor.set\n }), proxyTrap);\n}\nfunction assertComputedDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var get = _ref2.get;\n if ( !get) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' can only be used on getter(+setter) properties.\"));\n }\n}\n\nfunction createObservableAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$4,\n extend_: extend_$4\n };\n}\nfunction make_$4(adm, key, descriptor) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* Cancel */ : 1 /* Break */;\n}\n\nfunction extend_$4(adm, key, descriptor, proxyTrap) {\n var _this$options_$enhanc, _this$options_;\n assertObservableDescriptor(adm, this, key, descriptor);\n return adm.defineObservableProperty_(key, descriptor.value, (_this$options_$enhanc = (_this$options_ = this.options_) == null ? void 0 : _this$options_.enhancer) != null ? _this$options_$enhanc : deepEnhancer, proxyTrap);\n}\nfunction assertObservableDescriptor(adm, _ref, key, descriptor) {\n var annotationType_ = _ref.annotationType_;\n if ( !(\"value\" in descriptor)) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' cannot be used on getter/setter properties\"));\n }\n}\n\nvar AUTO = \"true\";\nvar autoAnnotation = /*#__PURE__*/createAutoAnnotation();\nfunction createAutoAnnotation(options) {\n return {\n annotationType_: AUTO,\n options_: options,\n make_: make_$5,\n extend_: extend_$5\n };\n}\nfunction make_$5(adm, key, descriptor, source) {\n var _this$options_3, _this$options_4;\n // getter -> computed\n if (descriptor.get) {\n return computed.make_(adm, key, descriptor, source);\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.make_\n var set = createAction(key.toString(), descriptor.set);\n // own\n if (source === adm.target_) {\n return adm.defineProperty_(key, {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set: set\n }) === null ? 0 /* Cancel */ : 2 /* Continue */;\n }\n // proto\n defineProperty(source, key, {\n configurable: true,\n set: set\n });\n return 2 /* Continue */;\n }\n // function on proto -> autoAction/flow\n if (source !== adm.target_ && typeof descriptor.value === \"function\") {\n var _this$options_2;\n if (isGenerator(descriptor.value)) {\n var _this$options_;\n var flowAnnotation = (_this$options_ = this.options_) != null && _this$options_.autoBind ? flow.bound : flow;\n return flowAnnotation.make_(adm, key, descriptor, source);\n }\n var actionAnnotation = (_this$options_2 = this.options_) != null && _this$options_2.autoBind ? autoAction.bound : autoAction;\n return actionAnnotation.make_(adm, key, descriptor, source);\n }\n // other -> observable\n // Copy props from proto as well, see test:\n // \"decorate should work with Object.create\"\n var observableAnnotation = ((_this$options_3 = this.options_) == null ? void 0 : _this$options_3.deep) === false ? observable.ref : observable;\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && (_this$options_4 = this.options_) != null && _this$options_4.autoBind) {\n var _adm$proxy_;\n descriptor.value = descriptor.value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n }\n return observableAnnotation.make_(adm, key, descriptor, source);\n}\nfunction extend_$5(adm, key, descriptor, proxyTrap) {\n var _this$options_5, _this$options_6;\n // getter -> computed\n if (descriptor.get) {\n return computed.extend_(adm, key, descriptor, proxyTrap);\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.extend_\n return adm.defineProperty_(key, {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set: createAction(key.toString(), descriptor.set)\n }, proxyTrap);\n }\n // other -> observable\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && (_this$options_5 = this.options_) != null && _this$options_5.autoBind) {\n var _adm$proxy_2;\n descriptor.value = descriptor.value.bind((_adm$proxy_2 = adm.proxy_) != null ? _adm$proxy_2 : adm.target_);\n }\n var observableAnnotation = ((_this$options_6 = this.options_) == null ? void 0 : _this$options_6.deep) === false ? observable.ref : observable;\n return observableAnnotation.extend_(adm, key, descriptor, proxyTrap);\n}\n\nvar OBSERVABLE = \"observable\";\nvar OBSERVABLE_REF = \"observable.ref\";\nvar OBSERVABLE_SHALLOW = \"observable.shallow\";\nvar OBSERVABLE_STRUCT = \"observable.struct\";\n// Predefined bags of create observable options, to avoid allocating temporarily option objects\n// in the majority of cases\nvar defaultCreateObservableOptions = {\n deep: true,\n name: undefined,\n defaultDecorator: undefined,\n proxy: true\n};\nObject.freeze(defaultCreateObservableOptions);\nfunction asCreateObservableOptions(thing) {\n return thing || defaultCreateObservableOptions;\n}\nvar observableAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE);\nvar observableRefAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE_REF, {\n enhancer: referenceEnhancer\n});\nvar observableShallowAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE_SHALLOW, {\n enhancer: shallowEnhancer\n});\nvar observableStructAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE_STRUCT, {\n enhancer: refStructEnhancer\n});\nvar observableDecoratorAnnotation = /*#__PURE__*/createDecoratorAnnotation(observableAnnotation);\nfunction getEnhancerFromOptions(options) {\n return options.deep === true ? deepEnhancer : options.deep === false ? referenceEnhancer : getEnhancerFromAnnotation(options.defaultDecorator);\n}\nfunction getAnnotationFromOptions(options) {\n var _options$defaultDecor;\n return options ? (_options$defaultDecor = options.defaultDecorator) != null ? _options$defaultDecor : createAutoAnnotation(options) : undefined;\n}\nfunction getEnhancerFromAnnotation(annotation) {\n var _annotation$options_$, _annotation$options_;\n return !annotation ? deepEnhancer : (_annotation$options_$ = (_annotation$options_ = annotation.options_) == null ? void 0 : _annotation$options_.enhancer) != null ? _annotation$options_$ : deepEnhancer;\n}\n/**\r\n * Turns an object, array or function into a reactive structure.\r\n * @param v the value which should become observable.\r\n */\nfunction createObservable(v, arg2, arg3) {\n // @observable someProp;\n if (isStringish(arg2)) {\n storeAnnotation(v, arg2, observableAnnotation);\n return;\n }\n // already observable - ignore\n if (isObservable(v)) {\n return v;\n }\n // plain object\n if (isPlainObject(v)) {\n return observable.object(v, arg2, arg3);\n }\n // Array\n if (Array.isArray(v)) {\n return observable.array(v, arg2);\n }\n // Map\n if (isES6Map(v)) {\n return observable.map(v, arg2);\n }\n // Set\n if (isES6Set(v)) {\n return observable.set(v, arg2);\n }\n // other object - ignore\n if (typeof v === \"object\" && v !== null) {\n return v;\n }\n // anything else\n return observable.box(v, arg2);\n}\nassign(createObservable, observableDecoratorAnnotation);\nvar observableFactories = {\n box: function box(value, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableValue(value, getEnhancerFromOptions(o), o.name, true, o.equals);\n },\n array: function array(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return (globalState.useProxies === false || o.proxy === false ? createLegacyArray : createObservableArray)(initialValues, getEnhancerFromOptions(o), o.name);\n },\n map: function map(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableMap(initialValues, getEnhancerFromOptions(o), o.name);\n },\n set: function set(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableSet(initialValues, getEnhancerFromOptions(o), o.name);\n },\n object: function object(props, decorators, options) {\n return extendObservable(globalState.useProxies === false || (options == null ? void 0 : options.proxy) === false ? asObservableObject({}, options) : asDynamicObservableObject({}, options), props, decorators);\n },\n ref: /*#__PURE__*/createDecoratorAnnotation(observableRefAnnotation),\n shallow: /*#__PURE__*/createDecoratorAnnotation(observableShallowAnnotation),\n deep: observableDecoratorAnnotation,\n struct: /*#__PURE__*/createDecoratorAnnotation(observableStructAnnotation)\n};\n// eslint-disable-next-line\nvar observable = /*#__PURE__*/assign(createObservable, observableFactories);\n\nvar COMPUTED = \"computed\";\nvar COMPUTED_STRUCT = \"computed.struct\";\nvar computedAnnotation = /*#__PURE__*/createComputedAnnotation(COMPUTED);\nvar computedStructAnnotation = /*#__PURE__*/createComputedAnnotation(COMPUTED_STRUCT, {\n equals: comparer.structural\n});\n/**\r\n * Decorator for class properties: @computed get value() { return expr; }.\r\n * For legacy purposes also invokable as ES5 observable created: `computed(() => expr)`;\r\n */\nvar computed = function computed(arg1, arg2) {\n if (isStringish(arg2)) {\n // @computed\n return storeAnnotation(arg1, arg2, computedAnnotation);\n }\n if (isPlainObject(arg1)) {\n // @computed({ options })\n return createDecoratorAnnotation(createComputedAnnotation(COMPUTED, arg1));\n }\n // computed(expr, options?)\n {\n if (!isFunction(arg1)) {\n die(\"First argument to `computed` should be an expression.\");\n }\n if (isFunction(arg2)) {\n die(\"A setter as second argument is no longer supported, use `{ set: fn }` option instead\");\n }\n }\n var opts = isPlainObject(arg2) ? arg2 : {};\n opts.get = arg1;\n opts.name || (opts.name = arg1.name || \"\"); /* for generated name */\n return new ComputedValue(opts);\n};\nObject.assign(computed, computedAnnotation);\ncomputed.struct = /*#__PURE__*/createDecoratorAnnotation(computedStructAnnotation);\n\nvar _getDescriptor$config, _getDescriptor;\n// we don't use globalState for these in order to avoid possible issues with multiple\n// mobx versions\nvar currentActionId = 0;\nvar nextActionId = 1;\nvar isFunctionNameConfigurable = (_getDescriptor$config = (_getDescriptor = /*#__PURE__*/getDescriptor(function () {}, \"name\")) == null ? void 0 : _getDescriptor.configurable) != null ? _getDescriptor$config : false;\n// we can safely recycle this object\nvar tmpNameDescriptor = {\n value: \"action\",\n configurable: true,\n writable: false,\n enumerable: false\n};\nfunction createAction(actionName, fn, autoAction, ref) {\n if (autoAction === void 0) {\n autoAction = false;\n }\n {\n if (!isFunction(fn)) {\n die(\"`action` can only be invoked on functions\");\n }\n if (typeof actionName !== \"string\" || !actionName) {\n die(\"actions should have valid names, got: '\" + actionName + \"'\");\n }\n }\n function res() {\n return executeAction(actionName, autoAction, fn, ref || this, arguments);\n }\n res.isMobxAction = true;\n if (isFunctionNameConfigurable) {\n tmpNameDescriptor.value = actionName;\n defineProperty(res, \"name\", tmpNameDescriptor);\n }\n return res;\n}\nfunction executeAction(actionName, canRunAsDerivation, fn, scope, args) {\n var runInfo = _startAction(actionName, canRunAsDerivation, scope, args);\n try {\n return fn.apply(scope, args);\n } catch (err) {\n runInfo.error_ = err;\n throw err;\n } finally {\n _endAction(runInfo);\n }\n}\nfunction _startAction(actionName, canRunAsDerivation,\n// true for autoAction\nscope, args) {\n var notifySpy_ = isSpyEnabled() && !!actionName;\n var startTime_ = 0;\n if ( notifySpy_) {\n startTime_ = Date.now();\n var flattenedArgs = args ? Array.from(args) : EMPTY_ARRAY;\n spyReportStart({\n type: ACTION,\n name: actionName,\n object: scope,\n arguments: flattenedArgs\n });\n }\n var prevDerivation_ = globalState.trackingDerivation;\n var runAsAction = !canRunAsDerivation || !prevDerivation_;\n startBatch();\n var prevAllowStateChanges_ = globalState.allowStateChanges; // by default preserve previous allow\n if (runAsAction) {\n untrackedStart();\n prevAllowStateChanges_ = allowStateChangesStart(true);\n }\n var prevAllowStateReads_ = allowStateReadsStart(true);\n var runInfo = {\n runAsAction_: runAsAction,\n prevDerivation_: prevDerivation_,\n prevAllowStateChanges_: prevAllowStateChanges_,\n prevAllowStateReads_: prevAllowStateReads_,\n notifySpy_: notifySpy_,\n startTime_: startTime_,\n actionId_: nextActionId++,\n parentActionId_: currentActionId\n };\n currentActionId = runInfo.actionId_;\n return runInfo;\n}\nfunction _endAction(runInfo) {\n if (currentActionId !== runInfo.actionId_) {\n die(30);\n }\n currentActionId = runInfo.parentActionId_;\n if (runInfo.error_ !== undefined) {\n globalState.suppressReactionErrors = true;\n }\n allowStateChangesEnd(runInfo.prevAllowStateChanges_);\n allowStateReadsEnd(runInfo.prevAllowStateReads_);\n endBatch();\n if (runInfo.runAsAction_) {\n untrackedEnd(runInfo.prevDerivation_);\n }\n if ( runInfo.notifySpy_) {\n spyReportEnd({\n time: Date.now() - runInfo.startTime_\n });\n }\n globalState.suppressReactionErrors = false;\n}\nfunction allowStateChanges(allowStateChanges, func) {\n var prev = allowStateChangesStart(allowStateChanges);\n try {\n return func();\n } finally {\n allowStateChangesEnd(prev);\n }\n}\nfunction allowStateChangesStart(allowStateChanges) {\n var prev = globalState.allowStateChanges;\n globalState.allowStateChanges = allowStateChanges;\n return prev;\n}\nfunction allowStateChangesEnd(prev) {\n globalState.allowStateChanges = prev;\n}\n\nvar _Symbol$toPrimitive;\nvar CREATE = \"create\";\n_Symbol$toPrimitive = Symbol.toPrimitive;\nvar ObservableValue = /*#__PURE__*/function (_Atom) {\n _inheritsLoose(ObservableValue, _Atom);\n function ObservableValue(value, enhancer, name_, notifySpy, equals) {\n var _this;\n if (name_ === void 0) {\n name_ = \"ObservableValue@\" + getNextId() ;\n }\n if (notifySpy === void 0) {\n notifySpy = true;\n }\n if (equals === void 0) {\n equals = comparer[\"default\"];\n }\n _this = _Atom.call(this, name_) || this;\n _this.enhancer = void 0;\n _this.name_ = void 0;\n _this.equals = void 0;\n _this.hasUnreportedChange_ = false;\n _this.interceptors_ = void 0;\n _this.changeListeners_ = void 0;\n _this.value_ = void 0;\n _this.dehancer = void 0;\n _this.enhancer = enhancer;\n _this.name_ = name_;\n _this.equals = equals;\n _this.value_ = enhancer(value, undefined, name_);\n if ( notifySpy && isSpyEnabled()) {\n // only notify spy if this is a stand-alone observable\n spyReport({\n type: CREATE,\n object: _assertThisInitialized(_this),\n observableKind: \"value\",\n debugObjectName: _this.name_,\n newValue: \"\" + _this.value_\n });\n }\n return _this;\n }\n var _proto = ObservableValue.prototype;\n _proto.dehanceValue = function dehanceValue(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.set = function set(newValue) {\n var oldValue = this.value_;\n newValue = this.prepareNewValue_(newValue);\n if (newValue !== globalState.UNCHANGED) {\n var notifySpy = isSpyEnabled();\n if ( notifySpy) {\n spyReportStart({\n type: UPDATE,\n object: this,\n observableKind: \"value\",\n debugObjectName: this.name_,\n newValue: newValue,\n oldValue: oldValue\n });\n }\n this.setNewValue_(newValue);\n if ( notifySpy) {\n spyReportEnd();\n }\n }\n };\n _proto.prepareNewValue_ = function prepareNewValue_(newValue) {\n checkIfStateModificationsAreAllowed(this);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this,\n type: UPDATE,\n newValue: newValue\n });\n if (!change) {\n return globalState.UNCHANGED;\n }\n newValue = change.newValue;\n }\n // apply modifier\n newValue = this.enhancer(newValue, this.value_, this.name_);\n return this.equals(this.value_, newValue) ? globalState.UNCHANGED : newValue;\n };\n _proto.setNewValue_ = function setNewValue_(newValue) {\n var oldValue = this.value_;\n this.value_ = newValue;\n this.reportChanged();\n if (hasListeners(this)) {\n notifyListeners(this, {\n type: UPDATE,\n object: this,\n newValue: newValue,\n oldValue: oldValue\n });\n }\n };\n _proto.get = function get() {\n this.reportObserved();\n return this.dehanceValue(this.value_);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if (fireImmediately) {\n listener({\n observableKind: \"value\",\n debugObjectName: this.name_,\n object: this,\n type: UPDATE,\n newValue: this.value_,\n oldValue: undefined\n });\n }\n return registerListener(this, listener);\n };\n _proto.raw = function raw() {\n // used by MST ot get undehanced value\n return this.value_;\n };\n _proto.toJSON = function toJSON() {\n return this.get();\n };\n _proto.toString = function toString() {\n return this.name_ + \"[\" + this.value_ + \"]\";\n };\n _proto.valueOf = function valueOf() {\n return toPrimitive(this.get());\n };\n _proto[_Symbol$toPrimitive] = function () {\n return this.valueOf();\n };\n return ObservableValue;\n}(Atom);\nvar isObservableValue = /*#__PURE__*/createInstanceofPredicate(\"ObservableValue\", ObservableValue);\n\nvar _Symbol$toPrimitive$1;\n/**\r\n * A node in the state dependency root that observes other nodes, and can be observed itself.\r\n *\r\n * ComputedValue will remember the result of the computation for the duration of the batch, or\r\n * while being observed.\r\n *\r\n * During this time it will recompute only when one of its direct dependencies changed,\r\n * but only when it is being accessed with `ComputedValue.get()`.\r\n *\r\n * Implementation description:\r\n * 1. First time it's being accessed it will compute and remember result\r\n * give back remembered result until 2. happens\r\n * 2. First time any deep dependency change, propagate POSSIBLY_STALE to all observers, wait for 3.\r\n * 3. When it's being accessed, recompute if any shallow dependency changed.\r\n * if result changed: propagate STALE to all observers, that were POSSIBLY_STALE from the last step.\r\n * go to step 2. either way\r\n *\r\n * If at any point it's outside batch and it isn't observed: reset everything and go to 1.\r\n */\n_Symbol$toPrimitive$1 = Symbol.toPrimitive;\nvar ComputedValue = /*#__PURE__*/function () {\n // nodes we are looking at. Our value depends on these nodes\n // during tracking it's an array with new observed observers\n\n // to check for cycles\n\n // N.B: unminified as it is used by MST\n\n /**\r\n * Create a new computed value based on a function expression.\r\n *\r\n * The `name` property is for debug purposes only.\r\n *\r\n * The `equals` property specifies the comparer function to use to determine if a newly produced\r\n * value differs from the previous value. Two comparers are provided in the library; `defaultComparer`\r\n * compares based on identity comparison (===), and `structuralComparer` deeply compares the structure.\r\n * Structural comparison can be convenient if you always produce a new aggregated object and\r\n * don't want to notify observers if it is structurally the same.\r\n * This is useful for working with vectors, mouse coordinates etc.\r\n */\n function ComputedValue(options) {\n this.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n this.observing_ = [];\n this.newObserving_ = null;\n this.isBeingObserved_ = false;\n this.isPendingUnobservation_ = false;\n this.observers_ = new Set();\n this.diffValue_ = 0;\n this.runId_ = 0;\n this.lastAccessedBy_ = 0;\n this.lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n this.unboundDepsCount_ = 0;\n this.value_ = new CaughtException(null);\n this.name_ = void 0;\n this.triggeredBy_ = void 0;\n this.isComputing_ = false;\n this.isRunningSetter_ = false;\n this.derivation = void 0;\n this.setter_ = void 0;\n this.isTracing_ = TraceMode.NONE;\n this.scope_ = void 0;\n this.equals_ = void 0;\n this.requiresReaction_ = void 0;\n this.keepAlive_ = void 0;\n this.onBOL = void 0;\n this.onBUOL = void 0;\n if (!options.get) {\n die(31);\n }\n this.derivation = options.get;\n this.name_ = options.name || ( \"ComputedValue@\" + getNextId() );\n if (options.set) {\n this.setter_ = createAction( this.name_ + \"-setter\" , options.set);\n }\n this.equals_ = options.equals || (options.compareStructural || options.struct ? comparer.structural : comparer[\"default\"]);\n this.scope_ = options.context;\n this.requiresReaction_ = options.requiresReaction;\n this.keepAlive_ = !!options.keepAlive;\n }\n var _proto = ComputedValue.prototype;\n _proto.onBecomeStale_ = function onBecomeStale_() {\n propagateMaybeChanged(this);\n };\n _proto.onBO = function onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(function (listener) {\n return listener();\n });\n }\n };\n _proto.onBUO = function onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(function (listener) {\n return listener();\n });\n }\n }\n /**\r\n * Returns the current value of this computed value.\r\n * Will evaluate its computation first if needed.\r\n */;\n _proto.get = function get() {\n if (this.isComputing_) {\n die(32, this.name_, this.derivation);\n }\n if (globalState.inBatch === 0 &&\n // !globalState.trackingDerivatpion &&\n this.observers_.size === 0 && !this.keepAlive_) {\n if (shouldCompute(this)) {\n this.warnAboutUntrackedRead_();\n startBatch(); // See perf test 'computed memoization'\n this.value_ = this.computeValue_(false);\n endBatch();\n }\n } else {\n reportObserved(this);\n if (shouldCompute(this)) {\n var prevTrackingContext = globalState.trackingContext;\n if (this.keepAlive_ && !prevTrackingContext) {\n globalState.trackingContext = this;\n }\n if (this.trackAndCompute()) {\n propagateChangeConfirmed(this);\n }\n globalState.trackingContext = prevTrackingContext;\n }\n }\n var result = this.value_;\n if (isCaughtException(result)) {\n throw result.cause;\n }\n return result;\n };\n _proto.set = function set(value) {\n if (this.setter_) {\n if (this.isRunningSetter_) {\n die(33, this.name_);\n }\n this.isRunningSetter_ = true;\n try {\n this.setter_.call(this.scope_, value);\n } finally {\n this.isRunningSetter_ = false;\n }\n } else {\n die(34, this.name_);\n }\n };\n _proto.trackAndCompute = function trackAndCompute() {\n // N.B: unminified as it is used by MST\n var oldValue = this.value_;\n var wasSuspended = /* see #1208 */this.dependenciesState_ === IDerivationState_.NOT_TRACKING_;\n var newValue = this.computeValue_(true);\n var changed = wasSuspended || isCaughtException(oldValue) || isCaughtException(newValue) || !this.equals_(oldValue, newValue);\n if (changed) {\n this.value_ = newValue;\n if ( isSpyEnabled()) {\n spyReport({\n observableKind: \"computed\",\n debugObjectName: this.name_,\n object: this.scope_,\n type: \"update\",\n oldValue: oldValue,\n newValue: newValue\n });\n }\n }\n return changed;\n };\n _proto.computeValue_ = function computeValue_(track) {\n this.isComputing_ = true;\n // don't allow state changes during computation\n var prev = allowStateChangesStart(false);\n var res;\n if (track) {\n res = trackDerivedFunction(this, this.derivation, this.scope_);\n } else {\n if (globalState.disableErrorBoundaries === true) {\n res = this.derivation.call(this.scope_);\n } else {\n try {\n res = this.derivation.call(this.scope_);\n } catch (e) {\n res = new CaughtException(e);\n }\n }\n }\n allowStateChangesEnd(prev);\n this.isComputing_ = false;\n return res;\n };\n _proto.suspend_ = function suspend_() {\n if (!this.keepAlive_) {\n clearObserving(this);\n this.value_ = undefined; // don't hold on to computed value!\n if ( this.isTracing_ !== TraceMode.NONE) {\n console.log(\"[mobx.trace] Computed value '\" + this.name_ + \"' was suspended and it will recompute on the next access.\");\n }\n }\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n var _this = this;\n var firstTime = true;\n var prevValue = undefined;\n return autorun(function () {\n // TODO: why is this in a different place than the spyReport() function? in all other observables it's called in the same place\n var newValue = _this.get();\n if (!firstTime || fireImmediately) {\n var prevU = untrackedStart();\n listener({\n observableKind: \"computed\",\n debugObjectName: _this.name_,\n type: UPDATE,\n object: _this,\n newValue: newValue,\n oldValue: prevValue\n });\n untrackedEnd(prevU);\n }\n firstTime = false;\n prevValue = newValue;\n });\n };\n _proto.warnAboutUntrackedRead_ = function warnAboutUntrackedRead_() {\n if (this.isTracing_ !== TraceMode.NONE) {\n console.log(\"[mobx.trace] Computed value '\" + this.name_ + \"' is being read outside a reactive context. Doing a full recompute.\");\n }\n if (typeof this.requiresReaction_ === \"boolean\" ? this.requiresReaction_ : globalState.computedRequiresReaction) {\n console.warn(\"[mobx] Computed value '\" + this.name_ + \"' is being read outside a reactive context. Doing a full recompute.\");\n }\n };\n _proto.toString = function toString() {\n return this.name_ + \"[\" + this.derivation.toString() + \"]\";\n };\n _proto.valueOf = function valueOf() {\n return toPrimitive(this.get());\n };\n _proto[_Symbol$toPrimitive$1] = function () {\n return this.valueOf();\n };\n return ComputedValue;\n}();\nvar isComputedValue = /*#__PURE__*/createInstanceofPredicate(\"ComputedValue\", ComputedValue);\n\nvar IDerivationState_;\n(function (IDerivationState_) {\n // before being run or (outside batch and not being observed)\n // at this point derivation is not holding any data about dependency tree\n IDerivationState_[IDerivationState_[\"NOT_TRACKING_\"] = -1] = \"NOT_TRACKING_\";\n // no shallow dependency changed since last computation\n // won't recalculate derivation\n // this is what makes mobx fast\n IDerivationState_[IDerivationState_[\"UP_TO_DATE_\"] = 0] = \"UP_TO_DATE_\";\n // some deep dependency changed, but don't know if shallow dependency changed\n // will require to check first if UP_TO_DATE or POSSIBLY_STALE\n // currently only ComputedValue will propagate POSSIBLY_STALE\n //\n // having this state is second big optimization:\n // don't have to recompute on every dependency change, but only when it's needed\n IDerivationState_[IDerivationState_[\"POSSIBLY_STALE_\"] = 1] = \"POSSIBLY_STALE_\";\n // A shallow dependency has changed since last computation and the derivation\n // will need to recompute when it's needed next.\n IDerivationState_[IDerivationState_[\"STALE_\"] = 2] = \"STALE_\";\n})(IDerivationState_ || (IDerivationState_ = {}));\nvar TraceMode;\n(function (TraceMode) {\n TraceMode[TraceMode[\"NONE\"] = 0] = \"NONE\";\n TraceMode[TraceMode[\"LOG\"] = 1] = \"LOG\";\n TraceMode[TraceMode[\"BREAK\"] = 2] = \"BREAK\";\n})(TraceMode || (TraceMode = {}));\nvar CaughtException = function CaughtException(cause) {\n this.cause = void 0;\n this.cause = cause;\n // Empty\n};\n\nfunction isCaughtException(e) {\n return e instanceof CaughtException;\n}\n/**\r\n * Finds out whether any dependency of the derivation has actually changed.\r\n * If dependenciesState is 1 then it will recalculate dependencies,\r\n * if any dependency changed it will propagate it by changing dependenciesState to 2.\r\n *\r\n * By iterating over the dependencies in the same order that they were reported and\r\n * stopping on the first change, all the recalculations are only called for ComputedValues\r\n * that will be tracked by derivation. That is because we assume that if the first x\r\n * dependencies of the derivation doesn't change then the derivation should run the same way\r\n * up until accessing x-th dependency.\r\n */\nfunction shouldCompute(derivation) {\n switch (derivation.dependenciesState_) {\n case IDerivationState_.UP_TO_DATE_:\n return false;\n case IDerivationState_.NOT_TRACKING_:\n case IDerivationState_.STALE_:\n return true;\n case IDerivationState_.POSSIBLY_STALE_:\n {\n // state propagation can occur outside of action/reactive context #2195\n var prevAllowStateReads = allowStateReadsStart(true);\n var prevUntracked = untrackedStart(); // no need for those computeds to be reported, they will be picked up in trackDerivedFunction.\n var obs = derivation.observing_,\n l = obs.length;\n for (var i = 0; i < l; i++) {\n var obj = obs[i];\n if (isComputedValue(obj)) {\n if (globalState.disableErrorBoundaries) {\n obj.get();\n } else {\n try {\n obj.get();\n } catch (e) {\n // we are not interested in the value *or* exception at this moment, but if there is one, notify all\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return true;\n }\n }\n // if ComputedValue `obj` actually changed it will be computed and propagated to its observers.\n // and `derivation` is an observer of `obj`\n // invariantShouldCompute(derivation)\n if (derivation.dependenciesState_ === IDerivationState_.STALE_) {\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return true;\n }\n }\n }\n changeDependenciesStateTo0(derivation);\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return false;\n }\n }\n}\nfunction isComputingDerivation() {\n return globalState.trackingDerivation !== null; // filter out actions inside computations\n}\n\nfunction checkIfStateModificationsAreAllowed(atom) {\n var hasObservers = atom.observers_.size > 0;\n // Should not be possible to change observed state outside strict mode, except during initialization, see #563\n if (!globalState.allowStateChanges && (hasObservers || globalState.enforceActions === \"always\")) {\n console.warn(\"[MobX] \" + (globalState.enforceActions ? \"Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: \" : \"Side effects like changing state are not allowed at this point. Are you trying to modify state from, for example, a computed value or the render function of a React component? You can wrap side effects in 'runInAction' (or decorate functions with 'action') if needed. Tried to modify: \") + atom.name_);\n }\n}\nfunction checkIfStateReadsAreAllowed(observable) {\n if ( !globalState.allowStateReads && globalState.observableRequiresReaction) {\n console.warn(\"[mobx] Observable '\" + observable.name_ + \"' being read outside a reactive context.\");\n }\n}\n/**\r\n * Executes the provided function `f` and tracks which observables are being accessed.\r\n * The tracking information is stored on the `derivation` object and the derivation is registered\r\n * as observer of any of the accessed observables.\r\n */\nfunction trackDerivedFunction(derivation, f, context) {\n var prevAllowStateReads = allowStateReadsStart(true);\n // pre allocate array allocation + room for variation in deps\n // array will be trimmed by bindDependencies\n changeDependenciesStateTo0(derivation);\n derivation.newObserving_ = new Array(derivation.observing_.length + 100);\n derivation.unboundDepsCount_ = 0;\n derivation.runId_ = ++globalState.runId;\n var prevTracking = globalState.trackingDerivation;\n globalState.trackingDerivation = derivation;\n globalState.inBatch++;\n var result;\n if (globalState.disableErrorBoundaries === true) {\n result = f.call(context);\n } else {\n try {\n result = f.call(context);\n } catch (e) {\n result = new CaughtException(e);\n }\n }\n globalState.inBatch--;\n globalState.trackingDerivation = prevTracking;\n bindDependencies(derivation);\n warnAboutDerivationWithoutDependencies(derivation);\n allowStateReadsEnd(prevAllowStateReads);\n return result;\n}\nfunction warnAboutDerivationWithoutDependencies(derivation) {\n if (derivation.observing_.length !== 0) {\n return;\n }\n if (typeof derivation.requiresObservable_ === \"boolean\" ? derivation.requiresObservable_ : globalState.reactionRequiresObservable) {\n console.warn(\"[mobx] Derivation '\" + derivation.name_ + \"' is created/updated without reading any observable value.\");\n }\n}\n/**\r\n * diffs newObserving with observing.\r\n * update observing to be newObserving with unique observables\r\n * notify observers that become observed/unobserved\r\n */\nfunction bindDependencies(derivation) {\n // invariant(derivation.dependenciesState !== IDerivationState.NOT_TRACKING, \"INTERNAL ERROR bindDependencies expects derivation.dependenciesState !== -1\");\n var prevObserving = derivation.observing_;\n var observing = derivation.observing_ = derivation.newObserving_;\n var lowestNewObservingDerivationState = IDerivationState_.UP_TO_DATE_;\n // Go through all new observables and check diffValue: (this list can contain duplicates):\n // 0: first occurrence, change to 1 and keep it\n // 1: extra occurrence, drop it\n var i0 = 0,\n l = derivation.unboundDepsCount_;\n for (var i = 0; i < l; i++) {\n var dep = observing[i];\n if (dep.diffValue_ === 0) {\n dep.diffValue_ = 1;\n if (i0 !== i) {\n observing[i0] = dep;\n }\n i0++;\n }\n // Upcast is 'safe' here, because if dep is IObservable, `dependenciesState` will be undefined,\n // not hitting the condition\n if (dep.dependenciesState_ > lowestNewObservingDerivationState) {\n lowestNewObservingDerivationState = dep.dependenciesState_;\n }\n }\n observing.length = i0;\n derivation.newObserving_ = null; // newObserving shouldn't be needed outside tracking (statement moved down to work around FF bug, see #614)\n // Go through all old observables and check diffValue: (it is unique after last bindDependencies)\n // 0: it's not in new observables, unobserve it\n // 1: it keeps being observed, don't want to notify it. change to 0\n l = prevObserving.length;\n while (l--) {\n var _dep = prevObserving[l];\n if (_dep.diffValue_ === 0) {\n removeObserver(_dep, derivation);\n }\n _dep.diffValue_ = 0;\n }\n // Go through all new observables and check diffValue: (now it should be unique)\n // 0: it was set to 0 in last loop. don't need to do anything.\n // 1: it wasn't observed, let's observe it. set back to 0\n while (i0--) {\n var _dep2 = observing[i0];\n if (_dep2.diffValue_ === 1) {\n _dep2.diffValue_ = 0;\n addObserver(_dep2, derivation);\n }\n }\n // Some new observed derivations may become stale during this derivation computation\n // so they have had no chance to propagate staleness (#916)\n if (lowestNewObservingDerivationState !== IDerivationState_.UP_TO_DATE_) {\n derivation.dependenciesState_ = lowestNewObservingDerivationState;\n derivation.onBecomeStale_();\n }\n}\nfunction clearObserving(derivation) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR clearObserving should be called only inside batch\");\n var obs = derivation.observing_;\n derivation.observing_ = [];\n var i = obs.length;\n while (i--) {\n removeObserver(obs[i], derivation);\n }\n derivation.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n}\nfunction untracked(action) {\n var prev = untrackedStart();\n try {\n return action();\n } finally {\n untrackedEnd(prev);\n }\n}\nfunction untrackedStart() {\n var prev = globalState.trackingDerivation;\n globalState.trackingDerivation = null;\n return prev;\n}\nfunction untrackedEnd(prev) {\n globalState.trackingDerivation = prev;\n}\nfunction allowStateReadsStart(allowStateReads) {\n var prev = globalState.allowStateReads;\n globalState.allowStateReads = allowStateReads;\n return prev;\n}\nfunction allowStateReadsEnd(prev) {\n globalState.allowStateReads = prev;\n}\n/**\r\n * needed to keep `lowestObserverState` correct. when changing from (2 or 1) to 0\r\n *\r\n */\nfunction changeDependenciesStateTo0(derivation) {\n if (derivation.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n return;\n }\n derivation.dependenciesState_ = IDerivationState_.UP_TO_DATE_;\n var obs = derivation.observing_;\n var i = obs.length;\n while (i--) {\n obs[i].lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n }\n}\n\n/**\r\n * These values will persist if global state is reset\r\n */\nvar persistentKeys = [\"mobxGuid\", \"spyListeners\", \"enforceActions\", \"computedRequiresReaction\", \"reactionRequiresObservable\", \"observableRequiresReaction\", \"allowStateReads\", \"disableErrorBoundaries\", \"runId\", \"UNCHANGED\", \"useProxies\"];\nvar MobXGlobals = function MobXGlobals() {\n this.version = 6;\n this.UNCHANGED = {};\n this.trackingDerivation = null;\n this.trackingContext = null;\n this.runId = 0;\n this.mobxGuid = 0;\n this.inBatch = 0;\n this.pendingUnobservations = [];\n this.pendingReactions = [];\n this.isRunningReactions = false;\n this.allowStateChanges = false;\n this.allowStateReads = true;\n this.enforceActions = true;\n this.spyListeners = [];\n this.globalReactionErrorHandlers = [];\n this.computedRequiresReaction = false;\n this.reactionRequiresObservable = false;\n this.observableRequiresReaction = false;\n this.disableErrorBoundaries = false;\n this.suppressReactionErrors = false;\n this.useProxies = true;\n this.verifyProxies = false;\n this.safeDescriptors = true;\n this.stateVersion = Number.MIN_SAFE_INTEGER;\n};\nvar canMergeGlobalState = true;\nvar isolateCalled = false;\nvar globalState = /*#__PURE__*/function () {\n var global = /*#__PURE__*/getGlobal();\n if (global.__mobxInstanceCount > 0 && !global.__mobxGlobals) {\n canMergeGlobalState = false;\n }\n if (global.__mobxGlobals && global.__mobxGlobals.version !== new MobXGlobals().version) {\n canMergeGlobalState = false;\n }\n if (!canMergeGlobalState) {\n // Because this is a IIFE we need to let isolateCalled a chance to change\n // so we run it after the event loop completed at least 1 iteration\n setTimeout(function () {\n if (!isolateCalled) {\n die(35);\n }\n }, 1);\n return new MobXGlobals();\n } else if (global.__mobxGlobals) {\n global.__mobxInstanceCount += 1;\n if (!global.__mobxGlobals.UNCHANGED) {\n global.__mobxGlobals.UNCHANGED = {};\n } // make merge backward compatible\n return global.__mobxGlobals;\n } else {\n global.__mobxInstanceCount = 1;\n return global.__mobxGlobals = /*#__PURE__*/new MobXGlobals();\n }\n}();\nfunction isolateGlobalState() {\n if (globalState.pendingReactions.length || globalState.inBatch || globalState.isRunningReactions) {\n die(36);\n }\n isolateCalled = true;\n if (canMergeGlobalState) {\n var global = getGlobal();\n if (--global.__mobxInstanceCount === 0) {\n global.__mobxGlobals = undefined;\n }\n globalState = new MobXGlobals();\n }\n}\nfunction getGlobalState() {\n return globalState;\n}\n/**\r\n * For testing purposes only; this will break the internal state of existing observables,\r\n * but can be used to get back at a stable state after throwing errors\r\n */\nfunction resetGlobalState() {\n var defaultGlobals = new MobXGlobals();\n for (var key in defaultGlobals) {\n if (persistentKeys.indexOf(key) === -1) {\n globalState[key] = defaultGlobals[key];\n }\n }\n globalState.allowStateChanges = !globalState.enforceActions;\n}\n\nfunction hasObservers(observable) {\n return observable.observers_ && observable.observers_.size > 0;\n}\nfunction getObservers(observable) {\n return observable.observers_;\n}\n// function invariantObservers(observable: IObservable) {\n// const list = observable.observers\n// const map = observable.observersIndexes\n// const l = list.length\n// for (let i = 0; i < l; i++) {\n// const id = list[i].__mapid\n// if (i) {\n// invariant(map[id] === i, \"INTERNAL ERROR maps derivation.__mapid to index in list\") // for performance\n// } else {\n// invariant(!(id in map), \"INTERNAL ERROR observer on index 0 shouldn't be held in map.\") // for performance\n// }\n// }\n// invariant(\n// list.length === 0 || Object.keys(map).length === list.length - 1,\n// \"INTERNAL ERROR there is no junk in map\"\n// )\n// }\nfunction addObserver(observable, node) {\n // invariant(node.dependenciesState !== -1, \"INTERNAL ERROR, can add only dependenciesState !== -1\");\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR add already added node\");\n // invariantObservers(observable);\n observable.observers_.add(node);\n if (observable.lowestObserverState_ > node.dependenciesState_) {\n observable.lowestObserverState_ = node.dependenciesState_;\n }\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR didn't add node\");\n}\n\nfunction removeObserver(observable, node) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR, remove should be called only inside batch\");\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR remove already removed node\");\n // invariantObservers(observable);\n observable.observers_[\"delete\"](node);\n if (observable.observers_.size === 0) {\n // deleting last observer\n queueForUnobservation(observable);\n }\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR remove already removed node2\");\n}\n\nfunction queueForUnobservation(observable) {\n if (observable.isPendingUnobservation_ === false) {\n // invariant(observable._observers.length === 0, \"INTERNAL ERROR, should only queue for unobservation unobserved observables\");\n observable.isPendingUnobservation_ = true;\n globalState.pendingUnobservations.push(observable);\n }\n}\n/**\r\n * Batch starts a transaction, at least for purposes of memoizing ComputedValues when nothing else does.\r\n * During a batch `onBecomeUnobserved` will be called at most once per observable.\r\n * Avoids unnecessary recalculations.\r\n */\nfunction startBatch() {\n globalState.inBatch++;\n}\nfunction endBatch() {\n if (--globalState.inBatch === 0) {\n runReactions();\n // the batch is actually about to finish, all unobserving should happen here.\n var list = globalState.pendingUnobservations;\n for (var i = 0; i < list.length; i++) {\n var observable = list[i];\n observable.isPendingUnobservation_ = false;\n if (observable.observers_.size === 0) {\n if (observable.isBeingObserved_) {\n // if this observable had reactive observers, trigger the hooks\n observable.isBeingObserved_ = false;\n observable.onBUO();\n }\n if (observable instanceof ComputedValue) {\n // computed values are automatically teared down when the last observer leaves\n // this process happens recursively, this computed might be the last observabe of another, etc..\n observable.suspend_();\n }\n }\n }\n globalState.pendingUnobservations = [];\n }\n}\nfunction reportObserved(observable) {\n checkIfStateReadsAreAllowed(observable);\n var derivation = globalState.trackingDerivation;\n if (derivation !== null) {\n /**\r\n * Simple optimization, give each derivation run an unique id (runId)\r\n * Check if last time this observable was accessed the same runId is used\r\n * if this is the case, the relation is already known\r\n */\n if (derivation.runId_ !== observable.lastAccessedBy_) {\n observable.lastAccessedBy_ = derivation.runId_;\n // Tried storing newObserving, or observing, or both as Set, but performance didn't come close...\n derivation.newObserving_[derivation.unboundDepsCount_++] = observable;\n if (!observable.isBeingObserved_ && globalState.trackingContext) {\n observable.isBeingObserved_ = true;\n observable.onBO();\n }\n }\n return observable.isBeingObserved_;\n } else if (observable.observers_.size === 0 && globalState.inBatch > 0) {\n queueForUnobservation(observable);\n }\n return false;\n}\n// function invariantLOS(observable: IObservable, msg: string) {\n// // it's expensive so better not run it in produciton. but temporarily helpful for testing\n// const min = getObservers(observable).reduce((a, b) => Math.min(a, b.dependenciesState), 2)\n// if (min >= observable.lowestObserverState) return // <- the only assumption about `lowestObserverState`\n// throw new Error(\n// \"lowestObserverState is wrong for \" +\n// msg +\n// \" because \" +\n// min +\n// \" < \" +\n// observable.lowestObserverState\n// )\n// }\n/**\r\n * NOTE: current propagation mechanism will in case of self reruning autoruns behave unexpectedly\r\n * It will propagate changes to observers from previous run\r\n * It's hard or maybe impossible (with reasonable perf) to get it right with current approach\r\n * Hopefully self reruning autoruns aren't a feature people should depend on\r\n * Also most basic use cases should be ok\r\n */\n// Called by Atom when its value changes\nfunction propagateChanged(observable) {\n // invariantLOS(observable, \"changed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return;\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_;\n // Ideally we use for..of here, but the downcompiled version is really slow...\n observable.observers_.forEach(function (d) {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n if ( d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable);\n }\n d.onBecomeStale_();\n }\n d.dependenciesState_ = IDerivationState_.STALE_;\n });\n // invariantLOS(observable, \"changed end\");\n}\n// Called by ComputedValue when it recalculate and its value changed\nfunction propagateChangeConfirmed(observable) {\n // invariantLOS(observable, \"confirmed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return;\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_;\n observable.observers_.forEach(function (d) {\n if (d.dependenciesState_ === IDerivationState_.POSSIBLY_STALE_) {\n d.dependenciesState_ = IDerivationState_.STALE_;\n if ( d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable);\n }\n } else if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_ // this happens during computing of `d`, just keep lowestObserverState up to date.\n ) {\n observable.lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n }\n });\n // invariantLOS(observable, \"confirmed end\");\n}\n// Used by computed when its dependency changed, but we don't wan't to immediately recompute.\nfunction propagateMaybeChanged(observable) {\n // invariantLOS(observable, \"maybe start\");\n if (observable.lowestObserverState_ !== IDerivationState_.UP_TO_DATE_) {\n return;\n }\n observable.lowestObserverState_ = IDerivationState_.POSSIBLY_STALE_;\n observable.observers_.forEach(function (d) {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n d.dependenciesState_ = IDerivationState_.POSSIBLY_STALE_;\n d.onBecomeStale_();\n }\n });\n // invariantLOS(observable, \"maybe end\");\n}\n\nfunction logTraceInfo(derivation, observable) {\n console.log(\"[mobx.trace] '\" + derivation.name_ + \"' is invalidated due to a change in: '\" + observable.name_ + \"'\");\n if (derivation.isTracing_ === TraceMode.BREAK) {\n var lines = [];\n printDepTree(getDependencyTree(derivation), lines, 1);\n // prettier-ignore\n new Function(\"debugger;\\n/*\\nTracing '\" + derivation.name_ + \"'\\n\\nYou are entering this break point because derivation '\" + derivation.name_ + \"' is being traced and '\" + observable.name_ + \"' is now forcing it to update.\\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\\n\\n\" + (derivation instanceof ComputedValue ? derivation.derivation.toString().replace(/[*]\\//g, \"/\") : \"\") + \"\\n\\nThe dependencies for this derivation are:\\n\\n\" + lines.join(\"\\n\") + \"\\n*/\\n \")();\n }\n}\nfunction printDepTree(tree, lines, depth) {\n if (lines.length >= 1000) {\n lines.push(\"(and many more)\");\n return;\n }\n lines.push(\"\" + \"\\t\".repeat(depth - 1) + tree.name);\n if (tree.dependencies) {\n tree.dependencies.forEach(function (child) {\n return printDepTree(child, lines, depth + 1);\n });\n }\n}\n\nvar Reaction = /*#__PURE__*/function () {\n // nodes we are looking at. Our value depends on these nodes\n\n function Reaction(name_, onInvalidate_, errorHandler_, requiresObservable_) {\n if (name_ === void 0) {\n name_ = \"Reaction@\" + getNextId() ;\n }\n this.name_ = void 0;\n this.onInvalidate_ = void 0;\n this.errorHandler_ = void 0;\n this.requiresObservable_ = void 0;\n this.observing_ = [];\n this.newObserving_ = [];\n this.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n this.diffValue_ = 0;\n this.runId_ = 0;\n this.unboundDepsCount_ = 0;\n this.isDisposed_ = false;\n this.isScheduled_ = false;\n this.isTrackPending_ = false;\n this.isRunning_ = false;\n this.isTracing_ = TraceMode.NONE;\n this.name_ = name_;\n this.onInvalidate_ = onInvalidate_;\n this.errorHandler_ = errorHandler_;\n this.requiresObservable_ = requiresObservable_;\n }\n var _proto = Reaction.prototype;\n _proto.onBecomeStale_ = function onBecomeStale_() {\n this.schedule_();\n };\n _proto.schedule_ = function schedule_() {\n if (!this.isScheduled_) {\n this.isScheduled_ = true;\n globalState.pendingReactions.push(this);\n runReactions();\n }\n };\n _proto.isScheduled = function isScheduled() {\n return this.isScheduled_;\n }\n /**\r\n * internal, use schedule() if you intend to kick off a reaction\r\n */;\n _proto.runReaction_ = function runReaction_() {\n if (!this.isDisposed_) {\n startBatch();\n this.isScheduled_ = false;\n var prev = globalState.trackingContext;\n globalState.trackingContext = this;\n if (shouldCompute(this)) {\n this.isTrackPending_ = true;\n try {\n this.onInvalidate_();\n if (\"development\" !== \"production\" && this.isTrackPending_ && isSpyEnabled()) {\n // onInvalidate didn't trigger track right away..\n spyReport({\n name: this.name_,\n type: \"scheduled-reaction\"\n });\n }\n } catch (e) {\n this.reportExceptionInDerivation_(e);\n }\n }\n globalState.trackingContext = prev;\n endBatch();\n }\n };\n _proto.track = function track(fn) {\n if (this.isDisposed_) {\n return;\n // console.warn(\"Reaction already disposed\") // Note: Not a warning / error in mobx 4 either\n }\n\n startBatch();\n var notify = isSpyEnabled();\n var startTime;\n if ( notify) {\n startTime = Date.now();\n spyReportStart({\n name: this.name_,\n type: \"reaction\"\n });\n }\n this.isRunning_ = true;\n var prevReaction = globalState.trackingContext; // reactions could create reactions...\n globalState.trackingContext = this;\n var result = trackDerivedFunction(this, fn, undefined);\n globalState.trackingContext = prevReaction;\n this.isRunning_ = false;\n this.isTrackPending_ = false;\n if (this.isDisposed_) {\n // disposed during last run. Clean up everything that was bound after the dispose call.\n clearObserving(this);\n }\n if (isCaughtException(result)) {\n this.reportExceptionInDerivation_(result.cause);\n }\n if ( notify) {\n spyReportEnd({\n time: Date.now() - startTime\n });\n }\n endBatch();\n };\n _proto.reportExceptionInDerivation_ = function reportExceptionInDerivation_(error) {\n var _this = this;\n if (this.errorHandler_) {\n this.errorHandler_(error, this);\n return;\n }\n if (globalState.disableErrorBoundaries) {\n throw error;\n }\n var message = \"[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '\" + this + \"'\" ;\n if (!globalState.suppressReactionErrors) {\n console.error(message, error);\n /** If debugging brought you here, please, read the above message :-). Tnx! */\n } else {\n console.warn(\"[mobx] (error in reaction '\" + this.name_ + \"' suppressed, fix error of causing action below)\");\n } // prettier-ignore\n if ( isSpyEnabled()) {\n spyReport({\n type: \"error\",\n name: this.name_,\n message: message,\n error: \"\" + error\n });\n }\n globalState.globalReactionErrorHandlers.forEach(function (f) {\n return f(error, _this);\n });\n };\n _proto.dispose = function dispose() {\n if (!this.isDisposed_) {\n this.isDisposed_ = true;\n if (!this.isRunning_) {\n // if disposed while running, clean up later. Maybe not optimal, but rare case\n startBatch();\n clearObserving(this);\n endBatch();\n }\n }\n };\n _proto.getDisposer_ = function getDisposer_() {\n var r = this.dispose.bind(this);\n r[$mobx] = this;\n return r;\n };\n _proto.toString = function toString() {\n return \"Reaction[\" + this.name_ + \"]\";\n };\n _proto.trace = function trace$1(enterBreakPoint) {\n if (enterBreakPoint === void 0) {\n enterBreakPoint = false;\n }\n trace(this, enterBreakPoint);\n };\n return Reaction;\n}();\nfunction onReactionError(handler) {\n globalState.globalReactionErrorHandlers.push(handler);\n return function () {\n var idx = globalState.globalReactionErrorHandlers.indexOf(handler);\n if (idx >= 0) {\n globalState.globalReactionErrorHandlers.splice(idx, 1);\n }\n };\n}\n/**\r\n * Magic number alert!\r\n * Defines within how many times a reaction is allowed to re-trigger itself\r\n * until it is assumed that this is gonna be a never ending loop...\r\n */\nvar MAX_REACTION_ITERATIONS = 100;\nvar reactionScheduler = function reactionScheduler(f) {\n return f();\n};\nfunction runReactions() {\n // Trampolining, if runReactions are already running, new reactions will be picked up\n if (globalState.inBatch > 0 || globalState.isRunningReactions) {\n return;\n }\n reactionScheduler(runReactionsHelper);\n}\nfunction runReactionsHelper() {\n globalState.isRunningReactions = true;\n var allReactions = globalState.pendingReactions;\n var iterations = 0;\n // While running reactions, new reactions might be triggered.\n // Hence we work with two variables and check whether\n // we converge to no remaining reactions after a while.\n while (allReactions.length > 0) {\n if (++iterations === MAX_REACTION_ITERATIONS) {\n console.error( \"Reaction doesn't converge to a stable state after \" + MAX_REACTION_ITERATIONS + \" iterations.\" + (\" Probably there is a cycle in the reactive function: \" + allReactions[0]) );\n allReactions.splice(0); // clear reactions\n }\n\n var remainingReactions = allReactions.splice(0);\n for (var i = 0, l = remainingReactions.length; i < l; i++) {\n remainingReactions[i].runReaction_();\n }\n }\n globalState.isRunningReactions = false;\n}\nvar isReaction = /*#__PURE__*/createInstanceofPredicate(\"Reaction\", Reaction);\nfunction setReactionScheduler(fn) {\n var baseScheduler = reactionScheduler;\n reactionScheduler = function reactionScheduler(f) {\n return fn(function () {\n return baseScheduler(f);\n });\n };\n}\n\nfunction isSpyEnabled() {\n return !!globalState.spyListeners.length;\n}\nfunction spyReport(event) {\n if (!globalState.spyListeners.length) {\n return;\n }\n var listeners = globalState.spyListeners;\n for (var i = 0, l = listeners.length; i < l; i++) {\n listeners[i](event);\n }\n}\nfunction spyReportStart(event) {\n var change = _extends({}, event, {\n spyReportStart: true\n });\n spyReport(change);\n}\nvar END_EVENT = {\n type: \"report-end\",\n spyReportEnd: true\n};\nfunction spyReportEnd(change) {\n if (change) {\n spyReport(_extends({}, change, {\n type: \"report-end\",\n spyReportEnd: true\n }));\n } else {\n spyReport(END_EVENT);\n }\n}\nfunction spy(listener) {\n {\n globalState.spyListeners.push(listener);\n return once(function () {\n globalState.spyListeners = globalState.spyListeners.filter(function (l) {\n return l !== listener;\n });\n });\n }\n}\n\nvar ACTION = \"action\";\nvar ACTION_BOUND = \"action.bound\";\nvar AUTOACTION = \"autoAction\";\nvar AUTOACTION_BOUND = \"autoAction.bound\";\nvar DEFAULT_ACTION_NAME = \"\";\nvar actionAnnotation = /*#__PURE__*/createActionAnnotation(ACTION);\nvar actionBoundAnnotation = /*#__PURE__*/createActionAnnotation(ACTION_BOUND, {\n bound: true\n});\nvar autoActionAnnotation = /*#__PURE__*/createActionAnnotation(AUTOACTION, {\n autoAction: true\n});\nvar autoActionBoundAnnotation = /*#__PURE__*/createActionAnnotation(AUTOACTION_BOUND, {\n autoAction: true,\n bound: true\n});\nfunction createActionFactory(autoAction) {\n var res = function action(arg1, arg2) {\n // action(fn() {})\n if (isFunction(arg1)) {\n return createAction(arg1.name || DEFAULT_ACTION_NAME, arg1, autoAction);\n }\n // action(\"name\", fn() {})\n if (isFunction(arg2)) {\n return createAction(arg1, arg2, autoAction);\n }\n // @action\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, autoAction ? autoActionAnnotation : actionAnnotation);\n }\n // action(\"name\") & @action(\"name\")\n if (isStringish(arg1)) {\n return createDecoratorAnnotation(createActionAnnotation(autoAction ? AUTOACTION : ACTION, {\n name: arg1,\n autoAction: autoAction\n }));\n }\n {\n die(\"Invalid arguments for `action`\");\n }\n };\n return res;\n}\nvar action = /*#__PURE__*/createActionFactory(false);\nObject.assign(action, actionAnnotation);\nvar autoAction = /*#__PURE__*/createActionFactory(true);\nObject.assign(autoAction, autoActionAnnotation);\naction.bound = /*#__PURE__*/createDecoratorAnnotation(actionBoundAnnotation);\nautoAction.bound = /*#__PURE__*/createDecoratorAnnotation(autoActionBoundAnnotation);\nfunction runInAction(fn) {\n return executeAction(fn.name || DEFAULT_ACTION_NAME, false, fn, this, undefined);\n}\nfunction isAction(thing) {\n return isFunction(thing) && thing.isMobxAction === true;\n}\n\n/**\r\n * Creates a named reactive view and keeps it alive, so that the view is always\r\n * updated if one of the dependencies changes, even when the view is not further used by something else.\r\n * @param view The reactive view\r\n * @returns disposer function, which can be used to stop the view from being updated in the future.\r\n */\nfunction autorun(view, opts) {\n var _opts$name, _opts;\n if (opts === void 0) {\n opts = EMPTY_OBJECT;\n }\n {\n if (!isFunction(view)) {\n die(\"Autorun expects a function as first argument\");\n }\n if (isAction(view)) {\n die(\"Autorun does not accept actions since actions are untrackable\");\n }\n }\n var name = (_opts$name = (_opts = opts) == null ? void 0 : _opts.name) != null ? _opts$name : view.name || \"Autorun@\" + getNextId() ;\n var runSync = !opts.scheduler && !opts.delay;\n var reaction;\n if (runSync) {\n // normal autorun\n reaction = new Reaction(name, function () {\n this.track(reactionRunner);\n }, opts.onError, opts.requiresObservable);\n } else {\n var scheduler = createSchedulerFromOptions(opts);\n // debounced autorun\n var isScheduled = false;\n reaction = new Reaction(name, function () {\n if (!isScheduled) {\n isScheduled = true;\n scheduler(function () {\n isScheduled = false;\n if (!reaction.isDisposed_) {\n reaction.track(reactionRunner);\n }\n });\n }\n }, opts.onError, opts.requiresObservable);\n }\n function reactionRunner() {\n view(reaction);\n }\n reaction.schedule_();\n return reaction.getDisposer_();\n}\nvar run = function run(f) {\n return f();\n};\nfunction createSchedulerFromOptions(opts) {\n return opts.scheduler ? opts.scheduler : opts.delay ? function (f) {\n return setTimeout(f, opts.delay);\n } : run;\n}\nfunction reaction(expression, effect, opts) {\n var _opts$name2;\n if (opts === void 0) {\n opts = EMPTY_OBJECT;\n }\n {\n if (!isFunction(expression) || !isFunction(effect)) {\n die(\"First and second argument to reaction should be functions\");\n }\n if (!isPlainObject(opts)) {\n die(\"Third argument of reactions should be an object\");\n }\n }\n var name = (_opts$name2 = opts.name) != null ? _opts$name2 : \"Reaction@\" + getNextId() ;\n var effectAction = action(name, opts.onError ? wrapErrorHandler(opts.onError, effect) : effect);\n var runSync = !opts.scheduler && !opts.delay;\n var scheduler = createSchedulerFromOptions(opts);\n var firstTime = true;\n var isScheduled = false;\n var value;\n var oldValue;\n var equals = opts.compareStructural ? comparer.structural : opts.equals || comparer[\"default\"];\n var r = new Reaction(name, function () {\n if (firstTime || runSync) {\n reactionRunner();\n } else if (!isScheduled) {\n isScheduled = true;\n scheduler(reactionRunner);\n }\n }, opts.onError, opts.requiresObservable);\n function reactionRunner() {\n isScheduled = false;\n if (r.isDisposed_) {\n return;\n }\n var changed = false;\n r.track(function () {\n var nextValue = allowStateChanges(false, function () {\n return expression(r);\n });\n changed = firstTime || !equals(value, nextValue);\n oldValue = value;\n value = nextValue;\n });\n if (firstTime && opts.fireImmediately) {\n effectAction(value, oldValue, r);\n } else if (!firstTime && changed) {\n effectAction(value, oldValue, r);\n }\n firstTime = false;\n }\n r.schedule_();\n return r.getDisposer_();\n}\nfunction wrapErrorHandler(errorHandler, baseFn) {\n return function () {\n try {\n return baseFn.apply(this, arguments);\n } catch (e) {\n errorHandler.call(this, e);\n }\n };\n}\n\nvar ON_BECOME_OBSERVED = \"onBO\";\nvar ON_BECOME_UNOBSERVED = \"onBUO\";\nfunction onBecomeObserved(thing, arg2, arg3) {\n return interceptHook(ON_BECOME_OBSERVED, thing, arg2, arg3);\n}\nfunction onBecomeUnobserved(thing, arg2, arg3) {\n return interceptHook(ON_BECOME_UNOBSERVED, thing, arg2, arg3);\n}\nfunction interceptHook(hook, thing, arg2, arg3) {\n var atom = typeof arg3 === \"function\" ? getAtom(thing, arg2) : getAtom(thing);\n var cb = isFunction(arg3) ? arg3 : arg2;\n var listenersKey = hook + \"L\";\n if (atom[listenersKey]) {\n atom[listenersKey].add(cb);\n } else {\n atom[listenersKey] = new Set([cb]);\n }\n return function () {\n var hookListeners = atom[listenersKey];\n if (hookListeners) {\n hookListeners[\"delete\"](cb);\n if (hookListeners.size === 0) {\n delete atom[listenersKey];\n }\n }\n };\n}\n\nvar NEVER = \"never\";\nvar ALWAYS = \"always\";\nvar OBSERVED = \"observed\";\n// const IF_AVAILABLE = \"ifavailable\"\nfunction configure(options) {\n if (options.isolateGlobalState === true) {\n isolateGlobalState();\n }\n var useProxies = options.useProxies,\n enforceActions = options.enforceActions;\n if (useProxies !== undefined) {\n globalState.useProxies = useProxies === ALWAYS ? true : useProxies === NEVER ? false : typeof Proxy !== \"undefined\";\n }\n if (useProxies === \"ifavailable\") {\n globalState.verifyProxies = true;\n }\n if (enforceActions !== undefined) {\n var ea = enforceActions === ALWAYS ? ALWAYS : enforceActions === OBSERVED;\n globalState.enforceActions = ea;\n globalState.allowStateChanges = ea === true || ea === ALWAYS ? false : true;\n }\n [\"computedRequiresReaction\", \"reactionRequiresObservable\", \"observableRequiresReaction\", \"disableErrorBoundaries\", \"safeDescriptors\"].forEach(function (key) {\n if (key in options) {\n globalState[key] = !!options[key];\n }\n });\n globalState.allowStateReads = !globalState.observableRequiresReaction;\n if ( globalState.disableErrorBoundaries === true) {\n console.warn(\"WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled.\");\n }\n if (options.reactionScheduler) {\n setReactionScheduler(options.reactionScheduler);\n }\n}\n\nfunction extendObservable(target, properties, annotations, options) {\n {\n if (arguments.length > 4) {\n die(\"'extendObservable' expected 2-4 arguments\");\n }\n if (typeof target !== \"object\") {\n die(\"'extendObservable' expects an object as first argument\");\n }\n if (isObservableMap(target)) {\n die(\"'extendObservable' should not be used on maps, use map.merge instead\");\n }\n if (!isPlainObject(properties)) {\n die(\"'extendObservable' only accepts plain objects as second argument\");\n }\n if (isObservable(properties) || isObservable(annotations)) {\n die(\"Extending an object with another observable (object) is not supported\");\n }\n }\n // Pull descriptors first, so we don't have to deal with props added by administration ($mobx)\n var descriptors = getOwnPropertyDescriptors(properties);\n var adm = asObservableObject(target, options)[$mobx];\n startBatch();\n try {\n ownKeys(descriptors).forEach(function (key) {\n adm.extend_(key, descriptors[key],\n // must pass \"undefined\" for { key: undefined }\n !annotations ? true : key in annotations ? annotations[key] : true);\n });\n } finally {\n endBatch();\n }\n return target;\n}\n\nfunction getDependencyTree(thing, property) {\n return nodeToDependencyTree(getAtom(thing, property));\n}\nfunction nodeToDependencyTree(node) {\n var result = {\n name: node.name_\n };\n if (node.observing_ && node.observing_.length > 0) {\n result.dependencies = unique(node.observing_).map(nodeToDependencyTree);\n }\n return result;\n}\nfunction getObserverTree(thing, property) {\n return nodeToObserverTree(getAtom(thing, property));\n}\nfunction nodeToObserverTree(node) {\n var result = {\n name: node.name_\n };\n if (hasObservers(node)) {\n result.observers = Array.from(getObservers(node)).map(nodeToObserverTree);\n }\n return result;\n}\nfunction unique(list) {\n return Array.from(new Set(list));\n}\n\nvar generatorId = 0;\nfunction FlowCancellationError() {\n this.message = \"FLOW_CANCELLED\";\n}\nFlowCancellationError.prototype = /*#__PURE__*/Object.create(Error.prototype);\nfunction isFlowCancellationError(error) {\n return error instanceof FlowCancellationError;\n}\nvar flowAnnotation = /*#__PURE__*/createFlowAnnotation(\"flow\");\nvar flowBoundAnnotation = /*#__PURE__*/createFlowAnnotation(\"flow.bound\", {\n bound: true\n});\nvar flow = /*#__PURE__*/Object.assign(function flow(arg1, arg2) {\n // @flow\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, flowAnnotation);\n }\n // flow(fn)\n if ( arguments.length !== 1) {\n die(\"Flow expects single argument with generator function\");\n }\n var generator = arg1;\n var name = generator.name || \"\";\n // Implementation based on https://github.com/tj/co/blob/master/index.js\n var res = function res() {\n var ctx = this;\n var args = arguments;\n var runId = ++generatorId;\n var gen = action(name + \" - runid: \" + runId + \" - init\", generator).apply(ctx, args);\n var rejector;\n var pendingPromise = undefined;\n var promise = new Promise(function (resolve, reject) {\n var stepId = 0;\n rejector = reject;\n function onFulfilled(res) {\n pendingPromise = undefined;\n var ret;\n try {\n ret = action(name + \" - runid: \" + runId + \" - yield \" + stepId++, gen.next).call(gen, res);\n } catch (e) {\n return reject(e);\n }\n next(ret);\n }\n function onRejected(err) {\n pendingPromise = undefined;\n var ret;\n try {\n ret = action(name + \" - runid: \" + runId + \" - yield \" + stepId++, gen[\"throw\"]).call(gen, err);\n } catch (e) {\n return reject(e);\n }\n next(ret);\n }\n function next(ret) {\n if (isFunction(ret == null ? void 0 : ret.then)) {\n // an async iterator\n ret.then(next, reject);\n return;\n }\n if (ret.done) {\n return resolve(ret.value);\n }\n pendingPromise = Promise.resolve(ret.value);\n return pendingPromise.then(onFulfilled, onRejected);\n }\n onFulfilled(undefined); // kick off the process\n });\n\n promise.cancel = action(name + \" - runid: \" + runId + \" - cancel\", function () {\n try {\n if (pendingPromise) {\n cancelPromise(pendingPromise);\n }\n // Finally block can return (or yield) stuff..\n var _res = gen[\"return\"](undefined);\n // eat anything that promise would do, it's cancelled!\n var yieldedPromise = Promise.resolve(_res.value);\n yieldedPromise.then(noop, noop);\n cancelPromise(yieldedPromise); // maybe it can be cancelled :)\n // reject our original promise\n rejector(new FlowCancellationError());\n } catch (e) {\n rejector(e); // there could be a throwing finally block\n }\n });\n\n return promise;\n };\n res.isMobXFlow = true;\n return res;\n}, flowAnnotation);\nflow.bound = /*#__PURE__*/createDecoratorAnnotation(flowBoundAnnotation);\nfunction cancelPromise(promise) {\n if (isFunction(promise.cancel)) {\n promise.cancel();\n }\n}\nfunction flowResult(result) {\n return result; // just tricking TypeScript :)\n}\n\nfunction isFlow(fn) {\n return (fn == null ? void 0 : fn.isMobXFlow) === true;\n}\n\nfunction interceptReads(thing, propOrHandler, handler) {\n var target;\n if (isObservableMap(thing) || isObservableArray(thing) || isObservableValue(thing)) {\n target = getAdministration(thing);\n } else if (isObservableObject(thing)) {\n if ( !isStringish(propOrHandler)) {\n return die(\"InterceptReads can only be used with a specific property, not with an object in general\");\n }\n target = getAdministration(thing, propOrHandler);\n } else {\n return die(\"Expected observable map, object or array as first array\");\n }\n if ( target.dehancer !== undefined) {\n return die(\"An intercept reader was already established\");\n }\n target.dehancer = typeof propOrHandler === \"function\" ? propOrHandler : handler;\n return function () {\n target.dehancer = undefined;\n };\n}\n\nfunction intercept(thing, propOrHandler, handler) {\n if (isFunction(handler)) {\n return interceptProperty(thing, propOrHandler, handler);\n } else {\n return interceptInterceptable(thing, propOrHandler);\n }\n}\nfunction interceptInterceptable(thing, handler) {\n return getAdministration(thing).intercept_(handler);\n}\nfunction interceptProperty(thing, property, handler) {\n return getAdministration(thing, property).intercept_(handler);\n}\n\nfunction _isComputed(value, property) {\n if (property === undefined) {\n return isComputedValue(value);\n }\n if (isObservableObject(value) === false) {\n return false;\n }\n if (!value[$mobx].values_.has(property)) {\n return false;\n }\n var atom = getAtom(value, property);\n return isComputedValue(atom);\n}\nfunction isComputed(value) {\n if ( arguments.length > 1) {\n return die(\"isComputed expects only 1 argument. Use isComputedProp to inspect the observability of a property\");\n }\n return _isComputed(value);\n}\nfunction isComputedProp(value, propName) {\n if ( !isStringish(propName)) {\n return die(\"isComputed expected a property name as second argument\");\n }\n return _isComputed(value, propName);\n}\n\nfunction _isObservable(value, property) {\n if (!value) {\n return false;\n }\n if (property !== undefined) {\n if ( (isObservableMap(value) || isObservableArray(value))) {\n return die(\"isObservable(object, propertyName) is not supported for arrays and maps. Use map.has or array.length instead.\");\n }\n if (isObservableObject(value)) {\n return value[$mobx].values_.has(property);\n }\n return false;\n }\n // For first check, see #701\n return isObservableObject(value) || !!value[$mobx] || isAtom(value) || isReaction(value) || isComputedValue(value);\n}\nfunction isObservable(value) {\n if ( arguments.length !== 1) {\n die(\"isObservable expects only 1 argument. Use isObservableProp to inspect the observability of a property\");\n }\n return _isObservable(value);\n}\nfunction isObservableProp(value, propName) {\n if ( !isStringish(propName)) {\n return die(\"expected a property name as second argument\");\n }\n return _isObservable(value, propName);\n}\n\nfunction keys(obj) {\n if (isObservableObject(obj)) {\n return obj[$mobx].keys_();\n }\n if (isObservableMap(obj) || isObservableSet(obj)) {\n return Array.from(obj.keys());\n }\n if (isObservableArray(obj)) {\n return obj.map(function (_, index) {\n return index;\n });\n }\n die(5);\n}\nfunction values(obj) {\n if (isObservableObject(obj)) {\n return keys(obj).map(function (key) {\n return obj[key];\n });\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(function (key) {\n return obj.get(key);\n });\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.values());\n }\n if (isObservableArray(obj)) {\n return obj.slice();\n }\n die(6);\n}\nfunction entries(obj) {\n if (isObservableObject(obj)) {\n return keys(obj).map(function (key) {\n return [key, obj[key]];\n });\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(function (key) {\n return [key, obj.get(key)];\n });\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.entries());\n }\n if (isObservableArray(obj)) {\n return obj.map(function (key, index) {\n return [index, key];\n });\n }\n die(7);\n}\nfunction set(obj, key, value) {\n if (arguments.length === 2 && !isObservableSet(obj)) {\n startBatch();\n var _values = key;\n try {\n for (var _key in _values) {\n set(obj, _key, _values[_key]);\n }\n } finally {\n endBatch();\n }\n return;\n }\n if (isObservableObject(obj)) {\n obj[$mobx].set_(key, value);\n } else if (isObservableMap(obj)) {\n obj.set(key, value);\n } else if (isObservableSet(obj)) {\n obj.add(key);\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") {\n key = parseInt(key, 10);\n }\n if (key < 0) {\n die(\"Invalid index: '\" + key + \"'\");\n }\n startBatch();\n if (key >= obj.length) {\n obj.length = key + 1;\n }\n obj[key] = value;\n endBatch();\n } else {\n die(8);\n }\n}\nfunction remove(obj, key) {\n if (isObservableObject(obj)) {\n obj[$mobx].delete_(key);\n } else if (isObservableMap(obj)) {\n obj[\"delete\"](key);\n } else if (isObservableSet(obj)) {\n obj[\"delete\"](key);\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") {\n key = parseInt(key, 10);\n }\n obj.splice(key, 1);\n } else {\n die(9);\n }\n}\nfunction has(obj, key) {\n if (isObservableObject(obj)) {\n return obj[$mobx].has_(key);\n } else if (isObservableMap(obj)) {\n return obj.has(key);\n } else if (isObservableSet(obj)) {\n return obj.has(key);\n } else if (isObservableArray(obj)) {\n return key >= 0 && key < obj.length;\n }\n die(10);\n}\nfunction get(obj, key) {\n if (!has(obj, key)) {\n return undefined;\n }\n if (isObservableObject(obj)) {\n return obj[$mobx].get_(key);\n } else if (isObservableMap(obj)) {\n return obj.get(key);\n } else if (isObservableArray(obj)) {\n return obj[key];\n }\n die(11);\n}\nfunction apiDefineProperty(obj, key, descriptor) {\n if (isObservableObject(obj)) {\n return obj[$mobx].defineProperty_(key, descriptor);\n }\n die(39);\n}\nfunction apiOwnKeys(obj) {\n if (isObservableObject(obj)) {\n return obj[$mobx].ownKeys_();\n }\n die(38);\n}\n\nfunction observe(thing, propOrCb, cbOrFire, fireImmediately) {\n if (isFunction(cbOrFire)) {\n return observeObservableProperty(thing, propOrCb, cbOrFire, fireImmediately);\n } else {\n return observeObservable(thing, propOrCb, cbOrFire);\n }\n}\nfunction observeObservable(thing, listener, fireImmediately) {\n return getAdministration(thing).observe_(listener, fireImmediately);\n}\nfunction observeObservableProperty(thing, property, listener, fireImmediately) {\n return getAdministration(thing, property).observe_(listener, fireImmediately);\n}\n\nfunction cache(map, key, value) {\n map.set(key, value);\n return value;\n}\nfunction toJSHelper(source, __alreadySeen) {\n if (source == null || typeof source !== \"object\" || source instanceof Date || !isObservable(source)) {\n return source;\n }\n if (isObservableValue(source) || isComputedValue(source)) {\n return toJSHelper(source.get(), __alreadySeen);\n }\n if (__alreadySeen.has(source)) {\n return __alreadySeen.get(source);\n }\n if (isObservableArray(source)) {\n var res = cache(__alreadySeen, source, new Array(source.length));\n source.forEach(function (value, idx) {\n res[idx] = toJSHelper(value, __alreadySeen);\n });\n return res;\n }\n if (isObservableSet(source)) {\n var _res = cache(__alreadySeen, source, new Set());\n source.forEach(function (value) {\n _res.add(toJSHelper(value, __alreadySeen));\n });\n return _res;\n }\n if (isObservableMap(source)) {\n var _res2 = cache(__alreadySeen, source, new Map());\n source.forEach(function (value, key) {\n _res2.set(key, toJSHelper(value, __alreadySeen));\n });\n return _res2;\n } else {\n // must be observable object\n var _res3 = cache(__alreadySeen, source, {});\n apiOwnKeys(source).forEach(function (key) {\n if (objectPrototype.propertyIsEnumerable.call(source, key)) {\n _res3[key] = toJSHelper(source[key], __alreadySeen);\n }\n });\n return _res3;\n }\n}\n/**\r\n * Recursively converts an observable to it's non-observable native counterpart.\r\n * It does NOT recurse into non-observables, these are left as they are, even if they contain observables.\r\n * Computed and other non-enumerable properties are completely ignored.\r\n * Complex scenarios require custom solution, eg implementing `toJSON` or using `serializr` lib.\r\n */\nfunction toJS(source, options) {\n if ( options) {\n die(\"toJS no longer supports options\");\n }\n return toJSHelper(source, new Map());\n}\n\nfunction trace() {\n var enterBreakPoint = false;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof args[args.length - 1] === \"boolean\") {\n enterBreakPoint = args.pop();\n }\n var derivation = getAtomFromArgs(args);\n if (!derivation) {\n return die(\"'trace(break?)' can only be used inside a tracked computed value or a Reaction. Consider passing in the computed value or reaction explicitly\");\n }\n if (derivation.isTracing_ === TraceMode.NONE) {\n console.log(\"[mobx.trace] '\" + derivation.name_ + \"' tracing enabled\");\n }\n derivation.isTracing_ = enterBreakPoint ? TraceMode.BREAK : TraceMode.LOG;\n}\nfunction getAtomFromArgs(args) {\n switch (args.length) {\n case 0:\n return globalState.trackingDerivation;\n case 1:\n return getAtom(args[0]);\n case 2:\n return getAtom(args[0], args[1]);\n }\n}\n\n/**\r\n * During a transaction no views are updated until the end of the transaction.\r\n * The transaction will be run synchronously nonetheless.\r\n *\r\n * @param action a function that updates some reactive state\r\n * @returns any value that was returned by the 'action' parameter.\r\n */\nfunction transaction(action, thisArg) {\n if (thisArg === void 0) {\n thisArg = undefined;\n }\n startBatch();\n try {\n return action.apply(thisArg);\n } finally {\n endBatch();\n }\n}\n\nfunction when(predicate, arg1, arg2) {\n if (arguments.length === 1 || arg1 && typeof arg1 === \"object\") {\n return whenPromise(predicate, arg1);\n }\n return _when(predicate, arg1, arg2 || {});\n}\nfunction _when(predicate, effect, opts) {\n var timeoutHandle;\n if (typeof opts.timeout === \"number\") {\n var error = new Error(\"WHEN_TIMEOUT\");\n timeoutHandle = setTimeout(function () {\n if (!disposer[$mobx].isDisposed_) {\n disposer();\n if (opts.onError) {\n opts.onError(error);\n } else {\n throw error;\n }\n }\n }, opts.timeout);\n }\n opts.name = opts.name || \"When@\" + getNextId() ;\n var effectAction = createAction( opts.name + \"-effect\" , effect);\n // eslint-disable-next-line\n var disposer = autorun(function (r) {\n // predicate should not change state\n var cond = allowStateChanges(false, predicate);\n if (cond) {\n r.dispose();\n if (timeoutHandle) {\n clearTimeout(timeoutHandle);\n }\n effectAction();\n }\n }, opts);\n return disposer;\n}\nfunction whenPromise(predicate, opts) {\n var _opts$signal;\n if ( opts && opts.onError) {\n return die(\"the options 'onError' and 'promise' cannot be combined\");\n }\n if (opts != null && (_opts$signal = opts.signal) != null && _opts$signal.aborted) {\n return Object.assign(Promise.reject(new Error(\"WHEN_ABORTED\")), {\n cancel: function cancel() {\n return null;\n }\n });\n }\n var cancel;\n var abort;\n var res = new Promise(function (resolve, reject) {\n var _opts$signal2;\n var disposer = _when(predicate, resolve, _extends({}, opts, {\n onError: reject\n }));\n cancel = function cancel() {\n disposer();\n reject(new Error(\"WHEN_CANCELLED\"));\n };\n abort = function abort() {\n disposer();\n reject(new Error(\"WHEN_ABORTED\"));\n };\n opts == null ? void 0 : (_opts$signal2 = opts.signal) == null ? void 0 : _opts$signal2.addEventListener == null ? void 0 : _opts$signal2.addEventListener(\"abort\", abort);\n })[\"finally\"](function () {\n var _opts$signal3;\n return opts == null ? void 0 : (_opts$signal3 = opts.signal) == null ? void 0 : _opts$signal3.removeEventListener == null ? void 0 : _opts$signal3.removeEventListener(\"abort\", abort);\n });\n res.cancel = cancel;\n return res;\n}\n\nfunction getAdm(target) {\n return target[$mobx];\n}\n// Optimization: we don't need the intermediate objects and could have a completely custom administration for DynamicObjects,\n// and skip either the internal values map, or the base object with its property descriptors!\nvar objectProxyTraps = {\n has: function has(target, name) {\n if ( globalState.trackingDerivation) {\n warnAboutProxyRequirement(\"detect new properties using the 'in' operator. Use 'has' from 'mobx' instead.\");\n }\n return getAdm(target).has_(name);\n },\n get: function get(target, name) {\n return getAdm(target).get_(name);\n },\n set: function set(target, name, value) {\n var _getAdm$set_;\n if (!isStringish(name)) {\n return false;\n }\n if ( !getAdm(target).values_.has(name)) {\n warnAboutProxyRequirement(\"add a new observable property through direct assignment. Use 'set' from 'mobx' instead.\");\n }\n // null (intercepted) -> true (success)\n return (_getAdm$set_ = getAdm(target).set_(name, value, true)) != null ? _getAdm$set_ : true;\n },\n deleteProperty: function deleteProperty(target, name) {\n var _getAdm$delete_;\n {\n warnAboutProxyRequirement(\"delete properties from an observable object. Use 'remove' from 'mobx' instead.\");\n }\n if (!isStringish(name)) {\n return false;\n }\n // null (intercepted) -> true (success)\n return (_getAdm$delete_ = getAdm(target).delete_(name, true)) != null ? _getAdm$delete_ : true;\n },\n defineProperty: function defineProperty(target, name, descriptor) {\n var _getAdm$definePropert;\n {\n warnAboutProxyRequirement(\"define property on an observable object. Use 'defineProperty' from 'mobx' instead.\");\n }\n // null (intercepted) -> true (success)\n return (_getAdm$definePropert = getAdm(target).defineProperty_(name, descriptor)) != null ? _getAdm$definePropert : true;\n },\n ownKeys: function ownKeys(target) {\n if ( globalState.trackingDerivation) {\n warnAboutProxyRequirement(\"iterate keys to detect added / removed properties. Use 'keys' from 'mobx' instead.\");\n }\n return getAdm(target).ownKeys_();\n },\n preventExtensions: function preventExtensions(target) {\n die(13);\n }\n};\nfunction asDynamicObservableObject(target, options) {\n var _target$$mobx, _target$$mobx$proxy_;\n assertProxies();\n target = asObservableObject(target, options);\n return (_target$$mobx$proxy_ = (_target$$mobx = target[$mobx]).proxy_) != null ? _target$$mobx$proxy_ : _target$$mobx.proxy_ = new Proxy(target, objectProxyTraps);\n}\n\nfunction hasInterceptors(interceptable) {\n return interceptable.interceptors_ !== undefined && interceptable.interceptors_.length > 0;\n}\nfunction registerInterceptor(interceptable, handler) {\n var interceptors = interceptable.interceptors_ || (interceptable.interceptors_ = []);\n interceptors.push(handler);\n return once(function () {\n var idx = interceptors.indexOf(handler);\n if (idx !== -1) {\n interceptors.splice(idx, 1);\n }\n });\n}\nfunction interceptChange(interceptable, change) {\n var prevU = untrackedStart();\n try {\n // Interceptor can modify the array, copy it to avoid concurrent modification, see #1950\n var interceptors = [].concat(interceptable.interceptors_ || []);\n for (var i = 0, l = interceptors.length; i < l; i++) {\n change = interceptors[i](change);\n if (change && !change.type) {\n die(14);\n }\n if (!change) {\n break;\n }\n }\n return change;\n } finally {\n untrackedEnd(prevU);\n }\n}\n\nfunction hasListeners(listenable) {\n return listenable.changeListeners_ !== undefined && listenable.changeListeners_.length > 0;\n}\nfunction registerListener(listenable, handler) {\n var listeners = listenable.changeListeners_ || (listenable.changeListeners_ = []);\n listeners.push(handler);\n return once(function () {\n var idx = listeners.indexOf(handler);\n if (idx !== -1) {\n listeners.splice(idx, 1);\n }\n });\n}\nfunction notifyListeners(listenable, change) {\n var prevU = untrackedStart();\n var listeners = listenable.changeListeners_;\n if (!listeners) {\n return;\n }\n listeners = listeners.slice();\n for (var i = 0, l = listeners.length; i < l; i++) {\n listeners[i](change);\n }\n untrackedEnd(prevU);\n}\n\nfunction makeObservable(target, annotations, options) {\n var adm = asObservableObject(target, options)[$mobx];\n startBatch();\n try {\n var _annotations;\n if (\"development\" !== \"production\" && annotations && target[storedAnnotationsSymbol]) {\n die(\"makeObservable second arg must be nullish when using decorators. Mixing @decorator syntax with annotations is not supported.\");\n }\n // Default to decorators\n (_annotations = annotations) != null ? _annotations : annotations = collectStoredAnnotations(target);\n // Annotate\n ownKeys(annotations).forEach(function (key) {\n return adm.make_(key, annotations[key]);\n });\n } finally {\n endBatch();\n }\n return target;\n}\n// proto[keysSymbol] = new Set()\nvar keysSymbol = /*#__PURE__*/Symbol(\"mobx-keys\");\nfunction makeAutoObservable(target, overrides, options) {\n {\n if (!isPlainObject(target) && !isPlainObject(Object.getPrototypeOf(target))) {\n die(\"'makeAutoObservable' can only be used for classes that don't have a superclass\");\n }\n if (isObservableObject(target)) {\n die(\"makeAutoObservable can only be used on objects not already made observable\");\n }\n }\n // Optimization: avoid visiting protos\n // Assumes that annotation.make_/.extend_ works the same for plain objects\n if (isPlainObject(target)) {\n return extendObservable(target, target, overrides, options);\n }\n var adm = asObservableObject(target, options)[$mobx];\n // Optimization: cache keys on proto\n // Assumes makeAutoObservable can be called only once per object and can't be used in subclass\n if (!target[keysSymbol]) {\n var proto = Object.getPrototypeOf(target);\n var keys = new Set([].concat(ownKeys(target), ownKeys(proto)));\n keys[\"delete\"](\"constructor\");\n keys[\"delete\"]($mobx);\n addHiddenProp(proto, keysSymbol, keys);\n }\n startBatch();\n try {\n target[keysSymbol].forEach(function (key) {\n return adm.make_(key,\n // must pass \"undefined\" for { key: undefined }\n !overrides ? true : key in overrides ? overrides[key] : true);\n });\n } finally {\n endBatch();\n }\n return target;\n}\n\nvar SPLICE = \"splice\";\nvar UPDATE = \"update\";\nvar MAX_SPLICE_SIZE = 10000; // See e.g. https://github.com/mobxjs/mobx/issues/859\nvar arrayTraps = {\n get: function get(target, name) {\n var adm = target[$mobx];\n if (name === $mobx) {\n return adm;\n }\n if (name === \"length\") {\n return adm.getArrayLength_();\n }\n if (typeof name === \"string\" && !isNaN(name)) {\n return adm.get_(parseInt(name));\n }\n if (hasProp(arrayExtensions, name)) {\n return arrayExtensions[name];\n }\n return target[name];\n },\n set: function set(target, name, value) {\n var adm = target[$mobx];\n if (name === \"length\") {\n adm.setArrayLength_(value);\n }\n if (typeof name === \"symbol\" || isNaN(name)) {\n target[name] = value;\n } else {\n // numeric string\n adm.set_(parseInt(name), value);\n }\n return true;\n },\n preventExtensions: function preventExtensions() {\n die(15);\n }\n};\nvar ObservableArrayAdministration = /*#__PURE__*/function () {\n // this is the prop that gets proxied, so can't replace it!\n\n function ObservableArrayAdministration(name, enhancer, owned_, legacyMode_) {\n if (name === void 0) {\n name = \"ObservableArray@\" + getNextId() ;\n }\n this.owned_ = void 0;\n this.legacyMode_ = void 0;\n this.atom_ = void 0;\n this.values_ = [];\n this.interceptors_ = void 0;\n this.changeListeners_ = void 0;\n this.enhancer_ = void 0;\n this.dehancer = void 0;\n this.proxy_ = void 0;\n this.lastKnownLength_ = 0;\n this.owned_ = owned_;\n this.legacyMode_ = legacyMode_;\n this.atom_ = new Atom(name);\n this.enhancer_ = function (newV, oldV) {\n return enhancer(newV, oldV, name + \"[..]\" );\n };\n }\n var _proto = ObservableArrayAdministration.prototype;\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.dehanceValues_ = function dehanceValues_(values) {\n if (this.dehancer !== undefined && values.length > 0) {\n return values.map(this.dehancer);\n }\n return values;\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if (fireImmediately === void 0) {\n fireImmediately = false;\n }\n if (fireImmediately) {\n listener({\n observableKind: \"array\",\n object: this.proxy_,\n debugObjectName: this.atom_.name_,\n type: \"splice\",\n index: 0,\n added: this.values_.slice(),\n addedCount: this.values_.length,\n removed: [],\n removedCount: 0\n });\n }\n return registerListener(this, listener);\n };\n _proto.getArrayLength_ = function getArrayLength_() {\n this.atom_.reportObserved();\n return this.values_.length;\n };\n _proto.setArrayLength_ = function setArrayLength_(newLength) {\n if (typeof newLength !== \"number\" || isNaN(newLength) || newLength < 0) {\n die(\"Out of range: \" + newLength);\n }\n var currentLength = this.values_.length;\n if (newLength === currentLength) {\n return;\n } else if (newLength > currentLength) {\n var newItems = new Array(newLength - currentLength);\n for (var i = 0; i < newLength - currentLength; i++) {\n newItems[i] = undefined;\n } // No Array.fill everywhere...\n this.spliceWithArray_(currentLength, 0, newItems);\n } else {\n this.spliceWithArray_(newLength, currentLength - newLength);\n }\n };\n _proto.updateArrayLength_ = function updateArrayLength_(oldLength, delta) {\n if (oldLength !== this.lastKnownLength_) {\n die(16);\n }\n this.lastKnownLength_ += delta;\n if (this.legacyMode_ && delta > 0) {\n reserveArrayBuffer(oldLength + delta + 1);\n }\n };\n _proto.spliceWithArray_ = function spliceWithArray_(index, deleteCount, newItems) {\n var _this = this;\n checkIfStateModificationsAreAllowed(this.atom_);\n var length = this.values_.length;\n if (index === undefined) {\n index = 0;\n } else if (index > length) {\n index = length;\n } else if (index < 0) {\n index = Math.max(0, length + index);\n }\n if (arguments.length === 1) {\n deleteCount = length - index;\n } else if (deleteCount === undefined || deleteCount === null) {\n deleteCount = 0;\n } else {\n deleteCount = Math.max(0, Math.min(deleteCount, length - index));\n }\n if (newItems === undefined) {\n newItems = EMPTY_ARRAY;\n }\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_,\n type: SPLICE,\n index: index,\n removedCount: deleteCount,\n added: newItems\n });\n if (!change) {\n return EMPTY_ARRAY;\n }\n deleteCount = change.removedCount;\n newItems = change.added;\n }\n newItems = newItems.length === 0 ? newItems : newItems.map(function (v) {\n return _this.enhancer_(v, undefined);\n });\n if (this.legacyMode_ || \"development\" !== \"production\") {\n var lengthDelta = newItems.length - deleteCount;\n this.updateArrayLength_(length, lengthDelta); // checks if internal array wasn't modified\n }\n\n var res = this.spliceItemsIntoValues_(index, deleteCount, newItems);\n if (deleteCount !== 0 || newItems.length !== 0) {\n this.notifyArraySplice_(index, newItems, res);\n }\n return this.dehanceValues_(res);\n };\n _proto.spliceItemsIntoValues_ = function spliceItemsIntoValues_(index, deleteCount, newItems) {\n if (newItems.length < MAX_SPLICE_SIZE) {\n var _this$values_;\n return (_this$values_ = this.values_).splice.apply(_this$values_, [index, deleteCount].concat(newItems));\n } else {\n // The items removed by the splice\n var res = this.values_.slice(index, index + deleteCount);\n // The items that that should remain at the end of the array\n var oldItems = this.values_.slice(index + deleteCount);\n // New length is the previous length + addition count - deletion count\n this.values_.length += newItems.length - deleteCount;\n for (var i = 0; i < newItems.length; i++) {\n this.values_[index + i] = newItems[i];\n }\n for (var _i = 0; _i < oldItems.length; _i++) {\n this.values_[index + newItems.length + _i] = oldItems[_i];\n }\n return res;\n }\n };\n _proto.notifyArrayChildUpdate_ = function notifyArrayChildUpdate_(index, newValue, oldValue) {\n var notifySpy = !this.owned_ && isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"array\",\n object: this.proxy_,\n type: UPDATE,\n debugObjectName: this.atom_.name_,\n index: index,\n newValue: newValue,\n oldValue: oldValue\n } : null;\n // The reason why this is on right hand side here (and not above), is this way the uglifier will drop it, but it won't\n // cause any runtime overhead in development mode without NODE_ENV set, unless spying is enabled\n if ( notifySpy) {\n spyReportStart(change);\n }\n this.atom_.reportChanged();\n if (notify) {\n notifyListeners(this, change);\n }\n if ( notifySpy) {\n spyReportEnd();\n }\n };\n _proto.notifyArraySplice_ = function notifyArraySplice_(index, added, removed) {\n var notifySpy = !this.owned_ && isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"array\",\n object: this.proxy_,\n debugObjectName: this.atom_.name_,\n type: SPLICE,\n index: index,\n removed: removed,\n added: added,\n removedCount: removed.length,\n addedCount: added.length\n } : null;\n if ( notifySpy) {\n spyReportStart(change);\n }\n this.atom_.reportChanged();\n // conform: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/observe\n if (notify) {\n notifyListeners(this, change);\n }\n if ( notifySpy) {\n spyReportEnd();\n }\n };\n _proto.get_ = function get_(index) {\n if (this.legacyMode_ && index >= this.values_.length) {\n console.warn( \"[mobx.array] Attempt to read an array index (\" + index + \") that is out of bounds (\" + this.values_.length + \"). Please check length first. Out of bound indices will not be tracked by MobX\" );\n return undefined;\n }\n this.atom_.reportObserved();\n return this.dehanceValue_(this.values_[index]);\n };\n _proto.set_ = function set_(index, newValue) {\n var values = this.values_;\n if (this.legacyMode_ && index > values.length) {\n // out of bounds\n die(17, index, values.length);\n }\n if (index < values.length) {\n // update at index in range\n checkIfStateModificationsAreAllowed(this.atom_);\n var oldValue = values[index];\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: UPDATE,\n object: this.proxy_,\n index: index,\n newValue: newValue\n });\n if (!change) {\n return;\n }\n newValue = change.newValue;\n }\n newValue = this.enhancer_(newValue, oldValue);\n var changed = newValue !== oldValue;\n if (changed) {\n values[index] = newValue;\n this.notifyArrayChildUpdate_(index, newValue, oldValue);\n }\n } else {\n // For out of bound index, we don't create an actual sparse array,\n // but rather fill the holes with undefined (same as setArrayLength_).\n // This could be considered a bug.\n var newItems = new Array(index + 1 - values.length);\n for (var i = 0; i < newItems.length - 1; i++) {\n newItems[i] = undefined;\n } // No Array.fill everywhere...\n newItems[newItems.length - 1] = newValue;\n this.spliceWithArray_(values.length, 0, newItems);\n }\n };\n return ObservableArrayAdministration;\n}();\nfunction createObservableArray(initialValues, enhancer, name, owned) {\n if (name === void 0) {\n name = \"ObservableArray@\" + getNextId() ;\n }\n if (owned === void 0) {\n owned = false;\n }\n assertProxies();\n var adm = new ObservableArrayAdministration(name, enhancer, owned, false);\n addHiddenFinalProp(adm.values_, $mobx, adm);\n var proxy = new Proxy(adm.values_, arrayTraps);\n adm.proxy_ = proxy;\n if (initialValues && initialValues.length) {\n var prev = allowStateChangesStart(true);\n adm.spliceWithArray_(0, 0, initialValues);\n allowStateChangesEnd(prev);\n }\n return proxy;\n}\n// eslint-disable-next-line\nvar arrayExtensions = {\n clear: function clear() {\n return this.splice(0);\n },\n replace: function replace(newItems) {\n var adm = this[$mobx];\n return adm.spliceWithArray_(0, adm.values_.length, newItems);\n },\n // Used by JSON.stringify\n toJSON: function toJSON() {\n return this.slice();\n },\n /*\r\n * functions that do alter the internal structure of the array, (based on lib.es6.d.ts)\r\n * since these functions alter the inner structure of the array, the have side effects.\r\n * Because the have side effects, they should not be used in computed function,\r\n * and for that reason the do not call dependencyState.notifyObserved\r\n */\n splice: function splice(index, deleteCount) {\n for (var _len = arguments.length, newItems = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n newItems[_key - 2] = arguments[_key];\n }\n var adm = this[$mobx];\n switch (arguments.length) {\n case 0:\n return [];\n case 1:\n return adm.spliceWithArray_(index);\n case 2:\n return adm.spliceWithArray_(index, deleteCount);\n }\n return adm.spliceWithArray_(index, deleteCount, newItems);\n },\n spliceWithArray: function spliceWithArray(index, deleteCount, newItems) {\n return this[$mobx].spliceWithArray_(index, deleteCount, newItems);\n },\n push: function push() {\n var adm = this[$mobx];\n for (var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n adm.spliceWithArray_(adm.values_.length, 0, items);\n return adm.values_.length;\n },\n pop: function pop() {\n return this.splice(Math.max(this[$mobx].values_.length - 1, 0), 1)[0];\n },\n shift: function shift() {\n return this.splice(0, 1)[0];\n },\n unshift: function unshift() {\n var adm = this[$mobx];\n for (var _len3 = arguments.length, items = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n items[_key3] = arguments[_key3];\n }\n adm.spliceWithArray_(0, 0, items);\n return adm.values_.length;\n },\n reverse: function reverse() {\n // reverse by default mutates in place before returning the result\n // which makes it both a 'derivation' and a 'mutation'.\n if (globalState.trackingDerivation) {\n die(37, \"reverse\");\n }\n this.replace(this.slice().reverse());\n return this;\n },\n sort: function sort() {\n // sort by default mutates in place before returning the result\n // which goes against all good practices. Let's not change the array in place!\n if (globalState.trackingDerivation) {\n die(37, \"sort\");\n }\n var copy = this.slice();\n copy.sort.apply(copy, arguments);\n this.replace(copy);\n return this;\n },\n remove: function remove(value) {\n var adm = this[$mobx];\n var idx = adm.dehanceValues_(adm.values_).indexOf(value);\n if (idx > -1) {\n this.splice(idx, 1);\n return true;\n }\n return false;\n }\n};\n/**\r\n * Wrap function from prototype\r\n * Without this, everything works as well, but this works\r\n * faster as everything works on unproxied values\r\n */\naddArrayExtension(\"concat\", simpleFunc);\naddArrayExtension(\"flat\", simpleFunc);\naddArrayExtension(\"includes\", simpleFunc);\naddArrayExtension(\"indexOf\", simpleFunc);\naddArrayExtension(\"join\", simpleFunc);\naddArrayExtension(\"lastIndexOf\", simpleFunc);\naddArrayExtension(\"slice\", simpleFunc);\naddArrayExtension(\"toString\", simpleFunc);\naddArrayExtension(\"toLocaleString\", simpleFunc);\n// map\naddArrayExtension(\"every\", mapLikeFunc);\naddArrayExtension(\"filter\", mapLikeFunc);\naddArrayExtension(\"find\", mapLikeFunc);\naddArrayExtension(\"findIndex\", mapLikeFunc);\naddArrayExtension(\"flatMap\", mapLikeFunc);\naddArrayExtension(\"forEach\", mapLikeFunc);\naddArrayExtension(\"map\", mapLikeFunc);\naddArrayExtension(\"some\", mapLikeFunc);\n// reduce\naddArrayExtension(\"reduce\", reduceLikeFunc);\naddArrayExtension(\"reduceRight\", reduceLikeFunc);\nfunction addArrayExtension(funcName, funcFactory) {\n if (typeof Array.prototype[funcName] === \"function\") {\n arrayExtensions[funcName] = funcFactory(funcName);\n }\n}\n// Report and delegate to dehanced array\nfunction simpleFunc(funcName) {\n return function () {\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_);\n return dehancedValues[funcName].apply(dehancedValues, arguments);\n };\n}\n// Make sure callbacks recieve correct array arg #2326\nfunction mapLikeFunc(funcName) {\n return function (callback, thisArg) {\n var _this2 = this;\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_);\n return dehancedValues[funcName](function (element, index) {\n return callback.call(thisArg, element, index, _this2);\n });\n };\n}\n// Make sure callbacks recieve correct array arg #2326\nfunction reduceLikeFunc(funcName) {\n return function () {\n var _this3 = this;\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_);\n // #2432 - reduce behavior depends on arguments.length\n var callback = arguments[0];\n arguments[0] = function (accumulator, currentValue, index) {\n return callback(accumulator, currentValue, index, _this3);\n };\n return dehancedValues[funcName].apply(dehancedValues, arguments);\n };\n}\nvar isObservableArrayAdministration = /*#__PURE__*/createInstanceofPredicate(\"ObservableArrayAdministration\", ObservableArrayAdministration);\nfunction isObservableArray(thing) {\n return isObject(thing) && isObservableArrayAdministration(thing[$mobx]);\n}\n\nvar _Symbol$iterator, _Symbol$toStringTag;\nvar ObservableMapMarker = {};\nvar ADD = \"add\";\nvar DELETE = \"delete\";\n// just extend Map? See also https://gist.github.com/nestharus/13b4d74f2ef4a2f4357dbd3fc23c1e54\n// But: https://github.com/mobxjs/mobx/issues/1556\n_Symbol$iterator = Symbol.iterator;\n_Symbol$toStringTag = Symbol.toStringTag;\nvar ObservableMap = /*#__PURE__*/function () {\n // hasMap, not hashMap >-).\n\n function ObservableMap(initialData, enhancer_, name_) {\n var _this = this;\n if (enhancer_ === void 0) {\n enhancer_ = deepEnhancer;\n }\n if (name_ === void 0) {\n name_ = \"ObservableMap@\" + getNextId() ;\n }\n this.enhancer_ = void 0;\n this.name_ = void 0;\n this[$mobx] = ObservableMapMarker;\n this.data_ = void 0;\n this.hasMap_ = void 0;\n this.keysAtom_ = void 0;\n this.interceptors_ = void 0;\n this.changeListeners_ = void 0;\n this.dehancer = void 0;\n this.enhancer_ = enhancer_;\n this.name_ = name_;\n if (!isFunction(Map)) {\n die(18);\n }\n this.keysAtom_ = createAtom( this.name_ + \".keys()\" );\n this.data_ = new Map();\n this.hasMap_ = new Map();\n allowStateChanges(true, function () {\n _this.merge(initialData);\n });\n }\n var _proto = ObservableMap.prototype;\n _proto.has_ = function has_(key) {\n return this.data_.has(key);\n };\n _proto.has = function has(key) {\n var _this2 = this;\n if (!globalState.trackingDerivation) {\n return this.has_(key);\n }\n var entry = this.hasMap_.get(key);\n if (!entry) {\n var newEntry = entry = new ObservableValue(this.has_(key), referenceEnhancer, this.name_ + \".\" + stringifyKey(key) + \"?\" , false);\n this.hasMap_.set(key, newEntry);\n onBecomeUnobserved(newEntry, function () {\n return _this2.hasMap_[\"delete\"](key);\n });\n }\n return entry.get();\n };\n _proto.set = function set(key, value) {\n var hasKey = this.has_(key);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: hasKey ? UPDATE : ADD,\n object: this,\n newValue: value,\n name: key\n });\n if (!change) {\n return this;\n }\n value = change.newValue;\n }\n if (hasKey) {\n this.updateValue_(key, value);\n } else {\n this.addValue_(key, value);\n }\n return this;\n };\n _proto[\"delete\"] = function _delete(key) {\n var _this3 = this;\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: DELETE,\n object: this,\n name: key\n });\n if (!change) {\n return false;\n }\n }\n if (this.has_(key)) {\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var _change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: this.data_.get(key).value_,\n name: key\n } : null;\n if ( notifySpy) {\n spyReportStart(_change);\n } // TODO fix type\n transaction(function () {\n var _this3$hasMap_$get;\n _this3.keysAtom_.reportChanged();\n (_this3$hasMap_$get = _this3.hasMap_.get(key)) == null ? void 0 : _this3$hasMap_$get.setNewValue_(false);\n var observable = _this3.data_.get(key);\n observable.setNewValue_(undefined);\n _this3.data_[\"delete\"](key);\n });\n if (notify) {\n notifyListeners(this, _change);\n }\n if ( notifySpy) {\n spyReportEnd();\n }\n return true;\n }\n return false;\n };\n _proto.updateValue_ = function updateValue_(key, newValue) {\n var observable = this.data_.get(key);\n newValue = observable.prepareNewValue_(newValue);\n if (newValue !== globalState.UNCHANGED) {\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: UPDATE,\n object: this,\n oldValue: observable.value_,\n name: key,\n newValue: newValue\n } : null;\n if ( notifySpy) {\n spyReportStart(change);\n } // TODO fix type\n observable.setNewValue_(newValue);\n if (notify) {\n notifyListeners(this, change);\n }\n if ( notifySpy) {\n spyReportEnd();\n }\n }\n };\n _proto.addValue_ = function addValue_(key, newValue) {\n var _this4 = this;\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n transaction(function () {\n var _this4$hasMap_$get;\n var observable = new ObservableValue(newValue, _this4.enhancer_, _this4.name_ + \".\" + stringifyKey(key) , false);\n _this4.data_.set(key, observable);\n newValue = observable.value_; // value might have been changed\n (_this4$hasMap_$get = _this4.hasMap_.get(key)) == null ? void 0 : _this4$hasMap_$get.setNewValue_(true);\n _this4.keysAtom_.reportChanged();\n });\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n name: key,\n newValue: newValue\n } : null;\n if ( notifySpy) {\n spyReportStart(change);\n } // TODO fix type\n if (notify) {\n notifyListeners(this, change);\n }\n if ( notifySpy) {\n spyReportEnd();\n }\n };\n _proto.get = function get(key) {\n if (this.has(key)) {\n return this.dehanceValue_(this.data_.get(key).get());\n }\n return this.dehanceValue_(undefined);\n };\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.keys = function keys() {\n this.keysAtom_.reportObserved();\n return this.data_.keys();\n };\n _proto.values = function values() {\n var self = this;\n var keys = this.keys();\n return makeIterable({\n next: function next() {\n var _keys$next = keys.next(),\n done = _keys$next.done,\n value = _keys$next.value;\n return {\n done: done,\n value: done ? undefined : self.get(value)\n };\n }\n });\n };\n _proto.entries = function entries() {\n var self = this;\n var keys = this.keys();\n return makeIterable({\n next: function next() {\n var _keys$next2 = keys.next(),\n done = _keys$next2.done,\n value = _keys$next2.value;\n return {\n done: done,\n value: done ? undefined : [value, self.get(value)]\n };\n }\n });\n };\n _proto[_Symbol$iterator] = function () {\n return this.entries();\n };\n _proto.forEach = function forEach(callback, thisArg) {\n for (var _iterator = _createForOfIteratorHelperLoose(this), _step; !(_step = _iterator()).done;) {\n var _step$value = _step.value,\n key = _step$value[0],\n value = _step$value[1];\n callback.call(thisArg, value, key, this);\n }\n }\n /** Merge another object into this object, returns this. */;\n _proto.merge = function merge(other) {\n var _this5 = this;\n if (isObservableMap(other)) {\n other = new Map(other);\n }\n transaction(function () {\n if (isPlainObject(other)) {\n getPlainObjectKeys(other).forEach(function (key) {\n return _this5.set(key, other[key]);\n });\n } else if (Array.isArray(other)) {\n other.forEach(function (_ref) {\n var key = _ref[0],\n value = _ref[1];\n return _this5.set(key, value);\n });\n } else if (isES6Map(other)) {\n if (other.constructor !== Map) {\n die(19, other);\n }\n other.forEach(function (value, key) {\n return _this5.set(key, value);\n });\n } else if (other !== null && other !== undefined) {\n die(20, other);\n }\n });\n return this;\n };\n _proto.clear = function clear() {\n var _this6 = this;\n transaction(function () {\n untracked(function () {\n for (var _iterator2 = _createForOfIteratorHelperLoose(_this6.keys()), _step2; !(_step2 = _iterator2()).done;) {\n var key = _step2.value;\n _this6[\"delete\"](key);\n }\n });\n });\n };\n _proto.replace = function replace(values) {\n var _this7 = this;\n // Implementation requirements:\n // - respect ordering of replacement map\n // - allow interceptors to run and potentially prevent individual operations\n // - don't recreate observables that already exist in original map (so we don't destroy existing subscriptions)\n // - don't _keysAtom.reportChanged if the keys of resulting map are indentical (order matters!)\n // - note that result map may differ from replacement map due to the interceptors\n transaction(function () {\n // Convert to map so we can do quick key lookups\n var replacementMap = convertToMap(values);\n var orderedData = new Map();\n // Used for optimization\n var keysReportChangedCalled = false;\n // Delete keys that don't exist in replacement map\n // if the key deletion is prevented by interceptor\n // add entry at the beginning of the result map\n for (var _iterator3 = _createForOfIteratorHelperLoose(_this7.data_.keys()), _step3; !(_step3 = _iterator3()).done;) {\n var key = _step3.value;\n // Concurrently iterating/deleting keys\n // iterator should handle this correctly\n if (!replacementMap.has(key)) {\n var deleted = _this7[\"delete\"](key);\n // Was the key removed?\n if (deleted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true;\n } else {\n // Delete prevented by interceptor\n var value = _this7.data_.get(key);\n orderedData.set(key, value);\n }\n }\n }\n // Merge entries\n for (var _iterator4 = _createForOfIteratorHelperLoose(replacementMap.entries()), _step4; !(_step4 = _iterator4()).done;) {\n var _step4$value = _step4.value,\n _key = _step4$value[0],\n _value = _step4$value[1];\n // We will want to know whether a new key is added\n var keyExisted = _this7.data_.has(_key);\n // Add or update value\n _this7.set(_key, _value);\n // The addition could have been prevent by interceptor\n if (_this7.data_.has(_key)) {\n // The update could have been prevented by interceptor\n // and also we want to preserve existing values\n // so use value from _data map (instead of replacement map)\n var _value2 = _this7.data_.get(_key);\n orderedData.set(_key, _value2);\n // Was a new key added?\n if (!keyExisted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true;\n }\n }\n }\n // Check for possible key order change\n if (!keysReportChangedCalled) {\n if (_this7.data_.size !== orderedData.size) {\n // If size differs, keys are definitely modified\n _this7.keysAtom_.reportChanged();\n } else {\n var iter1 = _this7.data_.keys();\n var iter2 = orderedData.keys();\n var next1 = iter1.next();\n var next2 = iter2.next();\n while (!next1.done) {\n if (next1.value !== next2.value) {\n _this7.keysAtom_.reportChanged();\n break;\n }\n next1 = iter1.next();\n next2 = iter2.next();\n }\n }\n }\n // Use correctly ordered map\n _this7.data_ = orderedData;\n });\n return this;\n };\n _proto.toString = function toString() {\n return \"[object ObservableMap]\";\n };\n _proto.toJSON = function toJSON() {\n return Array.from(this);\n };\n /**\r\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\r\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\r\n * for callback details\r\n */\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if ( fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with maps.\");\n }\n return registerListener(this, listener);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _createClass(ObservableMap, [{\n key: \"size\",\n get: function get() {\n this.keysAtom_.reportObserved();\n return this.data_.size;\n }\n }, {\n key: _Symbol$toStringTag,\n get: function get() {\n return \"Map\";\n }\n }]);\n return ObservableMap;\n}();\n// eslint-disable-next-line\nvar isObservableMap = /*#__PURE__*/createInstanceofPredicate(\"ObservableMap\", ObservableMap);\nfunction convertToMap(dataStructure) {\n if (isES6Map(dataStructure) || isObservableMap(dataStructure)) {\n return dataStructure;\n } else if (Array.isArray(dataStructure)) {\n return new Map(dataStructure);\n } else if (isPlainObject(dataStructure)) {\n var map = new Map();\n for (var key in dataStructure) {\n map.set(key, dataStructure[key]);\n }\n return map;\n } else {\n return die(21, dataStructure);\n }\n}\n\nvar _Symbol$iterator$1, _Symbol$toStringTag$1;\nvar ObservableSetMarker = {};\n_Symbol$iterator$1 = Symbol.iterator;\n_Symbol$toStringTag$1 = Symbol.toStringTag;\nvar ObservableSet = /*#__PURE__*/function () {\n function ObservableSet(initialData, enhancer, name_) {\n if (enhancer === void 0) {\n enhancer = deepEnhancer;\n }\n if (name_ === void 0) {\n name_ = \"ObservableSet@\" + getNextId() ;\n }\n this.name_ = void 0;\n this[$mobx] = ObservableSetMarker;\n this.data_ = new Set();\n this.atom_ = void 0;\n this.changeListeners_ = void 0;\n this.interceptors_ = void 0;\n this.dehancer = void 0;\n this.enhancer_ = void 0;\n this.name_ = name_;\n if (!isFunction(Set)) {\n die(22);\n }\n this.atom_ = createAtom(this.name_);\n this.enhancer_ = function (newV, oldV) {\n return enhancer(newV, oldV, name_);\n };\n if (initialData) {\n this.replace(initialData);\n }\n }\n var _proto = ObservableSet.prototype;\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.clear = function clear() {\n var _this = this;\n transaction(function () {\n untracked(function () {\n for (var _iterator = _createForOfIteratorHelperLoose(_this.data_.values()), _step; !(_step = _iterator()).done;) {\n var value = _step.value;\n _this[\"delete\"](value);\n }\n });\n });\n };\n _proto.forEach = function forEach(callbackFn, thisArg) {\n for (var _iterator2 = _createForOfIteratorHelperLoose(this), _step2; !(_step2 = _iterator2()).done;) {\n var value = _step2.value;\n callbackFn.call(thisArg, value, value, this);\n }\n };\n _proto.add = function add(value) {\n var _this2 = this;\n checkIfStateModificationsAreAllowed(this.atom_);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: ADD,\n object: this,\n newValue: value\n });\n if (!change) {\n return this;\n }\n // ideally, value = change.value would be done here, so that values can be\n // changed by interceptor. Same applies for other Set and Map api's.\n }\n\n if (!this.has(value)) {\n transaction(function () {\n _this2.data_.add(_this2.enhancer_(value, undefined));\n _this2.atom_.reportChanged();\n });\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var _change = notify || notifySpy ? {\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n newValue: value\n } : null;\n if (notifySpy && \"development\" !== \"production\") {\n spyReportStart(_change);\n }\n if (notify) {\n notifyListeners(this, _change);\n }\n if (notifySpy && \"development\" !== \"production\") {\n spyReportEnd();\n }\n }\n return this;\n };\n _proto[\"delete\"] = function _delete(value) {\n var _this3 = this;\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: DELETE,\n object: this,\n oldValue: value\n });\n if (!change) {\n return false;\n }\n }\n if (this.has(value)) {\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var _change2 = notify || notifySpy ? {\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: value\n } : null;\n if (notifySpy && \"development\" !== \"production\") {\n spyReportStart(_change2);\n }\n transaction(function () {\n _this3.atom_.reportChanged();\n _this3.data_[\"delete\"](value);\n });\n if (notify) {\n notifyListeners(this, _change2);\n }\n if (notifySpy && \"development\" !== \"production\") {\n spyReportEnd();\n }\n return true;\n }\n return false;\n };\n _proto.has = function has(value) {\n this.atom_.reportObserved();\n return this.data_.has(this.dehanceValue_(value));\n };\n _proto.entries = function entries() {\n var nextIndex = 0;\n var keys = Array.from(this.keys());\n var values = Array.from(this.values());\n return makeIterable({\n next: function next() {\n var index = nextIndex;\n nextIndex += 1;\n return index < values.length ? {\n value: [keys[index], values[index]],\n done: false\n } : {\n done: true\n };\n }\n });\n };\n _proto.keys = function keys() {\n return this.values();\n };\n _proto.values = function values() {\n this.atom_.reportObserved();\n var self = this;\n var nextIndex = 0;\n var observableValues = Array.from(this.data_.values());\n return makeIterable({\n next: function next() {\n return nextIndex < observableValues.length ? {\n value: self.dehanceValue_(observableValues[nextIndex++]),\n done: false\n } : {\n done: true\n };\n }\n });\n };\n _proto.replace = function replace(other) {\n var _this4 = this;\n if (isObservableSet(other)) {\n other = new Set(other);\n }\n transaction(function () {\n if (Array.isArray(other)) {\n _this4.clear();\n other.forEach(function (value) {\n return _this4.add(value);\n });\n } else if (isES6Set(other)) {\n _this4.clear();\n other.forEach(function (value) {\n return _this4.add(value);\n });\n } else if (other !== null && other !== undefined) {\n die(\"Cannot initialize set from \" + other);\n }\n });\n return this;\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n // ... 'fireImmediately' could also be true?\n if ( fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with sets.\");\n }\n return registerListener(this, listener);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.toJSON = function toJSON() {\n return Array.from(this);\n };\n _proto.toString = function toString() {\n return \"[object ObservableSet]\";\n };\n _proto[_Symbol$iterator$1] = function () {\n return this.values();\n };\n _createClass(ObservableSet, [{\n key: \"size\",\n get: function get() {\n this.atom_.reportObserved();\n return this.data_.size;\n }\n }, {\n key: _Symbol$toStringTag$1,\n get: function get() {\n return \"Set\";\n }\n }]);\n return ObservableSet;\n}();\n// eslint-disable-next-line\nvar isObservableSet = /*#__PURE__*/createInstanceofPredicate(\"ObservableSet\", ObservableSet);\n\nvar descriptorCache = /*#__PURE__*/Object.create(null);\nvar REMOVE = \"remove\";\nvar ObservableObjectAdministration = /*#__PURE__*/function () {\n function ObservableObjectAdministration(target_, values_, name_,\n // Used anytime annotation is not explicitely provided\n defaultAnnotation_) {\n if (values_ === void 0) {\n values_ = new Map();\n }\n if (defaultAnnotation_ === void 0) {\n defaultAnnotation_ = autoAnnotation;\n }\n this.target_ = void 0;\n this.values_ = void 0;\n this.name_ = void 0;\n this.defaultAnnotation_ = void 0;\n this.keysAtom_ = void 0;\n this.changeListeners_ = void 0;\n this.interceptors_ = void 0;\n this.proxy_ = void 0;\n this.isPlainObject_ = void 0;\n this.appliedAnnotations_ = void 0;\n this.pendingKeys_ = void 0;\n this.target_ = target_;\n this.values_ = values_;\n this.name_ = name_;\n this.defaultAnnotation_ = defaultAnnotation_;\n this.keysAtom_ = new Atom( this.name_ + \".keys\" );\n // Optimization: we use this frequently\n this.isPlainObject_ = isPlainObject(this.target_);\n if ( !isAnnotation(this.defaultAnnotation_)) {\n die(\"defaultAnnotation must be valid annotation\");\n }\n {\n // Prepare structure for tracking which fields were already annotated\n this.appliedAnnotations_ = {};\n }\n }\n var _proto = ObservableObjectAdministration.prototype;\n _proto.getObservablePropValue_ = function getObservablePropValue_(key) {\n return this.values_.get(key).get();\n };\n _proto.setObservablePropValue_ = function setObservablePropValue_(key, newValue) {\n var observable = this.values_.get(key);\n if (observable instanceof ComputedValue) {\n observable.set(newValue);\n return true;\n }\n // intercept\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: UPDATE,\n object: this.proxy_ || this.target_,\n name: key,\n newValue: newValue\n });\n if (!change) {\n return null;\n }\n newValue = change.newValue;\n }\n newValue = observable.prepareNewValue_(newValue);\n // notify spy & observers\n if (newValue !== globalState.UNCHANGED) {\n var notify = hasListeners(this);\n var notifySpy = isSpyEnabled();\n var _change = notify || notifySpy ? {\n type: UPDATE,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n oldValue: observable.value_,\n name: key,\n newValue: newValue\n } : null;\n if ( notifySpy) {\n spyReportStart(_change);\n }\n observable.setNewValue_(newValue);\n if (notify) {\n notifyListeners(this, _change);\n }\n if ( notifySpy) {\n spyReportEnd();\n }\n }\n return true;\n };\n _proto.get_ = function get_(key) {\n if (globalState.trackingDerivation && !hasProp(this.target_, key)) {\n // Key doesn't exist yet, subscribe for it in case it's added later\n this.has_(key);\n }\n return this.target_[key];\n }\n /**\r\n * @param {PropertyKey} key\r\n * @param {any} value\r\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\r\n * @param {boolean} proxyTrap whether it's called from proxy trap\r\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\r\n */;\n _proto.set_ = function set_(key, value, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n // Don't use .has(key) - we care about own\n if (hasProp(this.target_, key)) {\n // Existing prop\n if (this.values_.has(key)) {\n // Observable (can be intercepted)\n return this.setObservablePropValue_(key, value);\n } else if (proxyTrap) {\n // Non-observable - proxy\n return Reflect.set(this.target_, key, value);\n } else {\n // Non-observable\n this.target_[key] = value;\n return true;\n }\n } else {\n // New prop\n return this.extend_(key, {\n value: value,\n enumerable: true,\n writable: true,\n configurable: true\n }, this.defaultAnnotation_, proxyTrap);\n }\n }\n // Trap for \"in\"\n ;\n _proto.has_ = function has_(key) {\n if (!globalState.trackingDerivation) {\n // Skip key subscription outside derivation\n return key in this.target_;\n }\n this.pendingKeys_ || (this.pendingKeys_ = new Map());\n var entry = this.pendingKeys_.get(key);\n if (!entry) {\n entry = new ObservableValue(key in this.target_, referenceEnhancer, this.name_ + \".\" + stringifyKey(key) + \"?\" , false);\n this.pendingKeys_.set(key, entry);\n }\n return entry.get();\n }\n /**\r\n * @param {PropertyKey} key\r\n * @param {Annotation|boolean} annotation true - use default annotation, false - ignore prop\r\n */;\n _proto.make_ = function make_(key, annotation) {\n if (annotation === true) {\n annotation = this.defaultAnnotation_;\n }\n if (annotation === false) {\n return;\n }\n assertAnnotable(this, annotation, key);\n if (!(key in this.target_)) {\n var _this$target_$storedA;\n // Throw on missing key, except for decorators:\n // Decorator annotations are collected from whole prototype chain.\n // When called from super() some props may not exist yet.\n // However we don't have to worry about missing prop,\n // because the decorator must have been applied to something.\n if ((_this$target_$storedA = this.target_[storedAnnotationsSymbol]) != null && _this$target_$storedA[key]) {\n return; // will be annotated by subclass constructor\n } else {\n die(1, annotation.annotationType_, this.name_ + \".\" + key.toString());\n }\n }\n var source = this.target_;\n while (source && source !== objectPrototype) {\n var descriptor = getDescriptor(source, key);\n if (descriptor) {\n var outcome = annotation.make_(this, key, descriptor, source);\n if (outcome === 0 /* Cancel */) {\n return;\n }\n if (outcome === 1 /* Break */) {\n break;\n }\n }\n source = Object.getPrototypeOf(source);\n }\n recordAnnotationApplied(this, annotation, key);\n }\n /**\r\n * @param {PropertyKey} key\r\n * @param {PropertyDescriptor} descriptor\r\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\r\n * @param {boolean} proxyTrap whether it's called from proxy trap\r\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\r\n */;\n _proto.extend_ = function extend_(key, descriptor, annotation, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n if (annotation === true) {\n annotation = this.defaultAnnotation_;\n }\n if (annotation === false) {\n return this.defineProperty_(key, descriptor, proxyTrap);\n }\n assertAnnotable(this, annotation, key);\n var outcome = annotation.extend_(this, key, descriptor, proxyTrap);\n if (outcome) {\n recordAnnotationApplied(this, annotation, key);\n }\n return outcome;\n }\n /**\r\n * @param {PropertyKey} key\r\n * @param {PropertyDescriptor} descriptor\r\n * @param {boolean} proxyTrap whether it's called from proxy trap\r\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\r\n */;\n _proto.defineProperty_ = function defineProperty_(key, descriptor, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n try {\n startBatch();\n // Delete\n var deleteOutcome = this.delete_(key);\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome;\n }\n // ADD interceptor\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: descriptor.value\n });\n if (!change) {\n return null;\n }\n var newValue = change.newValue;\n if (descriptor.value !== newValue) {\n descriptor = _extends({}, descriptor, {\n value: newValue\n });\n }\n }\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false;\n }\n } else {\n defineProperty(this.target_, key, descriptor);\n }\n // Notify\n this.notifyPropertyAddition_(key, descriptor.value);\n } finally {\n endBatch();\n }\n return true;\n }\n // If original descriptor becomes relevant, move this to annotation directly\n ;\n _proto.defineObservableProperty_ = function defineObservableProperty_(key, value, enhancer, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n try {\n startBatch();\n // Delete\n var deleteOutcome = this.delete_(key);\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome;\n }\n // ADD interceptor\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: value\n });\n if (!change) {\n return null;\n }\n value = change.newValue;\n }\n var cachedDescriptor = getCachedObservablePropDescriptor(key);\n var descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: true,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n };\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false;\n }\n } else {\n defineProperty(this.target_, key, descriptor);\n }\n var observable = new ObservableValue(value, enhancer, \"development\" !== \"production\" ? this.name_ + \".\" + key.toString() : \"ObservableObject.key\", false);\n this.values_.set(key, observable);\n // Notify (value possibly changed by ObservableValue)\n this.notifyPropertyAddition_(key, observable.value_);\n } finally {\n endBatch();\n }\n return true;\n }\n // If original descriptor becomes relevant, move this to annotation directly\n ;\n _proto.defineComputedProperty_ = function defineComputedProperty_(key, options, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n try {\n startBatch();\n // Delete\n var deleteOutcome = this.delete_(key);\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome;\n }\n // ADD interceptor\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: undefined\n });\n if (!change) {\n return null;\n }\n }\n options.name || (options.name = \"development\" !== \"production\" ? this.name_ + \".\" + key.toString() : \"ObservableObject.key\");\n options.context = this.proxy_ || this.target_;\n var cachedDescriptor = getCachedObservablePropDescriptor(key);\n var descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: false,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n };\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false;\n }\n } else {\n defineProperty(this.target_, key, descriptor);\n }\n this.values_.set(key, new ComputedValue(options));\n // Notify\n this.notifyPropertyAddition_(key, undefined);\n } finally {\n endBatch();\n }\n return true;\n }\n /**\r\n * @param {PropertyKey} key\r\n * @param {PropertyDescriptor} descriptor\r\n * @param {boolean} proxyTrap whether it's called from proxy trap\r\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\r\n */;\n _proto.delete_ = function delete_(key, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n // No such prop\n if (!hasProp(this.target_, key)) {\n return true;\n }\n // Intercept\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: REMOVE\n });\n // Cancelled\n if (!change) {\n return null;\n }\n }\n // Delete\n try {\n var _this$pendingKeys_, _this$pendingKeys_$ge;\n startBatch();\n var notify = hasListeners(this);\n var notifySpy = \"development\" !== \"production\" && isSpyEnabled();\n var observable = this.values_.get(key);\n // Value needed for spies/listeners\n var value = undefined;\n // Optimization: don't pull the value unless we will need it\n if (!observable && (notify || notifySpy)) {\n var _getDescriptor;\n value = (_getDescriptor = getDescriptor(this.target_, key)) == null ? void 0 : _getDescriptor.value;\n }\n // delete prop (do first, may fail)\n if (proxyTrap) {\n if (!Reflect.deleteProperty(this.target_, key)) {\n return false;\n }\n } else {\n delete this.target_[key];\n }\n // Allow re-annotating this field\n if (\"development\" !== \"production\") {\n delete this.appliedAnnotations_[key];\n }\n // Clear observable\n if (observable) {\n this.values_[\"delete\"](key);\n // for computed, value is undefined\n if (observable instanceof ObservableValue) {\n value = observable.value_;\n }\n // Notify: autorun(() => obj[key]), see #1796\n propagateChanged(observable);\n }\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged();\n // Notify \"has\" observers\n // \"in\" as it may still exist in proto\n (_this$pendingKeys_ = this.pendingKeys_) == null ? void 0 : (_this$pendingKeys_$ge = _this$pendingKeys_.get(key)) == null ? void 0 : _this$pendingKeys_$ge.set(key in this.target_);\n // Notify spies/listeners\n if (notify || notifySpy) {\n var _change2 = {\n type: REMOVE,\n observableKind: \"object\",\n object: this.proxy_ || this.target_,\n debugObjectName: this.name_,\n oldValue: value,\n name: key\n };\n if (\"development\" !== \"production\" && notifySpy) {\n spyReportStart(_change2);\n }\n if (notify) {\n notifyListeners(this, _change2);\n }\n if (\"development\" !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n }\n } finally {\n endBatch();\n }\n return true;\n }\n /**\r\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\r\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\r\n * for callback details\r\n */;\n _proto.observe_ = function observe_(callback, fireImmediately) {\n if ( fireImmediately === true) {\n die(\"`observe` doesn't support the fire immediately property for observable objects.\");\n }\n return registerListener(this, callback);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.notifyPropertyAddition_ = function notifyPropertyAddition_(key, value) {\n var _this$pendingKeys_2, _this$pendingKeys_2$g;\n var notify = hasListeners(this);\n var notifySpy = isSpyEnabled();\n if (notify || notifySpy) {\n var change = notify || notifySpy ? {\n type: ADD,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n name: key,\n newValue: value\n } : null;\n if ( notifySpy) {\n spyReportStart(change);\n }\n if (notify) {\n notifyListeners(this, change);\n }\n if ( notifySpy) {\n spyReportEnd();\n }\n }\n (_this$pendingKeys_2 = this.pendingKeys_) == null ? void 0 : (_this$pendingKeys_2$g = _this$pendingKeys_2.get(key)) == null ? void 0 : _this$pendingKeys_2$g.set(true);\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged();\n };\n _proto.ownKeys_ = function ownKeys_() {\n this.keysAtom_.reportObserved();\n return ownKeys(this.target_);\n };\n _proto.keys_ = function keys_() {\n // Returns enumerable && own, but unfortunately keysAtom will report on ANY key change.\n // There is no way to distinguish between Object.keys(object) and Reflect.ownKeys(object) - both are handled by ownKeys trap.\n // We can either over-report in Object.keys(object) or under-report in Reflect.ownKeys(object)\n // We choose to over-report in Object.keys(object), because:\n // - typically it's used with simple data objects\n // - when symbolic/non-enumerable keys are relevant Reflect.ownKeys works as expected\n this.keysAtom_.reportObserved();\n return Object.keys(this.target_);\n };\n return ObservableObjectAdministration;\n}();\nfunction asObservableObject(target, options) {\n var _options$name;\n if ( options && isObservableObject(target)) {\n die(\"Options can't be provided for already observable objects.\");\n }\n if (hasProp(target, $mobx)) {\n if ( !(getAdministration(target) instanceof ObservableObjectAdministration)) {\n die(\"Cannot convert '\" + getDebugName(target) + \"' into observable object:\" + \"\\nThe target is already observable of different type.\" + \"\\nExtending builtins is not supported.\");\n }\n return target;\n }\n if ( !Object.isExtensible(target)) {\n die(\"Cannot make the designated object observable; it is not extensible\");\n }\n var name = (_options$name = options == null ? void 0 : options.name) != null ? _options$name : (isPlainObject(target) ? \"ObservableObject\" : target.constructor.name) + \"@\" + getNextId() ;\n var adm = new ObservableObjectAdministration(target, new Map(), String(name), getAnnotationFromOptions(options));\n addHiddenProp(target, $mobx, adm);\n return target;\n}\nvar isObservableObjectAdministration = /*#__PURE__*/createInstanceofPredicate(\"ObservableObjectAdministration\", ObservableObjectAdministration);\nfunction getCachedObservablePropDescriptor(key) {\n return descriptorCache[key] || (descriptorCache[key] = {\n get: function get() {\n return this[$mobx].getObservablePropValue_(key);\n },\n set: function set(value) {\n return this[$mobx].setObservablePropValue_(key, value);\n }\n });\n}\nfunction isObservableObject(thing) {\n if (isObject(thing)) {\n return isObservableObjectAdministration(thing[$mobx]);\n }\n return false;\n}\nfunction recordAnnotationApplied(adm, annotation, key) {\n var _adm$target_$storedAn;\n {\n adm.appliedAnnotations_[key] = annotation;\n }\n // Remove applied decorator annotation so we don't try to apply it again in subclass constructor\n (_adm$target_$storedAn = adm.target_[storedAnnotationsSymbol]) == null ? true : delete _adm$target_$storedAn[key];\n}\nfunction assertAnnotable(adm, annotation, key) {\n // Valid annotation\n if ( !isAnnotation(annotation)) {\n die(\"Cannot annotate '\" + adm.name_ + \".\" + key.toString() + \"': Invalid annotation.\");\n }\n /*\r\n // Configurable, not sealed, not frozen\r\n // Possibly not needed, just a little better error then the one thrown by engine.\r\n // Cases where this would be useful the most (subclass field initializer) are not interceptable by this.\r\n if (__DEV__) {\r\n const configurable = getDescriptor(adm.target_, key)?.configurable\r\n const frozen = Object.isFrozen(adm.target_)\r\n const sealed = Object.isSealed(adm.target_)\r\n if (!configurable || frozen || sealed) {\r\n const fieldName = `${adm.name_}.${key.toString()}`\r\n const requestedAnnotationType = annotation.annotationType_\r\n let error = `Cannot apply '${requestedAnnotationType}' to '${fieldName}':`\r\n if (frozen) {\r\n error += `\\nObject is frozen.`\r\n }\r\n if (sealed) {\r\n error += `\\nObject is sealed.`\r\n }\r\n if (!configurable) {\r\n error += `\\nproperty is not configurable.`\r\n // Mention only if caused by us to avoid confusion\r\n if (hasProp(adm.appliedAnnotations!, key)) {\r\n error += `\\nTo prevent accidental re-definition of a field by a subclass, `\r\n error += `all annotated fields of non-plain objects (classes) are not configurable.`\r\n }\r\n }\r\n die(error)\r\n }\r\n }\r\n */\n // Not annotated\n if ( !isOverride(annotation) && hasProp(adm.appliedAnnotations_, key)) {\n var fieldName = adm.name_ + \".\" + key.toString();\n var currentAnnotationType = adm.appliedAnnotations_[key].annotationType_;\n var requestedAnnotationType = annotation.annotationType_;\n die(\"Cannot apply '\" + requestedAnnotationType + \"' to '\" + fieldName + \"':\" + (\"\\nThe field is already annotated with '\" + currentAnnotationType + \"'.\") + \"\\nRe-annotating fields is not allowed.\" + \"\\nUse 'override' annotation for methods overridden by subclass.\");\n }\n}\n\n// Bug in safari 9.* (or iOS 9 safari mobile). See #364\nvar ENTRY_0 = /*#__PURE__*/createArrayEntryDescriptor(0);\n/**\r\n * This array buffer contains two lists of properties, so that all arrays\r\n * can recycle their property definitions, which significantly improves performance of creating\r\n * properties on the fly.\r\n */\nvar OBSERVABLE_ARRAY_BUFFER_SIZE = 0;\n// Typescript workaround to make sure ObservableArray extends Array\nvar StubArray = function StubArray() {};\nfunction inherit(ctor, proto) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(ctor.prototype, proto);\n } else if (ctor.prototype.__proto__ !== undefined) {\n ctor.prototype.__proto__ = proto;\n } else {\n ctor.prototype = proto;\n }\n}\ninherit(StubArray, Array.prototype);\n// Weex proto freeze protection was here,\n// but it is unclear why the hack is need as MobX never changed the prototype\n// anyway, so removed it in V6\nvar LegacyObservableArray = /*#__PURE__*/function (_StubArray, _Symbol$toStringTag, _Symbol$iterator) {\n _inheritsLoose(LegacyObservableArray, _StubArray);\n function LegacyObservableArray(initialValues, enhancer, name, owned) {\n var _this;\n if (name === void 0) {\n name = \"ObservableArray@\" + getNextId() ;\n }\n if (owned === void 0) {\n owned = false;\n }\n _this = _StubArray.call(this) || this;\n var adm = new ObservableArrayAdministration(name, enhancer, owned, true);\n adm.proxy_ = _assertThisInitialized(_this);\n addHiddenFinalProp(_assertThisInitialized(_this), $mobx, adm);\n if (initialValues && initialValues.length) {\n var prev = allowStateChangesStart(true);\n // @ts-ignore\n _this.spliceWithArray(0, 0, initialValues);\n allowStateChangesEnd(prev);\n }\n {\n // Seems that Safari won't use numeric prototype setter untill any * numeric property is\n // defined on the instance. After that it works fine, even if this property is deleted.\n Object.defineProperty(_assertThisInitialized(_this), \"0\", ENTRY_0);\n }\n return _this;\n }\n var _proto = LegacyObservableArray.prototype;\n _proto.concat = function concat() {\n this[$mobx].atom_.reportObserved();\n for (var _len = arguments.length, arrays = new Array(_len), _key = 0; _key < _len; _key++) {\n arrays[_key] = arguments[_key];\n }\n return Array.prototype.concat.apply(this.slice(),\n //@ts-ignore\n arrays.map(function (a) {\n return isObservableArray(a) ? a.slice() : a;\n }));\n };\n _proto[_Symbol$iterator] = function () {\n var self = this;\n var nextIndex = 0;\n return makeIterable({\n next: function next() {\n return nextIndex < self.length ? {\n value: self[nextIndex++],\n done: false\n } : {\n done: true,\n value: undefined\n };\n }\n });\n };\n _createClass(LegacyObservableArray, [{\n key: \"length\",\n get: function get() {\n return this[$mobx].getArrayLength_();\n },\n set: function set(newLength) {\n this[$mobx].setArrayLength_(newLength);\n }\n }, {\n key: _Symbol$toStringTag,\n get: function get() {\n return \"Array\";\n }\n }]);\n return LegacyObservableArray;\n}(StubArray, Symbol.toStringTag, Symbol.iterator);\nObject.entries(arrayExtensions).forEach(function (_ref) {\n var prop = _ref[0],\n fn = _ref[1];\n if (prop !== \"concat\") {\n addHiddenProp(LegacyObservableArray.prototype, prop, fn);\n }\n});\nfunction createArrayEntryDescriptor(index) {\n return {\n enumerable: false,\n configurable: true,\n get: function get() {\n return this[$mobx].get_(index);\n },\n set: function set(value) {\n this[$mobx].set_(index, value);\n }\n };\n}\nfunction createArrayBufferItem(index) {\n defineProperty(LegacyObservableArray.prototype, \"\" + index, createArrayEntryDescriptor(index));\n}\nfunction reserveArrayBuffer(max) {\n if (max > OBSERVABLE_ARRAY_BUFFER_SIZE) {\n for (var index = OBSERVABLE_ARRAY_BUFFER_SIZE; index < max + 100; index++) {\n createArrayBufferItem(index);\n }\n OBSERVABLE_ARRAY_BUFFER_SIZE = max;\n }\n}\nreserveArrayBuffer(1000);\nfunction createLegacyArray(initialValues, enhancer, name) {\n return new LegacyObservableArray(initialValues, enhancer, name);\n}\n\nfunction getAtom(thing, property) {\n if (typeof thing === \"object\" && thing !== null) {\n if (isObservableArray(thing)) {\n if (property !== undefined) {\n die(23);\n }\n return thing[$mobx].atom_;\n }\n if (isObservableSet(thing)) {\n return thing.atom_;\n }\n if (isObservableMap(thing)) {\n if (property === undefined) {\n return thing.keysAtom_;\n }\n var observable = thing.data_.get(property) || thing.hasMap_.get(property);\n if (!observable) {\n die(25, property, getDebugName(thing));\n }\n return observable;\n }\n if (isObservableObject(thing)) {\n if (!property) {\n return die(26);\n }\n var _observable = thing[$mobx].values_.get(property);\n if (!_observable) {\n die(27, property, getDebugName(thing));\n }\n return _observable;\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing;\n }\n } else if (isFunction(thing)) {\n if (isReaction(thing[$mobx])) {\n // disposer function\n return thing[$mobx];\n }\n }\n die(28);\n}\nfunction getAdministration(thing, property) {\n if (!thing) {\n die(29);\n }\n if (property !== undefined) {\n return getAdministration(getAtom(thing, property));\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing;\n }\n if (isObservableMap(thing) || isObservableSet(thing)) {\n return thing;\n }\n if (thing[$mobx]) {\n return thing[$mobx];\n }\n die(24, thing);\n}\nfunction getDebugName(thing, property) {\n var named;\n if (property !== undefined) {\n named = getAtom(thing, property);\n } else if (isAction(thing)) {\n return thing.name;\n } else if (isObservableObject(thing) || isObservableMap(thing) || isObservableSet(thing)) {\n named = getAdministration(thing);\n } else {\n // valid for arrays as well\n named = getAtom(thing);\n }\n return named.name_;\n}\n\nvar toString = objectPrototype.toString;\nfunction deepEqual(a, b, depth) {\n if (depth === void 0) {\n depth = -1;\n }\n return eq(a, b, depth);\n}\n// Copied from https://github.com/jashkenas/underscore/blob/5c237a7c682fb68fd5378203f0bf22dce1624854/underscore.js#L1186-L1289\n// Internal recursive comparison function for `isEqual`.\nfunction eq(a, b, depth, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) {\n return a !== 0 || 1 / a === 1 / b;\n }\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) {\n return false;\n }\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) {\n return b !== b;\n }\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== \"function\" && type !== \"object\" && typeof b != \"object\") {\n return false;\n }\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) {\n return false;\n }\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case \"[object RegExp]\":\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case \"[object String]\":\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return \"\" + a === \"\" + b;\n case \"[object Number]\":\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) {\n return +b !== +b;\n }\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case \"[object Date]\":\n case \"[object Boolean]\":\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case \"[object Symbol]\":\n return typeof Symbol !== \"undefined\" && Symbol.valueOf.call(a) === Symbol.valueOf.call(b);\n case \"[object Map]\":\n case \"[object Set]\":\n // Maps and Sets are unwrapped to arrays of entry-pairs, adding an incidental level.\n // Hide this extra level by increasing the depth.\n if (depth >= 0) {\n depth++;\n }\n break;\n }\n // Unwrap any wrapped objects.\n a = unwrap(a);\n b = unwrap(b);\n var areArrays = className === \"[object Array]\";\n if (!areArrays) {\n if (typeof a != \"object\" || typeof b != \"object\") {\n return false;\n }\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor,\n bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor && isFunction(bCtor) && bCtor instanceof bCtor) && \"constructor\" in a && \"constructor\" in b) {\n return false;\n }\n }\n if (depth === 0) {\n return false;\n } else if (depth < 0) {\n depth = -1;\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) {\n return bStack[length] === b;\n }\n }\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) {\n return false;\n }\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], depth - 1, aStack, bStack)) {\n return false;\n }\n }\n } else {\n // Deep compare objects.\n var keys = Object.keys(a);\n var key;\n length = keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (Object.keys(b).length !== length) {\n return false;\n }\n while (length--) {\n // Deep compare each member\n key = keys[length];\n if (!(hasProp(b, key) && eq(a[key], b[key], depth - 1, aStack, bStack))) {\n return false;\n }\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\nfunction unwrap(a) {\n if (isObservableArray(a)) {\n return a.slice();\n }\n if (isES6Map(a) || isObservableMap(a)) {\n return Array.from(a.entries());\n }\n if (isES6Set(a) || isObservableSet(a)) {\n return Array.from(a.entries());\n }\n return a;\n}\n\nfunction makeIterable(iterator) {\n iterator[Symbol.iterator] = getSelf;\n return iterator;\n}\nfunction getSelf() {\n return this;\n}\n\nfunction isAnnotation(thing) {\n return (\n // Can be function\n thing instanceof Object && typeof thing.annotationType_ === \"string\" && isFunction(thing.make_) && isFunction(thing.extend_)\n );\n}\n\n/**\r\n * (c) Michel Weststrate 2015 - 2020\r\n * MIT Licensed\r\n *\r\n * Welcome to the mobx sources! To get a global overview of how MobX internally works,\r\n * this is a good place to start:\r\n * https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\r\n *\r\n * Source folders:\r\n * ===============\r\n *\r\n * - api/ Most of the public static methods exposed by the module can be found here.\r\n * - core/ Implementation of the MobX algorithm; atoms, derivations, reactions, dependency trees, optimizations. Cool stuff can be found here.\r\n * - types/ All the magic that is need to have observable objects, arrays and values is in this folder. Including the modifiers like `asFlat`.\r\n * - utils/ Utility stuff.\r\n *\r\n */\n[\"Symbol\", \"Map\", \"Set\"].forEach(function (m) {\n var g = getGlobal();\n if (typeof g[m] === \"undefined\") {\n die(\"MobX requires global '\" + m + \"' to be available or polyfilled\");\n }\n});\nif (typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__ === \"object\") {\n // See: https://github.com/andykog/mobx-devtools/\n __MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({\n spy: spy,\n extras: {\n getDebugName: getDebugName\n },\n $mobx: $mobx\n });\n}\n\nexports.$mobx = $mobx;\nexports.FlowCancellationError = FlowCancellationError;\nexports.ObservableMap = ObservableMap;\nexports.ObservableSet = ObservableSet;\nexports.Reaction = Reaction;\nexports._allowStateChanges = allowStateChanges;\nexports._allowStateChangesInsideComputed = runInAction;\nexports._allowStateReadsEnd = allowStateReadsEnd;\nexports._allowStateReadsStart = allowStateReadsStart;\nexports._autoAction = autoAction;\nexports._endAction = _endAction;\nexports._getAdministration = getAdministration;\nexports._getGlobalState = getGlobalState;\nexports._interceptReads = interceptReads;\nexports._isComputingDerivation = isComputingDerivation;\nexports._resetGlobalState = resetGlobalState;\nexports._startAction = _startAction;\nexports.action = action;\nexports.autorun = autorun;\nexports.comparer = comparer;\nexports.computed = computed;\nexports.configure = configure;\nexports.createAtom = createAtom;\nexports.defineProperty = apiDefineProperty;\nexports.entries = entries;\nexports.extendObservable = extendObservable;\nexports.flow = flow;\nexports.flowResult = flowResult;\nexports.get = get;\nexports.getAtom = getAtom;\nexports.getDebugName = getDebugName;\nexports.getDependencyTree = getDependencyTree;\nexports.getObserverTree = getObserverTree;\nexports.has = has;\nexports.intercept = intercept;\nexports.isAction = isAction;\nexports.isBoxedObservable = isObservableValue;\nexports.isComputed = isComputed;\nexports.isComputedProp = isComputedProp;\nexports.isFlow = isFlow;\nexports.isFlowCancellationError = isFlowCancellationError;\nexports.isObservable = isObservable;\nexports.isObservableArray = isObservableArray;\nexports.isObservableMap = isObservableMap;\nexports.isObservableObject = isObservableObject;\nexports.isObservableProp = isObservableProp;\nexports.isObservableSet = isObservableSet;\nexports.keys = keys;\nexports.makeAutoObservable = makeAutoObservable;\nexports.makeObservable = makeObservable;\nexports.observable = observable;\nexports.observe = observe;\nexports.onBecomeObserved = onBecomeObserved;\nexports.onBecomeUnobserved = onBecomeUnobserved;\nexports.onReactionError = onReactionError;\nexports.override = override;\nexports.ownKeys = apiOwnKeys;\nexports.reaction = reaction;\nexports.remove = remove;\nexports.runInAction = runInAction;\nexports.set = set;\nexports.spy = spy;\nexports.toJS = toJS;\nexports.trace = trace;\nexports.transaction = transaction;\nexports.untracked = untracked;\nexports.values = values;\nexports.when = when;\n//# sourceMappingURL=mobx.cjs.development.js.map\n","\n'use strict'\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./mobx.cjs.production.min.js')\n} else {\n module.exports = require('./mobx.cjs.development.js')\n}\n","import { ApplicationContext, Mark } from '@vgerbot/ioc';\nimport React, { useContext, useRef } from 'react';\nimport { Newable } from '@vgerbot/ioc/dist/types/Newable';\nimport { PartialInstAwareProcessor } from '@vgerbot/ioc/dist/types/InstantiationAwareProcessor';\nimport { makeObservable } from 'mobx';\n\nconst IoCContext = React.createContext(undefined);\n\nconst MARK_AS_MOBX_OBSERVABLE = 'mark-as-mobx-observable';\n\nexport function Observable() {\n return Mark(MARK_AS_MOBX_OBSERVABLE, true);\n}\n\nexport type IoCProps = React.PropsWithChildren<{\n callback?: (appctx: ApplicationContext) => void;\n}>;\n\nexport function IoC(props: IoCProps) {\n const ref = useRef();\n if (!ref.current) {\n const appctx = new ApplicationContext();\n if (typeof props.callback === 'function') {\n props.callback(appctx);\n }\n appctx.registerInstAwareProcessor(\n class implements PartialInstAwareProcessor {\n afterInstantiation(instance: T): T {\n const markInfo = appctx.getClassMetadata(instance.constructor as Newable).getCtorMarkInfo();\n if (markInfo[MARK_AS_MOBX_OBSERVABLE]) {\n makeObservable(instance);\n }\n return instance;\n }\n }\n );\n ref.current = appctx;\n }\n return React.createElement(\n IoCContext.Provider,\n {\n value: ref.current\n },\n props.children\n );\n}\n\nexport function useService(ctor: Newable): T {\n const ctx = useContext(IoCContext);\n if (!ctx) {\n throw new Error(' has not been applied to the component.');\n }\n return ctx.getInstance(ctor);\n}\n\nexport * from '@vgerbot/ioc';\n"],"names":["minimist","hasRequiredMinimist","requireMinimist","isNumber","x","test","isConstructorOrProto","obj","key","args","opts","flags","bools","strings","unknownFn","unknown","boolean","allBools","concat","filter","Boolean","forEach","aliases","aliasIsBoolean","some","Object","keys","alias","y","string","k","defaults","default","argv","_","setKey","value","o","i","length","undefined","prototype","Number","String","Array","lastKey","isArray","push","setArg","val","arg","argDefined","split","notFlags","indexOf","slice","next","m","match","letters","broken","j","stopEarly","apply","exports","ServiceFactoryDef","factory","injections","this","createFromClassMetadata","metadata","container","owner","clazz","reader","getClass","getInstance","GlobalMetadata","classAliasMetadataMap","Map","componentFactories","processorClasses","Set","INSTANCE","recordFactory","symbol","set","recordClassAlias","aliasName","recordProcessorClass","add","init","_this","getComponentFactory","get","getClassMetadata","getInstAwareProcessorClasses","from","extendStatics","d","b","setPrototypeOf","__proto__","p","hasOwnProperty","call","InstanceScope","__assign","assign","t","s","n","arguments","__metadata","metadataKey","metadataValue","Reflect","__read","Symbol","iterator","r","e","ar","done","error","__spreadArray","to","pack","l","createDefaultValueMap","map","originGet","bind","has","defaultValue","Reflect$1","commonjsGlobal","globalThis","window","commonjsHelpers.commonjsGlobal","self","root","Function","exporter","makeExporter","target","previous","defineProperty","configurable","writable","hasOwn","supportsSymbol","toPrimitiveSymbol","toPrimitive","iteratorSymbol","supportsCreate","create","supportsProto","downLevel","HashMap","MakeDictionary","functionPrototype","getPrototypeOf","usePolyfill","process","env","_Map","entries","CreateMapPolyfill","_Set","CreateSetPolyfill","Metadata","WeakMap","CreateWeakMapPolyfill","decorate","decorators","propertyKey","attributes","IsUndefined","IsArray","TypeError","IsConstructor","DecorateConstructor","IsObject","IsNull","DecorateProperty","ToPropertyKey","decorator","IsPropertyKey","OrdinaryDefineOwnMetadata","defineMetadata","hasMetadata","OrdinaryHasMetadata","hasOwnMetadata","OrdinaryHasOwnMetadata","getMetadata","OrdinaryGetMetadata","getOwnMetadata","OrdinaryGetOwnMetadata","getMetadataKeys","OrdinaryMetadataKeys","getOwnMetadataKeys","OrdinaryOwnMetadataKeys","deleteMetadata","metadataMap","GetOrCreateMetadataMap","delete","size","targetMetadata","decorated","descriptor","O","P","Create","MetadataKey","parent","OrdinaryGetPrototypeOf","ToBoolean","MetadataValue","ownKeys","parentKeys","_i","ownKeys_1","_a","parentKeys_1","GetIterator","IteratorStep","nextValue","IteratorValue","IteratorClose","Type","IsSymbol","ToPrimitive","input","PreferredType","hint","exoticToPrim","GetMethod","result","OrdinaryToPrimitive","toString_1","toString","IsCallable","valueOf","toString_2","argument","ToString","V","func","method","iterResult","f","proto","prototypeProto","constructor","cacheSentinel","arraySentinel","MapIterator","values","selector","_index","_keys","_values","_selector","index","throw","return","_cacheKey","_cacheIndex","enumerable","_find","clear","getKey","getValue","getEntry","insert","_map","UUID_SIZE","rootKey","CreateUniqueKey","_key","table","GetOrCreateWeakMapTable","CreateUUID","FillRandomBytes","buffer","Math","random","GenRandomBytes","Uint8Array","crypto","getRandomValues","msCrypto","data","offset","byte","toLowerCase","__","Lifecycle","MetadataFactory","metadataClass","getReflectKey","MarkInfoContainer","getMarkInfo","mark","ParameterMarkInfoContainer","paramsMarkInfo","markInfo","ClassMetadata","scope","SINGLETON","constructorParameterTypes","lifecycleMethodsMap","propertyTypesMap","marks","ctor","members","params","constr","setScope","inject","recordPropertyType","marker","member","parameter","setConstructorParameterType","cls","type","addLifecycleMethod","methodName","lifecycle","lifecycles","getLifecycles","getMethods","it","getScope","getConstructorParameterTypes","getPropertyTypeMap","getCtorMarkInfo","getMembersMarkInfo","getParameterMarkInfo","methodKey","ExpressionType","LifecycleDecorator","isNodeJs","require","arch","EventEmitter","events","on","listener","listeners","ls","splice","emit","fn","hasArgs","options","hasInjections","lazyProp","lazyMember","index_cjs","evaluateResult","context","computeFn","evaluate","resetTester","resetTesters","release","reset","isPresent","needReset","u","a","getOwnPropertyDescriptor","Error","resetBy","__lazy__","lazyMemberOfClass","lazyVal","__val__","LifecycleManager","componentClass","classMetadataReader","invokePreInjectMethod","instance","methods","PRE_INJECT","invokeLifecycleMethods","invokePostInjectMethod","POST_INJECT","invokePreDestroyInjectMethod","PRE_DESTROY","methodKeys","invoke","ComponentInstanceBuilder","instAwareProcessorManager","getConstructorArgs","propertyFactories","lazyMode","lifecycleResolver","appendClassMetadata","appendLazyMode","e_1","types","globalMetadataReader","properties","_loop_1","propertyName","propertyType","this_1","getFactory","propertyClassMetadata","propertyFactory","properties_1","__values","properties_1_1","_b","e_1_1","build","createPropertiesGetterBuilder","isInstAwareProcessorClass","getter","beforeInstantiation","afterInstantiation","_loop_2","this_2","FUNCTION_METADATA_KEY","FunctionMetadata","parameters","isFactory","setParameterType","setIsFactory","getParameters","instanceSerialNo","ComponentInstanceWrapper","serialNo","compareTo","other","invokePreDestroy","SingletonInstanceResolution","INSTANCE_MAP","identifier","saveInstance","shouldGenerate","destroy","instanceWrappers","sort","instanceWrapper","SINGLETON_INSTANCE_SINGLETON","GlobalSharedInstanceResolution","TransientInstanceResolution","instances","JSONDataEvaluator","namespaceDataMap","eval","expression","colonIndex","namespace","substring","exp","rootContext","trim","rootVarName","prefix","VAR_SEQUENCE","compileExpression","runExpression","recordData","Date","now","Advice","EnvironmentEvaluator","ArgvEvaluator","require$$1","AspectUtils","beforeHooks","afterHooks","thrownHooks","finallyHooks","afterReturnHooks","aroundHooks","append","advice","hook","hooksArray","Before","After","Thrown","Finally","AfterReturn","Around","extract","reduceRight","prev","onError","onFinally","onAfter","returnValue","isPromise","Promise","catch","finally","then","reduce","retVal","AOPClassMetadata","aspectMap","aspects","exitingAspectArray","getAspects","getAspectsOf","AOPInstantiationAwareProcessor","appCtx","_super","class_1","__extends","useAspectMetadataReader","aspectStoreMap","Proxy","prop","originValue","aspectFn","methodFunc","createAspectCtx","aspectUtils","ClassToInstance","AspectClass","beforeAdviceAspects","afterAdviceAspects","tryCatchAdviceAspects","tryFinallyAdviceAspects","afterReturnAdviceAspects","aroundAdviceAspects","joinPoint","aspect","execute","prevReturnValue","originFn","proceed","jpArgs","createAspect","InstantiationAwareProcessorManager","instAwareProcessorClasses","appendInstAwareProcessorClass","instAwareProcessorClass","appendInstAwareProcessorClasses","instAwareProcessorInstances","processor","desc","c","__decorate","PRE_DESTROY_EVENT_KEY","ApplicationContext","resolutions","factories","evaluatorClasses","eventEmitter","defaultScope","registerInstanceScopeResolution","GLOBAL_SHARED_SINGLETON","TRANSIENT","registerEvaluator","JSON_PATH","ENV","ARGV","registerInstAwareProcessor","factoryDef","componentClass_1","resolver","isInstAwareProcessor","classMetadata","resolution","getInstanceOptions","ownerPropertyKey","createComponentInstanceBuilder","saveInstanceOptions","builder","bindFactory","args_1","parameterIdentifiers","evaluatorClass","externalArgs","recordJSONData","bindInstance","resolutionConstructor","constructorArgs","name","onPreDestroy","Bind","Factory","Inject","parameterIndex","targetConstr","Mark","_c","PostInject","PreDestroy","PreInject","Scope","Value","value_symbol","index_cjs_1","hasRequiredReact_production_min","requireReact_production_min","react_production_min","for","q","v","w","z","B","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","C","D","E","props","refs","updater","F","G","isReactComponent","setState","forceUpdate","H","isPureReactComponent","I","J","K","current","L","ref","__self","__source","M","h","g","children","defaultProps","$$typeof","_owner","Q","replace","escape","R","N","A","join","S","T","_status","_result","U","transition","W","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","Children","count","toArray","only","Component","Fragment","Profiler","PureComponent","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","cloneElement","createContext","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","_context","createElement","createFactory","createRef","forwardRef","render","isValidElement","lazy","_payload","_init","memo","compare","startTransition","unstable_act","useCallback","useContext","useDebugValue","useDeferredValue","useEffect","useId","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useSyncExternalStore","useTransition","version","hasRequiredReact_development","requireReact_development","module","NODE_ENV","__REACT_DEVTOOLS_GLOBAL_HOOK__","registerInternalModuleStart","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_OFFSCREEN_TYPE","MAYBE_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","maybeIterator","ReactCurrentActQueue","isBatchingLegacy","didScheduleLegacyUpdate","ReactDebugCurrentFrame","currentExtraStackFrame","setExtraStackFrame","stack","getCurrentStack","getStackAddendum","impl","ReactSharedInternals","warn","format","_len","printWarning","_len2","_key2","level","argsWithFormat","item","unshift","console","didWarnStateUpdateForUnmountedComponent","warnNoop","publicInstance","callerName","_constructor","componentName","displayName","warningKey","ReactNoopUpdateQueue","callback","completeState","partialState","emptyObject","freeze","deprecatedAPIs","replaceState","defineDeprecationWarning","info","fnName","ComponentDummy","pureComponentPrototype","isArrayImpl","testStringCoercion","checkKeyStringCoercion","willCoercionThrow","toStringTag","typeName","getContextName","getComponentNameFromType","tag","outerType","innerType","wrapperName","functionName","getWrappedName","outerName","lazyComponent","payload","specialPropKeyWarningShown","specialPropRefWarningShown","didWarnAboutStringRefs","RESERVED_PROPS","hasValidRef","config","isReactWarning","hasValidKey","defineKeyPropWarningGetter","warnAboutAccessingKey","defineRefPropWarningGetter","warnAboutAccessingRef","warnIfStringRefCannotBeAutoConverted","stateNode","ReactElement","source","element","_store","propName","childrenLength","childArray","_self","_source","object","didWarnAboutMaps","userProvidedKeyEscapeRegex","escapeUserProvidedKey","text","getElementKey","escaperLookup","mapIntoArray","array","escapedPrefix","nameSoFar","oldElement","newKey","child","invokeCallback","_child","mappedChild","childKey","escapedChildKey","subtreeCount","nextNamePrefix","iteratorFn","iterableChildren","step","ii","childrenString","mapChildren","REACT_MODULE_REFERENCE","lazyInitializer","thenable","moduleObject","resolved","rejected","pending","isValidElementType","getModuleId","resolveDispatcher","dispatcher","prevLog","prevInfo","prevWarn","prevError","prevGroup","prevGroupCollapsed","prevGroupEnd","disabledDepth","disabledLog","__reactDisabledLog","ReactCurrentDispatcher$1","describeBuiltInComponentFrame","ownerFn","componentFrameCache","reentry","PossiblyWeakMap","describeNativeComponentFrame","construct","control","frame","previousDispatcher","previousPrepareStackTrace","prepareStackTrace","log","group","groupCollapsed","groupEnd","defineProperties","disableLogs","Fake","sample","sampleLines","controlLines","_frame","includes","reenableLogs","syntheticFrame","describeUnknownElementTypeFrameInDEV","shouldConstruct","propTypesMisspellWarningShown","loggedTypeFailures","ReactDebugCurrentFrame$1","setCurrentlyValidatingElement","setCurrentlyValidatingElement$1","getDeclarationErrorAddendum","getSourceInfoErrorAddendumForProps","elementProps","fileName","lineNumber","ownerHasKeyUseWarning","validateExplicitKey","parentType","validated","currentComponentErrorInfo","parentName","getCurrentComponentErrorInfo","childOwner","validateChildKeys","node","validatePropTypes","propTypes","typeSpecs","location","typeSpecName","error$1","err","ex","message","checkPropTypes","PropTypes","getDefaultProps","isReactClassApproved","validateFragmentProps","fragment","createElementWithValidation","validType","typeString","sourceInfo","didWarnAboutDeprecatedCreateFactory","didWarnAboutMessageChannel","enqueueTaskImpl","actScopeDepth","didWarnNoAwaitAct","popActScope","prevActScopeDepth","recursivelyFlushAsyncActWork","resolve","reject","queue","flushActQueue","task","requireString","nodeRequire","setImmediate","_err","MessageChannel","channel","port1","onmessage","port2","postMessage","enqueueTask","isFlushing","createElement$1","cloneElement$1","newElement","validatedFactory","forEachFunc","forEachContext","hasWarnedAboutUsingNestedContextConsumers","hasWarnedAboutUsingConsumerProvider","hasWarnedAboutDisplayNameOnConsumer","_Provider","_currentRenderer","_currentRenderer2","refObject","seal","ownName","elementType","lazyType","newDefaultProps","newPropTypes","prevTransition","currentTransition","_updatedFibers","prevIsBatchingLegacy","thenableResult","wasAwaited","_queue","deps","Context","realContext","formatterFn","reducer","initialArg","initialValue","initialState","subscribe","getSnapshot","getServerSnapshot","registerInternalModuleStop","react_developmentModule","react_development","require$$0","hasRequiredMobx_cjs_production_min","React","commonjsHelpers.getDefaultExportFromCjs","react","requireMobx_cjs_production_min","mobx_cjs_production_min","xn","En","Vn","_n","Sn","ReferenceError","Kn","Rn","In","St","Mt","It","Jn","At","Ct","Ri","Si","bound","yi","safeDescriptors","autoAction","isMobXFlow","enhancer","Zn","autoBind","deep","X","Gn","defaultDecorator","box","Wn","$","isMobxAction","ri","ei","Y","trackingDerivation","dt","allowStateChanges","ut","Z","ft","ni","suppressReactionErrors","tt","at","bt","st","nt","vi","fi","hi","disableErrorBoundaries","ct","rt","runId","inBatch","vt","ht","et","ot","allowStateReads","lt","pendingUnobservations","mt","onBUO","ci","pt","trackingContext","onBO","yt","isRunningReactions","wi","wt","pendingReactions","jt","Ot","Ai","Oi","xt","gt","Nn","scheduler","delay","_t","mi","track","requiresObservable","setTimeout","Mi","Nt","bn","Et","Cn","sn","Ln","kn","Vt","dependencies","Rt","observers","Tt","kt","cancel","Kt","an","Lt","Pn","ji","Pt","Ui","Yi","un","Dt","Bt","qt","Gt","pop","Wt","ai","NONE","BREAK","LOG","Ht","Xt","timeout","dispose","clearTimeout","Ut","signal","aborted","addEventListener","removeEventListener","Ft","zt","$t","Jt","Yt","Qt","Zt","tn","Li","Ki","nn","Ii","rn","reportObserved","en","Bi","Zi","Qi","tr","cn","hn","vn","er","ln","ir","dn","yn","pn","mn","or","wn","jn","On","An","gn","Mn","Tn","getOwnPropertySymbols","getOwnPropertyNames","getOwnPropertyDescriptors","onBOL","onBUOL","reportChanged","stateVersion","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","Dn","identity","structural","is","shallow","Bn","qn","proxy","Hn","Xn","Un","Fn","zn","$n","ui","equals","useProxies","Xi","Ji","Ti","struct","Yn","Qn","ti","oi","dehancer","dehanceValue","UNCHANGED","Ci","newValue","oldValue","observableKind","debugObjectName","raw","toJSON","si","derivation","compareStructural","requiresReaction","keepAlive","trackAndCompute","cause","li","di","mobxGuid","enforceActions","spyListeners","globalReactionErrorHandlers","computedRequiresReaction","reactionRequiresObservable","observableRequiresReaction","verifyProxies","bi","pi","__mobxInstanceCount","__mobxGlobals","isScheduled","trace","xi","gi","Ni","Ei","Vi","deleteProperty","preventExtensions","ki","isNaN","parseInt","added","addedCount","removed","removedCount","max","min","spliceWithArray","shift","reverse","remove","Pi","Di","qi","Gi","Wi","Hi","merge","propertyIsEnumerable","Fi","zi","$i","in","nr","rr","__MOBX_DEVTOOLS_GLOBAL_HOOK__","injectMobx","spy","extras","getDebugName","$mobx","FlowCancellationError","ObservableMap","ObservableSet","Reaction","_allowStateChanges","_allowStateChangesInsideComputed","_allowStateReadsEnd","_allowStateReadsStart","_autoAction","_endAction","_getAdministration","_getGlobalState","_interceptReads","_isComputingDerivation","_resetGlobalState","_startAction","action","autorun","comparer","computed","configure","isolateGlobalState","reactionScheduler","createAtom","extendObservable","flow","flowResult","getAtom","getDependencyTree","getObserverTree","intercept","isAction","isBoxedObservable","isComputed","isComputedProp","isFlow","isFlowCancellationError","isObservable","isObservableArray","isObservableMap","isObservableObject","isObservableProp","isObservableSet","makeAutoObservable","makeObservable","observable","observe","onBecomeObserved","onBecomeUnobserved","onReactionError","override","reaction","fireImmediately","runInAction","toJS","transaction","untracked","when","hasRequiredMobx_cjs_development","requireMobx_cjs_development","mobx_cjs_development","errors","annotationType","dataStructure","thing","property","die","mockGlobal","getGlobal","getDescriptor","objectPrototype","EMPTY_ARRAY","EMPTY_OBJECT","hasProxy","plainObjectString","assertProxies","warnAboutProxyRequirement","msg","globalState","getNextId","once","invoked","noop","isFunction","isStringish","isObject","isPlainObject","protoConstructor","isGenerator","addHiddenProp","addHiddenFinalProp","createInstanceofPredicate","theClass","isES6Map","isES6Set","hasGetOwnPropertySymbols","stringifyKey","hasProp","res","_defineProperties","prim","_toPrimitive","_createClass","Constructor","protoProps","staticProps","_extends","_inheritsLoose","subClass","superClass","_setPrototypeOf","_assertThisInitialized","_arrayLikeToArray","arr","len","arr2","_createForOfIteratorHelperLoose","allowArrayLike","minLen","_unsupportedIterableToArray","storedAnnotationsSymbol","createDecoratorAnnotation","annotation","storeAnnotation","isOverride","fieldName","currentAnnotationType","annotationType_","assertNotDecorated","Atom","name_","isPendingUnobservation_","isBeingObserved_","observers_","diffValue_","lastAccessedBy_","lowestObserverState_","IDerivationState_","NOT_TRACKING_","_proto","startBatch","propagateChanged","endBatch","isAtom","onBecomeObservedHandler","onBecomeUnobservedHandler","atom","deepEqual","deepEnhancer","referenceEnhancer","OVERRIDE","make_","adm","isPlainObject_","appliedAnnotations_","extend_","proxyTrap","createActionAnnotation","options_","make_$1","extend_$1","_this$options_","target_","actionDescriptor","createActionDescriptor","defineProperty_","_annotation$options_","_annotation$options_$","_annotation$options_2","_annotation$options_$2","_annotation$options_3","_annotation$options_4","_adm$proxy_2","_ref","_ref2","assertActionDescriptor","_adm$proxy_","proxy_","createAction","createFlowAnnotation","make_$2","extend_$2","flowDescriptor","createFlowDescriptor","_this$options_2","assertFlowDescriptor","createComputedAnnotation","make_$3","extend_$3","assertComputedDescriptor","defineComputedProperty_","createObservableAnnotation","make_$4","extend_$4","_this$options_$enhanc","assertObservableDescriptor","defineObservableProperty_","autoAnnotation","createAutoAnnotation","make_$5","extend_$5","_this$options_3","_this$options_4","observableAnnotation","_this$options_5","_this$options_6","defaultCreateObservableOptions","asCreateObservableOptions","observableRefAnnotation","observableShallowAnnotation","observableStructAnnotation","observableDecoratorAnnotation","getEnhancerFromOptions","createObservable","arg2","arg3","_getDescriptor$config","_getDescriptor","ObservableValue","initialValues","createLegacyArray","createObservableArray","asObservableObject","_target$$mobx","_target$$mobx$proxy_","objectProxyTraps","asDynamicObservableObject","COMPUTED","computedAnnotation","computedStructAnnotation","arg1","ComputedValue","_Symbol$toPrimitive","currentActionId","nextActionId","isFunctionNameConfigurable","tmpNameDescriptor","actionName","executeAction","canRunAsDerivation","runInfo","error_","notifySpy_","isSpyEnabled","startTime_","flattenedArgs","spyReportStart","ACTION","prevDerivation_","runAsAction","prevAllowStateChanges_","untrackedStart","allowStateChangesStart","runAsAction_","prevAllowStateReads_","allowStateReadsStart","actionId_","parentActionId_","allowStateChangesEnd","allowStateReadsEnd","untrackedEnd","spyReportEnd","time","_Symbol$toPrimitive$1","_Atom","notifySpy","hasUnreportedChange_","interceptors_","changeListeners_","value_","spyReport","prepareNewValue_","UPDATE","setNewValue_","checkIfStateModificationsAreAllowed","hasInterceptors","change","interceptChange","hasListeners","notifyListeners","intercept_","handler","registerInterceptor","observe_","registerListener","isObservableValue","TraceMode","dependenciesState_","observing_","newObserving_","runId_","UP_TO_DATE_","unboundDepsCount_","CaughtException","triggeredBy_","isComputing_","isRunningSetter_","setter_","isTracing_","scope_","equals_","requiresReaction_","keepAlive_","onBecomeStale_","POSSIBLY_STALE_","propagateMaybeChanged","shouldCompute","prevTrackingContext","STALE_","logTraceInfo","propagateChangeConfirmed","warnAboutUntrackedRead_","computeValue_","isCaughtException","wasSuspended","changed","trackDerivedFunction","suspend_","clearObserving","firstTime","prevValue","prevU","isComputedValue","prevAllowStateReads","prevUntracked","obs","changeDependenciesStateTo0","hasObservers","prevTracking","prevObserving","observing","lowestNewObservingDerivationState","i0","dep","_dep","removeObserver","_dep2","addObserver","bindDependencies","requiresObservable_","warnAboutDerivationWithoutDependencies","persistentKeys","MobXGlobals","canMergeGlobalState","isolateCalled","global","queueForUnobservation","runReactions","list","checkIfStateReadsAreAllowed","lines","printDepTree","tree","depth","repeat","onInvalidate_","errorHandler_","isDisposed_","isScheduled_","isTrackPending_","isRunning_","schedule_","runReaction_","reportExceptionInDerivation_","startTime","notify","prevReaction","getDisposer_","enterBreakPoint","runReactionsHelper","allReactions","iterations","remainingReactions","isReaction","event","END_EVENT","AUTOACTION","DEFAULT_ACTION_NAME","actionAnnotation","actionBoundAnnotation","autoActionAnnotation","autoActionBoundAnnotation","createActionFactory","view","_opts$name","_opts","reactionRunner","createSchedulerFromOptions","run","interceptHook","cb","listenersKey","hookListeners","ALWAYS","annotations","descriptors","nodeToDependencyTree","nodeToObserverTree","getObservers","generatorId","flowAnnotation","flowBoundAnnotation","generator","rejector","ctx","gen","pendingPromise","promise","stepId","onFulfilled","ret","onRejected","cancelPromise","_res","yieldedPromise","_isComputed","values_","_isObservable","keys_","has_","apiOwnKeys","ownKeys_","cache","toJSHelper","__alreadySeen","idx","_res2","_res3","getAtomFromArgs","thisArg","_when","predicate","effect","timeoutHandle","disposer","effectAction","whenPromise","_opts$signal","abort","_opts$signal2","_opts$signal3","getAdm","get_","_getAdm$set_","set_","_getAdm$delete_","delete_","_getAdm$definePropert","interceptable","interceptors","listenable","keysSymbol","SPLICE","arrayTraps","getArrayLength_","arrayExtensions","setArrayLength_","ObservableArrayAdministration","owned_","legacyMode_","atom_","enhancer_","lastKnownLength_","newV","oldV","dehanceValue_","dehanceValues_","newLength","currentLength","newItems","spliceWithArray_","updateArrayLength_","oldLength","delta","reserveArrayBuffer","deleteCount","lengthDelta","spliceItemsIntoValues_","notifyArraySplice_","_this$values_","oldItems","notifyArrayChildUpdate_","owned","items","_len3","_key3","copy","addArrayExtension","funcName","funcFactory","simpleFunc","dehancedValues","mapLikeFunc","_this2","reduceLikeFunc","_this3","accumulator","currentValue","_Symbol$iterator","_Symbol$toStringTag","isObservableArrayAdministration","ObservableMapMarker","ADD","DELETE","_Symbol$iterator$1","_Symbol$toStringTag$1","initialData","data_","hasMap_","keysAtom_","entry","newEntry","hasKey","updateValue_","addValue_","_change","_this3$hasMap_$get","_this4","_this4$hasMap_$get","makeIterable","_keys$next","_keys$next2","_step","_iterator","_step$value","_this5","symbols","getPlainObjectKeys","_this6","_step2","_iterator2","_this7","_step3","replacementMap","convertToMap","orderedData","keysReportChangedCalled","_iterator3","_step4","_iterator4","_step4$value","_value","keyExisted","_value2","iter1","iter2","next1","next2","ObservableSetMarker","callbackFn","_change2","nextIndex","observableValues","descriptorCache","REMOVE","ObservableObjectAdministration","defaultAnnotation_","pendingKeys_","isAnnotation","getObservablePropValue_","setObservablePropValue_","assertAnnotable","_this$target_$storedA","outcome","recordAnnotationApplied","deleteOutcome","notifyPropertyAddition_","cachedDescriptor","getCachedObservablePropDescriptor","_this$pendingKeys_","_this$pendingKeys_$ge","_this$pendingKeys_2","_this$pendingKeys_2$g","_options$name","getAdministration","isExtensible","_options$defaultDecor","getAnnotationFromOptions","isObservableObjectAdministration","_adm$target_$storedAn","ENTRY_0","createArrayEntryDescriptor","OBSERVABLE_ARRAY_BUFFER_SIZE","StubArray","LegacyObservableArray","_StubArray","arrays","createArrayBufferItem","_observable","named","eq","aStack","bStack","className","unwrap","areArrays","aCtor","bCtor","getSelf","propOrHandler","defaultGlobals","baseScheduler","ea","interceptProperty","interceptInterceptable","overrides","collectStoredAnnotations","propOrCb","cbOrFire","observeObservableProperty","observeObservable","_opts$name2","errorHandler","baseFn","runSync","IoCContext","MARK_AS_MOBX_OBSERVABLE","appctx_1"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.umd.js","sources":["../src/index.ts"],"sourcesContent":["import { ApplicationContext, Mark } from '@vgerbot/ioc';\nimport React, { useContext, useRef } from 'react';\nimport { Newable } from '@vgerbot/ioc/dist/types/Newable';\nimport { PartialInstAwareProcessor } from '@vgerbot/ioc/dist/types/InstantiationAwareProcessor';\nimport { makeObservable } from 'mobx';\n\nconst IoCContext = React.createContext(undefined);\n\nconst MARK_AS_MOBX_OBSERVABLE = 'mark-as-mobx-observable';\n\nexport function Observable() {\n return Mark(MARK_AS_MOBX_OBSERVABLE, true);\n}\n\nexport type IoCProps = React.PropsWithChildren<{\n callback?: (appctx: ApplicationContext) => void;\n}>;\n\nexport function IoC(props: IoCProps) {\n const ref = useRef();\n if (!ref.current) {\n const appctx = new ApplicationContext();\n if (typeof props.callback === 'function') {\n props.callback(appctx);\n }\n appctx.registerInstAwareProcessor(\n class implements PartialInstAwareProcessor {\n afterInstantiation(instance: T): T {\n const markInfo = appctx.getClassMetadata(instance.constructor as Newable).getCtorMarkInfo();\n if (markInfo[MARK_AS_MOBX_OBSERVABLE]) {\n makeObservable(instance);\n }\n return instance;\n }\n }\n );\n ref.current = appctx;\n }\n return React.createElement(\n IoCContext.Provider,\n {\n value: ref.current\n },\n props.children\n );\n}\n\nexport function useService(ctor: Newable): T {\n const ctx = useContext(IoCContext);\n if (!ctx) {\n throw new Error(' has not been applied to the component.');\n }\n return ctx.getInstance(ctor);\n}\n\nexport * from '@vgerbot/ioc';\n"],"names":["IoCContext","React","createContext","undefined","MARK_AS_MOBX_OBSERVABLE","props","ref","useRef","current","appctx_1","ApplicationContext","callback","registerInstAwareProcessor","class_1","prototype","afterInstantiation","instance","getClassMetadata","constructor","getCtorMarkInfo","makeObservable","createElement","Provider","value","children","Mark","ctor","ctx","useContext","Error","getInstance"],"mappings":"oWAMA,IAAMA,EAAaC,EAAMC,mBAA8CC,GAEjEC,EAA0B,gCAU1B,SAAcC,GAChB,IAAMC,EAAMC,EAAAA,SACZ,IAAKD,EAAIE,QAAS,CACd,IAAMC,EAAS,IAAIC,EAAAA,mBACW,mBAAnBL,EAAMM,UACbN,EAAMM,SAASF,GAEnBA,EAAOG,2BAA0B,WAC7B,SAAAC,KAQA,OAPIA,EAAkBC,UAAAC,mBAAlB,SAAqCC,GAKjC,OAJiBP,EAAOQ,iBAAiBD,EAASE,aAA2BC,kBAChEf,IACTgB,EAAcA,eAACJ,GAEZA,GAEdH,EAT4B,IAWjCP,EAAIE,QAAUC,EAElB,OAAOR,EAAMoB,cACTrB,EAAWsB,SACX,CACIC,MAAOjB,EAAIE,SAEfH,EAAMmB,mCAhCV,OAAOC,EAAIA,KAACrB,GAAyB,iBAoCnC,SAAwBsB,GAC1B,IAAMC,EAAMC,aAAW5B,GACvB,IAAK2B,EACD,MAAM,IAAIE,MAAM,sDAEpB,OAAOF,EAAIG,YAAYJ"} \ No newline at end of file diff --git a/package.json b/package.json index 5bc6d2b..db26a3f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@vgerbot/use-service-react", - "version": "1.0.3", + "version": "1.0.4", "description": "", "main": "dist/index.cjs.js", "module": "dist/index.esm.js",