s3db.js 6.0.0 → 6.1.0

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.
@@ -1,31 +1 @@
1
- /* istanbul ignore file */
2
- import{customAlphabet as Lr,urlAlphabet as qi}from"nanoid";import{chunk as Hi,merge as kt,isString as $r,isEmpty as Ki,invert as Hc,uniq as Kc,cloneDeep as Rt,get as Wc,set as Vc,isFunction as Gc}from"lodash-es";import{PromisePool as he}from"@supercharge/promise-pool";import{S3Client as Yc,PutObjectCommand as Jc,GetObjectCommand as Xc,HeadObjectCommand as Qc,CopyObjectCommand as ef,DeleteObjectCommand as tf,DeleteObjectsCommand as Wi,ListObjectsV2Command as Vi}from"@aws-sdk/client-s3";import{createHash as Gi}from"crypto";import{flatten as Ur,unflatten as rf}from"flat";import nf from"fastest-validator";import{ReadableStream as af}from"node:stream/web";function Yi(e,t){for(var r=0,n=e.length-1;n>=0;n--){var i=e[n];i==="."?e.splice(n,1):i===".."?(e.splice(n,1),r++):r&&(e.splice(n,1),r--)}if(t)for(;r--;r)e.unshift("..");return e}var of=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,Br=function(e){return of.exec(e).slice(1)};function zr(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var n=r>=0?arguments[r]:"/";if(typeof n!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!n)continue;e=n+"/"+e,t=n.charAt(0)==="/"}return e=Yi(Zr(e.split("/"),function(i){return!!i}),!t).join("/"),(t?"/":"")+e||"."}function Ji(e){var t=Xi(e),r=df(e,-1)==="/";return e=Yi(Zr(e.split("/"),function(n){return!!n}),!t).join("/"),!e&&!t&&(e="."),e&&r&&(e+="/"),(t?"/":"")+e}function Xi(e){return e.charAt(0)==="/"}function me(){var e=Array.prototype.slice.call(arguments,0);return Ji(Zr(e,function(t,r){if(typeof t!="string")throw new TypeError("Arguments to path.join must be strings");return t}).join("/"))}function sf(e,t){e=zr(e).substr(1),t=zr(t).substr(1);function r(c){for(var l=0;l<c.length&&c[l]==="";l++);for(var h=c.length-1;h>=0&&c[h]==="";h--);return l>h?[]:c.slice(l,h-l+1)}for(var n=r(e.split("/")),i=r(t.split("/")),a=Math.min(n.length,i.length),o=a,s=0;s<a;s++)if(n[s]!==i[s]){o=s;break}for(var f=[],s=o;s<n.length;s++)f.push("..");return f=f.concat(i.slice(o)),f.join("/")}var cf="/",ff=":";function lf(e){var t=Br(e),r=t[0],n=t[1];return!r&&!n?".":(n&&(n=n.substr(0,n.length-1)),r+n)}function uf(e,t){var r=Br(e)[2];return t&&r.substr(-1*t.length)===t&&(r=r.substr(0,r.length-t.length)),r}function hf(e){return Br(e)[3]}var de={extname:hf,basename:uf,dirname:lf,sep:cf,delimiter:ff,relative:sf,join:me,isAbsolute:Xi,normalize:Ji,resolve:zr};function Zr(e,t){if(e.filter)return e.filter(t);for(var r=[],n=0;n<e.length;n++)t(e[n],n,e)&&r.push(e[n]);return r}var df="ab".substr(-1)==="b"?function(e,t,r){return e.substr(t,r)}:function(e,t,r){return t<0&&(t=e.length+t),e.substr(t,r)};const qr=Lr(qi,22),pf="ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz23456789",yf=Lr(pf,12);var Hr;function Ie(){}Ie.prototype=Object.create(null);function R(){R.init.call(this)}R.EventEmitter=R,R.usingDomains=!1,R.prototype.domain=void 0,R.prototype._events=void 0,R.prototype._maxListeners=void 0,R.defaultMaxListeners=10,R.init=function(){this.domain=null,R.usingDomains&&Hr.active&&!(this instanceof Hr.Domain)&&(this.domain=Hr.active),(!this._events||this._events===Object.getPrototypeOf(this)._events)&&(this._events=new Ie,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},R.prototype.setMaxListeners=function(t){if(typeof t!="number"||t<0||isNaN(t))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=t,this};function Qi(e){return e._maxListeners===void 0?R.defaultMaxListeners:e._maxListeners}R.prototype.getMaxListeners=function(){return Qi(this)};function gf(e,t,r){if(t)e.call(r);else for(var n=e.length,i=Ot(e,n),a=0;a<n;++a)i[a].call(r)}function vf(e,t,r,n){if(t)e.call(r,n);else for(var i=e.length,a=Ot(e,i),o=0;o<i;++o)a[o].call(r,n)}function wf(e,t,r,n,i){if(t)e.call(r,n,i);else for(var a=e.length,o=Ot(e,a),s=0;s<a;++s)o[s].call(r,n,i)}function bf(e,t,r,n,i,a){if(t)e.call(r,n,i,a);else for(var o=e.length,s=Ot(e,o),f=0;f<o;++f)s[f].call(r,n,i,a)}function _f(e,t,r,n){if(t)e.apply(r,n);else for(var i=e.length,a=Ot(e,i),o=0;o<i;++o)a[o].apply(r,n)}R.prototype.emit=function(t){var r,n,i,a,o,s,f,c=t==="error";if(s=this._events,s)c=c&&s.error==null;else if(!c)return!1;if(f=this.domain,c){if(r=arguments[1],f)r||(r=new Error('Uncaught, unspecified "error" event')),r.domainEmitter=this,r.domain=f,r.domainThrown=!1,f.emit("error",r);else{if(r instanceof Error)throw r;var l=new Error('Uncaught, unspecified "error" event. ('+r+")");throw l.context=r,l}return!1}if(n=s[t],!n)return!1;var h=typeof n=="function";switch(i=arguments.length,i){case 1:gf(n,h,this);break;case 2:vf(n,h,this,arguments[1]);break;case 3:wf(n,h,this,arguments[1],arguments[2]);break;case 4:bf(n,h,this,arguments[1],arguments[2],arguments[3]);break;default:for(a=new Array(i-1),o=1;o<i;o++)a[o-1]=arguments[o];_f(n,h,this,a)}return!0};function ea(e,t,r,n){var i,a,o;if(typeof r!="function")throw new TypeError('"listener" argument must be a function');if(a=e._events,a?(a.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),a=e._events),o=a[t]):(a=e._events=new Ie,e._eventsCount=0),!o)o=a[t]=r,++e._eventsCount;else if(typeof o=="function"?o=a[t]=n?[r,o]:[o,r]:n?o.unshift(r):o.push(r),!o.warned&&(i=Qi(e),i&&i>0&&o.length>i)){o.warned=!0;var s=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");s.name="MaxListenersExceededWarning",s.emitter=e,s.type=t,s.count=o.length,mf(s)}return e}function mf(e){typeof console.warn=="function"?console.warn(e):console.log(e)}R.prototype.addListener=function(t,r){return ea(this,t,r,!1)},R.prototype.on=R.prototype.addListener,R.prototype.prependListener=function(t,r){return ea(this,t,r,!0)};function ta(e,t,r){var n=!1;function i(){e.removeListener(t,i),n||(n=!0,r.apply(e,arguments))}return i.listener=r,i}R.prototype.once=function(t,r){if(typeof r!="function")throw new TypeError('"listener" argument must be a function');return this.on(t,ta(this,t,r)),this},R.prototype.prependOnceListener=function(t,r){if(typeof r!="function")throw new TypeError('"listener" argument must be a function');return this.prependListener(t,ta(this,t,r)),this},R.prototype.removeListener=function(t,r){var n,i,a,o,s;if(typeof r!="function")throw new TypeError('"listener" argument must be a function');if(i=this._events,!i)return this;if(n=i[t],!n)return this;if(n===r||n.listener&&n.listener===r)--this._eventsCount===0?this._events=new Ie:(delete i[t],i.removeListener&&this.emit("removeListener",t,n.listener||r));else if(typeof n!="function"){for(a=-1,o=n.length;o-- >0;)if(n[o]===r||n[o].listener&&n[o].listener===r){s=n[o].listener,a=o;break}if(a<0)return this;if(n.length===1){if(n[0]=void 0,--this._eventsCount===0)return this._events=new Ie,this;delete i[t]}else xf(n,a);i.removeListener&&this.emit("removeListener",t,s||r)}return this},R.prototype.off=function(e,t){return this.removeListener(e,t)},R.prototype.removeAllListeners=function(t){var r,n;if(n=this._events,!n)return this;if(!n.removeListener)return arguments.length===0?(this._events=new Ie,this._eventsCount=0):n[t]&&(--this._eventsCount===0?this._events=new Ie:delete n[t]),this;if(arguments.length===0){for(var i=Object.keys(n),a=0,o;a<i.length;++a)o=i[a],o!=="removeListener"&&this.removeAllListeners(o);return this.removeAllListeners("removeListener"),this._events=new Ie,this._eventsCount=0,this}if(r=n[t],typeof r=="function")this.removeListener(t,r);else if(r)do this.removeListener(t,r[r.length-1]);while(r[0]);return this},R.prototype.listeners=function(t){var r,n,i=this._events;return i?(r=i[t],r?typeof r=="function"?n=[r.listener||r]:n=Ef(r):n=[]):n=[],n},R.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):ra.call(e,t)},R.prototype.listenerCount=ra;function ra(e){var t=this._events;if(t){var r=t[e];if(typeof r=="function")return 1;if(r)return r.length}return 0}R.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};function xf(e,t){for(var r=t,n=r+1,i=e.length;n<i;r+=1,n+=1)e[r]=e[n];e.pop()}function Ot(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}function Ef(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}class na extends Error{constructor({verbose:t,bucket:r,message:n,...i}){t&&(n=n+`
3
-
4
- Verbose:
5
-
6
- ${JSON.stringify(i,null,2)}`),super(n),typeof Error.captureStackTrace=="function"?Error.captureStackTrace(this,this.constructor):this.stack=new Error(n).stack,super.name=this.constructor.name,this.name=this.constructor.name,this.bucket=r,this.thrownAt=new Date}toJson(){return{...this}}toString(){return`${this.name} | ${this.message}`}}class ne extends na{constructor(t,r={}){super({message:t,...r})}}class Sf extends ne{constructor(t,r={}){super(t,r),Object.assign(this,r)}}class Af extends ne{constructor(t,r={}){super(t,r),Object.assign(this,r)}}class kf extends ne{constructor(t,r={}){super(t,r),Object.assign(this,r)}}class Rf extends ne{constructor(t,r={}){super(t,r),Object.assign(this,r)}}class Of extends ne{constructor(t,r={}){super(t,r),Object.assign(this,r)}}class If extends ne{constructor({bucket:t,resourceName:r,id:n,...i}){super(`Resource not found: ${r}/${n} [bucket:${t}]`,{bucket:t,resourceName:r,id:n,...i})}}class ia extends ne{constructor({bucket:t,...r}){super(`Bucket does not exists [bucket:${t}]`,{bucket:t,...r})}}class Kr extends ne{constructor({bucket:t,key:r,...n}){super(`Key [${r}] does not exists [bucket:${t}/${r}]`,{bucket:t,key:r,...n})}}class aa extends Kr{}class oa extends ne{constructor({bucket:t,...r}){super(`Missing metadata for bucket [bucket:${t}]`,{bucket:t,...r})}}class rr extends ne{constructor({bucket:t,resourceName:r,attributes:n,validation:i}){super(`This item is not valid. Resource=${r} [bucket:${t}].
7
- ${JSON.stringify(i,null,2)}`,{bucket:t,resourceName:r,attributes:n,validation:i})}}class sa extends ne{}const ca={NotFound:aa,NoSuchKey:Kr,UnknownError:sa,NoSuchBucket:ia,MissingMetadata:oa,InvalidResourceItem:rr},fa="us-east-1",la="https://s3.us-east-1.amazonaws.com";class ua{constructor(t){let r;try{r=new URL(t)}catch{throw new Error("Invalid connection string: "+t)}this.region=fa,r.protocol==="s3:"?this.defineS3(r):this.defineMinio(r);for(const[n,i]of r.searchParams.entries())this[n]=i}defineS3(t){if(this.bucket=decodeURIComponent(t.hostname),this.accessKeyId=decodeURIComponent(t.username),this.secretAccessKey=decodeURIComponent(t.password),this.endpoint=la,["/","",null].includes(t.pathname))this.keyPrefix="";else{let[,...r]=t.pathname.split("/");this.keyPrefix=[...r||[]].join("/")}}defineMinio(t){if(this.forcePathStyle=!0,this.endpoint=t.origin,this.accessKeyId=decodeURIComponent(t.username),this.secretAccessKey=decodeURIComponent(t.password),["/","",null].includes(t.pathname))this.bucket="s3db",this.keyPrefix="";else{let[,r,...n]=t.pathname.split("/");this.bucket=decodeURIComponent(r),this.keyPrefix=[...n||[]].join("/")}}}class ha extends R{constructor({verbose:t=!1,id:r=null,AwsS3Client:n,connectionString:i,parallelism:a=10}){super(),this.verbose=t,this.id=r??qr(),this.parallelism=a,this.config=new ua(i),this.client=n||this.createClient()}createClient(){let t={region:this.config.region,endpoint:this.config.endpoint};return this.config.forcePathStyle&&(t.forcePathStyle=!0),this.config.accessKeyId&&(t.credentials={accessKeyId:this.config.accessKeyId,secretAccessKey:this.config.secretAccessKey}),new Yc(t)}async sendCommand(t){this.emit("command.request",t.constructor.name,t.input);const r=console.warn;try{console.warn=i=>{i.includes("Stream of unknown length")||r(i)}}catch(i){console.error(i)}const n=await this.client.send(t);this.emit("command.response",t.constructor.name,n,t.input);try{console.warn=r}catch(i){console.error(i)}return n}errorProxy(t,r){this.verbose&&(r.bucket=this.config.bucket,r.config=this.config,r.verbose=this.verbose),t.data=r;const n=ca[t.name];return n?new n(r):t}async putObject({key:t,metadata:r,contentType:n,body:i,contentEncoding:a}){const o={Bucket:this.config.bucket,Key:this.config.keyPrefix?de.join(this.config.keyPrefix,t):t,Metadata:{...r},Body:i||Buffer.alloc(0)};n!==void 0&&(o.ContentType=n),a!==void 0&&(o.ContentEncoding=a);try{const s=await this.sendCommand(new Jc(o));return this.emit("putObject",s,o),s}catch(s){throw this.errorProxy(s,{key:t,command:o})}}async getObject(t){const r={Bucket:this.config.bucket,Key:de.join(this.config.keyPrefix,t)};try{const n=await this.sendCommand(new Xc(r));return this.emit("getObject",n,r),n}catch(n){throw this.errorProxy(n,{key:t,command:r})}}async headObject(t){const r={Bucket:this.config.bucket,Key:this.config.keyPrefix?de.join(this.config.keyPrefix,t):t};try{const n=await this.sendCommand(new Qc(r));return this.emit("headObject",n,r),n}catch(n){throw this.errorProxy(n,{key:t,command:r})}}async copyObject({from:t,to:r}){const n={Bucket:this.config.bucket,Key:this.config.keyPrefix?de.join(this.config.keyPrefix,r):r,CopySource:de.join(this.config.bucket,this.config.keyPrefix?de.join(this.config.keyPrefix,t):t)};try{const i=await this.client.send(new ef(n));return this.emit("copyObject",i,n),i}catch(i){throw this.errorProxy(i,{from:t,to:r,command:n})}}async exists(t){try{return await this.headObject(t),!0}catch(r){if(r.name==="NoSuchKey")return!1;if(r.name==="NotFound")return!1;throw r}}async deleteObject(t){const r={Bucket:this.config.bucket,Key:this.config.keyPrefix?de.join(this.config.keyPrefix,t):t};try{const n=await this.sendCommand(new tf(r));return this.emit("deleteObject",n,r),n}catch(n){throw this.errorProxy(n,{key:t,command:r})}}async deleteObjects(t){const r=Hi(t,1e3),{results:n,errors:i}=await he.for(r).withConcurrency(this.parallelism).process(async o=>{const s={Bucket:this.config.bucket,Delete:{Objects:o.map(f=>({Key:this.config.keyPrefix?de.join(this.config.keyPrefix,f):f}))}};try{return await this.sendCommand(new Wi(s))}catch(f){throw this.errorProxy(f,{keys:o,command:s})}}),a={deleted:n,notFound:i};return this.emit("deleteObjects",a,t),a}async deleteAll({prefix:t}={}){let r,n=0;do{const i=new Vi({Bucket:this.config.bucket,Prefix:this.config.keyPrefix?de.join(this.config.keyPrefix,t):t,ContinuationToken:r}),a=await this.client.send(i);if(a.Contents&&a.Contents.length>0){const o=new Wi({Bucket:this.config.bucket,Delete:{Objects:a.Contents.map(c=>({Key:c.Key}))}}),s=await this.client.send(o),f=s.Deleted?s.Deleted.length:0;n+=f,this.emit("deleteAll",{prefix:t,batch:f,total:n})}r=a.IsTruncated?a.NextContinuationToken:void 0}while(r);return this.emit("deleteAllComplete",{prefix:t,totalDeleted:n}),n}async moveObject({from:t,to:r}){try{return await this.copyObject({from:t,to:r}),await this.deleteObject(t),!0}catch(n){throw this.errorProxy(n,{from:t,to:r,command:options})}}async listObjects({prefix:t,maxKeys:r=1e3,continuationToken:n}={}){const i={Bucket:this.config.bucket,MaxKeys:r,ContinuationToken:n,Prefix:this.config.keyPrefix?de.join(this.config.keyPrefix,t||""):t||""};try{const a=await this.sendCommand(new Vi(i));return this.emit("listObjects",a,i),a}catch(a){throw this.errorProxy(a,{command:i})}}async count({prefix:t}={}){let r=0,n=!0,i;for(;n;){const a={prefix:t,continuationToken:i},o=await this.listObjects(a);r+=o.KeyCount||0,n=o.IsTruncated||!1,i=o.NextContinuationToken}return this.emit("count",r,{prefix:t}),r}async getAllKeys({prefix:t}={}){let r=[],n=!0,i;for(;n;){const a={prefix:t,continuationToken:i},o=await this.listObjects(a);o.Contents&&(r=r.concat(o.Contents.map(s=>s.Key))),n=o.IsTruncated||!1,i=o.NextContinuationToken}return this.config.keyPrefix&&(r=r.map(a=>a.replace(this.config.keyPrefix,"")).map(a=>a.startsWith("/")?a.replace("/",""):a)),this.emit("getAllKeys",r,{prefix:t}),r}async getContinuationTokenAfterOffset(t={}){const{prefix:r,offset:n=1e3}=t;if(n===0)return null;let i=!0,a,o=0;for(;i;){let s=n<1e3?n:n-o>1e3?1e3:n-o;const f={prefix:r,maxKeys:s,continuationToken:a},c=await this.listObjects(f);if(c.Contents&&(o+=c.Contents.length),i=c.IsTruncated||!1,a=c.NextContinuationToken,o>=n)break}return this.emit("getContinuationTokenAfterOffset",a||null,t),a||null}async getKeysPage(t={}){const{prefix:r,offset:n=0,amount:i=100}=t;let a=[],o=!0,s;for(n>0&&(s=await this.getContinuationTokenAfterOffset({prefix:r,offset:n}));o;){const f={prefix:r,continuationToken:s},c=await this.listObjects(f);if(c.Contents&&(a=a.concat(c.Contents.map(l=>l.Key))),o=c.IsTruncated||!1,s=c.NextContinuationToken,a.length>i){a=a.splice(0,i);break}}return this.config.keyPrefix&&(a=a.map(f=>f.replace(this.config.keyPrefix,"")).map(f=>f.startsWith("/")?f.replace("/",""):f)),this.emit("getKeysPage",a,t),a}async moveAllObjects({prefixFrom:t,prefixTo:r}){const n=await this.getAllKeys({prefix:t}),{results:i,errors:a}=await he.for(n).withConcurrency(this.parallelism).process(async o=>{const s=o.replace(t,r);try{return await this.moveObject({from:o,to:s}),s}catch(f){throw this.errorProxy(f,{from:o,to:s})}});if(this.emit("moveAllObjects",{results:i,errors:a},{prefixFrom:t,prefixTo:r}),a.length>0)throw new Error("Some objects could not be moved");return i}}async function nr(){let e;if(typeof process<"u")try{const{webcrypto:t}=await import("crypto");e=t}catch{throw new Error("Crypto API not available")}else typeof window<"u"&&(e=window.crypto);if(!e)throw new Error("Could not load any crypto library");return e}async function da(e){const t=await nr(),n=new TextEncoder().encode(e),i=await t.subtle.digest("SHA-256",n);return Array.from(new Uint8Array(i)).map(s=>s.toString(16).padStart(2,"0")).join("")}async function Wr(e,t){const r=await nr(),n=r.getRandomValues(new Uint8Array(16)),i=await ya(t,n),a=r.getRandomValues(new Uint8Array(12)),s=new TextEncoder().encode(e),f=await r.subtle.encrypt({name:"AES-GCM",iv:a},i,s),c=new Uint8Array(n.length+a.length+f.byteLength);return c.set(n),c.set(a,n.length),c.set(new Uint8Array(f),n.length+a.length),Tf(c)}async function pa(e,t){const r=await nr(),n=Pf(e),i=n.slice(0,16),a=n.slice(16,28),o=n.slice(28),s=await ya(t,i),f=await r.subtle.decrypt({name:"AES-GCM",iv:a},s,o);return new TextDecoder().decode(f)}async function ya(e,t){const r=await nr(),i=new TextEncoder().encode(e),a=await r.subtle.importKey("raw",i,{name:"PBKDF2"},!1,["deriveKey"]);return await r.subtle.deriveKey({name:"PBKDF2",salt:t,iterations:1e5,hash:"SHA-256"},a,{name:"AES-GCM",length:256},!0,["encrypt","decrypt"])}function Tf(e){if(typeof process<"u")return Buffer.from(e).toString("base64");{const t=String.fromCharCode.apply(null,new Uint8Array(e));return window.btoa(t)}}function Pf(e){if(typeof process<"u")return new Uint8Array(Buffer.from(e,"base64"));{const t=window.atob(e),r=t.length,n=new Uint8Array(r);for(let i=0;i<r;i++)n[i]=t.charCodeAt(i);return n}}function jf(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var ir={},Vr,ga;function Ff(){if(ga)return Vr;ga=1;var e,t,r={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:`
8
- `,r:"\r",t:" "},n;function i(u){throw{name:"SyntaxError",message:u,at:e,text:n}}function a(u){return u&&u!==t&&i("Expected '"+u+"' instead of '"+t+"'"),t=n.charAt(e),e+=1,t}function o(){var u,p="";for(t==="-"&&(p="-",a("-"));t>="0"&&t<="9";)p+=t,a();if(t===".")for(p+=".";a()&&t>="0"&&t<="9";)p+=t;if(t==="e"||t==="E")for(p+=t,a(),(t==="-"||t==="+")&&(p+=t,a());t>="0"&&t<="9";)p+=t,a();return u=Number(p),isFinite(u)||i("Bad number"),u}function s(){var u,p,y="",w;if(t==='"')for(;a();){if(t==='"')return a(),y;if(t==="\\")if(a(),t==="u"){for(w=0,p=0;p<4&&(u=parseInt(a(),16),!!isFinite(u));p+=1)w=w*16+u;y+=String.fromCharCode(w)}else if(typeof r[t]=="string")y+=r[t];else break;else y+=t}i("Bad string")}function f(){for(;t&&t<=" ";)a()}function c(){switch(t){case"t":return a("t"),a("r"),a("u"),a("e"),!0;case"f":return a("f"),a("a"),a("l"),a("s"),a("e"),!1;case"n":return a("n"),a("u"),a("l"),a("l"),null;default:i("Unexpected '"+t+"'")}}function l(){var u=[];if(t==="["){if(a("["),f(),t==="]")return a("]"),u;for(;t;){if(u.push(d()),f(),t==="]")return a("]"),u;a(","),f()}}i("Bad array")}function h(){var u,p={};if(t==="{"){if(a("{"),f(),t==="}")return a("}"),p;for(;t;){if(u=s(),f(),a(":"),Object.prototype.hasOwnProperty.call(p,u)&&i('Duplicate key "'+u+'"'),p[u]=d(),f(),t==="}")return a("}"),p;a(","),f()}}i("Bad object")}function d(){switch(f(),t){case"{":return h();case"[":return l();case'"':return s();case"-":return o();default:return t>="0"&&t<="9"?o():c()}}return Vr=function(u,p){var y;return n=u,e=0,t=" ",y=d(),f(),t&&i("Syntax error"),typeof p=="function"?function w(b,m){var x,v,S=b[m];if(S&&typeof S=="object")for(x in d)Object.prototype.hasOwnProperty.call(S,x)&&(v=w(S,x),typeof v>"u"?delete S[x]:S[x]=v);return p.call(b,m,S)}({"":y},""):y},Vr}var Gr,va;function Cf(){if(va)return Gr;va=1;var e=/[\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,t,r,n={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},i;function a(s){return e.lastIndex=0,e.test(s)?'"'+s.replace(e,function(f){var c=n[f];return typeof c=="string"?c:"\\u"+("0000"+f.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+s+'"'}function o(s,f){var c,l,h,d,u=t,p,y=f[s];switch(y&&typeof y=="object"&&typeof y.toJSON=="function"&&(y=y.toJSON(s)),typeof i=="function"&&(y=i.call(f,s,y)),typeof y){case"string":return a(y);case"number":return isFinite(y)?String(y):"null";case"boolean":case"null":return String(y);case"object":if(!y)return"null";if(t+=r,p=[],Object.prototype.toString.apply(y)==="[object Array]"){for(d=y.length,c=0;c<d;c+=1)p[c]=o(c,y)||"null";return h=p.length===0?"[]":t?`[
9
- `+t+p.join(`,
10
- `+t)+`
11
- `+u+"]":"["+p.join(",")+"]",t=u,h}if(i&&typeof i=="object")for(d=i.length,c=0;c<d;c+=1)l=i[c],typeof l=="string"&&(h=o(l,y),h&&p.push(a(l)+(t?": ":":")+h));else for(l in y)Object.prototype.hasOwnProperty.call(y,l)&&(h=o(l,y),h&&p.push(a(l)+(t?": ":":")+h));return h=p.length===0?"{}":t?`{
12
- `+t+p.join(`,
13
- `+t)+`
14
- `+u+"}":"{"+p.join(",")+"}",t=u,h}}return Gr=function(s,f,c){var l;if(t="",r="",typeof c=="number")for(l=0;l<c;l+=1)r+=" ";else typeof c=="string"&&(r=c);if(i=f,f&&typeof f!="function"&&(typeof f!="object"||typeof f.length!="number"))throw new Error("JSON.stringify");return o("",{"":s})},Gr}var wa;function Df(){return wa||(wa=1,ir.parse=Ff(),ir.stringify=Cf()),ir}var Yr,ba;function Mf(){if(ba)return Yr;ba=1;var e={}.toString;return Yr=Array.isArray||function(t){return e.call(t)=="[object Array]"},Yr}var Jr,_a;function ma(){if(_a)return Jr;_a=1;var e=Object.prototype.toString;return Jr=function(r){var n=e.call(r),i=n==="[object Arguments]";return i||(i=n!=="[object Array]"&&r!==null&&typeof r=="object"&&typeof r.length=="number"&&r.length>=0&&e.call(r.callee)==="[object Function]"),i},Jr}var Xr,xa;function Nf(){if(xa)return Xr;xa=1;var e;if(!Object.keys){var t=Object.prototype.hasOwnProperty,r=Object.prototype.toString,n=ma(),i=Object.prototype.propertyIsEnumerable,a=!i.call({toString:null},"toString"),o=i.call(function(){},"prototype"),s=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],f=function(d){var u=d.constructor;return u&&u.prototype===d},c={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},l=function(){if(typeof window>"u")return!1;for(var d in window)try{if(!c["$"+d]&&t.call(window,d)&&window[d]!==null&&typeof window[d]=="object")try{f(window[d])}catch{return!0}}catch{return!0}return!1}(),h=function(d){if(typeof window>"u"||!l)return f(d);try{return f(d)}catch{return!1}};e=function(u){var p=u!==null&&typeof u=="object",y=r.call(u)==="[object Function]",w=n(u),b=p&&r.call(u)==="[object String]",m=[];if(!p&&!y&&!w)throw new TypeError("Object.keys called on a non-object");var x=o&&y;if(b&&u.length>0&&!t.call(u,0))for(var v=0;v<u.length;++v)m.push(String(v));if(w&&u.length>0)for(var S=0;S<u.length;++S)m.push(String(S));else for(var O in u)!(x&&O==="prototype")&&t.call(u,O)&&m.push(String(O));if(a)for(var _=h(u),A=0;A<s.length;++A)!(_&&s[A]==="constructor")&&t.call(u,s[A])&&m.push(s[A]);return m}}return Xr=e,Xr}var Qr,Ea;function Lf(){if(Ea)return Qr;Ea=1;var e=Array.prototype.slice,t=ma(),r=Object.keys,n=r?function(o){return r(o)}:Nf(),i=Object.keys;return n.shim=function(){if(Object.keys){var o=function(){var s=Object.keys(arguments);return s&&s.length===arguments.length}(1,2);o||(Object.keys=function(f){return t(f)?i(e.call(f)):i(f)})}else Object.keys=n;return Object.keys||n},Qr=n,Qr}var en={exports:{}},tn,Sa;function Aa(){return Sa||(Sa=1,tn=Object),tn}var rn,ka;function $f(){return ka||(ka=1,rn=Error),rn}var nn,Ra;function Uf(){return Ra||(Ra=1,nn=EvalError),nn}var an,Oa;function Bf(){return Oa||(Oa=1,an=RangeError),an}var on,Ia;function zf(){return Ia||(Ia=1,on=ReferenceError),on}var sn,Ta;function Pa(){return Ta||(Ta=1,sn=SyntaxError),sn}var cn,ja;function ar(){return ja||(ja=1,cn=TypeError),cn}var fn,Fa;function Zf(){return Fa||(Fa=1,fn=URIError),fn}var ln,Ca;function qf(){return Ca||(Ca=1,ln=Math.abs),ln}var un,Da;function Hf(){return Da||(Da=1,un=Math.floor),un}var hn,Ma;function Kf(){return Ma||(Ma=1,hn=Math.max),hn}var dn,Na;function Wf(){return Na||(Na=1,dn=Math.min),dn}var pn,La;function Vf(){return La||(La=1,pn=Math.pow),pn}var yn,$a;function Gf(){return $a||($a=1,yn=Math.round),yn}var gn,Ua;function Yf(){return Ua||(Ua=1,gn=Number.isNaN||function(t){return t!==t}),gn}var vn,Ba;function Jf(){if(Ba)return vn;Ba=1;var e=Yf();return vn=function(r){return e(r)||r===0?r:r<0?-1:1},vn}var wn,za;function Xf(){return za||(za=1,wn=Object.getOwnPropertyDescriptor),wn}var bn,Za;function or(){if(Za)return bn;Za=1;var e=Xf();if(e)try{e([],"length")}catch{e=null}return bn=e,bn}var _n,qa;function sr(){if(qa)return _n;qa=1;var e=Object.defineProperty||!1;if(e)try{e({},"a",{value:1})}catch{e=!1}return _n=e,_n}var mn,Ha;function Qf(){return Ha||(Ha=1,mn=function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var t={},r=Symbol("test"),n=Object(r);if(typeof r=="string"||Object.prototype.toString.call(r)!=="[object Symbol]"||Object.prototype.toString.call(n)!=="[object Symbol]")return!1;var i=42;t[r]=i;for(var a in t)return!1;if(typeof Object.keys=="function"&&Object.keys(t).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(t).length!==0)return!1;var o=Object.getOwnPropertySymbols(t);if(o.length!==1||o[0]!==r||!Object.prototype.propertyIsEnumerable.call(t,r))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var s=Object.getOwnPropertyDescriptor(t,r);if(s.value!==i||s.enumerable!==!0)return!1}return!0}),mn}var xn,Ka;function el(){if(Ka)return xn;Ka=1;var e=typeof Symbol<"u"&&Symbol,t=Qf();return xn=function(){return typeof e!="function"||typeof Symbol!="function"||typeof e("foo")!="symbol"||typeof Symbol("bar")!="symbol"?!1:t()},xn}var En,Wa;function Va(){return Wa||(Wa=1,En=typeof Reflect<"u"&&Reflect.getPrototypeOf||null),En}var Sn,Ga;function Ya(){if(Ga)return Sn;Ga=1;var e=Aa();return Sn=e.getPrototypeOf||null,Sn}var An,Ja;function tl(){if(Ja)return An;Ja=1;var e="Function.prototype.bind called on incompatible ",t=Object.prototype.toString,r=Math.max,n="[object Function]",i=function(f,c){for(var l=[],h=0;h<f.length;h+=1)l[h]=f[h];for(var d=0;d<c.length;d+=1)l[d+f.length]=c[d];return l},a=function(f,c){for(var l=[],h=c,d=0;h<f.length;h+=1,d+=1)l[d]=f[h];return l},o=function(s,f){for(var c="",l=0;l<s.length;l+=1)c+=s[l],l+1<s.length&&(c+=f);return c};return An=function(f){var c=this;if(typeof c!="function"||t.apply(c)!==n)throw new TypeError(e+c);for(var l=a(arguments,1),h,d=function(){if(this instanceof h){var b=c.apply(this,i(l,arguments));return Object(b)===b?b:this}return c.apply(f,i(l,arguments))},u=r(0,c.length-l.length),p=[],y=0;y<u;y++)p[y]="$"+y;if(h=Function("binder","return function ("+o(p,",")+"){ return binder.apply(this,arguments); }")(d),c.prototype){var w=function(){};w.prototype=c.prototype,h.prototype=new w,w.prototype=null}return h},An}var kn,Xa;function It(){if(Xa)return kn;Xa=1;var e=tl();return kn=Function.prototype.bind||e,kn}var Rn,Qa;function On(){return Qa||(Qa=1,Rn=Function.prototype.call),Rn}var In,eo;function Tn(){return eo||(eo=1,In=Function.prototype.apply),In}var Pn,to;function rl(){return to||(to=1,Pn=typeof Reflect<"u"&&Reflect&&Reflect.apply),Pn}var jn,ro;function no(){if(ro)return jn;ro=1;var e=It(),t=Tn(),r=On(),n=rl();return jn=n||e.call(r,t),jn}var Fn,io;function Cn(){if(io)return Fn;io=1;var e=It(),t=ar(),r=On(),n=no();return Fn=function(a){if(a.length<1||typeof a[0]!="function")throw new t("a function is required");return n(e,r,a)},Fn}var Dn,ao;function nl(){if(ao)return Dn;ao=1;var e=Cn(),t=or(),r;try{r=[].__proto__===Array.prototype}catch(o){if(!o||typeof o!="object"||!("code"in o)||o.code!=="ERR_PROTO_ACCESS")throw o}var n=!!r&&t&&t(Object.prototype,"__proto__"),i=Object,a=i.getPrototypeOf;return Dn=n&&typeof n.get=="function"?e([n.get]):typeof a=="function"?function(s){return a(s==null?s:i(s))}:!1,Dn}var Mn,oo;function il(){if(oo)return Mn;oo=1;var e=Va(),t=Ya(),r=nl();return Mn=e?function(i){return e(i)}:t?function(i){if(!i||typeof i!="object"&&typeof i!="function")throw new TypeError("getProto: not an object");return t(i)}:r?function(i){return r(i)}:null,Mn}var Nn,so;function al(){if(so)return Nn;so=1;var e=Function.prototype.call,t=Object.prototype.hasOwnProperty,r=It();return Nn=r.call(e,t),Nn}var Ln,co;function fo(){if(co)return Ln;co=1;var e,t=Aa(),r=$f(),n=Uf(),i=Bf(),a=zf(),o=Pa(),s=ar(),f=Zf(),c=qf(),l=Hf(),h=Kf(),d=Wf(),u=Vf(),p=Gf(),y=Jf(),w=Function,b=function(le){try{return w('"use strict"; return ('+le+").constructor;")()}catch{}},m=or(),x=sr(),v=function(){throw new s},S=m?function(){try{return arguments.callee,v}catch{try{return m(arguments,"callee").get}catch{return v}}}():v,O=el()(),_=il(),A=Ya(),I=Va(),k=Tn(),F=On(),Z={},V=typeof Uint8Array>"u"||!_?e:_(Uint8Array),re={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?e:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?e:ArrayBuffer,"%ArrayIteratorPrototype%":O&&_?_([][Symbol.iterator]()):e,"%AsyncFromSyncIteratorPrototype%":e,"%AsyncFunction%":Z,"%AsyncGenerator%":Z,"%AsyncGeneratorFunction%":Z,"%AsyncIteratorPrototype%":Z,"%Atomics%":typeof Atomics>"u"?e:Atomics,"%BigInt%":typeof BigInt>"u"?e:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?e:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?e:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?e:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":r,"%eval%":eval,"%EvalError%":n,"%Float16Array%":typeof Float16Array>"u"?e:Float16Array,"%Float32Array%":typeof Float32Array>"u"?e:Float32Array,"%Float64Array%":typeof Float64Array>"u"?e:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?e:FinalizationRegistry,"%Function%":w,"%GeneratorFunction%":Z,"%Int8Array%":typeof Int8Array>"u"?e:Int8Array,"%Int16Array%":typeof Int16Array>"u"?e:Int16Array,"%Int32Array%":typeof Int32Array>"u"?e:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":O&&_?_(_([][Symbol.iterator]())):e,"%JSON%":typeof JSON=="object"?JSON:e,"%Map%":typeof Map>"u"?e:Map,"%MapIteratorPrototype%":typeof Map>"u"||!O||!_?e:_(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":t,"%Object.getOwnPropertyDescriptor%":m,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?e:Promise,"%Proxy%":typeof Proxy>"u"?e:Proxy,"%RangeError%":i,"%ReferenceError%":a,"%Reflect%":typeof Reflect>"u"?e:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?e:Set,"%SetIteratorPrototype%":typeof Set>"u"||!O||!_?e:_(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?e:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":O&&_?_(""[Symbol.iterator]()):e,"%Symbol%":O?Symbol:e,"%SyntaxError%":o,"%ThrowTypeError%":S,"%TypedArray%":V,"%TypeError%":s,"%Uint8Array%":typeof Uint8Array>"u"?e:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?e:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?e:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?e:Uint32Array,"%URIError%":f,"%WeakMap%":typeof WeakMap>"u"?e:WeakMap,"%WeakRef%":typeof WeakRef>"u"?e:WeakRef,"%WeakSet%":typeof WeakSet>"u"?e:WeakSet,"%Function.prototype.call%":F,"%Function.prototype.apply%":k,"%Object.defineProperty%":x,"%Object.getPrototypeOf%":A,"%Math.abs%":c,"%Math.floor%":l,"%Math.max%":h,"%Math.min%":d,"%Math.pow%":u,"%Math.round%":p,"%Math.sign%":y,"%Reflect.getPrototypeOf%":I};if(_)try{null.error}catch(le){var Ze=_(_(le));re["%Error.prototype%"]=Ze}var Y=function le(M){var K;if(M==="%AsyncFunction%")K=b("async function () {}");else if(M==="%GeneratorFunction%")K=b("function* () {}");else if(M==="%AsyncGeneratorFunction%")K=b("async function* () {}");else if(M==="%AsyncGenerator%"){var L=le("%AsyncGeneratorFunction%");L&&(K=L.prototype)}else if(M==="%AsyncIteratorPrototype%"){var G=le("%AsyncGenerator%");G&&_&&(K=_(G.prototype))}return re[M]=K,K},fe={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},qe=It(),He=al(),St=qe.call(F,Array.prototype.concat),$c=qe.call(k,Array.prototype.splice),Zi=qe.call(F,String.prototype.replace),Yt=qe.call(F,String.prototype.slice),Uc=qe.call(F,RegExp.prototype.exec),Bc=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,zc=/\\(\\)?/g,Zc=function(M){var K=Yt(M,0,1),L=Yt(M,-1);if(K==="%"&&L!=="%")throw new o("invalid intrinsic syntax, expected closing `%`");if(L==="%"&&K!=="%")throw new o("invalid intrinsic syntax, expected opening `%`");var G=[];return Zi(M,Bc,function(ue,ut,J,Jt){G[G.length]=J?Zi(Jt,zc,"$1"):ut||ue}),G},qc=function(M,K){var L=M,G;if(He(fe,L)&&(G=fe[L],L="%"+G[0]+"%"),He(re,L)){var ue=re[L];if(ue===Z&&(ue=Y(L)),typeof ue>"u"&&!K)throw new s("intrinsic "+M+" exists, but is not available. Please file an issue!");return{alias:G,name:L,value:ue}}throw new o("intrinsic "+M+" does not exist!")};return Ln=function(M,K){if(typeof M!="string"||M.length===0)throw new s("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof K!="boolean")throw new s('"allowMissing" argument must be a boolean');if(Uc(/^%?[^%]*%?$/,M)===null)throw new o("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var L=Zc(M),G=L.length>0?L[0]:"",ue=qc("%"+G+"%",K),ut=ue.name,J=ue.value,Jt=!1,Nr=ue.alias;Nr&&(G=Nr[0],$c(L,St([0,1],Nr)));for(var Xt=1,At=!0;Xt<L.length;Xt+=1){var _e=L[Xt],Qt=Yt(_e,0,1),er=Yt(_e,-1);if((Qt==='"'||Qt==="'"||Qt==="`"||er==='"'||er==="'"||er==="`")&&Qt!==er)throw new o("property names with quotes must have matching quotes");if((_e==="constructor"||!At)&&(Jt=!0),G+="."+_e,ut="%"+G+"%",He(re,ut))J=re[ut];else if(J!=null){if(!(_e in J)){if(!K)throw new s("base intrinsic for "+M+" exists, but the property is not available.");return}if(m&&Xt+1>=L.length){var tr=m(J,_e);At=!!tr,At&&"get"in tr&&!("originalValue"in tr.get)?J=tr.get:J=J[_e]}else At=He(J,_e),J=J[_e];At&&!Jt&&(re[ut]=J)}}return J},Ln}var $n,lo;function ol(){if(lo)return $n;lo=1;var e=sr(),t=Pa(),r=ar(),n=or();return $n=function(a,o,s){if(!a||typeof a!="object"&&typeof a!="function")throw new r("`obj` must be an object or a function`");if(typeof o!="string"&&typeof o!="symbol")throw new r("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new r("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new r("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new r("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new r("`loose`, if provided, must be a boolean");var f=arguments.length>3?arguments[3]:null,c=arguments.length>4?arguments[4]:null,l=arguments.length>5?arguments[5]:null,h=arguments.length>6?arguments[6]:!1,d=!!n&&n(a,o);if(e)e(a,o,{configurable:l===null&&d?d.configurable:!l,enumerable:f===null&&d?d.enumerable:!f,value:s,writable:c===null&&d?d.writable:!c});else if(h||!f&&!c&&!l)a[o]=s;else throw new t("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")},$n}var Un,uo;function sl(){if(uo)return Un;uo=1;var e=sr(),t=function(){return!!e};return t.hasArrayLengthDefineBug=function(){if(!e)return null;try{return e([],"length",{value:1}).length!==1}catch{return!0}},Un=t,Un}var Bn,ho;function cl(){if(ho)return Bn;ho=1;var e=fo(),t=ol(),r=sl()(),n=or(),i=ar(),a=e("%Math.floor%");return Bn=function(s,f){if(typeof s!="function")throw new i("`fn` is not a function");if(typeof f!="number"||f<0||f>4294967295||a(f)!==f)throw new i("`length` must be a positive 32-bit integer");var c=arguments.length>2&&!!arguments[2],l=!0,h=!0;if("length"in s&&n){var d=n(s,"length");d&&!d.configurable&&(l=!1),d&&!d.writable&&(h=!1)}return(l||h||!c)&&(r?t(s,"length",f,!0,!0):t(s,"length",f)),s},Bn}var zn,po;function fl(){if(po)return zn;po=1;var e=It(),t=Tn(),r=no();return zn=function(){return r(e,t,arguments)},zn}var yo;function ll(){return yo||(yo=1,function(e){var t=cl(),r=sr(),n=Cn(),i=fl();e.exports=function(o){var s=n(arguments),f=o.length-(arguments.length-1);return t(s,1+(f>0?f:0),!0)},r?r(e.exports,"apply",{value:i}):e.exports.apply=i}(en)),en.exports}var Zn,go;function ul(){if(go)return Zn;go=1;var e=fo(),t=Cn(),r=t([e("%String.prototype.indexOf%")]);return Zn=function(i,a){var o=e(i,!!a);return typeof o=="function"&&r(i,".prototype.")>-1?t([o]):o},Zn}var qn,vo;function hl(){if(vo)return qn;vo=1;var e=(typeof JSON<"u"?JSON:Df()).stringify,t=Mf(),r=Lf(),n=ll(),i=ul(),a=i("Array.prototype.join"),o=i("Array.prototype.indexOf"),s=i("Array.prototype.splice"),f=i("Array.prototype.sort"),c=function(d,u){for(var p="",y=0;y<d;y+=1)p+=u;return p},l=function(h,d,u){return u};return qn=function(d){var u=arguments.length>1?arguments[1]:void 0,p=u&&u.space||"";typeof p=="number"&&(p=c(p," "));var y=!!u&&typeof u.cycles=="boolean"&&u.cycles,w=u&&u.replacer?n(u.replacer):l;if(u&&typeof u.collapseEmpty<"u"&&typeof u.collapseEmpty!="boolean")throw new TypeError("`collapseEmpty` must be a boolean, if provided");var b=!!u&&u.collapseEmpty,m=typeof u=="function"?u:u&&u.cmp,x=m&&function(S){var O=m.length>2&&function(A){return S[A]};return function(_,A){return m({key:_,value:S[_]},{key:A,value:S[A]},O?{__proto__:null,get:O}:void 0)}},v=[];return function S(O,_,A,I){var k=p?`
15
- `+c(I,p):"",F=p?": ":":";if(A&&A.toJSON&&typeof A.toJSON=="function"&&(A=A.toJSON()),A=w(O,_,A),A!==void 0){if(typeof A!="object"||A===null)return e(A);var Z=function(He,St){return b&&He.length===0?St:(St==="[]"?"[":"{")+a(He,",")+k+(St==="[]"?"]":"}")};if(t(A)){for(var Y=[],V=0;V<A.length;V++){var re=S(A,V,A[V],I+1)||e(null);Y[Y.length]=k+p+re}return Z(Y,"[]")}if(o(v,A)!==-1){if(y)return e("__cycle__");throw new TypeError("Converting circular structure to JSON")}else v[v.length]=A;for(var Ze=f(r(A),x&&x(A)),Y=[],V=0;V<Ze.length;V++){var _=Ze[V],fe=S(A,_,A[_],I+1);if(fe){var qe=e(_)+F+fe;Y[Y.length]=k+p+qe}}return s(v,o(v,A),1),Z(Y,"{}")}}({"":d},"",d,0)},qn}var dl=hl(),wo=jf(dl);async function Hn(e,t,r){if(!this.passphrase)return t.push({actual:e,type:"encryptionKeyMissing"}),e;try{return await Wr(String(e),this.passphrase)}catch(n){t.push({actual:e,type:"encryptionProblem",error:n})}return e}async function pl(e,t,r){return $r(e)?e:JSON.stringify(e)}class bo extends nf{constructor({options:t,passphrase:r,autoEncrypt:n=!0}={}){super(kt({},{useNewCustomCheckerFunction:!0,messages:{encryptionKeyMissing:"Missing configuration for secrets encryption.",encryptionProblem:"Problem encrypting secret. Actual: {actual}. Error: {error}"},defaults:{string:{trim:!0},object:{strict:"remove"}}},t)),this.passphrase=r,this.autoEncrypt=n,this.alias("secret",{type:"string",custom:this.autoEncrypt?Hn:void 0,messages:{string:"The '{field}' field must be a string.",stringMin:"This secret '{field}' field length must be at least {expected} long."}}),this.alias("secretAny",{type:"any",custom:this.autoEncrypt?Hn:void 0}),this.alias("secretNumber",{type:"number",custom:this.autoEncrypt?Hn:void 0}),this.alias("json",{type:"any",custom:this.autoEncrypt?pl:void 0})}}const _o=new Proxy(bo,{instance:null,construct(e,t){return this.instance||(this.instance=new e(...t)),this.instance}});function yl(e){return e.toString(36)}function gl(e){const t={},r={};return e.forEach((n,i)=>{const a=yl(i);t[n]=a,r[a]=n}),{mapping:t,reversedMapping:r}}const Kn={trim:e=>e.trim(),encrypt:(e,{passphrase:t})=>Wr(e,t),decrypt:async(e,{passphrase:t})=>{try{return await pa(e,t)}catch(r){return console.warn(`Schema decrypt error: ${r}`,r),e}},toString:e=>String(e),fromArray:(e,{separator:t})=>e==null||!Array.isArray(e)?e:e.length===0?"[]":e.map(n=>typeof n=="string"?n.replace(/\\/g,"\\\\").replace(new RegExp(`\\${t}`,"g"),`\\${t}`):String(n)).join(t),toArray:(e,{separator:t})=>{if(e==null)return e;if(e==="[]")return[];if(e==="")return[];const r=[];let n="",i=0;const a=String(e);for(;i<a.length;)a[i]==="\\"&&i+1<a.length?a[i+1]===t?(n+=t,i+=2):a[i+1]==="\\"?(n+="\\",i+=2):(n+=a[i],i++):a[i]===t?(r.push(n),n="",i++):(n+=a[i],i++);return r.push(n),r},toJSON:e=>JSON.stringify(e),fromJSON:e=>JSON.parse(e),toNumber:e=>$r(e)?e.includes(".")?parseFloat(e):parseInt(e):e,toBool:e=>[!0,1,"true","1","yes","y"].includes(e),fromBool:e=>[!0,1,"true","1","yes","y"].includes(e)?"1":"0"};class be{constructor(t){const{map:r,name:n,attributes:i,passphrase:a,version:o=1,options:s={}}=t;this.name=n,this.version=o,this.attributes=i||{},this.passphrase=a??"secret",this.options=kt({},this.defaultOptions(),s),this.allNestedObjectsOptional=this.options.allNestedObjectsOptional??!1;const f=this.preprocessAttributesForValidation(this.attributes);if(this.validator=new _o({autoEncrypt:!1}).compile(kt({$$async:!0},f)),this.options.generateAutoHooks&&this.generateAutoHooks(),!Ki(r))this.map=r,this.reversedMap=Hc(r);else{const c=Ur(this.attributes,{safe:!0}),l=Object.keys(c).filter(y=>!y.includes("$$")),h=this.extractObjectKeys(this.attributes),d=[...new Set([...l,...h])],{mapping:u,reversedMapping:p}=gl(d);this.map=u,this.reversedMap=p}}defaultOptions(){return{autoEncrypt:!0,autoDecrypt:!0,arraySeparator:"|",generateAutoHooks:!0,hooks:{beforeMap:{},afterMap:{},beforeUnmap:{},afterUnmap:{}}}}addHook(t,r,n){this.options.hooks[t][r]||(this.options.hooks[t][r]=[]),this.options.hooks[t][r]=Kc([...this.options.hooks[t][r],n])}extractObjectKeys(t,r=""){const n=[];for(const[i,a]of Object.entries(t)){if(i.startsWith("$$"))continue;const o=r?`${r}.${i}`:i;typeof a=="object"&&a!==null&&!Array.isArray(a)&&(n.push(o),a.$$type==="object"&&n.push(...this.extractObjectKeys(a,o)))}return n}generateAutoHooks(){const t=Ur(Rt(this.attributes),{safe:!0});for(const[r,n]of Object.entries(t))n.includes("array")&&(this.addHook("beforeMap",r,"fromArray"),this.addHook("afterUnmap",r,"toArray")),n.includes("secret")&&(this.options.autoEncrypt&&this.addHook("beforeMap",r,"encrypt"),this.options.autoDecrypt&&this.addHook("afterUnmap",r,"decrypt")),n.includes("number")&&(this.addHook("beforeMap",r,"toString"),this.addHook("afterUnmap",r,"toNumber")),n.includes("boolean")&&(this.addHook("beforeMap",r,"fromBool"),this.addHook("afterUnmap",r,"toBool")),n.includes("json")&&(this.addHook("beforeMap",r,"toJSON"),this.addHook("afterUnmap",r,"fromJSON"))}static import(t){let{map:r,name:n,options:i,version:a,attributes:o}=$r(t)?JSON.parse(t):t;return o=be._importAttributes(o),new be({map:r,name:n,options:i,version:a,attributes:o})}static _importAttributes(t){if(typeof t=="string"){try{const r=JSON.parse(t);if(typeof r=="object"&&r!==null)return be._importAttributes(r)}catch{}return t}if(Array.isArray(t))return t.map(r=>be._importAttributes(r));if(typeof t=="object"&&t!==null){const r={};for(const[n,i]of Object.entries(t))r[n]=be._importAttributes(i);return r}return t}export(){return{version:this.version,name:this.name,options:this.options,attributes:this._exportAttributes(this.attributes),map:this.map}}_exportAttributes(t){if(typeof t=="string")return t;if(Array.isArray(t))return t.map(r=>this._exportAttributes(r));if(typeof t=="object"&&t!==null){const r={};for(const[n,i]of Object.entries(t))r[n]=this._exportAttributes(i);return r}return t}async applyHooksActions(t,r){for(const[n,i]of Object.entries(this.options.hooks[r]))for(const a of i){const o=Wc(t,n);o!==void 0&&typeof Kn[a]=="function"&&Vc(t,n,await Kn[a](o,{passphrase:this.passphrase,separator:this.options.arraySeparator}))}}async validate(t,{mutateOriginal:r=!1}={}){let n=r?t:Rt(t);return await this.validator(n)}async mapper(t){const r=Ur(Rt(t),{safe:!0});await this.applyHooksActions(r,"beforeMap");const n={_v:this.version+""};for(const[i,a]of Object.entries(r))n[this.map[i]]=a;return await this.applyHooksActions(n,"afterMap"),n}async unmapper(t){const r=Rt(t);delete r._v,await this.applyHooksActions(r,"beforeUnmap");const n={};for(const[i,a]of Object.entries(r))n[this.reversedMap[i]]=a;return await this.applyHooksActions(n,"afterUnmap"),rf(n)}preprocessAttributesForValidation(t){const r={};for(const[n,i]of Object.entries(t))if(typeof i=="object"&&i!==null&&!Array.isArray(i)){const a=i.$$type&&i.$$type.includes("required"),o=i.$$type&&i.$$type.includes("optional"),s={type:"object",properties:this.preprocessAttributesForValidation(i),strict:!1};a||(o||this.allNestedObjectsOptional)&&(s.optional=!0),r[n]=s}else r[n]=i;return r}}var ht=typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{},pe=[],ie=[],vl=typeof Uint8Array<"u"?Uint8Array:Array,Wn=!1;function mo(){Wn=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,r=e.length;t<r;++t)pe[t]=e[t],ie[e.charCodeAt(t)]=t;ie[45]=62,ie[95]=63}function wl(e){Wn||mo();var t,r,n,i,a,o,s=e.length;if(s%4>0)throw new Error("Invalid string. Length must be a multiple of 4");a=e[s-2]==="="?2:e[s-1]==="="?1:0,o=new vl(s*3/4-a),n=a>0?s-4:s;var f=0;for(t=0,r=0;t<n;t+=4,r+=3)i=ie[e.charCodeAt(t)]<<18|ie[e.charCodeAt(t+1)]<<12|ie[e.charCodeAt(t+2)]<<6|ie[e.charCodeAt(t+3)],o[f++]=i>>16&255,o[f++]=i>>8&255,o[f++]=i&255;return a===2?(i=ie[e.charCodeAt(t)]<<2|ie[e.charCodeAt(t+1)]>>4,o[f++]=i&255):a===1&&(i=ie[e.charCodeAt(t)]<<10|ie[e.charCodeAt(t+1)]<<4|ie[e.charCodeAt(t+2)]>>2,o[f++]=i>>8&255,o[f++]=i&255),o}function bl(e){return pe[e>>18&63]+pe[e>>12&63]+pe[e>>6&63]+pe[e&63]}function _l(e,t,r){for(var n,i=[],a=t;a<r;a+=3)n=(e[a]<<16)+(e[a+1]<<8)+e[a+2],i.push(bl(n));return i.join("")}function xo(e){Wn||mo();for(var t,r=e.length,n=r%3,i="",a=[],o=16383,s=0,f=r-n;s<f;s+=o)a.push(_l(e,s,s+o>f?f:s+o));return n===1?(t=e[r-1],i+=pe[t>>2],i+=pe[t<<4&63],i+="=="):n===2&&(t=(e[r-2]<<8)+e[r-1],i+=pe[t>>10],i+=pe[t>>4&63],i+=pe[t<<2&63],i+="="),a.push(i),a.join("")}function cr(e,t,r,n,i){var a,o,s=i*8-n-1,f=(1<<s)-1,c=f>>1,l=-7,h=r?i-1:0,d=r?-1:1,u=e[t+h];for(h+=d,a=u&(1<<-l)-1,u>>=-l,l+=s;l>0;a=a*256+e[t+h],h+=d,l-=8);for(o=a&(1<<-l)-1,a>>=-l,l+=n;l>0;o=o*256+e[t+h],h+=d,l-=8);if(a===0)a=1-c;else{if(a===f)return o?NaN:(u?-1:1)*(1/0);o=o+Math.pow(2,n),a=a-c}return(u?-1:1)*o*Math.pow(2,a-n)}function Eo(e,t,r,n,i,a){var o,s,f,c=a*8-i-1,l=(1<<c)-1,h=l>>1,d=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,u=n?0:a-1,p=n?1:-1,y=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=l):(o=Math.floor(Math.log(t)/Math.LN2),t*(f=Math.pow(2,-o))<1&&(o--,f*=2),o+h>=1?t+=d/f:t+=d*Math.pow(2,1-h),t*f>=2&&(o++,f/=2),o+h>=l?(s=0,o=l):o+h>=1?(s=(t*f-1)*Math.pow(2,i),o=o+h):(s=t*Math.pow(2,h-1)*Math.pow(2,i),o=0));i>=8;e[r+u]=s&255,u+=p,s/=256,i-=8);for(o=o<<i|s,c+=i;c>0;e[r+u]=o&255,u+=p,o/=256,c-=8);e[r+u-p]|=y*128}var ml={}.toString,So=Array.isArray||function(e){return ml.call(e)=="[object Array]"};/*!
16
- * The buffer module from node.js, for the browser.
17
- *
18
- * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
19
- * @license MIT
20
- */var xl=50;g.TYPED_ARRAY_SUPPORT=ht.TYPED_ARRAY_SUPPORT!==void 0?ht.TYPED_ARRAY_SUPPORT:!0,fr();function fr(){return g.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function xe(e,t){if(fr()<t)throw new RangeError("Invalid typed array length");return g.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t),e.__proto__=g.prototype):(e===null&&(e=new g(t)),e.length=t),e}function g(e,t,r){if(!g.TYPED_ARRAY_SUPPORT&&!(this instanceof g))return new g(e,t,r);if(typeof e=="number"){if(typeof t=="string")throw new Error("If encoding is specified then the first argument must be a string");return Vn(this,e)}return Ao(this,e,t,r)}g.poolSize=8192,g._augment=function(e){return e.__proto__=g.prototype,e};function Ao(e,t,r,n){if(typeof t=="number")throw new TypeError('"value" argument must not be a number');return typeof ArrayBuffer<"u"&&t instanceof ArrayBuffer?Al(e,t,r,n):typeof t=="string"?Sl(e,t,r):kl(e,t)}g.from=function(e,t,r){return Ao(null,e,t,r)},g.TYPED_ARRAY_SUPPORT&&(g.prototype.__proto__=Uint8Array.prototype,g.__proto__=Uint8Array,typeof Symbol<"u"&&Symbol.species&&g[Symbol.species]);function ko(e){if(typeof e!="number")throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative')}function El(e,t,r,n){return ko(t),t<=0?xe(e,t):r!==void 0?typeof n=="string"?xe(e,t).fill(r,n):xe(e,t).fill(r):xe(e,t)}g.alloc=function(e,t,r){return El(null,e,t,r)};function Vn(e,t){if(ko(t),e=xe(e,t<0?0:Yn(t)|0),!g.TYPED_ARRAY_SUPPORT)for(var r=0;r<t;++r)e[r]=0;return e}g.allocUnsafe=function(e){return Vn(null,e)},g.allocUnsafeSlow=function(e){return Vn(null,e)};function Sl(e,t,r){if((typeof r!="string"||r==="")&&(r="utf8"),!g.isEncoding(r))throw new TypeError('"encoding" must be a valid string encoding');var n=Ro(t,r)|0;e=xe(e,n);var i=e.write(t,r);return i!==n&&(e=e.slice(0,i)),e}function Gn(e,t){var r=t.length<0?0:Yn(t.length)|0;e=xe(e,r);for(var n=0;n<r;n+=1)e[n]=t[n]&255;return e}function Al(e,t,r,n){if(t.byteLength,r<0||t.byteLength<r)throw new RangeError("'offset' is out of bounds");if(t.byteLength<r+(n||0))throw new RangeError("'length' is out of bounds");return r===void 0&&n===void 0?t=new Uint8Array(t):n===void 0?t=new Uint8Array(t,r):t=new Uint8Array(t,r,n),g.TYPED_ARRAY_SUPPORT?(e=t,e.__proto__=g.prototype):e=Gn(e,t),e}function kl(e,t){if(ye(t)){var r=Yn(t.length)|0;return e=xe(e,r),e.length===0||t.copy(e,0,0,r),e}if(t){if(typeof ArrayBuffer<"u"&&t.buffer instanceof ArrayBuffer||"length"in t)return typeof t.length!="number"||Hl(t.length)?xe(e,0):Gn(e,t);if(t.type==="Buffer"&&So(t.data))return Gn(e,t.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}function Yn(e){if(e>=fr())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+fr().toString(16)+" bytes");return e|0}g.isBuffer=Kl;function ye(e){return!!(e!=null&&e._isBuffer)}g.compare=function(t,r){if(!ye(t)||!ye(r))throw new TypeError("Arguments must be Buffers");if(t===r)return 0;for(var n=t.length,i=r.length,a=0,o=Math.min(n,i);a<o;++a)if(t[a]!==r[a]){n=t[a],i=r[a];break}return n<i?-1:i<n?1:0},g.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},g.concat=function(t,r){if(!So(t))throw new TypeError('"list" argument must be an Array of Buffers');if(t.length===0)return g.alloc(0);var n;if(r===void 0)for(r=0,n=0;n<t.length;++n)r+=t[n].length;var i=g.allocUnsafe(r),a=0;for(n=0;n<t.length;++n){var o=t[n];if(!ye(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(i,a),a+=o.length}return i};function Ro(e,t){if(ye(e))return e.length;if(typeof ArrayBuffer<"u"&&typeof ArrayBuffer.isView=="function"&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;typeof e!="string"&&(e=""+e);var r=e.length;if(r===0)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return hr(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return r*2;case"hex":return r>>>1;case"base64":return Mo(e).length;default:if(n)return hr(e).length;t=(""+t).toLowerCase(),n=!0}}g.byteLength=Ro;function Rl(e,t,r){var n=!1;if((t===void 0||t<0)&&(t=0),t>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0,t>>>=0,r<=t))return"";for(e||(e="utf8");;)switch(e){case"hex":return Nl(this,t,r);case"utf8":case"utf-8":return Po(this,t,r);case"ascii":return Dl(this,t,r);case"latin1":case"binary":return Ml(this,t,r);case"base64":return Fl(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ll(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}g.prototype._isBuffer=!0;function Ke(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}g.prototype.swap16=function(){var t=this.length;if(t%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var r=0;r<t;r+=2)Ke(this,r,r+1);return this},g.prototype.swap32=function(){var t=this.length;if(t%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var r=0;r<t;r+=4)Ke(this,r,r+3),Ke(this,r+1,r+2);return this},g.prototype.swap64=function(){var t=this.length;if(t%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var r=0;r<t;r+=8)Ke(this,r,r+7),Ke(this,r+1,r+6),Ke(this,r+2,r+5),Ke(this,r+3,r+4);return this},g.prototype.toString=function(){var t=this.length|0;return t===0?"":arguments.length===0?Po(this,0,t):Rl.apply(this,arguments)},g.prototype.equals=function(t){if(!ye(t))throw new TypeError("Argument must be a Buffer");return this===t?!0:g.compare(this,t)===0},g.prototype.inspect=function(){var t="",r=xl;return this.length>0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),"<Buffer "+t+">"},g.prototype.compare=function(t,r,n,i,a){if(!ye(t))throw new TypeError("Argument must be a Buffer");if(r===void 0&&(r=0),n===void 0&&(n=t?t.length:0),i===void 0&&(i=0),a===void 0&&(a=this.length),r<0||n>t.length||i<0||a>this.length)throw new RangeError("out of range index");if(i>=a&&r>=n)return 0;if(i>=a)return-1;if(r>=n)return 1;if(r>>>=0,n>>>=0,i>>>=0,a>>>=0,this===t)return 0;for(var o=a-i,s=n-r,f=Math.min(o,s),c=this.slice(i,a),l=t.slice(r,n),h=0;h<f;++h)if(c[h]!==l[h]){o=c[h],s=l[h];break}return o<s?-1:s<o?1:0};function Oo(e,t,r,n,i){if(e.length===0)return-1;if(typeof r=="string"?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0)if(i)r=0;else return-1;if(typeof t=="string"&&(t=g.from(t,n)),ye(t))return t.length===0?-1:Io(e,t,r,n,i);if(typeof t=="number")return t=t&255,g.TYPED_ARRAY_SUPPORT&&typeof Uint8Array.prototype.indexOf=="function"?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):Io(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function Io(e,t,r,n,i){var a=1,o=e.length,s=t.length;if(n!==void 0&&(n=String(n).toLowerCase(),n==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(e.length<2||t.length<2)return-1;a=2,o/=2,s/=2,r/=2}function f(u,p){return a===1?u[p]:u.readUInt16BE(p*a)}var c;if(i){var l=-1;for(c=r;c<o;c++)if(f(e,c)===f(t,l===-1?0:c-l)){if(l===-1&&(l=c),c-l+1===s)return l*a}else l!==-1&&(c-=c-l),l=-1}else for(r+s>o&&(r=o-s),c=r;c>=0;c--){for(var h=!0,d=0;d<s;d++)if(f(e,c+d)!==f(t,d)){h=!1;break}if(h)return c}return-1}g.prototype.includes=function(t,r,n){return this.indexOf(t,r,n)!==-1},g.prototype.indexOf=function(t,r,n){return Oo(this,t,r,n,!0)},g.prototype.lastIndexOf=function(t,r,n){return Oo(this,t,r,n,!1)};function Ol(e,t,r,n){r=Number(r)||0;var i=e.length-r;n?(n=Number(n),n>i&&(n=i)):n=i;var a=t.length;if(a%2!==0)throw new TypeError("Invalid hex string");n>a/2&&(n=a/2);for(var o=0;o<n;++o){var s=parseInt(t.substr(o*2,2),16);if(isNaN(s))return o;e[r+o]=s}return o}function Il(e,t,r,n){return dr(hr(t,e.length-r),e,r,n)}function To(e,t,r,n){return dr(Zl(t),e,r,n)}function Tl(e,t,r,n){return To(e,t,r,n)}function Pl(e,t,r,n){return dr(Mo(t),e,r,n)}function jl(e,t,r,n){return dr(ql(t,e.length-r),e,r,n)}g.prototype.write=function(t,r,n,i){if(r===void 0)i="utf8",n=this.length,r=0;else if(n===void 0&&typeof r=="string")i=r,n=this.length,r=0;else if(isFinite(r))r=r|0,isFinite(n)?(n=n|0,i===void 0&&(i="utf8")):(i=n,n=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var a=this.length-r;if((n===void 0||n>a)&&(n=a),t.length>0&&(n<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var o=!1;;)switch(i){case"hex":return Ol(this,t,r,n);case"utf8":case"utf-8":return Il(this,t,r,n);case"ascii":return To(this,t,r,n);case"latin1":case"binary":return Tl(this,t,r,n);case"base64":return Pl(this,t,r,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return jl(this,t,r,n);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}},g.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Fl(e,t,r){return t===0&&r===e.length?xo(e):xo(e.slice(t,r))}function Po(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i<r;){var a=e[i],o=null,s=a>239?4:a>223?3:a>191?2:1;if(i+s<=r){var f,c,l,h;switch(s){case 1:a<128&&(o=a);break;case 2:f=e[i+1],(f&192)===128&&(h=(a&31)<<6|f&63,h>127&&(o=h));break;case 3:f=e[i+1],c=e[i+2],(f&192)===128&&(c&192)===128&&(h=(a&15)<<12|(f&63)<<6|c&63,h>2047&&(h<55296||h>57343)&&(o=h));break;case 4:f=e[i+1],c=e[i+2],l=e[i+3],(f&192)===128&&(c&192)===128&&(l&192)===128&&(h=(a&15)<<18|(f&63)<<12|(c&63)<<6|l&63,h>65535&&h<1114112&&(o=h))}}o===null?(o=65533,s=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|o&1023),n.push(o),i+=s}return Cl(n)}var jo=4096;function Cl(e){var t=e.length;if(t<=jo)return String.fromCharCode.apply(String,e);for(var r="",n=0;n<t;)r+=String.fromCharCode.apply(String,e.slice(n,n+=jo));return r}function Dl(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;i<r;++i)n+=String.fromCharCode(e[i]&127);return n}function Ml(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;i<r;++i)n+=String.fromCharCode(e[i]);return n}function Nl(e,t,r){var n=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>n)&&(r=n);for(var i="",a=t;a<r;++a)i+=zl(e[a]);return i}function Ll(e,t,r){for(var n=e.slice(t,r),i="",a=0;a<n.length;a+=2)i+=String.fromCharCode(n[a]+n[a+1]*256);return i}g.prototype.slice=function(t,r){var n=this.length;t=~~t,r=r===void 0?n:~~r,t<0?(t+=n,t<0&&(t=0)):t>n&&(t=n),r<0?(r+=n,r<0&&(r=0)):r>n&&(r=n),r<t&&(r=t);var i;if(g.TYPED_ARRAY_SUPPORT)i=this.subarray(t,r),i.__proto__=g.prototype;else{var a=r-t;i=new g(a,void 0);for(var o=0;o<a;++o)i[o]=this[o+t]}return i};function B(e,t,r){if(e%1!==0||e<0)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}g.prototype.readUIntLE=function(t,r,n){t=t|0,r=r|0,n||B(t,r,this.length);for(var i=this[t],a=1,o=0;++o<r&&(a*=256);)i+=this[t+o]*a;return i},g.prototype.readUIntBE=function(t,r,n){t=t|0,r=r|0,n||B(t,r,this.length);for(var i=this[t+--r],a=1;r>0&&(a*=256);)i+=this[t+--r]*a;return i},g.prototype.readUInt8=function(t,r){return r||B(t,1,this.length),this[t]},g.prototype.readUInt16LE=function(t,r){return r||B(t,2,this.length),this[t]|this[t+1]<<8},g.prototype.readUInt16BE=function(t,r){return r||B(t,2,this.length),this[t]<<8|this[t+1]},g.prototype.readUInt32LE=function(t,r){return r||B(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+this[t+3]*16777216},g.prototype.readUInt32BE=function(t,r){return r||B(t,4,this.length),this[t]*16777216+(this[t+1]<<16|this[t+2]<<8|this[t+3])},g.prototype.readIntLE=function(t,r,n){t=t|0,r=r|0,n||B(t,r,this.length);for(var i=this[t],a=1,o=0;++o<r&&(a*=256);)i+=this[t+o]*a;return a*=128,i>=a&&(i-=Math.pow(2,8*r)),i},g.prototype.readIntBE=function(t,r,n){t=t|0,r=r|0,n||B(t,r,this.length);for(var i=r,a=1,o=this[t+--i];i>0&&(a*=256);)o+=this[t+--i]*a;return a*=128,o>=a&&(o-=Math.pow(2,8*r)),o},g.prototype.readInt8=function(t,r){return r||B(t,1,this.length),this[t]&128?(255-this[t]+1)*-1:this[t]},g.prototype.readInt16LE=function(t,r){r||B(t,2,this.length);var n=this[t]|this[t+1]<<8;return n&32768?n|4294901760:n},g.prototype.readInt16BE=function(t,r){r||B(t,2,this.length);var n=this[t+1]|this[t]<<8;return n&32768?n|4294901760:n},g.prototype.readInt32LE=function(t,r){return r||B(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},g.prototype.readInt32BE=function(t,r){return r||B(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},g.prototype.readFloatLE=function(t,r){return r||B(t,4,this.length),cr(this,t,!0,23,4)},g.prototype.readFloatBE=function(t,r){return r||B(t,4,this.length),cr(this,t,!1,23,4)},g.prototype.readDoubleLE=function(t,r){return r||B(t,8,this.length),cr(this,t,!0,52,8)},g.prototype.readDoubleBE=function(t,r){return r||B(t,8,this.length),cr(this,t,!1,52,8)};function X(e,t,r,n,i,a){if(!ye(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||t<a)throw new RangeError('"value" argument is out of bounds');if(r+n>e.length)throw new RangeError("Index out of range")}g.prototype.writeUIntLE=function(t,r,n,i){if(t=+t,r=r|0,n=n|0,!i){var a=Math.pow(2,8*n)-1;X(this,t,r,n,a,0)}var o=1,s=0;for(this[r]=t&255;++s<n&&(o*=256);)this[r+s]=t/o&255;return r+n},g.prototype.writeUIntBE=function(t,r,n,i){if(t=+t,r=r|0,n=n|0,!i){var a=Math.pow(2,8*n)-1;X(this,t,r,n,a,0)}var o=n-1,s=1;for(this[r+o]=t&255;--o>=0&&(s*=256);)this[r+o]=t/s&255;return r+n},g.prototype.writeUInt8=function(t,r,n){return t=+t,r=r|0,n||X(this,t,r,1,255,0),g.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[r]=t&255,r+1};function lr(e,t,r,n){t<0&&(t=65535+t+1);for(var i=0,a=Math.min(e.length-r,2);i<a;++i)e[r+i]=(t&255<<8*(n?i:1-i))>>>(n?i:1-i)*8}g.prototype.writeUInt16LE=function(t,r,n){return t=+t,r=r|0,n||X(this,t,r,2,65535,0),g.TYPED_ARRAY_SUPPORT?(this[r]=t&255,this[r+1]=t>>>8):lr(this,t,r,!0),r+2},g.prototype.writeUInt16BE=function(t,r,n){return t=+t,r=r|0,n||X(this,t,r,2,65535,0),g.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=t&255):lr(this,t,r,!1),r+2};function ur(e,t,r,n){t<0&&(t=4294967295+t+1);for(var i=0,a=Math.min(e.length-r,4);i<a;++i)e[r+i]=t>>>(n?i:3-i)*8&255}g.prototype.writeUInt32LE=function(t,r,n){return t=+t,r=r|0,n||X(this,t,r,4,4294967295,0),g.TYPED_ARRAY_SUPPORT?(this[r+3]=t>>>24,this[r+2]=t>>>16,this[r+1]=t>>>8,this[r]=t&255):ur(this,t,r,!0),r+4},g.prototype.writeUInt32BE=function(t,r,n){return t=+t,r=r|0,n||X(this,t,r,4,4294967295,0),g.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255):ur(this,t,r,!1),r+4},g.prototype.writeIntLE=function(t,r,n,i){if(t=+t,r=r|0,!i){var a=Math.pow(2,8*n-1);X(this,t,r,n,a-1,-a)}var o=0,s=1,f=0;for(this[r]=t&255;++o<n&&(s*=256);)t<0&&f===0&&this[r+o-1]!==0&&(f=1),this[r+o]=(t/s>>0)-f&255;return r+n},g.prototype.writeIntBE=function(t,r,n,i){if(t=+t,r=r|0,!i){var a=Math.pow(2,8*n-1);X(this,t,r,n,a-1,-a)}var o=n-1,s=1,f=0;for(this[r+o]=t&255;--o>=0&&(s*=256);)t<0&&f===0&&this[r+o+1]!==0&&(f=1),this[r+o]=(t/s>>0)-f&255;return r+n},g.prototype.writeInt8=function(t,r,n){return t=+t,r=r|0,n||X(this,t,r,1,127,-128),g.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[r]=t&255,r+1},g.prototype.writeInt16LE=function(t,r,n){return t=+t,r=r|0,n||X(this,t,r,2,32767,-32768),g.TYPED_ARRAY_SUPPORT?(this[r]=t&255,this[r+1]=t>>>8):lr(this,t,r,!0),r+2},g.prototype.writeInt16BE=function(t,r,n){return t=+t,r=r|0,n||X(this,t,r,2,32767,-32768),g.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=t&255):lr(this,t,r,!1),r+2},g.prototype.writeInt32LE=function(t,r,n){return t=+t,r=r|0,n||X(this,t,r,4,2147483647,-2147483648),g.TYPED_ARRAY_SUPPORT?(this[r]=t&255,this[r+1]=t>>>8,this[r+2]=t>>>16,this[r+3]=t>>>24):ur(this,t,r,!0),r+4},g.prototype.writeInt32BE=function(t,r,n){return t=+t,r=r|0,n||X(this,t,r,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),g.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255):ur(this,t,r,!1),r+4};function Fo(e,t,r,n,i,a){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function Co(e,t,r,n,i){return i||Fo(e,t,r,4),Eo(e,t,r,n,23,4),r+4}g.prototype.writeFloatLE=function(t,r,n){return Co(this,t,r,!0,n)},g.prototype.writeFloatBE=function(t,r,n){return Co(this,t,r,!1,n)};function Do(e,t,r,n,i){return i||Fo(e,t,r,8),Eo(e,t,r,n,52,8),r+8}g.prototype.writeDoubleLE=function(t,r,n){return Do(this,t,r,!0,n)},g.prototype.writeDoubleBE=function(t,r,n){return Do(this,t,r,!1,n)},g.prototype.copy=function(t,r,n,i){if(n||(n=0),!i&&i!==0&&(i=this.length),r>=t.length&&(r=t.length),r||(r=0),i>0&&i<n&&(i=n),i===n||t.length===0||this.length===0)return 0;if(r<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-r<i-n&&(i=t.length-r+n);var a=i-n,o;if(this===t&&n<r&&r<i)for(o=a-1;o>=0;--o)t[o+r]=this[o+n];else if(a<1e3||!g.TYPED_ARRAY_SUPPORT)for(o=0;o<a;++o)t[o+r]=this[o+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+a),r);return a},g.prototype.fill=function(t,r,n,i){if(typeof t=="string"){if(typeof r=="string"?(i=r,r=0,n=this.length):typeof n=="string"&&(i=n,n=this.length),t.length===1){var a=t.charCodeAt(0);a<256&&(t=a)}if(i!==void 0&&typeof i!="string")throw new TypeError("encoding must be a string");if(typeof i=="string"&&!g.isEncoding(i))throw new TypeError("Unknown encoding: "+i)}else typeof t=="number"&&(t=t&255);if(r<0||this.length<r||this.length<n)throw new RangeError("Out of range index");if(n<=r)return this;r=r>>>0,n=n===void 0?this.length:n>>>0,t||(t=0);var o;if(typeof t=="number")for(o=r;o<n;++o)this[o]=t;else{var s=ye(t)?t:hr(new g(t,i).toString()),f=s.length;for(o=0;o<n-r;++o)this[o+r]=s[o%f]}return this};var $l=/[^+\/0-9A-Za-z-_]/g;function Ul(e){if(e=Bl(e).replace($l,""),e.length<2)return"";for(;e.length%4!==0;)e=e+"=";return e}function Bl(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function zl(e){return e<16?"0"+e.toString(16):e.toString(16)}function hr(e,t){t=t||1/0;for(var r,n=e.length,i=null,a=[],o=0;o<n;++o){if(r=e.charCodeAt(o),r>55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}else if(o+1===n){(t-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,r&63|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,r&63|128)}else if(r<1114112){if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,r&63|128)}else throw new Error("Invalid code point")}return a}function Zl(e){for(var t=[],r=0;r<e.length;++r)t.push(e.charCodeAt(r)&255);return t}function ql(e,t){for(var r,n,i,a=[],o=0;o<e.length&&!((t-=2)<0);++o)r=e.charCodeAt(o),n=r>>8,i=r%256,a.push(i),a.push(n);return a}function Mo(e){return wl(Ul(e))}function dr(e,t,r,n){for(var i=0;i<n&&!(i+r>=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function Hl(e){return e!==e}function Kl(e){return e!=null&&(!!e._isBuffer||No(e)||Wl(e))}function No(e){return!!e.constructor&&typeof e.constructor.isBuffer=="function"&&e.constructor.isBuffer(e)}function Wl(e){return typeof e.readFloatLE=="function"&&typeof e.slice=="function"&&No(e.slice(0,0))}function Lo(){throw new Error("setTimeout has not been defined")}function $o(){throw new Error("clearTimeout has not been defined")}var Te=Lo,Pe=$o;typeof ht.setTimeout=="function"&&(Te=setTimeout),typeof ht.clearTimeout=="function"&&(Pe=clearTimeout);function Uo(e){if(Te===setTimeout)return setTimeout(e,0);if((Te===Lo||!Te)&&setTimeout)return Te=setTimeout,setTimeout(e,0);try{return Te(e,0)}catch{try{return Te.call(null,e,0)}catch{return Te.call(this,e,0)}}}function Vl(e){if(Pe===clearTimeout)return clearTimeout(e);if((Pe===$o||!Pe)&&clearTimeout)return Pe=clearTimeout,clearTimeout(e);try{return Pe(e)}catch{try{return Pe.call(null,e)}catch{return Pe.call(this,e)}}}var Ee=[],dt=!1,We,pr=-1;function Gl(){!dt||!We||(dt=!1,We.length?Ee=We.concat(Ee):pr=-1,Ee.length&&Bo())}function Bo(){if(!dt){var e=Uo(Gl);dt=!0;for(var t=Ee.length;t;){for(We=Ee,Ee=[];++pr<t;)We&&We[pr].run();pr=-1,t=Ee.length}We=null,dt=!1,Vl(e)}}function ee(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];Ee.push(new zo(e,t)),Ee.length===1&&!dt&&Uo(Bo)}function zo(e,t){this.fun=e,this.array=t}zo.prototype.run=function(){this.fun.apply(null,this.array)};var Yl="browser",Jl="browser",Xl=!0,Ql={},eu=[],tu="",ru={},nu={},iu={};function Ve(){}var au=Ve,ou=Ve,su=Ve,cu=Ve,fu=Ve,lu=Ve,uu=Ve;function hu(e){throw new Error("process.binding is not supported")}function du(){return"/"}function pu(e){throw new Error("process.chdir is not supported")}function yu(){return 0}var pt=ht.performance||{},gu=pt.now||pt.mozNow||pt.msNow||pt.oNow||pt.webkitNow||function(){return new Date().getTime()};function vu(e){var t=gu.call(pt)*.001,r=Math.floor(t),n=Math.floor(t%1*1e9);return e&&(r=r-e[0],n=n-e[1],n<0&&(r--,n+=1e9)),[r,n]}var wu=new Date;function bu(){var e=new Date,t=e-wu;return t/1e3}var Se={nextTick:ee,title:Yl,browser:Xl,env:Ql,argv:eu,version:tu,versions:ru,on:au,addListener:ou,once:su,off:cu,removeListener:fu,removeAllListeners:lu,emit:uu,binding:hu,cwd:du,chdir:pu,umask:yu,hrtime:vu,platform:Jl,release:nu,config:iu,uptime:bu},W;typeof Object.create=="function"?W=function(t,r){t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:W=function(t,r){t.super_=r;var n=function(){};n.prototype=r.prototype,t.prototype=new n,t.prototype.constructor=t};var _u=/%[sdj%]/g;function mu(e){if(!ti(e)){for(var t=[],r=0;r<arguments.length;r++)t.push(je(arguments[r]));return t.join(" ")}for(var r=1,n=arguments,i=n.length,a=String(e).replace(_u,function(s){if(s==="%%")return"%";if(r>=i)return s;switch(s){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch{return"[Circular]"}default:return s}}),o=n[r];r<i;o=n[++r])ei(o)||!Tt(o)?a+=" "+o:a+=" "+je(o);return a}function Zo(e,t){if(Fe(ht.process))return function(){return Zo(e,t).apply(this,arguments)};if(Se.noDeprecation===!0)return e;var r=!1;function n(){if(!r){if(Se.throwDeprecation)throw new Error(t);Se.traceDeprecation?console.trace(t):console.error(t),r=!0}return e.apply(this,arguments)}return n}var yr={},Jn;function xu(e){if(Fe(Jn)&&(Jn=Se.env.NODE_DEBUG||""),e=e.toUpperCase(),!yr[e])if(new RegExp("\\b"+e+"\\b","i").test(Jn)){var t=0;yr[e]=function(){var r=mu.apply(null,arguments);console.error("%s %d: %s",e,t,r)}}else yr[e]=function(){};return yr[e]}function je(e,t){var r={seen:[],stylize:Su};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),qo(t)?r.showHidden=t:t&&Pu(r,t),Fe(r.showHidden)&&(r.showHidden=!1),Fe(r.depth)&&(r.depth=2),Fe(r.colors)&&(r.colors=!1),Fe(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=Eu),gr(r,e,r.depth)}je.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},je.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function Eu(e,t){var r=je.styles[t];return r?"\x1B["+je.colors[r][0]+"m"+e+"\x1B["+je.colors[r][1]+"m":e}function Su(e,t){return e}function Au(e){var t={};return e.forEach(function(r,n){t[r]=!0}),t}function gr(e,t,r){if(e.customInspect&&t&&ii(t.inspect)&&t.inspect!==je&&!(t.constructor&&t.constructor.prototype===t)){var n=t.inspect(r,e);return ti(n)||(n=gr(e,n,r)),n}var i=ku(e,t);if(i)return i;var a=Object.keys(t),o=Au(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(t)),ni(t)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return Xn(t);if(a.length===0){if(ii(t)){var s=t.name?": "+t.name:"";return e.stylize("[Function"+s+"]","special")}if(ri(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(Ho(t))return e.stylize(Date.prototype.toString.call(t),"date");if(ni(t))return Xn(t)}var f="",c=!1,l=["{","}"];if(Iu(t)&&(c=!0,l=["[","]"]),ii(t)){var h=t.name?": "+t.name:"";f=" [Function"+h+"]"}if(ri(t)&&(f=" "+RegExp.prototype.toString.call(t)),Ho(t)&&(f=" "+Date.prototype.toUTCString.call(t)),ni(t)&&(f=" "+Xn(t)),a.length===0&&(!c||t.length==0))return l[0]+f+l[1];if(r<0)return ri(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var d;return c?d=Ru(e,t,r,o,a):d=a.map(function(u){return Qn(e,t,r,o,u,c)}),e.seen.pop(),Ou(d,f,l)}function ku(e,t){if(Fe(t))return e.stylize("undefined","undefined");if(ti(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(Tu(t))return e.stylize(""+t,"number");if(qo(t))return e.stylize(""+t,"boolean");if(ei(t))return e.stylize("null","null")}function Xn(e){return"["+Error.prototype.toString.call(e)+"]"}function Ru(e,t,r,n,i){for(var a=[],o=0,s=t.length;o<s;++o)Ko(t,String(o))?a.push(Qn(e,t,r,n,String(o),!0)):a.push("");return i.forEach(function(f){f.match(/^\d+$/)||a.push(Qn(e,t,r,n,f,!0))}),a}function Qn(e,t,r,n,i,a){var o,s,f;if(f=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]},f.get?f.set?s=e.stylize("[Getter/Setter]","special"):s=e.stylize("[Getter]","special"):f.set&&(s=e.stylize("[Setter]","special")),Ko(n,i)||(o="["+i+"]"),s||(e.seen.indexOf(f.value)<0?(ei(r)?s=gr(e,f.value,null):s=gr(e,f.value,r-1),s.indexOf(`
21
- `)>-1&&(a?s=s.split(`
22
- `).map(function(c){return" "+c}).join(`
23
- `).substr(2):s=`
24
- `+s.split(`
25
- `).map(function(c){return" "+c}).join(`
26
- `))):s=e.stylize("[Circular]","special")),Fe(o)){if(a&&i.match(/^\d+$/))return s;o=JSON.stringify(""+i),o.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.substr(1,o.length-2),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+s}function Ou(e,t,r){var n=e.reduce(function(i,a){return a.indexOf(`
27
- `)>=0,i+a.replace(/\u001b\[\d\d?m/g,"").length+1},0);return n>60?r[0]+(t===""?"":t+`
28
- `)+" "+e.join(`,
29
- `)+" "+r[1]:r[0]+t+" "+e.join(", ")+" "+r[1]}function Iu(e){return Array.isArray(e)}function qo(e){return typeof e=="boolean"}function ei(e){return e===null}function Tu(e){return typeof e=="number"}function ti(e){return typeof e=="string"}function Fe(e){return e===void 0}function ri(e){return Tt(e)&&ai(e)==="[object RegExp]"}function Tt(e){return typeof e=="object"&&e!==null}function Ho(e){return Tt(e)&&ai(e)==="[object Date]"}function ni(e){return Tt(e)&&(ai(e)==="[object Error]"||e instanceof Error)}function ii(e){return typeof e=="function"}function ai(e){return Object.prototype.toString.call(e)}function Pu(e,t){if(!t||!Tt(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}function Ko(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Ge(){this.head=null,this.tail=null,this.length=0}Ge.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},Ge.prototype.unshift=function(e){var t={data:e,next:this.head};this.length===0&&(this.tail=t),this.head=t,++this.length},Ge.prototype.shift=function(){if(this.length!==0){var e=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},Ge.prototype.clear=function(){this.head=this.tail=null,this.length=0},Ge.prototype.join=function(e){if(this.length===0)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r},Ge.prototype.concat=function(e){if(this.length===0)return g.alloc(0);if(this.length===1)return this.head.data;for(var t=g.allocUnsafe(e>>>0),r=this.head,n=0;r;)r.data.copy(t,n),n+=r.data.length,r=r.next;return t};var ju=g.isEncoding||function(e){switch(e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function Fu(e){if(e&&!ju(e))throw new Error("Unknown encoding: "+e)}function Pt(e){switch(this.encoding=(e||"utf8").toLowerCase().replace(/[-_]/,""),Fu(e),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=Du;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=Mu;break;default:this.write=Cu;return}this.charBuffer=new g(6),this.charReceived=0,this.charLength=0}Pt.prototype.write=function(e){for(var t="";this.charLength;){var r=e.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:e.length;if(e.copy(this.charBuffer,this.charReceived,0,r),this.charReceived+=r,this.charReceived<this.charLength)return"";e=e.slice(r,e.length),t=this.charBuffer.slice(0,this.charLength).toString(this.encoding);var i=t.charCodeAt(t.length-1);if(i>=55296&&i<=56319){this.charLength+=this.surrogateSize,t="";continue}if(this.charReceived=this.charLength=0,e.length===0)return t;break}this.detectIncompleteChar(e);var n=e.length;this.charLength&&(e.copy(this.charBuffer,0,e.length-this.charReceived,n),n-=this.charReceived),t+=e.toString(this.encoding,0,n);var n=t.length-1,i=t.charCodeAt(n);if(i>=55296&&i<=56319){var a=this.surrogateSize;return this.charLength+=a,this.charReceived+=a,this.charBuffer.copy(this.charBuffer,a,0,a),e.copy(this.charBuffer,0,0,a),t.substring(0,n)}return t},Pt.prototype.detectIncompleteChar=function(e){for(var t=e.length>=3?3:e.length;t>0;t--){var r=e[e.length-t];if(t==1&&r>>5==6){this.charLength=2;break}if(t<=2&&r>>4==14){this.charLength=3;break}if(t<=3&&r>>3==30){this.charLength=4;break}}this.charReceived=t},Pt.prototype.end=function(e){var t="";if(e&&e.length&&(t=this.write(e)),this.charReceived){var r=this.charReceived,n=this.charBuffer,i=this.encoding;t+=n.slice(0,r).toString(i)}return t};function Cu(e){return e.toString(this.encoding)}function Du(e){this.charReceived=e.length%2,this.charLength=this.charReceived?2:0}function Mu(e){this.charReceived=e.length%3,this.charLength=this.charReceived?3:0}N.ReadableState=Wo;var j=xu("stream");W(N,R);function Nu(e,t,r){if(typeof e.prependListener=="function")return e.prependListener(t,r);!e._events||!e._events[t]?e.on(t,r):Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]}function Lu(e,t){return e.listeners(t).length}function Wo(e,t){e=e||{},this.objectMode=!!e.objectMode,t instanceof ae&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var r=e.highWaterMark,n=this.objectMode?16:16*1024;this.highWaterMark=r||r===0?r:n,this.highWaterMark=~~this.highWaterMark,this.buffer=new Ge,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.ranOut=!1,this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(this.decoder=new Pt(e.encoding),this.encoding=e.encoding)}function N(e){if(!(this instanceof N))return new N(e);this._readableState=new Wo(e,this),this.readable=!0,e&&typeof e.read=="function"&&(this._read=e.read),R.call(this)}N.prototype.push=function(e,t){var r=this._readableState;return!r.objectMode&&typeof e=="string"&&(t=t||r.defaultEncoding,t!==r.encoding&&(e=g.from(e,t),t="")),Vo(this,r,e,t,!1)},N.prototype.unshift=function(e){var t=this._readableState;return Vo(this,t,e,"",!0)},N.prototype.isPaused=function(){return this._readableState.flowing===!1};function Vo(e,t,r,n,i){var a=Bu(t,r);if(a)e.emit("error",a);else if(r===null)t.reading=!1,zu(e,t);else if(t.objectMode||r&&r.length>0)if(t.ended&&!i){var o=new Error("stream.push() after EOF");e.emit("error",o)}else if(t.endEmitted&&i){var s=new Error("stream.unshift() after end event");e.emit("error",s)}else{var f;t.decoder&&!i&&!n&&(r=t.decoder.write(r),f=!t.objectMode&&r.length===0),i||(t.reading=!1),f||(t.flowing&&t.length===0&&!t.sync?(e.emit("data",r),e.read(0)):(t.length+=t.objectMode?1:r.length,i?t.buffer.unshift(r):t.buffer.push(r),t.needReadable&&vr(e))),Zu(e,t)}else i||(t.reading=!1);return $u(t)}function $u(e){return!e.ended&&(e.needReadable||e.length<e.highWaterMark||e.length===0)}N.prototype.setEncoding=function(e){return this._readableState.decoder=new Pt(e),this._readableState.encoding=e,this};var Go=8388608;function Uu(e){return e>=Go?e=Go:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function Yo(e,t){return e<=0||t.length===0&&t.ended?0:t.objectMode?1:e!==e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=Uu(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}N.prototype.read=function(e){j("read",e),e=parseInt(e,10);var t=this._readableState,r=e;if(e!==0&&(t.emittedReadable=!1),e===0&&t.needReadable&&(t.length>=t.highWaterMark||t.ended))return j("read: emitReadable",t.length,t.ended),t.length===0&&t.ended?si(this):vr(this),null;if(e=Yo(e,t),e===0&&t.ended)return t.length===0&&si(this),null;var n=t.needReadable;j("need readable",n),(t.length===0||t.length-e<t.highWaterMark)&&(n=!0,j("length less than watermark",n)),t.ended||t.reading?(n=!1,j("reading or ended",n)):n&&(j("do read"),t.reading=!0,t.sync=!0,t.length===0&&(t.needReadable=!0),this._read(t.highWaterMark),t.sync=!1,t.reading||(e=Yo(r,t)));var i;return e>0?i=Xo(e,t):i=null,i===null?(t.needReadable=!0,e=0):t.length-=e,t.length===0&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&si(this)),i!==null&&this.emit("data",i),i};function Bu(e,t){var r=null;return!g.isBuffer(t)&&typeof t!="string"&&t!==null&&t!==void 0&&!e.objectMode&&(r=new TypeError("Invalid non-string/buffer chunk")),r}function zu(e,t){if(!t.ended){if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,vr(e)}}function vr(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(j("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?ee(Jo,e):Jo(e))}function Jo(e){j("emit readable"),e.emit("readable"),oi(e)}function Zu(e,t){t.readingMore||(t.readingMore=!0,ee(qu,e,t))}function qu(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length<t.highWaterMark&&(j("maybeReadMore read 0"),e.read(0),r!==t.length);)r=t.length;t.readingMore=!1}N.prototype._read=function(e){this.emit("error",new Error("not implemented"))},N.prototype.pipe=function(e,t){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=e;break;case 1:n.pipes=[n.pipes,e];break;default:n.pipes.push(e);break}n.pipesCount+=1,j("pipe count=%d opts=%j",n.pipesCount,t);var i=!t||t.end!==!1,a=i?s:l;n.endEmitted?ee(a):r.once("end",a),e.on("unpipe",o);function o(b){j("onunpipe"),b===r&&l()}function s(){j("onend"),e.end()}var f=Hu(r);e.on("drain",f);var c=!1;function l(){j("cleanup"),e.removeListener("close",p),e.removeListener("finish",y),e.removeListener("drain",f),e.removeListener("error",u),e.removeListener("unpipe",o),r.removeListener("end",s),r.removeListener("end",l),r.removeListener("data",d),c=!0,n.awaitDrain&&(!e._writableState||e._writableState.needDrain)&&f()}var h=!1;r.on("data",d);function d(b){j("ondata"),h=!1;var m=e.write(b);m===!1&&!h&&((n.pipesCount===1&&n.pipes===e||n.pipesCount>1&&Qo(n.pipes,e)!==-1)&&!c&&(j("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,h=!0),r.pause())}function u(b){j("onerror",b),w(),e.removeListener("error",u),Lu(e,"error")===0&&e.emit("error",b)}Nu(e,"error",u);function p(){e.removeListener("finish",y),w()}e.once("close",p);function y(){j("onfinish"),e.removeListener("close",p),w()}e.once("finish",y);function w(){j("unpipe"),r.unpipe(e)}return e.emit("pipe",r),n.flowing||(j("pipe resume"),r.resume()),e};function Hu(e){return function(){var t=e._readableState;j("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,t.awaitDrain===0&&e.listeners("data").length&&(t.flowing=!0,oi(e))}}N.prototype.unpipe=function(e){var t=this._readableState;if(t.pipesCount===0)return this;if(t.pipesCount===1)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this),this);if(!e){var r=t.pipes,n=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i<n;i++)r[i].emit("unpipe",this);return this}var a=Qo(t.pipes,e);return a===-1?this:(t.pipes.splice(a,1),t.pipesCount-=1,t.pipesCount===1&&(t.pipes=t.pipes[0]),e.emit("unpipe",this),this)},N.prototype.on=function(e,t){var r=R.prototype.on.call(this,e,t);if(e==="data")this._readableState.flowing!==!1&&this.resume();else if(e==="readable"){var n=this._readableState;!n.endEmitted&&!n.readableListening&&(n.readableListening=n.needReadable=!0,n.emittedReadable=!1,n.reading?n.length&&vr(this):ee(Ku,this))}return r},N.prototype.addListener=N.prototype.on;function Ku(e){j("readable nexttick read 0"),e.read(0)}N.prototype.resume=function(){var e=this._readableState;return e.flowing||(j("resume"),e.flowing=!0,Wu(this,e)),this};function Wu(e,t){t.resumeScheduled||(t.resumeScheduled=!0,ee(Vu,e,t))}function Vu(e,t){t.reading||(j("resume read 0"),e.read(0)),t.resumeScheduled=!1,t.awaitDrain=0,e.emit("resume"),oi(e),t.flowing&&!t.reading&&e.read(0)}N.prototype.pause=function(){return j("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(j("pause"),this._readableState.flowing=!1,this.emit("pause")),this};function oi(e){var t=e._readableState;for(j("flow",t.flowing);t.flowing&&e.read()!==null;);}N.prototype.wrap=function(e){var t=this._readableState,r=!1,n=this;e.on("end",function(){if(j("wrapped end"),t.decoder&&!t.ended){var o=t.decoder.end();o&&o.length&&n.push(o)}n.push(null)}),e.on("data",function(o){if(j("wrapped data"),t.decoder&&(o=t.decoder.write(o)),!(t.objectMode&&o==null)&&!(!t.objectMode&&(!o||!o.length))){var s=n.push(o);s||(r=!0,e.pause())}});for(var i in e)this[i]===void 0&&typeof e[i]=="function"&&(this[i]=function(o){return function(){return e[o].apply(e,arguments)}}(i));var a=["error","close","destroy","pause","resume"];return Qu(a,function(o){e.on(o,n.emit.bind(n,o))}),n._read=function(o){j("wrapped _read",o),r&&(r=!1,e.resume())},n},N._fromList=Xo;function Xo(e,t){if(t.length===0)return null;var r;return t.objectMode?r=t.buffer.shift():!e||e>=t.length?(t.decoder?r=t.buffer.join(""):t.buffer.length===1?r=t.buffer.head.data:r=t.buffer.concat(t.length),t.buffer.clear()):r=Gu(e,t.buffer,t.decoder),r}function Gu(e,t,r){var n;return e<t.head.data.length?(n=t.head.data.slice(0,e),t.head.data=t.head.data.slice(e)):e===t.head.data.length?n=t.shift():n=r?Yu(e,t):Ju(e,t),n}function Yu(e,t){var r=t.head,n=1,i=r.data;for(e-=i.length;r=r.next;){var a=r.data,o=e>a.length?a.length:e;if(o===a.length?i+=a:i+=a.slice(0,e),e-=o,e===0){o===a.length?(++n,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=a.slice(o));break}++n}return t.length-=n,i}function Ju(e,t){var r=g.allocUnsafe(e),n=t.head,i=1;for(n.data.copy(r),e-=n.data.length;n=n.next;){var a=n.data,o=e>a.length?a.length:e;if(a.copy(r,r.length-e,0,o),e-=o,e===0){o===a.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=a.slice(o));break}++i}return t.length-=i,r}function si(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,ee(Xu,t,e))}function Xu(e,t){!e.endEmitted&&e.length===0&&(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function Qu(e,t){for(var r=0,n=e.length;r<n;r++)t(e[r],r)}function Qo(e,t){for(var r=0,n=e.length;r<n;r++)if(e[r]===t)return r;return-1}q.WritableState=ci,W(q,R);function eh(){}function th(e,t,r){this.chunk=e,this.encoding=t,this.callback=r,this.next=null}function ci(e,t){Object.defineProperty(this,"buffer",{get:Zo(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.")}),e=e||{},this.objectMode=!!e.objectMode,t instanceof ae&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var r=e.highWaterMark,n=this.objectMode?16:16*1024;this.highWaterMark=r||r===0?r:n,this.highWaterMark=~~this.highWaterMark,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1;var i=e.decodeStrings===!1;this.decodeStrings=!i,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(a){ch(t,a)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new as(this)}ci.prototype.getBuffer=function(){for(var t=this.bufferedRequest,r=[];t;)r.push(t),t=t.next;return r};function q(e){if(!(this instanceof q)&&!(this instanceof ae))return new q(e);this._writableState=new ci(e,this),this.writable=!0,e&&(typeof e.write=="function"&&(this._write=e.write),typeof e.writev=="function"&&(this._writev=e.writev)),R.call(this)}q.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))};function rh(e,t){var r=new Error("write after end");e.emit("error",r),ee(t,r)}function nh(e,t,r,n){var i=!0,a=!1;return r===null?a=new TypeError("May not write null values to stream"):!g.isBuffer(r)&&typeof r!="string"&&r!==void 0&&!t.objectMode&&(a=new TypeError("Invalid non-string/buffer chunk")),a&&(e.emit("error",a),ee(n,a),i=!1),i}q.prototype.write=function(e,t,r){var n=this._writableState,i=!1;return typeof t=="function"&&(r=t,t=null),g.isBuffer(e)?t="buffer":t||(t=n.defaultEncoding),typeof r!="function"&&(r=eh),n.ended?rh(this,r):nh(this,n,e,r)&&(n.pendingcb++,i=ah(this,n,e,t,r)),i},q.prototype.cork=function(){var e=this._writableState;e.corked++},q.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,!e.writing&&!e.corked&&!e.finished&&!e.bufferProcessing&&e.bufferedRequest&&ts(this,e))},q.prototype.setDefaultEncoding=function(t){if(typeof t=="string"&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this};function ih(e,t,r){return!e.objectMode&&e.decodeStrings!==!1&&typeof t=="string"&&(t=g.from(t,r)),t}function ah(e,t,r,n,i){r=ih(t,r,n),g.isBuffer(r)&&(n="buffer");var a=t.objectMode?1:r.length;t.length+=a;var o=t.length<t.highWaterMark;if(o||(t.needDrain=!0),t.writing||t.corked){var s=t.lastBufferedRequest;t.lastBufferedRequest=new th(r,n,i),s?s.next=t.lastBufferedRequest:t.bufferedRequest=t.lastBufferedRequest,t.bufferedRequestCount+=1}else fi(e,t,!1,a,r,n,i);return o}function fi(e,t,r,n,i,a,o){t.writelen=n,t.writecb=o,t.writing=!0,t.sync=!0,r?e._writev(i,t.onwrite):e._write(i,a,t.onwrite),t.sync=!1}function oh(e,t,r,n,i){--t.pendingcb,r?ee(i,n):i(n),e._writableState.errorEmitted=!0,e.emit("error",n)}function sh(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}function ch(e,t){var r=e._writableState,n=r.sync,i=r.writecb;if(sh(r),t)oh(e,r,n,t,i);else{var a=rs(r);!a&&!r.corked&&!r.bufferProcessing&&r.bufferedRequest&&ts(e,r),n?ee(es,e,r,a,i):es(e,r,a,i)}}function es(e,t,r,n){r||fh(e,t),t.pendingcb--,n(),is(e,t)}function fh(e,t){t.length===0&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}function ts(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,i=new Array(n),a=t.corkedRequestsFree;a.entry=r;for(var o=0;r;)i[o]=r,r=r.next,o+=1;fi(e,t,!0,t.length,i,"",a.finish),t.pendingcb++,t.lastBufferedRequest=null,a.next?(t.corkedRequestsFree=a.next,a.next=null):t.corkedRequestsFree=new as(t)}else{for(;r;){var s=r.chunk,f=r.encoding,c=r.callback,l=t.objectMode?1:s.length;if(fi(e,t,!1,l,s,f,c),r=r.next,t.writing)break}r===null&&(t.lastBufferedRequest=null)}t.bufferedRequestCount=0,t.bufferedRequest=r,t.bufferProcessing=!1}q.prototype._write=function(e,t,r){r(new Error("not implemented"))},q.prototype._writev=null,q.prototype.end=function(e,t,r){var n=this._writableState;typeof e=="function"?(r=e,e=null,t=null):typeof t=="function"&&(r=t,t=null),e!=null&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),!n.ending&&!n.finished&&lh(this,n,r)};function rs(e){return e.ending&&e.length===0&&e.bufferedRequest===null&&!e.finished&&!e.writing}function ns(e,t){t.prefinished||(t.prefinished=!0,e.emit("prefinish"))}function is(e,t){var r=rs(t);return r&&(t.pendingcb===0?(ns(e,t),t.finished=!0,e.emit("finish")):ns(e,t)),r}function lh(e,t,r){t.ending=!0,is(e,t),r&&(t.finished?ee(r):e.once("finish",r)),t.ended=!0,e.writable=!1}function as(e){var t=this;this.next=null,this.entry=null,this.finish=function(r){var n=t.entry;for(t.entry=null;n;){var i=n.callback;e.pendingcb--,i(r),n=n.next}e.corkedRequestsFree?e.corkedRequestsFree.next=t:e.corkedRequestsFree=t}}W(ae,N);for(var os=Object.keys(q.prototype),li=0;li<os.length;li++){var ui=os[li];ae.prototype[ui]||(ae.prototype[ui]=q.prototype[ui])}function ae(e){if(!(this instanceof ae))return new ae(e);N.call(this,e),q.call(this,e),e&&e.readable===!1&&(this.readable=!1),e&&e.writable===!1&&(this.writable=!1),this.allowHalfOpen=!0,e&&e.allowHalfOpen===!1&&(this.allowHalfOpen=!1),this.once("end",uh)}function uh(){this.allowHalfOpen||this._writableState.ended||ee(hh,this)}function hh(e){e.end()}W(te,ae);function dh(e){this.afterTransform=function(t,r){return ph(e,t,r)},this.needTransform=!1,this.transforming=!1,this.writecb=null,this.writechunk=null,this.writeencoding=null}function ph(e,t,r){var n=e._transformState;n.transforming=!1;var i=n.writecb;if(!i)return e.emit("error",new Error("no writecb in Transform class"));n.writechunk=null,n.writecb=null,r!=null&&e.push(r),i(t);var a=e._readableState;a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&e._read(a.highWaterMark)}function te(e){if(!(this instanceof te))return new te(e);ae.call(this,e),this._transformState=new dh(this);var t=this;this._readableState.needReadable=!0,this._readableState.sync=!1,e&&(typeof e.transform=="function"&&(this._transform=e.transform),typeof e.flush=="function"&&(this._flush=e.flush)),this.once("prefinish",function(){typeof this._flush=="function"?this._flush(function(r){ss(t,r)}):ss(t)})}te.prototype.push=function(e,t){return this._transformState.needTransform=!1,ae.prototype.push.call(this,e,t)},te.prototype._transform=function(e,t,r){throw new Error("Not implemented")},te.prototype._write=function(e,t,r){var n=this._transformState;if(n.writecb=r,n.writechunk=e,n.writeencoding=t,!n.transforming){var i=this._readableState;(n.needTransform||i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}},te.prototype._read=function(e){var t=this._transformState;t.writechunk!==null&&t.writecb&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0};function ss(e,t){if(t)return e.emit("error",t);var r=e._writableState,n=e._transformState;if(r.length)throw new Error("Calling transform done when ws.length != 0");if(n.transforming)throw new Error("Calling transform done when still transforming");return e.push(null)}W(jt,te);function jt(e){if(!(this instanceof jt))return new jt(e);te.call(this,e)}jt.prototype._transform=function(e,t,r){r(null,e)},W(Ae,R),Ae.Readable=N,Ae.Writable=q,Ae.Duplex=ae,Ae.Transform=te,Ae.PassThrough=jt,Ae.Stream=Ae;function Ae(){R.call(this)}Ae.prototype.pipe=function(e,t){var r=this;function n(l){e.writable&&e.write(l)===!1&&r.pause&&r.pause()}r.on("data",n);function i(){r.readable&&r.resume&&r.resume()}e.on("drain",i),!e._isStdio&&(!t||t.end!==!1)&&(r.on("end",o),r.on("close",s));var a=!1;function o(){a||(a=!0,e.end())}function s(){a||(a=!0,typeof e.destroy=="function"&&e.destroy())}function f(l){if(c(),R.listenerCount(this,"error")===0)throw l}r.on("error",f),e.on("error",f);function c(){r.removeListener("data",n),e.removeListener("drain",i),r.removeListener("end",o),r.removeListener("close",s),r.removeListener("error",f),e.removeListener("error",f),r.removeListener("end",c),r.removeListener("close",c),e.removeListener("close",c)}return r.on("end",c),r.on("close",c),e.on("close",c),e.emit("pipe",r),e};class cs extends R{constructor({resource:t}){super(),this.resource=t,this.client=t.client,this.stream=new af({highWaterMark:this.client.parallelism*3,start:this._start.bind(this),pull:this._pull.bind(this),cancel:this._cancel.bind(this)})}build(){return this.stream.getReader()}async _start(t){this.controller=t,this.continuationToken=null,this.closeNextIteration=!1}async _pull(t){if(this.closeNextIteration){t.close();return}const r=await this.client.listObjects({prefix:`resource=${this.resource.name}`,continuationToken:this.continuationToken}),n=r?.Contents.map(i=>i.Key).map(i=>i.replace(this.client.config.keyPrefix,"")).map(i=>i.startsWith("/")?i.replace("/",""):i).map(i=>i.replace(`resource=${this.resource.name}/id=`,""));this.continuationToken=r.NextContinuationToken,this.enqueue(n),r.IsTruncated||(this.closeNextIteration=!0)}enqueue(t){t.forEach(r=>{this.controller.enqueue(r),this.emit("id",r)})}_cancel(t){console.warn("Stream cancelled",t)}}class fs extends cs{enqueue(t){this.controller.enqueue(t),this.emit("page",t)}}class ls extends R{constructor({resource:t,batchSize:r=10,concurrency:n=5}){if(super(),!t)throw new Error("Resource is required for ResourceReader");this.resource=t,this.client=t.client,this.batchSize=r,this.concurrency=n,this.input=new fs({resource:this.resource}),this.transform=new te({objectMode:!0,transform:this._transform.bind(this)}),this.input.on("data",i=>{this.transform.write(i)}),this.input.on("end",()=>{this.transform.end()}),this.input.on("error",i=>{this.emit("error",i)}),this.transform.on("data",i=>{this.emit("data",i)}),this.transform.on("end",()=>{this.emit("end")}),this.transform.on("error",i=>{this.emit("error",i)})}build(){return this}async _transform(t,r,n){try{await he.for(t).withConcurrency(this.concurrency).handleError(async(i,a)=>{this.emit("error",i,a)}).process(async i=>{const a=await this.resource.get(i);return this.push(a),a}),n()}catch(i){n(i)}}resume(){this.input.resume()}}class us extends R{constructor({resource:t,batchSize:r=10,concurrency:n=5}){super(),this.resource=t,this.client=t.client,this.batchSize=r,this.concurrency=n,this.buffer=[],this.writing=!1,this.writable=new q({objectMode:!0,write:this._write.bind(this)}),this.writable.on("finish",()=>{this.emit("finish")}),this.writable.on("error",i=>{this.emit("error",i)})}build(){return this}write(t){return this.buffer.push(t),this._maybeWrite().catch(r=>{this.emit("error",r)}),!0}end(){this.ended=!0,this._maybeWrite().catch(t=>{this.emit("error",t)})}async _maybeWrite(){if(!this.writing&&!(this.buffer.length===0&&!this.ended)){for(this.writing=!0;this.buffer.length>0;){const t=this.buffer.splice(0,this.batchSize);try{await he.for(t).withConcurrency(this.concurrency).handleError(async(r,n)=>{this.emit("error",r,n)}).process(async r=>{await this.resource.insert(r)})}catch(r){this.emit("error",r)}}this.writing=!1,this.ended&&this.writable.emit("finish")}}async _write(t,r,n){n()}}function yt(e){return new Promise((t,r)=>{const n=[];e.on("data",i=>n.push(i)),e.on("error",r),e.on("end",()=>t(Buffer.concat(n).toString("utf-8")))})}function Ye(e){typeof e!="string"&&(e=String(e));let t=0;for(let r=0;r<e.length;r++){const n=e.codePointAt(r);n<=127?t+=1:n<=2047?t+=2:n<=65535?t+=3:n<=1114111&&(t+=4,n>65535&&r++)}return t}function hi(e){let t=0;for(const r of Object.keys(e))t+=Ye(r);return t}function di(e){return e==null?"":typeof e=="boolean"?e?"1":"0":typeof e=="number"?String(e):typeof e=="string"?e:Array.isArray(e)?e.length===0?"[]":e.map(t=>String(t)).join("|"):typeof e=="object"?JSON.stringify(e):String(e)}function Ft(e){const t={};for(const[r,n]of Object.entries(e)){const i=di(n),a=Ye(i);t[r]=a}return t}function Ce(e){const t=Ft(e),r=Object.values(t).reduce((i,a)=>i+a,0),n=hi(e);return r+n}function yh(e){const t=Ft(e),r=hi(e),n=Object.values(t).reduce((o,s)=>o+s,0),i=n+r,a=Object.entries(t).sort(([,o],[,s])=>s-o).map(([o,s])=>({attribute:o,size:s,percentage:(s/i*100).toFixed(2)+"%"}));return{total:i,valueSizes:t,namesSize:r,valueTotal:n,breakdown:a,detailedBreakdown:{values:n,names:r,total:i}}}const $=2048;async function gh({resource:e,data:t,mappedData:r}){const n=Ce(r);if(n>$)throw new Error(`S3 metadata size exceeds 2KB limit. Current size: ${n} bytes, limit: ${$} bytes`);return{mappedData:r,body:""}}async function vh({resource:e,id:t,data:r,mappedData:n}){const i=Ce(n);if(i>$)throw new Error(`S3 metadata size exceeds 2KB limit. Current size: ${i} bytes, limit: ${$} bytes`);return{mappedData:n,body:""}}async function wh({resource:e,id:t,data:r,mappedData:n}){const i=Ce(n);if(i>$)throw new Error(`S3 metadata size exceeds 2KB limit. Current size: ${i} bytes, limit: ${$} bytes`);return{mappedData:n,body:""}}async function bh({resource:e,metadata:t,body:r}){return{metadata:t,body:r}}var _h=Object.freeze({__proto__:null,S3_METADATA_LIMIT_BYTES:$,handleGet:bh,handleInsert:gh,handleUpdate:vh,handleUpsert:wh});async function mh({resource:e,data:t,mappedData:r}){const n=Ce(r);return n>$&&e.emit("exceedsLimit",{operation:"insert",totalSize:n,limit:$,excess:n-$,data:t}),{mappedData:r,body:""}}async function xh({resource:e,id:t,data:r,mappedData:n}){const i=Ce(n);return i>$&&e.emit("exceedsLimit",{operation:"update",id:t,totalSize:i,limit:$,excess:i-$,data:r}),{mappedData:n,body:""}}async function Eh({resource:e,id:t,data:r,mappedData:n}){const i=Ce(n);return i>$&&e.emit("exceedsLimit",{operation:"upsert",id:t,totalSize:i,limit:$,excess:i-$,data:r}),{mappedData:n,body:""}}async function Sh({resource:e,metadata:t,body:r}){return{metadata:t,body:r}}var Ah=Object.freeze({__proto__:null,handleGet:Sh,handleInsert:mh,handleUpdate:xh,handleUpsert:Eh});const hs="...",ds=Ye(hs);async function kh({resource:e,data:t,mappedData:r}){return pi({resource:e,data:t,mappedData:r})}async function Rh({resource:e,id:t,data:r,mappedData:n}){return pi({resource:e,data:r,mappedData:n})}async function Oh({resource:e,id:t,data:r,mappedData:n}){return pi({resource:e,data:r,mappedData:n})}async function Ih({resource:e,metadata:t,body:r}){return{metadata:t,body:r}}function pi({resource:e,data:t,mappedData:r}){const n=Ft(r),i=Object.entries(n).sort(([,s],[,f])=>s-f),a={};let o=0;for(const[s,f]of i){const c=$-o;if(f<=c)a[s]=r[s],o+=f;else if(c>ds){const l=c-ds,h=di(r[s]);let d="",u=0;for(let p=0;p<h.length;p++){const y=h[p],w=Ye(y);if(u+w<=l)d+=y,u+=w;else break}a[s]=d+hs,o=$;break}else break}return{mappedData:a,body:""}}var Th=Object.freeze({__proto__:null,handleGet:Ih,handleInsert:kh,handleUpdate:Rh,handleUpsert:Oh});const wr="$overflow",yi="true",Ph=Ye(wr)+Ye(yi);async function jh({resource:e,data:t,mappedData:r}){return gi({resource:e,data:t,mappedData:r})}async function Fh({resource:e,id:t,data:r,mappedData:n}){return gi({resource:e,data:r,mappedData:n})}async function Ch({resource:e,id:t,data:r,mappedData:n}){return gi({resource:e,data:r,mappedData:n})}async function Dh({resource:e,metadata:t,body:r}){if(t[wr]===yi)try{const n=r?JSON.parse(r):{},i={...t};return delete i[wr],{metadata:{...i,...n},body:""}}catch{return{metadata:t,body:r}}return{metadata:t,body:r}}function gi({resource:e,data:t,mappedData:r}){if(Ce(r)<=$)return{mappedData:r,body:""};const i=$-Ph,a=Ft(r),o=Object.entries(a).sort(([,h],[,d])=>h-d),s={},f={};let c=0;for(const[h,d]of o)c+d<=i?(s[h]=r[h],c+=d):f[h]=r[h];s[wr]=yi;const l=Object.keys(f).length>0?JSON.stringify(f):"";return{mappedData:s,body:l}}var Mh=Object.freeze({__proto__:null,handleGet:Dh,handleInsert:jh,handleUpdate:Fh,handleUpsert:Ch});const br={"user-management":Ah,"enforce-limits":_h,"data-truncate":Th,"body-overflow":Mh};function ge(e){const t=br[e];if(!t)throw new Error(`Unknown behavior: ${e}. Available behaviors: ${Object.keys(br).join(", ")}`);return t}const Nh=Object.keys(br),ps="user-management";function ys(e){return Lr(qi,e)}class _r extends R{constructor(t){super();const r=Lh(t);if(!r.isValid)throw new Error(`Invalid Resource configuration:
30
- ${r.errors.join(`
31
- `)}`);const{name:n,client:i,version:a="1",attributes:o={},behavior:s=ps,passphrase:f="secret",parallelism:c=10,observers:l=[],cache:h=!1,autoDecrypt:d=!0,timestamps:u=!1,partitions:p={},paranoid:y=!0,allNestedObjectsOptional:w=!0,hooks:b={},idGenerator:m,idSize:x=22}=t;if(this.name=n,this.client=i,this.version=a,this.behavior=s,this.observers=l,this.parallelism=c,this.passphrase=f??"secret",this.idGenerator=this.configureIdGenerator(m,x),this.config={cache:h,hooks:b,paranoid:y,timestamps:u,partitions:p,autoDecrypt:d,allNestedObjectsOptional:w},this.hooks={preInsert:[],afterInsert:[],preUpdate:[],afterUpdate:[],preDelete:[],afterDelete:[]},this.attributes=o||{},this.applyConfiguration(),b){for(const[v,S]of Object.entries(b))if(Array.isArray(S)&&this.hooks[v])for(const O of S)typeof O=="function"&&this.hooks[v].push(O.bind(this))}}configureIdGenerator(t,r){return typeof t=="function"?t:typeof t=="number"&&t>0?ys(t):typeof r=="number"&&r>0?ys(r):qr}get options(){return{timestamps:this.config.timestamps,partitions:this.config.partitions||{},cache:this.config.cache,autoDecrypt:this.config.autoDecrypt,paranoid:this.config.paranoid,allNestedObjectsOptional:this.config.allNestedObjectsOptional}}export(){const t=this.schema.export();return t.behavior=this.behavior,t.timestamps=this.config.timestamps,t.partitions=this.config.partitions||{},t.paranoid=this.config.paranoid,t.allNestedObjectsOptional=this.config.allNestedObjectsOptional,t.autoDecrypt=this.config.autoDecrypt,t.cache=this.config.cache,t.hooks=this.hooks,t}applyConfiguration(){this.config.timestamps&&(this.attributes.createdAt||(this.attributes.createdAt="string|optional"),this.attributes.updatedAt||(this.attributes.updatedAt="string|optional"),this.config.partitions||(this.config.partitions={}),this.config.partitions.byCreatedDate||(this.config.partitions.byCreatedDate={fields:{createdAt:"date|maxlength:10"}}),this.config.partitions.byUpdatedDate||(this.config.partitions.byUpdatedDate={fields:{updatedAt:"date|maxlength:10"}})),this.setupPartitionHooks(),this.schema=new be({name:this.name,attributes:this.attributes,passphrase:this.passphrase,version:this.version,options:{autoDecrypt:this.config.autoDecrypt,allNestedObjectsOptional:this.config.allNestedObjectsOptional}}),this.validatePartitions()}updateAttributes(t){const r=this.attributes;return this.attributes=t,this.applyConfiguration(),{oldAttributes:r,newAttributes:t}}addHook(t,r){this.hooks[t]&&this.hooks[t].push(r.bind(this))}async executeHooks(t,r){if(!this.hooks[t])return r;let n=r;for(const i of this.hooks[t])n=await i(n);return n}setupPartitionHooks(){if(!this.config.partitions)return;const t=this.config.partitions;Object.keys(t).length!==0&&(this.hooks.afterInsert||(this.hooks.afterInsert=[]),this.hooks.afterInsert.push(async r=>(await this.createPartitionReferences(r),r)),this.hooks.afterDelete||(this.hooks.afterDelete=[]),this.hooks.afterDelete.push(async r=>(await this.deletePartitionReferences(r),r)))}async validate(t){const r={original:Rt(t),isValid:!1,errors:[]},n=await this.schema.validate(t,{mutateOriginal:!0});return n===!0?r.isValid=!0:r.errors=n,r.data=t,r}validatePartitions(){if(!this.config.partitions)return;const t=this.config.partitions;if(Object.keys(t).length===0)return;const r=Object.keys(this.attributes||{});for(const[n,i]of Object.entries(t))if(i.fields){for(const a of Object.keys(i.fields))if(!this.fieldExistsInAttributes(a))throw new Error(`Partition '${n}' uses field '${a}' which does not exist in resource attributes. Available fields: ${r.join(", ")}.`)}}fieldExistsInAttributes(t){if(!t.includes("."))return Object.keys(this.attributes||{}).includes(t);const r=t.split(".");let n=this.attributes||{};for(const i of r){if(!n||typeof n!="object"||!(i in n))return!1;n=n[i]}return!0}applyPartitionRule(t,r){if(t==null)return t;let n=t;if(typeof r=="string"&&r.includes("maxlength:")){const i=r.match(/maxlength:(\d+)/);if(i){const a=parseInt(i[1]);typeof n=="string"&&n.length>a&&(n=n.substring(0,a))}}if(r.includes("date")){if(n instanceof Date)n=n.toISOString().split("T")[0];else if(typeof n=="string")try{if(n.includes("T")&&n.includes("Z"))n=n.split("T")[0];else{const i=new Date(n);isNaN(i.getTime())||(n=i.toISOString().split("T")[0])}}catch{}}return n}getResourceKey(t){return me(`resource=${this.name}`,`v=${this.version}`,`id=${t}`)}getPartitionKey({partitionName:t,id:r,data:n}){if(!this.config.partitions||!this.config.partitions[t])throw new Error(`Partition '${t}' not found`);const i=this.config.partitions[t],a=[],o=Object.entries(i.fields).sort(([f],[c])=>f.localeCompare(c));for(const[f,c]of o){const l=this.getNestedFieldValue(n,f),h=this.applyPartitionRule(l,c);if(h==null)return null;a.push(`${f}=${h}`)}if(a.length===0)return null;const s=r||n?.id;return s?me(`resource=${this.name}`,`partition=${t}`,...a,`id=${s}`):null}getNestedFieldValue(t,r){if(!r.includes("."))return t[r];const n=r.split(".");let i=t;for(const a of n){if(!i||typeof i!="object"||!(a in i))return;i=i[a]}return i}async insert({id:t,...r}){this.options.timestamps&&(r.createdAt=new Date().toISOString(),r.updatedAt=new Date().toISOString());const n=await this.executeHooks("preInsert",r),{errors:i,isValid:a,data:o}=await this.validate(n);if(!a)throw new rr({bucket:this.client.config.bucket,resourceName:this.name,attributes:n,validation:i});!t&&t!==0&&(t=this.idGenerator());const s=await this.schema.mapper(o),f=ge(this.behavior),{mappedData:c,body:l}=await f.handleInsert({resource:this,data:o,mappedData:s}),h=this.getResourceKey(t);let d;if(l&&l!=="")try{JSON.parse(l),d="application/json"}catch{}await this.client.putObject({metadata:c,key:h,body:l,contentType:d});const u=kt({id:t},o);return await this.executeHooks("afterInsert",u),this.emit("insert",u),u}async get(t){const r=this.getResourceKey(t);try{const n=await this.client.headObject(r),i=this.extractVersionFromKey(r)||this.version;let o=await(await this.getSchemaForVersion(i)).unmapper(n.Metadata);const s=ge(this.behavior);let f="";if(n.ContentLength>0)try{const h=await this.client.getObject(r);f=await yt(h.Body)}catch(h){console.warn(`Failed to read body for resource ${t}:`,h.message),f=""}const{metadata:c}=await s.handleGet({resource:this,metadata:o,body:f});let l=c;return l.id=t,l._contentLength=n.ContentLength,l._lastModified=n.LastModified,l._hasContent=n.ContentLength>0,l._mimeType=n.ContentType||null,n.VersionId&&(l._versionId=n.VersionId),n.Expiration&&(l._expiresAt=n.Expiration),l._definitionHash=this.getDefinitionHash(),this.emit("get",l),l}catch(n){if(n.message.includes("Cipher job failed")||n.message.includes("OperationError")||n.originalError?.message?.includes("Cipher job failed"))try{console.warn(`Decryption failed for resource ${t}, attempting to get raw metadata`);const a=await this.client.headObject(r),o=this.extractVersionFromKey(r)||this.version;let f=await new be({name:this.name,attributes:this.attributes,passphrase:this.passphrase,version:o,options:{...this.config,autoDecrypt:!1,autoEncrypt:!1}}).unmapper(a.Metadata);const c=ge(this.behavior);let l="";if(a.ContentLength>0)try{const u=await this.client.getObject(r);l=await yt(u.Body)}catch(u){console.warn(`Failed to read body for resource ${t}:`,u.message),l=""}const{metadata:h}=await c.handleGet({resource:this,metadata:f,body:l});let d=h;return d.id=t,d._contentLength=a.ContentLength,d._lastModified=a.LastModified,d._hasContent=a.ContentLength>0,d._mimeType=a.ContentType||null,d._version=o,d._decryptionFailed=!0,a.VersionId&&(d._versionId=a.VersionId),a.Expiration&&(d._expiresAt=a.Expiration),d._definitionHash=this.getDefinitionHash(),this.emit("get",d),d}catch(a){console.error(`Fallback attempt also failed for resource ${t}:`,a.message)}const i=new Error(`Failed to get resource with id '${t}': ${n.message}`);throw i.originalError=n,i.resourceId=t,i.resourceKey=r,i}}async exists(t){try{const r=this.getResourceKey(t);return await this.client.headObject(r),!0}catch{return!1}}async update(t,r){const n=await this.get(t);this.config.timestamps&&(r.updatedAt=new Date().toISOString());const i=await this.executeHooks("preUpdate",r),a=kt(n,i);delete a.id;const{isValid:o,errors:s,data:f}=await this.validate(a);if(!o)throw new rr({bucket:this.client.bucket,resourceName:this.name,attributes:i,validation:s});const c={...n,id:t},l={...f,id:t};await this.handlePartitionReferenceUpdates(c,l);const h=await this.schema.mapper(f),d=ge(this.behavior),{mappedData:u,body:p}=await d.handleUpdate({resource:this,id:t,data:f,mappedData:h}),y=this.getResourceKey(t);let w,b=p;if(p===""&&this.behavior!=="body-overflow")try{const x=await this.client.getObject(y);if(x.ContentLength>0){const v=Buffer.from(await x.Body.transformToByteArray()),S=v.toString();try{JSON.parse(S)}catch{b=v,w=x.ContentType}}}catch{}let m=w;if(b&&b!==""&&!m)try{JSON.parse(b),m="application/json"}catch{}return await this.client.putObject({key:y,body:b,contentType:m,metadata:u}),f.id=t,await this.executeHooks("afterUpdate",f),this.emit("update",i,f),f}async delete(t){let r;try{r=await this.get(t)}catch{r={id:t}}await this.executeHooks("preDelete",r);const n=this.getResourceKey(t),i=await this.client.deleteObject(n);return await this.executeHooks("afterDelete",r),this.emit("delete",t),i}async upsert({id:t,...r}){return await this.exists(t)?this.update(t,r):this.insert({id:t,...r})}async count({partition:t=null,partitionValues:r={}}={}){let n;if(t&&Object.keys(r).length>0){const a=this.config.partitions[t];if(!a)throw new Error(`Partition '${t}' not found`);const o=[],s=Object.entries(a.fields).sort(([f],[c])=>f.localeCompare(c));for(const[f,c]of s){const l=r[f];if(l!=null){const h=this.applyPartitionRule(l,c);o.push(`${f}=${h}`)}}o.length>0?n=`resource=${this.name}/partition=${t}/${o.join("/")}`:n=`resource=${this.name}/partition=${t}`}else n=`resource=${this.name}/v=${this.version}`;const i=await this.client.count({prefix:n});return this.emit("count",i),i}async insertMany(t){const{results:r}=await he.for(t).withConcurrency(this.parallelism).handleError(async(n,i)=>{this.emit("error",n,i),this.observers.map(a=>a.emit("error",this.name,n,i))}).process(async n=>await this.insert(n));return this.emit("insertMany",t.length),r}async deleteMany(t){const r=Hi(t.map(i=>this.getResourceKey(i)),1e3),{results:n}=await he.for(r).withConcurrency(this.parallelism).handleError(async(i,a)=>{this.emit("error",i,a),this.observers.map(o=>o.emit("error",this.name,i,a))}).process(async i=>{const a=await this.client.deleteObjects(i);return i.forEach(o=>{const f=o.split("/").find(l=>l.startsWith("id=")),c=f?f.replace("id=",""):null;c&&(this.emit("deleted",c),this.observers.map(l=>l.emit("deleted",this.name,c)))}),a});return this.emit("deleteMany",t.length),n}async deleteAll(){if(this.config.paranoid!==!1)throw new Error(`deleteAll() is a dangerous operation and requires paranoid: false option. Current paranoid setting: ${this.config.paranoid}`);const t=`resource=${this.name}/v=${this.version}`,r=await this.client.deleteAll({prefix:t});return this.emit("deleteAll",{version:this.version,prefix:t,deletedCount:r}),{deletedCount:r,version:this.version}}async deleteAllData(){if(this.config.paranoid!==!1)throw new Error(`deleteAllData() is a dangerous operation and requires paranoid: false option. Current paranoid setting: ${this.config.paranoid}`);const t=`resource=${this.name}`,r=await this.client.deleteAll({prefix:t});return this.emit("deleteAllData",{resource:this.name,prefix:t,deletedCount:r}),{deletedCount:r,resource:this.name}}async listIds({partition:t=null,partitionValues:r={},limit:n,offset:i=0}={}){let a;if(t&&Object.keys(r).length>0){if(!this.config.partitions||!this.config.partitions[t])throw new Error(`Partition '${t}' not found`);const f=this.config.partitions[t],c=[],l=Object.entries(f.fields).sort(([h],[d])=>h.localeCompare(d));for(const[h,d]of l){const u=r[h];if(u!=null){const p=this.applyPartitionRule(u,d);c.push(`${h}=${p}`)}}c.length>0?a=`resource=${this.name}/partition=${t}/${c.join("/")}`:a=`resource=${this.name}/partition=${t}`}else a=`resource=${this.name}/v=${this.version}`;const s=(await this.client.getKeysPage({prefix:a,offset:i,amount:n||1e3})).map(f=>{const l=f.split("/").find(h=>h.startsWith("id="));return l?l.replace("id=",""):null}).filter(Boolean);return this.emit("listIds",s.length),s}async list({partition:t=null,partitionValues:r={},limit:n,offset:i=0}={}){try{if(!t){let y=[];try{y=await this.listIds({partition:t,partitionValues:r})}catch(v){return console.warn("Failed to get list IDs:",v.message),[]}let w=y.slice(i);n&&(w=w.slice(0,n));const{results:b,errors:m}=await he.for(w).withConcurrency(this.parallelism).handleError(async(v,S)=>(console.warn(`Failed to get resource ${S}:`,v.message),null)).process(async v=>{try{return await this.get(v)}catch(S){if(S.message.includes("Cipher job failed")||S.message.includes("OperationError"))return console.warn(`Decryption failed for ${v}, returning basic info`),{id:v,_decryptionFailed:!0,_error:S.message};throw S}}),x=b.filter(v=>v!==null);return this.emit("list",{partition:t,partitionValues:r,count:x.length,errors:m.length}),x}if(!this.config.partitions||!this.config.partitions[t])return console.warn(`Partition '${t}' not found in resource '${this.name}'`),this.emit("list",{partition:t,partitionValues:r,count:0,errors:0}),[];const a=this.config.partitions[t],o=[],s=Object.entries(a.fields).sort(([y],[w])=>y.localeCompare(w));for(const[y,w]of s){const b=r[y];if(b!=null){const m=this.applyPartitionRule(b,w);o.push(`${y}=${m}`)}}let f;o.length>0?f=`resource=${this.name}/partition=${t}/${o.join("/")}`:f=`resource=${this.name}/partition=${t}`;let c=[];try{c=await this.client.getAllKeys({prefix:f})}catch(y){return console.warn("Failed to get partition keys:",y.message),[]}let h=c.map(y=>{const b=y.split("/").find(m=>m.startsWith("id="));return b?b.replace("id=",""):null}).filter(Boolean).slice(i);n&&(h=h.slice(0,n));const{results:d,errors:u}=await he.for(h).withConcurrency(this.parallelism).handleError(async(y,w)=>(console.warn(`Failed to get partition resource ${w}:`,y.message),null)).process(async y=>{try{const w=c.find(x=>x.includes(`id=${y}`));if(!w)throw new Error(`Partition key not found for ID ${y}`);const b=w.split("/"),m={};for(const[x,v]of s){const S=b.find(O=>O.startsWith(`${x}=`));if(S){const O=S.replace(`${x}=`,"");m[x]=O}}return await this.getFromPartition({id:y,partitionName:t,partitionValues:m})}catch(w){if(w.message.includes("Cipher job failed")||w.message.includes("OperationError"))return console.warn(`Decryption failed for partition resource ${y}, returning basic info`),{id:y,_partition:t,_partitionValues:r,_decryptionFailed:!0,_error:w.message};throw w}}),p=d.filter(y=>y!==null);return this.emit("list",{partition:t,partitionValues:r,count:p.length,errors:u.length}),p}catch(a){return a.message.includes("Partition '")&&a.message.includes("' not found")?(console.warn("Partition error in list method:",a.message),this.emit("list",{partition:t,partitionValues:r,count:0,errors:1}),[]):(console.error("Critical error in list method:",a.message),this.emit("list",{partition:t,partitionValues:r,count:0,errors:1}),[])}}async getMany(t){const{results:r,errors:n}=await he.for(t).withConcurrency(this.client.parallelism).handleError(async(i,a)=>(console.warn(`Failed to get resource ${a}:`,i.message),{id:a,_error:i.message,_decryptionFailed:i.message.includes("Cipher job failed")||i.message.includes("OperationError")})).process(async i=>{this.emit("id",i);try{const a=await this.get(i);return this.emit("data",a),a}catch(a){if(a.message.includes("Cipher job failed")||a.message.includes("OperationError"))return console.warn(`Decryption failed for ${i}, returning basic info`),{id:i,_decryptionFailed:!0,_error:a.message};throw a}});return this.emit("getMany",t.length),r}async getAll(){let t=await this.listIds();if(t.length===0)return[];const{results:r,errors:n}=await he.for(t).withConcurrency(this.client.parallelism).handleError(async(i,a)=>(console.warn(`Failed to get resource ${a}:`,i.message),{id:a,_error:i.message,_decryptionFailed:i.message.includes("Cipher job failed")||i.message.includes("OperationError")})).process(async i=>{try{return await this.get(i)}catch(a){if(a.message.includes("Cipher job failed")||a.message.includes("OperationError"))return console.warn(`Decryption failed for ${i}, returning basic info`),{id:i,_decryptionFailed:!0,_error:a.message};throw a}});return this.emit("getAll",r.length),r}async page({offset:t=0,size:r=100,partition:n=null,partitionValues:i={},skipCount:a=!1}={}){try{let o=null,s=null;if(!a)try{o=await this.count({partition:n,partitionValues:i}),s=Math.ceil(o/r)}catch(h){console.warn("Failed to get count for page:",h.message),o=null,s=null}const f=Math.floor(t/r);let c=[];try{c=await this.list({partition:n,partitionValues:i,limit:r,offset:t})}catch(h){console.warn("Failed to get items for page:",h.message),c=[]}const l={items:c,totalItems:o,page:f,pageSize:r,totalPages:s,_debug:{requestedSize:r,requestedOffset:t,actualItemsReturned:c.length,skipCount:a,hasTotalItems:o!==null}};return this.emit("page",l),l}catch(o){return console.error("Critical error in page method:",o.message),{items:[],totalItems:null,page:Math.floor(t/r),pageSize:r,totalPages:null,_debug:{requestedSize:r,requestedOffset:t,actualItemsReturned:0,skipCount:a,hasTotalItems:!1,error:o.message}}}}readable(){return new ls({resource:this}).build()}writable(){return new us({resource:this}).build()}async setContent({id:t,buffer:r,contentType:n="application/octet-stream"}){const i=await this.get(t);if(!i)throw new Error(`Resource with id '${t}' not found`);const a={...i,_hasContent:!0,_contentLength:r.length,_mimeType:n};return await this.client.putObject({key:this.getResourceKey(t),metadata:await this.schema.mapper(a),body:r,contentType:n}),this.emit("setContent",{id:t,contentType:n,contentLength:r.length}),a}async content(t){const r=this.getResourceKey(t);try{const n=await this.client.getObject(r),i=Buffer.from(await n.Body.transformToByteArray()),a=n.ContentType||null;return this.emit("content",t,i.length,a),{buffer:i,contentType:a}}catch(n){if(n.name==="NoSuchKey")return{buffer:null,contentType:null};throw n}}async hasContent(t){const r=this.getResourceKey(t);try{return(await this.client.headObject(r)).ContentLength>0}catch{return!1}}async deleteContent(t){const r=this.getResourceKey(t),i=(await this.client.headObject(r)).Metadata||{},a=await this.client.putObject({key:r,body:"",metadata:i});return this.emit("deleteContent",t),a}getDefinitionHash(){const t={attributes:this.attributes,behavior:this.behavior},r=wo(t);return`sha256:${Gi("sha256").update(r).digest("hex")}`}extractVersionFromKey(t){const n=t.split("/").find(i=>i.startsWith("v="));return n?n.replace("v=",""):null}async getSchemaForVersion(t){if(t===this.version)return this.schema;try{return new be({name:this.name,attributes:this.attributes,passphrase:this.passphrase,version:t,options:{...this.config,autoDecrypt:!0,autoEncrypt:!0}})}catch(r){return console.warn(`Failed to create compatible schema for version ${t}, using current schema:`,r.message),this.schema}}async createPartitionReferences(t){const r=this.config.partitions;if(!(!r||Object.keys(r).length===0))for(const[n,i]of Object.entries(r)){const a=this.getPartitionKey({partitionName:n,id:t.id,data:t});if(a){const o=await this.schema.mapper(t),s=ge(this.behavior),{mappedData:f,body:c}=await s.handleInsert({resource:this,data:t,mappedData:o}),l={...f,_version:this.version};let h;if(c&&c!=="")try{JSON.parse(c),h="application/json"}catch{}await this.client.putObject({key:a,metadata:l,body:c,contentType:h})}}}async deletePartitionReferences(t){const r=this.config.partitions;if(!r||Object.keys(r).length===0)return;const n=[];for(const[i,a]of Object.entries(r)){const o=this.getPartitionKey({partitionName:i,id:t.id,data:t});o&&n.push(o)}if(n.length>0)try{await this.client.deleteObjects(n)}catch(i){console.warn("Some partition objects could not be deleted:",i.message)}}async query(t={},{limit:r=100,offset:n=0,partition:i=null,partitionValues:a={}}={}){if(Object.keys(t).length===0)return await this.list({partition:i,partitionValues:a,limit:r,offset:n});const o=[];let s=n;const f=Math.min(r,50);for(;o.length<r;){const c=await this.list({partition:i,partitionValues:a,limit:f,offset:s});if(c.length===0)break;const l=c.filter(h=>Object.entries(t).every(([d,u])=>h[d]===u));if(o.push(...l),s+=f,c.length<f)break}return o.slice(0,r)}async handlePartitionReferenceUpdates(t,r){const n=this.config.partitions;if(!n||Object.keys(n).length===0)return;for(const[a,o]of Object.entries(n))try{await this.handlePartitionReferenceUpdate(a,o,t,r)}catch(s){console.warn(`Failed to update partition references for ${a}:`,s.message)}const i=r.id||t.id;for(const[a,o]of Object.entries(n)){const s=`resource=${this.name}/partition=${a}`;let f=[];try{f=await this.client.getAllKeys({prefix:s})}catch(l){console.warn(`Aggressive cleanup: could not list keys for partition ${a}:`,l.message);continue}const c=this.getPartitionKey({partitionName:a,id:i,data:r});for(const l of f)if(l.endsWith(`/id=${i}`)&&l!==c)try{await this.client.deleteObject(l)}catch(h){console.warn(`Aggressive cleanup: could not delete stale partition key ${l}:`,h.message)}}}async handlePartitionReferenceUpdate(t,r,n,i){const a=i.id||n.id,o=this.getPartitionKey({partitionName:t,id:a,data:n}),s=this.getPartitionKey({partitionName:t,id:a,data:i});if(o!==s){if(o)try{await this.client.deleteObject(o)}catch(f){console.warn(`Old partition object could not be deleted for ${t}:`,f.message)}if(s)try{const f=await this.schema.mapper(i);f.undefined!==void 0&&delete f.undefined;const c=ge(this.behavior),{mappedData:l,body:h}=await c.handleUpdate({resource:this,id:a,data:i,mappedData:f});l.undefined!==void 0&&delete l.undefined;const d={...l,_version:this.version};d.undefined!==void 0&&delete d.undefined;let u;if(h&&h!=="")try{JSON.parse(h),u="application/json"}catch{}await this.client.putObject({key:s,metadata:d,body:h,contentType:u})}catch(f){console.warn(`New partition object could not be created for ${t}:`,f.message)}}else if(s)try{const f=await this.schema.mapper(i);f.undefined!==void 0&&delete f.undefined;const c=ge(this.behavior),{mappedData:l,body:h}=await c.handleUpdate({resource:this,id:a,data:i,mappedData:f});l.undefined!==void 0&&delete l.undefined;const d={...l,_version:this.version};d.undefined!==void 0&&delete d.undefined;let u;if(h&&h!=="")try{JSON.parse(h),u="application/json"}catch{}await this.client.putObject({key:s,metadata:d,body:h,contentType:u})}catch(f){console.warn(`Partition object could not be updated for ${t}:`,f.message)}}async updatePartitionReferences(t){const r=this.config.partitions;if(!(!r||Object.keys(r).length===0))for(const[n,i]of Object.entries(r)){if(!i||!i.fields||typeof i.fields!="object"){console.warn(`Skipping invalid partition '${n}' in resource '${this.name}'`);continue}const a=this.getPartitionKey({partitionName:n,id:t.id,data:t});if(a){const o=await this.schema.mapper(t),s=ge(this.behavior),{mappedData:f,body:c}=await s.handleUpdate({resource:this,id:t.id,data:t,mappedData:o}),l={...f,_version:this.version};let h;if(c&&c!=="")try{JSON.parse(c),h="application/json"}catch{}try{await this.client.putObject({key:a,metadata:l,body:c,contentType:h})}catch(d){console.warn(`Partition object could not be updated for ${n}:`,d.message)}}}}async getFromPartition({id:t,partitionName:r,partitionValues:n={}}){if(!this.config.partitions||!this.config.partitions[r])throw new Error(`Partition '${r}' not found`);const i=this.config.partitions[r],a=[],o=Object.entries(i.fields).sort(([w],[b])=>w.localeCompare(b));for(const[w,b]of o){const m=n[w];if(m!=null){const x=this.applyPartitionRule(m,b);a.push(`${w}=${x}`)}}if(a.length===0)throw new Error(`No partition values provided for partition '${r}'`);const s=me(`resource=${this.name}`,`partition=${r}`,...a,`id=${t}`),f=await this.client.headObject(s),c=f.Metadata?._version||this.version;let h=await(await this.getSchemaForVersion(c)).unmapper(f.Metadata);const d=ge(this.behavior);let u="";if(f.ContentLength>0)try{const w=await this.client.getObject(s);u=await yt(w.Body)}catch{u=""}const{metadata:p}=await d.handleGet({resource:this,metadata:h,body:u});let y=p;return y.id=t,y._contentLength=f.ContentLength,y._lastModified=f.LastModified,y._hasContent=f.ContentLength>0,y._mimeType=f.ContentType||null,y._partition=r,y._partitionValues=n,f.VersionId&&(y._versionId=f.VersionId),f.Expiration&&(y._expiresAt=f.Expiration),y._definitionHash=this.getDefinitionHash(),y.undefined!==void 0&&delete y.undefined,this.emit("getFromPartition",y),y}}function Lh(e){const t=[];e.name?typeof e.name!="string"?t.push("Resource 'name' must be a string"):e.name.trim()===""&&t.push("Resource 'name' cannot be empty"):t.push("Resource 'name' is required"),e.client||t.push("S3 'client' is required"),e.attributes?typeof e.attributes!="object"||Array.isArray(e.attributes)?t.push("Resource 'attributes' must be an object"):Object.keys(e.attributes).length===0&&t.push("Resource 'attributes' cannot be empty"):t.push("Resource 'attributes' are required"),e.version!==void 0&&typeof e.version!="string"&&t.push("Resource 'version' must be a string"),e.behavior!==void 0&&typeof e.behavior!="string"&&t.push("Resource 'behavior' must be a string"),e.passphrase!==void 0&&typeof e.passphrase!="string"&&t.push("Resource 'passphrase' must be a string"),e.parallelism!==void 0&&(typeof e.parallelism!="number"||!Number.isInteger(e.parallelism)?t.push("Resource 'parallelism' must be an integer"):e.parallelism<1&&t.push("Resource 'parallelism' must be greater than 0")),e.observers!==void 0&&!Array.isArray(e.observers)&&t.push("Resource 'observers' must be an array");const r=["cache","autoDecrypt","timestamps","paranoid","allNestedObjectsOptional"];for(const n of r)e[n]!==void 0&&typeof e[n]!="boolean"&&t.push(`Resource '${n}' must be a boolean`);if(e.idGenerator!==void 0&&(typeof e.idGenerator!="function"&&typeof e.idGenerator!="number"?t.push("Resource 'idGenerator' must be a function or a number (size)"):typeof e.idGenerator=="number"&&e.idGenerator<=0&&t.push("Resource 'idGenerator' size must be greater than 0")),e.idSize!==void 0&&(typeof e.idSize!="number"||!Number.isInteger(e.idSize)?t.push("Resource 'idSize' must be an integer"):e.idSize<=0&&t.push("Resource 'idSize' must be greater than 0")),e.partitions!==void 0)if(typeof e.partitions!="object"||Array.isArray(e.partitions))t.push("Resource 'partitions' must be an object");else for(const[n,i]of Object.entries(e.partitions))if(typeof i!="object"||Array.isArray(i))t.push(`Partition '${n}' must be an object`);else if(!i.fields)t.push(`Partition '${n}' must have a 'fields' property`);else if(typeof i.fields!="object"||Array.isArray(i.fields))t.push(`Partition '${n}.fields' must be an object`);else for(const[a,o]of Object.entries(i.fields))typeof o!="string"&&t.push(`Partition '${n}.fields.${a}' must be a string`);if(e.hooks!==void 0)if(typeof e.hooks!="object"||Array.isArray(e.hooks))t.push("Resource 'hooks' must be an object");else{const n=["preInsert","afterInsert","preUpdate","afterUpdate","preDelete","afterDelete"];for(const[i,a]of Object.entries(e.hooks))if(!n.includes(i))t.push(`Invalid hook event '${i}'. Valid events: ${n.join(", ")}`);else if(!Array.isArray(a))t.push(`Resource 'hooks.${i}' must be an array`);else for(let o=0;o<a.length;o++){const s=a[o];if(typeof s!="function"){if(typeof s=="string")continue;continue}}}return{isValid:t.length===0,errors:t}}class gs extends R{constructor(t){super(),this.version="1",this.s3dbVersion=(()=>{try{return"5.2.0"}catch{return"latest"}})(),this.resources={},this.savedMetadata=null,this.options=t,this.verbose=t.verbose||!1,this.parallelism=parseInt(t.parallelism+"")||10,this.plugins=t.plugins||[],this.cache=t.cache,this.passphrase=t.passphrase||"secret";let r=t.connectionString;if(!r&&(t.bucket||t.accessKeyId||t.secretAccessKey)){const{bucket:n,region:i,accessKeyId:a,secretAccessKey:o,endpoint:s,forcePathStyle:f}=t;if(s){const c=new URL(s);a&&(c.username=encodeURIComponent(a)),o&&(c.password=encodeURIComponent(o)),c.pathname=`/${n||"s3db"}`,f&&c.searchParams.set("forcePathStyle","true"),r=c.toString()}else if(a&&o){const c=new URLSearchParams;c.set("region",i||"us-east-1"),f&&c.set("forcePathStyle","true"),r=`s3://${encodeURIComponent(a)}:${encodeURIComponent(o)}@${n||"s3db"}?${c.toString()}`}}this.client=t.client||new ha({verbose:this.verbose,parallelism:this.parallelism,connectionString:r}),this.bucket=this.client.bucket,this.keyPrefix=this.client.keyPrefix}async connect(){await this.startPlugins();let t=null;if(await this.client.exists("s3db.json")){const n=await this.client.getObject("s3db.json");t=JSON.parse(await yt(n?.Body))}else t=this.blankMetadataStructure(),await this.uploadMetadataFile();this.savedMetadata=t;const r=this.detectDefinitionChanges(t);for(const[n,i]of Object.entries(t.resources||{})){const a=i.currentVersion||"v0",o=i.versions?.[a];o&&(this.resources[n]=new _r({name:n,client:this.client,version:a,attributes:o.attributes,behavior:o.behavior||"user-management",parallelism:this.parallelism,passphrase:this.passphrase,observers:[this],cache:this.cache,timestamps:o.timestamps!==void 0?o.timestamps:!1,partitions:i.partitions||o.partitions||{},paranoid:o.paranoid!==void 0?o.paranoid:!0,allNestedObjectsOptional:o.allNestedObjectsOptional!==void 0?o.allNestedObjectsOptional:!0,autoDecrypt:o.autoDecrypt!==void 0?o.autoDecrypt:!0,hooks:o.hooks||{}}))}r.length>0&&this.emit("resourceDefinitionsChanged",{changes:r,metadata:this.savedMetadata}),this.emit("connected",new Date)}detectDefinitionChanges(t){const r=[];for(const[n,i]of Object.entries(this.resources)){const a=this.generateDefinitionHash(i.export()),o=t.resources?.[n];if(!o)r.push({type:"new",resourceName:n,currentHash:a,savedHash:null});else{const s=o.currentVersion||"v0",c=o.versions?.[s]?.hash;c!==a&&r.push({type:"changed",resourceName:n,currentHash:a,savedHash:c,fromVersion:s,toVersion:this.getNextVersion(o.versions)})}}for(const[n,i]of Object.entries(t.resources||{}))if(!this.resources[n]){const a=i.currentVersion||"v0",o=i.versions?.[a];r.push({type:"deleted",resourceName:n,currentHash:null,savedHash:o?.hash,deletedVersion:a})}return r}generateDefinitionHash(t,r=void 0){const i={...t.attributes};t.timestamps&&(delete i.createdAt,delete i.updatedAt);const a={attributes:i,behavior:r||t.behavior||"user-management"},o=wo(a);return`sha256:${Gi("sha256").update(o).digest("hex")}`}getNextVersion(t={}){const r=Object.keys(t).filter(i=>i.startsWith("v")).map(i=>parseInt(i.substring(1))).filter(i=>!isNaN(i));return`v${(r.length>0?Math.max(...r):-1)+1}`}async startPlugins(){const t=this;if(!Ki(this.plugins)){const r=this.plugins.map(a=>Gc(a)?new a(this):a),n=r.map(async a=>{a.beforeSetup&&await a.beforeSetup(),await a.setup(t),a.afterSetup&&await a.afterSetup()});await Promise.all(n);const i=r.map(async a=>{a.beforeStart&&await a.beforeStart(),await a.start(),a.afterStart&&await a.afterStart()});await Promise.all(i)}}async uploadMetadataFile(){const t={version:this.version,s3dbVersion:this.s3dbVersion,lastUpdated:new Date().toISOString(),resources:{}};Object.entries(this.resources).forEach(([r,n])=>{const i=n.export(),a=this.generateDefinitionHash(i),o=this.savedMetadata?.resources?.[r],s=o?.currentVersion||"v0",f=o?.versions?.[s];let c,l;!f||f.hash!==a?(c=this.getNextVersion(o?.versions),l=!0):(c=s,l=!1),t.resources[r]={currentVersion:c,partitions:n.config.partitions||{},versions:{...o?.versions,[c]:{hash:a,attributes:i.attributes,behavior:i.behavior||"user-management",timestamps:n.config.timestamps,partitions:n.config.partitions,paranoid:n.config.paranoid,allNestedObjectsOptional:n.config.allNestedObjectsOptional,autoDecrypt:n.config.autoDecrypt,cache:n.config.cache,hooks:n.config.hooks,createdAt:l?new Date().toISOString():f?.createdAt}}},n.version!==c&&(n.version=c,n.emit("versionUpdated",{oldVersion:s,newVersion:c}))}),await this.client.putObject({key:"s3db.json",body:JSON.stringify(t,null,2),contentType:"application/json"}),this.savedMetadata=t,this.emit("metadataUploaded",t)}blankMetadataStructure(){return{version:"1",s3dbVersion:this.s3dbVersion,resources:{}}}resourceExists(t){return!!this.resources[t]}resourceExistsWithSameHash({name:t,attributes:r,behavior:n="user-management",options:i={}}){if(!this.resources[t])return{exists:!1,sameHash:!1,hash:null};const a=this.resources[t],o=this.generateDefinitionHash(a.export()),s=new _r({name:t,attributes:r,behavior:n,client:this.client,version:a.version,passphrase:this.passphrase,...i}),f=this.generateDefinitionHash(s.export());return{exists:!0,sameHash:o===f,hash:f,existingHash:o}}async createResource({name:t,attributes:r,behavior:n="user-management",hooks:i,...a}){if(this.resources[t]){const c=this.resources[t];if(Object.assign(c.config,{cache:this.cache,...a}),n&&(c.behavior=n),c.updateAttributes(r),i){for(const[p,y]of Object.entries(i))if(Array.isArray(y)&&c.hooks[p])for(const w of y)typeof w=="function"&&c.hooks[p].push(w.bind(c))}const l=this.generateDefinitionHash(c.export(),c.behavior),h=this.savedMetadata?.resources?.[t],d=h?.currentVersion||"v0",u=h?.versions?.[d];return(!u||u.hash!==l)&&await this.uploadMetadataFile(),this.emit("s3db.resourceUpdated",t),c}const s=this.savedMetadata?.resources?.[t]?.currentVersion||"v0",f=new _r({name:t,attributes:r,behavior:n,observers:[this],client:this.client,version:s,passphrase:this.passphrase,cache:this.cache,hooks:i,...a});return this.resources[t]=f,await this.uploadMetadataFile(),this.emit("s3db.resourceCreated",t),f}resource(t){return this.resources[t]?this.resources[t]:Promise.reject(`resource ${t} does not exist`)}async listResources(){return Object.keys(this.resources).map(t=>({name:t}))}async getResource(t){if(!this.resources[t])throw new Error(`Resource not found: ${t}`);return this.resources[t]}get config(){return{version:this.version,s3dbVersion:this.s3dbVersion,bucket:this.bucket,keyPrefix:this.keyPrefix,parallelism:this.parallelism,verbose:this.verbose}}isConnected(){return!!this.savedMetadata}}class vs extends gs{}class vi extends R{constructor(t={}){super(),this.config=t}async _set(t,r){}async _get(t){}async _del(t){}async _clear(t){}validateKey(t){if(t==null||typeof t!="string"||!t)throw new Error("Invalid key")}async set(t,r){return this.validateKey(t),await this._set(t,r),this.emit("set",r),r}async get(t){this.validateKey(t);const r=await this._get(t);return this.emit("get",r),r}async del(t){this.validateKey(t);const r=await this._del(t);return this.emit("delete",r),r}async delete(t){return this.del(t)}async clear(){const t=await this._clear();return this.emit("clear",t),t}}class $h extends vi{constructor(t={}){super(t),this.cache={},this.meta={},this.maxSize=t.maxSize||0,this.ttl=t.ttl||0}async _set(t,r){if(this.maxSize>0&&Object.keys(this.cache).length>=this.maxSize){const n=Object.entries(this.meta).sort((i,a)=>i[1].ts-a[1].ts)[0]?.[0];n&&(delete this.cache[n],delete this.meta[n])}return this.cache[t]=r,this.meta[t]={ts:Date.now()},r}async _get(t){if(!Object.prototype.hasOwnProperty.call(this.cache,t))return null;if(this.ttl>0){const r=Date.now(),n=this.meta[t];if(n&&r-n.ts>this.ttl*1e3)return delete this.cache[t],delete this.meta[t],null}return this.cache[t]}async _del(t){return delete this.cache[t],delete this.meta[t],!0}async _clear(){return this.cache={},this.meta={},!0}async size(){return Object.keys(this.cache).length}async keys(){return Object.keys(this.cache)}}var ws={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};function Uh(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}function ke(e,t,r,n,i){if(t.subarray&&e.subarray){e.set(t.subarray(r,r+n),i);return}for(var a=0;a<n;a++)e[i+a]=t[r+a]}var mr=Uint8Array,oe=Uint16Array,xr=Int32Array,Bh=4,bs=0,_s=1,zh=2;function gt(e){for(var t=e.length;--t>=0;)e[t]=0}var Zh=0,ms=1,qh=2,Hh=3,Kh=258,wi=29,Ct=256,Dt=Ct+1+wi,vt=30,bi=19,xs=2*Dt+1,Je=15,_i=16,Wh=7,mi=256,Es=16,Ss=17,As=18,xi=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],Er=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],Vh=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],ks=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],Gh=512,Re=new Array((Dt+2)*2);gt(Re);var Mt=new Array(vt*2);gt(Mt);var Nt=new Array(Gh);gt(Nt);var Lt=new Array(Kh-Hh+1);gt(Lt);var Ei=new Array(wi);gt(Ei);var Sr=new Array(vt);gt(Sr);function Si(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}var Rs,Os,Is;function Ai(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function Ts(e){return e<256?Nt[e]:Nt[256+(e>>>7)]}function $t(e,t){e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255}function Q(e,t,r){e.bi_valid>_i-r?(e.bi_buf|=t<<e.bi_valid&65535,$t(e,e.bi_buf),e.bi_buf=t>>_i-e.bi_valid,e.bi_valid+=r-_i):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=r)}function ve(e,t,r){Q(e,r[t*2],r[t*2+1])}function Ps(e,t){var r=0;do r|=e&1,e>>>=1,r<<=1;while(--t>0);return r>>>1}function Yh(e){e.bi_valid===16?($t(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)}function Jh(e,t){var r=t.dyn_tree,n=t.max_code,i=t.stat_desc.static_tree,a=t.stat_desc.has_stree,o=t.stat_desc.extra_bits,s=t.stat_desc.extra_base,f=t.stat_desc.max_length,c,l,h,d,u,p,y=0;for(d=0;d<=Je;d++)e.bl_count[d]=0;for(r[e.heap[e.heap_max]*2+1]=0,c=e.heap_max+1;c<xs;c++)l=e.heap[c],d=r[r[l*2+1]*2+1]+1,d>f&&(d=f,y++),r[l*2+1]=d,!(l>n)&&(e.bl_count[d]++,u=0,l>=s&&(u=o[l-s]),p=r[l*2],e.opt_len+=p*(d+u),a&&(e.static_len+=p*(i[l*2+1]+u)));if(y!==0){do{for(d=f-1;e.bl_count[d]===0;)d--;e.bl_count[d]--,e.bl_count[d+1]+=2,e.bl_count[f]--,y-=2}while(y>0);for(d=f;d!==0;d--)for(l=e.bl_count[d];l!==0;)h=e.heap[--c],!(h>n)&&(r[h*2+1]!==d&&(e.opt_len+=(d-r[h*2+1])*r[h*2],r[h*2+1]=d),l--)}}function js(e,t,r){var n=new Array(Je+1),i=0,a,o;for(a=1;a<=Je;a++)n[a]=i=i+r[a-1]<<1;for(o=0;o<=t;o++){var s=e[o*2+1];s!==0&&(e[o*2]=Ps(n[s]++,s))}}function Xh(){var e,t,r,n,i,a=new Array(Je+1);for(r=0,n=0;n<wi-1;n++)for(Ei[n]=r,e=0;e<1<<xi[n];e++)Lt[r++]=n;for(Lt[r-1]=n,i=0,n=0;n<16;n++)for(Sr[n]=i,e=0;e<1<<Er[n];e++)Nt[i++]=n;for(i>>=7;n<vt;n++)for(Sr[n]=i<<7,e=0;e<1<<Er[n]-7;e++)Nt[256+i++]=n;for(t=0;t<=Je;t++)a[t]=0;for(e=0;e<=143;)Re[e*2+1]=8,e++,a[8]++;for(;e<=255;)Re[e*2+1]=9,e++,a[9]++;for(;e<=279;)Re[e*2+1]=7,e++,a[7]++;for(;e<=287;)Re[e*2+1]=8,e++,a[8]++;for(js(Re,Dt+1,a),e=0;e<vt;e++)Mt[e*2+1]=5,Mt[e*2]=Ps(e,5);Rs=new Si(Re,xi,Ct+1,Dt,Je),Os=new Si(Mt,Er,0,vt,Je),Is=new Si(new Array(0),Vh,0,bi,Wh)}function Fs(e){var t;for(t=0;t<Dt;t++)e.dyn_ltree[t*2]=0;for(t=0;t<vt;t++)e.dyn_dtree[t*2]=0;for(t=0;t<bi;t++)e.bl_tree[t*2]=0;e.dyn_ltree[mi*2]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function Cs(e){e.bi_valid>8?$t(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function Qh(e,t,r,n){Cs(e),$t(e,r),$t(e,~r),ke(e.pending_buf,e.window,t,r,e.pending),e.pending+=r}function Ds(e,t,r,n){var i=t*2,a=r*2;return e[i]<e[a]||e[i]===e[a]&&n[t]<=n[r]}function ki(e,t,r){for(var n=e.heap[r],i=r<<1;i<=e.heap_len&&(i<e.heap_len&&Ds(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!Ds(t,n,e.heap[i],e.depth));)e.heap[r]=e.heap[i],r=i,i<<=1;e.heap[r]=n}function Ms(e,t,r){var n,i,a=0,o,s;if(e.last_lit!==0)do n=e.pending_buf[e.d_buf+a*2]<<8|e.pending_buf[e.d_buf+a*2+1],i=e.pending_buf[e.l_buf+a],a++,n===0?ve(e,i,t):(o=Lt[i],ve(e,o+Ct+1,t),s=xi[o],s!==0&&(i-=Ei[o],Q(e,i,s)),n--,o=Ts(n),ve(e,o,r),s=Er[o],s!==0&&(n-=Sr[o],Q(e,n,s)));while(a<e.last_lit);ve(e,mi,t)}function Ri(e,t){var r=t.dyn_tree,n=t.stat_desc.static_tree,i=t.stat_desc.has_stree,a=t.stat_desc.elems,o,s,f=-1,c;for(e.heap_len=0,e.heap_max=xs,o=0;o<a;o++)r[o*2]!==0?(e.heap[++e.heap_len]=f=o,e.depth[o]=0):r[o*2+1]=0;for(;e.heap_len<2;)c=e.heap[++e.heap_len]=f<2?++f:0,r[c*2]=1,e.depth[c]=0,e.opt_len--,i&&(e.static_len-=n[c*2+1]);for(t.max_code=f,o=e.heap_len>>1;o>=1;o--)ki(e,r,o);c=a;do o=e.heap[1],e.heap[1]=e.heap[e.heap_len--],ki(e,r,1),s=e.heap[1],e.heap[--e.heap_max]=o,e.heap[--e.heap_max]=s,r[c*2]=r[o*2]+r[s*2],e.depth[c]=(e.depth[o]>=e.depth[s]?e.depth[o]:e.depth[s])+1,r[o*2+1]=r[s*2+1]=c,e.heap[1]=c++,ki(e,r,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],Jh(e,t),js(r,f,e.bl_count)}function Ns(e,t,r){var n,i=-1,a,o=t[0*2+1],s=0,f=7,c=4;for(o===0&&(f=138,c=3),t[(r+1)*2+1]=65535,n=0;n<=r;n++)a=o,o=t[(n+1)*2+1],!(++s<f&&a===o)&&(s<c?e.bl_tree[a*2]+=s:a!==0?(a!==i&&e.bl_tree[a*2]++,e.bl_tree[Es*2]++):s<=10?e.bl_tree[Ss*2]++:e.bl_tree[As*2]++,s=0,i=a,o===0?(f=138,c=3):a===o?(f=6,c=3):(f=7,c=4))}function Ls(e,t,r){var n,i=-1,a,o=t[0*2+1],s=0,f=7,c=4;for(o===0&&(f=138,c=3),n=0;n<=r;n++)if(a=o,o=t[(n+1)*2+1],!(++s<f&&a===o)){if(s<c)do ve(e,a,e.bl_tree);while(--s!==0);else a!==0?(a!==i&&(ve(e,a,e.bl_tree),s--),ve(e,Es,e.bl_tree),Q(e,s-3,2)):s<=10?(ve(e,Ss,e.bl_tree),Q(e,s-3,3)):(ve(e,As,e.bl_tree),Q(e,s-11,7));s=0,i=a,o===0?(f=138,c=3):a===o?(f=6,c=3):(f=7,c=4)}}function ed(e){var t;for(Ns(e,e.dyn_ltree,e.l_desc.max_code),Ns(e,e.dyn_dtree,e.d_desc.max_code),Ri(e,e.bl_desc),t=bi-1;t>=3&&e.bl_tree[ks[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t}function td(e,t,r,n){var i;for(Q(e,t-257,5),Q(e,r-1,5),Q(e,n-4,4),i=0;i<n;i++)Q(e,e.bl_tree[ks[i]*2+1],3);Ls(e,e.dyn_ltree,t-1),Ls(e,e.dyn_dtree,r-1)}function rd(e){var t=4093624447,r;for(r=0;r<=31;r++,t>>>=1)if(t&1&&e.dyn_ltree[r*2]!==0)return bs;if(e.dyn_ltree[9*2]!==0||e.dyn_ltree[10*2]!==0||e.dyn_ltree[13*2]!==0)return _s;for(r=32;r<Ct;r++)if(e.dyn_ltree[r*2]!==0)return _s;return bs}var $s=!1;function nd(e){$s||(Xh(),$s=!0),e.l_desc=new Ai(e.dyn_ltree,Rs),e.d_desc=new Ai(e.dyn_dtree,Os),e.bl_desc=new Ai(e.bl_tree,Is),e.bi_buf=0,e.bi_valid=0,Fs(e)}function Us(e,t,r,n){Q(e,(Zh<<1)+(n?1:0),3),Qh(e,t,r)}function id(e){Q(e,ms<<1,3),ve(e,mi,Re),Yh(e)}function ad(e,t,r,n){var i,a,o=0;e.level>0?(e.strm.data_type===zh&&(e.strm.data_type=rd(e)),Ri(e,e.l_desc),Ri(e,e.d_desc),o=ed(e),i=e.opt_len+3+7>>>3,a=e.static_len+3+7>>>3,a<=i&&(i=a)):i=a=r+5,r+4<=i&&t!==-1?Us(e,t,r,n):e.strategy===Bh||a===i?(Q(e,(ms<<1)+(n?1:0),3),Ms(e,Re,Mt)):(Q(e,(qh<<1)+(n?1:0),3),td(e,e.l_desc.max_code+1,e.d_desc.max_code+1,o+1),Ms(e,e.dyn_ltree,e.dyn_dtree)),Fs(e),n&&Cs(e)}function De(e,t,r){return e.pending_buf[e.d_buf+e.last_lit*2]=t>>>8&255,e.pending_buf[e.d_buf+e.last_lit*2+1]=t&255,e.pending_buf[e.l_buf+e.last_lit]=r&255,e.last_lit++,t===0?e.dyn_ltree[r*2]++:(e.matches++,t--,e.dyn_ltree[(Lt[r]+Ct+1)*2]++,e.dyn_dtree[Ts(t)*2]++),e.last_lit===e.lit_bufsize-1}function Oi(e,t,r,n){for(var i=e&65535|0,a=e>>>16&65535|0,o=0;r!==0;){o=r>2e3?2e3:r,r-=o;do i=i+t[n++]|0,a=a+i|0;while(--o);i%=65521,a%=65521}return i|a<<16|0}function od(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=e&1?3988292384^e>>>1:e>>>1;t[r]=e}return t}var sd=od();function z(e,t,r,n){var i=sd,a=n+r;e^=-1;for(var o=n;o<a;o++)e=e>>>8^i[(e^t[o])&255];return e^-1}var Xe=0,cd=1,fd=3,Me=4,Bs=5,Ne=0,zs=1,Le=-2,ld=-3,Ii=-5,ud=-1,hd=1,Ar=2,dd=3,pd=4,yd=2,Ti=8,gd=9,vd=29,wd=256,Pi=wd+1+vd,bd=30,_d=19,md=2*Pi+1,xd=15,P=3,$e=258,se=$e+P+1,Ed=32,ji=42,Fi=69,kr=73,Rr=91,Or=103,Qe=113,Ut=666,U=1,Bt=2,et=3,wt=4,Sd=3;function Ue(e,t){return e.msg=ws[t],t}function Zs(e){return(e<<1)-(e>4?9:0)}function tt(e){for(var t=e.length;--t>=0;)e[t]=0}function Be(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),r!==0&&(ke(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,t.pending===0&&(t.pending_out=0))}function H(e,t){ad(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Be(e.strm)}function T(e,t){e.pending_buf[e.pending++]=t}function zt(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255}function Ad(e,t,r,n){var i=e.avail_in;return i>n&&(i=n),i===0?0:(e.avail_in-=i,ke(t,e.input,e.next_in,i,r),e.state.wrap===1?e.adler=Oi(e.adler,t,i,r):e.state.wrap===2&&(e.adler=z(e.adler,t,i,r)),e.next_in+=i,e.total_in+=i,i)}function qs(e,t){var r=e.max_chain_length,n=e.strstart,i,a,o=e.prev_length,s=e.nice_match,f=e.strstart>e.w_size-se?e.strstart-(e.w_size-se):0,c=e.window,l=e.w_mask,h=e.prev,d=e.strstart+$e,u=c[n+o-1],p=c[n+o];e.prev_length>=e.good_match&&(r>>=2),s>e.lookahead&&(s=e.lookahead);do if(i=t,!(c[i+o]!==p||c[i+o-1]!==u||c[i]!==c[n]||c[++i]!==c[n+1])){n+=2,i++;do;while(c[++n]===c[++i]&&c[++n]===c[++i]&&c[++n]===c[++i]&&c[++n]===c[++i]&&c[++n]===c[++i]&&c[++n]===c[++i]&&c[++n]===c[++i]&&c[++n]===c[++i]&&n<d);if(a=$e-(d-n),n=d-$e,a>o){if(e.match_start=t,o=a,a>=s)break;u=c[n+o-1],p=c[n+o]}}while((t=h[t&l])>f&&--r!==0);return o<=e.lookahead?o:e.lookahead}function Zt(e){var t=e.w_size,r,n,i,a,o;do{if(a=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-se)){ke(e.window,e.window,t,t,0),e.match_start-=t,e.strstart-=t,e.block_start-=t,n=e.hash_size,r=n;do i=e.head[--r],e.head[r]=i>=t?i-t:0;while(--n);n=t,r=n;do i=e.prev[--r],e.prev[r]=i>=t?i-t:0;while(--n);a+=t}if(e.strm.avail_in===0)break;if(n=Ad(e.strm,e.window,e.strstart+e.lookahead,a),e.lookahead+=n,e.lookahead+e.insert>=P)for(o=e.strstart-e.insert,e.ins_h=e.window[o],e.ins_h=(e.ins_h<<e.hash_shift^e.window[o+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[o+P-1])&e.hash_mask,e.prev[o&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=o,o++,e.insert--,!(e.lookahead+e.insert<P)););}while(e.lookahead<se&&e.strm.avail_in!==0)}function kd(e,t){var r=65535;for(r>e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(Zt(e),e.lookahead===0&&t===Xe)return U;if(e.lookahead===0)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((e.strstart===0||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,H(e,!1),e.strm.avail_out===0)||e.strstart-e.block_start>=e.w_size-se&&(H(e,!1),e.strm.avail_out===0))return U}return e.insert=0,t===Me?(H(e,!0),e.strm.avail_out===0?et:wt):(e.strstart>e.block_start&&(H(e,!1),e.strm.avail_out===0),U)}function Ci(e,t){for(var r,n;;){if(e.lookahead<se){if(Zt(e),e.lookahead<se&&t===Xe)return U;if(e.lookahead===0)break}if(r=0,e.lookahead>=P&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+P-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),r!==0&&e.strstart-r<=e.w_size-se&&(e.match_length=qs(e,r)),e.match_length>=P)if(n=De(e,e.strstart-e.match_start,e.match_length-P),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=P){e.match_length--;do e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+P-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else n=De(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(H(e,!1),e.strm.avail_out===0))return U}return e.insert=e.strstart<P-1?e.strstart:P-1,t===Me?(H(e,!0),e.strm.avail_out===0?et:wt):e.last_lit&&(H(e,!1),e.strm.avail_out===0)?U:Bt}function bt(e,t){for(var r,n,i;;){if(e.lookahead<se){if(Zt(e),e.lookahead<se&&t===Xe)return U;if(e.lookahead===0)break}if(r=0,e.lookahead>=P&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+P-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=P-1,r!==0&&e.prev_length<e.max_lazy_match&&e.strstart-r<=e.w_size-se&&(e.match_length=qs(e,r),e.match_length<=5&&(e.strategy===hd||e.match_length===P&&e.strstart-e.match_start>4096)&&(e.match_length=P-1)),e.prev_length>=P&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-P,n=De(e,e.strstart-1-e.prev_match,e.prev_length-P),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=i&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+P-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=P-1,e.strstart++,n&&(H(e,!1),e.strm.avail_out===0))return U}else if(e.match_available){if(n=De(e,0,e.window[e.strstart-1]),n&&H(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return U}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=De(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<P-1?e.strstart:P-1,t===Me?(H(e,!0),e.strm.avail_out===0?et:wt):e.last_lit&&(H(e,!1),e.strm.avail_out===0)?U:Bt}function Rd(e,t){for(var r,n,i,a,o=e.window;;){if(e.lookahead<=$e){if(Zt(e),e.lookahead<=$e&&t===Xe)return U;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=P&&e.strstart>0&&(i=e.strstart-1,n=o[i],n===o[++i]&&n===o[++i]&&n===o[++i])){a=e.strstart+$e;do;while(n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&i<a);e.match_length=$e-(a-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=P?(r=De(e,1,e.match_length-P),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=De(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(H(e,!1),e.strm.avail_out===0))return U}return e.insert=0,t===Me?(H(e,!0),e.strm.avail_out===0?et:wt):e.last_lit&&(H(e,!1),e.strm.avail_out===0)?U:Bt}function Od(e,t){for(var r;;){if(e.lookahead===0&&(Zt(e),e.lookahead===0)){if(t===Xe)return U;break}if(e.match_length=0,r=De(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(H(e,!1),e.strm.avail_out===0))return U}return e.insert=0,t===Me?(H(e,!0),e.strm.avail_out===0?et:wt):e.last_lit&&(H(e,!1),e.strm.avail_out===0)?U:Bt}function we(e,t,r,n,i){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=n,this.func=i}var _t;_t=[new we(0,0,0,0,kd),new we(4,4,8,4,Ci),new we(4,5,16,8,Ci),new we(4,6,32,32,Ci),new we(4,4,16,16,bt),new we(8,16,32,32,bt),new we(8,16,128,128,bt),new we(8,32,128,256,bt),new we(32,128,258,1024,bt),new we(32,258,258,4096,bt)];function Id(e){e.window_size=2*e.w_size,tt(e.head),e.max_lazy_match=_t[e.level].max_lazy,e.good_match=_t[e.level].good_length,e.nice_match=_t[e.level].nice_length,e.max_chain_length=_t[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=P-1,e.match_available=0,e.ins_h=0}function Td(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Ti,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new oe(md*2),this.dyn_dtree=new oe((2*bd+1)*2),this.bl_tree=new oe((2*_d+1)*2),tt(this.dyn_ltree),tt(this.dyn_dtree),tt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new oe(xd+1),this.heap=new oe(2*Pi+1),tt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new oe(2*Pi+1),tt(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function Pd(e){var t;return!e||!e.state?Ue(e,Le):(e.total_in=e.total_out=0,e.data_type=yd,t=e.state,t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?ji:Qe,e.adler=t.wrap===2?0:1,t.last_flush=Xe,nd(t),Ne)}function Hs(e){var t=Pd(e);return t===Ne&&Id(e.state),t}function jd(e,t,r,n,i,a){if(!e)return Le;var o=1;if(t===ud&&(t=6),n<0?(o=0,n=-n):n>15&&(o=2,n-=16),i<1||i>gd||r!==Ti||n<8||n>15||t<0||t>9||a<0||a>pd)return Ue(e,Le);n===8&&(n=9);var s=new Td;return e.state=s,s.strm=e,s.wrap=o,s.gzhead=null,s.w_bits=n,s.w_size=1<<s.w_bits,s.w_mask=s.w_size-1,s.hash_bits=i+7,s.hash_size=1<<s.hash_bits,s.hash_mask=s.hash_size-1,s.hash_shift=~~((s.hash_bits+P-1)/P),s.window=new mr(s.w_size*2),s.head=new oe(s.hash_size),s.prev=new oe(s.w_size),s.lit_bufsize=1<<i+6,s.pending_buf_size=s.lit_bufsize*4,s.pending_buf=new mr(s.pending_buf_size),s.d_buf=1*s.lit_bufsize,s.l_buf=3*s.lit_bufsize,s.level=t,s.strategy=a,s.method=r,Hs(e)}function Fd(e,t){var r,n,i,a;if(!e||!e.state||t>Bs||t<0)return e?Ue(e,Le):Le;if(n=e.state,!e.output||!e.input&&e.avail_in!==0||n.status===Ut&&t!==Me)return Ue(e,e.avail_out===0?Ii:Le);if(n.strm=e,r=n.last_flush,n.last_flush=t,n.status===ji)if(n.wrap===2)e.adler=0,T(n,31),T(n,139),T(n,8),n.gzhead?(T(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),T(n,n.gzhead.time&255),T(n,n.gzhead.time>>8&255),T(n,n.gzhead.time>>16&255),T(n,n.gzhead.time>>24&255),T(n,n.level===9?2:n.strategy>=Ar||n.level<2?4:0),T(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(T(n,n.gzhead.extra.length&255),T(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=z(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=Fi):(T(n,0),T(n,0),T(n,0),T(n,0),T(n,0),T(n,n.level===9?2:n.strategy>=Ar||n.level<2?4:0),T(n,Sd),n.status=Qe);else{var o=Ti+(n.w_bits-8<<4)<<8,s=-1;n.strategy>=Ar||n.level<2?s=0:n.level<6?s=1:n.level===6?s=2:s=3,o|=s<<6,n.strstart!==0&&(o|=Ed),o+=31-o%31,n.status=Qe,zt(n,o),n.strstart!==0&&(zt(n,e.adler>>>16),zt(n,e.adler&65535)),e.adler=1}if(n.status===Fi)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(n.gzhead.extra.length&65535)&&!(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=z(e.adler,n.pending_buf,n.pending-i,i)),Be(e),i=n.pending,n.pending===n.pending_buf_size));)T(n,n.gzhead.extra[n.gzindex]&255),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=z(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=kr)}else n.status=kr;if(n.status===kr)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=z(e.adler,n.pending_buf,n.pending-i,i)),Be(e),i=n.pending,n.pending===n.pending_buf_size)){a=1;break}n.gzindex<n.gzhead.name.length?a=n.gzhead.name.charCodeAt(n.gzindex++)&255:a=0,T(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>i&&(e.adler=z(e.adler,n.pending_buf,n.pending-i,i)),a===0&&(n.gzindex=0,n.status=Rr)}else n.status=Rr;if(n.status===Rr)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=z(e.adler,n.pending_buf,n.pending-i,i)),Be(e),i=n.pending,n.pending===n.pending_buf_size)){a=1;break}n.gzindex<n.gzhead.comment.length?a=n.gzhead.comment.charCodeAt(n.gzindex++)&255:a=0,T(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>i&&(e.adler=z(e.adler,n.pending_buf,n.pending-i,i)),a===0&&(n.status=Or)}else n.status=Or;if(n.status===Or&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&Be(e),n.pending+2<=n.pending_buf_size&&(T(n,e.adler&255),T(n,e.adler>>8&255),e.adler=0,n.status=Qe)):n.status=Qe),n.pending!==0){if(Be(e),e.avail_out===0)return n.last_flush=-1,Ne}else if(e.avail_in===0&&Zs(t)<=Zs(r)&&t!==Me)return Ue(e,Ii);if(n.status===Ut&&e.avail_in!==0)return Ue(e,Ii);if(e.avail_in!==0||n.lookahead!==0||t!==Xe&&n.status!==Ut){var f=n.strategy===Ar?Od(n,t):n.strategy===dd?Rd(n,t):_t[n.level].func(n,t);if((f===et||f===wt)&&(n.status=Ut),f===U||f===et)return e.avail_out===0&&(n.last_flush=-1),Ne;if(f===Bt&&(t===cd?id(n):t!==Bs&&(Us(n,0,0,!1),t===fd&&(tt(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),Be(e),e.avail_out===0))return n.last_flush=-1,Ne}return t!==Me?Ne:n.wrap<=0?zs:(n.wrap===2?(T(n,e.adler&255),T(n,e.adler>>8&255),T(n,e.adler>>16&255),T(n,e.adler>>24&255),T(n,e.total_in&255),T(n,e.total_in>>8&255),T(n,e.total_in>>16&255),T(n,e.total_in>>24&255)):(zt(n,e.adler>>>16),zt(n,e.adler&65535)),Be(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?Ne:zs)}function Cd(e){var t;return!e||!e.state?Le:(t=e.state.status,t!==ji&&t!==Fi&&t!==kr&&t!==Rr&&t!==Or&&t!==Qe&&t!==Ut?Ue(e,Le):(e.state=null,t===Qe?Ue(e,ld):Ne))}var Ir=30,Dd=12;function Md(e,t){var r,n,i,a,o,s,f,c,l,h,d,u,p,y,w,b,m,x,v,S,O,_,A,I,k;r=e.state,n=e.next_in,I=e.input,i=n+(e.avail_in-5),a=e.next_out,k=e.output,o=a-(t-e.avail_out),s=a+(e.avail_out-257),f=r.dmax,c=r.wsize,l=r.whave,h=r.wnext,d=r.window,u=r.hold,p=r.bits,y=r.lencode,w=r.distcode,b=(1<<r.lenbits)-1,m=(1<<r.distbits)-1;e:do{p<15&&(u+=I[n++]<<p,p+=8,u+=I[n++]<<p,p+=8),x=y[u&b];t:for(;;){if(v=x>>>24,u>>>=v,p-=v,v=x>>>16&255,v===0)k[a++]=x&65535;else if(v&16){S=x&65535,v&=15,v&&(p<v&&(u+=I[n++]<<p,p+=8),S+=u&(1<<v)-1,u>>>=v,p-=v),p<15&&(u+=I[n++]<<p,p+=8,u+=I[n++]<<p,p+=8),x=w[u&m];r:for(;;){if(v=x>>>24,u>>>=v,p-=v,v=x>>>16&255,v&16){if(O=x&65535,v&=15,p<v&&(u+=I[n++]<<p,p+=8,p<v&&(u+=I[n++]<<p,p+=8)),O+=u&(1<<v)-1,O>f){e.msg="invalid distance too far back",r.mode=Ir;break e}if(u>>>=v,p-=v,v=a-o,O>v){if(v=O-v,v>l&&r.sane){e.msg="invalid distance too far back",r.mode=Ir;break e}if(_=0,A=d,h===0){if(_+=c-v,v<S){S-=v;do k[a++]=d[_++];while(--v);_=a-O,A=k}}else if(h<v){if(_+=c+h-v,v-=h,v<S){S-=v;do k[a++]=d[_++];while(--v);if(_=0,h<S){v=h,S-=v;do k[a++]=d[_++];while(--v);_=a-O,A=k}}}else if(_+=h-v,v<S){S-=v;do k[a++]=d[_++];while(--v);_=a-O,A=k}for(;S>2;)k[a++]=A[_++],k[a++]=A[_++],k[a++]=A[_++],S-=3;S&&(k[a++]=A[_++],S>1&&(k[a++]=A[_++]))}else{_=a-O;do k[a++]=k[_++],k[a++]=k[_++],k[a++]=k[_++],S-=3;while(S>2);S&&(k[a++]=k[_++],S>1&&(k[a++]=k[_++]))}}else if((v&64)===0){x=w[(x&65535)+(u&(1<<v)-1)];continue r}else{e.msg="invalid distance code",r.mode=Ir;break e}break}}else if((v&64)===0){x=y[(x&65535)+(u&(1<<v)-1)];continue t}else if(v&32){r.mode=Dd;break e}else{e.msg="invalid literal/length code",r.mode=Ir;break e}break}}while(n<i&&a<s);S=p>>3,n-=S,p-=S<<3,u&=(1<<p)-1,e.next_in=n,e.next_out=a,e.avail_in=n<i?5+(i-n):5-(n-i),e.avail_out=a<s?257+(s-a):257-(a-s),r.hold=u,r.bits=p}var mt=15,Ks=852,Ws=592,Vs=0,Di=1,Gs=2,Nd=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],Ld=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],$d=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],Ud=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];function qt(e,t,r,n,i,a,o,s){var f=s.bits,c=0,l=0,h=0,d=0,u=0,p=0,y=0,w=0,b=0,m=0,x,v,S,O,_,A=null,I=0,k,F=new oe(mt+1),Z=new oe(mt+1),V=null,re=0,Ze,Y,fe;for(c=0;c<=mt;c++)F[c]=0;for(l=0;l<n;l++)F[t[r+l]]++;for(u=f,d=mt;d>=1&&F[d]===0;d--);if(u>d&&(u=d),d===0)return i[a++]=1<<24|64<<16|0,i[a++]=1<<24|64<<16|0,s.bits=1,0;for(h=1;h<d&&F[h]===0;h++);for(u<h&&(u=h),w=1,c=1;c<=mt;c++)if(w<<=1,w-=F[c],w<0)return-1;if(w>0&&(e===Vs||d!==1))return-1;for(Z[1]=0,c=1;c<mt;c++)Z[c+1]=Z[c]+F[c];for(l=0;l<n;l++)t[r+l]!==0&&(o[Z[t[r+l]]++]=l);if(e===Vs?(A=V=o,k=19):e===Di?(A=Nd,I-=257,V=Ld,re-=257,k=256):(A=$d,V=Ud,k=-1),m=0,l=0,c=h,_=a,p=u,y=0,S=-1,b=1<<u,O=b-1,e===Di&&b>Ks||e===Gs&&b>Ws)return 1;for(;;){Ze=c-y,o[l]<k?(Y=0,fe=o[l]):o[l]>k?(Y=V[re+o[l]],fe=A[I+o[l]]):(Y=96,fe=0),x=1<<c-y,v=1<<p,h=v;do v-=x,i[_+(m>>y)+v]=Ze<<24|Y<<16|fe|0;while(v!==0);for(x=1<<c-1;m&x;)x>>=1;if(x!==0?(m&=x-1,m+=x):m=0,l++,--F[c]===0){if(c===d)break;c=t[r+o[l]]}if(c>u&&(m&O)!==S){for(y===0&&(y=u),_+=h,p=c-y,w=1<<p;p+y<d&&(w-=F[p+y],!(w<=0));)p++,w<<=1;if(b+=1<<p,e===Di&&b>Ks||e===Gs&&b>Ws)return 1;S=m&O,i[S]=u<<24|p<<16|_-a|0}}return m!==0&&(i[_+m]=c-y<<24|64<<16|0),s.bits=u,0}var Bd=0,Ys=1,Js=2,Xs=4,zd=5,Tr=6,Ht=0,Zd=1,qd=2,ze=-2,Hd=-3,Kd=-4,Wd=-5,Qs=8,ec=1,tc=2,rc=3,nc=4,ic=5,ac=6,oc=7,sc=8,cc=9,fc=10,lc=11,Oe=12,Mi=13,uc=14,Ni=15,hc=16,dc=17,pc=18,yc=19,Pr=20,jr=21,gc=22,vc=23,wc=24,bc=25,_c=26,Li=27,mc=28,xc=29,C=30,Vd=31,Gd=32,Yd=852,Jd=592;function Ec(e){return(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24)}function Xd(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new oe(320),this.work=new oe(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function Qd(e){var t;return!e||!e.state?ze:(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=t.wrap&1),t.mode=ec,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new xr(Yd),t.distcode=t.distdyn=new xr(Jd),t.sane=1,t.back=-1,Ht)}function Sc(e){var t;return!e||!e.state?ze:(t=e.state,t.wsize=0,t.whave=0,t.wnext=0,Qd(e))}function ep(e,t){var r,n;return!e||!e.state||(n=e.state,t<0?(r=0,t=-t):(r=(t>>4)+1,t<48&&(t&=15)),t&&(t<8||t>15))?ze:(n.window!==null&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,Sc(e))}function tp(e,t){var r,n;return e?(n=new Xd,e.state=n,n.window=null,r=ep(e,t),r!==Ht&&(e.state=null),r):ze}var Ac=!0,$i,Ui;function rp(e){if(Ac){var t;for($i=new xr(512),Ui=new xr(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(qt(Ys,e.lens,0,288,$i,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;qt(Js,e.lens,0,32,Ui,0,e.work,{bits:5}),Ac=!1}e.lencode=$i,e.lenbits=9,e.distcode=Ui,e.distbits=5}function np(e,t,r,n){var i,a=e.state;return a.window===null&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=new mr(a.wsize)),n>=a.wsize?(ke(a.window,t,r-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):(i=a.wsize-a.wnext,i>n&&(i=n),ke(a.window,t,r-n,i,a.wnext),n-=i,n?(ke(a.window,t,r-n,n,0),a.wnext=n,a.whave=a.wsize):(a.wnext+=i,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=i))),0}function ip(e,t){var r,n,i,a,o,s,f,c,l,h,d,u,p,y,w=0,b,m,x,v,S,O,_,A,I=new mr(4),k,F,Z=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&e.avail_in!==0)return ze;r=e.state,r.mode===Oe&&(r.mode=Mi),o=e.next_out,i=e.output,f=e.avail_out,a=e.next_in,n=e.input,s=e.avail_in,c=r.hold,l=r.bits,h=s,d=f,A=Ht;e:for(;;)switch(r.mode){case ec:if(r.wrap===0){r.mode=Mi;break}for(;l<16;){if(s===0)break e;s--,c+=n[a++]<<l,l+=8}if(r.wrap&2&&c===35615){r.check=0,I[0]=c&255,I[1]=c>>>8&255,r.check=z(r.check,I,2,0),c=0,l=0,r.mode=tc;break}if(r.flags=0,r.head&&(r.head.done=!1),!(r.wrap&1)||(((c&255)<<8)+(c>>8))%31){e.msg="incorrect header check",r.mode=C;break}if((c&15)!==Qs){e.msg="unknown compression method",r.mode=C;break}if(c>>>=4,l-=4,_=(c&15)+8,r.wbits===0)r.wbits=_;else if(_>r.wbits){e.msg="invalid window size",r.mode=C;break}r.dmax=1<<_,e.adler=r.check=1,r.mode=c&512?fc:Oe,c=0,l=0;break;case tc:for(;l<16;){if(s===0)break e;s--,c+=n[a++]<<l,l+=8}if(r.flags=c,(r.flags&255)!==Qs){e.msg="unknown compression method",r.mode=C;break}if(r.flags&57344){e.msg="unknown header flags set",r.mode=C;break}r.head&&(r.head.text=c>>8&1),r.flags&512&&(I[0]=c&255,I[1]=c>>>8&255,r.check=z(r.check,I,2,0)),c=0,l=0,r.mode=rc;case rc:for(;l<32;){if(s===0)break e;s--,c+=n[a++]<<l,l+=8}r.head&&(r.head.time=c),r.flags&512&&(I[0]=c&255,I[1]=c>>>8&255,I[2]=c>>>16&255,I[3]=c>>>24&255,r.check=z(r.check,I,4,0)),c=0,l=0,r.mode=nc;case nc:for(;l<16;){if(s===0)break e;s--,c+=n[a++]<<l,l+=8}r.head&&(r.head.xflags=c&255,r.head.os=c>>8),r.flags&512&&(I[0]=c&255,I[1]=c>>>8&255,r.check=z(r.check,I,2,0)),c=0,l=0,r.mode=ic;case ic:if(r.flags&1024){for(;l<16;){if(s===0)break e;s--,c+=n[a++]<<l,l+=8}r.length=c,r.head&&(r.head.extra_len=c),r.flags&512&&(I[0]=c&255,I[1]=c>>>8&255,r.check=z(r.check,I,2,0)),c=0,l=0}else r.head&&(r.head.extra=null);r.mode=ac;case ac:if(r.flags&1024&&(u=r.length,u>s&&(u=s),u&&(r.head&&(_=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),ke(r.head.extra,n,a,u,_)),r.flags&512&&(r.check=z(r.check,n,u,a)),s-=u,a+=u,r.length-=u),r.length))break e;r.length=0,r.mode=oc;case oc:if(r.flags&2048){if(s===0)break e;u=0;do _=n[a+u++],r.head&&_&&r.length<65536&&(r.head.name+=String.fromCharCode(_));while(_&&u<s);if(r.flags&512&&(r.check=z(r.check,n,u,a)),s-=u,a+=u,_)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=sc;case sc:if(r.flags&4096){if(s===0)break e;u=0;do _=n[a+u++],r.head&&_&&r.length<65536&&(r.head.comment+=String.fromCharCode(_));while(_&&u<s);if(r.flags&512&&(r.check=z(r.check,n,u,a)),s-=u,a+=u,_)break e}else r.head&&(r.head.comment=null);r.mode=cc;case cc:if(r.flags&512){for(;l<16;){if(s===0)break e;s--,c+=n[a++]<<l,l+=8}if(c!==(r.check&65535)){e.msg="header crc mismatch",r.mode=C;break}c=0,l=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=Oe;break;case fc:for(;l<32;){if(s===0)break e;s--,c+=n[a++]<<l,l+=8}e.adler=r.check=Ec(c),c=0,l=0,r.mode=lc;case lc:if(r.havedict===0)return e.next_out=o,e.avail_out=f,e.next_in=a,e.avail_in=s,r.hold=c,r.bits=l,qd;e.adler=r.check=1,r.mode=Oe;case Oe:if(t===zd||t===Tr)break e;case Mi:if(r.last){c>>>=l&7,l-=l&7,r.mode=Li;break}for(;l<3;){if(s===0)break e;s--,c+=n[a++]<<l,l+=8}switch(r.last=c&1,c>>>=1,l-=1,c&3){case 0:r.mode=uc;break;case 1:if(rp(r),r.mode=Pr,t===Tr){c>>>=2,l-=2;break e}break;case 2:r.mode=dc;break;case 3:e.msg="invalid block type",r.mode=C}c>>>=2,l-=2;break;case uc:for(c>>>=l&7,l-=l&7;l<32;){if(s===0)break e;s--,c+=n[a++]<<l,l+=8}if((c&65535)!==(c>>>16^65535)){e.msg="invalid stored block lengths",r.mode=C;break}if(r.length=c&65535,c=0,l=0,r.mode=Ni,t===Tr)break e;case Ni:r.mode=hc;case hc:if(u=r.length,u){if(u>s&&(u=s),u>f&&(u=f),u===0)break e;ke(i,n,a,u,o),s-=u,a+=u,f-=u,o+=u,r.length-=u;break}r.mode=Oe;break;case dc:for(;l<14;){if(s===0)break e;s--,c+=n[a++]<<l,l+=8}if(r.nlen=(c&31)+257,c>>>=5,l-=5,r.ndist=(c&31)+1,c>>>=5,l-=5,r.ncode=(c&15)+4,c>>>=4,l-=4,r.nlen>286||r.ndist>30){e.msg="too many length or distance symbols",r.mode=C;break}r.have=0,r.mode=pc;case pc:for(;r.have<r.ncode;){for(;l<3;){if(s===0)break e;s--,c+=n[a++]<<l,l+=8}r.lens[Z[r.have++]]=c&7,c>>>=3,l-=3}for(;r.have<19;)r.lens[Z[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,k={bits:r.lenbits},A=qt(Bd,r.lens,0,19,r.lencode,0,r.work,k),r.lenbits=k.bits,A){e.msg="invalid code lengths set",r.mode=C;break}r.have=0,r.mode=yc;case yc:for(;r.have<r.nlen+r.ndist;){for(;w=r.lencode[c&(1<<r.lenbits)-1],b=w>>>24,m=w>>>16&255,x=w&65535,!(b<=l);){if(s===0)break e;s--,c+=n[a++]<<l,l+=8}if(x<16)c>>>=b,l-=b,r.lens[r.have++]=x;else{if(x===16){for(F=b+2;l<F;){if(s===0)break e;s--,c+=n[a++]<<l,l+=8}if(c>>>=b,l-=b,r.have===0){e.msg="invalid bit length repeat",r.mode=C;break}_=r.lens[r.have-1],u=3+(c&3),c>>>=2,l-=2}else if(x===17){for(F=b+3;l<F;){if(s===0)break e;s--,c+=n[a++]<<l,l+=8}c>>>=b,l-=b,_=0,u=3+(c&7),c>>>=3,l-=3}else{for(F=b+7;l<F;){if(s===0)break e;s--,c+=n[a++]<<l,l+=8}c>>>=b,l-=b,_=0,u=11+(c&127),c>>>=7,l-=7}if(r.have+u>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=C;break}for(;u--;)r.lens[r.have++]=_}}if(r.mode===C)break;if(r.lens[256]===0){e.msg="invalid code -- missing end-of-block",r.mode=C;break}if(r.lenbits=9,k={bits:r.lenbits},A=qt(Ys,r.lens,0,r.nlen,r.lencode,0,r.work,k),r.lenbits=k.bits,A){e.msg="invalid literal/lengths set",r.mode=C;break}if(r.distbits=6,r.distcode=r.distdyn,k={bits:r.distbits},A=qt(Js,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,k),r.distbits=k.bits,A){e.msg="invalid distances set",r.mode=C;break}if(r.mode=Pr,t===Tr)break e;case Pr:r.mode=jr;case jr:if(s>=6&&f>=258){e.next_out=o,e.avail_out=f,e.next_in=a,e.avail_in=s,r.hold=c,r.bits=l,Md(e,d),o=e.next_out,i=e.output,f=e.avail_out,a=e.next_in,n=e.input,s=e.avail_in,c=r.hold,l=r.bits,r.mode===Oe&&(r.back=-1);break}for(r.back=0;w=r.lencode[c&(1<<r.lenbits)-1],b=w>>>24,m=w>>>16&255,x=w&65535,!(b<=l);){if(s===0)break e;s--,c+=n[a++]<<l,l+=8}if(m&&(m&240)===0){for(v=b,S=m,O=x;w=r.lencode[O+((c&(1<<v+S)-1)>>v)],b=w>>>24,m=w>>>16&255,x=w&65535,!(v+b<=l);){if(s===0)break e;s--,c+=n[a++]<<l,l+=8}c>>>=v,l-=v,r.back+=v}if(c>>>=b,l-=b,r.back+=b,r.length=x,m===0){r.mode=_c;break}if(m&32){r.back=-1,r.mode=Oe;break}if(m&64){e.msg="invalid literal/length code",r.mode=C;break}r.extra=m&15,r.mode=gc;case gc:if(r.extra){for(F=r.extra;l<F;){if(s===0)break e;s--,c+=n[a++]<<l,l+=8}r.length+=c&(1<<r.extra)-1,c>>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=vc;case vc:for(;w=r.distcode[c&(1<<r.distbits)-1],b=w>>>24,m=w>>>16&255,x=w&65535,!(b<=l);){if(s===0)break e;s--,c+=n[a++]<<l,l+=8}if((m&240)===0){for(v=b,S=m,O=x;w=r.distcode[O+((c&(1<<v+S)-1)>>v)],b=w>>>24,m=w>>>16&255,x=w&65535,!(v+b<=l);){if(s===0)break e;s--,c+=n[a++]<<l,l+=8}c>>>=v,l-=v,r.back+=v}if(c>>>=b,l-=b,r.back+=b,m&64){e.msg="invalid distance code",r.mode=C;break}r.offset=x,r.extra=m&15,r.mode=wc;case wc:if(r.extra){for(F=r.extra;l<F;){if(s===0)break e;s--,c+=n[a++]<<l,l+=8}r.offset+=c&(1<<r.extra)-1,c>>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=C;break}r.mode=bc;case bc:if(f===0)break e;if(u=d-f,r.offset>u){if(u=r.offset-u,u>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=C;break}u>r.wnext?(u-=r.wnext,p=r.wsize-u):p=r.wnext-u,u>r.length&&(u=r.length),y=r.window}else y=i,p=o-r.offset,u=r.length;u>f&&(u=f),f-=u,r.length-=u;do i[o++]=y[p++];while(--u);r.length===0&&(r.mode=jr);break;case _c:if(f===0)break e;i[o++]=r.length,f--,r.mode=jr;break;case Li:if(r.wrap){for(;l<32;){if(s===0)break e;s--,c|=n[a++]<<l,l+=8}if(d-=f,e.total_out+=d,r.total+=d,d&&(e.adler=r.check=r.flags?z(r.check,i,d,o-d):Oi(r.check,i,d,o-d)),d=f,(r.flags?c:Ec(c))!==r.check){e.msg="incorrect data check",r.mode=C;break}c=0,l=0}r.mode=mc;case mc:if(r.wrap&&r.flags){for(;l<32;){if(s===0)break e;s--,c+=n[a++]<<l,l+=8}if(c!==(r.total&4294967295)){e.msg="incorrect length check",r.mode=C;break}c=0,l=0}r.mode=xc;case xc:A=Zd;break e;case C:A=Hd;break e;case Vd:return Kd;case Gd:default:return ze}return e.next_out=o,e.avail_out=f,e.next_in=a,e.avail_in=s,r.hold=c,r.bits=l,(r.wsize||d!==e.avail_out&&r.mode<C&&(r.mode<Li||t!==Xs))&&np(e,e.output,e.next_out,d-e.avail_out),h-=e.avail_in,d-=e.avail_out,e.total_in+=h,e.total_out+=d,r.total+=d,r.wrap&&d&&(e.adler=r.check=r.flags?z(r.check,i,d,e.next_out-d):Oi(r.check,i,d,e.next_out-d)),e.data_type=r.bits+(r.last?64:0)+(r.mode===Oe?128:0)+(r.mode===Pr||r.mode===Ni?256:0),(h===0&&d===0||t===Xs)&&A===Ht&&(A=Wd),A}function ap(e){if(!e||!e.state)return ze;var t=e.state;return t.window&&(t.window=null),e.state=null,Ht}var Bi=0,xt=1,Fr=2,Kt=3,Cr=4,Et=5,Wt=6,Vt=7,kc=0,Rc=1,Oc=2,Ic=3,zi=4,Tc=5,op=6,Dr=0,Pc=1,jc=2,sp=-1,cp=-2,fp=-3,Fc=-5,lp=0,up=1,hp=9,dp=-1,pp=1,yp=2,gp=3,vp=4,wp=0,bp=0,_p=1,mp=2,Cc=8;function ce(e){if(e<xt||e>Vt)throw new TypeError("Bad argument");this.mode=e,this.init_done=!1,this.write_in_progress=!1,this.pending_close=!1,this.windowBits=0,this.level=0,this.memLevel=0,this.strategy=0,this.dictionary=null}ce.prototype.init=function(e,t,r,n,i){this.windowBits=e,this.level=t,this.memLevel=r,this.strategy=n,(this.mode===Kt||this.mode===Cr)&&(this.windowBits+=16),this.mode===Vt&&(this.windowBits+=32),(this.mode===Et||this.mode===Wt)&&(this.windowBits=-this.windowBits),this.strm=new Uh;var a;switch(this.mode){case xt:case Kt:case Et:a=jd(this.strm,this.level,Cc,this.windowBits,this.memLevel,this.strategy);break;case Fr:case Cr:case Wt:case Vt:a=tp(this.strm,this.windowBits);break;default:throw new Error("Unknown mode "+this.mode)}if(a!==Dr){this._error(a);return}this.write_in_progress=!1,this.init_done=!0},ce.prototype.params=function(){throw new Error("deflateParams Not supported")},ce.prototype._writeCheck=function(){if(!this.init_done)throw new Error("write before init");if(this.mode===Bi)throw new Error("already finalized");if(this.write_in_progress)throw new Error("write already in progress");if(this.pending_close)throw new Error("close is pending")},ce.prototype.write=function(e,t,r,n,i,a,o){this._writeCheck(),this.write_in_progress=!0;var s=this;return Se.nextTick(function(){s.write_in_progress=!1;var f=s._write(e,t,r,n,i,a,o);s.callback(f[0],f[1]),s.pending_close&&s.close()}),this};function xp(e,t){for(var r=0;r<e.length;r++)this[t+r]=e[r]}ce.prototype.writeSync=function(e,t,r,n,i,a,o){return this._writeCheck(),this._write(e,t,r,n,i,a,o)},ce.prototype._write=function(e,t,r,n,i,a,o){if(this.write_in_progress=!0,e!==kc&&e!==Rc&&e!==Oc&&e!==Ic&&e!==zi&&e!==Tc)throw new Error("Invalid flush value");t==null&&(t=new g(0),n=0,r=0),i._set?i.set=i._set:i.set=xp;var s=this.strm;s.avail_in=n,s.input=t,s.next_in=r,s.avail_out=o,s.output=i,s.next_out=a;var f;switch(this.mode){case xt:case Kt:case Et:f=Fd(s,e);break;case Vt:case Fr:case Cr:case Wt:f=ip(s,e);break;default:throw new Error("Unknown mode "+this.mode)}return this._checkError(f,s,e)||this._error(f),this.write_in_progress=!1,[s.avail_in,s.avail_out]},ce.prototype._checkError=function(e,t,r){switch(e){case Dr:case Fc:if(t.avail_out!==0&&r===zi)return!1;break;case Pc:break;case jc:return!1;default:return!1}return!0},ce.prototype.close=function(){if(this.write_in_progress){this.pending_close=!0;return}this.pending_close=!1,this.mode===xt||this.mode===Kt||this.mode===Et?Cd(this.strm):ap(this.strm),this.mode=Bi};var Mr;ce.prototype.reset=function(){switch(this.mode){case xt:case Et:Mr=Hs(this.strm);break;case Fr:case Wt:Mr=Sc(this.strm);break}Mr!==Dr&&this._error(Mr)},ce.prototype._error=function(e){this.onerror(ws[e]+": "+this.strm.msg,e),this.write_in_progress=!1,this.pending_close&&this.close()};var Dc=Object.freeze({__proto__:null,DEFLATE:xt,DEFLATERAW:Et,GUNZIP:Cr,GZIP:Kt,INFLATE:Fr,INFLATERAW:Wt,NONE:Bi,UNZIP:Vt,Z_BEST_COMPRESSION:hp,Z_BEST_SPEED:up,Z_BINARY:bp,Z_BLOCK:Tc,Z_BUF_ERROR:Fc,Z_DATA_ERROR:fp,Z_DEFAULT_COMPRESSION:dp,Z_DEFAULT_STRATEGY:wp,Z_DEFLATED:Cc,Z_ERRNO:sp,Z_FILTERED:pp,Z_FINISH:zi,Z_FIXED:vp,Z_FULL_FLUSH:Ic,Z_HUFFMAN_ONLY:yp,Z_NEED_DICT:jc,Z_NO_COMPRESSION:lp,Z_NO_FLUSH:kc,Z_OK:Dr,Z_PARTIAL_FLUSH:Rc,Z_RLE:gp,Z_STREAM_END:Pc,Z_STREAM_ERROR:cp,Z_SYNC_FLUSH:Oc,Z_TEXT:_p,Z_TREES:op,Z_UNKNOWN:mp,Zlib:ce});function Ep(e,t){if(!e)throw new Error(t)}var E={};Object.keys(Dc).forEach(function(e){E[e]=Dc[e]}),E.Z_MIN_WINDOWBITS=8,E.Z_MAX_WINDOWBITS=15,E.Z_DEFAULT_WINDOWBITS=15,E.Z_MIN_CHUNK=64,E.Z_MAX_CHUNK=1/0,E.Z_DEFAULT_CHUNK=16*1024,E.Z_MIN_MEMLEVEL=1,E.Z_MAX_MEMLEVEL=9,E.Z_DEFAULT_MEMLEVEL=8,E.Z_MIN_LEVEL=-1,E.Z_MAX_LEVEL=9,E.Z_DEFAULT_LEVEL=E.Z_DEFAULT_COMPRESSION;var Gt={Z_OK:E.Z_OK,Z_STREAM_END:E.Z_STREAM_END,Z_NEED_DICT:E.Z_NEED_DICT,Z_ERRNO:E.Z_ERRNO,Z_STREAM_ERROR:E.Z_STREAM_ERROR,Z_DATA_ERROR:E.Z_DATA_ERROR,Z_MEM_ERROR:E.Z_MEM_ERROR,Z_BUF_ERROR:E.Z_BUF_ERROR,Z_VERSION_ERROR:E.Z_VERSION_ERROR};Object.keys(Gt).forEach(function(e){Gt[Gt[e]]=e});function Sp(e){return new it(e)}function Ap(e){return new at(e)}function kp(e){return new ct(e)}function Rp(e){return new ft(e)}function Op(e){return new ot(e)}function Ip(e){return new st(e)}function Tp(e){return new lt(e)}function Pp(e,t,r){return typeof t=="function"&&(r=t,t={}),rt(new it(t),e,r)}function jp(e,t){return nt(new it(t),e)}function Fp(e,t,r){return typeof t=="function"&&(r=t,t={}),rt(new ot(t),e,r)}function Cp(e,t){return nt(new ot(t),e)}function Dp(e,t,r){return typeof t=="function"&&(r=t,t={}),rt(new ct(t),e,r)}function Mp(e,t){return nt(new ct(t),e)}function Np(e,t,r){return typeof t=="function"&&(r=t,t={}),rt(new lt(t),e,r)}function Lp(e,t){return nt(new lt(t),e)}function $p(e,t,r){return typeof t=="function"&&(r=t,t={}),rt(new at(t),e,r)}function Up(e,t){return nt(new at(t),e)}function Bp(e,t,r){return typeof t=="function"&&(r=t,t={}),rt(new st(t),e,r)}function zp(e,t){return nt(new st(t),e)}function Zp(e,t,r){return typeof t=="function"&&(r=t,t={}),rt(new ft(t),e,r)}function qp(e,t){return nt(new ft(t),e)}function rt(e,t,r){var n=[],i=0;e.on("error",o),e.on("end",s),e.end(t),a();function a(){for(var f;(f=e.read())!==null;)n.push(f),i+=f.length;e.once("readable",a)}function o(f){e.removeListener("end",s),e.removeListener("readable",a),r(f)}function s(){var f=g.concat(n,i);n=[],r(null,f),e.close()}}function nt(e,t){if(typeof t=="string"&&(t=new g(t)),!g.isBuffer(t))throw new TypeError("Not a string or buffer");var r=E.Z_FINISH;return e._processChunk(t,r)}function it(e){if(!(this instanceof it))return new it(e);D.call(this,e,E.DEFLATE)}function at(e){if(!(this instanceof at))return new at(e);D.call(this,e,E.INFLATE)}function ot(e){if(!(this instanceof ot))return new ot(e);D.call(this,e,E.GZIP)}function st(e){if(!(this instanceof st))return new st(e);D.call(this,e,E.GUNZIP)}function ct(e){if(!(this instanceof ct))return new ct(e);D.call(this,e,E.DEFLATERAW)}function ft(e){if(!(this instanceof ft))return new ft(e);D.call(this,e,E.INFLATERAW)}function lt(e){if(!(this instanceof lt))return new lt(e);D.call(this,e,E.UNZIP)}function D(e,t){if(this._opts=e=e||{},this._chunkSize=e.chunkSize||E.Z_DEFAULT_CHUNK,te.call(this,e),e.flush&&e.flush!==E.Z_NO_FLUSH&&e.flush!==E.Z_PARTIAL_FLUSH&&e.flush!==E.Z_SYNC_FLUSH&&e.flush!==E.Z_FULL_FLUSH&&e.flush!==E.Z_FINISH&&e.flush!==E.Z_BLOCK)throw new Error("Invalid flush flag: "+e.flush);if(this._flushFlag=e.flush||E.Z_NO_FLUSH,e.chunkSize&&(e.chunkSize<E.Z_MIN_CHUNK||e.chunkSize>E.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+e.chunkSize);if(e.windowBits&&(e.windowBits<E.Z_MIN_WINDOWBITS||e.windowBits>E.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+e.windowBits);if(e.level&&(e.level<E.Z_MIN_LEVEL||e.level>E.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+e.level);if(e.memLevel&&(e.memLevel<E.Z_MIN_MEMLEVEL||e.memLevel>E.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+e.memLevel);if(e.strategy&&e.strategy!=E.Z_FILTERED&&e.strategy!=E.Z_HUFFMAN_ONLY&&e.strategy!=E.Z_RLE&&e.strategy!=E.Z_FIXED&&e.strategy!=E.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+e.strategy);if(e.dictionary&&!g.isBuffer(e.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._binding=new E.Zlib(t);var r=this;this._hadError=!1,this._binding.onerror=function(a,o){r._binding=null,r._hadError=!0;var s=new Error(a);s.errno=o,s.code=Gt[o],r.emit("error",s)};var n=E.Z_DEFAULT_COMPRESSION;typeof e.level=="number"&&(n=e.level);var i=E.Z_DEFAULT_STRATEGY;typeof e.strategy=="number"&&(i=e.strategy),this._binding.init(e.windowBits||E.Z_DEFAULT_WINDOWBITS,n,e.memLevel||E.Z_DEFAULT_MEMLEVEL,i,e.dictionary),this._buffer=new g(this._chunkSize),this._offset=0,this._closed=!1,this._level=n,this._strategy=i,this.once("end",this.close)}W(D,te),D.prototype.params=function(e,t,r){if(e<E.Z_MIN_LEVEL||e>E.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+e);if(t!=E.Z_FILTERED&&t!=E.Z_HUFFMAN_ONLY&&t!=E.Z_RLE&&t!=E.Z_FIXED&&t!=E.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+t);if(this._level!==e||this._strategy!==t){var n=this;this.flush(E.Z_SYNC_FLUSH,function(){n._binding.params(e,t),n._hadError||(n._level=e,n._strategy=t,r&&r())})}else Se.nextTick(r)},D.prototype.reset=function(){return this._binding.reset()},D.prototype._flush=function(e){this._transform(new g(0),"",e)},D.prototype.flush=function(e,t){var r=this._writableState;if((typeof e=="function"||e===void 0&&!t)&&(t=e,e=E.Z_FULL_FLUSH),r.ended)t&&Se.nextTick(t);else if(r.ending)t&&this.once("end",t);else if(r.needDrain){var n=this;this.once("drain",function(){n.flush(t)})}else this._flushFlag=e,this.write(new g(0),"",t)},D.prototype.close=function(e){if(e&&Se.nextTick(e),!this._closed){this._closed=!0,this._binding.close();var t=this;Se.nextTick(function(){t.emit("close")})}},D.prototype._transform=function(e,t,r){var n,i=this._writableState,a=i.ending||i.ended,o=a&&(!e||i.length===e.length);if(!e===null&&!g.isBuffer(e))return r(new Error("invalid input"));o?n=E.Z_FINISH:(n=this._flushFlag,e.length>=i.length&&(this._flushFlag=this._opts.flush||E.Z_NO_FLUSH)),this._processChunk(e,n,r)},D.prototype._processChunk=function(e,t,r){var n=e&&e.length,i=this._chunkSize-this._offset,a=0,o=this,s=typeof r=="function";if(!s){var f=[],c=0,l;this.on("error",function(y){l=y});do var h=this._binding.writeSync(t,e,a,n,this._buffer,this._offset,i);while(!this._hadError&&p(h[0],h[1]));if(this._hadError)throw l;var d=g.concat(f,c);return this.close(),d}var u=this._binding.write(t,e,a,n,this._buffer,this._offset,i);u.buffer=e,u.callback=p;function p(y,w){if(!o._hadError){var b=i-w;if(Ep(b>=0,"have should not go down"),b>0){var m=o._buffer.slice(o._offset,o._offset+b);o._offset+=b,s?o.push(m):(f.push(m),c+=m.length)}if((w===0||o._offset>=o._chunkSize)&&(i=o._chunkSize,o._offset=0,o._buffer=new g(o._chunkSize)),w===0){if(a+=n-y,n=y,!s)return!0;var x=o._binding.write(t,e,a,n,o._buffer,o._offset,o._chunkSize);x.callback=p,x.buffer=e;return}if(!s)return!1;r()}}},W(it,D),W(at,D),W(ot,D),W(st,D),W(ct,D),W(ft,D),W(lt,D);var Mc={codes:Gt,createDeflate:Sp,createInflate:Ap,createDeflateRaw:kp,createInflateRaw:Rp,createGzip:Op,createGunzip:Ip,createUnzip:Tp,deflate:Pp,deflateSync:jp,gzip:Fp,gzipSync:Cp,deflateRaw:Dp,deflateRawSync:Mp,unzip:Np,unzipSync:Lp,inflate:$p,inflateSync:Up,gunzip:Bp,gunzipSync:zp,inflateRaw:Zp,inflateRawSync:qp,Deflate:it,Inflate:at,Gzip:ot,Gunzip:st,DeflateRaw:ct,InflateRaw:ft,Unzip:lt,Zlib:D};class Nc extends vi{constructor({client:t,keyPrefix:r="cache",ttl:n=0,prefix:i=void 0}){super({client:t,keyPrefix:r,ttl:n,prefix:i}),this.client=t,this.keyPrefix=r,this.config.ttl=n,this.config.client=t,this.config.prefix=i!==void 0?i:r+(r.endsWith("/")?"":"/")}async _set(t,r){let n=JSON.stringify(r);const i=n.length;return n=Mc.gzipSync(n).toString("base64"),this.client.putObject({key:me(this.keyPrefix,t),body:n,contentEncoding:"gzip",contentType:"application/gzip",metadata:{compressor:"zlib",compressed:"true","client-id":this.client.id,"length-serialized":String(i),"length-compressed":String(n.length),"compression-gain":(n.length/i).toFixed(2)}})}async _get(t){try{const{Body:r}=await this.client.getObject(me(this.keyPrefix,t));let n=await yt(r);return n=Buffer.from(n,"base64"),n=Mc.unzipSync(n).toString(),JSON.parse(n)}catch(r){if(r.name==="NoSuchKey"||r.name==="NotFound")return null;throw r}}async _del(t){return await this.client.deleteObject(me(this.keyPrefix,t)),!0}async _clear(){const t=await this.client.getAllKeys({prefix:this.keyPrefix});for(const r of t)await this.client.deleteObject(r)}async size(){return(await this.keys()).length}async keys(){const t=await this.client.getAllKeys({prefix:this.keyPrefix}),r=this.keyPrefix.endsWith("/")?this.keyPrefix:this.keyPrefix+"/";return t.map(n=>n.startsWith(r)?n.slice(r.length):n)}}class Lc extends R{async setup(t){}async start(){}async stop(){}beforeSetup(){this.emit("plugin.beforeSetup",new Date)}afterSetup(){this.emit("plugin.afterSetup",new Date)}beforeStart(){this.emit("plugin.beforeStart",new Date)}afterStart(){this.emit("plugin.afterStart",new Date)}beforeStop(){this.emit("plugin.beforeStop",new Date)}afterStop(){this.emit("plugin.afterStop",new Date)}}const Hp={setup(e){},start(){},stop(){}},Kp={async setup(e){this.client=e.client,this.map={PutObjectCommand:"put",GetObjectCommand:"get",HeadObjectCommand:"get",DeleteObjectCommand:"delete",DeleteObjectsCommand:"delete",ListObjectsV2Command:"list"},this.costs={total:0,prices:{put:.005/1e3,copy:.005/1e3,list:.005/1e3,post:.005/1e3,get:4e-4/1e3,select:4e-4/1e3,delete:4e-4/1e3},requests:{total:0,put:0,post:0,copy:0,list:0,get:0,select:0,delete:0},events:{total:0,PutObjectCommand:0,GetObjectCommand:0,HeadObjectCommand:0,DeleteObjectCommand:0,DeleteObjectsCommand:0,ListObjectsV2Command:0}},this.client.costs=JSON.parse(JSON.stringify(this.costs))},async start(){this.client.on("command.response",e=>this.addRequest(e,this.map[e]))},addRequest(e,t){this.costs.events[e]++,this.costs.events.total++,this.costs.requests.total++,this.costs.requests[t]++,this.costs.total+=this.costs.prices[t],this.client.costs.events[e]++,this.client.costs.events.total++,this.client.costs.requests.total++,this.client.costs.requests[t]++,this.client.costs.total+=this.client.costs.prices[t]}};class Wp extends Lc{constructor(t={}){super(),this.driver=t.driver}async setup(t){this.database=t,this.driver||(this.driver=new Nc({keyPrefix:"cache",client:t.client})),this.installDatabaseProxy();for(const r of Object.values(t.resources))this.installResourcesProxies(r)}async start(){}async stop(){}installDatabaseProxy(){const t=this.installResourcesProxies.bind(this);this.database._createResource=this.database.createResource,this.database.createResource=async function(...r){const n=await this._createResource(...r);return t(n),n}}installResourcesProxies(t){t.cache=this.driver;let r=`resource=${t.name}`;this.driver.keyPrefix&&(this.driver.keyPrefix=me(this.driver.keyPrefix,r)),t.cacheKeyFor=async function({params:n={},action:i="list"}){let a=Object.keys(n).sort().map(o=>`${o}:${n[o]}`).join("|")||"empty";return a=await da(a),a=me(r,`action=${i}`,`${a}.json.gz`),a},t._count=t.count,t._listIds=t.listIds,t._getMany=t.getMany,t._getAll=t.getAll,t._page=t.page,t.count=async function(){const n=await this.cacheKeyFor({action:"count"});try{const a=await this.cache.get(n);if(a)return a}catch(a){if(a.name!=="NoSuchKey")throw a}const i=await t._count();return await this.cache.set(n,i),i},t.listIds=async function(){const n=await this.cacheKeyFor({action:"listIds"});try{const a=await this.cache.get(n);if(a)return a}catch(a){if(a.name!=="NoSuchKey")throw a}const i=await t._listIds();return await this.cache.set(n,i),i},t.getMany=async function(n){const i=await this.cacheKeyFor({action:"getMany",params:{ids:n}});try{const o=await this.cache.get(i);if(o)return o}catch(o){if(o.name!=="NoSuchKey")throw o}const a=await t._getMany(n);return await this.cache.set(i,a),a},t.getAll=async function(){const n=await this.cacheKeyFor({action:"getAll"});try{const a=await this.cache.get(n);if(a)return a}catch(a){if(a.name!=="NoSuchKey")throw a}const i=await t._getAll();return await this.cache.set(n,i),i},t.page=async function({offset:n,size:i}){const a=await this.cacheKeyFor({action:"page",params:{offset:n,size:i}});try{const s=await this.cache.get(a);if(s)return s}catch(s){if(s.name!=="NoSuchKey")throw s}const o=await t._page({offset:n,size:i});return await this.cache.set(a,o),o},t._insert=t.insert,t._update=t.update,t._delete=t.delete,t._deleteMany=t.deleteMany,t.insert=async function(...n){const i=await t._insert(...n);return await this.cache.clear(r),i},t.update=async function(...n){const i=await t._update(...n);return await this.cache.clear(r),i},t.delete=async function(...n){const i=await t._delete(...n);return await this.cache.clear(r),i},t.deleteMany=async function(...n){const i=await t._deleteMany(...n);return await this.cache.clear(r),i}}}export{Nh as AVAILABLE_BEHAVIORS,kf as AuthenticationError,na as BaseError,vi as Cache,Wp as CachePlugin,ha as Client,ua as ConnectionString,Kp as CostsPlugin,ps as DEFAULT_BEHAVIOR,gs as Database,Sf as DatabaseError,Of as EncryptionError,ca as ErrorMap,rr as InvalidResourceItem,$h as MemoryCache,oa as MissingMetadata,ia as NoSuchBucket,Kr as NoSuchKey,aa as NotFound,Rf as PermissionError,Lc as Plugin,Hp as PluginObject,_r as Resource,fs as ResourceIdsPageReader,cs as ResourceIdsReader,If as ResourceNotFound,ls as ResourceReader,us as ResourceWriter,Nc as S3Cache,ne as S3DBError,la as S3_DEFAULT_ENDPOINT,fa as S3_DEFAULT_REGION,vs as S3db,be as Schema,Kn as SchemaActions,sa as UnknownError,Af as ValidationError,bo as Validator,_o as ValidatorManager,br as behaviors,hi as calculateAttributeNamesSize,Ft as calculateAttributeSizes,Ce as calculateTotalSize,Ye as calculateUTF8Bytes,pa as decrypt,vs as default,Wr as encrypt,ge as getBehavior,yh as getSizeBreakdown,qr as idGenerator,yf as passwordGenerator,da as sha256,yt as streamToString,di as transformValue};
1
+ import{customAlphabet as t,urlAlphabet as e}from"nanoid";import{chunk as r,merge as n,isString as i,isEmpty as s,invert as o,uniq as a,cloneDeep as c,get as u,set as l,isFunction as h,isPlainObject as f}from"lodash-es";import{PromisePool as d}from"@supercharge/promise-pool";import{S3Client as p,PutObjectCommand as g,GetObjectCommand as m,HeadObjectCommand as y,CopyObjectCommand as b,DeleteObjectCommand as w,DeleteObjectsCommand as _,ListObjectsV2Command as v}from"@aws-sdk/client-s3";import{createHash as k}from"crypto";import{flatten as S,unflatten as O}from"flat";import E from"fastest-validator";import{ReadableStream as R}from"node:stream/web";function x(t,e){for(var r=0,n=t.length-1;n>=0;n--){var i=t[n];"."===i?t.splice(n,1):".."===i?(t.splice(n,1),r++):r&&(t.splice(n,1),r--)}if(e)for(;r--;r)t.unshift("..");return t}var A=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,I=function(t){return A.exec(t).slice(1)};function j(){for(var t="",e=!1,r=arguments.length-1;r>=-1&&!e;r--){var n=r>=0?arguments[r]:"/";if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");n&&(t=n+"/"+t,e="/"===n.charAt(0))}return(e?"/":"")+(t=x(C(t.split("/"),function(t){return!!t}),!e).join("/"))||"."}function D(t){var e=P(t),r="/"===M(t,-1);return(t=x(C(t.split("/"),function(t){return!!t}),!e).join("/"))||e||(t="."),t&&r&&(t+="/"),(e?"/":"")+t}function P(t){return"/"===t.charAt(0)}function N(){return D(C(Array.prototype.slice.call(arguments,0),function(t,e){if("string"!=typeof t)throw new TypeError("Arguments to path.join must be strings");return t}).join("/"))}var T={extname:function(t){return I(t)[3]},basename:function(t,e){var r=I(t)[2];return e&&r.substr(-1*e.length)===e&&(r=r.substr(0,r.length-e.length)),r},dirname:function(t){var e=I(t),r=e[0],n=e[1];return r||n?(n&&(n=n.substr(0,n.length-1)),r+n):"."},sep:"/",delimiter:":",relative:function(t,e){function r(t){for(var e=0;e<t.length&&""===t[e];e++);for(var r=t.length-1;r>=0&&""===t[r];r--);return e>r?[]:t.slice(e,r-e+1)}t=j(t).substr(1),e=j(e).substr(1);for(var n=r(t.split("/")),i=r(e.split("/")),s=Math.min(n.length,i.length),o=s,a=0;a<s;a++)if(n[a]!==i[a]){o=a;break}var c=[];for(a=o;a<n.length;a++)c.push("..");return(c=c.concat(i.slice(o))).join("/")},join:N,isAbsolute:P,normalize:D,resolve:j};function C(t,e){if(t.filter)return t.filter(e);for(var r=[],n=0;n<t.length;n++)e(t[n],n,t)&&r.push(t[n]);return r}var M="b"==="ab".substr(-1)?function(t,e,r){return t.substr(e,r)}:function(t,e,r){return e<0&&(e=t.length+e),t.substr(e,r)};const L=t(e,22),$=t("ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz23456789",12);var U;function z(){}function F(){F.init.call(this)}function B(t){return void 0===t._maxListeners?F.defaultMaxListeners:t._maxListeners}function q(t,e,r,n){var i,s,o,a;if("function"!=typeof r)throw new TypeError('"listener" argument must be a function');if((s=t._events)?(s.newListener&&(t.emit("newListener",e,r.listener?r.listener:r),s=t._events),o=s[e]):(s=t._events=new z,t._eventsCount=0),o){if("function"==typeof o?o=s[e]=n?[r,o]:[o,r]:n?o.unshift(r):o.push(r),!o.warned&&(i=B(t))&&i>0&&o.length>i){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+e+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=t,c.type=e,c.count=o.length,a=c,"function"==typeof console.warn?console.warn(a):console.log(a)}}else o=s[e]=r,++t._eventsCount;return t}function V(t,e,r){var n=!1;function i(){t.removeListener(e,i),n||(n=!0,r.apply(t,arguments))}return i.listener=r,i}function H(t){var e=this._events;if(e){var r=e[t];if("function"==typeof r)return 1;if(r)return r.length}return 0}function K(t,e){for(var r=new Array(e);e--;)r[e]=t[e];return r}z.prototype=Object.create(null),F.EventEmitter=F,F.usingDomains=!1,F.prototype.domain=void 0,F.prototype._events=void 0,F.prototype._maxListeners=void 0,F.defaultMaxListeners=10,F.init=function(){this.domain=null,F.usingDomains&&(!U.active||this instanceof U.Domain||(this.domain=U.active)),this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new z,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},F.prototype.setMaxListeners=function(t){if("number"!=typeof t||t<0||isNaN(t))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=t,this},F.prototype.getMaxListeners=function(){return B(this)},F.prototype.emit=function(t){var e,r,n,i,s,o,a,c="error"===t;if(o=this._events)c=c&&null==o.error;else if(!c)return!1;if(a=this.domain,c){if(e=arguments[1],!a){if(e instanceof Error)throw e;var u=new Error('Uncaught, unspecified "error" event. ('+e+")");throw u.context=e,u}return e||(e=new Error('Uncaught, unspecified "error" event')),e.domainEmitter=this,e.domain=a,e.domainThrown=!1,a.emit("error",e),!1}if(!(r=o[t]))return!1;var l="function"==typeof r;switch(n=arguments.length){case 1:!function(t,e,r){if(e)t.call(r);else for(var n=t.length,i=K(t,n),s=0;s<n;++s)i[s].call(r)}(r,l,this);break;case 2:!function(t,e,r,n){if(e)t.call(r,n);else for(var i=t.length,s=K(t,i),o=0;o<i;++o)s[o].call(r,n)}(r,l,this,arguments[1]);break;case 3:!function(t,e,r,n,i){if(e)t.call(r,n,i);else for(var s=t.length,o=K(t,s),a=0;a<s;++a)o[a].call(r,n,i)}(r,l,this,arguments[1],arguments[2]);break;case 4:!function(t,e,r,n,i,s){if(e)t.call(r,n,i,s);else for(var o=t.length,a=K(t,o),c=0;c<o;++c)a[c].call(r,n,i,s)}(r,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(i=new Array(n-1),s=1;s<n;s++)i[s-1]=arguments[s];!function(t,e,r,n){if(e)t.apply(r,n);else for(var i=t.length,s=K(t,i),o=0;o<i;++o)s[o].apply(r,n)}(r,l,this,i)}return!0},F.prototype.addListener=function(t,e){return q(this,t,e,!1)},F.prototype.on=F.prototype.addListener,F.prototype.prependListener=function(t,e){return q(this,t,e,!0)},F.prototype.once=function(t,e){if("function"!=typeof e)throw new TypeError('"listener" argument must be a function');return this.on(t,V(this,t,e)),this},F.prototype.prependOnceListener=function(t,e){if("function"!=typeof e)throw new TypeError('"listener" argument must be a function');return this.prependListener(t,V(this,t,e)),this},F.prototype.removeListener=function(t,e){var r,n,i,s,o;if("function"!=typeof e)throw new TypeError('"listener" argument must be a function');if(!(n=this._events))return this;if(!(r=n[t]))return this;if(r===e||r.listener&&r.listener===e)0===--this._eventsCount?this._events=new z:(delete n[t],n.removeListener&&this.emit("removeListener",t,r.listener||e));else if("function"!=typeof r){for(i=-1,s=r.length;s-- >0;)if(r[s]===e||r[s].listener&&r[s].listener===e){o=r[s].listener,i=s;break}if(i<0)return this;if(1===r.length){if(r[0]=void 0,0===--this._eventsCount)return this._events=new z,this;delete n[t]}else!function(t,e){for(var r=e,n=r+1,i=t.length;n<i;r+=1,n+=1)t[r]=t[n];t.pop()}(r,i);n.removeListener&&this.emit("removeListener",t,o||e)}return this},F.prototype.off=function(t,e){return this.removeListener(t,e)},F.prototype.removeAllListeners=function(t){var e,r;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=new z,this._eventsCount=0):r[t]&&(0===--this._eventsCount?this._events=new z:delete r[t]),this;if(0===arguments.length){for(var n,i=Object.keys(r),s=0;s<i.length;++s)"removeListener"!==(n=i[s])&&this.removeAllListeners(n);return this.removeAllListeners("removeListener"),this._events=new z,this._eventsCount=0,this}if("function"==typeof(e=r[t]))this.removeListener(t,e);else if(e)do{this.removeListener(t,e[e.length-1])}while(e[0]);return this},F.prototype.listeners=function(t){var e,r=this._events;return r&&(e=r[t])?"function"==typeof e?[e.listener||e]:function(t){for(var e=new Array(t.length),r=0;r<e.length;++r)e[r]=t[r].listener||t[r];return e}(e):[]},F.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):H.call(t,e)},F.prototype.listenerCount=H,F.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};class Z extends Error{constructor({verbose:t,bucket:e,message:r,...n}){t&&(r+=`\n\nVerbose:\n\n${JSON.stringify(n,null,2)}`),super(r),"function"==typeof Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error(r).stack,super.name=this.constructor.name,this.name=this.constructor.name,this.bucket=e,this.thrownAt=new Date}toJson(){return{...this}}toString(){return`${this.name} | ${this.message}`}}class W extends Z{constructor(t,e={}){super({message:t,...e})}}class J extends W{constructor(t,e={}){super(t,e),Object.assign(this,e)}}class G extends W{constructor(t,e={}){super(t,e),Object.assign(this,e)}}class Y extends W{constructor(t,e={}){super(t,e),Object.assign(this,e)}}class Q extends W{constructor(t,e={}){super(t,e),Object.assign(this,e)}}class X extends W{constructor(t,e={}){super(t,e),Object.assign(this,e)}}class tt extends W{constructor({bucket:t,resourceName:e,id:r,...n}){super(`Resource not found: ${e}/${r} [bucket:${t}]`,{bucket:t,resourceName:e,id:r,...n})}}class et extends W{constructor({bucket:t,...e}){super(`Bucket does not exists [bucket:${t}]`,{bucket:t,...e})}}class rt extends W{constructor({bucket:t,key:e,...r}){super(`Key [${e}] does not exists [bucket:${t}/${e}]`,{bucket:t,key:e,...r})}}class nt extends rt{}class it extends W{constructor({bucket:t,...e}){super(`Missing metadata for bucket [bucket:${t}]`,{bucket:t,...e})}}class st extends W{constructor({bucket:t,resourceName:e,attributes:r,validation:n}){super(`This item is not valid. Resource=${e} [bucket:${t}].\n${JSON.stringify(n,null,2)}`,{bucket:t,resourceName:e,attributes:r,validation:n})}}class ot extends W{}const at={NotFound:nt,NoSuchKey:rt,UnknownError:ot,NoSuchBucket:et,MissingMetadata:it,InvalidResourceItem:st},ct="us-east-1",ut="https://s3.us-east-1.amazonaws.com";class lt{constructor(t){let e;try{e=new URL(t)}catch(e){throw new Error("Invalid connection string: "+t)}this.region=ct,"s3:"===e.protocol?this.defineS3(e):this.defineMinio(e);for(const[t,r]of e.searchParams.entries())this[t]=r}defineS3(t){if(this.bucket=decodeURIComponent(t.hostname),this.accessKeyId=decodeURIComponent(t.username),this.secretAccessKey=decodeURIComponent(t.password),this.endpoint=ut,["/","",null].includes(t.pathname))this.keyPrefix="";else{let[,...e]=t.pathname.split("/");this.keyPrefix=[...e||[]].join("/")}}defineMinio(t){if(this.forcePathStyle=!0,this.endpoint=t.origin,this.accessKeyId=decodeURIComponent(t.username),this.secretAccessKey=decodeURIComponent(t.password),["/","",null].includes(t.pathname))this.bucket="s3db",this.keyPrefix="";else{let[,e,...r]=t.pathname.split("/");this.bucket=decodeURIComponent(e),this.keyPrefix=[...r||[]].join("/")}}}class ht extends F{constructor({verbose:t=!1,id:e=null,AwsS3Client:r,connectionString:n,parallelism:i=10}){super(),this.verbose=t,this.id=e??L(),this.parallelism=i,this.config=new lt(n),this.client=r||this.createClient()}createClient(){let t={region:this.config.region,endpoint:this.config.endpoint};return this.config.forcePathStyle&&(t.forcePathStyle=!0),this.config.accessKeyId&&(t.credentials={accessKeyId:this.config.accessKeyId,secretAccessKey:this.config.secretAccessKey}),new p(t)}async sendCommand(t){this.emit("command.request",t.constructor.name,t.input);const e=console.warn;try{console.warn=t=>{t.includes("Stream of unknown length")||e(t)}}catch(t){console.error(t)}const r=await this.client.send(t);this.emit("command.response",t.constructor.name,r,t.input);try{console.warn=e}catch(t){console.error(t)}return r}errorProxy(t,e){this.verbose&&(e.bucket=this.config.bucket,e.config=this.config,e.verbose=this.verbose),t.data=e;const r=at[t.name];return r?new r(e):t}async putObject({key:t,metadata:e,contentType:r,body:n,contentEncoding:i,contentLength:s}){const o="string"==typeof this.config.keyPrefix?this.config.keyPrefix:"",a={};if(e)for(const[t,r]of Object.entries(e)){a[String(t).replace(/[^a-zA-Z0-9\-_]/g,"_")]=String(r)}const c={Bucket:this.config.bucket,Key:o?T.join(o,t):t,Metadata:a,Body:n||Buffer.alloc(0)};void 0!==r&&(c.ContentType=r),void 0!==i&&(c.ContentEncoding=i),void 0!==s&&(c.ContentLength=s);try{const t=await this.sendCommand(new g(c));return this.emit("putObject",t,c),t}catch(e){throw this.errorProxy(e,{key:t,command:c})}}async getObject(t){const e="string"==typeof this.config.keyPrefix?this.config.keyPrefix:"",r={Bucket:this.config.bucket,Key:e?T.join(e,t):t};try{const t=await this.sendCommand(new m(r));return this.emit("getObject",t,r),t}catch(e){throw this.errorProxy(e,{key:t,command:r})}}async headObject(t){const e="string"==typeof this.config.keyPrefix?this.config.keyPrefix:"",r={Bucket:this.config.bucket,Key:e?T.join(e,t):t};try{const t=await this.sendCommand(new y(r));return this.emit("headObject",t,r),t}catch(e){throw this.errorProxy(e,{key:t,command:r})}}async copyObject({from:t,to:e}){const r={Bucket:this.config.bucket,Key:this.config.keyPrefix?T.join(this.config.keyPrefix,e):e,CopySource:T.join(this.config.bucket,this.config.keyPrefix?T.join(this.config.keyPrefix,t):t)};try{const t=await this.client.send(new b(r));return this.emit("copyObject",t,r),t}catch(n){throw this.errorProxy(n,{from:t,to:e,command:r})}}async exists(t){try{return await this.headObject(t),!0}catch(t){if("NoSuchKey"===t.name)return!1;if("NotFound"===t.name)return!1;throw t}}async deleteObject(t){const e="string"==typeof this.config.keyPrefix?this.config.keyPrefix:"",r={Bucket:this.config.bucket,Key:e?T.join(e,t):t};try{const t=await this.sendCommand(new w(r));return this.emit("deleteObject",t,r),t}catch(e){throw this.errorProxy(e,{key:t,command:r})}}async deleteObjects(t){const e="string"==typeof this.config.keyPrefix?this.config.keyPrefix:"",n=r(t,1e3),{results:i,errors:s}=await d.for(n).withConcurrency(this.parallelism).process(async t=>{const r={Bucket:this.config.bucket,Delete:{Objects:t.map(t=>({Key:e?T.join(e,t):t}))}};try{return await this.sendCommand(new _(r))}catch(e){throw this.errorProxy(e,{keys:t,command:r})}}),o={deleted:i,notFound:s};return this.emit("deleteObjects",o,t),o}async deleteAll({prefix:t}={}){const e="string"==typeof this.config.keyPrefix?this.config.keyPrefix:"";let r,n=0;do{const i=new v({Bucket:this.config.bucket,Prefix:e?T.join(e,t):t,ContinuationToken:r}),s=await this.client.send(i);if(s.Contents&&s.Contents.length>0){const e=new _({Bucket:this.config.bucket,Delete:{Objects:s.Contents.map(t=>({Key:t.Key}))}}),r=await this.client.send(e),i=r.Deleted?r.Deleted.length:0;n+=i,this.emit("deleteAll",{prefix:t,batch:i,total:n})}r=s.IsTruncated?s.NextContinuationToken:void 0}while(r);return this.emit("deleteAllComplete",{prefix:t,totalDeleted:n}),n}async moveObject({from:t,to:e}){try{return await this.copyObject({from:t,to:e}),await this.deleteObject(t),!0}catch(r){throw this.errorProxy(r,{from:t,to:e,command:options})}}async listObjects({prefix:t,maxKeys:e=1e3,continuationToken:r}={}){const n={Bucket:this.config.bucket,MaxKeys:e,ContinuationToken:r,Prefix:this.config.keyPrefix?T.join(this.config.keyPrefix,t||""):t||""};try{const t=await this.sendCommand(new v(n));return this.emit("listObjects",t,n),t}catch(t){throw this.errorProxy(t,{command:n})}}async count({prefix:t}={}){let e,r=0,n=!0;for(;n;){const i={prefix:t,continuationToken:e},s=await this.listObjects(i);r+=s.KeyCount||0,n=s.IsTruncated||!1,e=s.NextContinuationToken}return this.emit("count",r,{prefix:t}),r}async getAllKeys({prefix:t}={}){let e,r=[],n=!0;for(;n;){const i={prefix:t,continuationToken:e},s=await this.listObjects(i);s.Contents&&(r=r.concat(s.Contents.map(t=>t.Key))),n=s.IsTruncated||!1,e=s.NextContinuationToken}return this.config.keyPrefix&&(r=r.map(t=>t.replace(this.config.keyPrefix,"")).map(t=>t.startsWith("/")?t.replace("/",""):t)),this.emit("getAllKeys",r,{prefix:t}),r}async getContinuationTokenAfterOffset(t={}){const{prefix:e,offset:r=1e3}=t;if(0===r)return null;let n,i=!0,s=0;for(;i;){const t={prefix:e,maxKeys:r<1e3?r:r-s>1e3?1e3:r-s,continuationToken:n},o=await this.listObjects(t);if(o.Contents&&(s+=o.Contents.length),i=o.IsTruncated||!1,n=o.NextContinuationToken,s>=r)break}return this.emit("getContinuationTokenAfterOffset",n||null,t),n||null}async getKeysPage(t={}){const{prefix:e,offset:r=0,amount:n=100}=t;let i,s=[],o=!0;if(r>0&&(i=await this.getContinuationTokenAfterOffset({prefix:e,offset:r}),!i))return this.emit("getKeysPage",[],t),[];for(;o;){const t={prefix:e,continuationToken:i},r=await this.listObjects(t);if(r.Contents&&(s=s.concat(r.Contents.map(t=>t.Key))),o=r.IsTruncated||!1,i=r.NextContinuationToken,s.length>=n){s=s.slice(0,n);break}}return this.config.keyPrefix&&(s=s.map(t=>t.replace(this.config.keyPrefix,"")).map(t=>t.startsWith("/")?t.replace("/",""):t)),this.emit("getKeysPage",s,t),s}async moveAllObjects({prefixFrom:t,prefixTo:e}){const r=await this.getAllKeys({prefix:t}),{results:n,errors:i}=await d.for(r).withConcurrency(this.parallelism).process(async r=>{const n=r.replace(t,e);try{return await this.moveObject({from:r,to:n}),n}catch(t){throw this.errorProxy(t,{from:r,to:n})}});if(this.emit("moveAllObjects",{results:n,errors:i},{prefixFrom:t,prefixTo:e}),i.length>0)throw new Error("Some objects could not be moved");return n}}async function ft(){let t;if("undefined"!=typeof process)try{const{webcrypto:e}=await import("crypto");t=e}catch(t){throw new Error("Crypto API not available")}else"undefined"!=typeof window&&(t=window.crypto);if(!t)throw new Error("Could not load any crypto library");return t}async function dt(t){const e=await ft(),r=(new TextEncoder).encode(t),n=await e.subtle.digest("SHA-256",r);return Array.from(new Uint8Array(n)).map(t=>t.toString(16).padStart(2,"0")).join("")}async function pt(t,e){const r=await ft(),n=r.getRandomValues(new Uint8Array(16)),i=await mt(e,n),s=r.getRandomValues(new Uint8Array(12)),o=(new TextEncoder).encode(t),a=await r.subtle.encrypt({name:"AES-GCM",iv:s},i,o),c=new Uint8Array(n.length+s.length+a.byteLength);return c.set(n),c.set(s,n.length),c.set(new Uint8Array(a),n.length+s.length),function(t){if("undefined"!=typeof process)return Buffer.from(t).toString("base64");{const e=String.fromCharCode.apply(null,new Uint8Array(t));return window.btoa(e)}}(c)}async function gt(t,e){const r=await ft(),n=function(t){if("undefined"!=typeof process)return new Uint8Array(Buffer.from(t,"base64"));{const e=window.atob(t),r=e.length,n=new Uint8Array(r);for(let t=0;t<r;t++)n[t]=e.charCodeAt(t);return n}}(t),i=n.slice(0,16),s=n.slice(16,28),o=n.slice(28),a=await mt(e,i),c=await r.subtle.decrypt({name:"AES-GCM",iv:s},a,o);return(new TextDecoder).decode(c)}async function mt(t,e){const r=await ft(),n=(new TextEncoder).encode(t),i=await r.subtle.importKey("raw",n,{name:"PBKDF2"},!1,["deriveKey"]);return await r.subtle.deriveKey({name:"PBKDF2",salt:e,iterations:1e5,hash:"SHA-256"},i,{name:"AES-GCM",length:256},!0,["encrypt","decrypt"])}function yt(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var bt,wt,_t,vt,kt,St,Ot,Et,Rt,xt,At,It,jt,Dt={};function Pt(){if(wt)return bt;var t,e;wt=1;var r,n={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:"\n",r:"\r",t:"\t"};function i(e){throw{name:"SyntaxError",message:e,at:t,text:r}}function s(n){return n&&n!==e&&i("Expected '"+n+"' instead of '"+e+"'"),e=r.charAt(t),t+=1,e}function o(){var t,r="";for("-"===e&&(r="-",s("-"));e>="0"&&e<="9";)r+=e,s();if("."===e)for(r+=".";s()&&e>="0"&&e<="9";)r+=e;if("e"===e||"E"===e)for(r+=e,s(),"-"!==e&&"+"!==e||(r+=e,s());e>="0"&&e<="9";)r+=e,s();return t=Number(r),isFinite(t)||i("Bad number"),t}function a(){var t,r,o,a="";if('"'===e)for(;s();){if('"'===e)return s(),a;if("\\"===e)if(s(),"u"===e){for(o=0,r=0;r<4&&(t=parseInt(s(),16),isFinite(t));r+=1)o=16*o+t;a+=String.fromCharCode(o)}else{if("string"!=typeof n[e])break;a+=n[e]}else a+=e}i("Bad string")}function c(){for(;e&&e<=" ";)s()}function u(){switch(c(),e){case"{":return function(){var t,r={};if("{"===e){if(s("{"),c(),"}"===e)return s("}"),r;for(;e;){if(t=a(),c(),s(":"),Object.prototype.hasOwnProperty.call(r,t)&&i('Duplicate key "'+t+'"'),r[t]=u(),c(),"}"===e)return s("}"),r;s(","),c()}}i("Bad object")}();case"[":return function(){var t=[];if("["===e){if(s("["),c(),"]"===e)return s("]"),t;for(;e;){if(t.push(u()),c(),"]"===e)return s("]"),t;s(","),c()}}i("Bad array")}();case'"':return a();case"-":return o();default:return e>="0"&&e<="9"?o():function(){switch(e){case"t":return s("t"),s("r"),s("u"),s("e"),!0;case"f":return s("f"),s("a"),s("l"),s("s"),s("e"),!1;case"n":return s("n"),s("u"),s("l"),s("l"),null;default:i("Unexpected '"+e+"'")}}()}}return bt=function(n,s){var o;return r=n,t=0,e=" ",o=u(),c(),e&&i("Syntax error"),"function"==typeof s?function t(e,r){var n,i,o=e[r];if(o&&"object"==typeof o)for(n in u)Object.prototype.hasOwnProperty.call(o,n)&&(void 0===(i=t(o,n))?delete o[n]:o[n]=i);return s.call(e,r,o)}({"":o},""):o},bt}function Nt(){if(vt)return _t;vt=1;var t,e,r,n=/[\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,i={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};function s(t){return n.lastIndex=0,n.test(t)?'"'+t.replace(n,function(t){var e=i[t];return"string"==typeof e?e:"\\u"+("0000"+t.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+t+'"'}function o(n,i){var a,c,u,l,h,f=t,d=i[n];switch(d&&"object"==typeof d&&"function"==typeof d.toJSON&&(d=d.toJSON(n)),"function"==typeof r&&(d=r.call(i,n,d)),typeof d){case"string":return s(d);case"number":return isFinite(d)?String(d):"null";case"boolean":case"null":return String(d);case"object":if(!d)return"null";if(t+=e,h=[],"[object Array]"===Object.prototype.toString.apply(d)){for(l=d.length,a=0;a<l;a+=1)h[a]=o(a,d)||"null";return u=0===h.length?"[]":t?"[\n"+t+h.join(",\n"+t)+"\n"+f+"]":"["+h.join(",")+"]",t=f,u}if(r&&"object"==typeof r)for(l=r.length,a=0;a<l;a+=1)"string"==typeof(c=r[a])&&(u=o(c,d))&&h.push(s(c)+(t?": ":":")+u);else for(c in d)Object.prototype.hasOwnProperty.call(d,c)&&(u=o(c,d))&&h.push(s(c)+(t?": ":":")+u);return u=0===h.length?"{}":t?"{\n"+t+h.join(",\n"+t)+"\n"+f+"}":"{"+h.join(",")+"}",t=f,u}}return _t=function(n,i,s){var a;if(t="",e="","number"==typeof s)for(a=0;a<s;a+=1)e+=" ";else"string"==typeof s&&(e=s);if(r=i,i&&"function"!=typeof i&&("object"!=typeof i||"number"!=typeof i.length))throw new Error("JSON.stringify");return o("",{"":n})}}function Tt(){if(Rt)return Et;Rt=1;var t=Object.prototype.toString;return Et=function(e){var r=t.call(e),n="[object Arguments]"===r;return n||(n="[object Array]"!==r&&null!==e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&"[object Function]"===t.call(e.callee)),n}}function Ct(){if(At)return xt;var t;if(At=1,!Object.keys){var e=Object.prototype.hasOwnProperty,r=Object.prototype.toString,n=Tt(),i=Object.prototype.propertyIsEnumerable,s=!i.call({toString:null},"toString"),o=i.call(function(){},"prototype"),a=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],c=function(t){var e=t.constructor;return e&&e.prototype===t},u={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},l=function(){if("undefined"==typeof window)return!1;for(var t in window)try{if(!u["$"+t]&&e.call(window,t)&&null!==window[t]&&"object"==typeof window[t])try{c(window[t])}catch(t){return!0}}catch(t){return!0}return!1}();t=function(t){var i=null!==t&&"object"==typeof t,u="[object Function]"===r.call(t),h=n(t),f=i&&"[object String]"===r.call(t),d=[];if(!i&&!u&&!h)throw new TypeError("Object.keys called on a non-object");var p=o&&u;if(f&&t.length>0&&!e.call(t,0))for(var g=0;g<t.length;++g)d.push(String(g));if(h&&t.length>0)for(var m=0;m<t.length;++m)d.push(String(m));else for(var y in t)p&&"prototype"===y||!e.call(t,y)||d.push(String(y));if(s)for(var b=function(t){if("undefined"==typeof window||!l)return c(t);try{return c(t)}catch(t){return!1}}(t),w=0;w<a.length;++w)b&&"constructor"===a[w]||!e.call(t,a[w])||d.push(a[w]);return d}}return xt=t}function Mt(){if(jt)return It;jt=1;var t=Array.prototype.slice,e=Tt(),r=Object.keys,n=r?function(t){return r(t)}:Ct(),i=Object.keys;return n.shim=function(){if(Object.keys){var r=function(){var t=Object.keys(arguments);return t&&t.length===arguments.length}(1,2);r||(Object.keys=function(r){return e(r)?i(t.call(r)):i(r)})}else Object.keys=n;return Object.keys||n},It=n}var Lt,$t,Ut,zt,Ft,Bt,qt,Vt,Ht,Kt,Zt,Wt,Jt,Gt,Yt,Qt,Xt,te,ee,re,ne,ie,se,oe,ae,ce,ue,le,he,fe,de,pe,ge,me,ye,be,we,_e,ve,ke,Se,Oe,Ee,Re,xe,Ae,Ie,je,De,Pe,Ne,Te,Ce,Me,Le,$e,Ue,ze,Fe,Be,qe,Ve,He,Ke,Ze,We,Je,Ge,Ye,Qe,Xe,tr,er,rr,nr,ir,sr,or,ar,cr,ur,lr={exports:{}};function hr(){return $t?Lt:($t=1,Lt=Object)}function fr(){return zt?Ut:(zt=1,Ut=Error)}function dr(){return Bt?Ft:(Bt=1,Ft=EvalError)}function pr(){return Vt?qt:(Vt=1,qt=RangeError)}function gr(){return Kt?Ht:(Kt=1,Ht=ReferenceError)}function mr(){return Wt?Zt:(Wt=1,Zt=SyntaxError)}function yr(){return Gt?Jt:(Gt=1,Jt=TypeError)}function br(){return Qt?Yt:(Qt=1,Yt=URIError)}function wr(){return te?Xt:(te=1,Xt=Math.abs)}function _r(){return re?ee:(re=1,ee=Math.floor)}function vr(){return ie?ne:(ie=1,ne=Math.max)}function kr(){return oe?se:(oe=1,se=Math.min)}function Sr(){return ce?ae:(ce=1,ae=Math.pow)}function Or(){return le?ue:(le=1,ue=Math.round)}function Er(){if(pe)return de;pe=1;var t=fe?he:(fe=1,he=Number.isNaN||function(t){return t!=t});return de=function(e){return t(e)||0===e?e:e<0?-1:1}}function Rr(){if(be)return ye;be=1;var t=me?ge:(me=1,ge=Object.getOwnPropertyDescriptor);if(t)try{t([],"length")}catch(e){t=null}return ye=t}function xr(){if(_e)return we;_e=1;var t=Object.defineProperty||!1;if(t)try{t({},"a",{value:1})}catch(e){t=!1}return we=t}function Ar(){if(Oe)return Se;Oe=1;var t="undefined"!=typeof Symbol&&Symbol,e=ke?ve:(ke=1,ve=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var t={},e=Symbol("test"),r=Object(e);if("string"==typeof e)return!1;if("[object Symbol]"!==Object.prototype.toString.call(e))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(var n in t[e]=42,t)return!1;if("function"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var i=Object.getOwnPropertySymbols(t);if(1!==i.length||i[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var s=Object.getOwnPropertyDescriptor(t,e);if(42!==s.value||!0!==s.enumerable)return!1}return!0});return Se=function(){return"function"==typeof t&&("function"==typeof Symbol&&("symbol"==typeof t("foo")&&("symbol"==typeof Symbol("bar")&&e())))}}function Ir(){return Re?Ee:(Re=1,Ee="undefined"!=typeof Reflect&&Reflect.getPrototypeOf||null)}function jr(){return Ae?xe:(Ae=1,xe=hr().getPrototypeOf||null)}function Dr(){if(je)return Ie;je=1;var t=Object.prototype.toString,e=Math.max,r=function(t,e){for(var r=[],n=0;n<t.length;n+=1)r[n]=t[n];for(var i=0;i<e.length;i+=1)r[i+t.length]=e[i];return r};return Ie=function(n){var i=this;if("function"!=typeof i||"[object Function]"!==t.apply(i))throw new TypeError("Function.prototype.bind called on incompatible "+i);for(var s,o=function(t,e){for(var r=[],n=e,i=0;n<t.length;n+=1,i+=1)r[i]=t[n];return r}(arguments,1),a=e(0,i.length-o.length),c=[],u=0;u<a;u++)c[u]="$"+u;if(s=Function("binder","return function ("+function(t,e){for(var r="",n=0;n<t.length;n+=1)r+=t[n],n+1<t.length&&(r+=e);return r}(c,",")+"){ return binder.apply(this,arguments); }")(function(){if(this instanceof s){var t=i.apply(this,r(o,arguments));return Object(t)===t?t:this}return i.apply(n,r(o,arguments))}),i.prototype){var l=function(){};l.prototype=i.prototype,s.prototype=new l,l.prototype=null}return s},Ie}function Pr(){if(Pe)return De;Pe=1;var t=Dr();return De=Function.prototype.bind||t}function Nr(){return Te?Ne:(Te=1,Ne=Function.prototype.call)}function Tr(){return Me?Ce:(Me=1,Ce=Function.prototype.apply)}function Cr(){if(ze)return Ue;ze=1;var t=Pr(),e=Tr(),r=Nr(),n=$e?Le:($e=1,Le="undefined"!=typeof Reflect&&Reflect&&Reflect.apply);return Ue=n||t.call(r,e)}function Mr(){if(Be)return Fe;Be=1;var t=Pr(),e=yr(),r=Nr(),n=Cr();return Fe=function(i){if(i.length<1||"function"!=typeof i[0])throw new e("a function is required");return n(t,r,i)}}function Lr(){if(Ve)return qe;Ve=1;var t,e=Mr(),r=Rr();try{t=[].__proto__===Array.prototype}catch(t){if(!t||"object"!=typeof t||!("code"in t)||"ERR_PROTO_ACCESS"!==t.code)throw t}var n=!!t&&r&&r(Object.prototype,"__proto__"),i=Object,s=i.getPrototypeOf;return qe=n&&"function"==typeof n.get?e([n.get]):"function"==typeof s&&function(t){return s(null==t?t:i(t))}}function $r(){if(Ke)return He;Ke=1;var t=Ir(),e=jr(),r=Lr();return He=t?function(e){return t(e)}:e?function(t){if(!t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("getProto: not an object");return e(t)}:r?function(t){return r(t)}:null}function Ur(){if(We)return Ze;We=1;var t=Function.prototype.call,e=Object.prototype.hasOwnProperty,r=Pr();return Ze=r.call(t,e)}function zr(){if(Ge)return Je;var t;Ge=1;var e=hr(),r=fr(),n=dr(),i=pr(),s=gr(),o=mr(),a=yr(),c=br(),u=wr(),l=_r(),h=vr(),f=kr(),d=Sr(),p=Or(),g=Er(),m=Function,y=function(t){try{return m('"use strict"; return ('+t+").constructor;")()}catch(t){}},b=Rr(),w=xr(),_=function(){throw new a},v=b?function(){try{return _}catch(t){try{return b(arguments,"callee").get}catch(t){return _}}}():_,k=Ar()(),S=$r(),O=jr(),E=Ir(),R=Tr(),x=Nr(),A={},I="undefined"!=typeof Uint8Array&&S?S(Uint8Array):t,j={__proto__:null,"%AggregateError%":"undefined"==typeof AggregateError?t:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?t:ArrayBuffer,"%ArrayIteratorPrototype%":k&&S?S([][Symbol.iterator]()):t,"%AsyncFromSyncIteratorPrototype%":t,"%AsyncFunction%":A,"%AsyncGenerator%":A,"%AsyncGeneratorFunction%":A,"%AsyncIteratorPrototype%":A,"%Atomics%":"undefined"==typeof Atomics?t:Atomics,"%BigInt%":"undefined"==typeof BigInt?t:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?t:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?t:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?t:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":r,"%eval%":eval,"%EvalError%":n,"%Float16Array%":"undefined"==typeof Float16Array?t:Float16Array,"%Float32Array%":"undefined"==typeof Float32Array?t:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?t:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?t:FinalizationRegistry,"%Function%":m,"%GeneratorFunction%":A,"%Int8Array%":"undefined"==typeof Int8Array?t:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?t:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?t:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":k&&S?S(S([][Symbol.iterator]())):t,"%JSON%":"object"==typeof JSON?JSON:t,"%Map%":"undefined"==typeof Map?t:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&k&&S?S((new Map)[Symbol.iterator]()):t,"%Math%":Math,"%Number%":Number,"%Object%":e,"%Object.getOwnPropertyDescriptor%":b,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?t:Promise,"%Proxy%":"undefined"==typeof Proxy?t:Proxy,"%RangeError%":i,"%ReferenceError%":s,"%Reflect%":"undefined"==typeof Reflect?t:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?t:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&k&&S?S((new Set)[Symbol.iterator]()):t,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?t:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":k&&S?S(""[Symbol.iterator]()):t,"%Symbol%":k?Symbol:t,"%SyntaxError%":o,"%ThrowTypeError%":v,"%TypedArray%":I,"%TypeError%":a,"%Uint8Array%":"undefined"==typeof Uint8Array?t:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?t:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?t:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?t:Uint32Array,"%URIError%":c,"%WeakMap%":"undefined"==typeof WeakMap?t:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?t:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?t:WeakSet,"%Function.prototype.call%":x,"%Function.prototype.apply%":R,"%Object.defineProperty%":w,"%Object.getPrototypeOf%":O,"%Math.abs%":u,"%Math.floor%":l,"%Math.max%":h,"%Math.min%":f,"%Math.pow%":d,"%Math.round%":p,"%Math.sign%":g,"%Reflect.getPrototypeOf%":E};if(S)try{null.error}catch(t){var D=S(S(t));j["%Error.prototype%"]=D}var P=function t(e){var r;if("%AsyncFunction%"===e)r=y("async function () {}");else if("%GeneratorFunction%"===e)r=y("function* () {}");else if("%AsyncGeneratorFunction%"===e)r=y("async function* () {}");else if("%AsyncGenerator%"===e){var n=t("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if("%AsyncIteratorPrototype%"===e){var i=t("%AsyncGenerator%");i&&S&&(r=S(i.prototype))}return j[e]=r,r},N={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},T=Pr(),C=Ur(),M=T.call(x,Array.prototype.concat),L=T.call(R,Array.prototype.splice),$=T.call(x,String.prototype.replace),U=T.call(x,String.prototype.slice),z=T.call(x,RegExp.prototype.exec),F=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,B=/\\(\\)?/g,q=function(t,e){var r,n=t;if(C(N,n)&&(n="%"+(r=N[n])[0]+"%"),C(j,n)){var i=j[n];if(i===A&&(i=P(n)),void 0===i&&!e)throw new a("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:r,name:n,value:i}}throw new o("intrinsic "+t+" does not exist!")};return Je=function(t,e){if("string"!=typeof t||0===t.length)throw new a("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof e)throw new a('"allowMissing" argument must be a boolean');if(null===z(/^%?[^%]*%?$/,t))throw new o("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=function(t){var e=U(t,0,1),r=U(t,-1);if("%"===e&&"%"!==r)throw new o("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==e)throw new o("invalid intrinsic syntax, expected opening `%`");var n=[];return $(t,F,function(t,e,r,i){n[n.length]=r?$(i,B,"$1"):e||t}),n}(t),n=r.length>0?r[0]:"",i=q("%"+n+"%",e),s=i.name,c=i.value,u=!1,l=i.alias;l&&(n=l[0],L(r,M([0,1],l)));for(var h=1,f=!0;h<r.length;h+=1){var d=r[h],p=U(d,0,1),g=U(d,-1);if(('"'===p||"'"===p||"`"===p||'"'===g||"'"===g||"`"===g)&&p!==g)throw new o("property names with quotes must have matching quotes");if("constructor"!==d&&f||(u=!0),C(j,s="%"+(n+="."+d)+"%"))c=j[s];else if(null!=c){if(!(d in c)){if(!e)throw new a("base intrinsic for "+t+" exists, but the property is not available.");return}if(b&&h+1>=r.length){var m=b(c,d);c=(f=!!m)&&"get"in m&&!("originalValue"in m.get)?m.get:c[d]}else f=C(c,d),c=c[d];f&&!u&&(j[s]=c)}}return c},Je}function Fr(){if(Qe)return Ye;Qe=1;var t=xr(),e=mr(),r=yr(),n=Rr();return Ye=function(i,s,o){if(!i||"object"!=typeof i&&"function"!=typeof i)throw new r("`obj` must be an object or a function`");if("string"!=typeof s&&"symbol"!=typeof s)throw new r("`property` must be a string or a symbol`");if(arguments.length>3&&"boolean"!=typeof arguments[3]&&null!==arguments[3])throw new r("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&"boolean"!=typeof arguments[4]&&null!==arguments[4])throw new r("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&"boolean"!=typeof arguments[5]&&null!==arguments[5])throw new r("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&"boolean"!=typeof arguments[6])throw new r("`loose`, if provided, must be a boolean");var a=arguments.length>3?arguments[3]:null,c=arguments.length>4?arguments[4]:null,u=arguments.length>5?arguments[5]:null,l=arguments.length>6&&arguments[6],h=!!n&&n(i,s);if(t)t(i,s,{configurable:null===u&&h?h.configurable:!u,enumerable:null===a&&h?h.enumerable:!a,value:o,writable:null===c&&h?h.writable:!c});else{if(!l&&(a||c||u))throw new e("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");i[s]=o}},Ye}function Br(){if(tr)return Xe;tr=1;var t=xr(),e=function(){return!!t};return e.hasArrayLengthDefineBug=function(){if(!t)return null;try{return 1!==t([],"length",{value:1}).length}catch(t){return!0}},Xe=e}function qr(){if(rr)return er;rr=1;var t=zr(),e=Fr(),r=Br()(),n=Rr(),i=yr(),s=t("%Math.floor%");return er=function(t,o){if("function"!=typeof t)throw new i("`fn` is not a function");if("number"!=typeof o||o<0||o>4294967295||s(o)!==o)throw new i("`length` must be a positive 32-bit integer");var a=arguments.length>2&&!!arguments[2],c=!0,u=!0;if("length"in t&&n){var l=n(t,"length");l&&!l.configurable&&(c=!1),l&&!l.writable&&(u=!1)}return(c||u||!a)&&(r?e(t,"length",o,!0,!0):e(t,"length",o)),t},er}function Vr(){if(ir)return nr;ir=1;var t=Pr(),e=Tr(),r=Cr();return nr=function(){return r(t,e,arguments)},nr}function Hr(){return sr||(sr=1,function(t){var e=qr(),r=xr(),n=Mr(),i=Vr();t.exports=function(t){var r=n(arguments),i=t.length-(arguments.length-1);return e(r,1+(i>0?i:0),!0)},r?r(t.exports,"apply",{value:i}):t.exports.apply=i}(lr)),lr.exports}function Kr(){if(ar)return or;ar=1;var t=zr(),e=Mr(),r=e([t("%String.prototype.indexOf%")]);return or=function(n,i){var s=t(n,!!i);return"function"==typeof s&&r(n,".prototype.")>-1?e([s]):s}}var Zr=function(){if(ur)return cr;ur=1;var t=("undefined"!=typeof JSON?JSON:(kt||(kt=1,Dt.parse=Pt(),Dt.stringify=Nt()),Dt)).stringify,e=function(){if(Ot)return St;Ot=1;var t={}.toString;return St=Array.isArray||function(e){return"[object Array]"==t.call(e)}}(),r=Mt(),n=Hr(),i=Kr(),s=i("Array.prototype.join"),o=i("Array.prototype.indexOf"),a=i("Array.prototype.splice"),c=i("Array.prototype.sort"),u=function(t,e){for(var r="",n=0;n<t;n+=1)r+=e;return r},l=function(t,e,r){return r};return cr=function(i){var h=arguments.length>1?arguments[1]:void 0,f=h&&h.space||"";"number"==typeof f&&(f=u(f," "));var d=!!h&&"boolean"==typeof h.cycles&&h.cycles,p=h&&h.replacer?n(h.replacer):l;if(h&&void 0!==h.collapseEmpty&&"boolean"!=typeof h.collapseEmpty)throw new TypeError("`collapseEmpty` must be a boolean, if provided");var g=!!h&&h.collapseEmpty,m="function"==typeof h?h:h&&h.cmp,y=m&&function(t){var e=m.length>2&&function(e){return t[e]};return function(r,n){return m({key:r,value:t[r]},{key:n,value:t[n]},e?{__proto__:null,get:e}:void 0)}},b=[];return function n(i,l,h,m){var w=f?"\n"+u(m,f):"",_=f?": ":":";if(h&&h.toJSON&&"function"==typeof h.toJSON&&(h=h.toJSON()),void 0!==(h=p(i,l,h))){if("object"!=typeof h||null===h)return t(h);var v=function(t,e){return g&&0===t.length?e:("[]"===e?"[":"{")+s(t,",")+w+("[]"===e?"]":"}")};if(e(h)){for(var k=[],S=0;S<h.length;S++){var O=n(h,S,h[S],m+1)||t(null);k[k.length]=w+f+O}return v(k,"[]")}if(-1!==o(b,h)){if(d)return t("__cycle__");throw new TypeError("Converting circular structure to JSON")}b[b.length]=h;var E=c(r(h),y&&y(h));for(k=[],S=0;S<E.length;S++){var R=n(h,l=E[S],h[l],m+1);if(R){var x=t(l)+_+R;k[k.length]=w+f+x}}return a(b,o(b,h),1),v(k,"{}")}}({"":i},"",i,0)},cr}(),Wr=yt(Zr);async function Jr(t,e,r){if(!this.passphrase)return e.push({actual:t,type:"encryptionKeyMissing"}),t;try{return await pt(String(t),this.passphrase)}catch(r){e.push({actual:t,type:"encryptionProblem",error:r})}return t}async function Gr(t,e,r){return i(t)?t:JSON.stringify(t)}class Yr extends E{constructor({options:t,passphrase:e,autoEncrypt:r=!0}={}){super(n({},{useNewCustomCheckerFunction:!0,messages:{encryptionKeyMissing:"Missing configuration for secrets encryption.",encryptionProblem:"Problem encrypting secret. Actual: {actual}. Error: {error}"},defaults:{string:{trim:!0},object:{strict:"remove"}}},t)),this.passphrase=e,this.autoEncrypt=r,this.alias("secret",{type:"string",custom:this.autoEncrypt?Jr:void 0,messages:{string:"The '{field}' field must be a string.",stringMin:"This secret '{field}' field length must be at least {expected} long."}}),this.alias("secretAny",{type:"any",custom:this.autoEncrypt?Jr:void 0}),this.alias("secretNumber",{type:"number",custom:this.autoEncrypt?Jr:void 0}),this.alias("json",{type:"any",custom:this.autoEncrypt?Gr:void 0})}}const Qr=new Proxy(Yr,{instance:null,construct(t,e){return this.instance||(this.instance=new t(...e)),this.instance}});const Xr={trim:t=>t.trim(),encrypt:(t,{passphrase:e})=>pt(t,e),decrypt:async(t,{passphrase:e})=>{try{return await gt(t,e)}catch(e){return console.warn(`Schema decrypt error: ${e}`,e),t}},toString:t=>String(t),fromArray:(t,{separator:e})=>{if(null==t||!Array.isArray(t))return t;if(0===t.length)return"[]";return t.map(t=>"string"==typeof t?t.replace(/\\/g,"\\\\").replace(new RegExp(`\\${e}`,"g"),`\\${e}`):String(t)).join(e)},toArray:(t,{separator:e})=>{if(null==t)return t;if("[]"===t)return[];if(""===t)return[];const r=[];let n="",i=0;const s=String(t);for(;i<s.length;)"\\"===s[i]&&i+1<s.length?s[i+1]===e?(n+=e,i+=2):"\\"===s[i+1]?(n+="\\",i+=2):(n+=s[i],i++):s[i]===e?(r.push(n),n="",i++):(n+=s[i],i++);return r.push(n),r},toJSON:t=>JSON.stringify(t),fromJSON:t=>JSON.parse(t),toNumber:t=>i(t)?t.includes(".")?parseFloat(t):parseInt(t):t,toBool:t=>[!0,1,"true","1","yes","y"].includes(t),fromBool:t=>[!0,1,"true","1","yes","y"].includes(t)?"1":"0"};class tn{constructor(t){const{map:e,name:r,attributes:i,passphrase:a,version:c=1,options:u={}}=t;this.name=r,this.version=c,this.attributes=i||{},this.passphrase=a??"secret",this.options=n({},this.defaultOptions(),u),this.allNestedObjectsOptional=this.options.allNestedObjectsOptional??!1;const l=this.preprocessAttributesForValidation(this.attributes);if(this.validator=new Qr({autoEncrypt:!1}).compile(n({$$async:!0},l)),this.options.generateAutoHooks&&this.generateAutoHooks(),s(e)){const t=S(this.attributes,{safe:!0}),e=Object.keys(t).filter(t=>!t.includes("$$")),r=this.extractObjectKeys(this.attributes),n=[...new Set([...e,...r])],{mapping:i,reversedMapping:s}=function(t){const e={},r={};return t.forEach((t,n)=>{const i=n.toString(36);e[t]=i,r[i]=t}),{mapping:e,reversedMapping:r}}(n);this.map=i,this.reversedMap=s}else this.map=e,this.reversedMap=o(e)}defaultOptions(){return{autoEncrypt:!0,autoDecrypt:!0,arraySeparator:"|",generateAutoHooks:!0,hooks:{beforeMap:{},afterMap:{},beforeUnmap:{},afterUnmap:{}}}}addHook(t,e,r){this.options.hooks[t][e]||(this.options.hooks[t][e]=[]),this.options.hooks[t][e]=a([...this.options.hooks[t][e],r])}extractObjectKeys(t,e=""){const r=[];for(const[n,i]of Object.entries(t)){if(n.startsWith("$$"))continue;const t=e?`${e}.${n}`:n;"object"!=typeof i||null===i||Array.isArray(i)||(r.push(t),"object"===i.$$type&&r.push(...this.extractObjectKeys(i,t)))}return r}generateAutoHooks(){const t=S(c(this.attributes),{safe:!0});for(const[e,r]of Object.entries(t))r.includes("array")&&(this.addHook("beforeMap",e,"fromArray"),this.addHook("afterUnmap",e,"toArray")),r.includes("secret")&&(this.options.autoEncrypt&&this.addHook("beforeMap",e,"encrypt"),this.options.autoDecrypt&&this.addHook("afterUnmap",e,"decrypt")),r.includes("number")&&(this.addHook("beforeMap",e,"toString"),this.addHook("afterUnmap",e,"toNumber")),r.includes("boolean")&&(this.addHook("beforeMap",e,"fromBool"),this.addHook("afterUnmap",e,"toBool")),r.includes("json")&&(this.addHook("beforeMap",e,"toJSON"),this.addHook("afterUnmap",e,"fromJSON"))}static import(t){let{map:e,name:r,options:n,version:s,attributes:o}=i(t)?JSON.parse(t):t;o=tn._importAttributes(o);return new tn({map:e,name:r,options:n,version:s,attributes:o})}static _importAttributes(t){if("string"==typeof t){try{const e=JSON.parse(t);if("object"==typeof e&&null!==e)return tn._importAttributes(e)}catch(t){}return t}if(Array.isArray(t))return t.map(t=>tn._importAttributes(t));if("object"==typeof t&&null!==t){const e={};for(const[r,n]of Object.entries(t))e[r]=tn._importAttributes(n);return e}return t}export(){return{version:this.version,name:this.name,options:this.options,attributes:this._exportAttributes(this.attributes),map:this.map}}_exportAttributes(t){if("string"==typeof t)return t;if(Array.isArray(t))return t.map(t=>this._exportAttributes(t));if("object"==typeof t&&null!==t){const e={};for(const[r,n]of Object.entries(t))e[r]=this._exportAttributes(n);return e}return t}async applyHooksActions(t,e){for(const[r,n]of Object.entries(this.options.hooks[e]))for(const e of n){const n=u(t,r);void 0!==n&&"function"==typeof Xr[e]&&l(t,r,await Xr[e](n,{passphrase:this.passphrase,separator:this.options.arraySeparator}))}}async validate(t,{mutateOriginal:e=!1}={}){let r=e?t:c(t);return await this.validator(r)}async mapper(t){const e=S(c(t),{safe:!0});await this.applyHooksActions(e,"beforeMap");const r={_v:this.version+""};for(const[t,n]of Object.entries(e))r[this.map[t]]=n;return await this.applyHooksActions(r,"afterMap"),r}async unmapper(t){const e=c(t);delete e._v,await this.applyHooksActions(e,"beforeUnmap");const r={};for(const[t,n]of Object.entries(e))r[this.reversedMap[t]]=n;return await this.applyHooksActions(r,"afterUnmap"),O(r)}preprocessAttributesForValidation(t){const e={};for(const[r,n]of Object.entries(t))if("object"!=typeof n||null===n||Array.isArray(n))e[r]=n;else{const t=n.$$type&&n.$$type.includes("required"),i=n.$$type&&n.$$type.includes("optional"),s={type:"object",properties:this.preprocessAttributesForValidation(n),strict:!1};t||(i||this.allNestedObjectsOptional)&&(s.optional=!0),e[r]=s}return e}}var en="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},rn=[],nn=[],sn="undefined"!=typeof Uint8Array?Uint8Array:Array,on=!1;function an(){on=!0;for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e=0;e<64;++e)rn[e]=t[e],nn[t.charCodeAt(e)]=e;nn["-".charCodeAt(0)]=62,nn["_".charCodeAt(0)]=63}function cn(t){return rn[t>>18&63]+rn[t>>12&63]+rn[t>>6&63]+rn[63&t]}function un(t,e,r){for(var n,i=[],s=e;s<r;s+=3)n=(t[s]<<16)+(t[s+1]<<8)+t[s+2],i.push(cn(n));return i.join("")}function ln(t){var e;on||an();for(var r=t.length,n=r%3,i="",s=[],o=16383,a=0,c=r-n;a<c;a+=o)s.push(un(t,a,a+o>c?c:a+o));return 1===n?(e=t[r-1],i+=rn[e>>2],i+=rn[e<<4&63],i+="=="):2===n&&(e=(t[r-2]<<8)+t[r-1],i+=rn[e>>10],i+=rn[e>>4&63],i+=rn[e<<2&63],i+="="),s.push(i),s.join("")}function hn(t,e,r,n,i){var s,o,a=8*i-n-1,c=(1<<a)-1,u=c>>1,l=-7,h=r?i-1:0,f=r?-1:1,d=t[e+h];for(h+=f,s=d&(1<<-l)-1,d>>=-l,l+=a;l>0;s=256*s+t[e+h],h+=f,l-=8);for(o=s&(1<<-l)-1,s>>=-l,l+=n;l>0;o=256*o+t[e+h],h+=f,l-=8);if(0===s)s=1-u;else{if(s===c)return o?NaN:1/0*(d?-1:1);o+=Math.pow(2,n),s-=u}return(d?-1:1)*o*Math.pow(2,s-n)}function fn(t,e,r,n,i,s){var o,a,c,u=8*s-i-1,l=(1<<u)-1,h=l>>1,f=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:s-1,p=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,o=l):(o=Math.floor(Math.log(e)/Math.LN2),e*(c=Math.pow(2,-o))<1&&(o--,c*=2),(e+=o+h>=1?f/c:f*Math.pow(2,1-h))*c>=2&&(o++,c/=2),o+h>=l?(a=0,o=l):o+h>=1?(a=(e*c-1)*Math.pow(2,i),o+=h):(a=e*Math.pow(2,h-1)*Math.pow(2,i),o=0));i>=8;t[r+d]=255&a,d+=p,a/=256,i-=8);for(o=o<<i|a,u+=i;u>0;t[r+d]=255&o,d+=p,o/=256,u-=8);t[r+d-p]|=128*g}var dn={}.toString,pn=Array.isArray||function(t){return"[object Array]"==dn.call(t)};function gn(){return yn.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function mn(t,e){if(gn()<e)throw new RangeError("Invalid typed array length");return yn.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=yn.prototype:(null===t&&(t=new yn(e)),t.length=e),t}function yn(t,e,r){if(!(yn.TYPED_ARRAY_SUPPORT||this instanceof yn))return new yn(t,e,r);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return _n(this,t)}return bn(this,t,e,r)}function bn(t,e,r,n){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,r,n){if(e.byteLength,r<0||e.byteLength<r)throw new RangeError("'offset' is out of bounds");if(e.byteLength<r+(n||0))throw new RangeError("'length' is out of bounds");e=void 0===r&&void 0===n?new Uint8Array(e):void 0===n?new Uint8Array(e,r):new Uint8Array(e,r,n);yn.TYPED_ARRAY_SUPPORT?(t=e).__proto__=yn.prototype:t=vn(t,e);return t}(t,e,r,n):"string"==typeof e?function(t,e,r){"string"==typeof r&&""!==r||(r="utf8");if(!yn.isEncoding(r))throw new TypeError('"encoding" must be a valid string encoding');var n=0|On(e,r);t=mn(t,n);var i=t.write(e,r);i!==n&&(t=t.slice(0,i));return t}(t,e,r):function(t,e){if(Sn(e)){var r=0|kn(e.length);return 0===(t=mn(t,r)).length||e.copy(t,0,0,r),t}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||(n=e.length)!=n?mn(t,0):vn(t,e);if("Buffer"===e.type&&pn(e.data))return vn(t,e.data)}var n;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}function wn(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function _n(t,e){if(wn(e),t=mn(t,e<0?0:0|kn(e)),!yn.TYPED_ARRAY_SUPPORT)for(var r=0;r<e;++r)t[r]=0;return t}function vn(t,e){var r=e.length<0?0:0|kn(e.length);t=mn(t,r);for(var n=0;n<r;n+=1)t[n]=255&e[n];return t}function kn(t){if(t>=gn())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+gn().toString(16)+" bytes");return 0|t}function Sn(t){return!(null==t||!t._isBuffer)}function On(t,e){if(Sn(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return Yn(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return Qn(t).length;default:if(n)return Yn(t).length;e=(""+e).toLowerCase(),n=!0}}function En(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return zn(this,e,r);case"utf8":case"utf-8":return Mn(this,e,r);case"ascii":return $n(this,e,r);case"latin1":case"binary":return Un(this,e,r);case"base64":return Cn(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Fn(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function Rn(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function xn(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=yn.from(e,n)),Sn(e))return 0===e.length?-1:An(t,e,r,n,i);if("number"==typeof e)return e&=255,yn.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):An(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function An(t,e,r,n,i){var s,o=1,a=t.length,c=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;o=2,a/=2,c/=2,r/=2}function u(t,e){return 1===o?t[e]:t.readUInt16BE(e*o)}if(i){var l=-1;for(s=r;s<a;s++)if(u(t,s)===u(e,-1===l?0:s-l)){if(-1===l&&(l=s),s-l+1===c)return l*o}else-1!==l&&(s-=s-l),l=-1}else for(r+c>a&&(r=a-c),s=r;s>=0;s--){for(var h=!0,f=0;f<c;f++)if(u(t,s+f)!==u(e,f)){h=!1;break}if(h)return s}return-1}function In(t,e,r,n){r=Number(r)||0;var i=t.length-r;n?(n=Number(n))>i&&(n=i):n=i;var s=e.length;if(s%2!=0)throw new TypeError("Invalid hex string");n>s/2&&(n=s/2);for(var o=0;o<n;++o){var a=parseInt(e.substr(2*o,2),16);if(isNaN(a))return o;t[r+o]=a}return o}function jn(t,e,r,n){return Xn(Yn(e,t.length-r),t,r,n)}function Dn(t,e,r,n){return Xn(function(t){for(var e=[],r=0;r<t.length;++r)e.push(255&t.charCodeAt(r));return e}(e),t,r,n)}function Pn(t,e,r,n){return Dn(t,e,r,n)}function Nn(t,e,r,n){return Xn(Qn(e),t,r,n)}function Tn(t,e,r,n){return Xn(function(t,e){for(var r,n,i,s=[],o=0;o<t.length&&!((e-=2)<0);++o)n=(r=t.charCodeAt(o))>>8,i=r%256,s.push(i),s.push(n);return s}(e,t.length-r),t,r,n)}function Cn(t,e,r){return 0===e&&r===t.length?ln(t):ln(t.slice(e,r))}function Mn(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i<r;){var s,o,a,c,u=t[i],l=null,h=u>239?4:u>223?3:u>191?2:1;if(i+h<=r)switch(h){case 1:u<128&&(l=u);break;case 2:128==(192&(s=t[i+1]))&&(c=(31&u)<<6|63&s)>127&&(l=c);break;case 3:s=t[i+1],o=t[i+2],128==(192&s)&&128==(192&o)&&(c=(15&u)<<12|(63&s)<<6|63&o)>2047&&(c<55296||c>57343)&&(l=c);break;case 4:s=t[i+1],o=t[i+2],a=t[i+3],128==(192&s)&&128==(192&o)&&128==(192&a)&&(c=(15&u)<<18|(63&s)<<12|(63&o)<<6|63&a)>65535&&c<1114112&&(l=c)}null===l?(l=65533,h=1):l>65535&&(l-=65536,n.push(l>>>10&1023|55296),l=56320|1023&l),n.push(l),i+=h}return function(t){var e=t.length;if(e<=Ln)return String.fromCharCode.apply(String,t);var r="",n=0;for(;n<e;)r+=String.fromCharCode.apply(String,t.slice(n,n+=Ln));return r}(n)}yn.TYPED_ARRAY_SUPPORT=void 0===en.TYPED_ARRAY_SUPPORT||en.TYPED_ARRAY_SUPPORT,gn(),yn.poolSize=8192,yn._augment=function(t){return t.__proto__=yn.prototype,t},yn.from=function(t,e,r){return bn(null,t,e,r)},yn.TYPED_ARRAY_SUPPORT&&(yn.prototype.__proto__=Uint8Array.prototype,yn.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&yn[Symbol.species]),yn.alloc=function(t,e,r){return function(t,e,r,n){return wn(e),e<=0?mn(t,e):void 0!==r?"string"==typeof n?mn(t,e).fill(r,n):mn(t,e).fill(r):mn(t,e)}(null,t,e,r)},yn.allocUnsafe=function(t){return _n(null,t)},yn.allocUnsafeSlow=function(t){return _n(null,t)},yn.isBuffer=function(t){return null!=t&&(!!t._isBuffer||ti(t)||function(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&ti(t.slice(0,0))}(t))},yn.compare=function(t,e){if(!Sn(t)||!Sn(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var r=t.length,n=e.length,i=0,s=Math.min(r,n);i<s;++i)if(t[i]!==e[i]){r=t[i],n=e[i];break}return r<n?-1:n<r?1:0},yn.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},yn.concat=function(t,e){if(!pn(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return yn.alloc(0);var r;if(void 0===e)for(e=0,r=0;r<t.length;++r)e+=t[r].length;var n=yn.allocUnsafe(e),i=0;for(r=0;r<t.length;++r){var s=t[r];if(!Sn(s))throw new TypeError('"list" argument must be an Array of Buffers');s.copy(n,i),i+=s.length}return n},yn.byteLength=On,yn.prototype._isBuffer=!0,yn.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)Rn(this,e,e+1);return this},yn.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)Rn(this,e,e+3),Rn(this,e+1,e+2);return this},yn.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)Rn(this,e,e+7),Rn(this,e+1,e+6),Rn(this,e+2,e+5),Rn(this,e+3,e+4);return this},yn.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?Mn(this,0,t):En.apply(this,arguments)},yn.prototype.equals=function(t){if(!Sn(t))throw new TypeError("Argument must be a Buffer");return this===t||0===yn.compare(this,t)},yn.prototype.inspect=function(){var t="";return this.length>0&&(t=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(t+=" ... ")),"<Buffer "+t+">"},yn.prototype.compare=function(t,e,r,n,i){if(!Sn(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;for(var s=(i>>>=0)-(n>>>=0),o=(r>>>=0)-(e>>>=0),a=Math.min(s,o),c=this.slice(n,i),u=t.slice(e,r),l=0;l<a;++l)if(c[l]!==u[l]){s=c[l],o=u[l];break}return s<o?-1:o<s?1:0},yn.prototype.includes=function(t,e,r){return-1!==this.indexOf(t,e,r)},yn.prototype.indexOf=function(t,e,r){return xn(this,t,e,r,!0)},yn.prototype.lastIndexOf=function(t,e,r){return xn(this,t,e,r,!1)},yn.prototype.write=function(t,e,r,n){if(void 0===e)n="utf8",r=this.length,e=0;else if(void 0===r&&"string"==typeof e)n=e,r=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(r)?(r|=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var s=!1;;)switch(n){case"hex":return In(this,t,e,r);case"utf8":case"utf-8":return jn(this,t,e,r);case"ascii":return Dn(this,t,e,r);case"latin1":case"binary":return Pn(this,t,e,r);case"base64":return Nn(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Tn(this,t,e,r);default:if(s)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),s=!0}},yn.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var Ln=4096;function $n(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;i<r;++i)n+=String.fromCharCode(127&t[i]);return n}function Un(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;i<r;++i)n+=String.fromCharCode(t[i]);return n}function zn(t,e,r){var n=t.length;(!e||e<0)&&(e=0),(!r||r<0||r>n)&&(r=n);for(var i="",s=e;s<r;++s)i+=Gn(t[s]);return i}function Fn(t,e,r){for(var n=t.slice(e,r),i="",s=0;s<n.length;s+=2)i+=String.fromCharCode(n[s]+256*n[s+1]);return i}function Bn(t,e,r){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>r)throw new RangeError("Trying to access beyond buffer length")}function qn(t,e,r,n,i,s){if(!Sn(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||e<s)throw new RangeError('"value" argument is out of bounds');if(r+n>t.length)throw new RangeError("Index out of range")}function Vn(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,s=Math.min(t.length-r,2);i<s;++i)t[r+i]=(e&255<<8*(n?i:1-i))>>>8*(n?i:1-i)}function Hn(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,s=Math.min(t.length-r,4);i<s;++i)t[r+i]=e>>>8*(n?i:3-i)&255}function Kn(t,e,r,n,i,s){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function Zn(t,e,r,n,i){return i||Kn(t,0,r,4),fn(t,e,r,n,23,4),r+4}function Wn(t,e,r,n,i){return i||Kn(t,0,r,8),fn(t,e,r,n,52,8),r+8}yn.prototype.slice=function(t,e){var r,n=this.length;if((t=~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),(e=void 0===e?n:~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),e<t&&(e=t),yn.TYPED_ARRAY_SUPPORT)(r=this.subarray(t,e)).__proto__=yn.prototype;else{var i=e-t;r=new yn(i,void 0);for(var s=0;s<i;++s)r[s]=this[s+t]}return r},yn.prototype.readUIntLE=function(t,e,r){t|=0,e|=0,r||Bn(t,e,this.length);for(var n=this[t],i=1,s=0;++s<e&&(i*=256);)n+=this[t+s]*i;return n},yn.prototype.readUIntBE=function(t,e,r){t|=0,e|=0,r||Bn(t,e,this.length);for(var n=this[t+--e],i=1;e>0&&(i*=256);)n+=this[t+--e]*i;return n},yn.prototype.readUInt8=function(t,e){return e||Bn(t,1,this.length),this[t]},yn.prototype.readUInt16LE=function(t,e){return e||Bn(t,2,this.length),this[t]|this[t+1]<<8},yn.prototype.readUInt16BE=function(t,e){return e||Bn(t,2,this.length),this[t]<<8|this[t+1]},yn.prototype.readUInt32LE=function(t,e){return e||Bn(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},yn.prototype.readUInt32BE=function(t,e){return e||Bn(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},yn.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||Bn(t,e,this.length);for(var n=this[t],i=1,s=0;++s<e&&(i*=256);)n+=this[t+s]*i;return n>=(i*=128)&&(n-=Math.pow(2,8*e)),n},yn.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||Bn(t,e,this.length);for(var n=e,i=1,s=this[t+--n];n>0&&(i*=256);)s+=this[t+--n]*i;return s>=(i*=128)&&(s-=Math.pow(2,8*e)),s},yn.prototype.readInt8=function(t,e){return e||Bn(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},yn.prototype.readInt16LE=function(t,e){e||Bn(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},yn.prototype.readInt16BE=function(t,e){e||Bn(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},yn.prototype.readInt32LE=function(t,e){return e||Bn(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},yn.prototype.readInt32BE=function(t,e){return e||Bn(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},yn.prototype.readFloatLE=function(t,e){return e||Bn(t,4,this.length),hn(this,t,!0,23,4)},yn.prototype.readFloatBE=function(t,e){return e||Bn(t,4,this.length),hn(this,t,!1,23,4)},yn.prototype.readDoubleLE=function(t,e){return e||Bn(t,8,this.length),hn(this,t,!0,52,8)},yn.prototype.readDoubleBE=function(t,e){return e||Bn(t,8,this.length),hn(this,t,!1,52,8)},yn.prototype.writeUIntLE=function(t,e,r,n){(t=+t,e|=0,r|=0,n)||qn(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,s=0;for(this[e]=255&t;++s<r&&(i*=256);)this[e+s]=t/i&255;return e+r},yn.prototype.writeUIntBE=function(t,e,r,n){(t=+t,e|=0,r|=0,n)||qn(this,t,e,r,Math.pow(2,8*r)-1,0);var i=r-1,s=1;for(this[e+i]=255&t;--i>=0&&(s*=256);)this[e+i]=t/s&255;return e+r},yn.prototype.writeUInt8=function(t,e,r){return t=+t,e|=0,r||qn(this,t,e,1,255,0),yn.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},yn.prototype.writeUInt16LE=function(t,e,r){return t=+t,e|=0,r||qn(this,t,e,2,65535,0),yn.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):Vn(this,t,e,!0),e+2},yn.prototype.writeUInt16BE=function(t,e,r){return t=+t,e|=0,r||qn(this,t,e,2,65535,0),yn.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):Vn(this,t,e,!1),e+2},yn.prototype.writeUInt32LE=function(t,e,r){return t=+t,e|=0,r||qn(this,t,e,4,4294967295,0),yn.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):Hn(this,t,e,!0),e+4},yn.prototype.writeUInt32BE=function(t,e,r){return t=+t,e|=0,r||qn(this,t,e,4,4294967295,0),yn.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):Hn(this,t,e,!1),e+4},yn.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);qn(this,t,e,r,i-1,-i)}var s=0,o=1,a=0;for(this[e]=255&t;++s<r&&(o*=256);)t<0&&0===a&&0!==this[e+s-1]&&(a=1),this[e+s]=(t/o|0)-a&255;return e+r},yn.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);qn(this,t,e,r,i-1,-i)}var s=r-1,o=1,a=0;for(this[e+s]=255&t;--s>=0&&(o*=256);)t<0&&0===a&&0!==this[e+s+1]&&(a=1),this[e+s]=(t/o|0)-a&255;return e+r},yn.prototype.writeInt8=function(t,e,r){return t=+t,e|=0,r||qn(this,t,e,1,127,-128),yn.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},yn.prototype.writeInt16LE=function(t,e,r){return t=+t,e|=0,r||qn(this,t,e,2,32767,-32768),yn.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):Vn(this,t,e,!0),e+2},yn.prototype.writeInt16BE=function(t,e,r){return t=+t,e|=0,r||qn(this,t,e,2,32767,-32768),yn.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):Vn(this,t,e,!1),e+2},yn.prototype.writeInt32LE=function(t,e,r){return t=+t,e|=0,r||qn(this,t,e,4,2147483647,-2147483648),yn.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):Hn(this,t,e,!0),e+4},yn.prototype.writeInt32BE=function(t,e,r){return t=+t,e|=0,r||qn(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),yn.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):Hn(this,t,e,!1),e+4},yn.prototype.writeFloatLE=function(t,e,r){return Zn(this,t,e,!0,r)},yn.prototype.writeFloatBE=function(t,e,r){return Zn(this,t,e,!1,r)},yn.prototype.writeDoubleLE=function(t,e,r){return Wn(this,t,e,!0,r)},yn.prototype.writeDoubleBE=function(t,e,r){return Wn(this,t,e,!1,r)},yn.prototype.copy=function(t,e,r,n){if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n<r&&(n=r),n===r)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e<n-r&&(n=t.length-e+r);var i,s=n-r;if(this===t&&r<e&&e<n)for(i=s-1;i>=0;--i)t[i+e]=this[i+r];else if(s<1e3||!yn.TYPED_ARRAY_SUPPORT)for(i=0;i<s;++i)t[i+e]=this[i+r];else Uint8Array.prototype.set.call(t,this.subarray(r,r+s),e);return s},yn.prototype.fill=function(t,e,r,n){if("string"==typeof t){if("string"==typeof e?(n=e,e=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),1===t.length){var i=t.charCodeAt(0);i<256&&(t=i)}if(void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!yn.isEncoding(n))throw new TypeError("Unknown encoding: "+n)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<r)throw new RangeError("Out of range index");if(r<=e)return this;var s;if(e>>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(s=e;s<r;++s)this[s]=t;else{var o=Sn(t)?t:Yn(new yn(t,n).toString()),a=o.length;for(s=0;s<r-e;++s)this[s+e]=o[s%a]}return this};var Jn=/[^+\/0-9A-Za-z-_]/g;function Gn(t){return t<16?"0"+t.toString(16):t.toString(16)}function Yn(t,e){var r;e=e||1/0;for(var n=t.length,i=null,s=[],o=0;o<n;++o){if((r=t.charCodeAt(o))>55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&s.push(239,191,189);continue}if(o+1===n){(e-=3)>-1&&s.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&s.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&s.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;s.push(r)}else if(r<2048){if((e-=2)<0)break;s.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;s.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;s.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return s}function Qn(t){return function(t){var e,r,n,i,s,o;on||an();var a=t.length;if(a%4>0)throw new Error("Invalid string. Length must be a multiple of 4");s="="===t[a-2]?2:"="===t[a-1]?1:0,o=new sn(3*a/4-s),n=s>0?a-4:a;var c=0;for(e=0,r=0;e<n;e+=4,r+=3)i=nn[t.charCodeAt(e)]<<18|nn[t.charCodeAt(e+1)]<<12|nn[t.charCodeAt(e+2)]<<6|nn[t.charCodeAt(e+3)],o[c++]=i>>16&255,o[c++]=i>>8&255,o[c++]=255&i;return 2===s?(i=nn[t.charCodeAt(e)]<<2|nn[t.charCodeAt(e+1)]>>4,o[c++]=255&i):1===s&&(i=nn[t.charCodeAt(e)]<<10|nn[t.charCodeAt(e+1)]<<4|nn[t.charCodeAt(e+2)]>>2,o[c++]=i>>8&255,o[c++]=255&i),o}(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(Jn,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function Xn(t,e,r,n){for(var i=0;i<n&&!(i+r>=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function ti(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}function ei(){throw new Error("setTimeout has not been defined")}function ri(){throw new Error("clearTimeout has not been defined")}var ni=ei,ii=ri;function si(t){if(ni===setTimeout)return setTimeout(t,0);if((ni===ei||!ni)&&setTimeout)return ni=setTimeout,setTimeout(t,0);try{return ni(t,0)}catch(e){try{return ni.call(null,t,0)}catch(e){return ni.call(this,t,0)}}}"function"==typeof en.setTimeout&&(ni=setTimeout),"function"==typeof en.clearTimeout&&(ii=clearTimeout);var oi,ai=[],ci=!1,ui=-1;function li(){ci&&oi&&(ci=!1,oi.length?ai=oi.concat(ai):ui=-1,ai.length&&hi())}function hi(){if(!ci){var t=si(li);ci=!0;for(var e=ai.length;e;){for(oi=ai,ai=[];++ui<e;)oi&&oi[ui].run();ui=-1,e=ai.length}oi=null,ci=!1,function(t){if(ii===clearTimeout)return clearTimeout(t);if((ii===ri||!ii)&&clearTimeout)return ii=clearTimeout,clearTimeout(t);try{return ii(t)}catch(e){try{return ii.call(null,t)}catch(e){return ii.call(this,t)}}}(t)}}function fi(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)e[r-1]=arguments[r];ai.push(new di(t,e)),1!==ai.length||ci||si(hi)}function di(t,e){this.fun=t,this.array=e}di.prototype.run=function(){this.fun.apply(null,this.array)};function pi(){}var gi=pi,mi=pi,yi=pi,bi=pi,wi=pi,_i=pi,vi=pi;var ki=en.performance||{},Si=ki.now||ki.mozNow||ki.msNow||ki.oNow||ki.webkitNow||function(){return(new Date).getTime()};var Oi=new Date;var Ei,Ri={nextTick:fi,title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:gi,addListener:mi,once:yi,off:bi,removeListener:wi,removeAllListeners:_i,emit:vi,binding:function(t){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(t){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(t){var e=.001*Si.call(ki),r=Math.floor(e),n=Math.floor(e%1*1e9);return t&&(r-=t[0],(n-=t[1])<0&&(r--,n+=1e9)),[r,n]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-Oi)/1e3}};Ei="function"==typeof Object.create?function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:function(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t};var xi=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),r={},n=0;n<e.length;n++)r[e[n]]=Object.getOwnPropertyDescriptor(t,e[n]);return r},Ai=/%[sdj%]/g;function Ii(t){if(!Fi(t)){for(var e=[],r=0;r<arguments.length;r++)e.push(Ni(arguments[r]));return e.join(" ")}r=1;for(var n=arguments,i=n.length,s=String(t).replace(Ai,function(t){if("%%"===t)return"%";if(r>=i)return t;switch(t){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(t){return"[Circular]"}default:return t}}),o=n[r];r<i;o=n[++r])zi(o)||!Vi(o)?s+=" "+o:s+=" "+Ni(o);return s}function ji(t,e){if(Bi(en.process))return function(){return ji(t,e).apply(this,arguments)};if(!0===Ri.noDeprecation)return t;var r=!1;return function(){if(!r){if(Ri.throwDeprecation)throw new Error(e);Ri.traceDeprecation?console.trace(e):console.error(e),r=!0}return t.apply(this,arguments)}}var Di,Pi={};function Ni(t,e){var r={seen:[],stylize:Ci};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),Ui(e)?r.showHidden=e:e&&function(t,e){if(!e||!Vi(e))return t;var r=Object.keys(e),n=r.length;for(;n--;)t[r[n]]=e[r[n]]}(r,e),Bi(r.showHidden)&&(r.showHidden=!1),Bi(r.depth)&&(r.depth=2),Bi(r.colors)&&(r.colors=!1),Bi(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=Ti),Mi(r,t,r.depth)}function Ti(t,e){var r=Ni.styles[e];return r?"["+Ni.colors[r][0]+"m"+t+"["+Ni.colors[r][1]+"m":t}function Ci(t,e){return t}function Mi(t,e,r){if(t.customInspect&&e&&Zi(e.inspect)&&e.inspect!==Ni&&(!e.constructor||e.constructor.prototype!==e)){var n=e.inspect(r,t);return Fi(n)||(n=Mi(t,n,r)),n}var i=function(t,e){if(Bi(e))return t.stylize("undefined","undefined");if(Fi(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}if(n=e,"number"==typeof n)return t.stylize(""+e,"number");var n;if(Ui(e))return t.stylize(""+e,"boolean");if(zi(e))return t.stylize("null","null")}(t,e);if(i)return i;var s=Object.keys(e),o=function(t){var e={};return t.forEach(function(t,r){e[t]=!0}),e}(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(e)),Ki(e)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return Li(e);if(0===s.length){if(Zi(e)){var a=e.name?": "+e.name:"";return t.stylize("[Function"+a+"]","special")}if(qi(e))return t.stylize(RegExp.prototype.toString.call(e),"regexp");if(Hi(e))return t.stylize(Date.prototype.toString.call(e),"date");if(Ki(e))return Li(e)}var c,u,l="",h=!1,f=["{","}"];(c=e,Array.isArray(c)&&(h=!0,f=["[","]"]),Zi(e))&&(l=" [Function"+(e.name?": "+e.name:"")+"]");return qi(e)&&(l=" "+RegExp.prototype.toString.call(e)),Hi(e)&&(l=" "+Date.prototype.toUTCString.call(e)),Ki(e)&&(l=" "+Li(e)),0!==s.length||h&&0!=e.length?r<0?qi(e)?t.stylize(RegExp.prototype.toString.call(e),"regexp"):t.stylize("[Object]","special"):(t.seen.push(e),u=h?function(t,e,r,n,i){for(var s=[],o=0,a=e.length;o<a;++o)Ji(e,String(o))?s.push($i(t,e,r,n,String(o),!0)):s.push("");return i.forEach(function(i){i.match(/^\d+$/)||s.push($i(t,e,r,n,i,!0))}),s}(t,e,r,o,s):s.map(function(n){return $i(t,e,r,o,n,h)}),t.seen.pop(),function(t,e,r){var n=t.reduce(function(t,e){return e.indexOf("\n"),t+e.replace(/\u001b\[\d\d?m/g,"").length+1},0);if(n>60)return r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1];return r[0]+e+" "+t.join(", ")+" "+r[1]}(u,l,f)):f[0]+l+f[1]}function Li(t){return"["+Error.prototype.toString.call(t)+"]"}function $i(t,e,r,n,i,s){var o,a,c;if((c=Object.getOwnPropertyDescriptor(e,i)||{value:e[i]}).get?a=c.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):c.set&&(a=t.stylize("[Setter]","special")),Ji(n,i)||(o="["+i+"]"),a||(t.seen.indexOf(c.value)<0?(a=zi(r)?Mi(t,c.value,null):Mi(t,c.value,r-1)).indexOf("\n")>-1&&(a=s?a.split("\n").map(function(t){return" "+t}).join("\n").substr(2):"\n"+a.split("\n").map(function(t){return" "+t}).join("\n")):a=t.stylize("[Circular]","special")),Bi(o)){if(s&&i.match(/^\d+$/))return a;(o=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.substr(1,o.length-2),o=t.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=t.stylize(o,"string"))}return o+": "+a}function Ui(t){return"boolean"==typeof t}function zi(t){return null===t}function Fi(t){return"string"==typeof t}function Bi(t){return void 0===t}function qi(t){return Vi(t)&&"[object RegExp]"===Wi(t)}function Vi(t){return"object"==typeof t&&null!==t}function Hi(t){return Vi(t)&&"[object Date]"===Wi(t)}function Ki(t){return Vi(t)&&("[object Error]"===Wi(t)||t instanceof Error)}function Zi(t){return"function"==typeof t}function Wi(t){return Object.prototype.toString.call(t)}function Ji(t,e){return Object.prototype.hasOwnProperty.call(t,e)}Ni.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},Ni.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};var Gi="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function Yi(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');if(Gi&&t[Gi]){var e;if("function"!=typeof(e=t[Gi]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,Gi,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var e,r,n=new Promise(function(t,n){e=t,r=n}),i=[],s=0;s<arguments.length;s++)i.push(arguments[s]);i.push(function(t,n){t?r(t):e(n)});try{t.apply(this,i)}catch(t){r(t)}return n}return Object.setPrototypeOf(e,Object.getPrototypeOf(t)),Gi&&Object.defineProperty(e,Gi,{value:e,enumerable:!1,writable:!1,configurable:!0}),Object.defineProperties(e,xi(t))}function Qi(){this.head=null,this.tail=null,this.length=0}Yi.custom=Gi,Qi.prototype.push=function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length},Qi.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},Qi.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},Qi.prototype.clear=function(){this.head=this.tail=null,this.length=0},Qi.prototype.join=function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r},Qi.prototype.concat=function(t){if(0===this.length)return yn.alloc(0);if(1===this.length)return this.head.data;for(var e=yn.allocUnsafe(t>>>0),r=this.head,n=0;r;)r.data.copy(e,n),n+=r.data.length,r=r.next;return e};var Xi=yn.isEncoding||function(t){switch(t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function ts(t){switch(this.encoding=(t||"utf8").toLowerCase().replace(/[-_]/,""),function(t){if(t&&!Xi(t))throw new Error("Unknown encoding: "+t)}(t),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=rs;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=ns;break;default:return void(this.write=es)}this.charBuffer=new yn(6),this.charReceived=0,this.charLength=0}function es(t){return t.toString(this.encoding)}function rs(t){this.charReceived=t.length%2,this.charLength=this.charReceived?2:0}function ns(t){this.charReceived=t.length%3,this.charLength=this.charReceived?3:0}ts.prototype.write=function(t){for(var e="";this.charLength;){var r=t.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:t.length;if(t.copy(this.charBuffer,this.charReceived,0,r),this.charReceived+=r,this.charReceived<this.charLength)return"";if(t=t.slice(r,t.length),!((i=(e=this.charBuffer.slice(0,this.charLength).toString(this.encoding)).charCodeAt(e.length-1))>=55296&&i<=56319)){if(this.charReceived=this.charLength=0,0===t.length)return e;break}this.charLength+=this.surrogateSize,e=""}this.detectIncompleteChar(t);var n=t.length;this.charLength&&(t.copy(this.charBuffer,0,t.length-this.charReceived,n),n-=this.charReceived);var i;n=(e+=t.toString(this.encoding,0,n)).length-1;if((i=e.charCodeAt(n))>=55296&&i<=56319){var s=this.surrogateSize;return this.charLength+=s,this.charReceived+=s,this.charBuffer.copy(this.charBuffer,s,0,s),t.copy(this.charBuffer,0,0,s),e.substring(0,n)}return e},ts.prototype.detectIncompleteChar=function(t){for(var e=t.length>=3?3:t.length;e>0;e--){var r=t[t.length-e];if(1==e&&r>>5==6){this.charLength=2;break}if(e<=2&&r>>4==14){this.charLength=3;break}if(e<=3&&r>>3==30){this.charLength=4;break}}this.charReceived=e},ts.prototype.end=function(t){var e="";if(t&&t.length&&(e=this.write(t)),this.charReceived){var r=this.charReceived,n=this.charBuffer,i=this.encoding;e+=n.slice(0,r).toString(i)}return e},os.ReadableState=ss;var is=function(t){if(Bi(Di)&&(Di=Ri.env.NODE_DEBUG||""),t=t.toUpperCase(),!Pi[t])if(new RegExp("\\b"+t+"\\b","i").test(Di)){Pi[t]=function(){var e=Ii.apply(null,arguments);console.error("%s %d: %s",t,0,e)}}else Pi[t]=function(){};return Pi[t]}("stream");function ss(t,e){t=t||{},this.objectMode=!!t.objectMode,e instanceof Ts&&(this.objectMode=this.objectMode||!!t.readableObjectMode);var r=t.highWaterMark,n=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:n,this.highWaterMark=~~this.highWaterMark,this.buffer=new Qi,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.ranOut=!1,this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(this.decoder=new ts(t.encoding),this.encoding=t.encoding)}function os(t){if(!(this instanceof os))return new os(t);this._readableState=new ss(t,this),this.readable=!0,t&&"function"==typeof t.read&&(this._read=t.read),F.call(this)}function as(t,e,r,n,i){var s=function(t,e){var r=null;yn.isBuffer(e)||"string"==typeof e||null==e||t.objectMode||(r=new TypeError("Invalid non-string/buffer chunk"));return r}(e,r);if(s)t.emit("error",s);else if(null===r)e.reading=!1,function(t,e){if(e.ended)return;if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,ls(t)}(t,e);else if(e.objectMode||r&&r.length>0)if(e.ended&&!i){var o=new Error("stream.push() after EOF");t.emit("error",o)}else if(e.endEmitted&&i){var a=new Error("stream.unshift() after end event");t.emit("error",a)}else{var c;!e.decoder||i||n||(r=e.decoder.write(r),c=!e.objectMode&&0===r.length),i||(e.reading=!1),c||(e.flowing&&0===e.length&&!e.sync?(t.emit("data",r),t.read(0)):(e.length+=e.objectMode?1:r.length,i?e.buffer.unshift(r):e.buffer.push(r),e.needReadable&&ls(t))),function(t,e){e.readingMore||(e.readingMore=!0,fi(fs,t,e))}(t,e)}else i||(e.reading=!1);return function(t){return!t.ended&&(t.needReadable||t.length<t.highWaterMark||0===t.length)}(e)}Ei(os,F),os.prototype.push=function(t,e){var r=this._readableState;return r.objectMode||"string"!=typeof t||(e=e||r.defaultEncoding)!==r.encoding&&(t=yn.from(t,e),e=""),as(this,r,t,e,!1)},os.prototype.unshift=function(t){return as(this,this._readableState,t,"",!0)},os.prototype.isPaused=function(){return!1===this._readableState.flowing},os.prototype.setEncoding=function(t){return this._readableState.decoder=new ts(t),this._readableState.encoding=t,this};var cs=8388608;function us(t,e){return t<=0||0===e.length&&e.ended?0:e.objectMode?1:t!=t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=function(t){return t>=cs?t=cs:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function ls(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(is("emitReadable",e.flowing),e.emittedReadable=!0,e.sync?fi(hs,t):hs(t))}function hs(t){is("emit readable"),t.emit("readable"),gs(t)}function fs(t,e){for(var r=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length<e.highWaterMark&&(is("maybeReadMore read 0"),t.read(0),r!==e.length);)r=e.length;e.readingMore=!1}function ds(t){is("readable nexttick read 0"),t.read(0)}function ps(t,e){e.reading||(is("resume read 0"),t.read(0)),e.resumeScheduled=!1,e.awaitDrain=0,t.emit("resume"),gs(t),e.flowing&&!e.reading&&t.read(0)}function gs(t){var e=t._readableState;for(is("flow",e.flowing);e.flowing&&null!==t.read(););}function ms(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):r=function(t,e,r){var n;t<e.head.data.length?(n=e.head.data.slice(0,t),e.head.data=e.head.data.slice(t)):n=t===e.head.data.length?e.shift():r?function(t,e){var r=e.head,n=1,i=r.data;t-=i.length;for(;r=r.next;){var s=r.data,o=t>s.length?s.length:t;if(o===s.length?i+=s:i+=s.slice(0,t),0===(t-=o)){o===s.length?(++n,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=s.slice(o));break}++n}return e.length-=n,i}(t,e):function(t,e){var r=yn.allocUnsafe(t),n=e.head,i=1;n.data.copy(r),t-=n.data.length;for(;n=n.next;){var s=n.data,o=t>s.length?s.length:t;if(s.copy(r,r.length-t,0,o),0===(t-=o)){o===s.length?(++i,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=s.slice(o));break}++i}return e.length-=i,r}(t,e);return n}(t,e.buffer,e.decoder),r);var r}function ys(t){var e=t._readableState;if(e.length>0)throw new Error('"endReadable()" called on non-empty stream');e.endEmitted||(e.ended=!0,fi(bs,e,t))}function bs(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}function ws(t,e){for(var r=0,n=t.length;r<n;r++)if(t[r]===e)return r;return-1}function _s(){}function vs(t,e,r){this.chunk=t,this.encoding=e,this.callback=r,this.next=null}function ks(t,e){Object.defineProperty(this,"buffer",{get:ji(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.")}),t=t||{},this.objectMode=!!t.objectMode,e instanceof Ts&&(this.objectMode=this.objectMode||!!t.writableObjectMode);var r=t.highWaterMark,n=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:n,this.highWaterMark=~~this.highWaterMark,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1;var i=!1===t.decodeStrings;this.decodeStrings=!i,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var r=t._writableState,n=r.sync,i=r.writecb;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(r),e)!function(t,e,r,n,i){--e.pendingcb,r?fi(i,n):i(n);t._writableState.errorEmitted=!0,t.emit("error",n)}(t,r,n,e,i);else{var s=xs(r);s||r.corked||r.bufferProcessing||!r.bufferedRequest||Rs(t,r),n?fi(Es,t,r,s,i):Es(t,r,s,i)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new js(this)}function Ss(t){if(!(this instanceof Ss||this instanceof Ts))return new Ss(t);this._writableState=new ks(t,this),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev)),F.call(this)}function Os(t,e,r,n,i,s,o){e.writelen=n,e.writecb=o,e.writing=!0,e.sync=!0,r?t._writev(i,e.onwrite):t._write(i,s,e.onwrite),e.sync=!1}function Es(t,e,r,n){r||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}(t,e),e.pendingcb--,n(),Is(t,e)}function Rs(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var n=e.bufferedRequestCount,i=new Array(n),s=e.corkedRequestsFree;s.entry=r;for(var o=0;r;)i[o]=r,r=r.next,o+=1;Os(t,e,!0,e.length,i,"",s.finish),e.pendingcb++,e.lastBufferedRequest=null,s.next?(e.corkedRequestsFree=s.next,s.next=null):e.corkedRequestsFree=new js(e)}else{for(;r;){var a=r.chunk,c=r.encoding,u=r.callback;if(Os(t,e,!1,e.objectMode?1:a.length,a,c,u),r=r.next,e.writing)break}null===r&&(e.lastBufferedRequest=null)}e.bufferedRequestCount=0,e.bufferedRequest=r,e.bufferProcessing=!1}function xs(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function As(t,e){e.prefinished||(e.prefinished=!0,t.emit("prefinish"))}function Is(t,e){var r=xs(e);return r&&(0===e.pendingcb?(As(t,e),e.finished=!0,t.emit("finish")):As(t,e)),r}function js(t){var e=this;this.next=null,this.entry=null,this.finish=function(r){var n=e.entry;for(e.entry=null;n;){var i=n.callback;t.pendingcb--,i(r),n=n.next}t.corkedRequestsFree?t.corkedRequestsFree.next=e:t.corkedRequestsFree=e}}os.prototype.read=function(t){is("read",t),t=parseInt(t,10);var e=this._readableState,r=t;if(0!==t&&(e.emittedReadable=!1),0===t&&e.needReadable&&(e.length>=e.highWaterMark||e.ended))return is("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?ys(this):ls(this),null;if(0===(t=us(t,e))&&e.ended)return 0===e.length&&ys(this),null;var n,i=e.needReadable;return is("need readable",i),(0===e.length||e.length-t<e.highWaterMark)&&is("length less than watermark",i=!0),e.ended||e.reading?is("reading or ended",i=!1):i&&(is("do read"),e.reading=!0,e.sync=!0,0===e.length&&(e.needReadable=!0),this._read(e.highWaterMark),e.sync=!1,e.reading||(t=us(r,e))),null===(n=t>0?ms(t,e):null)?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&ys(this)),null!==n&&this.emit("data",n),n},os.prototype._read=function(t){this.emit("error",new Error("not implemented"))},os.prototype.pipe=function(t,e){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=t;break;case 1:n.pipes=[n.pipes,t];break;default:n.pipes.push(t)}n.pipesCount+=1,is("pipe count=%d opts=%j",n.pipesCount,e);var i=!e||!1!==e.end?o:u;function s(t){is("onunpipe"),t===r&&u()}function o(){is("onend"),t.end()}n.endEmitted?fi(i):r.once("end",i),t.on("unpipe",s);var a=function(t){return function(){var e=t._readableState;is("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&t.listeners("data").length&&(e.flowing=!0,gs(t))}}(r);t.on("drain",a);var c=!1;function u(){is("cleanup"),t.removeListener("close",d),t.removeListener("finish",p),t.removeListener("drain",a),t.removeListener("error",f),t.removeListener("unpipe",s),r.removeListener("end",o),r.removeListener("end",u),r.removeListener("data",h),c=!0,!n.awaitDrain||t._writableState&&!t._writableState.needDrain||a()}var l=!1;function h(e){is("ondata"),l=!1,!1!==t.write(e)||l||((1===n.pipesCount&&n.pipes===t||n.pipesCount>1&&-1!==ws(n.pipes,t))&&!c&&(is("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,l=!0),r.pause())}function f(e){is("onerror",e),g(),t.removeListener("error",f),0===function(t,e){return t.listeners(e).length}(t,"error")&&t.emit("error",e)}function d(){t.removeListener("finish",p),g()}function p(){is("onfinish"),t.removeListener("close",d),g()}function g(){is("unpipe"),r.unpipe(t)}return r.on("data",h),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,"error",f),t.once("close",d),t.once("finish",p),t.emit("pipe",r),n.flowing||(is("pipe resume"),r.resume()),t},os.prototype.unpipe=function(t){var e=this._readableState;if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this)),this;if(!t){var r=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var i=0;i<n;i++)r[i].emit("unpipe",this);return this}var s=ws(e.pipes,t);return-1===s||(e.pipes.splice(s,1),e.pipesCount-=1,1===e.pipesCount&&(e.pipes=e.pipes[0]),t.emit("unpipe",this)),this},os.prototype.on=function(t,e){var r=F.prototype.on.call(this,t,e);if("data"===t)!1!==this._readableState.flowing&&this.resume();else if("readable"===t){var n=this._readableState;n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.emittedReadable=!1,n.reading?n.length&&ls(this):fi(ds,this))}return r},os.prototype.addListener=os.prototype.on,os.prototype.resume=function(){var t=this._readableState;return t.flowing||(is("resume"),t.flowing=!0,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,fi(ps,t,e))}(this,t)),this},os.prototype.pause=function(){return is("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(is("pause"),this._readableState.flowing=!1,this.emit("pause")),this},os.prototype.wrap=function(t){var e=this._readableState,r=!1,n=this;for(var i in t.on("end",function(){if(is("wrapped end"),e.decoder&&!e.ended){var t=e.decoder.end();t&&t.length&&n.push(t)}n.push(null)}),t.on("data",function(i){(is("wrapped data"),e.decoder&&(i=e.decoder.write(i)),e.objectMode&&null==i)||(e.objectMode||i&&i.length)&&(n.push(i)||(r=!0,t.pause()))}),t)void 0===this[i]&&"function"==typeof t[i]&&(this[i]=function(e){return function(){return t[e].apply(t,arguments)}}(i));return function(t,e){for(var r=0,n=t.length;r<n;r++)e(t[r],r)}(["error","close","destroy","pause","resume"],function(e){t.on(e,n.emit.bind(n,e))}),n._read=function(e){is("wrapped _read",e),r&&(r=!1,t.resume())},n},os._fromList=ms,Ss.WritableState=ks,Ei(Ss,F),ks.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},Ss.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},Ss.prototype.write=function(t,e,r){var n=this._writableState,i=!1;return"function"==typeof e&&(r=e,e=null),yn.isBuffer(t)?e="buffer":e||(e=n.defaultEncoding),"function"!=typeof r&&(r=_s),n.ended?function(t,e){var r=new Error("write after end");t.emit("error",r),fi(e,r)}(this,r):function(t,e,r,n){var i=!0,s=!1;return null===r?s=new TypeError("May not write null values to stream"):yn.isBuffer(r)||"string"==typeof r||void 0===r||e.objectMode||(s=new TypeError("Invalid non-string/buffer chunk")),s&&(t.emit("error",s),fi(n,s),i=!1),i}(this,n,t,r)&&(n.pendingcb++,i=function(t,e,r,n,i){r=function(t,e,r){t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=yn.from(e,r));return e}(e,r,n),yn.isBuffer(r)&&(n="buffer");var s=e.objectMode?1:r.length;e.length+=s;var o=e.length<e.highWaterMark;o||(e.needDrain=!0);if(e.writing||e.corked){var a=e.lastBufferedRequest;e.lastBufferedRequest=new vs(r,n,i),a?a.next=e.lastBufferedRequest:e.bufferedRequest=e.lastBufferedRequest,e.bufferedRequestCount+=1}else Os(t,e,!1,s,r,n,i);return o}(this,n,t,e,r)),i},Ss.prototype.cork=function(){this._writableState.corked++},Ss.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,t.writing||t.corked||t.finished||t.bufferProcessing||!t.bufferedRequest||Rs(this,t))},Ss.prototype.setDefaultEncoding=function(t){if("string"==typeof t&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},Ss.prototype._write=function(t,e,r){r(new Error("not implemented"))},Ss.prototype._writev=null,Ss.prototype.end=function(t,e,r){var n=this._writableState;"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(t,e,r){e.ending=!0,Is(t,e),r&&(e.finished?fi(r):t.once("finish",r));e.ended=!0,t.writable=!1}(this,n,r)},Ei(Ts,os);for(var Ds=Object.keys(Ss.prototype),Ps=0;Ps<Ds.length;Ps++){var Ns=Ds[Ps];Ts.prototype[Ns]||(Ts.prototype[Ns]=Ss.prototype[Ns])}function Ts(t){if(!(this instanceof Ts))return new Ts(t);os.call(this,t),Ss.call(this,t),t&&!1===t.readable&&(this.readable=!1),t&&!1===t.writable&&(this.writable=!1),this.allowHalfOpen=!0,t&&!1===t.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",Cs)}function Cs(){this.allowHalfOpen||this._writableState.ended||fi(Ms,this)}function Ms(t){t.end()}function Ls(t){this.afterTransform=function(e,r){return function(t,e,r){var n=t._transformState;n.transforming=!1;var i=n.writecb;if(!i)return t.emit("error",new Error("no writecb in Transform class"));n.writechunk=null,n.writecb=null,null!=r&&t.push(r);i(e);var s=t._readableState;s.reading=!1,(s.needReadable||s.length<s.highWaterMark)&&t._read(s.highWaterMark)}(t,e,r)},this.needTransform=!1,this.transforming=!1,this.writecb=null,this.writechunk=null,this.writeencoding=null}function $s(t){if(!(this instanceof $s))return new $s(t);Ts.call(this,t),this._transformState=new Ls(this);var e=this;this._readableState.needReadable=!0,this._readableState.sync=!1,t&&("function"==typeof t.transform&&(this._transform=t.transform),"function"==typeof t.flush&&(this._flush=t.flush)),this.once("prefinish",function(){"function"==typeof this._flush?this._flush(function(t){Us(e,t)}):Us(e)})}function Us(t,e){if(e)return t.emit("error",e);var r=t._writableState,n=t._transformState;if(r.length)throw new Error("Calling transform done when ws.length != 0");if(n.transforming)throw new Error("Calling transform done when still transforming");return t.push(null)}function zs(t){if(!(this instanceof zs))return new zs(t);$s.call(this,t)}function Fs(){F.call(this)}Ei($s,Ts),$s.prototype.push=function(t,e){return this._transformState.needTransform=!1,Ts.prototype.push.call(this,t,e)},$s.prototype._transform=function(t,e,r){throw new Error("Not implemented")},$s.prototype._write=function(t,e,r){var n=this._transformState;if(n.writecb=r,n.writechunk=t,n.writeencoding=e,!n.transforming){var i=this._readableState;(n.needTransform||i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}},$s.prototype._read=function(t){var e=this._transformState;null!==e.writechunk&&e.writecb&&!e.transforming?(e.transforming=!0,this._transform(e.writechunk,e.writeencoding,e.afterTransform)):e.needTransform=!0},Ei(zs,$s),zs.prototype._transform=function(t,e,r){r(null,t)},Ei(Fs,F),Fs.Readable=os,Fs.Writable=Ss,Fs.Duplex=Ts,Fs.Transform=$s,Fs.PassThrough=zs,Fs.Stream=Fs,Fs.prototype.pipe=function(t,e){var r=this;function n(e){t.writable&&!1===t.write(e)&&r.pause&&r.pause()}function i(){r.readable&&r.resume&&r.resume()}r.on("data",n),t.on("drain",i),t._isStdio||e&&!1===e.end||(r.on("end",o),r.on("close",a));var s=!1;function o(){s||(s=!0,t.end())}function a(){s||(s=!0,"function"==typeof t.destroy&&t.destroy())}function c(t){if(u(),0===F.listenerCount(this,"error"))throw t}function u(){r.removeListener("data",n),t.removeListener("drain",i),r.removeListener("end",o),r.removeListener("close",a),r.removeListener("error",c),t.removeListener("error",c),r.removeListener("end",u),r.removeListener("close",u),t.removeListener("close",u)}return r.on("error",c),t.on("error",c),r.on("end",u),r.on("close",u),t.on("close",u),t.emit("pipe",r),t};class Bs extends F{constructor({resource:t}){super(),this.resource=t,this.client=t.client,this.stream=new R({highWaterMark:3*this.client.parallelism,start:this._start.bind(this),pull:this._pull.bind(this),cancel:this._cancel.bind(this)})}build(){return this.stream.getReader()}async _start(t){this.controller=t,this.continuationToken=null,this.closeNextIteration=!1}async _pull(t){if(this.closeNextIteration)return void t.close();const e=await this.client.listObjects({prefix:`resource=${this.resource.name}`,continuationToken:this.continuationToken}),r=e?.Contents.map(t=>t.Key).map(t=>t.replace(this.client.config.keyPrefix,"")).map(t=>t.startsWith("/")?t.replace("/",""):t).map(t=>t.replace(`resource=${this.resource.name}/id=`,""));this.continuationToken=e.NextContinuationToken,this.enqueue(r),e.IsTruncated||(this.closeNextIteration=!0)}enqueue(t){t.forEach(t=>{this.controller.enqueue(t),this.emit("id",t)})}_cancel(t){console.warn("Stream cancelled",t)}}class qs extends Bs{enqueue(t){this.controller.enqueue(t),this.emit("page",t)}}class Vs extends F{constructor({resource:t,batchSize:e=10,concurrency:r=5}){if(super(),!t)throw new Error("Resource is required for ResourceReader");this.resource=t,this.client=t.client,this.batchSize=e,this.concurrency=r,this.input=new qs({resource:this.resource}),this.transform=new $s({objectMode:!0,transform:this._transform.bind(this)}),this.input.on("data",t=>{this.transform.write(t)}),this.input.on("end",()=>{this.transform.end()}),this.input.on("error",t=>{this.emit("error",t)}),this.transform.on("data",t=>{this.emit("data",t)}),this.transform.on("end",()=>{this.emit("end")}),this.transform.on("error",t=>{this.emit("error",t)})}build(){return this}async _transform(t,e,r){try{await d.for(t).withConcurrency(this.concurrency).handleError(async(t,e)=>{this.emit("error",t,e)}).process(async t=>{const e=await this.resource.get(t);return this.push(e),e}),r()}catch(t){r(t)}}resume(){this.input.resume()}}class Hs extends F{constructor({resource:t,batchSize:e=10,concurrency:r=5}){super(),this.resource=t,this.client=t.client,this.batchSize=e,this.concurrency=r,this.buffer=[],this.writing=!1,this.writable=new Ss({objectMode:!0,write:this._write.bind(this)}),this.writable.on("finish",()=>{this.emit("finish")}),this.writable.on("error",t=>{this.emit("error",t)})}build(){return this}write(t){return this.buffer.push(t),this._maybeWrite().catch(t=>{this.emit("error",t)}),!0}end(){this.ended=!0,this._maybeWrite().catch(t=>{this.emit("error",t)})}async _maybeWrite(){if(!this.writing&&(0!==this.buffer.length||this.ended)){for(this.writing=!0;this.buffer.length>0;){const t=this.buffer.splice(0,this.batchSize);try{await d.for(t).withConcurrency(this.concurrency).handleError(async(t,e)=>{this.emit("error",t,e)}).process(async t=>{await this.resource.insert(t)})}catch(t){this.emit("error",t)}}this.writing=!1,this.ended&&this.writable.emit("finish")}}async _write(t,e,r){r()}}function Ks(t){return new Promise((e,r)=>{const n=[];t.on("data",t=>n.push(t)),t.on("error",r),t.on("end",()=>e(Buffer.concat(n).toString("utf-8")))})}function Zs(t){"string"!=typeof t&&(t=String(t));let e=0;for(let r=0;r<t.length;r++){const n=t.codePointAt(r);n<=127?e+=1:n<=2047?e+=2:n<=65535?e+=3:n<=1114111&&(e+=4,n>65535&&r++)}return e}function Ws(t){let e=0;for(const r of Object.keys(t))e+=Zs(r);return e}function Js(t){return null==t?"":"boolean"==typeof t?t?"1":"0":"number"==typeof t?String(t):"string"==typeof t?t:Array.isArray(t)?0===t.length?"[]":t.map(t=>String(t)).join("|"):"object"==typeof t?JSON.stringify(t):String(t)}function Gs(t){const e={};for(const[r,n]of Object.entries(t)){const t=Zs(Js(n));e[r]=t}return e}function Ys(t){const e=Gs(t);return Object.values(e).reduce((t,e)=>t+e,0)+Ws(t)}function Qs(t){const e=Gs(t),r=Ws(t),n=Object.values(e).reduce((t,e)=>t+e,0),i=n+r,s=Object.entries(e).sort(([,t],[,e])=>e-t).map(([t,e])=>({attribute:t,size:e,percentage:(e/i*100).toFixed(2)+"%"}));return{total:i,valueSizes:e,namesSize:r,valueTotal:n,breakdown:s,detailedBreakdown:{values:n,names:r,total:i}}}const Xs=2048;var to=Object.freeze({__proto__:null,S3_METADATA_LIMIT_BYTES:Xs,handleGet:async function({resource:t,metadata:e,body:r}){return{metadata:e,body:r}},handleInsert:async function({resource:t,data:e,mappedData:r}){const n=Ys(r);if(n>Xs)throw new Error(`S3 metadata size exceeds 2KB limit. Current size: ${n} bytes, limit: 2048 bytes`);return{mappedData:r,body:""}},handleUpdate:async function({resource:t,id:e,data:r,mappedData:n}){const i=Ys(n);if(i>Xs)throw new Error(`S3 metadata size exceeds 2KB limit. Current size: ${i} bytes, limit: 2048 bytes`);return{mappedData:n,body:""}},handleUpsert:async function({resource:t,id:e,data:r,mappedData:n}){const i=Ys(n);if(i>Xs)throw new Error(`S3 metadata size exceeds 2KB limit. Current size: ${i} bytes, limit: 2048 bytes`);return{mappedData:n,body:""}}});var eo=Object.freeze({__proto__:null,handleGet:async function({resource:t,metadata:e,body:r}){return{metadata:e,body:r}},handleInsert:async function({resource:t,data:e,mappedData:r}){const n=Ys(r);return n>Xs&&t.emit("exceedsLimit",{operation:"insert",totalSize:n,limit:Xs,excess:n-Xs,data:e}),{mappedData:r,body:""}},handleUpdate:async function({resource:t,id:e,data:r,mappedData:n}){const i=Ys(n);return i>Xs&&t.emit("exceedsLimit",{operation:"update",id:e,totalSize:i,limit:Xs,excess:i-Xs,data:r}),{mappedData:n,body:""}},handleUpsert:async function({resource:t,id:e,data:r,mappedData:n}){const i=Ys(n);return i>Xs&&t.emit("exceedsLimit",{operation:"upsert",id:e,totalSize:i,limit:Xs,excess:i-Xs,data:r}),{mappedData:n,body:""}}});const ro=Zs("...");function no({resource:t,data:e,mappedData:r}){const n=Gs(r),i=Object.entries(n).sort(([,t],[,e])=>t-e),s={};let o=0;for(const[t,e]of i){const n=Xs-o;if(!(e<=n)){if(n>ro){const e=n-ro,i=Js(r[t]);let a="",c=0;for(let t=0;t<i.length;t++){const r=i[t],n=Zs(r);if(!(c+n<=e))break;a+=r,c+=n}s[t]=a+"...",o=Xs;break}break}s[t]=r[t],o+=e}return{mappedData:s,body:""}}var io=Object.freeze({__proto__:null,handleGet:async function({resource:t,metadata:e,body:r}){return{metadata:e,body:r}},handleInsert:async function({resource:t,data:e,mappedData:r}){return no({resource:t,data:e,mappedData:r})},handleUpdate:async function({resource:t,id:e,data:r,mappedData:n}){return no({resource:t,data:r,mappedData:n})},handleUpsert:async function({resource:t,id:e,data:r,mappedData:n}){return no({resource:t,data:r,mappedData:n})}});const so="$overflow",oo="true",ao=Zs(so)+Zs(oo);function co({resource:t,data:e,mappedData:r}){if(Ys(r)<=Xs)return{mappedData:r,body:""};const n=Xs-ao,i=Gs(r),s=Object.entries(i).sort(([,t],[,e])=>t-e),o={},a={};let c=0;for(const[t,e]of s)c+e<=n?(o[t]=r[t],c+=e):a[t]=r[t];o[so]=oo;return{mappedData:o,body:Object.keys(a).length>0?JSON.stringify(a):""}}const uo={"user-managed":eo,"enforce-limits":to,"data-truncate":io,"body-overflow":Object.freeze({__proto__:null,handleGet:async function({resource:t,metadata:e,body:r}){if(e[so]===oo)try{const t=r?JSON.parse(r):{},n={...e};delete n[so];return{metadata:{...n,...t},body:""}}catch(t){return{metadata:e,body:r}}return{metadata:e,body:r}},handleInsert:async function({resource:t,data:e,mappedData:r}){return co({resource:t,data:e,mappedData:r})},handleUpdate:async function({resource:t,id:e,data:r,mappedData:n}){return co({resource:t,data:r,mappedData:n})},handleUpsert:async function({resource:t,id:e,data:r,mappedData:n}){return co({resource:t,data:r,mappedData:n})}}),"body-only":Object.freeze({__proto__:null,handleGet:async function({resource:t,metadata:e,body:r}){try{return{metadata:r?JSON.parse(r):{},body:""}}catch(t){return console.warn("Failed to parse body-only content:",t.message),{metadata:e,body:""}}},handleInsert:async function({resource:t,data:e,mappedData:r}){return{mappedData:{},body:JSON.stringify(r)}},handleUpdate:async function({resource:t,id:e,data:r,mappedData:n}){return{mappedData:{},body:JSON.stringify(n)}},handleUpsert:async function({resource:t,id:e,data:r,mappedData:n}){return{mappedData:{},body:JSON.stringify(n)}}})};function lo(t){const e=uo[t];if(!e)throw new Error(`Unknown behavior: ${t}. Available behaviors: ${Object.keys(uo).join(", ")}`);return e}const ho=Object.keys(uo),fo="user-managed";function po(r){return t(e,r)}class go extends F{constructor(t){super();const e=function(t){const e=[];t.name?"string"!=typeof t.name?e.push("Resource 'name' must be a string"):""===t.name.trim()&&e.push("Resource 'name' cannot be empty"):e.push("Resource 'name' is required");t.client||e.push("S3 'client' is required");t.attributes?"object"!=typeof t.attributes||Array.isArray(t.attributes)?e.push("Resource 'attributes' must be an object"):0===Object.keys(t.attributes).length&&e.push("Resource 'attributes' cannot be empty"):e.push("Resource 'attributes' are required");void 0!==t.version&&"string"!=typeof t.version&&e.push("Resource 'version' must be a string");void 0!==t.behavior&&"string"!=typeof t.behavior&&e.push("Resource 'behavior' must be a string");void 0!==t.passphrase&&"string"!=typeof t.passphrase&&e.push("Resource 'passphrase' must be a string");void 0!==t.parallelism&&("number"==typeof t.parallelism&&Number.isInteger(t.parallelism)?t.parallelism<1&&e.push("Resource 'parallelism' must be greater than 0"):e.push("Resource 'parallelism' must be an integer"));void 0===t.observers||Array.isArray(t.observers)||e.push("Resource 'observers' must be an array");const r=["cache","autoDecrypt","timestamps","paranoid","allNestedObjectsOptional"];for(const n of r)void 0!==t[n]&&"boolean"!=typeof t[n]&&e.push(`Resource '${n}' must be a boolean`);void 0!==t.idGenerator&&("function"!=typeof t.idGenerator&&"number"!=typeof t.idGenerator?e.push("Resource 'idGenerator' must be a function or a number (size)"):"number"==typeof t.idGenerator&&t.idGenerator<=0&&e.push("Resource 'idGenerator' size must be greater than 0"));void 0!==t.idSize&&("number"==typeof t.idSize&&Number.isInteger(t.idSize)?t.idSize<=0&&e.push("Resource 'idSize' must be greater than 0"):e.push("Resource 'idSize' must be an integer"));if(void 0!==t.partitions)if("object"!=typeof t.partitions||Array.isArray(t.partitions))e.push("Resource 'partitions' must be an object");else for(const[r,n]of Object.entries(t.partitions))if("object"!=typeof n||Array.isArray(n))e.push(`Partition '${r}' must be an object`);else if(n.fields)if("object"!=typeof n.fields||Array.isArray(n.fields))e.push(`Partition '${r}.fields' must be an object`);else for(const[t,i]of Object.entries(n.fields))"string"!=typeof i&&e.push(`Partition '${r}.fields.${t}' must be a string`);else e.push(`Partition '${r}' must have a 'fields' property`);if(void 0!==t.hooks)if("object"!=typeof t.hooks||Array.isArray(t.hooks))e.push("Resource 'hooks' must be an object");else{const r=["preInsert","afterInsert","preUpdate","afterUpdate","preDelete","afterDelete"];for(const[n,i]of Object.entries(t.hooks))if(r.includes(n))if(Array.isArray(i))for(let t=0;t<i.length;t++){const e=i[t];if("function"==typeof e);else if("string"==typeof e)continue}else e.push(`Resource 'hooks.${n}' must be an array`);else e.push(`Invalid hook event '${n}'. Valid events: ${r.join(", ")}`)}return{isValid:0===e.length,errors:e}}(t);if(!e.isValid)throw new Error(`Invalid Resource configuration:\n${e.errors.join("\n")}`);const{name:r,client:n,version:i="1",attributes:s={},behavior:o=fo,passphrase:a="secret",parallelism:c=10,observers:u=[],cache:l=!1,autoDecrypt:h=!0,timestamps:f=!1,partitions:d={},paranoid:p=!0,allNestedObjectsOptional:g=!0,hooks:m={},idGenerator:y,idSize:b=22,versioningEnabled:w=!1}=t;if(this.name=r,this.client=n,this.version=i,this.behavior=o,this.observers=u,this.parallelism=c,this.passphrase=a??"secret",this.versioningEnabled=w,this.idGenerator=this.configureIdGenerator(y,b),this.config={cache:l,hooks:m,paranoid:p,timestamps:f,partitions:d,autoDecrypt:h,allNestedObjectsOptional:g},this.hooks={preInsert:[],afterInsert:[],preUpdate:[],afterUpdate:[],preDelete:[],afterDelete:[]},this.attributes=s||{},this.applyConfiguration(),m)for(const[t,e]of Object.entries(m))if(Array.isArray(e)&&this.hooks[t])for(const r of e)"function"==typeof r&&this.hooks[t].push(r.bind(this))}configureIdGenerator(t,e){return"function"==typeof t?t:"number"==typeof t&&t>0?po(t):"number"==typeof e&&e>0?po(e):L}get options(){return{timestamps:this.config.timestamps,partitions:this.config.partitions||{},cache:this.config.cache,autoDecrypt:this.config.autoDecrypt,paranoid:this.config.paranoid,allNestedObjectsOptional:this.config.allNestedObjectsOptional}}export(){const t=this.schema.export();return t.behavior=this.behavior,t.timestamps=this.config.timestamps,t.partitions=this.config.partitions||{},t.paranoid=this.config.paranoid,t.allNestedObjectsOptional=this.config.allNestedObjectsOptional,t.autoDecrypt=this.config.autoDecrypt,t.cache=this.config.cache,t.hooks=this.hooks,t}applyConfiguration(){this.config.timestamps&&(this.attributes.createdAt||(this.attributes.createdAt="string|optional"),this.attributes.updatedAt||(this.attributes.updatedAt="string|optional"),this.config.partitions||(this.config.partitions={}),this.config.partitions.byCreatedDate||(this.config.partitions.byCreatedDate={fields:{createdAt:"date|maxlength:10"}}),this.config.partitions.byUpdatedDate||(this.config.partitions.byUpdatedDate={fields:{updatedAt:"date|maxlength:10"}})),this.setupPartitionHooks(),this.versioningEnabled&&(this.config.partitions.byVersion||(this.config.partitions.byVersion={fields:{_v:"string"}})),this.schema=new tn({name:this.name,attributes:this.attributes,passphrase:this.passphrase,version:this.version,options:{autoDecrypt:this.config.autoDecrypt,allNestedObjectsOptional:this.config.allNestedObjectsOptional}}),this.validatePartitions()}updateAttributes(t){const e=this.attributes;return this.attributes=t,this.applyConfiguration(),{oldAttributes:e,newAttributes:t}}addHook(t,e){this.hooks[t]&&this.hooks[t].push(e.bind(this))}async executeHooks(t,e){if(!this.hooks[t])return e;let r=e;for(const e of this.hooks[t])r=await e(r);return r}setupPartitionHooks(){if(!this.config.partitions)return;const t=this.config.partitions;0!==Object.keys(t).length&&(this.hooks.afterInsert||(this.hooks.afterInsert=[]),this.hooks.afterInsert.push(async t=>(await this.createPartitionReferences(t),t)),this.hooks.afterDelete||(this.hooks.afterDelete=[]),this.hooks.afterDelete.push(async t=>(await this.deletePartitionReferences(t),t)))}async validate(t){const e={original:c(t),isValid:!1,errors:[]},r=await this.schema.validate(t,{mutateOriginal:!0});return!0===r?e.isValid=!0:e.errors=r,e.data=t,e}validatePartitions(){if(!this.config.partitions)return;const t=this.config.partitions;if(0===Object.keys(t).length)return;const e=Object.keys(this.attributes||{});for(const[r,n]of Object.entries(t))if(n.fields)for(const t of Object.keys(n.fields))if(!this.fieldExistsInAttributes(t))throw new Error(`Partition '${r}' uses field '${t}' which does not exist in resource attributes. Available fields: ${e.join(", ")}.`)}fieldExistsInAttributes(t){if(t.startsWith("_"))return!0;if(!t.includes("."))return Object.keys(this.attributes||{}).includes(t);const e=t.split(".");let r=this.attributes||{};for(const t of e){if(!r||"object"!=typeof r||!(t in r))return!1;r=r[t]}return!0}applyPartitionRule(t,e){if(null==t)return t;let r=t;if("string"==typeof e&&e.includes("maxlength:")){const t=e.match(/maxlength:(\d+)/);if(t){const e=parseInt(t[1]);"string"==typeof r&&r.length>e&&(r=r.substring(0,e))}}if(e.includes("date"))if(r instanceof Date)r=r.toISOString().split("T")[0];else if("string"==typeof r)try{if(r.includes("T")&&r.includes("Z"))r=r.split("T")[0];else{const t=new Date(r);isNaN(t.getTime())||(r=t.toISOString().split("T")[0])}}catch(t){}return r}getResourceKey(t){return N(`resource=${this.name}`,"data",`id=${t}`)}getPartitionKey({partitionName:t,id:e,data:r}){if(!this.config.partitions||!this.config.partitions[t])throw new Error(`Partition '${t}' not found`);const n=this.config.partitions[t],i=[],s=Object.entries(n.fields).sort(([t],[e])=>t.localeCompare(e));for(const[t,e]of s){const n=this.getNestedFieldValue(r,t),s=this.applyPartitionRule(n,e);if(null==s)return null;i.push(`${t}=${s}`)}if(0===i.length)return null;const o=e||r?.id;return o?N(`resource=${this.name}`,`partition=${t}`,...i,`id=${o}`):null}getNestedFieldValue(t,e){if(!e.includes("."))return t[e];const r=e.split(".");let n=t;for(const t of r){if(!n||"object"!=typeof n||!(t in n))return;n=n[t]}return n}calculateContentLength(t){return t?Buffer.isBuffer(t)?t.length:"string"==typeof t?Buffer.byteLength(t,"utf8"):"object"==typeof t?Buffer.byteLength(JSON.stringify(t),"utf8"):Buffer.byteLength(String(t),"utf8"):0}async insert({id:t,...e}){this.options.timestamps&&(e.createdAt=(new Date).toISOString(),e.updatedAt=(new Date).toISOString());const r={id:t,...e},i=await this.executeHooks("preInsert",r),{errors:s,isValid:o,data:a}=await this.validate(i);if(!o)throw new st({bucket:this.client.config.bucket,resourceName:this.name,attributes:i,validation:s});const{id:c,...u}=a,l=c||t||this.idGenerator(),h=await this.schema.mapper(u);h._v=String(this.version);const f=lo(this.behavior),{mappedData:d,body:p}=await f.handleInsert({resource:this,data:u,mappedData:h}),g=d,m=this.getResourceKey(l);let y;if(p&&""!==p)try{JSON.parse(p),y="application/json"}catch{}await this.client.putObject({metadata:g,key:m,body:p,contentType:y,contentLength:this.calculateContentLength(p)});const b=n({id:l},u);return await this.executeHooks("afterInsert",b),this.emit("insert",b),b}async get(t){const e=this.getResourceKey(t);try{const r=await this.client.headObject(e),n=r.Metadata?._v||this.version,i="string"==typeof n&&n.startsWith("v")?n.slice(1):n,s=await this.getSchemaForVersion(i);let o=await s.unmapper(r.Metadata);const a=lo(this.behavior);let c="";if(r.ContentLength>0)try{const t=await this.client.getObject(e);c=await Ks(t.Body)}catch(e){console.warn(`Failed to read body for resource ${t}:`,e.message),c=""}const{metadata:u}=await a.handleGet({resource:this,metadata:o,body:c});let l=u;return l.id=t,l._contentLength=r.ContentLength,l._lastModified=r.LastModified,l._hasContent=r.ContentLength>0,l._mimeType=r.ContentType||null,l._v=i,r.VersionId&&(l._versionId=r.VersionId),r.Expiration&&(l._expiresAt=r.Expiration),l._definitionHash=this.getDefinitionHash(),i!==this.version&&(l=await this.applyVersionMapping(l,i,this.version)),this.emit("get",l),l}catch(r){if(r.message.includes("Cipher job failed")||r.message.includes("OperationError")||r.originalError?.message?.includes("Cipher job failed"))try{console.warn(`Decryption failed for resource ${t}, attempting to get raw metadata`);const r=await this.client.headObject(e),n=this.extractVersionFromKey(e)||this.version,i=new tn({name:this.name,attributes:this.attributes,passphrase:this.passphrase,version:n,options:{...this.config,autoDecrypt:!1,autoEncrypt:!1}});let s=await i.unmapper(r.Metadata);const o=lo(this.behavior);let a="";if(r.ContentLength>0)try{const t=await this.client.getObject(e);a=await Ks(t.Body)}catch(e){console.warn(`Failed to read body for resource ${t}:`,e.message),a=""}const{metadata:c}=await o.handleGet({resource:this,metadata:s,body:a});let u=c;return u.id=t,u._contentLength=r.ContentLength,u._lastModified=r.LastModified,u._hasContent=r.ContentLength>0,u._mimeType=r.ContentType||null,u._version=n,u._decryptionFailed=!0,r.VersionId&&(u._versionId=r.VersionId),r.Expiration&&(u._expiresAt=r.Expiration),u._definitionHash=this.getDefinitionHash(),this.emit("get",u),u}catch(e){console.error(`Fallback attempt also failed for resource ${t}:`,e.message)}const n=new Error(`Failed to get resource with id '${t}': ${r.message}`);throw n.originalError=r,n.resourceId=t,n.resourceKey=e,n}}async exists(t){try{const e=this.getResourceKey(t);return await this.client.headObject(e),!0}catch(t){return!1}}async update(t,e){const r=await this.get(t);this.config.timestamps&&(e.updatedAt=(new Date).toISOString());const n=await this.executeHooks("preUpdate",e),i={...r,...n,id:t},{isValid:s,errors:o,data:a}=await this.validate(i);if(!s)throw new st({bucket:this.client.config.bucket,resourceName:this.name,attributes:n,validation:o});const{id:c,...u}=a,l={...r,id:t},h={...u,id:t};await this.handlePartitionReferenceUpdates(l,h);const f=await this.schema.mapper(u);f._v=String(this.version);const d=lo(this.behavior),{mappedData:p,body:g}=await d.handleUpdate({resource:this,id:t,data:u,mappedData:f}),m=p,y=this.getResourceKey(t);let b,w=g;if(""===g&&"body-overflow"!==this.behavior)try{const t=await this.client.getObject(y);if(t.ContentLength>0){const e=Buffer.from(await t.Body.transformToByteArray()),r=e.toString();try{JSON.parse(r)}catch{w=e,b=t.ContentType}}}catch(t){}let _=b;if(w&&""!==w&&!_)try{JSON.parse(w),_="application/json"}catch{}return this.versioningEnabled&&r._v!==this.version&&await this.createHistoricalVersion(t,r),await this.client.putObject({key:y,body:w,contentType:_,metadata:m}),u.id=t,await this.executeHooks("afterUpdate",u),this.emit("update",n,u),u}async delete(t){let e;try{e=await this.get(t)}catch(r){e={id:t}}await this.executeHooks("preDelete",e);const r=this.getResourceKey(t),n=await this.client.deleteObject(r);return await this.executeHooks("afterDelete",e),this.emit("delete",t),n}async upsert({id:t,...e}){return await this.exists(t)?this.update(t,e):this.insert({id:t,...e})}async count({partition:t=null,partitionValues:e={}}={}){let r;if(t&&Object.keys(e).length>0){const n=this.config.partitions[t];if(!n)throw new Error(`Partition '${t}' not found`);const i=[],s=Object.entries(n.fields).sort(([t],[e])=>t.localeCompare(e));for(const[t,r]of s){const n=e[t];if(null!=n){const e=this.applyPartitionRule(n,r);i.push(`${t}=${e}`)}}r=i.length>0?`resource=${this.name}/partition=${t}/${i.join("/")}`:`resource=${this.name}/partition=${t}`}else r=`resource=${this.name}/data`;const n=await this.client.count({prefix:r});return this.emit("count",n),n}async insertMany(t){const{results:e}=await d.for(t).withConcurrency(this.parallelism).handleError(async(t,e)=>{this.emit("error",t,e),this.observers.map(r=>r.emit("error",this.name,t,e))}).process(async t=>await this.insert(t));return this.emit("insertMany",t.length),e}async deleteMany(t){const e=r(t.map(t=>this.getResourceKey(t)),1e3),{results:n}=await d.for(e).withConcurrency(this.parallelism).handleError(async(t,e)=>{this.emit("error",t,e),this.observers.map(r=>r.emit("error",this.name,t,e))}).process(async t=>{const e=await this.client.deleteObjects(t);return t.forEach(t=>{const e=t.split("/").find(t=>t.startsWith("id=")),r=e?e.replace("id=",""):null;r&&(this.emit("deleted",r),this.observers.map(t=>t.emit("deleted",this.name,r)))}),e});return this.emit("deleteMany",t.length),n}async deleteAll(){if(!1!==this.config.paranoid)throw new Error(`deleteAll() is a dangerous operation and requires paranoid: false option. Current paranoid setting: ${this.config.paranoid}`);const t=`resource=${this.name}/data`,e=await this.client.deleteAll({prefix:t});return this.emit("deleteAll",{version:this.version,prefix:t,deletedCount:e}),{deletedCount:e,version:this.version}}async deleteAllData(){if(!1!==this.config.paranoid)throw new Error(`deleteAllData() is a dangerous operation and requires paranoid: false option. Current paranoid setting: ${this.config.paranoid}`);const t=`resource=${this.name}`,e=await this.client.deleteAll({prefix:t});return this.emit("deleteAllData",{resource:this.name,prefix:t,deletedCount:e}),{deletedCount:e,resource:this.name}}async listIds({partition:t=null,partitionValues:e={},limit:r,offset:n=0}={}){let i;if(t&&Object.keys(e).length>0){if(!this.config.partitions||!this.config.partitions[t])throw new Error(`Partition '${t}' not found`);const r=this.config.partitions[t],n=[],s=Object.entries(r.fields).sort(([t],[e])=>t.localeCompare(e));for(const[t,r]of s){const i=e[t];if(null!=i){const e=this.applyPartitionRule(i,r);n.push(`${t}=${e}`)}}i=n.length>0?`resource=${this.name}/partition=${t}/${n.join("/")}`:`resource=${this.name}/partition=${t}`}else i=`resource=${this.name}/data`;const s=(await this.client.getKeysPage({prefix:i,offset:n,amount:r||1e3})).map(t=>{const e=t.split("/").find(t=>t.startsWith("id="));return e?e.replace("id=",""):null}).filter(Boolean);return this.emit("listIds",s.length),s}async list({partition:t=null,partitionValues:e={},limit:r,offset:n=0}={}){try{return t?await this.listPartition({partition:t,partitionValues:e,limit:r,offset:n}):await this.listMain({limit:r,offset:n})}catch(r){return this.handleListError(r,{partition:t,partitionValues:e})}}async listMain({limit:t,offset:e=0}){const r=await this.listIds({limit:t,offset:e}),n=await this.processListResults(r,"main");return this.emit("list",{count:n.length,errors:0}),n}async listPartition({partition:t,partitionValues:e,limit:r,offset:n=0}){if(!this.config.partitions?.[t])return console.warn(`Partition '${t}' not found in resource '${this.name}'`),this.emit("list",{partition:t,partitionValues:e,count:0,errors:0}),[];const i=this.config.partitions[t],s=this.buildPartitionPrefix(t,i,e),o=await this.client.getAllKeys({prefix:s}),a=this.extractIdsFromKeys(o).slice(n),c=r?a.slice(0,r):a,u=await this.processPartitionResults(c,t,i,o);return this.emit("list",{partition:t,partitionValues:e,count:u.length,errors:0}),u}buildPartitionPrefix(t,e,r){const n=[],i=Object.entries(e.fields).sort(([t],[e])=>t.localeCompare(e));for(const[t,e]of i){const i=r[t];if(null!=i){const r=this.applyPartitionRule(i,e);n.push(`${t}=${r}`)}}return n.length>0?`resource=${this.name}/partition=${t}/${n.join("/")}`:`resource=${this.name}/partition=${t}`}extractIdsFromKeys(t){return t.map(t=>{const e=t.split("/").find(t=>t.startsWith("id="));return e?e.replace("id=",""):null}).filter(Boolean)}async processListResults(t,e="main"){const{results:r,errors:n}=await d.for(t).withConcurrency(this.parallelism).handleError(async(t,r)=>(console.warn(`Failed to get ${e} resource ${r}:`,t.message),null)).process(async t=>{try{return await this.get(t)}catch(r){return this.handleResourceError(r,t,e)}});return r.filter(t=>null!==t)}async processPartitionResults(t,e,r,n){const i=Object.entries(r.fields).sort(([t],[e])=>t.localeCompare(e)),{results:s,errors:o}=await d.for(t).withConcurrency(this.parallelism).handleError(async(t,e)=>(console.warn(`Failed to get partition resource ${e}:`,t.message),null)).process(async t=>{try{const r=this.extractPartitionValuesFromKey(t,n,i);return await this.getFromPartition({id:t,partitionName:e,partitionValues:r})}catch(e){return this.handleResourceError(e,t,"partition")}});return s.filter(t=>null!==t)}extractPartitionValuesFromKey(t,e,r){const n=e.find(e=>e.includes(`id=${t}`));if(!n)throw new Error(`Partition key not found for ID ${t}`);const i=n.split("/"),s={};for(const[t]of r){const e=i.find(e=>e.startsWith(`${t}=`));if(e){const r=e.replace(`${t}=`,"");s[t]=r}}return s}handleResourceError(t,e,r){if(t.message.includes("Cipher job failed")||t.message.includes("OperationError"))return console.warn(`Decryption failed for ${r} resource ${e}, returning basic info`),{id:e,_decryptionFailed:!0,_error:t.message,..."partition"===r&&{_partition:r}};throw t}handleListError(t,{partition:e,partitionValues:r}){return t.message.includes("Partition '")&&t.message.includes("' not found")?(console.warn("Partition error in list method:",t.message),this.emit("list",{partition:e,partitionValues:r,count:0,errors:1}),[]):(console.error("Critical error in list method:",t.message),this.emit("list",{partition:e,partitionValues:r,count:0,errors:1}),[])}async getMany(t){const{results:e,errors:r}=await d.for(t).withConcurrency(this.client.parallelism).handleError(async(t,e)=>(console.warn(`Failed to get resource ${e}:`,t.message),{id:e,_error:t.message,_decryptionFailed:t.message.includes("Cipher job failed")||t.message.includes("OperationError")})).process(async t=>{this.emit("id",t);try{const e=await this.get(t);return this.emit("data",e),e}catch(e){if(e.message.includes("Cipher job failed")||e.message.includes("OperationError"))return console.warn(`Decryption failed for ${t}, returning basic info`),{id:t,_decryptionFailed:!0,_error:e.message};throw e}});return this.emit("getMany",t.length),e}async getAll(){let t=await this.listIds();if(0===t.length)return[];const{results:e,errors:r}=await d.for(t).withConcurrency(this.client.parallelism).handleError(async(t,e)=>(console.warn(`Failed to get resource ${e}:`,t.message),{id:e,_error:t.message,_decryptionFailed:t.message.includes("Cipher job failed")||t.message.includes("OperationError")})).process(async t=>{try{return await this.get(t)}catch(e){if(e.message.includes("Cipher job failed")||e.message.includes("OperationError"))return console.warn(`Decryption failed for ${t}, returning basic info`),{id:t,_decryptionFailed:!0,_error:e.message};throw e}});return this.emit("getAll",e.length),e}async page({offset:t=0,size:e=100,partition:r=null,partitionValues:n={},skipCount:i=!1}={}){try{let s=null,o=null;if(!i)try{s=await this.count({partition:r,partitionValues:n}),o=Math.ceil(s/e)}catch(t){console.warn("Failed to get count for page:",t.message),s=null,o=null}const a=Math.floor(t/e);let c=[];try{c=await this.list({partition:r,partitionValues:n,limit:e,offset:t})}catch(t){console.warn("Failed to get items for page:",t.message),c=[]}const u={items:c,totalItems:s,page:a,pageSize:e,totalPages:o,_debug:{requestedSize:e,requestedOffset:t,actualItemsReturned:c.length,skipCount:i,hasTotalItems:null!==s}};return this.emit("page",u),u}catch(r){return console.error("Critical error in page method:",r.message),{items:[],totalItems:null,page:Math.floor(t/e),pageSize:e,totalPages:null,_debug:{requestedSize:e,requestedOffset:t,actualItemsReturned:0,skipCount:i,hasTotalItems:!1,error:r.message}}}}readable(){return new Vs({resource:this}).build()}writable(){return new Hs({resource:this}).build()}async setContent({id:t,buffer:e,contentType:r="application/octet-stream"}){const n=await this.get(t);if(!n)throw new Error(`Resource with id '${t}' not found`);const i={...n,_hasContent:!0,_contentLength:e.length,_mimeType:r};return await this.client.putObject({key:this.getResourceKey(t),metadata:await this.schema.mapper(i),body:e,contentType:r}),this.emit("setContent",{id:t,contentType:r,contentLength:e.length}),i}async content(t){const e=this.getResourceKey(t);try{const r=await this.client.getObject(e),n=Buffer.from(await r.Body.transformToByteArray()),i=r.ContentType||null;return this.emit("content",t,n.length,i),{buffer:n,contentType:i}}catch(t){if("NoSuchKey"===t.name)return{buffer:null,contentType:null};throw t}}async hasContent(t){const e=this.getResourceKey(t);try{return(await this.client.headObject(e)).ContentLength>0}catch(t){return!1}}async deleteContent(t){const e=this.getResourceKey(t),r=(await this.client.headObject(e)).Metadata||{},n=await this.client.putObject({key:e,body:"",metadata:r});return this.emit("deleteContent",t),n}getDefinitionHash(){const t={attributes:this.attributes,behavior:this.behavior},e=Wr(t);return`sha256:${k("sha256").update(e).digest("hex")}`}extractVersionFromKey(t){const e=t.split("/").find(t=>t.startsWith("v="));return e?e.replace("v=",""):null}async getSchemaForVersion(t){if(t===this.version)return this.schema;try{return new tn({name:this.name,attributes:this.attributes,passphrase:this.passphrase,version:t,options:{...this.config,autoDecrypt:!0,autoEncrypt:!0}})}catch(e){return console.warn(`Failed to create compatible schema for version ${t}, using current schema:`,e.message),this.schema}}async createPartitionReferences(t){const e=this.config.partitions;if(e&&0!==Object.keys(e).length)for(const[r,n]of Object.entries(e)){const e=this.getPartitionKey({partitionName:r,id:t.id,data:t});if(e){const t={_v:String(this.version)};await this.client.putObject({key:e,metadata:t,body:"",contentType:void 0})}}}async deletePartitionReferences(t){const e=this.config.partitions;if(!e||0===Object.keys(e).length)return;const r=[];for(const[n,i]of Object.entries(e)){const e=this.getPartitionKey({partitionName:n,id:t.id,data:t});e&&r.push(e)}if(r.length>0)try{await this.client.deleteObjects(r)}catch(t){console.warn("Some partition objects could not be deleted:",t.message)}}async query(t={},{limit:e=100,offset:r=0,partition:n=null,partitionValues:i={}}={}){if(0===Object.keys(t).length)return await this.list({partition:n,partitionValues:i,limit:e,offset:r});const s=[];let o=r;const a=Math.min(e,50);for(;s.length<e;){const e=await this.list({partition:n,partitionValues:i,limit:a,offset:o});if(0===e.length)break;const r=e.filter(e=>Object.entries(t).every(([t,r])=>e[t]===r));if(s.push(...r),o+=a,e.length<a)break}return s.slice(0,e)}async handlePartitionReferenceUpdates(t,e){const r=this.config.partitions;if(!r||0===Object.keys(r).length)return;for(const[n,i]of Object.entries(r))try{await this.handlePartitionReferenceUpdate(n,i,t,e)}catch(t){console.warn(`Failed to update partition references for ${n}:`,t.message)}const n=e.id||t.id;for(const[t,i]of Object.entries(r)){const r=`resource=${this.name}/partition=${t}`;let i=[];try{i=await this.client.getAllKeys({prefix:r})}catch(e){console.warn(`Aggressive cleanup: could not list keys for partition ${t}:`,e.message);continue}const s=this.getPartitionKey({partitionName:t,id:n,data:e});for(const t of i)if(t.endsWith(`/id=${n}`)&&t!==s)try{await this.client.deleteObject(t)}catch(e){console.warn(`Aggressive cleanup: could not delete stale partition key ${t}:`,e.message)}}}async handlePartitionReferenceUpdate(t,e,r,n){const i=n.id||r.id,s=this.getPartitionKey({partitionName:t,id:i,data:r}),o=this.getPartitionKey({partitionName:t,id:i,data:n});if(s!==o){if(s)try{await this.client.deleteObject(s)}catch(e){console.warn(`Old partition object could not be deleted for ${t}:`,e.message)}if(o)try{const t={_v:String(this.version)};await this.client.putObject({key:o,metadata:t,body:"",contentType:void 0})}catch(e){console.warn(`New partition object could not be created for ${t}:`,e.message)}}else if(o)try{const t={_v:String(this.version)};await this.client.putObject({key:o,metadata:t,body:"",contentType:void 0})}catch(e){console.warn(`Partition object could not be updated for ${t}:`,e.message)}}async updatePartitionReferences(t){const e=this.config.partitions;if(e&&0!==Object.keys(e).length)for(const[r,n]of Object.entries(e)){if(!n||!n.fields||"object"!=typeof n.fields){console.warn(`Skipping invalid partition '${r}' in resource '${this.name}'`);continue}const e=this.getPartitionKey({partitionName:r,id:t.id,data:t});if(e){const t={_v:String(this.version)};try{await this.client.putObject({key:e,metadata:t,body:"",contentType:void 0})}catch(t){console.warn(`Partition object could not be updated for ${r}:`,t.message)}}}}async getFromPartition({id:t,partitionName:e,partitionValues:r={}}){if(!this.config.partitions||!this.config.partitions[e])throw new Error(`Partition '${e}' not found`);const n=this.config.partitions[e],i=[],s=Object.entries(n.fields).sort(([t],[e])=>t.localeCompare(e));for(const[t,e]of s){const n=r[t];if(null!=n){const r=this.applyPartitionRule(n,e);i.push(`${t}=${r}`)}}if(0===i.length)throw new Error(`No partition values provided for partition '${e}'`);const o=N(`resource=${this.name}`,`partition=${e}`,...i,`id=${t}`);try{await this.client.headObject(o)}catch(r){throw new Error(`Resource with id '${t}' not found in partition '${e}'`)}const a=await this.get(t);return a._partition=e,a._partitionValues=r,this.emit("getFromPartition",a),a}async createHistoricalVersion(t,e){const r=N(`resource=${this.name}`,"historical",`id=${t}`),n={...e,_v:e._v||this.version,_historicalTimestamp:(new Date).toISOString()},i=await this.schema.mapper(n),s=lo(this.behavior),{mappedData:o,body:a}=await s.handleInsert({resource:this,data:n,mappedData:i}),c={...o,_v:e._v||this.version,_historicalTimestamp:n._historicalTimestamp};let u;if(a&&""!==a)try{JSON.parse(a),u="application/json"}catch{}await this.client.putObject({key:r,metadata:c,body:a,contentType:u})}async applyVersionMapping(t,e,r){if(e===r)return t;return{...t,_v:r,_originalVersion:e,_versionMapped:!0}}}class mo extends F{constructor(t){super(),this.version="1",this.s3dbVersion=(()=>{try{return"6.0.0"}catch(t){return"latest"}})(),this.resources={},this.savedMetadata=null,this.options=t,this.verbose=t.verbose||!1,this.parallelism=parseInt(t.parallelism+"")||10,this.plugins=t.plugins||[],this.pluginList=t.plugins||[],this.cache=t.cache,this.passphrase=t.passphrase||"secret",this.versioningEnabled=t.versioningEnabled||!1;let e=t.connectionString;if(!e&&(t.bucket||t.accessKeyId||t.secretAccessKey)){const{bucket:r,region:n,accessKeyId:i,secretAccessKey:s,endpoint:o,forcePathStyle:a}=t;if(o){const t=new URL(o);i&&(t.username=encodeURIComponent(i)),s&&(t.password=encodeURIComponent(s)),t.pathname=`/${r||"s3db"}`,a&&t.searchParams.set("forcePathStyle","true"),e=t.toString()}else if(i&&s){const t=new URLSearchParams;t.set("region",n||"us-east-1"),a&&t.set("forcePathStyle","true"),e=`s3://${encodeURIComponent(i)}:${encodeURIComponent(s)}@${r||"s3db"}?${t.toString()}`}}this.client=t.client||new ht({verbose:this.verbose,parallelism:this.parallelism,connectionString:e}),this.bucket=this.client.bucket,this.keyPrefix=this.client.keyPrefix}async connect(){await this.startPlugins();let t=null;if(await this.client.exists("s3db.json")){const e=await this.client.getObject("s3db.json");t=JSON.parse(await Ks(e?.Body))}else t=this.blankMetadataStructure(),await this.uploadMetadataFile();this.savedMetadata=t;const e=this.detectDefinitionChanges(t);for(const[e,r]of Object.entries(t.resources||{})){const t=r.currentVersion||"v0",n=r.versions?.[t];n&&(this.resources[e]=new go({name:e,client:this.client,version:t,attributes:n.attributes,behavior:n.behavior||"user-managed",parallelism:this.parallelism,passphrase:this.passphrase,observers:[this],cache:this.cache,timestamps:void 0!==n.timestamps&&n.timestamps,partitions:r.partitions||n.partitions||{},paranoid:void 0===n.paranoid||n.paranoid,allNestedObjectsOptional:void 0===n.allNestedObjectsOptional||n.allNestedObjectsOptional,autoDecrypt:void 0===n.autoDecrypt||n.autoDecrypt,hooks:n.hooks||{},versioningEnabled:this.versioningEnabled}))}e.length>0&&this.emit("resourceDefinitionsChanged",{changes:e,metadata:this.savedMetadata}),this.emit("connected",new Date)}detectDefinitionChanges(t){const e=[];for(const[r,n]of Object.entries(this.resources)){const i=this.generateDefinitionHash(n.export()),s=t.resources?.[r];if(s){const t=s.currentVersion||"v0",n=s.versions?.[t],o=n?.hash;o!==i&&e.push({type:"changed",resourceName:r,currentHash:i,savedHash:o,fromVersion:t,toVersion:this.getNextVersion(s.versions)})}else e.push({type:"new",resourceName:r,currentHash:i,savedHash:null})}for(const[r,n]of Object.entries(t.resources||{}))if(!this.resources[r]){const t=n.currentVersion||"v0",i=n.versions?.[t];e.push({type:"deleted",resourceName:r,currentHash:null,savedHash:i?.hash,deletedVersion:t})}return e}generateDefinitionHash(t,e=void 0){const r={...t.attributes};t.timestamps&&(delete r.createdAt,delete r.updatedAt);const n={attributes:r,behavior:e||t.behavior||"user-managed"},i=Wr(n);return`sha256:${k("sha256").update(i).digest("hex")}`}getNextVersion(t={}){const e=Object.keys(t).filter(t=>t.startsWith("v")).map(t=>parseInt(t.substring(1))).filter(t=>!isNaN(t));return`v${(e.length>0?Math.max(...e):-1)+1}`}async startPlugins(){const t=this;if(!s(this.pluginList)){const e=this.pluginList.map(t=>h(t)?new t(this):t),r=e.map(async e=>{e.beforeSetup&&await e.beforeSetup(),await e.setup(t),e.afterSetup&&await e.afterSetup()});await Promise.all(r);const n=e.map(async t=>{t.beforeStart&&await t.beforeStart(),await t.start(),t.afterStart&&await t.afterStart()});await Promise.all(n)}}async usePlugin(t,e=null){const r=e||t.constructor.name.replace("Plugin","").toLowerCase();return this.plugins[r]=t,this.isConnected()&&(await t.setup(this),await t.start()),t}async uploadMetadataFile(){const t={version:this.version,s3dbVersion:this.s3dbVersion,lastUpdated:(new Date).toISOString(),resources:{}};Object.entries(this.resources).forEach(([e,r])=>{const n=r.export(),i=this.generateDefinitionHash(n),s=this.savedMetadata?.resources?.[e],o=s?.currentVersion||"v0",a=s?.versions?.[o];let c,u;a&&a.hash===i?(c=o,u=!1):(c=this.getNextVersion(s?.versions),u=!0),t.resources[e]={currentVersion:c,partitions:r.config.partitions||{},versions:{...s?.versions,[c]:{hash:i,attributes:n.attributes,behavior:n.behavior||"user-managed",timestamps:r.config.timestamps,partitions:r.config.partitions,paranoid:r.config.paranoid,allNestedObjectsOptional:r.config.allNestedObjectsOptional,autoDecrypt:r.config.autoDecrypt,cache:r.config.cache,hooks:r.config.hooks,createdAt:u?(new Date).toISOString():a?.createdAt}}},r.version!==c&&(r.version=c,r.emit("versionUpdated",{oldVersion:o,newVersion:c}))}),await this.client.putObject({key:"s3db.json",body:JSON.stringify(t,null,2),contentType:"application/json"}),this.savedMetadata=t,this.emit("metadataUploaded",t)}blankMetadataStructure(){return{version:"1",s3dbVersion:this.s3dbVersion,resources:{}}}resourceExists(t){return!!this.resources[t]}resourceExistsWithSameHash({name:t,attributes:e,behavior:r="user-managed",options:n={}}){if(!this.resources[t])return{exists:!1,sameHash:!1,hash:null};const i=this.resources[t],s=this.generateDefinitionHash(i.export()),o=new go({name:t,attributes:e,behavior:r,client:this.client,version:i.version,passphrase:this.passphrase,versioningEnabled:this.versioningEnabled,...n}),a=this.generateDefinitionHash(o.export());return{exists:!0,sameHash:s===a,hash:a,existingHash:s}}async createResource({name:t,attributes:e,behavior:r="user-managed",hooks:n,...i}){if(this.resources[t]){const s=this.resources[t];if(Object.assign(s.config,{cache:this.cache,...i}),r&&(s.behavior=r),s.versioningEnabled=this.versioningEnabled,s.updateAttributes(e),n)for(const[t,e]of Object.entries(n))if(Array.isArray(e)&&s.hooks[t])for(const r of e)"function"==typeof r&&s.hooks[t].push(r.bind(s));const o=this.generateDefinitionHash(s.export(),s.behavior),a=this.savedMetadata?.resources?.[t],c=a?.currentVersion||"v0",u=a?.versions?.[c];return u&&u.hash===o||await this.uploadMetadataFile(),this.emit("s3db.resourceUpdated",t),s}const s=this.savedMetadata?.resources?.[t],o=s?.currentVersion||"v0",a=new go({name:t,attributes:e,behavior:r,observers:[this],client:this.client,version:o,passphrase:this.passphrase,cache:this.cache,hooks:n,versioningEnabled:this.versioningEnabled,...i});return this.resources[t]=a,await this.uploadMetadataFile(),this.emit("s3db.resourceCreated",t),a}resource(t){return this.resources[t]?this.resources[t]:Promise.reject(`resource ${t} does not exist`)}async listResources(){return Object.keys(this.resources).map(t=>({name:t}))}async getResource(t){if(!this.resources[t])throw new Error(`Resource not found: ${t}`);return this.resources[t]}get config(){return{version:this.version,s3dbVersion:this.s3dbVersion,bucket:this.bucket,keyPrefix:this.keyPrefix,parallelism:this.parallelism,verbose:this.verbose}}isConnected(){return!!this.savedMetadata}}class yo extends mo{}class bo extends F{constructor(t={}){super(),this.config=t}async _set(t,e){}async _get(t){}async _del(t){}async _clear(t){}validateKey(t){if(null==t||"string"!=typeof t||!t)throw new Error("Invalid key")}async set(t,e){return this.validateKey(t),await this._set(t,e),this.emit("set",e),e}async get(t){this.validateKey(t);const e=await this._get(t);return this.emit("get",e),e}async del(t){this.validateKey(t);const e=await this._del(t);return this.emit("delete",e),e}async delete(t){return this.del(t)}async clear(){const t=await this._clear();return this.emit("clear",t),t}}class wo extends bo{constructor(t={}){super(t),this.cache={},this.meta={},this.maxSize=t.maxSize||0,this.ttl=t.ttl||0}async _set(t,e){if(this.maxSize>0&&Object.keys(this.cache).length>=this.maxSize){const t=Object.entries(this.meta).sort((t,e)=>t[1].ts-e[1].ts)[0]?.[0];t&&(delete this.cache[t],delete this.meta[t])}return this.cache[t]=e,this.meta[t]={ts:Date.now()},e}async _get(t){if(!Object.prototype.hasOwnProperty.call(this.cache,t))return null;if(this.ttl>0){const e=Date.now(),r=this.meta[t];if(r&&e-r.ts>1e3*this.ttl)return delete this.cache[t],delete this.meta[t],null}return this.cache[t]}async _del(t){return delete this.cache[t],delete this.meta[t],!0}async _clear(){return this.cache={},this.meta={},!0}async size(){return Object.keys(this.cache).length}async keys(){return Object.keys(this.cache)}}var _o={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};function vo(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}function ko(t,e,r,n,i){if(e.subarray&&t.subarray)t.set(e.subarray(r,r+n),i);else for(var s=0;s<n;s++)t[i+s]=e[r+s]}var So=Uint8Array,Oo=Uint16Array,Eo=Int32Array;function Ro(t){for(var e=t.length;--e>=0;)t[e]=0}var xo=256,Ao=286,Io=30,jo=15,Do=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],Po=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],No=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],To=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],Co=new Array(576);Ro(Co);var Mo=new Array(60);Ro(Mo);var Lo=new Array(512);Ro(Lo);var $o=new Array(256);Ro($o);var Uo=new Array(29);Ro(Uo);var zo,Fo,Bo,qo=new Array(Io);function Vo(t,e,r,n,i){this.static_tree=t,this.extra_bits=e,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=t&&t.length}function Ho(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function Ko(t){return t<256?Lo[t]:Lo[256+(t>>>7)]}function Zo(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function Wo(t,e,r){t.bi_valid>16-r?(t.bi_buf|=e<<t.bi_valid&65535,Zo(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=r-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=r)}function Jo(t,e,r){Wo(t,r[2*e],r[2*e+1])}function Go(t,e){var r=0;do{r|=1&t,t>>>=1,r<<=1}while(--e>0);return r>>>1}function Yo(t,e,r){var n,i,s=new Array(16),o=0;for(n=1;n<=jo;n++)s[n]=o=o+r[n-1]<<1;for(i=0;i<=e;i++){var a=t[2*i+1];0!==a&&(t[2*i]=Go(s[a]++,a))}}function Qo(t){var e;for(e=0;e<Ao;e++)t.dyn_ltree[2*e]=0;for(e=0;e<Io;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function Xo(t){t.bi_valid>8?Zo(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function ta(t,e,r,n){var i=2*e,s=2*r;return t[i]<t[s]||t[i]===t[s]&&n[e]<=n[r]}function ea(t,e,r){for(var n=t.heap[r],i=r<<1;i<=t.heap_len&&(i<t.heap_len&&ta(e,t.heap[i+1],t.heap[i],t.depth)&&i++,!ta(e,n,t.heap[i],t.depth));)t.heap[r]=t.heap[i],r=i,i<<=1;t.heap[r]=n}function ra(t,e,r){var n,i,s,o,a=0;if(0!==t.last_lit)do{n=t.pending_buf[t.d_buf+2*a]<<8|t.pending_buf[t.d_buf+2*a+1],i=t.pending_buf[t.l_buf+a],a++,0===n?Jo(t,i,e):(Jo(t,(s=$o[i])+xo+1,e),0!==(o=Do[s])&&Wo(t,i-=Uo[s],o),Jo(t,s=Ko(--n),r),0!==(o=Po[s])&&Wo(t,n-=qo[s],o))}while(a<t.last_lit);Jo(t,256,e)}function na(t,e){var r,n,i,s=e.dyn_tree,o=e.stat_desc.static_tree,a=e.stat_desc.has_stree,c=e.stat_desc.elems,u=-1;for(t.heap_len=0,t.heap_max=573,r=0;r<c;r++)0!==s[2*r]?(t.heap[++t.heap_len]=u=r,t.depth[r]=0):s[2*r+1]=0;for(;t.heap_len<2;)s[2*(i=t.heap[++t.heap_len]=u<2?++u:0)]=1,t.depth[i]=0,t.opt_len--,a&&(t.static_len-=o[2*i+1]);for(e.max_code=u,r=t.heap_len>>1;r>=1;r--)ea(t,s,r);i=c;do{r=t.heap[1],t.heap[1]=t.heap[t.heap_len--],ea(t,s,1),n=t.heap[1],t.heap[--t.heap_max]=r,t.heap[--t.heap_max]=n,s[2*i]=s[2*r]+s[2*n],t.depth[i]=(t.depth[r]>=t.depth[n]?t.depth[r]:t.depth[n])+1,s[2*r+1]=s[2*n+1]=i,t.heap[1]=i++,ea(t,s,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],function(t,e){var r,n,i,s,o,a,c=e.dyn_tree,u=e.max_code,l=e.stat_desc.static_tree,h=e.stat_desc.has_stree,f=e.stat_desc.extra_bits,d=e.stat_desc.extra_base,p=e.stat_desc.max_length,g=0;for(s=0;s<=jo;s++)t.bl_count[s]=0;for(c[2*t.heap[t.heap_max]+1]=0,r=t.heap_max+1;r<573;r++)(s=c[2*c[2*(n=t.heap[r])+1]+1]+1)>p&&(s=p,g++),c[2*n+1]=s,n>u||(t.bl_count[s]++,o=0,n>=d&&(o=f[n-d]),a=c[2*n],t.opt_len+=a*(s+o),h&&(t.static_len+=a*(l[2*n+1]+o)));if(0!==g){do{for(s=p-1;0===t.bl_count[s];)s--;t.bl_count[s]--,t.bl_count[s+1]+=2,t.bl_count[p]--,g-=2}while(g>0);for(s=p;0!==s;s--)for(n=t.bl_count[s];0!==n;)(i=t.heap[--r])>u||(c[2*i+1]!==s&&(t.opt_len+=(s-c[2*i+1])*c[2*i],c[2*i+1]=s),n--)}}(t,e),Yo(s,u,t.bl_count)}function ia(t,e,r){var n,i,s=-1,o=e[1],a=0,c=7,u=4;for(0===o&&(c=138,u=3),e[2*(r+1)+1]=65535,n=0;n<=r;n++)i=o,o=e[2*(n+1)+1],++a<c&&i===o||(a<u?t.bl_tree[2*i]+=a:0!==i?(i!==s&&t.bl_tree[2*i]++,t.bl_tree[32]++):a<=10?t.bl_tree[34]++:t.bl_tree[36]++,a=0,s=i,0===o?(c=138,u=3):i===o?(c=6,u=3):(c=7,u=4))}function sa(t,e,r){var n,i,s=-1,o=e[1],a=0,c=7,u=4;for(0===o&&(c=138,u=3),n=0;n<=r;n++)if(i=o,o=e[2*(n+1)+1],!(++a<c&&i===o)){if(a<u)do{Jo(t,i,t.bl_tree)}while(0!==--a);else 0!==i?(i!==s&&(Jo(t,i,t.bl_tree),a--),Jo(t,16,t.bl_tree),Wo(t,a-3,2)):a<=10?(Jo(t,17,t.bl_tree),Wo(t,a-3,3)):(Jo(t,18,t.bl_tree),Wo(t,a-11,7));a=0,s=i,0===o?(c=138,u=3):i===o?(c=6,u=3):(c=7,u=4)}}Ro(qo);var oa=!1;function aa(t){oa||(!function(){var t,e,r,n,i,s=new Array(16);for(r=0,n=0;n<28;n++)for(Uo[n]=r,t=0;t<1<<Do[n];t++)$o[r++]=n;for($o[r-1]=n,i=0,n=0;n<16;n++)for(qo[n]=i,t=0;t<1<<Po[n];t++)Lo[i++]=n;for(i>>=7;n<Io;n++)for(qo[n]=i<<7,t=0;t<1<<Po[n]-7;t++)Lo[256+i++]=n;for(e=0;e<=jo;e++)s[e]=0;for(t=0;t<=143;)Co[2*t+1]=8,t++,s[8]++;for(;t<=255;)Co[2*t+1]=9,t++,s[9]++;for(;t<=279;)Co[2*t+1]=7,t++,s[7]++;for(;t<=287;)Co[2*t+1]=8,t++,s[8]++;for(Yo(Co,287,s),t=0;t<Io;t++)Mo[2*t+1]=5,Mo[2*t]=Go(t,5);zo=new Vo(Co,Do,257,Ao,jo),Fo=new Vo(Mo,Po,0,Io,jo),Bo=new Vo(new Array(0),No,0,19,7)}(),oa=!0),t.l_desc=new Ho(t.dyn_ltree,zo),t.d_desc=new Ho(t.dyn_dtree,Fo),t.bl_desc=new Ho(t.bl_tree,Bo),t.bi_buf=0,t.bi_valid=0,Qo(t)}function ca(t,e,r,n){Wo(t,0+(n?1:0),3),function(t,e,r){Xo(t),Zo(t,r),Zo(t,~r),ko(t.pending_buf,t.window,e,r,t.pending),t.pending+=r}(t,e,r)}function ua(t){Wo(t,2,3),Jo(t,256,Co),function(t){16===t.bi_valid?(Zo(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}function la(t,e,r,n){var i,s,o=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=function(t){var e,r=4093624447;for(e=0;e<=31;e++,r>>>=1)if(1&r&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<xo;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0}(t)),na(t,t.l_desc),na(t,t.d_desc),o=function(t){var e;for(ia(t,t.dyn_ltree,t.l_desc.max_code),ia(t,t.dyn_dtree,t.d_desc.max_code),na(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*To[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),i=t.opt_len+3+7>>>3,(s=t.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==e?ca(t,e,r,n):4===t.strategy||s===i?(Wo(t,2+(n?1:0),3),ra(t,Co,Mo)):(Wo(t,4+(n?1:0),3),function(t,e,r,n){var i;for(Wo(t,e-257,5),Wo(t,r-1,5),Wo(t,n-4,4),i=0;i<n;i++)Wo(t,t.bl_tree[2*To[i]+1],3);sa(t,t.dyn_ltree,e-1),sa(t,t.dyn_dtree,r-1)}(t,t.l_desc.max_code+1,t.d_desc.max_code+1,o+1),ra(t,t.dyn_ltree,t.dyn_dtree)),Qo(t),n&&Xo(t)}function ha(t,e,r){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&r,t.last_lit++,0===e?t.dyn_ltree[2*r]++:(t.matches++,e--,t.dyn_ltree[2*($o[r]+xo+1)]++,t.dyn_dtree[2*Ko(e)]++),t.last_lit===t.lit_bufsize-1}function fa(t,e,r,n){for(var i=65535&t,s=t>>>16&65535,o=0;0!==r;){r-=o=r>2e3?2e3:r;do{s=s+(i=i+e[n++]|0)|0}while(--o);i%=65521,s%=65521}return i|s<<16}var da=function(){for(var t,e=[],r=0;r<256;r++){t=r;for(var n=0;n<8;n++)t=1&t?3988292384^t>>>1:t>>>1;e[r]=t}return e}();function pa(t,e,r,n){var i=da,s=n+r;t^=-1;for(var o=n;o<s;o++)t=t>>>8^i[255&(t^e[o])];return-1^t}var ga,ma=-2,ya=258,ba=262,wa=103,_a=113,va=666;function ka(t,e){return t.msg=_o[e],e}function Sa(t){return(t<<1)-(t>4?9:0)}function Oa(t){for(var e=t.length;--e>=0;)t[e]=0}function Ea(t){var e=t.state,r=e.pending;r>t.avail_out&&(r=t.avail_out),0!==r&&(ko(t.output,e.pending_buf,e.pending_out,r,t.next_out),t.next_out+=r,e.pending_out+=r,t.total_out+=r,t.avail_out-=r,e.pending-=r,0===e.pending&&(e.pending_out=0))}function Ra(t,e){la(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,Ea(t.strm)}function xa(t,e){t.pending_buf[t.pending++]=e}function Aa(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function Ia(t,e,r,n){var i=t.avail_in;return i>n&&(i=n),0===i?0:(t.avail_in-=i,ko(e,t.input,t.next_in,i,r),1===t.state.wrap?t.adler=fa(t.adler,e,i,r):2===t.state.wrap&&(t.adler=pa(t.adler,e,i,r)),t.next_in+=i,t.total_in+=i,i)}function ja(t,e){var r,n,i=t.max_chain_length,s=t.strstart,o=t.prev_length,a=t.nice_match,c=t.strstart>t.w_size-ba?t.strstart-(t.w_size-ba):0,u=t.window,l=t.w_mask,h=t.prev,f=t.strstart+ya,d=u[s+o-1],p=u[s+o];t.prev_length>=t.good_match&&(i>>=2),a>t.lookahead&&(a=t.lookahead);do{if(u[(r=e)+o]===p&&u[r+o-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&s<f);if(n=ya-(f-s),s=f-ya,n>o){if(t.match_start=e,o=n,n>=a)break;d=u[s+o-1],p=u[s+o]}}}while((e=h[e&l])>c&&0!==--i);return o<=t.lookahead?o:t.lookahead}function Da(t){var e,r,n,i,s,o=t.w_size;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=o+(o-ba)){ko(t.window,t.window,o,o,0),t.match_start-=o,t.strstart-=o,t.block_start-=o,e=r=t.hash_size;do{n=t.head[--e],t.head[e]=n>=o?n-o:0}while(--r);e=r=o;do{n=t.prev[--e],t.prev[e]=n>=o?n-o:0}while(--r);i+=o}if(0===t.strm.avail_in)break;if(r=Ia(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=r,t.lookahead+t.insert>=3)for(s=t.strstart-t.insert,t.ins_h=t.window[s],t.ins_h=(t.ins_h<<t.hash_shift^t.window[s+1])&t.hash_mask;t.insert&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[s+3-1])&t.hash_mask,t.prev[s&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=s,s++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<ba&&0!==t.strm.avail_in)}function Pa(t,e){for(var r,n;;){if(t.lookahead<ba){if(Da(t),t.lookahead<ba&&0===e)return 1;if(0===t.lookahead)break}if(r=0,t.lookahead>=3&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+3-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==r&&t.strstart-r<=t.w_size-ba&&(t.match_length=ja(t,r)),t.match_length>=3)if(n=ha(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+3-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!==--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+1])&t.hash_mask;else n=ha(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(n&&(Ra(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,4===e?(Ra(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Ra(t,!1),0===t.strm.avail_out)?1:2}function Na(t,e){for(var r,n,i;;){if(t.lookahead<ba){if(Da(t),t.lookahead<ba&&0===e)return 1;if(0===t.lookahead)break}if(r=0,t.lookahead>=3&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+3-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==r&&t.prev_length<t.max_lazy_match&&t.strstart-r<=t.w_size-ba&&(t.match_length=ja(t,r),t.match_length<=5&&(1===t.strategy||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-3,n=ha(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=i&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+3-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!==--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,n&&(Ra(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if((n=ha(t,0,t.window[t.strstart-1]))&&Ra(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(n=ha(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,4===e?(Ra(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Ra(t,!1),0===t.strm.avail_out)?1:2}function Ta(t,e,r,n,i){this.good_length=t,this.max_lazy=e,this.nice_length=r,this.max_chain=n,this.func=i}function Ca(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=8,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Oo(1146),this.dyn_dtree=new Oo(122),this.bl_tree=new Oo(78),Oa(this.dyn_ltree),Oa(this.dyn_dtree),Oa(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Oo(16),this.heap=new Oo(573),Oa(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Oo(573),Oa(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function Ma(t){var e,r=function(t){var e;return t&&t.state?(t.total_in=t.total_out=0,t.data_type=2,(e=t.state).pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?42:_a,t.adler=2===e.wrap?0:1,e.last_flush=0,aa(e),0):ka(t,ma)}(t);return 0===r&&((e=t.state).window_size=2*e.w_size,Oa(e.head),e.max_lazy_match=ga[e.level].max_lazy,e.good_match=ga[e.level].good_length,e.nice_match=ga[e.level].nice_length,e.max_chain_length=ga[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=2,e.match_available=0,e.ins_h=0),r}function La(t,e){var r,n,i,s;if(!t||!t.state||e>5||e<0)return t?ka(t,ma):ma;if(n=t.state,!t.output||!t.input&&0!==t.avail_in||n.status===va&&4!==e)return ka(t,0===t.avail_out?-5:ma);if(n.strm=t,r=n.last_flush,n.last_flush=e,42===n.status)if(2===n.wrap)t.adler=0,xa(n,31),xa(n,139),xa(n,8),n.gzhead?(xa(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),xa(n,255&n.gzhead.time),xa(n,n.gzhead.time>>8&255),xa(n,n.gzhead.time>>16&255),xa(n,n.gzhead.time>>24&255),xa(n,9===n.level?2:n.strategy>=2||n.level<2?4:0),xa(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(xa(n,255&n.gzhead.extra.length),xa(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(t.adler=pa(t.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(xa(n,0),xa(n,0),xa(n,0),xa(n,0),xa(n,0),xa(n,9===n.level?2:n.strategy>=2||n.level<2?4:0),xa(n,3),n.status=_a);else{var o=8+(n.w_bits-8<<4)<<8;o|=(n.strategy>=2||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(o|=32),o+=31-o%31,n.status=_a,Aa(n,o),0!==n.strstart&&(Aa(n,t.adler>>>16),Aa(n,65535&t.adler)),t.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(t.adler=pa(t.adler,n.pending_buf,n.pending-i,i)),Ea(t),i=n.pending,n.pending!==n.pending_buf_size));)xa(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(t.adler=pa(t.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(t.adler=pa(t.adler,n.pending_buf,n.pending-i,i)),Ea(t),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.name.length?255&n.gzhead.name.charCodeAt(n.gzindex++):0,xa(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(t.adler=pa(t.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(t.adler=pa(t.adler,n.pending_buf,n.pending-i,i)),Ea(t),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.comment.length?255&n.gzhead.comment.charCodeAt(n.gzindex++):0,xa(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(t.adler=pa(t.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=wa)}else n.status=wa;if(n.status===wa&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&Ea(t),n.pending+2<=n.pending_buf_size&&(xa(n,255&t.adler),xa(n,t.adler>>8&255),t.adler=0,n.status=_a)):n.status=_a),0!==n.pending){if(Ea(t),0===t.avail_out)return n.last_flush=-1,0}else if(0===t.avail_in&&Sa(e)<=Sa(r)&&4!==e)return ka(t,-5);if(n.status===va&&0!==t.avail_in)return ka(t,-5);if(0!==t.avail_in||0!==n.lookahead||0!==e&&n.status!==va){var a=2===n.strategy?function(t,e){for(var r;;){if(0===t.lookahead&&(Da(t),0===t.lookahead)){if(0===e)return 1;break}if(t.match_length=0,r=ha(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,r&&(Ra(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(Ra(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Ra(t,!1),0===t.strm.avail_out)?1:2}(n,e):3===n.strategy?function(t,e){for(var r,n,i,s,o=t.window;;){if(t.lookahead<=ya){if(Da(t),t.lookahead<=ya&&0===e)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=o[i=t.strstart-1])===o[++i]&&n===o[++i]&&n===o[++i]){s=t.strstart+ya;do{}while(n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&i<s);t.match_length=ya-(s-i),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(r=ha(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(r=ha(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),r&&(Ra(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(Ra(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Ra(t,!1),0===t.strm.avail_out)?1:2}(n,e):ga[n.level].func(n,e);if(3!==a&&4!==a||(n.status=va),1===a||3===a)return 0===t.avail_out&&(n.last_flush=-1),0;if(2===a&&(1===e?ua(n):5!==e&&(ca(n,0,0,!1),3===e&&(Oa(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),Ea(t),0===t.avail_out))return n.last_flush=-1,0}return 4!==e?0:n.wrap<=0?1:(2===n.wrap?(xa(n,255&t.adler),xa(n,t.adler>>8&255),xa(n,t.adler>>16&255),xa(n,t.adler>>24&255),xa(n,255&t.total_in),xa(n,t.total_in>>8&255),xa(n,t.total_in>>16&255),xa(n,t.total_in>>24&255)):(Aa(n,t.adler>>>16),Aa(n,65535&t.adler)),Ea(t),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?0:1)}ga=[new Ta(0,0,0,0,function(t,e){var r=65535;for(r>t.pending_buf_size-5&&(r=t.pending_buf_size-5);;){if(t.lookahead<=1){if(Da(t),0===t.lookahead&&0===e)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var n=t.block_start+r;if((0===t.strstart||t.strstart>=n)&&(t.lookahead=t.strstart-n,t.strstart=n,Ra(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-ba&&(Ra(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(Ra(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(Ra(t,!1),t.strm.avail_out),1)}),new Ta(4,4,8,4,Pa),new Ta(4,5,16,8,Pa),new Ta(4,6,32,32,Pa),new Ta(4,4,16,16,Na),new Ta(8,16,32,32,Na),new Ta(8,16,128,128,Na),new Ta(8,32,128,256,Na),new Ta(32,128,258,1024,Na),new Ta(32,258,258,4096,Na)];function $a(t,e){var r,n,i,s,o,a,c,u,l,h,f,d,p,g,m,y,b,w,_,v,k,S,O,E,R;r=t.state,n=t.next_in,E=t.input,i=n+(t.avail_in-5),s=t.next_out,R=t.output,o=s-(e-t.avail_out),a=s+(t.avail_out-257),c=r.dmax,u=r.wsize,l=r.whave,h=r.wnext,f=r.window,d=r.hold,p=r.bits,g=r.lencode,m=r.distcode,y=(1<<r.lenbits)-1,b=(1<<r.distbits)-1;t:do{p<15&&(d+=E[n++]<<p,p+=8,d+=E[n++]<<p,p+=8),w=g[d&y];e:for(;;){if(d>>>=_=w>>>24,p-=_,0===(_=w>>>16&255))R[s++]=65535&w;else{if(!(16&_)){if(64&_){if(32&_){r.mode=12;break t}t.msg="invalid literal/length code",r.mode=30;break t}w=g[(65535&w)+(d&(1<<_)-1)];continue e}for(v=65535&w,(_&=15)&&(p<_&&(d+=E[n++]<<p,p+=8),v+=d&(1<<_)-1,d>>>=_,p-=_),p<15&&(d+=E[n++]<<p,p+=8,d+=E[n++]<<p,p+=8),w=m[d&b];;){if(d>>>=_=w>>>24,p-=_,16&(_=w>>>16&255)){if(k=65535&w,p<(_&=15)&&(d+=E[n++]<<p,(p+=8)<_&&(d+=E[n++]<<p,p+=8)),(k+=d&(1<<_)-1)>c){t.msg="invalid distance too far back",r.mode=30;break t}if(d>>>=_,p-=_,k>(_=s-o)){if((_=k-_)>l&&r.sane){t.msg="invalid distance too far back",r.mode=30;break t}if(S=0,O=f,0===h){if(S+=u-_,_<v){v-=_;do{R[s++]=f[S++]}while(--_);S=s-k,O=R}}else if(h<_){if(S+=u+h-_,(_-=h)<v){v-=_;do{R[s++]=f[S++]}while(--_);if(S=0,h<v){v-=_=h;do{R[s++]=f[S++]}while(--_);S=s-k,O=R}}}else if(S+=h-_,_<v){v-=_;do{R[s++]=f[S++]}while(--_);S=s-k,O=R}for(;v>2;)R[s++]=O[S++],R[s++]=O[S++],R[s++]=O[S++],v-=3;v&&(R[s++]=O[S++],v>1&&(R[s++]=O[S++]))}else{S=s-k;do{R[s++]=R[S++],R[s++]=R[S++],R[s++]=R[S++],v-=3}while(v>2);v&&(R[s++]=R[S++],v>1&&(R[s++]=R[S++]))}break}if(64&_){t.msg="invalid distance code",r.mode=30;break t}w=m[(65535&w)+(d&(1<<_)-1)]}}break}}while(n<i&&s<a);n-=v=p>>3,d&=(1<<(p-=v<<3))-1,t.next_in=n,t.next_out=s,t.avail_in=n<i?i-n+5:5-(n-i),t.avail_out=s<a?a-s+257:257-(s-a),r.hold=d,r.bits=p}var Ua=15,za=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],Fa=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],Ba=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],qa=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];function Va(t,e,r,n,i,s,o,a){var c,u,l,h,f,d,p,g,m,y=a.bits,b=0,w=0,_=0,v=0,k=0,S=0,O=0,E=0,R=0,x=0,A=null,I=0,j=new Oo(16),D=new Oo(16),P=null,N=0;for(b=0;b<=Ua;b++)j[b]=0;for(w=0;w<n;w++)j[e[r+w]]++;for(k=y,v=Ua;v>=1&&0===j[v];v--);if(k>v&&(k=v),0===v)return i[s++]=20971520,i[s++]=20971520,a.bits=1,0;for(_=1;_<v&&0===j[_];_++);for(k<_&&(k=_),E=1,b=1;b<=Ua;b++)if(E<<=1,(E-=j[b])<0)return-1;if(E>0&&(0===t||1!==v))return-1;for(D[1]=0,b=1;b<Ua;b++)D[b+1]=D[b]+j[b];for(w=0;w<n;w++)0!==e[r+w]&&(o[D[e[r+w]]++]=w);if(0===t?(A=P=o,d=19):1===t?(A=za,I-=257,P=Fa,N-=257,d=256):(A=Ba,P=qa,d=-1),x=0,w=0,b=_,f=s,S=k,O=0,l=-1,h=(R=1<<k)-1,1===t&&R>852||2===t&&R>592)return 1;for(;;){p=b-O,o[w]<d?(g=0,m=o[w]):o[w]>d?(g=P[N+o[w]],m=A[I+o[w]]):(g=96,m=0),c=1<<b-O,_=u=1<<S;do{i[f+(x>>O)+(u-=c)]=p<<24|g<<16|m}while(0!==u);for(c=1<<b-1;x&c;)c>>=1;if(0!==c?(x&=c-1,x+=c):x=0,w++,0===--j[b]){if(b===v)break;b=e[r+o[w]]}if(b>k&&(x&h)!==l){for(0===O&&(O=k),f+=_,E=1<<(S=b-O);S+O<v&&!((E-=j[S+O])<=0);)S++,E<<=1;if(R+=1<<S,1===t&&R>852||2===t&&R>592)return 1;i[l=x&h]=k<<24|S<<16|f-s}}return 0!==x&&(i[f+x]=b-O<<24|64<<16),a.bits=k,0}var Ha=-2,Ka=12,Za=30;function Wa(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function Ja(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Oo(320),this.work=new Oo(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function Ga(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,function(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=1,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Eo(852),e.distcode=e.distdyn=new Eo(592),e.sane=1,e.back=-1,0):Ha}(t)):Ha}function Ya(t,e){var r,n;return t?(n=new Ja,t.state=n,n.window=null,r=function(t,e){var r,n;return t&&t.state?(n=t.state,e<0?(r=0,e=-e):(r=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?Ha:(null!==n.window&&n.wbits!==e&&(n.window=null),n.wrap=r,n.wbits=e,Ga(t))):Ha}(t,e),0!==r&&(t.state=null),r):Ha}var Qa,Xa,tc=!0;function ec(t){if(tc){var e;for(Qa=new Eo(512),Xa=new Eo(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(Va(1,t.lens,0,288,Qa,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;Va(2,t.lens,0,32,Xa,0,t.work,{bits:5}),tc=!1}t.lencode=Qa,t.lenbits=9,t.distcode=Xa,t.distbits=5}function rc(t,e){var r,n,i,s,o,a,c,u,l,h,f,d,p,g,m,y,b,w,_,v,k,S,O,E,R=0,x=new So(4),A=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return Ha;(r=t.state).mode===Ka&&(r.mode=13),o=t.next_out,i=t.output,c=t.avail_out,s=t.next_in,n=t.input,a=t.avail_in,u=r.hold,l=r.bits,h=a,f=c,S=0;t:for(;;)switch(r.mode){case 1:if(0===r.wrap){r.mode=13;break}for(;l<16;){if(0===a)break t;a--,u+=n[s++]<<l,l+=8}if(2&r.wrap&&35615===u){r.check=0,x[0]=255&u,x[1]=u>>>8&255,r.check=pa(r.check,x,2,0),u=0,l=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){t.msg="incorrect header check",r.mode=Za;break}if(8!=(15&u)){t.msg="unknown compression method",r.mode=Za;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){t.msg="invalid window size",r.mode=Za;break}r.dmax=1<<k,t.adler=r.check=1,r.mode=512&u?10:Ka,u=0,l=0;break;case 2:for(;l<16;){if(0===a)break t;a--,u+=n[s++]<<l,l+=8}if(r.flags=u,8!=(255&r.flags)){t.msg="unknown compression method",r.mode=Za;break}if(57344&r.flags){t.msg="unknown header flags set",r.mode=Za;break}r.head&&(r.head.text=u>>8&1),512&r.flags&&(x[0]=255&u,x[1]=u>>>8&255,r.check=pa(r.check,x,2,0)),u=0,l=0,r.mode=3;case 3:for(;l<32;){if(0===a)break t;a--,u+=n[s++]<<l,l+=8}r.head&&(r.head.time=u),512&r.flags&&(x[0]=255&u,x[1]=u>>>8&255,x[2]=u>>>16&255,x[3]=u>>>24&255,r.check=pa(r.check,x,4,0)),u=0,l=0,r.mode=4;case 4:for(;l<16;){if(0===a)break t;a--,u+=n[s++]<<l,l+=8}r.head&&(r.head.xflags=255&u,r.head.os=u>>8),512&r.flags&&(x[0]=255&u,x[1]=u>>>8&255,r.check=pa(r.check,x,2,0)),u=0,l=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===a)break t;a--,u+=n[s++]<<l,l+=8}r.length=u,r.head&&(r.head.extra_len=u),512&r.flags&&(x[0]=255&u,x[1]=u>>>8&255,r.check=pa(r.check,x,2,0)),u=0,l=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&((d=r.length)>a&&(d=a),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),ko(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=pa(r.check,n,d,s)),a-=d,s+=d,r.length-=d),r.length))break t;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===a)break t;d=0;do{k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k))}while(k&&d<a);if(512&r.flags&&(r.check=pa(r.check,n,d,s)),a-=d,s+=d,k)break t}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===a)break t;d=0;do{k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.comment+=String.fromCharCode(k))}while(k&&d<a);if(512&r.flags&&(r.check=pa(r.check,n,d,s)),a-=d,s+=d,k)break t}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;l<16;){if(0===a)break t;a--,u+=n[s++]<<l,l+=8}if(u!==(65535&r.check)){t.msg="header crc mismatch",r.mode=Za;break}u=0,l=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),t.adler=r.check=0,r.mode=Ka;break;case 10:for(;l<32;){if(0===a)break t;a--,u+=n[s++]<<l,l+=8}t.adler=r.check=Wa(u),u=0,l=0,r.mode=11;case 11:if(0===r.havedict)return t.next_out=o,t.avail_out=c,t.next_in=s,t.avail_in=a,r.hold=u,r.bits=l,2;t.adler=r.check=1,r.mode=Ka;case Ka:if(5===e||6===e)break t;case 13:if(r.last){u>>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===a)break t;a--,u+=n[s++]<<l,l+=8}switch(r.last=1&u,l-=1,3&(u>>>=1)){case 0:r.mode=14;break;case 1:if(ec(r),r.mode=20,6===e){u>>>=2,l-=2;break t}break;case 2:r.mode=17;break;case 3:t.msg="invalid block type",r.mode=Za}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===a)break t;a--,u+=n[s++]<<l,l+=8}if((65535&u)!=(u>>>16^65535)){t.msg="invalid stored block lengths",r.mode=Za;break}if(r.length=65535&u,u=0,l=0,r.mode=15,6===e)break t;case 15:r.mode=16;case 16:if(d=r.length){if(d>a&&(d=a),d>c&&(d=c),0===d)break t;ko(i,n,s,d,o),a-=d,s+=d,c-=d,o+=d,r.length-=d;break}r.mode=Ka;break;case 17:for(;l<14;){if(0===a)break t;a--,u+=n[s++]<<l,l+=8}if(r.nlen=257+(31&u),u>>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,r.nlen>286||r.ndist>30){t.msg="too many length or distance symbols",r.mode=Za;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;l<3;){if(0===a)break t;a--,u+=n[s++]<<l,l+=8}r.lens[A[r.have++]]=7&u,u>>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,O={bits:r.lenbits},S=Va(0,r.lens,0,19,r.lencode,0,r.work,O),r.lenbits=O.bits,S){t.msg="invalid code lengths set",r.mode=Za;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;y=(R=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&R,!((m=R>>>24)<=l);){if(0===a)break t;a--,u+=n[s++]<<l,l+=8}if(b<16)u>>>=m,l-=m,r.lens[r.have++]=b;else{if(16===b){for(E=m+2;l<E;){if(0===a)break t;a--,u+=n[s++]<<l,l+=8}if(u>>>=m,l-=m,0===r.have){t.msg="invalid bit length repeat",r.mode=Za;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(E=m+3;l<E;){if(0===a)break t;a--,u+=n[s++]<<l,l+=8}l-=m,k=0,d=3+(7&(u>>>=m)),u>>>=3,l-=3}else{for(E=m+7;l<E;){if(0===a)break t;a--,u+=n[s++]<<l,l+=8}l-=m,k=0,d=11+(127&(u>>>=m)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){t.msg="invalid bit length repeat",r.mode=Za;break}for(;d--;)r.lens[r.have++]=k}}if(r.mode===Za)break;if(0===r.lens[256]){t.msg="invalid code -- missing end-of-block",r.mode=Za;break}if(r.lenbits=9,O={bits:r.lenbits},S=Va(1,r.lens,0,r.nlen,r.lencode,0,r.work,O),r.lenbits=O.bits,S){t.msg="invalid literal/lengths set",r.mode=Za;break}if(r.distbits=6,r.distcode=r.distdyn,O={bits:r.distbits},S=Va(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,O),r.distbits=O.bits,S){t.msg="invalid distances set",r.mode=Za;break}if(r.mode=20,6===e)break t;case 20:r.mode=21;case 21:if(a>=6&&c>=258){t.next_out=o,t.avail_out=c,t.next_in=s,t.avail_in=a,r.hold=u,r.bits=l,$a(t,f),o=t.next_out,i=t.output,c=t.avail_out,s=t.next_in,n=t.input,a=t.avail_in,u=r.hold,l=r.bits,r.mode===Ka&&(r.back=-1);break}for(r.back=0;y=(R=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&R,!((m=R>>>24)<=l);){if(0===a)break t;a--,u+=n[s++]<<l,l+=8}if(y&&!(240&y)){for(w=m,_=y,v=b;y=(R=r.lencode[v+((u&(1<<w+_)-1)>>w)])>>>16&255,b=65535&R,!(w+(m=R>>>24)<=l);){if(0===a)break t;a--,u+=n[s++]<<l,l+=8}u>>>=w,l-=w,r.back+=w}if(u>>>=m,l-=m,r.back+=m,r.length=b,0===y){r.mode=26;break}if(32&y){r.back=-1,r.mode=Ka;break}if(64&y){t.msg="invalid literal/length code",r.mode=Za;break}r.extra=15&y,r.mode=22;case 22:if(r.extra){for(E=r.extra;l<E;){if(0===a)break t;a--,u+=n[s++]<<l,l+=8}r.length+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;y=(R=r.distcode[u&(1<<r.distbits)-1])>>>16&255,b=65535&R,!((m=R>>>24)<=l);){if(0===a)break t;a--,u+=n[s++]<<l,l+=8}if(!(240&y)){for(w=m,_=y,v=b;y=(R=r.distcode[v+((u&(1<<w+_)-1)>>w)])>>>16&255,b=65535&R,!(w+(m=R>>>24)<=l);){if(0===a)break t;a--,u+=n[s++]<<l,l+=8}u>>>=w,l-=w,r.back+=w}if(u>>>=m,l-=m,r.back+=m,64&y){t.msg="invalid distance code",r.mode=Za;break}r.offset=b,r.extra=15&y,r.mode=24;case 24:if(r.extra){for(E=r.extra;l<E;){if(0===a)break t;a--,u+=n[s++]<<l,l+=8}r.offset+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){t.msg="invalid distance too far back",r.mode=Za;break}r.mode=25;case 25:if(0===c)break t;if(d=f-c,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){t.msg="invalid distance too far back",r.mode=Za;break}d>r.wnext?(d-=r.wnext,p=r.wsize-d):p=r.wnext-d,d>r.length&&(d=r.length),g=r.window}else g=i,p=o-r.offset,d=r.length;d>c&&(d=c),c-=d,r.length-=d;do{i[o++]=g[p++]}while(--d);0===r.length&&(r.mode=21);break;case 26:if(0===c)break t;i[o++]=r.length,c--,r.mode=21;break;case 27:if(r.wrap){for(;l<32;){if(0===a)break t;a--,u|=n[s++]<<l,l+=8}if(f-=c,t.total_out+=f,r.total+=f,f&&(t.adler=r.check=r.flags?pa(r.check,i,f,o-f):fa(r.check,i,f,o-f)),f=c,(r.flags?u:Wa(u))!==r.check){t.msg="incorrect data check",r.mode=Za;break}u=0,l=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;l<32;){if(0===a)break t;a--,u+=n[s++]<<l,l+=8}if(u!==(4294967295&r.total)){t.msg="incorrect length check",r.mode=Za;break}u=0,l=0}r.mode=29;case 29:S=1;break t;case Za:S=-3;break t;case 31:return-4;default:return Ha}return t.next_out=o,t.avail_out=c,t.next_in=s,t.avail_in=a,r.hold=u,r.bits=l,(r.wsize||f!==t.avail_out&&r.mode<Za&&(r.mode<27||4!==e))&&function(t,e,r,n){var i,s=t.state;null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new So(s.wsize)),n>=s.wsize?(ko(s.window,e,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):((i=s.wsize-s.wnext)>n&&(i=n),ko(s.window,e,r-n,i,s.wnext),(n-=i)?(ko(s.window,e,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i)))}(t,t.output,t.next_out,f-t.avail_out),h-=t.avail_in,f-=t.avail_out,t.total_in+=h,t.total_out+=f,r.total+=f,r.wrap&&f&&(t.adler=r.check=r.flags?pa(r.check,i,f,t.next_out-f):fa(r.check,i,f,t.next_out-f)),t.data_type=r.bits+(r.last?64:0)+(r.mode===Ka?128:0)+(20===r.mode||15===r.mode?256:0),(0===h&&0===f||4===e)&&0===S&&(S=-5),S}var nc;function ic(t){if(t<1||t>7)throw new TypeError("Bad argument");this.mode=t,this.init_done=!1,this.write_in_progress=!1,this.pending_close=!1,this.windowBits=0,this.level=0,this.memLevel=0,this.strategy=0,this.dictionary=null}function sc(t,e){for(var r=0;r<t.length;r++)this[e+r]=t[r]}ic.prototype.init=function(t,e,r,n,i){var s;switch(this.windowBits=t,this.level=e,this.memLevel=r,this.strategy=n,3!==this.mode&&4!==this.mode||(this.windowBits+=16),7===this.mode&&(this.windowBits+=32),5!==this.mode&&6!==this.mode||(this.windowBits=-this.windowBits),this.strm=new vo,this.mode){case 1:case 3:case 5:s=function(t,e,r,n,i,s){if(!t)return ma;var o=1;if(-1===e&&(e=6),n<0?(o=0,n=-n):n>15&&(o=2,n-=16),i<1||i>9||8!==r||n<8||n>15||e<0||e>9||s<0||s>4)return ka(t,ma);8===n&&(n=9);var a=new Ca;return t.state=a,a.strm=t,a.wrap=o,a.gzhead=null,a.w_bits=n,a.w_size=1<<a.w_bits,a.w_mask=a.w_size-1,a.hash_bits=i+7,a.hash_size=1<<a.hash_bits,a.hash_mask=a.hash_size-1,a.hash_shift=~~((a.hash_bits+3-1)/3),a.window=new So(2*a.w_size),a.head=new Oo(a.hash_size),a.prev=new Oo(a.w_size),a.lit_bufsize=1<<i+6,a.pending_buf_size=4*a.lit_bufsize,a.pending_buf=new So(a.pending_buf_size),a.d_buf=1*a.lit_bufsize,a.l_buf=3*a.lit_bufsize,a.level=e,a.strategy=s,a.method=r,Ma(t)}(this.strm,this.level,8,this.windowBits,this.memLevel,this.strategy);break;case 2:case 4:case 6:case 7:s=Ya(this.strm,this.windowBits);break;default:throw new Error("Unknown mode "+this.mode)}0===s?(this.write_in_progress=!1,this.init_done=!0):this._error(s)},ic.prototype.params=function(){throw new Error("deflateParams Not supported")},ic.prototype._writeCheck=function(){if(!this.init_done)throw new Error("write before init");if(0===this.mode)throw new Error("already finalized");if(this.write_in_progress)throw new Error("write already in progress");if(this.pending_close)throw new Error("close is pending")},ic.prototype.write=function(t,e,r,n,i,s,o){this._writeCheck(),this.write_in_progress=!0;var a=this;return Ri.nextTick(function(){a.write_in_progress=!1;var c=a._write(t,e,r,n,i,s,o);a.callback(c[0],c[1]),a.pending_close&&a.close()}),this},ic.prototype.writeSync=function(t,e,r,n,i,s,o){return this._writeCheck(),this._write(t,e,r,n,i,s,o)},ic.prototype._write=function(t,e,r,n,i,s,o){if(this.write_in_progress=!0,0!==t&&1!==t&&2!==t&&3!==t&&4!==t&&5!==t)throw new Error("Invalid flush value");null==e&&(e=new yn(0),n=0,r=0),i._set?i.set=i._set:i.set=sc;var a,c=this.strm;switch(c.avail_in=n,c.input=e,c.next_in=r,c.avail_out=o,c.output=i,c.next_out=s,this.mode){case 1:case 3:case 5:a=La(c,t);break;case 7:case 2:case 4:case 6:a=rc(c,t);break;default:throw new Error("Unknown mode "+this.mode)}return this._checkError(a,c,t)||this._error(a),this.write_in_progress=!1,[c.avail_in,c.avail_out]},ic.prototype._checkError=function(t,e,r){switch(t){case 0:case-5:if(0!==e.avail_out&&4===r)return!1;break;case 1:break;default:return!1}return!0},ic.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,1===this.mode||3===this.mode||5===this.mode?function(t){var e;t&&t.state&&(42!==(e=t.state.status)&&69!==e&&73!==e&&91!==e&&e!==wa&&e!==_a&&e!==va?ka(t,ma):(t.state=null,e===_a&&ka(t,-3)))}(this.strm):function(t){if(!t||!t.state)return Ha;var e=t.state;e.window&&(e.window=null),t.state=null}(this.strm),this.mode=0)},ic.prototype.reset=function(){switch(this.mode){case 1:case 5:nc=Ma(this.strm);break;case 2:case 6:nc=Ga(this.strm)}0!==nc&&this._error(nc)},ic.prototype._error=function(t){this.onerror(_o[t]+": "+this.strm.msg,t),this.write_in_progress=!1,this.pending_close&&this.close()};var oc=Object.freeze({__proto__:null,DEFLATE:1,DEFLATERAW:5,GUNZIP:4,GZIP:3,INFLATE:2,INFLATERAW:6,NONE:0,UNZIP:7,Z_BEST_COMPRESSION:9,Z_BEST_SPEED:1,Z_BINARY:0,Z_BLOCK:5,Z_BUF_ERROR:-5,Z_DATA_ERROR:-3,Z_DEFAULT_COMPRESSION:-1,Z_DEFAULT_STRATEGY:0,Z_DEFLATED:8,Z_ERRNO:-1,Z_FILTERED:1,Z_FINISH:4,Z_FIXED:4,Z_FULL_FLUSH:3,Z_HUFFMAN_ONLY:2,Z_NEED_DICT:2,Z_NO_COMPRESSION:0,Z_NO_FLUSH:0,Z_OK:0,Z_PARTIAL_FLUSH:1,Z_RLE:3,Z_STREAM_END:1,Z_STREAM_ERROR:-2,Z_SYNC_FLUSH:2,Z_TEXT:1,Z_TREES:6,Z_UNKNOWN:2,Zlib:ic});var ac={};Object.keys(oc).forEach(function(t){ac[t]=oc[t]}),ac.Z_MIN_WINDOWBITS=8,ac.Z_MAX_WINDOWBITS=15,ac.Z_DEFAULT_WINDOWBITS=15,ac.Z_MIN_CHUNK=64,ac.Z_MAX_CHUNK=1/0,ac.Z_DEFAULT_CHUNK=16384,ac.Z_MIN_MEMLEVEL=1,ac.Z_MAX_MEMLEVEL=9,ac.Z_DEFAULT_MEMLEVEL=8,ac.Z_MIN_LEVEL=-1,ac.Z_MAX_LEVEL=9,ac.Z_DEFAULT_LEVEL=ac.Z_DEFAULT_COMPRESSION;var cc={Z_OK:ac.Z_OK,Z_STREAM_END:ac.Z_STREAM_END,Z_NEED_DICT:ac.Z_NEED_DICT,Z_ERRNO:ac.Z_ERRNO,Z_STREAM_ERROR:ac.Z_STREAM_ERROR,Z_DATA_ERROR:ac.Z_DATA_ERROR,Z_MEM_ERROR:ac.Z_MEM_ERROR,Z_BUF_ERROR:ac.Z_BUF_ERROR,Z_VERSION_ERROR:ac.Z_VERSION_ERROR};function uc(t,e,r){return"function"==typeof e&&(r=e,e={}),hc(new gc(e),t,r)}function lc(t,e,r){return"function"==typeof e&&(r=e,e={}),hc(new mc(e),t,r)}function hc(t,e,r){var n=[],i=0;function s(){for(var e;null!==(e=t.read());)n.push(e),i+=e.length;t.once("readable",s)}function o(){var e=yn.concat(n,i);n=[],r(null,e),t.close()}t.on("error",function(e){t.removeListener("end",o),t.removeListener("readable",s),r(e)}),t.on("end",o),t.end(e),s()}function fc(t,e){if("string"==typeof e&&(e=new yn(e)),!yn.isBuffer(e))throw new TypeError("Not a string or buffer");var r=ac.Z_FINISH;return t._processChunk(e,r)}function dc(t){if(!(this instanceof dc))return new dc(t);_c.call(this,t,ac.DEFLATE)}function pc(t){if(!(this instanceof pc))return new pc(t);_c.call(this,t,ac.INFLATE)}function gc(t){if(!(this instanceof gc))return new gc(t);_c.call(this,t,ac.GZIP)}function mc(t){if(!(this instanceof mc))return new mc(t);_c.call(this,t,ac.GUNZIP)}function yc(t){if(!(this instanceof yc))return new yc(t);_c.call(this,t,ac.DEFLATERAW)}function bc(t){if(!(this instanceof bc))return new bc(t);_c.call(this,t,ac.INFLATERAW)}function wc(t){if(!(this instanceof wc))return new wc(t);_c.call(this,t,ac.UNZIP)}function _c(t,e){if(this._opts=t=t||{},this._chunkSize=t.chunkSize||ac.Z_DEFAULT_CHUNK,$s.call(this,t),t.flush&&t.flush!==ac.Z_NO_FLUSH&&t.flush!==ac.Z_PARTIAL_FLUSH&&t.flush!==ac.Z_SYNC_FLUSH&&t.flush!==ac.Z_FULL_FLUSH&&t.flush!==ac.Z_FINISH&&t.flush!==ac.Z_BLOCK)throw new Error("Invalid flush flag: "+t.flush);if(this._flushFlag=t.flush||ac.Z_NO_FLUSH,t.chunkSize&&(t.chunkSize<ac.Z_MIN_CHUNK||t.chunkSize>ac.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+t.chunkSize);if(t.windowBits&&(t.windowBits<ac.Z_MIN_WINDOWBITS||t.windowBits>ac.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+t.windowBits);if(t.level&&(t.level<ac.Z_MIN_LEVEL||t.level>ac.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+t.level);if(t.memLevel&&(t.memLevel<ac.Z_MIN_MEMLEVEL||t.memLevel>ac.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+t.memLevel);if(t.strategy&&t.strategy!=ac.Z_FILTERED&&t.strategy!=ac.Z_HUFFMAN_ONLY&&t.strategy!=ac.Z_RLE&&t.strategy!=ac.Z_FIXED&&t.strategy!=ac.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+t.strategy);if(t.dictionary&&!yn.isBuffer(t.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._binding=new ac.Zlib(e);var r=this;this._hadError=!1,this._binding.onerror=function(t,e){r._binding=null,r._hadError=!0;var n=new Error(t);n.errno=e,n.code=cc[e],r.emit("error",n)};var n=ac.Z_DEFAULT_COMPRESSION;"number"==typeof t.level&&(n=t.level);var i=ac.Z_DEFAULT_STRATEGY;"number"==typeof t.strategy&&(i=t.strategy),this._binding.init(t.windowBits||ac.Z_DEFAULT_WINDOWBITS,n,t.memLevel||ac.Z_DEFAULT_MEMLEVEL,i,t.dictionary),this._buffer=new yn(this._chunkSize),this._offset=0,this._closed=!1,this._level=n,this._strategy=i,this.once("end",this.close)}Object.keys(cc).forEach(function(t){cc[cc[t]]=t}),Ei(_c,$s),_c.prototype.params=function(t,e,r){if(t<ac.Z_MIN_LEVEL||t>ac.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+t);if(e!=ac.Z_FILTERED&&e!=ac.Z_HUFFMAN_ONLY&&e!=ac.Z_RLE&&e!=ac.Z_FIXED&&e!=ac.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+e);if(this._level!==t||this._strategy!==e){var n=this;this.flush(ac.Z_SYNC_FLUSH,function(){n._binding.params(t,e),n._hadError||(n._level=t,n._strategy=e,r&&r())})}else Ri.nextTick(r)},_c.prototype.reset=function(){return this._binding.reset()},_c.prototype._flush=function(t){this._transform(new yn(0),"",t)},_c.prototype.flush=function(t,e){var r=this._writableState;if(("function"==typeof t||void 0===t&&!e)&&(e=t,t=ac.Z_FULL_FLUSH),r.ended)e&&Ri.nextTick(e);else if(r.ending)e&&this.once("end",e);else if(r.needDrain){var n=this;this.once("drain",function(){n.flush(e)})}else this._flushFlag=t,this.write(new yn(0),"",e)},_c.prototype.close=function(t){if(t&&Ri.nextTick(t),!this._closed){this._closed=!0,this._binding.close();var e=this;Ri.nextTick(function(){e.emit("close")})}},_c.prototype._transform=function(t,e,r){var n,i=this._writableState,s=(i.ending||i.ended)&&(!t||i.length===t.length);if(null===!t&&!yn.isBuffer(t))return r(new Error("invalid input"));s?n=ac.Z_FINISH:(n=this._flushFlag,t.length>=i.length&&(this._flushFlag=this._opts.flush||ac.Z_NO_FLUSH)),this._processChunk(t,n,r)},_c.prototype._processChunk=function(t,e,r){var n=t&&t.length,i=this._chunkSize-this._offset,s=0,o=this,a="function"==typeof r;if(!a){var c,u=[],l=0;this.on("error",function(t){c=t});do{var h=this._binding.writeSync(e,t,s,n,this._buffer,this._offset,i)}while(!this._hadError&&p(h[0],h[1]));if(this._hadError)throw c;var f=yn.concat(u,l);return this.close(),f}var d=this._binding.write(e,t,s,n,this._buffer,this._offset,i);function p(c,h){if(!o._hadError){var f=i-h;if(function(t,e){if(!t)throw new Error(e)}(f>=0,"have should not go down"),f>0){var d=o._buffer.slice(o._offset,o._offset+f);o._offset+=f,a?o.push(d):(u.push(d),l+=d.length)}if((0===h||o._offset>=o._chunkSize)&&(i=o._chunkSize,o._offset=0,o._buffer=new yn(o._chunkSize)),0===h){if(s+=n-c,n=c,!a)return!0;var g=o._binding.write(e,t,s,n,o._buffer,o._offset,o._chunkSize);return g.callback=p,void(g.buffer=t)}if(!a)return!1;r()}}d.buffer=t,d.callback=p},Ei(dc,_c),Ei(pc,_c),Ei(gc,_c),Ei(mc,_c),Ei(yc,_c),Ei(bc,_c),Ei(wc,_c);var vc={codes:cc,createDeflate:function(t){return new dc(t)},createInflate:function(t){return new pc(t)},createDeflateRaw:function(t){return new yc(t)},createInflateRaw:function(t){return new bc(t)},createGzip:function(t){return new gc(t)},createGunzip:function(t){return new mc(t)},createUnzip:function(t){return new wc(t)},deflate:function(t,e,r){return"function"==typeof e&&(r=e,e={}),hc(new dc(e),t,r)},deflateSync:function(t,e){return fc(new dc(e),t)},gzip:uc,gzipSync:function(t,e){return fc(new gc(e),t)},deflateRaw:function(t,e,r){return"function"==typeof e&&(r=e,e={}),hc(new yc(e),t,r)},deflateRawSync:function(t,e){return fc(new yc(e),t)},unzip:function(t,e,r){return"function"==typeof e&&(r=e,e={}),hc(new wc(e),t,r)},unzipSync:function(t,e){return fc(new wc(e),t)},inflate:function(t,e,r){return"function"==typeof e&&(r=e,e={}),hc(new pc(e),t,r)},inflateSync:function(t,e){return fc(new pc(e),t)},gunzip:lc,gunzipSync:function(t,e){return fc(new mc(e),t)},inflateRaw:function(t,e,r){return"function"==typeof e&&(r=e,e={}),hc(new bc(e),t,r)},inflateRawSync:function(t,e){return fc(new bc(e),t)},Deflate:dc,Inflate:pc,Gzip:gc,Gunzip:mc,DeflateRaw:yc,InflateRaw:bc,Unzip:wc,Zlib:_c};class kc extends bo{constructor({client:t,keyPrefix:e="cache",ttl:r=0,prefix:n}){super({client:t,keyPrefix:e,ttl:r,prefix:n}),this.client=t,this.keyPrefix=e,this.config.ttl=r,this.config.client=t,this.config.prefix=void 0!==n?n:e+(e.endsWith("/")?"":"/")}async _set(t,e){let r=JSON.stringify(e);const n=r.length;return r=vc.gzipSync(r).toString("base64"),this.client.putObject({key:N(this.keyPrefix,t),body:r,contentEncoding:"gzip",contentType:"application/gzip",metadata:{compressor:"zlib",compressed:"true","client-id":this.client.id,"length-serialized":String(n),"length-compressed":String(r.length),"compression-gain":(r.length/n).toFixed(2)}})}async _get(t){try{const{Body:e}=await this.client.getObject(N(this.keyPrefix,t));let r=await Ks(e);return r=Buffer.from(r,"base64"),r=vc.unzipSync(r).toString(),JSON.parse(r)}catch(t){if("NoSuchKey"===t.name||"NotFound"===t.name)return null;throw t}}async _del(t){return await this.client.deleteObject(N(this.keyPrefix,t)),!0}async _clear(){const t=await this.client.getAllKeys({prefix:this.keyPrefix});for(const e of t)await this.client.deleteObject(e)}async size(){return(await this.keys()).length}async keys(){const t=await this.client.getAllKeys({prefix:this.keyPrefix}),e=this.keyPrefix.endsWith("/")?this.keyPrefix:this.keyPrefix+"/";return t.map(t=>t.startsWith(e)?t.slice(e.length):t)}}class Sc extends F{constructor(t={}){super(),this.name=this.constructor.name,this.options=t,this.hooks=new Map}async setup(t){this.database=t,this.beforeSetup(),await this.onSetup(),this.afterSetup()}async start(){this.beforeStart(),await this.onStart(),this.afterStart()}async stop(){this.beforeStop(),await this.onStop(),this.afterStop()}async onSetup(){}async onStart(){}async onStop(){}addHook(t,e,r){this.hooks.has(t)||this.hooks.set(t,new Map);const n=this.hooks.get(t);n.has(e)||n.set(e,[]),n.get(e).push(r)}removeHook(t,e,r){const n=this.hooks.get(t);if(n&&n.has(e)){const t=n.get(e),i=t.indexOf(r);i>-1&&t.splice(i,1)}}wrapResourceMethod(t,e,r){const n=t[e];if(t._pluginWrappers||(t._pluginWrappers=new Map),t._pluginWrappers.has(e)||t._pluginWrappers.set(e,[]),t._pluginWrappers.get(e).push(r),!t[`_wrapped_${e}`]){t[`_wrapped_${e}`]=n;const r=n&&n._isMockFunction;t[e]=async function(...r){let n=await t[`_wrapped_${e}`](...r);for(const i of t._pluginWrappers.get(e))n=await i.call(this,n,r,e);return n},r&&(Object.setPrototypeOf(t[e],Object.getPrototypeOf(n)),Object.assign(t[e],n))}}getPartitionValues(t,e){if(!e.config?.partitions)return{};const r={};for(const[n,i]of Object.entries(e.config.partitions))if(i.fields){r[n]={};for(const[s,o]of Object.entries(i.fields)){const i=this.getNestedFieldValue(t,s);null!=i&&(r[n][s]=e.applyPartitionRule(i,o))}}else r[n]={};return r}getNestedFieldValue(t,e){if(!e.includes("."))return t[e]??null;const r=e.split(".");let n=t;for(const t of r){if(!n||"object"!=typeof n||!(t in n))return null;n=n[t]}return n??null}beforeSetup(){this.emit("plugin.beforeSetup",new Date)}afterSetup(){this.emit("plugin.afterSetup",new Date)}beforeStart(){this.emit("plugin.beforeStart",new Date)}afterStart(){this.emit("plugin.afterStart",new Date)}beforeStop(){this.emit("plugin.beforeStop",new Date)}afterStop(){this.emit("plugin.afterStop",new Date)}}const Oc={setup(t){},start(){},stop(){}};class Ec extends Sc{constructor(t={}){super(t),this.auditResource=null,this.config={enabled:!1!==t.enabled,includeData:!1!==t.includeData,includePartitions:!1!==t.includePartitions,maxDataSize:t.maxDataSize||1e4,...t}}async onSetup(){if(this.config.enabled){try{this.auditResource=await this.database.createResource({name:"audits",attributes:{id:"string|required",resourceName:"string|required",operation:"string|required",recordId:"string|required",userId:"string|optional",timestamp:"string|required",oldData:"string|optional",newData:"string|optional",partition:"string|optional",partitionValues:"string|optional",metadata:"string|optional"}})}catch(t){try{this.auditResource=this.database.resources.audits}catch(t){return void(this.auditResource=null)}}this.installDatabaseProxy(),this.installResourceHooks()}else this.auditResource=null}async onStart(){}async onStop(){}installDatabaseProxy(){if(this.database._auditProxyInstalled)return;const t=this.installResourceHooksForResource.bind(this);this.database._originalCreateResource=this.database.createResource,this.database.createResource=async function(...e){const r=await this._originalCreateResource(...e);return"audit_logs"!==r.name&&t(r),r},this.database._auditProxyInstalled=!0}installResourceHooks(){for(const t of Object.values(this.database.resources))"audits"!==t.name&&this.installResourceHooksForResource(t)}installResourceHooksForResource(t){this.wrapResourceMethod(t,"insert",async(e,r,n)=>{const[i]=r,s=i.id||e.id||"auto-generated",o=this.config.includePartitions?this.getPartitionValues(i,t):null,a={id:`audit-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,resourceName:t.name,operation:"insert",recordId:s,userId:this.getCurrentUserId?.()||"system",timestamp:(new Date).toISOString(),oldData:null,newData:!1===this.config.includeData?null:JSON.stringify(this.truncateData(i)),partition:this.config.includePartitions?this.getPrimaryPartition(o):null,partitionValues:this.config.includePartitions&&o&&Object.keys(o).length>0?JSON.stringify(o):null,metadata:JSON.stringify({source:"audit-plugin",version:"2.0"})};return this.logAudit(a).catch(console.error),e}),this.wrapResourceMethod(t,"update",async(e,r,n)=>{const[i,s]=r;let o=null;if(this.config.includeData)try{o=await t.get(i)}catch(t){}const a=this.config.includePartitions?this.getPartitionValues(e,t):null,c={id:`audit-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,resourceName:t.name,operation:"update",recordId:i,userId:this.getCurrentUserId?.()||"system",timestamp:(new Date).toISOString(),oldData:o&&!1===this.config.includeData?null:o?JSON.stringify(this.truncateData(o)):null,newData:!1===this.config.includeData?null:JSON.stringify(this.truncateData(e)),partition:this.config.includePartitions?this.getPrimaryPartition(a):null,partitionValues:this.config.includePartitions&&a&&Object.keys(a).length>0?JSON.stringify(a):null,metadata:JSON.stringify({source:"audit-plugin",version:"2.0"})};return this.logAudit(c).catch(console.error),e}),this.wrapResourceMethod(t,"delete",async(e,r,n)=>{const[i]=r;let s=null;if(this.config.includeData)try{s=await t.get(i)}catch(t){}const o=s&&this.config.includePartitions?this.getPartitionValues(s,t):null,a={id:`audit-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,resourceName:t.name,operation:"delete",recordId:i,userId:this.getCurrentUserId?.()||"system",timestamp:(new Date).toISOString(),oldData:s&&!1===this.config.includeData?null:s?JSON.stringify(this.truncateData(s)):null,newData:null,partition:this.config.includePartitions?this.getPrimaryPartition(o):null,partitionValues:this.config.includePartitions&&o&&Object.keys(o).length>0?JSON.stringify(o):null,metadata:JSON.stringify({source:"audit-plugin",version:"2.0"})};return this.logAudit(a).catch(console.error),e}),this.wrapResourceMethod(t,"deleteMany",async(e,r,n)=>{const[i]=r,s=[];if(this.config.includeData)for(const e of i)try{const r=await t.get(e),n=this.config.includePartitions?this.getPartitionValues(r,t):null;s.push({id:`audit-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,resourceName:t.name,operation:"delete",recordId:e,userId:this.getCurrentUserId?.()||"system",timestamp:(new Date).toISOString(),oldData:!1===this.config.includeData?null:JSON.stringify(this.truncateData(r)),newData:null,partition:this.config.includePartitions?this.getPrimaryPartition(n):null,partitionValues:this.config.includePartitions&&n&&Object.keys(n).length>0?JSON.stringify(n):null,metadata:JSON.stringify({source:"audit-plugin",version:"2.0",batchOperation:!0})})}catch(t){}for(const t of s)this.logAudit(t).catch(console.error);return e})}getPartitionValues(t,e){const r=e.config?.partitions||{},n={};for(const[e,i]of Object.entries(r))if(i.fields){const r={};for(const[e,n]of Object.entries(i.fields)){const n=this.getNestedFieldValue(t,e);null!=n&&(r[e]=n)}Object.keys(r).length>0&&(n[e]=r)}return n}getNestedFieldValue(t,e){if(!e.includes("."))return t[e];const r=e.split(".");let n=t;for(const t of r){if(!n||"object"!=typeof n||!(t in n))return;n=n[t]}return n}getPrimaryPartition(t){if(!t)return null;const e=Object.keys(t);return e.length>0?e[0]:null}async logAudit(t){if(this.auditResource)try{await this.auditResource.insert(t)}catch(t){console.error("Failed to log audit record:",t),t&&t.stack&&console.error(t.stack)}}truncateData(t){if(!t)return t;const e=JSON.stringify(t);return e.length<=this.config.maxDataSize?t:{...t,_truncated:!0,_originalSize:e.length,_truncatedAt:(new Date).toISOString()}}async getAuditLogs(t={}){if(!this.auditResource)return[];try{const{resourceName:e,operation:r,recordId:n,userId:i,partition:s,startDate:o,endDate:a,limit:c=100,offset:u=0}=t;let l=(await this.auditResource.getAll()).filter(t=>(!e||t.resourceName===e)&&((!r||t.operation===r)&&((!n||t.recordId===n)&&((!i||t.userId===i)&&((!s||t.partition===s)&&(!(o&&new Date(t.timestamp)<new Date(o))&&!(a&&new Date(t.timestamp)>new Date(a))))))));l.sort((t,e)=>new Date(e.timestamp)-new Date(t.timestamp));return l.slice(u,u+c).map(t=>({...t,oldData:t.oldData?JSON.parse(t.oldData):null,newData:t.newData?JSON.parse(t.newData):null,partitionValues:t.partitionValues?JSON.parse(t.partitionValues):null,metadata:t.metadata?JSON.parse(t.metadata):null}))}catch(t){return console.error("Failed to get audit logs:",t),t&&t.stack&&console.error(t.stack),[]}}async getRecordHistory(t,e){return this.getAuditLogs({resourceName:t,recordId:e,limit:1e3})}async getPartitionHistory(t,e,r){return this.getAuditLogs({resourceName:t,partition:e,limit:1e3})}async getAuditStats(t={}){const{resourceName:e,startDate:r,endDate:n}=t,i=await this.getAuditLogs({resourceName:e,startDate:r,endDate:n,limit:1e4}),s={total:i.length,byOperation:{},byResource:{},byPartition:{},byUser:{},timeline:{}};for(const t of i){s.byOperation[t.operation]=(s.byOperation[t.operation]||0)+1,s.byResource[t.resourceName]=(s.byResource[t.resourceName]||0)+1,t.partition&&(s.byPartition[t.partition]=(s.byPartition[t.partition]||0)+1),s.byUser[t.userId]=(s.byUser[t.userId]||0)+1;const e=t.timestamp.split("T")[0];s.timeline[e]=(s.timeline[e]||0)+1}return s}}class Rc extends Sc{constructor(t={}){super(t),this.driver=t.driver,this.config={enabled:!1!==t.enabled,includePartitions:!1!==t.includePartitions,...t}}async setup(t){this.config.enabled&&await super.setup(t)}async onSetup(){this.config.driver?this.driver=this.config.driver:"memory"===this.config.driverType?this.driver=new wo(this.config.memoryOptions||{}):this.driver=new kc(this.config.s3Options||{}),this.installDatabaseProxy(),this.installResourceHooks()}async onStart(){}async onStop(){}installDatabaseProxy(){if(this.database._cacheProxyInstalled)return;const t=this.installResourceHooks.bind(this);this.database._originalCreateResourceForCache=this.database.createResource,this.database.createResource=async function(...e){const r=await this._originalCreateResourceForCache(...e);return t(r),r},this.database._cacheProxyInstalled=!0}installResourceHooks(){for(const t of Object.values(this.database.resources))this.installResourceHooksForResource(t)}installResourceHooksForResource(t){this.driver&&(t.cache=this.driver,t.cacheKeyFor=async(e={})=>{const{action:r,params:n={},partition:i,partitionValues:s}=e;return this.generateCacheKey(t,r,n,i,s)},t._originalCount=t.count,t._originalListIds=t.listIds,t._originalGetMany=t.getMany,t._originalGetAll=t.getAll,t._originalPage=t.page,t._originalList=t.list,t.count=async function(e={}){const{partition:r,partitionValues:n}=e,i=await t.cacheKeyFor({action:"count",partition:r,partitionValues:n});try{const e=await t.cache.get(i);if(null!=e)return e}catch(t){if("NoSuchKey"!==t.name)throw t}const s=await t._originalCount(e);return await t.cache.set(i,s),s},t.listIds=async function(e={}){const{partition:r,partitionValues:n}=e,i=await t.cacheKeyFor({action:"listIds",partition:r,partitionValues:n});try{const e=await t.cache.get(i);if(null!=e)return e}catch(t){if("NoSuchKey"!==t.name)throw t}const s=await t._originalListIds(e);return await t.cache.set(i,s),s},t.getMany=async function(e){const r=await t.cacheKeyFor({action:"getMany",params:{ids:e}});try{const e=await t.cache.get(r);if(null!=e)return e}catch(t){if("NoSuchKey"!==t.name)throw t}const n=await t._originalGetMany(e);return await t.cache.set(r,n),n},t.getAll=async function(){const e=await t.cacheKeyFor({action:"getAll"});try{const r=await t.cache.get(e);if(null!=r)return r}catch(t){if("NoSuchKey"!==t.name)throw t}const r=await t._originalGetAll();return await t.cache.set(e,r),r},t.page=async function({offset:e,size:r,partition:n,partitionValues:i}={}){const s=await t.cacheKeyFor({action:"page",params:{offset:e,size:r},partition:n,partitionValues:i});try{const e=await t.cache.get(s);if(null!=e)return e}catch(t){if("NoSuchKey"!==t.name)throw t}const o=await t._originalPage({offset:e,size:r,partition:n,partitionValues:i});return await t.cache.set(s,o),o},t.list=async function(e={}){const{partition:r,partitionValues:n}=e,i=await t.cacheKeyFor({action:"list",partition:r,partitionValues:n});try{const e=await t.cache.get(i);if(null!=e)return e}catch(t){if("NoSuchKey"!==t.name)throw t}const s=await t._originalList(e);return await t.cache.set(i,s),s},this.wrapResourceMethod(t,"insert",async(e,r,n)=>{const[i]=r;return await this.clearCacheForResource(t,i),e}),this.wrapResourceMethod(t,"update",async(e,r,n)=>{const[i,s]=r;return await this.clearCacheForResource(t,{id:i,...s}),e}),this.wrapResourceMethod(t,"delete",async(e,r,n)=>{const[i]=r;let s={id:i};if("function"==typeof t.get)try{const e=await t.get(i);e&&(s=e)}catch{}return await this.clearCacheForResource(t,s),e}),this.wrapResourceMethod(t,"deleteMany",async(e,r,n)=>{const[i]=r;for(const e of i){let r={id:e};if("function"==typeof t.get)try{const n=await t.get(e);n&&(r=n)}catch{}await this.clearCacheForResource(t,r)}return e}))}async clearCacheForResource(t,e){if(!t.cache)return;const r=`resource=${t.name}`;if(await t.cache.clear(r),!0===this.config.includePartitions&&t.config?.partitions&&Object.keys(t.config.partitions).length>0){const n=this.getPartitionValues(e,t);for(const[e,i]of Object.entries(n))if(i&&Object.keys(i).length>0&&Object.values(i).some(t=>null!=t)){const n=N(r,`partition=${e}`);await t.cache.clear(n)}}}async generateCacheKey(t,e,r={},n=null,i=null){const s=[`resource=${t.name}`,`action=${e}`];if(n&&i&&Object.keys(i).length>0){s.push(`partition:${n}`);for(const[t,e]of Object.entries(i))null!=e&&s.push(`${t}:${e}`)}if(Object.keys(r).length>0){const t=await this.hashParams(r);s.push(t)}return N(...s)+".json.gz"}async hashParams(t){const e=Object.keys(t).sort().map(e=>`${e}:${t[e]}`).join("|")||"empty";return await dt(e)}async getCacheStats(){return this.driver?{size:await this.driver.size(),keys:await this.driver.keys(),driver:this.driver.constructor.name}:null}async clearAllCache(){if(this.driver)for(const t of Object.values(this.database.resources))if(t.cache){const e=`resource=${t.name}`;await t.cache.clear(e)}}async warmCache(t,e={}){const r=this.database.resources[t];if(!r)throw new Error(`Resource '${t}' not found`);const{includePartitions:n=!0}=e;if(await r.getAll(),n&&r.config.partitions)for(const[t,e]of Object.entries(r.config.partitions))if(e.fields){const e=await r.getAll(),n=Array.isArray(e)?e:[],i=new Set;for(const e of n.slice(0,10)){const n=this.getPartitionValues(e,r);n[t]&&i.add(JSON.stringify(n[t]))}for(const e of i){const n=JSON.parse(e);await r.list({partition:t,partitionValues:n})}}}}const xc={async setup(t){t&&t.client&&(this.client=t.client,this.map={PutObjectCommand:"put",GetObjectCommand:"get",HeadObjectCommand:"head",DeleteObjectCommand:"delete",DeleteObjectsCommand:"delete",ListObjectsV2Command:"list"},this.costs={total:0,prices:{put:5e-6,copy:5e-6,list:5e-6,post:5e-6,get:4e-4/1e3,select:4e-4/1e3,delete:4e-4/1e3,head:4e-4/1e3},requests:{total:0,put:0,post:0,copy:0,list:0,get:0,select:0,delete:0,head:0},events:{total:0,PutObjectCommand:0,GetObjectCommand:0,HeadObjectCommand:0,DeleteObjectCommand:0,DeleteObjectsCommand:0,ListObjectsV2Command:0}},this.client.costs=JSON.parse(JSON.stringify(this.costs)))},async start(){this.client&&(this.client.on("command.response",t=>this.addRequest(t,this.map[t])),this.client.on("command.error",t=>this.addRequest(t,this.map[t])))},addRequest(t,e){e&&(this.costs.events[t]++,this.costs.events.total++,this.costs.requests.total++,this.costs.requests[e]++,this.costs.total+=this.costs.prices[e],this.client&&this.client.costs&&(this.client.costs.events[t]++,this.client.costs.events.total++,this.client.costs.requests.total++,this.client.costs.requests[e]++,this.client.costs.total+=this.client.costs.prices[e]))}};class Ac extends Sc{constructor(t={}){super(),this.indexResource=null,this.config={enabled:!1!==t.enabled,minWordLength:t.minWordLength||3,maxResults:t.maxResults||100,...t},this.indexes=new Map}async setup(t){if(this.database=t,this.config.enabled){try{this.indexResource=await t.createResource({name:"fulltext_indexes",attributes:{id:"string|required",resourceName:"string|required",fieldName:"string|required",word:"string|required",recordIds:"json|required",count:"number|required",lastUpdated:"string|required"}})}catch(e){this.indexResource=t.resources.fulltext_indexes}await this.loadIndexes(),this.installIndexingHooks()}}async start(){}async stop(){await this.saveIndexes()}async loadIndexes(){if(this.indexResource)try{const t=await this.indexResource.getAll();for(const e of t){const t=`${e.resourceName}:${e.fieldName}:${e.word}`;this.indexes.set(t,{recordIds:e.recordIds||[],count:e.count||0})}}catch(t){console.warn("Failed to load existing indexes:",t.message)}}async saveIndexes(){if(this.indexResource)try{const t=await this.indexResource.getAll();for(const e of t)await this.indexResource.delete(e.id);for(const[t,e]of this.indexes.entries()){const[r,n,i]=t.split(":");await this.indexResource.insert({id:`index-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,resourceName:r,fieldName:n,word:i,recordIds:e.recordIds,count:e.count,lastUpdated:(new Date).toISOString()})}}catch(t){console.error("Failed to save indexes:",t)}}installIndexingHooks(){this.database.plugins||(this.database.plugins={}),this.database.plugins.fulltext=this;for(const t of Object.values(this.database.resources))"fulltext_indexes"!==t.name&&this.installResourceHooks(t);this.database._fulltextProxyInstalled||(this.database._previousCreateResourceForFullText=this.database.createResource,this.database.createResource=async function(...t){const e=await this._previousCreateResourceForFullText(...t);return this.plugins?.fulltext&&"fulltext_indexes"!==e.name&&this.plugins.fulltext.installResourceHooks(e),e},this.database._fulltextProxyInstalled=!0);for(const t of Object.values(this.database.resources))"fulltext_indexes"!==t.name&&this.installResourceHooks(t)}installResourceHooks(t){t._insert=t.insert,t._update=t.update,t._delete=t.delete,t._deleteMany=t.deleteMany,this.wrapResourceMethod(t,"insert",async(e,r,n)=>{const[i]=r;return this.indexRecord(t.name,e.id,i).catch(console.error),e}),this.wrapResourceMethod(t,"update",async(e,r,n)=>{const[i,s]=r;return this.removeRecordFromIndex(t.name,i).catch(console.error),this.indexRecord(t.name,i,e).catch(console.error),e}),this.wrapResourceMethod(t,"delete",async(e,r,n)=>{const[i]=r;return this.removeRecordFromIndex(t.name,i).catch(console.error),e}),this.wrapResourceMethod(t,"deleteMany",async(e,r,n)=>{const[i]=r;for(const e of i)this.removeRecordFromIndex(t.name,e).catch(console.error);return e})}async indexRecord(t,e,r){const n=this.getIndexedFields(t);if(n&&0!==n.length)for(const i of n){const n=this.getFieldValue(r,i);if(!n)continue;const s=this.tokenize(n);for(const r of s){if(r.length<this.config.minWordLength)continue;const n=`${t}:${i}:${r.toLowerCase()}`,s=this.indexes.get(n)||{recordIds:[],count:0};s.recordIds.includes(e)||(s.recordIds.push(e),s.count=s.recordIds.length),this.indexes.set(n,s)}}}async removeRecordFromIndex(t,e){for(const[r,n]of this.indexes.entries())if(r.startsWith(`${t}:`)){const t=n.recordIds.indexOf(e);t>-1&&(n.recordIds.splice(t,1),n.count=n.recordIds.length,0===n.recordIds.length?this.indexes.delete(r):this.indexes.set(r,n))}}getFieldValue(t,e){if(!e.includes("."))return t[e];const r=e.split(".");let n=t;for(const t of r){if(!n||"object"!=typeof n||!(t in n))return null;n=n[t]}return n}tokenize(t){if(!t)return[];return String(t).toLowerCase().replace(/[^\w\s\u00C0-\u017F]/g," ").split(/\s+/).filter(t=>t.length>0)}getIndexedFields(t){if(this.config.fields)return this.config.fields;return{users:["name","email"],products:["name","description"],articles:["title","content"]}[t]||[]}async search(t,e,r={}){const{fields:n=null,limit:i=this.config.maxResults,offset:s=0,exactMatch:o=!1}=r;if(!e||0===e.trim().length)return[];const a=this.tokenize(e),c=new Map,u=n||this.getIndexedFields(t);if(0===u.length)return[];for(const e of a)if(!(e.length<this.config.minWordLength))for(const r of u)if(o){const n=`${t}:${r}:${e.toLowerCase()}`,i=this.indexes.get(n);if(i)for(const t of i.recordIds){const e=c.get(t)||0;c.set(t,e+1)}}else for(const[n,i]of this.indexes.entries())if(n.startsWith(`${t}:${r}:${e.toLowerCase()}`))for(const t of i.recordIds){const e=c.get(t)||0;c.set(t,e+1)}return Array.from(c.entries()).map(([t,e])=>({recordId:t,score:e})).sort((t,e)=>e.score-t.score).slice(s,s+i)}async searchRecords(t,e,r={}){const n=await this.search(t,e,r);if(0===n.length)return[];const i=this.database.resources[t];if(!i)throw new Error(`Resource '${t}' not found`);const s=n.map(t=>t.recordId);return(await i.getMany(s)).map(t=>{const e=n.find(e=>e.recordId===t.id);return{...t,_searchScore:e?e.score:0}}).sort((t,e)=>e._searchScore-t._searchScore)}async rebuildIndex(t){const e=this.database.resources[t];if(!e)throw new Error(`Resource '${t}' not found`);for(const[e]of this.indexes.entries())e.startsWith(`${t}:`)&&this.indexes.delete(e);const r=await e.getAll();for(let e=0;e<r.length;e+=100){const n=r.slice(e,e+100);for(const e of n)await this.indexRecord(t,e.id,e)}await this.saveIndexes()}async getIndexStats(){const t={totalIndexes:this.indexes.size,resources:{},totalWords:0};for(const[e,r]of this.indexes.entries()){const[n,i]=e.split(":");t.resources[n]||(t.resources[n]={fields:{},totalRecords:new Set,totalWords:0}),t.resources[n].fields[i]||(t.resources[n].fields[i]={words:0,totalOccurrences:0}),t.resources[n].fields[i].words++,t.resources[n].fields[i].totalOccurrences+=r.count,t.resources[n].totalWords++;for(const e of r.recordIds)t.resources[n].totalRecords.add(e);t.totalWords++}for(const e in t.resources)t.resources[e].totalRecords=t.resources[e].totalRecords.size;return t}async rebuildAllIndexes({timeout:t}={}){return t?Promise.race([this._rebuildAllIndexesInternal(),new Promise((e,r)=>setTimeout(()=>r(new Error("Timeout")),t))]):this._rebuildAllIndexesInternal()}async _rebuildAllIndexesInternal(){const t=Object.keys(this.database.resources).filter(t=>"fulltext_indexes"!==t);for(const e of t)try{await this.rebuildIndex(e)}catch(t){console.warn(`Failed to rebuild index for resource ${e}:`,t.message)}}async clearIndex(t){for(const[e]of this.indexes.entries())e.startsWith(`${t}:`)&&this.indexes.delete(e);await this.saveIndexes()}async clearAllIndexes(){this.indexes.clear(),await this.saveIndexes()}}class Ic extends Sc{constructor(t={}){super(),this.config={enabled:!1!==t.enabled,collectPerformance:!1!==t.collectPerformance,collectErrors:!1!==t.collectErrors,collectUsage:!1!==t.collectUsage,retentionDays:t.retentionDays||30,flushInterval:t.flushInterval||6e4,...t},this.metrics={operations:{insert:{count:0,totalTime:0,errors:0},update:{count:0,totalTime:0,errors:0},delete:{count:0,totalTime:0,errors:0},get:{count:0,totalTime:0,errors:0},list:{count:0,totalTime:0,errors:0},count:{count:0,totalTime:0,errors:0}},resources:{},errors:[],performance:[],startTime:(new Date).toISOString()},this.flushTimer=null}async setup(t){if(this.database=t,this.config.enabled&&"test"!==process.env.NODE_ENV){try{this.metricsResource=await t.createResource({name:"metrics",attributes:{id:"string|required",type:"string|required",resourceName:"string",operation:"string",count:"number|required",totalTime:"number|required",errors:"number|required",avgTime:"number|required",timestamp:"string|required",metadata:"json"}}),this.errorsResource=await t.createResource({name:"error_logs",attributes:{id:"string|required",resourceName:"string|required",operation:"string|required",error:"string|required",timestamp:"string|required",metadata:"json"}}),this.performanceResource=await t.createResource({name:"performance_logs",attributes:{id:"string|required",resourceName:"string|required",operation:"string|required",duration:"number|required",timestamp:"string|required",metadata:"json"}})}catch(e){this.metricsResource=t.resources.metrics,this.errorsResource=t.resources.error_logs,this.performanceResource=t.resources.performance_logs}this.installMetricsHooks(),"test"!==process.env.NODE_ENV&&this.startFlushTimer()}}async start(){}async stop(){this.flushTimer&&(clearInterval(this.flushTimer),this.flushTimer=null),"test"!==process.env.NODE_ENV&&await this.flushMetrics()}installMetricsHooks(){for(const t of Object.values(this.database.resources))["metrics","error_logs","performance_logs"].includes(t.name)||this.installResourceHooks(t);this.database._createResource=this.database.createResource,this.database.createResource=async function(...t){const e=await this._createResource(...t);return this.plugins?.metrics&&!["metrics","error_logs","performance_logs"].includes(e.name)&&this.plugins.metrics.installResourceHooks(e),e}}installResourceHooks(t){t._insert=t.insert,t._update=t.update,t._delete=t.delete,t._deleteMany=t.deleteMany,t._get=t.get,t._getMany=t.getMany,t._getAll=t.getAll,t._list=t.list,t._listIds=t.listIds,t._count=t.count,t._page=t.page,t.insert=async function(...e){const r=Date.now();try{const n=await t._insert(...e);return this.recordOperation(t.name,"insert",Date.now()-r,!1),n}catch(e){throw this.recordOperation(t.name,"insert",Date.now()-r,!0),this.recordError(t.name,"insert",e),e}}.bind(this),t.update=async function(...e){const r=Date.now();try{const n=await t._update(...e);return this.recordOperation(t.name,"update",Date.now()-r,!1),n}catch(e){throw this.recordOperation(t.name,"update",Date.now()-r,!0),this.recordError(t.name,"update",e),e}}.bind(this),t.delete=async function(...e){const r=Date.now();try{const n=await t._delete(...e);return this.recordOperation(t.name,"delete",Date.now()-r,!1),n}catch(e){throw this.recordOperation(t.name,"delete",Date.now()-r,!0),this.recordError(t.name,"delete",e),e}}.bind(this),t.deleteMany=async function(...e){const r=Date.now();try{const n=await t._deleteMany(...e);return this.recordOperation(t.name,"delete",Date.now()-r,!1),n}catch(e){throw this.recordOperation(t.name,"delete",Date.now()-r,!0),this.recordError(t.name,"delete",e),e}}.bind(this),t.get=async function(...e){const r=Date.now();try{const n=await t._get(...e);return this.recordOperation(t.name,"get",Date.now()-r,!1),n}catch(e){throw this.recordOperation(t.name,"get",Date.now()-r,!0),this.recordError(t.name,"get",e),e}}.bind(this),t.getMany=async function(...e){const r=Date.now();try{const n=await t._getMany(...e);return this.recordOperation(t.name,"get",Date.now()-r,!1),n}catch(e){throw this.recordOperation(t.name,"get",Date.now()-r,!0),this.recordError(t.name,"get",e),e}}.bind(this),t.getAll=async function(...e){const r=Date.now();try{const n=await t._getAll(...e);return this.recordOperation(t.name,"list",Date.now()-r,!1),n}catch(e){throw this.recordOperation(t.name,"list",Date.now()-r,!0),this.recordError(t.name,"list",e),e}}.bind(this),t.list=async function(...e){const r=Date.now();try{const n=await t._list(...e);return this.recordOperation(t.name,"list",Date.now()-r,!1),n}catch(e){throw this.recordOperation(t.name,"list",Date.now()-r,!0),this.recordError(t.name,"list",e),e}}.bind(this),t.listIds=async function(...e){const r=Date.now();try{const n=await t._listIds(...e);return this.recordOperation(t.name,"list",Date.now()-r,!1),n}catch(e){throw this.recordOperation(t.name,"list",Date.now()-r,!0),this.recordError(t.name,"list",e),e}}.bind(this),t.count=async function(...e){const r=Date.now();try{const n=await t._count(...e);return this.recordOperation(t.name,"count",Date.now()-r,!1),n}catch(e){throw this.recordOperation(t.name,"count",Date.now()-r,!0),this.recordError(t.name,"count",e),e}}.bind(this),t.page=async function(...e){const r=Date.now();try{const n=await t._page(...e);return this.recordOperation(t.name,"list",Date.now()-r,!1),n}catch(e){throw this.recordOperation(t.name,"list",Date.now()-r,!0),this.recordError(t.name,"list",e),e}}.bind(this)}recordOperation(t,e,r,n){this.metrics.operations[e]&&(this.metrics.operations[e].count++,this.metrics.operations[e].totalTime+=r,n&&this.metrics.operations[e].errors++),this.metrics.resources[t]||(this.metrics.resources[t]={insert:{count:0,totalTime:0,errors:0},update:{count:0,totalTime:0,errors:0},delete:{count:0,totalTime:0,errors:0},get:{count:0,totalTime:0,errors:0},list:{count:0,totalTime:0,errors:0},count:{count:0,totalTime:0,errors:0}}),this.metrics.resources[t][e]&&(this.metrics.resources[t][e].count++,this.metrics.resources[t][e].totalTime+=r,n&&this.metrics.resources[t][e].errors++),this.config.collectPerformance&&this.metrics.performance.push({resourceName:t,operation:e,duration:r,timestamp:(new Date).toISOString()})}recordError(t,e,r){this.config.collectErrors&&this.metrics.errors.push({resourceName:t,operation:e,error:r.message,stack:r.stack,timestamp:(new Date).toISOString()})}startFlushTimer(){this.flushTimer&&clearInterval(this.flushTimer),this.config.flushInterval>0&&(this.flushTimer=setInterval(()=>{this.flushMetrics().catch(console.error)},this.config.flushInterval))}async flushMetrics(){if(this.metricsResource)try{const t="test"===process.env.NODE_ENV?{}:{global:"true"},e="test"===process.env.NODE_ENV?{}:{perf:"true"},r="test"===process.env.NODE_ENV?{}:{error:"true"},n="test"===process.env.NODE_ENV?{}:{resource:"true"};for(const[e,r]of Object.entries(this.metrics.operations))r.count>0&&await this.metricsResource.insert({id:`metrics-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,type:"operation",resourceName:"global",operation:e,count:r.count,totalTime:r.totalTime,errors:r.errors,avgTime:r.count>0?r.totalTime/r.count:0,timestamp:(new Date).toISOString(),metadata:t});for(const[t,e]of Object.entries(this.metrics.resources))for(const[r,i]of Object.entries(e))i.count>0&&await this.metricsResource.insert({id:`metrics-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,type:"operation",resourceName:t,operation:r,count:i.count,totalTime:i.totalTime,errors:i.errors,avgTime:i.count>0?i.totalTime/i.count:0,timestamp:(new Date).toISOString(),metadata:n});if(this.config.collectPerformance&&this.metrics.performance.length>0)for(const t of this.metrics.performance)await this.performanceResource.insert({id:`perf-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,resourceName:t.resourceName,operation:t.operation,duration:t.duration,timestamp:t.timestamp,metadata:e});if(this.config.collectErrors&&this.metrics.errors.length>0)for(const t of this.metrics.errors)await this.errorsResource.insert({id:`error-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,resourceName:t.resourceName,operation:t.operation,error:t.error,stack:t.stack,timestamp:t.timestamp,metadata:r});this.resetMetrics()}catch(t){console.error("Failed to flush metrics:",t)}}resetMetrics(){for(const t of Object.keys(this.metrics.operations))this.metrics.operations[t]={count:0,totalTime:0,errors:0};for(const t of Object.keys(this.metrics.resources))for(const e of Object.keys(this.metrics.resources[t]))this.metrics.resources[t][e]={count:0,totalTime:0,errors:0};this.metrics.performance=[],this.metrics.errors=[]}async getMetrics(t={}){const{type:e="operation",resourceName:r,operation:n,startDate:i,endDate:s,limit:o=100,offset:a=0}=t;if(!this.metricsResource)return[];let c=(await this.metricsResource.getAll()).filter(t=>(!e||t.type===e)&&((!r||t.resourceName===r)&&((!n||t.operation===n)&&(!(i&&new Date(t.timestamp)<new Date(i))&&!(s&&new Date(t.timestamp)>new Date(s))))));return c.sort((t,e)=>new Date(e.timestamp)-new Date(t.timestamp)),c.slice(a,a+o)}async getErrorLogs(t={}){if(!this.errorsResource)return[];const{resourceName:e,operation:r,startDate:n,endDate:i,limit:s=100,offset:o=0}=t;let a=(await this.errorsResource.getAll()).filter(t=>(!e||t.resourceName===e)&&((!r||t.operation===r)&&(!(n&&new Date(t.timestamp)<new Date(n))&&!(i&&new Date(t.timestamp)>new Date(i)))));return a.sort((t,e)=>new Date(e.timestamp)-new Date(t.timestamp)),a.slice(o,o+s)}async getPerformanceLogs(t={}){if(!this.performanceResource)return[];const{resourceName:e,operation:r,startDate:n,endDate:i,limit:s=100,offset:o=0}=t;let a=(await this.performanceResource.getAll()).filter(t=>(!e||t.resourceName===e)&&((!r||t.operation===r)&&(!(n&&new Date(t.timestamp)<new Date(n))&&!(i&&new Date(t.timestamp)>new Date(i)))));return a.sort((t,e)=>new Date(e.timestamp)-new Date(t.timestamp)),a.slice(o,o+s)}async getStats(){const t=new Date,e=new Date(t.getTime()-864e5),[r,n,i]=await Promise.all([this.getMetrics({startDate:e.toISOString()}),this.getErrorLogs({startDate:e.toISOString()}),this.getPerformanceLogs({startDate:e.toISOString()})]),s={period:"24h",totalOperations:0,totalErrors:n.length,avgResponseTime:0,operationsByType:{},resources:{},uptime:{startTime:this.metrics.startTime,duration:t.getTime()-new Date(this.metrics.startTime).getTime()}};for(const t of r)if("operation"===t.type){s.totalOperations+=t.count,s.operationsByType[t.operation]||(s.operationsByType[t.operation]={count:0,errors:0,avgTime:0}),s.operationsByType[t.operation].count+=t.count,s.operationsByType[t.operation].errors+=t.errors;const e=s.operationsByType[t.operation],r=e.count,n=(e.avgTime*(r-t.count)+t.totalTime)/r;e.avgTime=n}const o=r.reduce((t,e)=>t+e.totalTime,0),a=r.reduce((t,e)=>t+e.count,0);return s.avgResponseTime=a>0?o/a:0,s}async cleanupOldData(){const t=new Date;if(t.setDate(t.getDate()-this.config.retentionDays),this.metricsResource){const e=await this.getMetrics({endDate:t.toISOString()});for(const t of e)await this.metricsResource.delete(t.id)}if(this.errorsResource){const e=await this.getErrorLogs({endDate:t.toISOString()});for(const t of e)await this.errorsResource.delete(t.id)}if(this.performanceResource){const e=await this.getPerformanceLogs({endDate:t.toISOString()});for(const t of e)await this.performanceResource.delete(t.id)}console.log(`Cleaned up data older than ${this.config.retentionDays} days`)}}class jc extends F{constructor(t={}){super(),this.config=t,this.name=this.constructor.name,this.enabled=!1!==t.enabled}async initialize(t){this.database=t,this.emit("initialized",{replicator:this.name})}async replicate(t,e,r,n){throw new Error(`replicate() method must be implemented by ${this.name}`)}async replicateBatch(t,e){throw new Error(`replicateBatch() method must be implemented by ${this.name}`)}async testConnection(){throw new Error(`testConnection() method must be implemented by ${this.name}`)}async getStatus(){return{name:this.name,enabled:this.enabled,config:this.config,connected:!1}}async cleanup(){this.emit("cleanup",{replicator:this.name})}validateConfig(){return{isValid:!0,errors:[]}}}const Dc={s3db:class extends jc{constructor(t={},e=[]){super(t),this.resources=e,this.connectionString=t.connectionString,this.region=t.region,this.bucket=t.bucket,this.keyPrefix=t.keyPrefix}validateConfig(){const t=[];return this.connectionString||this.bucket||t.push("Either connectionString or bucket must be provided"),{isValid:0===t.length,errors:t}}async initialize(t){await super.initialize(t);const e={connectionString:this.connectionString,region:this.region,bucket:this.bucket,keyPrefix:this.keyPrefix,verbose:this.config.verbose||!1};this.targetDatabase=new yo(e),await this.targetDatabase.connect(),this.emit("connected",{replicator:this.name,target:this.connectionString||this.bucket})}async replicate(t,e,r,n){if(!this.enabled||!this.shouldReplicateResource(t))return{skipped:!0,reason:"resource_not_included"};try{let i;switch(e){case"insert":i=await(this.targetDatabase.resources[t]?.insert(r));break;case"update":i=await(this.targetDatabase.resources[t]?.update(n,r));break;case"delete":i=await(this.targetDatabase.resources[t]?.delete(n));break;default:throw new Error(`Unsupported operation: ${e}`)}return this.emit("replicated",{replicator:this.name,resourceName:t,operation:e,id:n,success:!0}),{success:!0,result:i}}catch(r){return this.emit("replication_error",{replicator:this.name,resourceName:t,operation:e,id:n,error:r.message}),{success:!1,error:r.message}}}async replicateBatch(t,e){if(!this.enabled||!this.shouldReplicateResource(t))return{skipped:!0,reason:"resource_not_included"};try{const r=[],n=[];for(const i of e)try{const e=await this.replicate(t,i.operation,i.data,i.id);r.push(e)}catch(t){n.push({id:i.id,error:t.message})}return this.emit("batch_replicated",{replicator:this.name,resourceName:t,total:e.length,successful:r.filter(t=>t.success).length,errors:n.length}),{success:0===n.length,results:r,errors:n,total:e.length}}catch(e){return this.emit("batch_replication_error",{replicator:this.name,resourceName:t,error:e.message}),{success:!1,error:e.message}}}async testConnection(){try{return this.targetDatabase||await this.initialize(this.database),await this.targetDatabase.listResources(),!0}catch(t){return this.emit("connection_error",{replicator:this.name,error:t.message}),!1}}async getStatus(){return{...await super.getStatus(),connected:!!this.targetDatabase,targetDatabase:this.connectionString||this.bucket,resources:this.resources,totalReplications:this.listenerCount("replicated"),totalErrors:this.listenerCount("replication_error")}}async cleanup(){this.targetDatabase&&this.targetDatabase.removeAllListeners(),await super.cleanup()}shouldReplicateResource(t){return 0===this.resources.length||this.resources.includes(t)}},sqs:class extends jc{constructor(t={},e=[]){super(t),this.resources=e,this.queueUrl=t.queueUrl,this.queues=t.queues||{},this.defaultQueueUrl=t.defaultQueueUrl,this.region=t.region||"us-east-1",this.sqsClient=null,this.messageGroupId=t.messageGroupId,this.deduplicationId=t.deduplicationId}validateConfig(){const t=[];return this.queueUrl||0!==Object.keys(this.queues).length||this.defaultQueueUrl||t.push("Either queueUrl, queues object, or defaultQueueUrl must be provided"),{isValid:0===t.length,errors:t}}getQueueUrlForResource(t){if(this.queues[t])return this.queues[t];if(this.queueUrl)return this.queueUrl;if(this.defaultQueueUrl)return this.defaultQueueUrl;throw new Error(`No queue URL found for resource '${t}'`)}createMessage(t,e,r,n,i=null){const s={resource:t,action:e,timestamp:(new Date).toISOString(),source:"s3db-replication"};switch(e){case"insert":case"delete":default:return{...s,data:r};case"update":return{...s,before:i,data:r}}}async initialize(t){await super.initialize(t);try{const{SQSClient:t,SendMessageCommand:e,SendMessageBatchCommand:r}=await import("@aws-sdk/client-sqs");this.sqsClient=new t({region:this.region,credentials:this.config.credentials}),this.emit("initialized",{replicator:this.name,queueUrl:this.queueUrl,queues:this.queues,defaultQueueUrl:this.defaultQueueUrl})}catch(t){throw this.emit("initialization_error",{replicator:this.name,error:t.message}),t}}async replicate(t,e,r,n,i=null){if(!this.enabled||!this.shouldReplicateResource(t))return{skipped:!0,reason:"resource_not_included"};try{const{SendMessageCommand:s}=await import("@aws-sdk/client-sqs"),o=this.getQueueUrlForResource(t),a=this.createMessage(t,e,r,n,i),c=new s({QueueUrl:o,MessageBody:JSON.stringify(a),MessageGroupId:this.messageGroupId,MessageDeduplicationId:this.deduplicationId?`${t}:${e}:${n}`:void 0}),u=await this.sqsClient.send(c);return this.emit("replicated",{replicator:this.name,resourceName:t,operation:e,id:n,queueUrl:o,messageId:u.MessageId,success:!0}),{success:!0,messageId:u.MessageId,queueUrl:o}}catch(r){return this.emit("replication_error",{replicator:this.name,resourceName:t,operation:e,id:n,error:r.message}),{success:!1,error:r.message}}}async replicateBatch(t,e){if(!this.enabled||!this.shouldReplicateResource(t))return{skipped:!0,reason:"resource_not_included"};try{const{SendMessageBatchCommand:r}=await import("@aws-sdk/client-sqs"),n=this.getQueueUrlForResource(t),i=10,s=[];for(let t=0;t<e.length;t+=i)s.push(e.slice(t,t+i));const o=[],a=[];for(const e of s)try{const i=new r({QueueUrl:n,Entries:e.map((e,r)=>({Id:`${e.id}-${r}`,MessageBody:JSON.stringify(this.createMessage(t,e.operation,e.data,e.id,e.beforeData)),MessageGroupId:this.messageGroupId,MessageDeduplicationId:this.deduplicationId?`${t}:${e.operation}:${e.id}`:void 0}))}),s=await this.sqsClient.send(i);o.push(s)}catch(t){a.push({batch:e.length,error:t.message})}return this.emit("batch_replicated",{replicator:this.name,resourceName:t,queueUrl:n,total:e.length,successful:o.length,errors:a.length}),{success:0===a.length,results:o,errors:a,total:e.length,queueUrl:n}}catch(e){return this.emit("batch_replication_error",{replicator:this.name,resourceName:t,error:e.message}),{success:!1,error:e.message}}}async testConnection(){try{this.sqsClient||await this.initialize(this.database);const{GetQueueAttributesCommand:t}=await import("@aws-sdk/client-sqs"),e=new t({QueueUrl:this.queueUrl,AttributeNames:["QueueArn"]});return await this.sqsClient.send(e),!0}catch(t){return this.emit("connection_error",{replicator:this.name,error:t.message}),!1}}async getStatus(){return{...await super.getStatus(),connected:!!this.sqsClient,queueUrl:this.queueUrl,region:this.region,resources:this.resources,totalReplications:this.listenerCount("replicated"),totalErrors:this.listenerCount("replication_error")}}async cleanup(){this.sqsClient&&this.sqsClient.destroy(),await super.cleanup()}shouldReplicateResource(t){return 0===this.resources.length||this.resources.includes(t)}},bigquery:class extends jc{constructor(t={},e=[]){super(t),this.resources=e,this.projectId=t.projectId,this.datasetId=t.datasetId,this.tableId=t.tableId,this.tableMap=t.tableMap||{},this.bigqueryClient=null,this.credentials=t.credentials,this.location=t.location||"US",this.logOperations=!1!==t.logOperations}validateConfig(){const t=[];return this.projectId||t.push("projectId is required"),this.datasetId||t.push("datasetId is required"),this.tableId||t.push("tableId is required"),{isValid:0===t.length,errors:t}}async initialize(t){await super.initialize(t);try{const{BigQuery:t}=await import("@google-cloud/bigquery");this.bigqueryClient=new t({projectId:this.projectId,credentials:this.credentials,location:this.location}),this.emit("initialized",{replicator:this.name,projectId:this.projectId,datasetId:this.datasetId,tableId:this.tableId})}catch(t){throw this.emit("initialization_error",{replicator:this.name,error:t.message}),t}}getTableForResource(t){return this.tableMap[t]||this.tableId}async replicate(t,e,r,n,i=null){if(!this.enabled||!this.shouldReplicateResource(t))return{skipped:!0,reason:"resource_not_included"};try{const i=this.bigqueryClient.dataset(this.datasetId),s=this.getTableForResource(t),o=i.table(s);let a;if("insert"===e){const t={...r};a=await o.insert([t])}else if("update"===e){const t=Object.keys(r).filter(t=>"id"!==t),e=t.map(t=>`\n ${t}=@${t}\n `).join(", "),i={id:n};t.forEach(t=>{i[t]=r[t]});const o=`UPDATE \`${this.projectId}.${this.datasetId}.${s}\`\n SET ${e}\n WHERE id=@id`,[c]=await this.bigqueryClient.createQueryJob({query:o,params:i});await c.getQueryResults(),a=[c]}else{if("delete"!==e)throw new Error(`Unsupported operation: ${e}`);{const t=`DELETE FROM \`${this.projectId}.${this.datasetId}.${s}\`\n WHERE id=@id`,[e]=await this.bigqueryClient.createQueryJob({query:t,params:{id:n}});await e.getQueryResults(),a=[e]}}if(this.logOperations){const s=i.table(this.tableId);await s.insert([{resource_name:t,operation:e,record_id:n,data:JSON.stringify(r),timestamp:(new Date).toISOString(),source:"s3db-replication"}])}return this.emit("replicated",{replicator:this.name,resourceName:t,operation:e,id:n,jobId:a[0]?.id,success:!0}),{success:!0,jobId:a[0]?.id}}catch(r){return this.emit("replication_error",{replicator:this.name,resourceName:t,operation:e,id:n,error:r.message}),{success:!1,error:r.message}}}async replicateBatch(t,e){const r=[],n=[];for(const i of e)try{const e=await this.replicate(t,i.operation,i.data,i.id,i.beforeData);r.push(e)}catch(t){n.push({id:i.id,error:t.message})}return{success:0===n.length,results:r,errors:n}}async testConnection(){try{this.bigqueryClient||await this.initialize();const t=this.bigqueryClient.dataset(this.datasetId);return await t.getMetadata(),!0}catch(t){return this.emit("connection_error",{replicator:this.name,error:t.message}),!1}}async cleanup(){}shouldReplicateResource(t){return!this.resources||0===this.resources.length||this.resources.includes(t)}},postgres:class extends jc{constructor(t={},e=[]){super(t),this.resources=e,this.connectionString=t.connectionString,this.host=t.host,this.port=t.port||5432,this.database=t.database,this.user=t.user,this.password=t.password,this.tableName=t.tableName||"s3db_replication",this.tableMap=t.tableMap||{},this.client=null,this.ssl=t.ssl,this.logOperations=!1!==t.logOperations}validateConfig(){const t=[];return this.connectionString||this.host&&this.database||t.push("Either connectionString or host+database must be provided"),{isValid:0===t.length,errors:t}}async initialize(t){await super.initialize(t);try{const{Client:t}=await import("pg"),e=this.connectionString?{connectionString:this.connectionString,ssl:this.ssl}:{host:this.host,port:this.port,database:this.database,user:this.user,password:this.password,ssl:this.ssl};this.client=new t(e),await this.client.connect(),this.logOperations&&await this.createTableIfNotExists(),this.emit("initialized",{replicator:this.name,database:this.database||"postgres",table:this.tableName})}catch(t){throw this.emit("initialization_error",{replicator:this.name,error:t.message}),t}}async createTableIfNotExists(){const t=`\n CREATE TABLE IF NOT EXISTS ${this.tableName} (\n id SERIAL PRIMARY KEY,\n resource_name VARCHAR(255) NOT NULL,\n operation VARCHAR(50) NOT NULL,\n record_id VARCHAR(255) NOT NULL,\n data JSONB,\n timestamp TIMESTAMP WITH TIME ZONE DEFAULT NOW(),\n source VARCHAR(100) DEFAULT 's3db-replication',\n created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()\n );\n CREATE INDEX IF NOT EXISTS idx_${this.tableName}_resource_name ON ${this.tableName}(resource_name);\n CREATE INDEX IF NOT EXISTS idx_${this.tableName}_operation ON ${this.tableName}(operation);\n CREATE INDEX IF NOT EXISTS idx_${this.tableName}_record_id ON ${this.tableName}(record_id);\n CREATE INDEX IF NOT EXISTS idx_${this.tableName}_timestamp ON ${this.tableName}(timestamp);\n `;await this.client.query(t)}getTableForResource(t){return this.tableMap[t]||t}async replicate(t,e,r,n,i=null){if(!this.enabled||!this.shouldReplicateResource(t))return{skipped:!0,reason:"resource_not_included"};try{const i=this.getTableForResource(t);let s;if("insert"===e){const t=Object.keys(r),e=t.map(t=>r[t]),n=t.map(t=>`"${t}"`).join(", "),o=`INSERT INTO ${i} (${n}) VALUES (${t.map((t,e)=>`$${e+1}`).join(", ")}) ON CONFLICT (id) DO NOTHING RETURNING *`;s=await this.client.query(o,e)}else if("update"===e){const t=Object.keys(r).filter(t=>"id"!==t),e=t.map((t,e)=>`"${t}"=$${e+1}`).join(", "),o=t.map(t=>r[t]);o.push(n);const a=`UPDATE ${i} SET ${e} WHERE id=$${t.length+1} RETURNING *`;s=await this.client.query(a,o)}else{if("delete"!==e)throw new Error(`Unsupported operation: ${e}`);{const t=`DELETE FROM ${i} WHERE id=$1 RETURNING *`;s=await this.client.query(t,[n])}}return this.logOperations&&await this.client.query(`INSERT INTO ${this.tableName} (resource_name, operation, record_id, data, timestamp, source) VALUES ($1, $2, $3, $4, $5, $6)`,[t,e,n,JSON.stringify(r),(new Date).toISOString(),"s3db-replication"]),this.emit("replicated",{replicator:this.name,resourceName:t,operation:e,id:n,result:s.rows,success:!0}),{success:!0,rows:s.rows}}catch(r){return this.emit("replication_error",{replicator:this.name,resourceName:t,operation:e,id:n,error:r.message}),{success:!1,error:r.message}}}async replicateBatch(t,e){const r=[],n=[];for(const i of e)try{const e=await this.replicate(t,i.operation,i.data,i.id,i.beforeData);r.push(e)}catch(t){n.push({id:i.id,error:t.message})}return{success:0===n.length,results:r,errors:n}}async testConnection(){try{return this.client||await this.initialize(),await this.client.query("SELECT 1"),!0}catch(t){return this.emit("connection_error",{replicator:this.name,error:t.message}),!1}}async cleanup(){this.client&&await this.client.end()}shouldReplicateResource(t){return!this.resources||0===this.resources.length||this.resources.includes(t)}}};function Pc(t,e={},r=[]){const n=Dc[t];if(!n)throw new Error(`Unknown replicator driver: ${t}. Available drivers: ${Object.keys(Dc).join(", ")}`);return new n(e,r)}function Nc(t,e,r=[]){return Pc(t,e,r).validateConfig()}const Tc=Yi(uc),Cc=Yi(lc);class Mc extends Sc{constructor(t={}){super(),this.config={enabled:!1!==t.enabled,replicators:t.replicators||[],syncMode:t.syncMode||"async",retryAttempts:t.retryAttempts||3,retryDelay:t.retryDelay||1e3,batchSize:t.batchSize||10,compression:t.compression||!1,compressionLevel:t.compressionLevel||6,...t},this.replicators=[],this.queue=[],this.isProcessing=!1,this.stats={totalOperations:0,successfulOperations:0,failedOperations:0,lastSync:null}}processDataForReplication(t,e={}){switch(this.config.replicationMode){case"exact-copy":default:return{body:t,metadata:e};case"just-metadata":return{body:null,metadata:e};case"all-in-body":return{body:{data:t,metadata:e,replicationMode:this.config.replicationMode,timestamp:(new Date).toISOString()},metadata:{replicationMode:this.config.replicationMode,timestamp:(new Date).toISOString()}}}}async compressData(t){if(!this.config.compression||!t)return t;try{const e=JSON.stringify(t);return(await Tc(e,{level:this.config.compressionLevel})).toString("base64")}catch(e){return this.emit("replication.compression.failed",{error:e,data:t}),t}}async decompressData(t){if(!this.config.compression||!t)return t;try{if("string"==typeof t&&t.startsWith("H4sI")){const e=Buffer.from(t,"base64"),r=await Cc(e);return JSON.parse(r.toString())}return t}catch(e){return this.emit("replication.decompression.failed",{error:e,data:t}),t}}async setup(t){if(this.database=t,!this.config.enabled)return;this.config.replicators&&this.config.replicators.length>0&&await this.initializeReplicators(),t.resources.replication_logs?this.replicationLog=t.resources.replication_logs:this.replicationLog=await t.createResource({name:"replication_logs",attributes:{id:"string|required",resourceName:"string|required",operation:"string|required",recordId:"string|required",replicatorId:"string|required",status:"string|required",attempts:"number|required",lastAttempt:"string|required",error:"string|required",data:"object|required",timestamp:"string|required"}});for(const e in t.resources)"replication_logs"!==e&&this.installHooks(t.resources[e]);const e=t.createResource.bind(t);t.createResource=async t=>{const r=await e(t);return r&&"replication_logs"!==r.name&&this.installHooks(r),r},this.startQueueProcessor()}async initializeReplicators(){for(const t of this.config.replicators)try{const{driver:e,config:r,resources:n=[]}=t,i=Nc(e,r,n);if(!i.isValid){this.emit("replicator.validation.failed",{driver:e,errors:i.errors});continue}const s=Pc(e,r,n);await s.initialize(this.database),s.on("replicated",t=>{this.emit("replication.success",t)}),s.on("replication_error",t=>{this.emit("replication.failed",t)}),this.replicators.push({id:`${e}-${Date.now()}`,driver:e,config:r,resources:n,instance:s}),this.emit("replicator.initialized",{driver:e,config:r,resources:n})}catch(e){this.emit("replicator.initialization.failed",{driver:t.driver,error:e.message})}}async start(){}async stop(){this.isProcessing=!1,await this.processQueue()}installHooks(t){if(!t||"replication_logs"===t.name)return;const e=new Map;t.addHook("afterInsert",async e=>(await this.queueReplication(t.name,"insert",e.id,e),e)),t.addHook("preUpdate",async r=>{if(r.id)try{const n=await t.get(r.id);e.set(r.id,n)}catch(t){e.set(r.id,{id:r.id})}return r}),t.addHook("afterUpdate",async r=>{const n=e.get(r.id);return await this.queueReplication(t.name,"update",r.id,r,n),e.delete(r.id),r}),t.addHook("afterDelete",async e=>(await this.queueReplication(t.name,"delete",e.id,e),e));const r=t.deleteMany.bind(t);t.deleteMany=async e=>{const n=await r(e);if(n&&n.length>0)for(const r of e)await this.queueReplication(t.name,"delete",r,{id:r});return n}}async queueReplication(t,e,r,n,i=null){if(!this.config.enabled)return;if(0===this.replicators.length)return;if(0===this.replicators.filter(e=>e.instance.shouldReplicateResource(t)).length)return;const s={id:`repl-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,resourceName:t,operation:e,recordId:r,data:f(n)?n:{raw:n},beforeData:i?f(i)?i:{raw:i}:null,timestamp:(new Date).toISOString(),attempts:0},o=await this.logReplication(s);if("sync"===this.config.syncMode)try{const t=await this.processReplicationItem(s);o&&await this.updateReplicationLog(o,{status:t.success?"success":"failed",attempts:1,error:t.success?"":JSON.stringify(t.results)}),this.stats.totalOperations++,t.success?this.stats.successfulOperations++:this.stats.failedOperations++}catch(t){o&&await this.updateReplicationLog(o,{status:"failed",attempts:1,error:t.message}),this.stats.failedOperations++}else this.queue.push(s),this.emit("replication.queued",{item:s,queueLength:this.queue.length})}async processReplicationItem(t){const{resourceName:e,operation:r,recordId:n,data:i,beforeData:s}=t,o=this.replicators.filter(t=>t.instance.shouldReplicateResource(e));if(0===o.length)return{success:!0,skipped:!0,reason:"no_applicable_replicators"};const a=[];for(const t of o)try{const o=await t.instance.replicate(e,r,i,n,s);a.push({replicatorId:t.id,driver:t.driver,success:o.success,error:o.error,skipped:o.skipped})}catch(e){a.push({replicatorId:t.id,driver:t.driver,success:!1,error:e.message})}return{success:a.every(t=>t.success||t.skipped),results:a}}async logReplication(t){if(this.replicationLog)try{const e=`log-${Date.now()}-${Math.random().toString(36).substr(2,9)}`;return await this.replicationLog.insert({id:e,resourceName:t.resourceName,operation:t.operation,recordId:t.recordId,replicatorId:"all",status:"queued",attempts:0,lastAttempt:(new Date).toISOString(),error:"",data:f(t.data)?t.data:{raw:t.data},timestamp:(new Date).toISOString()}),e}catch(e){return this.emit("replication.log.failed",{error:e.message,item:t}),null}}async updateReplicationLog(t,e){if(this.replicationLog)try{await this.replicationLog.update(t,{...e,lastAttempt:(new Date).toISOString()})}catch(r){this.emit("replication.updateLog.failed",{error:r.message,logId:t,updates:e})}}startQueueProcessor(){this.isProcessing||(this.isProcessing=!0,this.processQueueLoop())}async processQueueLoop(){for(;this.isProcessing;)if(this.queue.length>0){const t=this.queue.splice(0,this.config.batchSize);for(const e of t)await this.processReplicationItem(e)}else await new Promise(t=>setTimeout(t,1e3))}async processQueue(){if(0===this.queue.length)return;const t=this.queue.shift();let e=0,r=null;for(;e<this.config.retryAttempts;)try{e++,this.emit("replication.retry.started",{item:t,attempt:e,maxAttempts:this.config.retryAttempts});const n=await this.processReplicationItem(t);if(n.success)return this.stats.successfulOperations++,void this.emit("replication.success",{item:t,attempts:e,results:n.results,stats:this.stats});r=n.results,e<this.config.retryAttempts&&await new Promise(t=>setTimeout(t,this.config.retryDelay*e))}catch(n){r=n.message,e<this.config.retryAttempts?await new Promise(t=>setTimeout(t,this.config.retryDelay*e)):this.emit("replication.retry.exhausted",{attempts:e,lastError:r,item:t})}this.stats.failedOperations++,this.emit("replication.failed",{attempts:e,lastError:r,item:t,stats:this.stats})}async getReplicationStats(){const t=await Promise.all(this.replicators.map(async t=>{const e=await t.instance.getStatus();return{id:t.id,driver:t.driver,config:t.config,status:e}}));return{enabled:this.config.enabled,replicators:t,queue:{length:this.queue.length,isProcessing:this.isProcessing},stats:this.stats,lastSync:this.stats.lastSync}}async getReplicationLogs(t={}){if(!this.replicationLog)return[];const{resourceName:e,operation:r,status:n,limit:i=100,offset:s=0}=t;let o={};e&&(o.resourceName=e),r&&(o.operation=r),n&&(o.status=n);return(await this.replicationLog.list(o)).slice(s,s+i)}async retryFailedReplications(){if(!this.replicationLog)return{retried:0};const t=await this.replicationLog.list({status:"failed"});let e=0;for(const r of t)try{await this.queueReplication(r.resourceName,r.operation,r.recordId,r.data),e++}catch(t){console.error("Failed to retry replication:",t)}return{retried:e}}async syncAllData(t){const e=this.replicators.find(e=>e.id===t);if(!e)throw new Error(`Replicator not found: ${t}`);this.stats.lastSync=(new Date).toISOString();for(const r in this.database.resources)if("replication_logs"!==r&&e.instance.shouldReplicateResource(r)){this.emit("replication.sync.resource",{resourceName:r,replicatorId:t});const n=this.database.resources[r],i=await n.getAll();for(const t of i)await e.instance.replicate(r,"insert",t,t.id)}this.emit("replication.sync.completed",{replicatorId:t,stats:this.stats})}}export{ho as AVAILABLE_BEHAVIORS,Ec as AuditPlugin,Y as AuthenticationError,Z as BaseError,bo as Cache,Rc as CachePlugin,ht as Client,lt as ConnectionString,xc as CostsPlugin,fo as DEFAULT_BEHAVIOR,mo as Database,J as DatabaseError,X as EncryptionError,at as ErrorMap,Ac as FullTextPlugin,st as InvalidResourceItem,wo as MemoryCache,Ic as MetricsPlugin,it as MissingMetadata,et as NoSuchBucket,rt as NoSuchKey,nt as NotFound,Q as PermissionError,Sc as Plugin,Oc as PluginObject,Mc as ReplicationPlugin,go as Resource,qs as ResourceIdsPageReader,Bs as ResourceIdsReader,tt as ResourceNotFound,Vs as ResourceReader,Hs as ResourceWriter,kc as S3Cache,W as S3DBError,ut as S3_DEFAULT_ENDPOINT,ct as S3_DEFAULT_REGION,yo as S3db,tn as Schema,Xr as SchemaActions,ot as UnknownError,G as ValidationError,Yr as Validator,Qr as ValidatorManager,uo as behaviors,Ws as calculateAttributeNamesSize,Gs as calculateAttributeSizes,Ys as calculateTotalSize,Zs as calculateUTF8Bytes,gt as decrypt,yo as default,pt as encrypt,lo as getBehavior,Qs as getSizeBreakdown,L as idGenerator,$ as passwordGenerator,dt as sha256,Ks as streamToString,Js as transformValue};