{"version":3,"file":"framerauth-sdk@beta.BUluBatH.mjs","names":["r"],"sources":["https:/cdn.framerauth.com/scripts/framerauth-sdk@beta.js"],"sourcesContent":["var R = Object.defineProperty;\nvar _ = (t, r, e) => r in t ? R(t, r, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[r] = e;\nvar i = (t, r, e) => (_(t, typeof r != \"symbol\" ? r + \"\" : r, e), e);\nclass U {\n  constructor(r) {\n    i(this, \"prefix\");\n    this.prefix = r;\n  }\n  has(r) {\n    const e = this.prefix + r;\n    return localStorage.getItem(e) != null;\n  }\n  get(r) {\n    const e = this.prefix + r;\n    return localStorage.getItem(e);\n  }\n  set(r, e) {\n    const s = this.prefix + r;\n    localStorage.setItem(s, e);\n  }\n  remove(r) {\n    const e = this.prefix + r;\n    localStorage.removeItem(e);\n  }\n}\nclass m extends Error {\n  constructor(e, s) {\n    super(e);\n    i(this, \"status\");\n    i(this, \"__isAuthError\", !0);\n    this.name = \"AuthError\", this.status = s;\n  }\n}\nfunction h(t) {\n  return typeof t == \"object\" && t !== null && \"__isAuthError\" in t;\n}\nclass T extends m {\n  constructor(e, s) {\n    super(e, s);\n    i(this, \"status\");\n    this.name = \"AuthApiError\", this.status = s;\n  }\n  toJSON() {\n    return {\n      name: this.name,\n      message: this.message,\n      status: this.status\n    };\n  }\n}\nclass O extends m {\n  constructor(e, s) {\n    super(e);\n    i(this, \"originalError\");\n    this.name = \"AuthUnknownError\", this.originalError = s;\n  }\n}\nclass f extends m {\n  constructor(e, s, n) {\n    super(e);\n    i(this, \"name\");\n    i(this, \"status\");\n    this.name = s, this.status = n;\n  }\n  toJSON() {\n    return {\n      name: this.name,\n      message: this.message,\n      status: this.status\n    };\n  }\n}\nclass x extends f {\n  constructor() {\n    super(\"Auth session or user missing\", \"AuthInvalidTokenResponseError\", 500);\n  }\n}\nclass p extends f {\n  constructor() {\n    super(\"Message missing\", \"AuthInvalidResetPasswordResponseError\", 500);\n  }\n}\nclass l extends f {\n  constructor(r) {\n    super(r, \"AuthInvalidCredentialsError\", 400);\n  }\n}\nclass I extends f {\n  constructor() {\n    super(\"Site missing\", \"AuthInvalidSiteResponseError\", 500);\n  }\n}\nclass J extends f {\n  constructor() {\n    super(\"User missing\", \"AuthInvalidUserResponseError\", 500);\n  }\n}\nclass N extends f {\n  constructor() {\n    super(\"License key status missing\", \"AuthInvalidValidateLicenseKeyResponseError\", 500);\n  }\n}\nclass P extends f {\n  constructor() {\n    super(\"License key invalid\", \"AuthInvalidActivateLicenseKeyResponseError\", 500);\n  }\n}\nclass j extends f {\n  constructor() {\n    super(\"User invalid\", \"AuthUpdateUserResponseError\", 500);\n  }\n}\nclass b extends f {\n  constructor() {\n    super(\"Data invalid\", \"AuthUpdateUserDataResponseError\", 500);\n  }\n}\nclass v extends f {\n  constructor(r, e) {\n    super(r, \"AuthRetryableFetchError\", e);\n  }\n}\nconst w = (t) => t.msg || t.message || t.error_description || t.error || JSON.stringify(t), $ = [502, 503, 504];\nasync function A(t) {\n  if (!G(t))\n    throw new v(w(t), 0);\n  if ($.includes(t.status))\n    throw new v(w(t), t.status);\n  let r;\n  try {\n    r = await t.json();\n  } catch (e) {\n    throw new O(w(e), e);\n  }\n  throw new T(w(r), t.status || 500);\n}\nconst K = (t, r, e, s) => {\n  const n = { method: t, headers: (r == null ? void 0 : r.headers) || {} };\n  return t === \"GET\" ? n : (n.headers = { \"Content-Type\": \"application/json;charset=UTF-8\", ...r == null ? void 0 : r.headers }, n.body = JSON.stringify(s), { ...n, ...e });\n};\nasync function d(t, r, e, s) {\n  var c;\n  const n = { ...s == null ? void 0 : s.headers };\n  s != null && s.jwt && (n.Authorization = `Bearer ${s.jwt}`);\n  const a = (c = s == null ? void 0 : s.query) != null ? c : {};\n  s != null && s.redirectTo && (a.redirect_to = s.redirectTo);\n  const o = Object.keys(a).length ? \"?\" + new URLSearchParams(a).toString() : \"\", u = await Y(\n    t,\n    r,\n    e + o,\n    { headers: n, noResolveJson: s == null ? void 0 : s.noResolveJson },\n    {},\n    s == null ? void 0 : s.body\n  );\n  return s != null && s.xform ? s == null ? void 0 : s.xform(u) : { data: { ...u }, error: null };\n}\nasync function Y(t, r, e, s, n, a) {\n  const o = K(r, s, n, a);\n  let u;\n  try {\n    u = await t(e, o);\n  } catch (c) {\n    throw console.error(c), new v(w(c), 0);\n  }\n  if (u.ok || await A(u), s != null && s.noResolveJson)\n    return u;\n  try {\n    return await u.json();\n  } catch (c) {\n    await A(c);\n  }\n}\nfunction E(t) {\n  var s;\n  let r = null;\n  M(t == null ? void 0 : t.session) && (r = { ...t.session });\n  const e = (s = t.user) != null ? s : t;\n  return { data: { session: r, user: e }, error: null };\n}\nfunction L(t) {\n  var e;\n  return { data: { message: (e = t.message) != null ? e : t }, error: null };\n}\nfunction q(t) {\n  var e;\n  return { data: { message: (e = t.message) != null ? e : t }, error: null };\n}\nfunction z(t) {\n  var e;\n  return { data: { site: (e = t.site) != null ? e : t }, error: null };\n}\nfunction k(t) {\n  var e;\n  return { data: { user: (e = t.user) != null ? e : t }, error: null };\n}\nfunction C(t) {\n  var e;\n  return { data: { valid: (e = t.valid) != null ? e : t }, error: null };\n}\nfunction D(t) {\n  var e;\n  return { data: { message: (e = t.message) != null ? e : t }, error: null };\n}\nfunction F(t) {\n  return { data: t != null ? t : t, error: null };\n}\nfunction M(t) {\n  return (t == null ? void 0 : t.access_token) && (t == null ? void 0 : t.expires_in);\n}\nconst G = (t) => typeof t == \"object\" && t !== null && \"status\" in t && \"ok\" in t && \"json\" in t && typeof t.json == \"function\";\nclass H {\n  constructor(r) {\n    i(this, \"store\");\n    i(this, \"url\");\n    i(this, \"headers\");\n    i(this, \"setSite\", (r) => {\n      this.store.set(\"site\", r);\n    });\n    i(this, \"setUser\", (r) => {\n      this.store.set(\"user\", r);\n    });\n    i(this, \"setSession\", (r) => {\n      this.store.set(\"session\", r);\n    });\n    // TODO: This should be async for when we support refresh tokens.\n    i(this, \"getAccessToken\", () => {\n      if (!this.store.has(\"session\"))\n        return null;\n      const e = this.store.get(\"session\");\n      if (!e)\n        return null;\n      let s;\n      try {\n        s = JSON.parse(e);\n      } catch (a) {\n        return null;\n      }\n      const n = Math.floor(Date.now() / 1e3);\n      return s.expires_at && n > s.expires_at ? (this.store.remove(\"session\"), this.store.remove(\"user\"), null) : s.access_token;\n    });\n    i(this, \"getExpiresIn\", () => {\n      var e;\n      if (this.store.has(\"session\")) {\n        const s = this.store.get(\"session\");\n        if (s)\n          return (e = JSON.parse(s)) == null ? void 0 : e.expires_in;\n      }\n    });\n    i(this, \"getSite\", async (r = { cache: !0 }) => {\n      var n, a;\n      let e;\n      const s = this.store.get(\"site\");\n      return s && (r != null && r.cache) ? e = { data: { site: JSON.parse(s) }, error: null } : e = await this.fetchSite(), e.error && (e.error.status === 400 ? console.log(\n        `%cFramerAuth: Site not configured!\n\n%cPlease add your SITE_ID to the configuration script.\n%cError: ${((n = e.error) == null ? void 0 : n.message) || \"Unknown error\"}`,\n        \"color: orange; font-size: 16px;\",\n        \"color: inherit; font-size: 12px;\",\n        \"color: inherit; font-size: 12px;\"\n      ) : console.log(\n        `%cFramerAuth: Unable to load site data!\n\n%cNavigating to Homepage.\n%cError: ${((a = e.error) == null ? void 0 : a.message) || \"Site data not found\"}`,\n        \"color: red; font-size: 16px;\",\n        \"color: inherit; font-size: 12px;\",\n        \"color: inherit; font-size: 12px;\"\n      )), e;\n    });\n    i(this, \"getUser\", async (r = { cache: !0 }) => {\n      let e;\n      const s = Math.floor(Date.now() / 1e3), n = this.store.get(\"session\") || \"\";\n      if (!n)\n        e = { data: { user: null }, error: new m(\"Authorization token required.\", 401) };\n      else {\n        const a = JSON.parse(n), o = this.store.get(\"user\");\n        a.expires_at && s > a.expires_at ? (e = { data: { user: null }, error: new m(\"Token has expired.\", 401) }, this.store.remove(\"session\"), this.store.remove(\"user\")) : o && (r != null && r.cache) ? e = { data: { user: JSON.parse(o) }, error: null } : e = await this.fetchUser();\n      }\n      return e;\n    });\n    i(this, \"validateLicenseKey\", async (r) => {\n      try {\n        let e;\n        if (!r.license_key)\n          throw new l(\n            \"You must provide a license_key\"\n          );\n        const { license_key: s } = r;\n        e = await d(fetch, \"POST\", `${this.url}/validate`, {\n          headers: this.headers,\n          body: {\n            license_key: s\n          },\n          xform: C\n        });\n        const { data: n, error: a } = e;\n        return a ? { data: { valid: null }, error: a } : !n || n.valid === null ? { data: { valid: null }, error: new N() } : { data: { valid: n.valid }, error: null };\n      } catch (e) {\n        if (h(e))\n          return { data: { valid: null }, error: e };\n        throw e;\n      }\n    });\n    i(this, \"activateLicenseKey\", async (r) => {\n      try {\n        let e;\n        const s = this.getAccessToken();\n        if (!s)\n          throw new l(\n            \"You must provide a token\"\n          );\n        if (!r.license_key)\n          throw new l(\n            \"You must provide a license_key\"\n          );\n        const { license_key: n } = r;\n        e = await d(fetch, \"POST\", `${this.url}/me/license-keys/activate`, {\n          headers: this.headers,\n          body: {\n            license_key: n\n          },\n          xform: D,\n          jwt: s\n        });\n        const { data: a, error: o } = e;\n        return o ? { data: { message: null }, error: o } : !a || a.message === null ? { data: { message: null }, error: new P() } : (await this.getUser({ cache: !1 }), { data: { message: a.message }, error: null });\n      } catch (e) {\n        if (h(e))\n          return { data: { message: null }, error: e };\n        throw e;\n      }\n    });\n    i(this, \"signUp\", async (r) => {\n      var e;\n      try {\n        let s;\n        if (!r.email)\n          throw new l(\n            \"You must provide an email\"\n          );\n        if (!r.password)\n          throw new l(\n            \"You must provide a password\"\n          );\n        const { email: n, password: a, options: o } = r;\n        s = await d(fetch, \"POST\", `${this.url}/sign-up`, {\n          headers: this.headers,\n          redirectTo: o == null ? void 0 : o.emailRedirectTo,\n          body: {\n            email: n,\n            password: a,\n            data: (e = o == null ? void 0 : o.data) != null ? e : {}\n          },\n          xform: E\n        });\n        const { data: u, error: c } = s;\n        if (c)\n          return { data: { user: null, session: null }, error: c };\n        if (!u)\n          return { data: { user: null, session: null }, error: new x() };\n        const g = u.session, S = u.user;\n        return g && (this.setUser(JSON.stringify(S)), this.setSession(JSON.stringify(g))), { data: { user: S, session: g }, error: null };\n      } catch (s) {\n        if (h(s))\n          return { data: { user: null, session: null }, error: s };\n        throw s;\n      }\n    });\n    i(this, \"signInWithPassword\", async (r) => {\n      try {\n        if (!r.email)\n          throw new l(\n            \"You must provide an email\"\n          );\n        if (!r.password)\n          throw new l(\n            \"You must provide a password\"\n          );\n        let e;\n        const { email: s, password: n } = r;\n        e = await d(fetch, \"POST\", `${this.url}/token`, {\n          headers: this.headers,\n          body: {\n            email: s,\n            password: n\n          },\n          xform: E\n        });\n        const { data: a, error: o } = e;\n        return o ? { data: { user: null, session: null }, error: o } : !a || !a.session || !a.user ? { data: { user: null, session: null }, error: new x() } : (a.session && (this.setUser(JSON.stringify(a.user)), this.setSession(JSON.stringify(a.session))), { data: { user: a.user, session: a.session }, error: o });\n      } catch (e) {\n        if (h(e))\n          return { data: { user: null, session: null }, error: e };\n        throw e;\n      }\n    });\n    i(this, \"resetPasswordForEmail\", async (r) => {\n      try {\n        if (!r.email)\n          throw new l(\n            \"You must provide an email\"\n          );\n        let e;\n        const { email: s } = r;\n        e = await d(fetch, \"POST\", `${this.url}/password/reset`, {\n          headers: this.headers,\n          body: {\n            email: s\n          },\n          xform: L\n        });\n        const { data: n, error: a } = e;\n        return a ? { data: { message: null }, error: a } : !n || !n.message ? { data: { message: null }, error: new p() } : { data: { message: n.message }, error: a };\n      } catch (e) {\n        if (h(e))\n          return { data: { message: null }, error: e };\n        throw e;\n      }\n    });\n    i(this, \"updatePasswordForEmail\", async (r) => {\n      try {\n        if (!r.email)\n          throw new l(\n            \"You must provide an email\"\n          );\n        if (!r.code)\n          throw new l(\n            \"Reset token required\"\n          );\n        if (!r.email)\n          throw new l(\n            \"You must provide a new password\"\n          );\n        let e;\n        const { email: s, code: n, password: a } = r;\n        e = await d(fetch, \"POST\", `${this.url}/password/update`, {\n          headers: this.headers,\n          body: {\n            email: s,\n            code: n,\n            password: a\n          },\n          xform: q\n        });\n        const { data: o, error: u } = e;\n        return u ? { data: { message: null }, error: u } : !o || !o.message ? { data: { message: null }, error: new p() } : { data: { message: o.message }, error: u };\n      } catch (e) {\n        if (h(e))\n          return { data: { message: null }, error: e };\n        throw e;\n      }\n    });\n    i(this, \"signOut\", async (r = null) => (this.store.remove(\"session\"), this.store.remove(\"user\"), r && window.location.replace(r), { error: null }));\n    i(this, \"fetchSite\", async () => {\n      try {\n        let r;\n        r = await d(fetch, \"GET\", `${this.url}/site`, {\n          headers: this.headers,\n          xform: z\n        });\n        const { data: e, error: s } = r;\n        return s ? { data: { site: null }, error: s } : !e || !e.site ? { data: { site: null }, error: new I() } : (e.site && this.setSite(JSON.stringify(e.site)), { data: { site: e.site }, error: null });\n      } catch (r) {\n        if (h(r))\n          return { data: { site: null }, error: r };\n        throw r;\n      }\n    });\n    i(this, \"fetchUser\", async () => {\n      try {\n        let r;\n        const e = this.getAccessToken();\n        if (!e)\n          throw new l(\n            \"You must provide a token\"\n          );\n        r = await d(fetch, \"GET\", `${this.url}/me`, {\n          headers: this.headers,\n          xform: k,\n          jwt: e\n        });\n        const { data: s, error: n } = r;\n        return n ? { data: { user: null }, error: n } : !s || !s.user ? { data: { user: null }, error: new J() } : (s.user && this.setUser(JSON.stringify(s.user)), { data: { user: s.user }, error: null });\n      } catch (r) {\n        if (h(r))\n          return { data: { user: null }, error: r };\n        throw r;\n      }\n    });\n    i(this, \"updateUser\", async (r) => {\n      try {\n        const e = this.getAccessToken();\n        if (!e)\n          throw new l(\n            \"You must provide a token\"\n          );\n        let s;\n        s = await d(fetch, \"PUT\", `${this.url}/me`, {\n          headers: this.headers,\n          body: r || {},\n          xform: k,\n          jwt: e\n        });\n        const { data: n, error: a } = s;\n        if (a)\n          return { data: { user: null }, error: a };\n        if (!n || n.user === null)\n          return { data: { user: null }, error: new j() };\n        const { data: { user: o } } = await this.getUser({ cache: !1 });\n        return o && this.setUser(JSON.stringify(o)), { data: n, error: null };\n      } catch (e) {\n        if (h(e))\n          return { data: { user: null }, error: e };\n        throw e;\n      }\n    });\n    i(this, \"patchUserData\", async (r) => {\n      try {\n        const e = this.getAccessToken();\n        if (!e)\n          throw new l(\n            \"You must provide a token\"\n          );\n        let s;\n        s = await d(fetch, \"PATCH\", `${this.url}/me/data`, {\n          headers: this.headers,\n          body: r || {},\n          xform: F,\n          jwt: e\n        });\n        const { data: n, error: a } = s;\n        if (a)\n          return { data: null, error: a };\n        if (!n || n.valid === null)\n          return { data: null, error: new b() };\n        const { data: { user: o } } = await this.getUser({ cache: !0 });\n        return o && (o.data = n, this.setUser(JSON.stringify(o))), { data: n, error: null };\n      } catch (e) {\n        if (h(e))\n          return { data: null, error: e };\n        throw e;\n      }\n    });\n    if (this.store = new U(\"fa-\"), this.url = \"https://api.framerauth.com/v1\", r)\n      this.headers = { \"Content-Type\": \"application/json\", \"x-site-id\": r };\n    else {\n      this.headers = {}, console.error(\"Unable to initialize the Auth module, ensure you have added the framer-auth.js file to the beginning of the body.\");\n      return;\n    }\n  }\n}\nconsole.log(\"Framer Auth - Module v0.0.0\");\nconst y = new U(\"fa-\"), V = (y == null ? void 0 : y.get(\"site-id\")) || null, B = new H(V);\nexport {\n  B as auth\n};\n"],"mappings":"qIAiCA,SAAS,EAAE,EAAG,CACZ,cAAc,GAAK,YAAY,GAAc,kBAAmB,CACjE,CAwFD,eAAe,EAAE,EAAG,CAClB,IAAK,EAAE,EAAE,CACP,MAAM,IAAI,EAAE,EAAE,EAAE,CAAE,GACpB,GAAI,EAAE,SAAS,EAAE,OAAO,CACtB,MAAM,IAAI,EAAE,EAAE,EAAE,CAAE,EAAE,QACtB,IAAI,EACJ,GAAI,CACF,EAAI,KAAM,GAAE,MAAM,AACnB,OAAQ,EAAG,CACV,MAAM,IAAI,EAAE,EAAE,EAAE,CAAE,EACnB,CACD,MAAM,IAAI,EAAE,EAAE,EAAE,CAAE,EAAE,QAAU,IAC/B,CAKD,eAAe,EAAE,EAAG,EAAG,EAAG,EAAG,CAC3B,IAAI,EACJ,IAAM,EAAI,CAAE,GAAG,GAAuB,OAAS,EAC/C,GAAK,MAAQ,EAAE,MAAQ,EAAE,eAAiB,SAAS,EAAE,OACrD,IAAM,GAAK,EAAI,GAAuB,QAAqB,CAAE,EAC7D,GAAK,MAAQ,EAAE,aAAe,EAAE,YAAc,EAAE,YAChD,IAAM,EAAI,OAAO,KAAK,EAAE,CAAC,OAAS,IAAM,IAAI,gBAAgB,GAAG,UAAU,CAAG,GAAI,EAAI,KAAM,GACxF,EACA,EACA,EAAI,EACJ,CAAE,QAAS,EAAG,cAAe,GAAuB,aAAe,EACnE,CAAE,EACF,GAAuB,KACxB,CACD,OAAO,GAAK,MAAQ,EAAE,MAA6B,AAArB,GAAuB,MAAM,EAAE,CAAG,CAAE,KAAM,CAAE,GAAG,CAAG,EAAE,MAAO,IAAM,CAChG,CACD,eAAe,EAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CACjC,IAAM,EAAI,EAAE,EAAG,EAAG,EAAG,EAAE,CACnB,EACJ,GAAI,CACF,EAAI,KAAM,GAAE,EAAG,EAAE,AAClB,OAAQ,EAAG,CACV,KAAM,SAAQ,MAAM,EAAE,CAAE,IAAI,EAAE,EAAE,EAAE,CAAE,EACrC,CACD,GAAI,EAAE,IAAM,KAAM,GAAE,EAAE,CAAE,GAAK,MAAQ,EAAE,cACrC,OAAO,EACT,GAAI,CACF,OAAO,KAAM,GAAE,MAAM,AACtB,OAAQ,EAAG,CACV,KAAM,GAAE,EAAE,AACX,CACF,CACD,SAAS,EAAE,EAAG,CACZ,IAAI,EACJ,IAAI,EAAI,KACR,EAAE,GAAuB,QAAQ,GAAK,EAAI,CAAE,GAAG,EAAE,OAAS,GAC1D,IAAM,GAAK,EAAI,EAAE,OAAoB,EACrC,MAAO,CAAE,KAAM,CAAE,QAAS,EAAG,KAAM,CAAG,EAAE,MAAO,IAAM,CACtD,CACD,SAAS,EAAE,EAAG,CACZ,IAAI,EACJ,MAAO,CAAE,KAAM,CAAE,SAAU,EAAI,EAAE,UAAuB,CAAG,EAAE,MAAO,IAAM,CAC3E,CACD,SAAS,EAAE,EAAG,CACZ,IAAI,EACJ,MAAO,CAAE,KAAM,CAAE,SAAU,EAAI,EAAE,UAAuB,CAAG,EAAE,MAAO,IAAM,CAC3E,CACD,SAAS,EAAE,EAAG,CACZ,IAAI,EACJ,MAAO,CAAE,KAAM,CAAE,MAAO,EAAI,EAAE,OAAoB,CAAG,EAAE,MAAO,IAAM,CACrE,CACD,SAAS,EAAE,EAAG,CACZ,IAAI,EACJ,MAAO,CAAE,KAAM,CAAE,MAAO,EAAI,EAAE,OAAoB,CAAG,EAAE,MAAO,IAAM,CACrE,CACD,SAAS,EAAE,EAAG,CACZ,IAAI,EACJ,MAAO,CAAE,KAAM,CAAE,OAAQ,EAAI,EAAE,QAAqB,CAAG,EAAE,MAAO,IAAM,CACvE,CACD,SAAS,EAAE,EAAG,CACZ,IAAI,EACJ,MAAO,CAAE,KAAM,CAAE,SAAU,EAAI,EAAE,UAAuB,CAAG,EAAE,MAAO,IAAM,CAC3E,CACD,SAAS,EAAE,EAAG,CACZ,MAAO,CAAE,KAAM,GAAgB,EAAG,MAAO,IAAM,CAChD,CACD,SAAS,EAAE,EAAG,CACZ,OAAQ,GAAuB,cAAkB,GAAuB,UACzE,kEAyVK,IAziBF,EAAI,OAAO,eACX,EAAI,CAAC,EAAG,EAAG,IAAM,KAAK,EAAI,EAAE,EAAG,EAAG,CAAE,YAAa,EAAG,cAAe,EAAG,UAAW,EAAG,MAAO,CAAG,EAAC,CAAG,EAAE,GAAK,EACzG,EAAI,CAAC,EAAG,EAAG,KAAO,EAAE,SAAU,GAAK,SAAoB,EAAT,EAAI,GAAQ,EAAE,CAAE,GAC5D,EAAN,KAAQ,CACN,YAAY,EAAG,CAEb,AADA,EAAE,KAAM,SAAS,CACjB,KAAK,OAAS,CACf,CACD,IAAI,EAAG,CACL,IAAM,EAAI,KAAK,OAAS,EACxB,MAAO,cAAa,QAAQ,EAAE,EAAI,IACnC,CACD,IAAI,EAAG,CACL,IAAM,EAAI,KAAK,OAAS,EACxB,MAAO,cAAa,QAAQ,EAAE,AAC/B,CACD,IAAI,EAAG,EAAG,CACR,IAAM,EAAI,KAAK,OAAS,EACxB,aAAa,QAAQ,EAAG,EAAE,AAC3B,CACD,OAAO,EAAG,CACR,IAAM,EAAI,KAAK,OAAS,EACxB,aAAa,WAAW,EAAE,AAC3B,CACF,EACK,EAAN,cAAgB,KAAM,CACpB,YAAY,EAAG,EAAG,CAIhB,AAHA,MAAM,EAAE,CACR,EAAE,KAAM,SAAS,CACjB,EAAE,KAAM,iBAAkB,EAAE,CAC5B,KAAK,KAAO,YAAa,KAAK,OAAS,CACxC,CACF,EAIK,EAAN,cAAgB,CAAE,CAChB,YAAY,EAAG,EAAG,CAGhB,AAFA,MAAM,EAAG,EAAE,CACX,EAAE,KAAM,SAAS,CACjB,KAAK,KAAO,eAAgB,KAAK,OAAS,CAC3C,CACD,QAAS,CACP,MAAO,CACL,KAAM,KAAK,KACX,QAAS,KAAK,QACd,OAAQ,KAAK,MACd,CACF,CACF,EACK,EAAN,cAAgB,CAAE,CAChB,YAAY,EAAG,EAAG,CAGhB,AAFA,MAAM,EAAE,CACR,EAAE,KAAM,gBAAgB,CACxB,KAAK,KAAO,mBAAoB,KAAK,cAAgB,CACtD,CACF,EACK,EAAN,cAAgB,CAAE,CAChB,YAAY,EAAG,EAAG,EAAG,CAInB,AAHA,MAAM,EAAE,CACR,EAAE,KAAM,OAAO,CACf,EAAE,KAAM,SAAS,CACjB,KAAK,KAAO,EAAG,KAAK,OAAS,CAC9B,CACD,QAAS,CACP,MAAO,CACL,KAAM,KAAK,KACX,QAAS,KAAK,QACd,OAAQ,KAAK,MACd,CACF,CACF,EACK,EAAN,cAAgB,CAAE,CAChB,aAAc,CACZ,MAAM,+BAAgC,gCAAiC,IAAI,AAC5E,CACF,EACK,EAAN,cAAgB,CAAE,CAChB,aAAc,CACZ,MAAM,kBAAmB,wCAAyC,IAAI,AACvE,CACF,EACK,EAAN,cAAgB,CAAE,CAChB,YAAY,EAAG,CACb,MAAM,EAAG,8BAA+B,IAAI,AAC7C,CACF,EACK,EAAN,cAAgB,CAAE,CAChB,aAAc,CACZ,MAAM,eAAgB,+BAAgC,IAAI,AAC3D,CACF,EACK,EAAN,cAAgB,CAAE,CAChB,aAAc,CACZ,MAAM,eAAgB,+BAAgC,IAAI,AAC3D,CACF,EACK,EAAN,cAAgB,CAAE,CAChB,aAAc,CACZ,MAAM,6BAA8B,6CAA8C,IAAI,AACvF,CACF,EACK,EAAN,cAAgB,CAAE,CAChB,aAAc,CACZ,MAAM,sBAAuB,6CAA8C,IAAI,AAChF,CACF,EACK,EAAN,cAAgB,CAAE,CAChB,aAAc,CACZ,MAAM,eAAgB,8BAA+B,IAAI,AAC1D,CACF,EACK,EAAN,cAAgB,CAAE,CAChB,aAAc,CACZ,MAAM,eAAgB,kCAAmC,IAAI,AAC9D,CACF,EACK,EAAN,cAAgB,CAAE,CAChB,YAAY,EAAG,EAAG,CAChB,MAAM,EAAG,0BAA2B,EAAE,AACvC,CACF,EACK,EAAI,AAAC,GAAM,EAAE,KAAO,EAAE,SAAW,EAAE,mBAAqB,EAAE,OAAS,KAAK,UAAU,EAAE,CAAE,EAAI,CAAC,IAAK,IAAK,GAAI,EAczG,EAAI,CAAC,EAAG,EAAG,EAAG,IAAM,CACxB,IAAM,EAAI,CAAE,OAAQ,EAAG,QAAU,GAAuB,SAAY,CAAE,CAAE,EACxE,OAAO,IAAM,MAAQ,GAAK,EAAE,QAAU,CAAE,eAAgB,iCAAkC,GAAG,GAAuB,OAAS,EAAE,EAAE,KAAO,KAAK,UAAU,EAAE,CAAE,CAAE,GAAG,EAAG,GAAG,CAAG,EAC1K,EAsEK,EAAI,AAAC,UAAa,GAAK,YAAY,GAAc,WAAY,GAAK,OAAQ,GAAK,SAAU,UAAY,EAAE,MAAQ,WAC/G,EAAN,KAAQ,CACN,YAAY,EAAG,CA6Ub,GA5UA,EAAE,KAAM,QAAQ,CAChB,EAAE,KAAM,MAAM,CACd,EAAE,KAAM,UAAU,CAClB,EAAE,KAAM,UAAW,AAACA,GAAM,CACxB,KAAK,MAAM,IAAI,OAAQA,EAAE,AAC1B,EAAC,CACF,EAAE,KAAM,UAAW,AAACA,GAAM,CACxB,KAAK,MAAM,IAAI,OAAQA,EAAE,AAC1B,EAAC,CACF,EAAE,KAAM,aAAc,AAACA,GAAM,CAC3B,KAAK,MAAM,IAAI,UAAWA,EAAE,AAC7B,EAAC,CAEF,EAAE,KAAM,iBAAkB,IAAM,CAC9B,IAAK,KAAK,MAAM,IAAI,UAAU,CAC5B,OAAO,KACT,IAAM,EAAI,KAAK,MAAM,IAAI,UAAU,CACnC,IAAK,EACH,OAAO,KACT,IAAI,EACJ,GAAI,CACF,EAAI,KAAK,MAAM,EAAE,AAClB,MAAW,CACV,OAAO,IACR,CACD,IAAM,EAAI,KAAK,MAAM,KAAK,KAAK,CAAG,IAAI,CACtC,OAAO,EAAE,YAAc,EAAI,EAAE,YAAc,KAAK,MAAM,OAAO,UAAU,CAAE,KAAK,MAAM,OAAO,OAAO,CAAE,MAAQ,EAAE,YAC/G,EAAC,CACF,EAAE,KAAM,eAAgB,IAAM,CAC5B,IAAI,EACJ,GAAI,KAAK,MAAM,IAAI,UAAU,CAAE,CAC7B,IAAM,EAAI,KAAK,MAAM,IAAI,UAAU,CACnC,GAAI,EACF,OAAQ,EAAI,KAAK,MAAM,EAAE,GAAuB,UACnD,CACF,EAAC,CACF,EAAE,KAAM,UAAW,MAAOA,EAAI,CAAE,OAAQ,CAAG,IAAK,CAC9C,IAAI,EAAG,EACP,IAAI,EACE,EAAI,KAAK,MAAM,IAAI,OAAO,CAChC,OAA0F,EAAnF,GAAMA,GAAK,MAAQA,EAAE,MAAa,CAAE,KAAM,CAAE,KAAM,KAAK,MAAM,EAAE,AAAE,EAAE,MAAO,IAAM,EAAO,KAAM,MAAK,WAAW,CAAE,EAAE,QAAU,EAAE,MAAM,SAAW,IAAM,QAAQ,KAChK;;;YAGI,EAAI,EAAE,QAA4B,SAAY,kBACnD,kCACA,mCACA,mCACD,CAAG,QAAQ,KACT;;;YAGI,EAAI,EAAE,QAA4B,SAAY,wBACnD,+BACA,mCACA,mCACD,EAAG,CACL,EAAC,CACF,EAAE,KAAM,UAAW,MAAOA,EAAI,CAAE,OAAQ,CAAG,IAAK,CAC9C,IAAI,EACE,EAAI,KAAK,MAAM,KAAK,KAAK,CAAG,IAAI,CAAE,EAAI,KAAK,MAAM,IAAI,UAAU,EAAI,GACzE,IAAK,EACH,EAAI,CAAE,KAAM,CAAE,KAAM,IAAM,EAAE,MAAO,IAAI,EAAE,gCAAiC,IAAM,MAC7E,CACH,IAAM,EAAI,KAAK,MAAM,EAAE,CAAE,EAAI,KAAK,MAAM,IAAI,OAAO,CACnD,EAAE,YAAc,EAAI,EAAE,YAAc,EAAI,CAAE,KAAM,CAAE,KAAM,IAAM,EAAE,MAAO,IAAI,EAAE,qBAAsB,IAAM,EAAE,KAAK,MAAM,OAAO,UAAU,CAAE,KAAK,MAAM,OAAO,OAAO,EAAuF,EAAnF,GAAMA,GAAK,MAAQA,EAAE,MAAa,CAAE,KAAM,CAAE,KAAM,KAAK,MAAM,EAAE,AAAE,EAAE,MAAO,IAAM,EAAO,KAAM,MAAK,WAAW,AACpR,CACD,OAAO,CACR,EAAC,CACF,EAAE,KAAM,qBAAsB,MAAOA,GAAM,CACzC,GAAI,CACF,IAAI,EACJ,IAAKA,EAAE,YACL,MAAM,IAAI,EACR,kCAEJ,GAAM,CAAE,YAAa,EAAG,CAAGA,EAC3B,EAAI,KAAM,GAAE,MAAO,UAAW,KAAK,IAAI,WAAY,CACjD,QAAS,KAAK,QACd,KAAM,CACJ,YAAa,CACd,EACD,MAAO,CACR,EAAC,CACF,GAAM,CAAE,KAAM,EAAG,MAAO,EAAG,CAAG,EAC9B,OAAO,EAAI,CAAE,KAAM,CAAE,MAAO,IAAM,EAAE,MAAO,CAAG,GAAI,GAAK,EAAE,QAAU,KAAO,CAAE,KAAM,CAAE,MAAO,IAAM,EAAE,MAAO,IAAI,CAAK,EAAG,CAAE,KAAM,CAAE,MAAO,EAAE,KAAO,EAAE,MAAO,IAAM,CAChK,OAAQ,EAAG,CACV,GAAI,EAAE,EAAE,CACN,MAAO,CAAE,KAAM,CAAE,MAAO,IAAM,EAAE,MAAO,CAAG,EAC5C,MAAM,CACP,CACF,EAAC,CACF,EAAE,KAAM,qBAAsB,MAAOA,GAAM,CACzC,GAAI,CACF,IAAI,EACE,EAAI,KAAK,gBAAgB,CAC/B,IAAK,EACH,MAAM,IAAI,EACR,4BAEJ,IAAKA,EAAE,YACL,MAAM,IAAI,EACR,kCAEJ,GAAM,CAAE,YAAa,EAAG,CAAGA,EAC3B,EAAI,KAAM,GAAE,MAAO,UAAW,KAAK,IAAI,2BAA4B,CACjE,QAAS,KAAK,QACd,KAAM,CACJ,YAAa,CACd,EACD,MAAO,EACP,IAAK,CACN,EAAC,CACF,GAAM,CAAE,KAAM,EAAG,MAAO,EAAG,CAAG,EAC9B,OAAO,EAAI,CAAE,KAAM,CAAE,QAAS,IAAM,EAAE,MAAO,CAAG,GAAI,GAAK,EAAE,UAAY,KAAO,CAAE,KAAM,CAAE,QAAS,IAAM,EAAE,MAAO,IAAI,CAAK,GAAI,KAAM,MAAK,QAAQ,CAAE,OAAQ,CAAG,EAAC,CAAE,CAAE,KAAM,CAAE,QAAS,EAAE,OAAS,EAAE,MAAO,IAAM,EAC9M,OAAQ,EAAG,CACV,GAAI,EAAE,EAAE,CACN,MAAO,CAAE,KAAM,CAAE,QAAS,IAAM,EAAE,MAAO,CAAG,EAC9C,MAAM,CACP,CACF,EAAC,CACF,EAAE,KAAM,SAAU,MAAOA,GAAM,CAC7B,IAAI,EACJ,GAAI,CACF,IAAI,EACJ,IAAKA,EAAE,MACL,MAAM,IAAI,EACR,6BAEJ,IAAKA,EAAE,SACL,MAAM,IAAI,EACR,+BAEJ,GAAM,CAAE,MAAO,EAAG,SAAU,EAAG,QAAS,EAAG,CAAGA,EAC9C,EAAI,KAAM,GAAE,MAAO,UAAW,KAAK,IAAI,UAAW,CAChD,QAAS,KAAK,QACd,WAAY,GAAuB,gBACnC,KAAM,CACJ,MAAO,EACP,SAAU,EACV,MAAO,EAAI,GAAuB,OAAoB,CAAE,CACzD,EACD,MAAO,CACR,EAAC,CACF,GAAM,CAAE,KAAM,EAAG,MAAO,EAAG,CAAG,EAC9B,GAAI,EACF,MAAO,CAAE,KAAM,CAAE,KAAM,KAAM,QAAS,IAAM,EAAE,MAAO,CAAG,EAC1D,IAAK,EACH,MAAO,CAAE,KAAM,CAAE,KAAM,KAAM,QAAS,IAAM,EAAE,MAAO,IAAI,CAAK,EAChE,IAAM,EAAI,EAAE,QAAS,EAAI,EAAE,KAC3B,OAAO,IAAM,KAAK,QAAQ,KAAK,UAAU,EAAE,CAAC,CAAE,KAAK,WAAW,KAAK,UAAU,EAAE,CAAC,EAAG,CAAE,KAAM,CAAE,KAAM,EAAG,QAAS,CAAG,EAAE,MAAO,IAAM,CAClI,OAAQ,EAAG,CACV,GAAI,EAAE,EAAE,CACN,MAAO,CAAE,KAAM,CAAE,KAAM,KAAM,QAAS,IAAM,EAAE,MAAO,CAAG,EAC1D,MAAM,CACP,CACF,EAAC,CACF,EAAE,KAAM,qBAAsB,MAAOA,GAAM,CACzC,GAAI,CACF,IAAKA,EAAE,MACL,MAAM,IAAI,EACR,6BAEJ,IAAKA,EAAE,SACL,MAAM,IAAI,EACR,+BAEJ,IAAI,EACE,CAAE,MAAO,EAAG,SAAU,EAAG,CAAGA,EAClC,EAAI,KAAM,GAAE,MAAO,UAAW,KAAK,IAAI,QAAS,CAC9C,QAAS,KAAK,QACd,KAAM,CACJ,MAAO,EACP,SAAU,CACX,EACD,MAAO,CACR,EAAC,CACF,GAAM,CAAE,KAAM,EAAG,MAAO,EAAG,CAAG,EAC9B,OAAO,EAAI,CAAE,KAAM,CAAE,KAAM,KAAM,QAAS,IAAM,EAAE,MAAO,CAAG,GAAI,IAAM,EAAE,UAAY,EAAE,KAAO,CAAE,KAAM,CAAE,KAAM,KAAM,QAAS,IAAM,EAAE,MAAO,IAAI,CAAK,GAAI,EAAE,UAAY,KAAK,QAAQ,KAAK,UAAU,EAAE,KAAK,CAAC,CAAE,KAAK,WAAW,KAAK,UAAU,EAAE,QAAQ,CAAC,EAAG,CAAE,KAAM,CAAE,KAAM,EAAE,KAAM,QAAS,EAAE,OAAS,EAAE,MAAO,CAAG,EAClT,OAAQ,EAAG,CACV,GAAI,EAAE,EAAE,CACN,MAAO,CAAE,KAAM,CAAE,KAAM,KAAM,QAAS,IAAM,EAAE,MAAO,CAAG,EAC1D,MAAM,CACP,CACF,EAAC,CACF,EAAE,KAAM,wBAAyB,MAAOA,GAAM,CAC5C,GAAI,CACF,IAAKA,EAAE,MACL,MAAM,IAAI,EACR,6BAEJ,IAAI,EACE,CAAE,MAAO,EAAG,CAAGA,EACrB,EAAI,KAAM,GAAE,MAAO,UAAW,KAAK,IAAI,iBAAkB,CACvD,QAAS,KAAK,QACd,KAAM,CACJ,MAAO,CACR,EACD,MAAO,CACR,EAAC,CACF,GAAM,CAAE,KAAM,EAAG,MAAO,EAAG,CAAG,EAC9B,OAAO,EAAI,CAAE,KAAM,CAAE,QAAS,IAAM,EAAE,MAAO,CAAG,GAAI,IAAM,EAAE,QAAU,CAAE,KAAM,CAAE,QAAS,IAAM,EAAE,MAAO,IAAI,CAAK,EAAG,CAAE,KAAM,CAAE,QAAS,EAAE,OAAS,EAAE,MAAO,CAAG,CAC/J,OAAQ,EAAG,CACV,GAAI,EAAE,EAAE,CACN,MAAO,CAAE,KAAM,CAAE,QAAS,IAAM,EAAE,MAAO,CAAG,EAC9C,MAAM,CACP,CACF,EAAC,CACF,EAAE,KAAM,yBAA0B,MAAOA,GAAM,CAC7C,GAAI,CACF,IAAKA,EAAE,MACL,MAAM,IAAI,EACR,6BAEJ,IAAKA,EAAE,KACL,MAAM,IAAI,EACR,wBAEJ,IAAKA,EAAE,MACL,MAAM,IAAI,EACR,mCAEJ,IAAI,EACE,CAAE,MAAO,EAAG,KAAM,EAAG,SAAU,EAAG,CAAGA,EAC3C,EAAI,KAAM,GAAE,MAAO,UAAW,KAAK,IAAI,kBAAmB,CACxD,QAAS,KAAK,QACd,KAAM,CACJ,MAAO,EACP,KAAM,EACN,SAAU,CACX,EACD,MAAO,CACR,EAAC,CACF,GAAM,CAAE,KAAM,EAAG,MAAO,EAAG,CAAG,EAC9B,OAAO,EAAI,CAAE,KAAM,CAAE,QAAS,IAAM,EAAE,MAAO,CAAG,GAAI,IAAM,EAAE,QAAU,CAAE,KAAM,CAAE,QAAS,IAAM,EAAE,MAAO,IAAI,CAAK,EAAG,CAAE,KAAM,CAAE,QAAS,EAAE,OAAS,EAAE,MAAO,CAAG,CAC/J,OAAQ,EAAG,CACV,GAAI,EAAE,EAAE,CACN,MAAO,CAAE,KAAM,CAAE,QAAS,IAAM,EAAE,MAAO,CAAG,EAC9C,MAAM,CACP,CACF,EAAC,CACF,EAAE,KAAM,UAAW,MAAOA,EAAI,QAAU,KAAK,MAAM,OAAO,UAAU,CAAE,KAAK,MAAM,OAAO,OAAO,CAAEA,GAAK,EAAO,SAAS,QAAQA,EAAE,CAAE,CAAE,MAAO,IAAM,GAAE,CACnJ,EAAE,KAAM,YAAa,SAAY,CAC/B,GAAI,CACF,IAAIA,EACJ,EAAI,KAAM,GAAE,MAAO,SAAU,KAAK,IAAI,OAAQ,CAC5C,QAAS,KAAK,QACd,MAAO,CACR,EAAC,CACF,GAAM,CAAE,KAAM,EAAG,MAAO,EAAG,CAAGA,EAC9B,OAAO,EAAI,CAAE,KAAM,CAAE,KAAM,IAAM,EAAE,MAAO,CAAG,GAAI,IAAM,EAAE,KAAO,CAAE,KAAM,CAAE,KAAM,IAAM,EAAE,MAAO,IAAI,CAAK,GAAI,EAAE,MAAQ,KAAK,QAAQ,KAAK,UAAU,EAAE,KAAK,CAAC,CAAE,CAAE,KAAM,CAAE,KAAM,EAAE,IAAM,EAAE,MAAO,IAAM,EACpM,OAAQA,EAAG,CACV,GAAI,EAAEA,EAAE,CACN,MAAO,CAAE,KAAM,CAAE,KAAM,IAAM,EAAE,MAAOA,CAAG,EAC3C,MAAMA,CACP,CACF,EAAC,CACF,EAAE,KAAM,YAAa,SAAY,CAC/B,GAAI,CACF,IAAIA,EACE,EAAI,KAAK,gBAAgB,CAC/B,IAAK,EACH,MAAM,IAAI,EACR,4BAEJ,EAAI,KAAM,GAAE,MAAO,SAAU,KAAK,IAAI,KAAM,CAC1C,QAAS,KAAK,QACd,MAAO,EACP,IAAK,CACN,EAAC,CACF,GAAM,CAAE,KAAM,EAAG,MAAO,EAAG,CAAGA,EAC9B,OAAO,EAAI,CAAE,KAAM,CAAE,KAAM,IAAM,EAAE,MAAO,CAAG,GAAI,IAAM,EAAE,KAAO,CAAE,KAAM,CAAE,KAAM,IAAM,EAAE,MAAO,IAAI,CAAK,GAAI,EAAE,MAAQ,KAAK,QAAQ,KAAK,UAAU,EAAE,KAAK,CAAC,CAAE,CAAE,KAAM,CAAE,KAAM,EAAE,IAAM,EAAE,MAAO,IAAM,EACpM,OAAQA,EAAG,CACV,GAAI,EAAEA,EAAE,CACN,MAAO,CAAE,KAAM,CAAE,KAAM,IAAM,EAAE,MAAOA,CAAG,EAC3C,MAAMA,CACP,CACF,EAAC,CACF,EAAE,KAAM,aAAc,MAAOA,GAAM,CACjC,GAAI,CACF,IAAM,EAAI,KAAK,gBAAgB,CAC/B,IAAK,EACH,MAAM,IAAI,EACR,4BAEJ,IAAI,EACJ,EAAI,KAAM,GAAE,MAAO,SAAU,KAAK,IAAI,KAAM,CAC1C,QAAS,KAAK,QACd,KAAMA,GAAK,CAAE,EACb,MAAO,EACP,IAAK,CACN,EAAC,CACF,GAAM,CAAE,KAAM,EAAG,MAAO,EAAG,CAAG,EAC9B,GAAI,EACF,MAAO,CAAE,KAAM,CAAE,KAAM,IAAM,EAAE,MAAO,CAAG,EAC3C,IAAK,GAAK,EAAE,OAAS,KACnB,MAAO,CAAE,KAAM,CAAE,KAAM,IAAM,EAAE,MAAO,IAAI,CAAK,EACjD,GAAM,CAAE,KAAM,CAAE,KAAM,EAAG,CAAE,CAAG,KAAM,MAAK,QAAQ,CAAE,OAAQ,CAAG,EAAC,CAC/D,OAAO,GAAK,KAAK,QAAQ,KAAK,UAAU,EAAE,CAAC,CAAE,CAAE,KAAM,EAAG,MAAO,IAAM,CACtE,OAAQ,EAAG,CACV,GAAI,EAAE,EAAE,CACN,MAAO,CAAE,KAAM,CAAE,KAAM,IAAM,EAAE,MAAO,CAAG,EAC3C,MAAM,CACP,CACF,EAAC,CACF,EAAE,KAAM,gBAAiB,MAAOA,GAAM,CACpC,GAAI,CACF,IAAM,EAAI,KAAK,gBAAgB,CAC/B,IAAK,EACH,MAAM,IAAI,EACR,4BAEJ,IAAI,EACJ,EAAI,KAAM,GAAE,MAAO,WAAY,KAAK,IAAI,UAAW,CACjD,QAAS,KAAK,QACd,KAAMA,GAAK,CAAE,EACb,MAAO,EACP,IAAK,CACN,EAAC,CACF,GAAM,CAAE,KAAM,EAAG,MAAO,EAAG,CAAG,EAC9B,GAAI,EACF,MAAO,CAAE,KAAM,KAAM,MAAO,CAAG,EACjC,IAAK,GAAK,EAAE,QAAU,KACpB,MAAO,CAAE,KAAM,KAAM,MAAO,IAAI,CAAK,EACvC,GAAM,CAAE,KAAM,CAAE,KAAM,EAAG,CAAE,CAAG,KAAM,MAAK,QAAQ,CAAE,OAAQ,CAAG,EAAC,CAC/D,OAAO,IAAM,EAAE,KAAO,EAAG,KAAK,QAAQ,KAAK,UAAU,EAAE,CAAC,EAAG,CAAE,KAAM,EAAG,MAAO,IAAM,CACpF,OAAQ,EAAG,CACV,GAAI,EAAE,EAAE,CACN,MAAO,CAAE,KAAM,KAAM,MAAO,CAAG,EACjC,MAAM,CACP,CACF,EAAC,CACE,KAAK,MAAQ,IAAI,EAAE,OAAQ,KAAK,IAAM,gCAAiC,EACzE,KAAK,QAAU,CAAE,eAAgB,mBAAoB,YAAa,CAAG,MAClE,CACH,KAAK,QAAU,CAAE,EAAE,QAAQ,MAAM,oHAAoH,CACrJ,MACD,CACF,CACF,EACD,QAAQ,IAAI,8BAA8B,CACpC,EAAI,IAAI,EAAE,OAAQ,EAA0B,AAArB,GAAuB,IAAI,UAAU,EAAK,KAAM,EAAI,IAAI,EAAE"}