@datagrok/eda 1.1.7 → 1.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/100.js +2 -0
- package/dist/111.js +2 -2
- package/dist/118.js +2 -0
- package/dist/146.js +2 -2
- package/dist/155.js +2 -2
- package/dist/221.js +2 -2
- package/dist/313.js +2 -0
- package/dist/355.js +2 -2
- package/dist/356.js +2 -2
- package/dist/44.js +2 -0
- package/dist/471.js +2 -0
- package/dist/489.js +3 -0
- package/dist/489.js.LICENSE.txt +51 -0
- package/dist/584.js +2 -2
- package/dist/604.js +2 -2
- package/dist/632.js +2 -2
- package/dist/645.js +2 -2
- package/dist/656.js +2 -0
- package/dist/664.js +2 -0
- package/dist/694.js +2 -2
- package/dist/727.js +2 -0
- package/dist/729.js +2 -2
- package/dist/796.js +2 -2
- package/dist/861.js +2 -0
- package/dist/93.js +2 -2
- package/dist/972.js +2 -0
- package/dist/package-test.js +2 -2
- package/dist/package.js +2 -2
- package/package.json +34 -4
- package/src/package.ts +45 -45
- package/dist/80.js +0 -2
package/dist/656.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var eda;(()=>{"use strict";var t,e,n={7862:(t,e,n)=>{var r;n.d(e,{y:()=>r}),function(t){t.EUCLIDEAN="EUCLIDEAN",t.MANHATTAN="MANHATTAN"}(r||(r={}))},6814:(t,e,n)=>{n.d(e,{FM:()=>a,cZ:()=>i,kK:()=>s});var r=n(7862);const s=t=>null==t;function i(t,e,n,r){if(n>t[t.length-1])return;const s=t.findIndex((t=>n<t));t.pop(),t.splice(s,0,n),e.pop(),e.splice(s,0,r)}function a(t,e){return t===r.y.MANHATTAN?t=>t.reduce(((t,n,r)=>t+n*e[r]),0):t=>{const n=t.reduce(((t,n,r)=>t+(n*e[r])**2),0);return Math.sqrt(n)}}},6656:(t,e,n)=>{var r=n(3659),s=n(7659),i=n(6361),a=n(6814);var o=n(2669),c=n(1729),h=n(850),d=n(2590),g=n(9657);class u{data;weights;aggregationMethod;constructor(t){this.data=t.data,this.weights=t.weights,this.aggregationMethod=t.aggregationMethod}}class l extends u{reducer;iterations;distanceFnames;distanceFns;distanceFnArgs;constructor(t){super(t),this.reducer=new s.Z(t),this.iterations=t?.iterations??100,this.distanceFnames=t.distanceFnames,this.distanceFns=t.distanceFns,this.distanceFnArgs=t.distanceFnArgs}async transform(){if(this.data[0].length>1e4)throw new Error("Maximum number of samples for T-SNE is 10000");const t=new o.m(!0,!1);try{const e=(0,a.FM)(this.aggregationMethod,this.weights),n=[];for(let e=0;e<this.data.length;++e){const r=await t.calc(this.data[e],this.distanceFnames[e],!1,this.distanceFnArgs[e]);n.push(r)}const r=new Float32Array(n[0].length).fill(0);for(let t=0;t<n[0].length;++t)r[t]=e(n.map((e=>e[t])));const s=function(t,e){const n=function(t){return(e,n)=>t*e+n-Math.floor((e+2)*(e+1)/2)}(e);function r(t,e){const r=Number(t),s=Number(e);return n(r,s)}const s={get:(t,n,s)=>"length"===n?e:new Proxy(t,function(t){return{get:(e,n,s)=>t===n?0:e[Number(t)>Number(n)?r(n,t):r(t,n)]}}(n))};return new Proxy(t,s)}(r,this.data[0].length);this.reducer.initDataDist(s);for(let t=0;t<this.iterations;++t)this.reducer.step();return t.terminate(),this.reducer.getSolution()}catch(e){throw t.terminate(),e}}}class f extends u{reducer;distanceFnames;distanceFns;vectors;progressFunc;distanceFnArgs;constructor(t){super(t),(0,h.hu)("distanceFnames"in t),(0,h.hu)("distanceFns"in t),this.distanceFnArgs=t.distanceFnArgs,this.distanceFns=t.distanceFns,this.progressFunc=t.progressFunc,this.distanceFnames=t.distanceFnames,this.vectors=new Array(this.data[0].length).fill(0).map(((t,e)=>e)),this.data[0].length<15&&(t.nNeighbors=this.data[0].length-1),this.reducer=new c.u(t)}async transform(t){console.time("knn graph");const e=await(new d._).multiColumnKNN(this.data,this.distanceFnames,this.reducer.neighbors,this.distanceFnArgs,this.weights,this.aggregationMethod);console.timeEnd("knn graph"),this.reducer.setPrecomputedKNN(e.knnIndexes,e.knnDistances),await new Promise((t=>{setTimeout((()=>{t()}),300)}));const n=await this.reducer.fitAsync(this.vectors,(t=>{this.progressFunc&&this.progressFunc(t,this.reducer.getNEpochs(),this.reducer.getEmbedding())}));return s=n,new Array(s.length).fill(0).map(((t,e)=>r.OW.from(s[e])));var s}}class p{reducer;constructor(t,e,n,r,s,a){const o=[];for(let e=0;e<n.length;++e){const r=new i.UH(n[e]).getMeasure(a.distanceFnArgs[e]);o.push(r);let s=2048;for(let n=0;n<t[e].length;++n)if(t[e][n]&&t[e][n]._length){s=t[e][n]._length;break}if((0,i.sQ)(n[e]))for(let n=0;n<t[e].length;++n)t[e][n]&&t[e][n]._data?t[e][n]=new g.Z(t[e][n]._data,t[e][n]._length):t[e][n]=new g.Z(s)}"UMAP"==e?this.reducer=new f({data:t,distanceFnames:n,distanceFns:o,distanceFnArgs:a.distanceFnArgs,weights:r,aggregationMethod:s,...a}):"t-SNE"==e&&(this.reducer=new l({data:t,distanceFnames:n,distanceFns:o,distanceFnArgs:a.distanceFnArgs,weights:r,aggregationMethod:s,...a}))}async transform(t=!1){if(void 0===this.reducer)throw new Error("Reducer was not defined.");let e=await this.reducer.transform();return t&&(e=(0,h.AL)(e)),e}}async function m(t,e,n){t%5==0&&self.postMessage({epochNum:t,epochsLength:e,embedding:n})}self.onmessage=async({data:{columnsData:t,method:e,distanceMetrics:n,options:r,weights:s,aggregationMethod:i}})=>{let a;try{const o=await async function(t,e,n,r,s,i){const a=new p(t,e,n,r,s,{...i,progressFunc:m});return await a.transform(!0)}(t,e,n,s,i,r);a={embedding:o}}catch(t){a={error:t}}self.postMessage({error:a.error,embedding:a.embedding})}},6361:(t,e,n)=>{n.d(e,{UH:()=>s.UH,gk:()=>r.gk,sQ:()=>s.sQ});var r=n(1040),s=n(7861)},850:(t,e,n)=>{n.d(e,{AL:()=>i,dP:()=>a,hu:()=>s});var r=n(3659);function s(t=!1,e="Assertion error."){if(!t)throw new Error(e)}function i(t){return new Array(t[0].length).fill(0).map(((e,n)=>new r.OW(t.length).fill(0).map(((e,r)=>t[r][n]))))}function a(t,e){let n=0;const r=t.length;if(r!==e.length)throw new Error("The dimensionality of the vectors must match");for(let s=0;s<r;++s)n+=Math.pow(t[s]-e[s],2);return Math.sqrt(n)}}},r={};function s(t){var e=r[t];if(void 0!==e)return e.exports;var i=r[t]={exports:{}};return n[t](i,i.exports,s),i.exports}s.m=n,s.x=()=>{var t=s.O(void 0,[44,861,972,489],(()=>s(6656)));return s.O(t)},t=[],s.O=(e,n,r,i)=>{if(!n){var a=1/0;for(d=0;d<t.length;d++){for(var[n,r,i]=t[d],o=!0,c=0;c<n.length;c++)(!1&i||a>=i)&&Object.keys(s.O).every((t=>s.O[t](n[c])))?n.splice(c--,1):(o=!1,i<a&&(a=i));if(o){t.splice(d--,1);var h=r();void 0!==h&&(e=h)}}return e}i=i||0;for(var d=t.length;d>0&&t[d-1][2]>i;d--)t[d]=t[d-1];t[d]=[n,r,i]},s.d=(t,e)=>{for(var n in e)s.o(e,n)&&!s.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},s.f={},s.e=t=>Promise.all(Object.keys(s.f).reduce(((e,n)=>(s.f[n](t,e),e)),[])),s.u=t=>t+".js",s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),(()=>{var t;s.g.importScripts&&(t=s.g.location+"");var e=s.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var n=e.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&!t;)t=n[r--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),s.p=t})(),(()=>{s.b=self.location+"";var t={656:1};s.f.i=(e,n)=>{t[e]||importScripts(s.p+s.u(e))};var e=self.webpackChunkeda=self.webpackChunkeda||[],n=e.push.bind(e);e.push=e=>{var[r,i,a]=e;for(var o in i)s.o(i,o)&&(s.m[o]=i[o]);for(a&&a(s);r.length;)t[r.pop()]=1;n(e)}})(),e=s.x,s.x=()=>Promise.all([44,861,972,489].map(s.e,s)).then(e);var i=s.x();eda=i})();
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SSxHQUFXQSxFQUFZTSxFQUFReEksS0FBS3VJLEdBRXhELENBSUQsSUFBS0wsRUFBVyxNQUFNLElBQUl0SSxNQUFNLHlEQUNoQ3NJLEVBQVlBLEVBQVVRLFFBQVEsT0FBUSxJQUFJQSxRQUFRLFFBQVMsSUFBSUEsUUFBUSxZQUFhLEtBQ3BGOUMsRUFBb0JOLEVBQUk0QyxDLFdDbEJ4QnRDLEVBQW9CK0MsRUFBSWxFLEtBQUsyRCxTQUFXLEdBSXhDLElBQUlRLEVBQWtCLENBQ3JCLElBQUssR0FnQk5oRCxFQUFvQndCLEVBQUVwSCxFQUFJLENBQUNxSCxFQUFTRSxLQUUvQnFCLEVBQWdCdkIsSUFFbEJjLGNBQWN2QyxFQUFvQk4sRUFBSU0sRUFBb0I0QixFQUFFSCxHQUU5RCxFQUdELElBQUl3QixFQUFxQnBFLEtBQXNCLGdCQUFJQSxLQUFzQixpQkFBSyxHQUMxRXFFLEVBQTZCRCxFQUFtQjFJLEtBQUs0SSxLQUFLRixHQUM5REEsRUFBbUIxSSxLQXZCQ25CLElBQ25CLElBQUtxSCxFQUFVMkMsRUFBYUMsR0FBV2pLLEVBQ3ZDLElBQUksSUFBSTZHLEtBQVltRCxFQUNoQnBELEVBQW9CcUIsRUFBRStCLEVBQWFuRCxLQUNyQ0QsRUFBb0JNLEVBQUVMLEdBQVltRCxFQUFZbkQsSUFJaEQsSUFER29ELEdBQVNBLEVBQVFyRCxHQUNkUyxFQUFTdkksUUFDZDhLLEVBQWdCdkMsRUFBU25JLE9BQVMsRUFDbkM0SyxFQUEyQjlKLEVBQUssQyxLZG5CN0IzQixFQUFPdUksRUFBb0JwSSxFQUMvQm9JLEVBQW9CcEksRUFBSSxJQUNoQjBGLFFBQVFvRSxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksS0FBSy9HLElBQUlxRixFQUFvQjNELEVBQUcyRCxJQUFzQnNELEtBQUs3TCxHZUQzRixJQUFJOEksRUFBc0JQLEVBQW9CcEksSSIsInNvdXJjZXMiOlsid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvY2h1bmsgbG9hZGVkIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvc3RhcnR1cCBjaHVuayBkZXBlbmRlbmNpZXMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL2Rpc3RhbmNlLW1hdHJpeC90eXBlcy5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvZGlzdGFuY2UtbWF0cml4L3V0aWxzLmpzIiwid2VicGFjazovL2VkYS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy9tdWx0aS1jb2x1bW4tZGltZW5zaW9uYWxpdHktcmVkdWN0aW9uL211bHRpLWNvbHVtbi1kaW0tcmVkdWNlci5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvZGlzdGFuY2UtbWF0cml4L3Byb3h5LmpzIiwid2VicGFjazovL2VkYS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy9tdWx0aS1jb2x1bW4tZGltZW5zaW9uYWxpdHktcmVkdWN0aW9uL211bGl0LWNvbHVtbi1kaW0tcmVkdWNlci13b3JrZXIuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3ZlY3Rvci1vcGVyYXRpb25zLmpzIiwid2VicGFjazovL2VkYS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZW5zdXJlIGNodW5rIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZ2V0IGphdmFzY3JpcHQgY2h1bmsgZmlsZW5hbWUiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9wdWJsaWNQYXRoIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3N0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZmVycmVkID0gW107XG5fX3dlYnBhY2tfcmVxdWlyZV9fLk8gPSAocmVzdWx0LCBjaHVua0lkcywgZm4sIHByaW9yaXR5KSA9PiB7XG5cdGlmKGNodW5rSWRzKSB7XG5cdFx0cHJpb3JpdHkgPSBwcmlvcml0eSB8fCAwO1xuXHRcdGZvcih2YXIgaSA9IGRlZmVycmVkLmxlbmd0aDsgaSA+IDAgJiYgZGVmZXJyZWRbaSAtIDFdWzJdID4gcHJpb3JpdHk7IGktLSkgZGVmZXJyZWRbaV0gPSBkZWZlcnJlZFtpIC0gMV07XG5cdFx0ZGVmZXJyZWRbaV0gPSBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV07XG5cdFx0cmV0dXJuO1xuXHR9XG5cdHZhciBub3RGdWxmaWxsZWQgPSBJbmZpbml0eTtcblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBkZWZlcnJlZC5sZW5ndGg7IGkrKykge1xuXHRcdHZhciBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV0gPSBkZWZlcnJlZFtpXTtcblx0XHR2YXIgZnVsZmlsbGVkID0gdHJ1ZTtcblx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGNodW5rSWRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRpZiAoKHByaW9yaXR5ICYgMSA9PT0gMCB8fCBub3RGdWxmaWxsZWQgPj0gcHJpb3JpdHkpICYmIE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uTykuZXZlcnkoKGtleSkgPT4gKF9fd2VicGFja19yZXF1aXJlX18uT1trZXldKGNodW5rSWRzW2pdKSkpKSB7XG5cdFx0XHRcdGNodW5rSWRzLnNwbGljZShqLS0sIDEpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZnVsZmlsbGVkID0gZmFsc2U7XG5cdFx0XHRcdGlmKHByaW9yaXR5IDwgbm90RnVsZmlsbGVkKSBub3RGdWxmaWxsZWQgPSBwcmlvcml0eTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYoZnVsZmlsbGVkKSB7XG5cdFx0XHRkZWZlcnJlZC5zcGxpY2UoaS0tLCAxKVxuXHRcdFx0dmFyIHIgPSBmbigpO1xuXHRcdFx0aWYgKHIgIT09IHVuZGVmaW5lZCkgcmVzdWx0ID0gcjtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn07IiwidmFyIG5leHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLng7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdHJldHVybiBQcm9taXNlLmFsbChbNDQsODYxLDk3Miw0ODldLm1hcChfX3dlYnBhY2tfcmVxdWlyZV9fLmUsIF9fd2VicGFja19yZXF1aXJlX18pKS50aGVuKG5leHQpO1xufTsiLCJleHBvcnQgdmFyIERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzO1xuKGZ1bmN0aW9uIChEaXN0YW5jZUFnZ3JlZ2F0aW9uTWV0aG9kcykge1xuICAgIERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzW1wiRVVDTElERUFOXCJdID0gXCJFVUNMSURFQU5cIjtcbiAgICBEaXN0YW5jZUFnZ3JlZ2F0aW9uTWV0aG9kc1tcIk1BTkhBVFRBTlwiXSA9IFwiTUFOSEFUVEFOXCI7XG59KShEaXN0YW5jZUFnZ3JlZ2F0aW9uTWV0aG9kcyB8fCAoRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHMgPSB7fSkpO1xuO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEhsd1pYTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKMGVYQmxjeTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFTeE5RVUZOTEVOQlFVNHNTVUZCV1N3d1FrRkhWRHRCUVVoSUxGZEJRVmtzTUVKQlFUQkNPMGxCUTJ4RExIRkVRVUYxUWl4RFFVRkJPMGxCUTNaQ0xIRkVRVUYxUWl4RFFVRkJPMEZCUTNwQ0xFTkJRVU1zUlVGSVV5d3dRa0ZCTUVJc1MwRkJNVUlzTUVKQlFUQkNMRkZCUjI1RE8wRkJRVUVzUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbVY0Y0c5eWRDQmxiblZ0SUVScGMzUmhibU5sUVdkbmNtVm5ZWFJwYjI1TlpYUm9iMlJ6SUh0Y2JpQWdJQ0JGVlVOTVNVUkZRVTRnUFNBblJWVkRURWxFUlVGT0p5eGNiaUFnSUNCTlFVNUlRVlJVUVU0Z1BTQW5UVUZPU0VGVVZFRk9KeXhjYmlBZ2ZUdGNibHh1Wlhod2IzSjBJSFI1Y0dVZ1JHbHpkR0Z1WTJWQloyZHlaV2RoZEdsdmJrMWxkR2h2WkNBOUlHdGxlVzltSUhSNWNHVnZaaUJFYVhOMFlXNWpaVUZuWjNKbFoyRjBhVzl1VFdWMGFHOWtjenRjYmlKZGZRPT0iLCJpbXBvcnQgeyBEaXN0YW5jZUFnZ3JlZ2F0aW9uTWV0aG9kcyB9IGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0IGNvbnN0IGlzTmlsID0gKHgpID0+IHggPT09IG51bGwgfHwgeCA9PT0gdW5kZWZpbmVkO1xuZXhwb3J0IGZ1bmN0aW9uIGluc2VydFNtYWxsZXIoZGlzdGFuY2VzQXIsIGluZGV4ZXMsIG51bSwgaW5kZXgpIHtcbiAgICBpZiAobnVtID4gZGlzdGFuY2VzQXJbZGlzdGFuY2VzQXIubGVuZ3RoIC0gMV0pXG4gICAgICAgIHJldHVybjtcbiAgICBjb25zdCBuZXdQb3NpdGlvbiA9IGRpc3RhbmNlc0FyLmZpbmRJbmRleCgodikgPT4gbnVtIDwgdik7XG4gICAgZGlzdGFuY2VzQXIucG9wKCk7XG4gICAgZGlzdGFuY2VzQXIuc3BsaWNlKG5ld1Bvc2l0aW9uLCAwLCBudW0pO1xuICAgIGluZGV4ZXMucG9wKCk7XG4gICAgaW5kZXhlcy5zcGxpY2UobmV3UG9zaXRpb24sIDAsIGluZGV4KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRMYXJnZXIoZGlzdGFuY2VzQXIsIGluZGV4ZXMsIG51bSwgaW5kZXgpIHtcbiAgICBpZiAobnVtIDwgZGlzdGFuY2VzQXJbZGlzdGFuY2VzQXIubGVuZ3RoIC0gMV0pXG4gICAgICAgIHJldHVybjtcbiAgICBjb25zdCBuZXdQb3NpdGlvbiA9IGRpc3RhbmNlc0FyLmZpbmRJbmRleCgodikgPT4gbnVtID4gdik7XG4gICAgZGlzdGFuY2VzQXIucG9wKCk7XG4gICAgZGlzdGFuY2VzQXIuc3BsaWNlKG5ld1Bvc2l0aW9uLCAwLCBudW0pO1xuICAgIGluZGV4ZXMucG9wKCk7XG4gICAgaW5kZXhlcy5zcGxpY2UobmV3UG9zaXRpb24sIDAsIGluZGV4KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRBZ2dyZWdhdGlvbkZ1bmN0aW9uKGFnZ3JlZ2F0aW9uTWV0aG9kLCB3ZWlnaHRzKSB7XG4gICAgc3dpdGNoIChhZ2dyZWdhdGlvbk1ldGhvZCkge1xuICAgICAgICBjYXNlIERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzLk1BTkhBVFRBTjpcbiAgICAgICAgICAgIHJldHVybiAodnMpID0+IHZzLnJlZHVjZSgoYWNjLCB2YWwsIGlkeCkgPT4gYWNjICsgdmFsICogd2VpZ2h0c1tpZHhdLCAwKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiAodnMpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBldWNsaWRlYW5cbiAgICAgICAgICAgICAgICBjb25zdCBzdW0gPSB2cy5yZWR1Y2UoKGFjYywgdmFsLCBpZHgpID0+IGFjYyArICh2YWwgKiB3ZWlnaHRzW2lkeF0pICoqIDIsIDApO1xuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLnNxcnQoc3VtKTtcbiAgICAgICAgICAgIH07XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZFhScGJITXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKMWRHbHNjeTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFTeFBRVUZQTEVWQlFUUkNMREJDUVVFd1FpeEZRVUZETEUxQlFVMHNVMEZCVXl4RFFVRkRPMEZCUlRsRkxFMUJRVTBzUTBGQlF5eE5RVUZOTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eExRVUZMTEVsQlFVa3NTVUZCU1N4RFFVRkRMRXRCUVVzc1UwRkJVeXhEUVVGRE8wRkJSUzlFTEUxQlFVMHNWVUZCVlN4aFFVRmhMRU5CUVVNc1YwRkJjVUlzUlVGQlJTeFBRVUZwUWl4RlFVRkZMRWRCUVZjc1JVRkJSU3hMUVVGaE8wbEJRMmhITEVsQlFVa3NSMEZCUnl4SFFVRkhMRmRCUVZjc1EwRkJReXhYUVVGWExFTkJRVU1zVFVGQlRTeEhRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjZReXhQUVVGUE8wbEJSVlFzVFVGQlRTeFhRVUZYTEVkQlFVY3NWMEZCVnl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRekZFTEZkQlFWY3NRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRKUVVOc1FpeFhRVUZYTEVOQlFVTXNUVUZCVFN4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEZUVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETzBsQlEyUXNUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUTNoRExFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNXVUZCV1N4RFFVRkRMRmRCUVhGQ0xFVkJRVVVzVDBGQmFVSXNSVUZCUlN4SFFVRlhMRVZCUVVVc1MwRkJZVHRKUVVNdlJpeEpRVUZKTEVkQlFVY3NSMEZCUnl4WFFVRlhMRU5CUVVNc1YwRkJWeXhEUVVGRExFMUJRVTBzUjBGQlF5eERRVUZETEVOQlFVTTdVVUZEZWtNc1QwRkJUenRKUVVWVUxFMUJRVTBzVjBGQlZ5eEhRVUZITEZkQlFWY3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVNeFJDeFhRVUZYTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkRiRUlzVjBGQlZ5eERRVUZETEUxQlFVMHNRMEZCUXl4WFFVRlhMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEzaERMRTlCUVU4c1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dEpRVU5rTEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1YwRkJWeXhGUVVGRkxFTkJRVU1zUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTjRReXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEhOQ1FVRnpRaXhEUVVOd1F5eHBRa0ZCTkVNc1JVRkJSU3hQUVVGcFFqdEpRVVV2UkN4UlFVRlJMR2xDUVVGcFFpeEZRVUZGTzFGQlEzcENMRXRCUVVzc01FSkJRVEJDTEVOQlFVTXNVMEZCVXp0WlFVTjJReXhQUVVGUExFTkJRVU1zUlVGQldTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1JVRkJSU3hEUVVGRExFZEJRVWNzUjBGQlJ5eEhRVUZITEVkQlFVY3NUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzSkdPMWxCUTBVc1QwRkJUeXhEUVVGRExFVkJRVmtzUlVGQlJTeEZRVUZGTzJkQ1FVTjBRaXhaUVVGWk8yZENRVU5hTEUxQlFVMHNSMEZCUnl4SFFVRkhMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNSMEZCUnl4SFFVRkhMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRE4wVXNUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEzaENMRU5CUVVNc1EwRkJRenRMUVVOTU8wRkJRMGdzUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdSR2x6ZEdGdVkyVkJaMmR5WldkaGRHbHZiazFsZEdodlpDd2dSR2x6ZEdGdVkyVkJaMmR5WldkaGRHbHZiazFsZEdodlpITjlJR1p5YjIwZ0p5NHZkSGx3WlhNbk8xeHVYRzVsZUhCdmNuUWdZMjl1YzNRZ2FYTk9hV3dnUFNBb2VEb2dZVzU1S1NBOVBpQjRJRDA5UFNCdWRXeHNJSHg4SUhnZ1BUMDlJSFZ1WkdWbWFXNWxaRHRjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdsdWMyVnlkRk50WVd4c1pYSW9aR2x6ZEdGdVkyVnpRWEk2SUc1MWJXSmxjbHRkTENCcGJtUmxlR1Z6T2lCdWRXMWlaWEpiWFN3Z2JuVnRPaUJ1ZFcxaVpYSXNJR2x1WkdWNE9pQnVkVzFpWlhJcElIdGNiaUFnYVdZZ0tHNTFiU0ErSUdScGMzUmhibU5sYzBGeVcyUnBjM1JoYm1ObGMwRnlMbXhsYm1kMGFDMHhYU2xjYmlBZ0lDQnlaWFIxY200N1hHNWNiaUFnWTI5dWMzUWdibVYzVUc5emFYUnBiMjRnUFNCa2FYTjBZVzVqWlhOQmNpNW1hVzVrU1c1a1pYZ29LSFlwSUQwK0lHNTFiU0E4SUhZcE8xeHVJQ0JrYVhOMFlXNWpaWE5CY2k1d2IzQW9LVHRjYmlBZ1pHbHpkR0Z1WTJWelFYSXVjM0JzYVdObEtHNWxkMUJ2YzJsMGFXOXVMQ0F3TENCdWRXMHBPMXh1SUNCcGJtUmxlR1Z6TG5CdmNDZ3BPMXh1SUNCcGJtUmxlR1Z6TG5Od2JHbGpaU2h1WlhkUWIzTnBkR2x2Yml3Z01Dd2dhVzVrWlhncE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYVc1elpYSjBUR0Z5WjJWeUtHUnBjM1JoYm1ObGMwRnlPaUJ1ZFcxaVpYSmJYU3dnYVc1a1pYaGxjem9nYm5WdFltVnlXMTBzSUc1MWJUb2diblZ0WW1WeUxDQnBibVJsZURvZ2JuVnRZbVZ5S1NCN1hHNGdJR2xtSUNodWRXMGdQQ0JrYVhOMFlXNWpaWE5CY2x0a2FYTjBZVzVqWlhOQmNpNXNaVzVuZEdndE1WMHBYRzRnSUNBZ2NtVjBkWEp1TzF4dVhHNGdJR052Ym5OMElHNWxkMUJ2YzJsMGFXOXVJRDBnWkdsemRHRnVZMlZ6UVhJdVptbHVaRWx1WkdWNEtDaDJLU0E5UGlCdWRXMGdQaUIyS1R0Y2JpQWdaR2x6ZEdGdVkyVnpRWEl1Y0c5d0tDazdYRzRnSUdScGMzUmhibU5sYzBGeUxuTndiR2xqWlNodVpYZFFiM05wZEdsdmJpd2dNQ3dnYm5WdEtUdGNiaUFnYVc1a1pYaGxjeTV3YjNBb0tUdGNiaUFnYVc1a1pYaGxjeTV6Y0d4cFkyVW9ibVYzVUc5emFYUnBiMjRzSURBc0lHbHVaR1Y0S1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2RsZEVGblozSmxaMkYwYVc5dVJuVnVZM1JwYjI0b1hHNGdJR0ZuWjNKbFoyRjBhVzl1VFdWMGFHOWtPaUJFYVhOMFlXNWpaVUZuWjNKbFoyRjBhVzl1VFdWMGFHOWtMQ0IzWldsbmFIUnpPaUJ1ZFcxaVpYSmJYVnh1S1RvZ0tIWmhiSFZsY3pvZ2JuVnRZbVZ5VzEwcElEMCtJRzUxYldKbGNpQjdYRzRnSUhOM2FYUmphQ0FvWVdkbmNtVm5ZWFJwYjI1TlpYUm9iMlFwSUh0Y2JpQWdJQ0JqWVhObElFUnBjM1JoYm1ObFFXZG5jbVZuWVhScGIyNU5aWFJvYjJSekxrMUJUa2hCVkZSQlRqcGNiaUFnSUNBZ0lISmxkSFZ5YmlBb2RuTTZJRzUxYldKbGNsdGRLU0E5UGlCMmN5NXlaV1IxWTJVb0tHRmpZeXdnZG1Gc0xDQnBaSGdwSUQwK0lHRmpZeUFySUhaaGJDQXFJSGRsYVdkb2RITmJhV1I0WFN3Z01DazdYRzRnSUNBZ1pHVm1ZWFZzZERwY2JpQWdJQ0FnSUhKbGRIVnliaUFvZG5NNklHNTFiV0psY2x0ZEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUM4dklHVjFZMnhwWkdWaGJseHVJQ0FnSUNBZ0lDQmpiMjV6ZENCemRXMGdQU0IyY3k1eVpXUjFZMlVvS0dGall5d2dkbUZzTENCcFpIZ3BJRDArSUdGall5QXJJQ2gyWVd3Z0tpQjNaV2xuYUhSelcybGtlRjBwSUNvcUlESXNJREFwTzF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnVFdGMGFDNXpjWEowS0hOMWJTazdYRzRnSUNBZ0lDQjlPMXh1SUNCOVhHNTlYRzRpWFgwPSIsImltcG9ydCB7IFZlY3RvciB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7IFRTTkUgfSBmcm9tICdAa2Vja2VsdC90c25lJztcbmltcG9ydCB7IE1lYXN1cmUsIGlzQml0QXJyYXlNZXRyaWMgfSBmcm9tICcuLi90eXBlZC1tZXRyaWNzJztcbmltcG9ydCB7IERpc3RhbmNlTWF0cml4U2VydmljZSwgZGlzdGFuY2VNYXRyaXhQcm94eSB9IGZyb20gJy4uL2Rpc3RhbmNlLW1hdHJpeCc7XG5pbXBvcnQgeyBnZXRBZ2dyZWdhdGlvbkZ1bmN0aW9uIH0gZnJvbSAnLi4vZGlzdGFuY2UtbWF0cml4L3V0aWxzJztcbmltcG9ydCB7IFVNQVAgfSBmcm9tICcuLi91bWFwJztcbmltcG9ydCB7IGFzc2VydCwgdHJhbnNwb3NlTWF0cml4IH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMnO1xuaW1wb3J0IHsgU3BhcnNlTWF0cml4U2VydmljZSB9IGZyb20gJy4uL2Rpc3RhbmNlLW1hdHJpeC9zcGFyc2UtbWF0cml4LXNlcnZpY2UnO1xuaW1wb3J0IEJpdEFycmF5IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL2JpdC1hcnJheSc7XG5jbGFzcyBNdWx0aUNvbHVtblJlZHVjZXIge1xuICAgIGRhdGE7XG4gICAgd2VpZ2h0cztcbiAgICBhZ2dyZWdhdGlvbk1ldGhvZDtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuZGF0YSA9IG9wdGlvbnMuZGF0YTtcbiAgICAgICAgdGhpcy53ZWlnaHRzID0gb3B0aW9ucy53ZWlnaHRzO1xuICAgICAgICB0aGlzLmFnZ3JlZ2F0aW9uTWV0aG9kID0gb3B0aW9ucy5hZ2dyZWdhdGlvbk1ldGhvZDtcbiAgICB9XG59XG5jbGFzcyBNdWx0aVRTTkVSZWR1Y2VyIGV4dGVuZHMgTXVsdGlDb2x1bW5SZWR1Y2VyIHtcbiAgICByZWR1Y2VyO1xuICAgIGl0ZXJhdGlvbnM7XG4gICAgZGlzdGFuY2VGbmFtZXM7XG4gICAgZGlzdGFuY2VGbnM7XG4gICAgZGlzdGFuY2VGbkFyZ3M7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBUU05FUmVkdWNlci5cbiAgICAgKiBAcGFyYW0ge09wdGlvbnN9IG9wdGlvbnMgT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBAbWVtYmVyb2YgVFNORVJlZHVjZXJcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLnJlZHVjZXIgPSBuZXcgVFNORShvcHRpb25zKTtcbiAgICAgICAgdGhpcy5pdGVyYXRpb25zID0gb3B0aW9ucz8uaXRlcmF0aW9ucyA/PyAxMDA7XG4gICAgICAgIHRoaXMuZGlzdGFuY2VGbmFtZXMgPSBvcHRpb25zLmRpc3RhbmNlRm5hbWVzO1xuICAgICAgICB0aGlzLmRpc3RhbmNlRm5zID0gb3B0aW9ucy5kaXN0YW5jZUZucztcbiAgICAgICAgdGhpcy5kaXN0YW5jZUZuQXJncyA9IG9wdGlvbnMuZGlzdGFuY2VGbkFyZ3M7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEVtYmVkcyB0aGUgZGF0YSBnaXZlbiBpbnRvIHRoZSB0d28tZGltZW5zaW9uYWwgc3BhY2UgdXNpbmcgdC1TTkUgbWV0aG9kLlxcXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbcGFyYWxsZWxEaXN0YW5jZVdvcmtlcnNdIFdoZXRoZXIgdG8gdXNlIHBhcmFsbGVsIGRpc3RhbmNlIHdvcmtlcnMuXG4gICAgICogQHJldHVybiB7YW55fSBDYXJ0ZXNpYW4gY29vcmRpbmF0ZSBvZiB0aGlzIGVtYmVkZGluZyBhbmQgZGlzdGFuY2UgbWF0cml4IHdoZXJlIGFwcGxpY2FibGUuXG4gICAgICovXG4gICAgYXN5bmMgdHJhbnNmb3JtKCkge1xuICAgICAgICBpZiAodGhpcy5kYXRhWzBdLmxlbmd0aCA+IDEwMDAwKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYXhpbXVtIG51bWJlciBvZiBzYW1wbGVzIGZvciBULVNORSBpcyAxMDAwMCcpO1xuICAgICAgICBjb25zdCBtYXRyaXhTZXJ2aWNlID0gbmV3IERpc3RhbmNlTWF0cml4U2VydmljZSh0cnVlLCBmYWxzZSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBhZ2dyZWdhdGUgPSBnZXRBZ2dyZWdhdGlvbkZ1bmN0aW9uKHRoaXMuYWdncmVnYXRpb25NZXRob2QsIHRoaXMud2VpZ2h0cyk7XG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlzdCA9IGF3YWl0IG1hdHJpeFNlcnZpY2UuY2FsYyh0aGlzLmRhdGFbaV0sIHRoaXMuZGlzdGFuY2VGbmFtZXNbaV0sIGZhbHNlLCB0aGlzLmRpc3RhbmNlRm5BcmdzW2ldKTtcbiAgICAgICAgICAgICAgICBkaXN0YW5jZXMucHVzaChkaXN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlID0gbmV3IEZsb2F0MzJBcnJheShkaXN0YW5jZXNbMF0ubGVuZ3RoKS5maWxsKDApO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaXN0YW5jZXNbMF0ubGVuZ3RoOyArK2kpXG4gICAgICAgICAgICAgICAgZGlzdGFuY2VbaV0gPSBhZ2dyZWdhdGUoZGlzdGFuY2VzLm1hcCgoZCkgPT4gZFtpXSkpO1xuICAgICAgICAgICAgY29uc3QgbWF0cml4UHJveHkgPSBkaXN0YW5jZU1hdHJpeFByb3h5KGRpc3RhbmNlLCB0aGlzLmRhdGFbMF0ubGVuZ3RoKTtcbiAgICAgICAgICAgIHRoaXMucmVkdWNlci5pbml0RGF0YURpc3QobWF0cml4UHJveHkpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLml0ZXJhdGlvbnM7ICsraSlcbiAgICAgICAgICAgICAgICB0aGlzLnJlZHVjZXIuc3RlcCgpOyAvLyBldmVyeSB0aW1lIHlvdSBjYWxsIHRoaXMsIHNvbHV0aW9uIGdldHMgYmV0dGVyXG4gICAgICAgICAgICBtYXRyaXhTZXJ2aWNlLnRlcm1pbmF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVkdWNlci5nZXRTb2x1dGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICBtYXRyaXhTZXJ2aWNlLnRlcm1pbmF0ZSgpO1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmNsYXNzIE11bHRpVU1BUFJlZHVjZXIgZXh0ZW5kcyBNdWx0aUNvbHVtblJlZHVjZXIge1xuICAgIHJlZHVjZXI7XG4gICAgZGlzdGFuY2VGbmFtZXM7XG4gICAgZGlzdGFuY2VGbnM7XG4gICAgdmVjdG9ycztcbiAgICBwcm9ncmVzc0Z1bmM7XG4gICAgZGlzdGFuY2VGbkFyZ3M7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBVTUFQUmVkdWNlci5cbiAgICAgKiBAcGFyYW0ge09wdGlvbnN9IG9wdGlvbnMgT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBAbWVtYmVyb2YgVU1BUFJlZHVjZXJcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICBhc3NlcnQoJ2Rpc3RhbmNlRm5hbWVzJyBpbiBvcHRpb25zKTtcbiAgICAgICAgYXNzZXJ0KCdkaXN0YW5jZUZucycgaW4gb3B0aW9ucyk7XG4gICAgICAgIHRoaXMuZGlzdGFuY2VGbkFyZ3MgPSBvcHRpb25zLmRpc3RhbmNlRm5BcmdzO1xuICAgICAgICB0aGlzLmRpc3RhbmNlRm5zID0gb3B0aW9ucy5kaXN0YW5jZUZucztcbiAgICAgICAgdGhpcy5wcm9ncmVzc0Z1bmMgPSBvcHRpb25zLnByb2dyZXNzRnVuYztcbiAgICAgICAgdGhpcy5kaXN0YW5jZUZuYW1lcyA9IG9wdGlvbnMuZGlzdGFuY2VGbmFtZXM7XG4gICAgICAgIC8vVW1hcCB1c2VzIHZlY3RvciBpbmRleGluZywgc28gd2UgbmVlZCB0byBjcmVhdGUgYW4gYXJyYXkgb2YgdmVjdG9ycyBhcyBpbmRlY2VzLlxuICAgICAgICB0aGlzLnZlY3RvcnMgPSBuZXcgQXJyYXkodGhpcy5kYXRhWzBdLmxlbmd0aCkuZmlsbCgwKS5tYXAoKF8sIGkpID0+IGkpO1xuICAgICAgICBpZiAodGhpcy5kYXRhWzBdLmxlbmd0aCA8IDE1KVxuICAgICAgICAgICAgb3B0aW9ucy5uTmVpZ2hib3JzID0gdGhpcy5kYXRhWzBdLmxlbmd0aCAtIDE7XG4gICAgICAgIHRoaXMucmVkdWNlciA9IG5ldyBVTUFQKG9wdGlvbnMpO1xuICAgICAgICAvLyB0aGlzLnJlZHVjZXIuZGlzdGFuY2VGbiA9IHRoaXMuX2VuY29kZWREaXN0YW5jZS5iaW5kKHRoaXMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFbWJlZHMgdGhlIGRhdGEgZ2l2ZW4gaW50byB0aGUgdHdvLWRpbWVuc2lvbmFsIHNwYWNlIHVzaW5nIFVNQVAgbWV0aG9kLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW19wYXJhbGxlbERpc3RhbmNlV29ya2Vyc10gV2hldGhlciB0byB1c2UgcGFyYWxsZWwgZGlzdGFuY2UgbWF0cml4IHdvcmtlcnMuXG4gICAgICogQHJldHVybiB7YW55fSBDYXJ0ZXNpYW4gY29vcmRpbmF0ZSBvZiB0aGlzIGVtYmVkZGluZy5cbiAgICAgKi9cbiAgICBhc3luYyB0cmFuc2Zvcm0oX3BhcmFsbGVsRGlzdGFuY2VXb3JrZXJzKSB7XG4gICAgICAgIGNvbnNvbGUudGltZSgna25uIGdyYXBoJyk7XG4gICAgICAgIGNvbnN0IGtublJlcyA9IGF3YWl0IG5ldyBTcGFyc2VNYXRyaXhTZXJ2aWNlKClcbiAgICAgICAgICAgIC5tdWx0aUNvbHVtbktOTih0aGlzLmRhdGEsIHRoaXMuZGlzdGFuY2VGbmFtZXMsIHRoaXMucmVkdWNlci5uZWlnaGJvcnMsIHRoaXMuZGlzdGFuY2VGbkFyZ3MsIHRoaXMud2VpZ2h0cywgdGhpcy5hZ2dyZWdhdGlvbk1ldGhvZCk7XG4gICAgICAgIGNvbnNvbGUudGltZUVuZCgna25uIGdyYXBoJyk7XG4gICAgICAgIHRoaXMucmVkdWNlci5zZXRQcmVjb21wdXRlZEtOTihrbm5SZXMua25uSW5kZXhlcywga25uUmVzLmtubkRpc3RhbmNlcyk7XG4gICAgICAgIC8vIG5lZWRlZCBzbyB0aGF0IGdhcmJhZ2UgY29sbGVjdG9yIGNhbiBmcmVlIG1lbW9yeSBmcm9tIGRpc3RhbmNlIG1hdHJpeFxuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGVtYmVkZGluZyA9IGF3YWl0IHRoaXMucmVkdWNlci5maXRBc3luYyh0aGlzLnZlY3RvcnMsIChlcG9jKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcm9ncmVzc0Z1bmMpXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9ncmVzc0Z1bmMoZXBvYywgdGhpcy5yZWR1Y2VyLmdldE5FcG9jaHMoKSwgdGhpcy5yZWR1Y2VyLmdldEVtYmVkZGluZygpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGZ1bmN0aW9uIGFycmF5Q2FzdDJDb29yZGluYXRlcyhkYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEFycmF5KGRhdGEubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaSkgPT4gKFZlY3Rvci5mcm9tKGRhdGFbaV0pKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFycmF5Q2FzdDJDb29yZGluYXRlcyhlbWJlZGRpbmcpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBNdWx0aUNvbERpbVJlZHVjZXIge1xuICAgIHJlZHVjZXI7XG4gICAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgRGltZW5zaW9uYWxpdHlSZWR1Y2VyLlxuICAgKiBAcGFyYW0ge2FueVtdfSBkYXRhIFZlY3RvcnMgdG8gZW1iZWQuXG4gICAqIEBwYXJhbSB7S25vd25NZXRob2RzfSBtZXRob2QgRW1iZWRkaW5nIG1ldGhvZCB0byBiZSBhcHBsaWVkXG4gICAqIEBwYXJhbSB7S25vd25NZXRyaWNzfSBtZXRyaWMgRGlzdGFuY2UgbWV0cmljIHRvIGJlIGNvbXB1dGVkIGJldHdlZW4gZWFjaCBvZiB0aGUgdmVjdG9ycy5cbiAgICogQHBhcmFtIHtPcHRpb25zfSBbb3B0aW9uc10gT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBpbXBsZW1lbnRpbmcgZW1iZWRkZXJzLlxuICAgKiBAbWVtYmVyb2YgRGltZW5zaW9uYWxpdHlSZWR1Y2VyXG4gICAqL1xuICAgIGNvbnN0cnVjdG9yKGRhdGEsIG1ldGhvZCwgbWV0cmljcywgd2VpZ2h0cywgZGlzdGFuY2VBZ2dyZWdhdGlvbiwgb3B0aW9ucykge1xuICAgICAgICBjb25zdCBtZWFzdXJlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpZHggPSAwOyBpZHggPCBtZXRyaWNzLmxlbmd0aDsgKytpZHgpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lYXN1cmUgPSBuZXcgTWVhc3VyZShtZXRyaWNzW2lkeF0pLmdldE1lYXN1cmUob3B0aW9ucy5kaXN0YW5jZUZuQXJnc1tpZHhdKTtcbiAgICAgICAgICAgIG1lYXN1cmVzLnB1c2gobWVhc3VyZSk7XG4gICAgICAgICAgICBsZXQgYml0QXJyYXlMZW5ndGggPSAyMDQ4O1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhW2lkeF0ubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YVtpZHhdW2ldICYmIGRhdGFbaWR4XVtpXS5fbGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGJpdEFycmF5TGVuZ3RoID0gZGF0YVtpZHhdW2ldLl9sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0JpdEFycmF5TWV0cmljKG1ldHJpY3NbaWR4XSkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGFbaWR4XS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YVtpZHhdW2ldICYmIGRhdGFbaWR4XVtpXS5fZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbaWR4XVtpXSA9IG5ldyBCaXRBcnJheShkYXRhW2lkeF1baV0uX2RhdGEsIGRhdGFbaWR4XVtpXS5fbGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtpZHhdW2ldID0gbmV3IEJpdEFycmF5KGJpdEFycmF5TGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1ldGhvZCA9PSAnVU1BUCcpIHtcbiAgICAgICAgICAgIHRoaXMucmVkdWNlciA9IG5ldyBNdWx0aVVNQVBSZWR1Y2VyKHtcbiAgICAgICAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgICAgICAgIGRpc3RhbmNlRm5hbWVzOiBtZXRyaWNzLFxuICAgICAgICAgICAgICAgIGRpc3RhbmNlRm5zOiBtZWFzdXJlcyxcbiAgICAgICAgICAgICAgICBkaXN0YW5jZUZuQXJnczogb3B0aW9ucy5kaXN0YW5jZUZuQXJncyxcbiAgICAgICAgICAgICAgICB3ZWlnaHRzOiB3ZWlnaHRzLFxuICAgICAgICAgICAgICAgIGFnZ3JlZ2F0aW9uTWV0aG9kOiBkaXN0YW5jZUFnZ3JlZ2F0aW9uLFxuICAgICAgICAgICAgICAgIC4uLm9wdGlvbnNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1ldGhvZCA9PSAndC1TTkUnKSB7XG4gICAgICAgICAgICB0aGlzLnJlZHVjZXIgPSBuZXcgTXVsdGlUU05FUmVkdWNlcih7XG4gICAgICAgICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICAgICAgICBkaXN0YW5jZUZuYW1lczogbWV0cmljcyxcbiAgICAgICAgICAgICAgICBkaXN0YW5jZUZuczogbWVhc3VyZXMsXG4gICAgICAgICAgICAgICAgZGlzdGFuY2VGbkFyZ3M6IG9wdGlvbnMuZGlzdGFuY2VGbkFyZ3MsXG4gICAgICAgICAgICAgICAgd2VpZ2h0czogd2VpZ2h0cyxcbiAgICAgICAgICAgICAgICBhZ2dyZWdhdGlvbk1ldGhvZDogZGlzdGFuY2VBZ2dyZWdhdGlvbixcbiAgICAgICAgICAgICAgICAuLi5vcHRpb25zXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICogRW1iZWRzIHRoZSBkYXRhIGdpdmVuIGludG8gdGhlIHR3by1kaW1lbnNpb25hbCBzcGFjZSB1c2luZyB0aGUgY2hvc2VuIG1ldGhvZC5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSB0cmFuc3Bvc2UgV2hldGhlciB0byB0cmFuc2Zvcm0gY29vcmRpbmF0ZXMgdG8gaGF2ZSBjb2x1bW5zLWZpcnN0IG9yaWVudGF0aW9uLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHBhcmFsbGVsRGlzdGFuY2VXb3JrZXJzIFdoZXRoZXIgdG8gdXNlIHBhcmFsbGVsIGRpc3RhbmNlIGNvbXB1dGF0aW9uLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGVtYmVkZGluZyBtZXRob2Qgd2FzIG5vdCBmb3VuZC5cbiAgICogQHJldHVybiB7YW55fSBDYXJ0ZXNpYW4gY29vcmRpbmF0ZSBvZiB0aGlzIGVtYmVkZGluZyBhbmQgZGlzdGFuY2UgbWF0cml4IHdoZXJlIGFwcGxpY2FibGUuXG4gICAqIEBtZW1iZXJvZiBEaW1lbnNpb25hbGl0eVJlZHVjZXJcbiAgICovXG4gICAgYXN5bmMgdHJhbnNmb3JtKHRyYW5zcG9zZSA9IGZhbHNlKSB7XG4gICAgICAgIGlmICh0aGlzLnJlZHVjZXIgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVkdWNlciB3YXMgbm90IGRlZmluZWQuJyk7XG4gICAgICAgIGxldCBlbWJlZGRpbmcgPSBhd2FpdCB0aGlzLnJlZHVjZXIudHJhbnNmb3JtKCk7XG4gICAgICAgIGlmICh0cmFuc3Bvc2UpXG4gICAgICAgICAgICBlbWJlZGRpbmcgPSB0cmFuc3Bvc2VNYXRyaXgoZW1iZWRkaW5nKTtcbiAgICAgICAgcmV0dXJuIGVtYmVkZGluZztcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2liWFZzZEdrdFkyOXNkVzF1TFdScGJTMXlaV1IxWTJWeUxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpYlhWc2RHa3RZMjlzZFcxdUxXUnBiUzF5WldSMVkyVnlMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxFOUJRVThzUlVGQkswTXNUVUZCVFN4RlFVRlZMRTFCUXk5RUxHbEVRVUZwUkN4RFFVRkRPMEZCUTNwRUxFOUJRVThzUlVGQlF5eEpRVUZKTEVWQlFVTXNUVUZCVFN4bFFVRmxMRU5CUVVNN1FVRkRia01zVDBGQlR5eEZRVUZsTEU5QlFVOHNSVUZCUlN4blFrRkJaMElzUlVGQlF5eE5RVUZOTEd0Q1FVRnJRaXhEUVVGRE8wRkJRM3BGTEU5QlFVOHNSVUZCUXl4eFFrRkJjVUlzUlVGQlJTeHRRa0ZCYlVJc1JVRkJReXhOUVVGTkxHOUNRVUZ2UWl4RFFVRkRPMEZCUXpsRkxFOUJRVThzUlVGQlF5eHpRa0ZCYzBJc1JVRkJReXhOUVVGTkxEQkNRVUV3UWl4RFFVRkRPMEZCUldoRkxFOUJRVThzUlVGQlF5eEpRVUZKTEVWQlFVTXNUVUZCVFN4VFFVRlRMRU5CUVVNN1FVRkROMElzVDBGQlR5eEZRVUZETEUxQlFVMHNSVUZCUlN4bFFVRmxMRVZCUVVNc1RVRkJUU3hwUkVGQmFVUXNRMEZCUXp0QlFVTjRSaXhQUVVGUExFVkJRVU1zYlVKQlFXMUNMRVZCUVVNc1RVRkJUU3d3UTBGQk1FTXNRMEZCUXp0QlFVVTNSU3hQUVVGUExGRkJRVkVzVFVGQlRTeDVRMEZCZVVNc1EwRkJRenRCUVhkQ0wwUXNUVUZCWlN4clFrRkJhMEk3U1VGRGJrSXNTVUZCU1N4RFFVRlpPMGxCUTJoQ0xFOUJRVThzUTBGQlZ6dEpRVU5zUWl4cFFrRkJhVUlzUTBGQk5FSTdTVUZEZGtRc1dVRkJXU3hQUVVGblFqdFJRVU14UWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTTdVVUZEZWtJc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRPMUZCUXk5Q0xFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1IwRkJSeXhQUVVGUExFTkJRVU1zYVVKQlFXbENMRU5CUVVNN1NVRkRja1FzUTBGQlF6dERRVXRLTzBGQlJVUXNUVUZCVFN4blFrRkJhVUlzVTBGQlVTeHJRa0ZCYTBJN1NVRkRia01zVDBGQlR5eERRVUZQTzBsQlEyUXNWVUZCVlN4RFFVRlRPMGxCUTI1Q0xHTkJRV01zUTBGQmFVSTdTVUZETDBJc1YwRkJWeXhEUVVGcFF6dEpRVU0xUXl4alFVRmpMRU5CUVhWQ08wbEJSUzlET3pzN08wOUJTVWM3U1VGRFNDeFpRVUZaTEU5QlFXZENPMUZCUXpGQ0xFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0UlFVTm1MRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkRha01zU1VGQlNTeERRVUZETEZWQlFWVXNSMEZCUnl4UFFVRlBMRVZCUVVVc1ZVRkJWU3hKUVVGSkxFZEJRVWNzUTBGQlF6dFJRVU0zUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhIUVVGSExFOUJRVThzUTBGQlF5eGpRVUZqTEVOQlFVTTdVVUZETjBNc1NVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eFBRVUZQTEVOQlFVTXNWMEZCVnl4RFFVRkRPMUZCUTNaRExFbEJRVWtzUTBGQlF5eGpRVUZqTEVkQlFVY3NUMEZCVHl4RFFVRkRMR05CUVdNc1EwRkJRenRKUVVNdlF5eERRVUZETzBsQlJVUTdPenM3VDBGSlJ6dEpRVU5KTEV0QlFVc3NRMEZCUXl4VFFVRlRPMUZCUTNCQ0xFbEJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzUzBGQlN6dFpRVU0zUWl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExEaERRVUU0UXl4RFFVRkRMRU5CUVVNN1VVRkRiRVVzVFVGQlRTeGhRVUZoTEVkQlFVY3NTVUZCU1N4eFFrRkJjVUlzUTBGQlF5eEpRVUZKTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkROMFFzU1VGQlNUdFpRVU5HTEUxQlFVMHNVMEZCVXl4SFFVRkhMSE5DUVVGelFpeERRVUZETEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUlVGQlJTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1dVRkRMMFVzVFVGQlRTeFRRVUZUTEVkQlFYZENMRVZCUVVVc1EwRkJRenRaUVVNeFF5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3WjBKQlEzcERMRTFCUVUwc1NVRkJTU3hIUVVGSExFMUJRVTBzWVVGQllTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUzBGQlN5eEZRVUZGTEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZETTBjc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0aFFVTjBRanRaUVVORUxFMUJRVTBzVVVGQlVTeEhRVUZITEVsQlFVa3NXVUZCV1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGREwwUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETzJkQ1FVTXhReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NVMEZCVXl4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEZEVRc1RVRkJUU3hYUVVGWExFZEJRVWNzYlVKQlFXMUNMRU5CUVVNc1VVRkJVU3hGUVVGRkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03V1VGRGRrVXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhaUVVGWkxFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTTdXVUZGZGtNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhWUVVGVkxFVkJRVVVzUlVGQlJTeERRVUZETzJkQ1FVTjBReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc2FVUkJRV2xFTzFsQlEzaEZMR0ZCUVdFc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF6dFpRVU14UWl4UFFVRlBMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTTdVMEZEYmtNN1VVRkJReXhQUVVGUExFTkJRVU1zUlVGQlJUdFpRVU5XTEdGQlFXRXNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenRaUVVNeFFpeE5RVUZOTEVOQlFVTXNRMEZCUXp0VFFVTlVPMGxCUTBnc1EwRkJRenREUVVOS08wRkJSVVFzVFVGQlRTeG5Ra0ZCYVVJc1UwRkJVU3hyUWtGQmEwSTdTVUZEYmtNc1QwRkJUeXhEUVVGUE8wbEJRMlFzWTBGQll5eERRVUZwUWp0SlFVTXZRaXhYUVVGWExFTkJRV0U3U1VGRGVFSXNUMEZCVHl4RFFVRlhPMGxCUTJ4Q0xGbEJRVmtzUTBGQmQwVTdTVUZEY0VZc1kwRkJZeXhEUVVGMVFqdEpRVU12UXpzN096dFBRVWxITzBsQlEwZ3NXVUZCV1N4UFFVRm5RanRSUVVNeFFpeExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkRaaXhOUVVGTkxFTkJRVU1zWjBKQlFXZENMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGRGNFTXNUVUZCVFN4RFFVRkRMR0ZCUVdFc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF6dFJRVU5xUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhIUVVGSExFOUJRVThzUTBGQlF5eGpRVUZqTEVOQlFVTTdVVUZETjBNc1NVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eFBRVUZQTEVOQlFVTXNWMEZCV1N4RFFVRkRPMUZCUTNoRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NUMEZCVHl4RFFVRkRMRmxCUVZrc1EwRkJRenRSUVVWNlF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4SFFVRkhMRTlCUVU4c1EwRkJReXhqUVVGbExFTkJRVU03VVVGRE9VTXNhVVpCUVdsR08xRkJRMnBHTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRmRrVXNTVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNSMEZCUnl4RlFVRkZPMWxCUXpGQ0xFOUJRVThzUTBGQlF5eFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUXk5RExFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGRGFrTXNPRVJCUVRoRU8wbEJRMmhGTEVOQlFVTTdTVUZGUkRzN096dFBRVWxITzBsQlEwa3NTMEZCU3l4RFFVRkRMRk5CUVZNc1EwRkJReXgzUWtGQmEwTTdVVUZEZGtRc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXp0UlFVTXhRaXhOUVVGTkxFMUJRVTBzUjBGQlJ5eE5RVUZOTEVsQlFVa3NiVUpCUVcxQ0xFVkJRVVU3WVVGRE0wTXNZMEZCWXl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEdOQlFXTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExGTkJRVk1zUlVGRGNFVXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3hKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETzFGQlF5OUVMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTTdVVUZETjBJc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhOUVVGTkxFTkJRVU1zVlVGQlZTeEZRVUZGTEUxQlFVMHNRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJRenRSUVVWMlJTeDNSVUZCZDBVN1VVRkRlRVVzVFVGQlRTeEpRVUZKTEU5QlFVOHNRMEZCVHl4RFFVRkRMRTlCUVU4c1JVRkJSU3hGUVVGRk8xbEJRMnhETEZWQlFWVXNRMEZCUXl4SFFVRkhMRVZCUVVVN1owSkJRMlFzVDBGQlR5eEZRVUZGTEVOQlFVTTdXVUZEV2l4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRFZpeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVVklMRTFCUVUwc1UwRkJVeXhIUVVGSExFMUJRVTBzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETEVsQlFVa3NSVUZCUlN4RlFVRkZPMWxCUTI1RkxFbEJRVWtzU1VGQlNTeERRVUZETEZsQlFWazdaMEpCUTI1Q0xFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlZTeEZRVUZGTEVWQlFVVXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhaUVVGWkxFVkJRVVVzUTBGQlF5eERRVUZETzFGQlEzQkdMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSVWdzVTBGQlV5eHhRa0ZCY1VJc1EwRkJReXhKUVVGblFqdFpRVU0zUXl4UFFVRlBMRWxCUVVrc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTTVSU3hEUVVGRE8xRkJSVVFzVDBGQlR5eHhRa0ZCY1VJc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6dEpRVU14UXl4RFFVRkRPME5CUTBvN1FVRkZSQ3hOUVVGTkxFOUJRVThzYTBKQlFXdENPMGxCUTI1Q0xFOUJRVThzUTBGQmFVTTdTVUZEYUVRN096czdPenM3UzBGUFF6dEpRVU5FTEZsQlFWa3NTVUZCYTBJc1JVRkJSU3hOUVVFeVFpeEZRVUZGTEU5QlFYVkNMRVZCUTJ4R0xFOUJRV2xDTEVWQlFVVXNiVUpCUVRoRExFVkJRVVVzVDBGQlowSTdVVUZEYmtZc1RVRkJUU3hSUVVGUkxFZEJRWEZDTEVWQlFVVXNRMEZCUXp0UlFVTjBReXhMUVVGTExFbEJRVWtzUjBGQlJ5eEhRVUZITEVOQlFVTXNSVUZCUlN4SFFVRkhMRWRCUVVjc1QwRkJUeXhEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZGTEVkQlFVY3NSVUZCUlR0WlFVTTNReXhOUVVGTkxFOUJRVThzUjBGQlJ5eEpRVUZKTEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eFZRVUZWTEVOQlFVTXNUMEZCVHl4RFFVRkRMR05CUVdNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEyeEdMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdXVUZEZGtJc1NVRkJTU3hqUVVGakxFZEJRVWNzU1VGQlNTeERRVUZETzFsQlF6RkNMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMmRDUVVONlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eEZRVUZGTzI5Q1FVTjRReXhqUVVGakxFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF6dHZRa0ZEZEVNc1RVRkJUVHRwUWtGRFVEdGhRVU5HTzFsQlEwUXNTVUZCU1N4blFrRkJaMElzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSVHRuUWtGRGJFTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdiMEpCUTNwRExFbEJRVWtzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTE8zZENRVU53UXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03TzNkQ1FVVjBSU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hSUVVGUkxFTkJRVU1zWTBGQll5eERRVUZETEVOQlFVTTdhVUpCUXk5RE8yRkJRMFk3VTBGRFJqdFJRVVZFTEVsQlFVa3NUVUZCVFN4SlFVRkpMRTFCUVUwc1JVRkJSVHRaUVVOd1FpeEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWxCUVVrc1owSkJRV2RDTEVOQlFVTTdaMEpCUTJ4RExFbEJRVWtzUlVGQlJTeEpRVUZKTzJkQ1FVTldMR05CUVdNc1JVRkJSU3hQUVVGUE8yZENRVU4yUWl4WFFVRlhMRVZCUVVVc1VVRkJVVHRuUWtGRGNrSXNZMEZCWXl4RlFVRkZMRTlCUVU4c1EwRkJReXhqUVVGak8yZENRVU4wUXl4UFFVRlBMRVZCUVVVc1QwRkJUenRuUWtGRGFFSXNhVUpCUVdsQ0xFVkJRVVVzYlVKQlFXMUNPMmRDUVVOMFF5eEhRVUZITEU5QlFVODdZVUZEV0N4RFFVRkRMRU5CUVVNN1UwRkRTanRoUVVGTkxFbEJRVWtzVFVGQlRTeEpRVUZKTEU5QlFVOHNSVUZCUlR0WlFVTTFRaXhKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NaMEpCUVdkQ0xFTkJRVU03WjBKQlEyeERMRWxCUVVrc1JVRkJSU3hKUVVGSk8yZENRVU5XTEdOQlFXTXNSVUZCUlN4UFFVRlBPMmRDUVVOMlFpeFhRVUZYTEVWQlFVVXNVVUZCVVR0blFrRkRja0lzWTBGQll5eEZRVUZGTEU5QlFVOHNRMEZCUXl4alFVRmpPMmRDUVVOMFF5eFBRVUZQTEVWQlFVVXNUMEZCVHp0blFrRkRhRUlzYVVKQlFXbENMRVZCUVVVc2JVSkJRVzFDTzJkQ1FVTjBReXhIUVVGSExFOUJRVTg3WVVGRFdDeERRVUZETEVOQlFVTTdVMEZEU2p0SlFVTklMRU5CUVVNN1NVRkZSRHM3T3pzN096czdTMEZSUXp0SlFVTk5MRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRVU1zV1VGQmNVSXNTMEZCU3p0UlFVTXZReXhKUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEV0QlFVc3NVMEZCVXp0WlFVTTFRaXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETERCQ1FVRXdRaXhEUVVGRExFTkJRVU03VVVGRk9VTXNTVUZCU1N4VFFVRlRMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMUZCUlM5RExFbEJRVWtzVTBGQlV6dFpRVU5ZTEZOQlFWTXNSMEZCUnl4bFFVRmxMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU03VVVGRmVrTXNUMEZCVHl4VFFVRlRMRU5CUVVNN1NVRkRia0lzUTBGQlF6dERRVU5LSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUh0RGIyOXlaR2x1WVhSbGN5d2dSR2x6ZEdGdVkyVk5aWFJ5YVdNc0lFMWhkSEpwZUN3Z1QzQjBhVzl1Y3l3Z1ZtVmpkRzl5TENCV1pXTjBiM0p6ZlZ4dUlDQm1jbTl0SUNkQVpHRjBZV2R5YjJzdGJHbGljbUZ5YVdWekwzVjBhV3h6TDNOeVl5OTBlWEJsTFdSbFkyeGhjbUYwYVc5dWN5YzdYRzVwYlhCdmNuUWdlMVJUVGtWOUlHWnliMjBnSjBCclpXTnJaV3gwTDNSemJtVW5PMXh1YVcxd2IzSjBJSHRMYm05M2JrMWxkSEpwWTNNc0lFMWxZWE4xY21Vc0lHbHpRbWwwUVhKeVlYbE5aWFJ5YVdOOUlHWnliMjBnSnk0dUwzUjVjR1ZrTFcxbGRISnBZM01uTzF4dWFXMXdiM0owSUh0RWFYTjBZVzVqWlUxaGRISnBlRk5sY25acFkyVXNJR1JwYzNSaGJtTmxUV0YwY21sNFVISnZlSGw5SUdaeWIyMGdKeTR1TDJScGMzUmhibU5sTFcxaGRISnBlQ2M3WEc1cGJYQnZjblFnZTJkbGRFRm5aM0psWjJGMGFXOXVSblZ1WTNScGIyNTlJR1p5YjIwZ0p5NHVMMlJwYzNSaGJtTmxMVzFoZEhKcGVDOTFkR2xzY3ljN1hHNXBiWEJ2Y25RZ2UwUnBjM1JoYm1ObFFXZG5jbVZuWVhScGIyNU5aWFJvYjJSOUlHWnliMjBnSnk0dUwyUnBjM1JoYm1ObExXMWhkSEpwZUM5MGVYQmxjeWM3WEc1cGJYQnZjblFnZTFWTlFWQjlJR1p5YjIwZ0p5NHVMM1Z0WVhBbk8xeHVhVzF3YjNKMElIdGhjM05sY25Rc0lIUnlZVzV6Y0c5elpVMWhkSEpwZUgwZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdmRtVmpkRzl5TFc5d1pYSmhkR2x2Ym5Nbk8xeHVhVzF3YjNKMElIdFRjR0Z5YzJWTllYUnlhWGhUWlhKMmFXTmxmU0JtY205dElDY3VMaTlrYVhOMFlXNWpaUzF0WVhSeWFYZ3ZjM0JoY25ObExXMWhkSEpwZUMxelpYSjJhV05sSnp0Y2JtbHRjRzl5ZENCN1JHbHRVbVZrZFdOMGFXOXVUV1YwYUc5a2MzMGdabkp2YlNBbkxpOTBlWEJsY3ljN1hHNXBiWEJ2Y25RZ1FtbDBRWEp5WVhrZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdlltbDBMV0Z5Y21GNUp6dGNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdTVlZOUVZCUGNIUnBiMjV6SUh0Y2JpQWdJQ0JzWldGeWJtbHVaMUpoZEdVL09pQnVkVzFpWlhJN1hHNGdJQ0FnYmtOdmJYQnZibVZ1ZEhNL09pQnVkVzFpWlhJN1hHNGdJQ0FnYmtWd2IyTm9jejg2SUc1MWJXSmxjanRjYmlBZ0lDQnVUbVZwWjJoaWIzSnpQem9nYm5WdFltVnlPMXh1SUNBZ0lITndjbVZoWkQ4NklHNTFiV0psY2p0Y2JpQWdJQ0J0YVc1RWFYTjBQem9nYm5WdFltVnlPMXh1SUNBZ0lIQnliMmR5WlhOelJuVnVZejg2SUNobGNHOWpPaUJ1ZFcxaVpYSXNJR1Z3YjJOb2MweGxibWQwYURvZ2JuVnRZbVZ5TENCbGJXSmxaR1JwYm1kek9pQnVkVzFpWlhKYlhWdGRLU0E5UGlCMmIybGtPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElFbFVVMDVGVDNCMGFXOXVjeUI3WEc0Z0lDQWdaWEJ6YVd4dmJqODZJRzUxYldKbGNqdGNiaUFnSUNCd1pYSndiR1Y0YVhSNVB6b2diblZ0WW1WeU8xeHVJQ0FnSUdScGJUODZJRzUxYldKbGNqdGNibjFjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCSlJHbHRVbVZrZFdOMGFXOXVVR0Z5WVcwZ2UxeHVJQ0FnSUhWcFRtRnRaVG9nYzNSeWFXNW5PMXh1SUNBZ0lIWmhiSFZsT2lCdWRXMWlaWElnZkNCdWRXeHNPMXh1SUNBZ0lIUnZiMngwYVhBNklITjBjbWx1Wnp0Y2JpQWdJQ0J3YkdGalpXaHZiR1JsY2o4NklITjBjbWx1Wnp0Y2JuMWNibHh1WVdKemRISmhZM1FnWTJ4aGMzTWdUWFZzZEdsRGIyeDFiVzVTWldSMVkyVnlJSHRjYmlBZ0lDQndjbTkwWldOMFpXUWdaR0YwWVRvZ1ZtVmpkRzl5YzF0ZE8xeHVJQ0FnSUhCeWIzUmxZM1JsWkNCM1pXbG5hSFJ6T2lCdWRXMWlaWEpiWFR0Y2JpQWdJQ0J3Y205MFpXTjBaV1FnWVdkbmNtVm5ZWFJwYjI1TlpYUm9iMlE2SUVScGMzUmhibU5sUVdkbmNtVm5ZWFJwYjI1TlpYUm9iMlE3WEc0Z0lDQWdZMjl1YzNSeWRXTjBiM0lvYjNCMGFXOXVjem9nVDNCMGFXOXVjeWtnZTF4dUlDQWdJQ0FnZEdocGN5NWtZWFJoSUQwZ2IzQjBhVzl1Y3k1a1lYUmhPMXh1SUNBZ0lDQWdkR2hwY3k1M1pXbG5hSFJ6SUQwZ2IzQjBhVzl1Y3k1M1pXbG5hSFJ6TzF4dUlDQWdJQ0FnZEdocGN5NWhaMmR5WldkaGRHbHZiazFsZEdodlpDQTlJRzl3ZEdsdmJuTXVZV2RuY21WbllYUnBiMjVOWlhSb2IyUTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5b3FJRVZ0WW1Wa2N5QjBhR1VnWkdGMFlTQm5hWFpsYmlCcGJuUnZJSFJvWlNCMGQyOHRaR2x0Wlc1emFXOXVZV3dnYzNCaFkyVXVYRzRnSUNBZ0lDb2dRSEpsZEhWeWJpQjdZVzU1ZlNCRFlYSjBaWE5wWVc0Z1kyOXZjbVJwYm1GMFpTQnZaaUIwYUdseklHVnRZbVZrWkdsdVp5QmhibVFnWkdsemRHRnVZMlVnYldGMGNtbDRJSGRvWlhKbElHRndjR3hwWTJGaWJHVXVJQ292WEc0Z0lDQWdZV0p6ZEhKaFkzUWdkSEpoYm5ObWIzSnRLQ2s2SUZCeWIyMXBjMlU4VFdGMGNtbDRQanRjYm4xY2JseHVZMnhoYzNNZ1RYVnNkR2xVVTA1RlVtVmtkV05sY2lCbGVIUmxibVJ6SUUxMWJIUnBRMjlzZFcxdVVtVmtkV05sY2lCN1hHNGdJQ0FnY0hKdmRHVmpkR1ZrSUhKbFpIVmpaWEk2SUZSVFRrVTdYRzRnSUNBZ2NISnZkR1ZqZEdWa0lHbDBaWEpoZEdsdmJuTTZJRzUxYldKbGNqdGNiaUFnSUNCd2NtOTBaV04wWldRZ1pHbHpkR0Z1WTJWR2JtRnRaWE02SUV0dWIzZHVUV1YwY21samMxdGRPMXh1SUNBZ0lIQnliM1JsWTNSbFpDQmthWE4wWVc1alpVWnVjem9nS0NoaE9pQmhibmtzSUdJNklHRnVlU2tnUFQ0Z2JuVnRZbVZ5S1Z0ZE8xeHVJQ0FnSUhCeWIzUmxZM1JsWkNCa2FYTjBZVzVqWlVadVFYSm5jem9nZTF0Zk9pQnpkSEpwYm1kZE9pQmhibmw5VzEwN1hHNWNiaUFnSUNBdktpcGNiaUFnSUNBZ0tpQkRjbVZoZEdWeklHRnVJR2x1YzNSaGJtTmxJRzltSUZSVFRrVlNaV1IxWTJWeUxseHVJQ0FnSUNBcUlFQndZWEpoYlNCN1QzQjBhVzl1YzMwZ2IzQjBhVzl1Y3lCUGNIUnBiMjV6SUhSdklIQmhjM01nZEc4Z2RHaGxJR052Ym5OMGNuVmpkRzl5TGx4dUlDQWdJQ0FxSUVCdFpXMWlaWEp2WmlCVVUwNUZVbVZrZFdObGNseHVJQ0FnSUNBcUwxeHVJQ0FnSUdOdmJuTjBjblZqZEc5eUtHOXdkR2x2Ym5NNklFOXdkR2x2Ym5NcElIdGNiaUFnSUNBZ0lITjFjR1Z5S0c5d2RHbHZibk1wTzF4dUlDQWdJQ0FnZEdocGN5NXlaV1IxWTJWeUlEMGdibVYzSUZSVFRrVW9iM0IwYVc5dWN5azdYRzRnSUNBZ0lDQjBhR2x6TG1sMFpYSmhkR2x2Ym5NZ1BTQnZjSFJwYjI1elB5NXBkR1Z5WVhScGIyNXpJRDgvSURFd01EdGNiaUFnSUNBZ0lIUm9hWE11WkdsemRHRnVZMlZHYm1GdFpYTWdQU0J2Y0hScGIyNXpMbVJwYzNSaGJtTmxSbTVoYldWek8xeHVJQ0FnSUNBZ2RHaHBjeTVrYVhOMFlXNWpaVVp1Y3lBOUlHOXdkR2x2Ym5NdVpHbHpkR0Z1WTJWR2JuTTdYRzRnSUNBZ0lDQjBhR2x6TG1ScGMzUmhibU5sUm01QmNtZHpJRDBnYjNCMGFXOXVjeTVrYVhOMFlXNWpaVVp1UVhKbmN6dGNiaUFnSUNCOVhHNWNiaUFnSUNBdktpcGNiaUFnSUNBZ0tpQkZiV0psWkhNZ2RHaGxJR1JoZEdFZ1oybDJaVzRnYVc1MGJ5QjBhR1VnZEhkdkxXUnBiV1Z1YzJsdmJtRnNJSE53WVdObElIVnphVzVuSUhRdFUwNUZJRzFsZEdodlpDNWNYRnh1SUNBZ0lDQXFJRUJ3WVhKaGJTQjdZbTl2YkdWaGJuMGdXM0JoY21Gc2JHVnNSR2x6ZEdGdVkyVlhiM0pyWlhKelhTQlhhR1YwYUdWeUlIUnZJSFZ6WlNCd1lYSmhiR3hsYkNCa2FYTjBZVzVqWlNCM2IzSnJaWEp6TGx4dUlDQWdJQ0FxSUVCeVpYUjFjbTRnZTJGdWVYMGdRMkZ5ZEdWemFXRnVJR052YjNKa2FXNWhkR1VnYjJZZ2RHaHBjeUJsYldKbFpHUnBibWNnWVc1a0lHUnBjM1JoYm1ObElHMWhkSEpwZUNCM2FHVnlaU0JoY0hCc2FXTmhZbXhsTGx4dUlDQWdJQ0FxTDF4dUlDQWdJSEIxWW14cFl5QmhjM2x1WXlCMGNtRnVjMlp2Y20wb0tUb2dVSEp2YldselpUeE5ZWFJ5YVhnK0lIdGNiaUFnSUNBZ0lHbG1JQ2gwYUdsekxtUmhkR0ZiTUYwdWJHVnVaM1JvSUQ0Z01UQXdNREFwWEc0Z0lDQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduVFdGNGFXMTFiU0J1ZFcxaVpYSWdiMllnYzJGdGNHeGxjeUJtYjNJZ1ZDMVRUa1VnYVhNZ01UQXdNREFuS1R0Y2JpQWdJQ0FnSUdOdmJuTjBJRzFoZEhKcGVGTmxjblpwWTJVZ1BTQnVaWGNnUkdsemRHRnVZMlZOWVhSeWFYaFRaWEoyYVdObEtIUnlkV1VzSUdaaGJITmxLVHRjYmlBZ0lDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUdGblozSmxaMkYwWlNBOUlHZGxkRUZuWjNKbFoyRjBhVzl1Um5WdVkzUnBiMjRvZEdocGN5NWhaMmR5WldkaGRHbHZiazFsZEdodlpDd2dkR2hwY3k1M1pXbG5hSFJ6S1R0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWkdsemRHRnVZMlZ6T2lCQmNuSmhlVHhHYkc5aGRETXlRWEp5WVhrK0lEMGdXMTA3WEc0Z0lDQWdJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2RHaHBjeTVrWVhSaExteGxibWQwYURzZ0t5dHBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWkdsemRDQTlJR0YzWVdsMElHMWhkSEpwZUZObGNuWnBZMlV1WTJGc1l5aDBhR2x6TG1SaGRHRmJhVjBzSUhSb2FYTXVaR2x6ZEdGdVkyVkdibUZ0WlhOYmFWMHNJR1poYkhObExDQjBhR2x6TG1ScGMzUmhibU5sUm01QmNtZHpXMmxkS1R0Y2JpQWdJQ0FnSUNBZ0lDQmthWE4wWVc1alpYTXVjSFZ6YUNoa2FYTjBLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCamIyNXpkQ0JrYVhOMFlXNWpaU0E5SUc1bGR5QkdiRzloZERNeVFYSnlZWGtvWkdsemRHRnVZMlZ6V3pCZExteGxibWQwYUNrdVptbHNiQ2d3S1R0Y2JpQWdJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQmthWE4wWVc1alpYTmJNRjB1YkdWdVozUm9PeUFySzJrcFhHNGdJQ0FnSUNBZ0lDQWdaR2x6ZEdGdVkyVmJhVjBnUFNCaFoyZHlaV2RoZEdVb1pHbHpkR0Z1WTJWekxtMWhjQ2dvWkNrZ1BUNGdaRnRwWFNrcE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCdFlYUnlhWGhRY205NGVTQTlJR1JwYzNSaGJtTmxUV0YwY21sNFVISnZlSGtvWkdsemRHRnVZMlVzSUhSb2FYTXVaR0YwWVZzd1hTNXNaVzVuZEdncE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG5KbFpIVmpaWEl1YVc1cGRFUmhkR0ZFYVhOMEtHMWhkSEpwZUZCeWIzaDVLVHRjYmx4dUlDQWdJQ0FnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElIUm9hWE11YVhSbGNtRjBhVzl1Y3pzZ0t5dHBLVnh1SUNBZ0lDQWdJQ0FnSUhSb2FYTXVjbVZrZFdObGNpNXpkR1Z3S0NrN0lDOHZJR1YyWlhKNUlIUnBiV1VnZVc5MUlHTmhiR3dnZEdocGN5d2djMjlzZFhScGIyNGdaMlYwY3lCaVpYUjBaWEpjYmlBZ0lDQWdJQ0FnYldGMGNtbDRVMlZ5ZG1salpTNTBaWEp0YVc1aGRHVW9LVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdWNtVmtkV05sY2k1blpYUlRiMngxZEdsdmJpZ3BPMXh1SUNBZ0lDQWdmU0JqWVhSamFDQW9aU2tnZTF4dUlDQWdJQ0FnSUNCdFlYUnlhWGhUWlhKMmFXTmxMblJsY20xcGJtRjBaU2dwTzF4dUlDQWdJQ0FnSUNCMGFISnZkeUJsTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYm4xY2JseHVZMnhoYzNNZ1RYVnNkR2xWVFVGUVVtVmtkV05sY2lCbGVIUmxibVJ6SUUxMWJIUnBRMjlzZFcxdVVtVmtkV05sY2lCN1hHNGdJQ0FnY0hKdmRHVmpkR1ZrSUhKbFpIVmpaWEk2SUZWTlFWQTdYRzRnSUNBZ2NISnZkR1ZqZEdWa0lHUnBjM1JoYm1ObFJtNWhiV1Z6T2lCTGJtOTNiazFsZEhKcFkzTmJYVHRjYmlBZ0lDQndjbTkwWldOMFpXUWdaR2x6ZEdGdVkyVkdibk02SUVaMWJtTjBhVzl1VzEwN1hHNGdJQ0FnY0hKdmRHVmpkR1ZrSUhabFkzUnZjbk02SUc1MWJXSmxjbHRkTzF4dUlDQWdJSEJ5YjNSbFkzUmxaQ0J3Y205bmNtVnpjMFoxYm1NL09pQW9aWEJ2WXpvZ2JuVnRZbVZ5TENCbGNHOWphSE5NWlc1bmRHZzZJRzUxYldKbGNpd2daVzFpWldSa2FXNW5jem9nYm5WdFltVnlXMTFiWFNrZ1BUNGdkbTlwWkR0Y2JpQWdJQ0J3Y205MFpXTjBaV1FnWkdsemRHRnVZMlZHYmtGeVozTTZJSHRiWHpvZ2MzUnlhVzVuWFRvZ1lXNTVmVnRkTzF4dUlDQWdJQzhxS2x4dUlDQWdJQ0FxSUVOeVpXRjBaWE1nWVc0Z2FXNXpkR0Z1WTJVZ2IyWWdWVTFCVUZKbFpIVmpaWEl1WEc0Z0lDQWdJQ29nUUhCaGNtRnRJSHRQY0hScGIyNXpmU0J2Y0hScGIyNXpJRTl3ZEdsdmJuTWdkRzhnY0dGemN5QjBieUIwYUdVZ1kyOXVjM1J5ZFdOMGIzSXVYRzRnSUNBZ0lDb2dRRzFsYldKbGNtOW1JRlZOUVZCU1pXUjFZMlZ5WEc0Z0lDQWdJQ292WEc0Z0lDQWdZMjl1YzNSeWRXTjBiM0lvYjNCMGFXOXVjem9nVDNCMGFXOXVjeWtnZTF4dUlDQWdJQ0FnYzNWd1pYSW9iM0IwYVc5dWN5azdYRzRnSUNBZ0lDQmhjM05sY25Rb0oyUnBjM1JoYm1ObFJtNWhiV1Z6SnlCcGJpQnZjSFJwYjI1ektUdGNiaUFnSUNBZ0lHRnpjMlZ5ZENnblpHbHpkR0Z1WTJWR2JuTW5JR2x1SUc5d2RHbHZibk1wTzF4dUlDQWdJQ0FnZEdocGN5NWthWE4wWVc1alpVWnVRWEpuY3lBOUlHOXdkR2x2Ym5NdVpHbHpkR0Z1WTJWR2JrRnlaM003WEc0Z0lDQWdJQ0IwYUdsekxtUnBjM1JoYm1ObFJtNXpJRDBnYjNCMGFXOXVjeTVrYVhOMFlXNWpaVVp1Y3lFN1hHNGdJQ0FnSUNCMGFHbHpMbkJ5YjJkeVpYTnpSblZ1WXlBOUlHOXdkR2x2Ym5NdWNISnZaM0psYzNOR2RXNWpPMXh1WEc0Z0lDQWdJQ0IwYUdsekxtUnBjM1JoYm1ObFJtNWhiV1Z6SUQwZ2IzQjBhVzl1Y3k1a2FYTjBZVzVqWlVadVlXMWxjeUU3WEc0Z0lDQWdJQ0F2TDFWdFlYQWdkWE5sY3lCMlpXTjBiM0lnYVc1a1pYaHBibWNzSUhOdklIZGxJRzVsWldRZ2RHOGdZM0psWVhSbElHRnVJR0Z5Y21GNUlHOW1JSFpsWTNSdmNuTWdZWE1nYVc1a1pXTmxjeTVjYmlBZ0lDQWdJSFJvYVhNdWRtVmpkRzl5Y3lBOUlHNWxkeUJCY25KaGVTaDBhR2x6TG1SaGRHRmJNRjB1YkdWdVozUm9LUzVtYVd4c0tEQXBMbTFoY0Nnb1h5d2dhU2tnUFQ0Z2FTazdYRzVjYmlBZ0lDQWdJR2xtSUNoMGFHbHpMbVJoZEdGYk1GMHViR1Z1WjNSb0lEd2dNVFVwWEc0Z0lDQWdJQ0FnSUc5d2RHbHZibk11Yms1bGFXZG9ZbTl5Y3lBOUlIUm9hWE11WkdGMFlWc3dYUzVzWlc1bmRHZ2dMU0F4TzF4dUlDQWdJQ0FnZEdocGN5NXlaV1IxWTJWeUlEMGdibVYzSUZWTlFWQW9iM0IwYVc5dWN5azdYRzRnSUNBZ0lDQXZMeUIwYUdsekxuSmxaSFZqWlhJdVpHbHpkR0Z1WTJWR2JpQTlJSFJvYVhNdVgyVnVZMjlrWldSRWFYTjBZVzVqWlM1aWFXNWtLSFJvYVhNcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4cUtseHVJQ0FnSUNBcUlFVnRZbVZrY3lCMGFHVWdaR0YwWVNCbmFYWmxiaUJwYm5SdklIUm9aU0IwZDI4dFpHbHRaVzV6YVc5dVlXd2djM0JoWTJVZ2RYTnBibWNnVlUxQlVDQnRaWFJvYjJRdVhHNGdJQ0FnSUNvZ1FIQmhjbUZ0SUh0aWIyOXNaV0Z1ZlNCYlgzQmhjbUZzYkdWc1JHbHpkR0Z1WTJWWGIzSnJaWEp6WFNCWGFHVjBhR1Z5SUhSdklIVnpaU0J3WVhKaGJHeGxiQ0JrYVhOMFlXNWpaU0J0WVhSeWFYZ2dkMjl5YTJWeWN5NWNiaUFnSUNBZ0tpQkFjbVYwZFhKdUlIdGhibmw5SUVOaGNuUmxjMmxoYmlCamIyOXlaR2x1WVhSbElHOW1JSFJvYVhNZ1pXMWlaV1JrYVc1bkxseHVJQ0FnSUNBcUwxeHVJQ0FnSUhCMVlteHBZeUJoYzNsdVl5QjBjbUZ1YzJadmNtMG9YM0JoY21Gc2JHVnNSR2x6ZEdGdVkyVlhiM0pyWlhKelB6b2dZbTl2YkdWaGJpazZJRkJ5YjIxcGMyVThUV0YwY21sNFBpQjdYRzRnSUNBZ0lDQmpiMjV6YjJ4bExuUnBiV1VvSjJ0dWJpQm5jbUZ3YUNjcE8xeHVJQ0FnSUNBZ1kyOXVjM1FnYTI1dVVtVnpJRDBnWVhkaGFYUWdibVYzSUZOd1lYSnpaVTFoZEhKcGVGTmxjblpwWTJVb0tWeHVJQ0FnSUNBZ0lDQXViWFZzZEdsRGIyeDFiVzVMVGs0b2RHaHBjeTVrWVhSaExDQjBhR2x6TG1ScGMzUmhibU5sUm01aGJXVnpMQ0IwYUdsekxuSmxaSFZqWlhJdWJtVnBaMmhpYjNKekxGeHVJQ0FnSUNBZ0lDQWdJSFJvYVhNdVpHbHpkR0Z1WTJWR2JrRnlaM01zSUhSb2FYTXVkMlZwWjJoMGN5d2dkR2hwY3k1aFoyZHlaV2RoZEdsdmJrMWxkR2h2WkNrN1hHNGdJQ0FnSUNCamIyNXpiMnhsTG5ScGJXVkZibVFvSjJ0dWJpQm5jbUZ3YUNjcE8xeHVJQ0FnSUNBZ2RHaHBjeTV5WldSMVkyVnlMbk5sZEZCeVpXTnZiWEIxZEdWa1MwNU9LR3R1YmxKbGN5NXJibTVKYm1SbGVHVnpMQ0JyYm01U1pYTXVhMjV1UkdsemRHRnVZMlZ6S1R0Y2JseHVJQ0FnSUNBZ0x5OGdibVZsWkdWa0lITnZJSFJvWVhRZ1oyRnlZbUZuWlNCamIyeHNaV04wYjNJZ1kyRnVJR1p5WldVZ2JXVnRiM0o1SUdaeWIyMGdaR2x6ZEdGdVkyVWdiV0YwY21sNFhHNGdJQ0FnSUNCaGQyRnBkQ0J1WlhjZ1VISnZiV2x6WlR4MmIybGtQaWdvY21WemIyeDJaU2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQnpaWFJVYVcxbGIzVjBLQ2dwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0J5WlhOdmJIWmxLQ2s3WEc0Z0lDQWdJQ0FnSUgwc0lETXdNQ2s3WEc0Z0lDQWdJQ0I5S1R0Y2JseHVJQ0FnSUNBZ1kyOXVjM1FnWlcxaVpXUmthVzVuSUQwZ1lYZGhhWFFnZEdocGN5NXlaV1IxWTJWeUxtWnBkRUZ6ZVc1aktIUm9hWE11ZG1WamRHOXljeXdnS0dWd2IyTXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFJvYVhNdWNISnZaM0psYzNOR2RXNWpLVnh1SUNBZ0lDQWdJQ0FnSUhSb2FYTXVjSEp2WjNKbGMzTkdkVzVqS0dWd2IyTXNJSFJvYVhNdWNtVmtkV05sY2k1blpYUk9SWEJ2WTJoektDa3NJSFJvYVhNdWNtVmtkV05sY2k1blpYUkZiV0psWkdScGJtY29LU2s3WEc0Z0lDQWdJQ0I5S1R0Y2JseHVJQ0FnSUNBZ1puVnVZM1JwYjI0Z1lYSnlZWGxEWVhOME1rTnZiM0prYVc1aGRHVnpLR1JoZEdFNklHNTFiV0psY2x0ZFcxMHBPaUJEYjI5eVpHbHVZWFJsY3lCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCdVpYY2dRWEp5WVhrb1pHRjBZUzVzWlc1bmRHZ3BMbVpwYkd3b01Da3ViV0Z3S0NoZkxDQnBLU0E5UGlBb1ZtVmpkRzl5TG1aeWIyMG9aR0YwWVZ0cFhTa3BLVHRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnY21WMGRYSnVJR0Z5Y21GNVEyRnpkREpEYjI5eVpHbHVZWFJsY3lobGJXSmxaR1JwYm1jcE8xeHVJQ0FnSUgxY2JuMWNibHh1Wlhod2IzSjBJR05zWVhOeklFMTFiSFJwUTI5c1JHbHRVbVZrZFdObGNpQjdYRzRnSUNBZ2NISnBkbUYwWlNCeVpXUjFZMlZ5T2lCTmRXeDBhVU52YkhWdGJsSmxaSFZqWlhJZ2ZDQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0x5b3FYRzRnSUNBcUlFTnlaV0YwWlhNZ1lXNGdhVzV6ZEdGdVkyVWdiMllnUkdsdFpXNXphVzl1WVd4cGRIbFNaV1IxWTJWeUxseHVJQ0FnS2lCQWNHRnlZVzBnZTJGdWVWdGRmU0JrWVhSaElGWmxZM1J2Y25NZ2RHOGdaVzFpWldRdVhHNGdJQ0FxSUVCd1lYSmhiU0I3UzI1dmQyNU5aWFJvYjJSemZTQnRaWFJvYjJRZ1JXMWlaV1JrYVc1bklHMWxkR2h2WkNCMGJ5QmlaU0JoY0hCc2FXVmtYRzRnSUNBcUlFQndZWEpoYlNCN1MyNXZkMjVOWlhSeWFXTnpmU0J0WlhSeWFXTWdSR2x6ZEdGdVkyVWdiV1YwY21saklIUnZJR0psSUdOdmJYQjFkR1ZrSUdKbGRIZGxaVzRnWldGamFDQnZaaUIwYUdVZ2RtVmpkRzl5Y3k1Y2JpQWdJQ29nUUhCaGNtRnRJSHRQY0hScGIyNXpmU0JiYjNCMGFXOXVjMTBnVDNCMGFXOXVjeUIwYnlCd1lYTnpJSFJ2SUhSb1pTQnBiWEJzWlcxbGJuUnBibWNnWlcxaVpXUmtaWEp6TGx4dUlDQWdLaUJBYldWdFltVnliMllnUkdsdFpXNXphVzl1WVd4cGRIbFNaV1IxWTJWeVhHNGdJQ0FxTDF4dUlDQWdJR052Ym5OMGNuVmpkRzl5S0dSaGRHRTZJRUZ5Y21GNVBHRnVlVnRkUGl3Z2JXVjBhRzlrT2lCRWFXMVNaV1IxWTNScGIyNU5aWFJvYjJSekxDQnRaWFJ5YVdOek9pQkxibTkzYmsxbGRISnBZM05iWFN4Y2JpQWdJQ0FnSUhkbGFXZG9kSE02SUc1MWJXSmxjbHRkTENCa2FYTjBZVzVqWlVGblozSmxaMkYwYVc5dU9pQkVhWE4wWVc1alpVRm5aM0psWjJGMGFXOXVUV1YwYUc5a0xDQnZjSFJwYjI1ek9pQlBjSFJwYjI1ektTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCdFpXRnpkWEpsY3pvZ1JHbHpkR0Z1WTJWTlpYUnlhV05iWFNBOUlGdGRPMXh1SUNBZ0lDQWdabTl5SUNoc1pYUWdhV1I0SUQwZ01Ec2dhV1I0SUR3Z2JXVjBjbWxqY3k1c1pXNW5kR2c3SUNzcmFXUjRLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJRzFsWVhOMWNtVWdQU0J1WlhjZ1RXVmhjM1Z5WlNodFpYUnlhV056VzJsa2VGMHBMbWRsZEUxbFlYTjFjbVVvYjNCMGFXOXVjeTVrYVhOMFlXNWpaVVp1UVhKbmMxdHBaSGhkS1R0Y2JpQWdJQ0FnSUNBZ2JXVmhjM1Z5WlhNdWNIVnphQ2h0WldGemRYSmxLVHRjYmlBZ0lDQWdJQ0FnYkdWMElHSnBkRUZ5Y21GNVRHVnVaM1JvSUQwZ01qQTBPRHRjYmlBZ0lDQWdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCa1lYUmhXMmxrZUYwdWJHVnVaM1JvT3lBcksya3BJSHRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9aR0YwWVZ0cFpIaGRXMmxkSUNZbUlHUmhkR0ZiYVdSNFhWdHBYUzVmYkdWdVozUm9LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmlhWFJCY25KaGVVeGxibWQwYUNBOUlHUmhkR0ZiYVdSNFhWdHBYUzVmYkdWdVozUm9PMXh1SUNBZ0lDQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR2xtSUNocGMwSnBkRUZ5Y21GNVRXVjBjbWxqS0cxbGRISnBZM05iYVdSNFhTa3BJSHRjYmlBZ0lDQWdJQ0FnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHUmhkR0ZiYVdSNFhTNXNaVzVuZEdnN0lDc3JhU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dSaGRHRmJhV1I0WFZ0cFhTQW1KaUJrWVhSaFcybGtlRjFiYVYwdVgyUmhkR0VwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR1JoZEdGYmFXUjRYVnRwWFNBOUlHNWxkeUJDYVhSQmNuSmhlU2hrWVhSaFcybGtlRjFiYVYwdVgyUmhkR0VzSUdSaGRHRmJhV1I0WFZ0cFhTNWZiR1Z1WjNSb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdWc2MyVmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1pHRjBZVnRwWkhoZFcybGRJRDBnYm1WM0lFSnBkRUZ5Y21GNUtHSnBkRUZ5Y21GNVRHVnVaM1JvS1R0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnYVdZZ0tHMWxkR2h2WkNBOVBTQW5WVTFCVUNjcElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1eVpXUjFZMlZ5SUQwZ2JtVjNJRTExYkhScFZVMUJVRkpsWkhWalpYSW9lMXh1SUNBZ0lDQWdJQ0FnSUdSaGRHRTZJR1JoZEdFc1hHNGdJQ0FnSUNBZ0lDQWdaR2x6ZEdGdVkyVkdibUZ0WlhNNklHMWxkSEpwWTNNc1hHNGdJQ0FnSUNBZ0lDQWdaR2x6ZEdGdVkyVkdibk02SUcxbFlYTjFjbVZ6TEZ4dUlDQWdJQ0FnSUNBZ0lHUnBjM1JoYm1ObFJtNUJjbWR6T2lCdmNIUnBiMjV6TG1ScGMzUmhibU5sUm01QmNtZHpMRnh1SUNBZ0lDQWdJQ0FnSUhkbGFXZG9kSE02SUhkbGFXZG9kSE1zWEc0Z0lDQWdJQ0FnSUNBZ1lXZG5jbVZuWVhScGIyNU5aWFJvYjJRNklHUnBjM1JoYm1ObFFXZG5jbVZuWVhScGIyNHNYRzRnSUNBZ0lDQWdJQ0FnTGk0dWIzQjBhVzl1YzF4dUlDQWdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lIMGdaV3h6WlNCcFppQW9iV1YwYUc5a0lEMDlJQ2QwTFZOT1JTY3BJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NXlaV1IxWTJWeUlEMGdibVYzSUUxMWJIUnBWRk5PUlZKbFpIVmpaWElvZTF4dUlDQWdJQ0FnSUNBZ0lHUmhkR0U2SUdSaGRHRXNYRzRnSUNBZ0lDQWdJQ0FnWkdsemRHRnVZMlZHYm1GdFpYTTZJRzFsZEhKcFkzTXNYRzRnSUNBZ0lDQWdJQ0FnWkdsemRHRnVZMlZHYm5NNklHMWxZWE4xY21WekxGeHVJQ0FnSUNBZ0lDQWdJR1JwYzNSaGJtTmxSbTVCY21kek9pQnZjSFJwYjI1ekxtUnBjM1JoYm1ObFJtNUJjbWR6TEZ4dUlDQWdJQ0FnSUNBZ0lIZGxhV2RvZEhNNklIZGxhV2RvZEhNc1hHNGdJQ0FnSUNBZ0lDQWdZV2RuY21WbllYUnBiMjVOWlhSb2IyUTZJR1JwYzNSaGJtTmxRV2RuY21WbllYUnBiMjRzWEc0Z0lDQWdJQ0FnSUNBZ0xpNHViM0IwYVc5dWMxeHVJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZLaXBjYmlBZ0lDb2dSVzFpWldSeklIUm9aU0JrWVhSaElHZHBkbVZ1SUdsdWRHOGdkR2hsSUhSM2J5MWthVzFsYm5OcGIyNWhiQ0J6Y0dGalpTQjFjMmx1WnlCMGFHVWdZMmh2YzJWdUlHMWxkR2h2WkM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdGliMjlzWldGdWZTQjBjbUZ1YzNCdmMyVWdWMmhsZEdobGNpQjBieUIwY21GdWMyWnZjbTBnWTI5dmNtUnBibUYwWlhNZ2RHOGdhR0YyWlNCamIyeDFiVzV6TFdacGNuTjBJRzl5YVdWdWRHRjBhVzl1TGx4dUlDQWdLaUJBY0dGeVlXMGdlMkp2YjJ4bFlXNTlJSEJoY21Gc2JHVnNSR2x6ZEdGdVkyVlhiM0pyWlhKeklGZG9aWFJvWlhJZ2RHOGdkWE5sSUhCaGNtRnNiR1ZzSUdScGMzUmhibU5sSUdOdmJYQjFkR0YwYVc5dUxseHVJQ0FnS2lCQWRHaHliM2R6SUh0RmNuSnZjbjBnU1dZZ2RHaGxJR1Z0WW1Wa1pHbHVaeUJ0WlhSb2IyUWdkMkZ6SUc1dmRDQm1iM1Z1WkM1Y2JpQWdJQ29nUUhKbGRIVnliaUI3WVc1NWZTQkRZWEowWlhOcFlXNGdZMjl2Y21ScGJtRjBaU0J2WmlCMGFHbHpJR1Z0WW1Wa1pHbHVaeUJoYm1RZ1pHbHpkR0Z1WTJVZ2JXRjBjbWw0SUhkb1pYSmxJR0Z3Y0d4cFkyRmliR1V1WEc0Z0lDQXFJRUJ0WlcxaVpYSnZaaUJFYVcxbGJuTnBiMjVoYkdsMGVWSmxaSFZqWlhKY2JpQWdJQ292WEc0Z0lDQWdjSFZpYkdsaklHRnplVzVqSUhSeVlXNXpabTl5YlNoMGNtRnVjM0J2YzJVNklHSnZiMnhsWVc0Z1BTQm1ZV3h6WlNrNklGQnliMjFwYzJVOFRXRjBjbWw0UGlCN1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1eVpXUjFZMlZ5SUQwOVBTQjFibVJsWm1sdVpXUXBYRzRnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpZ25VbVZrZFdObGNpQjNZWE1nYm05MElHUmxabWx1WldRdUp5azdYRzVjYmlBZ0lDQWdJR3hsZENCbGJXSmxaR1JwYm1jZ1BTQmhkMkZwZENCMGFHbHpMbkpsWkhWalpYSXVkSEpoYm5ObWIzSnRLQ2s3WEc1Y2JpQWdJQ0FnSUdsbUlDaDBjbUZ1YzNCdmMyVXBYRzRnSUNBZ0lDQWdJR1Z0WW1Wa1pHbHVaeUE5SUhSeVlXNXpjRzl6WlUxaGRISnBlQ2hsYldKbFpHUnBibWNwTzF4dVhHNGdJQ0FnSUNCeVpYUjFjbTRnWlcxaVpXUmthVzVuTzF4dUlDQWdJSDFjYm4xY2JpSmRmUT09IiwiLyoqIFByb3h5IGZvciBEaXN0YW5jZU1hdHJpeCBjbGFzcy4gQWxsb3dzIHRvIGluZGV4IG1hdHJpeCBhcyBtYXRyaXhbaV1bal1cbiAqIE5vdGU6IG11Y2ggc2xvd2VyIHRoYW4gZGlyZWN0IGluZGV4aW5nLCBidXQgc3RpbGwgbXVjaCBmYXN0ZXIgdGhhbiByZWNhbGN1bGF0aW5nIGRpc3RhbmNlcy5cbiAqIHdpbGwgYmUgdXNlZCBmb3IgVC1TTkUgbWFpbmx5LlxuICogQHBhcmFtIHtGbG9hdDMyQXJyYXl9Y29uZGVuc2VkQXJyYXkgLSBhcnJheSBvZiBkaXN0YW5jZXMgYmV0d2VlbiBhbGwgcGFpcnMgb2Ygb2JqZWN0c1xuICogQHBhcmFtIHtudW1iZXJ9c2l6ZSAtIG51bWJlciBvZiBjb21wYXJlYmxlcyBpbiBtYXRyaXhcbiAqIEByZXR1cm4ge0Zsb2F0MzJBcnJheX0gLSBwcm94eSBmb3IgY29uZGVuc2VkQXJyYXlcbiovXG5leHBvcnQgZnVuY3Rpb24gZGlzdGFuY2VNYXRyaXhQcm94eShjb25kZW5zZWRBcnJheSwgc2l6ZSkge1xuICAgIGNvbnN0IGxpbmVhckZ1bmMgPSBkbUxpbmVhckluZGV4KHNpemUpO1xuICAgIGZ1bmN0aW9uIGxpbmVhckluZGV4KGksIGopIHtcbiAgICAgICAgY29uc3QgaU51bSA9IE51bWJlcihpKTtcbiAgICAgICAgY29uc3Qgak51bSA9IE51bWJlcihqKTtcbiAgICAgICAgcmV0dXJuIGxpbmVhckZ1bmMoaU51bSwgak51bSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlkeDJIYW5kbGVyKGlkeDEpIHtcbiAgICAgICAgcmV0dXJuICh7XG4gICAgICAgICAgICBnZXQodGFyZ2V0LCBpZHgyLCBfcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAoaWR4MSA9PT0gaWR4MilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZWFySWR4ID0gTnVtYmVyKGlkeDEpID4gTnVtYmVyKGlkeDIpID8gbGluZWFySW5kZXgoaWR4MiwgaWR4MSkgOiBsaW5lYXJJbmRleChpZHgxLCBpZHgyKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W2xpbmVhcklkeF07XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgaWR4MUhhbmRsZXIgPSB7XG4gICAgICAgIGdldCh0YXJnZXQsIGlkeDEsIF9yZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKGlkeDEgPT09ICdsZW5ndGgnKVxuICAgICAgICAgICAgICAgIHJldHVybiBzaXplO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm94eSh0YXJnZXQsIGlkeDJIYW5kbGVyKGlkeDEpKTtcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHJldHVybiBuZXcgUHJveHkoY29uZGVuc2VkQXJyYXksIGlkeDFIYW5kbGVyKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBkbUxpbmVhckluZGV4KHNpemUpIHtcbiAgICByZXR1cm4gKGksIGopID0+IHNpemUgKiBpICsgaiAtIE1hdGguZmxvb3IoKChpICsgMikgKiAoaSArIDEpKSAvIDIpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pY0hKdmVIa3Vhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKd2NtOTRlUzUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGRlFUczdPenM3TzBWQlRVVTdRVUZEUml4TlFVRk5MRlZCUVZVc2JVSkJRVzFDTEVOQlFVTXNZMEZCTkVJc1JVRkJSU3hKUVVGWk8wbEJRelZGTEUxQlFVMHNWVUZCVlN4SFFVRkhMR0ZCUVdFc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU4yUXl4VFFVRlRMRmRCUVZjc1EwRkJReXhEUVVGclFpeEZRVUZGTEVOQlFXdENPMUZCUTNwRUxFMUJRVTBzU1VGQlNTeEhRVUZITEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOMlFpeE5RVUZOTEVsQlFVa3NSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGRrSXNUMEZCVHl4VlFVRlZMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzBsQlEyaERMRU5CUVVNN1NVRkZSQ3hUUVVGVExGZEJRVmNzUTBGQlF5eEpRVUZ4UWp0UlFVTjRReXhQUVVGUExFTkJRMHc3V1VGRFJTeEhRVUZITEVOQlFVTXNUVUZCVFN4RlFVRkZMRWxCUVVrc1JVRkJSU3hUUVVGVE8yZENRVU42UWl4SlFVRkpMRWxCUVVrc1MwRkJTeXhKUVVGSk8yOUNRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMmRDUVVNMVFpeE5RVUZOTEZOQlFWTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhYUVVGWExFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhYUVVGWExFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVOc1J5eFBRVUZQTEUxQlFVMHNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRaUVVNelFpeERRVUZETzFOQlEwWXNRMEZEUml4RFFVRkRPMGxCUTBvc1EwRkJRenRKUVVORUxFMUJRVTBzVjBGQlZ5eEhRVUVyUWp0UlFVTTVReXhIUVVGSExFTkJRVU1zVFVGQlRTeEZRVUZGTEVsQlFVa3NSVUZCUlN4VFFVRlRPMWxCUTNwQ0xFbEJRVWtzU1VGQlNTeExRVUZMTEZGQlFWRTdaMEpCUVVVc1QwRkJUeXhKUVVGSkxFTkJRVU03V1VGRGJrTXNUMEZCVHl4SlFVRkpMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzVjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRPVU1zUTBGQlF6dExRVU5HTEVOQlFVTTdTVUZGUml4UFFVRlBMRWxCUVVrc1MwRkJTeXhEUVVGRExHTkJRV01zUlVGQlJTeFhRVUZYTEVOQlFVTXNRMEZCUXp0QlFVTm9SQ3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdGQlFXRXNRMEZCUXl4SlFVRlpPMGxCUTNoRExFOUJRVThzUTBGQlF5eERRVUZUTEVWQlFVVXNRMEZCVXl4RlFVRkZMRVZCUVVVc1EwRkJReXhKUVVGSkxFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOMFJpeERRVUZESWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaVhHNWNiaThxS2lCUWNtOTRlU0JtYjNJZ1JHbHpkR0Z1WTJWTllYUnlhWGdnWTJ4aGMzTXVJRUZzYkc5M2N5QjBieUJwYm1SbGVDQnRZWFJ5YVhnZ1lYTWdiV0YwY21sNFcybGRXMnBkWEc0Z0tpQk9iM1JsT2lCdGRXTm9JSE5zYjNkbGNpQjBhR0Z1SUdScGNtVmpkQ0JwYm1SbGVHbHVaeXdnWW5WMElITjBhV3hzSUcxMVkyZ2dabUZ6ZEdWeUlIUm9ZVzRnY21WallXeGpkV3hoZEdsdVp5QmthWE4wWVc1alpYTXVYRzRnS2lCM2FXeHNJR0psSUhWelpXUWdabTl5SUZRdFUwNUZJRzFoYVc1c2VTNWNiaUFxSUVCd1lYSmhiU0I3Um14dllYUXpNa0Z5Y21GNWZXTnZibVJsYm5ObFpFRnljbUY1SUMwZ1lYSnlZWGtnYjJZZ1pHbHpkR0Z1WTJWeklHSmxkSGRsWlc0Z1lXeHNJSEJoYVhKeklHOW1JRzlpYW1WamRITmNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmWE5wZW1VZ0xTQnVkVzFpWlhJZ2IyWWdZMjl0Y0dGeVpXSnNaWE1nYVc0Z2JXRjBjbWw0WEc0Z0tpQkFjbVYwZFhKdUlIdEdiRzloZERNeVFYSnlZWGw5SUMwZ2NISnZlSGtnWm05eUlHTnZibVJsYm5ObFpFRnljbUY1WEc0cUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHUnBjM1JoYm1ObFRXRjBjbWw0VUhKdmVIa29ZMjl1WkdWdWMyVmtRWEp5WVhrNklFWnNiMkYwTXpKQmNuSmhlU3dnYzJsNlpUb2diblZ0WW1WeUtUb2dSbXh2WVhRek1rRnljbUY1SUh0Y2JpQWdZMjl1YzNRZ2JHbHVaV0Z5Um5WdVl5QTlJR1J0VEdsdVpXRnlTVzVrWlhnb2MybDZaU2s3WEc0Z0lHWjFibU4wYVc5dUlHeHBibVZoY2tsdVpHVjRLR2s2SUhONWJXSnZiQ0I4SUhOMGNtbHVaeXdnYWpvZ2MzbHRZbTlzSUh3Z2MzUnlhVzVuS1NCN1hHNGdJQ0FnWTI5dWMzUWdhVTUxYlNBOUlFNTFiV0psY2locEtUdGNiaUFnSUNCamIyNXpkQ0JxVG5WdElEMGdUblZ0WW1WeUtHb3BPMXh1SUNBZ0lISmxkSFZ5YmlCc2FXNWxZWEpHZFc1aktHbE9kVzBzSUdwT2RXMHBPMXh1SUNCOVhHNWNiaUFnWm5WdVkzUnBiMjRnYVdSNE1raGhibVJzWlhJb2FXUjRNVG9nYzNsdFltOXNJSHdnYzNSeWFXNW5LVHBRY205NGVVaGhibVJzWlhJOFJteHZZWFF6TWtGeWNtRjVQaUI3WEc0Z0lDQWdjbVYwZFhKdUlDaGNiaUFnSUNBZ0lIdGNiaUFnSUNBZ0lDQWdaMlYwS0hSaGNtZGxkQ3dnYVdSNE1pd2dYM0psWTJWcGRtVnlLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLR2xrZURFZ1BUMDlJR2xrZURJcElISmxkSFZ5YmlBd08xeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElHeHBibVZoY2tsa2VDQTlJRTUxYldKbGNpaHBaSGd4S1NBK0lFNTFiV0psY2locFpIZ3lLU0EvSUd4cGJtVmhja2x1WkdWNEtHbGtlRElzSUdsa2VERXBJRG9nYkdsdVpXRnlTVzVrWlhnb2FXUjRNU3dnYVdSNE1pazdYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSFJoY21kbGRGdHNhVzVsWVhKSlpIaGRPMXh1SUNBZ0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnZlZ4dUlDQWdJQ2s3WEc0Z0lIMWNiaUFnWTI5dWMzUWdhV1I0TVVoaGJtUnNaWEk2SUZCeWIzaDVTR0Z1Wkd4bGNqeEdiRzloZERNeVFYSnlZWGsrSUQwZ2UxeHVJQ0FnSUdkbGRDaDBZWEpuWlhRc0lHbGtlREVzSUY5eVpXTmxhWFpsY2lrZ2UxeHVJQ0FnSUNBZ2FXWWdLR2xrZURFZ1BUMDlJQ2RzWlc1bmRHZ25LU0J5WlhSMWNtNGdjMmw2WlR0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ1WlhjZ1VISnZlSGtvZEdGeVoyVjBMQ0JwWkhneVNHRnVaR3hsY2locFpIZ3hLU2s3WEc0Z0lDQWdmU3hjYmlBZ2ZUdGNibHh1SUNCeVpYUjFjbTRnYm1WM0lGQnliM2g1S0dOdmJtUmxibk5sWkVGeWNtRjVMQ0JwWkhneFNHRnVaR3hsY2lrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJrYlV4cGJtVmhja2x1WkdWNEtITnBlbVU2SUc1MWJXSmxjaWs2SUNocE9pQnVkVzFpWlhJc0lHbzZJRzUxYldKbGNpa2dQVDRnYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUNocE9pQnVkVzFpWlhJc0lHbzZJRzUxYldKbGNpa2dQVDRnYzJsNlpTQXFJR2tnS3lCcUlDMGdUV0YwYUM1bWJHOXZjaWdvS0drZ0t5QXlLU0FxSUNocElDc2dNU2twSUM4Z01pazdYRzU5WEc0aVhYMD0iLCJpbXBvcnQgeyBNdWx0aUNvbERpbVJlZHVjZXIgfSBmcm9tICcuL211bHRpLWNvbHVtbi1kaW0tcmVkdWNlcic7XG4vKipcbiAqIFdvcmtlciB0aHJlYWQgcmVjZWl2aW5nIGRhdGEgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIHthbnlbXX0gY29sdW1uRGF0YSBTYW1wbGVzIHRvIHByb2Nlc3MuXG4gKiBAcGFyYW0ge0tub3duTWV0aG9kc30gbWV0aG9kIEVtYmVkZGluZyBtZXRob2QuXG4gKiBAcGFyYW0ge0tub3duTWV0cmljc30gbWVhc3VyZSBEaXN0YW5jZSBtZXRyaWMuXG4gKiBAcGFyYW0ge2FueX0gb3B0aW9ucyBPcHRpb25zIHRvIHBhc3MgdG8gYWxnb3JpdGhtLlxuICogQHBhcmFtIHtib29sZWFufSBwYXJhbGxlbERpc3RhbmNlV29ya2VycyBXaGV0aGVyIHRvIHVzZSBwYXJhbGxlbCBkaXN0YW5jZSB3b3JrZXJzLlxuICogQHJldHVybiB7YW55fSBFbWJlZGRpbmcgKGFuZCBkaXN0YW5jZSBtYXRyaXggd2hlcmUgYXBwbGljYWJsZSkuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIG9uTWVzc2FnZShjb2x1bW5zRGF0YSwgbWV0aG9kLCBtZXRyaWNzLCB3ZWlnaHRzLCBhZ2dyZWdhdGlvbk1ldGhvZCwgb3B0aW9ucykge1xuICAgIGNvbnN0IHJlZHVjZXIgPSBuZXcgTXVsdGlDb2xEaW1SZWR1Y2VyKGNvbHVtbnNEYXRhLCBtZXRob2QsIG1ldHJpY3MsIHdlaWdodHMsIGFnZ3JlZ2F0aW9uTWV0aG9kLCB7IC4uLm9wdGlvbnMsIHByb2dyZXNzRnVuYyB9KTtcbiAgICByZXR1cm4gYXdhaXQgcmVkdWNlci50cmFuc2Zvcm0odHJ1ZSk7XG59XG5hc3luYyBmdW5jdGlvbiBwcm9ncmVzc0Z1bmMoZXBvY2hOdW0sIGVwb2Noc0xlbmd0aCwgZW1iZWRkaW5nKSB7XG4gICAgaWYgKGVwb2NoTnVtICUgNSA9PT0gMClcbiAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7IGVwb2NoTnVtLCBlcG9jaHNMZW5ndGgsIGVtYmVkZGluZyB9KTtcbn1cbnNlbGYub25tZXNzYWdlID0gYXN5bmMgKHsgZGF0YTogeyBjb2x1bW5zRGF0YSwgbWV0aG9kLCBkaXN0YW5jZU1ldHJpY3MsIG9wdGlvbnMsIHdlaWdodHMsIGFnZ3JlZ2F0aW9uTWV0aG9kIH0gfSkgPT4ge1xuICAgIGxldCBkYXRhO1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGVtYmVkZGluZyA9IGF3YWl0IG9uTWVzc2FnZShjb2x1bW5zRGF0YSwgbWV0aG9kLCBkaXN0YW5jZU1ldHJpY3MsIHdlaWdodHMsIGFnZ3JlZ2F0aW9uTWV0aG9kLCBvcHRpb25zKTtcbiAgICAgICAgZGF0YSA9IHsgZW1iZWRkaW5nIH07XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGRhdGEgPSB7IGVycm9yOiBlIH07XG4gICAgfVxuICAgIHNlbGYucG9zdE1lc3NhZ2Uoe1xuICAgICAgICBlcnJvcjogZGF0YS5lcnJvcixcbiAgICAgICAgZW1iZWRkaW5nOiBkYXRhLmVtYmVkZGluZyxcbiAgICB9KTtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2liWFZzYVhRdFkyOXNkVzF1TFdScGJTMXlaV1IxWTJWeUxYZHZjbXRsY2k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbTExYkdsMExXTnZiSFZ0Ymkxa2FXMHRjbVZrZFdObGNpMTNiM0pyWlhJdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJTVUVzVDBGQlR5eEZRVUZETEd0Q1FVRnJRaXhGUVVGRExFMUJRVTBzTkVKQlFUUkNMRU5CUVVNN1FVRkZPVVE3T3pzN096czdPenRIUVZOSE8wRkJRMGdzUzBGQlN5eFZRVUZWTEZOQlFWTXNRMEZCUXl4WFFVRjVRaXhGUVVGRkxFMUJRVEpDTEVWQlFVVXNUMEZCZFVJc1JVRkRkRWNzVDBGQmFVSXNSVUZCUlN4cFFrRkJORU1zUlVGREwwUXNUMEZCV1R0SlFVTmFMRTFCUVUwc1QwRkJUeXhIUVVGSExFbEJRVWtzYTBKQlFXdENMRU5CUTNCRExGZEJRVmNzUlVGRFdDeE5RVUZOTEVWQlEwNHNUMEZCVHl4RlFVTlFMRTlCUVU4c1JVRkRVQ3hwUWtGQmFVSXNSVUZEYWtJc1JVRkJReXhIUVVGSExFOUJRVThzUlVGQlJTeFpRVUZaTEVWQlFVTXNRMEZETTBJc1EwRkJRenRKUVVOR0xFOUJRVThzVFVGQlRTeFBRVUZQTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wRkJRM1pETEVOQlFVTTdRVUZGUkN4TFFVRkxMRlZCUVZVc1dVRkJXU3hEUVVGRExGRkJRV2RDTEVWQlFVVXNXVUZCYjBJc1JVRkJSU3hUUVVGeFFqdEpRVU4yUml4SlFVRkpMRkZCUVZFc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF6dFJRVU53UWl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFVkJRVU1zVVVGQlVTeEZRVUZGTEZsQlFWa3NSVUZCUlN4VFFVRlRMRVZCUVVNc1EwRkJReXhEUVVGRE8wRkJRekZFTEVOQlFVTTdRVUZGUkN4SlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExFdEJRVXNzUlVGQlJTeEZRVUZETEVsQlFVa3NSVUZCUlN4RlFVRkRMRmRCUVZjc1JVRkJSU3hOUVVGTkxFVkJRVVVzWlVGQlpTeEZRVUZGTEU5QlFVOHNSVUZCUlN4UFFVRlBMRVZCUVVVc2FVSkJRV2xDTEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVVN1NVRkROMGNzU1VGQlNTeEpRVUZ2UXl4RFFVRkRPMGxCUTNwRExFbEJRVWs3VVVGRFJpeE5RVUZOTEZOQlFWTXNSMEZCUnl4TlFVRk5MRk5CUVZNc1EwRkJReXhYUVVGWExFVkJRVVVzVFVGQlRTeEZRVUZGTEdWQlFXVXNSVUZCUlN4UFFVRlBMRVZCUVVVc2FVSkJRV2xDTEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkROMGNzU1VGQlNTeEhRVUZITEVWQlFVTXNVMEZCVXl4RlFVRkRMRU5CUVVNN1MwRkRjRUk3U1VGQlF5eFBRVUZQTEVOQlFVMHNSVUZCUlR0UlFVTm1MRWxCUVVrc1IwRkJSeXhGUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETEVWQlFVTXNRMEZCUXp0TFFVTnVRanRKUVVORUxFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTTdVVUZEWml4TFFVRkxMRVZCUVVVc1NVRkJTU3hEUVVGRExFdEJRVXM3VVVGRGFrSXNVMEZCVXl4RlFVRkZMRWxCUVVrc1EwRkJReXhUUVVGVE8wdEJRekZDTEVOQlFVTXNRMEZCUXp0QlFVTk1MRU5CUVVNc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0I3VFdGMGNtbDRmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkwZVhCbExXUmxZMnhoY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTB0dWIzZHVUV1YwY21samMzMGdabkp2YlNBbkxpNHZkSGx3WldRdGJXVjBjbWxqY3k5MGVYQmxaQzF0WlhSeWFXTnpKenRjYm1sdGNHOXlkQ0I3UkdsdFVtVmtkV04wYVc5dVRXVjBhRzlrYzMwZ1puSnZiU0FuTGk5MGVYQmxjeWM3WEc1cGJYQnZjblFnZTBScGMzUmhibU5sUVdkbmNtVm5ZWFJwYjI1TlpYUm9iMlI5SUdaeWIyMGdKeTR1TDJScGMzUmhibU5sTFcxaGRISnBlQzkwZVhCbGN5YzdYRzVwYlhCdmNuUWdlMDExYkhScFEyOXNSR2x0VW1Wa2RXTmxjbjBnWm5KdmJTQW5MaTl0ZFd4MGFTMWpiMngxYlc0dFpHbHRMWEpsWkhWalpYSW5PMXh1WEc0dktpcGNiaUFxSUZkdmNtdGxjaUIwYUhKbFlXUWdjbVZqWldsMmFXNW5JR1JoZEdFZ1puVnVZM1JwYjI0dVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0aGJubGJYWDBnWTI5c2RXMXVSR0YwWVNCVFlXMXdiR1Z6SUhSdklIQnliMk5sYzNNdVhHNGdLaUJBY0dGeVlXMGdlMHR1YjNkdVRXVjBhRzlrYzMwZ2JXVjBhRzlrSUVWdFltVmtaR2x1WnlCdFpYUm9iMlF1WEc0Z0tpQkFjR0Z5WVcwZ2UwdHViM2R1VFdWMGNtbGpjMzBnYldWaGMzVnlaU0JFYVhOMFlXNWpaU0J0WlhSeWFXTXVYRzRnS2lCQWNHRnlZVzBnZTJGdWVYMGdiM0IwYVc5dWN5QlBjSFJwYjI1eklIUnZJSEJoYzNNZ2RHOGdZV3huYjNKcGRHaHRMbHh1SUNvZ1FIQmhjbUZ0SUh0aWIyOXNaV0Z1ZlNCd1lYSmhiR3hsYkVScGMzUmhibU5sVjI5eWEyVnljeUJYYUdWMGFHVnlJSFJ2SUhWelpTQndZWEpoYkd4bGJDQmthWE4wWVc1alpTQjNiM0pyWlhKekxseHVJQ29nUUhKbGRIVnliaUI3WVc1NWZTQkZiV0psWkdScGJtY2dLR0Z1WkNCa2FYTjBZVzVqWlNCdFlYUnlhWGdnZDJobGNtVWdZWEJ3YkdsallXSnNaU2t1WEc0Z0tpOWNibUZ6ZVc1aklHWjFibU4wYVc5dUlHOXVUV1Z6YzJGblpTaGpiMngxYlc1elJHRjBZVG9nUVhKeVlYazhZVzU1VzEwK0xDQnRaWFJvYjJRNklFUnBiVkpsWkhWamRHbHZiazFsZEdodlpITXNJRzFsZEhKcFkzTTZJRXR1YjNkdVRXVjBjbWxqYzF0ZExGeHVJQ0IzWldsbmFIUnpPaUJ1ZFcxaVpYSmJYU3dnWVdkbmNtVm5ZWFJwYjI1TlpYUm9iMlE2SUVScGMzUmhibU5sUVdkbmNtVm5ZWFJwYjI1TlpYUm9iMlFzWEc0Z0lHOXdkR2x2Ym5NNklHRnVlU2s2SUZCeWIyMXBjMlU4VFdGMGNtbDRQaUI3WEc0Z0lHTnZibk4wSUhKbFpIVmpaWElnUFNCdVpYY2dUWFZzZEdsRGIyeEVhVzFTWldSMVkyVnlLRnh1SUNBZ0lHTnZiSFZ0Ym5ORVlYUmhMRnh1SUNBZ0lHMWxkR2h2WkN4Y2JpQWdJQ0J0WlhSeWFXTnpMRnh1SUNBZ0lIZGxhV2RvZEhNc1hHNGdJQ0FnWVdkbmNtVm5ZWFJwYjI1TlpYUm9iMlFzWEc0Z0lDQWdleTR1TG05d2RHbHZibk1zSUhCeWIyZHlaWE56Um5WdVkzMWNiaUFnS1R0Y2JpQWdjbVYwZFhKdUlHRjNZV2wwSUhKbFpIVmpaWEl1ZEhKaGJuTm1iM0p0S0hSeWRXVXBPMXh1ZlZ4dVhHNWhjM2x1WXlCbWRXNWpkR2x2YmlCd2NtOW5jbVZ6YzBaMWJtTW9aWEJ2WTJoT2RXMDZJRzUxYldKbGNpd2daWEJ2WTJoelRHVnVaM1JvT2lCdWRXMWlaWElzSUdWdFltVmtaR2x1WnpvZ2JuVnRZbVZ5VzExYlhTa2dlMXh1SUNCcFppQW9aWEJ2WTJoT2RXMGdKU0ExSUQwOVBTQXdLVnh1SUNBZ0lITmxiR1l1Y0c5emRFMWxjM05oWjJVb2UyVndiMk5vVG5WdExDQmxjRzlqYUhOTVpXNW5kR2dzSUdWdFltVmtaR2x1WjMwcE8xeHVmVnh1WEc1elpXeG1MbTl1YldWemMyRm5aU0E5SUdGemVXNWpJQ2g3WkdGMFlUb2dlMk52YkhWdGJuTkVZWFJoTENCdFpYUm9iMlFzSUdScGMzUmhibU5sVFdWMGNtbGpjeXdnYjNCMGFXOXVjeXdnZDJWcFoyaDBjeXdnWVdkbmNtVm5ZWFJwYjI1TlpYUm9iMlI5ZlNrZ1BUNGdlMXh1SUNCc1pYUWdaR0YwWVRvZ2UyVnljbTl5UHpvZ1lXNTVMQ0JsYldKbFpHUnBibWMvT2lCaGJubDlPMXh1SUNCMGNua2dlMXh1SUNBZ0lHTnZibk4wSUdWdFltVmtaR2x1WnlBOUlHRjNZV2wwSUc5dVRXVnpjMkZuWlNoamIyeDFiVzV6UkdGMFlTd2diV1YwYUc5a0xDQmthWE4wWVc1alpVMWxkSEpwWTNNc0lIZGxhV2RvZEhNc0lHRm5aM0psWjJGMGFXOXVUV1YwYUc5a0xDQnZjSFJwYjI1ektUdGNiaUFnSUNCa1lYUmhJRDBnZTJWdFltVmtaR2x1WjMwN1hHNGdJSDBnWTJGMFkyZ2dLR1U2SUdGdWVTa2dlMXh1SUNBZ0lHUmhkR0VnUFNCN1pYSnliM0k2SUdWOU8xeHVJQ0I5WEc0Z0lITmxiR1l1Y0c5emRFMWxjM05oWjJVb2UxeHVJQ0FnSUdWeWNtOXlPaUJrWVhSaExtVnljbTl5TEZ4dUlDQWdJR1Z0WW1Wa1pHbHVaem9nWkdGMFlTNWxiV0psWkdScGJtY3NYRzRnSUgwcE8xeHVmVHRjYmlKZGZRPT0iLCJpbXBvcnQgeyBWZWN0b3IgfSBmcm9tICcuL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7IHJhbmRvbUZsb2F0LCByYW5kb21JbnQgfSBmcm9tICcuL3JhbmRvbSc7XG4vKipcbiAqIEFzc2VydHMgYSBjb25kaXRpb24gYnkgdGhyb3dpbmcgYW4gRXJyb3IuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtib29sZWFufSBbY29uZGl0aW9uPWZhbHNlXSBDb25kaXRpb24gdG8gYXNzZXJ0LlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlPSdBc3NlcnRpb24gZXJyb3IuJ10gTWVzc2FnZSB0byBvdXRwdXQuXG4gKiBAdGhyb3dzIHtFcnJvcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydChjb25kaXRpb24gPSBmYWxzZSwgbWVzc2FnZSA9ICdBc3NlcnRpb24gZXJyb3IuJykge1xuICAgIGlmICghY29uZGl0aW9uKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG59XG4vKipcbiAqIENyZWF0ZXMgbmV3IHR3by1kaW1lbnNpb25hbCBhcnJheSBhbmQgZmlsbHMgaXQgd2l0aCB0aGUgdmFsdWUgZ2l2ZW4uXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjEgVGhlIGZpcnN0IGRpbWVuc2lvbiBvZiB0aGUgY29vcmRpbmF0ZXMgKG51bWJlciBvZiByb3dzKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24yIFRoZSBzZWNvbmQgZGltZW5zaW9uIG9mIHRoZSBjb29yZGluYXRlcyAobnVtYmVyIG9mIGNvbHVtbnMpLlxuICogQHBhcmFtIHtudW1iZXJ9IFtmaWxsPTBdIEEgdmFsdWUgdG8gZmlsbCB0aGUgY29vcmRpbmF0ZXMgd2l0aC5cbiAqIEByZXR1cm4ge0Nvb3JkaW5hdGVzfSBBIHR3by1kaW1lbnNpb25hbCBmaWxsZWQgd2l0aCB0aGUgdmFsdWUgZ2l2ZW4uXG4gKiBAdG9kbyBNaWdodCBiZSBzbG93IHNpbmNlIHVzZWQgQXJyYXkubWFwLiBQcm9iYWJseSBuZWVkcyBwZXJmb3JtYW5jZSByZXZpc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRDb29yZGluYXRlcyhkaW1lbnNpb24xLCBkaW1lbnNpb24yLCBmaWxsID0gMCkge1xuICAgIHJldHVybiBuZXcgQXJyYXkoZGltZW5zaW9uMSkuZmlsbChmaWxsKS5tYXAoKCkgPT4gKG5ldyBWZWN0b3IoZGltZW5zaW9uMikuZmlsbChmaWxsKSkpO1xufVxuLyoqXG4gKiBUcmFuc3Bvc2UgbWF0cml4LlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7TWF0cml4fSBtYXRyaXggVGhlIG1hdHJpeCB0byBiZSB0cmFuc3Bvc2VkLlxuICogQHJldHVybiB7TWF0cml4fSBUcmFuc3Bvc2VkIG1hdHJpeC5cbiAqIEB0b2RvIE1pZ2h0IGJlIHNsb3cgc2luY2UgdXNlZCBBcnJheS5tYXAuIFByb2JhYmx5IG5lZWRzIHBlcmZvcm1hbmNlIHJldmlzaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNwb3NlTWF0cml4KG1hdHJpeCkge1xuICAgIHJldHVybiBuZXcgQXJyYXkobWF0cml4WzBdLmxlbmd0aCkuZmlsbCgwKVxuICAgICAgICAubWFwKChfLCBpKSA9PiAobmV3IFZlY3RvcihtYXRyaXgubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaikgPT4gKG1hdHJpeFtqXVtpXSkpKSk7XG59XG4vKipcbiAqIEFkZHMgdHdvIHZlY3RvcnMgd2l0aCB0aGUgc2Vjb25kIG9uZSB0byBiZSBtdWx0aXBsaWVkIGJ5IHRoZSBnaXZlbiByYXRpby5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcCBUaGUgZmlyc3QgdmVjdG9yIHRvIGFkZC5cbiAqIEBwYXJhbSB7VmVjdG9yfSBxIFRoZSBzZWNvbmQgdmVjdG9yIHRvIGFkZC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbXVsdGlwbGllcj0xXSBBIG11bHRpcGxpZXIgdG8gYmUgdXNlZCBiZWZvcmUgdGhlIHNlY29uZCB2ZWN0b3IgaXMgYWRkZWQuXG4gKiBAcmV0dXJuIHtWZWN0b3J9IE5ldyB2ZWN0b3IgY29udGFpbmVkIHRoZSByZXN1bHQgb2Ygb3BlcmF0aW9uIHArbXVsdGlwbGllcipxLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVjdG9yQWRkKHAsIHEsIG11bHRpcGxpZXIgPSAxKSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gcC5sZW5ndGg7XG4gICAgYXNzZXJ0KG5JdGVtcyA9PSBxLmxlbmd0aCwgJ1ZlY3RvciBsZW5ndGhzIGRvIG5vdCBtYXRjaC4nKTtcbiAgICBjb25zdCB0b3RhbCA9IG5ldyBWZWN0b3Iobkl0ZW1zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHAubGVuZ3RoOyArK2kpXG4gICAgICAgIHRvdGFsW2ldID0gcFtpXSArIG11bHRpcGxpZXIgKiBxW2ldO1xuICAgIHJldHVybiB0b3RhbDtcbn1cbi8qKlxuICogU3VtcyB0aGUgdmVjdG9yJ3MgaXRlbXMuXG4gKlxuICogQHBhcmFtIHtWZWN0b3J9IHYgVGhlIHZlY3RvciB0byBiZSBzdW1tZWQuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSB2ZWN0b3IncyBpdGVtcyBzdW0uXG4gKi9cbmZ1bmN0aW9uIGl0ZW1zU3VtKHYpIHtcbiAgICBsZXQgdG90YWwgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdi5sZW5ndGg7ICsraSlcbiAgICAgICAgdG90YWwgKz0gdltpXTtcbiAgICByZXR1cm4gdG90YWw7XG59XG4vKipcbiAqIFN1cWFyZXMgdGhlIHZlY3RvcidzIGl0ZW1zLlxuICpcbiAqIEBwYXJhbSB7VmVjdG9yfSB2IFRoZSB2ZWN0b3IgdG8gc3F1YXJlLlxuICogQHJldHVybiB7VmVjdG9yfSBBIG5ldyB2ZWN0b3IgY29udGFpbmluZyB0aGUgb3JpZ2luYWwncyBpdGVtcyBzcXVhcmVkLlxuICovXG5mdW5jdGlvbiB2ZWN0b3JTcXVhcmUodikge1xuICAgIGNvbnN0IG5JdGVtcyA9IHYubGVuZ3RoO1xuICAgIGNvbnN0IHRvdGFsID0gbmV3IFZlY3RvcihuSXRlbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdi5sZW5ndGg7ICsraSlcbiAgICAgICAgdG90YWxbaV0gPSB2W2ldICogdltpXTtcbiAgICByZXR1cm4gdG90YWw7XG59XG5leHBvcnQgZnVuY3Rpb24gdmVjdG9yTGVuZ3RoKHYpIHtcbiAgICBsZXQgc3FyU3VtID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHYubGVuZ3RoOyBpKyspXG4gICAgICAgIHNxclN1bSArPSB2W2ldICogdltpXTtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KHNxclN1bSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdmVjdG9yRG90UHJvZHVjdCh2MSwgdjIpIHtcbiAgICBpZiAodjEubGVuZ3RoICE9IHYyLmxlbmd0aClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgZGltZW5zaW9uYWxpdHkgb2YgdGhlIHZlY3RvcnMgbXVzdCBtYXRjaCcpO1xuICAgIGxldCBwcm9kID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHYxLmxlbmd0aDsgaSsrKVxuICAgICAgICBwcm9kICs9IHYxW2ldICogdjJbaV07XG4gICAgcmV0dXJuIHByb2Q7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBtYXRyaXggZmlsbGVkIHdpdGggcmFuZG9tIGZsb2F0aW5nIHBvaW50IHZhbHVlcy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge251bWJlcn0gZGltZW5zaW9uMSBUaGUgZmlyc3QgZGltZW5zaW9uIG9mIHRoZSBtYXRyaXguXG4gKiBAcGFyYW0ge251bWJlcn0gZGltZW5zaW9uMiBUaGUgc2Vjb25kIGRpbWVuc2lvbiBvZiB0aGUgbWF0cml4LlxuICogQHBhcmFtIHtudW1iZXJ9IFtzY2FsZT0xLl0gTWF4IHZhbHVlIGdpdmVuIGJ5IHJhbmRvbSBnZW5lcmF0b3IuXG4gKiBAcmV0dXJuIHtNYXRyaXh9IEEgbmV3IG1hdHJpeCBmaWxsZWQgd2l0aCByYW5kb20gZmxvYXRpbmcgcG9pbnQgIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbGxSYW5kb21NYXRyaXgoZGltZW5zaW9uMSwgZGltZW5zaW9uMiwgc2NhbGUgPSAxLikge1xuICAgIGNvbnN0IG1hdHJpeCA9IGluaXRDb29yZGluYXRlcyhkaW1lbnNpb24xLCBkaW1lbnNpb24yKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpbWVuc2lvbjE7ICsraSkge1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGRpbWVuc2lvbjI7ICsrailcbiAgICAgICAgICAgIG1hdHJpeFtpXVtqXSA9IHJhbmRvbUZsb2F0KHNjYWxlKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hdHJpeDtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyBFdWNsaWRlYW4gZGlzdGFuY2UgYmV0d2VlbiB0d28gdmVjdG9ycy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcCBUaGUgZmlyc3QgdmVjdG9yLlxuICogQHBhcmFtIHtWZWN0b3J9IHEgVGhlIHNlY29uZCB2ZWN0b3IuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IEV1Y2xpZGVhbiBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBnaXZlbiB2ZWN0b3JzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UocCwgcSkge1xuICAgIGxldCByZXN1bHQgPSAwO1xuICAgIGNvbnN0IGxlbiA9IHAubGVuZ3RoO1xuICAgIGlmIChsZW4gIT09IHEubGVuZ3RoKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBkaW1lbnNpb25hbGl0eSBvZiB0aGUgdmVjdG9ycyBtdXN0IG1hdGNoJyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47ICsraSlcbiAgICAgICAgcmVzdWx0ICs9IE1hdGgucG93KChwW2ldIC0gcVtpXSksIDIpO1xuICAgIHJldHVybiBNYXRoLnNxcnQocmVzdWx0KTtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIGRpc3RhbmNlIG1hdHJpeCB1c2luZyBhIGN1c3RvbSBkaXN0YW5jZSBmdW5jdGlvbi5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge1ZlY3RvcnN9IGRhdGEgSW5wdXQgdmVjdG9ycyB0byBjYWxjdWxhdGUgZGlzdGFuY2VzLlxuICogQHBhcmFtIHtEaXN0YW5jZU1ldHJpY30gZGlzdGFuY2UgQ3VzdG9tIGRpc3RhbmNlIGZ1bmN0aW9uLlxuICogQHJldHVybiB7TWF0cml4fSBDYWxjdWxhdGVkIGN1c3RvbSBkaXN0YW5jZSBtYXRyaXguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjRGlzdGFuY2VNYXRyaXgoZGF0YSwgZGlzdGFuY2UpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBkYXRhLmxlbmd0aDtcbiAgICBjb25zdCBtYXRyaXggPSBpbml0Q29vcmRpbmF0ZXMobkl0ZW1zLCBuSXRlbXMsIDApO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgbkl0ZW1zOyArK2opIHtcbiAgICAgICAgICAgIGNvbnN0IGQgPSAoZGF0YVtpXSA9PSBudWxsKSB8fCAoZGF0YVtqXSA9PSBudWxsKSA/IDAgOiBkaXN0YW5jZShkYXRhW2ldLCBkYXRhW2pdKTtcbiAgICAgICAgICAgIG1hdHJpeFtpXVtqXSA9IG1hdHJpeFtqXVtpXSA9IGQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hdHJpeDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIGRpc3RhbmNlIG1hdHJpeCB1c2luZyBhIGN1c3RvbSBkaXN0YW5jZSBmdW5jdGlvbi5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge1ZlY3RvcnN9IGRhdGEgSW5wdXQgdmVjdG9ycyB0byBjYWxjdWxhdGUgZGlzdGFuY2VzLlxuICogQHBhcmFtIHtEaXN0YW5jZU1ldHJpY30gZGlzdGFuY2UgQ3VzdG9tIGRpc3RhbmNlIGZ1bmN0aW9uLlxuICogQHJldHVybiB7TWF0cml4fSBDYWxjdWxhdGVkIGN1c3RvbSBkaXN0YW5jZSBtYXRyaXguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjTm9ybWFsaXplZERpc3RhbmNlTWF0cml4KGRhdGEsIGRpc3RhbmNlKSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gZGF0YS5sZW5ndGg7XG4gICAgY29uc3QgbWF0cml4ID0gaW5pdENvb3JkaW5hdGVzKG5JdGVtcywgbkl0ZW1zLCAwKTtcbiAgICBsZXQgbWF4ID0gTnVtYmVyLk1JTl9WQUxVRTtcbiAgICBsZXQgbWluID0gTnVtYmVyLk1BWF9WQUxVRTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBpOyBqIDwgbkl0ZW1zOyArK2opIHtcbiAgICAgICAgICAgIGNvbnN0IGQgPSAoZGF0YVtpXSA9PSBudWxsKSB8fCAoZGF0YVtqXSA9PSBudWxsIHx8IGkgPT09IGopID8gMCA6IGRpc3RhbmNlKGRhdGFbaV0sIGRhdGFbal0pO1xuICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gbWF0cml4W2pdW2ldID0gZDtcbiAgICAgICAgICAgIGlmIChkID4gbWF4KVxuICAgICAgICAgICAgICAgIG1heCA9IGQ7XG4gICAgICAgICAgICBpZiAoZCA8IG1pbilcbiAgICAgICAgICAgICAgICBtaW4gPSBkO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgbkl0ZW1zOyArK2opXG4gICAgICAgICAgICBtYXRyaXhbaV1bal0gPSBtYXRyaXhbal1baV0gPSAobWF0cml4W2ldW2pdIC0gbWluKSAvIChtYXggLSBtaW4pO1xuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xufVxuLyoqIEdlbmVyYXRlcyBhcnJheSBmcm9tIGEgcmFuZ2UgW2JlZ2luOyBlbmRdIG9yIFtiZWdpbjsgZW5kKSBpZiBlbmRFeGNsdXNpdmUuICoqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlblJhbmdlKGJlZ2luLCBlbmQsIGVuZEV4Y2x1c2l2ZSA9IGZhbHNlKSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gZW5kIC0gYmVnaW4gKyAoZW5kRXhjbHVzaXZlID8gMCA6IDEpO1xuICAgIGNvbnN0IHNlcmllcyA9IG5ldyBJbnQzMkFycmF5KG5JdGVtcyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuSXRlbXM7ICsraSlcbiAgICAgICAgc2VyaWVzW2ldID0gYmVnaW4gKyBpO1xuICAgIHJldHVybiBzZXJpZXM7XG59XG4vKipcbiAqIFJldHVybnMgb3JkZXIgb2YgdmFsdWVzIGFzIGlmIHRoZXkgYXJlIHNvcnRlZC5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge2FueVtdfSB2YWx1ZXMgSW5wdXQgYXJyYXkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtyZXZlcnNlPWZhbHNlXSBXaGV0aGVyIHRvIHJldHVybiByZXZlcnNlZCBvcmRlci5cbiAqIEByZXR1cm4ge251bWJlcltdfSBUaGUgb3JkZXIgY29tcHV0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcmdTb3J0KHZhbHVlcywgcmV2ZXJzZSA9IGZhbHNlKSB7XG4gICAgY29uc3Qgc29ydGZuID0gcmV2ZXJzZSA/IChhLCBiKSA9PiAoYlswXSAtIGFbMF0pIDogKGEsIGIpID0+IChhWzBdIC0gYlswXSk7XG4gICAgY29uc3QgZGVjb3IgPSAodiwgaSkgPT4gW3YsIGldOyAvLyBzZXQgaW5kZXggdG8gdmFsdWVcbiAgICBjb25zdCB1bmRlY29yID0gKGEpID0+IGFbMV07IC8vIGxlYXZlIG9ubHkgaW5kZXhcbiAgICBjb25zdCBfYXJnc29ydCA9IChhcnIpID0+IGFyci5tYXAoZGVjb3IpLnNvcnQoc29ydGZuKS5tYXAodW5kZWNvcik7XG4gICAgcmV0dXJuIF9hcmdzb3J0KHZhbHVlcyk7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIGluZGV4ZXMgb2YgdGhlIG1vc3QgZGl2ZXJzZSBvYmplY3RzIGFjY29yZGluZyB0byB0aGUgZGlzdCBmdW5jdGlvblxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aCB0b3RhbCBudW1iZXIgb2Ygb2JqZWN0c1xuICogQHBhcmFtIHtudW1iZXJ9IG4gbnVtYmVyIG9mIGRpdmVyc2UgZWxlbWVudHMgdG8gZmluZFxuICogQHBhcmFtIHsoaTE6IG51bWJlciwgaTI6IG51bWJlcikgPT4gbnVtYmVyfSBkaXN0IGEgZnVuY3Rpb24gd2hpY2ggY2FsY3VsYXRlcyBkaXN0YW5jZSBiZXR3ZWVuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHdvIG9iamVjdHMgdXNpbmcgdGhlaXIgaW5kZXhlc1xuICogQHJldHVybnMge251bWJlcltdfSBUaGUgaW5kZXhlcyBvZiB0aGUgbW9zdCBkaXZlcnNlIG9iamVjdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERpdmVyc2VTdWJzZXQobGVuZ3RoLCBuLCBkaXN0KSB7XG4gICAgZnVuY3Rpb24gbWF4QnkodmFsdWVzLCBvcmRlckJ5KSB7XG4gICAgICAgIGxldCBtYXhWYWx1ZSA9IG51bGw7XG4gICAgICAgIGxldCBtYXhPcmRlckJ5ID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHZhbHVlcykge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudE9yZGVyQnkgPSBvcmRlckJ5KGVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKG1heE9yZGVyQnkgPT0gbnVsbCB8fCBlbGVtZW50T3JkZXJCeSA+IG1heE9yZGVyQnkpIHtcbiAgICAgICAgICAgICAgICBtYXhWYWx1ZSA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgbWF4T3JkZXJCeSA9IGVsZW1lbnRPcmRlckJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXhWYWx1ZTtcbiAgICB9XG4gICAgY29uc3Qgc3Vic2V0ID0gW3JhbmRvbUludChsZW5ndGggLSAxKV07XG4gICAgY29uc3QgY29tcGxlbWVudCA9IG5ldyBTZXQoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgICAgIGlmICghc3Vic2V0LmluY2x1ZGVzKGkpKVxuICAgICAgICAgICAgY29tcGxlbWVudC5hZGQoaSk7XG4gICAgfVxuICAgIHdoaWxlIChzdWJzZXQubGVuZ3RoIDwgbikge1xuICAgICAgICBjb25zdCBpZHggPSBtYXhCeShjb21wbGVtZW50LnZhbHVlcygpLCAoaSkgPT4gTWF0aC5taW4uYXBwbHkoTWF0aCwgc3Vic2V0Lm1hcChmdW5jdGlvbiAodmFsLCBpbmRleCkge1xuICAgICAgICAgICAgcmV0dXJuIGRpc3QoaSwgdmFsKTtcbiAgICAgICAgfSkpKTtcbiAgICAgICAgaWYgKGlkeCkge1xuICAgICAgICAgICAgc3Vic2V0LnB1c2goaWR4KTtcbiAgICAgICAgICAgIGNvbXBsZW1lbnQuZGVsZXRlKGlkeCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN1YnNldDtcbn1cbi8qKlxuICogUmV0dXJucyBub3JtYWxpemVkIHZlY3Rvci5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge1ZlY3Rvcn0gZGF0YSBudW1lcmljYWwgYXJyYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShkYXRhKSB7XG4gICAgY29uc3QgbGVuID0gZGF0YS5sZW5ndGg7XG4gICAgbGV0IHN1bSA9IDA7XG4gICAgbGV0IHN1bU9mU3F1YXJlcyA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgICAgICBzdW0gKz0gZGF0YVtpXTtcbiAgICAgICAgc3VtT2ZTcXVhcmVzICs9IE1hdGgucG93KGRhdGFbaV0sIDIpO1xuICAgIH1cbiAgICBjb25zdCBtZWFuID0gc3VtIC8gbGVuO1xuICAgIGNvbnN0IHN0ZERldkludmVyc2UgPSAxLjAgLyBNYXRoLnNxcnQoc3VtT2ZTcXVhcmVzIC8gbGVuIC0gTWF0aC5wb3cobWVhbiwgMikpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyArK2kpXG4gICAgICAgIGRhdGFbaV0gPSAoZGF0YVtpXSAtIG1lYW4pICogc3RkRGV2SW52ZXJzZTtcbiAgICByZXR1cm4gZGF0YTtcbn1cbi8qKlxuICogRmluZHMgc2V0IGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gbGlzdHMuXG4gKiBAcGFyYW0ge2FueVtdfSBhIFRoZSBmaXJzdCBsaXN0LlxuICogQHBhcmFtIHthbnlbXX0gYiBUaGUgc2Vjb25kIGxpc3QuXG4gKiBAcmV0dXJuIHthbnlbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldERpZmZlcmVuY2UoYSwgYikge1xuICAgIGNvbnN0IGJTZXQgPSBuZXcgU2V0KGIpO1xuICAgIHJldHVybiBBcnJheS5mcm9tKG5ldyBTZXQoYS5maWx0ZXIoKHgpID0+ICFiU2V0Lmhhcyh4KSkpLnZhbHVlcygpKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRtVmpkRzl5TFc5d1pYSmhkR2x2Ym5NdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUoyWldOMGIzSXRiM0JsY21GMGFXOXVjeTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFTeFBRVUZQTEVWQlFWTXNUVUZCVFN4RlFVRjFReXhOUVVGTkxIRkNRVUZ4UWl4RFFVRkRPMEZCUTNwR0xFOUJRVThzUlVGQlF5eFhRVUZYTEVWQlFVVXNVMEZCVXl4RlFVRkRMRTFCUVUwc1ZVRkJWU3hEUVVGRE8wRkJSV2hFT3pzN096czdPMGRCVDBjN1FVRkRTQ3hOUVVGTkxGVkJRVlVzVFVGQlRTeERRVUZETEZsQlFYRkNMRXRCUVVzc1JVRkJSU3hWUVVGclFpeHJRa0ZCYTBJN1NVRkRja1lzU1VGQlNTeERRVUZETEZOQlFWTTdVVUZEV2l4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBGQlF6ZENMRU5CUVVNN1FVRkZSRHM3T3pzN096czdSMEZSUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hsUVVGbExFTkJRVU1zVlVGQmEwSXNSVUZCUlN4VlFVRnJRaXhGUVVGRkxFOUJRV1VzUTBGQlF6dEpRVU4wUml4UFFVRlBMRWxCUVVrc1MwRkJTeXhEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4SlFVRkpMRTFCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRM3BHTEVOQlFVTTdRVUZGUkRzN096czdPenRIUVU5SE8wRkJRMGdzVFVGQlRTeFZRVUZWTEdWQlFXVXNRMEZCUXl4TlFVRmpPMGxCUXpWRExFOUJRVThzU1VGQlNTeExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkRka01zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEpRVUZKTEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGRFWXNRMEZCUXp0QlFVVkVPenM3T3pzN096dEhRVkZITzBGQlEwZ3NUVUZCVFN4VlFVRlZMRk5CUVZNc1EwRkJReXhEUVVGVExFVkJRVVVzUTBGQlV5eEZRVUZGTEdGQlFYRkNMRU5CUVVNN1NVRkRjRVVzVFVGQlRTeE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRKUVVWNFFpeE5RVUZOTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzT0VKQlFUaENMRU5CUVVNc1EwRkJRenRKUVVVelJDeE5RVUZOTEV0QlFVc3NSMEZCUnl4SlFVRkpMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEpRVVZxUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU03VVVGREwwSXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4VlFVRlZMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlJYUkRMRTlCUVU4c1MwRkJTeXhEUVVGRE8wRkJRMllzUTBGQlF6dEJRVVZFT3pzN096dEhRVXRITzBGQlEwZ3NVMEZCVXl4UlFVRlJMRU5CUVVNc1EwRkJVenRKUVVONlFpeEpRVUZKTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkZaQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTTdVVUZETDBJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVVm9RaXhQUVVGUExFdEJRVXNzUTBGQlF6dEJRVU5tTEVOQlFVTTdRVUZGUkRzN096czdSMEZMUnp0QlFVTklMRk5CUVZNc1dVRkJXU3hEUVVGRExFTkJRVk03U1VGRE4wSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF6dEpRVU40UWl4TlFVRk5MRXRCUVVzc1IwRkJSeXhKUVVGSkxFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0SlFVVnFReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTTdVVUZETDBJc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGZWtJc1QwRkJUeXhMUVVGTExFTkJRVU03UVVGRFppeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMRmxCUVZrc1EwRkJReXhEUVVGVE8wbEJRM0JETEVsQlFVa3NUVUZCVFN4SFFVRlhMRU5CUVVNc1EwRkJRenRKUVVOMlFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRlhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVN1VVRkRka01zVFVGQlRTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZUVJc1QwRkJUeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUXpOQ0xFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNaMEpCUVdkQ0xFTkJRVU1zUlVGQlZTeEZRVUZGTEVWQlFWVTdTVUZEY2tRc1NVRkJTU3hGUVVGRkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVWQlFVVXNRMEZCUXl4TlFVRk5PMUZCUTNoQ0xFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNPRU5CUVRoRExFTkJRVU1zUTBGQlF6dEpRVU5zUlN4SlFVRkpMRWxCUVVrc1IwRkJWeXhEUVVGRExFTkJRVU03U1VGRGNrSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJWeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRk8xRkJRM2hETEVsQlFVa3NTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNoQ0xFOUJRVThzU1VGQlNTeERRVUZETzBGQlEyUXNRMEZCUXp0QlFVVkVPenM3T3pzN096dEhRVkZITzBGQlEwZ3NUVUZCVFN4VlFVRlZMR2RDUVVGblFpeERRVUZETEZWQlFXdENMRVZCUVVVc1ZVRkJhMElzUlVGQlJTeFJRVUZuUWl4RlFVRkZPMGxCUTNwR0xFMUJRVTBzVFVGQlRTeEhRVUZITEdWQlFXVXNRMEZCUXl4VlFVRlZMRVZCUVVVc1ZVRkJWU3hEUVVGRExFTkJRVU03U1VGRmRrUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEZWQlFWVXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRSUVVOdVF5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVlVGQlZTeEZRVUZGTEVWQlFVVXNRMEZCUXp0WlFVTnFReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1YwRkJWeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzB0QlEzSkRPMGxCUTBRc1QwRkJUeXhOUVVGTkxFTkJRVU03UVVGRGFFSXNRMEZCUXp0QlFVVkVPenM3T3pzN08wZEJUMGM3UVVGRFNDeE5RVUZOTEZWQlFWVXNNRUpCUVRCQ0xFTkJRVU1zUTBGQlV5eEZRVUZGTEVOQlFWTTdTVUZETjBRc1NVRkJTU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEyWXNUVUZCVFN4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF6dEpRVVZ5UWl4SlFVRkpMRWRCUVVjc1MwRkJTeXhEUVVGRExFTkJRVU1zVFVGQlRUdFJRVU5zUWl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExEaERRVUU0UXl4RFFVRkRMRU5CUVVNN1NVRkZiRVVzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJTeEZRVUZGTEVOQlFVTTdVVUZETVVJc1RVRkJUU3hKUVVGSkxGTkJRVUVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVa3NRMEZCUXl4RFFVRkJMRU5CUVVNN1NVRkZMMElzVDBGQlR5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJRek5DTEVOQlFVTTdRVUZGUkRzN096czdPenRIUVU5SE8wRkJRMGdzVFVGQlRTeFZRVUZWTEd0Q1FVRnJRaXhEUVVGRExFbEJRV0VzUlVGQlJTeFJRVUYzUWp0SlFVTjRSU3hOUVVGTkxFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRPMGxCUXpOQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEdWQlFXVXNRMEZCUXl4TlFVRk5MRVZCUVVVc1RVRkJUU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlJXeEVMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3VVVGREwwSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3V1VGRGJrTXNUVUZCVFN4RFFVRkRMRWRCUVZjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVNeFJpeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFRRVU5xUXp0TFFVTkdPMGxCUTBRc1QwRkJUeXhOUVVGTkxFTkJRVU03UVVGRGFFSXNRMEZCUXp0QlFVVkVPenM3T3pzN08wZEJUMGM3UVVGRFNDeE5RVUZOTEZWQlFWVXNORUpCUVRSQ0xFTkJRVU1zU1VGQllTeEZRVUZGTEZGQlFYZENPMGxCUTJ4R0xFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkRNMElzVFVGQlRTeE5RVUZOTEVkQlFVY3NaVUZCWlN4RFFVRkRMRTFCUVUwc1JVRkJSU3hOUVVGTkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEYkVRc1NVRkJTU3hIUVVGSExFZEJRVWNzVFVGQlRTeERRVUZETEZOQlFWTXNRMEZCUXp0SlFVTXpRaXhKUVVGSkxFZEJRVWNzUjBGQlJ5eE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRPMGxCUXpOQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZETDBJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU12UWl4TlFVRk5MRU5CUVVNc1IwRkJWeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEY2tjc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRhRU1zU1VGQlNTeERRVUZETEVkQlFVY3NSMEZCUnp0blFrRkJSU3hIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEzSkNMRWxCUVVrc1EwRkJReXhIUVVGSExFZEJRVWM3WjBKQlFVVXNSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJRenRUUVVOMFFqdExRVU5HTzBsQlEwUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRSUVVNdlFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNN1dVRkRha01zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJRenRMUVVOd1JUdEpRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU03UVVGRlJDeHJSa0ZCYTBZN1FVRkRiRVlzVFVGQlRTeFZRVUZWTEZGQlFWRXNRMEZCUXl4TFFVRmhMRVZCUVVVc1IwRkJWeXhGUVVGRkxGbEJRVmtzUjBGQlJ5eExRVUZMTzBsQlEzWkZMRTFCUVUwc1RVRkJUU3hIUVVGSExFZEJRVWNzUjBGQlJ5eExRVUZMTEVkQlFVY3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRjRVFzVFVGQlRTeE5RVUZOTEVkQlFVY3NTVUZCU1N4VlFVRlZMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRmRFTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNN1VVRkROMElzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRmVFSXNUMEZCVHl4TlFVRk5MRU5CUVVNN1FVRkRhRUlzUTBGQlF6dEJRVVZFT3pzN096czdPMGRCVDBjN1FVRkRTQ3hOUVVGTkxGVkJRVlVzVDBGQlR5eERRVUZETEUxQlFXRXNSVUZCUlN4UFFVRlBMRWRCUVVjc1MwRkJTenRKUVVOd1JDeE5RVUZOTEUxQlFVMHNSMEZCUnl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlVTeEZRVUZGTEVOQlFWRXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCVVN4RlFVRkZMRU5CUVZFc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZGtjc1RVRkJUU3hMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZOTEVWQlFVVXNRMEZCVXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMSEZDUVVGeFFqdEpRVU5zUlN4TlFVRk5MRTlCUVU4c1IwRkJSeXhEUVVGRExFTkJRVkVzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zYlVKQlFXMUNPMGxCUTNaRUxFMUJRVTBzVVVGQlVTeEhRVUZITEVOQlFVTXNSMEZCVlN4RlFVRkZMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1NVRkRNVVVzVDBGQlR5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1FVRkRNVUlzUTBGQlF6dEJRVVZFT3pzN096czdPMGRCVDBjN1FVRkRTQ3hOUVVGTkxGVkJRVlVzWjBKQlFXZENMRU5CUVVNc1RVRkJZeXhGUVVGRkxFTkJRVk1zUlVGQlJTeEpRVUYzUXp0SlFVTnNSeXhUUVVGVExFdEJRVXNzUTBGQlF5eE5RVUZuUXl4RlFVRkZMRTlCUVRoQ08xRkJRemRGTEVsQlFVa3NVVUZCVVN4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOd1FpeEpRVUZKTEZWQlFWVXNSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkZkRUlzUzBGQlN5eE5RVUZOTEU5QlFVOHNTVUZCU1N4TlFVRk5MRVZCUVVVN1dVRkROVUlzVFVGQlRTeGpRVUZqTEVkQlFVY3NUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8xbEJRM2hETEVsQlFVa3NWVUZCVlN4SlFVRkpMRWxCUVVrc1NVRkJTU3hqUVVGakxFZEJRVWNzVlVGQlZTeEZRVUZGTzJkQ1FVTnlSQ3hSUVVGUkxFZEJRVWNzVDBGQlR5eERRVUZETzJkQ1FVTnVRaXhWUVVGVkxFZEJRVWNzWTBGQll5eERRVUZETzJGQlF6ZENPMU5CUTBZN1VVRkRSQ3hQUVVGUExGRkJRVkVzUTBGQlF6dEpRVU5zUWl4RFFVRkRPMGxCUlVRc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGRrTXNUVUZCVFN4VlFVRlZMRWRCUVVjc1NVRkJTU3hIUVVGSExFVkJRVVVzUTBGQlF6dEpRVVUzUWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NUVUZCVFN4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8xRkJReTlDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU55UWl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzB0QlEzSkNPMGxCUlVRc1QwRkJUeXhOUVVGTkxFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNSVUZCUlR0UlFVTjRRaXhOUVVGTkxFZEJRVWNzUjBGQlJ5eExRVUZMTEVOQlEyWXNWVUZCVlN4RFFVRkRMRTFCUVUwc1JVRkJPRUlzUlVGREwwTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1JVRkJSU3hOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEZWQlFWTXNSMEZCUnl4RlFVRkZMRXRCUVVzN1dVRkRlRVFzVDBGQlR5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRM1JDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOUUxFbEJRVWtzUjBGQlJ5eEZRVUZGTzFsQlExQXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU5xUWl4VlFVRlZMRU5CUVVNc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFOQlEzaENPMHRCUTBZN1NVRkRSQ3hQUVVGUExFMUJRVTBzUTBGQlF6dEJRVU5vUWl4RFFVRkRPMEZCUlVRN096czdPMGRCUzBjN1FVRkRTQ3hOUVVGTkxGVkJRVlVzVTBGQlV5eERRVUZETEVsQlFWazdTVUZEY0VNc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXp0SlFVTjRRaXhKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEV2l4SlFVRkpMRmxCUVZrc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRmNrSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVkQlFVY3NSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRSUVVNMVFpeEhRVUZITEVsQlFVa3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMllzV1VGQldTeEpRVUZKTEZOQlFVRXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGSkxFTkJRVU1zUTBGQlFTeERRVUZETzB0QlF6bENPMGxCUlVRc1RVRkJUU3hKUVVGSkxFZEJRVWNzUjBGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXp0SlFVTjJRaXhOUVVGTkxHRkJRV0VzUjBGQlJ5eEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFZEJRVWNzUjBGQlJ5eEhRVUZITEZOQlFVRXNTVUZCU1N4RlFVRkpMRU5CUVVNc1EwRkJRU3hEUVVGRExFTkJRVU03U1VGRmRFVXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVkQlFVY3NSVUZCUlN4RlFVRkZMRU5CUVVNN1VVRkRNVUlzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMR0ZCUVdFc1EwRkJRenRKUVVVM1F5eFBRVUZQTEVsQlFVa3NRMEZCUXp0QlFVTmtMRU5CUVVNN1FVRkZSRHM3T3pzN1IwRkxSenRCUVVOSUxFMUJRVTBzVlVGQlZTeGhRVUZoTEVOQlFVTXNRMEZCVVN4RlFVRkZMRU5CUVZFN1NVRkRPVU1zVFVGQlRTeEpRVUZKTEVkQlFVY3NTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGVFSXNUMEZCVHl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJRenRCUVVOeVJTeERRVUZESWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUh0TllYUnlhWGdzSUZabFkzUnZjaXdnUTI5dmNtUnBibUYwWlhNc0lGWmxZM1J2Y25Nc0lFUnBjM1JoYm1ObFRXVjBjbWxqZlNCbWNtOXRJQ2N1TDNSNWNHVXRaR1ZqYkdGeVlYUnBiMjV6Snp0Y2JtbHRjRzl5ZENCN2NtRnVaRzl0Um14dllYUXNJSEpoYm1SdmJVbHVkSDBnWm5KdmJTQW5MaTl5WVc1a2IyMG5PMXh1WEc0dktpcGNiaUFxSUVGemMyVnlkSE1nWVNCamIyNWthWFJwYjI0Z1lua2dkR2h5YjNkcGJtY2dZVzRnUlhKeWIzSXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUhCaGNtRnRJSHRpYjI5c1pXRnVmU0JiWTI5dVpHbDBhVzl1UFdaaGJITmxYU0JEYjI1a2FYUnBiMjRnZEc4Z1lYTnpaWEowTGx4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlGdHRaWE56WVdkbFBTZEJjM05sY25ScGIyNGdaWEp5YjNJdUoxMGdUV1Z6YzJGblpTQjBieUJ2ZFhSd2RYUXVYRzRnS2lCQWRHaHliM2R6SUh0RmNuSnZjbjFjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHRnpjMlZ5ZENoamIyNWthWFJwYjI0NklHSnZiMnhsWVc0Z1BTQm1ZV3h6WlN3Z2JXVnpjMkZuWlRvZ2MzUnlhVzVuSUQwZ0owRnpjMlZ5ZEdsdmJpQmxjbkp2Y2k0bktTQjdYRzRnSUdsbUlDZ2hZMjl1WkdsMGFXOXVLVnh1SUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lodFpYTnpZV2RsS1R0Y2JuMWNibHh1THlvcVhHNGdLaUJEY21WaGRHVnpJRzVsZHlCMGQyOHRaR2x0Wlc1emFXOXVZV3dnWVhKeVlYa2dZVzVrSUdacGJHeHpJR2wwSUhkcGRHZ2dkR2hsSUhaaGJIVmxJR2RwZG1WdUxseHVJQ3BjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCa2FXMWxibk5wYjI0eElGUm9aU0JtYVhKemRDQmthVzFsYm5OcGIyNGdiMllnZEdobElHTnZiM0prYVc1aGRHVnpJQ2h1ZFcxaVpYSWdiMllnY205M2N5a3VYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnWkdsdFpXNXphVzl1TWlCVWFHVWdjMlZqYjI1a0lHUnBiV1Z1YzJsdmJpQnZaaUIwYUdVZ1kyOXZjbVJwYm1GMFpYTWdLRzUxYldKbGNpQnZaaUJqYjJ4MWJXNXpLUzVjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCYlptbHNiRDB3WFNCQklIWmhiSFZsSUhSdklHWnBiR3dnZEdobElHTnZiM0prYVc1aGRHVnpJSGRwZEdndVhHNGdLaUJBY21WMGRYSnVJSHREYjI5eVpHbHVZWFJsYzMwZ1FTQjBkMjh0WkdsdFpXNXphVzl1WVd3Z1ptbHNiR1ZrSUhkcGRHZ2dkR2hsSUhaaGJIVmxJR2RwZG1WdUxseHVJQ29nUUhSdlpHOGdUV2xuYUhRZ1ltVWdjMnh2ZHlCemFXNWpaU0IxYzJWa0lFRnljbUY1TG0xaGNDNGdVSEp2WW1GaWJIa2dibVZsWkhNZ2NHVnlabTl5YldGdVkyVWdjbVYyYVhOcGIyNHVYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCcGJtbDBRMjl2Y21ScGJtRjBaWE1vWkdsdFpXNXphVzl1TVRvZ2JuVnRZbVZ5TENCa2FXMWxibk5wYjI0eU9pQnVkVzFpWlhJc0lHWnBiR3c2SUc1MWJXSmxjaUE5SURBcE9pQkRiMjl5WkdsdVlYUmxjeUI3WEc0Z0lISmxkSFZ5YmlCdVpYY2dRWEp5WVhrb1pHbHRaVzV6YVc5dU1Ta3VabWxzYkNobWFXeHNLUzV0WVhBb0tDa2dQVDRnS0c1bGR5QldaV04wYjNJb1pHbHRaVzV6YVc5dU1pa3VabWxzYkNobWFXeHNLU2twTzF4dWZWeHVYRzR2S2lwY2JpQXFJRlJ5WVc1emNHOXpaU0J0WVhSeWFYZ3VYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUhCaGNtRnRJSHROWVhSeWFYaDlJRzFoZEhKcGVDQlVhR1VnYldGMGNtbDRJSFJ2SUdKbElIUnlZVzV6Y0c5elpXUXVYRzRnS2lCQWNtVjBkWEp1SUh0TllYUnlhWGg5SUZSeVlXNXpjRzl6WldRZ2JXRjBjbWw0TGx4dUlDb2dRSFJ2Wkc4Z1RXbG5hSFFnWW1VZ2MyeHZkeUJ6YVc1alpTQjFjMlZrSUVGeWNtRjVMbTFoY0M0Z1VISnZZbUZpYkhrZ2JtVmxaSE1nY0dWeVptOXliV0Z1WTJVZ2NtVjJhWE5wYjI0dVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUIwY21GdWMzQnZjMlZOWVhSeWFYZ29iV0YwY21sNE9pQk5ZWFJ5YVhncE9pQk5ZWFJ5YVhnZ2UxeHVJQ0J5WlhSMWNtNGdibVYzSUVGeWNtRjVLRzFoZEhKcGVGc3dYUzVzWlc1bmRHZ3BMbVpwYkd3b01DbGNiaUFnSUNBdWJXRndLQ2hmTENCcEtTQTlQaUFvYm1WM0lGWmxZM1J2Y2lodFlYUnlhWGd1YkdWdVozUm9LUzVtYVd4c0tEQXBMbTFoY0Nnb1h5d2dhaWtnUFQ0Z0tHMWhkSEpwZUZ0cVhWdHBYU2twS1NrN1hHNTlYRzVjYmk4cUtseHVJQ29nUVdSa2N5QjBkMjhnZG1WamRHOXljeUIzYVhSb0lIUm9aU0J6WldOdmJtUWdiMjVsSUhSdklHSmxJRzExYkhScGNHeHBaV1FnWW5rZ2RHaGxJR2RwZG1WdUlISmhkR2x2TGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQndZWEpoYlNCN1ZtVmpkRzl5ZlNCd0lGUm9aU0JtYVhKemRDQjJaV04wYjNJZ2RHOGdZV1JrTGx4dUlDb2dRSEJoY21GdElIdFdaV04wYjNKOUlIRWdWR2hsSUhObFkyOXVaQ0IyWldOMGIzSWdkRzhnWVdSa0xseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRnR0ZFd4MGFYQnNhV1Z5UFRGZElFRWdiWFZzZEdsd2JHbGxjaUIwYnlCaVpTQjFjMlZrSUdKbFptOXlaU0IwYUdVZ2MyVmpiMjVrSUhabFkzUnZjaUJwY3lCaFpHUmxaQzVjYmlBcUlFQnlaWFIxY200Z2UxWmxZM1J2Y24wZ1RtVjNJSFpsWTNSdmNpQmpiMjUwWVdsdVpXUWdkR2hsSUhKbGMzVnNkQ0J2WmlCdmNHVnlZWFJwYjI0Z2NDdHRkV3gwYVhCc2FXVnlLbkV1WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQjJaV04wYjNKQlpHUW9jRG9nVm1WamRHOXlMQ0J4T2lCV1pXTjBiM0lzSUcxMWJIUnBjR3hwWlhJNklHNTFiV0psY2lBOUlERXBPaUJXWldOMGIzSWdlMXh1SUNCamIyNXpkQ0J1U1hSbGJYTWdQU0J3TG14bGJtZDBhRHRjYmx4dUlDQmhjM05sY25Rb2JrbDBaVzF6SUQwOUlIRXViR1Z1WjNSb0xDQW5WbVZqZEc5eUlHeGxibWQwYUhNZ1pHOGdibTkwSUcxaGRHTm9MaWNwTzF4dVhHNGdJR052Ym5OMElIUnZkR0ZzSUQwZ2JtVjNJRlpsWTNSdmNpaHVTWFJsYlhNcE8xeHVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2NDNXNaVzVuZEdnN0lDc3JhU2xjYmlBZ0lDQjBiM1JoYkZ0cFhTQTlJSEJiYVYwZ0t5QnRkV3gwYVhCc2FXVnlJQ29nY1Z0cFhUdGNibHh1SUNCeVpYUjFjbTRnZEc5MFlXdzdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1UzVnRjeUIwYUdVZ2RtVmpkRzl5SjNNZ2FYUmxiWE11WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRXWldOMGIzSjlJSFlnVkdobElIWmxZM1J2Y2lCMGJ5QmlaU0J6ZFcxdFpXUXVYRzRnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEo5SUZSb1pTQjJaV04wYjNJbmN5QnBkR1Z0Y3lCemRXMHVYRzRnS2k5Y2JtWjFibU4wYVc5dUlHbDBaVzF6VTNWdEtIWTZJRlpsWTNSdmNpazZJRzUxYldKbGNpQjdYRzRnSUd4bGRDQjBiM1JoYkNBOUlEQTdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQjJMbXhsYm1kMGFEc2dLeXRwS1Z4dUlDQWdJSFJ2ZEdGc0lDczlJSFpiYVYwN1hHNWNiaUFnY21WMGRYSnVJSFJ2ZEdGc08xeHVmVnh1WEc0dktpcGNiaUFxSUZOMWNXRnlaWE1nZEdobElIWmxZM1J2Y2lkeklHbDBaVzF6TGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3Vm1WamRHOXlmU0IySUZSb1pTQjJaV04wYjNJZ2RHOGdjM0YxWVhKbExseHVJQ29nUUhKbGRIVnliaUI3Vm1WamRHOXlmU0JCSUc1bGR5QjJaV04wYjNJZ1kyOXVkR0ZwYm1sdVp5QjBhR1VnYjNKcFoybHVZV3duY3lCcGRHVnRjeUJ6Y1hWaGNtVmtMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQjJaV04wYjNKVGNYVmhjbVVvZGpvZ1ZtVmpkRzl5S1RvZ1ZtVmpkRzl5SUh0Y2JpQWdZMjl1YzNRZ2JrbDBaVzF6SUQwZ2RpNXNaVzVuZEdnN1hHNGdJR052Ym5OMElIUnZkR0ZzSUQwZ2JtVjNJRlpsWTNSdmNpaHVTWFJsYlhNcE8xeHVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2RpNXNaVzVuZEdnN0lDc3JhU2xjYmlBZ0lDQjBiM1JoYkZ0cFhTQTlJSFpiYVYwZ0tpQjJXMmxkTzF4dVhHNGdJSEpsZEhWeWJpQjBiM1JoYkR0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSFpsWTNSdmNreGxibWQwYUNoMk9pQldaV04wYjNJcE9pQnVkVzFpWlhJZ2UxeHVJQ0JzWlhRZ2MzRnlVM1Z0T2lCdWRXMWlaWElnUFNBd08xeHVJQ0JtYjNJZ0tHeGxkQ0JwT2lCdWRXMWlaWElnUFNBd095QnBJRHdnZGk1c1pXNW5kR2c3SUdrckt5bGNiaUFnSUNCemNYSlRkVzBnS3owZ2RsdHBYU0FxSUhaYmFWMDdYRzRnSUhKbGRIVnliaUJOWVhSb0xuTnhjblFvYzNGeVUzVnRLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlIWmxZM1J2Y2tSdmRGQnliMlIxWTNRb2RqRTZJRlpsWTNSdmNpd2dkakk2SUZabFkzUnZjaWs2SUc1MWJXSmxjaUI3WEc0Z0lHbG1JQ2gyTVM1c1pXNW5kR2dnSVQwZ2RqSXViR1Z1WjNSb0tWeHVJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduVkdobElHUnBiV1Z1YzJsdmJtRnNhWFI1SUc5bUlIUm9aU0IyWldOMGIzSnpJRzExYzNRZ2JXRjBZMmduS1R0Y2JpQWdiR1YwSUhCeWIyUTZJRzUxYldKbGNpQTlJREE3WEc0Z0lHWnZjaUFvYkdWMElHazZJRzUxYldKbGNpQTlJREE3SUdrZ1BDQjJNUzVzWlc1bmRHZzdJR2tyS3lsY2JpQWdJQ0J3Y205a0lDczlJSFl4VzJsZElDb2dkakpiYVYwN1hHNGdJSEpsZEhWeWJpQndjbTlrTzF4dWZWeHVYRzR2S2lwY2JpQXFJRU55WldGMFpYTWdZU0J0WVhSeWFYZ2dabWxzYkdWa0lIZHBkR2dnY21GdVpHOXRJR1pzYjJGMGFXNW5JSEJ2YVc1MElIWmhiSFZsY3k1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ1pHbHRaVzV6YVc5dU1TQlVhR1VnWm1seWMzUWdaR2x0Wlc1emFXOXVJRzltSUhSb1pTQnRZWFJ5YVhndVhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdaR2x0Wlc1emFXOXVNaUJVYUdVZ2MyVmpiMjVrSUdScGJXVnVjMmx2YmlCdlppQjBhR1VnYldGMGNtbDRMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUZ0elkyRnNaVDB4TGwwZ1RXRjRJSFpoYkhWbElHZHBkbVZ1SUdKNUlISmhibVJ2YlNCblpXNWxjbUYwYjNJdVhHNGdLaUJBY21WMGRYSnVJSHROWVhSeWFYaDlJRUVnYm1WM0lHMWhkSEpwZUNCbWFXeHNaV1FnZDJsMGFDQnlZVzVrYjIwZ1pteHZZWFJwYm1jZ2NHOXBiblFnSUhaaGJIVmxjeTVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHWnBiR3hTWVc1a2IyMU5ZWFJ5YVhnb1pHbHRaVzV6YVc5dU1Ub2diblZ0WW1WeUxDQmthVzFsYm5OcGIyNHlPaUJ1ZFcxaVpYSXNJSE5qWVd4bE9pQnVkVzFpWlhJZ1BTQXhMaWs2SUUxaGRISnBlQ0I3WEc0Z0lHTnZibk4wSUcxaGRISnBlQ0E5SUdsdWFYUkRiMjl5WkdsdVlYUmxjeWhrYVcxbGJuTnBiMjR4TENCa2FXMWxibk5wYjI0eUtUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHUnBiV1Z1YzJsdmJqRTdJQ3NyYVNrZ2UxeHVJQ0FnSUdadmNpQW9iR1YwSUdvZ1BTQXdPeUJxSUR3Z1pHbHRaVzV6YVc5dU1qc2dLeXRxS1Z4dUlDQWdJQ0FnYldGMGNtbDRXMmxkVzJwZElEMGdjbUZ1Wkc5dFJteHZZWFFvYzJOaGJHVXBPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQnRZWFJ5YVhnN1hHNTlYRzVjYmk4cUtseHVJQ29nUTJGc1kzVnNZWFJsY3lCRmRXTnNhV1JsWVc0Z1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCMGQyOGdkbVZqZEc5eWN5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuMGdjQ0JVYUdVZ1ptbHljM1FnZG1WamRHOXlMbHh1SUNvZ1FIQmhjbUZ0SUh0V1pXTjBiM0o5SUhFZ1ZHaGxJSE5sWTI5dVpDQjJaV04wYjNJdVhHNGdLaUJBY21WMGRYSnVJSHR1ZFcxaVpYSjlJRVYxWTJ4cFpHVmhiaUJrYVhOMFlXNWpaU0JpWlhSM1pXVnVJSFJvWlNCbmFYWmxiaUIyWldOMGIzSnpMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1kyRnNZM1ZzWVhSbFJYVmpiR2xrWldGdVJHbHpkR0Z1WTJVb2NEb2dWbVZqZEc5eUxDQnhPaUJXWldOMGIzSXBPaUJ1ZFcxaVpYSWdlMXh1SUNCc1pYUWdjbVZ6ZFd4MElEMGdNRHRjYmlBZ1kyOXVjM1FnYkdWdUlEMGdjQzVzWlc1bmRHZzdYRzVjYmlBZ2FXWWdLR3hsYmlBaFBUMGdjUzVzWlc1bmRHZ3BYRzRnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0NkVWFHVWdaR2x0Wlc1emFXOXVZV3hwZEhrZ2IyWWdkR2hsSUhabFkzUnZjbk1nYlhWemRDQnRZWFJqYUNjcE8xeHVJQ0JjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQnNaVzQ3SUNzcmFTbGNiaUFnSUNCeVpYTjFiSFFnS3owZ0tIQmJhVjBnTFNCeFcybGRLU0FxS2lBeU8xeHVJQ0JjYmlBZ2NtVjBkWEp1SUUxaGRHZ3VjM0Z5ZENoeVpYTjFiSFFwTzF4dWZWeHVYRzR2S2lwY2JpQXFJRU55WldGMFpYTWdZU0JrYVhOMFlXNWpaU0J0WVhSeWFYZ2dkWE5wYm1jZ1lTQmpkWE4wYjIwZ1pHbHpkR0Z1WTJVZ1puVnVZM1JwYjI0dVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRSEJoY21GdElIdFdaV04wYjNKemZTQmtZWFJoSUVsdWNIVjBJSFpsWTNSdmNuTWdkRzhnWTJGc1kzVnNZWFJsSUdScGMzUmhibU5sY3k1Y2JpQXFJRUJ3WVhKaGJTQjdSR2x6ZEdGdVkyVk5aWFJ5YVdOOUlHUnBjM1JoYm1ObElFTjFjM1J2YlNCa2FYTjBZVzVqWlNCbWRXNWpkR2x2Ymk1Y2JpQXFJRUJ5WlhSMWNtNGdlMDFoZEhKcGVIMGdRMkZzWTNWc1lYUmxaQ0JqZFhOMGIyMGdaR2x6ZEdGdVkyVWdiV0YwY21sNExseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWTJGc1kwUnBjM1JoYm1ObFRXRjBjbWw0S0dSaGRHRTZJRlpsWTNSdmNuTXNJR1JwYzNSaGJtTmxPaUJFYVhOMFlXNWpaVTFsZEhKcFl5azZJRTFoZEhKcGVDQjdYRzRnSUdOdmJuTjBJRzVKZEdWdGN5QTlJR1JoZEdFdWJHVnVaM1JvTzF4dUlDQmpiMjV6ZENCdFlYUnlhWGdnUFNCcGJtbDBRMjl2Y21ScGJtRjBaWE1vYmtsMFpXMXpMQ0J1U1hSbGJYTXNJREFwTzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnYmtsMFpXMXpPeUFySzJrcElIdGNiaUFnSUNCbWIzSWdLR3hsZENCcUlEMGdhU0FySURFN0lHb2dQQ0J1U1hSbGJYTTdJQ3NyYWlrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWkRvZ2JuVnRZbVZ5SUQwZ0tHUmhkR0ZiYVYwZ1BUMGdiblZzYkNrZ2ZId2dLR1JoZEdGYmFsMGdQVDBnYm5Wc2JDa2dQeUF3SURvZ1pHbHpkR0Z1WTJVb1pHRjBZVnRwWFN3Z1pHRjBZVnRxWFNrN1hHNGdJQ0FnSUNCdFlYUnlhWGhiYVYxYmFsMGdQU0J0WVhSeWFYaGJhbDFiYVYwZ1BTQmtPMXh1SUNBZ0lIMWNiaUFnZlZ4dUlDQnlaWFIxY200Z2JXRjBjbWw0TzF4dWZWeHVYRzR2S2lwY2JpQXFJRU55WldGMFpYTWdZU0JrYVhOMFlXNWpaU0J0WVhSeWFYZ2dkWE5wYm1jZ1lTQmpkWE4wYjIwZ1pHbHpkR0Z1WTJVZ1puVnVZM1JwYjI0dVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRSEJoY21GdElIdFdaV04wYjNKemZTQmtZWFJoSUVsdWNIVjBJSFpsWTNSdmNuTWdkRzhnWTJGc1kzVnNZWFJsSUdScGMzUmhibU5sY3k1Y2JpQXFJRUJ3WVhKaGJTQjdSR2x6ZEdGdVkyVk5aWFJ5YVdOOUlHUnBjM1JoYm1ObElFTjFjM1J2YlNCa2FYTjBZVzVqWlNCbWRXNWpkR2x2Ymk1Y2JpQXFJRUJ5WlhSMWNtNGdlMDFoZEhKcGVIMGdRMkZzWTNWc1lYUmxaQ0JqZFhOMGIyMGdaR2x6ZEdGdVkyVWdiV0YwY21sNExseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWTJGc1kwNXZjbTFoYkdsNlpXUkVhWE4wWVc1alpVMWhkSEpwZUNoa1lYUmhPaUJXWldOMGIzSnpMQ0JrYVhOMFlXNWpaVG9nUkdsemRHRnVZMlZOWlhSeWFXTXBPaUJOWVhSeWFYZ2dlMXh1SUNCamIyNXpkQ0J1U1hSbGJYTWdQU0JrWVhSaExteGxibWQwYUR0Y2JpQWdZMjl1YzNRZ2JXRjBjbWw0SUQwZ2FXNXBkRU52YjNKa2FXNWhkR1Z6S0c1SmRHVnRjeXdnYmtsMFpXMXpMQ0F3S1R0Y2JpQWdiR1YwSUcxaGVDQTlJRTUxYldKbGNpNU5TVTVmVmtGTVZVVTdYRzRnSUd4bGRDQnRhVzRnUFNCT2RXMWlaWEl1VFVGWVgxWkJURlZGTzF4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJRzVKZEdWdGN6c2dLeXRwS1NCN1hHNGdJQ0FnWm05eUlDaHNaWFFnYWlBOUlHazdJR29nUENCdVNYUmxiWE03SUNzcmFpa2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ1pEb2diblZ0WW1WeUlEMGdLR1JoZEdGYmFWMGdQVDBnYm5Wc2JDa2dmSHdnS0dSaGRHRmJhbDBnUFQwZ2JuVnNiQ0I4ZkNCcElEMDlQU0JxS1NBL0lEQWdPaUJrYVhOMFlXNWpaU2hrWVhSaFcybGRMQ0JrWVhSaFcycGRLVHRjYmlBZ0lDQWdJRzFoZEhKcGVGdHBYVnRxWFNBOUlHMWhkSEpwZUZ0cVhWdHBYU0E5SUdRN1hHNGdJQ0FnSUNCcFppQW9aQ0ErSUcxaGVDa2diV0Y0SUQwZ1pEdGNiaUFnSUNBZ0lHbG1JQ2hrSUR3Z2JXbHVLU0J0YVc0Z1BTQmtPMXh1SUNBZ0lIMWNiaUFnZlZ4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJRzVKZEdWdGN6c2dLeXRwS1NCN1hHNGdJQ0FnWm05eUlDaHNaWFFnYWlBOUlHa2dLeUF4T3lCcUlEd2dia2wwWlcxek95QXJLMm9wWEc0Z0lDQWdJQ0J0WVhSeWFYaGJhVjFiYWwwZ1BTQnRZWFJ5YVhoYmFsMWJhVjBnUFNBb2JXRjBjbWw0VzJsZFcycGRJQzBnYldsdUtTQXZJQ2h0WVhnZ0xTQnRhVzRwTzF4dUlDQjlYRzRnSUhKbGRIVnliaUJ0WVhSeWFYZzdYRzU5WEc1Y2JpOHFLaUJIWlc1bGNtRjBaWE1nWVhKeVlYa2dabkp2YlNCaElISmhibWRsSUZ0aVpXZHBianNnWlc1a1hTQnZjaUJiWW1WbmFXNDdJR1Z1WkNrZ2FXWWdaVzVrUlhoamJIVnphWFpsTGlBcUtpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm5aVzVTWVc1blpTaGlaV2RwYmpvZ2JuVnRZbVZ5TENCbGJtUTZJRzUxYldKbGNpd2daVzVrUlhoamJIVnphWFpsSUQwZ1ptRnNjMlVwT2lCSmJuUXpNa0Z5Y21GNUlIdGNiaUFnWTI5dWMzUWdia2wwWlcxeklEMGdaVzVrSUMwZ1ltVm5hVzRnS3lBb1pXNWtSWGhqYkhWemFYWmxJRDhnTUNBNklERXBPMXh1SUNCamIyNXpkQ0J6WlhKcFpYTWdQU0J1WlhjZ1NXNTBNekpCY25KaGVTaHVTWFJsYlhNcE8xeHVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2JrbDBaVzF6T3lBcksya3BYRzRnSUNBZ2MyVnlhV1Z6VzJsZElEMGdZbVZuYVc0Z0t5QnBPMXh1WEc0Z0lISmxkSFZ5YmlCelpYSnBaWE03WEc1OVhHNWNiaThxS2x4dUlDb2dVbVYwZFhKdWN5QnZjbVJsY2lCdlppQjJZV3gxWlhNZ1lYTWdhV1lnZEdobGVTQmhjbVVnYzI5eWRHVmtMbHh1SUNwY2JpQXFJRUJsZUhCdmNuUmNiaUFxSUVCd1lYSmhiU0I3WVc1NVcxMTlJSFpoYkhWbGN5QkpibkIxZENCaGNuSmhlUzVjYmlBcUlFQndZWEpoYlNCN1ltOXZiR1ZoYm4wZ1czSmxkbVZ5YzJVOVptRnNjMlZkSUZkb1pYUm9aWElnZEc4Z2NtVjBkWEp1SUhKbGRtVnljMlZrSUc5eVpHVnlMbHh1SUNvZ1FISmxkSFZ5YmlCN2JuVnRZbVZ5VzExOUlGUm9aU0J2Y21SbGNpQmpiMjF3ZFhSbFpDNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdGeVoxTnZjblFvZG1Gc2RXVnpPaUJoYm5sYlhTd2djbVYyWlhKelpTQTlJR1poYkhObEtUb2diblZ0WW1WeVcxMGdlMXh1SUNCamIyNXpkQ0J6YjNKMFptNGdQU0J5WlhabGNuTmxJRDhnS0dFNklHRnVlVnRkTENCaU9pQmhibmxiWFNrZ1BUNGdLR0piTUYwZ0xTQmhXekJkS1NBNklDaGhPaUJoYm5sYlhTd2dZam9nWVc1NVcxMHBJRDArSUNoaFd6QmRJQzBnWWxzd1hTazdYRzRnSUdOdmJuTjBJR1JsWTI5eUlEMGdLSFk2SUdGdWVTd2dhVG9nYm5WdFltVnlLU0E5UGlCYmRpd2dhVjA3SUM4dklITmxkQ0JwYm1SbGVDQjBieUIyWVd4MVpWeHVJQ0JqYjI1emRDQjFibVJsWTI5eUlEMGdLR0U2SUdGdWVWdGRLU0E5UGlCaFd6RmRPeUF2THlCc1pXRjJaU0J2Ym14NUlHbHVaR1Y0WEc0Z0lHTnZibk4wSUY5aGNtZHpiM0owSUQwZ0tHRnljam9nWVc1NVcxMHBJRDArSUdGeWNpNXRZWEFvWkdWamIzSXBMbk52Y25Rb2MyOXlkR1p1S1M1dFlYQW9kVzVrWldOdmNpazdYRzRnSUhKbGRIVnliaUJmWVhKbmMyOXlkQ2gyWVd4MVpYTXBPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGSmxkSFZ5Ym5NZ2RHaGxJR2x1WkdWNFpYTWdiMllnZEdobElHMXZjM1FnWkdsMlpYSnpaU0J2WW1wbFkzUnpJR0ZqWTI5eVpHbHVaeUIwYnlCMGFHVWdaR2x6ZENCbWRXNWpkR2x2Ymx4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlHeGxibWQwYUNCMGIzUmhiQ0J1ZFcxaVpYSWdiMllnYjJKcVpXTjBjMXh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUc0Z2JuVnRZbVZ5SUc5bUlHUnBkbVZ5YzJVZ1pXeGxiV1Z1ZEhNZ2RHOGdabWx1WkZ4dUlDb2dRSEJoY21GdElIc29hVEU2SUc1MWJXSmxjaXdnYVRJNklHNTFiV0psY2lrZ1BUNGdiblZ0WW1WeWZTQmthWE4wSUdFZ1puVnVZM1JwYjI0Z2QyaHBZMmdnWTJGc1kzVnNZWFJsY3lCa2FYTjBZVzVqWlNCaVpYUjNaV1Z1WEc0Z0tpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEhkdklHOWlhbVZqZEhNZ2RYTnBibWNnZEdobGFYSWdhVzVrWlhobGMxeHVJQ29nUUhKbGRIVnlibk1nZTI1MWJXSmxjbHRkZlNCVWFHVWdhVzVrWlhobGN5QnZaaUIwYUdVZ2JXOXpkQ0JrYVhabGNuTmxJRzlpYW1WamRITmNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGRFUnBkbVZ5YzJWVGRXSnpaWFFvYkdWdVozUm9PaUJ1ZFcxaVpYSXNJRzQ2SUc1MWJXSmxjaXdnWkdsemREb2dLR2t4T2lCdWRXMWlaWElzSUdreU9pQnVkVzFpWlhJcElEMCtJRzUxYldKbGNpazZJRzUxYldKbGNsdGRJSHRjYmlBZ1puVnVZM1JwYjI0Z2JXRjRRbmtvZG1Gc2RXVnpPaUJKZEdWeVlXSnNaVWwwWlhKaGRHOXlQRzUxYldKbGNqNHNJRzl5WkdWeVFuazZJQ2hwT2lCdWRXMWlaWElwSUQwK0lHNTFiV0psY2lrZ2UxeHVJQ0FnSUd4bGRDQnRZWGhXWVd4MVpTQTlJRzUxYkd3N1hHNGdJQ0FnYkdWMElHMWhlRTl5WkdWeVFua2dQU0J1ZFd4c08xeHVYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQmxiR1Z0Wlc1MElHOW1JSFpoYkhWbGN5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ1pXeGxiV1Z1ZEU5eVpHVnlRbmtnUFNCdmNtUmxja0o1S0dWc1pXMWxiblFwTzF4dUlDQWdJQ0FnYVdZZ0tHMWhlRTl5WkdWeVFua2dQVDBnYm5Wc2JDQjhmQ0JsYkdWdFpXNTBUM0prWlhKQ2VTQStJRzFoZUU5eVpHVnlRbmtwSUh0Y2JpQWdJQ0FnSUNBZ2JXRjRWbUZzZFdVZ1BTQmxiR1Z0Wlc1ME8xeHVJQ0FnSUNBZ0lDQnRZWGhQY21SbGNrSjVJRDBnWld4bGJXVnVkRTl5WkdWeVFuazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ0WVhoV1lXeDFaVHRjYmlBZ2ZWeHVYRzRnSUdOdmJuTjBJSE4xWW5ObGRDQTlJRnR5WVc1a2IyMUpiblFvYkdWdVozUm9JQzBnTVNsZE8xeHVJQ0JqYjI1emRDQmpiMjF3YkdWdFpXNTBJRDBnYm1WM0lGTmxkQ2dwTzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnYkdWdVozUm9PeUFySzJrcElIdGNiaUFnSUNCcFppQW9JWE4xWW5ObGRDNXBibU5zZFdSbGN5aHBLU2xjYmlBZ0lDQWdJR052YlhCc1pXMWxiblF1WVdSa0tHa3BPMXh1SUNCOVhHNWNiaUFnZDJocGJHVWdLSE4xWW5ObGRDNXNaVzVuZEdnZ1BDQnVLU0I3WEc0Z0lDQWdZMjl1YzNRZ2FXUjRJRDBnYldGNFFua29YRzRnSUNBZ0lDQmpiMjF3YkdWdFpXNTBMblpoYkhWbGN5Z3BJR0Z6SUVsMFpYSmhZbXhsU1hSbGNtRjBiM0k4Ym5WdFltVnlQaXhjYmlBZ0lDQWdJQ2hwS1NBOVBpQk5ZWFJvTG0xcGJpNWhjSEJzZVNoTllYUm9MQ0J6ZFdKelpYUXViV0Z3S0daMWJtTjBhVzl1S0haaGJDd2dhVzVrWlhncElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHUnBjM1FvYVN3Z2RtRnNLVHRjYmlBZ0lDQWdJSDBwS1NrN1hHNGdJQ0FnYVdZZ0tHbGtlQ2tnZTF4dUlDQWdJQ0FnYzNWaWMyVjBMbkIxYzJnb2FXUjRLVHRjYmlBZ0lDQWdJR052YlhCc1pXMWxiblF1WkdWc1pYUmxLR2xrZUNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzRnSUhKbGRIVnliaUJ6ZFdKelpYUTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1VtVjBkWEp1Y3lCdWIzSnRZV3hwZW1Wa0lIWmxZM1J2Y2k1Y2JpQXFJRnh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRSEJoY21GdElIdFdaV04wYjNKOUlHUmhkR0VnYm5WdFpYSnBZMkZzSUdGeWNtRjVYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCdWIzSnRZV3hwZW1Vb1pHRjBZVG9nVm1WamRHOXlLVG9nVm1WamRHOXlJSHRjYmlBZ1kyOXVjM1FnYkdWdUlEMGdaR0YwWVM1c1pXNW5kR2c3WEc0Z0lHeGxkQ0J6ZFcwZ1BTQXdPMXh1SUNCc1pYUWdjM1Z0VDJaVGNYVmhjbVZ6SUQwZ01EdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHeGxianNnS3l0cEtTQjdYRzRnSUNBZ2MzVnRJQ3M5SUdSaGRHRmJhVjA3WEc0Z0lDQWdjM1Z0VDJaVGNYVmhjbVZ6SUNzOUlHUmhkR0ZiYVYwZ0tpb2dNanRjYmlBZ2ZWeHVYRzRnSUdOdmJuTjBJRzFsWVc0Z1BTQnpkVzBnTHlCc1pXNDdYRzRnSUdOdmJuTjBJSE4wWkVSbGRrbHVkbVZ5YzJVZ1BTQXhMakFnTHlCTllYUm9Mbk54Y25Rb2MzVnRUMlpUY1hWaGNtVnpJQzhnYkdWdUlDMGdiV1ZoYmlBcUtpQXlLVHRjYmx4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR3hsYmpzZ0t5dHBLVnh1SUNBZ0lHUmhkR0ZiYVYwZ1BTQW9aR0YwWVZ0cFhTQXRJRzFsWVc0cElDb2djM1JrUkdWMlNXNTJaWEp6WlR0Y2JseHVJQ0J5WlhSMWNtNGdaR0YwWVR0Y2JuMWNibHh1THlvcVhHNGdLaUJHYVc1a2N5QnpaWFFnWkdsbVptVnlaVzVqWlNCaVpYUjNaV1Z1SUhSM2J5QnNhWE4wY3k1Y2JpQXFJRUJ3WVhKaGJTQjdZVzU1VzExOUlHRWdWR2hsSUdacGNuTjBJR3hwYzNRdVhHNGdLaUJBY0dGeVlXMGdlMkZ1ZVZ0ZGZTQmlJRlJvWlNCelpXTnZibVFnYkdsemRDNWNiaUFxSUVCeVpYUjFjbTRnZTJGdWVWdGRmVnh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2MyVjBSR2xtWm1WeVpXNWpaU2hoT2lCaGJubGJYU3dnWWpvZ1lXNTVXMTBwT2lCaGJubGJYU0I3WEc0Z0lHTnZibk4wSUdKVFpYUWdQU0J1WlhjZ1UyVjBLR0lwTzF4dUlDQnlaWFIxY200Z1FYSnlZWGt1Wm5KdmJTaHVaWGNnVTJWMEtHRXVabWxzZEdWeUtDaDRLU0E5UGlBaFlsTmxkQzVvWVhNb2VDa3BLUzUyWVd4MVpYTW9LU2s3WEc1OVhHNGlYWDA9IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4vLyB0aGUgc3RhcnR1cCBmdW5jdGlvblxuX193ZWJwYWNrX3JlcXVpcmVfXy54ID0gKCkgPT4ge1xuXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcblx0Ly8gVGhpcyBlbnRyeSBtb2R1bGUgZGVwZW5kcyBvbiBvdGhlciBsb2FkZWQgY2h1bmtzIGFuZCBleGVjdXRpb24gbmVlZCB0byBiZSBkZWxheWVkXG5cdHZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy5PKHVuZGVmaW5lZCwgWzQ0LDg2MSw5NzIsNDg5XSwgKCkgPT4gKF9fd2VicGFja19yZXF1aXJlX18oNjY1NikpKVxuXHRfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy5PKF9fd2VicGFja19leHBvcnRzX18pO1xuXHRyZXR1cm4gX193ZWJwYWNrX2V4cG9ydHNfXztcbn07XG5cbiIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZiA9IHt9O1xuLy8gVGhpcyBmaWxlIGNvbnRhaW5zIG9ubHkgdGhlIGVudHJ5IGNodW5rLlxuLy8gVGhlIGNodW5rIGxvYWRpbmcgZnVuY3Rpb24gZm9yIGFkZGl0aW9uYWwgY2h1bmtzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmUgPSAoY2h1bmtJZCkgPT4ge1xuXHRyZXR1cm4gUHJvbWlzZS5hbGwoT2JqZWN0LmtleXMoX193ZWJwYWNrX3JlcXVpcmVfXy5mKS5yZWR1Y2UoKHByb21pc2VzLCBrZXkpID0+IHtcblx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmZba2V5XShjaHVua0lkLCBwcm9taXNlcyk7XG5cdFx0cmV0dXJuIHByb21pc2VzO1xuXHR9LCBbXSkpO1xufTsiLCIvLyBUaGlzIGZ1bmN0aW9uIGFsbG93IHRvIHJlZmVyZW5jZSBhc3luYyBjaHVua3MgYW5kIHNpYmxpbmcgY2h1bmtzIGZvciB0aGUgZW50cnlwb2ludFxuX193ZWJwYWNrX3JlcXVpcmVfXy51ID0gKGNodW5rSWQpID0+IHtcblx0Ly8gcmV0dXJuIHVybCBmb3IgZmlsZW5hbWVzIGJhc2VkIG9uIHRlbXBsYXRlXG5cdHJldHVybiBcIlwiICsgY2h1bmtJZCArIFwiLmpzXCI7XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsInZhciBzY3JpcHRVcmw7XG5pZiAoX193ZWJwYWNrX3JlcXVpcmVfXy5nLmltcG9ydFNjcmlwdHMpIHNjcmlwdFVybCA9IF9fd2VicGFja19yZXF1aXJlX18uZy5sb2NhdGlvbiArIFwiXCI7XG52YXIgZG9jdW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcuZG9jdW1lbnQ7XG5pZiAoIXNjcmlwdFVybCAmJiBkb2N1bWVudCkge1xuXHRpZiAoZG9jdW1lbnQuY3VycmVudFNjcmlwdClcblx0XHRzY3JpcHRVcmwgPSBkb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYztcblx0aWYgKCFzY3JpcHRVcmwpIHtcblx0XHR2YXIgc2NyaXB0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpO1xuXHRcdGlmKHNjcmlwdHMubGVuZ3RoKSB7XG5cdFx0XHR2YXIgaSA9IHNjcmlwdHMubGVuZ3RoIC0gMTtcblx0XHRcdHdoaWxlIChpID4gLTEgJiYgIXNjcmlwdFVybCkgc2NyaXB0VXJsID0gc2NyaXB0c1tpLS1dLnNyYztcblx0XHR9XG5cdH1cbn1cbi8vIFdoZW4gc3VwcG9ydGluZyBicm93c2VycyB3aGVyZSBhbiBhdXRvbWF0aWMgcHVibGljUGF0aCBpcyBub3Qgc3VwcG9ydGVkIHlvdSBtdXN0IHNwZWNpZnkgYW4gb3V0cHV0LnB1YmxpY1BhdGggbWFudWFsbHkgdmlhIGNvbmZpZ3VyYXRpb25cbi8vIG9yIHBhc3MgYW4gZW1wdHkgc3RyaW5nIChcIlwiKSBhbmQgc2V0IHRoZSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyB2YXJpYWJsZSBmcm9tIHlvdXIgY29kZSB0byB1c2UgeW91ciBvd24gbG9naWMuXG5pZiAoIXNjcmlwdFVybCkgdGhyb3cgbmV3IEVycm9yKFwiQXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJyb3dzZXJcIik7XG5zY3JpcHRVcmwgPSBzY3JpcHRVcmwucmVwbGFjZSgvIy4qJC8sIFwiXCIpLnJlcGxhY2UoL1xcPy4qJC8sIFwiXCIpLnJlcGxhY2UoL1xcL1teXFwvXSskLywgXCIvXCIpO1xuX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gc2NyaXB0VXJsOyIsIl9fd2VicGFja19yZXF1aXJlX18uYiA9IHNlbGYubG9jYXRpb24gKyBcIlwiO1xuXG4vLyBvYmplY3QgdG8gc3RvcmUgbG9hZGVkIGNodW5rc1xuLy8gXCIxXCIgbWVhbnMgXCJhbHJlYWR5IGxvYWRlZFwiXG52YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuXHQ2NTY6IDFcbn07XG5cbi8vIGltcG9ydFNjcmlwdHMgY2h1bmsgbG9hZGluZ1xudmFyIGluc3RhbGxDaHVuayA9IChkYXRhKSA9PiB7XG5cdHZhciBbY2h1bmtJZHMsIG1vcmVNb2R1bGVzLCBydW50aW1lXSA9IGRhdGE7XG5cdGZvcih2YXIgbW9kdWxlSWQgaW4gbW9yZU1vZHVsZXMpIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8obW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuXHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcblx0XHR9XG5cdH1cblx0aWYocnVudGltZSkgcnVudGltZShfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblx0d2hpbGUoY2h1bmtJZHMubGVuZ3RoKVxuXHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkcy5wb3AoKV0gPSAxO1xuXHRwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbihkYXRhKTtcbn07XG5fX3dlYnBhY2tfcmVxdWlyZV9fLmYuaSA9IChjaHVua0lkLCBwcm9taXNlcykgPT4ge1xuXHQvLyBcIjFcIiBpcyB0aGUgc2lnbmFsIGZvciBcImFscmVhZHkgbG9hZGVkXCJcblx0aWYoIWluc3RhbGxlZENodW5rc1tjaHVua0lkXSkge1xuXHRcdGlmKHRydWUpIHsgLy8gYWxsIGNodW5rcyBoYXZlIEpTXG5cdFx0XHRpbXBvcnRTY3JpcHRzKF9fd2VicGFja19yZXF1aXJlX18ucCArIF9fd2VicGFja19yZXF1aXJlX18udShjaHVua0lkKSk7XG5cdFx0fVxuXHR9XG59O1xuXG52YXIgY2h1bmtMb2FkaW5nR2xvYmFsID0gc2VsZltcIndlYnBhY2tDaHVua2VkYVwiXSA9IHNlbGZbXCJ3ZWJwYWNrQ2h1bmtlZGFcIl0gfHwgW107XG52YXIgcGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24gPSBjaHVua0xvYWRpbmdHbG9iYWwucHVzaC5iaW5kKGNodW5rTG9hZGluZ0dsb2JhbCk7XG5jaHVua0xvYWRpbmdHbG9iYWwucHVzaCA9IGluc3RhbGxDaHVuaztcblxuLy8gbm8gSE1SXG5cbi8vIG5vIEhNUiBtYW5pZmVzdCIsIi8vIHJ1biBzdGFydHVwXG52YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18ueCgpO1xuIl0sIm5hbWVzIjpbImRlZmVycmVkIiwibmV4dCIsIkRpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzIiwiaXNOaWwiLCJ4IiwiaW5zZXJ0U21hbGxlciIsImRpc3RhbmNlc0FyIiwiaW5kZXhlcyIsIm51bSIsImluZGV4IiwibGVuZ3RoIiwibmV3UG9zaXRpb24iLCJmaW5kSW5kZXgiLCJ2IiwicG9wIiwic3BsaWNlIiwiZ2V0QWdncmVnYXRpb25GdW5jdGlvbiIsImFnZ3JlZ2F0aW9uTWV0aG9kIiwid2VpZ2h0cyIsInZzIiwicmVkdWNlIiwiYWNjIiwidmFsIiwiaWR4Iiwic3VtIiwiTWF0aCIsInNxcnQiLCJNdWx0aUNvbHVtblJlZHVjZXIiLCJkYXRhIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwidGhpcyIsIk11bHRpVFNORVJlZHVjZXIiLCJyZWR1Y2VyIiwiaXRlcmF0aW9ucyIsImRpc3RhbmNlRm5hbWVzIiwiZGlzdGFuY2VGbnMiLCJkaXN0YW5jZUZuQXJncyIsInN1cGVyIiwiYXN5bmMiLCJFcnJvciIsIm1hdHJpeFNlcnZpY2UiLCJhZ2dyZWdhdGUiLCJkaXN0YW5jZXMiLCJpIiwiZGlzdCIsImNhbGMiLCJwdXNoIiwiZGlzdGFuY2UiLCJGbG9hdDMyQXJyYXkiLCJmaWxsIiwibWFwIiwiZCIsIm1hdHJpeFByb3h5IiwiY29uZGVuc2VkQXJyYXkiLCJzaXplIiwibGluZWFyRnVuYyIsImoiLCJmbG9vciIsImRtTGluZWFySW5kZXgiLCJsaW5lYXJJbmRleCIsImlOdW0iLCJOdW1iZXIiLCJqTnVtIiwiaWR4MUhhbmRsZXIiLCJnZXQiLCJ0YXJnZXQiLCJpZHgxIiwiX3JlY2VpdmVyIiwiUHJveHkiLCJpZHgyIiwiaWR4MkhhbmRsZXIiLCJkaXN0YW5jZU1hdHJpeFByb3h5IiwiaW5pdERhdGFEaXN0Iiwic3RlcCIsInRlcm1pbmF0ZSIsImdldFNvbHV0aW9uIiwiZSIsIk11bHRpVU1BUFJlZHVjZXIiLCJ2ZWN0b3JzIiwicHJvZ3Jlc3NGdW5jIiwiQXJyYXkiLCJfIiwibk5laWdoYm9ycyIsIl9wYXJhbGxlbERpc3RhbmNlV29ya2VycyIsImNvbnNvbGUiLCJ0aW1lIiwia25uUmVzIiwibXVsdGlDb2x1bW5LTk4iLCJuZWlnaGJvcnMiLCJ0aW1lRW5kIiwic2V0UHJlY29tcHV0ZWRLTk4iLCJrbm5JbmRleGVzIiwia25uRGlzdGFuY2VzIiwiUHJvbWlzZSIsInJlc29sdmUiLCJzZXRUaW1lb3V0IiwiZW1iZWRkaW5nIiwiZml0QXN5bmMiLCJlcG9jIiwiZ2V0TkVwb2NocyIsImdldEVtYmVkZGluZyIsIk11bHRpQ29sRGltUmVkdWNlciIsIm1ldGhvZCIsIm1ldHJpY3MiLCJkaXN0YW5jZUFnZ3JlZ2F0aW9uIiwibWVhc3VyZXMiLCJtZWFzdXJlIiwiZ2V0TWVhc3VyZSIsImJpdEFycmF5TGVuZ3RoIiwiX2xlbmd0aCIsIl9kYXRhIiwidHJhbnNwb3NlIiwidW5kZWZpbmVkIiwidHJhbnNmb3JtIiwiZXBvY2hOdW0iLCJlcG9jaHNMZW5ndGgiLCJzZWxmIiwicG9zdE1lc3NhZ2UiLCJvbm1lc3NhZ2UiLCJjb2x1bW5zRGF0YSIsImRpc3RhbmNlTWV0cmljcyIsIm9uTWVzc2FnZSIsImVycm9yIiwiYXNzZXJ0IiwiY29uZGl0aW9uIiwibWVzc2FnZSIsInRyYW5zcG9zZU1hdHJpeCIsIm1hdHJpeCIsImNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlIiwicCIsInEiLCJyZXN1bHQiLCJsZW4iLCJwb3ciLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJleHBvcnRzIiwibW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsIm0iLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiTyIsImNodW5rSWRzIiwiZm4iLCJwcmlvcml0eSIsIm5vdEZ1bGZpbGxlZCIsIkluZmluaXR5IiwiZnVsZmlsbGVkIiwiT2JqZWN0Iiwia2V5cyIsImV2ZXJ5Iiwia2V5IiwiciIsImRlZmluaXRpb24iLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZiIsImNodW5rSWQiLCJhbGwiLCJwcm9taXNlcyIsInUiLCJnIiwiZ2xvYmFsVGhpcyIsIkZ1bmN0aW9uIiwid2luZG93Iiwib2JqIiwicHJvcCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInNjcmlwdFVybCIsImltcG9ydFNjcmlwdHMiLCJsb2NhdGlvbiIsImRvY3VtZW50IiwiY3VycmVudFNjcmlwdCIsInNyYyIsInNjcmlwdHMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInJlcGxhY2UiLCJiIiwiaW5zdGFsbGVkQ2h1bmtzIiwiY2h1bmtMb2FkaW5nR2xvYmFsIiwicGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24iLCJiaW5kIiwibW9yZU1vZHVsZXMiLCJydW50aW1lIiwidGhlbiJdLCJzb3VyY2VSb290IjoiIn0=
|
package/dist/664.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var eda;(()=>{"use strict";var e,r,t={4664:(e,r,t)=>{var n;!function(e){e.EUCLIDEAN="EUCLIDEAN",e.MANHATTAN="MANHATTAN"}(n||(n={}));const a=e=>null==e;function o(e,r,t,n){if(t>e[e.length-1])return;const a=e.findIndex((e=>t<e));e.pop(),e.splice(a,0,t),r.pop(),r.splice(a,0,n)}var l=t(6361),s=t(9657);onmessage=async e=>{const{values:r,startIdx:t,endIdx:i,fnNames:c,opts:p,nNeighbours:f,weights:h,aggregationMethod:u}=e.data;try{const e=new Array(r[0].length).fill(null).map((()=>new Array(f).fill(-1))),g=new Array(r[0].length).fill(null).map((()=>new Array(f).fill(999999))),d=function(e,r){return e===n.MANHATTAN?e=>e.reduce(((e,t,n)=>e+t*r[n]),0):e=>{const t=e.reduce(((e,t,n)=>e+(t*r[n])**2),0);return Math.sqrt(t)}}(u,h),v=i-t;r.forEach(((e,t)=>{if((0,l.sQ)(c[t]))for(let n=0;n<e.length;++n)a(e[n])||(r[t][n]=new s.Z(r[t][n]._data,r[t][n]._length))}));let w=0;const m=new Array(c.length).fill(null).map(((e,r)=>new l.UH(c[r]).getMeasure(p[r]))),y=r[0].length-2-Math.floor(Math.sqrt(-8*t+4*r[0].length*(r[0].length-1)-7)/2-.5),A=t-r[0].length*y+Math.floor((y+1)*(y+2)/2);let b=y,x=A;for(;w<v;){const t=m.map(((e,t)=>a(r[t][b])||a(r[t][x])?1:e(r[t][b],r[t][x]))),n=1===t.length?t[0]:d(t);o(g[b],e[b],n,x),o(g[x],e[x],n,b),w++,x++,x===r[0].length&&(b++,x=b+1)}postMessage({knnDistances:g,knnIndexes:e})}catch(e){postMessage({error:e})}}}},n={};function a(e){var r=n[e];if(void 0!==r)return r.exports;var o=n[e]={exports:{}};return t[e](o,o.exports,a),o.exports}a.m=t,a.x=()=>{var e=a.O(void 0,[44,861,727],(()=>a(4664)));return a.O(e)},e=[],a.O=(r,t,n,o)=>{if(!t){var l=1/0;for(p=0;p<e.length;p++){for(var[t,n,o]=e[p],s=!0,i=0;i<t.length;i++)(!1&o||l>=o)&&Object.keys(a.O).every((e=>a.O[e](t[i])))?t.splice(i--,1):(s=!1,o<l&&(l=o));if(s){e.splice(p--,1);var c=n();void 0!==c&&(r=c)}}return r}o=o||0;for(var p=e.length;p>0&&e[p-1][2]>o;p--)e[p]=e[p-1];e[p]=[t,n,o]},a.d=(e,r)=>{for(var t in r)a.o(r,t)&&!a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((r,t)=>(a.f[t](e,r),r)),[])),a.u=e=>e+".js",a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var r=a.g.document;if(!e&&r&&(r.currentScript&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var n=t.length-1;n>-1&&!e;)e=t[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})(),(()=>{var e={664:1};a.f.i=(r,t)=>{e[r]||importScripts(a.p+a.u(r))};var r=self.webpackChunkeda=self.webpackChunkeda||[],t=r.push.bind(r);r.push=r=>{var[n,o,l]=r;for(var s in o)a.o(o,s)&&(a.m[s]=o[s]);for(l&&l(a);n.length;)e[n.pop()]=1;t(r)}})(),r=a.x,a.x=()=>Promise.all([44,861,727].map(a.e,a)).then(r);var o=a.x();eda=o})();
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QVMvRCxPQUFTLEVBQ25DOEcsRUFBMkJqRyxFQUFLLEMsS1huQjdCMUIsRUFBT2lFLEVBQW9COUQsRUFDL0I4RCxFQUFvQjlELEVBQUksSUFDaEI0RixRQUFRQyxJQUFJLENBQUMsR0FBRyxJQUFJLEtBQUtsRSxJQUFJbUMsRUFBb0JILEVBQUdHLElBQXNCK0QsS0FBS2hJLEdZRHZGLElBQUl5RSxFQUFzQlIsRUFBb0I5RCxJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9jaHVuayBsb2FkZWQiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9zdGFydHVwIGNodW5rIGRlcGVuZGVuY2llcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvZGlzdGFuY2UtbWF0cml4L3R5cGVzLmpzIiwid2VicGFjazovL2VkYS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy9kaXN0YW5jZS1tYXRyaXgvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL2Rpc3RhbmNlLW1hdHJpeC9rbm4td29ya2VyLmpzIiwid2VicGFjazovL2VkYS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZW5zdXJlIGNodW5rIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZ2V0IGphdmFzY3JpcHQgY2h1bmsgZmlsZW5hbWUiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9wdWJsaWNQYXRoIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3N0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZmVycmVkID0gW107XG5fX3dlYnBhY2tfcmVxdWlyZV9fLk8gPSAocmVzdWx0LCBjaHVua0lkcywgZm4sIHByaW9yaXR5KSA9PiB7XG5cdGlmKGNodW5rSWRzKSB7XG5cdFx0cHJpb3JpdHkgPSBwcmlvcml0eSB8fCAwO1xuXHRcdGZvcih2YXIgaSA9IGRlZmVycmVkLmxlbmd0aDsgaSA+IDAgJiYgZGVmZXJyZWRbaSAtIDFdWzJdID4gcHJpb3JpdHk7IGktLSkgZGVmZXJyZWRbaV0gPSBkZWZlcnJlZFtpIC0gMV07XG5cdFx0ZGVmZXJyZWRbaV0gPSBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV07XG5cdFx0cmV0dXJuO1xuXHR9XG5cdHZhciBub3RGdWxmaWxsZWQgPSBJbmZpbml0eTtcblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBkZWZlcnJlZC5sZW5ndGg7IGkrKykge1xuXHRcdHZhciBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV0gPSBkZWZlcnJlZFtpXTtcblx0XHR2YXIgZnVsZmlsbGVkID0gdHJ1ZTtcblx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGNodW5rSWRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRpZiAoKHByaW9yaXR5ICYgMSA9PT0gMCB8fCBub3RGdWxmaWxsZWQgPj0gcHJpb3JpdHkpICYmIE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uTykuZXZlcnkoKGtleSkgPT4gKF9fd2VicGFja19yZXF1aXJlX18uT1trZXldKGNodW5rSWRzW2pdKSkpKSB7XG5cdFx0XHRcdGNodW5rSWRzLnNwbGljZShqLS0sIDEpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZnVsZmlsbGVkID0gZmFsc2U7XG5cdFx0XHRcdGlmKHByaW9yaXR5IDwgbm90RnVsZmlsbGVkKSBub3RGdWxmaWxsZWQgPSBwcmlvcml0eTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYoZnVsZmlsbGVkKSB7XG5cdFx0XHRkZWZlcnJlZC5zcGxpY2UoaS0tLCAxKVxuXHRcdFx0dmFyIHIgPSBmbigpO1xuXHRcdFx0aWYgKHIgIT09IHVuZGVmaW5lZCkgcmVzdWx0ID0gcjtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn07IiwidmFyIG5leHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLng7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdHJldHVybiBQcm9taXNlLmFsbChbNDQsODYxLDcyN10ubWFwKF9fd2VicGFja19yZXF1aXJlX18uZSwgX193ZWJwYWNrX3JlcXVpcmVfXykpLnRoZW4obmV4dCk7XG59OyIsImV4cG9ydCB2YXIgRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHM7XG4oZnVuY3Rpb24gKERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzKSB7XG4gICAgRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHNbXCJFVUNMSURFQU5cIl0gPSBcIkVVQ0xJREVBTlwiO1xuICAgIERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzW1wiTUFOSEFUVEFOXCJdID0gXCJNQU5IQVRUQU5cIjtcbn0pKERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzIHx8IChEaXN0YW5jZUFnZ3JlZ2F0aW9uTWV0aG9kcyA9IHt9KSk7XG47XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkSGx3WlhNdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUowZVhCbGN5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVN4TlFVRk5MRU5CUVU0c1NVRkJXU3d3UWtGSFZEdEJRVWhJTEZkQlFWa3NNRUpCUVRCQ08wbEJRMnhETEhGRVFVRjFRaXhEUVVGQk8wbEJRM1pDTEhGRVFVRjFRaXhEUVVGQk8wRkJRM3BDTEVOQlFVTXNSVUZJVXl3d1FrRkJNRUlzUzBGQk1VSXNNRUpCUVRCQ0xGRkJSMjVETzBGQlFVRXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltVjRjRzl5ZENCbGJuVnRJRVJwYzNSaGJtTmxRV2RuY21WbllYUnBiMjVOWlhSb2IyUnpJSHRjYmlBZ0lDQkZWVU5NU1VSRlFVNGdQU0FuUlZWRFRFbEVSVUZPSnl4Y2JpQWdJQ0JOUVU1SVFWUlVRVTRnUFNBblRVRk9TRUZVVkVGT0p5eGNiaUFnZlR0Y2JseHVaWGh3YjNKMElIUjVjR1VnUkdsemRHRnVZMlZCWjJkeVpXZGhkR2x2YmsxbGRHaHZaQ0E5SUd0bGVXOW1JSFI1Y0dWdlppQkVhWE4wWVc1alpVRm5aM0psWjJGMGFXOXVUV1YwYUc5a2N6dGNiaUpkZlE9PSIsImltcG9ydCB7IERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzIH0gZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgY29uc3QgaXNOaWwgPSAoeCkgPT4geCA9PT0gbnVsbCB8fCB4ID09PSB1bmRlZmluZWQ7XG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0U21hbGxlcihkaXN0YW5jZXNBciwgaW5kZXhlcywgbnVtLCBpbmRleCkge1xuICAgIGlmIChudW0gPiBkaXN0YW5jZXNBcltkaXN0YW5jZXNBci5sZW5ndGggLSAxXSlcbiAgICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IG5ld1Bvc2l0aW9uID0gZGlzdGFuY2VzQXIuZmluZEluZGV4KCh2KSA9PiBudW0gPCB2KTtcbiAgICBkaXN0YW5jZXNBci5wb3AoKTtcbiAgICBkaXN0YW5jZXNBci5zcGxpY2UobmV3UG9zaXRpb24sIDAsIG51bSk7XG4gICAgaW5kZXhlcy5wb3AoKTtcbiAgICBpbmRleGVzLnNwbGljZShuZXdQb3NpdGlvbiwgMCwgaW5kZXgpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydExhcmdlcihkaXN0YW5jZXNBciwgaW5kZXhlcywgbnVtLCBpbmRleCkge1xuICAgIGlmIChudW0gPCBkaXN0YW5jZXNBcltkaXN0YW5jZXNBci5sZW5ndGggLSAxXSlcbiAgICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IG5ld1Bvc2l0aW9uID0gZGlzdGFuY2VzQXIuZmluZEluZGV4KCh2KSA9PiBudW0gPiB2KTtcbiAgICBkaXN0YW5jZXNBci5wb3AoKTtcbiAgICBkaXN0YW5jZXNBci5zcGxpY2UobmV3UG9zaXRpb24sIDAsIG51bSk7XG4gICAgaW5kZXhlcy5wb3AoKTtcbiAgICBpbmRleGVzLnNwbGljZShuZXdQb3NpdGlvbiwgMCwgaW5kZXgpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEFnZ3JlZ2F0aW9uRnVuY3Rpb24oYWdncmVnYXRpb25NZXRob2QsIHdlaWdodHMpIHtcbiAgICBzd2l0Y2ggKGFnZ3JlZ2F0aW9uTWV0aG9kKSB7XG4gICAgICAgIGNhc2UgRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHMuTUFOSEFUVEFOOlxuICAgICAgICAgICAgcmV0dXJuICh2cykgPT4gdnMucmVkdWNlKChhY2MsIHZhbCwgaWR4KSA9PiBhY2MgKyB2YWwgKiB3ZWlnaHRzW2lkeF0sIDApO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuICh2cykgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGV1Y2xpZGVhblxuICAgICAgICAgICAgICAgIGNvbnN0IHN1bSA9IHZzLnJlZHVjZSgoYWNjLCB2YWwsIGlkeCkgPT4gYWNjICsgKHZhbCAqIHdlaWdodHNbaWR4XSkgKiogMiwgMCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguc3FydChzdW0pO1xuICAgICAgICAgICAgfTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkWFJwYkhNdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUoxZEdsc2N5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVN4UFFVRlBMRVZCUVRSQ0xEQkNRVUV3UWl4RlFVRkRMRTFCUVUwc1UwRkJVeXhEUVVGRE8wRkJSVGxGTEUxQlFVMHNRMEZCUXl4TlFVRk5MRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4TFFVRkxMRWxCUVVrc1NVRkJTU3hEUVVGRExFdEJRVXNzVTBGQlV5eERRVUZETzBGQlJTOUVMRTFCUVUwc1ZVRkJWU3hoUVVGaExFTkJRVU1zVjBGQmNVSXNSVUZCUlN4UFFVRnBRaXhGUVVGRkxFZEJRVmNzUlVGQlJTeExRVUZoTzBsQlEyaEhMRWxCUVVrc1IwRkJSeXhIUVVGSExGZEJRVmNzUTBGQlF5eFhRVUZYTEVOQlFVTXNUVUZCVFN4SFFVRkRMRU5CUVVNc1EwRkJRenRSUVVONlF5eFBRVUZQTzBsQlJWUXNUVUZCVFN4WFFVRlhMRWRCUVVjc1YwRkJWeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlF6RkVMRmRCUVZjc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dEpRVU5zUWl4WFFVRlhMRU5CUVVNc1RVRkJUU3hEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRlRU1zVDBGQlR5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRPMGxCUTJRc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eFhRVUZYTEVWQlFVVXNRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJRM2hETEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc1dVRkJXU3hEUVVGRExGZEJRWEZDTEVWQlFVVXNUMEZCYVVJc1JVRkJSU3hIUVVGWExFVkJRVVVzUzBGQllUdEpRVU12Uml4SlFVRkpMRWRCUVVjc1IwRkJSeXhYUVVGWExFTkJRVU1zVjBGQlZ5eERRVUZETEUxQlFVMHNSMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRla01zVDBGQlR6dEpRVVZVTEUxQlFVMHNWMEZCVnl4SFFVRkhMRmRCUVZjc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU14UkN4WFFVRlhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRGJFSXNWMEZCVnl4RFFVRkRMRTFCUVUwc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTNoRExFOUJRVThzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXp0SlFVTmtMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTXNSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRCUVVONFF5eERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMSE5DUVVGelFpeERRVU53UXl4cFFrRkJORU1zUlVGQlJTeFBRVUZwUWp0SlFVVXZSQ3hSUVVGUkxHbENRVUZwUWl4RlFVRkZPMUZCUTNwQ0xFdEJRVXNzTUVKQlFUQkNMRU5CUVVNc1UwRkJVenRaUVVOMlF5eFBRVUZQTEVOQlFVTXNSVUZCV1N4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUlVGQlJTeERRVUZETEVkQlFVY3NSMEZCUnl4SFFVRkhMRWRCUVVjc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNKR08xbEJRMFVzVDBGQlR5eERRVUZETEVWQlFWa3NSVUZCUlN4RlFVRkZPMmRDUVVOMFFpeFpRVUZaTzJkQ1FVTmFMRTFCUVUwc1IwRkJSeXhIUVVGSExFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEZRVUZGTEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZETjBVc1QwRkJUeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTNoQ0xFTkJRVU1zUTBGQlF6dExRVU5NTzBGQlEwZ3NRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN1JHbHpkR0Z1WTJWQloyZHlaV2RoZEdsdmJrMWxkR2h2WkN3Z1JHbHpkR0Z1WTJWQloyZHlaV2RoZEdsdmJrMWxkR2h2WkhOOUlHWnliMjBnSnk0dmRIbHdaWE1uTzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnYVhOT2FXd2dQU0FvZURvZ1lXNTVLU0E5UGlCNElEMDlQU0J1ZFd4c0lIeDhJSGdnUFQwOUlIVnVaR1ZtYVc1bFpEdGNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2x1YzJWeWRGTnRZV3hzWlhJb1pHbHpkR0Z1WTJWelFYSTZJRzUxYldKbGNsdGRMQ0JwYm1SbGVHVnpPaUJ1ZFcxaVpYSmJYU3dnYm5WdE9pQnVkVzFpWlhJc0lHbHVaR1Y0T2lCdWRXMWlaWElwSUh0Y2JpQWdhV1lnS0c1MWJTQStJR1JwYzNSaGJtTmxjMEZ5VzJScGMzUmhibU5sYzBGeUxteGxibWQwYUMweFhTbGNiaUFnSUNCeVpYUjFjbTQ3WEc1Y2JpQWdZMjl1YzNRZ2JtVjNVRzl6YVhScGIyNGdQU0JrYVhOMFlXNWpaWE5CY2k1bWFXNWtTVzVrWlhnb0tIWXBJRDArSUc1MWJTQThJSFlwTzF4dUlDQmthWE4wWVc1alpYTkJjaTV3YjNBb0tUdGNiaUFnWkdsemRHRnVZMlZ6UVhJdWMzQnNhV05sS0c1bGQxQnZjMmwwYVc5dUxDQXdMQ0J1ZFcwcE8xeHVJQ0JwYm1SbGVHVnpMbkJ2Y0NncE8xeHVJQ0JwYm1SbGVHVnpMbk53YkdsalpTaHVaWGRRYjNOcGRHbHZiaXdnTUN3Z2FXNWtaWGdwTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdhVzV6WlhKMFRHRnlaMlZ5S0dScGMzUmhibU5sYzBGeU9pQnVkVzFpWlhKYlhTd2dhVzVrWlhobGN6b2diblZ0WW1WeVcxMHNJRzUxYlRvZ2JuVnRZbVZ5TENCcGJtUmxlRG9nYm5WdFltVnlLU0I3WEc0Z0lHbG1JQ2h1ZFcwZ1BDQmthWE4wWVc1alpYTkJjbHRrYVhOMFlXNWpaWE5CY2k1c1pXNW5kR2d0TVYwcFhHNGdJQ0FnY21WMGRYSnVPMXh1WEc0Z0lHTnZibk4wSUc1bGQxQnZjMmwwYVc5dUlEMGdaR2x6ZEdGdVkyVnpRWEl1Wm1sdVpFbHVaR1Y0S0NoMktTQTlQaUJ1ZFcwZ1BpQjJLVHRjYmlBZ1pHbHpkR0Z1WTJWelFYSXVjRzl3S0NrN1hHNGdJR1JwYzNSaGJtTmxjMEZ5TG5Od2JHbGpaU2h1WlhkUWIzTnBkR2x2Yml3Z01Dd2diblZ0S1R0Y2JpQWdhVzVrWlhobGN5NXdiM0FvS1R0Y2JpQWdhVzVrWlhobGN5NXpjR3hwWTJVb2JtVjNVRzl6YVhScGIyNHNJREFzSUdsdVpHVjRLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHZGxkRUZuWjNKbFoyRjBhVzl1Um5WdVkzUnBiMjRvWEc0Z0lHRm5aM0psWjJGMGFXOXVUV1YwYUc5a09pQkVhWE4wWVc1alpVRm5aM0psWjJGMGFXOXVUV1YwYUc5a0xDQjNaV2xuYUhSek9pQnVkVzFpWlhKYlhWeHVLVG9nS0haaGJIVmxjem9nYm5WdFltVnlXMTBwSUQwK0lHNTFiV0psY2lCN1hHNGdJSE4zYVhSamFDQW9ZV2RuY21WbllYUnBiMjVOWlhSb2IyUXBJSHRjYmlBZ0lDQmpZWE5sSUVScGMzUmhibU5sUVdkbmNtVm5ZWFJwYjI1TlpYUm9iMlJ6TGsxQlRraEJWRlJCVGpwY2JpQWdJQ0FnSUhKbGRIVnliaUFvZG5NNklHNTFiV0psY2x0ZEtTQTlQaUIyY3k1eVpXUjFZMlVvS0dGall5d2dkbUZzTENCcFpIZ3BJRDArSUdGall5QXJJSFpoYkNBcUlIZGxhV2RvZEhOYmFXUjRYU3dnTUNrN1hHNGdJQ0FnWkdWbVlYVnNkRHBjYmlBZ0lDQWdJSEpsZEhWeWJpQW9kbk02SUc1MWJXSmxjbHRkS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQzh2SUdWMVkyeHBaR1ZoYmx4dUlDQWdJQ0FnSUNCamIyNXpkQ0J6ZFcwZ1BTQjJjeTV5WldSMVkyVW9LR0ZqWXl3Z2RtRnNMQ0JwWkhncElEMCtJR0ZqWXlBcklDaDJZV3dnS2lCM1pXbG5hSFJ6VzJsa2VGMHBJQ29xSURJc0lEQXBPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdUV0YwYUM1emNYSjBLSE4xYlNrN1hHNGdJQ0FnSUNCOU8xeHVJQ0I5WEc1OVhHNGlYWDA9IiwiaW1wb3J0IHsgZ2V0QWdncmVnYXRpb25GdW5jdGlvbiwgaW5zZXJ0U21hbGxlciwgaXNOaWwgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IE1lYXN1cmUsIGlzQml0QXJyYXlNZXRyaWMgfSBmcm9tICcuLi90eXBlZC1tZXRyaWNzJztcbmltcG9ydCBCaXRBcnJheSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9iaXQtYXJyYXknO1xub25tZXNzYWdlID0gYXN5bmMgKGV2ZW50KSA9PiB7XG4gICAgY29uc3QgeyB2YWx1ZXMsIHN0YXJ0SWR4LCBlbmRJZHgsIGZuTmFtZXMsIG9wdHMsIG5OZWlnaGJvdXJzLCB3ZWlnaHRzLCBhZ2dyZWdhdGlvbk1ldGhvZCB9ID0gZXZlbnQuZGF0YTtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBrbm5JbmRleGVzID0gbmV3IEFycmF5KHZhbHVlc1swXS5sZW5ndGgpLmZpbGwobnVsbCkubWFwKCgpID0+IG5ldyBBcnJheShuTmVpZ2hib3VycykuZmlsbCgtMSkpO1xuICAgICAgICBjb25zdCBrbm5EaXN0YW5jZXMgPSBuZXcgQXJyYXkodmFsdWVzWzBdLmxlbmd0aCkuZmlsbChudWxsKS5tYXAoKCkgPT4gbmV3IEFycmF5KG5OZWlnaGJvdXJzKS5maWxsKDk5OTk5OSkpO1xuICAgICAgICBjb25zdCBhZ2dyZWdhdGUgPSBnZXRBZ2dyZWdhdGlvbkZ1bmN0aW9uKGFnZ3JlZ2F0aW9uTWV0aG9kLCB3ZWlnaHRzKTtcbiAgICAgICAgY29uc3QgY2h1bmtTaXplID0gZW5kSWR4IC0gc3RhcnRJZHg7XG4gICAgICAgIHZhbHVlcy5mb3JFYWNoKCh2LCBjb2xJZHgpID0+IHtcbiAgICAgICAgICAgIGlmIChpc0JpdEFycmF5TWV0cmljKGZuTmFtZXNbY29sSWR4XSkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHYubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTmlsKHZbaV0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlc1tjb2xJZHhdW2ldID0gbmV3IEJpdEFycmF5KHZhbHVlc1tjb2xJZHhdW2ldLl9kYXRhLCB2YWx1ZXNbY29sSWR4XVtpXS5fbGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBsZXQgY250ID0gMDtcbiAgICAgICAgY29uc3QgZGlzdGFuY2VGbnMgPSBuZXcgQXJyYXkoZm5OYW1lcy5sZW5ndGgpLmZpbGwobnVsbCkubWFwKChfLCBpKSA9PiBuZXcgTWVhc3VyZShmbk5hbWVzW2ldKS5nZXRNZWFzdXJlKG9wdHNbaV0pKTtcbiAgICAgICAgY29uc3Qgc3RhcnRSb3cgPSB2YWx1ZXNbMF0ubGVuZ3RoIC0gMiAtIE1hdGguZmxvb3IoTWF0aC5zcXJ0KC04ICogc3RhcnRJZHggKyA0ICogdmFsdWVzWzBdLmxlbmd0aCAqICh2YWx1ZXNbMF0ubGVuZ3RoIC0gMSkgLSA3KSAvIDIgLSAwLjUpO1xuICAgICAgICBjb25zdCBzdGFydENvbCA9IHN0YXJ0SWR4IC0gdmFsdWVzWzBdLmxlbmd0aCAqIHN0YXJ0Um93ICsgTWF0aC5mbG9vcigoc3RhcnRSb3cgKyAxKSAqIChzdGFydFJvdyArIDIpIC8gMik7XG4gICAgICAgIGxldCBtaSA9IHN0YXJ0Um93O1xuICAgICAgICBsZXQgbWogPSBzdGFydENvbDtcbiAgICAgICAgd2hpbGUgKGNudCA8IGNodW5rU2l6ZSkge1xuICAgICAgICAgICAgLy9jb25zdCB2YWx1ZSA9IHNlcTFMaXN0W21pXSAmJiBzZXExTGlzdFttal0gPyBoYW1taW5nKHNlcTFMaXN0W21pXSwgc2VxMUxpc3RbbWpdKSA6IDA7XG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZVZhbHVlcyA9IGRpc3RhbmNlRm5zLm1hcCgoZm4sIGlkeCkgPT4gIWlzTmlsKHZhbHVlc1tpZHhdW21pXSkgJiYgIWlzTmlsKHZhbHVlc1tpZHhdW21qXSkgP1xuICAgICAgICAgICAgICAgIGZuKHZhbHVlc1tpZHhdW21pXSwgdmFsdWVzW2lkeF1bbWpdKSA6IDEpO1xuICAgICAgICAgICAgLy8gY29uc3QgdmFsdWUgPSAhaXNOaWwodmFsdWVzW21pXSkgJiYgIWlzTmlsKHZhbHVlc1ttal0pID9cbiAgICAgICAgICAgIC8vICAgZGlzdGFuY2VGbih2YWx1ZXNbbWldLCB2YWx1ZXNbbWpdKSA6IDE7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGRpc3RhbmNlVmFsdWVzLmxlbmd0aCA9PT0gMSA/IGRpc3RhbmNlVmFsdWVzWzBdIDogYWdncmVnYXRlKGRpc3RhbmNlVmFsdWVzKTtcbiAgICAgICAgICAgIGluc2VydFNtYWxsZXIoa25uRGlzdGFuY2VzW21pXSwga25uSW5kZXhlc1ttaV0sIHZhbHVlLCBtaik7XG4gICAgICAgICAgICBpbnNlcnRTbWFsbGVyKGtubkRpc3RhbmNlc1ttal0sIGtubkluZGV4ZXNbbWpdLCB2YWx1ZSwgbWkpO1xuICAgICAgICAgICAgY250Kys7XG4gICAgICAgICAgICBtaisrO1xuICAgICAgICAgICAgaWYgKG1qID09PSB2YWx1ZXNbMF0ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgbWkrKztcbiAgICAgICAgICAgICAgICBtaiA9IG1pICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwb3N0TWVzc2FnZSh7IGtubkRpc3RhbmNlcywga25uSW5kZXhlcyB9KTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgcG9zdE1lc3NhZ2UoeyBlcnJvcjogZSB9KTtcbiAgICB9XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYTI1dUxYZHZjbXRsY2k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbXR1YmkxM2IzSnJaWEl1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRXNUMEZCVHl4RlFVRkRMSE5DUVVGelFpeEZRVUZGTEdGQlFXRXNSVUZCUlN4TFFVRkxMRVZCUVVNc1RVRkJUU3hUUVVGVExFTkJRVU03UVVGRGNrVXNUMEZCVHl4RlFVRmxMRTlCUVU4c1JVRkJSU3huUWtGQlowSXNSVUZCUXl4TlFVRk5MR3RDUVVGclFpeERRVUZETzBGQlEzcEZMRTlCUVU4c1VVRkJVU3hOUVVGTkxIbERRVUY1UXl4RFFVRkRPMEZCUnk5RUxGTkJRVk1zUjBGQlJ5eExRVUZMTEVWQlFVVXNTMEZCU3l4RlFVRkZMRVZCUVVVN1NVRkRNVUlzVFVGQlRTeEZRVUZETEUxQlFVMHNSVUZCUlN4UlFVRlJMRVZCUVVVc1RVRkJUU3hGUVVGRkxFOUJRVThzUlVGQlJTeEpRVUZKTEVWQlFVVXNWMEZCVnl4RlFVRkZMRTlCUVU4c1JVRkJSU3hwUWtGQmFVSXNSVUZCUXl4SFFVVnBRaXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETzBsQlEzQklMRWxCUVVrN1VVRkRSaXhOUVVGTkxGVkJRVlVzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4SlFVRkpMRXRCUVVzc1EwRkJVeXhYUVVGWExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRemRITEUxQlFVMHNXVUZCV1N4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFbEJRVWtzUzBGQlN5eERRVUZUTEZkQlFWY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEyNUlMRTFCUVUwc1UwRkJVeXhIUVVGSExITkNRVUZ6UWl4RFFVRkRMR2xDUVVGcFFpeEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTNKRkxFMUJRVTBzVTBGQlV5eEhRVUZITEUxQlFVMHNSMEZCUnl4UlFVRlJMRU5CUVVNN1VVRkRjRU1zVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hOUVVGTkxFVkJRVVVzUlVGQlJUdFpRVU16UWl4SlFVRkpMR2RDUVVGblFpeERRVUZETEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhGUVVGRk8yZENRVU55UXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdHZRa0ZEYWtNc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPM2RDUVVGRkxGTkJRVk03YjBKQlF6RkNMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dHBRa0ZEZEVZN1lVRkRSanRSUVVOSUxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEwZ3NTVUZCU1N4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMW9zVFVGQlRTeFhRVUZYTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhKUVVGSkxFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOd1NDeE5RVUZOTEZGQlFWRXNSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVOb1JDeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExGRkJRVkVzUjBGQlJ5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlF6RkdMRTFCUVUwc1VVRkJVU3hIUVVGSExGRkJRVkVzUjBGQlJ5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hIUVVGSExGRkJRVkVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1VVRkJVU3hIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNVVUZCVVN4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6RkhMRWxCUVVrc1JVRkJSU3hIUVVGSExGRkJRVkVzUTBGQlF6dFJRVU5zUWl4SlFVRkpMRVZCUVVVc1IwRkJSeXhSUVVGUkxFTkJRVU03VVVGRGJFSXNUMEZCVHl4SFFVRkhMRWRCUVVjc1UwRkJVeXhGUVVGRk8xbEJRM1JDTEhWR1FVRjFSanRaUVVOMlJpeE5RVUZOTEdOQlFXTXNSMEZCUnl4WFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRkRWNzUlVGQlJTeERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkROVU1zTWtSQlFUSkVPMWxCUXpORUxEUkRRVUUwUXp0WlFVTTFReXhOUVVGTkxFdEJRVXNzUjBGQlJ5eGpRVUZqTEVOQlFVTXNUVUZCVFN4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zWTBGQll5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhUUVVGVExFTkJRVU1zWTBGQll5eERRVUZETEVOQlFVTTdXVUZETVVZc1lVRkJZU3hEUVVGRExGbEJRVmtzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4VlFVRlZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUzBGQlN5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRPMWxCUXpORUxHRkJRV0VzUTBGQlF5eFpRVUZaTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1ZVRkJWU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEV0QlFVc3NSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJRenRaUVVVelJDeEhRVUZITEVWQlFVVXNRMEZCUXp0WlFVTk9MRVZCUVVVc1JVRkJSU3hEUVVGRE8xbEJRMHdzU1VGQlNTeEZRVUZGTEV0QlFVc3NUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJUdG5Ra0ZETTBJc1JVRkJSU3hGUVVGRkxFTkJRVU03WjBKQlEwd3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03WVVGRFlqdFRRVU5HTzFGQlJVUXNWMEZCVnl4RFFVRkRMRVZCUVVNc1dVRkJXU3hGUVVGRkxGVkJRVlVzUlVGQlF5eERRVUZETEVOQlFVTTdTMEZEZWtNN1NVRkJReXhQUVVGUExFTkJRVU1zUlVGQlJUdFJRVU5XTEZkQlFWY3NRMEZCUXl4RlFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETzB0QlEzcENPMEZCUTBnc1EwRkJReXhEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIdG5aWFJCWjJkeVpXZGhkR2x2YmtaMWJtTjBhVzl1TENCcGJuTmxjblJUYldGc2JHVnlMQ0JwYzA1cGJIMGdabkp2YlNBbkxpOTFkR2xzY3ljN1hHNXBiWEJ2Y25RZ2UwdHViM2R1VFdWMGNtbGpjeXdnVFdWaGMzVnlaU3dnYVhOQ2FYUkJjbkpoZVUxbGRISnBZMzBnWm5KdmJTQW5MaTR2ZEhsd1pXUXRiV1YwY21samN5YzdYRzVwYlhCdmNuUWdRbWwwUVhKeVlYa2dabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZZbWwwTFdGeWNtRjVKenRjYm1sdGNHOXlkQ0I3UkdsemRHRnVZMlZCWjJkeVpXZGhkR2x2YmsxbGRHaHZaSDBnWm5KdmJTQW5MaTkwZVhCbGN5YzdYRzVjYm05dWJXVnpjMkZuWlNBOUlHRnplVzVqSUNobGRtVnVkQ2tnUFQ0Z2UxeHVJQ0JqYjI1emRDQjdkbUZzZFdWekxDQnpkR0Z5ZEVsa2VDd2daVzVrU1dSNExDQm1iazVoYldWekxDQnZjSFJ6TENCdVRtVnBaMmhpYjNWeWN5d2dkMlZwWjJoMGN5d2dZV2RuY21WbllYUnBiMjVOWlhSb2IyUjlPbHh1SUNBZ0lIdDJZV3gxWlhNNklFRnljbUY1UEdGdWVWdGRQaXdnYzNSaGNuUkpaSGc2SUc1MWJXSmxjaXdnWlc1a1NXUjRPaUJ1ZFcxaVpYSXNJR1p1VG1GdFpYTTZJRXR1YjNkdVRXVjBjbWxqYzF0ZExGeHVJQ0FnSUNBZ2IzQjBjem9nWVc1NVcxMHNJRzVPWldsbmFHSnZkWEp6T2lCdWRXMWlaWElzSUhkbGFXZG9kSE02SUc1MWJXSmxjbHRkTENCaFoyZHlaV2RoZEdsdmJrMWxkR2h2WkRvZ1JHbHpkR0Z1WTJWQloyZHlaV2RoZEdsdmJrMWxkR2h2WkgwZ1BTQmxkbVZ1ZEM1a1lYUmhPMXh1SUNCMGNua2dlMXh1SUNBZ0lHTnZibk4wSUd0dWJrbHVaR1Y0WlhNZ1BTQnVaWGNnUVhKeVlYa29kbUZzZFdWeld6QmRMbXhsYm1kMGFDa3VabWxzYkNodWRXeHNLUzV0WVhBb0tDa2dQVDRnYm1WM0lFRnljbUY1UEc1MWJXSmxjajRvYms1bGFXZG9ZbTkxY25NcExtWnBiR3dvTFRFcEtUdGNiaUFnSUNCamIyNXpkQ0JyYm01RWFYTjBZVzVqWlhNZ1BTQnVaWGNnUVhKeVlYa29kbUZzZFdWeld6QmRMbXhsYm1kMGFDa3VabWxzYkNodWRXeHNLUzV0WVhBb0tDa2dQVDRnYm1WM0lFRnljbUY1UEc1MWJXSmxjajRvYms1bGFXZG9ZbTkxY25NcExtWnBiR3dvT1RrNU9UazVLU2s3WEc0Z0lDQWdZMjl1YzNRZ1lXZG5jbVZuWVhSbElEMGdaMlYwUVdkbmNtVm5ZWFJwYjI1R2RXNWpkR2x2YmloaFoyZHlaV2RoZEdsdmJrMWxkR2h2WkN3Z2QyVnBaMmgwY3lrN1hHNGdJQ0FnWTI5dWMzUWdZMmgxYm10VGFYcGxJRDBnWlc1a1NXUjRJQzBnYzNSaGNuUkpaSGc3WEc0Z0lDQWdkbUZzZFdWekxtWnZja1ZoWTJnb0tIWXNJR052YkVsa2VDa2dQVDRnZTF4dUlDQWdJQ0FnYVdZZ0tHbHpRbWwwUVhKeVlYbE5aWFJ5YVdNb1ptNU9ZVzFsYzF0amIyeEpaSGhkS1NrZ2UxeHVJQ0FnSUNBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFl1YkdWdVozUm9PeUFySzJrcElIdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb2FYTk9hV3dvZGx0cFhTa3BJR052Ym5ScGJuVmxPMXh1SUNBZ0lDQWdJQ0FnSUhaaGJIVmxjMXRqYjJ4SlpIaGRXMmxkSUQwZ2JtVjNJRUpwZEVGeWNtRjVLSFpoYkhWbGMxdGpiMnhKWkhoZFcybGRMbDlrWVhSaExDQjJZV3gxWlhOYlkyOXNTV1I0WFZ0cFhTNWZiR1Z1WjNSb0tUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lIMHBPMXh1SUNBZ0lHeGxkQ0JqYm5RZ1BTQXdPMXh1SUNBZ0lHTnZibk4wSUdScGMzUmhibU5sUm01eklEMGdibVYzSUVGeWNtRjVLR1p1VG1GdFpYTXViR1Z1WjNSb0tTNW1hV3hzS0c1MWJHd3BMbTFoY0Nnb1h5d2dhU2tnUFQ0Z2JtVjNJRTFsWVhOMWNtVW9abTVPWVcxbGMxdHBYU2t1WjJWMFRXVmhjM1Z5WlNodmNIUnpXMmxkS1NrN1hHNGdJQ0FnWTI5dWMzUWdjM1JoY25SU2IzY2dQU0IyWVd4MVpYTmJNRjB1YkdWdVozUm9JQzBnTWlBdElFMWhkR2d1Wm14dmIzSW9YRzRnSUNBZ0lDQk5ZWFJvTG5OeGNuUW9MVGdnS2lCemRHRnlkRWxrZUNBcklEUWdLaUIyWVd4MVpYTmJNRjB1YkdWdVozUm9JQ29nS0haaGJIVmxjMXN3WFM1c1pXNW5kR2dnTFNBeEtTQXRJRGNwSUM4Z01pQXRJREF1TlNrN1hHNGdJQ0FnWTI5dWMzUWdjM1JoY25SRGIyd2dQU0J6ZEdGeWRFbGtlQ0F0SUhaaGJIVmxjMXN3WFM1c1pXNW5kR2dnS2lCemRHRnlkRkp2ZHlBcklFMWhkR2d1Wm14dmIzSW9LSE4wWVhKMFVtOTNJQ3NnTVNrZ0tpQW9jM1JoY25SU2IzY2dLeUF5S1NBdklESXBPMXh1SUNBZ0lHeGxkQ0J0YVNBOUlITjBZWEowVW05M08xeHVJQ0FnSUd4bGRDQnRhaUE5SUhOMFlYSjBRMjlzTzF4dUlDQWdJSGRvYVd4bElDaGpiblFnUENCamFIVnVhMU5wZW1VcElIdGNiaUFnSUNBZ0lDOHZZMjl1YzNRZ2RtRnNkV1VnUFNCelpYRXhUR2x6ZEZ0dGFWMGdKaVlnYzJWeE1VeHBjM1JiYldwZElEOGdhR0Z0YldsdVp5aHpaWEV4VEdsemRGdHRhVjBzSUhObGNURk1hWE4wVzIxcVhTa2dPaUF3TzF4dUlDQWdJQ0FnWTI5dWMzUWdaR2x6ZEdGdVkyVldZV3gxWlhNZ1BTQmthWE4wWVc1alpVWnVjeTV0WVhBb0tHWnVMQ0JwWkhncElEMCtJQ0ZwYzA1cGJDaDJZV3gxWlhOYmFXUjRYVnR0YVYwcElDWW1JQ0ZwYzA1cGJDaDJZV3gxWlhOYmFXUjRYVnR0YWwwcElEOWNiaUFnSUNBZ0lDQWdabTRvZG1Gc2RXVnpXMmxrZUYxYmJXbGRMQ0IyWVd4MVpYTmJhV1I0WFZ0dGFsMHBJRG9nTVNrN1hHNGdJQ0FnSUNBdkx5QmpiMjV6ZENCMllXeDFaU0E5SUNGcGMwNXBiQ2gyWVd4MVpYTmJiV2xkS1NBbUppQWhhWE5PYVd3b2RtRnNkV1Z6VzIxcVhTa2dQMXh1SUNBZ0lDQWdMeThnSUNCa2FYTjBZVzVqWlVadUtIWmhiSFZsYzF0dGFWMHNJSFpoYkhWbGMxdHRhbDBwSURvZ01UdGNiaUFnSUNBZ0lHTnZibk4wSUhaaGJIVmxJRDBnWkdsemRHRnVZMlZXWVd4MVpYTXViR1Z1WjNSb0lEMDlQU0F4SUQ4Z1pHbHpkR0Z1WTJWV1lXeDFaWE5iTUYwZ09pQmhaMmR5WldkaGRHVW9aR2x6ZEdGdVkyVldZV3gxWlhNcE8xeHVJQ0FnSUNBZ2FXNXpaWEowVTIxaGJHeGxjaWhyYm01RWFYTjBZVzVqWlhOYmJXbGRMQ0JyYm01SmJtUmxlR1Z6VzIxcFhTd2dkbUZzZFdVc0lHMXFLVHRjYmlBZ0lDQWdJR2x1YzJWeWRGTnRZV3hzWlhJb2EyNXVSR2x6ZEdGdVkyVnpXMjFxWFN3Z2EyNXVTVzVrWlhobGMxdHRhbDBzSUhaaGJIVmxMQ0J0YVNrN1hHNWNiaUFnSUNBZ0lHTnVkQ3NyTzF4dUlDQWdJQ0FnYldvckt6dGNiaUFnSUNBZ0lHbG1JQ2h0YWlBOVBUMGdkbUZzZFdWeld6QmRMbXhsYm1kMGFDa2dlMXh1SUNBZ0lDQWdJQ0J0YVNzck8xeHVJQ0FnSUNBZ0lDQnRhaUE5SUcxcElDc2dNVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQndiM04wVFdWemMyRm5aU2g3YTI1dVJHbHpkR0Z1WTJWekxDQnJibTVKYm1SbGVHVnpmU2s3WEc0Z0lIMGdZMkYwWTJnZ0tHVXBJSHRjYmlBZ0lDQndiM04wVFdWemMyRm5aU2g3WlhKeWIzSTZJR1Y5S1R0Y2JpQWdmVnh1ZlR0Y2JpSmRmUT09IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4vLyB0aGUgc3RhcnR1cCBmdW5jdGlvblxuX193ZWJwYWNrX3JlcXVpcmVfXy54ID0gKCkgPT4ge1xuXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcblx0Ly8gVGhpcyBlbnRyeSBtb2R1bGUgZGVwZW5kcyBvbiBvdGhlciBsb2FkZWQgY2h1bmtzIGFuZCBleGVjdXRpb24gbmVlZCB0byBiZSBkZWxheWVkXG5cdHZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy5PKHVuZGVmaW5lZCwgWzQ0LDg2MSw3MjddLCAoKSA9PiAoX193ZWJwYWNrX3JlcXVpcmVfXyg0NjY0KSkpXG5cdF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLk8oX193ZWJwYWNrX2V4cG9ydHNfXyk7XG5cdHJldHVybiBfX3dlYnBhY2tfZXhwb3J0c19fO1xufTtcblxuIiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5mID0ge307XG4vLyBUaGlzIGZpbGUgY29udGFpbnMgb25seSB0aGUgZW50cnkgY2h1bmsuXG4vLyBUaGUgY2h1bmsgbG9hZGluZyBmdW5jdGlvbiBmb3IgYWRkaXRpb25hbCBjaHVua3Ncbl9fd2VicGFja19yZXF1aXJlX18uZSA9IChjaHVua0lkKSA9PiB7XG5cdHJldHVybiBQcm9taXNlLmFsbChPYmplY3Qua2V5cyhfX3dlYnBhY2tfcmVxdWlyZV9fLmYpLnJlZHVjZSgocHJvbWlzZXMsIGtleSkgPT4ge1xuXHRcdF9fd2VicGFja19yZXF1aXJlX18uZltrZXldKGNodW5rSWQsIHByb21pc2VzKTtcblx0XHRyZXR1cm4gcHJvbWlzZXM7XG5cdH0sIFtdKSk7XG59OyIsIi8vIFRoaXMgZnVuY3Rpb24gYWxsb3cgdG8gcmVmZXJlbmNlIGFzeW5jIGNodW5rcyBhbmQgc2libGluZyBjaHVua3MgZm9yIHRoZSBlbnRyeXBvaW50XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnUgPSAoY2h1bmtJZCkgPT4ge1xuXHQvLyByZXR1cm4gdXJsIGZvciBmaWxlbmFtZXMgYmFzZWQgb24gdGVtcGxhdGVcblx0cmV0dXJuIFwiXCIgKyBjaHVua0lkICsgXCIuanNcIjtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwidmFyIHNjcmlwdFVybDtcbmlmIChfX3dlYnBhY2tfcmVxdWlyZV9fLmcuaW1wb3J0U2NyaXB0cykgc2NyaXB0VXJsID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmxvY2F0aW9uICsgXCJcIjtcbnZhciBkb2N1bWVudCA9IF9fd2VicGFja19yZXF1aXJlX18uZy5kb2N1bWVudDtcbmlmICghc2NyaXB0VXJsICYmIGRvY3VtZW50KSB7XG5cdGlmIChkb2N1bWVudC5jdXJyZW50U2NyaXB0KVxuXHRcdHNjcmlwdFVybCA9IGRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjO1xuXHRpZiAoIXNjcmlwdFVybCkge1xuXHRcdHZhciBzY3JpcHRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIik7XG5cdFx0aWYoc2NyaXB0cy5sZW5ndGgpIHtcblx0XHRcdHZhciBpID0gc2NyaXB0cy5sZW5ndGggLSAxO1xuXHRcdFx0d2hpbGUgKGkgPiAtMSAmJiAhc2NyaXB0VXJsKSBzY3JpcHRVcmwgPSBzY3JpcHRzW2ktLV0uc3JjO1xuXHRcdH1cblx0fVxufVxuLy8gV2hlbiBzdXBwb3J0aW5nIGJyb3dzZXJzIHdoZXJlIGFuIGF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgeW91IG11c3Qgc3BlY2lmeSBhbiBvdXRwdXQucHVibGljUGF0aCBtYW51YWxseSB2aWEgY29uZmlndXJhdGlvblxuLy8gb3IgcGFzcyBhbiBlbXB0eSBzdHJpbmcgKFwiXCIpIGFuZCBzZXQgdGhlIF9fd2VicGFja19wdWJsaWNfcGF0aF9fIHZhcmlhYmxlIGZyb20geW91ciBjb2RlIHRvIHVzZSB5b3VyIG93biBsb2dpYy5cbmlmICghc2NyaXB0VXJsKSB0aHJvdyBuZXcgRXJyb3IoXCJBdXRvbWF0aWMgcHVibGljUGF0aCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnJvd3NlclwiKTtcbnNjcmlwdFVybCA9IHNjcmlwdFVybC5yZXBsYWNlKC8jLiokLywgXCJcIikucmVwbGFjZSgvXFw/LiokLywgXCJcIikucmVwbGFjZSgvXFwvW15cXC9dKyQvLCBcIi9cIik7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBzY3JpcHRVcmw7IiwiLy8gbm8gYmFzZVVSSVxuXG4vLyBvYmplY3QgdG8gc3RvcmUgbG9hZGVkIGNodW5rc1xuLy8gXCIxXCIgbWVhbnMgXCJhbHJlYWR5IGxvYWRlZFwiXG52YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuXHQ2NjQ6IDFcbn07XG5cbi8vIGltcG9ydFNjcmlwdHMgY2h1bmsgbG9hZGluZ1xudmFyIGluc3RhbGxDaHVuayA9IChkYXRhKSA9PiB7XG5cdHZhciBbY2h1bmtJZHMsIG1vcmVNb2R1bGVzLCBydW50aW1lXSA9IGRhdGE7XG5cdGZvcih2YXIgbW9kdWxlSWQgaW4gbW9yZU1vZHVsZXMpIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8obW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuXHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcblx0XHR9XG5cdH1cblx0aWYocnVudGltZSkgcnVudGltZShfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblx0d2hpbGUoY2h1bmtJZHMubGVuZ3RoKVxuXHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkcy5wb3AoKV0gPSAxO1xuXHRwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbihkYXRhKTtcbn07XG5fX3dlYnBhY2tfcmVxdWlyZV9fLmYuaSA9IChjaHVua0lkLCBwcm9taXNlcykgPT4ge1xuXHQvLyBcIjFcIiBpcyB0aGUgc2lnbmFsIGZvciBcImFscmVhZHkgbG9hZGVkXCJcblx0aWYoIWluc3RhbGxlZENodW5rc1tjaHVua0lkXSkge1xuXHRcdGlmKHRydWUpIHsgLy8gYWxsIGNodW5rcyBoYXZlIEpTXG5cdFx0XHRpbXBvcnRTY3JpcHRzKF9fd2VicGFja19yZXF1aXJlX18ucCArIF9fd2VicGFja19yZXF1aXJlX18udShjaHVua0lkKSk7XG5cdFx0fVxuXHR9XG59O1xuXG52YXIgY2h1bmtMb2FkaW5nR2xvYmFsID0gc2VsZltcIndlYnBhY2tDaHVua2VkYVwiXSA9IHNlbGZbXCJ3ZWJwYWNrQ2h1bmtlZGFcIl0gfHwgW107XG52YXIgcGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24gPSBjaHVua0xvYWRpbmdHbG9iYWwucHVzaC5iaW5kKGNodW5rTG9hZGluZ0dsb2JhbCk7XG5jaHVua0xvYWRpbmdHbG9iYWwucHVzaCA9IGluc3RhbGxDaHVuaztcblxuLy8gbm8gSE1SXG5cbi8vIG5vIEhNUiBtYW5pZmVzdCIsIi8vIHJ1biBzdGFydHVwXG52YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18ueCgpO1xuIl0sIm5hbWVzIjpbImRlZmVycmVkIiwibmV4dCIsIkRpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzIiwiaXNOaWwiLCJ4IiwiaW5zZXJ0U21hbGxlciIsImRpc3RhbmNlc0FyIiwiaW5kZXhlcyIsIm51bSIsImluZGV4IiwibGVuZ3RoIiwibmV3UG9zaXRpb24iLCJmaW5kSW5kZXgiLCJ2IiwicG9wIiwic3BsaWNlIiwib25tZXNzYWdlIiwiYXN5bmMiLCJldmVudCIsInZhbHVlcyIsInN0YXJ0SWR4IiwiZW5kSWR4IiwiZm5OYW1lcyIsIm9wdHMiLCJuTmVpZ2hib3VycyIsIndlaWdodHMiLCJhZ2dyZWdhdGlvbk1ldGhvZCIsImRhdGEiLCJrbm5JbmRleGVzIiwiQXJyYXkiLCJmaWxsIiwibWFwIiwia25uRGlzdGFuY2VzIiwiYWdncmVnYXRlIiwiTUFOSEFUVEFOIiwidnMiLCJyZWR1Y2UiLCJhY2MiLCJ2YWwiLCJpZHgiLCJzdW0iLCJNYXRoIiwic3FydCIsImdldEFnZ3JlZ2F0aW9uRnVuY3Rpb24iLCJjaHVua1NpemUiLCJmb3JFYWNoIiwiY29sSWR4IiwiaSIsIl9kYXRhIiwiX2xlbmd0aCIsImNudCIsImRpc3RhbmNlRm5zIiwiXyIsImdldE1lYXN1cmUiLCJzdGFydFJvdyIsImZsb29yIiwic3RhcnRDb2wiLCJtaSIsIm1qIiwiZGlzdGFuY2VWYWx1ZXMiLCJmbiIsInZhbHVlIiwicG9zdE1lc3NhZ2UiLCJlIiwiZXJyb3IiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJ1bmRlZmluZWQiLCJleHBvcnRzIiwibW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsIm0iLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiTyIsInJlc3VsdCIsImNodW5rSWRzIiwicHJpb3JpdHkiLCJub3RGdWxmaWxsZWQiLCJJbmZpbml0eSIsImZ1bGZpbGxlZCIsImoiLCJPYmplY3QiLCJrZXlzIiwiZXZlcnkiLCJrZXkiLCJyIiwiZCIsImRlZmluaXRpb24iLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiZiIsImNodW5rSWQiLCJQcm9taXNlIiwiYWxsIiwicHJvbWlzZXMiLCJ1IiwiZyIsImdsb2JhbFRoaXMiLCJ0aGlzIiwiRnVuY3Rpb24iLCJ3aW5kb3ciLCJvYmoiLCJwcm9wIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwic2NyaXB0VXJsIiwiaW1wb3J0U2NyaXB0cyIsImxvY2F0aW9uIiwiZG9jdW1lbnQiLCJjdXJyZW50U2NyaXB0Iiwic3JjIiwic2NyaXB0cyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiRXJyb3IiLCJyZXBsYWNlIiwicCIsImluc3RhbGxlZENodW5rcyIsImNodW5rTG9hZGluZ0dsb2JhbCIsInNlbGYiLCJwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbiIsInB1c2giLCJiaW5kIiwibW9yZU1vZHVsZXMiLCJydW50aW1lIiwidGhlbiJdLCJzb3VyY2VSb290IjoiIn0=
|
package/dist/694.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var eda;(()=>{"use strict";var e,r,t={
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QSxJQUFJRCxFQUFJcUMsRUFBUXBDLE9BQVMsRUFDbEJELEdBQUssSUFBTStCLEdBQVdBLEVBQVlNLEVBQVFyQyxLQUFLb0MsR0FFeEQsQ0FJRCxJQUFLTCxFQUFXLE1BQU0sSUFBSVEsTUFBTSx5REFDaENSLEVBQVlBLEVBQVVTLFFBQVEsT0FBUSxJQUFJQSxRQUFRLFFBQVMsSUFBSUEsUUFBUSxZQUFhLEtBQ3BGekQsRUFBb0IwRCxFQUFJVixDLFdDZHhCLElBQUlXLEVBQWtCLENBQ3JCLElBQUssR0FnQk4zRCxFQUFvQmdDLEVBQUVmLEVBQUksQ0FBQ2dCLEVBQVNHLEtBRS9CdUIsRUFBZ0IxQixJQUVsQmdCLGNBQWNqRCxFQUFvQjBELEVBQUkxRCxFQUFvQnFDLEVBQUVKLEdBRTlELEVBR0QsSUFBSTJCLEVBQXFCQyxLQUFzQixnQkFBSUEsS0FBc0IsaUJBQUssR0FDMUVDLEVBQTZCRixFQUFtQkcsS0FBS0MsS0FBS0osR0FDOURBLEVBQW1CRyxLQXZCQ2pGLElBQ25CLElBQUs4QixFQUFVcUQsRUFBYUMsR0FBV3BGLEVBQ3ZDLElBQUksSUFBSW1CLEtBQVlnRSxFQUNoQmpFLEVBQW9CNEIsRUFBRXFDLEVBQWFoRSxLQUNyQ0QsRUFBb0JRLEVBQUVQLEdBQVlnRSxFQUFZaEUsSUFJaEQsSUFER2lFLEdBQVNBLEVBQVFsRSxHQUNkWSxFQUFTTSxRQUNkeUMsRUFBZ0IvQyxFQUFTdUQsT0FBUyxFQUNuQ0wsRUFBMkJoRixFQUFLLEMsS1ZuQjdCUixFQUFPMEIsRUFBb0JTLEVBQy9CVCxFQUFvQlMsRUFBSSxJQUNoQlQsRUFBb0JQLEVBQUUsS0FBS0ksS0FBS3ZCLEdXRHhDLElBQUlvQyxFQUFzQlYsRUFBb0JTLEkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2NodW5rIGxvYWRlZCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL3N0YXJ0dXAgY2h1bmsgZGVwZW5kZW5jaWVzIiwid2VicGFjazovL2VkYS8uL3NyYy93b3JrZXJzL3VtYXAtd29ya2VyLnRzIiwid2VicGFjazovL2VkYS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZW5zdXJlIGNodW5rIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZ2V0IGphdmFzY3JpcHQgY2h1bmsgZmlsZW5hbWUiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9wdWJsaWNQYXRoIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3N0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZmVycmVkID0gW107XG5fX3dlYnBhY2tfcmVxdWlyZV9fLk8gPSAocmVzdWx0LCBjaHVua0lkcywgZm4sIHByaW9yaXR5KSA9PiB7XG5cdGlmKGNodW5rSWRzKSB7XG5cdFx0cHJpb3JpdHkgPSBwcmlvcml0eSB8fCAwO1xuXHRcdGZvcih2YXIgaSA9IGRlZmVycmVkLmxlbmd0aDsgaSA+IDAgJiYgZGVmZXJyZWRbaSAtIDFdWzJdID4gcHJpb3JpdHk7IGktLSkgZGVmZXJyZWRbaV0gPSBkZWZlcnJlZFtpIC0gMV07XG5cdFx0ZGVmZXJyZWRbaV0gPSBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV07XG5cdFx0cmV0dXJuO1xuXHR9XG5cdHZhciBub3RGdWxmaWxsZWQgPSBJbmZpbml0eTtcblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBkZWZlcnJlZC5sZW5ndGg7IGkrKykge1xuXHRcdHZhciBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV0gPSBkZWZlcnJlZFtpXTtcblx0XHR2YXIgZnVsZmlsbGVkID0gdHJ1ZTtcblx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGNodW5rSWRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRpZiAoKHByaW9yaXR5ICYgMSA9PT0gMCB8fCBub3RGdWxmaWxsZWQgPj0gcHJpb3JpdHkpICYmIE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uTykuZXZlcnkoKGtleSkgPT4gKF9fd2VicGFja19yZXF1aXJlX18uT1trZXldKGNodW5rSWRzW2pdKSkpKSB7XG5cdFx0XHRcdGNodW5rSWRzLnNwbGljZShqLS0sIDEpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZnVsZmlsbGVkID0gZmFsc2U7XG5cdFx0XHRcdGlmKHByaW9yaXR5IDwgbm90RnVsZmlsbGVkKSBub3RGdWxmaWxsZWQgPSBwcmlvcml0eTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYoZnVsZmlsbGVkKSB7XG5cdFx0XHRkZWZlcnJlZC5zcGxpY2UoaS0tLCAxKVxuXHRcdFx0dmFyIHIgPSBmbigpO1xuXHRcdFx0aWYgKHIgIT09IHVuZGVmaW5lZCkgcmVzdWx0ID0gcjtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn07IiwidmFyIG5leHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLng7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fLmUoMjIxKS50aGVuKG5leHQpO1xufTsiLCIvLyBXb3JrZXIgZm9yIHRoZSBtZXRob2QgVU1BUFxudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgeyBVTUFQIH0gZnJvbSAndW1hcC1qcyc7XG5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgdW1hcCA9IG5ldyBVTUFQKGV2dC5kYXRhLm9wdGlvbnMpO1xuICAgICAgICBjb25zdCBlbWJlZGRpbmdzID0gdW1hcC5maXQoZXZ0LmRhdGEuZGF0YSk7XG4gICAgICAgIHBvc3RNZXNzYWdlKHsgJ2VtYmVkZGluZ3MnOiBlbWJlZGRpbmdzIH0pO1xuICAgIH0pO1xufTtcbiIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4vLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuX193ZWJwYWNrX3JlcXVpcmVfXy5tID0gX193ZWJwYWNrX21vZHVsZXNfXztcblxuLy8gdGhlIHN0YXJ0dXAgZnVuY3Rpb25cbl9fd2VicGFja19yZXF1aXJlX18ueCA9ICgpID0+IHtcblx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG5cdC8vIFRoaXMgZW50cnkgbW9kdWxlIGRlcGVuZHMgb24gb3RoZXIgbG9hZGVkIGNodW5rcyBhbmQgZXhlY3V0aW9uIG5lZWQgdG8gYmUgZGVsYXllZFxuXHR2YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18uTyh1bmRlZmluZWQsIFsyMjFdLCAoKSA9PiAoX193ZWJwYWNrX3JlcXVpcmVfXyg2OTQpKSlcblx0X193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18uTyhfX3dlYnBhY2tfZXhwb3J0c19fKTtcblx0cmV0dXJuIF9fd2VicGFja19leHBvcnRzX187XG59O1xuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmYgPSB7fTtcbi8vIFRoaXMgZmlsZSBjb250YWlucyBvbmx5IHRoZSBlbnRyeSBjaHVuay5cbi8vIFRoZSBjaHVuayBsb2FkaW5nIGZ1bmN0aW9uIGZvciBhZGRpdGlvbmFsIGNodW5rc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5lID0gKGNodW5rSWQpID0+IHtcblx0cmV0dXJuIFByb21pc2UuYWxsKE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uZikucmVkdWNlKChwcm9taXNlcywga2V5KSA9PiB7XG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5mW2tleV0oY2h1bmtJZCwgcHJvbWlzZXMpO1xuXHRcdHJldHVybiBwcm9taXNlcztcblx0fSwgW10pKTtcbn07IiwiLy8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYXN5bmMgY2h1bmtzIGFuZCBzaWJsaW5nIGNodW5rcyBmb3IgdGhlIGVudHJ5cG9pbnRcbl9fd2VicGFja19yZXF1aXJlX18udSA9IChjaHVua0lkKSA9PiB7XG5cdC8vIHJldHVybiB1cmwgZm9yIGZpbGVuYW1lcyBiYXNlZCBvbiB0ZW1wbGF0ZVxuXHRyZXR1cm4gXCJcIiArIGNodW5rSWQgKyBcIi5qc1wiO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJ2YXIgc2NyaXB0VXJsO1xuaWYgKF9fd2VicGFja19yZXF1aXJlX18uZy5pbXBvcnRTY3JpcHRzKSBzY3JpcHRVcmwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcubG9jYXRpb24gKyBcIlwiO1xudmFyIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmRvY3VtZW50O1xuaWYgKCFzY3JpcHRVcmwgJiYgZG9jdW1lbnQpIHtcblx0aWYgKGRvY3VtZW50LmN1cnJlbnRTY3JpcHQpXG5cdFx0c2NyaXB0VXJsID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM7XG5cdGlmICghc2NyaXB0VXJsKSB7XG5cdFx0dmFyIHNjcmlwdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKTtcblx0XHRpZihzY3JpcHRzLmxlbmd0aCkge1xuXHRcdFx0dmFyIGkgPSBzY3JpcHRzLmxlbmd0aCAtIDE7XG5cdFx0XHR3aGlsZSAoaSA+IC0xICYmICFzY3JpcHRVcmwpIHNjcmlwdFVybCA9IHNjcmlwdHNbaS0tXS5zcmM7XG5cdFx0fVxuXHR9XG59XG4vLyBXaGVuIHN1cHBvcnRpbmcgYnJvd3NlcnMgd2hlcmUgYW4gYXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCB5b3UgbXVzdCBzcGVjaWZ5IGFuIG91dHB1dC5wdWJsaWNQYXRoIG1hbnVhbGx5IHZpYSBjb25maWd1cmF0aW9uXG4vLyBvciBwYXNzIGFuIGVtcHR5IHN0cmluZyAoXCJcIikgYW5kIHNldCB0aGUgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gdmFyaWFibGUgZnJvbSB5b3VyIGNvZGUgdG8gdXNlIHlvdXIgb3duIGxvZ2ljLlxuaWYgKCFzY3JpcHRVcmwpIHRocm93IG5ldyBFcnJvcihcIkF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyXCIpO1xuc2NyaXB0VXJsID0gc2NyaXB0VXJsLnJlcGxhY2UoLyMuKiQvLCBcIlwiKS5yZXBsYWNlKC9cXD8uKiQvLCBcIlwiKS5yZXBsYWNlKC9cXC9bXlxcL10rJC8sIFwiL1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18ucCA9IHNjcmlwdFVybDsiLCIvLyBubyBiYXNlVVJJXG5cbi8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgY2h1bmtzXG4vLyBcIjFcIiBtZWFucyBcImFscmVhZHkgbG9hZGVkXCJcbnZhciBpbnN0YWxsZWRDaHVua3MgPSB7XG5cdDY5NDogMVxufTtcblxuLy8gaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nXG52YXIgaW5zdGFsbENodW5rID0gKGRhdGEpID0+IHtcblx0dmFyIFtjaHVua0lkcywgbW9yZU1vZHVsZXMsIHJ1bnRpbWVdID0gZGF0YTtcblx0Zm9yKHZhciBtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhtb3JlTW9kdWxlcywgbW9kdWxlSWQpKSB7XG5cdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLm1bbW9kdWxlSWRdID0gbW9yZU1vZHVsZXNbbW9kdWxlSWRdO1xuXHRcdH1cblx0fVxuXHRpZihydW50aW1lKSBydW50aW1lKF9fd2VicGFja19yZXF1aXJlX18pO1xuXHR3aGlsZShjaHVua0lkcy5sZW5ndGgpXG5cdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRzLnBvcCgpXSA9IDE7XG5cdHBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uKGRhdGEpO1xufTtcbl9fd2VicGFja19yZXF1aXJlX18uZi5pID0gKGNodW5rSWQsIHByb21pc2VzKSA9PiB7XG5cdC8vIFwiMVwiIGlzIHRoZSBzaWduYWwgZm9yIFwiYWxyZWFkeSBsb2FkZWRcIlxuXHRpZighaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7XG5cdFx0aWYodHJ1ZSkgeyAvLyBhbGwgY2h1bmtzIGhhdmUgSlNcblx0XHRcdGltcG9ydFNjcmlwdHMoX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgX193ZWJwYWNrX3JlcXVpcmVfXy51KGNodW5rSWQpKTtcblx0XHR9XG5cdH1cbn07XG5cbnZhciBjaHVua0xvYWRpbmdHbG9iYWwgPSBzZWxmW1wid2VicGFja0NodW5rZWRhXCJdID0gc2VsZltcIndlYnBhY2tDaHVua2VkYVwiXSB8fCBbXTtcbnZhciBwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbiA9IGNodW5rTG9hZGluZ0dsb2JhbC5wdXNoLmJpbmQoY2h1bmtMb2FkaW5nR2xvYmFsKTtcbmNodW5rTG9hZGluZ0dsb2JhbC5wdXNoID0gaW5zdGFsbENodW5rO1xuXG4vLyBubyBITVJcblxuLy8gbm8gSE1SIG1hbmlmZXN0IiwiLy8gcnVuIHN0YXJ0dXBcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy54KCk7XG4iXSwibmFtZXMiOlsiZGVmZXJyZWQiLCJuZXh0Iiwib25tZXNzYWdlIiwiZXZ0IiwidGhpc0FyZyIsInRoaXMiLCJfYXJndW1lbnRzIiwiZ2VuZXJhdG9yIiwiZW1iZWRkaW5ncyIsImRhdGEiLCJvcHRpb25zIiwiZml0IiwicG9zdE1lc3NhZ2UiLCJQIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJ2YWx1ZSIsInN0ZXAiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwidW5kZWZpbmVkIiwiZXhwb3J0cyIsIm1vZHVsZSIsIl9fd2VicGFja19tb2R1bGVzX18iLCJjYWxsIiwibSIsIngiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiTyIsImNodW5rSWRzIiwiZm4iLCJwcmlvcml0eSIsIm5vdEZ1bGZpbGxlZCIsIkluZmluaXR5IiwiaSIsImxlbmd0aCIsImoiLCJPYmplY3QiLCJrZXlzIiwiZXZlcnkiLCJrZXkiLCJzcGxpY2UiLCJyIiwiZCIsImRlZmluaXRpb24iLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiZiIsImNodW5rSWQiLCJhbGwiLCJyZWR1Y2UiLCJwcm9taXNlcyIsInUiLCJnIiwiZ2xvYmFsVGhpcyIsIkZ1bmN0aW9uIiwid2luZG93Iiwib2JqIiwicHJvcCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJzY3JpcHRVcmwiLCJpbXBvcnRTY3JpcHRzIiwibG9jYXRpb24iLCJkb2N1bWVudCIsImN1cnJlbnRTY3JpcHQiLCJzcmMiLCJzY3JpcHRzIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJFcnJvciIsInJlcGxhY2UiLCJwIiwiaW5zdGFsbGVkQ2h1bmtzIiwiY2h1bmtMb2FkaW5nR2xvYmFsIiwic2VsZiIsInBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uIiwicHVzaCIsImJpbmQiLCJtb3JlTW9kdWxlcyIsInJ1bnRpbWUiLCJwb3AiXSwic291cmNlUm9vdCI6IiJ9
|
|
1
|
+
var eda;(()=>{"use strict";var e,r,t={7694:(e,r,t)=>{var o=t(4221);onmessage=function(e){return r=this,t=void 0,a=function*(){const r=new o.u(e.data.options).fit(e.data.data);postMessage({embeddings:r})},new((n=void 0)||(n=Promise))((function(e,o){function i(e){try{s(a.next(e))}catch(e){o(e)}}function c(e){try{s(a.throw(e))}catch(e){o(e)}}function s(r){var t;r.done?e(r.value):(t=r.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,c)}s((a=a.apply(r,t||[])).next())}));var r,t,n,a}}},o={};function n(e){var r=o[e];if(void 0!==r)return r.exports;var a=o[e]={exports:{}};return t[e].call(a.exports,a,a.exports,n),a.exports}n.m=t,n.x=()=>{var e=n.O(void 0,[972,221],(()=>n(7694)));return n.O(e)},e=[],n.O=(r,t,o,a)=>{if(!t){var i=1/0;for(p=0;p<e.length;p++){for(var[t,o,a]=e[p],c=!0,s=0;s<t.length;s++)(!1&a||i>=a)&&Object.keys(n.O).every((e=>n.O[e](t[s])))?t.splice(s--,1):(c=!1,a<i&&(i=a));if(c){e.splice(p--,1);var u=o();void 0!==u&&(r=u)}}return r}a=a||0;for(var p=e.length;p>0&&e[p-1][2]>a;p--)e[p]=e[p-1];e[p]=[t,o,a]},n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((r,t)=>(n.f[t](e,r),r)),[])),n.u=e=>e+".js",n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;n.g.importScripts&&(e=n.g.location+"");var r=n.g.document;if(!e&&r&&(r.currentScript&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var o=t.length-1;o>-1&&!e;)e=t[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=e})(),(()=>{var e={694:1};n.f.i=(r,t)=>{e[r]||importScripts(n.p+n.u(r))};var r=self.webpackChunkeda=self.webpackChunkeda||[],t=r.push.bind(r);r.push=r=>{var[o,a,i]=r;for(var c in a)n.o(a,c)&&(n.m[c]=a[c]);for(i&&i(n);o.length;)e[o.pop()]=1;t(r)}})(),r=n.x,n.x=()=>Promise.all([n.e(972),n.e(221)]).then(r);var a=n.x();eda=a})();
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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VixJQURBLElBQUlELEVBQUlxQyxFQUFRcEMsT0FBUyxFQUNsQkQsR0FBSyxJQUFNK0IsR0FBV0EsRUFBWU0sRUFBUXJDLEtBQUtvQyxHQUV4RCxDQUlELElBQUtMLEVBQVcsTUFBTSxJQUFJUSxNQUFNLHlEQUNoQ1IsRUFBWUEsRUFBVVMsUUFBUSxPQUFRLElBQUlBLFFBQVEsUUFBUyxJQUFJQSxRQUFRLFlBQWEsS0FDcEZ6RCxFQUFvQjBELEVBQUlWLEMsV0NkeEIsSUFBSVcsRUFBa0IsQ0FDckIsSUFBSyxHQWdCTjNELEVBQW9CZ0MsRUFBRWYsRUFBSSxDQUFDZ0IsRUFBU0csS0FFL0J1QixFQUFnQjFCLElBRWxCZ0IsY0FBY2pELEVBQW9CMEQsRUFBSTFELEVBQW9CcUMsRUFBRUosR0FFOUQsRUFHRCxJQUFJMkIsRUFBcUJDLEtBQXNCLGdCQUFJQSxLQUFzQixpQkFBSyxHQUMxRUMsRUFBNkJGLEVBQW1CRyxLQUFLQyxLQUFLSixHQUM5REEsRUFBbUJHLEtBdkJDakYsSUFDbkIsSUFBSzhCLEVBQVVxRCxFQUFhQyxHQUFXcEYsRUFDdkMsSUFBSSxJQUFJbUIsS0FBWWdFLEVBQ2hCakUsRUFBb0I0QixFQUFFcUMsRUFBYWhFLEtBQ3JDRCxFQUFvQlEsRUFBRVAsR0FBWWdFLEVBQVloRSxJQUloRCxJQURHaUUsR0FBU0EsRUFBUWxFLEdBQ2RZLEVBQVNNLFFBQ2R5QyxFQUFnQi9DLEVBQVN1RCxPQUFTLEVBQ25DTCxFQUEyQmhGLEVBQUssQyxLVm5CN0JSLEVBQU8wQixFQUFvQlMsRUFDL0JULEVBQW9CUyxFQUFJLElBQ2hCdEIsUUFBUStDLElBQUksQ0FDbEJsQyxFQUFvQlAsRUFBRSxLQUN0Qk8sRUFBb0JQLEVBQUUsT0FDcEJJLEtBQUt2QixHV0pULElBQUlvQyxFQUFzQlYsRUFBb0JTLEkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2NodW5rIGxvYWRlZCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL3N0YXJ0dXAgY2h1bmsgZGVwZW5kZW5jaWVzIiwid2VicGFjazovL2VkYS8uL3NyYy93b3JrZXJzL3VtYXAtd29ya2VyLnRzIiwid2VicGFjazovL2VkYS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZW5zdXJlIGNodW5rIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZ2V0IGphdmFzY3JpcHQgY2h1bmsgZmlsZW5hbWUiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9wdWJsaWNQYXRoIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3N0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZmVycmVkID0gW107XG5fX3dlYnBhY2tfcmVxdWlyZV9fLk8gPSAocmVzdWx0LCBjaHVua0lkcywgZm4sIHByaW9yaXR5KSA9PiB7XG5cdGlmKGNodW5rSWRzKSB7XG5cdFx0cHJpb3JpdHkgPSBwcmlvcml0eSB8fCAwO1xuXHRcdGZvcih2YXIgaSA9IGRlZmVycmVkLmxlbmd0aDsgaSA+IDAgJiYgZGVmZXJyZWRbaSAtIDFdWzJdID4gcHJpb3JpdHk7IGktLSkgZGVmZXJyZWRbaV0gPSBkZWZlcnJlZFtpIC0gMV07XG5cdFx0ZGVmZXJyZWRbaV0gPSBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV07XG5cdFx0cmV0dXJuO1xuXHR9XG5cdHZhciBub3RGdWxmaWxsZWQgPSBJbmZpbml0eTtcblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBkZWZlcnJlZC5sZW5ndGg7IGkrKykge1xuXHRcdHZhciBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV0gPSBkZWZlcnJlZFtpXTtcblx0XHR2YXIgZnVsZmlsbGVkID0gdHJ1ZTtcblx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGNodW5rSWRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRpZiAoKHByaW9yaXR5ICYgMSA9PT0gMCB8fCBub3RGdWxmaWxsZWQgPj0gcHJpb3JpdHkpICYmIE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uTykuZXZlcnkoKGtleSkgPT4gKF9fd2VicGFja19yZXF1aXJlX18uT1trZXldKGNodW5rSWRzW2pdKSkpKSB7XG5cdFx0XHRcdGNodW5rSWRzLnNwbGljZShqLS0sIDEpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZnVsZmlsbGVkID0gZmFsc2U7XG5cdFx0XHRcdGlmKHByaW9yaXR5IDwgbm90RnVsZmlsbGVkKSBub3RGdWxmaWxsZWQgPSBwcmlvcml0eTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYoZnVsZmlsbGVkKSB7XG5cdFx0XHRkZWZlcnJlZC5zcGxpY2UoaS0tLCAxKVxuXHRcdFx0dmFyIHIgPSBmbigpO1xuXHRcdFx0aWYgKHIgIT09IHVuZGVmaW5lZCkgcmVzdWx0ID0gcjtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn07IiwidmFyIG5leHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLng7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdHJldHVybiBQcm9taXNlLmFsbChbXG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5lKDk3MiksXG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5lKDIyMSlcblx0XSkudGhlbihuZXh0KTtcbn07IiwiLy8gV29ya2VyIGZvciB0aGUgbWV0aG9kIFVNQVBcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IHsgVU1BUCB9IGZyb20gJ3VtYXAtanMnO1xub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2dCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHVtYXAgPSBuZXcgVU1BUChldnQuZGF0YS5vcHRpb25zKTtcbiAgICAgICAgY29uc3QgZW1iZWRkaW5ncyA9IHVtYXAuZml0KGV2dC5kYXRhLmRhdGEpO1xuICAgICAgICBwb3N0TWVzc2FnZSh7ICdlbWJlZGRpbmdzJzogZW1iZWRkaW5ncyB9KTtcbiAgICB9KTtcbn07XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbl9fd2VicGFja19yZXF1aXJlX18ubSA9IF9fd2VicGFja19tb2R1bGVzX187XG5cbi8vIHRoZSBzdGFydHVwIGZ1bmN0aW9uXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuXHQvLyBUaGlzIGVudHJ5IG1vZHVsZSBkZXBlbmRzIG9uIG90aGVyIGxvYWRlZCBjaHVua3MgYW5kIGV4ZWN1dGlvbiBuZWVkIHRvIGJlIGRlbGF5ZWRcblx0dmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLk8odW5kZWZpbmVkLCBbOTcyLDIyMV0sICgpID0+IChfX3dlYnBhY2tfcmVxdWlyZV9fKDc2OTQpKSlcblx0X193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18uTyhfX3dlYnBhY2tfZXhwb3J0c19fKTtcblx0cmV0dXJuIF9fd2VicGFja19leHBvcnRzX187XG59O1xuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmYgPSB7fTtcbi8vIFRoaXMgZmlsZSBjb250YWlucyBvbmx5IHRoZSBlbnRyeSBjaHVuay5cbi8vIFRoZSBjaHVuayBsb2FkaW5nIGZ1bmN0aW9uIGZvciBhZGRpdGlvbmFsIGNodW5rc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5lID0gKGNodW5rSWQpID0+IHtcblx0cmV0dXJuIFByb21pc2UuYWxsKE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uZikucmVkdWNlKChwcm9taXNlcywga2V5KSA9PiB7XG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5mW2tleV0oY2h1bmtJZCwgcHJvbWlzZXMpO1xuXHRcdHJldHVybiBwcm9taXNlcztcblx0fSwgW10pKTtcbn07IiwiLy8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYXN5bmMgY2h1bmtzIGFuZCBzaWJsaW5nIGNodW5rcyBmb3IgdGhlIGVudHJ5cG9pbnRcbl9fd2VicGFja19yZXF1aXJlX18udSA9IChjaHVua0lkKSA9PiB7XG5cdC8vIHJldHVybiB1cmwgZm9yIGZpbGVuYW1lcyBiYXNlZCBvbiB0ZW1wbGF0ZVxuXHRyZXR1cm4gXCJcIiArIGNodW5rSWQgKyBcIi5qc1wiO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJ2YXIgc2NyaXB0VXJsO1xuaWYgKF9fd2VicGFja19yZXF1aXJlX18uZy5pbXBvcnRTY3JpcHRzKSBzY3JpcHRVcmwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcubG9jYXRpb24gKyBcIlwiO1xudmFyIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmRvY3VtZW50O1xuaWYgKCFzY3JpcHRVcmwgJiYgZG9jdW1lbnQpIHtcblx0aWYgKGRvY3VtZW50LmN1cnJlbnRTY3JpcHQpXG5cdFx0c2NyaXB0VXJsID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM7XG5cdGlmICghc2NyaXB0VXJsKSB7XG5cdFx0dmFyIHNjcmlwdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKTtcblx0XHRpZihzY3JpcHRzLmxlbmd0aCkge1xuXHRcdFx0dmFyIGkgPSBzY3JpcHRzLmxlbmd0aCAtIDE7XG5cdFx0XHR3aGlsZSAoaSA+IC0xICYmICFzY3JpcHRVcmwpIHNjcmlwdFVybCA9IHNjcmlwdHNbaS0tXS5zcmM7XG5cdFx0fVxuXHR9XG59XG4vLyBXaGVuIHN1cHBvcnRpbmcgYnJvd3NlcnMgd2hlcmUgYW4gYXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCB5b3UgbXVzdCBzcGVjaWZ5IGFuIG91dHB1dC5wdWJsaWNQYXRoIG1hbnVhbGx5IHZpYSBjb25maWd1cmF0aW9uXG4vLyBvciBwYXNzIGFuIGVtcHR5IHN0cmluZyAoXCJcIikgYW5kIHNldCB0aGUgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gdmFyaWFibGUgZnJvbSB5b3VyIGNvZGUgdG8gdXNlIHlvdXIgb3duIGxvZ2ljLlxuaWYgKCFzY3JpcHRVcmwpIHRocm93IG5ldyBFcnJvcihcIkF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyXCIpO1xuc2NyaXB0VXJsID0gc2NyaXB0VXJsLnJlcGxhY2UoLyMuKiQvLCBcIlwiKS5yZXBsYWNlKC9cXD8uKiQvLCBcIlwiKS5yZXBsYWNlKC9cXC9bXlxcL10rJC8sIFwiL1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18ucCA9IHNjcmlwdFVybDsiLCIvLyBubyBiYXNlVVJJXG5cbi8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgY2h1bmtzXG4vLyBcIjFcIiBtZWFucyBcImFscmVhZHkgbG9hZGVkXCJcbnZhciBpbnN0YWxsZWRDaHVua3MgPSB7XG5cdDY5NDogMVxufTtcblxuLy8gaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nXG52YXIgaW5zdGFsbENodW5rID0gKGRhdGEpID0+IHtcblx0dmFyIFtjaHVua0lkcywgbW9yZU1vZHVsZXMsIHJ1bnRpbWVdID0gZGF0YTtcblx0Zm9yKHZhciBtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhtb3JlTW9kdWxlcywgbW9kdWxlSWQpKSB7XG5cdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLm1bbW9kdWxlSWRdID0gbW9yZU1vZHVsZXNbbW9kdWxlSWRdO1xuXHRcdH1cblx0fVxuXHRpZihydW50aW1lKSBydW50aW1lKF9fd2VicGFja19yZXF1aXJlX18pO1xuXHR3aGlsZShjaHVua0lkcy5sZW5ndGgpXG5cdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRzLnBvcCgpXSA9IDE7XG5cdHBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uKGRhdGEpO1xufTtcbl9fd2VicGFja19yZXF1aXJlX18uZi5pID0gKGNodW5rSWQsIHByb21pc2VzKSA9PiB7XG5cdC8vIFwiMVwiIGlzIHRoZSBzaWduYWwgZm9yIFwiYWxyZWFkeSBsb2FkZWRcIlxuXHRpZighaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7XG5cdFx0aWYodHJ1ZSkgeyAvLyBhbGwgY2h1bmtzIGhhdmUgSlNcblx0XHRcdGltcG9ydFNjcmlwdHMoX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgX193ZWJwYWNrX3JlcXVpcmVfXy51KGNodW5rSWQpKTtcblx0XHR9XG5cdH1cbn07XG5cbnZhciBjaHVua0xvYWRpbmdHbG9iYWwgPSBzZWxmW1wid2VicGFja0NodW5rZWRhXCJdID0gc2VsZltcIndlYnBhY2tDaHVua2VkYVwiXSB8fCBbXTtcbnZhciBwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbiA9IGNodW5rTG9hZGluZ0dsb2JhbC5wdXNoLmJpbmQoY2h1bmtMb2FkaW5nR2xvYmFsKTtcbmNodW5rTG9hZGluZ0dsb2JhbC5wdXNoID0gaW5zdGFsbENodW5rO1xuXG4vLyBubyBITVJcblxuLy8gbm8gSE1SIG1hbmlmZXN0IiwiLy8gcnVuIHN0YXJ0dXBcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy54KCk7XG4iXSwibmFtZXMiOlsiZGVmZXJyZWQiLCJuZXh0Iiwib25tZXNzYWdlIiwiZXZ0IiwidGhpc0FyZyIsInRoaXMiLCJfYXJndW1lbnRzIiwiZ2VuZXJhdG9yIiwiZW1iZWRkaW5ncyIsImRhdGEiLCJvcHRpb25zIiwiZml0IiwicG9zdE1lc3NhZ2UiLCJQIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJ2YWx1ZSIsInN0ZXAiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwidW5kZWZpbmVkIiwiZXhwb3J0cyIsIm1vZHVsZSIsIl9fd2VicGFja19tb2R1bGVzX18iLCJjYWxsIiwibSIsIngiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiTyIsImNodW5rSWRzIiwiZm4iLCJwcmlvcml0eSIsIm5vdEZ1bGZpbGxlZCIsIkluZmluaXR5IiwiaSIsImxlbmd0aCIsImoiLCJPYmplY3QiLCJrZXlzIiwiZXZlcnkiLCJrZXkiLCJzcGxpY2UiLCJyIiwiZCIsImRlZmluaXRpb24iLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiZiIsImNodW5rSWQiLCJhbGwiLCJyZWR1Y2UiLCJwcm9taXNlcyIsInUiLCJnIiwiZ2xvYmFsVGhpcyIsIkZ1bmN0aW9uIiwid2luZG93Iiwib2JqIiwicHJvcCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJzY3JpcHRVcmwiLCJpbXBvcnRTY3JpcHRzIiwibG9jYXRpb24iLCJkb2N1bWVudCIsImN1cnJlbnRTY3JpcHQiLCJzcmMiLCJzY3JpcHRzIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJFcnJvciIsInJlcGxhY2UiLCJwIiwiaW5zdGFsbGVkQ2h1bmtzIiwiY2h1bmtMb2FkaW5nR2xvYmFsIiwic2VsZiIsInBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uIiwicHVzaCIsImJpbmQiLCJtb3JlTW9kdWxlcyIsInJ1bnRpbWUiLCJwb3AiXSwic291cmNlUm9vdCI6IiJ9
|