@arcblock/did-connect-service 4.1.39 → 4.1.41

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.
Files changed (72) hide show
  1. package/dist/_generated/asset-bytes.js +1 -1
  2. package/dist/_generated/asset-manifest.js +2 -2
  3. package/dist/_generated/login-bundle-string.d.ts +1 -1
  4. package/dist/_generated/login-bundle-string.d.ts.map +1 -1
  5. package/dist/_generated/login-bundle-string.js +1 -1
  6. package/dist/_generated/login-bundle-string.js.map +1 -1
  7. package/dist/app-identity.d.ts +211 -0
  8. package/dist/app-identity.d.ts.map +1 -0
  9. package/dist/app-identity.js +343 -0
  10. package/dist/app-identity.js.map +1 -0
  11. package/dist/assets/{login.60fd0777.js → login.e70223b2.js} +35 -14
  12. package/dist/assets/{login.a9c8b434.css → login.fa75e481.css} +22 -1
  13. package/dist/blocklet-service-rpc-types.d.ts +12 -0
  14. package/dist/blocklet-service-rpc-types.d.ts.map +1 -1
  15. package/dist/blocklet-service-rpc.d.ts +10 -1
  16. package/dist/blocklet-service-rpc.d.ts.map +1 -1
  17. package/dist/blocklet-service-rpc.js +32 -3
  18. package/dist/blocklet-service-rpc.js.map +1 -1
  19. package/dist/blocklet-service.d.ts.map +1 -1
  20. package/dist/blocklet-service.js +13 -22
  21. package/dist/blocklet-service.js.map +1 -1
  22. package/dist/embedded.d.ts +9 -0
  23. package/dist/embedded.d.ts.map +1 -1
  24. package/dist/embedded.js +14 -6
  25. package/dist/embedded.js.map +1 -1
  26. package/dist/handlers/access-key-connect-handler.d.ts.map +1 -1
  27. package/dist/handlers/access-key-connect-handler.js +3 -1
  28. package/dist/handlers/access-key-connect-handler.js.map +1 -1
  29. package/dist/handlers/admin-instance-handler.d.ts.map +1 -1
  30. package/dist/handlers/admin-instance-handler.js +4 -1
  31. package/dist/handlers/admin-instance-handler.js.map +1 -1
  32. package/dist/handlers/auth-handler.d.ts +18 -1
  33. package/dist/handlers/auth-handler.d.ts.map +1 -1
  34. package/dist/handlers/auth-handler.js +53 -38
  35. package/dist/handlers/auth-handler.js.map +1 -1
  36. package/dist/handlers/blocklet-js-handler.d.ts +10 -2
  37. package/dist/handlers/blocklet-js-handler.d.ts.map +1 -1
  38. package/dist/handlers/blocklet-js-handler.js +36 -18
  39. package/dist/handlers/blocklet-js-handler.js.map +1 -1
  40. package/dist/handlers/branding-handler.d.ts +30 -11
  41. package/dist/handlers/branding-handler.d.ts.map +1 -1
  42. package/dist/handlers/branding-handler.js +76 -62
  43. package/dist/handlers/branding-handler.js.map +1 -1
  44. package/dist/handlers/passkey-handler.d.ts +6 -1
  45. package/dist/handlers/passkey-handler.d.ts.map +1 -1
  46. package/dist/handlers/passkey-handler.js +38 -26
  47. package/dist/handlers/passkey-handler.js.map +1 -1
  48. package/dist/handlers/team-handler.d.ts +4 -0
  49. package/dist/handlers/team-handler.d.ts.map +1 -1
  50. package/dist/handlers/team-handler.js +24 -5
  51. package/dist/handlers/team-handler.js.map +1 -1
  52. package/dist/index.d.ts +3 -2
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +2 -1
  55. package/dist/index.js.map +1 -1
  56. package/dist/package-branding.d.ts +0 -6
  57. package/dist/package-branding.d.ts.map +1 -1
  58. package/dist/package-branding.js +2 -32
  59. package/dist/package-branding.js.map +1 -1
  60. package/dist/store/d1-store.d.ts +9 -1
  61. package/dist/store/d1-store.d.ts.map +1 -1
  62. package/dist/store/d1-store.js +30 -0
  63. package/dist/store/d1-store.js.map +1 -1
  64. package/dist/theme-utils.js +1 -1
  65. package/dist/theme-utils.js.map +1 -1
  66. package/dist/types.d.ts +5 -0
  67. package/dist/types.d.ts.map +1 -1
  68. package/package.json +3 -3
  69. package/dist/http/security-headers.d.ts +0 -38
  70. package/dist/http/security-headers.d.ts.map +0 -1
  71. package/dist/http/security-headers.js +0 -67
  72. package/dist/http/security-headers.js.map +0 -1
