magic-sdk 28.6.0-canary.aa3e3a8.0 → 28.6.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.
package/dist/magic.js CHANGED
@@ -2,5 +2,5 @@
2
2
  - Extension \`${r.name}\` supports version(s) \`${o}\``:o||(t+=`
3
3
  - Extension \`${r.name}\` does not support ${Y.platform} environments.`)}),new _e(ve.IncompatibleExtensions,t)}function Lo(e){let t=r=>{let o=r+1,a=o%10,s=o%100;return a===1&&s!==11?`${o}st`:a===2&&s!==12?`${o}nd`:a===3&&s!==13?`${o}rd`:`${o}th`};return new _e(ve.InvalidArgument,`Invalid ${t(e.argument)} argument given to \`${e.procedure}\`.
4
4
  Expected: \`${e.expected}\`
5
- Received: \`${e.received}\``)}function en(){return new Me(ge.DuplicateIframe,"Duplicate iframes found.")}function Co(){return new Me(ge.SyncWeb3Method,"Non-async web3 methods are deprecated in web3 > 1.0 and are not supported by the Magic web3 provider. Please use an async method instead.")}function Po(){return new Me(ge.ReactNativeEndpointConfiguration,`CUSTOM DOMAINS ARE NOT SUPPORTED WHEN USING MAGIC SDK WITH REACT NATIVE! The \`endpoint\` parameter SHOULD NOT be provided. The Magic \`<iframe>\` is automatically wrapped by a WebView pointed at \`${Y.defaultEndpoint}\`. Changing this default behavior will lead to unexpected results and potentially security-threatening bugs.`)}function Je(e){let{method:t,removalVersions:r,useInstead:o}=e,a=r[Y.sdkName],s=o?` Use \`${o}\` instead.`:"",m=`\`${t}\` will be removed from \`${Y.sdkName}\` in version \`${a}\`.${s}`;return new Me(ge.DeprecationNotice,m)}function*$o(){let e=0;for(;;)e<Number.MAX_SAFE_INTEGER?yield++e:e=0}var Do=$o();function tn(){return Do.next().value}var rn=Symbol("Payload pre-processed by Magic SDK");function nn(e){return Object.defineProperty(e,rn,{value:!0,enumerable:!1}),e}function xo(e){return!!e[rn]}function pt(e){var t,r,o;return xo(e)||(e.jsonrpc=(t=e.jsonrpc)!=null?t:"2.0",e.id=tn(),e.method=(r=e.method)!=null?r:"noop",e.params=(o=e.params)!=null?o:[],nn(e)),e}function W(e,t=[]){return nn({params:t,method:e,jsonrpc:"2.0",id:tn()})}var Ut=class{constructor(e){e instanceof Ut?(this._jsonrpc=e.payload.jsonrpc,this._id=e.payload.id,this._result=e.payload.result,this._error=e.payload.error):Ro(e)?(this._jsonrpc=e.jsonrpc,this._id=e.id,this._result=e.result,this._error=e.error):(this._jsonrpc=e.jsonrpc,this._id=e.id,this._result=void 0,this._error=void 0)}applyError(e){return this._error=e,this}applyResult(e){return this._result=e,this}get hasError(){return typeof this._error!="undefined"&&this._error!==null}get hasResult(){return typeof this._result!="undefined"}get payload(){return{jsonrpc:this._jsonrpc,id:this._id,result:this._result,error:this._error}}},Uo=Li(Ci()),ko=class extends Uo.default{};function on(){let e=new ko;return{emitter:e,createChainingEmitterMethod:(t,r)=>(...o)=>(e[t].apply(e,o),r),createBoundEmitterMethod:t=>(...r)=>e[t].apply(e,r)}}var an=Symbol("isPromiEvent");function kt(e){return!!e[an]}function et(e){let t=sn(e),{createBoundEmitterMethod:r,createChainingEmitterMethod:o}=on(),a=Symbol("Promise.then"),s=Symbol("Promise.catch"),m=Symbol("Promise.finally"),d=(y,O)=>(..._)=>{let N=O[y].apply(O,_);return g(N)},g=y=>Object.assign(y,{[an]:!0,[a]:y[a]||y.then,[s]:y[s]||y.catch,[m]:y[m]||y.finally,then:d(a,y),catch:d(s,y),finally:d(m,y),on:o("on",y),once:o("once",y),addListener:o("addListener",y),off:o("off",y),removeListener:o("removeListener",y),removeAllListeners:o("removeAllListeners",y),emit:r("emit"),eventNames:r("eventNames"),listeners:r("listeners"),listenerCount:r("listenerCount")}),v=g(t.then(y=>(v.emit("done",y),v.emit("settled"),y),y=>{throw v.emit("error",y),v.emit("settled"),y}));return v.on(at.ClosedByUser,()=>{v.emit(ot.ClosedByUser)}),v}function sn(e){return new Promise((t,r)=>{let o=e(t,r);Promise.resolve(o).catch(r)})}var Le=class{constructor(e){this.sdk=e}get overlay(){return this.sdk.overlay}request(e){let t=this.overlay.post(Ne.MAGIC_HANDLE_REQUEST,pt(e)),r=et((a,s)=>{t.then(m=>{if(o(),m.hasError)s(new We(m.payload.error));else if(m.hasResult)a(m.payload.result);else throw Oo()}).catch(m=>{o(),s(m)})}),o=this.overlay.on(me.MAGIC_HANDLE_EVENT,a=>{var s;let{response:m}=a.data;if(m.id===e.id&&((s=m.result)==null?void 0:s.event)){let{event:d,params:g=[]}=m.result;r.emit(d,...g)}});return r}createIntermediaryEvent(e,t){return r=>{let o=W(M.IntermediaryEvent,[{payloadId:t,eventType:e,args:r}]);this.request(o)}}};function Fo(e,t){let[r]=e.split(".").map(Number);return r>=t}var Qe={"magic-sdk":"v18.0.0","@magic-sdk/react-native":"v14.0.0","@magic-sdk/react-native-bare":"v19.0.0","@magic-sdk/react-native-expo":"v19.0.0"},Wo=class extends Le{loginWithMagicLink(e){let t=Y.sdkName==="@magic-sdk/react-native"||Y.sdkName==="@magic-sdk/react-native-bare"||Y.sdkName==="@magic-sdk/react-native-expo";if(t&&Fo(Y.version,19))throw new Error("loginWithMagicLink() is deprecated for this package, please utlize a passcode method like loginWithSMS or loginWithEmailOTP instead.");t&&Je({method:"auth.loginWithMagicLink()",removalVersions:Qe,useInstead:"auth.loginWithEmailOTP()"}).log();let{email:r,showUI:o=!0,redirectURI:a,overrides:s,lifespan:m}=e,d=W(this.sdk.testMode?M.LoginWithMagicLinkTestMode:M.LoginWithMagicLink,[{email:r,showUI:o,redirectURI:a,overrides:s,lifespan:m}]);return this.request(d)}loginWithSMS(e){let{phoneNumber:t,showUI:r=!0,lifespan:o}=e,a=W(this.sdk.testMode?M.LoginWithSmsTestMode:M.LoginWithSms,[{phoneNumber:t,showUI:r,lifespan:o}]),s=this.request(a);return!r&&s&&(s.on(Oe.VerifySmsOtp,m=>{this.createIntermediaryEvent(Oe.VerifySmsOtp,a.id)(m)}),s.on(Oe.Cancel,()=>{this.createIntermediaryEvent(Oe.Cancel,a.id)()})),s}loginWithEmailOTP(e){let{email:t,showUI:r,deviceCheckUI:o,overrides:a,lifespan:s}=e,m=W(this.sdk.testMode?M.LoginWithEmailOTPTestMode:M.LoginWithEmailOTP,[{email:t,showUI:r,deviceCheckUI:o,overrides:a,lifespan:s}]),d=this.request(m);return!o&&d&&d.on(He.Retry,()=>{this.createIntermediaryEvent(He.Retry,m.id)()}),!r&&d&&(d.on(ye.VerifyEmailOtp,g=>{this.createIntermediaryEvent(ye.VerifyEmailOtp,m.id)(g)}),d.on(ye.VerifyMFACode,g=>{this.createIntermediaryEvent(ye.VerifyMFACode,m.id)(g)}),d.on(ye.Cancel,()=>{this.createIntermediaryEvent(ye.Cancel,m.id)()})),d}loginWithCredential(e){let{credentialOrQueryString:t,lifespan:r}=e||{},o=t!=null?t:"";if(!t&&Y.platform==="web"){o=window.location.search;let s=window.location.origin+window.location.pathname;window.history.replaceState(null,"",s)}let a=W(this.sdk.testMode?M.LoginWithCredentialTestMode:M.LoginWithCredential,[o,r]);return this.request(a)}setAuthorizationToken(e){let t=W(M.SetAuthorizationToken,[{jwt:e}]);return this.request(t)}updateEmailWithUI(e){let{email:t,showUI:r=!0}=e,o=W(this.sdk.testMode?M.UpdateEmailTestMode:M.UpdateEmail,[{email:t,showUI:r}]),a=this.request(o);return r||(a.on(he.Retry,()=>{this.createIntermediaryEvent(he.Retry,o.id)()}),a.on(he.Cancel,()=>{this.createIntermediaryEvent(he.Cancel,o.id)()}),a.on(he.VerifyEmailOtp,s=>{this.createIntermediaryEvent(he.VerifyEmailOtp,o.id)(s)}),a.on(he.VerifyMFACode,s=>{this.createIntermediaryEvent(he.VerifyMFACode,o.id)(s)}),a.on(Ee.RetryWithNewEmail,s=>{this.createIntermediaryEvent(Ee.RetryWithNewEmail,o.id)(s)}),a.on(Ee.Cancel,()=>{this.createIntermediaryEvent(Ee.Cancel,o.id)()}),a.on(Ee.VerifyEmailOtp,s=>{this.createIntermediaryEvent(Ee.VerifyEmailOtp,o.id)(s)})),a}},ln={};Ti(ln,{clear:()=>Bo,getItem:()=>se,iterate:()=>cn,key:()=>jo,keys:()=>Vo,length:()=>Go,removeItem:()=>Fe,setItem:()=>pe});var ut;function Re(e){return(...t)=>X(this,null,function*(){return ut||(ut=yield Y.configureStorage()),yield ut.ready(),ut[e](...t)})}var se=Re("getItem"),pe=Re("setItem"),Fe=Re("removeItem"),Bo=Re("clear"),Go=Re("length"),jo=Re("key"),Vo=Re("keys"),cn=Re("iterate");function qo(){let e=window.crypto.getRandomValues(new Uint8Array(16));e[6]=e[6]&15|64,e[8]=e[8]&191|128;let t="";return t+=e[0].toString(16),t+=e[1].toString(16),t+=e[2].toString(16),t+=e[3].toString(16),t+="-",t+=e[4].toString(16),t+=e[5].toString(16),t+="-",t+=e[6].toString(16),t+=e[7].toString(16),t+="-",t+=e[8].toString(16),t+=e[9].toString(16),t+="-",t+=e[10].toString(16),t+=e[11].toString(16),t+=e[12].toString(16),t+=e[13].toString(16),t+=e[14].toString(16),t+=e[15].toString(16),t}var un="STORE_KEY_PRIVATE_KEY",Ct="STORE_KEY_PUBLIC_JWK",fn="ECDSA",Ko="P-256",Ho={name:fn,namedCurve:Ko};function yt(){let e=typeof window!="undefined"&&!!window.crypto,t=e&&!!window.crypto.subtle;return e&&t}function Yo(){return X(this,null,function*(){let e=yield Xo();if(!e){console.info("unable to create public key or webcrypto is unsupported");return}let{subtle:t}=window.crypto,r=yield se(un);if(!r||!t){console.info("unable to find private key or webcrypto unsupported");return}let o={iat:Math.floor(new Date().getTime()/1e3),jti:qo()},a={typ:"dpop+jwt",alg:"ES256",jwk:e},s={protected:Kr(JSON.stringify(a)),claims:Kr(JSON.stringify(o))},m=Jo(`${s.protected}.${s.claims}`),d={name:fn,hash:{name:"SHA-256"}},g=Zo(new Uint8Array(yield t.sign(d,r,m)));return`${s.protected}.${s.claims}.${g}`})}function Xo(){return X(this,null,function*(){if(!yt()){console.info("webcrypto is not supported");return}return(yield se(Ct))||(yield zo()),se(Ct)})}function zo(){return X(this,null,function*(){let{subtle:e}=window.crypto,t=yield e.generateKey(Ho,!1,["sign"]),r=yield e.exportKey("jwk",t.publicKey);yield pe(un,t.privateKey),yield pe(Ct,r)})}function Kr(e){return dn(Qo(e))}function Jo(e){return new TextEncoder().encode(e)}function dn(e){return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+/g,"")}function Qo(e){return encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,(t,r)=>String.fromCharCode(parseInt(r,16)))}function Zo(e){let t="";return e.forEach(r=>{t+=String.fromCharCode(r)}),dn(t)}var Ft="ds",Wt="ek",Bt="iv",Gt="AES-GCM",ea=256;function jt(){return X(this,null,function*(){let e=[];yield cn((t,r,o)=>{r.startsWith(`${Ft}_`)&&e.push(r)});for(let t of e)yield Fe(t)})}function hn(e){let t="",r=new Uint8Array(e),o=r.byteLength;for(let a=0;a<o;a++)t+=String.fromCharCode(r[a]);return window.btoa(t)}function mn(e){let t=window.atob(e),r=t.length,o=new Uint8Array(r);for(let a=0;a<r;a++)o[a]=t.charCodeAt(a);return o.buffer}function ta(){return X(this,null,function*(){if(!yt()){console.info("webcrypto is not supported");return}let{crypto:e}=window;return(yield se(Bt))||e.getRandomValues(new Uint8Array(12))})}function ra(){return X(this,null,function*(){if(!yt()){console.info("webcrypto is not supported");return}let{subtle:e}=window.crypto;return(yield se(Wt))||(yield e.generateKey({name:Gt,length:ea},!1,["encrypt","decrypt"]))})}function na(e,t){return X(this,null,function*(){let r=yield ta(),o=yield ra();if(!r||!o||!e)return;let a=mn(e),{subtle:s}=window.crypto,m=yield s.encrypt({name:Gt,iv:r},o,a),d=hn(m);yield pe(`${Ft}_${t}`,d),yield pe(Wt,o),yield pe(Bt,r)})}function ia(e){return X(this,null,function*(){let t=yield se(`${Ft}_${e}`),r=yield se(Bt),o=yield se(Wt);if(!r||!t||!o||!yt())return;let{subtle:a}=window.crypto,s=yield a.decrypt({name:Gt,iv:r},o,mn(t));return hn(s)})}function tt(e,t){return t?new URL(e,t):new URL(e)}var oa=class extends Le{constructor(){super(...arguments),this.localForageKey="mc_active_wallet",this.localForageIsLoggedInKey="magic_auth_is_logged_in",this.userLoggedOutCallbacks=[]}getIdToken(e){let t=W(this.sdk.testMode?M.GetIdTokenTestMode:M.GetIdToken,[e]);return this.request(t)}generateIdToken(e){let t=W(this.sdk.testMode?M.GenerateIdTokenTestMode:M.GenerateIdToken,[e]);return this.request(t)}getInfo(){return X(this,null,function*(){let e=yield se(this.localForageKey),t=W(M.GetInfo,[{walletType:e}]);return this.request(t)})}isLoggedIn(){return et((e,t)=>X(this,null,function*(){try{let r=!1;this.sdk.useStorageCache&&(r=(yield se(this.localForageIsLoggedInKey))==="true",r&&e(!0));let o=W(this.sdk.testMode?M.IsLoggedInTestMode:M.IsLoggedIn),a=yield this.request(o);this.sdk.useStorageCache&&(a?pe(this.localForageIsLoggedInKey,!0):Fe(this.localForageIsLoggedInKey),r&&!a&&this.emitUserLoggedOut(!0)),e(a)}catch(r){t(r)}}))}logout(){return Fe(this.localForageKey),Fe(this.localForageIsLoggedInKey),jt(),et((e,t)=>X(this,null,function*(){try{let r=W(this.sdk.testMode?M.LogoutTestMode:M.Logout),o=yield this.request(r);this.sdk.useStorageCache&&this.emitUserLoggedOut(o),e(o)}catch(r){t(r)}}))}requestInfoWithUI(e){let t=W(M.RequestUserInfoWithUI,e?[e]:[]);return this.request(t)}showSettings(e){let t=W(this.sdk.testMode?M.UserSettingsTestMode:M.UserSettings,[e]);return this.request(t)}recoverAccount(e){let t=W(this.sdk.testMode?M.RecoverAccountTestMode:M.RecoverAccount,[e]);return this.request(t)}revealPrivateKey(){let e=W(M.RevealPK);return this.request(e)}getMetadata(){Je({method:"user.getMetadata()",removalVersions:Qe,useInstead:"user.getInfo()"}).log();let e=W(this.sdk.testMode?M.GetMetadataTestMode:M.GetMetadata);return this.request(e)}onUserLoggedOut(e){this.userLoggedOutCallbacks.push(e)}enableMFA(){let e=W(M.EnableMFA);return this.request(e)}disableMFA(){let e=W(M.DisableMFA);return this.request(e)}emitUserLoggedOut(e){this.userLoggedOutCallbacks.forEach(t=>{t(e)})}},aa=class extends Le{constructor(){super(...arguments),this.localForageKey="mc_active_wallet"}connectWithUI(){let e=et((t,r)=>X(this,null,function*(){try{if(this.isMetaMaskBrowser()&&(yield this.isWalletEnabled(ue.MetaMask))){let d=yield this.autoConnectIfWalletBrowser(ue.MetaMask);t(d);return}if(this.isCoinbaseWalletBrowser()&&(yield this.isWalletEnabled(ue.CoinbaseWallet))){let d=yield this.autoConnectIfWalletBrowser(ue.CoinbaseWallet);t(d);return}let o=this.getUserEnv(),a=W(M.Login,[o]),s=this.request(a);s.on(xe.WalletSelected,d=>this.handleWalletSelected($t(Pt({},d),{payloadId:a.id}))),s.on("id-token-created",d=>{e.emit("id-token-created",d)});let m=yield s;m.error&&r(m),t(m)}catch(o){r(o)}}));return e}showUI(e){return this.request(W(M.ShowUI,[e]))}showAddress(){return this.request(W(M.ShowAddress))}showSendTokensUI(){return this.request(W(M.ShowSendTokensUI))}showOnRamp(){return this.request(W(M.ShowOnRamp))}showNFTs(){return this.request(W(M.ShowNFTs))}showBalances(){return this.request(W(M.ShowBalances))}sendGaslessTransaction(e,t){return this.request(W(M.SendGaslessTransaction,[e,t]))}getInfo(){return X(this,null,function*(){Je({method:"wallet.getInfo()",removalVersions:Qe,useInstead:"user.getInfo()"}).log();let e=yield se(this.localForageKey),t=W(M.GetInfo,[{walletType:e}]);return this.request(t)})}disconnect(){Je({method:"wallet.disconnect()",removalVersions:Qe,useInstead:"user.logout()"}).log(),Fe(this.localForageKey),jt();let e=W(M.Disconnect);return this.request(e)}requestUserInfoWithUI(e){Je({method:"wallet.requestUserInfoWithUI()",removalVersions:Qe,useInstead:"user.requestUserInfoWithUI()"}).log();let t=W(M.RequestUserInfoWithUI,e?[e]:[]);return this.request(t)}getProvider(){return X(this,null,function*(){switch(yield se(this.localForageKey)){case ue.MetaMask:return this.getMetaMaskProvider();case ue.CoinbaseWallet:return this.getCoinbaseProvider();default:return this.sdk.rpcProvider}})}isMetaMaskInstalled(){var e,t,r;return((e=window.ethereum)==null?void 0:e.isMetaMask)||!!((r=(t=window.ethereum)==null?void 0:t.providers)!=null&&r.find(o=>o==null?void 0:o.isMetaMask))}isMetaMaskBrowser(){return this.isMobile()&&this.isMetaMaskInstalled()}getMetaMaskProvider(){var e,t;return((t=(e=window.ethereum)==null?void 0:e.providers)==null?void 0:t.find(r=>r==null?void 0:r.isMetaMask))||window.ethereum}connectToMetaMask(){if(this.isMobile()&&!this.isMetaMaskInstalled()){let e=`https://metamask.app.link/dapp/${window.location.href.replace(/(^\w+:|^)\/\//,"")}`;window.location.href=e}return this.getMetaMaskProvider().request({method:"eth_requestAccounts"})}isCoinbaseWalletInstalled(){var e,t,r;return((e=window.ethereum)==null?void 0:e.isCoinbaseWallet)||!!((r=(t=window.ethereum)==null?void 0:t.providers)!=null&&r.find(o=>o==null?void 0:o.isCoinbaseWallet))}isCoinbaseWalletBrowser(){var e;return!!((e=window.ethereum)!=null&&e.isCoinbaseBrowser)}getCoinbaseProvider(){var e,t;return((t=(e=window.ethereum)==null?void 0:e.providers)==null?void 0:t.find(r=>r==null?void 0:r.isCoinbaseWallet))||window.ethereum}connectToCoinbaseWallet(){if(this.isMobile()&&!this.isCoinbaseWalletBrowser()){let e=`https://go.cb-w.com/dapp?cb_url=${encodeURIComponent(window.location.href)}`;window.location.href=e}return this.getCoinbaseProvider().request({method:"eth_requestAccounts"})}isMobile(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Silk|Opera Mini/i.test(navigator.userAgent)}getUserEnv(){return{env:{isMetaMaskInstalled:this.isMetaMaskInstalled(),isCoinbaseWalletInstalled:this.isCoinbaseWalletInstalled()}}}connectToThirdPartyWallet(e){switch(e){case ue.MetaMask:return this.connectToMetaMask();case ue.CoinbaseWallet:return this.connectToCoinbaseWallet();default:throw new Error(`Invalid provider: ${e}. Must be one of "metamask" or "coinbase_wallet".`)}}isWalletEnabled(e){let t=W("mc_is_wallet_enabled",[{wallet:e}]);return this.request(t)}handleWalletSelected(e){return X(this,null,function*(){try{let t=yield this.connectToThirdPartyWallet(e.wallet);yield pe(this.localForageKey,e.wallet),this.createIntermediaryEvent(xe.WalletConnected,e.payloadId)(t)}catch(t){console.error(t),this.createIntermediaryEvent(xe.WalletRejected,e.payloadId)()}})}autoConnectIfWalletBrowser(e){return X(this,null,function*(){let t;e===ue.MetaMask&&(t=yield this.getMetaMaskProvider().request({method:"eth_requestAccounts"})),e===ue.CoinbaseWallet&&(t=yield this.getCoinbaseProvider().request({method:"eth_requestAccounts"})),yield pe(this.localForageKey,e);let r=W(M.AutoConnect,[{wallet:e,address:t}]);return this.request(r)})}},{createBoundEmitterMethod:ft,createChainingEmitterMethod:Ue}=on(),sa=class extends Le{constructor(){super(...arguments),this.isMagic=!0,this.on=Ue("on",this),this.once=Ue("once",this),this.addListener=Ue("addListener",this),this.off=Ue("off",this),this.removeListener=Ue("removeListener",this),this.removeAllListeners=Ue("removeAllListeners",this),this.emit=ft("emit"),this.eventNames=ft("eventNames"),this.listeners=ft("listeners"),this.listenerCount=ft("listenerCount")}sendAsync(e,t){if(!t)throw Lo({procedure:"Magic.rpcProvider.sendAsync",argument:1,expected:"function",received:t===null?"null":typeof t});if(Array.isArray(e))this.overlay.post(Ne.MAGIC_HANDLE_REQUEST,e.map(r=>{let o=pt(r);return this.prefixPayloadMethodForTestMode(o),o})).then(r=>{t(null,r.map(o=>$t(Pt({},o.payload),{error:o.hasError?new We(o.payload.error):null})))});else{let r=pt(e);this.prefixPayloadMethodForTestMode(r),this.overlay.post(Ne.MAGIC_HANDLE_REQUEST,r).then(o=>{t(o.hasError?new We(o.payload.error):null,o.payload)})}}send(e,t){if(typeof e=="string"){let o=W(e,Array.isArray(t)?t:[]);return this.request(o)}if(Array.isArray(e)||!!t){this.sendAsync(e,t);return}let r=Co();return r.log(),new Ut(e).applyError({code:-32603,message:r.rawMessage}).payload}enable(){let e=W(M.Login);return this.request(e)}request(e){return this.prefixPayloadMethodForTestMode(e),super.request(e)}prefixPayloadMethodForTestMode(e){let t="testMode/eth/";this.sdk.testMode&&(e.method=`${t}${e.method}`)}},Hr=["request","overlay","sdk"];function la(e){let t=Object.getPrototypeOf(e),r=[t];for(;t!==Le.prototype;)t=Object.getPrototypeOf(t),r.push(t);return r}var pn=class extends Le{constructor(){super(void 0),this.__sdk_access_field_descriptors__=new Map,this.__is_initialized__=!1,this.utils={createPromiEvent:et,isPromiEvent:kt,encodeJSON:Jr,decodeJSON:wo,createJsonRpcRequestPayload:W,standardizeJsonRpcRequestPayload:pt,storage:ln};let e=[this,...la(this)];Hr.forEach(t=>{let r=e.map(m=>Object.getOwnPropertyDescriptor(m,t)),o=r.findIndex(m=>!!m),a=o>0,s=r[o];s&&(this.__sdk_access_field_descriptors__.set(t,{descriptor:s,isPrototypeField:a}),Object.defineProperty(this,t,{configurable:!0,get:()=>{throw To(t)}}))})}init(e){this.__is_initialized__||(Hr.forEach(t=>{if(this.__sdk_access_field_descriptors__.has(t)){let{descriptor:r,isPrototypeField:o}=this.__sdk_access_field_descriptors__.get(t);o?delete this[t]:Object.defineProperty(this,t,r)}}),this.sdk=e,this.__is_initialized__=!0)}createDeprecationWarning(e){let{method:t,removalVersion:r,useInstead:o}=e,a=o?` Use \`${o}\` instead.`:"",s=`\`${t}\` will be removed from this Extension in version \`${r}\`.${a}`;return new mt(this,"DEPRECATION_NOTICE",s)}createWarning(e,t){return new mt(this,e,t)}createError(e,t,r){return new gt(this,e,t,r)}},ca=class extends pn{},Te=class extends pn{};Te.Internal=ca,Te.Anonymous="anonymous extension";var ua=class extends Le{purchase(e){let t=W(M.NFTPurchase,[e]);return this.request(t)}checkout(e){let t=W(M.NFTCheckout,[e]);return this.request(t)}transfer(e){let t=W(M.NFTTransfer,[e]);return this.request(t)}};function Yr(e){return e.compat&&e.compat[Y.sdkName]!=null?typeof e.compat[Y.sdkName]=="string"?ho(go(Y.version),e.compat[Y.sdkName]):!!e.compat[Y.sdkName]:!0}function fa(e,t,r){return!t&&!r?`${e}_eth_mainnet`:r?`${e}_${JSON.stringify(r)}`:t?typeof t=="string"?`${e}_eth_${t}`:`${e}_${t.rpcUrl}_${t.chainId}_${t.chainType}`:`${e}_unknown`}function da(e){var t;let r=(t=e==null?void 0:e.extensions)!=null?t:[],o={},a=[];if(Array.isArray(r)?r.forEach(s=>{Yr(s)?(s.init(this),(s.name||s.name!==Te.Anonymous)&&(this[s.name]=s),s instanceof Te.Internal&&(ht(s.config)||(o[s.name]=s.config))):a.push(s)}):Object.keys(r).forEach(s=>{if(Yr(r[s])){r[s].init(this);let m=r[s];this[s]=m,m instanceof Te.Internal&&(ht(m.config)||(o[r[s].name]=m.config))}else a.push(r[s])}),a.length)throw Mo(a);return o}var dt=class{constructor(e,t){this.apiKey=e;var r;if(!e)throw No();Y.platform==="react-native"&&(t==null?void 0:t.endpoint)&&Po().log();let{defaultEndpoint:o,version:a}=Y;this.testMode=!!(t!=null&&t.testMode),this.useStorageCache=!!(t!=null&&t.useStorageCache),this.endpoint=tt((r=t==null?void 0:t.endpoint)!=null?r:o).origin,this.auth=new Wo(this),this.user=new oa(this),this.wallet=new aa(this),this.nft=new ua(this),this.rpcProvider=new sa(this);let s=da.call(this,t);this.parameters=Jr($t(Pt({API_KEY:this.apiKey,DOMAIN_ORIGIN:window.location?window.location.origin:"",ETH_NETWORK:t==null?void 0:t.network,host:tt(this.endpoint).host,sdk:So[Y.sdkName],version:a,ext:ht(s)?void 0:s,locale:(t==null?void 0:t.locale)||"en_US"},Y.bundleId?{bundleId:Y.bundleId}:{}),{meta:t==null?void 0:t.meta})),this.networkHash=fa(this.apiKey,t==null?void 0:t.network,ht(s)?void 0:s),t!=null&&t.deferPreload||this.preload()}get overlay(){if(!dt.__overlays__.has(this.parameters)){let e=new Y.ViewController(this.endpoint,this.parameters,this.networkHash);e.init(),dt.__overlays__.set(this.parameters,e)}return dt.__overlays__.get(this.parameters)}preload(){return X(this,null,function*(){yield this.overlay.checkIsReadyForRequest})}},Vt=dt;Vt.__overlays__=new Map;function ha(e,t){return t&&Array.isArray(e)?e.find(r=>r.id===t):e}function ma(e,t){var r;let o=(r=t.data.response)==null?void 0:r.id,a=ha(e,o);if(o&&a){let s=new Ut(a).applyResult(t.data.response.result).applyError(t.data.response.error);return{id:o,response:s}}return{}}function pa(e,t,r){return X(this,null,function*(){var o;let a=yield se("rt"),s;if(Y.platform==="web")try{s=(o=yield se("jwt"))!=null?o:yield Yo()}catch(g){console.error("webcrypto error",g)}let m={msgType:e,payload:t};s&&(m.jwt=s),s&&a&&(m.rt=a);let d=yield ia(r);return d&&(m.deviceShare=d),m})}function va(e){return X(this,null,function*(){!e.data.rt||(yield pe("rt",e.data.rt))})}var vn=class{constructor(e,t,r){this.endpoint=e,this.parameters=t,this.networkHash=r,this.messageHandlers=new Set,this.isConnectedToInternet=!0,this.checkIsReadyForRequest=this.waitForReady(),this.isReadyForRequest=!1,this.listen()}post(e,t){return X(this,null,function*(){return sn((r,o)=>X(this,null,function*(){if(!this.isConnectedToInternet){let v=xt();o(v)}this.isReadyForRequest||(yield this.waitForReady());let a=[],s=Array.isArray(t)?t.map(v=>v.id):[],m=yield pa(`${e}-${this.parameters}`,t,this.networkHash);yield this._post(m);let d=v=>y=>{var O;let{id:_,response:N}=ma(t,y);if(va(y),((O=N==null?void 0:N.payload.error)==null?void 0:O.message)==="User denied account access.")jt();else if(y.data.deviceShare){let{deviceShare:L}=y.data;na(L,this.networkHash)}_&&N&&Array.isArray(t)&&s.includes(_)?(a.push(N),a.length===t.length&&(v(),r(a))):_&&N&&!Array.isArray(t)&&_===t.id&&(v(),r(N))},g=this.on(me.MAGIC_HANDLE_RESPONSE,d(()=>g()))}))})}on(e,t){let r=t.bind(window),o=a=>{a.data.msgType===`${e}-${this.parameters}`&&r(a)};return this.messageHandlers.add(o),()=>this.messageHandlers.delete(o)}waitForReady(){return new Promise(e=>{let t=this.on(me.MAGIC_OVERLAY_READY,()=>{this.isReadyForRequest=!0,e(),t()});setTimeout(()=>{this.isReadyForRequest=!0,e(),t()},15e3)})}listen(){this.on(me.MAGIC_HIDE_OVERLAY,()=>{this.hideOverlay()}),this.on(me.MAGIC_SHOW_OVERLAY,()=>{this.showOverlay()}),this.on(me.MAGIC_SEND_PRODUCT_ANNOUNCEMENT,e=>{e.data.response.result.product_announcement&&new Me(ge.ProductAnnouncement,e.data.response.result.product_announcement).log()})}};var qt={};yr(qt,{AuthEventOnReceived:()=>Tr,DeepLinkPage:()=>Ir,DeviceVerificationEventEmit:()=>He,DeviceVerificationEventOnReceived:()=>Sr,EthChainType:()=>Lr,Events:()=>xe,Extension:()=>Te,ExtensionError:()=>gt,ExtensionWarning:()=>mt,FarcasterLoginEventEmit:()=>Mr,LoginWithEmailOTPEventEmit:()=>ye,LoginWithEmailOTPEventOnReceived:()=>Ar,LoginWithMagicLinkEventEmit:()=>wr,LoginWithMagicLinkEventOnReceived:()=>br,LoginWithSmsOTPEventEmit:()=>Oe,LoginWithSmsOTPEventOnReceived:()=>Rr,MagicIncomingWindowMessage:()=>me,MagicOutgoingWindowMessage:()=>Ne,MagicPayloadMethod:()=>M,NftCheckoutIntermediaryEvents:()=>Pr,RPCError:()=>We,RPCErrorCode:()=>De,RecencyCheckEventEmit:()=>he,RecencyCheckEventOnReceived:()=>Nr,RecoveryMethodType:()=>Cr,SDKError:()=>_e,SDKErrorCode:()=>ve,SDKWarning:()=>Me,SDKWarningCode:()=>ge,UpdateEmailEventEmit:()=>Ee,UpdateEmailEventOnReceived:()=>Or,UserEventsEmit:()=>ot,UserEventsOnReceived:()=>at,WalletEventOnReceived:()=>$r,Wallets:()=>ue,isPromiEvent:()=>kt});var It=_r(yn()),Ht=_r(_n());var ga={display:"block",visibility:"hidden",position:"fixed",top:"0",right:"0",width:"100%",height:"100%",borderRadius:"0",border:"none",zIndex:"2147483647"};function ya(e){for(let[t,r]of Object.entries(ga))e.style[t]=r}function Ea(e){let t=[].slice.call(document.querySelectorAll(".magic-iframe"));return Boolean(t.find(r=>r.src.includes(e)))}var _t=class extends vn{constructor(){super(...arguments);this.activeElement=null}init(){this.test="hello",this.iframe=new Promise(r=>{let o=()=>{if(Ea(encodeURIComponent(this.parameters)))en().log();else{let a=document.createElement("iframe");a.classList.add("magic-iframe"),a.dataset.magicIframeLabel=tt(this.endpoint).host,a.title="Secure Modal",a.src=tt(`/send?params=${encodeURIComponent(this.parameters)}`,this.endpoint).href,a.allow="clipboard-read; clipboard-write",ya(a),document.body.appendChild(a),r(a)}};["loaded","interactive","complete"].includes(document.readyState)?o():window.addEventListener("load",o,!1)}),window.addEventListener("message",r=>{var o;if(r.origin===this.endpoint&&r.data&&r.data.msgType&&this.messageHandlers.size){r.data.response=(o=r.data.response)!=null?o:{};for(let a of this.messageHandlers.values())a(r)}})}showOverlay(){return $e(this,null,function*(){let r=yield this.iframe;r.style.visibility="visible",this.activeElement=document.activeElement,r.focus()})}hideOverlay(){return $e(this,null,function*(){var o;let r=yield this.iframe;r.style.visibility="hidden",(o=this.activeElement)!=null&&o.focus&&this.activeElement.focus(),this.activeElement=null})}_post(r){return $e(this,null,function*(){let o=yield this.iframe;if(o&&o.contentWindow)o.contentWindow.postMessage(r,this.endpoint);else throw xt()})}};var _a=Object.assign(Zr(Vt,{platform:"web",sdkName:"magic-sdk",version:"28.5.0",defaultEndpoint:"https://auth.magic.link/",ViewController:_t,configureStorage:()=>$e(void 0,null,function*(){let e=It.default.createInstance({name:"MagicAuthLocalStorageDB",storeName:"MagicAuthLocalStorage"});return yield e.defineDriver(Ht),yield e.setDriver([It.default.INDEXEDDB,It.default.LOCALSTORAGE,Ht._driver]),e})}),vr({},qt)),Ia=_a;return _i(wa);})();
5
+ Received: \`${e.received}\``)}function en(){return new Me(ge.DuplicateIframe,"Duplicate iframes found.")}function Co(){return new Me(ge.SyncWeb3Method,"Non-async web3 methods are deprecated in web3 > 1.0 and are not supported by the Magic web3 provider. Please use an async method instead.")}function Po(){return new Me(ge.ReactNativeEndpointConfiguration,`CUSTOM DOMAINS ARE NOT SUPPORTED WHEN USING MAGIC SDK WITH REACT NATIVE! The \`endpoint\` parameter SHOULD NOT be provided. The Magic \`<iframe>\` is automatically wrapped by a WebView pointed at \`${Y.defaultEndpoint}\`. Changing this default behavior will lead to unexpected results and potentially security-threatening bugs.`)}function Je(e){let{method:t,removalVersions:r,useInstead:o}=e,a=r[Y.sdkName],s=o?` Use \`${o}\` instead.`:"",m=`\`${t}\` will be removed from \`${Y.sdkName}\` in version \`${a}\`.${s}`;return new Me(ge.DeprecationNotice,m)}function*$o(){let e=0;for(;;)e<Number.MAX_SAFE_INTEGER?yield++e:e=0}var Do=$o();function tn(){return Do.next().value}var rn=Symbol("Payload pre-processed by Magic SDK");function nn(e){return Object.defineProperty(e,rn,{value:!0,enumerable:!1}),e}function xo(e){return!!e[rn]}function pt(e){var t,r,o;return xo(e)||(e.jsonrpc=(t=e.jsonrpc)!=null?t:"2.0",e.id=tn(),e.method=(r=e.method)!=null?r:"noop",e.params=(o=e.params)!=null?o:[],nn(e)),e}function W(e,t=[]){return nn({params:t,method:e,jsonrpc:"2.0",id:tn()})}var Ut=class{constructor(e){e instanceof Ut?(this._jsonrpc=e.payload.jsonrpc,this._id=e.payload.id,this._result=e.payload.result,this._error=e.payload.error):Ro(e)?(this._jsonrpc=e.jsonrpc,this._id=e.id,this._result=e.result,this._error=e.error):(this._jsonrpc=e.jsonrpc,this._id=e.id,this._result=void 0,this._error=void 0)}applyError(e){return this._error=e,this}applyResult(e){return this._result=e,this}get hasError(){return typeof this._error!="undefined"&&this._error!==null}get hasResult(){return typeof this._result!="undefined"}get payload(){return{jsonrpc:this._jsonrpc,id:this._id,result:this._result,error:this._error}}},Uo=Li(Ci()),ko=class extends Uo.default{};function on(){let e=new ko;return{emitter:e,createChainingEmitterMethod:(t,r)=>(...o)=>(e[t].apply(e,o),r),createBoundEmitterMethod:t=>(...r)=>e[t].apply(e,r)}}var an=Symbol("isPromiEvent");function kt(e){return!!e[an]}function et(e){let t=sn(e),{createBoundEmitterMethod:r,createChainingEmitterMethod:o}=on(),a=Symbol("Promise.then"),s=Symbol("Promise.catch"),m=Symbol("Promise.finally"),d=(y,O)=>(..._)=>{let N=O[y].apply(O,_);return g(N)},g=y=>Object.assign(y,{[an]:!0,[a]:y[a]||y.then,[s]:y[s]||y.catch,[m]:y[m]||y.finally,then:d(a,y),catch:d(s,y),finally:d(m,y),on:o("on",y),once:o("once",y),addListener:o("addListener",y),off:o("off",y),removeListener:o("removeListener",y),removeAllListeners:o("removeAllListeners",y),emit:r("emit"),eventNames:r("eventNames"),listeners:r("listeners"),listenerCount:r("listenerCount")}),v=g(t.then(y=>(v.emit("done",y),v.emit("settled"),y),y=>{throw v.emit("error",y),v.emit("settled"),y}));return v.on(at.ClosedByUser,()=>{v.emit(ot.ClosedByUser)}),v}function sn(e){return new Promise((t,r)=>{let o=e(t,r);Promise.resolve(o).catch(r)})}var Le=class{constructor(e){this.sdk=e}get overlay(){return this.sdk.overlay}request(e){let t=this.overlay.post(Ne.MAGIC_HANDLE_REQUEST,pt(e)),r=et((a,s)=>{t.then(m=>{if(o(),m.hasError)s(new We(m.payload.error));else if(m.hasResult)a(m.payload.result);else throw Oo()}).catch(m=>{o(),s(m)})}),o=this.overlay.on(me.MAGIC_HANDLE_EVENT,a=>{var s;let{response:m}=a.data;if(m.id===e.id&&((s=m.result)==null?void 0:s.event)){let{event:d,params:g=[]}=m.result;r.emit(d,...g)}});return r}createIntermediaryEvent(e,t){return r=>{let o=W(M.IntermediaryEvent,[{payloadId:t,eventType:e,args:r}]);this.request(o)}}};function Fo(e,t){let[r]=e.split(".").map(Number);return r>=t}var Qe={"magic-sdk":"v18.0.0","@magic-sdk/react-native":"v14.0.0","@magic-sdk/react-native-bare":"v19.0.0","@magic-sdk/react-native-expo":"v19.0.0"},Wo=class extends Le{loginWithMagicLink(e){let t=Y.sdkName==="@magic-sdk/react-native"||Y.sdkName==="@magic-sdk/react-native-bare"||Y.sdkName==="@magic-sdk/react-native-expo";if(t&&Fo(Y.version,19))throw new Error("loginWithMagicLink() is deprecated for this package, please utlize a passcode method like loginWithSMS or loginWithEmailOTP instead.");t&&Je({method:"auth.loginWithMagicLink()",removalVersions:Qe,useInstead:"auth.loginWithEmailOTP()"}).log();let{email:r,showUI:o=!0,redirectURI:a,overrides:s,lifespan:m}=e,d=W(this.sdk.testMode?M.LoginWithMagicLinkTestMode:M.LoginWithMagicLink,[{email:r,showUI:o,redirectURI:a,overrides:s,lifespan:m}]);return this.request(d)}loginWithSMS(e){let{phoneNumber:t,showUI:r=!0,lifespan:o}=e,a=W(this.sdk.testMode?M.LoginWithSmsTestMode:M.LoginWithSms,[{phoneNumber:t,showUI:r,lifespan:o}]),s=this.request(a);return!r&&s&&(s.on(Oe.VerifySmsOtp,m=>{this.createIntermediaryEvent(Oe.VerifySmsOtp,a.id)(m)}),s.on(Oe.Cancel,()=>{this.createIntermediaryEvent(Oe.Cancel,a.id)()})),s}loginWithEmailOTP(e){let{email:t,showUI:r,deviceCheckUI:o,overrides:a,lifespan:s}=e,m=W(this.sdk.testMode?M.LoginWithEmailOTPTestMode:M.LoginWithEmailOTP,[{email:t,showUI:r,deviceCheckUI:o,overrides:a,lifespan:s}]),d=this.request(m);return!o&&d&&d.on(He.Retry,()=>{this.createIntermediaryEvent(He.Retry,m.id)()}),!r&&d&&(d.on(ye.VerifyEmailOtp,g=>{this.createIntermediaryEvent(ye.VerifyEmailOtp,m.id)(g)}),d.on(ye.VerifyMFACode,g=>{this.createIntermediaryEvent(ye.VerifyMFACode,m.id)(g)}),d.on(ye.Cancel,()=>{this.createIntermediaryEvent(ye.Cancel,m.id)()})),d}loginWithCredential(e){let{credentialOrQueryString:t,lifespan:r}=e||{},o=t!=null?t:"";if(!t&&Y.platform==="web"){o=window.location.search;let s=window.location.origin+window.location.pathname;window.history.replaceState(null,"",s)}let a=W(this.sdk.testMode?M.LoginWithCredentialTestMode:M.LoginWithCredential,[o,r]);return this.request(a)}setAuthorizationToken(e){let t=W(M.SetAuthorizationToken,[{jwt:e}]);return this.request(t)}updateEmailWithUI(e){let{email:t,showUI:r=!0}=e,o=W(this.sdk.testMode?M.UpdateEmailTestMode:M.UpdateEmail,[{email:t,showUI:r}]),a=this.request(o);return r||(a.on(he.Retry,()=>{this.createIntermediaryEvent(he.Retry,o.id)()}),a.on(he.Cancel,()=>{this.createIntermediaryEvent(he.Cancel,o.id)()}),a.on(he.VerifyEmailOtp,s=>{this.createIntermediaryEvent(he.VerifyEmailOtp,o.id)(s)}),a.on(he.VerifyMFACode,s=>{this.createIntermediaryEvent(he.VerifyMFACode,o.id)(s)}),a.on(Ee.RetryWithNewEmail,s=>{this.createIntermediaryEvent(Ee.RetryWithNewEmail,o.id)(s)}),a.on(Ee.Cancel,()=>{this.createIntermediaryEvent(Ee.Cancel,o.id)()}),a.on(Ee.VerifyEmailOtp,s=>{this.createIntermediaryEvent(Ee.VerifyEmailOtp,o.id)(s)})),a}},ln={};Ti(ln,{clear:()=>Bo,getItem:()=>se,iterate:()=>cn,key:()=>jo,keys:()=>Vo,length:()=>Go,removeItem:()=>Fe,setItem:()=>pe});var ut;function Re(e){return(...t)=>X(this,null,function*(){return ut||(ut=yield Y.configureStorage()),yield ut.ready(),ut[e](...t)})}var se=Re("getItem"),pe=Re("setItem"),Fe=Re("removeItem"),Bo=Re("clear"),Go=Re("length"),jo=Re("key"),Vo=Re("keys"),cn=Re("iterate");function qo(){let e=window.crypto.getRandomValues(new Uint8Array(16));e[6]=e[6]&15|64,e[8]=e[8]&191|128;let t="";return t+=e[0].toString(16),t+=e[1].toString(16),t+=e[2].toString(16),t+=e[3].toString(16),t+="-",t+=e[4].toString(16),t+=e[5].toString(16),t+="-",t+=e[6].toString(16),t+=e[7].toString(16),t+="-",t+=e[8].toString(16),t+=e[9].toString(16),t+="-",t+=e[10].toString(16),t+=e[11].toString(16),t+=e[12].toString(16),t+=e[13].toString(16),t+=e[14].toString(16),t+=e[15].toString(16),t}var un="STORE_KEY_PRIVATE_KEY",Ct="STORE_KEY_PUBLIC_JWK",fn="ECDSA",Ko="P-256",Ho={name:fn,namedCurve:Ko};function yt(){let e=typeof window!="undefined"&&!!window.crypto,t=e&&!!window.crypto.subtle;return e&&t}function Yo(){return X(this,null,function*(){let e=yield Xo();if(!e){console.info("unable to create public key or webcrypto is unsupported");return}let{subtle:t}=window.crypto,r=yield se(un);if(!r||!t){console.info("unable to find private key or webcrypto unsupported");return}let o={iat:Math.floor(new Date().getTime()/1e3),jti:qo()},a={typ:"dpop+jwt",alg:"ES256",jwk:e},s={protected:Kr(JSON.stringify(a)),claims:Kr(JSON.stringify(o))},m=Jo(`${s.protected}.${s.claims}`),d={name:fn,hash:{name:"SHA-256"}},g=Zo(new Uint8Array(yield t.sign(d,r,m)));return`${s.protected}.${s.claims}.${g}`})}function Xo(){return X(this,null,function*(){if(!yt()){console.info("webcrypto is not supported");return}return(yield se(Ct))||(yield zo()),se(Ct)})}function zo(){return X(this,null,function*(){let{subtle:e}=window.crypto,t=yield e.generateKey(Ho,!1,["sign"]),r=yield e.exportKey("jwk",t.publicKey);yield pe(un,t.privateKey),yield pe(Ct,r)})}function Kr(e){return dn(Qo(e))}function Jo(e){return new TextEncoder().encode(e)}function dn(e){return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+/g,"")}function Qo(e){return encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,(t,r)=>String.fromCharCode(parseInt(r,16)))}function Zo(e){let t="";return e.forEach(r=>{t+=String.fromCharCode(r)}),dn(t)}var Ft="ds",Wt="ek",Bt="iv",Gt="AES-GCM",ea=256;function jt(){return X(this,null,function*(){let e=[];yield cn((t,r,o)=>{r.startsWith(`${Ft}_`)&&e.push(r)});for(let t of e)yield Fe(t)})}function hn(e){let t="",r=new Uint8Array(e),o=r.byteLength;for(let a=0;a<o;a++)t+=String.fromCharCode(r[a]);return window.btoa(t)}function mn(e){let t=window.atob(e),r=t.length,o=new Uint8Array(r);for(let a=0;a<r;a++)o[a]=t.charCodeAt(a);return o.buffer}function ta(){return X(this,null,function*(){if(!yt()){console.info("webcrypto is not supported");return}let{crypto:e}=window;return(yield se(Bt))||e.getRandomValues(new Uint8Array(12))})}function ra(){return X(this,null,function*(){if(!yt()){console.info("webcrypto is not supported");return}let{subtle:e}=window.crypto;return(yield se(Wt))||(yield e.generateKey({name:Gt,length:ea},!1,["encrypt","decrypt"]))})}function na(e,t){return X(this,null,function*(){let r=yield ta(),o=yield ra();if(!r||!o||!e)return;let a=mn(e),{subtle:s}=window.crypto,m=yield s.encrypt({name:Gt,iv:r},o,a),d=hn(m);yield pe(`${Ft}_${t}`,d),yield pe(Wt,o),yield pe(Bt,r)})}function ia(e){return X(this,null,function*(){let t=yield se(`${Ft}_${e}`),r=yield se(Bt),o=yield se(Wt);if(!r||!t||!o||!yt())return;let{subtle:a}=window.crypto,s=yield a.decrypt({name:Gt,iv:r},o,mn(t));return hn(s)})}function tt(e,t){return t?new URL(e,t):new URL(e)}var oa=class extends Le{constructor(){super(...arguments),this.localForageKey="mc_active_wallet",this.localForageIsLoggedInKey="magic_auth_is_logged_in",this.userLoggedOutCallbacks=[]}getIdToken(e){let t=W(this.sdk.testMode?M.GetIdTokenTestMode:M.GetIdToken,[e]);return this.request(t)}generateIdToken(e){let t=W(this.sdk.testMode?M.GenerateIdTokenTestMode:M.GenerateIdToken,[e]);return this.request(t)}getInfo(){return X(this,null,function*(){let e=yield se(this.localForageKey),t=W(M.GetInfo,[{walletType:e}]);return this.request(t)})}isLoggedIn(){return et((e,t)=>X(this,null,function*(){try{let r=!1;this.sdk.useStorageCache&&(r=(yield se(this.localForageIsLoggedInKey))==="true",r&&e(!0));let o=W(this.sdk.testMode?M.IsLoggedInTestMode:M.IsLoggedIn),a=yield this.request(o);this.sdk.useStorageCache&&(a?pe(this.localForageIsLoggedInKey,!0):Fe(this.localForageIsLoggedInKey),r&&!a&&this.emitUserLoggedOut(!0)),e(a)}catch(r){t(r)}}))}logout(){return Fe(this.localForageKey),Fe(this.localForageIsLoggedInKey),jt(),et((e,t)=>X(this,null,function*(){try{let r=W(this.sdk.testMode?M.LogoutTestMode:M.Logout),o=yield this.request(r);this.sdk.useStorageCache&&this.emitUserLoggedOut(o),e(o)}catch(r){t(r)}}))}requestInfoWithUI(e){let t=W(M.RequestUserInfoWithUI,e?[e]:[]);return this.request(t)}showSettings(e){let t=W(this.sdk.testMode?M.UserSettingsTestMode:M.UserSettings,[e]);return this.request(t)}recoverAccount(e){let t=W(this.sdk.testMode?M.RecoverAccountTestMode:M.RecoverAccount,[e]);return this.request(t)}revealPrivateKey(){let e=W(M.RevealPK);return this.request(e)}getMetadata(){Je({method:"user.getMetadata()",removalVersions:Qe,useInstead:"user.getInfo()"}).log();let e=W(this.sdk.testMode?M.GetMetadataTestMode:M.GetMetadata);return this.request(e)}onUserLoggedOut(e){this.userLoggedOutCallbacks.push(e)}enableMFA(){let e=W(M.EnableMFA);return this.request(e)}disableMFA(){let e=W(M.DisableMFA);return this.request(e)}emitUserLoggedOut(e){this.userLoggedOutCallbacks.forEach(t=>{t(e)})}},aa=class extends Le{constructor(){super(...arguments),this.localForageKey="mc_active_wallet"}connectWithUI(){let e=et((t,r)=>X(this,null,function*(){try{if(this.isMetaMaskBrowser()&&(yield this.isWalletEnabled(ue.MetaMask))){let d=yield this.autoConnectIfWalletBrowser(ue.MetaMask);t(d);return}if(this.isCoinbaseWalletBrowser()&&(yield this.isWalletEnabled(ue.CoinbaseWallet))){let d=yield this.autoConnectIfWalletBrowser(ue.CoinbaseWallet);t(d);return}let o=this.getUserEnv(),a=W(M.Login,[o]),s=this.request(a);s.on(xe.WalletSelected,d=>this.handleWalletSelected($t(Pt({},d),{payloadId:a.id}))),s.on("id-token-created",d=>{e.emit("id-token-created",d)});let m=yield s;m.error&&r(m),t(m)}catch(o){r(o)}}));return e}showUI(e){return this.request(W(M.ShowUI,[e]))}showAddress(){return this.request(W(M.ShowAddress))}showSendTokensUI(){return this.request(W(M.ShowSendTokensUI))}showOnRamp(){return this.request(W(M.ShowOnRamp))}showNFTs(){return this.request(W(M.ShowNFTs))}showBalances(){return this.request(W(M.ShowBalances))}sendGaslessTransaction(e,t){return this.request(W(M.SendGaslessTransaction,[e,t]))}getInfo(){return X(this,null,function*(){Je({method:"wallet.getInfo()",removalVersions:Qe,useInstead:"user.getInfo()"}).log();let e=yield se(this.localForageKey),t=W(M.GetInfo,[{walletType:e}]);return this.request(t)})}disconnect(){Je({method:"wallet.disconnect()",removalVersions:Qe,useInstead:"user.logout()"}).log(),Fe(this.localForageKey),jt();let e=W(M.Disconnect);return this.request(e)}requestUserInfoWithUI(e){Je({method:"wallet.requestUserInfoWithUI()",removalVersions:Qe,useInstead:"user.requestUserInfoWithUI()"}).log();let t=W(M.RequestUserInfoWithUI,e?[e]:[]);return this.request(t)}getProvider(){return X(this,null,function*(){switch(yield se(this.localForageKey)){case ue.MetaMask:return this.getMetaMaskProvider();case ue.CoinbaseWallet:return this.getCoinbaseProvider();default:return this.sdk.rpcProvider}})}isMetaMaskInstalled(){var e,t,r;return((e=window.ethereum)==null?void 0:e.isMetaMask)||!!((r=(t=window.ethereum)==null?void 0:t.providers)!=null&&r.find(o=>o==null?void 0:o.isMetaMask))}isMetaMaskBrowser(){return this.isMobile()&&this.isMetaMaskInstalled()}getMetaMaskProvider(){var e,t;return((t=(e=window.ethereum)==null?void 0:e.providers)==null?void 0:t.find(r=>r==null?void 0:r.isMetaMask))||window.ethereum}connectToMetaMask(){if(this.isMobile()&&!this.isMetaMaskInstalled()){let e=`https://metamask.app.link/dapp/${window.location.href.replace(/(^\w+:|^)\/\//,"")}`;window.location.href=e}return this.getMetaMaskProvider().request({method:"eth_requestAccounts"})}isCoinbaseWalletInstalled(){var e,t,r;return((e=window.ethereum)==null?void 0:e.isCoinbaseWallet)||!!((r=(t=window.ethereum)==null?void 0:t.providers)!=null&&r.find(o=>o==null?void 0:o.isCoinbaseWallet))}isCoinbaseWalletBrowser(){var e;return!!((e=window.ethereum)!=null&&e.isCoinbaseBrowser)}getCoinbaseProvider(){var e,t;return((t=(e=window.ethereum)==null?void 0:e.providers)==null?void 0:t.find(r=>r==null?void 0:r.isCoinbaseWallet))||window.ethereum}connectToCoinbaseWallet(){if(this.isMobile()&&!this.isCoinbaseWalletBrowser()){let e=`https://go.cb-w.com/dapp?cb_url=${encodeURIComponent(window.location.href)}`;window.location.href=e}return this.getCoinbaseProvider().request({method:"eth_requestAccounts"})}isMobile(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Silk|Opera Mini/i.test(navigator.userAgent)}getUserEnv(){return{env:{isMetaMaskInstalled:this.isMetaMaskInstalled(),isCoinbaseWalletInstalled:this.isCoinbaseWalletInstalled()}}}connectToThirdPartyWallet(e){switch(e){case ue.MetaMask:return this.connectToMetaMask();case ue.CoinbaseWallet:return this.connectToCoinbaseWallet();default:throw new Error(`Invalid provider: ${e}. Must be one of "metamask" or "coinbase_wallet".`)}}isWalletEnabled(e){let t=W("mc_is_wallet_enabled",[{wallet:e}]);return this.request(t)}handleWalletSelected(e){return X(this,null,function*(){try{let t=yield this.connectToThirdPartyWallet(e.wallet);yield pe(this.localForageKey,e.wallet),this.createIntermediaryEvent(xe.WalletConnected,e.payloadId)(t)}catch(t){console.error(t),this.createIntermediaryEvent(xe.WalletRejected,e.payloadId)()}})}autoConnectIfWalletBrowser(e){return X(this,null,function*(){let t;e===ue.MetaMask&&(t=yield this.getMetaMaskProvider().request({method:"eth_requestAccounts"})),e===ue.CoinbaseWallet&&(t=yield this.getCoinbaseProvider().request({method:"eth_requestAccounts"})),yield pe(this.localForageKey,e);let r=W(M.AutoConnect,[{wallet:e,address:t}]);return this.request(r)})}},{createBoundEmitterMethod:ft,createChainingEmitterMethod:Ue}=on(),sa=class extends Le{constructor(){super(...arguments),this.isMagic=!0,this.on=Ue("on",this),this.once=Ue("once",this),this.addListener=Ue("addListener",this),this.off=Ue("off",this),this.removeListener=Ue("removeListener",this),this.removeAllListeners=Ue("removeAllListeners",this),this.emit=ft("emit"),this.eventNames=ft("eventNames"),this.listeners=ft("listeners"),this.listenerCount=ft("listenerCount")}sendAsync(e,t){if(!t)throw Lo({procedure:"Magic.rpcProvider.sendAsync",argument:1,expected:"function",received:t===null?"null":typeof t});if(Array.isArray(e))this.overlay.post(Ne.MAGIC_HANDLE_REQUEST,e.map(r=>{let o=pt(r);return this.prefixPayloadMethodForTestMode(o),o})).then(r=>{t(null,r.map(o=>$t(Pt({},o.payload),{error:o.hasError?new We(o.payload.error):null})))});else{let r=pt(e);this.prefixPayloadMethodForTestMode(r),this.overlay.post(Ne.MAGIC_HANDLE_REQUEST,r).then(o=>{t(o.hasError?new We(o.payload.error):null,o.payload)})}}send(e,t){if(typeof e=="string"){let o=W(e,Array.isArray(t)?t:[]);return this.request(o)}if(Array.isArray(e)||!!t){this.sendAsync(e,t);return}let r=Co();return r.log(),new Ut(e).applyError({code:-32603,message:r.rawMessage}).payload}enable(){let e=W(M.Login);return this.request(e)}request(e){return this.prefixPayloadMethodForTestMode(e),super.request(e)}prefixPayloadMethodForTestMode(e){let t="testMode/eth/";this.sdk.testMode&&(e.method=`${t}${e.method}`)}},Hr=["request","overlay","sdk"];function la(e){let t=Object.getPrototypeOf(e),r=[t];for(;t!==Le.prototype;)t=Object.getPrototypeOf(t),r.push(t);return r}var pn=class extends Le{constructor(){super(void 0),this.__sdk_access_field_descriptors__=new Map,this.__is_initialized__=!1,this.utils={createPromiEvent:et,isPromiEvent:kt,encodeJSON:Jr,decodeJSON:wo,createJsonRpcRequestPayload:W,standardizeJsonRpcRequestPayload:pt,storage:ln};let e=[this,...la(this)];Hr.forEach(t=>{let r=e.map(m=>Object.getOwnPropertyDescriptor(m,t)),o=r.findIndex(m=>!!m),a=o>0,s=r[o];s&&(this.__sdk_access_field_descriptors__.set(t,{descriptor:s,isPrototypeField:a}),Object.defineProperty(this,t,{configurable:!0,get:()=>{throw To(t)}}))})}init(e){this.__is_initialized__||(Hr.forEach(t=>{if(this.__sdk_access_field_descriptors__.has(t)){let{descriptor:r,isPrototypeField:o}=this.__sdk_access_field_descriptors__.get(t);o?delete this[t]:Object.defineProperty(this,t,r)}}),this.sdk=e,this.__is_initialized__=!0)}createDeprecationWarning(e){let{method:t,removalVersion:r,useInstead:o}=e,a=o?` Use \`${o}\` instead.`:"",s=`\`${t}\` will be removed from this Extension in version \`${r}\`.${a}`;return new mt(this,"DEPRECATION_NOTICE",s)}createWarning(e,t){return new mt(this,e,t)}createError(e,t,r){return new gt(this,e,t,r)}},ca=class extends pn{},Te=class extends pn{};Te.Internal=ca,Te.Anonymous="anonymous extension";var ua=class extends Le{purchase(e){let t=W(M.NFTPurchase,[e]);return this.request(t)}checkout(e){let t=W(M.NFTCheckout,[e]);return this.request(t)}transfer(e){let t=W(M.NFTTransfer,[e]);return this.request(t)}};function Yr(e){return e.compat&&e.compat[Y.sdkName]!=null?typeof e.compat[Y.sdkName]=="string"?ho(go(Y.version),e.compat[Y.sdkName]):!!e.compat[Y.sdkName]:!0}function fa(e,t,r){return!t&&!r?`${e}_eth_mainnet`:r?`${e}_${JSON.stringify(r)}`:t?typeof t=="string"?`${e}_eth_${t}`:`${e}_${t.rpcUrl}_${t.chainId}_${t.chainType}`:`${e}_unknown`}function da(e){var t;let r=(t=e==null?void 0:e.extensions)!=null?t:[],o={},a=[];if(Array.isArray(r)?r.forEach(s=>{Yr(s)?(s.init(this),(s.name||s.name!==Te.Anonymous)&&(this[s.name]=s),s instanceof Te.Internal&&(ht(s.config)||(o[s.name]=s.config))):a.push(s)}):Object.keys(r).forEach(s=>{if(Yr(r[s])){r[s].init(this);let m=r[s];this[s]=m,m instanceof Te.Internal&&(ht(m.config)||(o[r[s].name]=m.config))}else a.push(r[s])}),a.length)throw Mo(a);return o}var dt=class{constructor(e,t){this.apiKey=e;var r;if(!e)throw No();Y.platform==="react-native"&&(t==null?void 0:t.endpoint)&&Po().log();let{defaultEndpoint:o,version:a}=Y;this.testMode=!!(t!=null&&t.testMode),this.useStorageCache=!!(t!=null&&t.useStorageCache),this.endpoint=tt((r=t==null?void 0:t.endpoint)!=null?r:o).origin,this.auth=new Wo(this),this.user=new oa(this),this.wallet=new aa(this),this.nft=new ua(this),this.rpcProvider=new sa(this);let s=da.call(this,t);this.parameters=Jr($t(Pt({API_KEY:this.apiKey,DOMAIN_ORIGIN:window.location?window.location.origin:"",ETH_NETWORK:t==null?void 0:t.network,host:tt(this.endpoint).host,sdk:So[Y.sdkName],version:a,ext:ht(s)?void 0:s,locale:(t==null?void 0:t.locale)||"en_US"},Y.bundleId?{bundleId:Y.bundleId}:{}),{meta:t==null?void 0:t.meta})),this.networkHash=fa(this.apiKey,t==null?void 0:t.network,ht(s)?void 0:s),t!=null&&t.deferPreload||this.preload()}get overlay(){if(!dt.__overlays__.has(this.parameters)){let e=new Y.ViewController(this.endpoint,this.parameters,this.networkHash);e.init(),dt.__overlays__.set(this.parameters,e)}return dt.__overlays__.get(this.parameters)}preload(){return X(this,null,function*(){yield this.overlay.checkIsReadyForRequest})}},Vt=dt;Vt.__overlays__=new Map;function ha(e,t){return t&&Array.isArray(e)?e.find(r=>r.id===t):e}function ma(e,t){var r;let o=(r=t.data.response)==null?void 0:r.id,a=ha(e,o);if(o&&a){let s=new Ut(a).applyResult(t.data.response.result).applyError(t.data.response.error);return{id:o,response:s}}return{}}function pa(e,t,r){return X(this,null,function*(){var o;let a=yield se("rt"),s;if(Y.platform==="web")try{s=(o=yield se("jwt"))!=null?o:yield Yo()}catch(g){console.error("webcrypto error",g)}let m={msgType:e,payload:t};s&&(m.jwt=s),s&&a&&(m.rt=a);let d=yield ia(r);return d&&(m.deviceShare=d),m})}function va(e){return X(this,null,function*(){!e.data.rt||(yield pe("rt",e.data.rt))})}var vn=class{constructor(e,t,r){this.endpoint=e,this.parameters=t,this.networkHash=r,this.messageHandlers=new Set,this.isConnectedToInternet=!0,this.checkIsReadyForRequest=this.waitForReady(),this.isReadyForRequest=!1,this.listen()}post(e,t){return X(this,null,function*(){return sn((r,o)=>X(this,null,function*(){if(!this.isConnectedToInternet){let v=xt();o(v)}this.isReadyForRequest||(yield this.waitForReady());let a=[],s=Array.isArray(t)?t.map(v=>v.id):[],m=yield pa(`${e}-${this.parameters}`,t,this.networkHash);yield this._post(m);let d=v=>y=>{var O;let{id:_,response:N}=ma(t,y);if(va(y),((O=N==null?void 0:N.payload.error)==null?void 0:O.message)==="User denied account access.")jt();else if(y.data.deviceShare){let{deviceShare:L}=y.data;na(L,this.networkHash)}_&&N&&Array.isArray(t)&&s.includes(_)?(a.push(N),a.length===t.length&&(v(),r(a))):_&&N&&!Array.isArray(t)&&_===t.id&&(v(),r(N))},g=this.on(me.MAGIC_HANDLE_RESPONSE,d(()=>g()))}))})}on(e,t){let r=t.bind(window),o=a=>{a.data.msgType===`${e}-${this.parameters}`&&r(a)};return this.messageHandlers.add(o),()=>this.messageHandlers.delete(o)}waitForReady(){return new Promise(e=>{let t=this.on(me.MAGIC_OVERLAY_READY,()=>{this.isReadyForRequest=!0,e(),t()});setTimeout(()=>{this.isReadyForRequest=!0,e(),t()},15e3)})}listen(){this.on(me.MAGIC_HIDE_OVERLAY,()=>{this.hideOverlay()}),this.on(me.MAGIC_SHOW_OVERLAY,()=>{this.showOverlay()}),this.on(me.MAGIC_SEND_PRODUCT_ANNOUNCEMENT,e=>{e.data.response.result.product_announcement&&new Me(ge.ProductAnnouncement,e.data.response.result.product_announcement).log()})}};var qt={};yr(qt,{AuthEventOnReceived:()=>Tr,DeepLinkPage:()=>Ir,DeviceVerificationEventEmit:()=>He,DeviceVerificationEventOnReceived:()=>Sr,EthChainType:()=>Lr,Events:()=>xe,Extension:()=>Te,ExtensionError:()=>gt,ExtensionWarning:()=>mt,FarcasterLoginEventEmit:()=>Mr,LoginWithEmailOTPEventEmit:()=>ye,LoginWithEmailOTPEventOnReceived:()=>Ar,LoginWithMagicLinkEventEmit:()=>wr,LoginWithMagicLinkEventOnReceived:()=>br,LoginWithSmsOTPEventEmit:()=>Oe,LoginWithSmsOTPEventOnReceived:()=>Rr,MagicIncomingWindowMessage:()=>me,MagicOutgoingWindowMessage:()=>Ne,MagicPayloadMethod:()=>M,NftCheckoutIntermediaryEvents:()=>Pr,RPCError:()=>We,RPCErrorCode:()=>De,RecencyCheckEventEmit:()=>he,RecencyCheckEventOnReceived:()=>Nr,RecoveryMethodType:()=>Cr,SDKError:()=>_e,SDKErrorCode:()=>ve,SDKWarning:()=>Me,SDKWarningCode:()=>ge,UpdateEmailEventEmit:()=>Ee,UpdateEmailEventOnReceived:()=>Or,UserEventsEmit:()=>ot,UserEventsOnReceived:()=>at,WalletEventOnReceived:()=>$r,Wallets:()=>ue,isPromiEvent:()=>kt});var It=_r(yn()),Ht=_r(_n());var ga={display:"block",visibility:"hidden",position:"fixed",top:"0",right:"0",width:"100%",height:"100%",borderRadius:"0",border:"none",zIndex:"2147483647",opacity:"0"};function ya(e){for(let[t,r]of Object.entries(ga))e.style[t]=r}function Ea(e){let t=[].slice.call(document.querySelectorAll(".magic-iframe"));return Boolean(t.find(r=>r.src.includes(e)))}var _t=class extends vn{constructor(){super(...arguments);this.activeElement=null}init(){this.test="hello",this.iframe=new Promise(r=>{let o=()=>{if(Ea(encodeURIComponent(this.parameters)))en().log();else{let a=document.createElement("iframe");a.classList.add("magic-iframe"),a.dataset.magicIframeLabel=tt(this.endpoint).host,a.title="Secure Modal",a.src=tt(`/send?params=${encodeURIComponent(this.parameters)}`,this.endpoint).href,a.allow="clipboard-read; clipboard-write",ya(a),document.body.appendChild(a),r(a)}};["loaded","interactive","complete"].includes(document.readyState)?o():window.addEventListener("load",o,!1)}),window.addEventListener("message",r=>{var o;if(r.origin===this.endpoint&&r.data&&r.data.msgType&&this.messageHandlers.size){r.data.response=(o=r.data.response)!=null?o:{};for(let a of this.messageHandlers.values())a(r)}})}showOverlay(){return $e(this,null,function*(){let r=yield this.iframe;r.style.visibility="visible",r.style.opacity="1",this.activeElement=document.activeElement,r.focus()})}hideOverlay(){return $e(this,null,function*(){var o;let r=yield this.iframe;r.style.visibility="hidden",r.style.opacity="0",(o=this.activeElement)!=null&&o.focus&&this.activeElement.focus(),this.activeElement=null})}_post(r){return $e(this,null,function*(){let o=yield this.iframe;if(o&&o.contentWindow)o.contentWindow.postMessage(r,this.endpoint);else throw xt()})}};var _a=Object.assign(Zr(Vt,{platform:"web",sdkName:"magic-sdk",version:"28.6.0",defaultEndpoint:"https://auth.magic.link/",ViewController:_t,configureStorage:()=>$e(void 0,null,function*(){let e=It.default.createInstance({name:"MagicAuthLocalStorageDB",storeName:"MagicAuthLocalStorage"});return yield e.defineDriver(Ht),yield e.setDriver([It.default.INDEXEDDB,It.default.LOCALSTORAGE,Ht._driver]),e})}),vr({},qt)),Ia=_a;return _i(wa);})();
6
6
  if (Magic && Magic.default != null) { Magic = Object.assign(Magic.default, Magic); delete Magic.default; }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "magic-sdk",
