"use strict";
const _b64chars = [..."ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"];
const _mkUriSafe = (src) => src.replace(/[+/]/g, (m0) => m0 === "+" ? "-" : "_").replace(/=+\$/m, "");
const fromUint8Array = (src, rfc4648 = false) => {
  let b64 = "";
  for (let i = 0, l = src.length; i < l; i += 3) {
    const [a0, a1, a2] = [src[i], src[i + 1], src[i + 2]];
    const ord = a0 << 16 | a1 << 8 | a2;
    b64 += _b64chars[ord >>> 18];
    b64 += _b64chars[ord >>> 12 & 63];
    b64 += typeof a1 !== "undefined" ? _b64chars[ord >>> 6 & 63] : "=";
    b64 += typeof a2 !== "undefined" ? _b64chars[ord & 63] : "=";
  }
  return rfc4648 ? _mkUriSafe(b64) : b64;
};
const _btoa = typeof btoa === "function" ? (s) => btoa(s) : (s) => {
  if (s.charCodeAt(0) > 255) {
    throw new RangeError("The string contains invalid characters.");
  }
  return fromUint8Array(Uint8Array.from(s, (c) => c.charCodeAt(0)));
};
const utob = (src) => unescape(encodeURIComponent(src));
function encode(src, rfc4648 = false) {
  const b64 = _btoa(utob(src));
  return rfc4648 ? _mkUriSafe(b64) : b64;
}
exports.encode = encode;