@@ -1,4 +1,4 @@
1
- "use strict";var __LoginBundle=(()=>{var ae=Object.defineProperty;var Te=Object.getOwnPropertyDescriptor;var Be=Object.getOwnPropertyNames;var Ae=Object.prototype.hasOwnProperty;var Ie=(o,e)=>{for(var r in e)ae(o,r,{get:e[r],enumerable:!0})},Se=(o,e,r,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Be(e))!Ae.call(o,n)&&n!==r&&ae(o,n,{get:()=>e[n],enumerable:!(t=Te(e,n))||t.enumerable});return o};var Fe=o=>Se(ae({},"__esModule",{value:!0}),o);var at={};Ie(at,{FetchHttpAdapter:()=>X,LoginPage:()=>De,runPasskeyAuth:()=>se});var H={CREATED:"created",SCANNED:"scanned",SUCCEED:"succeed",ERROR:"error",TIMEOUT:"timeout",BUSY:"busy",FORBIDDEN:"forbidden"};var M={API_PREFIX:"/api/did",SERVICE_PREFIX:"/.well-known/service",ACTION:"login",TOKEN_TIMEOUT:3e5,CHECK_INTERVAL:2e3,TOKEN_KEY:"_t_",TOKEN_DELIVERY:"cookie",CREATE_THROTTLE:500,AUTO_CHECK_INTERVAL:6e4};var oe="did:abt:";function fe(o){if(!o||typeof o!="string")return!1;let e=o.replace(oe,"");return/^(0x)?[0-9a-f]{40}$/i.test(e)}function ge(o,e=8,r=6){return!o||typeof o!="string"?"":o.length<=e+r+3?o:`${o.slice(0,e)}...${o.slice(-r)}`}function ue(o,e={}){if(!o||typeof o!="string")return{prefix:"DID: ABT:",chainLabel:"ABT",address:"",compact:"",copyText:""};let{startChars:r=8,endChars:t=6}=e,n=fe(o),a=o.replace(oe,""),s=n?"ETH":"ABT",i=e.includePrefix??!n;return{prefix:`DID: ${s}:`,chainLabel:s,address:a,compact:ge(a,r,t),copyText:i?`${oe}${a}`:a}}var O={TOKEN_EXPIRED:"TOKEN_EXPIRED",TOKEN_NOT_FOUND:"TOKEN_NOT_FOUND",TOKEN_TIMEOUT:"TOKEN_TIMEOUT",ALREADY_EXIST:"ALREADY_EXIST",ALREADY_BIND:"ALREADY_BIND",NETWORK_ERROR:"NETWORK_ERROR",INVALID_RESPONSE:"INVALID_RESPONSE",UNAUTHORIZED:"UNAUTHORIZED",FORBIDDEN:"FORBIDDEN"},P=class extends Error{code;constructor(e,r){super(r),this.name="ConnectError",this.code=e}};var X=class{_defaultHeaders;_onRequest;constructor(e){this._defaultHeaders=e?.headers??{},this._onRequest=e?.onRequest}async get(e,r){this._validateUrl(e);let t=r?.params?this._serializeParams(r.params):"",n=t?`${e}${e.includes("?")?"&":"?"}${t}`:e,s={method:"GET",headers:{...this._defaultHeaders,...r?.headers},signal:r?.signal};return this._onRequest&&(s=this._onRequest(n,s)),this._execute(n,s)}async post(e,r,t){this._validateUrl(e);let n=t?.params?this._serializeParams(t.params):"",a=n?`${e}${e.includes("?")?"&":"?"}${n}`:e,i={method:"POST",headers:{"Content-Type":"application/json",...this._defaultHeaders,...t?.headers},body:r!==void 0?JSON.stringify(r):void 0,signal:t?.signal};return this._onRequest&&(i=this._onRequest(a,i)),this._execute(a,i)}_validateUrl(e){if(!e?.trim())throw new P(O.NETWORK_ERROR,"Request URL must not be empty");if(e.trim().toLowerCase().startsWith("javascript:"))throw new P(O.NETWORK_ERROR,"Invalid URL protocol")}async _execute(e,r){let t;try{t=await globalThis.fetch(e,r)}catch(s){throw s?.name==="AbortError"?s:new P(O.NETWORK_ERROR,`Network request failed: ${s?.message??"Unknown error"}`)}if(!t.ok){let s="",i="";try{let m=await t.text();try{let y=JSON.parse(m);y.error&&(s=y.error),y.code&&(i=y.code)}catch{s=m}}catch{}let d=i==="FORBIDDEN"?O.FORBIDDEN:O.NETWORK_ERROR;throw new P(d,s||`HTTP ${t.status} ${t.statusText||"Error"}`)}if(t.status===204)return null;let n=await t.text();if(!n.trim())return null;let a=t.headers.get("content-type")??"";if(!a.includes("application/json")&&!a.includes("+json"))throw new P(O.INVALID_RESPONSE,`Expected JSON response but received: ${a||"unknown content type"}`);try{return JSON.parse(n)}catch{throw new P(O.INVALID_RESPONSE,"Failed to parse JSON response")}}_serializeParams(e){let r=[];for(let t of Object.keys(e)){let n=e[t];if(n!=null)if(Array.isArray(n))for(let a of n)a!=null&&r.push(`${encodeURIComponent(t)}=${encodeURIComponent(String(a))}`);else typeof n=="boolean"?r.push(`${encodeURIComponent(t)}=${n?"true":"false"}`):r.push(`${encodeURIComponent(t)}=${encodeURIComponent(String(n))}`)}return r.join("&")}};var me=["en","zh","zh-TW","ja"],bt=new Set(me);function Z(o){let e=o.apiPrefix??M.API_PREFIX,r=o.action??M.ACTION,t=e.replace(/\/+$/,""),n=r.replace(/^\/+/,"");return`${t}/${n}`}function be(){return{token:null,url:null,status:null,error:null,appInfo:null,memberAppInfo:null,loading:!1}}var ee=class{_state;_config;_http;_pollTimer=null;_checkCount=0;_maxCheckCount;_realtimeUnsub=null;_realtime;_storage;_lastCreateTime=0;_listeners=new Map;_destroyed=!1;constructor(e,r,t){this._config=this._fillDefaults(e),this._http=r,this._realtime=t?.realtime,this._storage=t?.storage,this._state=be(),this._config.checkInterval<=0?this._maxCheckCount=1/0:this._maxCheckCount=Math.ceil(this._config.tokenTimeout/this._config.checkInterval)}get state(){return Object.freeze({...this._state})}async create(e){if(Date.now()-this._lastCreateTime<M.CREATE_THROTTLE)return this.state;(this._pollTimer!==null||this._realtimeUnsub!==null)&&this.stopPolling(),this._state.loading=!0,this._emit("statusChange",this.state);let r=`${Z(this._config)}/token`,t={};e?(e.locale!=null&&(t.locale=e.locale),e.provider!=null?t.provider=e.provider:t.provider="wallet",e.encKey!=null&&(t.__encKey=e.encKey),e.autoConnect!=null&&(t.autoConnect=e.autoConnect),e.visitorId!=null&&(t.visitorId=e.visitorId),e.sourceToken!=null&&(t.sourceToken=e.sourceToken),e.forceConnected!=null&&(t.forceConnected=e.forceConnected),e.connectUrl!=null&&(t.connectUrl=e.connectUrl),e.extraParams&&Object.assign(t,e.extraParams)):t.provider="wallet";try{let n=await this._http.get(r,{params:t});return this._state.token=n.token??null,this._state.url=n.url??null,this._state.status=H.CREATED,this._state.appInfo=n.appInfo??null,this._state.memberAppInfo=n.memberAppInfo??null,this._state.loading=!1,this._state.error=null,this._state.successResult=void 0,this._state.connectedDid=void 0,this._state.mfaCode=void 0,this._state.saveConnect=void 0,this._lastCreateTime=Date.now(),this._emit("statusChange",this.state),this.state}catch(n){throw this._state.loading=!1,this._state.error=n?.message??"Failed to create token",this._state.status=H.ERROR,this._emit("statusChange",this.state),this._emit("error",new P(O.NETWORK_ERROR,this._state.error)),n}}async checkStatus(){if(!this._state.token)throw new P(O.TOKEN_NOT_FOUND,"No token available. Call create() first.");let e=`${Z(this._config)}/status`,r={[M.TOKEN_KEY]:this._state.token};this._config.appPid;try{let t=await this._http.get(e,{params:r}),n=t.status;return n&&(this._state.status=n),t.error!==void 0&&(this._state.error=t.error),t.connectedDid!==void 0&&(this._state.connectedDid=t.connectedDid),t.mfaCode!==void 0&&(this._state.mfaCode=t.mfaCode),t.saveConnect!==void 0&&(this._state.saveConnect=t.saveConnect),n===H.FORBIDDEN?(this._state.status=H.ERROR,this._state.error=t.error||"Access forbidden",this._emit("error",new P(O.UNAUTHORIZED,this._state.error)),this.stopPolling()):n===H.SUCCEED?(this._config.tokenDelivery==="response"&&(this._state.successResult=t),this._emit("succeed",this.state),this.stopPolling()):n===H.ERROR?(this._emit("error",new P(O.INVALID_RESPONSE,this._state.error||"Unknown error")),this.stopPolling()):n===H.TIMEOUT&&(this._emit("timeout",this.state),this.stopPolling()),this._emit("statusChange",this.state),this.state}catch(t){throw t}}async cancel(){if(!this._state.token)return;let e=`${Z(this._config)}/timeout`,r={[M.TOKEN_KEY]:this._state.token};try{await this._http.get(e,{params:r})}catch{}this.stopPolling()}startPolling(){if(this._state.token){if(this._checkCount=0,this._realtime)try{let e=`relay:${this._config.appPid}:${this._state.token}`;this._realtimeUnsub=this._realtime.subscribe(e,r=>{this._handleRealtimeMessage(r)});return}catch{this._realtimeUnsub=null}this._config.checkInterval>0&&(this._pollTimer=setInterval(()=>{this._pollOnce()},this._config.checkInterval))}}stopPolling(){this._pollTimer!==null&&(clearInterval(this._pollTimer),this._pollTimer=null),this._realtimeUnsub&&(this._realtimeUnsub(),this._realtimeUnsub=null)}reset(){this.stopPolling(),this._state=be(),this._checkCount=0}destroy(){this._destroyed||(this.stopPolling(),this._state.token=null,this._state.successResult=void 0,this._listeners.clear(),this._destroyed=!0)}on(e,r){let t=this._listeners.get(e);return t||(t=new Set,this._listeners.set(e,t)),t.add(r),this}off(e,r){let t=this._listeners.get(e);return t&&(t.delete(r),t.size===0&&this._listeners.delete(e)),this}_emit(e,...r){let t=this._listeners.get(e);if(!(!t||t.size===0))for(let n of[...t])try{n(...r)}catch{}}_pollOnce(){if(this._checkCount++,this._checkCount>=this._maxCheckCount){this._handleTimeout();return}this.checkStatus().catch(()=>{})}_handleTimeout(){this.stopPolling(),this._state.status=H.TIMEOUT,this._emit("timeout",this.state),this._emit("statusChange",this.state)}_handleRealtimeMessage(e){if(!e||typeof e!="object")return;let r=e.status;r&&(this._state.status=r,e.error!==void 0&&(this._state.error=e.error),e.connectedDid!==void 0&&(this._state.connectedDid=e.connectedDid),e.mfaCode!==void 0&&(this._state.mfaCode=e.mfaCode),e.saveConnect!==void 0&&(this._state.saveConnect=e.saveConnect),r===H.FORBIDDEN?(this._state.status=H.ERROR,this._state.error=e.error||"Access forbidden",this._emit("error",new P(O.UNAUTHORIZED,this._state.error)),this.stopPolling()):r===H.SUCCEED?(this._config.tokenDelivery==="response"&&(this._state.successResult=e),this._emit("succeed",this.state),this.stopPolling()):r===H.ERROR?(this._emit("error",new P(O.INVALID_RESPONSE,this._state.error||"Unknown error")),this.stopPolling()):r===H.TIMEOUT&&(this._emit("timeout",this.state),this.stopPolling()),this._emit("statusChange",this.state))}_fillDefaults(e){return{appPid:e.appPid,appName:e.appName,appDescription:e.appDescription??"",appIcon:e.appIcon??"",appUrl:e.appUrl??"",apiPrefix:e.apiPrefix??M.API_PREFIX,action:e.action??M.ACTION,servicePrefix:e.servicePrefix??M.SERVICE_PREFIX,tokenTimeout:e.tokenTimeout??M.TOKEN_TIMEOUT,checkInterval:e.checkInterval??M.CHECK_INTERVAL,tokenDelivery:e.tokenDelivery??M.TOKEN_DELIVERY}}};var _={bg:{root:"#0a0a0b",surface:"#141416",card:"#1c1c20",elevated:"#232328",hover:"#2b2b34",active:"#33333e",input:"rgba(255,255,255,0.06)"},border:{default:"rgba(255,255,255,0.10)",subtle:"rgba(255,255,255,0.06)",strong:"rgba(255,255,255,0.15)",focus:"rgba(255,255,255,0.25)"},text:{primary:"#f5f5f7",secondary:"#9394a1",tertiary:"#767684",placeholder:"#5e5f6e",white:"#ffffff"},color:{blue:"#6c47ff",blueHover:"#5f15fe",blueLight:"rgba(108,71,255,0.15)",blueMuted:"#9280ff",red:"#e02e2e",redLight:"rgba(224,46,46,0.15)",redText:"#f98a8a",green:"#15892b",greenLight:"rgba(21,137,43,0.15)",greenText:"#49dc6e",yellow:"#fd7224",yellowLight:"rgba(253,114,36,0.15)",yellowText:"#fd9357",info:"#236dd7",infoLight:"rgba(35,109,215,0.15)",infoText:"#73acfa"},radius:{xs:"4px",sm:"6px",md:"8px",lg:"12px",full:"9999px"},shadow:{sm:"0 1px 3px rgba(0,0,0,0.3), 0 1px 2px -1px rgba(0,0,0,0.2)",md:"0 4px 6px -1px rgba(0,0,0,0.4), 0 2px 4px -2px rgba(0,0,0,0.3)",lg:"0 10px 15px -3px rgba(0,0,0,0.5), 0 4px 6px -4px rgba(0,0,0,0.4)",focus:"0 0 0 1px rgba(255,255,255,0.12), 0 0 0 3px rgba(108,71,255,0.3)"},font:{family:"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",mono:"'JetBrains Mono', 'SF Mono', monospace",sizeBase:"14px",lineHeight:"1.43"}},$={bg:{root:"#f8f9fa",surface:"#ffffff",card:"#ffffff",elevated:"#f0f1f3",hover:"#e9eaec",active:"#dddee1",input:"rgba(0,0,0,0.04)"},border:{default:"rgba(0,0,0,0.10)",subtle:"rgba(0,0,0,0.06)",strong:"rgba(0,0,0,0.15)",focus:"rgba(0,0,0,0.25)"},text:{primary:"#1a1a1a",secondary:"#6b7280",tertiary:"#9ca3af",placeholder:"#c0c5ce",white:"#1a1a1a"},shadow:{sm:"0 1px 3px rgba(0,0,0,0.08), 0 1px 2px -1px rgba(0,0,0,0.06)",md:"0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -2px rgba(0,0,0,0.06)",lg:"0 10px 15px -3px rgba(0,0,0,0.12), 0 4px 6px -4px rgba(0,0,0,0.08)",focus:"0 0 0 1px rgba(0,0,0,0.08), 0 0 0 3px rgba(108,71,255,0.2)"}},Ne=`
1
+ "use strict";var __LoginBundle=(()=>{var ae=Object.defineProperty;var Ae=Object.getOwnPropertyDescriptor;var Be=Object.getOwnPropertyNames;var Ie=Object.prototype.hasOwnProperty;var Se=(o,e)=>{for(var r in e)ae(o,r,{get:e[r],enumerable:!0})},Fe=(o,e,r,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Be(e))!Ie.call(o,n)&&n!==r&&ae(o,n,{get:()=>e[n],enumerable:!(t=Ae(e,n))||t.enumerable});return o};var Ne=o=>Fe(ae({},"__esModule",{value:!0}),o);var at={};Se(at,{FetchHttpAdapter:()=>X,LoginPage:()=>Te,runPasskeyAuth:()=>se});var H={CREATED:"created",SCANNED:"scanned",SUCCEED:"succeed",ERROR:"error",TIMEOUT:"timeout",BUSY:"busy",FORBIDDEN:"forbidden"};var M={API_PREFIX:"/api/did",SERVICE_PREFIX:"/.well-known/service",ACTION:"login",TOKEN_TIMEOUT:3e5,CHECK_INTERVAL:2e3,TOKEN_KEY:"_t_",TOKEN_DELIVERY:"cookie",CREATE_THROTTLE:500,AUTO_CHECK_INTERVAL:6e4};var oe="did:abt:";function fe(o){if(!o||typeof o!="string")return!1;let e=o.replace(oe,"");return/^(0x)?[0-9a-f]{40}$/i.test(e)}function ge(o,e=8,r=6){return!o||typeof o!="string"?"":o.length<=e+r+3?o:`${o.slice(0,e)}...${o.slice(-r)}`}function ue(o,e={}){if(!o||typeof o!="string")return{prefix:"DID: ABT:",chainLabel:"ABT",address:"",compact:"",copyText:""};let{startChars:r=8,endChars:t=6}=e,n=fe(o),a=o.replace(oe,""),s=n?"ETH":"ABT",i=e.includePrefix??!n;return{prefix:`DID: ${s}:`,chainLabel:s,address:a,compact:ge(a,r,t),copyText:i?`${oe}${a}`:a}}var O={TOKEN_EXPIRED:"TOKEN_EXPIRED",TOKEN_NOT_FOUND:"TOKEN_NOT_FOUND",TOKEN_TIMEOUT:"TOKEN_TIMEOUT",ALREADY_EXIST:"ALREADY_EXIST",ALREADY_BIND:"ALREADY_BIND",NETWORK_ERROR:"NETWORK_ERROR",INVALID_RESPONSE:"INVALID_RESPONSE",UNAUTHORIZED:"UNAUTHORIZED",FORBIDDEN:"FORBIDDEN"},P=class extends Error{code;constructor(e,r){super(r),this.name="ConnectError",this.code=e}};var X=class{_defaultHeaders;_onRequest;constructor(e){this._defaultHeaders=e?.headers??{},this._onRequest=e?.onRequest}async get(e,r){this._validateUrl(e);let t=r?.params?this._serializeParams(r.params):"",n=t?`${e}${e.includes("?")?"&":"?"}${t}`:e,s={method:"GET",headers:{...this._defaultHeaders,...r?.headers},signal:r?.signal};return this._onRequest&&(s=this._onRequest(n,s)),this._execute(n,s)}async post(e,r,t){this._validateUrl(e);let n=t?.params?this._serializeParams(t.params):"",a=n?`${e}${e.includes("?")?"&":"?"}${n}`:e,i={method:"POST",headers:{"Content-Type":"application/json",...this._defaultHeaders,...t?.headers},body:r!==void 0?JSON.stringify(r):void 0,signal:t?.signal};return this._onRequest&&(i=this._onRequest(a,i)),this._execute(a,i)}_validateUrl(e){if(!e?.trim())throw new P(O.NETWORK_ERROR,"Request URL must not be empty");if(e.trim().toLowerCase().startsWith("javascript:"))throw new P(O.NETWORK_ERROR,"Invalid URL protocol")}async _execute(e,r){let t;try{t=await globalThis.fetch(e,r)}catch(s){throw s?.name==="AbortError"?s:new P(O.NETWORK_ERROR,`Network request failed: ${s?.message??"Unknown error"}`)}if(!t.ok){let s="",i="";try{let p=await t.text();try{let y=JSON.parse(p);y.error&&(s=y.error),y.code&&(i=y.code)}catch{s=p}}catch{}let d=i==="FORBIDDEN"?O.FORBIDDEN:O.NETWORK_ERROR;throw new P(d,s||`HTTP ${t.status} ${t.statusText||"Error"}`)}if(t.status===204)return null;let n=await t.text();if(!n.trim())return null;let a=t.headers.get("content-type")??"";if(!a.includes("application/json")&&!a.includes("+json"))throw new P(O.INVALID_RESPONSE,`Expected JSON response but received: ${a||"unknown content type"}`);try{return JSON.parse(n)}catch{throw new P(O.INVALID_RESPONSE,"Failed to parse JSON response")}}_serializeParams(e){let r=[];for(let t of Object.keys(e)){let n=e[t];if(n!=null)if(Array.isArray(n))for(let a of n)a!=null&&r.push(`${encodeURIComponent(t)}=${encodeURIComponent(String(a))}`);else typeof n=="boolean"?r.push(`${encodeURIComponent(t)}=${n?"true":"false"}`):r.push(`${encodeURIComponent(t)}=${encodeURIComponent(String(n))}`)}return r.join("&")}};var me=["en","zh","zh-TW","ja"],bt=new Set(me);function Z(o){let e=o.apiPrefix??M.API_PREFIX,r=o.action??M.ACTION,t=e.replace(/\/+$/,""),n=r.replace(/^\/+/,"");return`${t}/${n}`}function be(){return{token:null,url:null,status:null,error:null,appInfo:null,memberAppInfo:null,loading:!1}}var ee=class{_state;_config;_http;_pollTimer=null;_checkCount=0;_maxCheckCount;_realtimeUnsub=null;_realtime;_storage;_lastCreateTime=0;_listeners=new Map;_destroyed=!1;constructor(e,r,t){this._config=this._fillDefaults(e),this._http=r,this._realtime=t?.realtime,this._storage=t?.storage,this._state=be(),this._config.checkInterval<=0?this._maxCheckCount=1/0:this._maxCheckCount=Math.ceil(this._config.tokenTimeout/this._config.checkInterval)}get state(){return Object.freeze({...this._state})}async create(e){if(Date.now()-this._lastCreateTime<M.CREATE_THROTTLE)return this.state;(this._pollTimer!==null||this._realtimeUnsub!==null)&&this.stopPolling(),this._state.loading=!0,this._emit("statusChange",this.state);let r=`${Z(this._config)}/token`,t={};e?(e.locale!=null&&(t.locale=e.locale),e.provider!=null?t.provider=e.provider:t.provider="wallet",e.encKey!=null&&(t.__encKey=e.encKey),e.autoConnect!=null&&(t.autoConnect=e.autoConnect),e.visitorId!=null&&(t.visitorId=e.visitorId),e.sourceToken!=null&&(t.sourceToken=e.sourceToken),e.forceConnected!=null&&(t.forceConnected=e.forceConnected),e.connectUrl!=null&&(t.connectUrl=e.connectUrl),e.extraParams&&Object.assign(t,e.extraParams)):t.provider="wallet";try{let n=await this._http.get(r,{params:t});return this._state.token=n.token??null,this._state.url=n.url??null,this._state.status=H.CREATED,this._state.appInfo=n.appInfo??null,this._state.memberAppInfo=n.memberAppInfo??null,this._state.loading=!1,this._state.error=null,this._state.successResult=void 0,this._state.connectedDid=void 0,this._state.mfaCode=void 0,this._state.saveConnect=void 0,this._lastCreateTime=Date.now(),this._emit("statusChange",this.state),this.state}catch(n){throw this._state.loading=!1,this._state.error=n?.message??"Failed to create token",this._state.status=H.ERROR,this._emit("statusChange",this.state),this._emit("error",new P(O.NETWORK_ERROR,this._state.error)),n}}async checkStatus(){if(!this._state.token)throw new P(O.TOKEN_NOT_FOUND,"No token available. Call create() first.");let e=`${Z(this._config)}/status`,r={[M.TOKEN_KEY]:this._state.token};this._config.appPid;try{let t=await this._http.get(e,{params:r}),n=t.status;return n&&(this._state.status=n),t.error!==void 0&&(this._state.error=t.error),t.connectedDid!==void 0&&(this._state.connectedDid=t.connectedDid),t.mfaCode!==void 0&&(this._state.mfaCode=t.mfaCode),t.saveConnect!==void 0&&(this._state.saveConnect=t.saveConnect),n===H.FORBIDDEN?(this._state.status=H.ERROR,this._state.error=t.error||"Access forbidden",this._emit("error",new P(O.UNAUTHORIZED,this._state.error)),this.stopPolling()):n===H.SUCCEED?(this._config.tokenDelivery==="response"&&(this._state.successResult=t),this._emit("succeed",this.state),this.stopPolling()):n===H.ERROR?(this._emit("error",new P(O.INVALID_RESPONSE,this._state.error||"Unknown error")),this.stopPolling()):n===H.TIMEOUT&&(this._emit("timeout",this.state),this.stopPolling()),this._emit("statusChange",this.state),this.state}catch(t){throw t}}async cancel(){if(!this._state.token)return;let e=`${Z(this._config)}/timeout`,r={[M.TOKEN_KEY]:this._state.token};try{await this._http.get(e,{params:r})}catch{}this.stopPolling()}startPolling(){if(this._state.token){if(this._checkCount=0,this._realtime)try{let e=`relay:${this._config.appPid}:${this._state.token}`;this._realtimeUnsub=this._realtime.subscribe(e,r=>{this._handleRealtimeMessage(r)});return}catch{this._realtimeUnsub=null}this._config.checkInterval>0&&(this._pollTimer=setInterval(()=>{this._pollOnce()},this._config.checkInterval))}}stopPolling(){this._pollTimer!==null&&(clearInterval(this._pollTimer),this._pollTimer=null),this._realtimeUnsub&&(this._realtimeUnsub(),this._realtimeUnsub=null)}reset(){this.stopPolling(),this._state=be(),this._checkCount=0}destroy(){this._destroyed||(this.stopPolling(),this._state.token=null,this._state.successResult=void 0,this._listeners.clear(),this._destroyed=!0)}on(e,r){let t=this._listeners.get(e);return t||(t=new Set,this._listeners.set(e,t)),t.add(r),this}off(e,r){let t=this._listeners.get(e);return t&&(t.delete(r),t.size===0&&this._listeners.delete(e)),this}_emit(e,...r){let t=this._listeners.get(e);if(!(!t||t.size===0))for(let n of[...t])try{n(...r)}catch{}}_pollOnce(){if(this._checkCount++,this._checkCount>=this._maxCheckCount){this._handleTimeout();return}this.checkStatus().catch(()=>{})}_handleTimeout(){this.stopPolling(),this._state.status=H.TIMEOUT,this._emit("timeout",this.state),this._emit("statusChange",this.state)}_handleRealtimeMessage(e){if(!e||typeof e!="object")return;let r=e.status;r&&(this._state.status=r,e.error!==void 0&&(this._state.error=e.error),e.connectedDid!==void 0&&(this._state.connectedDid=e.connectedDid),e.mfaCode!==void 0&&(this._state.mfaCode=e.mfaCode),e.saveConnect!==void 0&&(this._state.saveConnect=e.saveConnect),r===H.FORBIDDEN?(this._state.status=H.ERROR,this._state.error=e.error||"Access forbidden",this._emit("error",new P(O.UNAUTHORIZED,this._state.error)),this.stopPolling()):r===H.SUCCEED?(this._config.tokenDelivery==="response"&&(this._state.successResult=e),this._emit("succeed",this.state),this.stopPolling()):r===H.ERROR?(this._emit("error",new P(O.INVALID_RESPONSE,this._state.error||"Unknown error")),this.stopPolling()):r===H.TIMEOUT&&(this._emit("timeout",this.state),this.stopPolling()),this._emit("statusChange",this.state))}_fillDefaults(e){return{appPid:e.appPid,appName:e.appName,appDescription:e.appDescription??"",appIcon:e.appIcon??"",appUrl:e.appUrl??"",apiPrefix:e.apiPrefix??M.API_PREFIX,action:e.action??M.ACTION,servicePrefix:e.servicePrefix??M.SERVICE_PREFIX,tokenTimeout:e.tokenTimeout??M.TOKEN_TIMEOUT,checkInterval:e.checkInterval??M.CHECK_INTERVAL,tokenDelivery:e.tokenDelivery??M.TOKEN_DELIVERY}}};var _={bg:{root:"#0a0a0b",surface:"#141416",card:"#1c1c20",elevated:"#232328",hover:"#2b2b34",active:"#33333e",input:"rgba(255,255,255,0.06)"},border:{default:"rgba(255,255,255,0.10)",subtle:"rgba(255,255,255,0.06)",strong:"rgba(255,255,255,0.15)",focus:"rgba(255,255,255,0.25)"},text:{primary:"#f5f5f7",secondary:"#9394a1",tertiary:"#767684",placeholder:"#5e5f6e",white:"#ffffff"},color:{blue:"#6c47ff",blueHover:"#5f15fe",blueLight:"rgba(108,71,255,0.15)",blueMuted:"#9280ff",red:"#e02e2e",redLight:"rgba(224,46,46,0.15)",redText:"#f98a8a",green:"#15892b",greenLight:"rgba(21,137,43,0.15)",greenText:"#49dc6e",yellow:"#fd7224",yellowLight:"rgba(253,114,36,0.15)",yellowText:"#fd9357",info:"#236dd7",infoLight:"rgba(35,109,215,0.15)",infoText:"#73acfa"},radius:{xs:"4px",sm:"6px",md:"8px",lg:"12px",full:"9999px"},shadow:{sm:"0 1px 3px rgba(0,0,0,0.3), 0 1px 2px -1px rgba(0,0,0,0.2)",md:"0 4px 6px -1px rgba(0,0,0,0.4), 0 2px 4px -2px rgba(0,0,0,0.3)",lg:"0 10px 15px -3px rgba(0,0,0,0.5), 0 4px 6px -4px rgba(0,0,0,0.4)",focus:"0 0 0 1px rgba(255,255,255,0.12), 0 0 0 3px rgba(108,71,255,0.3)"},font:{family:"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",mono:"'JetBrains Mono', 'SF Mono', monospace",sizeBase:"14px",lineHeight:"1.43"}},$={bg:{root:"#f8f9fa",surface:"#ffffff",card:"#ffffff",elevated:"#f0f1f3",hover:"#e9eaec",active:"#dddee1",input:"rgba(0,0,0,0.04)"},border:{default:"rgba(0,0,0,0.10)",subtle:"rgba(0,0,0,0.06)",strong:"rgba(0,0,0,0.15)",focus:"rgba(0,0,0,0.25)"},text:{primary:"#1a1a1a",secondary:"#6b7280",tertiary:"#9ca3af",placeholder:"#c0c5ce",white:"#1a1a1a"},shadow:{sm:"0 1px 3px rgba(0,0,0,0.08), 0 1px 2px -1px rgba(0,0,0,0.06)",md:"0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -2px rgba(0,0,0,0.06)",lg:"0 10px 15px -3px rgba(0,0,0,0.12), 0 4px 6px -4px rgba(0,0,0,0.08)",focus:"0 0 0 1px rgba(0,0,0,0.08), 0 0 0 3px rgba(108,71,255,0.2)"}},Le=`
2
2
  :root {
3
3
  /* Backgrounds \u2014 layered depth */
4
4
  --bg-root: ${_.bg.root};
@@ -53,7 +53,7 @@
53
53
  --shadow-lg: ${_.shadow.lg};
54
54
  --shadow-focus: ${_.shadow.focus};
55
55
  }
56
- `,Le=`
56
+ `,Re=`
57
57
  [data-theme="light"] {
58
58
  --bg-root: ${$.bg.root};
59
59
  --bg-surface: ${$.bg.surface};
@@ -79,7 +79,7 @@
79
79
  --shadow-lg: ${$.shadow.lg};
80
80
  --shadow-focus: ${$.shadow.focus};
81
81
  }
82
- `,Re=`
82
+ `,Pe=`
83
83
  *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
84
84
  html { color-scheme: dark; }
85
85
  html[data-theme="light"] { color-scheme: light; }
@@ -95,7 +95,7 @@
95
95
  a { color: var(--blue-muted); text-decoration: none; }
96
96
  a:hover { text-decoration: underline; }
97
97
  .hidden { display: none; }
98
- `,Pe=typeof HTMLElement<"u"?HTMLElement:class{},Ee='<svg width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"/></svg>',Oe='<svg width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"/></svg>',$e=`
98
+ `,Oe=typeof HTMLElement<"u"?HTMLElement:class{},Ee='<svg width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"/></svg>',$e='<svg width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"/></svg>',Me=`
99
99
  :host {
100
100
  display: inline-flex;
101
101
  align-items: center;
@@ -142,15 +142,15 @@
142
142
  }
143
143
  .copy-btn:hover { opacity: 1; }
144
144
  .copy-btn.copied { opacity: 1; color: var(--did-copy-success-color, #22c55e); }
145
- `,Me=class extends Pe{static observedAttributes=["did","compact","copyable","start-chars","end-chars","show-prefix","no-tooltip","no-copy","block","size"];shadow;copyTimer=null;constructor(){super(),this.shadow=this.attachShadow({mode:"open"})}connectedCallback(){this.render()}attributeChangedCallback(){this.render()}disconnectedCallback(){this.copyTimer&&clearTimeout(this.copyTimer)}get parts(){let o=Number(this.getAttribute("start-chars")),e=Number(this.getAttribute("end-chars"));return ue(this.getAttribute("did")||"",{startChars:o>0?o:void 0,endChars:e>0?e:void 0})}render(){if(!(this.getAttribute("did")||"")){this.shadow.innerHTML="";return}let e=this.parts,r=this.hasAttribute("compact"),t=!this.hasAttribute("no-copy")&&this.getAttribute("copyable")!=="false",n=this.hasAttribute("show-prefix"),a=this.hasAttribute("no-tooltip"),s=Number(this.getAttribute("size"))||0,i=s>=12?`${s}px`:"inherit",d=r?e.compact:e.address,m=!a&&r?` title="${e.address}"`:"",y=n?`<span class="prefix">${e.prefix} </span>`:"",f=r?"address-compact":"address",l=t?" clickable":"",b=t?`<button class="copy-btn" aria-label="Copy DID">${Ee}</button>`:"";if(this.shadow.innerHTML=`
146
- <style>${$e}:host { font-size: ${i}; }</style>
147
- ${y}<span class="${f}${l}"${m}>${d}</span>${b}
148
- `,t){let B=this.shadow.querySelector(`.${f}`);B&&B.addEventListener("click",D=>{D.stopPropagation(),this.copyToClipboard(e.copyText)});let k=this.shadow.querySelector(".copy-btn");k&&k.addEventListener("click",D=>{D.stopPropagation(),this.copyToClipboard(e.copyText)})}}copyToClipboard(o){navigator.clipboard?.writeText?navigator.clipboard.writeText(o).catch(()=>this.fallbackCopy(o)):this.fallbackCopy(o),this.showCopied()}fallbackCopy(o){try{let e=document.createElement("input");e.value=o,document.body.appendChild(e),e.select(),document.execCommand?.("copy"),e.remove()}catch{}}showCopied(){let o=this.shadow.querySelector(".copy-btn");o&&(o.classList.add("copied"),o.innerHTML=Oe,this.copyTimer&&clearTimeout(this.copyTimer),this.copyTimer=setTimeout(()=>{o.classList.remove("copied"),o.innerHTML=Ee},1500))}};typeof customElements<"u"&&!customElements.get("did-address")&&customElements.define("did-address",Me);var we={en:{signIn:"Sign in",signInTo:"Sign in to {appName}",passkeyButton:"Continue with Passkey",passkeySignIn:"Sign in with Passkey",passkeyCreate:"Create Passkey",passkeyFirstTime:"First time? Create a passkey",passkeyBackToSignIn:"Back to sign in",passkeyWaiting:"Waiting for passkey\u2026",passkeyCreating:"Creating your passkey\u2026",passkeyNoLocal:"No passkey found on this device.",passkeyUseAnotherDevice:"Use another device",passkeyCreateInstead:"Create a new passkey instead",didWalletButton:"Continue with DID Wallet",didWalletButtonShort:"DID Wallet",scanWithWallet:"Scan with your DID Wallet",waitingWallet:"Requesting connection",walletContinue:"Please continue in DID Wallet",noPasskey:"No existing passkey found. Enter a name and create one.",success:"Success!",timeout:"Session timed out. Try again.",refreshQR:"Refresh",namePlaceholder:"Your name (optional)",or:"or",emailPlaceholder:"Email address",emailButton:"Email",passkeyUnsupported:"Your browser does not support Passkey authentication.",connecting:"Connecting...",verifying:"Verifying...",openInWallet:"Open in DID Wallet",authFailed:"Authentication failed",registrationFailed:"Registration failed",passkeySetupFailed:"Passkey setup failed",accessDenied:"Access denied: your account is not permitted to log in to this site.",regClosed:"Registration requires an invitation.",federatedBy:"Authentication provided by {masterName}",securedBy:"Secured by DID Connect",privacy:"Privacy",terms:"Terms",back:"Back",cancel:"Cancel",scanTitle:"Scan with DID Wallet",emailTitle:"Continue with Email",emailSubmit:"Send Code",emailSending:"Sending code...",emailSent:"We sent a 6-digit code to {email}",emailCodePlaceholder:"6-digit code",emailVerify:"Verify",emailResend:"Resend code",emailInvalid:"Please enter a valid email address.",emailCodeInvalid:"Please enter the 6-digit code."},zh:{signIn:"\u767B\u5F55",signInTo:"\u767B\u5F55\u5230 {appName}",passkeyButton:"\u4F7F\u7528 Passkey \u7EE7\u7EED",passkeySignIn:"\u4F7F\u7528 Passkey \u767B\u5F55",passkeyCreate:"\u521B\u5EFA Passkey",passkeyFirstTime:"\u7B2C\u4E00\u6B21\u4F7F\u7528\uFF1F\u521B\u5EFA Passkey",passkeyBackToSignIn:"\u8FD4\u56DE\u767B\u5F55",passkeyWaiting:"\u6B63\u5728\u7B49\u5F85 Passkey\u2026",passkeyCreating:"\u6B63\u5728\u521B\u5EFA Passkey\u2026",passkeyNoLocal:"\u6B64\u8BBE\u5907\u4E0A\u6CA1\u6709\u627E\u5230 Passkey\u3002",passkeyUseAnotherDevice:"\u7528\u5176\u4ED6\u8BBE\u5907\u767B\u5F55",passkeyCreateInstead:"\u6539\u4E3A\u521B\u5EFA\u65B0\u7684 Passkey",didWalletButton:"\u4F7F\u7528 DID Wallet \u7EE7\u7EED",didWalletButtonShort:"DID Wallet",scanWithWallet:"\u8BF7\u4F7F\u7528 DID Wallet \u626B\u7801",waitingWallet:"\u6B63\u5728\u8BF7\u6C42\u8FDE\u63A5",walletContinue:"\u8BF7\u5728 DID Wallet \u4E2D\u7EE7\u7EED\u5B8C\u6210\u60A8\u7684\u64CD\u4F5C",noPasskey:"\u672A\u627E\u5230\u5DF2\u6709 Passkey\u3002\u8F93\u5165\u540D\u79F0\u5E76\u521B\u5EFA\u4E00\u4E2A\u3002",success:"\u6210\u529F",timeout:"\u4F1A\u8BDD\u8D85\u65F6\uFF0C\u8BF7\u91CD\u8BD5\u3002",refreshQR:"\u5237\u65B0",namePlaceholder:"\u60A8\u7684\u540D\u5B57\uFF08\u53EF\u9009\uFF09",or:"\u6216",emailPlaceholder:"\u90AE\u7BB1\u5730\u5740",emailButton:"\u90AE\u7BB1",passkeyUnsupported:"\u60A8\u7684\u6D4F\u89C8\u5668\u4E0D\u652F\u6301 Passkey \u8BA4\u8BC1\u3002",connecting:"\u8FDE\u63A5\u4E2D...",verifying:"\u9A8C\u8BC1\u4E2D...",openInWallet:"\u5728 DID Wallet \u4E2D\u6253\u5F00",authFailed:"\u8BA4\u8BC1\u5931\u8D25",registrationFailed:"\u6CE8\u518C\u5931\u8D25",passkeySetupFailed:"Passkey \u8BBE\u7F6E\u5931\u8D25",accessDenied:"\u8BBF\u95EE\u88AB\u62D2\u7EDD\uFF1A\u60A8\u7684\u8D26\u6237\u65E0\u6743\u767B\u5F55\u6B64\u7AD9\u70B9\u3002",regClosed:"\u6CE8\u518C\u9700\u8981\u9080\u8BF7\u3002",federatedBy:"\u8BA4\u8BC1\u670D\u52A1\u7531 {masterName} \u63D0\u4F9B",securedBy:"\u7531 DID Connect \u63D0\u4F9B\u5B89\u5168\u4FDD\u969C",privacy:"\u9690\u79C1",terms:"\u6761\u6B3E",back:"\u8FD4\u56DE",cancel:"\u53D6\u6D88",scanTitle:"\u4F7F\u7528 DID Wallet \u626B\u7801",emailTitle:"\u4F7F\u7528\u90AE\u7BB1\u7EE7\u7EED",emailSubmit:"\u53D1\u9001\u9A8C\u8BC1\u7801",emailSending:"\u6B63\u5728\u53D1\u9001\u9A8C\u8BC1\u7801...",emailSent:"\u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001\u81F3 {email}",emailCodePlaceholder:"6 \u4F4D\u9A8C\u8BC1\u7801",emailVerify:"\u9A8C\u8BC1",emailResend:"\u91CD\u65B0\u53D1\u9001",emailInvalid:"\u8BF7\u8F93\u5165\u6709\u6548\u7684\u90AE\u7BB1\u5730\u5740\u3002",emailCodeInvalid:"\u8BF7\u8F93\u5165 6 \u4F4D\u9A8C\u8BC1\u7801\u3002"},"zh-TW":{signIn:"\u767B\u5165",signInTo:"\u767B\u5165\u81F3 {appName}",passkeyButton:"\u4F7F\u7528 Passkey \u7E7C\u7E8C",passkeySignIn:"\u4F7F\u7528 Passkey \u767B\u5165",passkeyCreate:"\u5EFA\u7ACB Passkey",passkeyFirstTime:"\u7B2C\u4E00\u6B21\u4F7F\u7528\uFF1F\u5EFA\u7ACB Passkey",passkeyBackToSignIn:"\u8FD4\u56DE\u767B\u5165",passkeyWaiting:"\u6B63\u5728\u7B49\u5F85 Passkey\u2026",passkeyCreating:"\u6B63\u5728\u5EFA\u7ACB Passkey\u2026",passkeyNoLocal:"\u6B64\u88DD\u7F6E\u4E0A\u6C92\u6709\u627E\u5230 Passkey\u3002",passkeyUseAnotherDevice:"\u7528\u5176\u4ED6\u88DD\u7F6E\u767B\u5165",passkeyCreateInstead:"\u6539\u70BA\u5EFA\u7ACB\u65B0\u7684 Passkey",didWalletButton:"\u4F7F\u7528 DID Wallet \u7E7C\u7E8C",didWalletButtonShort:"DID Wallet",scanWithWallet:"\u8ACB\u4F7F\u7528 DID Wallet \u6383\u78BC",waitingWallet:"\u6B63\u5728\u8981\u6C42\u9023\u7DDA",walletContinue:"\u8ACB\u5728 DID Wallet \u4E2D\u7E7C\u7E8C\u5B8C\u6210\u60A8\u7684\u64CD\u4F5C",noPasskey:"\u672A\u627E\u5230\u5DF2\u6709 Passkey\u3002\u8F38\u5165\u540D\u7A31\u4E26\u5EFA\u7ACB\u4E00\u500B\u3002",success:"\u6210\u529F",timeout:"\u5DE5\u4F5C\u968E\u6BB5\u903E\u6642\uFF0C\u8ACB\u91CD\u8A66\u3002",refreshQR:"\u91CD\u65B0\u6574\u7406",namePlaceholder:"\u60A8\u7684\u540D\u5B57\uFF08\u9078\u586B\uFF09",or:"\u6216",emailPlaceholder:"\u96FB\u5B50\u90F5\u4EF6\u5730\u5740",emailButton:"\u96FB\u5B50\u90F5\u4EF6",passkeyUnsupported:"\u60A8\u7684\u700F\u89BD\u5668\u4E0D\u652F\u63F4 Passkey \u8A8D\u8B49\u3002",connecting:"\u9023\u7DDA\u4E2D...",verifying:"\u9A57\u8B49\u4E2D...",openInWallet:"\u5728 DID Wallet \u4E2D\u958B\u555F",authFailed:"\u8A8D\u8B49\u5931\u6557",registrationFailed:"\u8A3B\u518A\u5931\u6557",passkeySetupFailed:"Passkey \u8A2D\u5B9A\u5931\u6557",accessDenied:"\u5B58\u53D6\u88AB\u62D2\u7D55\uFF1A\u60A8\u7684\u5E33\u865F\u7121\u6B0A\u767B\u5165\u6B64\u7DB2\u7AD9\u3002",regClosed:"\u8A3B\u518A\u9700\u8981\u9080\u8ACB\u3002",federatedBy:"\u8A8D\u8B49\u670D\u52D9\u7531 {masterName} \u63D0\u4F9B",securedBy:"\u7531 DID Connect \u63D0\u4F9B\u5B89\u5168\u4FDD\u969C",privacy:"\u96B1\u79C1",terms:"\u689D\u6B3E",back:"\u8FD4\u56DE",cancel:"\u53D6\u6D88",scanTitle:"\u4F7F\u7528 DID Wallet \u6383\u78BC",emailTitle:"\u4F7F\u7528\u96FB\u5B50\u90F5\u4EF6\u7E7C\u7E8C",emailSubmit:"\u50B3\u9001\u9A57\u8B49\u78BC",emailSending:"\u6B63\u5728\u50B3\u9001\u9A57\u8B49\u78BC...",emailSent:"\u9A57\u8B49\u78BC\u5DF2\u50B3\u9001\u81F3 {email}",emailCodePlaceholder:"6 \u4F4D\u6578\u9A57\u8B49\u78BC",emailVerify:"\u9A57\u8B49",emailResend:"\u91CD\u65B0\u50B3\u9001",emailInvalid:"\u8ACB\u8F38\u5165\u6709\u6548\u7684\u96FB\u5B50\u90F5\u4EF6\u5730\u5740\u3002",emailCodeInvalid:"\u8ACB\u8F38\u5165 6 \u4F4D\u6578\u9A57\u8B49\u78BC\u3002"},ja:{signIn:"\u30ED\u30B0\u30A4\u30F3",signInTo:"{appName} \u306B\u30ED\u30B0\u30A4\u30F3",passkeyButton:"Passkey \u3067\u7D9A\u3051\u308B",passkeySignIn:"Passkey \u3067\u30ED\u30B0\u30A4\u30F3",passkeyCreate:"Passkey \u3092\u4F5C\u6210",passkeyFirstTime:"\u521D\u3081\u3066\u3067\u3059\u304B\uFF1FPasskey \u3092\u4F5C\u6210",passkeyBackToSignIn:"\u30ED\u30B0\u30A4\u30F3\u306B\u623B\u308B",passkeyWaiting:"Passkey \u3092\u5F85\u3063\u3066\u3044\u307E\u3059\u2026",passkeyCreating:"Passkey \u3092\u4F5C\u6210\u3057\u3066\u3044\u307E\u3059\u2026",passkeyNoLocal:"\u3053\u306E\u30C7\u30D0\u30A4\u30B9\u306B Passkey \u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002",passkeyUseAnotherDevice:"\u5225\u306E\u30C7\u30D0\u30A4\u30B9\u3092\u4F7F\u7528",passkeyCreateInstead:"\u4EE3\u308F\u308A\u306B\u65B0\u3057\u3044 Passkey \u3092\u4F5C\u6210",didWalletButton:"DID Wallet \u3067\u7D9A\u3051\u308B",didWalletButtonShort:"DID Wallet",scanWithWallet:"DID Wallet \u3067\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u304F\u3060\u3055\u3044",waitingWallet:"\u63A5\u7D9A\u3092\u8981\u6C42\u3057\u3066\u3044\u307E\u3059",walletContinue:"DID Wallet \u3067\u64CD\u4F5C\u3092\u7D9A\u3051\u3066\u304F\u3060\u3055\u3044",noPasskey:"\u65E2\u5B58\u306E Passkey \u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\u540D\u524D\u3092\u5165\u529B\u3057\u3066\u4F5C\u6210\u3057\u3066\u304F\u3060\u3055\u3044\u3002",success:"\u6210\u529F\u3057\u307E\u3057\u305F",timeout:"\u30BB\u30C3\u30B7\u30E7\u30F3\u304C\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u3057\u307E\u3057\u305F\u3002\u3082\u3046\u4E00\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002",refreshQR:"\u66F4\u65B0",namePlaceholder:"\u304A\u540D\u524D\uFF08\u4EFB\u610F\uFF09",or:"\u307E\u305F\u306F",emailPlaceholder:"\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9",emailButton:"\u30E1\u30FC\u30EB",passkeyUnsupported:"\u304A\u4F7F\u3044\u306E\u30D6\u30E9\u30A6\u30B6\u30FC\u306F Passkey \u8A8D\u8A3C\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093\u3002",connecting:"\u63A5\u7D9A\u3057\u3066\u3044\u307E\u3059...",verifying:"\u78BA\u8A8D\u3057\u3066\u3044\u307E\u3059...",openInWallet:"DID Wallet \u3067\u958B\u304F",authFailed:"\u8A8D\u8A3C\u306B\u5931\u6557\u3057\u307E\u3057\u305F",registrationFailed:"\u767B\u9332\u306B\u5931\u6557\u3057\u307E\u3057\u305F",passkeySetupFailed:"Passkey \u306E\u8A2D\u5B9A\u306B\u5931\u6557\u3057\u307E\u3057\u305F",accessDenied:"\u30A2\u30AF\u30BB\u30B9\u304C\u62D2\u5426\u3055\u308C\u307E\u3057\u305F\uFF1A\u3053\u306E\u30B5\u30A4\u30C8\u306B\u30ED\u30B0\u30A4\u30F3\u3059\u308B\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002",regClosed:"\u767B\u9332\u306B\u306F\u62DB\u5F85\u304C\u5FC5\u8981\u3067\u3059\u3002",federatedBy:"\u8A8D\u8A3C\u30B5\u30FC\u30D3\u30B9\u306F {masterName} \u304C\u63D0\u4F9B\u3057\u3066\u3044\u307E\u3059",securedBy:"DID Connect \u306B\u3088\u308A\u4FDD\u8B77\u3055\u308C\u3066\u3044\u307E\u3059",privacy:"\u30D7\u30E9\u30A4\u30D0\u30B7\u30FC",terms:"\u5229\u7528\u898F\u7D04",back:"\u623B\u308B",cancel:"\u30AD\u30E3\u30F3\u30BB\u30EB",scanTitle:"DID Wallet \u3067\u30B9\u30AD\u30E3\u30F3",emailTitle:"\u30E1\u30FC\u30EB\u3067\u7D9A\u3051\u308B",emailSubmit:"\u30B3\u30FC\u30C9\u3092\u9001\u4FE1",emailSending:"\u30B3\u30FC\u30C9\u3092\u9001\u4FE1\u3057\u3066\u3044\u307E\u3059...",emailSent:"{email} \u306B 6 \u6841\u306E\u30B3\u30FC\u30C9\u3092\u9001\u4FE1\u3057\u307E\u3057\u305F",emailCodePlaceholder:"6 \u6841\u306E\u30B3\u30FC\u30C9",emailVerify:"\u78BA\u8A8D",emailResend:"\u30B3\u30FC\u30C9\u3092\u518D\u9001\u4FE1",emailInvalid:"\u6709\u52B9\u306A\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",emailCodeInvalid:"6 \u6841\u306E\u30B3\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}},ce=[{code:"en",label:"English"},{code:"zh",label:"\u4E2D\u6587"}];function w(o,e,r){let t=e&&we[e]?e:"en",n=we[t][o]??o;if(r)for(let[a,s]of Object.entries(r))n=n.replace(new RegExp(`\\{${a}\\}`,"g"),s);return n}var le='<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none"><path fill="currentColor" d="M3 20v-2.8q0-.85.438-1.562T4.6 14.55q1.55-.775 3.15-1.162T11 13q.5 0 1 .038t1 .112q-.1 1.45.525 2.738T15.35 18v2zm16 3l-1.5-1.5v-4.65q-1.1-.325-1.8-1.237T15 13.5q0-1.45 1.025-2.475T18.5 10t2.475 1.025T22 13.5q0 1.125-.638 2t-1.612 1.25L21 18l-1.5 1.5L21 21zm-8-11q-1.65 0-2.825-1.175T7 8t1.175-2.825T11 4t2.825 1.175T15 8t-1.175 2.825T11 12m7.5 2q.425 0 .713-.288T19.5 13t-.288-.712T18.5 12t-.712.288T17.5 13t.288.713t.712.287"/></svg>',xe='<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none"><rect x="2" y="4" width="20" height="16" rx="3" fill="#4598FA"/><rect x="3" y="6" width="18" height="12" rx="2" fill="white" opacity="0.9"/><rect x="0" y="14" width="24" height="10" rx="0" fill="url(#dw_g)"/><path d="M5.5 9.5h4.5c.3 0 .5.2.5.5v2.5c0 .3-.2.5-.5.5H5.5c-.3 0-.5-.2-.5-.5V10c0-.3.2-.5.5-.5z" fill="#4598FA"/><defs><linearGradient id="dw_g" x1="12" y1="14" x2="12" y2="24" gradientUnits="userSpaceOnUse"><stop stop-color="#77B2F6"/><stop offset="1" stop-color="#4598FA"/></linearGradient></defs></svg>',Ue='<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none"><path fill="currentColor" d="M22 7.535V17a3 3 0 0 1-2.824 2.995L19 20H5a3 3 0 0 1-2.995-2.824L2 17V7.535l9.445 6.297l.116.066a1 1 0 0 0 .878 0l.116-.066z"/><path fill="currentColor" d="M19 4c1.08 0 2.027.57 2.555 1.427L12 11.797l-9.555-6.37a2.999 2.999 0 0 1 2.354-1.42L5 4z"/></svg>',He='<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none"><path fill="currentColor" d="M12 1L3 5v6c0 5.55 3.84 10.74 9 12c5.16-1.26 9-6.45 9-12V5zm0 10.99h7c-.53 4.12-3.28 7.79-7 8.94V12H5V6.3l7-3.11z"/></svg>',Ce='<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none"><path fill="currentColor" d="M20 11H7.83l5.59-5.59L12 4l-8 8l8 8l1.41-1.41L7.83 13H20z"/></svg>',We={google:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 256 262"><path fill="#4285F4" d="M255.878 133.451c0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356l-.244 1.622l38.755 30.023l2.685.268c24.659-22.774 38.875-56.282 38.875-96.027"/><path fill="#34A853" d="M130.55 261.1c35.248 0 64.839-11.605 86.453-31.622l-41.196-31.913c-11.024 7.688-25.82 13.055-45.257 13.055c-34.523 0-63.824-22.773-74.269-54.25l-1.531.13l-40.298 31.187l-.527 1.465C35.393 231.798 79.49 261.1 130.55 261.1"/><path fill="#FBBC05" d="M56.281 156.37c-2.756-8.123-4.351-16.827-4.351-25.82c0-8.994 1.595-17.697 4.206-25.82l-.073-1.73L15.26 71.312l-1.335.635C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602z"/><path fill="#EB4335" d="M130.55 50.479c24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0C79.49 0 35.393 29.301 13.925 71.947l42.211 32.783c10.59-31.477 39.891-54.251 74.414-54.251"/></svg>',github:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 256 250" fill="currentColor"><path d="M128.001 0C57.317 0 0 57.307 0 128.001c0 56.554 36.676 104.535 87.535 121.46c6.397 1.185 8.746-2.777 8.746-6.158c0-3.052-.12-13.135-.174-23.83c-35.61 7.742-43.124-15.103-43.124-15.103c-5.823-14.795-14.213-18.73-14.213-18.73c-11.613-7.944.876-7.78.876-7.78c12.853.902 19.621 13.19 19.621 13.19c11.417 19.568 29.945 13.911 37.249 10.64c1.149-8.272 4.466-13.92 8.127-17.116c-28.431-3.236-58.318-14.212-58.318-63.258c0-13.975 5-25.394 13.188-34.358c-1.329-3.224-5.71-16.242 1.24-33.874c0 0 10.749-3.44 35.21 13.121c10.21-2.836 21.16-4.258 32.038-4.307c10.878.049 21.837 1.47 32.066 4.307c24.431-16.56 35.165-13.12 35.165-13.12c6.967 17.63 2.584 30.65 1.255 33.873c8.207 8.964 13.173 20.383 13.173 34.358c0 49.163-29.944 59.988-58.447 63.157c4.591 3.972 8.682 11.762 8.682 23.704c0 17.126-.148 30.91-.148 35.126c0 3.407 2.304 7.398 8.792 6.14C219.37 232.5 256 184.537 256 128.002C256 57.307 198.691 0 128.001 0"/></svg>',apple:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 256 315" fill="currentColor"><path d="M213.803 167.03c.442 47.58 41.74 63.413 42.197 63.615c-.35 1.116-6.599 22.563-21.757 44.716c-13.104 19.153-26.705 38.235-48.13 38.63c-21.05.388-27.82-12.483-51.888-12.483c-24.061 0-31.582 12.088-51.51 12.871c-20.68.783-36.428-20.71-49.64-39.793c-27-39.033-47.633-110.3-19.928-158.406c13.763-23.89 38.36-39.017 65.056-39.405c20.307-.388 39.475 13.675 51.889 13.675c12.406 0 35.699-16.895 60.186-14.414c10.25.427 39.026 4.14 57.503 31.186c-1.49.923-34.335 20.044-33.978 59.808M174.24 50.199c10.98-13.29 18.369-31.79 16.353-50.199c-15.826.636-34.962 10.546-46.314 23.828c-10.173 11.763-19.082 30.589-16.678 48.633c17.64 1.365 35.66-8.964 46.639-22.262"/></svg>',twitter:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 256 256" fill="currentColor"><path d="M149.079 108.399L242.33 0h-22.098l-80.97 94.12L74.59 0H0l97.796 142.328L0 256h22.1l85.507-99.395L175.905 256h74.59L149.073 108.399zM118.81 143.58l-9.909-14.172l-78.84-112.773h33.943l63.625 91.011l9.909 14.173l82.705 118.3H186.3l-67.49-96.533z"/></svg>',auth0:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 256 256"><path fill="#EB5424" d="M203.97 200.38L167.47 88l-39.5 112.38h75.98zm0-144.76L167.47 168l75.97-26.16l19.76-60.82c6.64-20.4-1.94-42.72-21.18-52.76l-38.06 27.36zM52.03 55.62L88.54 168l39.5-112.38H52.02zM52.03 200.38L88.54 88L12.56 114.16l-5.92 18.2c-6.64 20.4 1.94 42.72 21.18 52.76l24.2-17.38l.01.01v-.01l-.01.01.01-.37z"/></svg>',facebook:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 256 256"><path fill="#1877F2" d="M256 128C256 57.308 198.692 0 128 0S0 57.308 0 128c0 63.888 46.808 116.843 108 126.445V165H75.5v-37H108V99.8c0-32.08 19.11-49.8 48.348-49.8C170.352 50 185 52.5 185 52.5V84h-16.14C152.959 84 148 93.867 148 103.99V128h35.5l-5.675 37H148v89.445c61.192-9.602 108-62.556 108-126.445"/></svg>'},Ke='<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none"><path fill="currentColor" d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10s10-4.48 10-10S17.52 2 12 2m-1 17.93c-3.95-.49-7-3.85-7-7.93c0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41c0 2.08-.8 3.97-2.1 5.39"/></svg>';function ze(o){return We[o.toLowerCase()]??""}var J=function(o,e){let n=o,a=ne[e],s=null,i=0,d=null,m=[],y={},f=function(c,g){i=n*4+17,s=(function(u){let p=new Array(u);for(let h=0;h<u;h+=1){p[h]=new Array(u);for(let E=0;E<u;E+=1)p[h][E]=null}return p})(i),l(0,0),l(i-7,0),l(0,i-7),k(),B(),x(c,g),n>=7&&D(c),d==null&&(d=S(n,a,m)),T(d,g)},l=function(c,g){for(let u=-1;u<=7;u+=1)if(!(c+u<=-1||i<=c+u))for(let p=-1;p<=7;p+=1)g+p<=-1||i<=g+p||(0<=u&&u<=6&&(p==0||p==6)||0<=p&&p<=6&&(u==0||u==6)||2<=u&&u<=4&&2<=p&&p<=4?s[c+u][g+p]=!0:s[c+u][g+p]=!1)},b=function(){let c=0,g=0;for(let u=0;u<8;u+=1){f(!0,u);let p=q.getLostPoint(y);(u==0||c>p)&&(c=p,g=u)}return g},B=function(){for(let c=8;c<i-8;c+=1)s[c][6]==null&&(s[c][6]=c%2==0);for(let c=8;c<i-8;c+=1)s[6][c]==null&&(s[6][c]=c%2==0)},k=function(){let c=q.getPatternPosition(n);for(let g=0;g<c.length;g+=1)for(let u=0;u<c.length;u+=1){let p=c[g],h=c[u];if(s[p][h]==null)for(let E=-2;E<=2;E+=1)for(let C=-2;C<=2;C+=1)E==-2||E==2||C==-2||C==2||E==0&&C==0?s[p+E][h+C]=!0:s[p+E][h+C]=!1}},D=function(c){let g=q.getBCHTypeNumber(n);for(let u=0;u<18;u+=1){let p=!c&&(g>>u&1)==1;s[Math.floor(u/3)][u%3+i-8-3]=p}for(let u=0;u<18;u+=1){let p=!c&&(g>>u&1)==1;s[u%3+i-8-3][Math.floor(u/3)]=p}},x=function(c,g){let u=a<<3|g,p=q.getBCHTypeInfo(u);for(let h=0;h<15;h+=1){let E=!c&&(p>>h&1)==1;h<6?s[h][8]=E:h<8?s[h+1][8]=E:s[i-15+h][8]=E}for(let h=0;h<15;h+=1){let E=!c&&(p>>h&1)==1;h<8?s[8][i-h-1]=E:h<9?s[8][15-h-1+1]=E:s[8][15-h-1]=E}s[i-8][8]=!c},T=function(c,g){let u=-1,p=i-1,h=7,E=0,C=q.getMaskFunction(g);for(let A=i-1;A>0;A-=2)for(A==6&&(A-=1);;){for(let F=0;F<2;F+=1)if(s[p][A-F]==null){let R=!1;E<c.length&&(R=(c[E]>>>h&1)==1),C(p,A-F)&&(R=!R),s[p][A-F]=R,h-=1,h==-1&&(E+=1,h=7)}if(p+=u,p<0||i<=p){p-=u,u=-u;break}}},I=function(c,g){let u=0,p=0,h=0,E=new Array(g.length),C=new Array(g.length);for(let v=0;v<g.length;v+=1){let N=g[v].dataCount,W=g[v].totalCount-N;p=Math.max(p,N),h=Math.max(h,W),E[v]=new Array(N);for(let V=0;V<E[v].length;V+=1)E[v][V]=255&c.getBuffer()[V+u];u+=N;let ie=q.getErrorCorrectPolynomial(W),he=re(E[v],ie.getLength()-1).mod(ie);C[v]=new Array(ie.getLength()-1);for(let V=0;V<C[v].length;V+=1){let pe=V+he.getLength()-C[v].length;C[v][V]=pe>=0?he.getAt(pe):0}}let A=0;for(let v=0;v<g.length;v+=1)A+=g[v].totalCount;let F=new Array(A),R=0;for(let v=0;v<p;v+=1)for(let N=0;N<g.length;N+=1)v<E[N].length&&(F[R]=E[N][v],R+=1);for(let v=0;v<h;v+=1)for(let N=0;N<g.length;N+=1)v<C[N].length&&(F[R]=C[N][v],R+=1);return F},S=function(c,g,u){let p=ke.getRSBlocks(c,g),h=ve();for(let C=0;C<u.length;C+=1){let A=u[C];h.put(A.getMode(),4),h.put(A.getLength(),q.getLengthInBits(A.getMode(),c)),A.write(h)}let E=0;for(let C=0;C<p.length;C+=1)E+=p[C].dataCount;if(h.getLengthInBits()>E*8)throw"code length overflow. ("+h.getLengthInBits()+">"+E*8+")";for(h.getLengthInBits()+4<=E*8&&h.put(0,4);h.getLengthInBits()%8!=0;)h.putBit(!1);for(;!(h.getLengthInBits()>=E*8||(h.put(236,8),h.getLengthInBits()>=E*8));)h.put(17,8);return I(h,p)};y.addData=function(c,g){g=g||"Byte";let u=null;switch(g){case"Numeric":u=Ve(c);break;case"Alphanumeric":u=je(c);break;case"Byte":u=qe(c);break;case"Kanji":u=Ye(c);break;default:throw"mode:"+g}m.push(u),d=null},y.isDark=function(c,g){if(c<0||i<=c||g<0||i<=g)throw c+","+g;return s[c][g]},y.getModuleCount=function(){return i},y.make=function(){if(n<1){let c=1;for(;c<40;c++){let g=ke.getRSBlocks(c,a),u=ve();for(let h=0;h<m.length;h++){let E=m[h];u.put(E.getMode(),4),u.put(E.getLength(),q.getLengthInBits(E.getMode(),c)),E.write(u)}let p=0;for(let h=0;h<g.length;h++)p+=g[h].dataCount;if(u.getLengthInBits()<=p*8)break}n=c}f(!1,b())},y.createTableTag=function(c,g){c=c||2,g=typeof g>"u"?c*4:g;let u="";u+='<table style="',u+=" border-width: 0px; border-style: none;",u+=" border-collapse: collapse;",u+=" padding: 0px; margin: "+g+"px;",u+='">',u+="<tbody>";for(let p=0;p<y.getModuleCount();p+=1){u+="<tr>";for(let h=0;h<y.getModuleCount();h+=1)u+='<td style="',u+=" border-width: 0px; border-style: none;",u+=" border-collapse: collapse;",u+=" padding: 0px; margin: 0px;",u+=" width: "+c+"px;",u+=" height: "+c+"px;",u+=" background-color: ",u+=y.isDark(p,h)?"#000000":"#ffffff",u+=";",u+='"/>';u+="</tr>"}return u+="</tbody>",u+="</table>",u},y.createSvgTag=function(c,g,u,p){let h={};typeof arguments[0]=="object"&&(h=arguments[0],c=h.cellSize,g=h.margin,u=h.alt,p=h.title),c=c||2,g=typeof g>"u"?c*4:g,u=typeof u=="string"?{text:u}:u||{},u.text=u.text||null,u.id=u.text?u.id||"qrcode-description":null,p=typeof p=="string"?{text:p}:p||{},p.text=p.text||null,p.id=p.text?p.id||"qrcode-title":null;let E=y.getModuleCount()*c+g*2,C,A,F,R,v="",N;for(N="l"+c+",0 0,"+c+" -"+c+",0 0,-"+c+"z ",v+='<svg version="1.1" xmlns="http://www.w3.org/2000/svg"',v+=h.scalable?"":' width="'+E+'px" height="'+E+'px"',v+=' viewBox="0 0 '+E+" "+E+'" ',v+=' preserveAspectRatio="xMinYMin meet"',v+=p.text||u.text?' role="img" aria-labelledby="'+L([p.id,u.id].join(" ").trim())+'"':"",v+=">",v+=p.text?'<title id="'+L(p.id)+'">'+L(p.text)+"</title>":"",v+=u.text?'<description id="'+L(u.id)+'">'+L(u.text)+"</description>":"",v+='<rect width="100%" height="100%" fill="white" cx="0" cy="0"/>',v+='<path d="',F=0;F<y.getModuleCount();F+=1)for(R=F*c+g,C=0;C<y.getModuleCount();C+=1)y.isDark(F,C)&&(A=C*c+g,v+="M"+A+","+R+N);return v+='" stroke="transparent" fill="black"/>',v+="</svg>",v},y.createDataURL=function(c,g){c=c||2,g=typeof g>"u"?c*4:g;let u=y.getModuleCount()*c+g*2,p=g,h=u-g;return Xe(u,u,function(E,C){if(p<=E&&E<h&&p<=C&&C<h){let A=Math.floor((E-p)/c),F=Math.floor((C-p)/c);return y.isDark(F,A)?0:1}else return 1})},y.createImgTag=function(c,g,u){c=c||2,g=typeof g>"u"?c*4:g;let p=y.getModuleCount()*c+g*2,h="";return h+="<img",h+=' src="',h+=y.createDataURL(c,g),h+='"',h+=' width="',h+=p,h+='"',h+=' height="',h+=p,h+='"',u&&(h+=' alt="',h+=L(u),h+='"'),h+="/>",h};let L=function(c){let g="";for(let u=0;u<c.length;u+=1){let p=c.charAt(u);switch(p){case"<":g+="&lt;";break;case">":g+="&gt;";break;case"&":g+="&amp;";break;case'"':g+="&quot;";break;default:g+=p;break}}return g},z=function(c){c=typeof c>"u"?2:c;let u=y.getModuleCount()*1+c*2,p=c,h=u-c,E,C,A,F,R,v={"\u2588\u2588":"\u2588","\u2588 ":"\u2580"," \u2588":"\u2584"," ":" "},N={"\u2588\u2588":"\u2580","\u2588 ":"\u2580"," \u2588":" "," ":" "},W="";for(E=0;E<u;E+=2){for(A=Math.floor((E-p)/1),F=Math.floor((E+1-p)/1),C=0;C<u;C+=1)R="\u2588",p<=C&&C<h&&p<=E&&E<h&&y.isDark(A,Math.floor((C-p)/1))&&(R=" "),p<=C&&C<h&&p<=E+1&&E+1<h&&y.isDark(F,Math.floor((C-p)/1))?R+=" ":R+="\u2588",W+=c<1&&E+1>=h?N[R]:v[R];W+=`
149
- `}return u%2&&c>0?W.substring(0,W.length-u-1)+Array(u+1).join("\u2580"):W.substring(0,W.length-1)};return y.createASCII=function(c,g){if(c=c||1,c<2)return z(g);c-=1,g=typeof g>"u"?c*2:g;let u=y.getModuleCount()*c+g*2,p=g,h=u-g,E,C,A,F,R=Array(c+1).join("\u2588\u2588"),v=Array(c+1).join(" "),N="",W="";for(E=0;E<u;E+=1){for(A=Math.floor((E-p)/c),W="",C=0;C<u;C+=1)F=1,p<=C&&C<h&&p<=E&&E<h&&y.isDark(A,Math.floor((C-p)/c))&&(F=0),W+=F?R:v;for(A=0;A<c;A+=1)N+=W+`
150
- `}return N.substring(0,N.length-1)},y.renderTo2dContext=function(c,g){g=g||2;let u=y.getModuleCount();for(let p=0;p<u;p++)for(let h=0;h<u;h++)c.fillStyle=y.isDark(p,h)?"black":"white",c.fillRect(h*g,p*g,g,g)},y};J.stringToBytes=function(o){let e=[];for(let r=0;r<o.length;r+=1){let t=o.charCodeAt(r);e.push(t&255)}return e};J.createStringToBytes=function(o,e){let r=(function(){let n=Ge(o),a=function(){let d=n.read();if(d==-1)throw"eof";return d},s=0,i={};for(;;){let d=n.read();if(d==-1)break;let m=a(),y=a(),f=a(),l=String.fromCharCode(d<<8|m),b=y<<8|f;i[l]=b,s+=1}if(s!=e)throw s+" != "+e;return i})(),t=63;return function(n){let a=[];for(let s=0;s<n.length;s+=1){let i=n.charCodeAt(s);if(i<128)a.push(i);else{let d=r[n.charAt(s)];typeof d=="number"?(d&255)==d?a.push(d):(a.push(d>>>8),a.push(d&255)):a.push(t)}}return a}};var U={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},ne={L:1,M:0,Q:3,H:2},j={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},q=(function(){let o=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],e=1335,r=7973,t=21522,n={},a=function(s){let i=0;for(;s!=0;)i+=1,s>>>=1;return i};return n.getBCHTypeInfo=function(s){let i=s<<10;for(;a(i)-a(e)>=0;)i^=e<<a(i)-a(e);return(s<<10|i)^t},n.getBCHTypeNumber=function(s){let i=s<<12;for(;a(i)-a(r)>=0;)i^=r<<a(i)-a(r);return s<<12|i},n.getPatternPosition=function(s){return o[s-1]},n.getMaskFunction=function(s){switch(s){case j.PATTERN000:return function(i,d){return(i+d)%2==0};case j.PATTERN001:return function(i,d){return i%2==0};case j.PATTERN010:return function(i,d){return d%3==0};case j.PATTERN011:return function(i,d){return(i+d)%3==0};case j.PATTERN100:return function(i,d){return(Math.floor(i/2)+Math.floor(d/3))%2==0};case j.PATTERN101:return function(i,d){return i*d%2+i*d%3==0};case j.PATTERN110:return function(i,d){return(i*d%2+i*d%3)%2==0};case j.PATTERN111:return function(i,d){return(i*d%3+(i+d)%2)%2==0};default:throw"bad maskPattern:"+s}},n.getErrorCorrectPolynomial=function(s){let i=re([1],0);for(let d=0;d<s;d+=1)i=i.multiply(re([1,Y.gexp(d)],0));return i},n.getLengthInBits=function(s,i){if(1<=i&&i<10)switch(s){case U.MODE_NUMBER:return 10;case U.MODE_ALPHA_NUM:return 9;case U.MODE_8BIT_BYTE:return 8;case U.MODE_KANJI:return 8;default:throw"mode:"+s}else if(i<27)switch(s){case U.MODE_NUMBER:return 12;case U.MODE_ALPHA_NUM:return 11;case U.MODE_8BIT_BYTE:return 16;case U.MODE_KANJI:return 10;default:throw"mode:"+s}else if(i<41)switch(s){case U.MODE_NUMBER:return 14;case U.MODE_ALPHA_NUM:return 13;case U.MODE_8BIT_BYTE:return 16;case U.MODE_KANJI:return 12;default:throw"mode:"+s}else throw"type:"+i},n.getLostPoint=function(s){let i=s.getModuleCount(),d=0;for(let f=0;f<i;f+=1)for(let l=0;l<i;l+=1){let b=0,B=s.isDark(f,l);for(let k=-1;k<=1;k+=1)if(!(f+k<0||i<=f+k))for(let D=-1;D<=1;D+=1)l+D<0||i<=l+D||k==0&&D==0||B==s.isDark(f+k,l+D)&&(b+=1);b>5&&(d+=3+b-5)}for(let f=0;f<i-1;f+=1)for(let l=0;l<i-1;l+=1){let b=0;s.isDark(f,l)&&(b+=1),s.isDark(f+1,l)&&(b+=1),s.isDark(f,l+1)&&(b+=1),s.isDark(f+1,l+1)&&(b+=1),(b==0||b==4)&&(d+=3)}for(let f=0;f<i;f+=1)for(let l=0;l<i-6;l+=1)s.isDark(f,l)&&!s.isDark(f,l+1)&&s.isDark(f,l+2)&&s.isDark(f,l+3)&&s.isDark(f,l+4)&&!s.isDark(f,l+5)&&s.isDark(f,l+6)&&(d+=40);for(let f=0;f<i;f+=1)for(let l=0;l<i-6;l+=1)s.isDark(l,f)&&!s.isDark(l+1,f)&&s.isDark(l+2,f)&&s.isDark(l+3,f)&&s.isDark(l+4,f)&&!s.isDark(l+5,f)&&s.isDark(l+6,f)&&(d+=40);let m=0;for(let f=0;f<i;f+=1)for(let l=0;l<i;l+=1)s.isDark(l,f)&&(m+=1);let y=Math.abs(100*m/i/i-50)/5;return d+=y*10,d},n})(),Y=(function(){let o=new Array(256),e=new Array(256);for(let t=0;t<8;t+=1)o[t]=1<<t;for(let t=8;t<256;t+=1)o[t]=o[t-4]^o[t-5]^o[t-6]^o[t-8];for(let t=0;t<255;t+=1)e[o[t]]=t;let r={};return r.glog=function(t){if(t<1)throw"glog("+t+")";return e[t]},r.gexp=function(t){for(;t<0;)t+=255;for(;t>=256;)t-=255;return o[t]},r})(),re=function(o,e){if(typeof o.length>"u")throw o.length+"/"+e;let r=(function(){let n=0;for(;n<o.length&&o[n]==0;)n+=1;let a=new Array(o.length-n+e);for(let s=0;s<o.length-n;s+=1)a[s]=o[s+n];return a})(),t={};return t.getAt=function(n){return r[n]},t.getLength=function(){return r.length},t.multiply=function(n){let a=new Array(t.getLength()+n.getLength()-1);for(let s=0;s<t.getLength();s+=1)for(let i=0;i<n.getLength();i+=1)a[s+i]^=Y.gexp(Y.glog(t.getAt(s))+Y.glog(n.getAt(i)));return re(a,0)},t.mod=function(n){if(t.getLength()-n.getLength()<0)return t;let a=Y.glog(t.getAt(0))-Y.glog(n.getAt(0)),s=new Array(t.getLength());for(let i=0;i<t.getLength();i+=1)s[i]=t.getAt(i);for(let i=0;i<n.getLength();i+=1)s[i]^=Y.gexp(Y.glog(n.getAt(i))+a);return re(s,0).mod(n)},t},ke=(function(){let o=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],e=function(n,a){let s={};return s.totalCount=n,s.dataCount=a,s},r={},t=function(n,a){switch(a){case ne.L:return o[(n-1)*4+0];case ne.M:return o[(n-1)*4+1];case ne.Q:return o[(n-1)*4+2];case ne.H:return o[(n-1)*4+3];default:return}};return r.getRSBlocks=function(n,a){let s=t(n,a);if(typeof s>"u")throw"bad rs block @ typeNumber:"+n+"/errorCorrectionLevel:"+a;let i=s.length/3,d=[];for(let m=0;m<i;m+=1){let y=s[m*3+0],f=s[m*3+1],l=s[m*3+2];for(let b=0;b<y;b+=1)d.push(e(f,l))}return d},r})(),ve=function(){let o=[],e=0,r={};return r.getBuffer=function(){return o},r.getAt=function(t){let n=Math.floor(t/8);return(o[n]>>>7-t%8&1)==1},r.put=function(t,n){for(let a=0;a<n;a+=1)r.putBit((t>>>n-a-1&1)==1)},r.getLengthInBits=function(){return e},r.putBit=function(t){let n=Math.floor(e/8);o.length<=n&&o.push(0),t&&(o[n]|=128>>>e%8),e+=1},r},Ve=function(o){let e=U.MODE_NUMBER,r=o,t={};t.getMode=function(){return e},t.getLength=function(s){return r.length},t.write=function(s){let i=r,d=0;for(;d+2<i.length;)s.put(n(i.substring(d,d+3)),10),d+=3;d<i.length&&(i.length-d==1?s.put(n(i.substring(d,d+1)),4):i.length-d==2&&s.put(n(i.substring(d,d+2)),7))};let n=function(s){let i=0;for(let d=0;d<s.length;d+=1)i=i*10+a(s.charAt(d));return i},a=function(s){if("0"<=s&&s<="9")return s.charCodeAt(0)-48;throw"illegal char :"+s};return t},je=function(o){let e=U.MODE_ALPHA_NUM,r=o,t={};t.getMode=function(){return e},t.getLength=function(a){return r.length},t.write=function(a){let s=r,i=0;for(;i+1<s.length;)a.put(n(s.charAt(i))*45+n(s.charAt(i+1)),11),i+=2;i<s.length&&a.put(n(s.charAt(i)),6)};let n=function(a){if("0"<=a&&a<="9")return a.charCodeAt(0)-48;if("A"<=a&&a<="Z")return a.charCodeAt(0)-65+10;switch(a){case" ":return 36;case"$":return 37;case"%":return 38;case"*":return 39;case"+":return 40;case"-":return 41;case".":return 42;case"/":return 43;case":":return 44;default:throw"illegal char :"+a}};return t},qe=function(o){let e=U.MODE_8BIT_BYTE,r=o,t=J.stringToBytes(o),n={};return n.getMode=function(){return e},n.getLength=function(a){return t.length},n.write=function(a){for(let s=0;s<t.length;s+=1)a.put(t[s],8)},n},Ye=function(o){let e=U.MODE_KANJI,r=o,t=J.stringToBytes;(function(s,i){let d=t(s);if(d.length!=2||(d[0]<<8|d[1])!=i)throw"sjis not supported."})("\u53CB",38726);let n=t(o),a={};return a.getMode=function(){return e},a.getLength=function(s){return~~(n.length/2)},a.write=function(s){let i=n,d=0;for(;d+1<i.length;){let m=(255&i[d])<<8|255&i[d+1];if(33088<=m&&m<=40956)m-=33088;else if(57408<=m&&m<=60351)m-=49472;else throw"illegal char at "+(d+1)+"/"+m;m=(m>>>8&255)*192+(m&255),s.put(m,13),d+=2}if(d<i.length)throw"illegal char at "+(d+1)},a},_e=function(){let o=[],e={};return e.writeByte=function(r){o.push(r&255)},e.writeShort=function(r){e.writeByte(r),e.writeByte(r>>>8)},e.writeBytes=function(r,t,n){t=t||0,n=n||r.length;for(let a=0;a<n;a+=1)e.writeByte(r[a+t])},e.writeString=function(r){for(let t=0;t<r.length;t+=1)e.writeByte(r.charCodeAt(t))},e.toByteArray=function(){return o},e.toString=function(){let r="";r+="[";for(let t=0;t<o.length;t+=1)t>0&&(r+=","),r+=o[t];return r+="]",r},e},Qe=function(){let o=0,e=0,r=0,t="",n={},a=function(i){t+=String.fromCharCode(s(i&63))},s=function(i){if(i<0)throw"n:"+i;if(i<26)return 65+i;if(i<52)return 97+(i-26);if(i<62)return 48+(i-52);if(i==62)return 43;if(i==63)return 47;throw"n:"+i};return n.writeByte=function(i){for(o=o<<8|i&255,e+=8,r+=1;e>=6;)a(o>>>e-6),e-=6},n.flush=function(){if(e>0&&(a(o<<6-e),o=0,e=0),r%3!=0){let i=3-r%3;for(let d=0;d<i;d+=1)t+="="}},n.toString=function(){return t},n},Ge=function(o){let e=o,r=0,t=0,n=0,a={};a.read=function(){for(;n<8;){if(r>=e.length){if(n==0)return-1;throw"unexpected end of file./"+n}let d=e.charAt(r);if(r+=1,d=="=")return n=0,-1;if(d.match(/^\s$/))continue;t=t<<6|s(d.charCodeAt(0)),n+=6}let i=t>>>n-8&255;return n-=8,i};let s=function(i){if(65<=i&&i<=90)return i-65;if(97<=i&&i<=122)return i-97+26;if(48<=i&&i<=57)return i-48+52;if(i==43)return 62;if(i==47)return 63;throw"c:"+i};return a},Je=function(o,e){let r=o,t=e,n=new Array(o*e),a={};a.setPixel=function(m,y,f){n[y*r+m]=f},a.write=function(m){m.writeString("GIF87a"),m.writeShort(r),m.writeShort(t),m.writeByte(128),m.writeByte(0),m.writeByte(0),m.writeByte(0),m.writeByte(0),m.writeByte(0),m.writeByte(255),m.writeByte(255),m.writeByte(255),m.writeString(","),m.writeShort(0),m.writeShort(0),m.writeShort(r),m.writeShort(t),m.writeByte(0);let y=2,f=i(y);m.writeByte(y);let l=0;for(;f.length-l>255;)m.writeByte(255),m.writeBytes(f,l,255),l+=255;m.writeByte(f.length-l),m.writeBytes(f,l,f.length-l),m.writeByte(0),m.writeString(";")};let s=function(m){let y=m,f=0,l=0,b={};return b.write=function(B,k){if(B>>>k)throw"length over";for(;f+k>=8;)y.writeByte(255&(B<<f|l)),k-=8-f,B>>>=8-f,l=0,f=0;l=B<<f|l,f=f+k},b.flush=function(){f>0&&y.writeByte(l)},b},i=function(m){let y=1<<m,f=(1<<m)+1,l=m+1,b=d();for(let T=0;T<y;T+=1)b.add(String.fromCharCode(T));b.add(String.fromCharCode(y)),b.add(String.fromCharCode(f));let B=_e(),k=s(B);k.write(y,l);let D=0,x=String.fromCharCode(n[D]);for(D+=1;D<n.length;){let T=String.fromCharCode(n[D]);D+=1,b.contains(x+T)?x=x+T:(k.write(b.indexOf(x),l),b.size()<4095&&(b.size()==1<<l&&(l+=1),b.add(x+T)),x=T)}return k.write(b.indexOf(x),l),k.write(f,l),k.flush(),B.toByteArray()},d=function(){let m={},y=0,f={};return f.add=function(l){if(f.contains(l))throw"dup key:"+l;m[l]=y,y+=1},f.size=function(){return y},f.indexOf=function(l){return m[l]},f.contains=function(l){return typeof m[l]<"u"},f};return a},Xe=function(o,e,r){let t=Je(o,e);for(let i=0;i<e;i+=1)for(let d=0;d<o;d+=1)t.setPixel(d,i,r(d,i));let n=_e();t.write(n);let a=Qe(),s=n.toByteArray();for(let i=0;i<s.length;i+=1)a.writeByte(s[i]);return a.flush(),"data:image/gif;base64,"+a},Ze=J,bn=J.stringToBytes;function et(o,e,r=200){de(o);let t=document.createElement("canvas"),n=t.getContext?.("2d")??null;if(!n){let f=document.createElement("a");f.href=e,f.textContent="Open in DID Wallet",f.target="_blank",f.rel="noopener",o.appendChild(f);return}let a=Ze(0,"M");a.addData(e),a.make();let s=a.getModuleCount(),i=Math.floor(r/s),d=i*s;t.width=d,t.height=d,t.style.display="block",t.style.width=`${r}px`,t.style.height=`${r}px`,t.style.imageRendering="pixelated";let m="#e8e8e8";n.fillStyle=m,n.fillRect(0,0,d,d),n.fillStyle="#000000";for(let f=0;f<s;f++)for(let l=0;l<s;l++)a.isDark(f,l)&&n.fillRect(l*i,f*i,i,i);let y=document.createElement("div");y.style.cssText="display:inline-block;padding:10px;background:#e8e8e8;border-radius:8px;line-height:0",y.appendChild(t),o.appendChild(y)}function de(o){o.innerHTML=""}var tt=`
151
- ${Ne}
145
+ `,Ue=class extends Oe{static observedAttributes=["did","compact","copyable","start-chars","end-chars","show-prefix","no-tooltip","no-copy","block","size"];shadow;copyTimer=null;constructor(){super(),this.shadow=this.attachShadow({mode:"open"})}connectedCallback(){this.render()}attributeChangedCallback(){this.render()}disconnectedCallback(){this.copyTimer&&clearTimeout(this.copyTimer)}get parts(){let o=Number(this.getAttribute("start-chars")),e=Number(this.getAttribute("end-chars"));return ue(this.getAttribute("did")||"",{startChars:o>0?o:void 0,endChars:e>0?e:void 0})}render(){if(!(this.getAttribute("did")||"")){this.shadow.innerHTML="";return}let e=this.parts,r=this.hasAttribute("compact"),t=!this.hasAttribute("no-copy")&&this.getAttribute("copyable")!=="false",n=this.hasAttribute("show-prefix"),a=this.hasAttribute("no-tooltip"),s=Number(this.getAttribute("size"))||0,i=s>=12?`${s}px`:"inherit",d=r?e.compact:e.address,p=!a&&r?` title="${e.address}"`:"",y=n?`<span class="prefix">${e.prefix} </span>`:"",h=r?"address-compact":"address",c=t?" clickable":"",b=t?`<button class="copy-btn" aria-label="Copy DID">${Ee}</button>`:"";if(this.shadow.innerHTML=`
146
+ <style>${Me}:host { font-size: ${i}; }</style>
147
+ ${y}<span class="${h}${c}"${p}>${d}</span>${b}
148
+ `,t){let A=this.shadow.querySelector(`.${h}`);A&&A.addEventListener("click",D=>{D.stopPropagation(),this.copyToClipboard(e.copyText)});let k=this.shadow.querySelector(".copy-btn");k&&k.addEventListener("click",D=>{D.stopPropagation(),this.copyToClipboard(e.copyText)})}}copyToClipboard(o){navigator.clipboard?.writeText?navigator.clipboard.writeText(o).catch(()=>this.fallbackCopy(o)):this.fallbackCopy(o),this.showCopied()}fallbackCopy(o){try{let e=document.createElement("input");e.value=o,document.body.appendChild(e),e.select(),document.execCommand?.("copy"),e.remove()}catch{}}showCopied(){let o=this.shadow.querySelector(".copy-btn");o&&(o.classList.add("copied"),o.innerHTML=$e,this.copyTimer&&clearTimeout(this.copyTimer),this.copyTimer=setTimeout(()=>{o.classList.remove("copied"),o.innerHTML=Ee},1500))}};typeof customElements<"u"&&!customElements.get("did-address")&&customElements.define("did-address",Ue);var we={en:{signIn:"Sign in",signInTo:"Sign in to {appName}",passkeyButton:"Continue with Passkey",passkeySignIn:"Sign in with Passkey",passkeyCreate:"Create Passkey",passkeyFirstTime:"First time? Create a passkey",passkeyBackToSignIn:"Back to sign in",passkeyWaiting:"Waiting for passkey\u2026",passkeyCreating:"Creating your passkey\u2026",passkeyNoLocal:"No passkey found on this device.",passkeyUseAnotherDevice:"Use another device",passkeyCreateInstead:"Create a new passkey instead",didWalletButton:"Continue with DID Wallet",didWalletButtonShort:"DID Wallet",scanWithWallet:"Scan with your DID Wallet",waitingWallet:"Requesting connection",walletContinue:"Please continue in DID Wallet",noPasskey:"No existing passkey found. Enter a name and create one.",success:"Success!",timeout:"Session timed out. Try again.",refreshQR:"Refresh",namePlaceholder:"Your name (optional)",or:"or",emailPlaceholder:"Email address",emailButton:"Email",passkeyUnsupported:"Your browser does not support Passkey authentication.",connecting:"Connecting...",verifying:"Verifying...",openInWallet:"Open in DID Wallet",authFailed:"Authentication failed",registrationFailed:"Registration failed",passkeySetupFailed:"Passkey setup failed",accessDenied:"Access denied: your account is not permitted to log in to this site.",regClosed:"Registration requires an invitation.",federatedBy:"Authentication provided by {masterName}",securedBy:"Secured by DID Connect",privacy:"Privacy",terms:"Terms",back:"Back",cancel:"Cancel",scanTitle:"Scan with DID Wallet",emailTitle:"Continue with Email",emailSubmit:"Send Code",emailSending:"Sending code...",emailSent:"We sent a 6-digit code to {email}",emailCodePlaceholder:"6-digit code",emailVerify:"Verify",emailResend:"Resend code",emailInvalid:"Please enter a valid email address.",emailCodeInvalid:"Please enter the 6-digit code."},zh:{signIn:"\u767B\u5F55",signInTo:"\u767B\u5F55\u5230 {appName}",passkeyButton:"\u4F7F\u7528 Passkey \u7EE7\u7EED",passkeySignIn:"\u4F7F\u7528 Passkey \u767B\u5F55",passkeyCreate:"\u521B\u5EFA Passkey",passkeyFirstTime:"\u7B2C\u4E00\u6B21\u4F7F\u7528\uFF1F\u521B\u5EFA Passkey",passkeyBackToSignIn:"\u8FD4\u56DE\u767B\u5F55",passkeyWaiting:"\u6B63\u5728\u7B49\u5F85 Passkey\u2026",passkeyCreating:"\u6B63\u5728\u521B\u5EFA Passkey\u2026",passkeyNoLocal:"\u6B64\u8BBE\u5907\u4E0A\u6CA1\u6709\u627E\u5230 Passkey\u3002",passkeyUseAnotherDevice:"\u7528\u5176\u4ED6\u8BBE\u5907\u767B\u5F55",passkeyCreateInstead:"\u6539\u4E3A\u521B\u5EFA\u65B0\u7684 Passkey",didWalletButton:"\u4F7F\u7528 DID Wallet \u7EE7\u7EED",didWalletButtonShort:"DID Wallet",scanWithWallet:"\u8BF7\u4F7F\u7528 DID Wallet \u626B\u7801",waitingWallet:"\u6B63\u5728\u8BF7\u6C42\u8FDE\u63A5",walletContinue:"\u8BF7\u5728 DID Wallet \u4E2D\u7EE7\u7EED\u5B8C\u6210\u60A8\u7684\u64CD\u4F5C",noPasskey:"\u672A\u627E\u5230\u5DF2\u6709 Passkey\u3002\u8F93\u5165\u540D\u79F0\u5E76\u521B\u5EFA\u4E00\u4E2A\u3002",success:"\u6210\u529F",timeout:"\u4F1A\u8BDD\u8D85\u65F6\uFF0C\u8BF7\u91CD\u8BD5\u3002",refreshQR:"\u5237\u65B0",namePlaceholder:"\u60A8\u7684\u540D\u5B57\uFF08\u53EF\u9009\uFF09",or:"\u6216",emailPlaceholder:"\u90AE\u7BB1\u5730\u5740",emailButton:"\u90AE\u7BB1",passkeyUnsupported:"\u60A8\u7684\u6D4F\u89C8\u5668\u4E0D\u652F\u6301 Passkey \u8BA4\u8BC1\u3002",connecting:"\u8FDE\u63A5\u4E2D...",verifying:"\u9A8C\u8BC1\u4E2D...",openInWallet:"\u5728 DID Wallet \u4E2D\u6253\u5F00",authFailed:"\u8BA4\u8BC1\u5931\u8D25",registrationFailed:"\u6CE8\u518C\u5931\u8D25",passkeySetupFailed:"Passkey \u8BBE\u7F6E\u5931\u8D25",accessDenied:"\u8BBF\u95EE\u88AB\u62D2\u7EDD\uFF1A\u60A8\u7684\u8D26\u6237\u65E0\u6743\u767B\u5F55\u6B64\u7AD9\u70B9\u3002",regClosed:"\u6CE8\u518C\u9700\u8981\u9080\u8BF7\u3002",federatedBy:"\u8BA4\u8BC1\u670D\u52A1\u7531 {masterName} \u63D0\u4F9B",securedBy:"\u7531 DID Connect \u63D0\u4F9B\u5B89\u5168\u4FDD\u969C",privacy:"\u9690\u79C1",terms:"\u6761\u6B3E",back:"\u8FD4\u56DE",cancel:"\u53D6\u6D88",scanTitle:"\u4F7F\u7528 DID Wallet \u626B\u7801",emailTitle:"\u4F7F\u7528\u90AE\u7BB1\u7EE7\u7EED",emailSubmit:"\u53D1\u9001\u9A8C\u8BC1\u7801",emailSending:"\u6B63\u5728\u53D1\u9001\u9A8C\u8BC1\u7801...",emailSent:"\u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001\u81F3 {email}",emailCodePlaceholder:"6 \u4F4D\u9A8C\u8BC1\u7801",emailVerify:"\u9A8C\u8BC1",emailResend:"\u91CD\u65B0\u53D1\u9001",emailInvalid:"\u8BF7\u8F93\u5165\u6709\u6548\u7684\u90AE\u7BB1\u5730\u5740\u3002",emailCodeInvalid:"\u8BF7\u8F93\u5165 6 \u4F4D\u9A8C\u8BC1\u7801\u3002"},"zh-TW":{signIn:"\u767B\u5165",signInTo:"\u767B\u5165\u81F3 {appName}",passkeyButton:"\u4F7F\u7528 Passkey \u7E7C\u7E8C",passkeySignIn:"\u4F7F\u7528 Passkey \u767B\u5165",passkeyCreate:"\u5EFA\u7ACB Passkey",passkeyFirstTime:"\u7B2C\u4E00\u6B21\u4F7F\u7528\uFF1F\u5EFA\u7ACB Passkey",passkeyBackToSignIn:"\u8FD4\u56DE\u767B\u5165",passkeyWaiting:"\u6B63\u5728\u7B49\u5F85 Passkey\u2026",passkeyCreating:"\u6B63\u5728\u5EFA\u7ACB Passkey\u2026",passkeyNoLocal:"\u6B64\u88DD\u7F6E\u4E0A\u6C92\u6709\u627E\u5230 Passkey\u3002",passkeyUseAnotherDevice:"\u7528\u5176\u4ED6\u88DD\u7F6E\u767B\u5165",passkeyCreateInstead:"\u6539\u70BA\u5EFA\u7ACB\u65B0\u7684 Passkey",didWalletButton:"\u4F7F\u7528 DID Wallet \u7E7C\u7E8C",didWalletButtonShort:"DID Wallet",scanWithWallet:"\u8ACB\u4F7F\u7528 DID Wallet \u6383\u78BC",waitingWallet:"\u6B63\u5728\u8981\u6C42\u9023\u7DDA",walletContinue:"\u8ACB\u5728 DID Wallet \u4E2D\u7E7C\u7E8C\u5B8C\u6210\u60A8\u7684\u64CD\u4F5C",noPasskey:"\u672A\u627E\u5230\u5DF2\u6709 Passkey\u3002\u8F38\u5165\u540D\u7A31\u4E26\u5EFA\u7ACB\u4E00\u500B\u3002",success:"\u6210\u529F",timeout:"\u5DE5\u4F5C\u968E\u6BB5\u903E\u6642\uFF0C\u8ACB\u91CD\u8A66\u3002",refreshQR:"\u91CD\u65B0\u6574\u7406",namePlaceholder:"\u60A8\u7684\u540D\u5B57\uFF08\u9078\u586B\uFF09",or:"\u6216",emailPlaceholder:"\u96FB\u5B50\u90F5\u4EF6\u5730\u5740",emailButton:"\u96FB\u5B50\u90F5\u4EF6",passkeyUnsupported:"\u60A8\u7684\u700F\u89BD\u5668\u4E0D\u652F\u63F4 Passkey \u8A8D\u8B49\u3002",connecting:"\u9023\u7DDA\u4E2D...",verifying:"\u9A57\u8B49\u4E2D...",openInWallet:"\u5728 DID Wallet \u4E2D\u958B\u555F",authFailed:"\u8A8D\u8B49\u5931\u6557",registrationFailed:"\u8A3B\u518A\u5931\u6557",passkeySetupFailed:"Passkey \u8A2D\u5B9A\u5931\u6557",accessDenied:"\u5B58\u53D6\u88AB\u62D2\u7D55\uFF1A\u60A8\u7684\u5E33\u865F\u7121\u6B0A\u767B\u5165\u6B64\u7DB2\u7AD9\u3002",regClosed:"\u8A3B\u518A\u9700\u8981\u9080\u8ACB\u3002",federatedBy:"\u8A8D\u8B49\u670D\u52D9\u7531 {masterName} \u63D0\u4F9B",securedBy:"\u7531 DID Connect \u63D0\u4F9B\u5B89\u5168\u4FDD\u969C",privacy:"\u96B1\u79C1",terms:"\u689D\u6B3E",back:"\u8FD4\u56DE",cancel:"\u53D6\u6D88",scanTitle:"\u4F7F\u7528 DID Wallet \u6383\u78BC",emailTitle:"\u4F7F\u7528\u96FB\u5B50\u90F5\u4EF6\u7E7C\u7E8C",emailSubmit:"\u50B3\u9001\u9A57\u8B49\u78BC",emailSending:"\u6B63\u5728\u50B3\u9001\u9A57\u8B49\u78BC...",emailSent:"\u9A57\u8B49\u78BC\u5DF2\u50B3\u9001\u81F3 {email}",emailCodePlaceholder:"6 \u4F4D\u6578\u9A57\u8B49\u78BC",emailVerify:"\u9A57\u8B49",emailResend:"\u91CD\u65B0\u50B3\u9001",emailInvalid:"\u8ACB\u8F38\u5165\u6709\u6548\u7684\u96FB\u5B50\u90F5\u4EF6\u5730\u5740\u3002",emailCodeInvalid:"\u8ACB\u8F38\u5165 6 \u4F4D\u6578\u9A57\u8B49\u78BC\u3002"},ja:{signIn:"\u30ED\u30B0\u30A4\u30F3",signInTo:"{appName} \u306B\u30ED\u30B0\u30A4\u30F3",passkeyButton:"Passkey \u3067\u7D9A\u3051\u308B",passkeySignIn:"Passkey \u3067\u30ED\u30B0\u30A4\u30F3",passkeyCreate:"Passkey \u3092\u4F5C\u6210",passkeyFirstTime:"\u521D\u3081\u3066\u3067\u3059\u304B\uFF1FPasskey \u3092\u4F5C\u6210",passkeyBackToSignIn:"\u30ED\u30B0\u30A4\u30F3\u306B\u623B\u308B",passkeyWaiting:"Passkey \u3092\u5F85\u3063\u3066\u3044\u307E\u3059\u2026",passkeyCreating:"Passkey \u3092\u4F5C\u6210\u3057\u3066\u3044\u307E\u3059\u2026",passkeyNoLocal:"\u3053\u306E\u30C7\u30D0\u30A4\u30B9\u306B Passkey \u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002",passkeyUseAnotherDevice:"\u5225\u306E\u30C7\u30D0\u30A4\u30B9\u3092\u4F7F\u7528",passkeyCreateInstead:"\u4EE3\u308F\u308A\u306B\u65B0\u3057\u3044 Passkey \u3092\u4F5C\u6210",didWalletButton:"DID Wallet \u3067\u7D9A\u3051\u308B",didWalletButtonShort:"DID Wallet",scanWithWallet:"DID Wallet \u3067\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u304F\u3060\u3055\u3044",waitingWallet:"\u63A5\u7D9A\u3092\u8981\u6C42\u3057\u3066\u3044\u307E\u3059",walletContinue:"DID Wallet \u3067\u64CD\u4F5C\u3092\u7D9A\u3051\u3066\u304F\u3060\u3055\u3044",noPasskey:"\u65E2\u5B58\u306E Passkey \u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\u540D\u524D\u3092\u5165\u529B\u3057\u3066\u4F5C\u6210\u3057\u3066\u304F\u3060\u3055\u3044\u3002",success:"\u6210\u529F\u3057\u307E\u3057\u305F",timeout:"\u30BB\u30C3\u30B7\u30E7\u30F3\u304C\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u3057\u307E\u3057\u305F\u3002\u3082\u3046\u4E00\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002",refreshQR:"\u66F4\u65B0",namePlaceholder:"\u304A\u540D\u524D\uFF08\u4EFB\u610F\uFF09",or:"\u307E\u305F\u306F",emailPlaceholder:"\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9",emailButton:"\u30E1\u30FC\u30EB",passkeyUnsupported:"\u304A\u4F7F\u3044\u306E\u30D6\u30E9\u30A6\u30B6\u30FC\u306F Passkey \u8A8D\u8A3C\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093\u3002",connecting:"\u63A5\u7D9A\u3057\u3066\u3044\u307E\u3059...",verifying:"\u78BA\u8A8D\u3057\u3066\u3044\u307E\u3059...",openInWallet:"DID Wallet \u3067\u958B\u304F",authFailed:"\u8A8D\u8A3C\u306B\u5931\u6557\u3057\u307E\u3057\u305F",registrationFailed:"\u767B\u9332\u306B\u5931\u6557\u3057\u307E\u3057\u305F",passkeySetupFailed:"Passkey \u306E\u8A2D\u5B9A\u306B\u5931\u6557\u3057\u307E\u3057\u305F",accessDenied:"\u30A2\u30AF\u30BB\u30B9\u304C\u62D2\u5426\u3055\u308C\u307E\u3057\u305F\uFF1A\u3053\u306E\u30B5\u30A4\u30C8\u306B\u30ED\u30B0\u30A4\u30F3\u3059\u308B\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\u3002",regClosed:"\u767B\u9332\u306B\u306F\u62DB\u5F85\u304C\u5FC5\u8981\u3067\u3059\u3002",federatedBy:"\u8A8D\u8A3C\u30B5\u30FC\u30D3\u30B9\u306F {masterName} \u304C\u63D0\u4F9B\u3057\u3066\u3044\u307E\u3059",securedBy:"DID Connect \u306B\u3088\u308A\u4FDD\u8B77\u3055\u308C\u3066\u3044\u307E\u3059",privacy:"\u30D7\u30E9\u30A4\u30D0\u30B7\u30FC",terms:"\u5229\u7528\u898F\u7D04",back:"\u623B\u308B",cancel:"\u30AD\u30E3\u30F3\u30BB\u30EB",scanTitle:"DID Wallet \u3067\u30B9\u30AD\u30E3\u30F3",emailTitle:"\u30E1\u30FC\u30EB\u3067\u7D9A\u3051\u308B",emailSubmit:"\u30B3\u30FC\u30C9\u3092\u9001\u4FE1",emailSending:"\u30B3\u30FC\u30C9\u3092\u9001\u4FE1\u3057\u3066\u3044\u307E\u3059...",emailSent:"{email} \u306B 6 \u6841\u306E\u30B3\u30FC\u30C9\u3092\u9001\u4FE1\u3057\u307E\u3057\u305F",emailCodePlaceholder:"6 \u6841\u306E\u30B3\u30FC\u30C9",emailVerify:"\u78BA\u8A8D",emailResend:"\u30B3\u30FC\u30C9\u3092\u518D\u9001\u4FE1",emailInvalid:"\u6709\u52B9\u306A\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",emailCodeInvalid:"6 \u6841\u306E\u30B3\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}},ce=[{code:"en",label:"English"},{code:"zh",label:"\u4E2D\u6587"}];function w(o,e,r){let t=e&&we[e]?e:"en",n=we[t][o]??o;if(r)for(let[a,s]of Object.entries(r))n=n.replace(new RegExp(`\\{${a}\\}`,"g"),s);return n}var le='<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none"><path fill="currentColor" d="M3 20v-2.8q0-.85.438-1.562T4.6 14.55q1.55-.775 3.15-1.162T11 13q.5 0 1 .038t1 .112q-.1 1.45.525 2.738T15.35 18v2zm16 3l-1.5-1.5v-4.65q-1.1-.325-1.8-1.237T15 13.5q0-1.45 1.025-2.475T18.5 10t2.475 1.025T22 13.5q0 1.125-.638 2t-1.612 1.25L21 18l-1.5 1.5L21 21zm-8-11q-1.65 0-2.825-1.175T7 8t1.175-2.825T11 4t2.825 1.175T15 8t-1.175 2.825T11 12m7.5 2q.425 0 .713-.288T19.5 13t-.288-.712T18.5 12t-.712.288T17.5 13t.288.713t.712.287"/></svg>',xe='<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none"><rect x="2" y="4" width="20" height="16" rx="3" fill="#4598FA"/><rect x="3" y="6" width="18" height="12" rx="2" fill="white" opacity="0.9"/><rect x="0" y="14" width="24" height="10" rx="0" fill="url(#dw_g)"/><path d="M5.5 9.5h4.5c.3 0 .5.2.5.5v2.5c0 .3-.2.5-.5.5H5.5c-.3 0-.5-.2-.5-.5V10c0-.3.2-.5.5-.5z" fill="#4598FA"/><defs><linearGradient id="dw_g" x1="12" y1="14" x2="12" y2="24" gradientUnits="userSpaceOnUse"><stop stop-color="#77B2F6"/><stop offset="1" stop-color="#4598FA"/></linearGradient></defs></svg>',He='<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none"><path fill="currentColor" d="M22 7.535V17a3 3 0 0 1-2.824 2.995L19 20H5a3 3 0 0 1-2.995-2.824L2 17V7.535l9.445 6.297l.116.066a1 1 0 0 0 .878 0l.116-.066z"/><path fill="currentColor" d="M19 4c1.08 0 2.027.57 2.555 1.427L12 11.797l-9.555-6.37a2.999 2.999 0 0 1 2.354-1.42L5 4z"/></svg>',We='<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none"><path fill="currentColor" d="M12 1L3 5v6c0 5.55 3.84 10.74 9 12c5.16-1.26 9-6.45 9-12V5zm0 10.99h7c-.53 4.12-3.28 7.79-7 8.94V12H5V6.3l7-3.11z"/></svg>',Ce='<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none"><path fill="currentColor" d="M20 11H7.83l5.59-5.59L12 4l-8 8l8 8l1.41-1.41L7.83 13H20z"/></svg>',Ke={google:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 256 262"><path fill="#4285F4" d="M255.878 133.451c0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356l-.244 1.622l38.755 30.023l2.685.268c24.659-22.774 38.875-56.282 38.875-96.027"/><path fill="#34A853" d="M130.55 261.1c35.248 0 64.839-11.605 86.453-31.622l-41.196-31.913c-11.024 7.688-25.82 13.055-45.257 13.055c-34.523 0-63.824-22.773-74.269-54.25l-1.531.13l-40.298 31.187l-.527 1.465C35.393 231.798 79.49 261.1 130.55 261.1"/><path fill="#FBBC05" d="M56.281 156.37c-2.756-8.123-4.351-16.827-4.351-25.82c0-8.994 1.595-17.697 4.206-25.82l-.073-1.73L15.26 71.312l-1.335.635C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602z"/><path fill="#EB4335" d="M130.55 50.479c24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0C79.49 0 35.393 29.301 13.925 71.947l42.211 32.783c10.59-31.477 39.891-54.251 74.414-54.251"/></svg>',github:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 256 250" fill="currentColor"><path d="M128.001 0C57.317 0 0 57.307 0 128.001c0 56.554 36.676 104.535 87.535 121.46c6.397 1.185 8.746-2.777 8.746-6.158c0-3.052-.12-13.135-.174-23.83c-35.61 7.742-43.124-15.103-43.124-15.103c-5.823-14.795-14.213-18.73-14.213-18.73c-11.613-7.944.876-7.78.876-7.78c12.853.902 19.621 13.19 19.621 13.19c11.417 19.568 29.945 13.911 37.249 10.64c1.149-8.272 4.466-13.92 8.127-17.116c-28.431-3.236-58.318-14.212-58.318-63.258c0-13.975 5-25.394 13.188-34.358c-1.329-3.224-5.71-16.242 1.24-33.874c0 0 10.749-3.44 35.21 13.121c10.21-2.836 21.16-4.258 32.038-4.307c10.878.049 21.837 1.47 32.066 4.307c24.431-16.56 35.165-13.12 35.165-13.12c6.967 17.63 2.584 30.65 1.255 33.873c8.207 8.964 13.173 20.383 13.173 34.358c0 49.163-29.944 59.988-58.447 63.157c4.591 3.972 8.682 11.762 8.682 23.704c0 17.126-.148 30.91-.148 35.126c0 3.407 2.304 7.398 8.792 6.14C219.37 232.5 256 184.537 256 128.002C256 57.307 198.691 0 128.001 0"/></svg>',apple:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 256 315" fill="currentColor"><path d="M213.803 167.03c.442 47.58 41.74 63.413 42.197 63.615c-.35 1.116-6.599 22.563-21.757 44.716c-13.104 19.153-26.705 38.235-48.13 38.63c-21.05.388-27.82-12.483-51.888-12.483c-24.061 0-31.582 12.088-51.51 12.871c-20.68.783-36.428-20.71-49.64-39.793c-27-39.033-47.633-110.3-19.928-158.406c13.763-23.89 38.36-39.017 65.056-39.405c20.307-.388 39.475 13.675 51.889 13.675c12.406 0 35.699-16.895 60.186-14.414c10.25.427 39.026 4.14 57.503 31.186c-1.49.923-34.335 20.044-33.978 59.808M174.24 50.199c10.98-13.29 18.369-31.79 16.353-50.199c-15.826.636-34.962 10.546-46.314 23.828c-10.173 11.763-19.082 30.589-16.678 48.633c17.64 1.365 35.66-8.964 46.639-22.262"/></svg>',twitter:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 256 256" fill="currentColor"><path d="M149.079 108.399L242.33 0h-22.098l-80.97 94.12L74.59 0H0l97.796 142.328L0 256h22.1l85.507-99.395L175.905 256h74.59L149.073 108.399zM118.81 143.58l-9.909-14.172l-78.84-112.773h33.943l63.625 91.011l9.909 14.173l82.705 118.3H186.3l-67.49-96.533z"/></svg>',auth0:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 256 256"><path fill="#EB5424" d="M203.97 200.38L167.47 88l-39.5 112.38h75.98zm0-144.76L167.47 168l75.97-26.16l19.76-60.82c6.64-20.4-1.94-42.72-21.18-52.76l-38.06 27.36zM52.03 55.62L88.54 168l39.5-112.38H52.02zM52.03 200.38L88.54 88L12.56 114.16l-5.92 18.2c-6.64 20.4 1.94 42.72 21.18 52.76l24.2-17.38l.01.01v-.01l-.01.01.01-.37z"/></svg>',facebook:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 256 256"><path fill="#1877F2" d="M256 128C256 57.308 198.692 0 128 0S0 57.308 0 128c0 63.888 46.808 116.843 108 126.445V165H75.5v-37H108V99.8c0-32.08 19.11-49.8 48.348-49.8C170.352 50 185 52.5 185 52.5V84h-16.14C152.959 84 148 93.867 148 103.99V128h35.5l-5.675 37H148v89.445c61.192-9.602 108-62.556 108-126.445"/></svg>'},ke='<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none"><path fill="currentColor" d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10s10-4.48 10-10S17.52 2 12 2m-1 17.93c-3.95-.49-7-3.85-7-7.93c0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41c0 2.08-.8 3.97-2.1 5.39"/></svg>';function ze(o){return Ke[o.toLowerCase()]??""}var J=function(o,e){let n=o,a=ne[e],s=null,i=0,d=null,p=[],y={},h=function(l,m){i=n*4+17,s=(function(u){let g=new Array(u);for(let f=0;f<u;f+=1){g[f]=new Array(u);for(let E=0;E<u;E+=1)g[f][E]=null}return g})(i),c(0,0),c(i-7,0),c(0,i-7),k(),A(),x(l,m),n>=7&&D(l),d==null&&(d=S(n,a,p)),T(d,m)},c=function(l,m){for(let u=-1;u<=7;u+=1)if(!(l+u<=-1||i<=l+u))for(let g=-1;g<=7;g+=1)m+g<=-1||i<=m+g||(0<=u&&u<=6&&(g==0||g==6)||0<=g&&g<=6&&(u==0||u==6)||2<=u&&u<=4&&2<=g&&g<=4?s[l+u][m+g]=!0:s[l+u][m+g]=!1)},b=function(){let l=0,m=0;for(let u=0;u<8;u+=1){h(!0,u);let g=q.getLostPoint(y);(u==0||l>g)&&(l=g,m=u)}return m},A=function(){for(let l=8;l<i-8;l+=1)s[l][6]==null&&(s[l][6]=l%2==0);for(let l=8;l<i-8;l+=1)s[6][l]==null&&(s[6][l]=l%2==0)},k=function(){let l=q.getPatternPosition(n);for(let m=0;m<l.length;m+=1)for(let u=0;u<l.length;u+=1){let g=l[m],f=l[u];if(s[g][f]==null)for(let E=-2;E<=2;E+=1)for(let C=-2;C<=2;C+=1)E==-2||E==2||C==-2||C==2||E==0&&C==0?s[g+E][f+C]=!0:s[g+E][f+C]=!1}},D=function(l){let m=q.getBCHTypeNumber(n);for(let u=0;u<18;u+=1){let g=!l&&(m>>u&1)==1;s[Math.floor(u/3)][u%3+i-8-3]=g}for(let u=0;u<18;u+=1){let g=!l&&(m>>u&1)==1;s[u%3+i-8-3][Math.floor(u/3)]=g}},x=function(l,m){let u=a<<3|m,g=q.getBCHTypeInfo(u);for(let f=0;f<15;f+=1){let E=!l&&(g>>f&1)==1;f<6?s[f][8]=E:f<8?s[f+1][8]=E:s[i-15+f][8]=E}for(let f=0;f<15;f+=1){let E=!l&&(g>>f&1)==1;f<8?s[8][i-f-1]=E:f<9?s[8][15-f-1+1]=E:s[8][15-f-1]=E}s[i-8][8]=!l},T=function(l,m){let u=-1,g=i-1,f=7,E=0,C=q.getMaskFunction(m);for(let B=i-1;B>0;B-=2)for(B==6&&(B-=1);;){for(let F=0;F<2;F+=1)if(s[g][B-F]==null){let R=!1;E<l.length&&(R=(l[E]>>>f&1)==1),C(g,B-F)&&(R=!R),s[g][B-F]=R,f-=1,f==-1&&(E+=1,f=7)}if(g+=u,g<0||i<=g){g-=u,u=-u;break}}},I=function(l,m){let u=0,g=0,f=0,E=new Array(m.length),C=new Array(m.length);for(let v=0;v<m.length;v+=1){let N=m[v].dataCount,K=m[v].totalCount-N;g=Math.max(g,N),f=Math.max(f,K),E[v]=new Array(N);for(let V=0;V<E[v].length;V+=1)E[v][V]=255&l.getBuffer()[V+u];u+=N;let ie=q.getErrorCorrectPolynomial(K),he=re(E[v],ie.getLength()-1).mod(ie);C[v]=new Array(ie.getLength()-1);for(let V=0;V<C[v].length;V+=1){let pe=V+he.getLength()-C[v].length;C[v][V]=pe>=0?he.getAt(pe):0}}let B=0;for(let v=0;v<m.length;v+=1)B+=m[v].totalCount;let F=new Array(B),R=0;for(let v=0;v<g;v+=1)for(let N=0;N<m.length;N+=1)v<E[N].length&&(F[R]=E[N][v],R+=1);for(let v=0;v<f;v+=1)for(let N=0;N<m.length;N+=1)v<C[N].length&&(F[R]=C[N][v],R+=1);return F},S=function(l,m,u){let g=ve.getRSBlocks(l,m),f=_e();for(let C=0;C<u.length;C+=1){let B=u[C];f.put(B.getMode(),4),f.put(B.getLength(),q.getLengthInBits(B.getMode(),l)),B.write(f)}let E=0;for(let C=0;C<g.length;C+=1)E+=g[C].dataCount;if(f.getLengthInBits()>E*8)throw"code length overflow. ("+f.getLengthInBits()+">"+E*8+")";for(f.getLengthInBits()+4<=E*8&&f.put(0,4);f.getLengthInBits()%8!=0;)f.putBit(!1);for(;!(f.getLengthInBits()>=E*8||(f.put(236,8),f.getLengthInBits()>=E*8));)f.put(17,8);return I(f,g)};y.addData=function(l,m){m=m||"Byte";let u=null;switch(m){case"Numeric":u=Ve(l);break;case"Alphanumeric":u=je(l);break;case"Byte":u=qe(l);break;case"Kanji":u=Ye(l);break;default:throw"mode:"+m}p.push(u),d=null},y.isDark=function(l,m){if(l<0||i<=l||m<0||i<=m)throw l+","+m;return s[l][m]},y.getModuleCount=function(){return i},y.make=function(){if(n<1){let l=1;for(;l<40;l++){let m=ve.getRSBlocks(l,a),u=_e();for(let f=0;f<p.length;f++){let E=p[f];u.put(E.getMode(),4),u.put(E.getLength(),q.getLengthInBits(E.getMode(),l)),E.write(u)}let g=0;for(let f=0;f<m.length;f++)g+=m[f].dataCount;if(u.getLengthInBits()<=g*8)break}n=l}h(!1,b())},y.createTableTag=function(l,m){l=l||2,m=typeof m>"u"?l*4:m;let u="";u+='<table style="',u+=" border-width: 0px; border-style: none;",u+=" border-collapse: collapse;",u+=" padding: 0px; margin: "+m+"px;",u+='">',u+="<tbody>";for(let g=0;g<y.getModuleCount();g+=1){u+="<tr>";for(let f=0;f<y.getModuleCount();f+=1)u+='<td style="',u+=" border-width: 0px; border-style: none;",u+=" border-collapse: collapse;",u+=" padding: 0px; margin: 0px;",u+=" width: "+l+"px;",u+=" height: "+l+"px;",u+=" background-color: ",u+=y.isDark(g,f)?"#000000":"#ffffff",u+=";",u+='"/>';u+="</tr>"}return u+="</tbody>",u+="</table>",u},y.createSvgTag=function(l,m,u,g){let f={};typeof arguments[0]=="object"&&(f=arguments[0],l=f.cellSize,m=f.margin,u=f.alt,g=f.title),l=l||2,m=typeof m>"u"?l*4:m,u=typeof u=="string"?{text:u}:u||{},u.text=u.text||null,u.id=u.text?u.id||"qrcode-description":null,g=typeof g=="string"?{text:g}:g||{},g.text=g.text||null,g.id=g.text?g.id||"qrcode-title":null;let E=y.getModuleCount()*l+m*2,C,B,F,R,v="",N;for(N="l"+l+",0 0,"+l+" -"+l+",0 0,-"+l+"z ",v+='<svg version="1.1" xmlns="http://www.w3.org/2000/svg"',v+=f.scalable?"":' width="'+E+'px" height="'+E+'px"',v+=' viewBox="0 0 '+E+" "+E+'" ',v+=' preserveAspectRatio="xMinYMin meet"',v+=g.text||u.text?' role="img" aria-labelledby="'+L([g.id,u.id].join(" ").trim())+'"':"",v+=">",v+=g.text?'<title id="'+L(g.id)+'">'+L(g.text)+"</title>":"",v+=u.text?'<description id="'+L(u.id)+'">'+L(u.text)+"</description>":"",v+='<rect width="100%" height="100%" fill="white" cx="0" cy="0"/>',v+='<path d="',F=0;F<y.getModuleCount();F+=1)for(R=F*l+m,C=0;C<y.getModuleCount();C+=1)y.isDark(F,C)&&(B=C*l+m,v+="M"+B+","+R+N);return v+='" stroke="transparent" fill="black"/>',v+="</svg>",v},y.createDataURL=function(l,m){l=l||2,m=typeof m>"u"?l*4:m;let u=y.getModuleCount()*l+m*2,g=m,f=u-m;return Xe(u,u,function(E,C){if(g<=E&&E<f&&g<=C&&C<f){let B=Math.floor((E-g)/l),F=Math.floor((C-g)/l);return y.isDark(F,B)?0:1}else return 1})},y.createImgTag=function(l,m,u){l=l||2,m=typeof m>"u"?l*4:m;let g=y.getModuleCount()*l+m*2,f="";return f+="<img",f+=' src="',f+=y.createDataURL(l,m),f+='"',f+=' width="',f+=g,f+='"',f+=' height="',f+=g,f+='"',u&&(f+=' alt="',f+=L(u),f+='"'),f+="/>",f};let L=function(l){let m="";for(let u=0;u<l.length;u+=1){let g=l.charAt(u);switch(g){case"<":m+="&lt;";break;case">":m+="&gt;";break;case"&":m+="&amp;";break;case'"':m+="&quot;";break;default:m+=g;break}}return m},z=function(l){l=typeof l>"u"?2:l;let u=y.getModuleCount()*1+l*2,g=l,f=u-l,E,C,B,F,R,v={"\u2588\u2588":"\u2588","\u2588 ":"\u2580"," \u2588":"\u2584"," ":" "},N={"\u2588\u2588":"\u2580","\u2588 ":"\u2580"," \u2588":" "," ":" "},K="";for(E=0;E<u;E+=2){for(B=Math.floor((E-g)/1),F=Math.floor((E+1-g)/1),C=0;C<u;C+=1)R="\u2588",g<=C&&C<f&&g<=E&&E<f&&y.isDark(B,Math.floor((C-g)/1))&&(R=" "),g<=C&&C<f&&g<=E+1&&E+1<f&&y.isDark(F,Math.floor((C-g)/1))?R+=" ":R+="\u2588",K+=l<1&&E+1>=f?N[R]:v[R];K+=`
149
+ `}return u%2&&l>0?K.substring(0,K.length-u-1)+Array(u+1).join("\u2580"):K.substring(0,K.length-1)};return y.createASCII=function(l,m){if(l=l||1,l<2)return z(m);l-=1,m=typeof m>"u"?l*2:m;let u=y.getModuleCount()*l+m*2,g=m,f=u-m,E,C,B,F,R=Array(l+1).join("\u2588\u2588"),v=Array(l+1).join(" "),N="",K="";for(E=0;E<u;E+=1){for(B=Math.floor((E-g)/l),K="",C=0;C<u;C+=1)F=1,g<=C&&C<f&&g<=E&&E<f&&y.isDark(B,Math.floor((C-g)/l))&&(F=0),K+=F?R:v;for(B=0;B<l;B+=1)N+=K+`
150
+ `}return N.substring(0,N.length-1)},y.renderTo2dContext=function(l,m){m=m||2;let u=y.getModuleCount();for(let g=0;g<u;g++)for(let f=0;f<u;f++)l.fillStyle=y.isDark(g,f)?"black":"white",l.fillRect(f*m,g*m,m,m)},y};J.stringToBytes=function(o){let e=[];for(let r=0;r<o.length;r+=1){let t=o.charCodeAt(r);e.push(t&255)}return e};J.createStringToBytes=function(o,e){let r=(function(){let n=Ge(o),a=function(){let d=n.read();if(d==-1)throw"eof";return d},s=0,i={};for(;;){let d=n.read();if(d==-1)break;let p=a(),y=a(),h=a(),c=String.fromCharCode(d<<8|p),b=y<<8|h;i[c]=b,s+=1}if(s!=e)throw s+" != "+e;return i})(),t=63;return function(n){let a=[];for(let s=0;s<n.length;s+=1){let i=n.charCodeAt(s);if(i<128)a.push(i);else{let d=r[n.charAt(s)];typeof d=="number"?(d&255)==d?a.push(d):(a.push(d>>>8),a.push(d&255)):a.push(t)}}return a}};var U={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},ne={L:1,M:0,Q:3,H:2},j={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},q=(function(){let o=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],e=1335,r=7973,t=21522,n={},a=function(s){let i=0;for(;s!=0;)i+=1,s>>>=1;return i};return n.getBCHTypeInfo=function(s){let i=s<<10;for(;a(i)-a(e)>=0;)i^=e<<a(i)-a(e);return(s<<10|i)^t},n.getBCHTypeNumber=function(s){let i=s<<12;for(;a(i)-a(r)>=0;)i^=r<<a(i)-a(r);return s<<12|i},n.getPatternPosition=function(s){return o[s-1]},n.getMaskFunction=function(s){switch(s){case j.PATTERN000:return function(i,d){return(i+d)%2==0};case j.PATTERN001:return function(i,d){return i%2==0};case j.PATTERN010:return function(i,d){return d%3==0};case j.PATTERN011:return function(i,d){return(i+d)%3==0};case j.PATTERN100:return function(i,d){return(Math.floor(i/2)+Math.floor(d/3))%2==0};case j.PATTERN101:return function(i,d){return i*d%2+i*d%3==0};case j.PATTERN110:return function(i,d){return(i*d%2+i*d%3)%2==0};case j.PATTERN111:return function(i,d){return(i*d%3+(i+d)%2)%2==0};default:throw"bad maskPattern:"+s}},n.getErrorCorrectPolynomial=function(s){let i=re([1],0);for(let d=0;d<s;d+=1)i=i.multiply(re([1,Y.gexp(d)],0));return i},n.getLengthInBits=function(s,i){if(1<=i&&i<10)switch(s){case U.MODE_NUMBER:return 10;case U.MODE_ALPHA_NUM:return 9;case U.MODE_8BIT_BYTE:return 8;case U.MODE_KANJI:return 8;default:throw"mode:"+s}else if(i<27)switch(s){case U.MODE_NUMBER:return 12;case U.MODE_ALPHA_NUM:return 11;case U.MODE_8BIT_BYTE:return 16;case U.MODE_KANJI:return 10;default:throw"mode:"+s}else if(i<41)switch(s){case U.MODE_NUMBER:return 14;case U.MODE_ALPHA_NUM:return 13;case U.MODE_8BIT_BYTE:return 16;case U.MODE_KANJI:return 12;default:throw"mode:"+s}else throw"type:"+i},n.getLostPoint=function(s){let i=s.getModuleCount(),d=0;for(let h=0;h<i;h+=1)for(let c=0;c<i;c+=1){let b=0,A=s.isDark(h,c);for(let k=-1;k<=1;k+=1)if(!(h+k<0||i<=h+k))for(let D=-1;D<=1;D+=1)c+D<0||i<=c+D||k==0&&D==0||A==s.isDark(h+k,c+D)&&(b+=1);b>5&&(d+=3+b-5)}for(let h=0;h<i-1;h+=1)for(let c=0;c<i-1;c+=1){let b=0;s.isDark(h,c)&&(b+=1),s.isDark(h+1,c)&&(b+=1),s.isDark(h,c+1)&&(b+=1),s.isDark(h+1,c+1)&&(b+=1),(b==0||b==4)&&(d+=3)}for(let h=0;h<i;h+=1)for(let c=0;c<i-6;c+=1)s.isDark(h,c)&&!s.isDark(h,c+1)&&s.isDark(h,c+2)&&s.isDark(h,c+3)&&s.isDark(h,c+4)&&!s.isDark(h,c+5)&&s.isDark(h,c+6)&&(d+=40);for(let h=0;h<i;h+=1)for(let c=0;c<i-6;c+=1)s.isDark(c,h)&&!s.isDark(c+1,h)&&s.isDark(c+2,h)&&s.isDark(c+3,h)&&s.isDark(c+4,h)&&!s.isDark(c+5,h)&&s.isDark(c+6,h)&&(d+=40);let p=0;for(let h=0;h<i;h+=1)for(let c=0;c<i;c+=1)s.isDark(c,h)&&(p+=1);let y=Math.abs(100*p/i/i-50)/5;return d+=y*10,d},n})(),Y=(function(){let o=new Array(256),e=new Array(256);for(let t=0;t<8;t+=1)o[t]=1<<t;for(let t=8;t<256;t+=1)o[t]=o[t-4]^o[t-5]^o[t-6]^o[t-8];for(let t=0;t<255;t+=1)e[o[t]]=t;let r={};return r.glog=function(t){if(t<1)throw"glog("+t+")";return e[t]},r.gexp=function(t){for(;t<0;)t+=255;for(;t>=256;)t-=255;return o[t]},r})(),re=function(o,e){if(typeof o.length>"u")throw o.length+"/"+e;let r=(function(){let n=0;for(;n<o.length&&o[n]==0;)n+=1;let a=new Array(o.length-n+e);for(let s=0;s<o.length-n;s+=1)a[s]=o[s+n];return a})(),t={};return t.getAt=function(n){return r[n]},t.getLength=function(){return r.length},t.multiply=function(n){let a=new Array(t.getLength()+n.getLength()-1);for(let s=0;s<t.getLength();s+=1)for(let i=0;i<n.getLength();i+=1)a[s+i]^=Y.gexp(Y.glog(t.getAt(s))+Y.glog(n.getAt(i)));return re(a,0)},t.mod=function(n){if(t.getLength()-n.getLength()<0)return t;let a=Y.glog(t.getAt(0))-Y.glog(n.getAt(0)),s=new Array(t.getLength());for(let i=0;i<t.getLength();i+=1)s[i]=t.getAt(i);for(let i=0;i<n.getLength();i+=1)s[i]^=Y.gexp(Y.glog(n.getAt(i))+a);return re(s,0).mod(n)},t},ve=(function(){let o=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],e=function(n,a){let s={};return s.totalCount=n,s.dataCount=a,s},r={},t=function(n,a){switch(a){case ne.L:return o[(n-1)*4+0];case ne.M:return o[(n-1)*4+1];case ne.Q:return o[(n-1)*4+2];case ne.H:return o[(n-1)*4+3];default:return}};return r.getRSBlocks=function(n,a){let s=t(n,a);if(typeof s>"u")throw"bad rs block @ typeNumber:"+n+"/errorCorrectionLevel:"+a;let i=s.length/3,d=[];for(let p=0;p<i;p+=1){let y=s[p*3+0],h=s[p*3+1],c=s[p*3+2];for(let b=0;b<y;b+=1)d.push(e(h,c))}return d},r})(),_e=function(){let o=[],e=0,r={};return r.getBuffer=function(){return o},r.getAt=function(t){let n=Math.floor(t/8);return(o[n]>>>7-t%8&1)==1},r.put=function(t,n){for(let a=0;a<n;a+=1)r.putBit((t>>>n-a-1&1)==1)},r.getLengthInBits=function(){return e},r.putBit=function(t){let n=Math.floor(e/8);o.length<=n&&o.push(0),t&&(o[n]|=128>>>e%8),e+=1},r},Ve=function(o){let e=U.MODE_NUMBER,r=o,t={};t.getMode=function(){return e},t.getLength=function(s){return r.length},t.write=function(s){let i=r,d=0;for(;d+2<i.length;)s.put(n(i.substring(d,d+3)),10),d+=3;d<i.length&&(i.length-d==1?s.put(n(i.substring(d,d+1)),4):i.length-d==2&&s.put(n(i.substring(d,d+2)),7))};let n=function(s){let i=0;for(let d=0;d<s.length;d+=1)i=i*10+a(s.charAt(d));return i},a=function(s){if("0"<=s&&s<="9")return s.charCodeAt(0)-48;throw"illegal char :"+s};return t},je=function(o){let e=U.MODE_ALPHA_NUM,r=o,t={};t.getMode=function(){return e},t.getLength=function(a){return r.length},t.write=function(a){let s=r,i=0;for(;i+1<s.length;)a.put(n(s.charAt(i))*45+n(s.charAt(i+1)),11),i+=2;i<s.length&&a.put(n(s.charAt(i)),6)};let n=function(a){if("0"<=a&&a<="9")return a.charCodeAt(0)-48;if("A"<=a&&a<="Z")return a.charCodeAt(0)-65+10;switch(a){case" ":return 36;case"$":return 37;case"%":return 38;case"*":return 39;case"+":return 40;case"-":return 41;case".":return 42;case"/":return 43;case":":return 44;default:throw"illegal char :"+a}};return t},qe=function(o){let e=U.MODE_8BIT_BYTE,r=o,t=J.stringToBytes(o),n={};return n.getMode=function(){return e},n.getLength=function(a){return t.length},n.write=function(a){for(let s=0;s<t.length;s+=1)a.put(t[s],8)},n},Ye=function(o){let e=U.MODE_KANJI,r=o,t=J.stringToBytes;(function(s,i){let d=t(s);if(d.length!=2||(d[0]<<8|d[1])!=i)throw"sjis not supported."})("\u53CB",38726);let n=t(o),a={};return a.getMode=function(){return e},a.getLength=function(s){return~~(n.length/2)},a.write=function(s){let i=n,d=0;for(;d+1<i.length;){let p=(255&i[d])<<8|255&i[d+1];if(33088<=p&&p<=40956)p-=33088;else if(57408<=p&&p<=60351)p-=49472;else throw"illegal char at "+(d+1)+"/"+p;p=(p>>>8&255)*192+(p&255),s.put(p,13),d+=2}if(d<i.length)throw"illegal char at "+(d+1)},a},De=function(){let o=[],e={};return e.writeByte=function(r){o.push(r&255)},e.writeShort=function(r){e.writeByte(r),e.writeByte(r>>>8)},e.writeBytes=function(r,t,n){t=t||0,n=n||r.length;for(let a=0;a<n;a+=1)e.writeByte(r[a+t])},e.writeString=function(r){for(let t=0;t<r.length;t+=1)e.writeByte(r.charCodeAt(t))},e.toByteArray=function(){return o},e.toString=function(){let r="";r+="[";for(let t=0;t<o.length;t+=1)t>0&&(r+=","),r+=o[t];return r+="]",r},e},Qe=function(){let o=0,e=0,r=0,t="",n={},a=function(i){t+=String.fromCharCode(s(i&63))},s=function(i){if(i<0)throw"n:"+i;if(i<26)return 65+i;if(i<52)return 97+(i-26);if(i<62)return 48+(i-52);if(i==62)return 43;if(i==63)return 47;throw"n:"+i};return n.writeByte=function(i){for(o=o<<8|i&255,e+=8,r+=1;e>=6;)a(o>>>e-6),e-=6},n.flush=function(){if(e>0&&(a(o<<6-e),o=0,e=0),r%3!=0){let i=3-r%3;for(let d=0;d<i;d+=1)t+="="}},n.toString=function(){return t},n},Ge=function(o){let e=o,r=0,t=0,n=0,a={};a.read=function(){for(;n<8;){if(r>=e.length){if(n==0)return-1;throw"unexpected end of file./"+n}let d=e.charAt(r);if(r+=1,d=="=")return n=0,-1;if(d.match(/^\s$/))continue;t=t<<6|s(d.charCodeAt(0)),n+=6}let i=t>>>n-8&255;return n-=8,i};let s=function(i){if(65<=i&&i<=90)return i-65;if(97<=i&&i<=122)return i-97+26;if(48<=i&&i<=57)return i-48+52;if(i==43)return 62;if(i==47)return 63;throw"c:"+i};return a},Je=function(o,e){let r=o,t=e,n=new Array(o*e),a={};a.setPixel=function(p,y,h){n[y*r+p]=h},a.write=function(p){p.writeString("GIF87a"),p.writeShort(r),p.writeShort(t),p.writeByte(128),p.writeByte(0),p.writeByte(0),p.writeByte(0),p.writeByte(0),p.writeByte(0),p.writeByte(255),p.writeByte(255),p.writeByte(255),p.writeString(","),p.writeShort(0),p.writeShort(0),p.writeShort(r),p.writeShort(t),p.writeByte(0);let y=2,h=i(y);p.writeByte(y);let c=0;for(;h.length-c>255;)p.writeByte(255),p.writeBytes(h,c,255),c+=255;p.writeByte(h.length-c),p.writeBytes(h,c,h.length-c),p.writeByte(0),p.writeString(";")};let s=function(p){let y=p,h=0,c=0,b={};return b.write=function(A,k){if(A>>>k)throw"length over";for(;h+k>=8;)y.writeByte(255&(A<<h|c)),k-=8-h,A>>>=8-h,c=0,h=0;c=A<<h|c,h=h+k},b.flush=function(){h>0&&y.writeByte(c)},b},i=function(p){let y=1<<p,h=(1<<p)+1,c=p+1,b=d();for(let T=0;T<y;T+=1)b.add(String.fromCharCode(T));b.add(String.fromCharCode(y)),b.add(String.fromCharCode(h));let A=De(),k=s(A);k.write(y,c);let D=0,x=String.fromCharCode(n[D]);for(D+=1;D<n.length;){let T=String.fromCharCode(n[D]);D+=1,b.contains(x+T)?x=x+T:(k.write(b.indexOf(x),c),b.size()<4095&&(b.size()==1<<c&&(c+=1),b.add(x+T)),x=T)}return k.write(b.indexOf(x),c),k.write(h,c),k.flush(),A.toByteArray()},d=function(){let p={},y=0,h={};return h.add=function(c){if(h.contains(c))throw"dup key:"+c;p[c]=y,y+=1},h.size=function(){return y},h.indexOf=function(c){return p[c]},h.contains=function(c){return typeof p[c]<"u"},h};return a},Xe=function(o,e,r){let t=Je(o,e);for(let i=0;i<e;i+=1)for(let d=0;d<o;d+=1)t.setPixel(d,i,r(d,i));let n=De();t.write(n);let a=Qe(),s=n.toByteArray();for(let i=0;i<s.length;i+=1)a.writeByte(s[i]);return a.flush(),"data:image/gif;base64,"+a},Ze=J,bn=J.stringToBytes;function et(o,e,r=200){de(o);let t=document.createElement("canvas"),n=t.getContext?.("2d")??null;if(!n){let h=document.createElement("a");h.href=e,h.textContent="Open in DID Wallet",h.target="_blank",h.rel="noopener",o.appendChild(h);return}let a=Ze(0,"M");a.addData(e),a.make();let s=a.getModuleCount(),i=Math.floor(r/s),d=i*s;t.width=d,t.height=d,t.style.display="block",t.style.width=`${r}px`,t.style.height=`${r}px`,t.style.imageRendering="pixelated";let p="#e8e8e8";n.fillStyle=p,n.fillRect(0,0,d,d),n.fillStyle="#000000";for(let h=0;h<s;h++)for(let c=0;c<s;c++)a.isDark(h,c)&&n.fillRect(c*i,h*i,i,i);let y=document.createElement("div");y.style.cssText="display:inline-block;padding:10px;background:#e8e8e8;border-radius:8px;line-height:0",y.appendChild(t),o.appendChild(y)}function de(o){o.innerHTML=""}var tt=`
152
151
  ${Le}
153
152
  ${Re}
153
+ ${Pe}
154
154
 
155
155
  /* Layout */
156
156
  body {
@@ -711,11 +711,32 @@ h1 {
711
711
  border-color: var(--border-strong);
712
712
  }
713
713
  .locale-btn svg { width: 14px; height: 14px; flex-shrink: 0; }
714
+ .locale-trigger {
715
+ display: inline-flex;
716
+ align-items: center;
717
+ gap: 4px;
718
+ padding: 4px 10px;
719
+ font-size: 12px;
720
+ color: var(--text-secondary);
721
+ background: var(--bg-elevated);
722
+ border: 1px solid var(--border-subtle);
723
+ border-radius: var(--radius-full);
724
+ cursor: pointer;
725
+ }
726
+ .locale-trigger:hover {
727
+ color: var(--text);
728
+ border-color: var(--border-strong);
729
+ }
730
+ .locale-trigger svg { width: 14px; height: 14px; flex-shrink: 0; }
714
731
  .locale-menu {
715
- display: flex;
732
+ display: none;
716
733
  flex-direction: column;
717
734
  align-items: stretch;
718
735
  gap: 4px;
736
+ margin-top: 4px;
737
+ }
738
+ .locale-switcher.open .locale-menu {
739
+ display: flex;
719
740
  }
720
741
  .locale-btn[aria-checked="true"] {
721
742
  color: var(--text);
@@ -723,9 +744,9 @@ h1 {
723
744
  }
724
745
  .locale-check { font-size: 11px; line-height: 1; }
725
746
  .card { position: relative; }
726
- `;function Q(o){let e=new Uint8Array(o),r="";for(let t=0;t<e.length;t++)r+=String.fromCharCode(e[t]);return btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function te(o){let e=o.replace(/-/g,"+").replace(/_/g,"/"),r=atob(e),t=new Uint8Array(r.length);for(let n=0;n<r.length;n++)t[n]=r.charCodeAt(n);return t.buffer}function nt(o){let e=o.response;return{id:o.id,rawId:Q(o.rawId),type:o.type,response:{attestationObject:Q(e.attestationObject),clientDataJSON:Q(e.clientDataJSON)},clientExtensionResults:o.getClientExtensionResults(),authenticatorAttachment:o.authenticatorAttachment}}function rt(o){let e=o.response;return{id:o.id,rawId:Q(o.rawId),type:o.type,response:{authenticatorData:Q(e.authenticatorData),clientDataJSON:Q(e.clientDataJSON),signature:Q(e.signature),userHandle:e.userHandle?Q(e.userHandle):void 0},clientExtensionResults:o.getClientExtensionResults(),authenticatorAttachment:o.authenticatorAttachment}}async function se(o){let e=o.prefix||"/.well-known/service/api/passkey",r=o.onStatus||(()=>{}),t=o.authOnly||!1,n=o.registerOnly||!1,a=o.invitationId||void 0,s=o.locale,i=o.texts||{},d=i.waiting||w("passkeyWaiting",s),m=i.creating||w("passkeyCreating",s),y=i.verifying||w("verifying",s);async function f(){let x=await fetch(`${e}/auth`,{method:"GET"});if(!x.ok)throw new Error(w("authFailed",s));return x.json()}async function l(x){let T=[];x&&T.push(`name=${encodeURIComponent(x)}`),a&&T.push(`invitationId=${encodeURIComponent(a)}`);let I=T.length?`?${T.join("&")}`:"",S=await fetch(`${e}/register${I}`,{method:"GET"});if(!S.ok)throw new Error(w("registrationFailed",s));return S.json()}function b(x,T){let I=new Error(x);throw T&&(I.code=T),I}async function B(x,T){let I=await fetch(`${e}/auth`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({challengeId:x,credential:T})});if(!I.ok){let S=await I.json().catch(()=>({}));b(S.error||w("authFailed",s),S.code)}return I.json()}async function k(x,T,I){let S=await fetch(`${e}/register`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({challengeId:x,credential:T,name:I||void 0})});if(!S.ok){let L=await S.json().catch(()=>({}));b(L.error||w("registrationFailed",s),L.code)}return S.json()}if(!n){r(d,!1);try{let x=await f(),{challengeId:T}=x,I=x.authentication||x,S={publicKey:{...I,challenge:te(I.challenge),allowCredentials:(I.allowCredentials||[]).map(z=>({...z,id:te(z.id)}))}},L;try{L=await navigator.credentials.get(S)}catch{if(t)return{success:!1,error:"no_passkey"}}if(L){let z=rt(L);return r(y,!1),await B(T,z),{success:!0}}}catch(x){let T=x instanceof Error?x.message:w("authFailed",s),I=x instanceof Error?x.code:void 0;return r(T,!0),{success:!1,error:T,code:I}}}let D=await l(o.name||"");if(D.registrationAllowed===!1)return r(w("regClosed",s),!0),{success:!1,error:"registration_closed"};r(m,!1);try{let x=D.registration||D,T={publicKey:{...x,challenge:te(x.challenge),user:{...x.user,id:te(x.user.id)},excludeCredentials:(x.excludeCredentials||[]).map(L=>({...L,id:te(L.id)}))}},I=await navigator.credentials.create(T),S=nt(I);return r(y,!1),await k(D.challengeId,S,o.name||""),{success:!0}}catch(x){let T=x instanceof Error?x.message:w("passkeySetupFailed",s),I=x instanceof Error?x.code:void 0;return r(T,!0),{success:!1,error:T,code:I}}}function G(o,e){let r=o instanceof Error?o.message:"",t=o instanceof Error&&"code"in o?o.code:"";return t==="FORBIDDEN"?w("accessDenied",e):r==="registration_closed"||t==="registration_closed"?w("regClosed",e):r||w("authFailed",e)}var ot="https://web.abtwallet.io/";function st(){return typeof navigator>"u"?!1:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}function it(){return typeof window>"u"?null:window.ABT_DEV??window.ABT??null}function K(o){return o.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}var De=class{container;config;http;options;tokenSession=null;styleEl=null;mounted=!1;currentView="methods";cardEl=null;mediaQuery=null;mediaListener=null;constructor(o,e,r,t){if(this.container=o,this.config=e,this.http=r,this.options={methods:["passkey","did-connect"],locale:"en",...t},!this.options.invitationId&&typeof document<"u"){let n=document.cookie.match(/(?:^|;\s*)pending_invitation=([^;]*)/);if(n)try{this.options.invitationId=decodeURIComponent(n[1])}catch{}}}mount(){if(this.mounted)return;this.mounted=!0,this.styleEl=document.createElement("style"),this.styleEl.textContent=tt,this.container.appendChild(this.styleEl),this.applyTheme();let o=this.filterMethods(this.options.methods);this.renderCard(o)}destroy(){this.tokenSession&&(this.tokenSession.destroy(),this.tokenSession=null),this.mediaQuery&&this.mediaListener&&(this.mediaQuery.removeEventListener("change",this.mediaListener),this.mediaQuery=null,this.mediaListener=null),document.documentElement.removeAttribute("data-theme"),this.container.innerHTML="",this.styleEl=null,this.cardEl=null,this.currentView="methods",this.mounted=!1}update(o){Object.assign(this.options,o),this.mounted&&(this.destroy(),this.mount())}applyTheme(){let o=this.options.theme??"dark";if(o==="light")document.documentElement.dataset.theme="light";else if(o==="auto"&&typeof window.matchMedia=="function"){let e=window.matchMedia("(prefers-color-scheme: light)");this.mediaQuery=e;let r=t=>{t?document.documentElement.dataset.theme="light":document.documentElement.removeAttribute("data-theme")};r(e.matches),this.mediaListener=t=>r(t.matches),e.addEventListener("change",this.mediaListener)}}filterMethods(o){return o.filter(e=>e==="passkey"?typeof window<"u"&&window.PublicKeyCredential!==void 0&&typeof window.PublicKeyCredential=="function":!0)}renderCard(o){let e=document.createElement("div");e.className="card",this.cardEl=e,this.container.appendChild(e),this.switchView("methods",o)}renderLocaleSwitcher(o){let e=this.options.locales;if(e){this.renderLocaleMenu(o,e);return}if(ce.length<2)return;let r=document.createElement("div");r.className="locale-switcher";let t=this.options.locale,n=ce.find(s=>s.code!==t)??ce[0],a=document.createElement("button");a.type="button",a.className="locale-btn",a.innerHTML=`${Ke} ${K(n.label)}`,a.title=n.label,a.addEventListener("click",()=>{this.options.onLocaleChange?.(n.code),this.update({locale:n.code})}),r.appendChild(a),o.appendChild(r)}renderLocaleMenu(o,e){if(e.length<2)return;let r=document.createElement("div");r.className="locale-switcher locale-menu",r.setAttribute("role","menu");let t=this.options.locale;for(let n of e){let a=n.code===t,s=document.createElement("button");if(s.type="button",s.className="locale-btn",s.setAttribute("role","menuitemradio"),s.setAttribute("aria-checked",a?"true":"false"),s.dataset.locale=n.code,s.title=n.label,a){let d=document.createElement("span");d.className="locale-check",d.setAttribute("aria-hidden","true"),d.textContent="\u2713",s.appendChild(d)}let i=document.createElement("span");i.textContent=n.label,s.appendChild(i),s.addEventListener("click",()=>{this.options.onLocaleChange?.(n.code),this.update({locale:n.code})}),r.appendChild(s)}o.appendChild(r)}switchView(o,e){if(!this.cardEl)return;let r=this.options.locale;switch(this.currentView==="qr"&&o!=="qr"&&this.tokenSession&&(this.tokenSession.destroy(),this.tokenSession=null),this.currentView=o,this.cardEl.innerHTML="",this.cardEl.dataset.view=o,this.renderLocaleSwitcher(this.cardEl),o){case"methods":this.renderMethodsView(this.cardEl,r,e??this.filterMethods(this.options.methods));break;case"qr":this.renderQRView(this.cardEl,r);break;case"email":this.renderEmailView(this.cardEl,r);break}}renderMethodsView(o,e,r){this.renderHomeLink(o,e),this.renderBrandHeader(o,e);let t=this.options.methods.includes("passkey");if(t&&!r.includes("passkey")){let s=document.createElement("div");s.className="compat-warning",s.textContent=w("passkeyUnsupported",e),o.appendChild(s)}let n=r.includes("passkey");n&&this.renderPasskeySection(o,e);let a=r.filter(s=>s!=="passkey");if(n&&a.length>0&&this.renderDivider(o,e),a.length>0&&this.renderSecondaryGrid(o,e,r),r.length===0&&!t){let s=document.createElement("p");s.className="subtitle",s.textContent="No authentication methods available.",o.appendChild(s)}this.renderTrustFooter(o,e)}renderQRView(o,e){this.renderBackButton(o,e);let r=document.createElement("h2");r.className="view-title",r.textContent=w("scanTitle",e),o.appendChild(r);let t=document.createElement("div");t.id="did-connect-qr",t.className="qr-view",t.innerHTML='<div class="qr-placeholder"><span class="qr-spinner"></span></div>',o.appendChild(t);let n=document.createElement("button");n.className="btn btn-secondary deep-link-btn",n.id="did-wallet-open-btn",n.textContent=w("openInWallet",e),n.disabled=!0,o.appendChild(n);let a=document.createElement("div");a.id="did-connect-status",a.className="status",o.appendChild(a),this.renderTrustFooter(o,e),this.startDIDConnectInView(a,t,n,e)}renderEmailView(o,e){this.renderBackButton(o,e);let r=document.createElement("h2");r.className="view-title",r.textContent=w("emailTitle",e),o.appendChild(r);let t=document.createElement("input");t.className="input",t.type="email",t.placeholder=w("emailPlaceholder",e),o.appendChild(t);let n=document.createElement("button");n.className="btn",n.textContent=w("emailSubmit",e),o.appendChild(n);let a=document.createElement("div");a.className="status",o.appendChild(a);let s=document.createElement("div");s.className="email-code-section",s.style.display="none";let i=document.createElement("input");i.className="input",i.type="text",i.inputMode="numeric",i.maxLength=8,i.autocomplete="one-time-code",i.placeholder=w("emailCodePlaceholder",e),s.appendChild(i);let d=document.createElement("button");d.className="btn",d.textContent=w("emailVerify",e),s.appendChild(d);let m=document.createElement("button");m.className="btn btn-secondary",m.textContent=w("emailResend",e),m.style.marginTop="8px",s.appendChild(m),o.insertBefore(s,a),this.renderTrustFooter(o,e);let y="",f,l=this.config.servicePrefix??"/.well-known/service",b=async()=>{if(n.disabled)return;let k=t.value.trim();if(!k?.includes("@")){a.textContent=w("emailInvalid",e),a.className="status error";return}n.disabled=!0,a.textContent=w("emailSending",e),a.className="status";try{let D=await this.http.post(`${l}/api/email/sendCode`,{email:k,locale:e});y=k,f=D?.id,t.style.display="none",n.style.display="none",s.style.display="",r.textContent=w("emailVerify",e),a.textContent=w("emailSent",e,{email:k}),a.className="status",i.focus()}catch(D){let x=D instanceof Error?D.message:"Failed to send email";a.textContent=x,a.className="status error",n.disabled=!1}},B=async()=>{if(d.disabled)return;let k=i.value.trim();if(!k||k.length!==8){a.textContent=w("emailCodeInvalid",e),a.className="status error";return}d.disabled=!0,a.textContent=w("verifying",e),a.className="status";try{await this.http.post(`${l}/api/email/login`,{code:k,id:f}),a.textContent=w("success",e),a.className="status",this.handleSuccess()}catch(D){D instanceof Error&&"code"in D&&D.code==="FORBIDDEN"?this.showFullError(G(D,e)):(a.textContent=G(D,e),a.className="status error",d.disabled=!1,i.value="",i.focus())}};n.addEventListener("click",b),t.addEventListener("keydown",k=>{k.key==="Enter"&&b()}),d.addEventListener("click",B),i.addEventListener("keydown",k=>{k.key==="Enter"&&B()}),m.addEventListener("click",async()=>{m.disabled=!0,a.textContent=w("emailSending",e),a.className="status";try{f=(await this.http.post(`${l}/api/email/sendCode`,{email:y,locale:e}))?.id,a.textContent=w("emailSent",e,{email:y}),a.className="status"}catch(k){let D=k instanceof Error?k.message:"Failed to resend";a.textContent=D,a.className="status error"}m.disabled=!1})}renderBackButton(o,e){let r=document.createElement("button");r.className="back-btn",r.innerHTML=`${Ce} ${K(w("back",e))}`,r.addEventListener("click",()=>this.switchView("methods")),o.appendChild(r)}renderHomeLink(o,e){let{homeUrl:r,onCancel:t}=this.options;if(!t&&!r)return;let n=`${Ce} ${K(w("cancel",e))}`;if(t){let a=document.createElement("button");a.type="button",a.className="home-link",a.innerHTML=n,a.addEventListener("click",()=>this.options.onCancel?.()),o.appendChild(a)}else{let a=document.createElement("a");a.className="home-link",a.href=r,a.innerHTML=n,o.appendChild(a)}}renderBrandHeader(o,e){let r=document.createElement("div");if(r.className="brand-header",this.options.appLogo){let n=document.createElement("img");n.className="app-logo",n.src=K(this.options.appLogo),n.alt=this.options.appName?K(this.options.appName):"",n.width=48,n.height=48,r.appendChild(n)}let t=document.createElement("h1");if(this.options.appName?t.textContent=w("signInTo",e,{appName:this.options.appName}):t.textContent=w("signIn",e),r.appendChild(t),this.options.masterAppName){let n=document.createElement("p");n.className="federated-hint",n.textContent=w("federatedBy",e,{masterName:this.options.masterAppName}),r.appendChild(n)}o.appendChild(r)}renderTrustFooter(o,e){let r=document.createElement("div");r.className="login-footer";let t=document.createElement("div");t.className="secured-badge",t.innerHTML=`${He} ${K(w("securedBy",e))}`,r.appendChild(t);let{privacyUrl:n,termsUrl:a}=this.options;if(n||a){let s=document.createElement("div");if(s.className="footer-links",n){let i=document.createElement("a");i.href=n,i.target="_blank",i.rel="noopener noreferrer",i.textContent=w("privacy",e),s.appendChild(i)}if(n&&a&&s.appendChild(document.createTextNode(" \xB7 ")),a){let i=document.createElement("a");i.href=a,i.target="_blank",i.rel="noopener noreferrer",i.textContent=w("terms",e),s.appendChild(i)}r.appendChild(s)}o.appendChild(r)}renderDivider(o,e){let r=document.createElement("div");r.className="divider",r.textContent=w("or",e),o.appendChild(r)}renderPasskeySection(o,e){let r=document.createElement("div");r.className="passkey-section",o.appendChild(r);let t=document.createElement("div");t.className="status",t.id="passkey-status",o.appendChild(t);let n=(l,b)=>{t.textContent=l,t.className=`status${b?" error":""}`},a=()=>n("",!1),s={waiting:w("passkeyWaiting",e),creating:w("passkeyCreating",e),verifying:w("verifying",e)},i=l=>l.success?(n(w("success",e),!1),this.handleSuccess(),!0):l.code==="FORBIDDEN"||l.error==="registration_closed"?(this.showFullError(G({message:l.error,code:l.code||l.error},e)),!0):!1,d=()=>{r.innerHTML="",n(w("passkeyNoLocal",e),!1);let l=document.createElement("button");l.className="btn",l.id="passkey-btn",l.innerHTML=`${le} ${K(w("passkeyUseAnotherDevice",e))}`,r.appendChild(l),l.addEventListener("click",()=>y());let b=document.createElement("button");b.type="button",b.className="passkey-alt",b.textContent=w("passkeyCreateInstead",e),r.appendChild(b),b.addEventListener("click",()=>m())},m=()=>{r.innerHTML="",a();let l=document.createElement("div");l.className="name-row visible",l.id="passkey-name-row";let b=document.createElement("input");b.className="input",b.id="passkey-name-input",b.type="text",b.placeholder=w("namePlaceholder",e),b.autocomplete="name",l.appendChild(b),r.appendChild(l);let B=document.createElement("button");B.className="btn",B.id="passkey-btn",B.innerHTML=`${le} ${K(w("passkeyCreate",e))}`,r.appendChild(B);let k=document.createElement("button");k.type="button",k.className="passkey-alt",k.textContent=w("passkeyBackToSignIn",e),r.appendChild(k);let D=async()=>{if(B.disabled)return;B.disabled=!0;let x=await se({registerOnly:!0,name:b.value.trim(),onStatus:n,texts:s,locale:e,prefix:this.options.passkeyPrefix,invitationId:this.options.invitationId});i(x)||(x.error&&n(x.error,!0),B.disabled=!1)};B.addEventListener("click",D),b.addEventListener("keydown",x=>{x.key==="Enter"&&D()}),k.addEventListener("click",()=>f()),b.focus()},y=async()=>{let l=r.querySelector("#passkey-btn");l&&(l.disabled=!0);let b=await se({authOnly:!0,onStatus:n,texts:s,locale:e,prefix:this.options.passkeyPrefix,invitationId:this.options.invitationId});if(!i(b)){if(b.error&&b.error!=="no_passkey"){n(b.error,!0),l&&(l.disabled=!1);return}d()}},f=()=>{r.innerHTML="",a();let l=document.createElement("button");l.className="btn",l.id="passkey-btn",l.innerHTML=`${le} ${K(w("passkeySignIn",e))}`,r.appendChild(l),l.addEventListener("click",()=>y());let b=document.createElement("button");b.type="button",b.className="passkey-alt",b.textContent=w("passkeyFirstTime",e),r.appendChild(b),b.addEventListener("click",()=>m())};this.options.invitationId?m():f()}startOAuthPopup(o,e){let r=this.config.servicePrefix??"/.well-known/service",t=this.options.masterOAuthOrigin?`${this.options.masterOAuthOrigin}${r}`:r,n=new URL(t,window.location.href).origin,a=`${t}/api/oauth/${encodeURIComponent(o)}/login?returnUrl=${encodeURIComponent(window.location.href)}`,s=500,i=620,d=window.screenX+(window.innerWidth-s)/2,m=window.screenY+(window.innerHeight-i)/2,y=window.open(a,"oauth-login:popup",`left=${d},top=${m},width=${s},height=${i},resizable,scrollbars=yes,status=1,popup`);if(!y){window.location.href=a;return}let f=e.innerHTML;e.innerHTML='<span class="oauth-spinner"></span> Authorizing...',e.disabled=!0,e.classList.add("oauth-btn-loading");let l=()=>{e.innerHTML=f,e.disabled=!1,e.classList.remove("oauth-btn-loading")},b=!1,B,k=()=>{b||(b=!0,I(),e.innerHTML='<span class="oauth-check">\u2713</span> Success',this.handleSuccess())},D=async S=>{if(S.origin!==n||!S.data||S.data.type!=="authorization_response"||b)return;x!==void 0&&(clearInterval(x),x=void 0);try{y.close()}catch{}if(S.data.error){l(),I();return}let{code:L,state:z}=S.data.response??S.data;if(!L){l(),I();return}e.innerHTML='<span class="oauth-spinner"></span> Signing in...',e.disabled=!0;try{let c={provider:o,code:L,state:z};this.options.invitationId&&(c.invitationId=this.options.invitationId),await this.http.post(`${r}/api/oauth/login`,c),k()}catch(c){let g=c instanceof Error?c.message:"",u=c instanceof Error&&"code"in c?c.code:"";u==="FORBIDDEN"||g==="registration_closed"||u==="registration_closed"?(b=!0,I(),this.showFullError(G(c,this.options.locale))):l()}},x=setInterval(()=>{let S=!1;try{S=y.closed}catch{return}if(!S)return;x!==void 0&&(clearInterval(x),x=void 0),l();let L=()=>{this.http.get(`${r}/api/did/session`).then(z=>{z?.authenticated&&k()}).catch(()=>{})};L(),B=setInterval(L,500)},500),T=setTimeout(()=>{b||(I(),l())},300*1e3),I=()=>{x!==void 0&&(clearInterval(x),x=void 0),B!==void 0&&(clearInterval(B),B=void 0),clearTimeout(T),window.removeEventListener("message",D)};window.addEventListener("message",D)}renderSecondaryGrid(o,e,r){let t=document.createElement("div");if(t.className="methods-grid",r.includes("oauth")&&this.options.oauthProviders?.length){let n=(this.options.oauthProviders??[]).filter(a=>a.enabled);for(let a of n){let s=document.createElement("button");s.className="method-btn",s.dataset.provider=a.id;let i=ze(a.id);s.innerHTML=`${i} ${K(a.name)}`,t.appendChild(s),s.addEventListener("click",()=>{this.startOAuthPopup(a.id,s)})}}if(r.includes("email")){let n=document.createElement("button");n.className="method-btn",n.id="email-btn",n.innerHTML=`${Ue} ${K(w("emailButton",e))}`,t.appendChild(n),n.addEventListener("click",()=>{this.switchView("email")})}if(r.includes("did-connect")){let n=document.createElement("button");n.className="method-btn",n.id="did-wallet-btn";let a=t.children.length>0?w("didWalletButtonShort",e):w("didWalletButton",e);n.innerHTML=`${xe} ${K(a)}`,t.appendChild(n),n.addEventListener("click",()=>{this.switchView("qr")})}o.appendChild(t)}async startDIDConnectInView(o,e,r,t){o.textContent=w("connecting",t);try{this.tokenSession?.destroy(),this.tokenSession=new ee(this.config,this.http),this.tokenSession.on("succeed",async()=>{this.showConnectResult(e,r,o,w("verifying",t));try{let a=this.config.servicePrefix??"/.well-known/service";await this.http.post(`${a}/api/did/connect/complete`,{token:this.tokenSession.state.token}),this.showConnectSuccess(e,r,o,t),this.handleSuccess()}catch(a){this.showConnectResult(e,r,o,G(a,t),!0)}}),this.tokenSession.on("timeout",()=>{o.textContent=w("timeout",t);let a=document.createElement("div");a.className="qr-timeout-overlay",a.innerHTML=`<span class="timeout-text">${K(w("timeout",t))}</span>`;let s=document.createElement("button");s.className="refresh-btn",s.textContent=w("refreshQR",t),s.addEventListener("click",()=>{a.remove(),de(e),e.innerHTML='<div class="qr-placeholder"><span class="qr-spinner"></span></div>',r.disabled=!0,this.startDIDConnectInView(o,e,r,t)}),a.appendChild(s),e.appendChild(a)}),this.tokenSession.on("error",a=>{this.showConnectResult(e,r,o,G(a,t),!0)}),this.tokenSession.on("statusChange",a=>{a.status==="scanned"&&this.showConnectScanned(e,r,o,t)});let n=await this.tokenSession.create({locale:t});n.url&&(et(e,n.url),r.disabled=!1,r.addEventListener("click",()=>{this.showConnectScanned(e,r,o,t),this.openInWallet(n.url,t)})),o.textContent=w("scanWithWallet",t),this.tokenSession.startPolling()}catch(n){o.textContent=G(n,t),de(e)}}showFullError(o){if(!this.cardEl)return;let e=this.options.locale;this.tokenSession&&(this.tokenSession.destroy(),this.tokenSession=null),this.cardEl.innerHTML="",this.cardEl.dataset.view="error",this.renderLocaleSwitcher(this.cardEl);let r=document.createElement("div");r.className="connect-result",r.innerHTML='<div class="result-icon result-error">\u2715</div>',this.cardEl.appendChild(r);let t=document.createElement("div");t.className="status error",t.textContent=o,this.cardEl.appendChild(t);let n=document.createElement("button");n.className="btn btn-secondary result-back-btn",n.textContent=w("back",e),n.addEventListener("click",()=>this.switchView("methods")),this.cardEl.appendChild(n),this.renderTrustFooter(this.cardEl,e)}showConnectScanned(o,e,r,t="en"){o.style.display="none",e.style.display="none";let n=o.parentElement?.querySelector(".connect-result");n||(n=document.createElement("div"),n.className="connect-result",o.parentElement?.insertBefore(n,r)),n.innerHTML=`<div class="connect-status-icon">
747
+ `;function Q(o){let e=new Uint8Array(o),r="";for(let t=0;t<e.length;t++)r+=String.fromCharCode(e[t]);return btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function te(o){let e=o.replace(/-/g,"+").replace(/_/g,"/"),r=atob(e),t=new Uint8Array(r.length);for(let n=0;n<r.length;n++)t[n]=r.charCodeAt(n);return t.buffer}function nt(o){let e=o.response;return{id:o.id,rawId:Q(o.rawId),type:o.type,response:{attestationObject:Q(e.attestationObject),clientDataJSON:Q(e.clientDataJSON)},clientExtensionResults:o.getClientExtensionResults(),authenticatorAttachment:o.authenticatorAttachment}}function rt(o){let e=o.response;return{id:o.id,rawId:Q(o.rawId),type:o.type,response:{authenticatorData:Q(e.authenticatorData),clientDataJSON:Q(e.clientDataJSON),signature:Q(e.signature),userHandle:e.userHandle?Q(e.userHandle):void 0},clientExtensionResults:o.getClientExtensionResults(),authenticatorAttachment:o.authenticatorAttachment}}async function se(o){let e=o.prefix||"/.well-known/service/api/passkey",r=o.onStatus||(()=>{}),t=o.authOnly||!1,n=o.registerOnly||!1,a=o.invitationId||void 0,s=o.locale,i=o.texts||{},d=i.waiting||w("passkeyWaiting",s),p=i.creating||w("passkeyCreating",s),y=i.verifying||w("verifying",s);async function h(){let x=await fetch(`${e}/auth`,{method:"GET"});if(!x.ok)throw new Error(w("authFailed",s));return x.json()}async function c(x){let T=[];x&&T.push(`name=${encodeURIComponent(x)}`),a&&T.push(`invitationId=${encodeURIComponent(a)}`);let I=T.length?`?${T.join("&")}`:"",S=await fetch(`${e}/register${I}`,{method:"GET"});if(!S.ok)throw new Error(w("registrationFailed",s));return S.json()}function b(x,T){let I=new Error(x);throw T&&(I.code=T),I}async function A(x,T){let I=await fetch(`${e}/auth`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({challengeId:x,credential:T})});if(!I.ok){let S=await I.json().catch(()=>({}));b(S.error||w("authFailed",s),S.code)}return I.json()}async function k(x,T,I){let S=await fetch(`${e}/register`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({challengeId:x,credential:T,name:I||void 0})});if(!S.ok){let L=await S.json().catch(()=>({}));b(L.error||w("registrationFailed",s),L.code)}return S.json()}if(!n){r(d,!1);try{let x=await h(),{challengeId:T}=x,I=x.authentication||x,S={publicKey:{...I,challenge:te(I.challenge),allowCredentials:(I.allowCredentials||[]).map(z=>({...z,id:te(z.id)}))}},L;try{L=await navigator.credentials.get(S)}catch{if(t)return{success:!1,error:"no_passkey"}}if(L){let z=rt(L);return r(y,!1),await A(T,z),{success:!0}}}catch(x){let T=x instanceof Error?x.message:w("authFailed",s),I=x instanceof Error?x.code:void 0;return r(T,!0),{success:!1,error:T,code:I}}}let D=await c(o.name||"");if(D.registrationAllowed===!1)return r(w("regClosed",s),!0),{success:!1,error:"registration_closed"};r(p,!1);try{let x=D.registration||D,T={publicKey:{...x,challenge:te(x.challenge),user:{...x.user,id:te(x.user.id)},excludeCredentials:(x.excludeCredentials||[]).map(L=>({...L,id:te(L.id)}))}},I=await navigator.credentials.create(T),S=nt(I);return r(y,!1),await k(D.challengeId,S,o.name||""),{success:!0}}catch(x){let T=x instanceof Error?x.message:w("passkeySetupFailed",s),I=x instanceof Error?x.code:void 0;return r(T,!0),{success:!1,error:T,code:I}}}function G(o,e){let r=o instanceof Error?o.message:"",t=o instanceof Error&&"code"in o?o.code:"";return t==="FORBIDDEN"?w("accessDenied",e):r==="registration_closed"||t==="registration_closed"?w("regClosed",e):r||w("authFailed",e)}var ot="https://web.abtwallet.io/";function st(){return typeof navigator>"u"?!1:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}function it(){return typeof window>"u"?null:window.ABT_DEV??window.ABT??null}function W(o){return o.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}var Te=class{container;config;http;options;tokenSession=null;styleEl=null;mounted=!1;currentView="methods";cardEl=null;mediaQuery=null;mediaListener=null;localeOutsideClick=null;constructor(o,e,r,t){if(this.container=o,this.config=e,this.http=r,this.options={methods:["passkey","did-connect"],locale:"en",...t},!this.options.invitationId&&typeof document<"u"){let n=document.cookie.match(/(?:^|;\s*)pending_invitation=([^;]*)/);if(n)try{this.options.invitationId=decodeURIComponent(n[1])}catch{}}}mount(){if(this.mounted)return;this.mounted=!0,this.styleEl=document.createElement("style"),this.styleEl.textContent=tt,this.container.appendChild(this.styleEl),this.applyTheme();let o=this.filterMethods(this.options.methods);this.renderCard(o)}destroy(){this.detachLocaleMenu(),this.tokenSession&&(this.tokenSession.destroy(),this.tokenSession=null),this.mediaQuery&&this.mediaListener&&(this.mediaQuery.removeEventListener("change",this.mediaListener),this.mediaQuery=null,this.mediaListener=null),document.documentElement.removeAttribute("data-theme"),this.container.innerHTML="",this.styleEl=null,this.cardEl=null,this.currentView="methods",this.mounted=!1}update(o){Object.assign(this.options,o),this.mounted&&(this.destroy(),this.mount())}applyTheme(){let o=this.options.theme??"dark";if(o==="light")document.documentElement.dataset.theme="light";else if(o==="auto"&&typeof window.matchMedia=="function"){let e=window.matchMedia("(prefers-color-scheme: light)");this.mediaQuery=e;let r=t=>{t?document.documentElement.dataset.theme="light":document.documentElement.removeAttribute("data-theme")};r(e.matches),this.mediaListener=t=>r(t.matches),e.addEventListener("change",this.mediaListener)}}filterMethods(o){return o.filter(e=>e==="passkey"?typeof window<"u"&&window.PublicKeyCredential!==void 0&&typeof window.PublicKeyCredential=="function":!0)}renderCard(o){let e=document.createElement("div");e.className="card",this.cardEl=e,this.container.appendChild(e),this.switchView("methods",o)}renderLocaleSwitcher(o){let e=this.options.locales;if(e){this.renderLocaleMenu(o,e);return}if(ce.length<2)return;let r=document.createElement("div");r.className="locale-switcher";let t=this.options.locale,n=ce.find(s=>s.code!==t)??ce[0],a=document.createElement("button");a.type="button",a.className="locale-btn",a.innerHTML=`${ke} ${W(n.label)}`,a.title=n.label,a.addEventListener("click",()=>{this.options.onLocaleChange?.(n.code),this.update({locale:n.code})}),r.appendChild(a),o.appendChild(r)}renderLocaleMenu(o,e){if(e.length<2)return;this.detachLocaleMenu();let r=this.options.locale,t=e.find(p=>p.code===r)??e[0],n=document.createElement("div");n.className="locale-switcher";let a=document.createElement("button");a.type="button",a.className="locale-trigger",a.setAttribute("aria-haspopup","menu"),a.setAttribute("aria-expanded","false"),a.innerHTML=`${ke} ${W(t.label)}`,a.title=t.label;let s=document.createElement("div");s.className="locale-menu",s.setAttribute("role","menu"),s.hidden=!0;let i=p=>{n.classList.toggle("open",p),s.hidden=!p,a.setAttribute("aria-expanded",p?"true":"false")};a.addEventListener("click",p=>{p.stopPropagation(),i(s.hidden)});for(let p of e){let y=p.code===t.code,h=document.createElement("button");if(h.type="button",h.className="locale-btn",h.setAttribute("role","menuitemradio"),h.setAttribute("aria-checked",y?"true":"false"),h.dataset.locale=p.code,h.title=p.label,y){let b=document.createElement("span");b.className="locale-check",b.setAttribute("aria-hidden","true"),b.textContent="\u2713",h.appendChild(b)}let c=document.createElement("span");c.textContent=p.label,h.appendChild(c),h.addEventListener("click",()=>{this.options.onLocaleChange?.(p.code),this.update({locale:p.code})}),s.appendChild(h)}let d=p=>{n.contains(p.target)||i(!1)};document.addEventListener("click",d),this.localeOutsideClick=d,n.append(a,s),o.appendChild(n)}detachLocaleMenu(){this.localeOutsideClick&&(document.removeEventListener("click",this.localeOutsideClick),this.localeOutsideClick=null)}switchView(o,e){if(!this.cardEl)return;let r=this.options.locale;switch(this.currentView==="qr"&&o!=="qr"&&this.tokenSession&&(this.tokenSession.destroy(),this.tokenSession=null),this.currentView=o,this.cardEl.innerHTML="",this.cardEl.dataset.view=o,this.renderLocaleSwitcher(this.cardEl),o){case"methods":this.renderMethodsView(this.cardEl,r,e??this.filterMethods(this.options.methods));break;case"qr":this.renderQRView(this.cardEl,r);break;case"email":this.renderEmailView(this.cardEl,r);break}}renderMethodsView(o,e,r){this.renderHomeLink(o,e),this.renderBrandHeader(o,e);let t=this.options.methods.includes("passkey");if(t&&!r.includes("passkey")){let s=document.createElement("div");s.className="compat-warning",s.textContent=w("passkeyUnsupported",e),o.appendChild(s)}let n=r.includes("passkey");n&&this.renderPasskeySection(o,e);let a=r.filter(s=>s!=="passkey");if(n&&a.length>0&&this.renderDivider(o,e),a.length>0&&this.renderSecondaryGrid(o,e,r),r.length===0&&!t){let s=document.createElement("p");s.className="subtitle",s.textContent="No authentication methods available.",o.appendChild(s)}this.renderTrustFooter(o,e)}renderQRView(o,e){this.renderBackButton(o,e);let r=document.createElement("h2");r.className="view-title",r.textContent=w("scanTitle",e),o.appendChild(r);let t=document.createElement("div");t.id="did-connect-qr",t.className="qr-view",t.innerHTML='<div class="qr-placeholder"><span class="qr-spinner"></span></div>',o.appendChild(t);let n=document.createElement("button");n.className="btn btn-secondary deep-link-btn",n.id="did-wallet-open-btn",n.textContent=w("openInWallet",e),n.disabled=!0,o.appendChild(n);let a=document.createElement("div");a.id="did-connect-status",a.className="status",o.appendChild(a),this.renderTrustFooter(o,e),this.startDIDConnectInView(a,t,n,e)}renderEmailView(o,e){this.renderBackButton(o,e);let r=document.createElement("h2");r.className="view-title",r.textContent=w("emailTitle",e),o.appendChild(r);let t=document.createElement("input");t.className="input",t.type="email",t.placeholder=w("emailPlaceholder",e),o.appendChild(t);let n=document.createElement("button");n.className="btn",n.textContent=w("emailSubmit",e),o.appendChild(n);let a=document.createElement("div");a.className="status",o.appendChild(a);let s=document.createElement("div");s.className="email-code-section",s.style.display="none";let i=document.createElement("input");i.className="input",i.type="text",i.inputMode="numeric",i.maxLength=8,i.autocomplete="one-time-code",i.placeholder=w("emailCodePlaceholder",e),s.appendChild(i);let d=document.createElement("button");d.className="btn",d.textContent=w("emailVerify",e),s.appendChild(d);let p=document.createElement("button");p.className="btn btn-secondary",p.textContent=w("emailResend",e),p.style.marginTop="8px",s.appendChild(p),o.insertBefore(s,a),this.renderTrustFooter(o,e);let y="",h,c=this.config.servicePrefix??"/.well-known/service",b=async()=>{if(n.disabled)return;let k=t.value.trim();if(!k?.includes("@")){a.textContent=w("emailInvalid",e),a.className="status error";return}n.disabled=!0,a.textContent=w("emailSending",e),a.className="status";try{let D=await this.http.post(`${c}/api/email/sendCode`,{email:k,locale:e});y=k,h=D?.id,t.style.display="none",n.style.display="none",s.style.display="",r.textContent=w("emailVerify",e),a.textContent=w("emailSent",e,{email:k}),a.className="status",i.focus()}catch(D){let x=D instanceof Error?D.message:"Failed to send email";a.textContent=x,a.className="status error",n.disabled=!1}},A=async()=>{if(d.disabled)return;let k=i.value.trim();if(!k||k.length!==8){a.textContent=w("emailCodeInvalid",e),a.className="status error";return}d.disabled=!0,a.textContent=w("verifying",e),a.className="status";try{await this.http.post(`${c}/api/email/login`,{code:k,id:h}),a.textContent=w("success",e),a.className="status",this.handleSuccess()}catch(D){D instanceof Error&&"code"in D&&D.code==="FORBIDDEN"?this.showFullError(G(D,e)):(a.textContent=G(D,e),a.className="status error",d.disabled=!1,i.value="",i.focus())}};n.addEventListener("click",b),t.addEventListener("keydown",k=>{k.key==="Enter"&&b()}),d.addEventListener("click",A),i.addEventListener("keydown",k=>{k.key==="Enter"&&A()}),p.addEventListener("click",async()=>{p.disabled=!0,a.textContent=w("emailSending",e),a.className="status";try{h=(await this.http.post(`${c}/api/email/sendCode`,{email:y,locale:e}))?.id,a.textContent=w("emailSent",e,{email:y}),a.className="status"}catch(k){let D=k instanceof Error?k.message:"Failed to resend";a.textContent=D,a.className="status error"}p.disabled=!1})}renderBackButton(o,e){let r=document.createElement("button");r.className="back-btn",r.innerHTML=`${Ce} ${W(w("back",e))}`,r.addEventListener("click",()=>this.switchView("methods")),o.appendChild(r)}renderHomeLink(o,e){let{homeUrl:r,onCancel:t}=this.options;if(!t&&!r)return;let n=`${Ce} ${W(w("cancel",e))}`;if(t){let a=document.createElement("button");a.type="button",a.className="home-link",a.innerHTML=n,a.addEventListener("click",()=>this.options.onCancel?.()),o.appendChild(a)}else{let a=document.createElement("a");a.className="home-link",a.href=r,a.innerHTML=n,o.appendChild(a)}}renderBrandHeader(o,e){let r=document.createElement("div");if(r.className="brand-header",this.options.appLogo){let n=document.createElement("img");n.className="app-logo",n.src=W(this.options.appLogo),n.alt=this.options.appName?W(this.options.appName):"",n.width=48,n.height=48,r.appendChild(n)}let t=document.createElement("h1");if(this.options.appName?t.textContent=w("signInTo",e,{appName:this.options.appName}):t.textContent=w("signIn",e),r.appendChild(t),this.options.masterAppName){let n=document.createElement("p");n.className="federated-hint",n.textContent=w("federatedBy",e,{masterName:this.options.masterAppName}),r.appendChild(n)}o.appendChild(r)}renderTrustFooter(o,e){let r=document.createElement("div");r.className="login-footer";let t=document.createElement("div");t.className="secured-badge",t.innerHTML=`${We} ${W(w("securedBy",e))}`,r.appendChild(t);let{privacyUrl:n,termsUrl:a}=this.options;if(n||a){let s=document.createElement("div");if(s.className="footer-links",n){let i=document.createElement("a");i.href=n,i.target="_blank",i.rel="noopener noreferrer",i.textContent=w("privacy",e),s.appendChild(i)}if(n&&a&&s.appendChild(document.createTextNode(" \xB7 ")),a){let i=document.createElement("a");i.href=a,i.target="_blank",i.rel="noopener noreferrer",i.textContent=w("terms",e),s.appendChild(i)}r.appendChild(s)}o.appendChild(r)}renderDivider(o,e){let r=document.createElement("div");r.className="divider",r.textContent=w("or",e),o.appendChild(r)}renderPasskeySection(o,e){let r=document.createElement("div");r.className="passkey-section",o.appendChild(r);let t=document.createElement("div");t.className="status",t.id="passkey-status",o.appendChild(t);let n=(c,b)=>{t.textContent=c,t.className=`status${b?" error":""}`},a=()=>n("",!1),s={waiting:w("passkeyWaiting",e),creating:w("passkeyCreating",e),verifying:w("verifying",e)},i=c=>c.success?(n(w("success",e),!1),this.handleSuccess(),!0):c.code==="FORBIDDEN"||c.error==="registration_closed"?(this.showFullError(G({message:c.error,code:c.code||c.error},e)),!0):!1,d=()=>{r.innerHTML="",n(w("passkeyNoLocal",e),!1);let c=document.createElement("button");c.className="btn",c.id="passkey-btn",c.innerHTML=`${le} ${W(w("passkeyUseAnotherDevice",e))}`,r.appendChild(c),c.addEventListener("click",()=>y());let b=document.createElement("button");b.type="button",b.className="passkey-alt",b.textContent=w("passkeyCreateInstead",e),r.appendChild(b),b.addEventListener("click",()=>p())},p=()=>{r.innerHTML="",a();let c=document.createElement("div");c.className="name-row visible",c.id="passkey-name-row";let b=document.createElement("input");b.className="input",b.id="passkey-name-input",b.type="text",b.placeholder=w("namePlaceholder",e),b.autocomplete="name",c.appendChild(b),r.appendChild(c);let A=document.createElement("button");A.className="btn",A.id="passkey-btn",A.innerHTML=`${le} ${W(w("passkeyCreate",e))}`,r.appendChild(A);let k=document.createElement("button");k.type="button",k.className="passkey-alt",k.textContent=w("passkeyBackToSignIn",e),r.appendChild(k);let D=async()=>{if(A.disabled)return;A.disabled=!0;let x=await se({registerOnly:!0,name:b.value.trim(),onStatus:n,texts:s,locale:e,prefix:this.options.passkeyPrefix,invitationId:this.options.invitationId});i(x)||(x.error&&n(x.error,!0),A.disabled=!1)};A.addEventListener("click",D),b.addEventListener("keydown",x=>{x.key==="Enter"&&D()}),k.addEventListener("click",()=>h()),b.focus()},y=async()=>{let c=r.querySelector("#passkey-btn");c&&(c.disabled=!0);let b=await se({authOnly:!0,onStatus:n,texts:s,locale:e,prefix:this.options.passkeyPrefix,invitationId:this.options.invitationId});if(!i(b)){if(b.error&&b.error!=="no_passkey"){n(b.error,!0),c&&(c.disabled=!1);return}d()}},h=()=>{r.innerHTML="",a();let c=document.createElement("button");c.className="btn",c.id="passkey-btn",c.innerHTML=`${le} ${W(w("passkeySignIn",e))}`,r.appendChild(c),c.addEventListener("click",()=>y());let b=document.createElement("button");b.type="button",b.className="passkey-alt",b.textContent=w("passkeyFirstTime",e),r.appendChild(b),b.addEventListener("click",()=>p())};this.options.invitationId?p():h()}startOAuthPopup(o,e){let r=this.config.servicePrefix??"/.well-known/service",t=this.options.masterOAuthOrigin?`${this.options.masterOAuthOrigin}${r}`:r,n=new URL(t,window.location.href).origin,a=`${t}/api/oauth/${encodeURIComponent(o)}/login?returnUrl=${encodeURIComponent(window.location.href)}`,s=500,i=620,d=window.screenX+(window.innerWidth-s)/2,p=window.screenY+(window.innerHeight-i)/2,y=window.open(a,"oauth-login:popup",`left=${d},top=${p},width=${s},height=${i},resizable,scrollbars=yes,status=1,popup`);if(!y){window.location.href=a;return}let h=e.innerHTML;e.innerHTML='<span class="oauth-spinner"></span> Authorizing...',e.disabled=!0,e.classList.add("oauth-btn-loading");let c=()=>{e.innerHTML=h,e.disabled=!1,e.classList.remove("oauth-btn-loading")},b=!1,A,k=()=>{b||(b=!0,I(),e.innerHTML='<span class="oauth-check">\u2713</span> Success',this.handleSuccess())},D=async S=>{if(S.origin!==n||!S.data||S.data.type!=="authorization_response"||b)return;x!==void 0&&(clearInterval(x),x=void 0);try{y.close()}catch{}if(S.data.error){c(),I();return}let{code:L,state:z}=S.data.response??S.data;if(!L){c(),I();return}e.innerHTML='<span class="oauth-spinner"></span> Signing in...',e.disabled=!0;try{let l={provider:o,code:L,state:z};this.options.invitationId&&(l.invitationId=this.options.invitationId),await this.http.post(`${r}/api/oauth/login`,l),k()}catch(l){let m=l instanceof Error?l.message:"",u=l instanceof Error&&"code"in l?l.code:"";u==="FORBIDDEN"||m==="registration_closed"||u==="registration_closed"?(b=!0,I(),this.showFullError(G(l,this.options.locale))):c()}},x=setInterval(()=>{let S=!1;try{S=y.closed}catch{return}if(!S)return;x!==void 0&&(clearInterval(x),x=void 0),c();let L=()=>{this.http.get(`${r}/api/did/session`).then(z=>{z?.authenticated&&k()}).catch(()=>{})};L(),A=setInterval(L,500)},500),T=setTimeout(()=>{b||(I(),c())},300*1e3),I=()=>{x!==void 0&&(clearInterval(x),x=void 0),A!==void 0&&(clearInterval(A),A=void 0),clearTimeout(T),window.removeEventListener("message",D)};window.addEventListener("message",D)}renderSecondaryGrid(o,e,r){let t=document.createElement("div");if(t.className="methods-grid",r.includes("oauth")&&this.options.oauthProviders?.length){let n=(this.options.oauthProviders??[]).filter(a=>a.enabled);for(let a of n){let s=document.createElement("button");s.className="method-btn",s.dataset.provider=a.id;let i=ze(a.id);s.innerHTML=`${i} ${W(a.name)}`,t.appendChild(s),s.addEventListener("click",()=>{this.startOAuthPopup(a.id,s)})}}if(r.includes("email")){let n=document.createElement("button");n.className="method-btn",n.id="email-btn",n.innerHTML=`${He} ${W(w("emailButton",e))}`,t.appendChild(n),n.addEventListener("click",()=>{this.switchView("email")})}if(r.includes("did-connect")){let n=document.createElement("button");n.className="method-btn",n.id="did-wallet-btn";let a=t.children.length>0?w("didWalletButtonShort",e):w("didWalletButton",e);n.innerHTML=`${xe} ${W(a)}`,t.appendChild(n),n.addEventListener("click",()=>{this.switchView("qr")})}o.appendChild(t)}async startDIDConnectInView(o,e,r,t){o.textContent=w("connecting",t);try{this.tokenSession?.destroy(),this.tokenSession=new ee(this.config,this.http),this.tokenSession.on("succeed",async()=>{this.showConnectResult(e,r,o,w("verifying",t));try{let a=this.config.servicePrefix??"/.well-known/service";await this.http.post(`${a}/api/did/connect/complete`,{token:this.tokenSession.state.token}),this.showConnectSuccess(e,r,o,t),this.handleSuccess()}catch(a){this.showConnectResult(e,r,o,G(a,t),!0)}}),this.tokenSession.on("timeout",()=>{o.textContent=w("timeout",t);let a=document.createElement("div");a.className="qr-timeout-overlay",a.innerHTML=`<span class="timeout-text">${W(w("timeout",t))}</span>`;let s=document.createElement("button");s.className="refresh-btn",s.textContent=w("refreshQR",t),s.addEventListener("click",()=>{a.remove(),de(e),e.innerHTML='<div class="qr-placeholder"><span class="qr-spinner"></span></div>',r.disabled=!0,this.startDIDConnectInView(o,e,r,t)}),a.appendChild(s),e.appendChild(a)}),this.tokenSession.on("error",a=>{this.showConnectResult(e,r,o,G(a,t),!0)}),this.tokenSession.on("statusChange",a=>{a.status==="scanned"&&this.showConnectScanned(e,r,o,t)});let n=await this.tokenSession.create({locale:t});n.url&&(et(e,n.url),r.disabled=!1,r.addEventListener("click",()=>{this.showConnectScanned(e,r,o,t),this.openInWallet(n.url,t)})),o.textContent=w("scanWithWallet",t),this.tokenSession.startPolling()}catch(n){o.textContent=G(n,t),de(e)}}showFullError(o){if(!this.cardEl)return;let e=this.options.locale;this.tokenSession&&(this.tokenSession.destroy(),this.tokenSession=null),this.cardEl.innerHTML="",this.cardEl.dataset.view="error",this.renderLocaleSwitcher(this.cardEl);let r=document.createElement("div");r.className="connect-result",r.innerHTML='<div class="result-icon result-error">\u2715</div>',this.cardEl.appendChild(r);let t=document.createElement("div");t.className="status error",t.textContent=o,this.cardEl.appendChild(t);let n=document.createElement("button");n.className="btn btn-secondary result-back-btn",n.textContent=w("back",e),n.addEventListener("click",()=>this.switchView("methods")),this.cardEl.appendChild(n),this.renderTrustFooter(this.cardEl,e)}showConnectScanned(o,e,r,t="en"){o.style.display="none",e.style.display="none";let n=o.parentElement?.querySelector(".connect-result");n||(n=document.createElement("div"),n.className="connect-result",o.parentElement?.insertBefore(n,r)),n.innerHTML=`<div class="connect-status-icon">
727
748
  <div class="connect-spinner-ring"></div>
728
749
  <span class="connect-status-badge">${xe}</span>
729
750
  </div>`,r.textContent=w("waitingWallet",t),r.className="status";let a=r.parentElement?.querySelector(".connect-subtitle");a||(a=document.createElement("p"),a.className="connect-subtitle",r.parentElement?.insertBefore(a,r.nextSibling)),a.textContent=w("walletContinue",t);let s=r.parentElement?.querySelector(".result-back-btn");s||(s=document.createElement("button"),s.className="btn btn-secondary result-back-btn",s.textContent=w("back",t),s.addEventListener("click",()=>this.switchView("methods")),a.parentElement?.insertBefore(s,a.nextSibling))}showConnectSuccess(o,e,r,t="en"){o.style.display="none",e.style.display="none";let n=o.parentElement?.querySelector(".connect-result");n||(n=document.createElement("div"),n.className="connect-result",o.parentElement?.insertBefore(n,r)),n.innerHTML=`<div class="connect-status-icon connect-success">
730
751
  <svg viewBox="0 0 64 64" width="64" height="64"><circle cx="32" cy="32" r="28" fill="none" stroke="#49dc6e" stroke-width="3"/><polyline points="20 33 28 41 44 25" fill="none" stroke="#49dc6e" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/></svg>
731
- </div>`,r.textContent=w("success",t),r.className="status success";let a=r.parentElement?.querySelector(".connect-subtitle"),s=r.parentElement?.querySelector(".result-back-btn");a?.remove(),s?.remove()}showConnectResult(o,e,r,t,n=!1){let a=this.options.locale;o.style.display="none",e.style.display="none";let s=o.parentElement?.querySelector(".connect-result");if(s||(s=document.createElement("div"),s.className="connect-result",o.parentElement?.insertBefore(s,r)),n){s.innerHTML='<div class="result-icon result-error">\u2715</div>',r.textContent=t,r.className="status error";let i=r.parentElement?.querySelector(".result-back-btn");i||(i=document.createElement("button"),i.className="btn btn-secondary result-back-btn",i.textContent=w("back",a),i.addEventListener("click",()=>this.switchView("methods")),r.parentElement?.insertBefore(i,r.nextSibling))}else s.innerHTML='<div class="result-icon result-loading"><span class="qr-spinner"></span></div>',r.textContent=t,r.className="status"}openInWallet(o,e="en"){let r=st(),t=it();if(r){let n=o.replace(/^https?:\/\//,"abt://");window.location.href=n}else if(t&&typeof t.open=="function"){let n=this.tokenSession?.state;t.open({action:this.config.action??"login",locale:e,url:encodeURIComponent(o),appInfo:n?.appInfo??{},memberAppInfo:n?.memberAppInfo??{}})}else{let n=`${ot}?action=requestAuth&url=${encodeURIComponent(o)}`,a=414,s=736,i=window.screenX+window.innerWidth-a,d=window.screenY;window.open(n,"did-wallet:popup",`left=${i},top=${d},width=${a},height=${s},resizable,scrollbars=yes,status=1,popup`)}}handleSuccess(){this.options.onSuccess?this.options.onSuccess():setTimeout(()=>location.reload(),300)}};return Fe(at);})();
752
+ </div>`,r.textContent=w("success",t),r.className="status success";let a=r.parentElement?.querySelector(".connect-subtitle"),s=r.parentElement?.querySelector(".result-back-btn");a?.remove(),s?.remove()}showConnectResult(o,e,r,t,n=!1){let a=this.options.locale;o.style.display="none",e.style.display="none";let s=o.parentElement?.querySelector(".connect-result");if(s||(s=document.createElement("div"),s.className="connect-result",o.parentElement?.insertBefore(s,r)),n){s.innerHTML='<div class="result-icon result-error">\u2715</div>',r.textContent=t,r.className="status error";let i=r.parentElement?.querySelector(".result-back-btn");i||(i=document.createElement("button"),i.className="btn btn-secondary result-back-btn",i.textContent=w("back",a),i.addEventListener("click",()=>this.switchView("methods")),r.parentElement?.insertBefore(i,r.nextSibling))}else s.innerHTML='<div class="result-icon result-loading"><span class="qr-spinner"></span></div>',r.textContent=t,r.className="status"}openInWallet(o,e="en"){let r=st(),t=it();if(r){let n=o.replace(/^https?:\/\//,"abt://");window.location.href=n}else if(t&&typeof t.open=="function"){let n=this.tokenSession?.state;t.open({action:this.config.action??"login",locale:e,url:encodeURIComponent(o),appInfo:n?.appInfo??{},memberAppInfo:n?.memberAppInfo??{}})}else{let n=`${ot}?action=requestAuth&url=${encodeURIComponent(o)}`,a=414,s=736,i=window.screenX+window.innerWidth-a,d=window.screenY;window.open(n,"did-wallet:popup",`left=${i},top=${d},width=${a},height=${s},resizable,scrollbars=yes,status=1,popup`)}}handleSuccess(){this.options.onSuccess?this.options.onSuccess():setTimeout(()=>location.reload(),300)}};return Ne(at);})();
@@ -659,11 +659,32 @@ h1 {
659
659
  border-color: var(--border-strong);
660
660
  }
661
661
  .locale-btn svg { width: 14px; height: 14px; flex-shrink: 0; }
662
+ .locale-trigger {
663
+ display: inline-flex;
664
+ align-items: center;
665
+ gap: 4px;
666
+ padding: 4px 10px;
667
+ font-size: 12px;
668
+ color: var(--text-secondary);
669
+ background: var(--bg-elevated);
670
+ border: 1px solid var(--border-subtle);
671
+ border-radius: var(--radius-full);
672
+ cursor: pointer;
673
+ }
674
+ .locale-trigger:hover {
675
+ color: var(--text);
676
+ border-color: var(--border-strong);
677
+ }
678
+ .locale-trigger svg { width: 14px; height: 14px; flex-shrink: 0; }
662
679
  .locale-menu {
663
- display: flex;
680
+ display: none;
664
681
  flex-direction: column;
665
682
  align-items: stretch;
666
683
  gap: 4px;
684
+ margin-top: 4px;
685
+ }
686
+ .locale-switcher.open .locale-menu {
687
+ display: flex;
667
688
  }
668
689
  .locale-btn[aria-checked="true"] {
669
690
  color: var(--text);
@@ -30,6 +30,12 @@ export interface MemberWithUserInfoDTO extends StoredMembershipDTO {
30
30
  avatar?: string;
31
31
  approved: number;
32
32
  }
33
+ /** Mention search hit. No email, phone, or credential fields. */
34
+ export interface PublicMemberDTO {
35
+ did: string;
36
+ fullName: string | null;
37
+ avatar: string | null;
38
+ }
33
39
  export interface StoredUserDTO {
34
40
  did: string;
35
41
  pk: string;
@@ -124,6 +130,12 @@ export interface BlockletServiceRPCInterface {
124
130
  /** Membership count without materialising the list — for `stat`-shaped callers. */
125
131
  countMemberships(instanceDid: string): Promise<number>;
126
132
  listMembershipsWithUserInfo(instanceDid: string): Promise<MemberWithUserInfoDTO[]>;
133
+ /**
134
+ * Approved members of one instance whose fullName contains `query` or whose
135
+ * DID starts with it. Blank query returns []. `limit` is capped at 10.
136
+ * Authorization is the caller's job; this never returns email or other secrets.
137
+ */
138
+ searchMembersPublic(instanceDid: string, query: string, limit: number): Promise<PublicMemberDTO[]>;
127
139
  createMembership(userDid: string, instanceDid: string, role: string, invitedBy?: string): Promise<void>;
128
140
  updateMembershipRole(userDid: string, instanceDid: string, role: string): Promise<void>;
129
141
  deleteMembership(userDid: string, instanceDid: string): Promise<void>;