3
- "version": "28.6.0-canary.aa3e3a8.0",
3
+ "version": "28.6.0",
4
4
  "description": "Passwordless authentication for the web.",
5
5
  "author": "Magic Labs <team@magic.link> (https://magic.link/)",
6
6
  "license": "MIT",
@@ -29,9 +29,9 @@
29
29
  ]
30
30
  },
31
31
  "dependencies": {
32
- "@magic-sdk/commons": "24.6.0-canary.aa3e3a8.0",
33
- "@magic-sdk/provider": "28.6.0-canary.aa3e3a8.0",
34
- "@magic-sdk/types": "24.4.0-canary.aa3e3a8.0",
32
+ "@magic-sdk/commons": "^24.6.0",
33
+ "@magic-sdk/provider": "^28.6.0",
34
+ "@magic-sdk/types": "^24.4.0",
35
35
  "localforage": "^1.7.4"
36
36
  },
37
37
  "devDependencies": {
@@ -40,5 +40,5 @@
40
40
  "@babel/runtime": "^7.9.6",
41
41
  "localforage-driver-memory": "^1.0.5"
42
42
  },
43
- "gitHead": "aa3e3a8a52f1f1bbfc15218ad91f8f8636280bb5"
43
+ "gitHead": "9a9015b65b4144da79dd9e6028e0e65798153bb1"
44
44
  }