PageSourceSearch

https://www.veed.io/sw.js

js veed.io collected 2026-09-24 08:25:50 UTC 27,812 bytes, 1 lines download raw bytes

1(()=>{var pe=Object.defineProperty;var he=(t,e,r)=>e in t?pe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var u=(t,e,r)=>he(t,typeof e!="symbol"?e+"":e,r);var ge=()=>typeof self>"u"?!1:"serviceWorker"in self,J=()=>ge()?"SW:":"frontend:",R=(...t)=>{console.warn(J(),...t)},A=(...t)=>{console.error(J(),...t)};var fe={P(t){var e="=".repeat((4-t.length%4)%4);t=(t+e).replace(/-/g,"+").replace(/_/g,"/"),t=atob(t),e=new Uint8Array(t.length);for(let r=0;r<t.length;++r)e[r]=t.charCodeAt(r);return e}},ee={H:()=>{let t=e=>{let r=(Math.random().toString(16)+"000000000").substr(2,8);return e?"-"+r.substr(0,4)+"-"+r.substr(4,4):r};return t()+t(!0)+t(!0)+t()}};function N(t){if("indexedDB"in t.G)return t.G.indexedDB}function W(t){try{if(N(t)==null)return!1;let e=N(t).open("Braze IndexedDB Support Test");if(e.onupgradeneeded=()=>e.result.close(),e.onsuccess=()=>e.result.close(),typeof window<"u"){let r=window.ra||window.qa||window.ta;if(r&&r.O&&r.O.id)return t.j.info("Not using IndexedDB for storage because we are running inside an extension"),!1}return!0}catch(e){return t.j.info("Not using IndexedDB for storage due to following error: "+e),!1}}function B(t,e,r){let o=N(t).open(t.h.l,t.h.VERSION);return o==null?(typeof r=="function"&&r(),!1):(o.onupgradeneeded=n=>{t.j.info("Upgrading indexedDB "+t.h.l+" to v"+t.h.VERSION+"..."),n=n.target.result;for(let s in t.h.g)Object.hasOwn(t.h.g,s)&&!n.objectStoreNames.contains(t.h.g[s])&&n.createObjectStore(t.h.g[s])},o.onsuccess=n=>{let s=n.target.result;s.onversionchange=()=>{s.close(),typeof r=="function"&&r(),t.j.error("Needed to close the database unexpectedly because of an upgrade in another tab")},e(s)},o.onerror=n=>(t.j.info("Could not open indexedDB "+t.h.l+" v"+t.h.VERSION+": "+n.target.errorCode),typeof r=="function"&&r(),!0),!0)}function y(t,e,r,o){W(t)?B(t,n=>{if(n.objectStoreNames.contains(e)){var s=n.transaction([e],"readonly");s.oncomplete=()=>n.close(),s=s.objectStore(e).openCursor(null,"prev"),s.onerror=()=>{t.j.error("Could not open cursor for "+e+" on indexedDB "+t.h.l),typeof o=="function"&&o()},s.onsuccess=i=>{i=i.target.result,i!=null&&i.value!=null&&i.key!=null?r(i.key,i.value):typeof o=="function"&&o()}}else t.j.error("Could not retrieve last record from "+e+" on indexedDB "+t.h.l+" - "+e+" is not a valid objectStore"),typeof o=="function"&&o(),n.close()},o):typeof o=="function"&&o()}var F=class{constructor(e,r){this.G=typeof window>"u"?self:window,this.h=e,this.j=r}setItem(e,r,o,n,s){return W(this)?B(this,i=>{if(i.objectStoreNames.contains(e)){var a=i.transaction([e],"readwrite");a.oncomplete=()=>i.close(),a=a.objectStore(e).put(o,r),a.onerror=()=>{this.j.error("Could not store object "+r+" in "+e+" on indexedDB "+this.h.l),typeof s=="function"&&s()},a.onsuccess=()=>{typeof n=="function"&&n()}}else this.j.error("Could not store object "+r+" in "+e+" on indexedDB "+this.h.l+" - "+e+" is not a valid objectStore"),typeof s=="function"&&s(),i.close()},s):(typeof s=="function"&&s(),!1)}getItem(e,r,o){return W(this)?B(this,n=>{if(n.objectStoreNames.contains(e)){var s=n.transaction([e],"readonly");s.oncomplete=()=>n.close(),s=s.objectStore(e).get(r),s.onerror=()=>{this.j.error("Could not retrieve object "+r+" in "+e+" on indexedDB "+this.h.l)},s.onsuccess=i=>{i=i.target.result,i!=null&&o(i)}}else this.j.error("Could not retrieve object "+r+" in "+e+" on indexedDB "+this.h.l+" - "+e+" is not a valid objectStore"),n.close()}):!1}clearData(){if(!W(this))return!1;let e=[];for(let o in this.h.g)Object.hasOwn(this.h.g,o)&&this.h.g[o]!==this.h.g.C&&e.push(this.h.g[o]);let r=this;return B(this,o=>{let n=o.transaction(e,"readwrite");n.oncomplete=()=>o.close();for(let s=0;s<e.length;s++)n.objectStore(e[s]).clear().onerror=function(){r.j.error("Could not clear "+this.source.name+" on indexedDB "+r.h.l)};n.onerror=()=>{r.j.error("Could not clear object stores on indexedDB "+r.h.l)}})}},c={B(t){(t!==void 0||c.o===void 0)&&(c.o=!!t),c.F||(c.F=!0)},sa(){c.F=!1,c.o=void 0,c.j=void 0},ua(t){typeof t!="function"?c.info("Ignoring setLogger call since logger is not a function"):(c.B(),c.j=t)},va(){c.B(),c.o?(console.log("Disabling Braze logging"),c.o=!1):(console.log("Enabled Braze logging"),c.o=!0)},info(t){c.o&&(t="Braze: "+t,c.j!=null?c.j(t):console.log(t))},warn(t){c.o&&(t="Braze SDK Warning: "+t+" (v4.7.1)",c.j!=null?c.j(t):console.warn(t))},error(t){c.o&&(t="Braze SDK Error: "+t+" (v4.7.1)",c.j!=null?c.j(t):console.error(t))}},Z={CustomEvent:"ce",ga:"p",M:"pc",L:"ca",ia:"i",ha:"ie",W:"cci",X:"ccic",U:"ccc",V:"ccd",oa:"ss",
1na:"se",fa:"si",da:"sc",ca:"sbc",ea:"sfe",Y:"iec",la:"lr",R:"uae",T:"ci",S:"cc",ja:"lcaa",ka:"lcar",$:"inc",Z:"add",aa:"rem",ba:"set",ma:"ncam",pa:"sgu"},b=F,v={m:{l:"AppboyServiceWorkerAsyncStorage",VERSION:6,g:{s:"data",K:"pushClicks",D:"pushSubscribed",A:"fallbackDevice",I:"cardUpdates",C:"optOut",J:"pendingData",N:"sdkAuthenticationSignature"},v:1}},l=c;function I(){return new Promise((t,e)=>{let r=v.m;y(new b(r,l),r.g.C,e,t)})}function te(){return new Promise(t=>{let e=v.m;y(new b(e,l),e.g.N,(r,o)=>{t(o)},()=>{t(null)})})}function re(t,e,r){l.info(`${e} due to SDK Authentication failure with error code ${r.error_code}. The data will be logged on the user's next session start.`),e=v.m,new b(e,l).setItem(e.g.J,ee.H(),t)}function me(t,e,r){return new Promise((o,n)=>{let s={};s.time=Math.floor(new Date().valueOf()/1e3),s.device_id=r,s.api_key=t,s.sdk_version="4.7.1",s.sdk_flavor="amp",s.respond_with={config:{config_time:0}},fetch(e+"/data/",{method:"POST",headers:{"Content-type":"application/json","X-Braze-Api-Key":t},body:JSON.stringify(s)}).then(i=>(i.ok||l.error("Unable to get config: "+i.status),i.json())).then(i=>{i.error&&(l.error("Unable to get config: "+i.error),n()),i.auth_error&&(l.error("Unable to get config due to authentication error. SDK Authentication does not support AMP pages."),n()),i.error||i.auth_error||(i={userVisibleOnly:!0,applicationServerKey:fe.P(i.config.vapid_public_key)},o(i))}).catch(i=>{l.error("Unable to get config: "+i),n()})})}function x(t,e,r,o,n,s,i,a,d){return te().then(p=>new Promise((M,U)=>{let f={};f.device_id=r,f.api_key=t,f.sdk_version="4.7.1",s!=null&&(f.sdk_flavor=s);var S=null;let k=null,G=null;n&&(G=n.endpoint,n.getKey&&(S=btoa(String.fromCharCode.apply(null,new Uint8Array(n.getKey("p256dh")))),k=btoa(String.fromCharCode.apply(null,new Uint8Array(n.getKey("auth")))))),f.time=Math.floor(new Date().valueOf()/1e3),f.attributes=[{user_id:o,push_token:G,custom_push_public_key:S,custom_push_user_auth:k}],S={"Content-type":"application/json","X-Braze-Api-Key":f.api_key},p&&d&&(S["X-Braze-Auth-Signature"]=p),fetch(e+"/data/",{method:"POST",headers:S,body:JSON.stringify(f)}).then(g=>(g.ok||l.error(a+" "+g.status),g.json())).then(g=>{g.error&&(l.error(a+" "+g.error),U()),g.auth_error&&(re(f,a,g.auth_error),U()),g.error||g.auth_error||(l.info(i),M())}).catch(g=>{l.error(a+" "+g),U()})}))}function Q(t,e){return I().then(()=>te()).then(r=>{let o=v.m;y(new b(o,l),o.g.s,(n,s)=>{n=Math.floor(new Date().valueOf()/1e3);let i=s.data;i.time=n,t.time=n,t.user_id=s.userId,i.events=[t],i.sdk_version="4.7.1",n={"Content-Type":"application/json","X-Braze-Api-Key":i.api_key},r&&s.sdkAuthEnabled&&(n["X-Braze-Auth-Signature"]=r),fetch(s.baseUrl+"/data/",{method:"POST",headers:n,body:JSON.stringify(i)}).then(a=>(a.ok||l.error("Unable to log "+e+": "+a.status),a.json())).then(a=>(a.error&&l.error("Unable to log "+e+":",a.error),a.auth_error&&re(i,"Unable to log "+e,a.auth_error),a.error||a.auth_error||l.info("Successfully logged "+e),Promise.resolve())).catch(a=>(l.error("Unable to log "+e+":",a),Promise.resolve()))})}).catch(()=>Promise.reject("Not sending data to Braze backend due to opt-out."))}function oe(){let t=self.location.search.match(/apiKey=([^&]+)/i);return t?t[1]:(l.error("Missing API key in query params."),null)}function se(){let t=self.location.search.match(/baseUrl=([^&]+)/i);return t?t[1]:(l.error("Missing base URL in query params."),null)}function H(t,e){self.clients.matchAll().then(r=>{for(let o=0;o<r.length;o++)r[o].postMessage({command:t,payload:e})})}function z(t,e,r,o,n){return me(t,e,r).then(s=>self.registration.pushManager.subscribe(s)).then(s=>(H("amp-web-push-subscribe",null),x(t,e,r,o,s,"amp","Successfully sent AMP push subscription to Braze backend.","Unable to send AMP push subscription to Braze backend.",n))).catch(()=>(l.error("Failed to subscribe for AMP push."),Promise.reject()))}function be(){self.registration.pushManager.getSubscription().then(t=>t?self.registration.pushManager.permissionState(t.options):null).then(t=>{H("amp-web-push-subscription-state",t==="granted")})}
1function ve(){let t=v.m,e=new b(t,l);return new Promise((r,o)=>{y(e,t.g.s,(n,s)=>{z(s.data.api_key,s.baseUrl,s.data.device_id,s.userId,s.sdkAuthEnabled).then(()=>{r()}).catch(()=>{o()})},()=>{let n=oe(),s=se();y(e,t.g.A,(i,a)=>{z(n,s,a,null).then(()=>{r()}).catch(()=>{o()})},()=>{let i=ee.H();new Promise((a,d)=>{e.setItem(t.g.A,t.v,i,a,d)}).then(()=>z(n,s,i,null)).then(()=>{r()}).catch(()=>{o()})})})}).then(()=>new Promise((r,o)=>{e.setItem(t.g.D,t.v,!0,r,o)}))}function ye(){return self.registration.pushManager.getSubscription().then(t=>t.unsubscribe()).then(()=>{H("amp-web-push-unsubscribe",null);let t=v.m,e=new b(t,l);return new Promise((r,o)=>{y(e,t.g.s,(n,s)=>{x(s.data.api_key,s.baseUrl,s.data.device_id,s.userId,null,"amp","Successfully sent AMP push unsubscription to Braze backend.","Unable to send AMP push unsubscription to Braze backend.",s.sdkAuthEnabled).then(()=>{r()}).catch(()=>{o()})},()=>{y(e,t.g.A,(n,s)=>{n=oe();let i=se();x(n,i,s,null,null,"amp","Successfully sent AMP push unsubscription to Braze backend.","Unable to send AMP push unsubscription to Braze backend.",null).then(()=>{r()}).catch(()=>{o()})},()=>{l.error("No device found during unsubscription."),o()})})}).then(()=>new Promise((r,o)=>{e.setItem(t.g.D,t.v,!1,r,o)}))}).catch(()=>(l.error("Failed to unsubscribe for AMP push."),Promise.reject()))}function D(t,e){t.waitUntil(e.catch(r=>{r&&l.info(r)}))}l.B(!0);function Y(t){if(t==null||Object.keys(t).length===0)return Promise.reject("Server has no pending push message for this registration. Ignoring push event.");let e=t.t,r=t.a,o=t.i,n=t.img,s={url:t.u,ab_ids:{cid:t.cid},extra:t.e},i=t.ri;t.ab_push_fetch_test_triggers_key&&(l.info("Service worker 4.7.1 found trigger fetch key in push payload."),s.fetchTriggers=!0);var a=t.ab_cd;if(a!=null){var d=v.m;new b(d,l).setItem(d.g.I,new Date().valueOf(),{userId:t.ab_cd_uid,card:a})}for(t=t.pab||[],a={},d=0;d<t.length;d++)if(t[d]!=null&&t[d].action!=null){let p;switch(t[d].a){case"ab_none":p=null;break;case"ab_uri":p=t[d].u,(p==null||p==="")&&(p="/")}a[t[d].action]=p}return s.actionTargets=a,l.info("Displaying push notification!"),self.registration.showNotification(e,{body:r,icon:o,image:n,data:s,actions:t,requireInteraction:i}).catch(p=>{l.info(p)})}self.addEventListener("push",t=>{l.info("Service worker 4.7.1 received push"),t.data!=null&&t.data.json!=null?D(t,Y(t.data.json())):D(t,new Promise((e,r)=>{let o=v.m;y(new b(o,l),o.g.s,(n,s)=>{let i=s.data;I().then(()=>fetch(s.baseUrl+"/web_push/",{method:"POST",headers:{"Content-type":"application/json","X-Braze-Api-Key":i.api_key},body:JSON.stringify(i)})).then(a=>a.ok?a.json():(l.error("Unable to retrieve push payload from server: "+a.status),Promise.reject())).then(a=>{l.info("Retrieved push payload from server"),e(Y(a))}).catch(a=>{r("Unable to retrieve push payload from server or user has opt-out: "+a)})})}))});self.addEventListener("notificationclick",t=>{if(t&&t.notification&&(t.notification.close(),Notification!=null&&Object.hasOwn(Notification.prototype,"data")&&t.notification.data&&t.notification.data.ab_ids)){var e=t.action!=null&&t.action!=="",r=e?Q({name:Z.L,data:{cid:t.notification.data.ab_ids.cid,a:t.action}},"push button click"):Q({name:Z.M,data:{cid:t.notification.data.ab_ids.cid}},"push click");if(!e){let i={lastClick:new Date().valueOf(),trackingString:t.notification.data.ab_ids.cid};t.notification.data.fetchTriggers&&(i.fetchTriggers=!0);let a=v.m,d=new b(a,l);var o=r.then(()=>new Promise((p,M)=>{d.setItem(a.g.K,a.v,i,p,M)})).catch(()=>(l.info("Not storing push click due to no click event being created."),Promise.resolve()))}if(e)var n=t.notification.data.actionTargets[t.action];else n=t.notification.data.url,(n==null||n==="")&&(n="/");var s;n!=null&&n!==""&&(s=clients.matchAll({type:"window"}).then(()=>{if(clients.openWindow)return clients.openWindow(n)})),D(t,Promise.all([s,o]))}});self.addEventListener("pushsubscriptionchange",t=>{D(t,I().then(()=>{let e={userVisibleOnly:!0};return t.oldSubscription!=null&&(e=t.oldSubscription.options),self.registration.pushManager.subscribe(e)}).then(e=>{let r=v.m;return new Promise((o,n)=>{y(new b(r,l),r.g.s,(s,i)=>{x(i.data.api_key,i.baseUrl,i.data.device_id,i.userId,e,null,"Successfully resubscribed user after expiration","Unable to resubscribe user",i.sdkAuthEnabled).then(()=>{o()}).catch(()=>{n()})})})}).catch(()=>Promise.reject("Not resubscribing user for push due to opt-out.")))});self.addEventListener("message",t=>{t.waitUntil&&t.data.command&&t.waitUntil(I().then(()=>{switch(t.data.command){case"amp-web-push-subscription-state":return be(),Promise.resolve();case"amp-web-push-subscribe":return ve();case"amp-web-push-unsubscribe":return ye();default:return Promise.resolve()}}).catch(()=>(l.info("Ignoring message from amp-web-push due to opt-out."),Promise.resolve())))});var K=t=>t!==void 0?t:typeof navigator>"u"?"":navigator.userAgent??"",Se=t=>{let e=K(t);return/Safari/.test(e)&&!/Chrome|Chromium|Android/.test(e)};var _=t=>{let e=K(t);return/iPhone|iPad|iPod/.test(e)&&/VEEDApp|VEEDiOS/.test(e)},ne=t=>{let e=K(t);return/Android/.test(e)&&/; wv\)/.test(e)},m=t=>Se(t)||_(t);var h=[];for(T=0;T<256;++T)h.push((T+256).toString(16).slice(1));var T;
1function ie(t,e=0){return(h[t[e+0]]+h[t[e+1]]+h[t[e+2]]+h[t[e+3]]+"-"+h[t[e+4]]+h[t[e+5]]+"-"+h[t[e+6]]+h[t[e+7]]+"-"+h[t[e+8]]+h[t[e+9]]+"-"+h[t[e+10]]+h[t[e+11]]+h[t[e+12]]+h[t[e+13]]+h[t[e+14]]+h[t[e+15]]).toLowerCase()}var j,we=new Uint8Array(16);function V(){if(!j&&(j=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!j))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return j(we)}var Ue=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),X={randomUUID:Ue};function ke(t,e,r){if(X.randomUUID&&!e&&!t)return X.randomUUID();t=t||{};var o=t.random||(t.rng||V)();if(o[6]=o[6]&15|64,o[8]=o[8]&63|128,e){r=r||0;for(var n=0;n<16;++n)e[r+n]=o[n];return e}return ie(o)}var $=ke;var ae="Missing `asset` on uploader, please initiate with `assets.generateUploadUrl`",le="Upload aborted",Ce="Unexpected error",Pe=2*1024*1024,C=class t{constructor(e,r){this.assetData=e;this.options=r;u(this,"uuid");u(this,"stopped",!1);u(this,"uploadAborted",!1);u(this,"uploadCompleted",!1);u(this,"uploadError",null);u(this,"MIN_CHUNK_SIZE",1024*256);u(this,"chunkSize",this.MIN_CHUNK_SIZE);u(this,"chunkFirstByte",0);u(this,"progressPercentage",0);u(this,"desiredChunkUploadTime",3e4);u(this,"uploadCompleteResolve");u(this,"onProgressCb");u(this,"retryUploadInterval",1e3);u(this,"maxRetries",5);u(this,"retryCount",0);u(this,"retryTimeoutId");u(this,"cancelToken");u(this,"abortController");this.uuid=e?.uuid??$()}static fromSerialized(e,r){let o=new t(e.assetData,r);return o.uuid=e.uuid,o.chunkSize=e.chunkSize,o.chunkFirstByte=e.chunkFirstByte,o.progressPercentage=e.progressPercentage,o.uploadCompleted=e.uploadCompleted,o.uploadAborted=e.uploadAborted,o.uploadError=e.uploadError,o}stop(){this.stopped=!0,this.clearPendingRetry()}resume(){this.stopped=!1,this.retryCount=0,this.clearPendingRetry(),this.uploadNextChunk()}clearPendingRetry(){clearTimeout(this.retryTimeoutId),this.retryTimeoutId=void 0}set timeToUploadLastChunk(e){if(e<=0)return;let r=this.desiredChunkUploadTime*this.chunkSize/e;this.chunkSize=r-r%this.MIN_CHUNK_SIZE,this.chunkSize=Math.max(this.chunkSize,this.MIN_CHUNK_SIZE),_()&&(this.chunkSize=Math.min(this.chunkSize,Pe))}get chunkLastByte(){return Math.min(this.chunkFirstByte+this.nextChunkSize,this.assetData.file.size)-1}get nextChunkSize(){return this.chunkFirstByte+this.chunkSize>this.assetData.file.size?this.assetData.file.size-this.chunkFirstByte:this.chunkSize}get completed(){return this.uploadCompleted}async start(){return new Promise((e,r)=>{this.uploadNextChunk(),this.uploadCompleteResolve=e})}abort(){this.uploadAborted=!0,this.cancelToken&&this.cancelToken(),this.abortController&&this.abortController.abort(le),this.onProgressCb?.(this)}onProgress(e){this.onProgressCb=e}onUploadError(e){this.uploadError=e,this.onProgressCb?.(this)}updateProgress(e){(Math.abs(this.progressPercentage-e)>.01||e===100)&&(this.progressPercentage=e,this.onProgressCb&&this.onProgressCb(this))}getNextUploadableChunk(){let e=this.chunkFirstByte,r=this.chunkLastByte+1;return{body:this.assetData.file.slice(e,r),headers:{"Content-Length":`${this.chunkSize}`,"Content-Type":this.assetData.file.type,"Content-Range":`bytes ${this.chunkFirstByte}-${this.chunkLastByte}/${this.assetData.file.size}`}}}async uploadNextChunk(){if(!(this.stopped||this.completed||this.uploadAborted))try{let e=await this.handleUpload();this.retryCount=0,this.updateUploadStatus(e),this.uploadCompleted||this.uploadNextChunk()}catch(e){if(e===le)return;if(!(e instanceof Error&&e.message===ae)&&this.retryCount<this.maxRetries){let o=this.retryUploadInterval*2**this.retryCount;this.retryCount++,this.retryTimeoutId=setTimeout(()=>this.uploadNextChunk(),o);return}this.onUploadError(e instanceof Error?e.message:Ce)}}updateUploadStatus(e){"timeStamp"in e&&(this.timeToUploadLastChunk=e.timeStamp),"lastByteSaved"in e?(this.updateProgress(e.lastByteSaved/this.assetData.file.size*100),this.chunkFirstByte=e.lastByteSaved+1):e.completed&&(this.uploadCompleted=!0,this.chunkFirstByte=this.assetData.file.size,this.updateProgress(100),this.uploadCompleteResolve?.())}uploadStatusFromResponse(e){if(e.status===200||e.status===201)return{completed:!0};if(e.status===308){let r=null;
1if("headers"in e?r=e.headers.get("range"):r=e.getResponseHeader("range"),!r)return{lastByteSaved:0};let o=r.split("-").pop()??"0";return{lastByteSaved:parseInt(o,10)}}throw new Error("Invalid resumableUploadURL or file changed.")}async checkUploadStatus(){let e=Date.now(),r=await fetch(this.assetData.uploadUrl,{method:"PUT",headers:{"Content-Length":"0","Content-Range":"bytes */*"}});return e=Date.now()-e,{...this.uploadStatusFromResponse(r),timeStamp:e}}handleUpload(){if(!this.assetData)throw new Error(ae);if(this.options?.serviceWorkerScope)return this.abortController=new AbortController,this.uploadWithFetch(this.abortController.signal);let e=new XMLHttpRequest;return this.cancelToken=()=>e.abort(),this.uploadWithXHR(e)}uploadWithXHR(e){return new Promise((r,o)=>{let n=0;e.upload.addEventListener("progress",i=>{n||(n=Date.now());let a=this.chunkFirstByte+i.loaded;this.updateProgress(a/this.assetData.file.size*100)},!1),e.addEventListener("load",i=>{delete this.cancelToken;let a=i.currentTarget,d=this.uploadStatusFromResponse(a);r({...d,timeStamp:Date.now()-n})},!1),e.addEventListener("error",()=>o(new Error("XHR upload network error")),!1),e.open("PUT",this.assetData.uploadUrl,!0);let s=this.getNextUploadableChunk();e.setRequestHeader("Content-Type",s.headers["Content-Type"]),e.setRequestHeader("Content-Range",s.headers["Content-Range"]),e.setRequestHeader("x-goog-content-length-range",this.assetData.contentLength),e.send(s.body)})}async uploadWithFetch(e){let r=this.getNextUploadableChunk(),o=Date.now(),n=await fetch(this.assetData.uploadUrl,{signal:e,body:r.body,method:"PUT",headers:{"Content-Type":r.headers["Content-Type"],"Content-Range":r.headers["Content-Range"],"x-goog-content-length-range":this.assetData.contentLength}}),s=Date.now()-o;return{...this.uploadStatusFromResponse(n),timeStamp:s}}serialize(){return{uuid:this.uuid,assetData:this.assetData,chunkSize:this.chunkSize,chunkFirstByte:this.chunkFirstByte,progressPercentage:this.progressPercentage,uploadCompleted:this.uploadCompleted,uploadAborted:this.uploadAborted,uploadError:this.uploadError}}};var q=()=>{if(typeof navigator>"u"||!navigator.userAgent)return!1;let t=navigator.userAgent,e=t.toLowerCase();return["tiktok","snapchat","instagram","fbav","fban","fb_iab","linkedin","twitter","micromessenger","line","pinterestbot","whatsapp"].some(o=>e.includes(o))?!0:_(t)?!1:!!(/iphone|ipad|ipod/.test(e)&&!e.includes("safari")||ne(t))};var ue="/sw.js",de=()=>typeof navigator<"u"&&"serviceWorker"in navigator,P=()=>new Promise((t,e)=>{if(!de()){e(new Error("ServiceWorker Unsupported"));return}if(navigator.serviceWorker.controller){t();return}if("serviceWorker"in navigator){let s=`${window.location.protocol}//${window.location.host}${ue}`;navigator.serviceWorker.getRegistration(s).then(i=>{i&&i.unregister().then(()=>{navigator.serviceWorker.register(ue).catch(a=>{if(!q())throw a})})})}let o=()=>{n(),t()},n=()=>{navigator.serviceWorker.removeEventListener("controllerchange",o),navigator.serviceWorker.onmessage=null};navigator.serviceWorker.onmessage=o,navigator.serviceWorker.addEventListener("controllerchange",o)}),E=class E{constructor(){u(this,"listeners",[]);u(this,"sendMessageWithResponse",async(e,r=1e4)=>{let o=new AbortController;return new Promise((n,s)=>{let i=d=>{d.data.type===e.type&&(clearTimeout(a),o.abort(),n(d.data))};this.addListener(i,{signal:o.signal}),this.sendMsg(e);let a=setTimeout(()=>{o.abort();let d=`Service worker timed out while responding to message of type "${e.type}"`;R(d),s(d)},r)})});u(this,"sendMsg",async e=>{try{await P(),navigator.serviceWorker?.controller?.postMessage(e),m()&&await new Promise(r=>setTimeout(r,100))}catch{A("Service workers not supported")}});if(E.instance)return E.instance;E.instance=this}setup(){P().catch(()=>{A("Could not setup service worker")});try{this.registerSW()}catch(e){A("Could not setup service worker",e)}}addListener(e,r){this.listeners.push(e),navigator.serviceWorker?.addEventListener("message",e,r)}retrieve(){this.sendMsg({type:"retrieve"})}retrieveUploadables(e){this.sendMsg({type:"retrieveUploadables",body:e})}store(e){this.sendMsg({type:"store",body:e})}registerSW(){if(!navigator.serviceWorker?.controller&&de())return navigator.serviceWorker.register("/sw.js").cat
1ch(e=>{if(!q())throw e})}async cleanSW(){await(await navigator.serviceWorker.getRegistration())?.unregister()}};u(E,"instance",null);var O=E;var Re=500*1024*1024,L=class{constructor(e){this.options=e;u(this,"uploaders",[]);u(this,"uploadables",[]);u(this,"sw",new O);u(this,"onUploadersChangeCb");u(this,"onUploadablesChangeCb");u(this,"uploadCompleteResolvers");u(this,"retrieveResolver");u(this,"retrieveByUuidResolver",new Map);this.uploadCompleteResolvers=[],this.options?.useServiceWorker&&(this.sw.addListener(r=>{r.data.type==="retrieve"&&(this.addUploader(r.data.body.map(o=>C.fromSerialized(o,this.options))),this.retrieveResolver&&(this.retrieveResolver(),this.retrieveResolver=void 0)),r.data.type==="retrieveUploadables"&&this.handleRetrieveUploadables(r.data.body)},{}),this.sw.setup())}onUploadersChange(e){this.onUploadersChangeCb=e}checkUploadCompletion(){this.uploaders.every(e=>e.uploadCompleted)&&(this.uploadCompleteResolvers.forEach(e=>{e()}),this.uploadCompleteResolvers=[])}setOnProgressCbOnUploader(e){e.onProgressCb=()=>{this.onUploadersChangeCb?.(this.uploaders),this.checkUploadCompletion()}}setUploaders(e){this.uploaders=e,this.uploaders.forEach(r=>{this.setOnProgressCbOnUploader(r)}),this.onUploadersChangeCb?.(this.uploaders),this.checkUploadCompletion()}addUploader(e){this.setUploaders(this.mergeAssets(this.uploaders,Array.isArray(e)?e:[e]))}addUploaderFromUploadable(e){let r=new C(e,this.options);return this.addUploader(r),r}onUploadablesChange(e){this.onUploadablesChangeCb=e}setUploadables(e){this.uploadables=Array.isArray(e)?e:[e],this.onUploadablesChangeCb?.(this.uploadables)}mergeAssets(e,r){let o=new Map(e.map(n=>[n.uuid,n]));return r.forEach(n=>{o.set(n.uuid,n)}),Array.from(o.values())}handleRetrieveUploadables(e){this.setUploadables(this.mergeAssets(this.uploadables,e)),this.retrieveResolver&&(this.retrieveResolver(),this.retrieveResolver=void 0);for(let r of e){if(!r.uuid)continue;let o=this.retrieveByUuidResolver.get(r.uuid);o&&(o(),this.retrieveByUuidResolver.delete(r.uuid))}}async upload(e){let r=Array.isArray(e)?e:[e];if(!(r.reduce((s,i)=>s+i.file.size,0)>Re)&&this.options?.useServiceWorker){await P();try{return await this.sw.sendMessageWithResponse({type:"test",body:""},3e3),this.sw.sendMsg({type:"upload",body:r}),new Promise((s,i)=>{this.uploadCompleteResolvers.push(s)})}catch{R("Did not receive response from test message to sw. Uploading via XHR instead.")}}return Promise.all(r.map(s=>{let i=new C(s,this.options);return this.addUploader(i),i.start()}))}cleanUp(){this.uploaders.forEach(e=>{e.stop()}),this.setUploaders([]),this.setUploadables([])}async store(e){if(!this.options?.useServiceWorker)return;await P();let r=Array.isArray(e)?e:[e];this.setUploadables(this.mergeAssets(this.uploadables,r)),this.sw.store(r),m()&&await new Promise(o=>setTimeout(o,500))}retrieveUploaders(){return new Promise((e,r)=>{this.retrieveResolver=e,setTimeout(r,1e4),this.sw.retrieve()})}async retrieveUploadables(e){if(this.options?.useServiceWorker)try{if(await P(),m()&&!navigator.serviceWorker.controller)throw new Error("Service worker not ready in Safari")}catch(r){throw new Error(`Service worker not available: ${r}`)}return new Promise((r,o)=>{let n=()=>{p&&clearInterval(p),r()};e?this.retrieveByUuidResolver?.set(e,n):this.retrieveResolver=n;let s=m()?2e4:1e4,a=m()?2e3:1e3,d=0,p=null,M=setTimeout(()=>{p&&clearInterval(p);let k=`Timeout looking for ${e}${m()?" (Safari extended timeout)":""}`;R(k,{uuid:e,attempt:d,isSafariOrEmbeddedApp:m()}),o(k)},s),U=()=>{try{this.sw.retrieveUploadables(e),d++,m()&&d>3&&(a=Math.min(a*1.5,5e3),p&&clearInterval(p),p=setInterval(U,a))}catch(k){R("Error during retrieveUploadables poll:",k)}};U(),p=setInterval(U,a);let f=n,S=()=>{clearTimeout(M),f()};e?this.retrieveByUuidResolver?.set(e,S):this.retrieveResolver=S})}startUpload(){return Promise.all(this.uploadables.map(e=>{let r=new C(e,this.options);return this.addUploader(r),r.start()}))}async uploadFromUuid(e){try{await this.retrieveUploadables(e)}catch(n){if(m()){let s=this.uploadables.find(i=>i.uuid===e);if(s)return this.addUploaderFromUploadable(s).start()}throw n}let r=this.uploadables.find(n=>n.uuid===e);return r?this.addUploaderFromUploadable(r).start():void 0}async abortUpload(e){this.options?.useServiceWorker?(await P(),this.sw.sendMsg({type:"abort",body:e})):this.uploaders.find(r=>r.uuid===e)?.abort()}};
1var w=new L({serviceWorkerScope:!0}),ce={test:t=>{t.postMessage({type:"test"})},upload:async(t,{body:e})=>{w.onUploadersChange(r=>{t.postMessage({type:"retrieve",body:r.map(o=>o.serialize())})}),await w.upload(e)},store:async(t,{body:e})=>{w.setUploadables(w.mergeAssets(w.uploadables,e))},retrieve:t=>t.postMessage({type:"retrieve",body:w.uploaders.map(e=>e.serialize())}),retrieveUploadables:(t,e)=>{let r=e.body,o=w.uploadables.filter(n=>!r||n.uuid===r);t.postMessage({type:"retrieveUploadables",body:o})},abort:async(t,{body:e})=>{w.uploaders.find(r=>r.uuid===e)?.abort()}};self.addEventListener("install",t=>{t.waitUntil(Promise.resolve().then(()=>self.skipWaiting()))});self.addEventListener("activate",t=>{let e=async()=>{await self.clients.claim()};t.waitUntil(e())});var Ae={...ce};self.addEventListener("message",t=>{let e=async()=>{try{if(t.data&&t.source){let r=t.data.type;await Ae[r](t.source,t.data)}}catch(r){A("error while processing message:",{event:t,error:r})}};t.waitUntil(e())});var lt=null;})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.